507 lines
48 KiB
Plaintext
507 lines
48 KiB
Plaintext
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 <div>, 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\":\"Why Mathematical Precision Beats Heuristics in Routing\",\"description\":\"Most routing tools guess. We calculate. Powered by Google OR-Tools, MileTruth evaluates six parallel strategy universes to select the optimal route every time.\",\"image\":[\"https://www.doormile.com/images/blog-post-pic-14.jpeg\"],\"datePublished\":\"2025-08-07T00:00:00.000Z\",\"dateModified\":\"2025-08-07T00: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/why-mathematical-precision-beats-heuristics-in-routing\"},\"articleSection\":\"Technology\"}"}}],["$","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\":\"Why Mathematical Precision Beats Heuristics in Routing\",\"item\":\"https://www.doormile.com/blog/why-mathematical-precision-beats-heuristics-in-routing\"}]}"}}],["$","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-14.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":"Technology"}],["$","h1",null,{"className":"dm-banner-title","children":"Why Mathematical Precision Beats Heuristics in Routing"}]]}]}]}]
|
||
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":"Why Mathematical Precision Beats Heuristics in Routing"}]]}]}],["$","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-08-07","children":"Aug 7, 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":"Heuristics are fast to build and easy to trust — until they quietly cost you a vehicle a day. Mathematical optimisation asks more of the engine and gives more back: provably better routes, every dispatch, at scale."}],["$","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. Why Mathematical Precision Beats Heuristics in Routing 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-14.jpeg","alt":"Why Mathematical Precision Beats Heuristics in Routing","fill":true,"sizes":"(max-width: 768px) 100vw, 760px","style":{"objectFit":"cover"}}]}],["$","figcaption",null,{"children":"Technology — 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/the-ev-paradox-solving-range-anxiety-for-urban-fleets","className":"dm-prevnext-card dm-prevnext-prev","children":[["$","span",null,{"className":"dm-prevnext-thumb","children":["$","$L16",null,{"src":"/images/ev-paradox.png","alt":"The EV Paradox: Solving Range Anxiety for Urban Fleets","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":"EV Fleet"}],["$","span",null,{"className":"dm-prevnext-title","children":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}]]}]]}],["$","$L8",null,{"href":"/blog/fleet-reduction-without-compromising-delivery-volume","className":"dm-prevnext-card dm-prevnext-next","children":[["$","span",null,{"className":"dm-prevnext-text","children":[["$","span",null,{"className":"dm-prevnext-label","children":["Next",["$","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":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}],["$","span",null,{"className":"dm-prevnext-cat","children":"Fleet Management"}],["$","span",null,{"className":"dm-prevnext-title","children":"Fleet Reduction Without Compromising Delivery Volume"}]]}],["$","span",null,{"className":"dm-prevnext-thumb","children":["$","$L16",null,{"src":"/images/blog-post-pic-8.jpeg","alt":"Fleet Reduction Without Compromising Delivery Volume","fill":true,"sizes":"80px","style":{"objectFit":"cover"}}]}]]}]]}],["$","div",null,{"className":"dm-related","children":[["$","h2",null,{"className":"dm-related-heading","children":"Related Articles"}],["$","div",null,{"className":"dm-related-grid","children":[["$","$L9","how-ai-is-transforming-last-mile-ev-delivery",{"delay":0,"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.08,"duration":0.7,"yOffset":30,"children":["$","$L8",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-related-card","children":[["$","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"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}],"$L1c","$L1d"]}]]}]}],"$L1e"]}]]}],"$L1f"]}]
|
||
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:["$","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."}]
|
||
1d:["$","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:["$","$L9","miletruth-ai-10-stages-to-smarter-dispatch",{"delay":0.16,"duration":0.7,"yOffset":30,"children":["$","$L8",null,{"href":"/blog/miletruth-ai-10-stages-to-smarter-dispatch","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L16",null,{"src":"/images/blog-post-pic-31.png","alt":"MileTruth™ AI — 10 Stages to Smarter Dispatch","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"MileTruth"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"MileTruth™ AI — 10 Stages to Smarter Dispatch"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"From order ingestion to final route output in under 45ms — a technical walkthrough of the ten-stage pipeline at the heart of our routing engine."}],["$","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"}]]}]]}]]}]]}]}]
|
||
1f:["$","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"}]]}]]}]]}]
|