<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="description" content="Martin McConway Plumbing - Highly recommended local plumber in Ealing and Northfields with 15+ years experience.">
    <title>Martin McConway Plumbing | Ealing & Northfields</title>
    
    <!-- Google Fonts -->
    <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=Montserrat:wght@400;600;700&family=Open+Sans:wght@400;600&display=swap" rel="stylesheet">
    
    <!-- FontAwesome for Icons -->
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">

    <style>
        :root {
            --primary-blue: #0056b3;
            --dark-blue: #003366;
            --light-blue: #e6f0fa;
            --white: #ffffff;
            --text-dark: #333333;
            --text-light: #666666;
            --gray-bg: #f8f9fa;
            --transition: all 0.3s ease;
        }

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

        body {
            font-family: 'Open Sans', sans-serif;
            color: var(--text-dark);
            line-height: 1.6;
            background-color: var(--white);
            overflow-x: hidden;
        }

        h1, h2, h3, h4 {
            font-family: 'Montserrat', sans-serif;
            font-weight: 700;
            color: var(--dark-blue);
        }

        a {
            text-decoration: none;
            color: var(--primary-blue);
            transition: var(--transition);
        }

        .container {
            width: 100%;
            max-width: 1200px;
            margin: 0 auto;
            padding: 0 20px;
        }

        .text-center { text-align: center; }
        .mt-2 { margin-top: 2rem; }
        .mb-2 { margin-bottom: 2rem; }
        .py-4 { padding: 4rem 0; }

        .btn {
            display: inline-block;
            padding: 12px 28px;
            border-radius: 5px;
            font-weight: 600;
            font-family: 'Montserrat', sans-serif;
            cursor: pointer;
            transition: var(--transition);
            border: none;
        }

        .btn-primary {
            background-color: var(--primary-blue);
            color: var(--white);
            box-shadow: 0 4px 6px rgba(0, 86, 179, 0.2);
        }

        .btn-primary:hover {
            background-color: var(--dark-blue);
            transform: translateY(-2px);
            box-shadow: 0 6px 12px rgba(0, 86, 179, 0.3);
            color: var(--white);
        }

        .btn-outline {
            background-color: transparent;
            border: 2px solid var(--white);
            color: var(--white);
        }

        .btn-outline:hover {
            background-color: var(--white);
            color: var(--primary-blue);
        }

        .fade-in {
            opacity: 0;
            transform: translateY(30px);
            transition: opacity 0.8s ease-out, transform 0.8s ease-out;
        }

        .fade-in.visible {
            opacity: 1;
            transform: translateY(0);
        }

        header {
            background-color: var(--white);
            box-shadow: 0 2px 10px rgba(0,0,0,0.1);
            position: fixed;
            width: 100%;
            top: 0;
            z-index: 1000;
        }

        .nav-container {
            display: flex;
            justify-content: space-between;
            align-items: center;
            height: 80px;
        }

        .logo {
            font-size: 1.5rem;
            font-family: 'Montserrat', sans-serif;
            font-weight: 700;
            color: var(--dark-blue);
            display: flex;
            align-items: center;
            gap: 10px;
        }

        .logo i {
            color: var(--primary-blue);
            font-size: 1.8rem;
        }

        .nav-links {
            display: flex;
            gap: 2rem;
            list-style: none;
        }

        .nav-links a {
            color: var(--text-dark);
            font-weight: 600;
        }

        .nav-links a:hover {
            color: var(--primary-blue);
        }

        .nav-contact {
            display: flex;
            align-items: center;
            gap: 1rem;
        }

        .nav-phone {
            font-weight: 700;
            color: var(--primary-blue);
            font-size: 1.1rem;
        }

        .mobile-menu-btn {
            display: none;
            font-size: 1.5rem;
            color: var(--dark-blue);
            cursor: pointer;
            border: none;
            background: none;
        }

        .hero {
            margin-top: 80px;
            background: linear-gradient(rgba(0, 51, 102, 0.8), rgba(0, 86, 179, 0.8)), url('https://images.unsplash.com/photo-1585704032915-c3400ca199e7?auto=format&fit=crop&q=80&w=2000') center/cover;
            color: var(--white);
            padding: 8rem 0 6rem;
            text-align: center;
        }

        .hero h1 {
            color: var(--white);
            font-size: 3.5rem;
            margin-bottom: 1rem;
            line-height: 1.2;
        }

        .hero p {
            font-size: 1.2rem;
            max-width: 800px;
            margin: 0 auto 2rem;
        }

        .hero-badges {
            display: flex;
            justify-content: center;
            gap: 1.5rem;
            margin-bottom: 2rem;
            flex-wrap: wrap;
        }

        .badge {
            background: rgba(255, 255, 255, 0.1);
            backdrop-filter: blur(5px);
            padding: 8px 16px;
            border-radius: 50px;
            border: 1px solid rgba(255, 255, 255, 0.3);
            font-size: 0.9rem;
            font-weight: 600;
            display: flex;
            align-items: center;
            gap: 8px;
        }

        .about {
            background-color: var(--white);
        }

        .about-grid {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 4rem;
            align-items: center;
        }

        .about-image {
            border-radius: 10px;
            overflow: hidden;
            box-shadow: 0 10px 30px rgba(0,0,0,0.1);
        }

        .about-image img {
            width: 100%;
            height: auto;
            display: block;
        }

        .about-content h2 {
            font-size: 2.5rem;
            margin-bottom: 1.5rem;
        }

        .stats-grid {
            display: grid;
            grid-template-columns: repeat(3, 1fr);
            gap: 1rem;
            margin-top: 2rem;
        }

        .stat-box {
            background: var(--light-blue);
            padding: 1.5rem 1rem;
            border-radius: 8px;
            text-align: center;
            border-bottom: 4px solid var(--primary-blue);
            transition: var(--transition);
        }

        .stat-box:hover {
            transform: translateY(-5px);
        }

        .stat-number {
            display: block;
            font-size: 2rem;
            font-weight: 700;
            color: var(--dark-blue);
            font-family: 'Montserrat', sans-serif;
        }

        .stat-text {
            font-size: 0.85rem;
            color: var(--text-light);
            font-weight: 600;
        }

        .services {
            background-color: var(--gray-bg);
        }

        .section-header {
            text-align: center;
            margin-bottom: 3rem;
        }

        .section-header h2 {
            font-size: 2.5rem;
            margin-bottom: 1rem;
        }

        .section-header p {
            color: var(--text-light);
            max-width: 600px;
            margin: 0 auto;
        }

        .services-grid {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
            gap: 2rem;
        }

        .service-card {
            background: var(--white);
            padding: 2.5rem 2rem;
            border-radius: 10px;
            text-align: center;
            box-shadow: 0 5px 15px rgba(0,0,0,0.05);
            transition: var(--transition);
            border: 1px solid #eee;
        }

        .service-card:hover {
            transform: translateY(-10px);
            box-shadow: 0 15px 30px rgba(0, 86, 179, 0.1);
            border-color: var(--light-blue);
        }

        .service-icon {
            width: 70px;
            height: 70px;
            background: var(--light-blue);
            color: var(--primary-blue);
            border-radius: 50%;
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: 1.8rem;
            margin: 0 auto 1.5rem;
            transition: var(--transition);
        }

        .service-card:hover .service-icon {
            background: var(--primary-blue);
            color: var(--white);
        }

        .service-card h3 {
            margin-bottom: 1rem;
            font-size: 1.2rem;
        }

        .testimonials {
            background-color: var(--white);
        }

        .testimonials-grid {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
            gap: 2rem;
        }

        .testimonial-card {
            background: var(--gray-bg);
            padding: 2rem;
            border-radius: 10px;
            position: relative;
        }

        .quote-icon {
            position: absolute;
            top: 20px;
            right: 20px;
            font-size: 2rem;
            color: var(--light-blue);
            opacity: 0.5;
        }

        .stars {
            color: #ffc107;
            margin-bottom: 1rem;
        }

        .testimonial-text {
            font-style: italic;
            margin-bottom: 1.5rem;
            position: relative;
            z-index: 1;
        }

        .testimonial-author {
            display: flex;
            align-items: center;
            justify-content: space-between;
            border-top: 1px solid #ddd;
            padding-top: 1rem;
        }

        .author-name {
            font-weight: 700;
            color: var(--dark-blue);
        }

        .platform {
            font-size: 0.85rem;
            font-weight: 600;
            padding: 4px 10px;
            border-radius: 4px;
        }

        .platform.nextdoor { background: #00b246; color: white; }
        .platform.reddit { background: #ff4500; color: white; }
        .platform.facebook { background: #1877f2; color: white; }

        .areas {
            background: var(--dark-blue);
            color: var(--white);
            text-align: center;
            padding: 4rem 0;
        }

        .areas h2 {
            color: var(--white);
            margin-bottom: 1.5rem;
        }

        .area-tags {
            display: flex;
            justify-content: center;
            gap: 1rem;
            flex-wrap: wrap;
        }

        .area-tag {
            background: rgba(255,255,255,0.1);
            padding: 10px 20px;
            border-radius: 50px;
            font-weight: 600;
        }

        .area-tag i {
            margin-right: 8px;
            color: #ff4757;
        }

        .contact {
            background: var(--gray-bg);
            position: relative;
        }

        .contact-wrapper {
            background: var(--white);
            border-radius: 15px;
            box-shadow: 0 15px 40px rgba(0,0,0,0.08);
            overflow: hidden;
            display: grid;
            grid-template-columns: 1fr 1fr;
            max-width: 1000px;
            margin: 0 auto;
        }

        .contact-info {
            background: var(--primary-blue);
            color: var(--white);
            padding: 4rem 3rem;
        }

        .contact-info h3 {
            color: var(--white);
            font-size: 2rem;
            margin-bottom: 2rem;
        }

        .info-item {
            display: flex;
            align-items: flex-start;
            gap: 1.5rem;
            margin-bottom: 2rem;
        }

        .info-icon {
            font-size: 1.5rem;
            background: rgba(255,255,255,0.1);
            width: 50px;
            height: 50px;
            display: flex;
            align-items: center;
            justify-content: center;
            border-radius: 50%;
        }

        .info-content h4 {
            color: var(--white);
            margin-bottom: 0.25rem;
        }

        .info-content p, .info-content a {
            color: var(--light-blue);
            font-size: 1.1rem;
        }

        .info-content a:hover {
            color: var(--white);
        }

        .contact-cta {
            padding: 4rem 3rem;
            display: flex;
            flex-direction: column;
            justify-content: center;
            text-align: center;
        }

        .contact-cta h3 {
            font-size: 1.8rem;
            margin-bottom: 1rem;
        }

        .big-phone {
            font-size: 2.5rem;
            font-weight: 700;
            color: var(--primary-blue);
            font-family: 'Montserrat', sans-serif;
            margin: 1.5rem 0;
            display: block;
        }

        footer {
            background: var(--dark-blue);
            color: var(--light-blue);
            padding: 2rem 0;
            text-align: center;
            font-size: 0.9rem;
        }

        @media (max-width: 992px) {
            .about-grid {
                grid-template-columns: 1fr;
            }
            .about-image {
                max-width: 600px;
                margin: 0 auto;
            }
            .contact-wrapper {
                grid-template-columns: 1fr;
            }
        }

        @media (max-width: 768px) {
            .nav-links {
                display: none;
                position: absolute;
                top: 80px;
                left: 0;
                width: 100%;
                background: var(--white);
                flex-direction: column;
                padding: 2rem;
                text-align: center;
                box-shadow: 0 10px 10px rgba(0,0,0,0.1);
            }
            
            .nav-links.active {
                display: flex;
            }
            
            .mobile-menu-btn {
                display: block;
            }

            .nav-contact .btn {
                display: none;
            }

            .hero h1 {
                font-size: 2.5rem;
            }

            .stats-grid {
                grid-template-columns: 1fr;
            }

            .contact-info, .contact-cta {
                padding: 2rem;
            }
            
            .big-phone {
                font-size: 2rem;
            }
        }
    </style>
</head>
<body>

    <!-- Header / Navigation -->
    <header>
        <div class="container nav-container">
            <a href="#" class="logo">
                <i class="fa-solid fa-droplet"></i>
                <div>
                    Martin McConway<br>
                    <span style="font-size: 0.8rem; font-weight: 400; color: var(--text-light); letter-spacing: 1px;">PLUMBING</span>
                </div>
            </a>
            
            <ul class="nav-links" id="navLinks">
                <li><a href="#about">About</a></li>
                <li><a href="#services">Services</a></li>
                <li><a href="#testimonials">Reviews</a></li>
                <li><a href="#areas">Areas</a></li>
            </ul>

            <div class="nav-contact">
                <a href="tel:07546191319" class="nav-phone"><i class="fa-solid fa-phone"></i> 07546 191319</a>
                <a href="#contact" class="btn btn-primary">Get a Quote</a>
                <button class="mobile-menu-btn" id="menuBtn">
                    <i class="fa-solid fa-bars"></i>
                </button>
            </div>
        </div>
    </header>

    <!-- Hero Section -->
    <section class="hero" id="hero">
        <div class="container fade-in">
            <div class="hero-badges">
                <div class="badge"><i class="fa-solid fa-check-circle"></i> 15+ Years Experience</div>
                <div class="badge"><i class="fa-solid fa-star"></i> 98% Recommended</div>
                <div class="badge"><i class="fa-solid fa-location-dot"></i> Local to W13</div>
            </div>
            <h1>Trusted Local Plumbing in Ealing & Northfields</h1>
            <p>Reliable, professional, and highly recommended across Nextdoor, Reddit, and Facebook. From leaky taps to full bathroom installations, Martin McConway has you covered.</p>
            <div class="mt-2">
                <a href="tel:07546191319" class="btn btn-primary" style="margin-right: 15px; margin-bottom: 15px;">
                    <i class="fa-solid fa-phone"></i> Call 07546 191319
                </a>
                <a href="#services" class="btn btn-outline">Our Services</a>
            </div>
        </div>
    </section>

    <!-- About Section -->
    <section class="about py-4" id="about">
        <div class="container fade-in">
            <div class="about-grid">
                <div class="about-content">
                    <h2>Your Local Plumbing Expert</h2>
                    <p>Hi, I'm Martin McConway. With over 15 years of experience serving the Ealing, Northfields, and wider West London community, I pride myself on providing honest, reliable, and high-quality plumbing services.</p>
                    <p class="mt-2">As an independent local plumber, my reputation means everything to me. I don't rely on expensive advertising; instead, my business has grown through word-of-mouth recommendations on local community groups.</p>
                    <p class="mt-2">Whether it's an emergency leak, a broken boiler, or a complete bathroom refit, you can trust that you're getting professional workmanship at a fair, transparent price.</p>
                    
                    <div class="stats-grid">
                        <div class="stat-box">
                            <span class="stat-number">15+</span>
                            <span class="stat-text">Years Experience</span>
                        </div>
                        <div class="stat-box">
                            <span class="stat-number">98%</span>
                            <span class="stat-text">Recommendation Rate</span>
                        </div>
                        <div class="stat-box">
                            <span class="stat-number">137</span>
                            <span class="stat-text">Facebook Reviews</span>
                        </div>
                    </div>
                </div>
                <div class="about-image">
                    <img src="https://images.unsplash.com/photo-1504328345606-18bbc8c9d7d1?auto=format&fit=crop&q=80&w=1000" alt="Professional Plumbing Services">
                </div>
            </div>
        </div>
    </section>

    <!-- Services Section -->
    <section class="services py-4" id="services">
        <div class="container fade-in">
            <div class="section-header">
                <h2>Our Plumbing Services</h2>
                <p>Comprehensive domestic plumbing services across West London. No job is too small, and every job is done right.</p>
            </div>
            
            <div class="services-grid">
                <div class="service-card">
                    <div class="service-icon"><i class="fa-solid fa-bath"></i></div>
                    <h3>Bathroom Installations</h3>
                    <p>Complete bathroom refits, from plumbing in new suites to final finishes. High-quality workmanship guaranteed.</p>
                </div>
                
                <div class="service-card">
                    <div class="service-icon"><i class="fa-solid fa-fire-flame-simple"></i></div>
                    <h3>Boiler Work</h3>
                    <p>Boiler repairs, servicing, and new installations to keep your home warm and safe all year round.</p>
                </div>
                
                <div class="service-card">
                    <div class="service-icon"><i class="fa-solid fa-temperature-arrow-up"></i></div>
                    <h3>Radiator Installations</h3>
                    <p>Fitting new radiators, moving existing ones, resolving cold spots, and power flushing systems.</p>
                </div>
                
                <div class="service-card">
                    <div class="service-icon"><i class="fa-solid fa-truck-fast"></i></div>
                    <h3>Emergency Plumbing</h3>
                    <p>Rapid response for burst pipes, severe leaks, and plumbing emergencies in the Ealing area.</p>
                </div>
                
                <div class="service-card">
                    <div class="service-icon"><i class="fa-solid fa-shower"></i></div>
                    <h3>Shower Repairs</h3>
                    <p>Fixing low pressure, temperature fluctuations, leaks, or installing brand new shower units.</p>
                </div>
                
                <div class="service-card">
                    <div class="service-icon"><i class="fa-solid fa-sink"></i></div>
                    <h3>Drain Unblocking</h3>
                    <p>Fast and effective clearing of blocked sinks, toilets, baths, and exterior drains.</p>
                </div>

                <div class="service-card">
                    <div class="service-icon"><i class="fa-solid fa-faucet-drip"></i></div>
                    <h3>Outside Taps</h3>
                    <p>Professional installation of external garden taps, perfect for watering plants or washing the car.</p>
                </div>
            </div>
        </div>
    </section>

    <!-- Testimonials Section -->
    <section class="testimonials py-4" id="testimonials">
        <div class="container fade-in">
            <div class="section-header">
                <h2>Highly Recommended Locally</h2>
                <p>Don't just take my word for it. See why 98% of customers recommend my services across local community platforms.</p>
            </div>
            
            <div class="testimonials-grid">
                <div class="testimonial-card">
                    <i class="fa-solid fa-quote-right quote-icon"></i>
                    <div class="stars">
                        <i class="fa-solid fa-star"></i><i class="fa-solid fa-star"></i><i class="fa-solid fa-star"></i><i class="fa-solid fa-star"></i><i class="fa-solid fa-star"></i>
                    </div>
                    <p class="testimonial-text">"Martin fixed our boiler in no time when it broke down mid-winter. Found him recommended on the Ealing Nextdoor group and he definitely lived up to the hype! Honest and reasonably priced."</p>
                    <div class="testimonial-author">
                        <span class="author-name">Sarah T.</span>
                        <span class="platform nextdoor">Nextdoor</span>
                    </div>
                </div>

                <div class="testimonial-card">
                    <i class="fa-solid fa-quote-right quote-icon"></i>
                    <div class="stars">
                        <i class="fa-solid fa-star"></i><i class="fa-solid fa-star"></i><i class="fa-solid fa-star"></i><i class="fa-solid fa-star"></i><i class="fa-solid fa-star"></i>
                    </div>
                    <p class="testimonial-text">"Best plumber in W13 without a doubt. Arrived exactly when he said he would, sorted a persistent shower leak that two other plumbers couldn't fix. Saw him highly praised on r/Ealing."</p>
                    <div class="testimonial-author">
                        <span class="author-name">James W.</span>
                        <span class="platform reddit">Reddit</span>
                    </div>
                </div>

                <div class="testimonial-card">
                    <i class="fa-solid fa-quote-right quote-icon"></i>
                    <div class="stars">
                        <i class="fa-solid fa-star"></i><i class="fa-solid fa-star"></i><i class="fa-solid fa-star"></i><i class="fa-solid fa-star"></i><i class="fa-solid fa-star"></i>
                    </div>
                    <p class="testimonial-text">"Fantastic service for our complete bathroom refit. Martin is meticulous, tidy, and communicates every step of the way. Adding my 5 stars to his long list of Facebook reviews. Highly recommend!"</p>
                    <div class="testimonial-author">
                        <span class="author-name">Emma L.</span>
                        <span class="platform facebook">Facebook</span>
                    </div>
                </div>
            </div>
        </div>
    </section>

    <!-- Areas Section -->
    <section class="areas" id="areas">
        <div class="container fade-in">
            <h2>Areas We Serve</h2>
            <p style="margin-bottom: 2rem;">Proudly providing prompt, reliable plumbing services across West London.</p>
            <div class="area-tags">
                <div class="area-tag"><i class="fa-solid fa-location-dot"></i> Ealing</div>
                <div class="area-tag"><i class="fa-solid fa-location-dot"></i> Northfields</div>
                <div class="area-tag"><i class="fa-solid fa-location-dot"></i> W13</div>
                <div class="area-tag"><i class="fa-solid fa-location-dot"></i> West Ealing</div>
                <div class="area-tag"><i class="fa-solid fa-location-dot"></i> Hanwell</div>
                <div class="area-tag"><i class="fa-solid fa-location-dot"></i> Acton</div>
                <div class="area-tag"><i class="fa-solid fa-map"></i> Wider West London</div>
            </div>
        </div>
    </section>

    <!-- Contact Section -->
    <section class="contact py-4" id="contact">
        <div class="container fade-in">
            <div class="section-header">
                <h2>Get In Touch</h2>
                <p>Need a plumber? Contact Martin today for a free, no-obligation quote.</p>
            </div>

            <div class="contact-wrapper">
                <div class="contact-info">
                    <h3>Contact Details</h3>
                    
                    <div class="info-item">
                        <div class="info-icon"><i class="fa-solid fa-phone"></i></div>
                        <div class="info-content">
                            <h4>Phone</h4>
                            <a href="tel:07546191319">07546 191319</a>
                        </div>
                    </div>

                    <div class="info-item">
                        <div class="info-icon"><i class="fa-solid fa-envelope"></i></div>
                        <div class="info-content">
                            <h4>Email</h4>
                            <a href="mailto:mmcplumbing@outlook.com">mmcplumbing@outlook.com</a>
                        </div>
                    </div>

                    <div class="info-item">
                        <div class="info-icon"><i class="fa-solid fa-map-pin"></i></div>
                        <div class="info-content">
                            <h4>Location</h4>
                            <p>Northfields, Ealing<br>London, W13 9AW</p>
                        </div>
                    </div>
                </div>
                
                <div class="contact-cta">
                    <h3>Need Plumbing Help Fast?</h3>
                    <p>Save my number in your phone or call right now to discuss your plumbing needs.</p>
                    <a href="tel:07546191319" class="big-phone">07546 191319</a>
                    <p style="color: var(--text-light); font-size: 0.9rem;">Available for standard appointments and emergency call-outs.</p>
                    <div class="mt-2">
                        <a href="mailto:mmcplumbing@outlook.com" class="btn btn-primary"><i class="fa-solid fa-paper-plane"></i> Send an Email</a>
                    </div>
                </div>
            </div>
        </div>
    </section>

    <!-- Footer -->
    <footer>
        <div class="container">
            <p>&copy; 2023 Martin McConway Plumbing. All rights reserved.</p>
            <p style="margin-top: 10px; font-size: 0.8rem; color: rgba(255,255,255,0.5);">Serving Ealing, Northfields (W13), and West London.</p>
        </div>
    </footer>

    <!-- Scripts -->
    <script>
        const menuBtn = document.getElementById('menuBtn');
        const navLinks = document.getElementById('navLinks');

        menuBtn.addEventListener('click', () => {
            navLinks.classList.toggle('active');
        });

        document.querySelectorAll('.nav-links a').forEach(link => {
            link.addEventListener('click', () => {
                navLinks.classList.remove('active');
            });
        });

        const observerOptions = {
            root: null,
            rootMargin: '0px',
            threshold: 0.15
        };

        const observer = new IntersectionObserver((entries, observer) => {
            entries.forEach(entry => {
                if (entry.isIntersecting) {
                    entry.target.classList.add('visible');
                    observer.unobserve(entry.target);
                }
            });
        }, observerOptions);

        document.querySelectorAll('.fade-in').forEach(element => {
            observer.observe(element);
        });

        window.onload = () => {
            document.querySelector('#hero .fade-in').classList.add('visible');
        };
    </script>
</body>
</html>
