Initial commit

This commit is contained in:
2026-05-22 12:52:49 +00:00
commit c2ab75f97d
5 changed files with 911 additions and 0 deletions
+5
View File
@@ -0,0 +1,5 @@
*.log
.DS_Store
*.swp
uploads/
+139
View File
@@ -0,0 +1,139 @@
<?php
/**
* Parker County Slingshot Rentals — Booking Request Handler
*/
header('Content-Type: application/json');
header('Access-Control-Allow-Origin: https://parkerslingshotrentals.com');
header('Access-Control-Allow-Methods: POST, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type');
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') { http_response_code(204); exit; }
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
http_response_code(405);
echo json_encode(['success' => false, 'error' => 'Method not allowed']);
exit;
}
// ── CONFIG ────────────────────────────────────────────────────────────
define('SENDGRID_API_KEY', 'SG.YOUR_KEY_HERE'); // <-- replace with your SendGrid API key
define('MAIL_FROM', 'noreply@parkerslingshotrentals.com');
define('MAIL_FROM_NAME', 'Parker County Slingshot Rentals');
define('ADMIN_EMAIL', 'info@parkerslingshotrentals.com'); // where booking alerts go
// ─────────────────────────────────────────────────────────────────────
$input = json_decode(file_get_contents('php://input'), true);
if (!$input) { $input = $_POST; }
$name = trim(strip_tags($input['name'] ?? ''));
$email = trim(strip_tags($input['email'] ?? ''));
$phone = trim(strip_tags($input['phone'] ?? ''));
$package = trim(strip_tags($input['package'] ?? ''));
$date = trim(strip_tags($input['date'] ?? ''));
$message = trim(strip_tags($input['message'] ?? ''));
// Basic validation
if (!$name || !$email || !$package || !$date) {
http_response_code(400);
echo json_encode(['success' => false, 'error' => 'Name, email, package, and date are required.']);
exit;
}
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
http_response_code(400);
echo json_encode(['success' => false, 'error' => 'Invalid email address.']);
exit;
}
$packages = [
'half-day' => 'Half Day (4 hrs) — $99',
'full-day' => 'Full Day (8 hrs) — $169',
'weekend' => 'Weekend (48 hrs) — $299',
];
$packageLabel = $packages[$package] ?? ucfirst($package);
$dateFormatted = date('F j, Y', strtotime($date));
// ── SEND ADMIN ALERT ──────────────────────────────────────────────────
$adminHtml = '
<div style="max-width:600px;margin:0 auto;font-family:Arial,sans-serif;">
<div style="background:#f97316;padding:24px;text-align:center;">
<h1 style="color:#fff;margin:0;font-size:22px;">New Booking Request!</h1>
<p style="color:rgba(255,255,255,.85);margin:4px 0 0;font-size:14px;">Parker County Slingshot Rentals</p>
</div>
<div style="padding:28px;background:#fff;border:1px solid #e5e7eb;">
<table style="width:100%;border-collapse:collapse;font-size:15px;">
<tr><td style="padding:10px 0;color:#6b7280;width:100px;">Name</td>
<td style="padding:10px 0;font-weight:600;">' . htmlspecialchars($name) . '</td></tr>
<tr><td style="padding:10px 0;color:#6b7280;">Email</td>
<td style="padding:10px 0;"><a href="mailto:' . htmlspecialchars($email) . '" style="color:#f97316;">' . htmlspecialchars($email) . '</a></td></tr>
<tr><td style="padding:10px 0;color:#6b7280;">Phone</td>
<td style="padding:10px 0;">' . (htmlspecialchars($phone) ?: '<em style="color:#9ca3af;">not provided</em>') . '</td></tr>
<tr><td style="padding:10px 0;color:#6b7280;">Package</td>
<td style="padding:10px 0;font-weight:700;color:#f97316;">' . htmlspecialchars($packageLabel) . '</td></tr>
<tr><td style="padding:10px 0;color:#6b7280;">Date</td>
<td style="padding:10px 0;font-weight:600;">' . htmlspecialchars($dateFormatted) . '</td></tr>
</table>
' . ($message ? '<div style="margin-top:16px;padding:16px;background:#fff7ed;border-radius:8px;border-left:4px solid #f97316;"><p style="margin:0;font-size:14px;color:#374151;line-height:1.6;">' . nl2br(htmlspecialchars($message)) . '</p></div>' : '') . '
<p style="margin-top:20px;font-size:13px;color:#9ca3af;">Submitted ' . date('F j, Y \a\t g:i A') . ' CT</p>
</div>
</div>';
// ── SEND CUSTOMER CONFIRMATION ────────────────────────────────────────
$confirmHtml = '
<div style="max-width:600px;margin:0 auto;font-family:Arial,sans-serif;">
<div style="background:#0d0d0d;padding:24px;text-align:center;">
<h1 style="color:#f97316;margin:0;font-size:22px;">Parker County Slingshot Rentals</h1>
</div>
<div style="padding:32px;background:#fff;">
<h2 style="color:#0d0d0d;margin-top:0;">Booking Request Received!</h2>
<p style="color:#374151;line-height:1.6;">Hey ' . htmlspecialchars($name) . ', we got your request and will confirm availability within a few hours.</p>
<div style="background:#fff7ed;border:1px solid #fed7aa;border-radius:10px;padding:20px;margin:24px 0;">
<h3 style="margin-top:0;color:#f97316;font-size:16px;">Your Request Summary</h3>
<p style="margin:4px 0;font-size:14px;color:#374151;"><strong>Package:</strong> ' . htmlspecialchars($packageLabel) . '</p>
<p style="margin:4px 0;font-size:14px;color:#374151;"><strong>Requested Date:</strong> ' . htmlspecialchars($dateFormatted) . '</p>
</div>
<p style="color:#374151;line-height:1.6;">We\'ll reach out to you at <strong>' . htmlspecialchars($email) . '</strong>' . ($phone ? ' or <strong>' . htmlspecialchars($phone) . '</strong>' : '') . ' to confirm your ride.</p>
<p style="color:#374151;line-height:1.6;">Questions? Call or text us at <strong>(817) 555-0199</strong>.</p>
<p style="color:#374151;line-height:1.6;">Ride on,<br><strong>The Parker County Slingshot Team</strong></p>
</div>
<div style="background:#f3f4f6;padding:16px;text-align:center;">
<p style="margin:0;font-size:12px;color:#9ca3af;">&copy; ' . date('Y') . ' Parker County Slingshot Rentals &mdash; Weatherford, TX</p>
</div>
</div>';
function sendgridSend(string $toEmail, string $toName, string $subject, string $html): bool {
$payload = json_encode([
'personalizations' => [['to' => [['email' => $toEmail, 'name' => $toName]]]],
'from' => ['email' => MAIL_FROM, 'name' => MAIL_FROM_NAME],
'subject' => $subject,
'content' => [['type' => 'text/html', 'value' => $html]],
]);
$ch = curl_init('https://api.sendgrid.com/v3/mail/send');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => $payload,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . SENDGRID_API_KEY,
'Content-Type: application/json',
],
CURLOPT_TIMEOUT => 20,
CURLOPT_SSL_VERIFYPEER => false,
]);
$response = curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
return $code === 202;
}
$apiKey = SENDGRID_API_KEY;
if ($apiKey && strpos($apiKey, 'YOUR_KEY') === false) {
sendgridSend(ADMIN_EMAIL, 'Parker Slingshot Admin',
"New Booking Request: {$name}{$packageLabel} on {$dateFormatted}", $adminHtml);
sendgridSend($email, $name,
"Booking Request Confirmed — Parker County Slingshot", $confirmHtml);
} else {
error_log('[Parker Slingshot] SENDGRID_API_KEY not configured');
}
echo json_encode(['success' => true, 'message' => 'Booking request received! We\'ll be in touch shortly.']);
+751
View File
@@ -0,0 +1,751 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Parker County Slingshot Rentals | Polaris Slingshot | Weatherford, TX</title>
<meta name="description" content="Rent a Polaris Slingshot in Parker County, TX. Experience the thrill of open-air three-wheel driving through Weatherford and the DFW area. Book online today — daily and weekend rentals available." />
<meta name="keywords" content="Polaris Slingshot rental, Parker County slingshot rental, Weatherford TX slingshot, DFW slingshot rental, three wheel rental Texas, slingshot car rental, open air vehicle rental, adventure rental Weatherford" />
<meta name="robots" content="index, follow" />
<link rel="canonical" href="https://parkerslingshotrentals.com/" />
<!-- Open Graph -->
<meta property="og:type" content="website" />
<meta property="og:site_name" content="Parker County Slingshot Rentals" />
<meta property="og:title" content="Parker County Slingshot Rentals | Polaris Slingshot | Weatherford, TX" />
<meta property="og:description" content="Rent a Polaris Slingshot in Parker County, TX. Daily and weekend rentals. Experience open-air three-wheel driving through the beautiful Texas Hill Country near DFW." />
<meta property="og:url" content="https://parkerslingshotrentals.com/" />
<meta property="og:image" content="https://parkerslingshotrentals.com/assets/og-image.jpg" />
<meta property="og:locale" content="en_US" />
<!-- Twitter Card -->
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="Parker County Slingshot Rentals | Polaris Slingshot | Weatherford, TX" />
<meta name="twitter:description" content="Rent a Polaris Slingshot in Parker County, TX. Daily and weekend rentals available. Book today!" />
<meta name="twitter:image" content="https://parkerslingshotrentals.com/assets/og-image.jpg" />
<!-- JSON-LD Structured Data -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "LocalBusiness",
"@id": "https://parkerslingshotrentals.com/#business",
"name": "Parker County Slingshot Rentals",
"description": "Polaris Slingshot rentals in Parker County, Texas. Daily and weekend rentals available for thrill-seekers near Weatherford and the DFW metroplex.",
"url": "https://parkerslingshotrentals.com",
"telephone": "+1-817-555-0199",
"email": "info@parkerslingshotrentals.com",
"priceRange": "$$",
"currenciesAccepted": "USD",
"paymentAccepted": "Cash, Credit Card",
"address": {
"@type": "PostalAddress",
"addressLocality": "Weatherford",
"addressRegion": "TX",
"postalCode": "76086",
"addressCountry": "US"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 32.7554,
"longitude": -97.7981
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"],
"opens": "09:00",
"closes": "18:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Saturday","Sunday"],
"opens": "08:00",
"closes": "20:00"
}
],
"sameAs": [],
"hasOfferCatalog": {
"@type": "OfferCatalog",
"name": "Slingshot Rental Packages",
"itemListElement": [
{
"@type": "Offer",
"itemOffered": {
"@type": "Product",
"name": "Half-Day Slingshot Rental",
"description": "4-hour Polaris Slingshot rental — perfect for a quick thrill around Parker County."
},
"priceCurrency": "USD",
"price": "99.00"
},
{
"@type": "Offer",
"itemOffered": {
"@type": "Product",
"name": "Full-Day Slingshot Rental",
"description": "8-hour Polaris Slingshot rental — explore Weatherford, Mineral Wells, and beyond."
},
"priceCurrency": "USD",
"price": "169.00"
},
{
"@type": "Offer",
"itemOffered": {
"@type": "Product",
"name": "Weekend Slingshot Rental",
"description": "48-hour weekend Polaris Slingshot rental — the ultimate Texas road trip experience."
},
"priceCurrency": "USD",
"price": "299.00"
}
]
}
},
{
"@type": "WebSite",
"@id": "https://parkerslingshotrentals.com/#website",
"url": "https://parkerslingshotrentals.com",
"name": "Parker County Slingshot Rentals",
"publisher": {"@id": "https://parkerslingshotrentals.com/#business"},
"potentialAction": {
"@type": "SearchAction",
"target": "https://parkerslingshotrentals.com/?s={search_term_string}",
"query-input": "required name=search_term_string"
}
},
{
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "Do I need a motorcycle license to rent a Polaris Slingshot in Texas?",
"acceptedAnswer": {
"@type": "Answer",
"text": "In Texas, a standard Class C driver's license is sufficient to operate a Polaris Slingshot. No motorcycle endorsement is required. You must be 25 or older to rent."
}
},
{
"@type": "Question",
"name": "What is included in the rental?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Every rental includes the Polaris Slingshot, helmets for all riders, a safety orientation, a suggested route map, roadside assistance, and comprehensive insurance coverage."
}
},
{
"@type": "Question",
"name": "How many people can ride in a Polaris Slingshot?",
"acceptedAnswer": {
"@type": "Answer",
"text": "The Polaris Slingshot seats two people — a driver and one passenger. Both will enjoy an open-air, sports-car-style driving experience."
}
},
{
"@type": "Question",
"name": "Where can I drive the Slingshot?",
"acceptedAnswer": {
"@type": "Answer",
"text": "You can drive throughout Parker County and the surrounding DFW area including Weatherford, Mineral Wells, Granbury, and Azle. We provide a recommended scenic route guide with every rental."
}
}
]
}
]
}
</script>
<!-- Fonts & Icons -->
<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=Inter:wght@400;500;600;700&family=Barlow+Condensed:wght@600;700;800&display=swap" rel="stylesheet" />
<style>
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
:root {
--orange: #f97316;
--orange-dark: #ea580c;
--black: #0d0d0d;
--dark: #1a1a2e;
--gray: #6b7280;
--light: #f9fafb;
--white: #ffffff;
--radius: 12px;
}
html { scroll-behavior: smooth; }
body { font-family: 'Inter', sans-serif; background: var(--black); color: var(--white); line-height: 1.6; }
/* NAV */
nav {
position: fixed; top: 0; left: 0; right: 0; z-index: 100;
display: flex; align-items: center; justify-content: space-between;
padding: 1rem 2rem;
background: rgba(13,13,13,0.92);
backdrop-filter: blur(8px);
border-bottom: 1px solid rgba(255,255,255,0.06);
}
.nav-logo { font-family: 'Barlow Condensed', sans-serif; font-size: 1.4rem; font-weight: 800; color: var(--orange); letter-spacing: 0.5px; text-decoration: none; }
.nav-links { display: flex; gap: 2rem; list-style: none; }
.nav-links a { color: rgba(255,255,255,0.8); text-decoration: none; font-weight: 500; font-size: 0.9rem; transition: color 0.2s; }
.nav-links a:hover { color: var(--orange); }
.nav-cta { background: var(--orange); color: white; padding: 0.6rem 1.4rem; border-radius: 6px; text-decoration: none; font-weight: 600; font-size: 0.9rem; transition: background 0.2s; }
.nav-cta:hover { background: var(--orange-dark); }
/* HERO */
.hero {
min-height: 100vh;
display: flex; align-items: center; justify-content: center;
text-align: center;
padding: 6rem 2rem 4rem;
background: linear-gradient(135deg, #0d0d0d 0%, #1a0a00 50%, #0d0d0d 100%);
position: relative; overflow: hidden;
}
.hero::before {
content: '';
position: absolute; inset: 0;
background: radial-gradient(ellipse at center, rgba(249,115,22,0.12) 0%, transparent 70%);
}
.hero-badge {
display: inline-block;
background: rgba(249,115,22,0.15);
border: 1px solid rgba(249,115,22,0.4);
color: var(--orange);
padding: 0.35rem 1rem;
border-radius: 999px;
font-size: 0.8rem;
font-weight: 600;
letter-spacing: 1px;
text-transform: uppercase;
margin-bottom: 1.5rem;
}
.hero h1 {
font-family: 'Barlow Condensed', sans-serif;
font-size: clamp(3rem, 8vw, 6rem);
font-weight: 800;
line-height: 1;
letter-spacing: -1px;
margin-bottom: 1.5rem;
}
.hero h1 span { color: var(--orange); }
.hero p {
font-size: 1.2rem;
color: rgba(255,255,255,0.7);
max-width: 600px;
margin: 0 auto 2.5rem;
}
.hero-btns { display: flex; gap: 1rem; justify-content: center; flex-wrap: wrap; }
.btn-primary {
background: var(--orange); color: white;
padding: 0.85rem 2rem; border-radius: 8px;
text-decoration: none; font-weight: 700; font-size: 1rem;
transition: background 0.2s, transform 0.15s;
display: inline-block;
}
.btn-primary:hover { background: var(--orange-dark); transform: translateY(-2px); }
.btn-secondary {
background: rgba(255,255,255,0.08); color: white;
border: 1px solid rgba(255,255,255,0.2);
padding: 0.85rem 2rem; border-radius: 8px;
text-decoration: none; font-weight: 600; font-size: 1rem;
transition: background 0.2s;
display: inline-block;
}
.btn-secondary:hover { background: rgba(255,255,255,0.14); }
.hero-scroll { margin-top: 4rem; opacity: 0.4; font-size: 0.8rem; letter-spacing: 1px; text-transform: uppercase; }
/* SECTIONS */
section { padding: 5rem 2rem; }
.container { max-width: 1100px; margin: 0 auto; }
.section-label { font-size: 0.75rem; font-weight: 700; letter-spacing: 2px; text-transform: uppercase; color: var(--orange); margin-bottom: 0.75rem; }
.section-title { font-family: 'Barlow Condensed', sans-serif; font-size: clamp(2rem, 4vw, 3rem); font-weight: 800; margin-bottom: 1rem; }
.section-sub { color: rgba(255,255,255,0.6); font-size: 1rem; max-width: 560px; margin-bottom: 3rem; }
/* WHY */
.why { background: #111111; }
.features-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 1.5rem; }
.feature-card {
background: rgba(255,255,255,0.04);
border: 1px solid rgba(255,255,255,0.07);
border-radius: var(--radius);
padding: 2rem;
transition: border-color 0.2s;
}
.feature-card:hover { border-color: rgba(249,115,22,0.4); }
.feature-icon { font-size: 2rem; margin-bottom: 1rem; }
.feature-card h3 { font-size: 1.1rem; font-weight: 700; margin-bottom: 0.5rem; }
.feature-card p { color: rgba(255,255,255,0.55); font-size: 0.9rem; }
/* PRICING */
.pricing { background: var(--black); }
.pricing-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 1.5rem; }
.price-card {
background: rgba(255,255,255,0.04);
border: 1px solid rgba(255,255,255,0.08);
border-radius: var(--radius);
padding: 2.5rem 2rem;
text-align: center;
position: relative;
transition: transform 0.2s, border-color 0.2s;
}
.price-card:hover { transform: translateY(-4px); border-color: rgba(249,115,22,0.3); }
.price-card.featured {
border-color: var(--orange);
background: rgba(249,115,22,0.07);
}
.price-badge {
position: absolute; top: -13px; left: 50%; transform: translateX(-50%);
background: var(--orange); color: white;
padding: 0.25rem 1rem; border-radius: 999px;
font-size: 0.75rem; font-weight: 700; text-transform: uppercase; letter-spacing: 1px;
}
.price-name { font-size: 0.85rem; font-weight: 600; color: var(--orange); text-transform: uppercase; letter-spacing: 1px; margin-bottom: 0.5rem; }
.price-amount { font-family: 'Barlow Condensed', sans-serif; font-size: 3.5rem; font-weight: 800; line-height: 1; margin-bottom: 0.25rem; }
.price-amount sup { font-size: 1.5rem; vertical-align: top; margin-top: 0.5rem; }
.price-duration { color: rgba(255,255,255,0.5); font-size: 0.85rem; margin-bottom: 1.5rem; }
.price-features { list-style: none; text-align: left; margin-bottom: 2rem; }
.price-features li { padding: 0.4rem 0; color: rgba(255,255,255,0.7); font-size: 0.9rem; display: flex; align-items: center; gap: 0.5rem; }
.price-features li::before { content: '✓'; color: var(--orange); font-weight: 700; flex-shrink: 0; }
/* HOW IT WORKS */
.how { background: #111111; }
.steps { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 2rem; counter-reset: steps; }
.step { text-align: center; counter-increment: steps; }
.step-num {
width: 56px; height: 56px; border-radius: 50%;
background: rgba(249,115,22,0.15); border: 2px solid var(--orange);
display: flex; align-items: center; justify-content: center;
font-family: 'Barlow Condensed', sans-serif; font-size: 1.4rem; font-weight: 800; color: var(--orange);
margin: 0 auto 1rem;
}
.step h3 { font-size: 1rem; font-weight: 700; margin-bottom: 0.5rem; }
.step p { color: rgba(255,255,255,0.55); font-size: 0.875rem; }
/* ROUTES */
.routes { background: var(--black); }
.routes-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 1.5rem; }
.route-card {
background: rgba(255,255,255,0.03);
border: 1px solid rgba(255,255,255,0.07);
border-radius: var(--radius); padding: 1.75rem;
}
.route-card h3 { font-size: 1rem; font-weight: 700; margin-bottom: 0.4rem; }
.route-card .miles { font-size: 0.8rem; color: var(--orange); font-weight: 600; margin-bottom: 0.5rem; }
.route-card p { color: rgba(255,255,255,0.5); font-size: 0.875rem; }
/* FAQ */
.faq { background: #111111; }
.faq-list { display: flex; flex-direction: column; gap: 0; max-width: 760px; }
details {
border-bottom: 1px solid rgba(255,255,255,0.08);
padding: 1.25rem 0;
}
details:first-child { border-top: 1px solid rgba(255,255,255,0.08); }
summary {
font-weight: 600; font-size: 1rem; cursor: pointer;
list-style: none; display: flex; justify-content: space-between; align-items: center;
}
summary::-webkit-details-marker { display: none; }
summary::after { content: '+'; font-size: 1.4rem; color: var(--orange); flex-shrink: 0; transition: transform 0.2s; }
details[open] summary::after { transform: rotate(45deg); }
details p { color: rgba(255,255,255,0.6); margin-top: 0.75rem; font-size: 0.95rem; }
/* CONTACT */
.contact { background: var(--black); }
.contact-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 4rem; align-items: start; }
@media (max-width: 700px) { .contact-grid { grid-template-columns: 1fr; gap: 2rem; } }
.contact-info h2 { font-family: 'Barlow Condensed', sans-serif; font-size: 2.5rem; font-weight: 800; margin-bottom: 1rem; }
.contact-info p { color: rgba(255,255,255,0.6); margin-bottom: 2rem; }
.contact-detail { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 1rem; color: rgba(255,255,255,0.7); font-size: 0.95rem; }
.contact-detail span:first-child { font-size: 1.2rem; }
.contact-form { display: flex; flex-direction: column; gap: 1rem; }
.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
@media (max-width: 500px) { .form-row { grid-template-columns: 1fr; } }
.contact-form input, .contact-form select, .contact-form textarea {
background: rgba(255,255,255,0.05);
border: 1px solid rgba(255,255,255,0.1);
border-radius: 8px; padding: 0.85rem 1rem;
color: white; font-family: inherit; font-size: 0.95rem;
outline: none; transition: border-color 0.2s; width: 100%;
}
.contact-form input:focus, .contact-form select:focus, .contact-form textarea:focus { border-color: var(--orange); }
.contact-form select option { background: #1a1a1a; }
.contact-form textarea { resize: vertical; min-height: 120px; }
.contact-form button {
background: var(--orange); color: white;
border: none; border-radius: 8px;
padding: 0.9rem; font-size: 1rem; font-weight: 700;
cursor: pointer; transition: background 0.2s;
}
.contact-form button:hover { background: var(--orange-dark); }
.form-msg { padding: 0.75rem 1rem; border-radius: 8px; font-size: 0.9rem; display: none; }
.form-msg.success { background: rgba(34,197,94,0.15); border: 1px solid rgba(34,197,94,0.3); color: #4ade80; display: block; }
.form-msg.error { background: rgba(239,68,68,0.15); border: 1px solid rgba(239,68,68,0.3); color: #f87171; display: block; }
/* FOOTER */
footer {
background: #080808;
border-top: 1px solid rgba(255,255,255,0.06);
padding: 2.5rem 2rem;
text-align: center;
}
.footer-logo { font-family: 'Barlow Condensed', sans-serif; font-size: 1.4rem; font-weight: 800; color: var(--orange); margin-bottom: 0.5rem; }
footer p { color: rgba(255,255,255,0.35); font-size: 0.85rem; }
.footer-links { display: flex; gap: 1.5rem; justify-content: center; margin: 1rem 0; flex-wrap: wrap; }
.footer-links a { color: rgba(255,255,255,0.4); text-decoration: none; font-size: 0.85rem; transition: color 0.2s; }
.footer-links a:hover { color: var(--orange); }
/* RESPONSIVE NAV */
@media (max-width: 768px) {
.nav-links { display: none; }
}
</style>
</head>
<body>
<!-- Navigation -->
<nav aria-label="Main navigation">
<a href="/" class="nav-logo">Parker County Slingshot</a>
<ul class="nav-links">
<li><a href="#why">Why Us</a></li>
<li><a href="#pricing">Pricing</a></li>
<li><a href="#how">How It Works</a></li>
<li><a href="#routes">Routes</a></li>
<li><a href="#faq">FAQ</a></li>
</ul>
<a href="#contact" class="nav-cta">Book Now</a>
</nav>
<!-- Hero -->
<header class="hero" role="banner">
<div style="position:relative;z-index:1;">
<div class="hero-badge">Weatherford, Texas</div>
<h1>Feel the Road.<br /><span>Rent a Slingshot.</span></h1>
<p>Parker County's premier Polaris Slingshot rental experience. Open-air freedom, three-wheel thrills, Texas roads built for adventure.</p>
<div class="hero-btns">
<a href="#pricing" class="btn-primary">View Rental Packages</a>
<a href="#how" class="btn-secondary">How It Works</a>
</div>
<p class="hero-scroll">Scroll to explore &darr;</p>
</div>
</header>
<!-- Why Choose Us -->
<section class="why" id="why" aria-label="Why choose Parker County Slingshot Rentals">
<div class="container">
<p class="section-label">Why Us</p>
<h2 class="section-title">Built for the Thrill-Seeker</h2>
<p class="section-sub">Everything you need for an unforgettable open-road experience — no hassle, just pure adrenaline.</p>
<div class="features-grid">
<div class="feature-card">
<div class="feature-icon">🏎️</div>
<h3>Polaris Slingshot SL</h3>
<p>Our fleet features the latest Polaris Slingshot models — powerful, fast, and impossible to ignore on Texas roads.</p>
</div>
<div class="feature-card">
<div class="feature-icon">🛡️</div>
<h3>Full Coverage Insurance</h3>
<p>Every rental includes comprehensive coverage. Drive with confidence knowing you're fully protected.</p>
</div>
<div class="feature-card">
<div class="feature-icon">🗺️</div>
<h3>Scenic Route Guides</h3>
<p>We hand you a curated Texas route map — the best backroads, vistas, and stops around Parker County.</p>
</div>
<div class="feature-card">
<div class="feature-icon">⛑️</div>
<h3>Safety First</h3>
<p>DOT-approved helmets included with every rental. Safety orientation for all drivers before you hit the road.</p>
</div>
<div class="feature-card">
<div class="feature-icon">📞</div>
<h3>Roadside Assistance</h3>
<p>24/7 roadside support so you're never stranded. We've got your back from pickup to return.</p>
</div>
<div class="feature-card">
<div class="feature-icon"></div>
<h3>Easy Booking</h3>
<p>Simple online reservation, flexible pickup times, and transparent pricing. No hidden fees — ever.</p>
</div>
</div>
</div>
</section>
<!-- Pricing -->
<section class="pricing" id="pricing" aria-label="Slingshot rental pricing">
<div class="container">
<p class="section-label">Rental Packages</p>
<h2 class="section-title">Pick Your Adventure</h2>
<p class="section-sub">Transparent pricing. No surprise fees. Just you, the open road, and a machine that turns heads.</p>
<div class="pricing-grid">
<div class="price-card">
<p class="price-name">Half Day</p>
<p class="price-amount"><sup>$</sup>99</p>
<p class="price-duration">4 hours of freedom</p>
<ul class="price-features">
<li>Polaris Slingshot SL</li>
<li>DOT helmets included</li>
<li>Safety orientation</li>
<li>Route map & guide</li>
<li>Full insurance coverage</li>
<li>Roadside assistance</li>
</ul>
<a href="#contact" class="btn-primary" style="display:block;width:100%;text-align:center;">Book Half Day</a>
</div>
<div class="price-card featured">
<div class="price-badge">Most Popular</div>
<p class="price-name">Full Day</p>
<p class="price-amount"><sup>$</sup>169</p>
<p class="price-duration">8 hours of adventure</p>
<ul class="price-features">
<li>Polaris Slingshot SL</li>
<li>DOT helmets included</li>
<li>Safety orientation</li>
<li>Route map & guide</li>
<li>Full insurance coverage</li>
<li>Roadside assistance</li>
</ul>
<a href="#contact" class="btn-primary" style="display:block;width:100%;text-align:center;">Book Full Day</a>
</div>
<div class="price-card">
<p class="price-name">Weekend</p>
<p class="price-amount"><sup>$</sup>299</p>
<p class="price-duration">48-hour getaway</p>
<ul class="price-features">
<li>Polaris Slingshot SL</li>
<li>DOT helmets included</li>
<li>Safety orientation</li>
<li>Route map & guide</li>
<li>Full insurance coverage</li>
<li>24/7 roadside assistance</li>
</ul>
<a href="#contact" class="btn-primary" style="display:block;width:100%;text-align:center;">Book Weekend</a>
</div>
</div>
<p style="text-align:center;color:rgba(255,255,255,0.4);font-size:0.85rem;margin-top:2rem;">Must be 25+ with valid driver's license. Security deposit required. Prices include tax.</p>
</div>
</section>
<!-- How It Works -->
<section class="how" id="how" aria-label="How the rental process works">
<div class="container">
<p class="section-label">The Process</p>
<h2 class="section-title">Ready in 4 Simple Steps</h2>
<p class="section-sub">From booking to keys in hand — we make it effortless so you can focus on the fun.</p>
<div class="steps">
<div class="step">
<div class="step-num">1</div>
<h3>Choose Your Package</h3>
<p>Half day, full day, or weekend — pick the adventure that fits your schedule and budget.</p>
</div>
<div class="step">
<div class="step-num">2</div>
<h3>Book & Confirm</h3>
<p>Fill out our simple booking form or give us a call. We'll confirm your reservation within 24 hours.</p>
</div>
<div class="step">
<div class="step-num">3</div>
<h3>Show Up & Roll Out</h3>
<p>Arrive at pickup, complete your safety briefing, grab your helmets and route map, and hit the road.</p>
</div>
<div class="step">
<div class="step-num">4</div>
<h3>Return & Relive</h3>
<p>Return the Slingshot at the agreed time. Tell everyone about the best day you've had in Texas.</p>
</div>
</div>
</div>
</section>
<!-- Scenic Routes -->
<section class="routes" id="routes" aria-label="Recommended scenic driving routes">
<div class="container">
<p class="section-label">Scenic Routes</p>
<h2 class="section-title">Texas Roads Worth Driving</h2>
<p class="section-sub">We know the best roads. Every rental comes with a recommended route guide — here's a taste.</p>
<div class="routes-grid">
<div class="route-card">
<h3>The Parker County Loop</h3>
<p class="miles">~45 miles &bull; 1.5 hrs</p>
<p>Roll through Weatherford's historic downtown, Millsap, and back through the rolling Texas plains. The perfect intro ride.</p>
</div>
<div class="route-card">
<h3>Possum Kingdom Run</h3>
<p class="miles">~80 miles &bull; 2.5 hrs</p>
<p>Head northwest toward Mineral Wells and Possum Kingdom Lake. Hill Country scenery, lake views, and open highway.</p>
</div>
<div class="route-card">
<h3>Granbury & Glen Rose</h3>
<p class="miles">~70 miles &bull; 2 hrs</p>
<p>Cruise south to the charming Granbury square and dinosaur country in Glen Rose. Great for couples and history lovers.</p>
</div>
<div class="route-card">
<h3>DFW Sunset Cruise</h3>
<p class="miles">~60 miles &bull; 2 hrs</p>
<p>Head east toward the Fort Worth skyline at golden hour, loop through Azle and back. City lights in an open cockpit.</p>
</div>
</div>
</div>
</section>
<!-- FAQ -->
<section class="faq" id="faq" aria-label="Frequently asked questions">
<div class="container">
<p class="section-label">FAQ</p>
<h2 class="section-title">Questions & Answers</h2>
<p class="section-sub">Everything you need to know before you book.</p>
<div class="faq-list">
<details>
<summary>Do I need a motorcycle license to rent a Polaris Slingshot in Texas?</summary>
<p>In Texas, a standard Class C driver's license is all you need. No motorcycle endorsement required. You must be 25 or older with a clean driving record to rent.</p>
</details>
<details>
<summary>What's included in every rental?</summary>
<p>Every rental includes the Polaris Slingshot, DOT-approved helmets for driver and passenger, a safety orientation, a suggested scenic route map, roadside assistance, and comprehensive insurance coverage.</p>
</details>
<details>
<summary>How many people can ride in a Polaris Slingshot?</summary>
<p>The Polaris Slingshot is a two-seater — one driver and one passenger. Both experience the open-air thrill side by side in sports-car-style seats.</p>
</details>
<details>
<summary>Is there a security deposit?</summary>
<p>Yes, a refundable security deposit is required at the time of pickup. The deposit is returned in full upon safe return of the vehicle with no damage.</p>
</details>
<details>
<summary>Can I drive outside of Parker County?</summary>
<p>Yes — you can drive throughout the DFW area including Weatherford, Mineral Wells, Granbury, Azle, and Fort Worth. We'll note any restrictions in your rental agreement.</p>
</details>
<details>
<summary>What if it rains?</summary>
<p>The Polaris Slingshot can be driven in light rain, but we recommend rescheduling in severe weather for your safety and comfort. We offer flexible rescheduling with 24-hour notice.</p>
</details>
<details>
<summary>How do I cancel or reschedule?</summary>
<p>Cancel or reschedule free of charge up to 24 hours before your rental start time. Cancellations within 24 hours are subject to a 50% fee.</p>
</details>
</div>
</div>
</section>
<!-- Contact / Booking -->
<section class="contact" id="contact" aria-label="Contact and booking">
<div class="container">
<div class="contact-grid">
<div class="contact-info">
<p class="section-label">Book Your Rental</p>
<h2>Ready to Ride?</h2>
<p>Send us your preferred date and package and we'll confirm availability within a few hours. Can't wait? Give us a call.</p>
<div class="contact-detail">
<span>📍</span>
<span>Weatherford, TX 76086<br />(Exact pickup address provided at booking)</span>
</div>
<div class="contact-detail">
<span>📞</span>
<a href="tel:+18175550199" style="color:inherit;text-decoration:none;">(817) 555-0199</a>
</div>
<div class="contact-detail">
<span>✉️</span>
<a href="mailto:info@parkerslingshotrentals.com" style="color:inherit;text-decoration:none;">info@parkerslingshotrentals.com</a>
</div>
<div class="contact-detail">
<span>🕐</span>
<span>MonFri: 9am6pm &bull; SatSun: 8am8pm</span>
</div>
</div>
<div>
<form class="contact-form" id="bookingForm" novalidate>
<div class="form-row">
<input type="text" name="name" placeholder="Your Name" required />
<input type="email" name="email" placeholder="Email Address" required />
</div>
<input type="tel" name="phone" placeholder="Phone Number" />
<select name="package" required>
<option value="">Select Rental Package</option>
<option value="half-day">Half Day — $99</option>
<option value="full-day">Full Day — $169</option>
<option value="weekend">Weekend — $299</option>
</select>
<input type="date" name="date" required />
<textarea name="message" placeholder="Anything else we should know? (optional)"></textarea>
<button type="submit">Send Booking Request</button>
<div class="form-msg" id="formMsg"></div>
</form>
</div>
</div>
</div>
</section>
<!-- Footer -->
<footer>
<p class="footer-logo">Parker County Slingshot Rentals</p>
<div class="footer-links">
<a href="#why">Why Us</a>
<a href="#pricing">Pricing</a>
<a href="#how">How It Works</a>
<a href="#routes">Routes</a>
<a href="#faq">FAQ</a>
<a href="#contact">Contact</a>
</div>
<p>&copy; 2026 Parker County Slingshot Rentals &mdash; Weatherford, Texas. All rights reserved.</p>
<p style="margin-top:0.5rem;">Polaris Slingshot&reg; is a registered trademark of Polaris Inc. We are an independent rental operator.</p>
</footer>
<script>
// Set min date to today on date picker
const dateInput = document.querySelector('input[type="date"]');
if (dateInput) {
const today = new Date().toISOString().split('T')[0];
dateInput.min = today;
}
document.getElementById('bookingForm').addEventListener('submit', async function(e) {
e.preventDefault();
const form = this;
const msg = document.getElementById('formMsg');
const btn = form.querySelector('button[type="submit"]');
btn.textContent = 'Sending...';
btn.disabled = true;
msg.className = 'form-msg';
msg.style.display = 'none';
const data = {
name: form.querySelector('[name="name"]').value,
email: form.querySelector('[name="email"]').value,
phone: form.querySelector('[name="phone"]').value,
package: form.querySelector('[name="package"]').value,
date: form.querySelector('[name="date"]').value,
message: form.querySelector('[name="message"]').value,
};
try {
const res = await fetch('/contact.php', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(data),
});
const json = await res.json();
if (json.success) {
msg.className = 'form-msg success';
msg.textContent = json.message || 'Thanks! We received your request and will be in touch soon.';
msg.style.display = 'block';
form.reset();
if (dateInput) dateInput.min = new Date().toISOString().split('T')[0];
btn.textContent = 'Request Sent!';
btn.style.background = '#16a34a';
} else {
throw new Error(json.error || 'Something went wrong.');
}
} catch (err) {
msg.className = 'form-msg error';
msg.textContent = err.message || 'Something went wrong. Please try again or call us directly.';
msg.style.display = 'block';
btn.textContent = 'Send Booking Request';
btn.disabled = false;
}
});
</script>
</body>
</html>
+4
View File
@@ -0,0 +1,4 @@
User-agent: *
Allow: /
Sitemap: https://parkerslingshotrentals.com/sitemap.xml
+12
View File
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
<url>
<loc>https://parkerslingshotrentals.com/</loc>
<lastmod>2026-05-19</lastmod>
<changefreq>weekly</changefreq>
<priority>1.0</priority>
</url>
</urlset>