<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Coding AI - Writecream AI</title>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
    <title>Top Short-Term Rental Platforms & Vacation Rental Sites | Writecream</title>
    <meta name="description"
        content="Explore the leading short-term rental platforms for hosts and guests. Compare features, pricing, and services of top vacation rental websites with Writecream." />
    <meta name="keywords"
        content="short-term rental platforms, vacation rental sites, best Airbnb alternatives, rental property management, short-term rental hosting, rental booking sites, Writecream real estate" />
    <meta name="author" content="Writecream" />
    <meta name="robots" content="index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1" />
    <meta name="language" content="English" />
    <meta name="distribution" content="global" />
    <meta name="rating" content="General" />
    <meta name="revisit-after" content="1 days" />
    <meta name="theme-color" content="#5b21b6" />
    <meta name="application-name" content="Writecream Short-Term Rentals" />

    <!-- Canonical -->
    <link rel="canonical" href="https://www.writecream.com/short-term-rental-platforms" />

    <!-- Favicons -->
    <link rel="icon" href="/favicon.ico" />
    <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
    <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png" />
    <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png" />

    <!-- Open Graph / Facebook -->
    <meta property="og:type" content="website" />
    <meta property="og:url" content="https://www.writecream.com/short-term-rental-platforms" />
    <meta property="og:title" content="Writecream | The Best Short-Term Rental Platforms" />
    <meta property="og:description"
        content="Discover and compare the best platforms for booking and listing short-term vacation rentals, including Airbnb, Vrbo, and alternatives." />
    <meta property="og:image" content="https://www.writecream.com/assets/short-term-rental-social.png" />
    <meta property="og:site_name" content="Writecream" />
    <meta property="og:locale" content="en_US" />

    <!-- Twitter Cards -->
    <meta name="twitter:card" content="summary_large_image" />
    <meta name="twitter:url" content="https://www.writecream.com/short-term-rental-platforms" />
    <meta name="twitter:title" content="Writecream | Short-Term Rental Platform Comparison" />
    <meta name="twitter:description"
        content="A comprehensive guide to the top short-term rental platforms and vacation home booking sites." />
    <meta name="twitter:image" content="https://www.writecream.com/assets/short-term-rental-social.png" />
    <meta name="twitter:creator" content="@WritecreamApp" />

    <!-- Instagram -->
    <meta property="og:see_also" content="https://www.instagram.com/writecreamai/" />
    <meta name="instagram:site" content="@writecreamai" />
    <meta name="instagram:image" content="https://www.writecream.com/wp-content/uploads/2025/03/learn-ai.png" />

    <!-- Additional SEO Meta Tags -->
    <meta name="geo.region" content="US" />
    <meta name="geo.placename" content="New York, USA" />
    <meta name="geo.position" content="40.7128;-74.0060" />
    <meta name="ICBM" content="40.7128, -74.0060" />
    <meta name="mobile-web-app-capable" content="yes" />
    <meta name="HandheldFriendly" content="true" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />

    <!-- Schema Markup (JSON-LD) -->
    <script type="application/ld+json">
  {
    "@context": "https://schema.org",
    "@type": "WebPage",
    "name": "Writecream Short-Term Rental Platforms Guide",
    "url": "https://www.writecream.com/short-term-rental-platforms",
    "logo": "https://www.writecream.com/assets/logo.png",
    "description": "A resource providing comparisons and analysis of the leading short-term and vacation rental booking platforms for property owners and travelers.",
    "sameAs": [
      "https://www.facebook.com/writecream",
      "https://www.instagram.com/writecream",
      "https://twitter.com/writecream"
    ]
  }
  </script>

    <!-- Fonts and CSS -->
    <!-- <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=Outfit:wght@400;500;600;700&family=Space+Grotesk:wght@400;500;600;700&display=swap" rel="stylesheet" />
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" /> -->
    <script type="importmap">
      {
        "imports": {
          "react": "https://esm.sh/react@18.2.0",
          "react-dom": "https://esm.sh/react-dom@18.2.0",
          "react-dom/": "https://esm.sh/react-dom@18.2.0/",
          "@codesandbox/sandpack-react": "https://esm.sh/@codesandbox/sandpack-react@2.8.0?deps=react@18.2.0&deps=react-dom@18.2.0"
        }
      }
    </script>
    <script src="https://kit.fontawesome.com/bc081792d4.js" crossorigin="anonymous"></script>

    <style>
        :root {
            --primary-color: #2d2d2d;
            --accent-color: #4a90e2;
            --blue-color: #4a90e2;

            /* Dark theme colors (default and only theme) */
            --bg-color: #000000;
            --surface-color: #2d2d2d;
            --text-color: #e0e0e0;
            --border-color: #404040;
            --input-bg: #2d2d2d;
            --input-border: #404040;
            --pill-bg: #333333;
            --button-bg: #404040;
            --shadow: rgba(0, 0, 0, 0.3);
            --header-border: #404040;
            --footer-bg: #2d2d2d;
            --card-bg: #333333;
            --bg-secondary: #444444;
            --text-secondary: #cccccc;
            --blue-hover: #3a7bc8;
        }

        /* Scrollbar width */
        ::-webkit-scrollbar {
            width: 12px;
        }

        /* Track (background) */
        ::-webkit-scrollbar-track {
            background: #1a1a1a;
            /* dark background */
        }

        /* Handle (thumb) */
        ::-webkit-scrollbar-thumb {
            background: #555;
            /* dark gray */
            border-radius: 6px;
        }

        /* Handle on hover */
        ::-webkit-scrollbar-thumb:hover {
            background: #777;
        }

        /* Base chat bubble styles for dark theme */
        .chat-bubble.ai {
            align-self: flex-start;
            background-color: #3a3a3a;
            /* More specific than --surface-color */
            color: var(--text-color);
            border: 1px solid #505050;
            /* More specific than --border-color */
            border-bottom-left-radius: 4px;
            margin-left: 15px;
            transition: all 0.3s ease;
        }

        .chat-bubble.ai::before {
            content: '';
            position: absolute;
            bottom: 0;
            left: -8px;
            width: 8px;
            height: 8px;
            background-color: #3a3a3a;
            /* Matches the bubble background */
            clip-path: polygon(100% 0, 0% 100%, 100% 100%);
            transition: background-color 0.3s ease;
        }

        .github-stars,
        .github-label {
            color: var(--text-color);
        }

        .badge-together {
            color: rgba(255, 255, 255, 0.8);
            font-size: 0.95rem;
            opacity: 0.8;
        }

        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
            font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
        }

        /* WordPress Theme Compatibility - Full Page Background */
        body,
        html {
            margin: 0 !important;
            padding: 0 !important;
            width: 100% !important;
            overflow-x: hidden !important;
            background: #000000 !important;
            background-color: #000000 !important;
        }

        /* WordPress container adjustments - Full width */
        .container,
        .container-fluid,
        .wrapper,
        .content,
        .main,
        .site-content,
        .entry-content,
        .page-content {
            max-width: none !important;
            width: 100% !important;
            margin: 0 !important;
            padding: 0 !important;
            background: #000000 !important;
        }

        /* Footer full width override for WordPress containers */
        #wrapper .footer, 
        .fusion-wrapper .footer,
        .fusion-page-wrapper .footer,
        .fusion-page-wrapper-row .footer,
        body .footer,
        footer.footer {
            width: 100vw !important;
            max-width: 100vw !important;
            margin-left: calc(-50vw + 50%) !important;
            margin-right: calc(-50vw + 50%) !important;
            background: #000000 !important;
            background-color: #000000 !important;
        }

        /* Additional WordPress wrapper overrides for footer area */
        #main .footer,
        .fusion-page-wrapper .footer,
        .fusion-wrapper .footer,
        .fusion-page-wrapper-row .footer,
        .fusion-builder-row .footer {
            width: 100vw !important;
            max-width: 100vw !important;
            margin-left: calc(-50vw + 50%) !important;
            margin-right: calc(-50vw + 50%) !important;
            background: #000000 !important;
            background-color: #000000 !important;
        }

        /* Ensure our content works within WordPress */
        #landingSection {
            background: #000000;
            color: #e0e0e0;
        }

        /* Fix hero section content centering - keep content centered but background full-width */
        .hero-section {
            text-align: center !important;
            display: flex !important;
            flex-direction: column !important;
            align-items: center !important;
            justify-content: center !important;
        }

        .hero-content,
        .hero-text {
            text-align: center !important;
            margin-left: auto !important;
            margin-right: auto !important;
            max-width: 800px !important;
            width: 100% !important;
            padding: 0 20px !important;
        }

        /* Fix star logo positioning - keep it centered */
        .hero-section h1 {
            text-align: center !important;
            margin: 0 auto !important;
            display: flex !important;
            align-items: center !important;
            justify-content: center !important;
            gap: 15px !important;
        }

        .hero-section p {
            text-align: center !important;
            margin: 0 auto !important;
        }

        /* Fix the actual input container classes from HTML */
        .input-outer-container {
            width: 100% !important;
            display: flex !important;
            justify-content: center !important;
            padding: 10px !important;
        }

        .input-inner-container {
            width: 50% !important;
            max-width: 50% !important;
            margin: 0 auto !important;
        }

        .input-inner-container.vertical {
            background: rgba(255, 255, 255, 0.05) !important;
            border: 1px solid rgba(255, 255, 255, 0.1) !important;
            backdrop-filter: blur(10px) !important;
            border-radius: 16px !important;
            padding: 0 !important;
            overflow: hidden !important;
            display: flex !important;
            flex-direction: column !important;
            position: relative !important;
            width: 100% !important;
            max-width: 100% !important;
        }

        .input-controls-row {
            display: flex !important;
            align-items: center !important;
            background: rgba(255, 255, 255, 0.08) !important;
            border: 1px solid rgba(255, 255, 255, 0.15) !important;
            border-top: none !important;
            border-radius: 0 0 12px 12px !important;
            width: 100% !important;
            box-sizing: border-box !important;
            min-height: 50px !important;
            gap: 12px !important;
            padding: 6px 10px !important;
            justify-content: flex-end !important;
        }

        /* Fix prompt input styling to match original */
        .prompt-input {
            background: rgba(255, 255, 255, 0.08) !important;
            border: 1px solid rgba(255, 255, 255, 0.15) !important;
            color: #ffffff !important;
            border-radius: 12px 12px 0 0 !important;
            padding: 1rem 1.5rem !important;
            font-size: 1rem !important;
            border-bottom: none !important;
            margin-bottom: 0 !important;
            width: 100% !important;
            box-sizing: border-box !important;
            resize: none !important;
            min-height: 60px !important;
            max-height: 200px !important;
            outline: none !important;
            display: block !important;
        }



        /* Fix suggested apps section - centered with proper width */
        .suggested-apps {
            display: flex !important;
            justify-content: center !important;
            align-items: center !important;
            flex-wrap: wrap !important;
            gap: 10px !important;
            max-width: 100% !important;
            margin: 0 auto !important;
            padding: 20px !important;
        }

        .suggested-app {
            margin: 5px !important;
            flex-shrink: 0 !important;
        }

        /* Fix features grid - 3 cards in a row, centered */
        .features-grid {
            display: grid !important;
            grid-template-columns: repeat(3, 280px) !important;
            gap: 20px !important;
            max-width: fit-content !important;
            margin: 0 auto !important;
            padding: 20px !important;
            justify-content: center !important;
        }

        .feature-card {
            width: 280px !important;
            max-width: 280px !important;
        }

        /* Ensure all sections are properly centered */
        .features-section,
        .how-it-works-section,
        .possibilities-section,
        .demo-section,
        .capabilities-section,
        .testimonials-section,
        .cta-section {
            text-align: center !important;
            margin-left: auto !important;
            margin-right: auto !important;
            max-width: 1200px !important;
            width: 100% !important;
        }

        /* WordPress page-specific styling - Full background coverage */
        body.page-id-59363 {
            background: #000000 !important;
            background-color: #000000 !important;
            color: #e0e0e0 !important;
            margin: 0 !important;
            padding: 0 !important;
            min-height: 100vh !important;
        }

        body.page-id-59363 .app-container,
        body.page-id-59363 #landingSection {
            background: #000000 !important;
            color: #e0e0e0 !important;
            margin-top: -40px !important;
            margin-bottom: -150px !important;
            padding-top: 40px !important;
            padding-bottom: 150px !important;
            min-height: calc(100vh + 190px) !important;
        }

        /* WordPress-specific centering for How It Works section */
        body.page-id-59363 .how-it-works-section {
            margin-left: auto !important;
            margin-right: auto !important;
            text-align: center !important;
            max-width: 1000px !important;
            width: 100% !important;
        }

        /* Force center only the subtitle text */
        body.page-id-59363 .how-it-works-subtitle {
            text-align: center !important;
        }

        /* Center ALL section subtitles in WordPress */
        body.page-id-59363 .hero-subtitle,
        body.page-id-59363 .how-it-works-subtitle,
        body.page-id-59363 .endless-subtitle,
        body.page-id-59363 .action-subtitle,
        body.page-id-59363 .more-subtitle,
        body.page-id-59363 .loved-subtitle,
        body.page-id-59363 .cta-subtitle {
            text-align: center !important;
            margin-left: auto !important;
            margin-right: auto !important;
            display: block !important;
            width: 100% !important;
            max-width: 700px !important;
            padding-left: 0 !important;
            padding-right: 0 !important;
        }

        /* Ensure section titles are centered */
        body.page-id-59363 .how-it-works-title,
        body.page-id-59363 .endless-title,
        body.page-id-59363 .action-title,
        body.page-id-59363 .more-title,
        body.page-id-59363 .loved-title,
        body.page-id-59363 .cta-title {
            text-align: center !important;
            margin-left: auto !important;
            margin-right: auto !important;
            display: block !important;
            width: 100% !important;
        }

        /* WordPress-specific centering for all sections */
        body.page-id-59363 .how-it-works-section,
        body.page-id-59363 .endless-possibilities-section,
        body.page-id-59363 .see-it-in-action-section,
        body.page-id-59363 .more-capabilities-section,
        body.page-id-59363 .loved-by-developers-section,
        body.page-id-59363 .ready-to-code-section {
            margin-left: auto !important;
            margin-right: auto !important;
            text-align: center !important;
            max-width: 1200px !important;
            width: 100% !important;
            display: block !important;
            padding-left: 2rem !important;
            padding-right: 2rem !important;
        }

        /* Additional WordPress container overrides for proper centering */
        body.page-id-59363 .fusion-builder-row .how-it-works-section,
        body.page-id-59363 .fusion-builder-row .endless-possibilities-section,
        body.page-id-59363 .fusion-builder-row .see-it-in-action-section,
        body.page-id-59363 .fusion-builder-row .more-capabilities-section,
        body.page-id-59363 .fusion-builder-row .loved-by-developers-section,
        body.page-id-59363 .fusion-builder-row .ready-to-code-section,
        body.page-id-59363 .fusion_builder_column .how-it-works-section,
        body.page-id-59363 .fusion_builder_column .endless-possibilities-section,
        body.page-id-59363 .fusion_builder_column .see-it-in-action-section,
        body.page-id-59363 .fusion_builder_column .more-capabilities-section,
        body.page-id-59363 .fusion_builder_column .loved-by-developers-section,
        body.page-id-59363 .fusion_builder_column .ready-to-code-section,
        body.page-id-59363 .fusion_builder_column_inner .how-it-works-section,
        body.page-id-59363 .fusion_builder_column_inner .endless-possibilities-section,
        body.page-id-59363 .fusion_builder_column_inner .see-it-in-action-section,
        body.page-id-59363 .fusion_builder_column_inner .more-capabilities-section,
        body.page-id-59363 .fusion_builder_column_inner .loved-by-developers-section,
        body.page-id-59363 .fusion_builder_column_inner .ready-to-code-section {
            margin-left: auto !important;
            margin-right: auto !important;
            text-align: center !important;
        }
        
        body.page-id-59363 .fusion-builder-row .how-it-works-subtitle,
        body.page-id-59363 .fusion-builder-row .endless-subtitle,
        body.page-id-59363 .fusion-builder-row .action-subtitle,
        body.page-id-59363 .fusion-builder-row .more-subtitle,
        body.page-id-59363 .fusion-builder-row .loved-subtitle,
        body.page-id-59363 .fusion-builder-row .cta-subtitle,
        body.page-id-59363 .fusion_builder_column .how-it-works-subtitle,
        body.page-id-59363 .fusion_builder_column .endless-subtitle,
        body.page-id-59363 .fusion_builder_column .action-subtitle,
        body.page-id-59363 .fusion_builder_column .more-subtitle,
        body.page-id-59363 .fusion_builder_column .loved-subtitle,
        body.page-id-59363 .fusion_builder_column .cta-subtitle,
        body.page-id-59363 .fusion_builder_column_inner .how-it-works-subtitle,
        body.page-id-59363 .fusion_builder_column_inner .endless-subtitle,
        body.page-id-59363 .fusion_builder_column_inner .action-subtitle,
        body.page-id-59363 .fusion_builder_column_inner .more-subtitle,
        body.page-id-59363 .fusion_builder_column_inner .loved-subtitle,
        body.page-id-59363 .fusion_builder_column_inner .cta-subtitle {
            text-align: center !important;
            margin-left: auto !important;
            margin-right: auto !important;
            display: block !important;
            width: 100% !important;
            max-width: 700px !important;
        }

        /* Ensure WordPress containers don't add white space */
        body.page-id-59363 .container,
        body.page-id-59363 .wrapper,
        body.page-id-59363 .content,
        body.page-id-59363 .main,
        body.page-id-59363 .site-content,
        body.page-id-59363 .entry-content,
        body.page-id-59363 .page-content {
            background: #000000 !important;
            background-color: #000000 !important;
            margin: 0 !important;
            padding: 0 !important;
        }

        /* Remove excessive WordPress overrides - keep minimal */

        /* WordPress container compatibility */
        body.page-id-59363 .container,
        body.page-id-59363 .wrapper,
        body.page-id-59363 .content,
        body.page-id-59363 .main,
        body.page-id-59363 .site-content {
            width: 100%;
            max-width: none;
            margin: 0;
            padding: 0;
        }

        /* Responsive Design Improvements */
        /* For screens 900px and below - STACK VERTICALLY */
        @media (max-width: 900px) {
            .steps-container {
                flex-direction: column !important;
                gap: 1.5rem !important;
                padding: 0 1rem !important;
                max-width: 100% !important;
            }

            .step-arrow {
                transform: rotate(90deg) !important;
                font-size: 1.2rem !important;
            }

            .step-card {
                max-width: 90% !important;
                width: 90% !important;
                min-width: auto !important;
                padding: 1.5rem 1rem !important;
                margin: 0 auto !important;
            }

            .step-title {
                font-size: 1.1rem !important;
                margin-bottom: 0.5rem !important;
            }

            .step-description {
                font-size: 0.9rem !important;
                line-height: 1.4 !important;
            }
        }

        /* Mobile responsive fixes */
        @media (max-width: 768px) {
            .app-container {
                width: 100%;
                max-width: 100%;
                margin: 0 auto;
            }

            /* Mobile footer background fix - increased extension */
            body {
                margin-top: 40px;
                min-height: calc(100vh + 400px) !important;
                background: #000000 !important;
                background-color: #000000 !important;
                padding-bottom: 300px !important;
            }

            #landingSection {
                min-height: calc(100vh + 400px) !important;
                background: #000000 !important;
                background-color: #000000 !important;
                padding-bottom: 300px !important;
            }

            .app-container {
                min-height: calc(100vh + 400px) !important;
                background: #000000 !important;
                background-color: #000000 !important;
                padding-bottom: 300px !important;
            }

            /* Extend background pattern down significantly */
            #landingSection::before {
                height: calc(100% + 300px) !important;
            }

            /* Mobile hero section improvements */
            .hero-section {
                padding: 20px 15px !important;
                min-height: auto !important;
            }

            .inside-hero-section {
                flex-direction: column !important;
                gap: 15px !important;
                padding: 0 5px !important;
            }

            .hero-icon img {
                width: 2.5rem !important;
                height: 2.5rem !important;
            }

            .hero-title {
                font-size: 1.8rem !important;
                margin: 0 !important;
                line-height: 1.2 !important;
            }

            .hero-subtitle {
                font-size: 1rem !important;
                line-height: 1.4 !important;
                margin: 10px 0 !important;
                padding: 0 5px !important;
            }

            .hero-description {
                font-size: 0.9rem !important;
                margin: 10px 0 !important;
                padding: 0 5px !important;
                line-height: 1.4 !important;
            }

            .powered-pill {
                padding: 8px 15px !important;
                font-size: 0.85rem !important;
                margin: 10px auto !important;
                margin-left: 15px !important;
                margin-right: 15px !important;
                display: block !important;
                text-align: center !important;
                width: calc(100% - 30px) !important;
                max-width: calc(100% - 30px) !important;
                box-sizing: border-box !important;
                left: auto !important;
                transform: none !important;
            }
            
            /* Ensure landingSection has proper padding on mobile to prevent elements touching edges */
            #landingSection {
                padding-left: 15px !important;
                padding-right: 15px !important;
                box-sizing: border-box !important;
            }
            
            #landingSection .powered-pill {
                margin-left: 0 !important;
                margin-right: 0 !important;
                width: 100% !important;
                max-width: 100% !important;
            }

            /* Mobile input section fixes */
            .input-section {
                max-width: 100% !important;
                padding: 0 15px !important;
                margin-top: 1rem !important;
            }

            .input-outer-container {
                padding: 10px 5px !important;
            }

            .input-inner-container {
                width: 100% !important;
                max-width: 100% !important;
            }

            .input-container,
            .prompt-input,
            .input-group {
                max-width: 100% !important;
            }

            /* Mobile hero content */
            .hero-content,
            .hero-text {
                max-width: 100% !important;
                padding: 0 20px !important;
            }

            /* Mobile features grid - single column */
            .features-grid {
                grid-template-columns: 1fr !important;
                max-width: 100% !important;
                padding: 10px !important;
            }

            .feature-card {
                width: 100% !important;
                max-width: 350px !important;
                margin: 0 auto !important;
            }

            /* Mobile input containers */
            .input-outer-container {
                padding: 10px !important;
            }

            .input-inner-container {
                max-width: 100% !important;
                padding: 0 10px !important;
            }

            .prompt-input {
                max-width: 100% !important;
            }

            /* Mobile suggested apps */
            .suggested-apps {
                padding: 0 20px !important;
                justify-content: center !important;
            }

            /* Mobile-specific background height reduction */
            body.page-id-59363 .app-container,
            body.page-id-59363 #landingSection {
                margin-top: -20px !important;
                padding-top: 20px !important;
                min-height: calc(100vh + 170px) !important;
            }

            /* Further reduction for very small screens */
            @media (max-width: 480px) {

                body.page-id-59363 .app-container,
                body.page-id-59363 #landingSection {
                    margin-top: -10px !important;
                    padding-top: 10px !important;
                    min-height: calc(100vh + 160px) !important;
                }
            }
        }

        @media (max-width: 480px) {

            /* Extra small screens - improved hero responsiveness */
            .hero-section h1 {
                font-size: 1.6rem !important;
            }

            .hero-section p {
                font-size: 0.85rem !important;
            }

            .hero-title {
                font-size: 1.5rem !important;
                line-height: 1.1 !important;
            }

            .hero-subtitle {
                font-size: 0.9rem !important;
                padding: 0 5px !important;
                margin: 8px 0 !important;
            }

            .hero-description {
                font-size: 0.8rem !important;
                padding: 0 5px !important;
                margin: 8px 0 !important;
                line-height: 1.3 !important;
            }

            .hero-icon img {
                width: 2rem !important;
                height: 2rem !important;
            }

            .powered-pill {
                font-size: 0.8rem !important;
                padding: 6px 12px !important;
                margin: 8px auto !important;
                display: block !important;
                text-align: center !important;
                width: fit-content !important;
                left: auto !important;
                transform: none !important;
            }

            /* Extra small screens - improved testimonial responsiveness */
            .testimonial-container {
                min-height: 300px;
                padding: 0 0.5rem;
                margin: 0 auto 1.5rem;
            }

            .testimonial-nav {
                width: 35px;
                height: 35px;
                font-size: 0.9rem;
            }

            .testimonial-nav.prev-btn {
                left: 5px;
            }

            .testimonial-nav.next-btn {
                right: 5px;
            }

            .testimonial-card {
                padding: 1rem;
                margin: 0 5px;
            }

            .testimonial-avatar {
                width: 35px;
                height: 35px;
            }

            .testimonial-quote {
                font-size: 0.9rem;
                line-height: 1.5;
                margin-bottom: 1rem;
            }

            .testimonial-author-name {
                font-size: 1rem;
            }

            .testimonial-author-title {
                font-size: 0.85rem;
            }

            .testimonial-author-company {
                font-size: 0.8rem;
            }

            .testimonial-dots {
                margin-bottom: 1.5rem;
                gap: 0.5rem;
            }

            .testimonial-dots .dot {
                width: 8px;
                height: 8px;
            }

            .features-grid,
            .possibilities-grid,
            .capabilities-grid {
                grid-template-columns: 1fr !important;
                gap: 1rem !important;
            }

            /* Adjust top margin for very small screens - increased extension */
            body {
                margin-top: 50px;
                min-height: calc(100vh + 600px) !important;
                background: #000000 !important;
                background-color: #000000 !important;
                padding-bottom: 400px !important;
            }

            #landingSection {
                min-height: calc(100vh + 600px) !important;
                background: #000000 !important;
                background-color: #000000 !important;
                padding-bottom: 400px !important;
            }

            .app-container {
                min-height: calc(100vh + 600px) !important;
                background: #000000 !important;
                background-color: #000000 !important;
                padding-bottom: 400px !important;
            }

            /* Extend background pattern down further on small screens */
            #landingSection::before {
                height: calc(100% + 600px) !important;
            }
        }

        body {
            background: #000000;
            color: var(--text-color);
            min-height: 100vh;
            margin: 0;
            font-family: 'Segoe UI', Arial, sans-serif;
            display: flex;
            flex-direction: column;
            transition: background-color 0.3s ease, color 0.3s ease;
            overflow-x: hidden;
        }

        /* Hide main page scrollbar when app is active */
        body.app-active {
            /* overflow: hidden;
    height: 100vh; */
            min-height: 100vh;
        }

        /* Mobile body handling */
        @media (max-width: 767px) {
            body.app-active {
                overflow: visible;
                height: auto;
                min-height: 100vh;
            }
        }

        /* Desktop screens above 768px - remove white spaces */
        @media (min-width: 769px) {
            .container {
                width: 100%;
                max-width: 100%;
                margin: 0;
                padding: 0;
            }

            .header-flex {
                width: 100%;
                max-width: 100%;
                margin: 0;
                padding: 0;
            }
        }

        .container {
            max-width: 100%;
            margin: 0;
            padding: 0;
        }

        .header {
            background: rgba(0, 0, 0, 0.9);
            backdrop-filter: blur(20px);
            padding: 1rem 0;
            border-bottom: 1px solid rgba(255, 255, 255, 0.1);
            z-index: 100;
            position: relative;
            transition: all 0.3s ease, opacity 0.3s ease, transform 0.3s ease;
            display: none;
            /* Hidden by default on landing page */
            opacity: 0;
            transform: translateY(-100%);
            box-shadow: 0 2px 20px rgba(0, 0, 0, 0.3);
            width: 100%;
            margin: 0;
        }

        /* Show header only when conversation has started */
        body.app-active .header {
            display: block;
            opacity: 1;
            transform: translateY(0);
        }

        /* Full-width header fix only when app is active (during generation) - above 1024px */
        @media (min-width: 1025px) {
            body.app-active .header,
            body.app-active #wrapper .header,
            body.app-active .fusion-wrapper .header,
            body.app-active .fusion-page-wrapper .header,
            body.app-active .fusion-page-wrapper-row .header {
                width: 100vw !important;
                max-width: 100vw !important;
                margin-left: calc(-50vw + 50%) !important;
                margin-right: calc(-50vw + 50%) !important;
                background: #000000 !important;
                background-color: #000000 !important;
                padding-top: calc(1rem + 50px) !important;
                margin-top: -50px !important;
            }
        }

        .header-flex {
            display: flex;
            justify-content: center;
            align-items: center;
            position: relative;
        }

        .logo-group {
            display: flex;
            align-items: center;
            gap: 12px;
            transition: all 0.2s ease;
            padding: 8px 16px;
            border-radius: 12px;
            background: rgba(74, 144, 226, 0.1);
            border: 1px solid rgba(74, 144, 226, 0.2);
        }

        .logo-group:hover {
            background: rgba(74, 144, 226, 0.15);
            border-color: rgba(74, 144, 226, 0.3);
            transform: translateY(-1px);
        }

        .logo-icon {
            font-size: 1.5rem;
            color: var(--blue-color);
            font-weight: bold;
            text-shadow: 0 0 10px rgba(74, 144, 226, 0.3);
            font-family: 'Courier New', monospace;
            letter-spacing: -1px;
        }

        .logo-text {
            font-size: 1.5rem;
            font-weight: 600;
            color: #ffffff;
            text-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
        }

        .logo-text .bold {
            font-weight: bold;
        }

        .header-right {
            display: flex;
            align-items: center;
            gap: 12px;
            padding: 6px 12px;
            border-radius: 8px;
            background: rgba(255, 255, 255, 0.08);
            border: 1px solid rgba(255, 255, 255, 0.15);
            position: absolute;
            right: 20px;
        }

        .github-btn {
            display: flex;
            align-items: center;
            gap: 5px;
            text-decoration: none;
            color: var(--text-color);
            font-size: 0.95rem;
        }

        .download-btn {
            display: flex;
            align-items: center;
            justify-content: center;
            padding: 8px 12px;
            background: linear-gradient(135deg, #4a90e2, #357abd);
            border: none;
            border-radius: 8px;
            color: white;
            font-size: 1rem;
            cursor: pointer;
            transition: all 0.3s ease;
            margin-right: 10px;
            min-width: 40px;
            height: 36px;
            z-index: 9999;
            position: relative;
        }

        .download-btn:hover {
            background: linear-gradient(135deg, #357abd, #2a6aa0);
            transform: translateY(-1px);
            box-shadow: 0 4px 12px rgba(74, 144, 226, 0.3);
        }

        .download-btn:active {
            transform: translateY(0);
        }

        .deploy-netlify-btn {
            display: flex;
            align-items: center;
            justify-content: center;
            padding: 8px 12px;
            background: linear-gradient(135deg, #00ad9f, #00d4aa);
            border: none;
            border-radius: 8px;
            color: white;
            font-size: 1rem;
            cursor: pointer;
            transition: all 0.3s ease;
            margin-right: 10px;
            min-width: 40px;
            height: 36px;
            z-index: 9999;
            position: relative;
            gap: 6px;
            font-weight: 500;
            white-space: nowrap;
        }

        .deploy-netlify-btn:hover {
            background: linear-gradient(135deg, #00947f, #00b394);
            transform: translateY(-1px);
            box-shadow: 0 4px 12px rgba(0, 173, 159, 0.3);
        }

        .deploy-netlify-btn:active {
            transform: translateY(0);
        }

        /* Set Token button styled to match Deploy to Netlify */
        .set-token-btn {
            display: flex;
            align-items: center;
            justify-content: center;
            padding: 8px 12px;
            background: linear-gradient(135deg, #00ad9f, #00d4aa);
            border: none;
            border-radius: 8px;
            color: white;
            font-size: 1rem;
            cursor: pointer;
            transition: all 0.3s ease;
            margin-right: 10px;
            min-width: 40px;
            height: 36px;
            z-index: 9999;
            position: relative;
            gap: 6px;
            font-weight: 500;
            white-space: nowrap;
        }

        .set-token-btn:hover {
            background: linear-gradient(135deg, #00947f, #00b394);
            transform: translateY(-1px);
            box-shadow: 0 4px 12px rgba(0, 173, 159, 0.3);
        }

        .set-token-btn:active {
            transform: translateY(0);
        }

        .download-icon {
            font-size: 1.1rem;
            display: block;
        }

        .powered-pill {
            text-align: center;
            margin: 2rem auto;
            font-size: 0.95rem;
            border-radius: 50px;
            padding: 8px 20px;
            display: inline-block;
            position: relative;
            left: 50%;
            transform: translateX(-50%);
            transition: background-color 0.3s ease, color 0.3s ease;
            /* Merged dark theme styles */
            background: rgba(255, 255, 255, 0.08);
            border: 1px solid rgba(255, 255, 255, 0.15);
            backdrop-filter: blur(10px);
            color: rgba(255, 255, 255, 0.9);
        }

        .main-heading {
            text-align: center;
            font-size: 2.7rem;
            margin-bottom: 2.5rem;
            font-weight: 500;
            color: var(--text-color);
            transition: color 0.3s ease;
        }

        /* Typing animation styles */
        #animated-word {
            position: relative;
            display: inline-block;
            min-width: 120px;
            text-align: left;
        }

        #animated-word::after {
            content: '|';
            color: var(--blue-color);
            animation: blink 1s infinite;
            margin-left: 2px;
        }

        @keyframes blink {

            0%,
            50% {
                opacity: 1;
            }

            51%,
            100% {
                opacity: 0;
            }
        }

        @keyframes typewriter {
            from {
                width: 0;
            }

            to {
                width: 100%;
            }
        }

        .main-heading .blue {
            color: var(--blue-color);
        }

        /* Landing page input styling - Extended top and bottom coverage */
        #landingSection {
            min-height: calc(100vh + 230px) !important;
            background: #000000 !important;
            background-color: #000000 !important;
            position: relative;
            overflow: hidden;
            padding: 80px 0 150px 0 !important;
            margin: 0 !important;
            width: 100vw !important;
            margin-left: calc(-50vw + 50%) !important;
            margin-right: calc(-50vw + 50%) !important;
            margin-top: -80px !important;
            margin-bottom: -150px !important;
        }

        /* Animated starry background */
        #landingSection::before {
            content: '';
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: calc(100% - 100px);
            background-image:
                radial-gradient(2px 2px at 20px 30px, #4a90e2, transparent),
                radial-gradient(2px 2px at 40px 70px, rgba(74, 144, 226, 0.8), transparent),
                radial-gradient(1px 1px at 90px 40px, #6b73ff, transparent),
                radial-gradient(1px 1px at 130px 80px, rgba(107, 115, 255, 0.6), transparent),
                radial-gradient(2px 2px at 160px 30px, #4a90e2, transparent);
            background-repeat: repeat;
            background-size: 200px 100px;
            animation: twinkle 3s ease-in-out infinite alternate;
            z-index: 0;
        }

        @keyframes twinkle {
            0% {
                opacity: 0.3;
            }

            100% {
                opacity: 0.8;
            }
        }

        /* Hero Section */
        .hero-section {
            text-align: center;
            padding: 0rem 0 0rem;
            position: relative;
            z-index: 1;
        }

        .inside-hero-section {
            display: flex;
            justify-content: center;
            align-items: center;
        }

        .hero-icon {
            font-size: 3rem;
            margin-bottom: 0.5rem;
            color: #4a90e2;
            display: inline-block;
            animation: float 3s ease-in-out infinite;
        }

        .hero-icon img {
            width: 4rem;
            height: 2.5rem;
            object-fit: contain;
            display: block;
        }

        @keyframes float {

            0%,
            100% {
                transform: translateY(0px);
            }

            50% {
                transform: translateY(-10px);
            }
        }

        .hero-title {
            font-size: 3.5rem;
            font-weight: 700;
            color: #ffffff;
            margin-bottom: 0.5rem;
            line-height: 1.2;
            text-shadow: 0 0 20px rgba(74, 144, 226, 0.3);
        }

        .hero-subtitle {
            font-size: 1.3rem;
            color: rgba(255, 255, 255, 0.9);
            margin-bottom: 0.5rem;
            line-height: 1.6;
            max-width: 600px;
            margin-left: auto;
            margin-right: auto;
        }

        .hero-description {
            font-size: 1.1rem;
            color: rgba(255, 255, 255, 0.7);
            margin-bottom: 3rem;
            max-width: 500px;
            margin-left: auto;
            margin-right: auto;
        }

        /* Update input section for dark theme */
        #landingSection .input-outer-container {
            position: relative;
            z-index: 1;
            width: 100%;
            margin-left: auto;
            margin-right: auto;
            /* Merged styles */
            display: flex;
            justify-content: center;
            margin-bottom: 2rem;
            max-width: 700px;
        }

        #landingSection .input-inner-container.vertical {
            background: rgba(255, 255, 255, 0.05);
            border: 1px solid rgba(255, 255, 255, 0.1);
            backdrop-filter: blur(10px);
            border-radius: 16px;
            padding: 0;
            overflow: hidden;
            display: flex;
            flex-direction: column;
            position: relative;
            width: 100%;
            max-width: 100%;
        }

        #landingSection .prompt-input {
            background: rgba(255, 255, 255, 0.08);
            border: 1px solid rgba(255, 255, 255, 0.15);
            color: #ffffff;
            border-radius: 12px 12px 0 0;
            padding: 1rem 1.5rem;
            font-size: 1rem;
            border-bottom: none;
            margin-bottom: 0;
            width: 100%;
            box-sizing: border-box;
            resize: none;
            min-height: 60px;
            max-height: 200px;
            outline: none;
            display: block;
        }

        #landingSection .input-controls-row {
            display: flex;
            align-items: center;
            background: rgba(255, 255, 255, 0.08);
            border: 1px solid rgba(255, 255, 255, 0.15);
            border-top: none;
            border-radius: 0 0 12px 12px;
            width: 100%;
            box-sizing: border-box;
            min-height: 50px;
            gap: 12px;
            /* Merged/updated styles */
            padding: 6px 10px;
            justify-content: flex-end;
        }

        #landingSection .prompt-input::placeholder {
            color: rgba(255, 255, 255, 0.6);
        }

        .generate-code-btn {
            background: linear-gradient(135deg, #4a90e2, #6b73ff) !important;
            color: white !important;
            border: none !important;
            padding: 0.75rem 1.5rem !important;
            border-radius: 10px !important;
            font-weight: 600 !important;
            font-size: 0.9rem !important;
            white-space: nowrap !important;
            min-width: fit-content !important;
            max-width: 150px !important;
            box-shadow: 0 4px 15px rgba(74, 144, 226, 0.3) !important;
            transition: all 0.3s ease !important;
            flex-shrink: 0 !important;
            height: auto !important;
            display: inline-flex !important;
            align-items: center !important;
            justify-content: center !important;
        }

        .generate-code-btn:hover {
            transform: translateY(-2px) !important;
            box-shadow: 0 6px 20px rgba(74, 144, 226, 0.4) !important;
        }

        /* Features Grid */
        .features-grid {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
            gap: 2rem;
            margin: 4rem 0;
            position: relative;
            z-index: 1;
        }

        .feature-card {
            background: rgba(255, 255, 255, 0.05);
            border: 1px solid rgba(255, 255, 255, 0.1);
            border-radius: 16px;
            padding: 2rem;
            text-align: center;
            backdrop-filter: blur(10px);
            transition: all 0.3s ease;
            position: relative;
            overflow: hidden;
        }

        .feature-card::before {
            content: '';
            position: absolute;
            top: 0;
            left: -100%;
            width: 100%;
            height: 100%;
            background: linear-gradient(90deg, transparent, rgba(74, 144, 226, 0.1), transparent);
            transition: left 0.5s ease;
        }

        .feature-card:hover::before {
            left: 100%;
        }

        .feature-card:hover {
            transform: translateY(-5px);
            border-color: rgba(74, 144, 226, 0.3);
            box-shadow: 0 10px 30px rgba(74, 144, 226, 0.2);
        }

        .feature-icon {
            font-size: 2.5rem;
            color: #4a90e2;
            margin-bottom: 1rem;
            display: inline-block;
        }

        .feature-icon img {
            width: 2.5rem;
            height: 2.5rem;
            object-fit: contain;
            display: block;
        }

        /* Aggressive WordPress white space removal */
        body.page-id-59363 .header,
        body.page-id-59363 header,
        body.page-id-59363 .header-flex,
        body.page-id-59363 .container {
            width: 100vw !important;
            max-width: 100vw !important;
            margin-left: calc(-50vw + 50%) !important;
            margin-right: calc(-50vw + 50%) !important;
            padding-left: 0 !important;
            padding-right: 0 !important;
            background: rgba(0, 0, 0, 0.9) !important;
        }

        /* Force remove any WordPress container constraints */
        body.page-id-59363 #main,
        body.page-id-59363 .layout-boxed-mode #main,
        body.page-id-59363 .layout-wide-mode #main,
        body.page-id-59363 .layout-wide-mode #wrapper,
        body.page-id-59363 .wrapper,
        body.page-id-59363 .content,
        body.page-id-59363 .site-content {
            width: 100vw !important;
            max-width: 100vw !important;
            margin: 0 !important;
            padding: 0 !important;
            background: #000000 !important;
        }

        /* Remove any WordPress theme padding/margins */
        body.page-id-59363 * {
            box-sizing: border-box !important;
        }

        /* Target specific WordPress theme elements causing white spaces */
        body.page-id-59363 .fusion-header,
        body.page-id-59363 .fusion-header-wrapper,
        body.page-id-59363 .fusion-secondary-header,
        body.page-id-59363 .fusion-main-header,
        body.page-id-59363 .avada-header,
        body.page-id-59363 .header-wrapper,
        body.page-id-59363 .site-header,
        body.page-id-59363 .main-header {
            width: 100vw !important;
            max-width: 100vw !important;
            margin: 0 !important;
            padding: 0 !important;
            background: rgba(0, 0, 0, 0.9) !important;
        }

        /* Remove any WordPress theme container padding */
        body.page-id-59363 .fusion-container,
        body.page-id-59363 .fusion-row,
        body.page-id-59363 .fusion-column,
        body.page-id-59363 .fusion-builder-row,
        body.page-id-59363 .fusion-builder-column {
            padding-left: 0 !important;
            padding-right: 0 !important;
            margin-left: 0 !important;
            margin-right: 0 !important;
        }

        /* Force header to break out of any container constraints */
        body.page-id-59363 .header {
            position: relative !important;
            left: 0 !important;
            right: 0 !important;
            transform: none !important;
        }

        body.page-id-59363 .header *,
        body.page-id-59363 header * {
            margin-left: 0 !important;
            margin-right: 0 !important;
            padding-left: 0 !important;
            padding-right: 0 !important;
        }

        /* Override WordPress background color for main elements */
        #main,
        .layout-boxed-mode #main,
        .layout-boxed-mode.avada-footer-fx-sticky .above-footer-wrapper,
        .layout-boxed-mode.avada-footer-fx-sticky-with-parallax-bg-image .above-footer-wrapper,
        .layout-wide-mode #main,
        .layout-wide-mode #wrapper,
        body,
        html,
        html body.custom-background {
            background-color: #000000 !important;
        }

        /* Fix WordPress template elements - remove unwanted lines and backgrounds */
        body.page-id-59363 * {
            border: none !important;
        }

        /* Remove white line at top of WordPress interface */
        body.page-id-59363::before,
        body.page-id-59363::after,
        body.page-id-59363 *::before,
        body.page-id-59363 *::after {
            border: none !important;
            background: transparent !important;
            content: none !important;
        }

        /* Remove top borders and lines from WordPress elements */
        body.page-id-59363 body,
        body.page-id-59363 html,
        body.page-id-59363 #page,
        body.page-id-59363 .site,
        body.page-id-59363 .site-header,
        body.page-id-59363 .site-main,
        body.page-id-59363 .site-footer,
        body.page-id-59363 .wp-site-blocks,
        body.page-id-59363 .wp-block-group,
        body.page-id-59363 .wp-container {
            border-top: none !important;
            border-bottom: none !important;
            border-left: none !important;
            border-right: none !important;
            border: none !important;
            outline: none !important;
            box-shadow: none !important;
        }

        /* Remove specific borders from WordPress elements */
        body.page-id-59363 div,
        body.page-id-59363 section,
        body.page-id-59363 article,
        body.page-id-59363 main,
        body.page-id-59363 header,
        body.page-id-59363 footer,
        body.page-id-59363 nav,
        body.page-id-59363 aside {
            border: none !important;
            border-top: none !important;
            border-bottom: none !important;
            border-left: none !important;
            border-right: none !important;
        }

        /* Remove backgrounds from WordPress template elements */
        body.page-id-59363 .wp-container,
        body.page-id-59363 .wp-block-group,
        body.page-id-59363 .wp-block-column,
        body.page-id-59363 .wp-block-columns,
        body.page-id-59363 .entry-content,
        body.page-id-59363 .site-content,
        body.page-id-59363 .content-area {
            background: transparent !important;
            background-color: transparent !important;
        }

        /* Remove WordPress admin bar and top elements */
        body.page-id-59363 #wpadminbar,
        body.page-id-59363 .admin-bar,
        body.page-id-59363 .wp-admin-bar,
        body.page-id-59363 [id*="admin"],
        body.page-id-59363 [class*="admin"] {
            display: none !important;
            border: none !important;
            background: transparent !important;
        }

        /* Force remove any top-level borders */
        body.page-id-59363>* {
            border-top: none !important;
            border: none !important;
            outline: none !important;
        }

        /* WordPress-specific mobile footer background fixes - increased */
        body.page-id-59363 {
            min-height: calc(100vh + 800px) !important;
            background: #000000 !important;
            background-color: #000000 !important;
        }

        body.page-id-59363 #landingSection {
            min-height: calc(100vh + 800px) !important;
            background: #000000 !important;
            background-color: #000000 !important;
        }

        body.page-id-59363 .app-container {
            min-height: calc(100vh + 200px) !important;
            background: #000000 !important;
            background-color: #000000 !important;
        }

        /* WordPress mobile footer background extension - increased */
        @media (max-width: 768px) {
            body.page-id-59363 {
                min-height: calc(100vh + 200px) !important;
            }

            body.page-id-59363 #landingSection {
                min-height: calc(100vh + 200px) !important;
            }

            body.page-id-59363 .app-container {
                min-height: calc(100vh + 200px) !important;
            }

            body.page-id-59363 #landingSection::before {
                height: calc(100% + 200px) !important;
            }
        }

        /* Additional WordPress overrides for feature cards */
        body.page-id-59363 .feature-card h3,
        body.page-id-59363 .capability-card h3,
        body.page-id-59363 .possibility-card h3 {
            color: #4a90e2 !important;
            font-weight: 600 !important;
        }

        /* WordPress-specific heading color fixes */
        /* WordPress-specific heading color fixes - only for our app content */
        body.page-id-59363 #landingSection h1,
        body.page-id-59363 #landingSection h2,
        body.page-id-59363 #landingSection h3,
        body.page-id-59363 #landingSection h4,
        body.page-id-59363 #landingSection h5,
        body.page-id-59363 #landingSection h6,
        body.page-id-59363 .app-container h1,
        body.page-id-59363 .app-container h2,
        body.page-id-59363 .app-container h3,
        body.page-id-59363 .app-container h4,
        body.page-id-59363 .app-container h5,
        body.page-id-59363 .app-container h6 {
            color: #ffffff !important;
        }

        /* Specific WordPress overrides for feature titles */
        body.page-id-59363 .feature-title,
        body.page-id-59363 .capability-title,
        body.page-id-59363 .possibility-title,
        body.page-id-59363 .feature-card h3,
        body.page-id-59363 .capability-card h3,
        body.page-id-59363 .possibility-card h3 {
            color: #4a90e2 !important;
            font-weight: 600 !important;
        }

        /* Ensure feature titles are blue in WordPress */
        .feature-title {
            color: #4a90e2 !important;
            font-weight: 600 !important;
        }

        /* Fusion Builder and WordPress h1 color override */
        fusion-modal h1, .fusion-post-content h1, .fusion-tb-footer h1, .fusion-tb-page-title-bar h1, .fusion-widget-area h1, .post-content h1, .search-page-search-form h1, .