1:"$Sreact.fragment" 8:I[22016,["/_next/static/chunks/09319k21oxyrj.js","/_next/static/chunks/03-hxrp~efw2j.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/172o.szw5ilgb.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0a3t_oyn5arl-.js"],""] 9:I[2018,["/_next/static/chunks/09319k21oxyrj.js","/_next/static/chunks/03-hxrp~efw2j.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/172o.szw5ilgb.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0a3t_oyn5arl-.js"],"ScrollReveal"] 13:I[97367,["/_next/static/chunks/09319k21oxyrj.js","/_next/static/chunks/03-hxrp~efw2j.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/172o.szw5ilgb.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] 14:"$Sreact.suspense" 16:I[5500,["/_next/static/chunks/09319k21oxyrj.js","/_next/static/chunks/03-hxrp~efw2j.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/172o.szw5ilgb.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0a3t_oyn5arl-.js"],"Image"] 17:I[23096,["/_next/static/chunks/09319k21oxyrj.js","/_next/static/chunks/03-hxrp~efw2j.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/172o.szw5ilgb.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0a3t_oyn5arl-.js"],"default"] 2:T3d21, .dm-single-blog { --dm-red: #c01227; --dm-red-hover: #e31d32; --dm-radius-card: 22px; --dm-radius-img: 20px; --dm-radius-badge: 8px; --dm-shadow-card: 0 4px 24px rgba(15, 23, 42, 0.05); --dm-border: 1px solid rgba(15, 23, 42, 0.09); --dm-space-p: 24px; --dm-space-h: 32px; --dm-space-img: 32px; --dm-space-quote: 40px; --dm-sticky-top: 138px; --dm-measure: min(1100px, 100%); font-family: var(--font-manrope), sans-serif; } /* Heading normalization — beat the global theme's .elementor-kit-5 h1–h6 (120/80/60px UPPERCASE) rules with !important on our own classes. */ .dm-single-blog :where(h1, h2, h3, h4, h5, h6) { font-family: var(--font-manrope), sans-serif !important; text-transform: none !important; font-style: normal !important; font-weight: 800; } /* Neutralize the theme's .elementor-kit-5 a (red color + underline, specificity 0-1-1) so blog links keep our colors and never get underlined. */ .dm-single-blog a { text-decoration: none !important; } /* ── Page banner — tall (homepage-scale); only badge + title inside ── */ /* Compound selector (specificity 20) + !important beats the global 800px single-class height rules so the blog banner can use viewport heights. */ .custom-standard-hero-card.dm-banner-card { height: 90vh !important; min-height: 85vh !important; } @media (max-width: 1024px) { .custom-standard-hero-card.dm-banner-card { height: 80vh !important; min-height: 75vh !important; } } @media (max-width: 600px) { .custom-standard-hero-card.dm-banner-card { height: 78vh !important; min-height: 72vh !important; } } .dm-banner-inner { position: relative; width: 100%; height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; gap: clamp(22px, 2.6vw, 34px); padding: clamp(48px, 8vh, 96px) clamp(20px, 5vw, 48px); } .dm-banner-category { display: inline-block; background: var(--dm-red); color: #fff; font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.6px; padding: 9px 18px; border-radius: 999px; box-shadow: 0 8px 22px rgba(192,18,39,0.45); } .dm-banner-title { font-family: var(--font-manrope), sans-serif !important; font-size: clamp(34px, 5vw, 60px) !important; font-weight: 850 !important; line-height: 1.16 !important; letter-spacing: -1.2px !important; color: #ffffff !important; margin: 0; max-width: 820px; text-wrap: balance; text-shadow: 0 2px 30px rgba(0,0,0,0.38); } @media (max-width: 1024px) { .dm-banner-title { font-size: clamp(32px, 6vw, 48px) !important; max-width: 90%; } } @media (max-width: 600px) { .dm-banner-title { font-size: clamp(28px, 8vw, 38px) !important; max-width: 90%; } } /* ── Content wrap — begins immediately below the banner ── */ /* Shared content container: the SAME max-width + horizontal padding is used by BlogPostFooter (.dm-blog-footer-inner) so the article body, headings, images, Prev/Next, Related Articles and the CTA banner all align to one grid with identical left/right edges. Keep both in sync. */ .dm-blog-wrap { max-width: 1280px; margin: 0 auto; /* 20px mobile padding floor → 40px on desktop; matches the footer container. */ padding: clamp(14px, 2vw, 26px) clamp(20px, 4vw, 40px) 0; } /* ── Article meta bar (directly under the hero) ── */ .dm-meta-bar { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 14px 24px; padding: clamp(20px, 2.6vw, 30px) 0; margin-bottom: clamp(26px, 3vw, 44px); border-bottom: 1px solid rgba(15,23,42,0.10); } .dm-meta-breadcrumb ol { list-style: none; display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 0; padding: 0; font-size: 13px; font-weight: 600; color: #64748b; } .dm-meta-breadcrumb a { color: #64748b !important; text-decoration: none; transition: color .2s ease; } .dm-meta-breadcrumb a:hover { color: var(--dm-red) !important; } .dm-meta-sep { color: #cbd5e1; } .dm-meta-current { color: #0f172a; font-weight: 700; max-width: min(40ch, 46vw); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } @media (max-width: 600px) { .dm-meta-current { max-width: 56vw; } } .dm-meta-items { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 20px; } .dm-meta-item { display: inline-flex; align-items: center; gap: 7px; font-size: 13.5px; font-weight: 600; color: #475569; } .dm-meta-item svg { color: var(--dm-red); flex: 0 0 auto; } .dm-meta-author { color: #0f172a; font-weight: 700; } @media (max-width: 600px) { .dm-meta-bar { gap: 12px; } } .dm-blog-layout { display: grid; grid-template-columns: minmax(0,1fr) 320px; /* Tighter gap gives the reading column more room next to the 320px sidebar. */ gap: clamp(28px, 3vw, 56px); align-items: start; } @media (max-width: 1024px) { .dm-blog-layout { grid-template-columns: 1fr; gap: 48px; } /* Single-column (tablet/mobile): cap the reading column and centre it so the article never sits left-aligned with a large empty right gutter. */ .dm-blog-main { max-width: 900px; margin-inline: auto; } } .dm-blog-main { min-width: 0; } /* ── Intro lead ── */ .dm-blog-intro { max-width: var(--dm-measure); font-size: clamp(18px, 1.5vw, 20px); line-height: 1.65; font-weight: 500; color: #475569; margin: 0 0 clamp(26px, 3vw, 38px); padding-left: 20px; border-left: 3px solid var(--dm-red); } /* ── Article body ── */ .dm-article-body { max-width: var(--dm-measure); } .dm-article-p { font-size: 18px !important; line-height: 1.8 !important; color: #334155; font-weight: 450; margin: 0 0 var(--dm-space-p); } .dm-article-h2 { font-size: clamp(23px, 2vw, 30px) !important; font-weight: 800 !important; letter-spacing: -.3px !important; color: #0f172a !important; line-height: 1.3 !important; margin: 48px 0 var(--dm-space-h); text-wrap: balance; } /* Each article block is wrapped in its OWN ScrollReveal
, so a bare :first-child rule matched every heading (each is the only child of its wrapper) and zeroed its top margin — collapsing the gap above every section heading. Scope the reset to only the article body's first block. */ .dm-article-body > :first-child :where(.dm-article-h2, .dm-article-h3), .dm-article-body > .dm-article-h2:first-child, .dm-article-body > .dm-article-h3:first-child { margin-top: 0; } .dm-article-h3 { font-size: clamp(19px, 1.5vw, 23px) !important; font-weight: 800 !important; letter-spacing: -.2px !important; color: #1e293b !important; line-height: 1.34 !important; margin: 40px 0 18px; text-wrap: balance; } @media (max-width: 600px) { .dm-article-p { font-size: 16px !important; } .dm-article-ul li, .dm-article-ol li { font-size: 15.5px; } .dm-article-h2 { font-size: clamp(22px, 6vw, 28px) !important; margin-top: 38px; } .dm-article-h3 { font-size: clamp(18px, 5vw, 22px) !important; } } .dm-article-ul, .dm-article-ol { /* Top margin (was 0) separates the list from the paragraph above it; matching bottom margin keeps it clear of the next heading/paragraph. Slightly larger than --dm-space-p so the list reads as its own block. */ margin: clamp(26px, 2.4vw, 32px) 0 clamp(26px, 2.4vw, 32px); padding-left: 2px; list-style: none; display: flex; flex-direction: column; gap: 15px; } /* Prefixed with .dm-article-body so these beat the theme's global ".logico-front-end ul li:before" fontello-glyph bullet (specificity 0,1,3), which otherwise replaces our clean red dot with a misaligned checkmark glyph and adds its own 1.7em indent. */ .dm-article-body .dm-article-ul li, .dm-article-body .dm-article-ol li { position: relative; padding-left: 34px; font-size: 17px; line-height: 1.65; color: #334155; font-weight: 450; } .dm-article-body .dm-article-ul li::before { content: ""; position: absolute; left: 7px; top: 10px; width: 8px; height: 8px; border-radius: 50%; background: var(--dm-red); /* kill any inherited fontello glyph from the global rule */ font-size: 0; line-height: 0; } .dm-article-ol { counter-reset: dm-li; } .dm-article-body .dm-article-ol li { counter-increment: dm-li; } .dm-article-body .dm-article-ol li::before { content: counter(dm-li); position: absolute; left: 0; top: 0; width: 24px; height: 24px; border-radius: 7px; background: rgba(192,18,39,0.10); color: var(--dm-red); font-size: 12px; font-weight: 800; display: flex; align-items: center; justify-content: center; } /* ── Quote ── */ .dm-article-quote { position: relative; margin: var(--dm-space-quote) 0; padding: 30px 32px 30px 64px; background: linear-gradient(135deg, #fbf2f3 0%, #fdf7f8 100%); border-left: 4px solid var(--dm-red); border-radius: 0 18px 18px 0; box-shadow: 0 8px 28px rgba(192, 18, 39, 0.06); } .dm-article-quote::before { content: "\201C"; position: absolute; left: 22px; top: 8px; font-family: Georgia, "Times New Roman", serif; font-size: 64px; line-height: 1; color: rgba(192, 18, 39, 0.28); font-weight: 700; } .dm-article-quote p { font-size: clamp(19px, 2vw, 23px); line-height: 1.5; font-weight: 600; font-style: italic; color: #1e293b; margin: 0; } .dm-article-quote cite { display: block; margin-top: 16px; font-size: 13px; font-weight: 700; font-style: normal; color: var(--dm-red); text-transform: uppercase; letter-spacing: .6px; } @media (max-width: 600px) { .dm-article-quote { padding: 26px 22px; } .dm-article-quote::before { display: none; } } /* ── Images ── */ .dm-article-figure { margin: var(--dm-space-img) 0; } .dm-article-figure-img { position: relative; display: block; width: 100%; aspect-ratio: 16 / 9; border-radius: var(--dm-radius-img); overflow: hidden; box-shadow: 0 14px 34px rgba(15,23,42,0.10); } .dm-article-figure figcaption { margin-top: 14px; font-size: 13.5px; color: #94a3b8; font-weight: 500; text-align: center; font-style: italic; } /* ── Sidebar ── */ .dm-blog-aside-wrap { position: relative; } .dm-blog-sidebar { display: flex; flex-direction: column; gap: 18px; position: sticky; top: var(--dm-sticky-top); } @media (max-width: 1024px) { .dm-blog-sidebar { position: static; gap: 20px; } } .dm-blog-widget { background: #fff; border: var(--dm-border); border-radius: var(--dm-radius-card); padding: 20px; box-shadow: var(--dm-shadow-card); } .dm-blog-widget-title { font-size: 13px !important; font-weight: 700 !important; text-transform: uppercase !important; letter-spacing: .8px !important; line-height: 1.35 !important; color: #0f172a !important; margin: 0 0 15px; padding: 0 0 12px; border-bottom: 1px solid rgba(15,23,42,0.08); overflow: visible; white-space: normal; word-break: normal; } /* Search */ .dm-sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; } .dm-blog-search { position: relative; } .dm-blog-search-form { position: relative; } .dm-blog-search-input { width: 100%; height: 46px; border: 1.5px solid #e2e8f0; border-radius: 12px; padding: 0 42px 0 15px; font-size: 14px; font-family: inherit; color: #0f172a; background: #f8fafc; transition: border-color .2s ease, box-shadow .2s ease, background .2s ease; } .dm-blog-search-input::placeholder { color: #9c9c9c; } .dm-blog-search-input:focus { outline: none; border-color: var(--dm-red); background: #fff; box-shadow: 0 0 0 3px rgba(192,18,39,0.11); } .dm-blog-search-icon { position: absolute; right: 14px; top: 50%; transform: translateY(-50%); color: #94a3b8; pointer-events: none; display: flex; } .dm-blog-search-results { position: absolute; z-index: 20; top: calc(100% + 8px); left: 0; right: 0; background: #fff; border: 1px solid rgba(15,23,42,0.10); border-radius: 14px; box-shadow: 0 18px 42px rgba(15,23,42,0.14); overflow: hidden; } .dm-blog-search-results ul { list-style: none; margin: 0; padding: 6px; } .dm-blog-search-result { display: flex; flex-direction: column; gap: 3px; padding: 10px 12px; border-radius: 10px; text-decoration: none; transition: background .15s ease; } .dm-blog-search-result:hover { background: #f8fafc; } .dm-blog-search-result-cat { font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: .8px; color: var(--dm-red); } .dm-blog-search-result-title { font-size: 13.5px; font-weight: 600; color: #1e293b; line-height: 1.35; } .dm-blog-search-empty { margin: 0; padding: 14px 12px; font-size: 13px; color: #64748b; } /* Recent posts */ .dm-blog-recent { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 15px; } .dm-blog-recent-item { display: flex; gap: 13px; align-items: center; text-decoration: none; } .dm-blog-recent-thumb { position: relative; flex: 0 0 62px; width: 62px; height: 62px; border-radius: 13px; overflow: hidden; background: #f1f5f9; } .dm-blog-recent-meta { display: flex; flex-direction: column; gap: 4px; min-width: 0; } .dm-blog-recent-title { font-size: 13.5px; font-weight: 700; color: #1e293b; line-height: 1.35; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; transition: color .2s ease; } .dm-blog-recent-item:hover .dm-blog-recent-title { color: var(--dm-red); } .dm-blog-recent-date { font-size: 11.5px; font-weight: 600; color: #94a3b8; } /* Categories */ .dm-blog-categories { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; } .dm-blog-category-item { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 11px 2px; text-decoration: none; font-size: 14px; font-weight: 600; color: #334155 !important; border-bottom: 1px solid rgba(15,23,42,0.06); transition: color .2s ease, padding-left .2s ease; } .dm-blog-categories li:last-child .dm-blog-category-item { border-bottom: none; } .dm-blog-category-item:hover { color: var(--dm-red); padding-left: 6px; } .dm-blog-category-item > span:first-child { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .dm-blog-category-count { flex: 0 0 auto; font-size: 11px; font-weight: 800; color: #94a3b8; background: #f1f5f9; min-width: 24px; height: 22px; border-radius: 7px; display: inline-flex; align-items: center; justify-content: center; padding: 0 7px; } /* CTA card */ .dm-blog-cta-card { background: #1f1f1f; border-color: #1f1f1f; } .dm-blog-cta-title { font-size: 18px !important; font-weight: 800 !important; color: #fff !important; line-height: 1.32 !important; margin: 0 0 10px; letter-spacing: -.2px !important; } .dm-blog-cta-text { font-size: 13.5px; line-height: 1.6; color: #c7c7c7; margin: 0 0 20px; font-weight: 450; } .dm-blog-cta-btn { display: inline-flex; align-items: center; gap: 8px; background: var(--dm-red); color: #fff !important; font-size: 13.5px; font-weight: 700; padding: 12px 22px; border-radius: 12px; text-decoration: none; transition: background .2s ease, transform .2s ease; } .dm-blog-cta-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); } 0:{"rsc":["$","$1","c",{"children":[["$","div",null,{"className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"Article\",\"headline\":\"Battery Simulation: The Secret to EV Route Pre-Validation\",\"description\":\"Before a single rider leaves the hub, MileTruth™ simulates every route against real charge capacity — eliminating mid-route failures and protecting your fulfillment rate.\",\"image\":[\"https://www.doormile.com/images/blog-post-pic-3.jpeg\"],\"datePublished\":\"2025-06-12T00:00:00.000Z\",\"dateModified\":\"2025-06-12T00:00:00.000Z\",\"author\":{\"@type\":\"Organization\",\"name\":\"Doormile Team\",\"url\":\"https://www.doormile.com\"},\"publisher\":{\"@type\":\"Organization\",\"name\":\"Doormile\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://www.doormile.com/images/cropped-image-2.png\"}},\"mainEntityOfPage\":{\"@type\":\"WebPage\",\"@id\":\"https://www.doormile.com/blog/battery-simulation-the-secret-to-ev-route-pre-validation\"},\"articleSection\":\"EV Fleet\"}"}}],["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https://www.doormile.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog\",\"item\":\"https://www.doormile.com/blog\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Battery Simulation: The Secret to EV Route Pre-Validation\",\"item\":\"https://www.doormile.com/blog/battery-simulation-the-secret-to-ev-route-pre-validation\"}]}"}}],["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":[["$","article",null,{"className":"dm-single-blog","children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$2"}}],"$L3","$L4"]}],"$L5"]}]}]]}],["$L6"],"$L7"]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"TAuyMDUsvWIfF6U_s0MKe"} 3:["$","div",null,{"className":"custom-standard-hero-container","children":["$","div",null,{"className":"custom-standard-hero-card dm-banner-card","style":{"backgroundImage":"url(/images/blog-post-pic-3.jpeg)","--hero-overlay":"linear-gradient(180deg, rgba(0,0,0,0.38) 0%, rgba(0,0,0,0.46) 55%, rgba(0,0,0,0.60) 100%)"},"children":["$","div",null,{"className":"e-con-inner dm-banner-inner","children":[["$","span",null,{"className":"dm-banner-category","children":"EV Fleet"}],["$","h1",null,{"className":"dm-banner-title","children":"Battery Simulation: The Secret to EV Route Pre-Validation"}]]}]}]}] 4:["$","div",null,{"className":"dm-blog-wrap","children":[["$","div",null,{"className":"dm-meta-bar","children":[["$","nav",null,{"className":"dm-meta-breadcrumb","aria-label":"Breadcrumb","children":["$","ol",null,{"children":[["$","li",null,{"children":["$","$L8",null,{"href":"/","children":"Home"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"children":["$","$L8",null,{"href":"/blog","children":"Blog"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"aria-current":"page","className":"dm-meta-current","children":"Battery Simulation: The Secret to EV Route Pre-Validation"}]]}]}],["$","div",null,{"className":"dm-meta-items","children":[["$","span",null,{"className":"dm-meta-item dm-meta-author","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","path",null,{"d":"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"}],["$","circle",null,{"cx":"12","cy":"7","r":"4"}]]}],"Doormile Team"]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","rect",null,{"x":"3","y":"4","width":"18","height":"18","rx":"2"}],["$","line",null,{"x1":"16","y1":"2","x2":"16","y2":"6"}],["$","line",null,{"x1":"8","y1":"2","x2":"8","y2":"6"}],["$","line",null,{"x1":"3","y1":"10","x2":"21","y2":"10"}]]}],["$","time",null,{"dateTime":"2025-06-12","children":"Jun 12, 2025"}]]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","circle",null,{"cx":"12","cy":"12","r":"9"}],["$","polyline",null,{"points":"12 7 12 12 15 14"}]]}],2," min read"]}]]}]]}],["$","div",null,{"className":"dm-blog-layout","children":[["$","div",null,{"className":"dm-blog-main","children":[["$","p",null,{"className":"dm-blog-intro","children":"A stranded EV is not just a late delivery — it is a vehicle out of service, a customer let down, and a recovery cost. Simulating the route against real charge capacity before dispatch is how you make sure it never happens."}],["$","div",null,{"className":"dm-article-body","children":[["$","$L9","0",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"In last-mile logistics, the difference between a good day and a missed SLA is rarely a single dramatic failure — it is the quiet accumulation of small inefficiencies. Battery Simulation: The Secret to EV Route Pre-Validation looks at how Doormile turns those margins into measurable advantage, and why a precision-first approach consistently outperforms guesswork on the road."}]}],["$","$L9","1",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"Why this matters for modern fleets"}]}],["$","$L9","2",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"Every additional kilometre carries cost: fuel or charge, rider hours, vehicle wear, and the risk of a late delivery. When routing decisions are made on intuition or static rules, those costs compound across hundreds of stops. Treating the route as a solvable optimisation problem — not a best guess — is what separates scalable operations from ones that simply add more vehicles."}]}],["$","$L9","3",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ul",null,{"className":"dm-article-ul","children":[["$","li","0",{"children":"Fewer vehicles deployed for the same delivery volume"}],["$","li","1",{"children":"Lower cost-per-drop through tighter, smarter sequencing"}],["$","li","2",{"children":"Predictable ETAs that protect customer trust and SLA targets"}],["$","li","3",{"children":"A cleaner, lower-emission footprint per parcel delivered"}]]}]}],["$","$L9","4",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h3",null,{"className":"dm-article-h3","children":"From data to decision"}]}],["$","$L9","5",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"Doormile's MileTruth™ engine ingests orders, constraints and live conditions, then evaluates the routing problem across parallel strategy universes before committing to a plan. The result is a dispatch decision grounded in mathematics rather than heuristics — validated before a single rider leaves the hub."}]}],"$La","$Lb","$Lc","$Ld","$Le","$Lf"]}]]}],"$L10"]}]]}] 11:T1fa8, .dm-blog-footer { font-family: var(--font-manrope), sans-serif; --dm-red: #c01227; --dm-red-hover: #e31d32; /* The global theme applies 72px top/bottom section padding — strip it so the inner container is the single source of vertical rhythm (no double gap). */ padding: 0 !important; } /* Neutralize the global theme's 120/80/60px UPPERCASE heading rules */ .dm-blog-footer :where(h1, h2, h3, h4, h5, h6) { font-family: var(--font-manrope), sans-serif !important; text-transform: none !important; font-style: normal !important; font-weight: 800; } /* Neutralize the theme's .elementor-kit-5 a (red color + underline) */ .dm-blog-footer a { text-decoration: none !important; } /* Shared content container — mirrors SingleBlog's .dm-blog-wrap (same 1280px max-width + 20→40px horizontal padding) so Prev/Next, Related and the CTA align to the exact same left/right edges as the article body above. Vertical rhythm: ~64px from the article end to the Prev/Next divider, then a consistent ~64–72px section→section gap (no 120px+ voids). */ .dm-blog-footer-inner { max-width: 1280px; margin: 0 auto; /* Compact vertical rhythm on an 8px system. Top padding sets the article→Prev/Next gap (~24–32px); the inter-section gap sets the Prev/Next→Related gap (~32–48px). No large arbitrary voids. */ /* Minimal bottom padding — the global site footer already contributes its own 20px top inset, so the CTA banner sits close to it without a void. */ padding: clamp(24px, 3vw, 32px) clamp(20px, 4vw, 40px) clamp(8px, 1.5vw, 16px); display: flex; flex-direction: column; gap: clamp(32px, 4vw, 48px); } /* Prev / Next */ .dm-prevnext { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; /* Halved from 40px: tight divider→cards spacing without crowding. */ padding-top: clamp(16px, 2vw, 24px); border-top: 1px solid rgba(15,23,42,0.08); } @media (max-width: 640px) { .dm-prevnext { grid-template-columns: 1fr; } } .dm-prevnext-placeholder { display: block; } .dm-prevnext-card { display: flex; gap: 16px; align-items: center; padding: 16px; background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px; text-decoration: none; transition: transform .3s ease, box-shadow .3s ease, border-color .3s ease; } .dm-prevnext-card:hover { transform: translateY(-4px); border-color: rgba(192,18,39,0.2); box-shadow: 0 16px 34px rgba(192,18,39,0.10); } .dm-prevnext-thumb { position: relative; flex: 0 0 80px; width: 80px; height: 80px; border-radius: 16px; overflow: hidden; background: #f1f5f9; } .dm-prevnext-text { display: flex; flex-direction: column; gap: 5px; min-width: 0; } .dm-prevnext-next { text-align: right; } .dm-prevnext-next .dm-prevnext-text { align-items: flex-end; } .dm-prevnext-label { display: inline-flex; align-items: center; gap: 6px; font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: 1px; color: var(--dm-red); } .dm-prevnext-cat { font-size: 11px; font-weight: 700; color: #94a3b8; text-transform: uppercase; letter-spacing: .5px; } .dm-prevnext-title { font-size: 15.5px; font-weight: 700; color: #1e293b; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; transition: color .2s ease; } .dm-prevnext-card:hover .dm-prevnext-title { color: var(--dm-red); } /* Related */ .dm-related-heading { font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 850 !important; letter-spacing: -.4px !important; line-height: 1.25 !important; color: #0f172a !important; margin: 0 0 24px; } .dm-related-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; } @media (max-width: 1024px) { .dm-related-grid { grid-template-columns: repeat(2, 1fr); } } @media (max-width: 700px) { .dm-related-grid { grid-template-columns: 1fr; gap: 24px; } } .dm-related-card { display: flex; flex-direction: column; height: 100%; background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px; overflow: hidden; box-shadow: 0 4px 24px rgba(15,23,42,0.05); text-decoration: none; transition: transform .4s cubic-bezier(0.2,0.8,0.2,1), box-shadow .4s ease, border-color .4s ease; } .dm-related-card:hover { transform: translateY(-8px); box-shadow: 0 22px 44px rgba(192,18,39,0.13); border-color: rgba(192,18,39,0.2); } .dm-related-img { position: relative; width: 100%; aspect-ratio: 16 / 10; overflow: hidden; background: #f1f5f9; } .dm-related-img img { transition: transform .5s cubic-bezier(0.2,0.8,0.2,1); } .dm-related-card:hover .dm-related-img img { transform: scale(1.05); } .dm-related-badge { position: absolute; top: 14px; left: 14px; z-index: 5; background: var(--dm-red); color: #fff; font-size: 9px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.2px; padding: 5px 11px; border-radius: 8px; box-shadow: 0 4px 12px rgba(192,18,39,0.25); } .dm-related-body { display: flex; flex-direction: column; flex: 1; padding: 22px; } .dm-related-card-title { font-size: 17px !important; font-weight: 800 !important; color: #1e293b !important; line-height: 1.4 !important; letter-spacing: -.2px !important; margin: 0 0 10px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; transition: color .2s ease; } .dm-related-card:hover .dm-related-card-title { color: var(--dm-red); } .dm-related-card-excerpt { font-size: 13.5px; font-weight: 500; color: #64748b; line-height: 1.6; margin: 0 0 18px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; } .dm-related-readmore { margin-top: auto; display: inline-flex; align-items: center; gap: 7px; font-size: 12.5px; font-weight: 800; color: var(--dm-red); text-transform: uppercase; letter-spacing: .6px; } .dm-related-readmore-arrow { transition: transform .3s cubic-bezier(0.2,0.8,0.2,1); } .dm-related-card:hover .dm-related-readmore-arrow { transform: translateX(5px); } /* Contact CTA banner */ .dm-blog-contact-cta { display: flex; align-items: center; justify-content: space-between; gap: 32px; flex-wrap: wrap; background: linear-gradient(135deg, #1a1a1a 0%, #2d1417 100%); border-radius: 30px; padding: clamp(32px, 4vw, 56px); position: relative; overflow: hidden; } .dm-blog-contact-cta::after { content: ""; position: absolute; right: -80px; top: -80px; width: 300px; height: 300px; background: radial-gradient(circle, rgba(192,18,39,0.40), transparent 70%); pointer-events: none; } .dm-blog-contact-cta-content { position: relative; z-index: 1; max-width: 640px; } .dm-blog-contact-eyebrow { display: inline-block; font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.4px; color: #ff8088; margin-bottom: 14px; } .dm-blog-contact-title { font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 800 !important; line-height: 1.25 !important; letter-spacing: -.3px !important; color: #ffffff !important; margin: 0 0 12px; text-wrap: balance; } .dm-blog-contact-sub { font-size: 15.5px; line-height: 1.65; color: #e2e2e2; margin: 0; font-weight: 450; } .dm-blog-contact-btn { position: relative; z-index: 1; flex-shrink: 0; display: inline-flex; align-items: center; justify-content: center; gap: 10px; background: var(--dm-red); color: #fff !important; font-size: 15px; font-weight: 700; padding: 16px 32px; border-radius: 16px; text-decoration: none; box-shadow: 0 10px 26px rgba(192,18,39,0.34); transition: background .2s ease, transform .2s ease; } .dm-blog-contact-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); } @media (max-width: 720px) { .dm-blog-contact-cta { flex-direction: column; align-items: flex-start; gap: 26px; } .dm-blog-contact-btn { width: 100%; } } 5:["$","section",null,{"className":"dm-blog-footer","aria-label":"More articles","children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$11"}}],"$L12"]}] 6:["$","script","script-0",{"src":"/_next/static/chunks/0a3t_oyn5arl-.js","async":true}] 7:["$","$L13",null,{"children":["$","$14",null,{"name":"Next.MetadataOutlet","children":"$@15"}]}] a:["$","$L9","6",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","figure",null,{"className":"dm-article-figure","children":[["$","span",null,{"className":"dm-article-figure-img","children":["$","$L16",null,{"src":"/images/blog-post-pic-3.jpeg","alt":"Battery Simulation: The Secret to EV Route Pre-Validation","fill":true,"sizes":"(max-width: 768px) 100vw, 760px","style":{"objectFit":"cover"}}]}],["$","figcaption",null,{"children":"EV Fleet — operational intelligence applied at the point of dispatch."}]]}]}] b:["$","$L9","7",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","blockquote",null,{"className":"dm-article-quote","children":[["$","p",null,{"children":"We don't guess the route. We calculate it — and we prove it works before the wheels start turning."}],["$","cite",null,{"children":["— ","Doormile Operations"]}]]}]}] c:["$","$L9","8",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"Putting it into practice"}]}] d:["$","$L9","9",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"The teams that benefit most treat routing intelligence as core infrastructure, not an afterthought. Start by measuring your current cost-per-drop and SLA adherence, then let a precision engine reveal where distance, time and capacity are being lost. The gains are rarely theoretical — they show up directly in the next dispatch cycle."}]}] e:["$","$L9","10",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ol",null,{"className":"dm-article-ol","children":[["$","li","0",{"children":"Benchmark today's distance, fleet size and on-time rate."}],["$","li","1",{"children":"Feed real constraints — capacity, windows, charge — into the engine."}],["$","li","2",{"children":"Validate routes against real-world conditions before dispatch."}],["$","li","3",{"children":"Measure the delta, then scale the approach across hubs."}]]}]}] f:["$","$L9","11",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"Smarter routing is not about working harder on the road — it is about making the right decision before the journey begins. That is the foundation every Doormile deployment is built on."}]}] 10:["$","div",null,{"className":"dm-blog-aside-wrap","children":["$","aside",null,{"className":"dm-blog-sidebar","aria-label":"Blog sidebar","children":[["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Search"}],["$","$L17",null,{}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Recent Posts"}],["$","ul",null,{"className":"dm-blog-recent","children":[["$","li","how-ai-is-transforming-last-mile-ev-delivery",{"children":["$","$L8",null,{"href":"/blog/how-ai-is-transforming-last-mile-ev-delivery","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L16",null,{"src":"/images/blog-post-pic-17.png","alt":"How AI Is Transforming Last-Mile EV Delivery","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"How AI Is Transforming Last-Mile EV Delivery"}],["$","time",null,{"dateTime":"2025-10-02","className":"dm-blog-recent-date","children":"Oct 2, 2025"}]]}]]}]}],["$","li","42-less-distance-insights-from-our-hyderabad-hub",{"children":["$","$L8",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L16",null,{"src":"/images/blog-post-pic-15.png","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}],["$","time",null,{"dateTime":"2025-09-18","className":"dm-blog-recent-date","children":"Sep 18, 2025"}]]}]]}]}],["$","li","miletruth-ai-10-stages-to-smarter-dispatch",{"children":["$","$L8",null,{"href":"/blog/miletruth-ai-10-stages-to-smarter-dispatch","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L16",null,{"src":"/images/blog-post-pic-31.png","alt":"MileTruth™ AI — 10 Stages to Smarter Dispatch","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"MileTruth™ AI — 10 Stages to Smarter Dispatch"}],["$","time",null,{"dateTime":"2025-09-05","className":"dm-blog-recent-date","children":"Sep 5, 2025"}]]}]]}]}],["$","li","the-ev-paradox-solving-range-anxiety-for-urban-fleets",{"children":["$","$L8",null,{"href":"/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L16",null,{"src":"/images/ev-paradox.png","alt":"The EV Paradox: Solving Range Anxiety for Urban Fleets","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}],["$","time",null,{"dateTime":"2025-08-21","className":"dm-blog-recent-date","children":"Aug 21, 2025"}]]}]]}]}]]}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Categories"}],["$","ul",null,{"className":"dm-blog-categories","children":[["$","li","Case Study",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Case Study"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","EV Fleet",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"EV Fleet"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}],["$","li","Fleet Management",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Fleet Management"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","MileTruth",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"MileTruth"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],"$L18","$L19","$L1a"]}]]}],"$L1b"]}]}] 12:["$","div",null,{"className":"dm-blog-footer-inner","children":[["$","nav",null,{"className":"dm-prevnext","aria-label":"Article navigation","children":[["$","$L8",null,{"href":"/blog/how-doormile-maintains-99-9-sla-compliance-at-scale","className":"dm-prevnext-card dm-prevnext-prev","children":[["$","span",null,{"className":"dm-prevnext-thumb","children":["$","$L16",null,{"src":"/images/last-mile-approach.jpg","alt":"How Doormile Maintains 99.9% SLA Compliance at Scale","fill":true,"sizes":"80px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-prevnext-text","children":[["$","span",null,{"className":"dm-prevnext-label","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"19","y1":"12","x2":"5","y2":"12"}],["$","polyline",null,{"points":"12 19 5 12 12 5"}]]}],"Previous"]}],["$","span",null,{"className":"dm-prevnext-cat","children":"Operations"}],["$","span",null,{"className":"dm-prevnext-title","children":"How Doormile Maintains 99.9% SLA Compliance at Scale"}]]}]]}],["$","span",null,{"className":"dm-prevnext-placeholder"}]]}],["$","div",null,{"className":"dm-related","children":[["$","h2",null,{"className":"dm-related-heading","children":"Related Articles"}],["$","div",null,{"className":"dm-related-grid","children":[["$","$L9","the-ev-paradox-solving-range-anxiety-for-urban-fleets",{"delay":0,"duration":0.7,"yOffset":30,"children":["$","$L8",null,{"href":"/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L16",null,{"src":"/images/ev-paradox.png","alt":"The EV Paradox: Solving Range Anxiety for Urban Fleets","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"EV Fleet"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"Electric vehicles promise sustainability, but battery constraints introduce a new routing challenge. Here's how MileTruth™ AI solves it before dispatch."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}],["$","$L9","how-ai-is-transforming-last-mile-ev-delivery",{"delay":0.08,"duration":0.7,"yOffset":30,"children":["$","$L8",null,{"href":"/blog/how-ai-is-transforming-last-mile-ev-delivery","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L16",null,{"src":"/images/blog-post-pic-17.png","alt":"How AI Is Transforming Last-Mile EV Delivery","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"Technology"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"How AI Is Transforming Last-Mile EV Delivery"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"Machine learning and real-time data are reshaping how fleets plan, dispatch, and adapt — making every kilometre smarter than the last."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}],["$","$L9","42-less-distance-insights-from-our-hyderabad-hub",{"delay":0.16,"duration":0.7,"yOffset":30,"children":["$","$L8",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-related-card","children":["$L1c","$L1d"]}]}]]}]]}],"$L1e"]}] 15:null 18:["$","li","Operations",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Operations"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}] 19:["$","li","Sustainability",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Sustainability"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}] 1a:["$","li","Technology",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Technology"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}] 1b:["$","section",null,{"className":"dm-blog-widget dm-blog-cta-card","children":[["$","h2",null,{"className":"dm-blog-cta-title","children":"Ready to optimise your fleet?"}],["$","p",null,{"className":"dm-blog-cta-text","children":"See how MileTruth™ AI cuts distance, vehicles and emissions — without missing an SLA."}],["$","$L8",null,{"href":"/contact","className":"dm-blog-cta-btn","children":["Contact Us",["$","svg",null,{"width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] 1c:["$","div",null,{"className":"dm-related-img","children":[["$","$L16",null,{"src":"/images/blog-post-pic-15.png","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"Case Study"}]]}] 1d:["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"A detailed look at how Doormile's MileTruth routing engine delivered measurable efficiency gains — fewer vehicles, less fuel, and zero SLA misses."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] 1e:["$","div",null,{"className":"dm-blog-contact-cta","children":[["$","div",null,{"className":"dm-blog-contact-cta-content","children":[["$","span",null,{"className":"dm-blog-contact-eyebrow","children":"Let's talk logistics"}],["$","h2",null,{"className":"dm-blog-contact-title","children":"Ready to move smarter with Doormile?"}],["$","p",null,{"className":"dm-blog-contact-sub","children":"Tell us about your fleet and routes — we'll show you where the distance, vehicles and emissions are hiding."}]]}],["$","$L8",null,{"href":"/contact","className":"dm-blog-contact-btn","children":["Get in Touch",["$","svg",null,{"width":"20","height":"20","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]