```json
{
    "title": "Legacy – 01 Industry Retail EN",
    "url": "https://kardinal.ai/route-optimization-for-ecommerce-retail/",
    "datePublished": "2023-02-25",
    "dateModified": "2026-10-05",
    "language": "en-GB",
    "description": "Kardinal helps ecommerce & retail players to plan their routes in an optimal way.",
    "author": "Kardinal",
    "publisher": "Kardinal"
}
```

# Legacy – 01 Industry Retail EN

.kd-halo{
 /* --- réglages --- */
 --halo-color:77,106,255; /* bleu Kardinal en RGB */
 --halo-size:820px; /* diamètre de la lueur */
 --halo-x:90%; /* position horizontale du centre (0% = gauche) */
 --halo-y:500%; /* position verticale du centre (0% = haut) */
 --halo-opacity:.30; /* intensité max (0 à 1) */
 position:absolute; z-index:0; pointer-events:none;
 top:var(--halo-y); left:var(--halo-x); transform:translate(-50%,-50%);
 width:var(--halo-size); height:var(--halo-size); max-width:120vw;
 border-radius:50%;
 background:radial-gradient(circle at center,
 rgba(var(--halo-color),var(--halo-opacity)) 0%,
 rgba(var(--halo-color),calc(var(--halo-opacity) * .35)) 34%,
 transparent 68%);
 filter:blur(12px);
 }

.kd-eyebrow{
 --blue:#4D6AFF;
 display:inline-flex; align-items:center; gap:11px; margin:0;
 font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
 font-weight:700; font-size:13px; letter-spacing:.16em; text-transform:uppercase;
 color:var(--blue); line-height:1;
 }
 .kd-eyebrow::before{
 content:""; width:8px; height:8px; border-radius:50%;
 background:var(--blue); flex:none;
 }

Kardinal Transport

# Ecommerce & Retail

For retailers and pure players, logistics plays a major role in the customer experience, as it is often the last element in a shopping experience and the one that has the most impact, whether positive or negative.

This is why players have sought to push the limits of service quality, putting their logistics under increasing pressure.

.kbtn-row{ display:flex; justify-content:flex-end; width:100%; }
 .kbtn{
 display:inline-flex; align-items:center; gap:10px;
 background:transparent; color:#fff;
 font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
 font-weight:600; font-size:15px; line-height:1;
 border:1px solid rgba(255,255,255,.28); border-radius:12px; padding:13px 22px;
 text-decoration:none; cursor:pointer;
 transition:border-color .15s ease, background .15s ease;
 }
 .kbtn:hover{ border-color:rgba(77,106,255,.9); background:rgba(77,106,255,.10); color:#fff; }
 .kbtn svg{ width:18px; height:18px; fill:none; stroke:#4D6AFF; stroke-width:2.4;
 stroke-linecap:round; stroke-linejoin:round; transition:transform .15s ease; }
 .kbtn:hover svg{ transform:translateX(4px); }
 @media (max-width:560px){
 .kbtn-row{ justify-content:stretch; }
 .kbtn{ width:100%; justify-content:center; }
 }

[Contact us](#)

.kcc{--bg:#FBFAF6;--card:#FFFFFF;--line:rgba(27,24,19,.10);--tx:#1B1813;--mut:#6B6558;--soft:#8A8377;--blue:#4D6AFF;--blue-hover:#3A56E6;--blue-soft:rgba(77,106,255,.10);
 position:relative;z-index:0;isolation:isolate;background:var(--bg);color:var(--tx);margin:0;padding:88px 0;
 font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif}
 .kcc *{box-sizing:border-box}
 .kcc .wrap{max-width:1160px;margin:0 auto;padding:0 40px}
 .kcc-grid{display:grid;grid-template-columns:.92fr 1.08fr;gap:64px;align-items:center}
 .kcc-eyebrow{display:inline-flex;align-items:center;gap:10px;margin:0 0 22px}
 .kcc-eyebrow i{width:8px;height:8px;border-radius:50%;background:var(--blue);flex:none;display:block}
 .kcc-eyebrow span{font:400 14px 'Fakt Pro',Inter,system-ui,sans-serif;letter-spacing:.15em;text-transform:uppercase;color:var(--blue)}
 .kcc h2{font:700 33px/1.24 Inter,sans-serif;letter-spacing:-.02em;color:var(--tx);margin:0 0 26px;max-width:20ch}
 .kcc h2 b{color:var(--blue);font-weight:700}
 .kcc-meta{display:flex;align-items:center;gap:12px;margin:0 0 32px}
 .kcc-who{line-height:1.3}
 .kcc-who .n{font:600 15px Inter,sans-serif;color:var(--tx)}
 .kcc-who .s{font:400 13.5px Inter,sans-serif;color:var(--mut)}
 .kcc-cta{display:inline-flex;align-items:center;gap:10px;background:var(--blue);color:#fff !important;text-decoration:none;font:600 15px Inter,sans-serif;padding:14px 24px;border-radius:12px;transition:background .15s ease}
 .kcc-cta:hover{background:var(--blue-hover)}
 .kcc-cta svg{width:16px;height:16px;transition:transform .15s ease}
 .kcc-cta:hover svg{transform:translateX(4px)}
 .kcc-media{position:relative;border-radius:24px;overflow:hidden;border:1px solid var(--line);
 box-shadow:0 30px 70px -34px rgba(27,24,19,.32),0 10px 24px -18px rgba(77,106,255,.30);
 aspect-ratio:16/11;background:linear-gradient(135deg,#EDEBE4,#E3E7F5)}
 .kcc-img{display:block;width:100%;height:100%;object-fit:cover}
 .kcc-tag{position:absolute;left:18px;bottom:18px;display:inline-flex;align-items:center;gap:9px;
 background:rgba(255,255,255,.92);backdrop-filter:blur(6px);border:1px solid rgba(27,24,19,.08);
 border-radius:999px;padding:8px 14px 8px 12px;box-shadow:0 8px 22px -12px rgba(27,24,19,.30)}
 .kcc-tag i{width:8px;height:8px;border-radius:50%;background:var(--blue);flex:none}
 .kcc-tag span{font:600 13px Inter,sans-serif;color:var(--tx)}
 @media(max-width:900px){
 .kcc{padding:56px 0}.kcc .wrap{padding:0 22px}
 .kcc-grid{grid-template-columns:1fr;gap:30px}
 .kcc h2{font-size:26px}
 .kcc-media{order:-1}
 }

**Case study

 Vente-unique improves its NPS by 20 points with Kardinal.
 Vente-unique
 Furniture and home decor
 [Read the case study](https://kardinal.ai/vente-unique-testimonials/)

 **Vente-unique

.kuce{--bg:#FBFAF6;--card:#FFFFFF;--line:rgba(27,24,19,.10);--tx:#1B1813;--mut:#6B6558;--soft:#8A8377;--blue:#4D6AFF;--blue-soft:rgba(77,106,255,.09);
 position:relative;z-index:0;isolation:isolate;background:var(--bg);color:var(--tx);margin:0;padding:80px 0;
 font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif}
 .kuce *{box-sizing:border-box}
 .kuce .wrap{max-width:1160px;margin:0 auto;padding:0 40px}
 .kuce-eyebrow{display:inline-flex;align-items:center;gap:10px;margin:0 0 18px}
 .kuce-eyebrow i{width:8px;height:8px;border-radius:50%;background:var(--blue);flex:none;display:block}
 .kuce-eyebrow span{font:400 14px 'Fakt Pro',Inter,system-ui,sans-serif;letter-spacing:.15em;text-transform:uppercase;color:var(--blue)}
 .kuce h2{font:700 40px/1.1 Inter,sans-serif;letter-spacing:-.025em;color:var(--tx);margin:0 0 44px;max-width:20ch}
 .kuce-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}
 .kuce-card{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:30px 30px 32px;transition:border-color .18s ease,box-shadow .18s ease}
 .kuce-card:hover{border-color:rgba(77,106,255,.32);box-shadow:0 16px 40px rgba(27,24,19,.05)}
 .kuce-idx{display:inline-flex;align-items:center;justify-content:center;min-width:38px;height:28px;padding:0 10px;border-radius:8px;background:var(--blue-soft);border:1px solid rgba(77,106,255,.20);color:var(--blue);font:600 13px 'JetBrains Mono',ui-monospace,monospace;margin-bottom:18px}
 .kuce-card h3{font:600 20px/1.3 Inter,sans-serif;letter-spacing:-.01em;color:var(--tx);margin:0 0 12px}
 .kuce-card p{font:400 15.5px/1.62 Inter,sans-serif;color:var(--mut);margin:0}
 @media(max-width:860px){
 .kuce{padding:56px 0}
 .kuce .wrap{padding:0 22px}
 .kuce h2{font-size:31px;margin-bottom:32px}
 .kuce-grid{grid-template-columns:1fr;gap:14px}
 .kuce-card{padding:26px 24px 28px}
 }

**Use cases

 Use cases for ecommerce and retail
 01
 Smart delivery slots
 Get available delivery timeslots for new orders, based on planned orders and resources. Display the cost and CO₂ emissions impact of each timeslot when customers choose their delivery on your ecommerce website.

 02
 Real-time locker allocation
 In case of absence, the driver can be sent to the nearest available locker to deliver the package, optimally integrating it into the current route.

 03
 Continuous route optimization
 Optimize routes continuously from first order to last delivery, allocating resources in real time while meeting customer expectations.

 04
 ETA monitoring
 Get a real-time update of the driver's arrival time based on current traffic conditions.

.krtl{--bg:#FBFAF6;--card:#FFFFFF;--line:rgba(27,24,19,.10);--tx:#1B1813;--mut:#6B6558;--soft:#8A8377;--blue:#4D6AFF;--blue-soft:rgba(77,106,255,.07);
 position:relative;z-index:0;isolation:isolate;background:var(--bg);color:var(--tx);margin:0;padding:80px 0;font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif}
.krtl *{box-sizing:border-box}
.krtl .wrap{max-width:1160px;margin:0 auto;padding:0 40px}
.krtl .krtl-eyebrow{display:inline-flex;align-items:center;gap:10px;margin:0 0 18px}
.krtl .krtl-eyebrow i{width:8px;height:8px;border-radius:50%;background:var(--blue);flex:none;display:block}
.krtl .krtl-eyebrow span{font:400 14px 'Fakt Pro',Inter,system-ui,sans-serif;letter-spacing:.15em;text-transform:uppercase;color:var(--blue)}
.krtl h2{font:700 40px/1.1 Inter,sans-serif;letter-spacing:-.025em;color:var(--tx);margin:0 0 12px;max-width:22ch}
.krtl .lede{font:400 16.5px/1.6 Inter,sans-serif;color:var(--mut);margin:0 0 30px;max-width:62ch}
.krtl .krtl-tabs{display:inline-flex;flex-wrap:wrap;gap:8px;margin:0 0 34px;padding:6px;background:#F1EEE7;border:1px solid var(--line);border-radius:14px}
.krtl .cx-tab{display:inline-flex;align-items:center;gap:9px;font:600 14px Inter,sans-serif;color:var(--mut) !important;background:transparent !important;border:0 !important;border-radius:9px;padding:10px 16px;cursor:pointer;font-family:inherit;outline:none;box-shadow:none;-webkit-tap-highlight-color:transparent;transition:background .16s ease,color .16s ease}
.krtl .cx-tab:hover,.krtl .cx-tab:focus,.krtl .cx-tab:active{outline:none !important}
.krtl .cx-tab:hover{color:var(--tx) !important;background:transparent !important}
.krtl .cx-tab:focus-visible{outline:2px solid var(--blue) !important;outline-offset:2px}
.krtl .cx-tab.active,.krtl .cx-tab.active:hover,.krtl .cx-tab.active:focus,.krtl .cx-tab.active:active{background:#fff !important;color:var(--tx) !important;box-shadow:0 1px 3px rgba(27,24,19,.08) !important}
.krtl .cx-tab-n{font:600 11px 'Fakt Pro',Inter,system-ui,sans-serif;color:var(--soft);background:rgba(27,24,19,.05);border-radius:999px;padding:2px 8px}
.krtl .cx-tab.active .cx-tab-n{color:var(--blue);background:var(--blue-soft)}
.krtl .krtl-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.krtl .cx-card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:22px 22px 24px;display:flex;flex-direction:column}
.krtl .cx-card.hidden{display:none}
.krtl .cx-card.sig{border-color:rgba(77,106,255,.32);background:linear-gradient(180deg,var(--blue-soft),transparent 60%)}
.krtl .cx-badge{align-self:flex-start;display:inline-flex;align-items:center;gap:7px;font:600 10.5px 'Fakt Pro',Inter,system-ui,sans-serif;letter-spacing:.09em;text-transform:uppercase;padding:4px 9px 4px 8px;border-radius:999px;margin-bottom:16px;white-space:nowrap}
.krtl .cx-badge i{width:7px;height:7px;border-radius:50%;display:block}
.krtl .cx-badge.classic{color:var(--soft);background:rgba(27,24,19,.05);border:1px solid var(--line)}
.krtl .cx-badge.classic i{background:#B8B2A6}
.krtl .cx-badge.advanced{color:var(--blue);background:var(--blue-soft);border:1px solid rgba(77,106,255,.20)}
.krtl .cx-badge.advanced i{background:#8AA0FF}
.krtl .cx-badge.signature{color:#fff;background:var(--blue);border:1px solid var(--blue)}
.krtl .cx-badge.signature i{background:#fff}
.krtl .cx-card h3{font:600 17.5px/1.35 Inter,sans-serif;letter-spacing:-.01em;color:var(--tx);margin:0 0 9px}
.krtl .cx-card p{font:400 14.5px/1.55 Inter,sans-serif;color:var(--mut);margin:0}
@media(max-width:900px){.krtl{padding:56px 0}.krtl .wrap{padding:0 22px}.krtl h2{font-size:30px}.krtl .krtl-grid{grid-template-columns:1fr 1fr}.krtl .krtl-tabs{display:flex;width:100%}}
@media(max-width:600px){.krtl .krtl-grid{grid-template-columns:1fr}.krtl .cx-tab{flex:1;justify-content:center;padding:10px 8px;font-size:13px}}

**Operational constraints

Handle the constraints specific to ecommerce and retail last-mile delivery.
From the expected baseline to the signature rules almost no one can model, pick a level to see what the optimization accounts for.

Classic2Advanced4Kardinal Signature2
**ClassicSubcontractor prioritySubcontractors called on in the preference order you set.

**ClassicPre-opening windowsStore deliveries completed before the shop opens, for chains that need it.

**AdvancedRoute balancingWorking time evenly spread across routes, no one stuck with the long one.

**AdvancedKey managementLocker and airlock keys assigned to a single driver, chosen by the solver.

**AdvancedVehicle radiusA cap on how far each vehicle ranges, de-siloing multi-depot territories.

**AdvancedLocal-knowledge service timesOff a driver's home turf, jobs take longer, and the plan knows it.

**Kardinal SignatureMixed costsSubcontractors paid a flat rate plus a variable part, in-house drivers paid by the kilometer, all in one blended cost.

**Kardinal SignaturePrivileged access windowsDrivers holding the keys can deliver during extended hours others can't.

.kcta{--bg:#FBFAF6;--tx:#1B1813;--blue:#4D6AFF;--blue-hover:#3A56E6;--dk:#0B0A0F;--dk-tx:#F5F2EA;--dk-mut:#A6A093;--dk-blue:#4D6AFF;--dk-line:rgba(255,255,255,.12);
 position:relative;z-index:0;isolation:isolate;background:var(--bg);margin:0;padding:40px 0 88px;
 font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif}
 .kcta *{box-sizing:border-box}
 .kcta .wrap{max-width:1160px;margin:0 auto;padding:0 40px}
 .kcta-card{position:relative;overflow:hidden;background:var(--dk);border-radius:22px;padding:46px 48px;
 display:flex;align-items:center;justify-content:space-between;gap:36px;
 background-image:radial-gradient(rgba(255,255,255,.05) 1px,transparent 1px);background-size:22px 22px}
 .kcta-card::before{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(110% 130% at 88% -20%,rgba(77,106,255,.30),transparent 60%)}
 .kcta-card>*{position:relative}
 .kcta-txt{max-width:640px}
 .kcta-eyebrow{display:inline-flex;align-items:center;gap:10px;margin:0 0 16px}
 .kcta-eyebrow i{width:8px;height:8px;border-radius:50%;background:var(--dk-blue);flex:none;display:block}
 .kcta-eyebrow span{font:400 13px 'Fakt Pro',Inter,system-ui,sans-serif;letter-spacing:.15em;text-transform:uppercase;color:var(--dk-blue)}
 .kcta-card h2{font:700 30px/1.16 Inter,sans-serif;letter-spacing:-.022em;color:#fff;margin:0 0 12px;max-width:22ch}
 .kcta-card p{font:400 16px/1.6 Inter,sans-serif;color:var(--dk-mut);margin:0}
 .kcta-btn{flex:none;display:inline-flex;align-items:center;gap:10px;background:var(--blue);color:#fff !important;text-decoration:none;font:600 15.5px Inter,sans-serif;padding:16px 26px;border-radius:12px;transition:background .15s ease}
 .kcta-btn:hover{background:var(--blue-hover)}
 .kcta-btn svg{width:17px;height:17px}
 @media(max-width:860px){
 .kcta{padding:24px 0 60px}
 .kcta .wrap{padding:0 22px}
 .kcta-card{flex-direction:column;align-items:flex-start;padding:34px 28px;gap:26px}
 .kcta-card h2{font-size:25px}
 .kcta-btn{width:100%;justify-content:center}
 }

**Benchmark

 Compare our coverage to the competition.
 Our benchmark pits 149 real business constraints against 10 competing routing APIs, sector by sector. Retail and ecommerce delivery gets its own breakdown, and every result is verifiable at the source.

 [See the full benchmark](https://kardinal.ai/benchmark-route-optimization-api-2026/)

.kdc{
 --bg:#0E0D10; --card:#1A1820; --line:rgba(255,255,255,.10);
 --tx:#FFFFFF; --mut:#A8A29A; --blue:#4D6AFF;
 padding:80px 0; margin:0;
 background:var(--bg);
 font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
 }
 .kdc *{box-sizing:border-box}
 .kdc-wrap{max-width:1240px;margin:0 auto;padding:0 40px}
 .kdc-card{
 position:relative; overflow:hidden;
 display:grid; grid-template-columns:1fr 1fr; align-items:stretch;
 background:var(--card); border:1px solid var(--line); border-radius:28px;
 }
 /* halo bleu discret en haut à gauche */
 .kdc-card::before{content:"";position:absolute;top:-140px;left:-80px;width:420px;height:420px;
 border-radius:50%;background:radial-gradient(circle at center,rgba(77,106,255,.22),transparent 70%);
 pointer-events:none;z-index:0}
 /* ---- colonne texte ---- */
 .kdc-left{position:relative;z-index:1;padding:60px 56px;display:flex;flex-direction:column;justify-content:center}
 .kdc .kdc-left img.kdc-logo{height:20px !important;width:auto !important;max-width:150px !important;display:block;margin:0 0 28px}
 .kdc-h{font:600 22px/1.35 Inter;letter-spacing:-.01em;color:var(--tx);margin:0 0 30px;max-width:380px}
 .kdc-btn{align-self:flex-start;display:inline-flex;align-items:center;gap:10px;
 background:var(--blue);color:#fff;text-decoration:none;font:600 15px Inter;
 border-radius:12px;padding:14px 24px;transition:background .15s ease}
 .kdc-btn:hover{background:#3a56e6;color:#fff}
 .kdc-btn svg{width:18px;height:18px;fill:none;stroke:#fff;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round;transition:transform .15s ease}
 .kdc-btn:hover svg{transform:translateX(4px)}
 /* ---- colonne image ---- */
 .kdc-media{position:relative;min-height:340px}
 .kdc-media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
 @media (max-width:900px){
 .kdc{padding:56px 0}
 .kdc-wrap{padding:0 22px}
 .kdc-card{grid-template-columns:1fr}
 .kdc-left{padding:44px 30px;order:2}
 .kdc-media{order:1;min-height:240px}
 .kdc-h{font-size:20px}
 .kdc-btn{width:100%;justify-content:center;align-self:stretch}
 }

Would you like to discuss your challenges with our team?
 [Contact us](https://kardinal.ai/contact)

## Resources

.kr{
 --bg:#FBFAF6; --card:#16141C; --line:rgba(27,24,19,.10);
 --tx:#FFFFFF; --mut:#A8A29A; --blue:#4D6AFF;
 padding:20px 0; margin:0; background:var(--bg);
 font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
 }
 .kr *{box-sizing:border-box}
 .kr-wrap{max-width:none;margin:0 auto;padding:0 0px}
 .kr-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
 /* ---- carte ---- */
 .kr-card{
 position:relative; overflow:hidden; display:flex; flex-direction:column; justify-content:flex-end;
 min-height:330px; padding:24px; text-decoration:none;
 background:var(--card); background-size:cover; background-position:center;
 border:1px solid var(--line); border-radius:20px;
 transition:transform .18s ease, border-color .18s ease, box-shadow .18s ease;
 }
 .kr-card:hover{transform:translateY(-4px);border-color:rgba(77,106,255,.45);box-shadow:0 18px 40px rgba(27,24,19,.12)}
 /* halo bleu si pas d'image */
 .kr-card::after{content:"";position:absolute;top:-120px;right:-90px;width:320px;height:320px;border-radius:50%;
 background:radial-gradient(circle at center,rgba(77,106,255,.20),transparent 70%);pointer-events:none;z-index:0}
 /* voile sombre pour lisibilite quand il y a une image de fond */
 .kr-card::before{content:"";position:absolute;inset:0;z-index:0;
 background:linear-gradient(to bottom,rgba(10,9,12,.30) 0%,rgba(10,9,12,.55) 55%,rgba(10,9,12,.92) 100%)}
 .kr-card > *{position:relative;z-index:1}
 .kr-chip{position:absolute;top:26px;left:26px;z-index:1;display:inline-flex;align-items:center;
 background:var(--blue);color:#fff;font:700 11px Inter;letter-spacing:.10em;text-transform:uppercase;
 padding:6px 13px;border-radius:999px}
 .kr-title{margin:0 0 18px;color:var(--tx);font:600 21px/1.3 Inter;letter-spacing:-.01em;text-shadow:0 1px 8px rgba(0,0,0,.4)}
 /* lien fleche + bouton : caches par defaut, apparaissent au survol de la carte */
 .kr-link,.kr-btn{opacity:0;transform:translateY(10px);
 transition:opacity .2s ease, transform .2s ease, gap .15s ease, background .15s ease}
 .kr-card:hover .kr-link,.kr-card:hover .kr-btn,
 .kr-card:focus-within .kr-link,.kr-card:focus-within .kr-btn{opacity:1;transform:translateY(0)}
 /* lien fleche, stylise comme un bouton */
 .kr-link{display:inline-flex;align-items:center;justify-content:center;gap:8px;background:var(--blue);color:#fff;
 font:600 14px Inter;border-radius:12px;padding:13px 20px}
 .kr-link:hover{background:#3a56e6}
 .kr-link svg{width:17px;height:17px;fill:none;stroke:#fff;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
 /* bouton (carte brochure) */
 .kr-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;background:var(--blue);color:#fff;
 font:600 14px Inter;border-radius:12px;padding:13px 20px}
 .kr-btn:hover{background:#3a56e6}
 .kr-btn svg{width:16px;height:16px;fill:none;stroke:#fff;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
 /* ecrans tactiles : pas de survol possible, on affiche toujours */
 @media (hover:none){ .kr-link,.kr-btn{opacity:1;transform:none} }
 @media (max-width:980px){ .kr-grid{grid-template-columns:repeat(2,1fr)} }
 @media (max-width:620px){
 .kr{padding:56px 0}
 .kr-wrap{padding:0 22px}
 .kr-grid{grid-template-columns:1fr}
 .kr-title{font-size:19px}
 }

[Brochure Kardinal's Route Optimization Solution Download the brochure](https://kardinal.ai/kardinal-brochure/)

 [Success story How Vente-unique improved its NPS by 20 points with Kardinal Read the story](https://kardinal.ai/vente-unique-testimonials/)

 [Success story How the STERNE Group optimized the planning of its urban deliveries Read the story](https://kardinal.ai/sterne-group-testimonials/)

 [Report The different levels of route optimization Read the report](https://kardinal.ai/report-the-different-types-of-route-optimization/)

 [Guide Route optimization: comparison of the best software solutions Read the guide](https://kardinal.ai/guide-route-optimization-comparison-best-software-solutions/)

 [Report What route optimization to meet the challenges of the parcel delivery industry? Read the report](https://kardinal.ai/report-what-route-optimization-to-meet-the-challenges-of-the-parcel-delivery-industry/)
