Category · Interactive Difficulty Level · Advanced Published on · January 20, 2025

Modern FAQ Component

A cutting-edge FAQ component with glassmorphism design, smooth animations, and modern UI patterns

#faq #modern #glassmorphism #animations #responsive #interactive

Responsive Design

Yes

Dark Mode Support

No

lines

265

Browser Compatibility

No

Live Preview

Interact with the component without leaving the page.

600px

Modern FAQ Component

A cutting-edge FAQ component featuring glassmorphism design, smooth micro-interactions, and modern UI patterns with advanced animations.

Features

  • Glassmorphism Design: Modern glass-like appearance with backdrop blur effects
  • Micro-interactions: Subtle animations and hover effects for enhanced user experience
  • Smart Search: AI-powered search with auto-suggestions and typo tolerance
  • Dynamic Theming: Light/dark mode toggle with smooth transitions
  • Progressive Disclosure: Intelligent content revelation based on user behavior
  • Voice Search: Speech-to-text search functionality
  • Accessibility First: WCAG 2.1 AA compliant with full keyboard navigation
  • Performance Optimized: Lazy loading, virtual scrolling, and efficient rendering
  • Analytics Integration: Built-in tracking for user interactions and search patterns
  • Customizable Animations: CSS custom properties for easy animation customization

HTML Structure

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Modern FAQ Component</title>
    <link rel="stylesheet" href="styles.css">
</head>
<body>
    <div class="modern-faq-container" data-theme="light">
        <!-- Background Elements -->
        <div class="background-elements">
            <div class="floating-shape shape-1"></div>
            <div class="floating-shape shape-2"></div>
            <div class="floating-shape shape-3"></div>
            <div class="gradient-orb orb-1"></div>
            <div class="gradient-orb orb-2"></div>
        </div>

        <!-- Header Section -->
        <header class="faq-header">
            <div class="header-content">
                <div class="title-section">
                    <h1 class="main-title">
                        <span class="title-gradient">Frequently Asked</span>
                        <span class="title-highlight">Questions</span>
                    </h1>
                    <p class="subtitle">Find answers to common questions with our intelligent search system</p>
                </div>
                <div class="header-controls">
                    <button class="theme-toggle" aria-label="Toggle theme">
                        <div class="theme-toggle-track">
                            <div class="theme-toggle-thumb">
                                <svg class="sun-icon" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor">
                                    <circle cx="12" cy="12" r="5"></circle>
                                    <line x1="12" y1="1" x2="12" y2="3"></line>
                                    <line x1="12" y1="21" x2="12" y2="23"></line>
                                    <line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
                                    <line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
                                    <line x1="1" y1="12" x2="3" y2="12"></line>
                                    <line x1="21" y1="12" x2="23" y2="12"></line>
                                    <line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
                                    <line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
                                </svg>
                                <svg class="moon-icon" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor">
                                    <path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
                                </svg>
                            </div>
                        </div>
                    </button>
                </div>
            </div>
        </header>

        <!-- Search Section -->
        <section class="search-section">
            <div class="search-container">
                <div class="search-input-wrapper">
                    <div class="search-icon-container">
                        <svg class="search-icon" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor">
                            <circle cx="11" cy="11" r="8"></circle>
                            <path d="m21 21-4.35-4.35"></path>
                        </svg>
                    </div>
                    <input type="text" 
                           class="search-input" 
                           placeholder="Ask anything..."
                           aria-label="Search FAQ">
                    <div class="search-actions">
                        <button class="voice-search-btn" aria-label="Voice search">
                            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor">
                                <path d="M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z"></path>
                                <path d="M19 10v2a7 7 0 0 1-14 0v-2"></path>
                                <line x1="12" y1="19" x2="12" y2="23"></line>
                                <line x1="8" y1="23" x2="16" y2="23"></line>
                            </svg>
                        </button>
                        <button class="clear-search" style="display: none;" aria-label="Clear search">
                            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor">
                                <line x1="18" y1="6" x2="6" y2="18"></line>
                                <line x1="6" y1="6" x2="18" y2="18"></line>
                            </svg>
                        </button>
                    </div>
                </div>
                
                <!-- Search Suggestions -->
                <div class="search-suggestions" style="display: none;">
                    <div class="suggestions-header">
                        <span>Popular searches</span>
                    </div>
                    <div class="suggestions-list">
                        <button class="suggestion-item" data-query="account setup">
                            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor">
                                <circle cx="11" cy="11" r="8"></circle>
                                <path d="m21 21-4.35-4.35"></path>
                            </svg>
                            <span>account setup</span>
                        </button>
                        <button class="suggestion-item" data-query="billing issues">
                            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor">
                                <circle cx="11" cy="11" r="8"></circle>
                                <path d="m21 21-4.35-4.35"></path>
                            </svg>
                            <span>billing issues</span>
                        </button>
                        <button class="suggestion-item" data-query="password reset">
                            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor">
                                <circle cx="11" cy="11" r="8"></circle>
                                <path d="m21 21-4.35-4.35"></path>
                            </svg>
                            <span>password reset</span>
                        </button>
                    </div>
                </div>
            </div>

            <!-- Quick Filters -->
            <div class="quick-filters">
                <div class="filter-chips">
                    <button class="filter-chip active" data-category="all">
                        <span class="chip-icon">✨</span>
                        <span>All Topics</span>
                        <span class="chip-count">12</span>
                    </button>
                    <button class="filter-chip" data-category="getting-started">
                        <span class="chip-icon">🚀</span>
                        <span>Getting Started</span>
                        <span class="chip-count">4</span>
                    </button>
                    <button class="filter-chip" data-category="account">
                        <span class="chip-icon">👤</span>
                        <span>Account</span>
                        <span class="chip-count">3</span>
                    </button>
                    <button class="filter-chip" data-category="billing">
                        <span class="chip-icon">💳</span>
                        <span>Billing</span>
                        <span class="chip-count">3</span>
                    </button>
                    <button class="filter-chip" data-category="technical">
                        <span class="chip-icon">⚙️</span>
                        <span>Technical</span>
                        <span class="chip-count">2</span>
                    </button>
                </div>
            </div>
        </section>

        <!-- FAQ Content -->
        <main class="faq-content">
            <!-- Search Results Info -->
            <div class="results-info">
                <div class="results-text">
                    <span class="results-count">Showing 12 questions</span>
                    <span class="search-time"></span>
                </div>
                <div class="view-controls">
                    <button class="sort-btn" aria-label="Sort options">
                        <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor">
                            <path d="M3 6h18"></path>
                            <path d="M7 12h10"></path>
                            <path d="M10 18h4"></path>
                        </svg>
                        <span>Sort</span>
                    </button>
                </div>
            </div>

            <!-- FAQ Items -->
            <div class="faq-list">
                <!-- FAQ Item 1 -->
                <article class="faq-item" data-category="getting-started" data-keywords="account registration signup create profile">
                    <div class="faq-item-inner">
                        <div class="question-section">
                            <div class="question-header">
                                <div class="category-indicator getting-started">
                                    <span class="category-dot"></span>
                                    <span class="category-label">Getting Started</span>
                                </div>
                                <div class="question-actions">
                                    <button class="bookmark-btn" aria-label="Bookmark this question">
                                        <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor">
                                            <path d="M19 21l-7-5-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z"></path>
                                        </svg>
                                    </button>
                                    <button class="share-btn" aria-label="Share this question">
                                        <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor">
                                            <circle cx="18" cy="5" r="3"></circle>
                                            <circle cx="6" cy="12" r="3"></circle>
                                            <circle cx="18" cy="19" r="3"></circle>
                                            <line x1="8.59" y1="13.51" x2="15.42" y2="17.49"></line>
                                            <line x1="15.41" y1="6.51" x2="8.59" y2="10.49"></line>
                                        </svg>
                                    </button>
                                </div>
                            </div>
                            <button class="question-button" aria-expanded="false">
                                <h3 class="question-title">How do I create an account?</h3>
                                <div class="question-meta">
                                    <span class="popularity-indicator">
                                        <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor">
                                            <path d="M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3"></path>
                                        </svg>
                                        <span>24 helpful</span>
                                    </span>
                                    <span class="last-updated">Updated 2 days ago</span>
                                </div>
                                <div class="expand-indicator">
                                    <svg class="expand-icon" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor">
                                        <polyline points="6,9 12,15 18,9"></polyline>
                                    </svg>
                                </div>
                            </button>
                        </div>
                        
                        <div class="answer-section" style="display: none;">
                            <div class="answer-content">
                                <div class="answer-text">
                                    <p>Creating an account is quick and easy! Follow these simple steps:</p>
                                    <div class="step-list">
                                        <div class="step-item">
                                            <div class="step-number">1</div>
                                            <div class="step-content">
                                                <h4>Click "Sign Up"</h4>
                                                <p>Find the sign-up button in the top right corner of any page</p>
                                            </div>
                                        </div>
                                        <div class="step-item">
                                            <div class="step-number">2</div>
                                            <div class="step-content">
                                                <h4>Enter Your Details</h4>
                                                <p>Provide your email address and create a secure password</p>
                                            </div>
                                        </div>
                                        <div class="step-item">
                                            <div class="step-number">3</div>
                                            <div class="step-content">
                                                <h4>Verify Your Email</h4>
                                                <p>Check your inbox and click the verification link we sent you</p>
                                            </div>
                                        </div>
                                        <div class="step-item">
                                            <div class="step-number">4</div>
                                            <div class="step-content">
                                                <h4>Complete Your Profile</h4>
                                                <p>Add your personal information and preferences</p>
                                            </div>
                                        </div>
                                    </div>
                                </div>
                                
                                <div class="answer-footer">
                                    <div class="helpful-section">
                                        <span class="helpful-label">Was this helpful?</span>
                                        <div class="helpful-buttons">
                                            <button class="helpful-btn helpful-yes" data-helpful="true">
                                                <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor">
                                                    <path d="M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3"></path>
                                                </svg>
                                                <span>Yes</span>
                                            </button>
                                            <button class="helpful-btn helpful-no" data-helpful="false">
                                                <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor">
                                                    <path d="M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17"></path>
                                                </svg>
                                                <span>No</span>
                                            </button>
                                        </div>
                                    </div>
                                    
                                    <div class="related-links">
                                        <span class="related-label">Related:</span>
                                        <a href="#" class="related-link">Account Settings</a>
                                        <a href="#" class="related-link">Profile Setup</a>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </article>

                <!-- FAQ Item 2 -->
                <article class="faq-item" data-category="billing" data-keywords="payment methods credit card paypal billing subscription">
                    <div class="faq-item-inner">
                        <div class="question-section">
                            <div class="question-header">
                                <div class="category-indicator billing">
                                    <span class="category-dot"></span>
                                    <span class="category-label">Billing</span>
                                </div>
                                <div class="question-actions">
                                    <button class="bookmark-btn" aria-label="Bookmark this question">
                                        <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor">
                                            <path d="M19 21l-7-5-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z"></path>
                                        </svg>
                                    </button>
                                    <button class="share-btn" aria-label="Share this question">
                                        <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor">
                                            <circle cx="18" cy="5" r="3"></circle>
                                            <circle cx="6" cy="12" r="3"></circle>
                                            <circle cx="18" cy="19" r="3"></circle>
                                            <line x1="8.59" y1="13.51" x2="15.42" y2="17.49"></line>
                                            <line x1="15.41" y1="6.51" x2="8.59" y2="10.49"></line>
                                        </svg>
                                    </button>
                                </div>
                            </div>
                            <button class="question-button" aria-expanded="false">
                                <h3 class="question-title">What payment methods do you accept?</h3>
                                <div class="question-meta">
                                    <span class="popularity-indicator">
                                        <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor">
                                            <path d="M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3"></path>
                                        </svg>
                                        <span>18 helpful</span>
                                    </span>
                                    <span class="last-updated">Updated 1 week ago</span>
                                </div>
                                <div class="expand-indicator">
                                    <svg class="expand-icon" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor">
                                        <polyline points="6,9 12,15 18,9"></polyline>
                                    </svg>
                                </div>
                            </button>
                        </div>
                        
                        <div class="answer-section" style="display: none;">
                            <div class="answer-content">
                                <div class="answer-text">
                                    <p>We accept all major payment methods to make your experience convenient:</p>
                                    <div class="payment-grid">
                                        <div class="payment-category">
                                            <h4>Credit & Debit Cards</h4>
                                            <div class="payment-items">
                                                <div class="payment-item">
                                                    <div class="payment-icon">💳</div>
                                                    <span>Visa</span>
                                                </div>
                                                <div class="payment-item">
                                                    <div class="payment-icon">💳</div>
                                                    <span>MasterCard</span>
                                                </div>
                                                <div class="payment-item">
                                                    <div class="payment-icon">💳</div>
                                                    <span>American Express</span>
                                                </div>
                                                <div class="payment-item">
                                                    <div class="payment-icon">💳</div>
                                                    <span>Discover</span>
                                                </div>
                                            </div>
                                        </div>
                                        <div class="payment-category">
                                            <h4>Digital Wallets</h4>
                                            <div class="payment-items">
                                                <div class="payment-item">
                                                    <div class="payment-icon">📱</div>
                                                    <span>PayPal</span>
                                                </div>
                                                <div class="payment-item">
                                                    <div class="payment-icon">📱</div>
                                                    <span>Apple Pay</span>
                                                </div>
                                                <div class="payment-item">
                                                    <div class="payment-icon">📱</div>
                                                    <span>Google Pay</span>
                                                </div>
                                                <div class="payment-item">
                                                    <div class="payment-icon">📱</div>
                                                    <span>Samsung Pay</span>
                                                </div>
                                            </div>
                                        </div>
                                    </div>
                                </div>
                                
                                <div class="answer-footer">
                                    <div class="helpful-section">
                                        <span class="helpful-label">Was this helpful?</span>
                                        <div class="helpful-buttons">
                                            <button class="helpful-btn helpful-yes" data-helpful="true">
                                                <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor">
                                                    <path d="M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3"></path>
                                                </svg>
                                                <span>Yes</span>
                                            </button>
                                            <button class="helpful-btn helpful-no" data-helpful="false">
                                                <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor">
                                                    <path d="M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17"></path>
                                                </svg>
                                                <span>No</span>
                                            </button>
                                        </div>
                                    </div>
                                    
                                    <div class="related-links">
                                        <span class="related-label">Related:</span>
                                        <a href="#" class="related-link">Billing Settings</a>
                                        <a href="#" class="related-link">Subscription Plans</a>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </article>

                <!-- FAQ Item 3 -->
                <article class="faq-item" data-category="technical" data-keywords="password reset forgot login security account access">
                    <div class="faq-item-inner">
                        <div class="question-section">
                            <div class="question-header">
                                <div class="category-indicator technical">
                                    <span class="category-dot"></span>
                                    <span class="category-label">Technical</span>
                                </div>
                                <div class="question-actions">
                                    <button class="bookmark-btn" aria-label="Bookmark this question">
                                        <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor">
                                            <path d="M19 21l-7-5-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z"></path>
                                        </svg>
                                    </button>
                                    <button class="share-btn" aria-label="Share this question">
                                        <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor">
                                            <circle cx="18" cy="5" r="3"></circle>
                                            <circle cx="6" cy="12" r="3"></circle>
                                            <circle cx="18" cy="19" r="3"></circle>
                                            <line x1="8.59" y1="13.51" x2="15.42" y2="17.49"></line>
                                            <line x1="15.41" y1="6.51" x2="8.59" y2="10.49"></line>
                                        </svg>
                                    </button>
                                </div>
                            </div>
                            <button class="question-button" aria-expanded="false">
                                <h3 class="question-title">How do I reset my password?</h3>
                                <div class="question-meta">
                                    <span class="popularity-indicator">
                                        <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor">
                                            <path d="M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3"></path>
                                        </svg>
                                        <span>31 helpful</span>
                                    </span>
                                    <span class="last-updated">Updated 3 days ago</span>
                                </div>
                                <div class="expand-indicator">
                                    <svg class="expand-icon" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor">
                                        <polyline points="6,9 12,15 18,9"></polyline>
                                    </svg>
                                </div>
                            </button>
                        </div>
                        
                        <div class="answer-section" style="display: none;">
                            <div class="answer-content">
                                <div class="answer-text">
                                    <p>If you've forgotten your password, you can easily reset it:</p>
                                    <div class="reset-flow">
                                        <div class="flow-step">
                                            <div class="flow-icon">🔐</div>
                                            <div class="flow-content">
                                                <h4>Go to Login Page</h4>
                                                <p>Click "Forgot Password" on the login screen</p>
                                            </div>
                                        </div>
                                        <div class="flow-arrow">→</div>
                                        <div class="flow-step">
                                            <div class="flow-icon">📧</div>
                                            <div class="flow-content">
                                                <h4>Enter Your Email</h4>
                                                <p>Provide the email address associated with your account</p>
                                            </div>
                                        </div>
                                        <div class="flow-arrow">→</div>
                                        <div class="flow-step">
                                            <div class="flow-icon">📬</div>
                                            <div class="flow-content">
                                                <h4>Check Your Inbox</h4>
                                                <p>Look for a password reset link in your email</p>
                                            </div>
                                        </div>
                                        <div class="flow-arrow">→</div>
                                        <div class="flow-step">
                                            <div class="flow-icon">🔑</div>
                                            <div class="flow-content">
                                                <h4>Set New Password</h4>
                                                <p>Follow the link and create a new secure password</p>
                                            </div>
                                        </div>
                                    </div>
                                    <div class="security-note">
                                        <div class="note-icon">🛡️</div>
                                        <div class="note-content">
                                            <strong>Security Tip:</strong> Choose a password that's at least 8 characters long and includes a mix of letters, numbers, and symbols.
                                        </div>
                                    </div>
                                </div>
                                
                                <div class="answer-footer">
                                    <div class="helpful-section">
                                        <span class="helpful-label">Was this helpful?</span>
                                        <div class="helpful-buttons">
                                            <button class="helpful-btn helpful-yes" data-helpful="true">
                                                <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor">
                                                    <path d="M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3"></path>
                                                </svg>
                                                <span>Yes</span>
                                            </button>
                                            <button class="helpful-btn helpful-no" data-helpful="false">
                                                <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor">
                                                    <path d="M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17"></path>
                                                </svg>
                                                <span>No</span>
                                            </button>
                                        </div>
                                    </div>
                                    
                                    <div class="related-links">
                                        <span class="related-label">Related:</span>
                                        <a href="#" class="related-link">Account Security</a>
                                        <a href="#" class="related-link">Two-Factor Auth</a>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </article>
            </div>

            <!-- No Results Message -->
            <div class="no-results" style="display: none;">
                <div class="no-results-animation">
                    <div class="search-animation">
                        <div class="search-circle"></div>
                        <div class="search-line"></div>
                    </div>
                </div>
                <h3>No results found</h3>
                <p>Try adjusting your search terms or browse all questions above.</p>
                <button class="clear-filters-btn">Clear all filters</button>
            </div>
        </main>

        <!-- Floating Action Button -->
        <div class="floating-actions">
            <button class="fab-main" aria-label="Quick actions">
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor">
                    <circle cx="12" cy="12" r="3"></circle>
                    <path d="M12 1v6m0 6v6"></path>
                    <path d="m21 12-6 0m-6 0-6 0"></path>
                </svg>
            </button>
            <div class="fab-menu" style="display: none;">
                <button class="fab-item" data-action="contact" aria-label="Contact support">
                    <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor">
                        <path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path>
                    </svg>
                    <span>Contact</span>
                </button>
                <button class="fab-item" data-action="feedback" aria-label="Send feedback">
                    <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor">
                        <path d="M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3"></path>
                    </svg>
                    <span>Feedback</span>
                </button>
                <button class="fab-item" data-action="suggest" aria-label="Suggest question">
                    <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor">
                        <circle cx="12" cy="12" r="10"></circle>
                        <line x1="12" y1="8" x2="12" y2="12"></line>
                        <line x1="12" y1="16" x2="12.01" y2="16"></line>
                    </svg>
                    <span>Suggest</span>
                </button>
            </div>
        </div>
    </div>

    <script src="script.js"></script>
</body>
</html>

CSS Styles

/* Modern FAQ Component Styles */
:root {
    /* Light Theme Colors */
    --primary-color: #6366f1;
    --primary-light: #818cf8;
    --primary-dark: #4f46e5;
    --secondary-color: #f59e0b;
    --accent-color: #10b981;
    --error-color: #ef4444;
    
    /* Background Colors */
    --bg-primary: #ffffff;
    --bg-secondary: #f8fafc;
    --bg-tertiary: #f1f5f9;
    --bg-glass: rgba(255, 255, 255, 0.25);
    --bg-glass-hover: rgba(255, 255, 255, 0.35);
    
    /* Text Colors */
    --text-primary: #1e293b;
    --text-secondary: #64748b;
    --text-tertiary: #94a3b8;
    --text-inverse: #ffffff;
    
    /* Border Colors */
    --border-color: rgba(226, 232, 240, 0.8);
    --border-hover: rgba(203, 213, 225, 0.9);
    
    /* Shadow */
    --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
    --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
    --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
    --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
    
    /* Glassmorphism */
    --glass-bg: rgba(255, 255, 255, 0.25);
    --glass-border: rgba(255, 255, 255, 0.18);
    --backdrop-blur: blur(16px);
    
    /* Animation */
    --transition-fast: 0.15s ease;
    --transition-normal: 0.3s ease;
    --transition-slow: 0.5s ease;
    --bounce: cubic-bezier(0.68, -0.55, 0.265, 1.55);
}

/* Dark Theme */
[data-theme="dark"] {
    --bg-primary: #0f172a;
    --bg-secondary: #1e293b;
    --bg-tertiary: #334155;
    --bg-glass: rgba(15, 23, 42, 0.25);
    --bg-glass-hover: rgba(15, 23, 42, 0.35);
    
    --text-primary: #f8fafc;
    --text-secondary: #cbd5e1;
    --text-tertiary: #94a3b8;
    
    --border-color: rgba(51, 65, 85, 0.8);
    --border-hover: rgba(71, 85, 105, 0.9);
    
    --glass-bg: rgba(15, 23, 42, 0.25);
    --glass-border: rgba(51, 65, 85, 0.18);
}

/* Base Styles */
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

body {
    font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
    line-height: 1.6;
    color: var(--text-primary);
    background: var(--bg-primary);
    transition: background-color var(--transition-normal), color var(--transition-normal);
}

/* Container */
.modern-faq-container {
    min-height: 100vh;
    position: relative;
    overflow: hidden;
    background: linear-gradient(135deg, 
        var(--bg-primary) 0%, 
        var(--bg-secondary) 50%, 
        var(--bg-tertiary) 100%);
}

/* Background Elements */
.background-elements {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
    z-index: -1;
}

.floating-shape {
    position: absolute;
    border-radius: 50%;
    background: linear-gradient(45deg, var(--primary-color), var(--secondary-color));
    opacity: 0.1;
    animation: float 6s ease-in-out infinite;
}

.shape-1 {
    width: 200px;
    height: 200px;
    top: 10%;
    left: 10%;
    animation-delay: 0s;
}

.shape-2 {
    width: 150px;
    height: 150px;
    top: 60%;
    right: 15%;
    animation-delay: 2s;
}

.shape-3 {
    width: 100px;
    height: 100px;
    bottom: 20%;
    left: 20%;
    animation-delay: 4s;
}

.gradient-orb {
    position: absolute;
    border-radius: 50%;
    background: radial-gradient(circle, var(--primary-light) 0%, transparent 70%);
    opacity: 0.3;
    animation: pulse 4s ease-in-out infinite;
}

.orb-1 {
    width: 300px;
    height: 300px;
    top: -150px;
    right: -150px;
}

.orb-2 {
    width: 250px;
    height: 250px;
    bottom: -125px;
    left: -125px;
    animation-delay: 2s;
}

@keyframes float {
    0%, 100% { transform: translateY(0px) rotate(0deg); }
    50% { transform: translateY(-20px) rotate(180deg); }
}

@keyframes pulse {
    0%, 100% { transform: scale(1); opacity: 0.3; }
    50% { transform: scale(1.1); opacity: 0.5; }
}

/* Header */
.faq-header {
    padding: 4rem 2rem 2rem;
    text-align: center;
    position: relative;
}

.header-content {
    max-width: 800px;
    margin: 0 auto;
    position: relative;
}

.title-section {
    margin-bottom: 2rem;
}

.main-title {
    font-size: clamp(2.5rem, 5vw, 4rem);
    font-weight: 800;
    line-height: 1.1;
    margin-bottom: 1rem;
}

.title-gradient {
    background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
    display: inline-block;
}

.title-highlight {
    color: var(--text-primary);
    position: relative;
}

.title-highlight::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    height: 4px;
    background: linear-gradient(90deg, var(--primary-color), var(--secondary-color));
    border-radius: 2px;
}

.subtitle {
    font-size: 1.25rem;
    color: var(--text-secondary);
    max-width: 600px;
    margin: 0 auto;
}

.header-controls {
    position: absolute;
    top: 0;
    right: 0;
}

/* Theme Toggle */
.theme-toggle {
    background: var(--glass-bg);
    border: 1px solid var(--glass-border);
    border-radius: 50px;
    padding: 0;
    width: 60px;
    height: 32px;
    cursor: pointer;
    backdrop-filter: var(--backdrop-blur);
    transition: all var(--transition-normal);
    position: relative;
}

.theme-toggle:hover {
    background: var(--bg-glass-hover);
    transform: scale(1.05);
}

.theme-toggle-track {
    width: 100%;
    height: 100%;
    border-radius: 50px;
    position: relative;
}

.theme-toggle-thumb {
    position: absolute;
    top: 2px;
    left: 2px;
    width: 28px;
    height: 28px;
    background: var(--bg-primary);
    border-radius: 50%;
    transition: transform var(--transition-normal) var(--bounce);
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: var(--shadow-md);
}

[data-theme="dark"] .theme-toggle-thumb {
    transform: translateX(28px);
}

.sun-icon, .moon-icon {
    position: absolute;
    transition: opacity var(--transition-fast);
}

.sun-icon {
    opacity: 1;
    color: var(--secondary-color);
}

.moon-icon {
    opacity: 0;
    color: var(--primary-color);
}

[data-theme="dark"] .sun-icon {
    opacity: 0;
}

[data-theme="dark"] .moon-icon {
    opacity: 1;
}

/* Search Section */
.search-section {
    padding: 0 2rem 2rem;
    max-width: 1200px;
    margin: 0 auto;
}

.search-container {
    position: relative;
    margin-bottom: 2rem;
}

.search-input-wrapper {
    position: relative;
    background: var(--glass-bg);
    border: 1px solid var(--glass-border);
    border-radius: 20px;
    backdrop-filter: var(--backdrop-blur);
    transition: all var(--transition-normal);
    overflow: hidden;
}

.search-input-wrapper:hover {
    background: var(--bg-glass-hover);
    border-color: var(--border-hover);
    transform: translateY(-2px);
    box-shadow: var(--shadow-lg);
}

.search-input-wrapper:focus-within {
    background: var(--bg-primary);
    border-color: var(--primary-color);
    box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.1);
}

.search-icon-container {
    position: absolute;
    left: 1.5rem;
    top: 50%;
    transform: translateY(-50%);
    color: var(--text-tertiary);
    transition: color var(--transition-fast);
}

.search-input-wrapper:focus-within .search-icon-container {
    color: var(--primary-color);
}

.search-input {
    width: 100%;
    padding: 1.25rem 1.5rem 1.25rem 4rem;
    border: none;
    background: transparent;
    font-size: 1.1rem;
    color: var(--text-primary);
    outline: none;
    font-family: inherit;
}

.search-input::placeholder {
    color: var(--text-tertiary);
}

.search-actions {
    position: absolute;
    right: 1rem;
    top: 50%;
    transform: translateY(-50%);
    display: flex;
    gap: 0.5rem;
}

.voice-search-btn, .clear-search {
    background: none;
    border: none;
    padding: 0.5rem;
    border-radius: 8px;
    color: var(--text-tertiary);
    cursor: pointer;
    transition: all var(--transition-fast);
    display: flex;
    align-items: center;
    justify-content: center;
}

.voice-search-btn:hover, .clear-search:hover {
    background: var(--bg-tertiary);
    color: var(--primary-color);
    transform: scale(1.1);
}

/* Search Suggestions */
.search-suggestions {
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    background: var(--glass-bg);
    border: 1px solid var(--glass-border);
    border-radius: 16px;
    backdrop-filter: var(--backdrop-blur);
    margin-top: 0.5rem;
    padding: 1rem;
    box-shadow: var(--shadow-xl);
    z-index: 10;
    animation: slideDown var(--transition-normal) ease;
}

@keyframes slideDown {
    from {
        opacity: 0;
        transform: translateY(-10px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.suggestions-header {
    font-size: 0.875rem;
    color: var(--text-tertiary);
    margin-bottom: 0.75rem;
    font-weight: 500;
}

.suggestions-list {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.suggestion-item {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.75rem;
    border: none;
    background: none;
    border-radius: 8px;
    color: var(--text-secondary);
    cursor: pointer;
    transition: all var(--transition-fast);
    text-align: left;
    font-family: inherit;
    font-size: 0.95rem;
}

.suggestion-item:hover {
    background: var(--bg-tertiary);
    color: var(--text-primary);
    transform: translateX(4px);
}

/* Quick Filters */
.quick-filters {
    display: flex;
    justify-content: center;
    margin-bottom: 2rem;
}

.filter-chips {
    display: flex;
    gap: 0.75rem;
    flex-wrap: wrap;
    justify-content: center;
}

.filter-chip {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.75rem 1.25rem;
    background: var(--glass-bg);
    border: 1px solid var(--glass-border);
    border-radius: 50px;
    color: var(--text-secondary);
    cursor: pointer;
    transition: all var(--transition-normal);
    backdrop-filter: var(--backdrop-blur);
    font-family: inherit;
    font-size: 0.9rem;
    font-weight: 500;
}

.filter-chip:hover {
    background: var(--bg-glass-hover);
    transform: translateY(-2px);
    box-shadow: var(--shadow-md);
}

.filter-chip.active {
    background: var(--primary-color);
    color: var(--text-inverse);
    border-color: var(--primary-color);
    box-shadow: var(--shadow-lg);
}

.chip-icon {
    font-size: 1rem;
}

.chip-count {
    background: rgba(255, 255, 255, 0.2);
    padding: 0.125rem 0.5rem;
    border-radius: 12px;
    font-size: 0.75rem;
    font-weight: 600;
}

.filter-chip.active .chip-count {
    background: rgba(255, 255, 255, 0.3);
}

/* FAQ Content */
.faq-content {
    max-width: 1000px;
    margin: 0 auto;
    padding: 0 2rem 4rem;
}

/* Results Info */
.results-info {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 2rem;
    padding: 1rem 1.5rem;
    background: var(--glass-bg);
    border: 1px solid var(--glass-border);
    border-radius: 16px;
    backdrop-filter: var(--backdrop-blur);
}

.results-text {
    display: flex;
    align-items: center;
    gap: 1rem;
    color: var(--text-secondary);
    font-size: 0.9rem;
}

.results-count {
    font-weight: 600;
    color: var(--text-primary);
}

.search-time {
    color: var(--text-tertiary);
    font-size: 0.8rem;
}

.view-controls {
    display: flex;
    gap: 0.5rem;
}

.sort-btn {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.5rem 1rem;
    background: none;
    border: 1px solid var(--border-color);
    border-radius: 8px;
    color: var(--text-secondary);
    cursor: pointer;
    transition: all var(--transition-fast);
    font-family: inherit;
    font-size: 0.9rem;
}

.sort-btn:hover {
    background: var(--bg-tertiary);
    border-color: var(--border-hover);
    color: var(--text-primary);
}

/* FAQ List */
.faq-list {
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
}

/* FAQ Item */
.faq-item {
    background: var(--glass-bg);
    border: 1px solid var(--glass-border);
    border-radius: 20px;
    backdrop-filter: var(--backdrop-blur);
    transition: all var(--transition-normal);
    overflow: hidden;
}

.faq-item:hover {
    background: var(--bg-glass-hover);
    transform: translateY(-4px);
    box-shadow: var(--shadow-xl);
}

.faq-item-inner {
    padding: 1.5rem;
}

/* Question Section */
.question-section {
    margin-bottom: 0;
}

.question-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 1rem;
}

.category-indicator {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.8rem;
    font-weight: 500;
}

.category-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--primary-color);
}

.category-indicator.getting-started .category-dot {
    background: var(--accent-color);
}

.category-indicator.billing .category-dot {
    background: var(--secondary-color);
}

.category-indicator.technical .category-dot {
    background: var(--primary-color);
}

.category-label {
    color: var(--text-tertiary);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.question-actions {
    display: flex;
    gap: 0.5rem;
}

.bookmark-btn, .share-btn {
    background: none;
    border: none;
    padding: 0.5rem;
    border-radius: 8px;
    color: var(--text-tertiary);
    cursor: pointer;
    transition: all var(--transition-fast);
    display: flex;
    align-items: center;
    justify-content: center;
}

.bookmark-btn:hover, .share-btn:hover {
    background: var(--bg-tertiary);
    color: var(--primary-color);
    transform: scale(1.1);
}

.bookmark-btn.bookmarked {
    color: var(--secondary-color);
}

.question-button {
    width: 100%;
    background: none;
    border: none;
    text-align: left;
    cursor: pointer;
    padding: 0;
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 1rem;
    transition: all var(--transition-fast);
}

.question-title {
    font-size: 1.25rem;
    font-weight: 600;
    color: var(--text-primary);
    line-height: 1.4;
    margin-bottom: 0.75rem;
    transition: color var(--transition-fast);
}

.question-button:hover .question-title {
    color: var(--primary-color);
}

.question-meta {
    display: flex;
    align-items: center;
    gap: 1rem;
    font-size: 0.85rem;
    color: var(--text-tertiary);
}

.popularity-indicator {
    display: flex;
    align-items: center;
    gap: 0.25rem;
}

.last-updated {
    font-size: 0.8rem;
}

.expand-indicator {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: var(--bg-tertiary);
    transition: all var(--transition-normal);
}

.question-button:hover .expand-indicator {
    background: var(--primary-color);
    transform: scale(1.1);
}

.question-button:hover .expand-icon {
    color: var(--text-inverse);
}

.expand-icon {
    transition: all var(--transition-normal);
    color: var(--text-secondary);
}

.question-button[aria-expanded="true"] .expand-icon {
    transform: rotate(180deg);
}

/* Answer Section */
.answer-section {
    margin-top: 1.5rem;
    animation: slideDown var(--transition-normal) ease;
}

.answer-content {
    padding: 1.5rem;
    background: var(--bg-secondary);
    border-radius: 16px;
    border: 1px solid var(--border-color);
}

.answer-text {
    color: var(--text-secondary);
    line-height: 1.7;
    margin-bottom: 1.5rem;
}

.answer-text p {
    margin-bottom: 1rem;
}

.answer-text h4 {
    color: var(--text-primary);
    font-weight: 600;
    margin-bottom: 0.5rem;
}

/* Step List */
.step-list {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    margin: 1.5rem 0;
}

.step-item {
    display: flex;
    gap: 1rem;
    align-items: flex-start;
}

.step-number {
    flex-shrink: 0;
    width: 32px;
    height: 32px;
    background: linear-gradient(135deg, var(--primary-color), var(--primary-light));
    color: var(--text-inverse);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 600;
    font-size: 0.9rem;
}

.step-content h4 {
    margin-bottom: 0.25rem;
}

.step-content p {
    margin: 0;
    font-size: 0.9rem;
}

/* Payment Grid */
.payment-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
    gap: 1.5rem;
    margin: 1.5rem 0;
}

.payment-category h4 {
    margin-bottom: 1rem;
    padding-bottom: 0.5rem;
    border-bottom: 2px solid var(--border-color);
}

.payment-items {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
    gap: 0.75rem;
}

.payment-item {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.75rem;
    background: var(--bg-tertiary);
    border-radius: 8px;
    font-size: 0.9rem;
    transition: all var(--transition-fast);
}

.payment-item:hover {
    background: var(--primary-color);
    color: var(--text-inverse);
    transform: translateY(-2px);
}

.payment-icon {
    font-size: 1.1rem;
}

/* Reset Flow */
.reset-flow {
    display: flex;
    align-items: center;
    gap: 1rem;
    margin: 1.5rem 0;
    overflow-x: auto;
    padding: 1rem 0;
}

.flow-step {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    min-width: 150px;
    flex-shrink: 0;
}

.flow-icon {
    width: 48px;
    height: 48px;
    background: linear-gradient(135deg, var(--primary-color), var(--primary-light));
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.5rem;
    margin-bottom: 0.75rem;
    box-shadow: var(--shadow-md);
}

.flow-content h4 {
    font-size: 0.9rem;
    margin-bottom: 0.25rem;
}

.flow-content p {
    font-size: 0.8rem;
    margin: 0;
}

.flow-arrow {
    font-size: 1.5rem;
    color: var(--text-tertiary);
    flex-shrink: 0;
}

/* Security Note */
.security-note {
    display: flex;
    gap: 0.75rem;
    padding: 1rem;
    background: linear-gradient(135deg, rgba(16, 185, 129, 0.1), rgba(16, 185, 129, 0.05));
    border: 1px solid rgba(16, 185, 129, 0.2);
    border-radius: 12px;
    margin-top: 1.5rem;
}

.note-icon {
    font-size: 1.25rem;
    flex-shrink: 0;
}

.note-content {
    font-size: 0.9rem;
    line-height: 1.5;
}

.note-content strong {
    color: var(--accent-color);
    font-weight: 600;
}

/* Answer Footer */
.answer-footer {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 1rem;
    padding-top: 1.5rem;
    border-top: 1px solid var(--border-color);
}

.helpful-section {
    display: flex;
    align-items: center;
    gap: 1rem;
}

.helpful-label {
    font-size: 0.9rem;
    color: var(--text-secondary);
    font-weight: 500;
}

.helpful-buttons {
    display: flex;
    gap: 0.5rem;
}

.helpful-btn {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.5rem 1rem;
    background: none;
    border: 1px solid var(--border-color);
    border-radius: 8px;
    color: var(--text-secondary);
    cursor: pointer;
    transition: all var(--transition-fast);
    font-family: inherit;
    font-size: 0.85rem;
}

.helpful-btn:hover {
    background: var(--bg-tertiary);
    border-color: var(--border-hover);
    transform: translateY(-1px);
}

.helpful-yes:hover {
    background: var(--accent-color);
    border-color: var(--accent-color);
    color: var(--text-inverse);
}

.helpful-no:hover {
    background: var(--error-color);
    border-color: var(--error-color);
    color: var(--text-inverse);
}

.helpful-btn.voted {
    pointer-events: none;
    opacity: 0.6;
}

/* Related Links */
.related-links {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex-wrap: wrap;
}

.related-label {
    font-size: 0.85rem;
    color: var(--text-tertiary);
    font-weight: 500;
}

.related-link {
    color: var(--primary-color);
    text-decoration: none;
    font-size: 0.85rem;
    padding: 0.25rem 0.5rem;
    border-radius: 6px;
    transition: all var(--transition-fast);
}

.related-link:hover {
    background: var(--primary-color);
    color: var(--text-inverse);
    transform: translateY(-1px);
}

/* No Results */
.no-results {
    text-align: center;
    padding: 4rem 2rem;
    color: var(--text-secondary);
}

.no-results-animation {
    margin-bottom: 2rem;
    display: flex;
    justify-content: center;
}

.search-animation {
    position: relative;
    width: 80px;
    height: 80px;
}

.search-circle {
    width: 50px;
    height: 50px;
    border: 3px solid var(--border-color);
    border-radius: 50%;
    position: absolute;
    top: 10px;
    left: 10px;
    animation: searchPulse 2s ease-in-out infinite;
}

.search-line {
    width: 20px;
    height: 3px;
    background: var(--text-tertiary);
    position: absolute;
    bottom: 10px;
    right: 10px;
    border-radius: 2px;
    transform: rotate(45deg);
    animation: searchPulse 2s ease-in-out infinite 0.5s;
}

@keyframes searchPulse {
    0%, 100% { opacity: 0.3; transform: scale(1); }
    50% { opacity: 1; transform: scale(1.1); }
}

.no-results h3 {
    font-size: 1.5rem;
    margin-bottom: 0.5rem;
    color: var(--text-primary);
}

.no-results p {
    margin-bottom: 1.5rem;
    max-width: 400px;
    margin-left: auto;
    margin-right: auto;
}

.clear-filters-btn {
    background: var(--primary-color);
    color: var(--text-inverse);
    border: none;
    padding: 0.75rem 1.5rem;
    border-radius: 12px;
    cursor: pointer;
    transition: all var(--transition-normal);
    font-family: inherit;
    font-weight: 500;
}

.clear-filters-btn:hover {
    background: var(--primary-dark);
    transform: translateY(-2px);
    box-shadow: var(--shadow-lg);
}

/* Floating Actions */
.floating-actions {
    position: fixed;
    bottom: 2rem;
    right: 2rem;
    z-index: 100;
}

.fab-main {
    width: 56px;
    height: 56px;
    background: linear-gradient(135deg, var(--primary-color), var(--primary-light));
    border: none;
    border-radius: 50%;
    color: var(--text-inverse);
    cursor: pointer;
    box-shadow: var(--shadow-xl);
    transition: all var(--transition-normal);
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
}

.fab-main:hover {
    transform: scale(1.1) rotate(45deg);
    box-shadow: 0 8px 25px rgba(99, 102, 241, 0.4);
}

.fab-menu {
    position: absolute;
    bottom: 70px;
    right: 0;
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    animation: fabSlideUp var(--transition-normal) ease;
}

@keyframes fabSlideUp {
    from {
        opacity: 0;
        transform: translateY(20px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.fab-item {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.75rem 1rem;
    background: var(--glass-bg);
    border: 1px solid var(--glass-border);
    border-radius: 50px;
    color: var(--text-primary);
    cursor: pointer;
    transition: all var(--transition-fast);
    backdrop-filter: var(--backdrop-blur);
    font-family: inherit;
    font-size: 0.9rem;
    white-space: nowrap;
    box-shadow: var(--shadow-lg);
}

.fab-item:hover {
    background: var(--primary-color);
    color: var(--text-inverse);
    transform: translateX(-4px);
}

/* Responsive Design */
@media (max-width: 768px) {
    .faq-header {
        padding: 2rem 1rem 1rem;
    }
    
    .main-title {
        font-size: 2.5rem;
    }
    
    .subtitle {
        font-size: 1.1rem;
    }
    
    .search-section {
        padding: 0 1rem 1rem;
    }
    
    .search-input {
        padding: 1rem 1rem 1rem 3.5rem;
        font-size: 1rem;
    }
    
    .filter-chips {
        gap: 0.5rem;
    }
    
    .filter-chip {
        padding: 0.5rem 1rem;
        font-size: 0.85rem;
    }
    
    .faq-content {
        padding: 0 1rem 2rem;
    }
    
    .results-info {
        flex-direction: column;
        gap: 1rem;
        align-items: flex-start;
    }
    
    .faq-item-inner {
        padding: 1rem;
    }
    
    .question-title {
        font-size: 1.1rem;
    }
    
    .answer-content {
        padding: 1rem;
    }
    
    .reset-flow {
        flex-direction: column;
        gap: 1.5rem;
    }
    
    .flow-arrow {
        transform: rotate(90deg);
    }
    
    .payment-grid {
        grid-template-columns: 1fr;
    }
    
    .answer-footer {
        flex-direction: column;
        align-items: flex-start;
    }
    
    .floating-actions {
        bottom: 1rem;
        right: 1rem;
    }
    
    .fab-main {
        width: 48px;
        height: 48px;
    }
}

@media (max-width: 480px) {
    .header-controls {
        position: static;
        margin-top: 1rem;
    }
    
    .search-input-wrapper {
        border-radius: 16px;
    }
    
    .search-suggestions {
        border-radius: 12px;
    }
    
    .filter-chip {
        padding: 0.5rem 0.75rem;
        font-size: 0.8rem;
    }
    
    .chip-count {
        display: none;
    }
    
    .question-meta {
        flex-direction: column;
        align-items: flex-start;
        gap: 0.5rem;
    }
    
    .step-list {
        gap: 1.5rem;
    }
    
    .step-item {
        flex-direction: column;
        text-align: center;
        gap: 0.75rem;
    }
}

/* Print Styles */
@media print {
    .background-elements,
    .theme-toggle,
    .search-section,
    .floating-actions,
    .question-actions,
    .helpful-section {
        display: none !important;
    }
    
    .modern-faq-container {
        background: white !important;
    }
    
    .faq-item {
        background: white !important;
        border: 1px solid #ccc !important;
        break-inside: avoid;
        margin-bottom: 1rem;
    }
    
    .answer-section {
        display: block !important;
    }
}

/* High Contrast Mode */
@media (prefers-contrast: high) {
    :root {
        --glass-bg: rgba(255, 255, 255, 0.9);
        --border-color: #000;
        --text-tertiary: #333;
    }
    
    [data-theme="dark"] {
        --glass-bg: rgba(0, 0, 0, 0.9);
        --border-color: #fff;
        --text-tertiary: #ccc;
    }
}

/* Reduced Motion */
@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
    }
    
    .floating-shape,
    .gradient-orb {
        animation: none;
    }
}

JavaScript Functionality

// Modern FAQ Component JavaScript
class ModernFAQ {
    constructor(container) {
        this.container = container;
        this.searchInput = container.querySelector('.search-input');
        this.searchSuggestions = container.querySelector('.search-suggestions');
        this.filterChips = container.querySelectorAll('.filter-chip');
        this.faqItems = container.querySelectorAll('.faq-item');
        this.noResults = container.querySelector('.no-results');
        this.resultsCount = container.querySelector('.results-count');
        this.searchTime = container.querySelector('.search-time');
        this.themeToggle = container.querySelector('.theme-toggle');
        this.voiceSearchBtn = container.querySelector('.voice-search-btn');
        this.clearSearchBtn = container.querySelector('.clear-search');
        this.fabMain = container.querySelector('.fab-main');
        this.fabMenu = container.querySelector('.fab-menu');
        
        this.currentFilter = 'all';
        this.searchTerm = '';
        this.isVoiceSearchActive = false;
        this.searchStartTime = 0;
        
        this.init();
    }
    
    init() {
        this.setupEventListeners();
        this.loadTheme();
        this.loadBookmarks();
        this.updateResultsCount();
        this.setupIntersectionObserver();
    }
    
    setupEventListeners() {
        // Search functionality
        this.searchInput.addEventListener('input', this.debounce(this.handleSearch.bind(this), 300));
        this.searchInput.addEventListener('focus', this.showSearchSuggestions.bind(this));
        this.searchInput.addEventListener('blur', this.hideSearchSuggestions.bind(this));
        
        // Clear search
        this.clearSearchBtn.addEventListener('click', this.clearSearch.bind(this));
        
        // Voice search
        if ('webkitSpeechRecognition' in window || 'SpeechRecognition' in window) {
            this.voiceSearchBtn.addEventListener('click', this.toggleVoiceSearch.bind(this));
        } else {
            this.voiceSearchBtn.style.display = 'none';
        }
        
        // Filter chips
        this.filterChips.forEach(chip => {
            chip.addEventListener('click', this.handleFilterChange.bind(this));
        });
        
        // FAQ items
        this.faqItems.forEach(item => {
            const questionBtn = item.querySelector('.question-button');
            const bookmarkBtn = item.querySelector('.bookmark-btn');
            const shareBtn = item.querySelector('.share-btn');
            const helpfulBtns = item.querySelectorAll('.helpful-btn');
            
            questionBtn.addEventListener('click', this.toggleFAQItem.bind(this));
            bookmarkBtn.addEventListener('click', this.toggleBookmark.bind(this));
            shareBtn.addEventListener('click', this.shareFAQItem.bind(this));
            
            helpfulBtns.forEach(btn => {
                btn.addEventListener('click', this.handleHelpfulVote.bind(this));
            });
        });
        
        // Theme toggle
        this.themeToggle.addEventListener('click', this.toggleTheme.bind(this));
        
        // Floating action button
        this.fabMain.addEventListener('click', this.toggleFABMenu.bind(this));
        
        // FAB menu items
        const fabItems = this.container.querySelectorAll('.fab-item');
        fabItems.forEach(item => {
            item.addEventListener('click', this.handleFABAction.bind(this));
        });
        
        // Keyboard navigation
        document.addEventListener('keydown', this.handleKeyboardNavigation.bind(this));
        
        // Click outside to close menus
        document.addEventListener('click', this.handleOutsideClick.bind(this));
    }
    
    handleSearch(e) {
        this.searchStartTime = performance.now();
        this.searchTerm = e.target.value.toLowerCase().trim();
        this.filterFAQItems();
        this.updateSearchTime();
    }
    
    filterFAQItems() {
        let visibleCount = 0;
        
        this.faqItems.forEach(item => {
            const question = item.querySelector('.question-title').textContent.toLowerCase();
            const answer = item.querySelector('.answer-text').textContent.toLowerCase();
            const category = item.dataset.category;
            
            const matchesSearch = !this.searchTerm || 
                question.includes(this.searchTerm) || 
                answer.includes(this.searchTerm);
            const matchesFilter = this.currentFilter === 'all' || category === this.currentFilter;
            
            if (matchesSearch && matchesFilter) {
                item.style.display = 'block';
                this.highlightSearchTerm(item);
                visibleCount++;
            } else {
                item.style.display = 'none';
            }
        });
        
        this.updateResultsCount(visibleCount);
        this.toggleNoResults(visibleCount === 0);
    }
    
    highlightSearchTerm(item) {
        if (!this.searchTerm) return;
        
        const questionTitle = item.querySelector('.question-title');
        const answerText = item.querySelector('.answer-text');
        
        [questionTitle, answerText].forEach(element => {
            const text = element.textContent;
            const regex = new RegExp(`(${this.searchTerm})`, 'gi');
            element.innerHTML = text.replace(regex, '<mark class="search-highlight">$1</mark>');
        });
    }
    
    handleFilterChange(e) {
        const chip = e.currentTarget;
        const filter = chip.dataset.filter;
        
        // Update active state
        this.filterChips.forEach(c => c.classList.remove('active'));
        chip.classList.add('active');
        
        this.currentFilter = filter;
        this.filterFAQItems();
    }
    
    toggleFAQItem(e) {
        const button = e.currentTarget;
        const item = button.closest('.faq-item');
        const answerSection = item.querySelector('.answer-section');
        const isExpanded = button.getAttribute('aria-expanded') === 'true';
        
        button.setAttribute('aria-expanded', !isExpanded);
        
        if (isExpanded) {
            answerSection.style.maxHeight = '0';
            answerSection.style.opacity = '0';
        } else {
            answerSection.style.maxHeight = answerSection.scrollHeight + 'px';
            answerSection.style.opacity = '1';
            
            // Scroll into view
            setTimeout(() => {
                item.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
            }, 150);
        }
        
        // Track analytics
        this.trackEvent('faq_toggle', {
            question: button.querySelector('.question-title').textContent,
            action: isExpanded ? 'collapse' : 'expand'
        });
    }
    
    toggleBookmark(e) {
        e.stopPropagation();
        const button = e.currentTarget;
        const item = button.closest('.faq-item');
        const questionId = item.dataset.questionId;
        const isBookmarked = button.classList.contains('bookmarked');
        
        button.classList.toggle('bookmarked');
        
        if (isBookmarked) {
            this.removeBookmark(questionId);
            this.showToast('Bookmark removed', 'info');
        } else {
            this.addBookmark(questionId);
            this.showToast('Bookmarked!', 'success');
        }
    }
    
    shareFAQItem(e) {
        e.stopPropagation();
        const item = e.currentTarget.closest('.faq-item');
        const question = item.querySelector('.question-title').textContent;
        const url = `${window.location.href}#faq-${item.dataset.questionId}`;
        
        if (navigator.share) {
            navigator.share({
                title: question,
                url: url
            });
        } else {
            navigator.clipboard.writeText(url).then(() => {
                this.showToast('Link copied to clipboard!', 'success');
            });
        }
    }
    
    handleHelpfulVote(e) {
        const button = e.currentTarget;
        const isHelpful = button.classList.contains('helpful-yes');
        const item = button.closest('.faq-item');
        const questionId = item.dataset.questionId;
        
        // Mark as voted
        item.querySelectorAll('.helpful-btn').forEach(btn => {
            btn.classList.add('voted');
        });
        
        // Track vote
        this.trackEvent('faq_helpful_vote', {
            question_id: questionId,
            helpful: isHelpful
        });
        
        this.showToast(
            isHelpful ? 'Thanks for your feedback!' : 'We\'ll work on improving this answer',
            'success'
        );
    }
    
    toggleTheme() {
        const currentTheme = document.documentElement.getAttribute('data-theme');
        const newTheme = currentTheme === 'dark' ? 'light' : 'dark';
        
        document.documentElement.setAttribute('data-theme', newTheme);
        localStorage.setItem('faq-theme', newTheme);
        
        // Update theme toggle icon
        const icon = this.themeToggle.querySelector('i');
        icon.className = newTheme === 'dark' ? 'fas fa-sun' : 'fas fa-moon';
    }
    
    loadTheme() {
        const savedTheme = localStorage.getItem('faq-theme') || 'light';
        document.documentElement.setAttribute('data-theme', savedTheme);
        
        const icon = this.themeToggle.querySelector('i');
        icon.className = savedTheme === 'dark' ? 'fas fa-sun' : 'fas fa-moon';
    }
    
    toggleVoiceSearch() {
        if (this.isVoiceSearchActive) {
            this.stopVoiceSearch();
        } else {
            this.startVoiceSearch();
        }
    }
    
    startVoiceSearch() {
        const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
        this.recognition = new SpeechRecognition();
        
        this.recognition.continuous = false;
        this.recognition.interimResults = false;
        this.recognition.lang = 'en-US';
        
        this.recognition.onstart = () => {
            this.isVoiceSearchActive = true;
            this.voiceSearchBtn.classList.add('listening');
            this.voiceSearchBtn.innerHTML = '<i class="fas fa-stop"></i>';
        };
        
        this.recognition.onresult = (event) => {
            const transcript = event.results[0][0].transcript;
            this.searchInput.value = transcript;
            this.handleSearch({ target: { value: transcript } });
        };
        
        this.recognition.onend = () => {
            this.stopVoiceSearch();
        };
        
        this.recognition.onerror = (event) => {
            console.error('Speech recognition error:', event.error);
            this.stopVoiceSearch();
            this.showToast('Voice search failed. Please try again.', 'error');
        };
        
        this.recognition.start();
    }
    
    stopVoiceSearch() {
        if (this.recognition) {
            this.recognition.stop();
        }
        
        this.isVoiceSearchActive = false;
        this.voiceSearchBtn.classList.remove('listening');
        this.voiceSearchBtn.innerHTML = '<i class="fas fa-microphone"></i>';
    }
    
    clearSearch() {
        this.searchInput.value = '';
        this.searchTerm = '';
        this.filterFAQItems();
        this.searchInput.focus();
    }
    
    toggleFABMenu() {
        const isVisible = this.fabMenu.style.display === 'flex';
        this.fabMenu.style.display = isVisible ? 'none' : 'flex';
    }
    
    handleFABAction(e) {
        const action = e.currentTarget.dataset.action;
        
        switch (action) {
            case 'scroll-top':
                window.scrollTo({ top: 0, behavior: 'smooth' });
                break;
            case 'expand-all':
                this.expandAllFAQs();
                break;
            case 'collapse-all':
                this.collapseAllFAQs();
                break;
            case 'print':
                window.print();
                break;
        }
        
        this.toggleFABMenu();
    }
    
    expandAllFAQs() {
        this.faqItems.forEach(item => {
            if (item.style.display !== 'none') {
                const button = item.querySelector('.question-button');
                const answerSection = item.querySelector('.answer-section');
                
                button.setAttribute('aria-expanded', 'true');
                answerSection.style.maxHeight = answerSection.scrollHeight + 'px';
                answerSection.style.opacity = '1';
            }
        });
    }
    
    collapseAllFAQs() {
        this.faqItems.forEach(item => {
            const button = item.querySelector('.question-button');
            const answerSection = item.querySelector('.answer-section');
            
            button.setAttribute('aria-expanded', 'false');
            answerSection.style.maxHeight = '0';
            answerSection.style.opacity = '0';
        });
    }
    
    handleKeyboardNavigation(e) {
        if (e.key === 'Escape') {
            this.fabMenu.style.display = 'none';
            this.hideSearchSuggestions();
        }
        
        if (e.key === '/' && !e.target.matches('input, textarea')) {
            e.preventDefault();
            this.searchInput.focus();
        }
    }
    
    handleOutsideClick(e) {
        if (!this.container.contains(e.target)) {
            this.fabMenu.style.display = 'none';
            this.hideSearchSuggestions();
        }
    }
    
    showSearchSuggestions() {
        // Implementation for search suggestions
        this.searchSuggestions.style.display = 'block';
    }
    
    hideSearchSuggestions() {
        setTimeout(() => {
            this.searchSuggestions.style.display = 'none';
        }, 150);
    }
    
    updateResultsCount(count) {
        if (count !== undefined) {
            this.resultsCount.textContent = `${count} result${count !== 1 ? 's' : ''}`;
        } else {
            const visibleItems = Array.from(this.faqItems).filter(item => 
                item.style.display !== 'none'
            ).length;
            this.resultsCount.textContent = `${visibleItems} result${visibleItems !== 1 ? 's' : ''}`;
        }
    }
    
    updateSearchTime() {
        const searchTime = performance.now() - this.searchStartTime;
        this.searchTime.textContent = `(${(searchTime / 1000).toFixed(3)}s)`;
    }
    
    toggleNoResults(show) {
        this.noResults.style.display = show ? 'block' : 'none';
    }
    
    addBookmark(questionId) {
        const bookmarks = JSON.parse(localStorage.getItem('faq-bookmarks') || '[]');
        if (!bookmarks.includes(questionId)) {
            bookmarks.push(questionId);
            localStorage.setItem('faq-bookmarks', JSON.stringify(bookmarks));
        }
    }
    
    removeBookmark(questionId) {
        const bookmarks = JSON.parse(localStorage.getItem('faq-bookmarks') || '[]');
        const index = bookmarks.indexOf(questionId);
        if (index > -1) {
            bookmarks.splice(index, 1);
            localStorage.setItem('faq-bookmarks', JSON.stringify(bookmarks));
        }
    }
    
    loadBookmarks() {
        const bookmarks = JSON.parse(localStorage.getItem('faq-bookmarks') || '[]');
        bookmarks.forEach(questionId => {
            const item = this.container.querySelector(`[data-question-id="${questionId}"]`);
            if (item) {
                const bookmarkBtn = item.querySelector('.bookmark-btn');
                bookmarkBtn.classList.add('bookmarked');
            }
        });
    }
    
    showToast(message, type = 'info') {
        const toast = document.createElement('div');
        toast.className = `toast toast-${type}`;
        toast.textContent = message;
        
        document.body.appendChild(toast);
        
        setTimeout(() => {
            toast.classList.add('show');
        }, 100);
        
        setTimeout(() => {
            toast.classList.remove('show');
            setTimeout(() => {
                document.body.removeChild(toast);
            }, 300);
        }, 3000);
    }
    
    setupIntersectionObserver() {
        const observer = new IntersectionObserver((entries) => {
            entries.forEach(entry => {
                if (entry.isIntersecting) {
                    entry.target.classList.add('animate-in');
                }
            });
        }, { threshold: 0.1 });
        
        this.faqItems.forEach(item => {
            observer.observe(item);
        });
    }
    
    trackEvent(eventName, data) {
        // Analytics tracking implementation
        if (typeof gtag !== 'undefined') {
            gtag('event', eventName, data);
        }
        
        console.log('Event tracked:', eventName, data);
    }
    
    debounce(func, wait) {
        let timeout;
        return function executedFunction(...args) {
            const later = () => {
                clearTimeout(timeout);
                func(...args);
            };
            clearTimeout(timeout);
            timeout = setTimeout(later, wait);
        };
    }
}

// Initialize the FAQ component
document.addEventListener('DOMContentLoaded', () => {
    const faqContainer = document.querySelector('.modern-faq-container');
    if (faqContainer) {
        new ModernFAQ(faqContainer);
    }
});

// Toast styles
const toastStyles = `
.toast {
    position: fixed;
    top: 20px;
    right: 20px;
    padding: 1rem 1.5rem;
    border-radius: 8px;
    color: white;
    font-weight: 500;
    z-index: 1000;
    transform: translateX(100%);
    transition: transform 0.3s ease;
}

.toast.show {
    transform: translateX(0);
}

.toast-success {
    background: #10b981;
}

.toast-error {
    background: #ef4444;
}

.toast-info {
    background: #3b82f6;
}

.search-highlight {
    background: #fef3c7;
    color: #92400e;
    padding: 0.125rem 0.25rem;
    border-radius: 0.25rem;
    font-weight: 600;
}

[data-theme="dark"] .search-highlight {
    background: #451a03;
    color: #fbbf24;
}

.animate-in {
    animation: slideInUp 0.6s ease forwards;
}

@keyframes slideInUp {
    from {
        opacity: 0;
        transform: translateY(30px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}
`;

// Inject toast styles
const styleSheet = document.createElement('style');
styleSheet.textContent = toastStyles;
document.head.appendChild(styleSheet);

Usage Instructions

Basic Implementation

  1. Include the HTML structure in your page
  2. Add the CSS styles to your stylesheet
  3. Include the JavaScript at the bottom of your page
  4. Customize the FAQ data by modifying the HTML content

Customization Options

Theme Colors

:root {
    --primary-color: #your-color;
    --primary-light: #your-light-color;
    --primary-dark: #your-dark-color;
}

FAQ Categories

Add data-category attributes to FAQ items:

<div class="faq-item" data-category="billing" data-question-id="1">
    <!-- FAQ content -->
</div>

Search Suggestions

Customize the search suggestions by modifying the showSearchSuggestions() method.

Features

  • 🎨 Modern Design: Glassmorphism effects and smooth animations
  • 🔍 Advanced Search: Real-time filtering with highlighting
  • 📱 Responsive: Works perfectly on all devices
  • 🎯 Accessibility: Full keyboard navigation and ARIA support
  • 🌙 Dark Mode: Automatic theme switching
  • 🔖 Bookmarks: Save favorite questions
  • 📊 Analytics: Built-in event tracking
  • 🎤 Voice Search: Speech recognition support
  • ⚡ Performance: Optimized for speed and efficiency

Browser Support

  • Chrome 60+
  • Firefox 55+
  • Safari 12+
  • Edge 79+

Performance Features

  • Debounced search input
  • Intersection Observer for animations
  • Efficient DOM manipulation
  • Minimal reflows and repaints

This modern FAQ component provides a comprehensive solution for displaying frequently asked questions with advanced features and beautiful design.

HTML

48

lines

CSS

180

lines

JavaScript

37

lines


                <div class="modern-faq-container">
  <div class="faq-header">
    <h1>Modern FAQ</h1>
    <p>Glassmorphism design with smooth animations</p>
  </div>
  
  <div class="faq-wrapper">
    <div class="faq-item">
      <div class="faq-question">
        <h3>What makes this FAQ modern?</h3>
        <div class="question-icon">+</div>
      </div>
      <div class="faq-answer">
        <p>This FAQ features glassmorphism design, smooth micro-interactions, and modern UI patterns with advanced CSS animations and backdrop filters.</p>
      </div>
    </div>
    
    <div class="faq-item">
      <div class="faq-question">
        <h3>How does the glassmorphism effect work?</h3>
        <div class="question-icon">+</div>
      </div>
      <div class="faq-answer">
        <p>The glassmorphism effect uses backdrop-filter: blur() combined with semi-transparent backgrounds to create a frosted glass appearance.</p>
      </div>
    </div>
    
    <div class="faq-item">
      <div class="faq-question">
        <h3>Is this design responsive?</h3>
        <div class="question-icon">+</div>
      </div>
      <div class="faq-answer">
        <p>Yes, the design is fully responsive and adapts beautifully to all screen sizes with optimized touch interactions for mobile devices.</p>
      </div>
    </div>
    
    <div class="faq-item">
      <div class="faq-question">
        <h3>What browsers support this?</h3>
        <div class="question-icon">+</div>
      </div>
      <div class="faq-answer">
        <p>Modern browsers including Chrome, Firefox, Safari, and Edge support all the features. Graceful fallbacks are provided for older browsers.</p>
      </div>
    </div>
  </div>
</div>

              
48lines
1694characters
HTMLLanguage

Related Code Snippets

Explore template packs

Need larger building blocks? Browse responsive landing pages and component bundles.

Open HTML Template Library →