// =============================================
// Flacenter v3 — Components (header, hero, cards)
// =============================================

const { useState, useEffect, useRef, useMemo } = React;

const Icon = {
  Phone: (p) => <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" {...p}><path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z"/></svg>,
  Wa: (p) => <svg width="14" height="14" viewBox="0 0 24 24" fill="currentColor" {...p}><path d="M12.05 2C6.55 2 2.1 6.45 2.1 11.95c0 1.93.55 3.82 1.6 5.46L2 22l4.7-1.6a9.94 9.94 0 0 0 5.35 1.55c5.5 0 9.95-4.45 9.95-9.95C22 6.45 17.55 2 12.05 2zm4.69 13.93c-.26.6-1.24 1.15-1.73 1.22-.44.07-.99.09-1.6-.1-.37-.12-.84-.28-1.45-.54-2.55-1.1-4.21-3.66-4.34-3.83-.13-.16-1.04-1.37-1.04-2.62 0-1.25.66-1.86.89-2.12.23-.26.51-.32.68-.32h.49c.15 0 .36-.07.57.43.21.51.72 1.76.78 1.89.06.13.11.28.02.45-.09.17-.13.28-.26.43-.14.15-.29.34-.4.45-.13.13-.26.27-.11.53.15.26.66 1.1 1.43 1.79.98.88 1.81 1.15 2.07 1.28.25.13.4.11.55-.06.15-.16.64-.73.81-.99.17-.26.34-.22.57-.13.23.08 1.49.7 1.75.83.26.13.43.19.49.3.06.11.06.62-.15 1.22z"/></svg>,
  Check: (p) => <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2.5" strokeLinecap="round" strokeLinejoin="round" {...p}><polyline points="20 6 9 17 4 12"/></svg>,
  Plus: (p) => <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" {...p}><line x1="12" y1="5" x2="12" y2="19"/><line x1="5" y1="12" x2="19" y2="12"/></svg>,
  Star: (p) => <svg width="14" height="14" viewBox="0 0 24 24" fill="currentColor" {...p}><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"/></svg>,
  Arrow: (p) => <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" {...p}><line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/></svg>,
  Close: (p) => <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" {...p}><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg>,
  Pin: (p) => <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" {...p}><path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z"/><circle cx="12" cy="10" r="3"/></svg>,
  Clock: (p) => <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" {...p}><circle cx="12" cy="12" r="10"/><polyline points="12 6 12 12 16 14"/></svg>,
  Mail: (p) => <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" {...p}><path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z"/><polyline points="22 6 12 13 2 6"/></svg>,
  Message: (p) => <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" {...p}><path d="M21 15a4 4 0 0 1-4 4H8l-5 3V7a4 4 0 0 1 4-4h10a4 4 0 0 1 4 4z"/><line x1="8" y1="9" x2="16" y2="9"/><line x1="8" y1="13" x2="14" y2="13"/></svg>,
  Shield: (p) => <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" {...p}><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/><polyline points="9 12 11 14 15 10"/></svg>,
  Heart: (p) => <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" {...p}><path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/></svg>,
  Globe: (p) => <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" {...p}><circle cx="12" cy="12" r="10"/><line x1="2" y1="12" x2="22" y2="12"/><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/></svg>,
  Sedan: (p) => <svg width="32" height="20" viewBox="0 0 64 40" fill="none" stroke="currentColor" strokeWidth="2" strokeLinejoin="round" {...p}><path d="M4 28h56l-4-10c-1-2-3-4-6-4H22c-3 0-6 1-9 3l-9 5v6z" fill="currentColor" fillOpacity="0.1"/><circle cx="16" cy="30" r="5" fill="white"/><circle cx="48" cy="30" r="5" fill="white"/></svg>,
  Ig: (p) => <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.8" {...p}><rect x="2" y="2" width="20" height="20" rx="5"/><circle cx="12" cy="12" r="4"/><line x1="17.5" y1="6.5" x2="17.5" y2="6.5" strokeWidth="2.5"/></svg>,
  Fb: (p) => <svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor" {...p}><path d="M22 12a10 10 0 1 0-11.56 9.88v-6.99H7.9V12h2.54V9.8c0-2.5 1.49-3.89 3.78-3.89 1.09 0 2.24.2 2.24.2v2.46H15.2c-1.24 0-1.63.77-1.63 1.56V12h2.77l-.44 2.89h-2.33v6.99A10 10 0 0 0 22 12z"/></svg>
};

const fmt = (n) => n.toLocaleString('en-US');
const STORE_SMS_NUMBER = '+18575754670';
const smsHref = (body = 'Hello! I saw a vehicle on your website and would like more details.') => {
  const message = (body || '').trim();
  if (!message) return `sms:${STORE_SMS_NUMBER}`;
  const ua = (typeof navigator !== 'undefined' && navigator.userAgent) ? navigator.userAgent : '';
  const separator = /iPad|iPhone|iPod/i.test(ua) ? '&' : '?';
  return `sms:${STORE_SMS_NUMBER}${separator}body=${encodeURIComponent(message)}`;
};
const vehicleSmsMessage = (car = {}) => {
  const vehicle = [car.year, car.make, car.model, car.trim || car.version].filter(Boolean).join(' ') || car.fullName || car.name || 'vehicle';
  const stockPart = car.stock ? ` (Stock ${car.stock})` : '';
  return `Hello! I'm interested in the ${vehicle}${stockPart} listed on your website. Could you help me?`;
};

// ---------- Top CTA Strip ----------
function CtaStrip({ t }) {
  return (
    <div className="cta-strip">
      <div className="wrap">
        <div className="left">
          <span className="item always"><span className="dot"></span> {t.hero.open}</span>
          <span className="item">★ 4.8 · 600+ Google reviews</span>
          <span className="item">{t.hero.delivery}</span>
        </div>
        <div className="right">
          <a href="tel:4078024670"><Icon.Phone /> (407) 802 4670</a>
          <a href={smsHref()}><Icon.Message /> SMS</a>
          <a href="https://w.app/flawebsite" target="_blank"><Icon.Wa /> WhatsApp</a>
        </div>
      </div>
    </div>
  );
}

// ---------- Header ----------
function Header({ lang, setLang, t, openApply }) {
  const blogHref = `/${lang}/blog`;
  const staticLangQuery = `?lang=${lang}`;
  const isHomePage = window.location.pathname === '/' || window.location.pathname === '/index.html';
  const homeHref = (id) => isHomePage ? `#${id}` : `/#${id}`;
  return (
    <header className="site-header">
      <div className="wrap">
        <a href={isHomePage ? '#top' : '/'} className="brand">
          <img src="https://flacenter.com/wp-content/uploads/2025/09/Logo-Florida-Azul-Transparente.png" alt="Florida Auto Center" className="brand-logo" />
        </a>
        <nav className="nav">
          <a href="/inventory/">{t.nav.inventory}</a>
          <a href={homeHref('financing')}>{t.nav.financing}</a>
          <a href={`/rental/${staticLangQuery}`}>{t.nav.rental || 'Rental'}</a>
          <a href={`/consignment/${staticLangQuery}`}>{t.nav.consignment || 'Consign'}</a>
          <a href={`/investors/${staticLangQuery}`}>{t.nav.investors || 'Investors'}</a>
          <a href={homeHref('why')}>{t.nav.about}</a>
          <a href={homeHref('testimonials')}>{t.nav.testimonials}</a>
          <a href={blogHref}>{t.nav.blog || 'Blog'}</a>
          <a href={homeHref('visit')}>{t.nav.visit}</a>
        </nav>
        <div className="header-right">
          <div className="lang-toggle">
            {['en','es','pt'].map(L => (
              <button key={L} className={lang===L?'active':''} onClick={()=>setLang(L)}>{L}</button>
            ))}
          </div>
          <button className="btn btn-primary btn-sm" onClick={openApply}>
            {t.finance.cta}
          </button>
        </div>
      </div>
    </header>
  );
}

// ---------- Hero ----------
function Hero({ t, makes, scrollToInv, setFilter, openApply, scrollToLead }) {
  const [tab, setTab] = useState('lead');
  const [make, setMake] = useState('');
  const [body, setBody] = useState('');
  const [maxP, setMaxP] = useState('');
  const [lead, setLead] = useState({ name: '', phone: '', email: '', preferred: 'SMS' });
  const [leadSending, setLeadSending] = useState(false);
  const [leadSent, setLeadSent] = useState(false);
  const [leadError, setLeadError] = useState('');

  const submit = () => {
    window.FlacenterTracking?.track?.('search', { form_id: 'hero_vehicle_search', search_make: make, search_body: body, max_price: maxP ? Number(maxP) : 50000 });
    setFilter({ make, body, maxPrice: maxP ? Number(maxP) : 50000 });
    scrollToInv();
  };

  const setLeadField = (key, value) => {
    setLead(prev => ({ ...prev, [key]: value }));
    if (leadError) setLeadError('');
  };
  const contactOptions = t.contactOptions || { sms: 'SMS', email: 'Email', whatsapp: 'WhatsApp', phone: 'Phone call' };
  const quickLeadCta = {
    SMS: t.hero.leadCtaSms || 'Text me the best options',
    Email: t.hero.leadCtaEmail || 'Email me the options',
    WhatsApp: t.hero.leadCtaWhatsapp || t.hero.leadCta || 'Send options on WhatsApp',
    'Phone call': t.hero.leadCtaPhone || 'Call me about options'
  };
  const QuickLeadIcon = lead.preferred === 'Email' ? Icon.Mail : (lead.preferred === 'WhatsApp' ? Icon.Wa : Icon.Phone);

  const submitLead = async () => {
    if (leadSending || leadSent) return;
    if (!lead.name || (lead.preferred === 'Email' ? !lead.email : !lead.phone)) {
      setLeadError(lead.preferred === 'Email'
        ? (t.leadForm.emailRequired || 'Please add your name and email.')
        : (t.leadForm.errorRequired || 'Please add your name and phone.'));
      return;
    }

    setLeadSending(true);
    setLeadError('');

    try {
      if (!window.FlacenterApi?.submitLead) throw new Error('Lead API client unavailable');
      await window.FlacenterApi.submitLead({
        ...lead,
        preferred: lead.preferred || 'SMS',
        time: 'ASAP',
        msg: 'Hero quick lead',
        lang: document.documentElement.lang,
        source: 'website-v3-hero',
        formId: 'hero_quick_lead',
        conversionEvent: 'generate_lead'
      });
      setLeadSent(true);
    } catch (err) {
      setLeadError(err.message || t.leadForm.error || 'Could not send your request. Please call or WhatsApp us.');
    } finally {
      setLeadSending(false);
    }
  };

  return (
    <section className="hero" id="top">
      <div className="wrap">
        <div className="hero-grid">
          <div className="hero-left">
            <div className="badges">
              <span className="badge"><Icon.Star /> 4.8 Google</span>
              <span className="badge"><Icon.Shield style={{width:14, height:14}} /> 170 point inspection</span>
              <span className="badge"><Icon.Globe style={{width:14, height:14}} /> EN · ES · PT</span>
            </div>
            <h1 className="hero-title-lines">
              <span>{t.hero.title1}</span>
              <span>{t.hero.title2}</span>
              {t.hero.title3 ? <span className="accent">{t.hero.title3}</span> : null}
            </h1>
            <p className="hero-sub">{t.hero.sub}</p>
            <div className="hero-bullets">
              <div className="item"><span className="check"><Icon.Check style={{width:12, height:12}} /></span>{t.heroBullets[0]}</div>
              <div className="item"><span className="check"><Icon.Check style={{width:12, height:12}} /></span>{t.heroBullets[1]}</div>
              <div className="item"><span className="check"><Icon.Check style={{width:12, height:12}} /></span>{t.heroBullets[2]}</div>
            </div>
            <div className="hero-cta-row">
              <button className="btn btn-primary btn-lg" style={{background:'#fdd835', color:'var(--blue-dark)'}} onClick={openApply}>
                {t.finance.cta} <Icon.Arrow />
              </button>
              <a className="btn btn-white btn-lg" href={smsHref('Hi Florida Auto Center, I would like to start my pre approval.')}>
                <Icon.Message /> SMS
              </a>
              <a className="btn btn-green btn-lg" href="https://w.app/flawebsite" target="_blank">
                <Icon.Wa /> WhatsApp
              </a>
            </div>
          </div>
          <div className="search-card">
            <div className="head">
              <h3>{t.hero.searchTitle}</h3>
              <div className="sub">{t.hero.searchSub}</div>
            </div>
            <div className="tabs">
              <button className={tab==='search'?'active':''} onClick={()=>setTab('search')}>{t.hero.tabSearch}</button>
              <button className={tab==='lead'?'active':''} onClick={()=>setTab('lead')}>{t.hero.tabLead}</button>
            </div>
            {tab === 'search' ? (
              <div className="fields">
                <div>
                  <label className="lbl">{t.hero.make}</label>
                  <select className="select" value={make} onChange={e=>setMake(e.target.value)}>
                    <option value="">{t.hero.any}</option>
                    {makes.map(m=><option key={m} value={m}>{m}</option>)}
                  </select>
                </div>
                <div className="row-2">
                  <div>
                    <label className="lbl">{t.hero.model}</label>
                    <select className="select" value={body} onChange={e=>setBody(e.target.value)}>
                      <option value="">{t.hero.any}</option>
                      <option value="sedan">{t.inv.sedan}</option>
                      <option value="suv">{t.inv.suv}</option>
                      <option value="truck">{t.inv.truck}</option>
                      <option value="coupe">{t.inv.coupe}</option>
                      <option value="van">{t.inv.van}</option>
                    </select>
                  </div>
                  <div>
                    <label className="lbl">{t.hero.price}</label>
                    <select className="select" value={maxP} onChange={e=>setMaxP(e.target.value)}>
                      <option value="">{t.hero.any}</option>
                      <option value="10000">Up to $10K</option>
                      <option value="15000">Up to $15K</option>
                      <option value="20000">Up to $20K</option>
                      <option value="30000">Up to $30K</option>
                    </select>
                  </div>
                </div>
                <button className="btn btn-primary btn-block btn-lg" onClick={submit} style={{marginTop:4}}>
                  {t.hero.search} <Icon.Arrow />
                </button>
              </div>
            ) : (
              <div className="fields">
                <div>
                  <label className="lbl">{t.apply.fields.fullName}</label>
                  <input className="input" value={lead.name} onChange={e=>setLeadField('name', e.target.value)} placeholder="Emily Johnson" />
                </div>
                <div>
                  <label className="lbl">{t.apply.fields.phone}{lead.preferred === 'Email' ? '' : ' *'}</label>
                  <input className="input" value={lead.phone} onChange={e=>setLeadField('phone', e.target.value)} placeholder="(407) 555 1234" />
                </div>
                {lead.preferred === 'Email' && (
                  <div>
                    <label className="lbl">{t.apply.fields.email} *</label>
                    <input className="input" type="email" value={lead.email} onChange={e=>setLeadField('email', e.target.value)} placeholder="you@email.com" />
                  </div>
                )}
                <div>
                  <label className="lbl">{t.leadForm.preferred}</label>
                  <select className="select" value={lead.preferred} onChange={e=>setLeadField('preferred', e.target.value)}>
                    <option value="SMS">{contactOptions.sms}</option>
                    <option value="Email">{contactOptions.email}</option>
                    <option value="WhatsApp">{contactOptions.whatsapp}</option>
                    <option value="Phone call">{contactOptions.phone}</option>
                  </select>
                </div>
                {leadError && <div className="form-error">{leadError}</div>}
                {leadSent ? (
                  <div className="form-success"><Icon.Check /> {t.leadForm.sentTitle}</div>
                ) : (
                  <button className="btn btn-green btn-block btn-lg" onClick={submitLead} disabled={leadSending}>
                    <QuickLeadIcon /> {leadSending ? (t.leadForm.sending || 'Sending...') : (quickLeadCta[lead.preferred] || quickLeadCta.SMS)}
                  </button>
                )}
              </div>
            )}
            <div className="trust-line">
              <Icon.Check /> {t.hero.privacyShort}
            </div>
          </div>
        </div>
      </div>
      <div className="hero-trust-strip">
        <div className="wrap">
          <div className="tstat">
            <div className="num">3,000+</div>
            <div className="lbl">{t.hero.statFamilies}</div>
          </div>
          <div className="tstat">
            <div className="num">12</div>
            <div className="lbl">{t.hero.statYears}</div>
          </div>
          <div className="tstat">
            <div className="num">170</div>
            <div className="lbl">{t.hero.statInspection}</div>
          </div>
          <div className="tstat">
            <div className="num">4.8 / 5</div>
            <div className="lbl">{t.hero.statRating}</div>
            <div className="stars">
              {[...Array(5)].map((_, i) => <Icon.Star key={i} />)}
            </div>
          </div>
        </div>
      </div>
    </section>
  );
}

// ---------- Lead Banner (between sections) ----------
function LeadBanner({ t, openApply }) {
  return (
    <div className="lead-banner">
      <div className="wrap">
        <div className="l">
          <div className="icon-circle"><Icon.Wa style={{width:24, height:24}} /></div>
          <div>
            <h3>{t.leadBanner.title}</h3>
            <p>{t.leadBanner.sub}</p>
          </div>
        </div>
        <div className="r">
          <a className="btn btn-white" href={smsHref('Hi Florida Auto Center, I would like to start my pre approval.')}>
            <Icon.Message /> {t.leadBanner.sms || 'Text us'}
          </a>
          <a className="btn btn-green" href="https://w.app/flawebsite" target="_blank">
            <Icon.Wa /> {t.leadBanner.wa}
          </a>
          <button className="btn btn-outline-white" onClick={openApply}>
            {t.leadBanner.apply}
          </button>
        </div>
      </div>
    </div>
  );
}

// ---------- Category Tiles ----------
function CategoryTiles({ t, inventory, setFilter, scrollToInv }) {
  const cats = [
    { key: '', name: t.inv.all, img: '/assets/categories/all.webp' },
    { key: 'sedan', name: t.inv.sedan, img: '/assets/categories/sedan.webp' },
    { key: 'suv', name: t.inv.suv, img: '/assets/categories/suv.webp' },
    { key: 'truck', name: t.inv.truck, img: '/assets/categories/truck.webp' },
    { key: 'van', name: t.inv.van, img: '/assets/categories/minivan.webp' }
  ];
  const counts = useMemo(() => {
    const c = {};
    inventory.forEach(it => { c[it.body] = (c[it.body] || 0) + 1; });
    c[''] = inventory.length;
    return c;
  }, [inventory]);

  return (
    <div className="cat-grid">
      {cats.map(c => (
        <div key={c.key || 'all'} className="cat" onClick={() => { window.FlacenterTracking?.track?.('inventory_filter', { search_body: c.key || 'all', form_id: 'category_tiles' }); setFilter(f => ({ ...f, body: c.key })); scrollToInv(); }}>
          <div className="cat-img">
            <img src={c.img} alt={c.name} width="900" height="563" loading="lazy" onError={(e)=>{e.currentTarget.style.display='none'; e.currentTarget.parentElement.classList.add('fallback-img');}} />
          </div>
          <div className="cat-info">
            <div className="name">{c.name}</div>
            <div className="count">{counts[c.key] || 0} {t.inv.available} <Icon.Arrow /></div>
          </div>
        </div>
      ))}
    </div>
  );
}

// ---------- Car Card ----------
function CarCard({ car, t, onOpen, onCompare, isCompared, openApply }) {
  const trackCarAction = (eventName, extra = {}) => window.FlacenterTracking?.track?.(eventName, {
    item_id: car.slug || car.id,
    vehicle_id: car.vehicleId,
    item_name: car.fullName,
    item_brand: car.make,
    item_category: car.body,
    price: car.cashPrice || car.price,
    currency: 'USD',
    ...extra
  });
  return (
    <article className="car" onClick={() => { trackCarAction('select_item'); onOpen(car); }}>
      <div className="car-photo">
        <button className={'car-cmp-btn' + (isCompared ? ' on' : '')} onClick={(e) => { e.stopPropagation(); onCompare(car); }} title={t.inv.compare}>
          {isCompared ? <Icon.Check style={{width:14, height:14}} /> : <Icon.Plus />}
        </button>
        <div className="tags">
          {car.new && <span className="tag-pill new">{t.inv.newTag}</span>}
          {car.featured && !car.new && <span className="tag-pill featured">{t.inv.featuredTag}</span>}
        </div>
        <img alt={car.fullName} src={car.photos[0]} loading="lazy"
          onError={(e) => { e.currentTarget.style.display='none'; e.currentTarget.parentElement.classList.add('fallback-img'); }} />
      </div>
      <div className="car-body">
        <div className="car-name-row">
          <div className="car-name">{car.fullName}</div>
          {car.carfaxUrl && (
            <a className="car-carfax" href={car.carfaxUrl} target="_blank" rel="noopener noreferrer" onClick={(e)=>{e.stopPropagation(); trackCarAction('carfax_click');}}>
              <Icon.Shield style={{width:12, height:12}} /> CARFAX
            </a>
          )}
        </div>
        <div className="car-specs">
          <span className="s">{car.year}</span>
          <span className="s">·</span>
          <span className="s">{fmt(car.miles)} mi</span>
          <span className="s">·</span>
          <span className="s">{car.trans}</span>
        </div>
        <div className="car-foot">
          <div className="car-prices">
            <div className="cash">
              <div className="lbl">{t.inv.cash}</div>
              <div className="v">${fmt(car.cashPrice || car.price)}</div>
            </div>
            <div className="finance">
              <div className="lbl">{t.inv.finance}</div>
              <div className="v">${fmt(car.financePrice || Math.round(car.price * 1.13))}</div>
              <div className="mo">${fmt(Math.round((car.financePrice || car.price * 1.13) / 60 * 1.05))}{t.inv.perMonth}</div>
            </div>
          </div>
        </div>
        <div className="car-disclaimer">{t.inv.taxFee}</div>
        <div className="car-cta-row">
          <button className="btn btn-primary btn-sm" onClick={(e) => { e.stopPropagation(); openApply(car); }}>
            {t.inv.iWantIt}
          </button>
          <a className="btn btn-sms btn-sm" href={smsHref(vehicleSmsMessage(car))} onClick={(e)=>e.stopPropagation()}>
            <Icon.Message /> SMS
          </a>
          <a className="btn btn-green btn-sm" href="https://w.app/flawebsite" target="_blank" onClick={(e)=>e.stopPropagation()}>
            <Icon.Wa /> WhatsApp
          </a>
        </div>
      </div>
    </article>
  );
}

Object.assign(window, { Icon, fmt, CtaStrip, Header, Hero, LeadBanner, CategoryTiles, CarCard });
