```json
{
    "title": "Legacy – 01 Industry Field Service EN",
    "url": "https://kardinal.ai/field-services/",
    "datePublished": "2019-10-12",
    "dateModified": "2026-08-25",
    "language": "en-GB",
    "description": "Kardinal's field services dispatch solution assists you in planning your interventions for efficient and realistic schedules.",
    "author": "Kardinal",
    "publisher": "Kardinal"
}
```

# Legacy – 01 Industry Field Service 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

# Field Services

Efficient planning of operations considering customer’s specific constraints and your own activity is a highly complex task.

Kardinal SaaS Solution for Field Services assists your teams by optimizing the planning continuously so that you can reach operational effectiveness at the optimal cost.

.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 .en{display:none}
 :lang(en) .kcc .fr{display:none}
 :lang(en) .kcc .en{display:inline}
 .kcc a.fr{display:inline-flex}
 .kcc a.en{display:none}
 :lang(en) .kcc a.fr{display:none}
 :lang(en) .kcc a.en{display:inline-flex}
 .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-ava{flex:none;width:42px;height:42px;border-radius:11px;background:var(--blue-soft);border:1px solid rgba(77,106,255,.22);display:flex;align-items:center;justify-content:center;font:700 13px Inter,sans-serif;color:var(--blue);letter-spacing:.02em}
 .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{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)}
 /* media */
 .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 .kcc-media img.kcc-img{display:block !important;width:100% !important;height:100% !important;max-width:none !important;object-fit:cover !important;object-position:center top !important;margin:0 !important;border:none !important}
 .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}
 }

**Cas clientClient case

 Glasseo a réduit ses délais d'intervention de 12% avec Kardinal.Glasseo reduced intervention time by 12% with Kardinal.
 Glasseo
 Réparation et pose de vitrageGlass repair & installation
 [Lire le cas client](https://kardinal.ai/fr/business-case-glasseo/)
 [Read the client case](https://kardinal.ai/business-case-glasseo-en/)

 **Glasseo

.kfsu{--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;
 width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw)}
 .kfsu *{box-sizing:border-box}
 .kfsu .en{display:none}
 :lang(en) .kfsu .fr{display:none}
 :lang(en) .kfsu .en{display:inline}
 .kfsu .wrap{max-width:1160px;margin:0 auto;padding:0 40px}
 .kfsu-eyebrow{display:inline-flex;align-items:center;gap:10px;margin:0 0 18px}
 .kfsu-eyebrow i{width:8px;height:8px;border-radius:50%;background:var(--blue);flex:none;display:block}
 .kfsu-eyebrow span{font:400 14px 'Fakt Pro',Inter,system-ui,sans-serif;letter-spacing:.15em;text-transform:uppercase;color:var(--blue)}
 .kfsu h2{font:700 40px/1.1 Inter,sans-serif;letter-spacing:-.025em;color:var(--tx);margin:0 0 44px;max-width:20ch}
 .kfsu-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}
 .kfsu-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}
 .kfsu-card:hover{border-color:rgba(77,106,255,.32);box-shadow:0 16px 40px rgba(27,24,19,.05)}
 .kfsu-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}
 .kfsu-card h3{font:600 20px/1.3 Inter,sans-serif;letter-spacing:-.01em;color:var(--tx);margin:0 0 12px}
 .kfsu-card p{font:400 15.5px/1.62 Inter,sans-serif;color:var(--mut);margin:0}
 @media(max-width:860px){
 .kfsu{padding:56px 0}
 .kfsu .wrap{padding:0 22px}
 .kfsu h2{font-size:31px;margin-bottom:32px}
 .kfsu-grid{grid-template-columns:1fr;gap:14px}
 .kfsu-card{padding:26px 24px 28px}
 }

**Cas d'usageUse cases

 Cas d'usage pour le field serviceUse cases for Field Services
 01
 Planification des interventionsIntervention Scheduling
 À partir des interventions à planifier et des techniciens disponibles, nos algorithmes organisent de façon optimale les tournées, pour maîtriser les coûts, la productivité et la qualité de service.Based on a set of interventions to be scheduled and available technicians, our algorithms optimally plan routes to optimize costs, productivity and service quality.

 02
 ETA prédictivePredictive ETA
 À partir des interventions planifiées, nos algorithmes estiment les heures d'arrivée prévisionnelles, de quoi prévenir les clients de l'arrivée du technicien.Based on scheduled interventions, our algorithms calculate predictive arrival times that can be used to inform customers of the technician's arrival.

 03
 Ajustements en temps réelReal-Time Adjustments
 Au fil de la journée, quand une intervention urgente survient, notre algorithme recalcule en continu les meilleurs ajustements de tournée, en tenant compte de la situation du technicien et du trafic en temps réel.As the day unfolds, when an urgent intervention comes in, our algorithm continuously recalculates the best route adjustments, taking into account the current technician and traffic conditions.

 04
 Affectation selon les compétencesSkill-Based Dispatch
 Chaque intervention est confiée au technicien qui dispose des compétences, habilitations et équipements requis, sans contrôle manuel.Each intervention is assigned to the technician who has the required skills, certifications and equipment, with no manual check.

.kfsc{--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;
 width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw)}
.kfsc *{box-sizing:border-box}
.kfsc .en{display:none}
:lang(en) .kfsc .fr{display:none}
:lang(en) .kfsc .en{display:inline}
.kfsc .wrap{max-width:1160px;margin:0 auto;padding:0 40px}
.kfsc-eyebrow{display:inline-flex;align-items:center;gap:10px;margin:0 0 18px}
.kfsc-eyebrow i{width:8px;height:8px;border-radius:50%;background:var(--blue);flex:none;display:block}
.kfsc-eyebrow span{font:400 14px 'Fakt Pro',Inter,system-ui,sans-serif;letter-spacing:.15em;text-transform:uppercase;color:var(--blue)}
.kfsc h2{font:700 40px/1.1 Inter,sans-serif;letter-spacing:-.025em;color:var(--tx);margin:0 0 12px;max-width:22ch}
.kfsc .lede{font:400 16.5px/1.6 Inter,sans-serif;color:var(--mut);margin:0 0 30px;max-width:62ch}
/* onglets */
.kfsc-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}
.kfsc .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}
.kfsc .cx-tab:hover,.kfsc .cx-tab:focus,.kfsc .cx-tab:active{outline:none !important}
.kfsc .cx-tab:hover{color:var(--tx) !important;background:transparent !important}
.kfsc .cx-tab:focus-visible{outline:2px solid var(--blue) !important;outline-offset:2px}
.kfsc .cx-tab.active,.kfsc .cx-tab.active:hover,.kfsc .cx-tab.active:focus,.kfsc .cx-tab.active:active{background:#fff !important;color:var(--tx) !important;box-shadow:0 1px 3px rgba(27,24,19,.08) !important}
.kfsc .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}
.kfsc .cx-tab.active .cx-tab-n{color:var(--blue);background:var(--blue-soft)}
.kfsc-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.kfsc .cx-card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:22px 22px 24px;display:flex;flex-direction:column}
.kfsc .cx-card.hidden{display:none}
.kfsc .cx-card.sig{border-color:rgba(77,106,255,.32);background:linear-gradient(180deg,var(--blue-soft),transparent 60%)}
.kfsc .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}
.kfsc .cx-badge i{width:7px;height:7px;border-radius:50%;display:block}
.kfsc .cx-badge.classic{color:var(--soft);background:rgba(27,24,19,.05);border:1px solid var(--line)}
.kfsc .cx-badge.classic i{background:#B8B2A6}
.kfsc .cx-badge.advanced{color:var(--blue);background:var(--blue-soft);border:1px solid rgba(77,106,255,.20)}
.kfsc .cx-badge.advanced i{background:#8AA0FF}
.kfsc .cx-badge.signature{color:#fff;background:var(--blue);border:1px solid var(--blue)}
.kfsc .cx-badge.signature i{background:#fff}
.kfsc .cx-card h3{font:600 17.5px/1.35 Inter,sans-serif;letter-spacing:-.01em;color:var(--tx);margin:0 0 9px}
.kfsc .cx-card p{font:400 14.5px/1.55 Inter,sans-serif;color:var(--mut);margin:0}
@media(max-width:900px){.kfsc{padding:56px 0}.kfsc .wrap{padding:0 22px}.kfsc h2{font-size:30px}.kfsc-grid{grid-template-columns:1fr 1fr}.kfsc-tabs{display:flex;width:100%}}
@media(max-width:600px){.kfsc-grid{grid-template-columns:1fr}.kfsc .cx-tab{flex:1;justify-content:center;padding:10px 8px;font-size:13px}}

**Contraintes métierOperational constraints

Gérez les contraintes spécifiques au field service.Handle Field Services specific constraints.
Du socle attendu aux règles signature que presque personne ne sait modéliser, choisissez un niveau pour voir ce que l'optimisation prend en compte.From the expected baseline to the signature rules almost no one can model, pick a level to see what the optimization accounts for.

ClassiqueClassic3AvancéAdvanced4Kardinal SignatureKardinal Signature2
**ClassiqueClassicCréneaux de rendez-vousAppointment windowsCréneaux d'intervention fixés avec le client, toujours respectés.Fixed intervention slots agreed with the customer, always honored.

**ClassiqueClassicCompétences requisesRequired skillsChaque intervention est confiée à un technicien disposant des habilitations nécessaires.Each job matched to a technician who holds the certifications it needs.

**ClassiqueClassicDépart et retour au domicileHome start and endChaque tournée démarre et se termine au domicile du technicien.Every route starts and ends at the technician's own home.

**AvancéAdvancedListe d'exclusionBlacklistDes techniciens exclus des sites où ils ne peuvent plus retourner.Technicians barred from sites they can no longer return to.

**AvancéAdvancedTemps de service selon l'anciennetéSeniority service timesLa durée d'intervention s'ajuste selon qui l'exécute : un senior la termine plus vite.Job duration adjusts to who's on it: a senior clears it faster.

**AvancéAdvancedTrajet maximal entre interventionsMax travel between jobsUn plafond de temps de trajet entre deux interventions, pour des sauts courts et moins de route.A cap on drive time between two jobs: short hops, less road.

**AvancéAdvancedDistance maximale au domicileMax distance from homeLes premiers et derniers arrêts restent proches du domicile, sans long trajet à aucune extrémité.First and last stops kept close to home, no long haul either end.

**Kardinal SignatureKardinal SignatureTâches opportunistesOpportunistic jobsDes tâches à long horizon glissées dans la tournée seulement quand elle a de la place.Long-horizon tasks slotted in optionally, only when the route has room.

**Kardinal SignatureKardinal SignatureCompétences préféréesPreferred skillsUn senior privilégié là où n'importe qui pourrait aller, sur les interventions difficiles ou les clients exigeants.A senior preferred where anyone could go, on tough jobs or demanding clients.

.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 .en{display:none}
 :lang(en) .kcta .fr{display:none}
 :lang(en) .kcta .en{display:inline}
 .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

 Comparez notre couverture à celle de la concurrence.Compare our coverage to the competition.
 Notre benchmark confronte 149 contraintes métier réelles à 10 API d'optimisation, secteur par secteur. Le transport de déchets y a sa propre analyse, et chaque résultat est vérifiable à la source.Our benchmark pits 149 real business constraints against 10 routing APIs, sector by sector. Waste gets its own breakdown, and every result is verifiable at the source.

 [Voir le benchmark completSee 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/)
