{"id":504,"date":"2025-01-27T16:32:52","date_gmt":"2025-01-27T13:32:52","guid":{"rendered":"https:\/\/car2go.rent\/lb\/?page_id=504"},"modified":"2025-10-03T15:32:48","modified_gmt":"2025-10-03T12:32:48","slug":"lebanon-fleet","status":"publish","type":"page","link":"https:\/\/car2go.rent\/lb\/lebanon-fleet\/","title":{"rendered":"Lebanon Fleet"},"content":{"rendered":"<style>.kb-row-layout-id504_b9297e-a7 > .kt-row-column-wrap{align-content:start;}:where(.kb-row-layout-id504_b9297e-a7 > .kt-row-column-wrap) > .wp-block-kadence-column{justify-content:start;}.kb-row-layout-id504_b9297e-a7 > .kt-row-column-wrap{column-gap:var(--global-kb-gap-md, 2rem);row-gap:var(--global-kb-gap-none, 0rem );padding-top:0px;padding-bottom:var(--global-kb-spacing-xl, 4rem);grid-template-columns:minmax(0, 1fr);}.kb-row-layout-id504_b9297e-a7 > .kt-row-layout-overlay{opacity:0.30;}@media all and (max-width: 1024px){.kb-row-layout-id504_b9297e-a7 > .kt-row-column-wrap{grid-template-columns:minmax(0, 1fr);}}@media all and (max-width: 767px){.kb-row-layout-id504_b9297e-a7 > .kt-row-column-wrap{grid-template-columns:minmax(0, 1fr);}}<\/style><div class=\"kb-row-layout-wrap kb-row-layout-id504_b9297e-a7 alignnone wp-block-kadence-rowlayout\"><div class=\"kt-row-column-wrap kt-has-1-columns kt-row-layout-equal kt-tab-layout-inherit kt-mobile-layout-row kt-row-valign-top\">\n<style>.kadence-column504_a3baa4-93 > .kt-inside-inner-col,.kadence-column504_a3baa4-93 > .kt-inside-inner-col:before{border-top-left-radius:0px;border-top-right-radius:0px;border-bottom-right-radius:0px;border-bottom-left-radius:0px;}.kadence-column504_a3baa4-93 > .kt-inside-inner-col{column-gap:var(--global-kb-gap-sm, 1rem);}.kadence-column504_a3baa4-93 > .kt-inside-inner-col{flex-direction:column;}.kadence-column504_a3baa4-93 > .kt-inside-inner-col > .aligncenter{width:100%;}.kadence-column504_a3baa4-93 > .kt-inside-inner-col:before{opacity:0.3;}.kadence-column504_a3baa4-93{position:relative;}@media all and (max-width: 1024px){.kadence-column504_a3baa4-93 > .kt-inside-inner-col{flex-direction:column;justify-content:center;}}@media all and (max-width: 767px){.kadence-column504_a3baa4-93 > .kt-inside-inner-col{flex-direction:column;justify-content:center;}}<\/style>\n<div class=\"wp-block-kadence-column kadence-column504_a3baa4-93\"><div class=\"kt-inside-inner-col\">\r\n<!-- ===========================\r\n     CONFIG \u2014 edit per location\r\n     =========================== -->\r\n<script>\r\n  \/\/ Example (UAE)\r\n  const CSV_URL         = 'https:\/\/car2go.rent\/ext\/vehicles.php?export=csv&location=1&season=9';\r\n  const TERMS_URL       = 'https:\/\/car2go.rent\/terms\/';\r\n  const PAGE_TITLE      = 'Pick Your Ride For Lebanon Roads';\r\n  const PAGE_SUBTITLE   = 'Find and book the best-value car rentals in Lebanon with daily, weekly, and monthly pricing.';\r\n  const CURRENCY        = 'USD'; \/\/ 'AED' or 'USD'\r\n\r\n  \/\/ LAYOUT: 'full' shows all; 'mini' shows 6 + \"Show all vehicles\" button\r\n  const LAYOUT_MODE     = 'full'; \/\/ change to 'full' when needed\r\n\r\n  \/\/ Mileage caps (Long Distance boxes)\r\n  const LD_KM_DAY       = 200;\r\n  const LD_KM_WEEK      = 1400;\r\n  const LD_KM_MONTH     = 6000;\r\n\r\n  \/\/ Included mileage (highlighted box)\r\n  const STD_MILEAGE     = '150 km\/day \u2022 1050 km\/week \u2022 4500 km\/month';\r\n\r\n  \/\/ Short note under Long Distance prices\r\n  const LD_OVERAGE_NOTE = 'Additional per-km fee applies for excess mileage.';\r\n<\/script>\r\n\r\n<section id=\"c2g-fleet\" aria-label=\"Car2Go Fleet\">\r\n  <style>\r\n    #c2g-fleet{\r\n      --ink:#0e1a2b; --text:#0f172a; --muted:#6b7280; --edge:#e5e7eb; --bg:#ffffff;\r\n      --brand:#6d28d9; --brand-2:#8b5cf6; --chip:#f3f4f6; --chip-t:#4b5563;\r\n      --shadow:0 4px 18px rgba(0,0,0,.06);\r\n    }\r\n    #c2g-fleet *{box-sizing:border-box}\r\n    #c2g-fleet .wrap{margin:0 auto;padding:0}\r\n\r\n    \/* Header *\/\r\n    #c2g-fleet header{margin:48px 0 28px;padding:0 16px}\r\n    #c2g-fleet h2{margin:0 0 8px;font-size:clamp(28px,3.8vw,32px);line-height:1.2;color:var(--ink);font-weight:800}\r\n    #c2g-fleet .sub{color:var(--muted);margin:0;max-width:70ch}\r\n\r\n    \/* Controls (light grey box, sticky) *\/\r\n    #c2g-fleet .bar{\r\n      position:sticky; top:0; z-index:20;\r\n      display:flex;gap:10px;align-items:center;margin:14px 0 24px;padding:20px 16px;\r\n      background:#f3f4f6;border:1px solid var(--edge);border-radius:12px;\r\n      flex-wrap:wrap;overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none;\r\n      transition:box-shadow .18s ease;\r\n    }\r\n    #c2g-fleet .bar::-webkit-scrollbar{display:none}\r\n    #c2g-fleet .bar.is-sticky{ box-shadow:0 6px 14px rgba(0,0,0,.06) }\r\n\r\n    #c2g-fleet .input,#c2g-fleet .select{\r\n      height:40px;border:1px solid var(--edge);border-radius:10px;padding:0 12px;font:inherit;background:#fff;color:var(--text)\r\n    }\r\n    #c2g-fleet .input{min-width:220px}\r\n    @media (min-width:561px){\r\n      #c2g-fleet #c2g-q{width:clamp(220px,28vw,300px)}\r\n    }\r\n    #c2g-fleet .spacer{flex:1}\r\n    @media (max-width:560px){\r\n      #c2g-fleet .bar{display:grid;grid-template-columns:1fr;gap:10px}\r\n      #c2g-fleet .bar > *{width:100%}\r\n      #c2g-fleet .spacer{display:none}\r\n    }\r\n\r\n    \/* Grid *\/\r\n    #c2g-fleet .grid{display:grid;gap:26px;}\r\n    @media (min-width:560px){#c2g-fleet .grid{grid-template-columns:repeat(2,1fr)}}\r\n    @media (min-width:960px){#c2g-fleet .grid{grid-template-columns:repeat(3,1fr)}}\r\n\r\n    \/* Card *\/\r\n    #c2g-fleet .card{\r\n      border:1px solid var(--edge);border-radius:14px;background:#fff;overflow:hidden;\r\n      display:flex;flex-direction:column;transition:box-shadow .15s ease, transform .15s ease\r\n    }\r\n    #c2g-fleet .card:hover{box-shadow:var(--shadow);transform:translateY(-1px)}\r\n\r\n    \/* Media \u2014 white bg, 90% link width *\/\r\n    #c2g-fleet .media{aspect-ratio:2.85;background:#fff;display:grid;place-items:center}\r\n    #c2g-fleet .media a{display:block;width:90%;height:100%}\r\n    #c2g-fleet .media img{width:100%;height:100%;object-fit:cover}\r\n    #c2g-fleet .placeholder{font-size:12px;color:var(--muted);padding:6px}\r\n\r\n    \/* Text *\/\r\n    #c2g-fleet .body{padding:18px;display:grid;gap:12px}\r\n    #c2g-fleet .title{margin:0;color:var(--ink);font-weight:800;font-size:17px;line-height:1.25;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}\r\n    #c2g-fleet .subrow{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:-10px}\r\n    #c2g-fleet .alt{margin:0;color:var(--muted);font-size:12px}\r\n\r\n    \/* Price boxes (always 3 columns) *\/\r\n    #c2g-fleet .prices{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}\r\n    #c2g-fleet .prices .p{background:linear-gradient(180deg,#faf5ff,#fff)}\r\n    #c2g-fleet .p{\r\n      text-align:center;border:1px solid rgba(109,40,217,.15);border-radius:10px;padding:8px 6px\r\n    }\r\n    #c2g-fleet .p .amt{font-weight:800;line-height:1;white-space:nowrap;font-size:16px;color:var(--brand)}\r\n    #c2g-fleet .p .amt .cur{font-size:.86em;margin-right:2px;opacity:.95;display:inline}\r\n    #c2g-fleet .p .amt .num{display:inline}\r\n    #c2g-fleet .p .lbl{display:block;margin-top:4px;font-size:11px;color:var(--muted);font-weight:600;white-space:nowrap}\r\n    #c2g-fleet .p .cap{display:block;margin-top:2px;font-size:10px;color:#9ca3af;white-space:nowrap}\r\n\r\n    \/* Mid-range compression + split currency\/number to two rows *\/\r\n    @media (min-width:960px) and (max-width:1200px){\r\n      #c2g-fleet .p{padding:6px 4px}\r\n      #c2g-fleet .p .amt{font-size:14px;white-space:normal;display:flex;flex-direction:column;align-items:center;gap:2px}\r\n      #c2g-fleet .p .amt .cur{font-size:.82em;margin-right:0;display:block}\r\n      #c2g-fleet .p .amt .num{display:block}\r\n      #c2g-fleet .p .lbl{font-size:9px}\r\n      #c2g-fleet .p .cap{font-size:9.5px}\r\n    }\r\n    @media (min-width:560px) and (max-width:800px){\r\n      #c2g-fleet .p{padding:6px 4px}\r\n      #c2g-fleet .p .amt{font-size:14px;white-space:normal;display:flex;flex-direction:column;align-items:center;gap:2px}\r\n      #c2g-fleet .p .amt .cur{font-size:.82em;margin-right:0;display:block}\r\n      #c2g-fleet .p .amt .num{display:block}\r\n      #c2g-fleet .p .lbl{font-size:8px}\r\n      #c2g-fleet .p .cap{font-size:8.5px}\r\n    }\r\n\r\n    \/* Coverage & Mileage *\/\r\n    #c2g-fleet details.fold{border:1px solid var(--edge);border-radius:10px;overflow:hidden}\r\n    #c2g-fleet details.fold summary{\r\n      list-style:none;padding:10px 12px;cursor:pointer;font-weight:700;color:var(--ink);\r\n      display:flex;align-items:center;gap:8px;font-size:14px\r\n    }\r\n    #c2g-fleet details.fold summary::-webkit-details-marker{display:none}\r\n    #c2g-fleet details.fold[open] summary svg{transform:rotate(90deg);transition:transform .2s ease}\r\n    #c2g-fleet details.fold summary svg{transition:transform .2s ease}\r\n\r\n    #c2g-fleet .fold .inner{\r\n      padding:12px;background:linear-gradient(180deg,#faf5ff,#fff);\r\n      border-top:1px solid rgba(109,40,217,.15);display:grid;gap:20px\r\n    }\r\n    #c2g-fleet .divider{height:1px;background:rgba(109,40,217,.18)}\r\n\r\n    \/* Full-width content under title line *\/\r\n    #c2g-fleet .line{display:grid;grid-template-columns:24px 1fr;gap:10px;align-items:start}\r\n    #c2g-fleet .line > .full{grid-column:1 \/ -1}\r\n    #c2g-fleet .included{\r\n      border:1px solid rgba(109,40,217,.18);background-color:#fff;border-radius:10px;\r\n      padding:10px 12px;margin:10px 0 5px 0;font-size:12px;color:#111827\r\n    }\r\n    #c2g-fleet .included a{color:#4f46e5;text-decoration:underline;text-underline-offset:2px}\r\n\r\n    #c2g-fleet .prices.ntrl .p{background:none;background-color:#fff}\r\n    #c2g-fleet .prices.ntrl .p .amt{color:#1f2937}\r\n    #c2g-fleet .prices.ntrl .p .lbl{color:#6b7280}\r\n\r\n    #c2g-fleet .iconlist{list-style:none;margin:15px 0 0;padding:0;display:grid;gap:6px}\r\n    #c2g-fleet .iconlist li{display:grid;grid-template-columns:16px 1fr;gap:8px;align-items:start;font-size:12px;color:#374151}\r\n    #c2g-fleet .note{font-size:11px;color:#6b7280;margin:15px 0 0}\r\n\r\n    \/* \"Show all vehicles\" (created dynamically only in mini mode when needed) *\/\r\n    #c2g-fleet .more{display:flex;justify-content:center;margin:30px 16px 0}\r\n    #c2g-fleet .more .btn{width:auto;padding:30px 60px}\r\n    #c2g-fleet .btn.outline{background:#fff;color:var(--brand)}\r\n\r\n    \/* Actions *\/\r\n    #c2g-fleet .actions{margin-top:2px}\r\n    #c2g-fleet .btn{\r\n      width:100%;height:40px;border-radius:10px;border:1px solid var(--brand);padding:0 12px;display:inline-flex;align-items:center;justify-content:center;\r\n      text-decoration:none;color:#fff;background:linear-gradient(180deg,var(--brand-2),var(--brand));font-weight:700\r\n    }\r\n    #c2g-fleet .btn[aria-disabled=\"true\"]{opacity:.5;pointer-events:none}\r\n\r\n    \/* Empty & Skeleton *\/\r\n    #c2g-fleet .empty{padding:16px;border:1px dashed var(--edge);border-radius:10px;color:#6b7280;text-align:center;margin:12px 16px 0}\r\n    #c2g-fleet .sk{border:1px solid var(--edge);border-radius:14px;overflow:hidden}\r\n    #c2g-fleet .shimmer{height:160px;background:linear-gradient(90deg,#f3f4f6,#e5e7eb,#f3f4f6);background-size:200% 100%;animation:c2g-sh 1.2s linear infinite}\r\n    #c2g-fleet .blk{height:10px;background:#f3f4f6;border-radius:6px;margin:10px 12px}\r\n    #c2g-fleet .w60{width:60%}#c2g-fleet .w40{width:40%}#c2g-fleet .w80{width:80%}\r\n    @keyframes c2g-sh{to{background-position:-200% 0}}\r\n  <\/style>\r\n\r\n  <div class=\"wrap\">\r\n    <header>\r\n      <h2 id=\"c2g-h\"><\/h2>\r\n      <p class=\"sub\" id=\"c2g-sub\"><\/p>\r\n    <\/header>\r\n\r\n    <!-- Controls -->\r\n    <div class=\"bar\" role=\"region\" aria-label=\"Fleet filters and sorting\">\r\n      <input id=\"c2g-q\" class=\"input\" type=\"search\" placeholder=\"Search by make or model...\" aria-label=\"Search\">\r\n      <select id=\"c2g-cat\" class=\"select\" aria-label=\"Filter by category\"><option value=\"\">All Categories<\/option><\/select>\r\n      <select id=\"c2g-sort\" class=\"select\" aria-label=\"Sort\">\r\n        <option value=\"day_asc\" selected>Price\/Day: Low\u2192High<\/option>\r\n        <option value=\"day_desc\">Price\/Day: High\u2192Low<\/option>\r\n        <option value=\"week_asc\">Price\/Week: Low\u2192High<\/option>\r\n        <option value=\"week_desc\">Price\/Week: High\u2192Low<\/option>\r\n        <option value=\"month_asc\">Price\/Month: Low\u2192High<\/option>\r\n        <option value=\"month_desc\">Price\/Month: High\u2192Low<\/option>\r\n        <option value=\"name_asc\">Name A\u2192Z<\/option>\r\n      <\/select>\r\n      <div class=\"spacer\"><\/div>\r\n    <\/div>\r\n\r\n    <!-- Skeleton -->\r\n    <div id=\"c2g-skel\" class=\"grid\" aria-hidden=\"true\">\r\n      <div class=\"sk\"><div class=\"shimmer\"><\/div><div class=\"blk w60\"><\/div><div class=\"blk w80\"><\/div><div class=\"blk w40\"><\/div><\/div>\r\n      <div class=\"sk\"><div class=\"shimmer\"><\/div><div class=\"blk w60\"><\/div><div class=\"blk w80\"><\/div><div class=\"blk w40\"><\/div><\/div>\r\n      <div class=\"sk\"><div class=\"shimmer\"><\/div><div class=\"blk w60\"><\/div><div class=\"blk w80\"><\/div><div class=\"blk w40\"><\/div><\/div>\r\n    <\/div>\r\n\r\n    <!-- Results -->\r\n    <div id=\"c2g-grid\" class=\"grid\" aria-live=\"polite\"><\/div>\r\n    <div id=\"c2g-empty\" class=\"empty\" hidden>No vehicles match your filters.<\/div>\r\n  <\/div>\r\n\r\n  <script>\r\n  (function(){\r\n    \"use strict\";\r\n\r\n    \/* Header text *\/\r\n    document.getElementById('c2g-h').textContent  = PAGE_TITLE || 'Our Fleet';\r\n    document.getElementById('c2g-sub').textContent = PAGE_SUBTITLE || '';\r\n\t\r\n\t\/\/ Hide page title\/subtitle in mini layout\r\n\tif (String(LAYOUT_MODE).toLowerCase() === 'mini') {\r\n\t  document.querySelector('#c2g-fleet header')?.setAttribute('hidden', '');\r\n\t}\r\n\r\n    const $ = (s,el=document)=>el.querySelector(s);\r\n    const nf = new Intl.NumberFormat('en-US',{ maximumFractionDigits: 0 });\r\n\r\n    \/* Sticky bar (no mobile hide\/show) *\/\r\n    const bar = $('.bar');\r\n    let stickyPoint = 0;\r\n    function computeStickyPoint(){ stickyPoint = bar.getBoundingClientRect().top + window.scrollY; }\r\n    function onScroll(){ const y = window.scrollY; bar.classList.toggle('is-sticky', y >= stickyPoint); }\r\n    window.addEventListener('scroll', onScroll, { passive:true });\r\n    window.addEventListener('resize', ()=>{ computeStickyPoint(); onScroll(); });\r\n    setTimeout(()=>{ computeStickyPoint(); onScroll(); }, 0);\r\n\r\n    \/* Smooth scroll to top of listings (offset for sticky bar) *\/\r\n    function scrollListingsTop(){\r\n      try{\r\n        const grid = document.getElementById('c2g-grid');\r\n        if(!grid) return;\r\n        const stickyH = bar ? bar.offsetHeight : 0;\r\n        const targetY = grid.getBoundingClientRect().top + window.pageYOffset - stickyH - 8;\r\n        if (Math.abs(window.pageYOffset - targetY) > 2){\r\n          window.scrollTo({ top: targetY, behavior: 'smooth' });\r\n        }\r\n      }catch(e){}\r\n    }\r\n\r\n    \/* Utilities *\/\r\n    function sanitizeUrl(u){\r\n      if(!u) return '';\r\n      u = String(u).trim().replace(\/^['\"]|['\"]$\/g,'');\r\n      try{\r\n        const parsed = new URL(u);\r\n        parsed.pathname = parsed.pathname.split('\/').map(seg => encodeURIComponent(decodeURIComponent(seg))).join('\/');\r\n        return parsed.toString();\r\n      }catch(e){ return u.replace(\/\\s\/g,'%20'); }\r\n    }\r\n    const PLACEHOLDER = 'data:image\/svg+xml;utf8,' + encodeURIComponent(\r\n      '<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"640\" height=\"360\"><rect width=\"100%\" height=\"100%\" fill=\"#ffffff\"\/><text x=\"50%\" y=\"50%\" dominant-baseline=\"middle\" text-anchor=\"middle\" font-family=\"Arial\" font-size=\"16\" fill=\"#9ca3af\">Image unavailable<\/text><\/svg>'\r\n    );\r\n\r\n    function parseCSV(text){\r\n      const rows=[]; let i=0,f='',r=[],inQ=false;\r\n      for(;i<text.length;i++){\r\n        const c=text[i], n=text[i+1];\r\n        if(inQ){\r\n          if(c==='\\\"' && n==='\\\"'){ f+='\\\"'; i++; }\r\n          else if(c==='\\\"'){ inQ=false; } else { f+=c; }\r\n        }else{\r\n          if(c==='\\\"'){ inQ=true; }\r\n          else if(c===','){ r.push(f); f=''; }\r\n          else if(c==='\\n'){ r.push(f); rows.push(r); r=[]; f=''; }\r\n          else if(c==='\\r'){ } else { f+=c; }\r\n        }\r\n      }\r\n      if(f.length || r.length){ r.push(f); rows.push(r); }\r\n      return rows;\r\n    }\r\n\r\n    const aliases = {\r\n      title_preferred: ['frontend vehicle name','frontend_vehicle_name','vehicle name','name'],\r\n      make: ['make','brand'], model: ['model'], year: ['year','model_year'],\r\n      category: ['category','class','vehicle category','vehicle_category'],\r\n      daily: ['daily','daily rate','price daily','day rate','rate daily','daily_rate','rental daily'],\r\n      weekly: ['weekly','weekly rate','price weekly','week rate','rate weekly','weekly_rate','rental weekly'],\r\n      monthly: ['monthly','monthly rate','price monthly','month rate','rate monthly','monthly_rate','rental monthly'],\r\n      img: ['image url','image_url','image','img','photo','picture','thumbnail'],\r\n      booking_url: ['vehicle url','vehicle_url','booking_url','book_url','link','reservation_url','url'],\r\n      coverage_day: ['coverage daily rate','coverage daily','coverage_day','coverage_daily'],\r\n      coverage_week: ['coverage weekly rate','coverage weekly','coverage_week','coverage_weekly'],\r\n      coverage_month: ['coverage monthly rate','coverage monthly','coverage_month','coverage_monthly'],\r\n      mileage_day: ['mileage daily rate','mileage daily','mileage_day','mileage_daily'],\r\n      mileage_week: ['mileage weekly rate','mileage weekly','mileage_week','mileage_weekly'],\r\n      mileage_month: ['mileage monthly rate','mileage monthly','mileage_month','mileage_monthly'],\r\n    };\r\n    function buildIndex(headers){\r\n      const map={}; headers.forEach((h,i)=>{ map[String(h||'').trim().toLowerCase()] = i; });\r\n      const pick = (key)=>{ for(const a of (aliases[key]||[])){ const idx = map[a.toLowerCase()]; if(idx!==undefined) return idx; } };\r\n      return { pick };\r\n    }\r\n    function get(row, ix, key){ const idx=ix.pick(key); return idx===undefined ? '' : row[idx]; }\r\n\r\n    const money = n => n==null ? null : `<span class=\"cur\">${CURRENCY}<\/span><span class=\"num\">${nf.format(Math.round(n))}<\/span>`;\r\n    const num = x => { if(x==null)return null; const v=String(x).replace(\/[^0-9.\\-]\/g,''); if(!v) return null; const n=Number(v); return Number.isFinite(n)?n:null; };\r\n\r\n    function titleFrom(row, ix){\r\n      const preferred = (get(row, ix, 'title_preferred')||'').trim();\r\n      if(preferred) return preferred;\r\n      const make=(get(row,ix,'make')||'').trim(), model=(get(row,ix,'model')||'').trim(), year=(get(row,ix,'year')||'').trim();\r\n      const fallback=[make,model,year].filter(Boolean).join(' ');\r\n      return fallback || 'Vehicle';\r\n    }\r\n\r\n    \/\/ state: expanded true for 'full', false for 'mini'\r\n    const state = { rows: [], view: [], expanded: (String(LAYOUT_MODE).toLowerCase()==='full') };\r\n\r\n    function render(){\r\n      const grid = $('#c2g-grid');\r\n      const empty = $('#c2g-empty');\r\n      grid.innerHTML = '';\r\n\r\n      if(!state.view.length){\r\n        empty.hidden = false;\r\n        updateMoreButton(); \/\/ ensure it's removed\r\n        return;\r\n      }\r\n      empty.hidden = true;\r\n\r\n      const mini   = String(LAYOUT_MODE).toLowerCase()==='mini';\r\n      const items  = (mini && !state.expanded) ? state.view.slice(0,6) : state.view;\r\n\r\n      const frag = document.createDocumentFragment();\r\n      items.forEach(item=>{\r\n        const card = document.createElement('article'); card.className='card';\r\n\r\n        \/* Media *\/\r\n        const media = document.createElement('div'); media.className='media';\r\n        const imgUrl = item.img, bookUrl = item.booking_url;\r\n        if(imgUrl){\r\n          const img = document.createElement('img');\r\n          img.loading='lazy'; img.decoding='async'; img.alt=item.title||'Vehicle';\r\n          img.src = sanitizeUrl(imgUrl);\r\n          img.onerror = ()=>{ img.src = PLACEHOLDER; };\r\n          if(bookUrl){ const a=document.createElement('a'); a.href=bookUrl; a.appendChild(img); media.appendChild(a); }\r\n          else { media.appendChild(img); }\r\n        }else{\r\n          media.innerHTML = '<div class=\"placeholder\">Image unavailable<\/div>';\r\n        }\r\n        card.appendChild(media);\r\n\r\n        \/* Body *\/\r\n        const body = document.createElement('div'); body.className='body';\r\n        const h3 = document.createElement('h3'); h3.className='title'; h3.textContent = item.title; body.appendChild(h3);\r\n\r\n        const subrow = document.createElement('div'); subrow.className='subrow';\r\n        const info = document.createElement('div'); info.className='alt';\r\n        info.textContent = item.category ? `Or similar \u2022 ${item.category}` : 'Or similar';\r\n        subrow.appendChild(info); body.appendChild(subrow);\r\n\r\n        \/* Rental prices *\/\r\n        const rp = document.createElement('div'); rp.className='prices';\r\n        const priceBits=[];\r\n        if(item.daily!=null)   priceBits.push(box(money(item.daily),'per day'));\r\n        if(item.weekly!=null)  priceBits.push(box(money(item.weekly),'per week'));\r\n        if(item.monthly!=null) priceBits.push(box(money(item.monthly),'per month'));\r\n        rp.innerHTML = priceBits.join('');\r\n        if(priceBits.length) body.appendChild(rp);\r\n\r\n        \/* Coverage & Mileage *\/\r\n        const detail = document.createElement('details'); detail.className='fold';\r\n        const summary = document.createElement('summary'); summary.innerHTML = iconChevron() + ' Coverage & Mileage';\r\n        detail.appendChild(summary);\r\n\r\n        const inner = document.createElement('div'); inner.className='inner';\r\n        inner.insertAdjacentHTML('beforeend',\r\n          `<div class=\"included\">\r\n            <strong>Included:<\/strong> Basic insurance (LDW). Standard mileage: ${STD_MILEAGE}.\r\n            <a href=\"${TERMS_URL}\" target=\"_blank\" rel=\"noopener\">More info<\/a>\r\n          <\/div>`\r\n        );\r\n        inner.insertAdjacentHTML('beforeend', `<div class=\"divider\" aria-hidden=\"true\"><\/div>`);\r\n        inner.insertAdjacentHTML('beforeend',\r\n          `<div class=\"line\">\r\n            <div>${iconShield()}<\/div>\r\n            <div><strong>Extended Insurance<\/strong><\/div>\r\n            <div class=\"full\">\r\n              ${neutralPrices(item.coverage_day, item.coverage_week, item.coverage_month)}\r\n              <ul class=\"iconlist\">\r\n                <li>${iconTinyShield()}<span>Loss Damage Waiver<\/span><\/li>\r\n                <li>${iconTinySpark()}<span>Tyre &amp; Windscreen Protection<\/span><\/li>\r\n                <li>${iconTinySeat()}<span>Interior Protection<\/span><\/li>\r\n                <li>${iconTinyPlus()}<span>Personal Accident Protection<\/span><\/li>\r\n                <li>${iconTinyLink()}<span>Roadside Protection<\/span><\/li>\r\n              <\/ul>\r\n            <\/div>\r\n          <\/div>`\r\n        );\r\n        inner.insertAdjacentHTML('beforeend', `<div class=\"divider\" aria-hidden=\"true\"><\/div>`);\r\n        inner.insertAdjacentHTML('beforeend',\r\n          `<div class=\"line\">\r\n            <div>${iconRoad()}<\/div>\r\n            <div><strong>Long Distance<\/strong><\/div>\r\n            <div class=\"full\">\r\n              ${neutralPrices(\r\n                item.mileage_day, item.mileage_week, item.mileage_month,\r\n                { d: LD_KM_DAY + ' km', w: LD_KM_WEEK + ' km', m: LD_KM_MONTH + ' km' }\r\n              )}\r\n              <p class=\"note\">${LD_OVERAGE_NOTE}<\/p>\r\n            <\/div>\r\n          <\/div>`\r\n        );\r\n        detail.appendChild(inner); body.appendChild(detail);\r\n\r\n        \/* CTA *\/\r\n        const actions = document.createElement('div'); actions.className='actions';\r\n        if(item.booking_url){ actions.innerHTML = `<a class=\"btn\" href=\"${item.booking_url}\">Book now<\/a>`; }\r\n        else { actions.innerHTML = `<a class=\"btn\" aria-disabled=\"true\" href=\"#\">Book now<\/a>`; }\r\n        body.appendChild(actions);\r\n\r\n        card.appendChild(body);\r\n        frag.appendChild(card);\r\n      });\r\n      grid.appendChild(frag);\r\n\r\n      \/\/ Create\/remove \"Show all vehicles\" button as needed\r\n      updateMoreButton();\r\n    }\r\n\r\n    function updateMoreButton(){\r\n      const wrap = document.querySelector('#c2g-fleet .wrap');\r\n      const existing = document.getElementById('c2g-more');\r\n      const mini = String(LAYOUT_MODE).toLowerCase()==='mini';\r\n      const needButton = mini && !state.expanded && state.view.length > 6;\r\n\r\n      if(existing && !needButton){ existing.remove(); }\r\n      if(needButton && !existing){\r\n        const more = document.createElement('div');\r\n        more.id = 'c2g-more';\r\n        more.className = 'more';\r\n        const btn = document.createElement('button');\r\n        btn.id = 'c2g-expand';\r\n        btn.type = 'button';\r\n        btn.className = 'btn outline';\r\n        btn.textContent = 'Show all vehicles';\r\n        btn.addEventListener('click', ()=>{\r\n          state.expanded = true;\r\n          render(); \/\/ re-render with all items (no scrolling on expand)\r\n        });\r\n        more.appendChild(btn);\r\n        wrap.appendChild(more);\r\n      }\r\n    }\r\n\r\n    function box(amount,label,capText){\r\n      if(!amount) return '';\r\n      return `<div class=\"p\"><div class=\"amt\">${amount}<\/div><span class=\"lbl\">${label}<\/span>${capText?`<span class=\"cap\">${capText}<\/span>`:''}<\/div>`;\r\n    }\r\n    function neutralPrices(d,w,m,caps){\r\n      const bits=[];\r\n      const dM = d!=null ? money(d) : null;\r\n      const wM = w!=null ? money(w) : null;\r\n      const mM = m!=null ? money(m) : null;\r\n      if(dM) bits.push(box(dM,'per day', caps?.d));\r\n      if(wM) bits.push(box(wM,'per week', caps?.w));\r\n      if(mM) bits.push(box(mM,'per month', caps?.m));\r\n      return bits.length ? `<div class=\"prices ntrl\">${bits.join('')}<\/div>` : `<div class=\"alt\">See options at booking.<\/div>`;\r\n    }\r\n\r\n    function hydrateFilters(){\r\n      const cats = Array.from(new Set(state.rows.map(r=>r.category).filter(Boolean))).sort();\r\n      const sel = $('#c2g-cat');\r\n      cats.forEach(c=>{ const o=document.createElement('option'); o.value=c; o.textContent=c; sel.appendChild(o); });\r\n    }\r\n\r\n    \/\/ applyFilters now accepts an options object: { scroll: true|false }\r\n    function applyFilters(opts){\r\n      const doScroll = (opts && opts.scroll === false) ? false : true;\r\n\r\n      const q = ($('#c2g-q')?.value||'').trim().toLowerCase();\r\n      const c = $('#c2g-cat')?.value || '';\r\n      const s = $('#c2g-sort')?.value || 'day_asc';\r\n\r\n      let list = state.rows.filter(r =>\r\n        (!q || (r.title && r.title.toLowerCase().includes(q))) &&\r\n        (!c || r.category===c)\r\n      );\r\n\r\n      if(s==='name_asc') list.sort((a,b)=> (a.title||'').localeCompare(b.title||''));\r\n      else if(s==='day_asc')   list.sort((a,b)=> (a.daily??1e12) - (b.daily??1e12));\r\n      else if(s==='day_desc')  list.sort((a,b)=> (b.daily??-1) - (a.daily??-1));\r\n      else if(s==='week_asc')  list.sort((a,b)=> (a.weekly??1e12) - (b.weekly??1e12));\r\n      else if(s==='week_desc') list.sort((a,b)=> (b.weekly??-1) - (a.weekly??-1));\r\n      else if(s==='month_asc') list.sort((a,b)=> (a.monthly??1e12) - (b.monthly??1e12));\r\n      else if(s==='month_desc')list.sort((a,b)=> (b.monthly??-1) - (a.monthly??-1));\r\n\r\n      state.view = list;\r\n      render();\r\n\r\n      \/\/ Only scroll when filters\/search actually change (not on initial load, not on \"Show all\")\r\n      if(doScroll) scrollListingsTop();\r\n    }\r\n\r\n    function mapRow(row, ix, idx){\r\n      const o={ _i:idx };\r\n      const g=(k)=> get(row, ix, k);\r\n      o.title = titleFrom(row, ix);\r\n      o.category = (g('category')||'').trim();\r\n\r\n      o.daily   = num(g('daily'));\r\n      o.weekly  = num(g('weekly'));\r\n      o.monthly = num(g('monthly'));\r\n\r\n      o.coverage_day   = num(g('coverage_day'));\r\n      o.coverage_week  = num(g('coverage_week'));\r\n      o.coverage_month = num(g('coverage_month'));\r\n\r\n      o.mileage_day    = num(g('mileage_day'));\r\n      o.mileage_week   = num(g('mileage_week'));\r\n      o.mileage_month  = num(g('mileage_month'));\r\n\r\n      o.img = sanitizeUrl(g('img'));\r\n      const b = (g('booking_url')||'').trim();\r\n      o.booking_url = \/^https?:\\\/\\\/\/i.test(b) ? b : '';\r\n      return o;\r\n    }\r\n\r\n    \/* Icons *\/\r\n    function iconChevron(){ return `<svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\"><path d=\"M9 6l6 6-6 6\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>`; }\r\n    function iconShield(){ return `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\"><path d=\"M12 3l7 4v5c0 5-3.5 8-7 9-3.5-1-7-4-7-9V7l7-4z\" stroke=\"currentColor\" stroke-width=\"2\" fill=\"none\"\/><\/svg>`; }\r\n    function iconRoad(){ return `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\"><path d=\"M10 3h4l2 18h-8L10 3z\" stroke=\"currentColor\" stroke-width=\"2\" fill=\"none\"\/><path d=\"M12 3v18\" stroke=\"currentColor\" stroke-width=\"2\" stroke-dasharray=\"3 3\"\/><\/svg>`; }\r\n    function iconTinyShield(){ return `<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\"><path d=\"M12 3l7 4v5c0 5-3.5 8-7 9-3.5-1-7-4-7-9V7l7-4z\" stroke=\"currentColor\" stroke-width=\"1.6\" fill=\"none\"\/><\/svg>`; }\r\n    function iconTinySpark(){ return `<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"12\" r=\"6\" stroke=\"currentColor\" stroke-width=\"1.8\"><\/circle><circle cx=\"12\" cy=\"12\" r=\"2\" fill=\"currentColor\"><\/circle><\/svg>`; }\r\n    function iconTinySeat(){ return `<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\"><path d=\"M8 4h6v6H9v6h9v3H7a2 2 0 0 1-2-2V8a4 4 0 0 1 3-4z\" stroke=\"currentColor\" stroke-width=\"1.6\" fill=\"none\" stroke-linejoin=\"round\"\/><\/svg>`; }\r\n    function iconTinyPlus(){ return `<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\"><path d=\"M10 4h4v6h6v4h-6v6h-4v-6H4v-4h6V4z\" fill=\"currentColor\"\/><\/svg>`; }\r\n    function iconTinyLink(){ return `<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\"><path d=\"M21 7.5a4.5 4.5 0 0 1-6.26 4.16l-6.3 6.3a2 2 0 1 1-2.83-2.83l6.3-6.3A4.5 4.5 0 1 1 21 7.5z\" stroke=\"currentColor\" stroke-width=\"1.6\" fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>`; }\r\n\r\n    \/* Boot *\/\r\n    fetch(CSV_URL, { cache:'no-store' })\r\n      .then(r=>r.text())\r\n      .then(txt=>{\r\n        const rows = parseCSV(txt);\r\n        if(!rows.length) throw new Error('Empty CSV');\r\n        const headers = rows[0].map(h=>String(h||'').trim());\r\n        const ix = buildIndex(headers);\r\n        const data = rows.slice(1).filter(r=>r.some(Boolean)).map((r,i)=>mapRow(r, ix, i));\r\n        state.rows = data;\r\n        hydrateFilters();\r\n        $('#c2g-skel')?.remove();\r\n        applyFilters({ scroll:false }); \/\/ \u2705 no auto-scroll on initial load\r\n      })\r\n      .catch(err=>{\r\n        console.error(err);\r\n        $('#c2g-skel')?.remove();\r\n        $('#c2g-grid').innerHTML = '<div class=\"empty\">Failed to load vehicles. Please try again later.<\/div>';\r\n      });\r\n\r\n    \/\/ Filter\/search events \u2014 these DO scroll to top\r\n    [\r\n      ['c2g-q','input'],\r\n      ['c2g-cat','change'],\r\n      ['c2g-sort','change']\r\n    ].forEach(([id,evt])=>{\r\n      const el=document.getElementById(id); if(!el) return;\r\n      el.addEventListener(evt, ()=>applyFilters({ scroll:true }));\r\n    });\r\n\r\n  })();\r\n  <\/script>\r\n<\/section>\n<\/div><\/div>\n\n<\/div><\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":2,"featured_media":1139,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_kad_blocks_custom_css":"","_kad_blocks_head_custom_js":"","_kad_blocks_body_custom_js":"","_kad_blocks_footer_custom_js":"","_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"class_list":["post-504","page","type-page","status-publish","has-post-thumbnail","hentry"],"taxonomy_info":[],"featured_image_src_large":["https:\/\/car2go.rent\/lb\/wp-content\/uploads\/sites\/3\/2025\/10\/Lebanon-Fleet-Feature-Image-1024x576.png",1024,576,true],"author_info":{"display_name":"c2gadmin","author_link":"https:\/\/car2go.rent\/lb\/news\/author\/c2gadmin\/"},"comment_info":0,"_links":{"self":[{"href":"https:\/\/car2go.rent\/lb\/wp-json\/wp\/v2\/pages\/504","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/car2go.rent\/lb\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/car2go.rent\/lb\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/car2go.rent\/lb\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/car2go.rent\/lb\/wp-json\/wp\/v2\/comments?post=504"}],"version-history":[{"count":6,"href":"https:\/\/car2go.rent\/lb\/wp-json\/wp\/v2\/pages\/504\/revisions"}],"predecessor-version":[{"id":1129,"href":"https:\/\/car2go.rent\/lb\/wp-json\/wp\/v2\/pages\/504\/revisions\/1129"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/car2go.rent\/lb\/wp-json\/wp\/v2\/media\/1139"}],"wp:attachment":[{"href":"https:\/\/car2go.rent\/lb\/wp-json\/wp\/v2\/media?parent=504"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}