{"id":153225,"date":"2026-10-19T10:41:29","date_gmt":"2026-10-19T08:41:29","guid":{"rendered":"https:\/\/builders24.net\/?page_id=153225"},"modified":"2026-10-20T08:00:48","modified_gmt":"2026-10-20T08:00:48","slug":"cross-border-logistics","status":"publish","type":"page","link":"https:\/\/builders24.net\/zw\/cross-border-logistics\/","title":{"rendered":"Cross Border Logistics"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"153225\" class=\"elementor elementor-153225\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6ee5eff e-con e-atomic-element e-flexbox-base e-default-div e-cb0ceb1 \" data-id=\"6ee5eff\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"6ee5eff\">\n    \t\t<div class=\"elementor-element elementor-element-692049f elementor-widget elementor-widget-html\" data-id=\"692049f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"en-ZW\">\r\n<head>\r\n<meta charset=\"UTF-8\">\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n<title>Cross-Border Logistics from Zimbabwe | Road Freight to South Africa, Zambia, Botswana &amp; Mozambique | Builders24 Zimbabwe<\/title>\r\n<meta name=\"description\" content=\"Builders24 Zimbabwe provides cross-border road freight (FTL trucking) from Zimbabwe to South Africa, Zambia, Botswana, Mozambique, Namibia and the rest of SADC. Builders24 Logistics moves goods for Zimbabwean businesses, manufacturers and exporters. Get an instant quote.\">\r\n<meta name=\"robots\" content=\"index, follow\">\r\n<meta property=\"og:type\" content=\"website\">\r\n<meta property=\"og:locale\" content=\"en_ZA\">\r\n<meta property=\"og:title\" content=\"Cross-Border Logistics from Zimbabwe | Builders24 Zimbabwe\">\r\n<meta property=\"og:description\" content=\"Builders24 Zimbabwe provides cross-border road freight (FTL trucking) from Zimbabwe to South Africa, Zambia, Botswana, Mozambique, Namibia and the rest of SADC. Builders24 Logistics moves goods for Zimbabwean businesses, manufacturers and exporters. Get an instant quote.\">\r\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\r\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Archivo+Narrow:wght@400;500;600;700;800&display=swap\" rel=\"stylesheet\">\r\n<style>\r\n\/* Scoped to #b24cb so nothing here can restyle the WordPress site around it. *\/\r\n#b24cb{ --navy:#0B2545; --orange:#F5821F; --orange-dark:#d96f16; --blue:#1C3F94; --body:#64748b; --line:#e2e8f0; --line-soft:#cbd5e1; --band-bg:#EAF1FB; --band-bg2:#F3F6FA; }\r\n#b24cb, #b24cb *{box-sizing:border-box;margin:0;padding:0;}\r\n#b24cb{ font-family:'Archivo Narrow', Helvetica, Arial, sans-serif; background:#fff; color:var(--navy); overflow-x:hidden; }\r\n#b24cb a{ color:var(--orange); text-decoration:none; }\r\n#b24cb a:hover{ color:var(--orange-dark); }\r\n#b24cb button{ font-family:inherit; border:none; cursor:pointer; }\r\n#b24cb input::placeholder{ color:#94a3b8; }\r\n#b24cb img{ max-width:100%; display:block; }\r\n#b24cb .eyebrow{ display:flex; align-items:center; gap:10px; margin-bottom:14px; }\r\n#b24cb .eyebrow-bar{ width:28px; height:3px; background:var(--orange); flex-shrink:0; }\r\n#b24cb .eyebrow-text{ color:var(--orange); font-size:12.5px; font-weight:700; letter-spacing:1.2px; }\r\n#b24cb .af-hero{ position:relative; min-height:600px; display:flex; align-items:center; overflow:hidden; }\r\n#b24cb .af-hero-bg{ position:absolute; inset:0; z-index:0; }\r\n#b24cb .af-hero-bg img{ width:100%; height:100%; object-fit:cover; }\r\n#b24cb .af-hero-overlay{ position:absolute; inset:0; background:linear-gradient(100deg, rgba(6,20,38,0.88) 0%, rgba(6,20,38,0.55) 42%, rgba(6,20,38,0.15) 65%, rgba(6,20,38,0.35) 100%); }\r\n#b24cb .af-hero-inner{ position:relative; z-index:1; display:flex; justify-content:space-between; align-items:flex-start; gap:32px; width:100%; padding:56px 48px; flex-wrap:wrap; }\r\n#b24cb .af-hero-copy{ max-width:520px; min-width:280px; flex:1; }\r\n#b24cb .af-hero-copy .eyebrow-text{ font-size:13px; }\r\n#b24cb .af-hero-title{ margin:0 0 20px; font-size:46px; line-height:1.12; font-weight:800; color:#fff; }\r\n#b24cb .af-hero-title span{ color:var(--orange); }\r\n#b24cb .af-hero-sub{ margin:0 0 28px; font-size:16px; line-height:1.6; color:#dbe4ee; max-width:460px; }\r\n#b24cb .af-hero-features{ display:flex; gap:24px; flex-wrap:wrap; max-width:460px; }\r\n#b24cb .af-hero-feature{ display:flex; flex-direction:column; align-items:center; gap:10px; width:80px; text-align:center; }\r\n#b24cb .af-hero-feature-ico{ width:44px; height:44px; border-radius:10px; background:rgba(245,130,31,0.18); display:flex; align-items:center; justify-content:center; font-size:20px; }\r\n#b24cb .af-hero-feature-label{ font-size:12.5px; font-weight:600; color:#fff; line-height:1.3; }\r\n#b24cb .qc-card{ background:#fff; border-radius:14px; box-shadow:0 20px 50px rgba(0,0,0,0.35); padding:28px; width:360px; flex-shrink:0; }\r\n#b24cb .qc-title{ margin:0 0 6px; font-size:19px; font-weight:700; color:var(--navy); }\r\n#b24cb .qc-sub{ margin:0 0 18px; font-size:13px; line-height:1.5; color:var(--body); }\r\n#b24cb .qc-mode-row{ display:flex; gap:8px; margin-bottom:16px; }\r\n#b24cb .qc-mode-btn{ flex:1; display:flex; align-items:center; justify-content:center; gap:6px; border-radius:8px; padding:10px 8px; font-size:13px; font-weight:600; border:1px solid var(--line-soft); background:#fff; color:#334155; }\r\n#b24cb .qc-mode-btn.active{ background:var(--blue); color:#fff; border-color:var(--blue); }\r\n#b24cb .qc-grid2{ display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-bottom:12px; }\r\n#b24cb .qc-grid3{ display:grid; grid-template-columns:1fr 1fr 1fr; gap:8px; margin-bottom:12px; }\r\n#b24cb .qc-field-label{ font-size:11.5px; font-weight:600; color:#475569; margin-bottom:5px; }\r\n#b24cb .qc-input-wrap{ display:flex; align-items:center; gap:6px; border:1px solid var(--line-soft); border-radius:7px; padding:9px 10px; }\r\n#b24cb .qc-input-wrap input{ border:none; outline:none; font-size:13px; width:100%; color:#334155; background:none; font-family:inherit; }\r\n#b24cb .qc-input-wrap.small{ padding:9px 8px; gap:5px; }\r\n#b24cb .qc-input-wrap.small span{ font-size:11px; font-weight:700; color:#94a3b8; }\r\n#b24cb .qc-input-wrap.small input{ font-size:12.5px; }\r\n#b24cb .qc-submit{ width:100%; background:var(--orange); color:#fff; border-radius:8px; padding:13px; font-size:15px; font-weight:700; display:flex; align-items:center; justify-content:center; gap:8px; }\r\n#b24cb .qc-submit:hover{ background:var(--orange-dark); }\r\n#b24cb .qc-secure{ display:flex; align-items:center; justify-content:center; gap:5px; margin-top:10px; font-size:11px; color:#94a3b8; }\r\n#b24cb .qc-error{ font-size:12px; color:#dc2626; margin-bottom:10px; }\r\n#b24cb .search-wrap{ position:relative; }\r\n#b24cb .search-list{ position:fixed; background:#fff; border:1px solid var(--line-soft); border-radius:8px; box-shadow:0 6px 18px rgba(0,0,0,0.14); max-height:200px; overflow-y:auto; z-index:9999; }\r\n#b24cb .search-suggestion{ padding:9px 11px; font-size:12.5px; cursor:pointer; border-bottom:1px solid #f1f5f9; color:#334155; }\r\n#b24cb .search-suggestion:hover{ background:var(--band-bg); }\r\n#b24cb .search-suggestion:last-child{ border-bottom:none; }\r\n#b24cb .search-empty{ padding:9px 11px; font-size:12px; color:#94a3b8; }\r\n#b24cb .qc-rate-box{ background:var(--band-bg); border-radius:8px; padding:12px 14px; margin:2px 0 14px; font-size:13px; color:var(--navy); }\r\n#b24cb .qc-rate-box b{ font-size:15px; }\r\n#b24cb .af-why{ padding:72px 48px; display:flex; gap:48px; flex-wrap:wrap; }\r\n#b24cb .af-why-copy{ flex:1; min-width:280px; max-width:420px; }\r\n#b24cb .af-why-title{ margin:0 0 18px; font-size:32px; font-weight:800; color:var(--navy); line-height:1.2; }\r\n#b24cb .af-why-sub{ margin:0 0 26px; font-size:15px; line-height:1.7; color:var(--body); }\r\n#b24cb .btn-outline-navy{ background:#fff; border:1.5px solid var(--navy); color:var(--navy); border-radius:8px; padding:12px 22px; font-size:14px; font-weight:600; display:inline-flex; align-items:center; gap:8px; }\r\n#b24cb .af-why-grid{ flex:2; min-width:320px; display:grid; grid-template-columns:1fr 1fr; gap:20px; }\r\n#b24cb .af-why-card{ border:1px solid var(--line); border-radius:12px; padding:22px; display:flex; gap:16px; align-items:flex-start; }\r\n#b24cb .af-why-card-ico{ width:38px; height:38px; flex-shrink:0; display:flex; align-items:center; justify-content:center; font-size:20px; }\r\n#b24cb .af-why-card-title{ font-size:15.5px; font-weight:700; color:var(--navy); margin-bottom:6px; }\r\n#b24cb .af-why-card-desc{ font-size:13.5px; line-height:1.55; color:var(--body); }\r\n@media(max-width:700px){#b24cb .af-why-grid{ grid-template-columns:1fr; }\r\n }\r\n#b24cb .af-routes{ background:var(--band-bg); padding:64px 48px; }\r\n#b24cb .af-routes-inner{ display:flex; gap:48px; flex-wrap:wrap; align-items:flex-start; }\r\n#b24cb .af-routes-copy{ flex:1; min-width:260px; max-width:360px; }\r\n#b24cb .af-routes-title{ margin:0 0 16px; font-size:30px; font-weight:800; color:var(--navy); line-height:1.2; }\r\n#b24cb .af-routes-sub{ margin:0 0 24px; font-size:15px; line-height:1.7; color:var(--body); }\r\n#b24cb .af-routes-grid{ flex:3; min-width:320px; display:grid; grid-template-columns:repeat(4,1fr); gap:16px; }\r\n@media(max-width:900px){#b24cb .af-routes-grid{ grid-template-columns:repeat(2,1fr); }\r\n }\r\n#b24cb .af-route-card{ background:#fff; border-radius:12px; padding:18px; }\r\n#b24cb .af-route-plane{ font-size:16px; margin-bottom:14px; }\r\n#b24cb .af-route-flags{ display:flex; align-items:center; gap:8px; margin-bottom:10px; font-size:16px; }\r\n#b24cb .af-route-arrow{ color:#94a3b8; }\r\n#b24cb .af-route-pair{ font-size:13.5px; font-weight:600; color:#334155; margin-bottom:8px; }\r\n#b24cb .af-route-days{ font-size:12.5px; color:var(--body); margin-bottom:2px; }\r\n#b24cb .af-route-price{ font-size:12.5px; font-weight:600; color:var(--blue); }\r\n#b24cb .af-routes-empty{ grid-column:1\/-1; font-size:13px; color:var(--body); padding:20px; text-align:center; background:#fff; border-radius:12px; }\r\n#b24cb .af-steps{ padding:64px 48px 48px; }\r\n#b24cb .af-steps-title{ margin:0 0 32px; font-size:30px; font-weight:800; color:var(--navy); }\r\n#b24cb .af-steps-row{ display:flex; align-items:flex-start; gap:12px; flex-wrap:wrap; }\r\n#b24cb .af-step{ flex:1; min-width:150px; position:relative; }\r\n#b24cb .af-step-icowrap{ position:relative; width:60px; height:60px; margin-bottom:16px; }\r\n#b24cb .af-step-ico{ width:60px; height:60px; border-radius:50%; background:var(--band-bg); display:flex; align-items:center; justify-content:center; font-size:22px; }\r\n#b24cb .af-step-num{ position:absolute; bottom:-4px; right:-4px; width:22px; height:22px; border-radius:50%; background:var(--orange); color:#fff; font-size:11px; font-weight:700; display:flex; align-items:center; justify-content:center; }\r\n#b24cb .af-step-title{ font-size:16px; font-weight:700; color:var(--navy); margin-bottom:6px; }\r\n#b24cb .af-step-desc{ font-size:13.5px; line-height:1.55; color:var(--body); max-width:220px; }\r\n#b24cb .af-step-arrow{ height:60px; display:flex; align-items:center; font-size:20px; color:#cbd5e1; flex:none; }\r\n@media(max-width:760px){#b24cb .af-steps-row{ display:grid; grid-template-columns:repeat(2,1fr); gap:20px 14px; }\r\n#b24cb .af-step{ min-width:0; }\r\n#b24cb .af-step-arrow{ display:none; }\r\n }\r\n@media(max-width:700px){#b24cb .af-hero-inner{ padding:40px 20px; }\r\n#b24cb .af-hero-title{ font-size:32px; }\r\n#b24cb .qc-card{ width:100%; }\r\n#b24cb .af-why,#b24cb .af-routes,#b24cb .af-steps{ padding-left:20px; padding-right:20px; }\r\n\r\n  }\r\n\r\n\r\n<\/style>\r\n<\/head>\r\n<body>\r\n<div id=\"b24cb\">\r\n\r\n<div class=\"af-hero\">\r\n  <div class=\"af-hero-bg\"><img decoding=\"async\" src=\"https:\/\/app.builders24.net\/assets\/hero-africa-delivery.png\" alt=\"\"><\/div>\r\n  <div class=\"af-hero-overlay\"><\/div>\r\n  <div class=\"af-hero-inner\">\r\n    <div class=\"af-hero-copy\">\r\n      <div class=\"eyebrow\"><div class=\"eyebrow-bar\"><\/div><span class=\"eyebrow-text\">CROSS BORDER LOGISTICS<\/span><\/div>\r\n      <h1 class=\"af-hero-title\">Move Your Goods <span>Across Borders<\/span> from Zimbabwe<\/h1>\r\n      <p class=\"af-hero-sub\">Builders24 Logistics provides reliable cross-border road freight from Zimbabwe into the SADC region, on routes such as Zimbabwe to South Africa, Zimbabwe to Zambia, Zimbabwe to Botswana, Zimbabwe to Mozambique and Zimbabwe to Namibia, and onward to other SADC destinations. Full truck load (FTL) service for Zimbabwean businesses, manufacturers and exporters, with a live quote in minutes.<\/p>\r\n      <div class=\"af-hero-features\" id=\"heroFeatures\"><\/div>\r\n    <\/div>\r\n\r\n    <div class=\"qc-card\">\r\n      <h2 class=\"qc-title\">Get an Instant Cross Border Quote<\/h2>\r\n      <p class=\"qc-sub\">Fill in your shipment details and get a live quote from our road freight partners in minutes.<\/p>\r\n\r\n      <div class=\"qc-mode-row\">\r\n        <button type=\"button\" class=\"qc-mode-btn active\" id=\"modeSingleBtn\" onclick=\"setShipmentMode('single')\">\ud83d\ude9a Single Shipment<\/button>\r\n        <button type=\"button\" class=\"qc-mode-btn\" id=\"modeMultiBtn\" onclick=\"setShipmentMode('multiple')\">\ud83d\ude9a\ud83d\ude9a Multiple Shipments<\/button>\r\n      <\/div>\r\n\r\n      <div class=\"qc-grid2\">\r\n        <div>\r\n          <div class=\"qc-field-label\">From (Origin City)<\/div>\r\n          <div class=\"qc-input-wrap search-wrap\"><span>\ud83d\udccd<\/span><input type=\"text\" id=\"qcFrom\" placeholder=\"Search origin city, e.g. Harare\u2026\" autocomplete=\"off\" oninput=\"handleRouteSearch('origin', this.value)\" onfocus=\"handleRouteSearch('origin', this.value)\"><\/div>\r\n          <div class=\"search-list\" id=\"qcFromList\" style=\"display:none;\"><\/div>\r\n        <\/div>\r\n        <div>\r\n          <div class=\"qc-field-label\">To (Destination City)<\/div>\r\n          <div class=\"qc-input-wrap search-wrap\"><span>\ud83d\udccd<\/span><input type=\"text\" id=\"qcTo\" placeholder=\"Search destination city\u2026\" autocomplete=\"off\" oninput=\"handleRouteSearch('destination', this.value)\" onfocus=\"handleRouteSearch('destination', this.value)\"><\/div>\r\n          <div class=\"search-list\" id=\"qcToList\" style=\"display:none;\"><\/div>\r\n        <\/div>\r\n      <\/div>\r\n      <div id=\"qcRateEstimate\" style=\"display:none;\"><\/div>\r\n\r\n      <div class=\"qc-field-label\">Number of Trucks (Full Truck Load)<\/div>\r\n      <div class=\"qc-input-wrap\" style=\"margin-bottom:12px;\"><span>\ud83d\ude9a<\/span><input type=\"number\" id=\"qcWeight\" placeholder=\"Enter number of trucks\" oninput=\"checkRouteMatch()\"><\/div>\r\n\r\n      <div class=\"qc-field-label\">Cargo Description<\/div>\r\n      <div class=\"qc-input-wrap\" style=\"margin-bottom:12px;\"><span>\ud83d\udcdd<\/span><input type=\"text\" id=\"qcDesc\" placeholder=\"e.g. building materials, machinery, general goods\"><\/div>\r\n\r\n      <div class=\"qc-error\" id=\"qcError\"><\/div>\r\n      <button type=\"button\" class=\"qc-submit\" id=\"qcSubmitBtn\" onclick=\"submitQuoteCalc()\">Book &amp; Pay \u2192<\/button>\r\n      <div class=\"qc-secure\"><span>\ud83d\udd12 Your information is secure and confidential.<\/span><\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<div class=\"af-why\">\r\n  <div class=\"af-why-copy\">\r\n    <div class=\"eyebrow\"><div class=\"eyebrow-bar\"><\/div><span class=\"eyebrow-text\">WHY CHOOSE BUILDERS24 CROSS BORDER LOGISTICS<\/span><\/div>\r\n    <h2 class=\"af-why-title\">Cross-Border Roads. Local Support.<\/h2>\r\n    <p class=\"af-why-sub\">We work with trusted road freight operators to give you competitive FTL rates, real border-post routing and complete visibility from pickup to delivery.<\/p>\r\n    <a class=\"btn-outline-navy\" href=\"https:\/\/app.builders24.net\/shipping\/index.html\">View Our Services \u2192<\/a>\r\n  <\/div>\r\n  <div class=\"af-why-grid\" id=\"whyGrid\"><\/div>\r\n<\/div>\r\n\r\n<div class=\"af-routes\">\r\n  <div class=\"af-routes-inner\">\r\n    <div class=\"af-routes-copy\">\r\n      <div class=\"eyebrow\"><div class=\"eyebrow-bar\"><\/div><span class=\"eyebrow-text\">POPULAR CROSS BORDER CORRIDORS<\/span><\/div>\r\n      <h2 class=\"af-routes-title\">Key Corridors<\/h2>\r\n      <p class=\"af-routes-sub\">We offer frequent road freight services from Zimbabwe along major SADC corridors, with real border-post routing.<\/p>\r\n    <\/div>\r\n    <div class=\"af-routes-grid\" id=\"routesGrid\">\r\n      <div class=\"af-routes-empty\">Loading routes\u2026<\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<div class=\"af-steps\">\r\n  <div class=\"eyebrow\"><div class=\"eyebrow-bar\"><\/div><span class=\"eyebrow-text\">SIMPLE PROCESS<\/span><\/div>\r\n  <h2 class=\"af-steps-title\">How It Works<\/h2>\r\n  <div class=\"af-steps-row\" id=\"stepsRow\"><\/div>\r\n<\/div>\r\n<\/div><!-- \/#b24cb -->\r\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/@supabase\/supabase-js@2\"><\/script>\r\n<script src=\"https:\/\/app.builders24.net\/guest-cart.js\"><\/script>\r\n<script src=\"https:\/\/app.builders24.net\/b24app.js\"><\/script>\r\n<script>\r\n\/* Zimbabwe localisation: all prices are shown in US dollars (USD). *\/\r\nwindow.getCustomerCurrency = async function(){ return 'USD'; };\r\nwindow.setCustomerCurrency = async function(){};\r\nwindow.b24Zar = function(amount, cur){\r\n  try { if (typeof fmtConverted === 'function') return fmtConverted(Number(amount), cur || 'USD', 'USD'); } catch(e){}\r\n  return (cur || 'USD') + ' ' + amount;\r\n};\r\ntry { if (typeof loadExchangeRates === 'function') loadExchangeRates(); } catch(e){}\r\n<\/script>\r\n<script>\r\n(function(){\r\n  'use strict';\r\n\r\n  const HERO_FEATURES = [\r\n    { icon:'\ud83d\ude9a', label:'Cross-Border Network' },\r\n    { icon:'\ud83d\udee1\ufe0f', label:'Secure Handling' },\r\n    { icon:'\ud83d\udd50', label:'Fast Transit Times' },\r\n    { icon:'\ud83d\udccd', label:'Real-Time Tracking' },\r\n  ];\r\n  const WHY_FEATURES = [\r\n    { icon:'\ud83c\udf0d', title:'Cross-Border Network', desc:'Road freight from Zimbabwe along major SADC corridors, with real border-post routing.' },\r\n    { icon:'\ud83d\udccd', title:'Real-Time Tracking', desc:'Know where your cargo is, every step of the way.' },\r\n    { icon:'\ud83d\udcb1', title:'Competitive FTL Rates', desc:'Get the best full truck load rates from our trusted road partners.' },\r\n    { icon:'\ud83d\udec3', title:'Customs & Border Support', desc:'Our team helps with border documentation and clearance.' },\r\n  ];\r\n  const STEPS = [\r\n    { n:1, icon:'\ud83d\udcc4', title:'Get a Quote', desc:'Enter your shipment details and get an instant quote.', hasArrow:true },\r\n    { n:2, icon:'\ud83d\udcb3', title:'Book & Pay', desc:'Confirm your booking and make payment securely.', hasArrow:true },\r\n    { n:3, icon:'\ud83d\ude9a', title:'We Ship', desc:'Your cargo is collected, cleared at the border and delivered by road.', hasArrow:true },\r\n    { n:4, icon:'\ud83d\udccd', title:'Track & Receive', desc:'Monitor your shipment until it reaches you.', hasArrow:false },\r\n  ];\r\n\r\n  function esc(s){ return (s||'').toString().replace(\/[&<>\"']\/g, c => ({'&':'&amp;','<':'&lt;','>':'&gt;','\"':'&quot;',\"'\":'&#39;'}[c])); }\r\n\r\n  document.getElementById('heroFeatures').innerHTML = HERO_FEATURES.map(f => `\r\n    <div class=\"af-hero-feature\">\r\n      <div class=\"af-hero-feature-ico\">${f.icon}<\/div>\r\n      <span class=\"af-hero-feature-label\">${esc(f.label)}<\/span>\r\n    <\/div>`).join('');\r\n\r\n  document.getElementById('whyGrid').innerHTML = WHY_FEATURES.map(w => `\r\n    <div class=\"af-why-card\">\r\n      <div class=\"af-why-card-ico\">${w.icon}<\/div>\r\n      <div><div class=\"af-why-card-title\">${esc(w.title)}<\/div><div class=\"af-why-card-desc\">${esc(w.desc)}<\/div><\/div>\r\n    <\/div>`).join('');\r\n\r\n  document.getElementById('stepsRow').innerHTML = STEPS.map(s => `\r\n    <div class=\"af-step\">\r\n      <div class=\"af-step-icowrap\"><div class=\"af-step-ico\">${s.icon}<\/div><div class=\"af-step-num\">${s.n}<\/div><\/div>\r\n      <div class=\"af-step-title\">${esc(s.title)}<\/div>\r\n      <div class=\"af-step-desc\">${esc(s.desc)}<\/div>\r\n    <\/div>\r\n    ${s.hasArrow ? '<div class=\"af-step-arrow\">\u2192<\/div>' : ''}`).join('');\r\n\r\n  \/* ------------------------------------------------------------\r\n     Shipment mode toggle (Single\/Multiple) \u2014 visual only for now;\r\n     doesn't change the quote form's fields yet since \"multiple\r\n     shipments\" would need its own repeatable-row UI (same pattern as\r\n     request-quote.html's line items) that wasn't in the design ref.\r\n     ------------------------------------------------------------ *\/\r\n  window.setShipmentMode = function(mode){\r\n    document.getElementById('modeSingleBtn').classList.toggle('active', mode === 'single');\r\n    document.getElementById('modeMultiBtn').classList.toggle('active', mode === 'multiple');\r\n  };\r\n\r\n  \/* ------------------------------------------------------------\r\n     From\/To searchable autocomplete against real inland_freight_rates\r\n     routes. Simpler than sea freight's search \u2014 every row here has a\r\n     real named origin_city AND destination_city (no generic\r\n     \"Asia\"\/\"Europe\"-style null side), so matching is a straight ilike\r\n     on the city column.\r\n     ------------------------------------------------------------ *\/\r\n  let _routeSearchDebounce = {};\r\n  let _selectedOrigin = null, _selectedDestination = null;\r\n\r\n  function positionSearchList(inputId, listEl){\r\n    const inputEl = document.getElementById(inputId);\r\n    const r = inputEl.getBoundingClientRect();\r\n    listEl.style.left = r.left + 'px';\r\n    listEl.style.width = r.width + 'px';\r\n    listEl.style.top = (r.bottom + 4) + 'px';\r\n  }\r\n\r\n  window.handleRouteSearch = function(field, query){\r\n    if (field === 'origin') _selectedOrigin = null; else _selectedDestination = null;\r\n    document.getElementById('qcRateEstimate').style.display = 'none';\r\n    clearTimeout(_routeSearchDebounce[field]);\r\n    const inputId = field === 'origin' ? 'qcFrom' : 'qcTo';\r\n    const listEl = document.getElementById(field === 'origin' ? 'qcFromList' : 'qcToList');\r\n    if (!query || query.trim().length < 2) { listEl.style.display = 'none'; listEl.innerHTML = ''; return; }\r\n    _routeSearchDebounce[field] = setTimeout(async () => {\r\n      const col = field === 'origin' ? 'origin_city' : 'destination_city';\r\n      const { data } = await sb.from('inland_freight_rates').select(col).ilike(col, `%${query}%`).limit(8);\r\n      const unique = Array.from(new Set((data || []).map(r => r[col])));\r\n      positionSearchList(inputId, listEl);\r\n      if (!unique.length) { listEl.innerHTML = '<div class=\"search-empty\">No matching cities found.<\/div>'; listEl.style.display = 'block'; return; }\r\n      listEl.innerHTML = unique.map(name => `<div class=\"search-suggestion\" onclick=\"selectRouteCity('${field}', ${JSON.stringify(name).replace(\/\"\/g, '&quot;')})\">${esc(name)}<\/div>`).join('');\r\n      listEl.style.display = 'block';\r\n    }, 280);\r\n  };\r\n\r\n  window.selectRouteCity = function(field, name){\r\n    document.getElementById(field === 'origin' ? 'qcFrom' : 'qcTo').value = name;\r\n    document.getElementById(field === 'origin' ? 'qcFromList' : 'qcToList').style.display = 'none';\r\n    if (field === 'origin') _selectedOrigin = name; else _selectedDestination = name;\r\n    checkRouteMatch();\r\n  };\r\n\r\n  \/\/ Since the dropdowns are position:fixed (to escape the hero's\r\n  \/\/ overflow:hidden clipping), they no longer auto-follow their input\r\n  \/\/ on scroll, and a stray click elsewhere wouldn't close them either.\r\n  window.addEventListener('scroll', function(){\r\n    document.getElementById('qcFromList').style.display = 'none';\r\n    document.getElementById('qcToList').style.display = 'none';\r\n  }, true);\r\n  document.addEventListener('click', function(e){\r\n    if (!e.target.closest('.search-wrap') && !e.target.closest('.search-list')) {\r\n      document.getElementById('qcFromList').style.display = 'none';\r\n      document.getElementById('qcToList').style.display = 'none';\r\n    }\r\n  });\r\n\r\n  let _matchedRate = null;\r\n  async function checkRouteMatch(){\r\n    const box = document.getElementById('qcRateEstimate');\r\n    if (!_selectedOrigin || !_selectedDestination) { box.style.display = 'none'; _matchedRate = null; return; }\r\n    const { data } = await sb.from('inland_freight_rates')\r\n      .select('rate_min,currency,transit_days_min,transit_days_max,crosses_border')\r\n      .eq('origin_city', _selectedOrigin).eq('destination_city', _selectedDestination)\r\n      .not('rate_min', 'is', null)\r\n      .maybeSingle();\r\n    if (!data) {\r\n      box.className = 'qc-rate-box';\r\n      box.innerHTML = 'No direct rate on file for this exact route yet \u2014 you can still submit a request and our team will quote it.';\r\n      box.style.display = 'block';\r\n      _matchedRate = null;\r\n      return;\r\n    }\r\n    _matchedRate = data;\r\n    const trucks = Number(document.getElementById('qcWeight').value) || 0;\r\n    const days = (data.transit_days_min || data.transit_days_max)\r\n      ? `${data.transit_days_min || '?'}${data.transit_days_max && data.transit_days_max !== data.transit_days_min ? '\u2013' + data.transit_days_max : ''} days`\r\n      : '';\r\n    box.className = 'qc-rate-box';\r\n    box.innerHTML = `Rate: <b>${esc(b24Zar(data.rate_min, data.currency))}<\/b> per truck (FTL)` + (days ? ` &middot; ${esc(days)} transit` : '') + (data.crosses_border ? ' &middot; Cross-border' : '') + (trucks ? ` &middot; Estimated total: <b>${esc(b24Zar(data.rate_min * trucks, data.currency))}<\/b> for ${trucks} truck${trucks === 1 ? '' : 's'}` : '');\r\n    box.style.display = 'block';\r\n  }\r\n  document.getElementById('qcWeight').addEventListener('input', checkRouteMatch);\r\n\r\n  window.submitQuoteCalc = function(){\r\n    const errEl = document.getElementById('qcError');\r\n    const from = document.getElementById('qcFrom').value.trim();\r\n    const to = document.getElementById('qcTo').value.trim();\r\n    const trucks = document.getElementById('qcWeight').value;\r\n    if (!from || !to) { errEl.textContent = 'Please enter both origin and destination.'; return; }\r\n    if (!trucks) { errEl.textContent = 'Please enter the number of trucks needed.'; return; }\r\n    errEl.textContent = '';\r\n    \/\/ Goes to the future \/shipping\/book-and-pay.html booking flow (not\r\n    \/\/ built yet \u2014 this link will 404 until that page exists). Passes\r\n    \/\/ along the matched real rate\/currency when the two fields matched\r\n    \/\/ an actual inland_freight_rates row, so that page doesn't need to\r\n    \/\/ re-run the lookup.\r\n    const params = new URLSearchParams({\r\n      booking_type: 'cross_border_logistics',\r\n      origin: from, destination: to,\r\n      cargo: document.getElementById('qcDesc').value.trim(),\r\n      trucks: trucks,\r\n    });\r\n    if (_matchedRate) {\r\n      params.set('rate', _matchedRate.rate_min);\r\n      params.set('currency', _matchedRate.currency);\r\n    }\r\n    location.href = 'https:\/\/app.builders24.net\/shipping\/book-and-pay.html?' + params.toString();\r\n  };\r\n\r\n  \/* ------------------------------------------------------------\r\n     Key Corridors \u2014 real routes from inland_freight_rates, showing\r\n     the real computed rate_min (tiered markup already applied), real\r\n     transit days, and whether the corridor crosses a border.\r\n     ------------------------------------------------------------ *\/\r\n  async function loadRoutes(){\r\n    const grid = document.getElementById('routesGrid');\r\n    try {\r\n      const { data, error } = await sb.from('inland_freight_rates')\r\n        .select('origin_city,destination_city,rate_min,currency,transit_days_min,transit_days_max,crosses_border')\r\n        .not('rate_min', 'is', null)\r\n        .order('rate_min', { ascending: true })\r\n        .limit(4);\r\n      if (error) throw error;\r\n      if (!data || !data.length) {\r\n        grid.innerHTML = '<div class=\"af-routes-empty\">No cross border routes published yet.<\/div>';\r\n        return;\r\n      }\r\n      grid.innerHTML = data.map(r => {\r\n        const days = (r.transit_days_min || r.transit_days_max)\r\n          ? `${r.transit_days_min || '?'}${r.transit_days_max && r.transit_days_max !== r.transit_days_min ? '\u2013' + r.transit_days_max : ''} days`\r\n          : '';\r\n        return `\r\n        <div class=\"af-route-card\">\r\n          <div class=\"af-route-plane\">\ud83d\ude9a<\/div>\r\n          <div class=\"af-route-pair\">${esc(r.origin_city)} \u2192 ${esc(r.destination_city)}<\/div>\r\n          <div class=\"af-route-days\">${days ? esc(days) : ''}${r.crosses_border ? (days ? ' \u00b7 Cross-border' : 'Cross-border') : ''}<\/div>\r\n          <div class=\"af-route-price\">From ${esc(b24Zar(r.rate_min, r.currency))} per truck<\/div>\r\n        <\/div>`;\r\n      }).join('');\r\n    } catch (e) {\r\n      console.warn('inland_freight_rates query failed:', e.message);\r\n      grid.innerHTML = '<div class=\"af-routes-empty\">Route pricing isn\\u2019t available right now \u2014 check back soon.<\/div>';\r\n    }\r\n  }\r\n  loadRoutes();\r\n\r\n  if (typeof updateCartBadge === 'function') updateCartBadge();\r\n})();\r\n<\/script>\r\n<\/body>\r\n<\/html>\t\t\t\t<\/div>\n\t\t\n<\/div>\n\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Cross-Border Logistics from Zimbabwe | Road Freight to South Africa, Zambia, Botswana &amp; Mozambique | Builders24 Zimbabwe CROSS BORDER LOGISTICS Move Your Goods Across Borders from Zimbabwe Builders24 Logistics provides reliable cross-border road freight from Zimbabwe into the SADC region, on routes such as Zimbabwe to South Africa, Zimbabwe to Zambia, Zimbabwe to Botswana, Zimbabwe to Mozambique and Zimbabwe to Namibia, and onward to other SADC destinations. Full truck load (FTL) service for Zimbabwean businesses, manufacturers and exporters, with a live quote in minutes. Get an Instant Cross Border Quote Fill in your shipment details and get a live quote from our road freight partners in minutes. \ud83d\ude9a Single Shipment \ud83d\ude9a\ud83d\ude9a Multiple Shipments From (Origin City) \ud83d\udccd To (Destination City) \ud83d\udccd Number of Trucks (Full Truck Load) \ud83d\ude9a Cargo Description \ud83d\udcdd Book &amp; Pay \u2192 \ud83d\udd12 Your information is secure and confidential. WHY CHOOSE BUILDERS24 CROSS BORDER LOGISTICS Cross-Border Roads. Local Support. We work with trusted road freight operators to give you competitive FTL rates, real border-post routing and complete visibility from pickup to delivery. View Our Services \u2192 POPULAR CROSS BORDER CORRIDORS Key Corridors We offer frequent road freight services from Zimbabwe along major SADC corridors, with real border-post routing. Loading routes\u2026 SIMPLE PROCESS How It Works<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"footnotes":""},"class_list":["post-153225","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/builders24.net\/zw\/wp-json\/wp\/v2\/pages\/153225","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/builders24.net\/zw\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/builders24.net\/zw\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/builders24.net\/zw\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/builders24.net\/zw\/wp-json\/wp\/v2\/comments?post=153225"}],"version-history":[{"count":3,"href":"https:\/\/builders24.net\/zw\/wp-json\/wp\/v2\/pages\/153225\/revisions"}],"predecessor-version":[{"id":153444,"href":"https:\/\/builders24.net\/zw\/wp-json\/wp\/v2\/pages\/153225\/revisions\/153444"}],"wp:attachment":[{"href":"https:\/\/builders24.net\/zw\/wp-json\/wp\/v2\/media?parent=153225"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}