'use client';

import { DealerInfo } from '@/types/dealer';
import Image from 'next/image';
import { DealerScripts } from '@/components/DealerScripts';
import { HeroSlider } from '@/components/HeroSlider';
import { QuickLinks } from './QuickLinks';
import { MobileNav } from './MobileNav';
import ContactSection from '@/app/components/contact-section';
import {
  resolveAmsoilLink,
  isAmsoilUrl,
  appendZoParam,
  getEffectiveLinkDomain,
} from '@/lib/amsoil-link-resolver';
import { AMSOIL_LINKS } from '@/lib/amsoil-links';
import { getDealerOrigin } from '@/lib/seo-utils';
import { MapPin, Phone } from 'lucide-react';
import { formatPhoneForDisplay, formatPhoneForTel } from '@/lib/phone-utils';
import { createDefaultSliderContent } from '@/types/slider';
import { sanitizeHtmlRelaxedWithSecureLinks } from '@/lib/cms/sanitize-client';
import { useLanguage } from './LanguageProvider';
import { LanguageSwitcher } from './LanguageSwitcher';
import { t } from '@/lib/translations/dealer-template';

/**
 * Generate JSON-LD schema for dealer page based on MetaSchemaPlan.txt
 * Uses getEffectiveLinkDomain to resolve the correct AMSOIL brand URL for US vs Canadian dealers
 */
export function generateDealerSchema(dealer: DealerInfo): object {
  // Build the dealer's bare origin via the shared helper so shopamsoil vs
  // myamsoil dealers emit correct structured-data @id / url values. Previously
  // this hardcoded "myamsoil", which pointed shopamsoil dealers at their sibling's
  // site in Google/Bing knowledge graphs.
  // getDealerOrigin returns no trailing slash: the `url` fields below use it as-is
  // to match the no-slash canonical Next.js renders, and `${pageUrl}/#localbusiness`
  // fragment @id values can't produce double slashes.
  const pageUrl = getDealerOrigin({
    subdomain: dealer.subdomain,
    domain: dealer.domain,
    domainPrefix: dealer.domainPrefix,
  });
  const pageName = `AMSOIL Synthetic Oil in ${dealer.address.city}, ${dealer.address.state} | ${dealer.name}`;

  // AMSOIL base URL (resolved for effective link domain)
  const linkDomain = getEffectiveLinkDomain(dealer.domain, dealer.amsoilLinkDomain);
  const amsoilBase = linkDomain === 'ca' ? 'https://amsoil.ca' : 'https://www.amsoil.com';

  // Only surface the dealer's named contact when they opted to show it publicly.
  const showDealer = Boolean(dealer.showContactName && dealer.contactName);

  return {
    '@context': 'https://schema.org',
    '@graph': [
      {
        '@type': 'AutoPartsStore',
        '@id': `${pageUrl}/#localbusiness`,
        name: `${dealer.name}, Authorized AMSOIL Dealer`,
        description: `Authorized Independent AMSOIL Dealer specializing in premium AMSOIL synthetic lubricants and filters in ${dealer.address.city}, ${dealer.address.state}.`,
        // Disambiguates this independent dealer from AMSOIL INC. in the entity graph.
        disambiguatingDescription: `Independent, authorized AMSOIL dealer based in ${dealer.address.city}, ${dealer.address.state}.`,
        url: pageUrl,
        telephone: dealer.phone,
        ...(dealer.email ? { email: dealer.email } : {}),
        image: `${pageUrl}/og`,
        priceRange: '$-$$$',
        // Topics linked to their canonical Wikipedia entities for entity grounding.
        knowsAbout: [
          {
            '@type': 'Thing',
            name: 'Synthetic oil',
            sameAs: 'https://en.wikipedia.org/wiki/Synthetic_oil',
          },
          {
            '@type': 'Thing',
            name: 'Motor oil',
            sameAs: 'https://en.wikipedia.org/wiki/Motor_oil',
          },
          {
            '@type': 'Thing',
            name: 'Lubricant',
            sameAs: 'https://en.wikipedia.org/wiki/Lubricant',
          },
          {
            '@type': 'Thing',
            name: 'Grease',
            sameAs: 'https://en.wikipedia.org/wiki/Grease_(lubricant)',
          },
          {
            '@type': 'Thing',
            name: 'Oil filter',
            sameAs: 'https://en.wikipedia.org/wiki/Oil_filter',
          },
          {
            '@type': 'Thing',
            name: 'Air filter',
            sameAs: 'https://en.wikipedia.org/wiki/Air_filter',
          },
          {
            '@type': 'Thing',
            name: 'Fuel filter',
            sameAs: 'https://en.wikipedia.org/wiki/Fuel_filter',
          },
        ],
        ...(dealer.logoUrl ? { logo: dealer.logoUrl } : {}),
        ...(dealer.address.city && dealer.address.state
          ? {
              hasMap: `https://www.google.com/maps/search/?api=1&query=${encodeURIComponent(
                dealer.hideAddress
                  ? `${dealer.address.city}, ${dealer.address.state} ${dealer.address.zip}`
                  : `${dealer.address.street ? dealer.address.street + ', ' : ''}${dealer.address.city}, ${dealer.address.state} ${dealer.address.zip}`
              )}`,
            }
          : {}),
        ...(() => {
          const links = dealer.socialLinks;
          if (!links) return {};
          const urls = [
            links.facebook,
            links.instagram,
            links.youtube,
            links.pinterest,
            links.linkedin,
            links.x || links.twitter,
          ].filter((v): v is string => Boolean(v));
          return urls.length > 0 ? { sameAs: urls } : {};
        })(),
        // Authorized-dealer status as a credential AMSOIL recognizes (not brand ownership).
        hasCredential: {
          '@type': 'EducationalOccupationalCredential',
          name: 'Authorized AMSOIL Dealer',
          credentialCategory: 'Authorized Dealer',
          recognizedBy: { '@id': `${amsoilBase}/#organization` },
        },
        ...(showDealer ? { founder: { '@id': `${pageUrl}/#dealer` } } : {}),
        address: {
          '@type': 'PostalAddress',
          ...(!dealer.hideAddress && dealer.address.street
            ? { streetAddress: dealer.address.street }
            : {}),
          addressLocality: dealer.address.city,
          addressRegion: dealer.address.state,
          postalCode: dealer.address.zip,
          addressCountry: dealer.address.country === 'Canada' ? 'CA' : 'US',
        },
      },
      {
        '@type': 'Organization',
        '@id': `${amsoilBase}/#organization`,
        name: 'AMSOIL INC.',
        url: `${amsoilBase}/`,
      },
      {
        '@type': 'WebSite',
        '@id': `${pageUrl}/#website`,
        url: pageUrl,
        name: dealer.name,
        publisher: {
          '@id': `${pageUrl}/#localbusiness`,
        },
      },
      {
        '@type': 'WebPage',
        '@id': `${pageUrl}/#webpage`,
        url: pageUrl,
        name: pageName,
        isPartOf: {
          '@id': `${pageUrl}/#website`,
        },
        about: {
          '@id': `${pageUrl}/#localbusiness`,
        },
      },
      // The named contact is the dealer or their authorized rep; emit as the business founder.
      ...(showDealer
        ? [
            {
              '@type': 'Person',
              '@id': `${pageUrl}/#dealer`,
              name: dealer.contactName,
              jobTitle: 'Authorized AMSOIL Dealer',
              worksFor: { '@id': `${pageUrl}/#localbusiness` },
            },
          ]
        : []),
    ],
  };
}

/**
 * DEALER PAGE TEMPLATE - Wireframe Version (Updated for New Design)
 *
 * DESIGN SOURCE: Figma landing page design approved by AMSOIL
 * STATUS: Wireframe only - NO STYLING (awaiting design refresh completion)
 *
 * STRUCTURE: 9 sections based on new Figma design:
 * 1. Split 2-row header (dealer info in top row)
 * 2. Hero slider section with CTA
 * 3. Product categories (FIND YOUR PRODUCTS)
 * 4. Featured products (THREE TIERS OF PREMIUM PERFORMANCE)
 * 5. Request catalog (2-column blue section)
 * 6. Dealer info section (2-column with dynamic dealer data)
 * 7. Preferred customer CTA (4 benefits + CTA)
 * 8. Pick a category grid (8 product category cards)
 * 9. Footer (dealer contact info in right column)
 *
 * DYNAMIC DATA LOCATIONS:
 * - Header row 1: location (city, state) + phone
 * - Header row 2: dealer name
 * - Dealer Info section: name, description/bio
 * - Footer: name, address, phone, email
 *
 * TODO: Future Implementation Plan
 * ================================
 * - Called from app/page.tsx with subdomain extraction
 * - Dealer data fetched from database using subdomain
 * - Apply final design styling once design refresh is complete
 *
 * @param dealer - Dealer information object with name, contact, and address
 */

interface DealerTemplateProps {
  dealer: DealerInfo;
  dealerNumber?: string;
  leadFormEnabled?: boolean;
  turnstileSiteKey?: string | null;
  allowLanguageSwitch?: boolean;
}

export function DealerTemplate({
  dealer,
  dealerNumber,
  leadFormEnabled = true,
  turnstileSiteKey,
  allowLanguageSwitch = true,
}: DealerTemplateProps) {
  // Get language from context
  const { language } = useLanguage();

  // Helper to get resolved AMSOIL links with ZO number (URL-encoded for safety)
  const zoNumber = encodeURIComponent(dealerNumber || '101');
  const linkDomain = getEffectiveLinkDomain(dealer.domain, dealer.amsoilLinkDomain);
  const getLink = (key: keyof typeof AMSOIL_LINKS): string => {
    const resolvedUrl = resolveAmsoilLink(AMSOIL_LINKS[key], linkDomain);
    return appendZoParam(resolvedUrl, zoNumber);
  };

  // Helper to resolve navigation hrefs for Canadian dealers and add ZO parameter
  const resolveNavHref = (href: string | null): string | null => {
    if (!href) return null;

    if (isAmsoilUrl(href)) {
      // Resolve for correct domain (US vs CA). Links already on amsoil.ca
      // (e.g., a Canadian dealer's custom nav link) skip domain resolution
      // but still get ZO appended for attribution tracking.
      const resolvedUrl = href.includes('amsoil.com') ? resolveAmsoilLink(href, linkDomain) : href;
      return appendZoParam(resolvedUrl, zoNumber);
    }

    return href;
  };

  // Helper to resolve slider content URLs for Canadian dealers
  const resolveSliderContent = () => {
    const rawContent =
      dealer.heroSlider && dealer.heroSlider.slides && dealer.heroSlider.slides.length > 0
        ? dealer.heroSlider
        : createDefaultSliderContent(dealerNumber);

    // Transform slide button URLs for correct region (US vs CA)
    // Filter to only active slides (slides without `active` field default to active)
    return {
      ...rawContent,
      slides: rawContent.slides
        .filter((slide) => slide.active !== false)
        .map((slide) => ({
          ...slide,
          button: {
            ...slide.button,
            url: slide.button.url ? (resolveNavHref(slide.button.url) ?? slide.button.url) : '',
          },
        })),
    };
  };

  return (
    <div className="dealer-page-wireframe">
      {/* ==================== DEALER SCRIPTS (GTM, Analytics, etc.) ==================== */}
      {/* Uses next/script with afterInteractive strategy - properly integrates with Next.js */}
      <DealerScripts headScripts={dealer.headScripts} bodyScripts={dealer.bodyScripts} />

      {/* JSON-LD Schema for SEO */}
      <script
        type="application/ld+json"
        dangerouslySetInnerHTML={{ __html: JSON.stringify(generateDealerSchema(dealer)) }}
      />

      {/* ==================== SECTION 1: SPLIT 2-ROW HEADER ==================== */}
      <header>
        {/* Top Row: AMSOIL branding + dealer location/phone */}
        <div className="header-row-1">
          <div>
            <a href="/" className="header-logo" aria-label="Go to home page">
              <Image
                src="/images/logo/amsoil-logo.png"
                alt="AMSOIL"
                width={200}
                height={50}
                priority
              />
              <div>{t(language, 'independentDealer')}</div>
            </a>

            {/* DYNAMIC: Dealer location and phone */}
            <div className="header-contact">
              {allowLanguageSwitch && <LanguageSwitcher />}
              <a
                className="header-contact__item"
                href={`https://www.google.com/maps/search/?api=1&query=${encodeURIComponent(
                  dealer.hideAddress
                    ? `${dealer.address.city}, ${dealer.address.state} ${dealer.address.zip}`
                    : `${dealer.address.street ? dealer.address.street + ', ' : ''}${dealer.address.city}, ${dealer.address.state} ${dealer.address.zip}`
                )}`}
                target="_blank"
                rel="noopener noreferrer"
              >
                <MapPin size={14} />
                <span>
                  {dealer.address.city}, {dealer.address.state}
                </span>
              </a>
              <a className="header-contact__item" href={`tel:${formatPhoneForTel(dealer.phone)}`}>
                <Phone size={14} />
                <span>{formatPhoneForDisplay(dealer.phone)}</span>
              </a>
            </div>
          </div>
        </div>

        {/* Bottom Row: Dealer name + navigation */}
        <div className="header-row-2">
          <div>
            {/* DYNAMIC: Dealer logo and name */}
            <a href="/" className="dealer-name-row" aria-label="Go to home page">
              {dealer.logoUrl && (
                <img src={dealer.logoUrl} alt={`${dealer.name} logo`} className="dealer-logo" />
              )}
              <h1 className="dealer-name">{dealer.name}</h1>
            </a>

            {/* Mobile Navigation - hamburger menu for small screens */}
            {dealer.navigation && dealer.navigation.length > 0 && (
              <MobileNav
                navigation={dealer.navigation.map((item) => ({
                  label: item.label,
                  href: resolveNavHref(item.href),
                  openInNewTab: item.openInNewTab,
                  children: item.children?.map((child) => ({
                    label: child.label,
                    href: resolveNavHref(child.href),
                    openInNewTab: child.openInNewTab,
                  })),
                }))}
              />
            )}

            {/* Desktop Navigation with dropdown support - hidden on mobile */}
            {dealer.navigation && dealer.navigation.length > 0 && (
              <nav className="dealer-nav">
                {dealer.navigation.map((item, index) => {
                  const resolvedHref = resolveNavHref(item.href);
                  return (
                    <div key={index} className="nav-item-wrapper">
                      {resolvedHref ? (
                        <a
                          href={resolvedHref}
                          target={item.openInNewTab ? '_blank' : undefined}
                          rel={item.openInNewTab ? 'noopener noreferrer' : undefined}
                          className="nav-link"
                        >
                          {item.label}
                          {item.children && item.children.length > 0 && (
                            <span className="dropdown-indicator">▾</span>
                          )}
                        </a>
                      ) : (
                        <span className="nav-link nav-link-no-href">
                          {item.label}
                          {item.children && item.children.length > 0 && (
                            <span className="dropdown-indicator">▾</span>
                          )}
                        </span>
                      )}
                      {/* Dropdown menu for children */}
                      {item.children && item.children.length > 0 && (
                        <div className="nav-dropdown">
                          {(item.children || []).map((child, childIndex) => {
                            const childResolvedHref = resolveNavHref(child.href);
                            return childResolvedHref ? (
                              <a
                                key={childIndex}
                                href={childResolvedHref}
                                target={child.openInNewTab ? '_blank' : undefined}
                                rel={child.openInNewTab ? 'noopener noreferrer' : undefined}
                                className="dropdown-link"
                              >
                                {child.label}
                              </a>
                            ) : (
                              <span
                                key={childIndex}
                                className="dropdown-link dropdown-link-no-href"
                              >
                                {child.label}
                              </span>
                            );
                          })}
                        </div>
                      )}
                    </div>
                  );
                })}
              </nav>
            )}
          </div>
        </div>
      </header>

      <main>
        {/* ==================== SECTION 2: HERO SLIDER ==================== */}
        {/* Use dealer's custom slider if configured, otherwise show default AMSOIL slider */}
        {/* URLs are resolved for correct region (US vs CA) and include ZO tracking */}
        <HeroSlider sliderContent={resolveSliderContent()} />

        {/* ==================== SECTION 3: PRODUCT CATEGORIES ==================== */}
        <section className="product-categories">
          <h2 className="section-heading">{t(language, 'findProducts')}</h2>
          <p>{t(language, 'findProductsDesc')}</p>

          <div className="category-icons">
            <a href={getLink('LOOKUP_AUTO')} target="_blank" rel="sponsored noopener noreferrer">
              <div className="icon">
                <Image
                  src="/images/vehicle-icons/auto.png"
                  alt={t(language, 'vehicles.autoLt')}
                  width={100}
                  height={60}
                  loading="lazy"
                />
              </div>
              <span>{t(language, 'vehicles.autoLt')}</span>
            </a>

            <a
              href={getLink('LOOKUP_MOTORCYCLE')}
              target="_blank"
              rel="sponsored noopener noreferrer"
            >
              <div className="icon">
                <Image
                  src="/images/vehicle-icons/motorcycle.png"
                  alt={t(language, 'vehicles.motorcycle')}
                  width={100}
                  height={60}
                  loading="lazy"
                />
              </div>
              <span>{t(language, 'vehicles.motorcycle')}</span>
            </a>

            <a href={getLink('LOOKUP_ATV')} target="_blank" rel="sponsored noopener noreferrer">
              <div className="icon">
                <Image
                  src="/images/vehicle-icons/atv.png"
                  alt={t(language, 'vehicles.atv')}
                  width={100}
                  height={60}
                  loading="lazy"
                />
              </div>
              <span>{t(language, 'vehicles.atv')}</span>
            </a>

            <a href={getLink('LOOKUP_UTV')} target="_blank" rel="sponsored noopener noreferrer">
              <div className="icon">
                <Image
                  src="/images/vehicle-icons/utv.png"
                  alt={t(language, 'vehicles.utv')}
                  width={100}
                  height={60}
                  loading="lazy"
                />
              </div>
              <span>{t(language, 'vehicles.utv')}</span>
            </a>

            <a
              href={getLink('LOOKUP_SNOWMOBILE')}
              target="_blank"
              rel="sponsored noopener noreferrer"
            >
              <div className="icon">
                <Image
                  src="/images/vehicle-icons/snowmobile.png"
                  alt={t(language, 'vehicles.snowmobile')}
                  width={100}
                  height={60}
                  loading="lazy"
                />
              </div>
              <span>{t(language, 'vehicles.snowmobile')}</span>
            </a>

            <a
              href={getLink('LOOKUP_OUTBOARD')}
              target="_blank"
              rel="sponsored noopener noreferrer"
            >
              <div className="icon">
                <Image
                  src="/images/vehicle-icons/marine.png"
                  alt={t(language, 'vehicles.marine')}
                  width={100}
                  height={60}
                  loading="lazy"
                />
              </div>
              <span>{t(language, 'vehicles.marine')}</span>
            </a>

            <a href={getLink('LOOKUP_PWC')} target="_blank" rel="sponsored noopener noreferrer">
              <div className="icon">
                <Image
                  src="/images/vehicle-icons/pwc.png"
                  alt={t(language, 'vehicles.pwc')}
                  width={100}
                  height={60}
                  loading="lazy"
                />
              </div>
              <span>{t(language, 'vehicles.pwc')}</span>
            </a>

            <a
              href={getLink('LOOKUP_SMALL_ENGINE')}
              target="_blank"
              rel="sponsored noopener noreferrer"
            >
              <div className="icon">
                <Image
                  src="/images/vehicle-icons/small-engine.png"
                  alt={t(language, 'vehicles.smallEngine')}
                  width={100}
                  height={60}
                  loading="lazy"
                />
              </div>
              <span>{t(language, 'vehicles.smallEngine')}</span>
            </a>

            <a
              href={getLink('LOOKUP_HEAVY_DUTY')}
              target="_blank"
              rel="sponsored noopener noreferrer"
            >
              <div className="icon">
                <Image
                  src="/images/vehicle-icons/heavy-duty.png"
                  alt={t(language, 'vehicles.heavyDuty')}
                  width={100}
                  height={60}
                  loading="lazy"
                />
              </div>
              <span>{t(language, 'vehicles.heavyDuty')}</span>
            </a>
          </div>
        </section>

        {/* ==================== SECTION 4: FEATURED PRODUCTS (THREE TIERS) ==================== */}
        <section className="featured-products">
          <h2 className="section-heading">{t(language, 'threeTiers')}</h2>
          <p>{t(language, 'threeTiersDesc')}</p>

          <div className="product-tiers">
            {/* Tier 1: Signature Series */}
            <div className="product-tier">
              <h3 className="item-title">
                {t(language, 'tiers.signatureSeries')}
                <br />
                {t(language, 'tiers.syntheticMotorOil')}
              </h3>
              <p className="product-benefit">{t(language, 'tiers.maxProtection')}</p>
              <p className="product-interval">{t(language, 'tiers.interval25k')}</p>
              <div className="product-image flex justify-center">
                <Image
                  src="/images/products/signature-series.webp"
                  alt="Signature Series Motor Oil"
                  width={216}
                  height={412}
                  loading="lazy"
                  sizes="(max-width: 768px) 100vw, 216px"
                  quality={90}
                />
              </div>
            </div>

            {/* Tier 2: Extended-Life */}
            <div className="product-tier">
              <h3 className="item-title">
                {t(language, 'tiers.extendedLife')}
                <br />
                {t(language, 'tiers.syntheticMotorOil')}
              </h3>
              <p className="product-benefit">{t(language, 'tiers.boostedProtection')}</p>
              <p className="product-interval">{t(language, 'tiers.interval20k')}</p>
              <div className="product-image flex justify-center">
                <Image
                  src="/images/products/extended-life.webp"
                  alt="Extended-Life Motor Oil"
                  width={224}
                  height={412}
                  loading="lazy"
                  sizes="(max-width: 768px) 100vw, 224px"
                  quality={90}
                />
              </div>
            </div>

            {/* Tier 3: OE Synthetic */}
            <div className="product-tier">
              <h3 className="item-title">
                {t(language, 'tiers.oeSynthetic')}
                <br />
                {t(language, 'tiers.syntheticMotorOilOe')}
              </h3>
              <p className="product-benefit">{t(language, 'tiers.advancedProtection')}</p>
              <p className="product-interval">{t(language, 'tiers.intervalOem')}</p>
              <div className="product-image flex justify-center">
                <Image
                  src="/images/products/oe-synthetic.webp"
                  alt="OE Synthetic Motor Oil"
                  width={217}
                  height={411}
                  loading="lazy"
                  sizes="(max-width: 768px) 100vw, 217px"
                  quality={90}
                />
              </div>
            </div>
          </div>

          <p className="disclaimer">{t(language, 'disclaimer')}</p>

          <a href={getLink('SHOP_MOTOR_OIL')} target="_blank" rel="sponsored noopener noreferrer">
            <button className="cta-button">{t(language, 'shopMotorOil')}</button>
          </a>
        </section>

        {/* ==================== SECTION 5: REQUEST CATALOG (2-Column) ==================== */}
        <section
          className="request-catalog"
          style={{
            backgroundImage: 'url(/images/categories/image-pour.webp)',
          }}
        >
          <div className="catalog-content">
            <div className="catalog-text ml-auto">
              <h2>{t(language, 'rightProduct')}</h2>
              <p>
                <span className="block">{t(language, 'catalogDesc1')}</span>
                <span className="block">{t(language, 'catalogDesc2')}</span>
              </p>

              <a href={getLink('FREE_CATALOG')} target="_blank" rel="sponsored noopener noreferrer">
                <button className="cta-button">{t(language, 'requestCatalog')}</button>
              </a>
            </div>
          </div>
        </section>

        {/* ==================== SECTION 6: DEALER INFO (2-Column) ==================== */}
        <section className="dealer-info" id="dealer-info">
          <div className="dealer-content">
            <div className="dealer-text">
              <h2>{t(language, 'fullServiceDealer')}</h2>
              {/* DYNAMIC: Dealer name, location, phone */}
              <h3>{dealer.name}</h3>
              {dealer.showContactName && dealer.contactName && (
                <p className="dealer-contact-name">{dealer.contactName}</p>
              )}
              <div className="dealer-contact-info">
                <p className="dealer-location">
                  <MapPin size={20} stroke="#F8981D" />
                  <a
                    href={`https://www.google.com/maps/search/?api=1&query=${encodeURIComponent(
                      dealer.hideAddress
                        ? `${dealer.address.city}, ${dealer.address.state} ${dealer.address.zip}`
                        : `${dealer.address.street ? dealer.address.street + ', ' : ''}${dealer.address.city}, ${dealer.address.state} ${dealer.address.zip}`
                    )}`}
                    target="_blank"
                    rel="noopener noreferrer"
                  >
                    {!dealer.hideAddress && dealer.address.street && (
                      <>
                        {dealer.address.street}
                        <br />
                      </>
                    )}
                    {dealer.address.city}, {dealer.address.state} {dealer.address.zip}
                  </a>
                </p>
                <p className="dealer-phone">
                  <Phone size={15} stroke="#F8981D" />
                  <a href={`tel:${formatPhoneForTel(dealer.phone)}`}>
                    {formatPhoneForDisplay(dealer.phone)}
                  </a>
                </p>
              </div>
              <hr />
              {dealer.description ? (
                <div
                  className="dealer-description"
                  dangerouslySetInnerHTML={{
                    __html: sanitizeHtmlRelaxedWithSecureLinks(dealer.description),
                  }}
                />
              ) : (
                <>
                  <h4>{t(language, 'notSureProduct')}</h4>
                  <p>{t(language, 'contactUsHelp')}</p>
                </>
              )}
              {leadFormEnabled && (
                <a href="#contact-us">
                  <button className="cta-button">{t(language, 'getInTouch')}</button>
                </a>
              )}

              {/* Quick Links */}
              {dealer.quickLinks && dealer.quickLinks.length > 0 && (
                <QuickLinks links={dealer.quickLinks} />
              )}
            </div>

            <div className="dealer-image">
              <Image
                src="/images/categories/dealer-info-section.webp"
                alt="Dealer Service"
                width={600}
                height={400}
                loading="lazy"
              />
            </div>
          </div>
        </section>

        {/* ==================== SECTION 7: PREFERRED CUSTOMER CTA ==================== */}
        <section className="preferred-customer">
          <h2>{t(language, 'becomePreferred')}</h2>
          <p>{t(language, 'preferredDesc')}</p>

          <div className="benefits-grid">
            <div className="benefit">
              <div className="benefit-icon">
                <Image
                  src="/images/benefits/pricing.png"
                  alt={t(language, 'benefits.reducedPricing')}
                  width={124}
                  height={120}
                  loading="lazy"
                />
              </div>
              <h3>{t(language, 'benefits.reducedPricing')}</h3>
              <p>{t(language, 'benefits.reducedPricingDesc')}</p>
            </div>

            <div className="benefit">
              <div className="benefit-icon">
                <Image
                  src="/images/benefits/shipping.png"
                  alt={t(language, 'benefits.freeShipping')}
                  width={126}
                  height={120}
                  loading="lazy"
                />
              </div>
              <h3>{t(language, 'benefits.freeShipping')}</h3>
              <p>{t(language, 'benefits.freeShippingDesc')}</p>
            </div>

            <div className="benefit">
              <div className="benefit-icon">
                <Image
                  src="/images/benefits/gift2.png"
                  alt={t(language, 'benefits.birthdayGift')}
                  width={124}
                  height={120}
                  loading="lazy"
                />
              </div>
              <h3>{t(language, 'benefits.birthdayGift')}</h3>
              <p>{t(language, 'benefits.birthdayGiftDesc')}</p>
            </div>

            <div className="benefit">
              <div className="benefit-icon">
                <Image
                  src="/images/benefits/money-back.png"
                  alt={t(language, 'benefits.fiveBack')}
                  width={89}
                  height={120}
                  loading="lazy"
                />
              </div>
              <h3>{t(language, 'benefits.fiveBack')}</h3>
              <p>{t(language, 'benefits.fiveBackDesc')}</p>
            </div>

            <div className="benefit">
              <div className="benefit-icon">
                <Image
                  src="/images/benefits/promotions.png"
                  alt={t(language, 'benefits.exclusivePromos')}
                  width={117}
                  height={120}
                  loading="lazy"
                />
              </div>
              <h3>{t(language, 'benefits.exclusivePromos')}</h3>
              <p>{t(language, 'benefits.exclusivePromosDesc')}</p>
            </div>

            <div className="benefit">
              <div className="benefit-icon">
                <Image
                  src="/images/benefits/membership2.png"
                  alt={t(language, 'benefits.freeMembership')}
                  width={124}
                  height={120}
                  loading="lazy"
                />
              </div>
              <h3>{t(language, 'benefits.freeMembership')}</h3>
              <p>{t(language, 'benefits.freeMembershipDesc')}</p>
            </div>
          </div>

          <p className="disclaimer">
            {t(language, 'findMoreAt')}{' '}
            <a
              href={`${linkDomain === 'ca' ? 'https://amsoil.ca' : 'https://www.amsoil.com'}?zo=${zoNumber}`}
              target="_blank"
              rel="sponsored noopener noreferrer"
              className="underline"
            >
              {linkDomain === 'ca' ? 'amsoil.ca' : 'amsoil.com'}
            </a>{' '}
            {t(language, 'orContactDealer')}{' '}
            {leadFormEnabled ? (
              <a href="#contact-us" className="underline">
                {t(language, 'contactYourDealer')}
              </a>
            ) : (
              t(language, 'contactYourDealer')
            )}{' '}
            {t(language, 'today')}
          </p>

          <a href={getLink('PC_SIGNUP')} target="_blank" rel="sponsored noopener noreferrer">
            <button className="cta-button">{t(language, 'joinAndSave')}</button>
          </a>
        </section>

        {/* ==================== SECTION 8: PICK A CATEGORY GRID ==================== */}
        <section className="category-grid">
          <h2 className="section-heading">{t(language, 'pickCategory')}</h2>

          <div className="categories-grid">
            {/* Row 1 */}
            <div className="category-card">
              <div className="category-image">
                <Image
                  src="/images/categories/motor-oils.webp"
                  alt={t(language, 'categories.motorOils')}
                  width={250}
                  height={200}
                  loading="lazy"
                />
              </div>
              <h3 className="item-title">{t(language, 'categories.motorOils')}</h3>
              <a
                href={getLink('CATEGORY_MOTOR_OIL')}
                target="_blank"
                rel="sponsored noopener noreferrer"
              >
                <button>{t(language, 'shopNow')}</button>
              </a>
            </div>

            <div className="category-card">
              <div className="category-image">
                <Image
                  src="/images/categories/transmission-fluids.webp"
                  alt={t(language, 'categories.transmissionFluids')}
                  width={250}
                  height={200}
                  loading="lazy"
                />
              </div>
              <h3 className="item-title">{t(language, 'categories.transmissionFluids')}</h3>
              <a
                href={getLink('CATEGORY_TRANSMISSION_FLUID')}
                target="_blank"
                rel="sponsored noopener noreferrer"
              >
                <button>{t(language, 'shopNow')}</button>
              </a>
            </div>

            <div className="category-card">
              <div className="category-image">
                <Image
                  src="/images/categories/filtration-products.webp"
                  alt={t(language, 'categories.filtrationProducts')}
                  width={250}
                  height={200}
                  loading="lazy"
                />
              </div>
              <h3 className="item-title">{t(language, 'categories.filtrationProducts')}</h3>
              <a
                href={getLink('CATEGORY_FILTERS')}
                target="_blank"
                rel="sponsored noopener noreferrer"
              >
                <button>{t(language, 'shopNow')}</button>
              </a>
            </div>

            <div className="category-card">
              <div className="category-image">
                <Image
                  src="/images/categories/fuel-additives.webp"
                  alt={t(language, 'categories.fuelAdditives')}
                  width={250}
                  height={200}
                  loading="lazy"
                />
              </div>
              <h3 className="item-title">{t(language, 'categories.fuelAdditives')}</h3>
              <a
                href={getLink('CATEGORY_FUEL_ADDITIVES')}
                target="_blank"
                rel="sponsored noopener noreferrer"
              >
                <button>{t(language, 'shopNow')}</button>
              </a>
            </div>

            {/* Row 2 */}
            <div className="category-card">
              <div className="category-image">
                <Image
                  src="/images/categories/gear-lubes.webp"
                  alt={t(language, 'categories.gearLubes')}
                  width={250}
                  height={200}
                  loading="lazy"
                />
              </div>
              <h3 className="item-title">{t(language, 'categories.gearLubes')}</h3>
              <a
                href={getLink('CATEGORY_GEAR_OIL')}
                target="_blank"
                rel="sponsored noopener noreferrer"
              >
                <button>{t(language, 'shopNow')}</button>
              </a>
            </div>

            <div className="category-card">
              <div className="category-image">
                <Image
                  src="/images/categories/greases.webp"
                  alt={t(language, 'categories.greases')}
                  width={250}
                  height={200}
                  loading="lazy"
                />
              </div>
              <h3 className="item-title">{t(language, 'categories.greases')}</h3>
              <a
                href={getLink('CATEGORY_GREASE')}
                target="_blank"
                rel="sponsored noopener noreferrer"
              >
                <button>{t(language, 'shopNow')}</button>
              </a>
            </div>

            <div className="category-card">
              <div className="category-image">
                <Image
                  src="/images/categories/hydraulic-oils.webp"
                  alt={t(language, 'categories.hydraulicOils')}
                  width={250}
                  height={200}
                  loading="lazy"
                />
              </div>
              <h3 className="item-title">{t(language, 'categories.hydraulicOils')}</h3>
              <a
                href={getLink('CATEGORY_HYDRAULIC_OIL')}
                target="_blank"
                rel="sponsored noopener noreferrer"
              >
                <button>{t(language, 'shopNow')}</button>
              </a>
            </div>

            <div className="category-card">
              <div className="category-image">
                <Image
                  src="/images/categories/compressor-oils.webp"
                  alt={t(language, 'categories.compressorOils')}
                  width={250}
                  height={200}
                  loading="lazy"
                />
              </div>
              <h3 className="item-title">{t(language, 'categories.compressorOils')}</h3>
              <a
                href={getLink('CATEGORY_COMPRESSOR_OIL')}
                target="_blank"
                rel="sponsored noopener noreferrer"
              >
                <button>{t(language, 'shopNow')}</button>
              </a>
            </div>
          </div>
        </section>

        {/* ==================== CONTACT FORM SECTION ==================== */}
        <ContactSection
          dealerName={dealer.name}
          dealerNumber={dealerNumber}
          subdomain={dealer.subdomain}
          domainPrefix={dealer.domainPrefix}
          domain={dealer.domain}
          isEnabled={leadFormEnabled}
          turnstileSiteKey={turnstileSiteKey}
          language={language}
        />
      </main>

      {/* ==================== SECTION 9: FOOTER ==================== */}
      <footer>
        <div className="footer-content">
          {/* Column 1: Logo */}
          <div className="footer-column">
            <div className="footer-logo">
              <Image
                src="/images/logo/amsoil-logo.png"
                alt="AMSOIL"
                width={200}
                height={50}
                loading="lazy"
              />
            </div>
          </div>

          {/* Column 2: Products */}
          <div className="footer-column">
            <h3>{t(language, 'footer.products')}</h3>
            <ul>
              <li>
                <a
                  href={getLink('CATEGORY_MOTOR_OIL')}
                  target="_blank"
                  rel="sponsored noopener noreferrer"
                >
                  {t(language, 'footer.motorOil')}
                </a>
              </li>
              <li>
                <a
                  href={getLink('CATEGORY_HYDRAULIC_OIL')}
                  target="_blank"
                  rel="sponsored noopener noreferrer"
                >
                  {t(language, 'footer.hydraulicOil')}
                </a>
              </li>
              <li>
                <a
                  href={getLink('CATEGORY_COMPRESSOR_OIL')}
                  target="_blank"
                  rel="sponsored noopener noreferrer"
                >
                  {t(language, 'footer.compressorOil')}
                </a>
              </li>
              <li>
                <a
                  href={getLink('CATEGORY_TRANSMISSION_FLUID')}
                  target="_blank"
                  rel="sponsored noopener noreferrer"
                >
                  {t(language, 'footer.transmissionFluid')}
                </a>
              </li>
              <li>
                <a
                  href={getLink('CATEGORY_GEAR_OIL')}
                  target="_blank"
                  rel="sponsored noopener noreferrer"
                >
                  {t(language, 'footer.gearLube')}
                </a>
              </li>
              <li>
                <a
                  href={getLink('CATEGORY_FUEL_ADDITIVES')}
                  target="_blank"
                  rel="sponsored noopener noreferrer"
                >
                  {t(language, 'footer.fuelAdditives')}
                </a>
              </li>
              <li>
                <a
                  href={getLink('CATEGORY_GREASE')}
                  target="_blank"
                  rel="sponsored noopener noreferrer"
                >
                  {t(language, 'footer.greases')}
                </a>
              </li>
              <li>
                <a
                  href={getLink('CATEGORY_FILTERS')}
                  target="_blank"
                  rel="sponsored noopener noreferrer"
                >
                  {t(language, 'footer.filters')}
                </a>
              </li>
            </ul>
          </div>

          {/* Column 3: Vehicle */}
          <div className="footer-column">
            <h3>{t(language, 'footer.vehicle')}</h3>
            <ul>
              <li>
                <a
                  href={getLink('VEHICLE_CAR_TRUCK')}
                  target="_blank"
                  rel="sponsored noopener noreferrer"
                >
                  {t(language, 'footer.autoLightTruck')}
                </a>
              </li>
              <li>
                <a
                  href={getLink('VEHICLE_V_TWIN')}
                  target="_blank"
                  rel="sponsored noopener noreferrer"
                >
                  {t(language, 'footer.motorcycle')}
                </a>
              </li>
              <li>
                <a
                  href={getLink('VEHICLE_ATV_UTV')}
                  target="_blank"
                  rel="sponsored noopener noreferrer"
                >
                  {t(language, 'footer.atvUtv')}
                </a>
              </li>
              <li>
                <a
                  href={getLink('VEHICLE_MARINE')}
                  target="_blank"
                  rel="sponsored noopener noreferrer"
                >
                  {t(language, 'footer.marine')}
                </a>
              </li>
              <li>
                <a
                  href={getLink('VEHICLE_DIESEL')}
                  target="_blank"
                  rel="sponsored noopener noreferrer"
                >
                  {t(language, 'footer.diesel')}
                </a>
              </li>
              <li>
                <a
                  href={getLink('VEHICLE_SNOWMOBILE')}
                  target="_blank"
                  rel="sponsored noopener noreferrer"
                >
                  {t(language, 'footer.snowmobile')}
                </a>
              </li>
              <li>
                <a href={getLink('LOOKUP_PWC')} target="_blank" rel="sponsored noopener noreferrer">
                  {t(language, 'footer.pwc')}
                </a>
              </li>
              <li>
                <a
                  href={getLink('VEHICLE_POWER_EQUIPMENT')}
                  target="_blank"
                  rel="sponsored noopener noreferrer"
                >
                  {t(language, 'footer.smallEngine')}
                </a>
              </li>
              <li>
                <a
                  href={getLink('VEHICLE_HEAVY_DUTY')}
                  target="_blank"
                  rel="sponsored noopener noreferrer"
                >
                  {t(language, 'footer.heavyDuty')}
                </a>
              </li>
            </ul>
          </div>

          {/* Column 4: Contact - DYNAMIC */}
          <div className="footer-column">
            <h3>{t(language, 'footer.contact')}</h3>
            <div className="footer-dealer-info">
              <p>
                <strong>{dealer.name}</strong>
              </p>
              {dealer.showContactName && dealer.contactName && (
                <p className="footer-contact-name">{dealer.contactName}</p>
              )}
              <a
                href={`https://www.google.com/maps/search/?api=1&query=${encodeURIComponent(
                  dealer.hideAddress
                    ? `${dealer.address.city}, ${dealer.address.state} ${dealer.address.zip}`
                    : `${dealer.address.street ? dealer.address.street + ', ' : ''}${dealer.address.city}, ${dealer.address.state} ${dealer.address.zip}`
                )}`}
                target="_blank"
                rel="noopener noreferrer"
                className="footer-address-link"
              >
                {!dealer.hideAddress && dealer.address.street && <p>{dealer.address.street}</p>}
                <p>
                  {dealer.address.city}, {dealer.address.state} {dealer.address.zip}
                </p>
                {!dealer.hideAddress && dealer.address.country && <p>{dealer.address.country}</p>}
              </a>
              <p className="pt-8">
                <a href={`tel:${formatPhoneForTel(dealer.phone)}`}>
                  {formatPhoneForDisplay(dealer.phone)}
                </a>
              </p>
              <p>
                <a href={`mailto:${dealer.email}`}>{dealer.email}</a>
              </p>
              {/* Social Media Icons */}
              {dealer.socialLinks && Object.values(dealer.socialLinks).some((v) => v) && (
                <div className="footer-social-links">
                  {dealer.socialLinks?.facebook && (
                    <a
                      href={dealer.socialLinks.facebook}
                      target="_blank"
                      rel="noopener noreferrer"
                      aria-label="Facebook"
                      className="social-icon"
                    >
                      <svg viewBox="0 0 24 24" fill="currentColor" width="24" height="24">
                        <path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z" />
                      </svg>
                    </a>
                  )}
                  {dealer.socialLinks?.instagram && (
                    <a
                      href={dealer.socialLinks.instagram}
                      target="_blank"
                      rel="noopener noreferrer"
                      aria-label="Instagram"
                      className="social-icon"
                    >
                      <svg viewBox="0 0 24 24" fill="currentColor" width="24" height="24">
                        <path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zm0-2.163c-3.259 0-3.667.014-4.947.072-4.358.2-6.78 2.618-6.98 6.98-.059 1.281-.073 1.689-.073 4.948 0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98 1.281.058 1.689.072 4.948.072 3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98-1.281-.059-1.69-.073-4.949-.073zm0 5.838c-3.403 0-6.162 2.759-6.162 6.162s2.759 6.163 6.162 6.163 6.162-2.759 6.162-6.163c0-3.403-2.759-6.162-6.162-6.162zm0 10.162c-2.209 0-4-1.79-4-4 0-2.209 1.791-4 4-4s4 1.791 4 4c0 2.21-1.791 4-4 4zm6.406-11.845c-.796 0-1.441.645-1.441 1.44s.645 1.44 1.441 1.44c.795 0 1.439-.645 1.439-1.44s-.644-1.44-1.439-1.44z" />
                      </svg>
                    </a>
                  )}
                  {dealer.socialLinks?.youtube && (
                    <a
                      href={dealer.socialLinks.youtube}
                      target="_blank"
                      rel="noopener noreferrer"
                      aria-label="YouTube"
                      className="social-icon"
                    >
                      <svg viewBox="0 0 24 24" fill="currentColor" width="24" height="24">
                        <path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z" />
                      </svg>
                    </a>
                  )}
                  {dealer.socialLinks?.pinterest && (
                    <a
                      href={dealer.socialLinks.pinterest}
                      target="_blank"
                      rel="noopener noreferrer"
                      aria-label="Pinterest"
                      className="social-icon"
                    >
                      <svg viewBox="0 0 24 24" fill="currentColor" width="24" height="24">
                        <path d="M12 0C5.373 0 0 5.372 0 12c0 5.084 3.163 9.426 7.627 11.174-.105-.949-.2-2.405.042-3.441.218-.937 1.407-5.965 1.407-5.965s-.359-.719-.359-1.782c0-1.668.967-2.914 2.171-2.914 1.023 0 1.518.769 1.518 1.69 0 1.029-.655 2.568-.994 3.995-.283 1.194.599 2.169 1.777 2.169 2.133 0 3.772-2.249 3.772-5.495 0-2.873-2.064-4.882-5.012-4.882-3.414 0-5.418 2.561-5.418 5.207 0 1.031.397 2.138.893 2.738.098.119.112.224.083.345l-.333 1.36c-.053.22-.174.267-.402.161-1.499-.698-2.436-2.889-2.436-4.649 0-3.785 2.75-7.262 7.929-7.262 4.163 0 7.398 2.967 7.398 6.931 0 4.136-2.607 7.464-6.227 7.464-1.216 0-2.359-.632-2.75-1.378l-.748 2.853c-.271 1.043-1.002 2.35-1.492 3.146C9.57 23.812 10.763 24 12 24c6.627 0 12-5.373 12-12 0-6.628-5.373-12-12-12z" />
                      </svg>
                    </a>
                  )}
                  {dealer.socialLinks?.linkedin && (
                    <a
                      href={dealer.socialLinks.linkedin}
                      target="_blank"
                      rel="noopener noreferrer"
                      aria-label="LinkedIn"
                      className="social-icon"
                    >
                      <svg viewBox="0 0 24 24" fill="currentColor" width="24" height="24">
                        <path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z" />
                      </svg>
                    </a>
                  )}
                  {/* X - prefer x field, fallback to legacy twitter */}
                  {(dealer.socialLinks?.x || dealer.socialLinks?.twitter) && (
                    <a
                      href={dealer.socialLinks?.x || dealer.socialLinks?.twitter}
                      target="_blank"
                      rel="noopener noreferrer"
                      aria-label="X"
                      className="social-icon"
                    >
                      <svg viewBox="0 0 24 24" fill="currentColor" width="24" height="24">
                        <path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z" />
                      </svg>
                    </a>
                  )}
                </div>
              )}
            </div>
          </div>
        </div>

        {/* Footer Bottom */}
        <div className="footer-bottom">
          <p>© AMSOIL INC. {new Date().getFullYear()}</p>
        </div>
      </footer>

      {/* ==================== EXTERNAL ASSETS NOTES ==================== */}
      {/*
        TODO: External dependencies to add during styling phase:
        - Swiper.js library for hero carousel
        - Product images from AMSOIL asset library
        - Dealer photos (uploaded by dealer or placeholder)
        - Category/vehicle icons
        - Apply final design system styles from Figma
      */}
    </div>
  );
}
