```json
{
    "title": "Legacy – 02 Business Case Cerballiance EN",
    "url": "https://kardinal.ai/optimizing-at-home-blood-test-planning-for-cerballiance-labs/",
    "datePublished": "2021-05-03",
    "dateModified": "2026-08-11",
    "language": "en-GB",
    "description": "Find out how Cerballiance digitized the management of its at-home blood tests thanks to Kardinal solution and for what benefits for its teams.",
    "author": "Kardinal",
    "publisher": "Kardinal"
}
```

# Legacy – 02 Business Case Cerballiance EN

.klh{--dbg:#0B0A0F;--cream:#F5F2EA;--mut:#9A938A;--blue:#4D6AFF;--blue-hover:#3A56E6;
 position:relative;overflow:hidden;background:var(--dbg);color:var(--cream);margin:0;
 padding:180px 0 108px;font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif}
 .klh *{box-sizing:border-box}
 .klh::before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;background-image:radial-gradient(rgba(255,255,255,.05) 1px,transparent 1px);background-size:24px 24px;opacity:.5}
 .klh::after{content:"";position:absolute;z-index:0;pointer-events:none;top:-160px;left:50%;transform:translateX(-50%);width:820px;height:520px;border-radius:50%;background:radial-gradient(circle at center,rgba(77,106,255,.34),rgba(77,106,255,.10) 42%,transparent 70%);filter:blur(12px)}
 .klh .kw{position:relative;z-index:1;max-width:960px;margin:0 auto;padding:0 40px;text-align:center}
 .klh-badge{display:inline-flex;align-items:center;gap:10px;background:rgba(77,106,255,.10);border:1px solid rgba(77,106,255,.42);border-radius:999px;padding:9px 18px;margin:0 0 30px}
 .klh-badge i{width:8px;height:8px;border-radius:50%;background:var(--blue);flex:none;display:block;box-shadow:0 0 10px rgba(77,106,255,.9)}
 .klh-badge span{font:700 13px Inter,sans-serif;letter-spacing:.14em;text-transform:uppercase;color:#8FA2FF}
 .klh h1{font:700 68px/1.05 Inter,sans-serif;letter-spacing:-.03em;color:var(--cream);margin:0 auto 26px;max-width:920px}
 .klh .lead{font:400 19px/1.6 Inter,sans-serif;color:var(--mut);margin:0 auto 40px;max-width:560px}
 .klh-btns{display:inline-flex;gap:14px;flex-wrap:wrap;justify-content:center}
 .klh-btn{display:inline-flex;align-items:center;gap:10px;font:600 15px Inter,sans-serif;border-radius:12px;padding:16px 28px;text-decoration:none !important;transition:background .15s ease,border-color .15s ease,color .15s ease}
 .klh-btn.primary,.klh-btn.primary:link,.klh-btn.primary:visited{background:var(--blue);color:#fff !important}
 .klh-btn.primary:hover{background:var(--blue-hover)}
 .klh-btn.ghost,.klh-btn.ghost:link,.klh-btn.ghost:visited{background:rgba(255,255,255,.03);color:var(--cream) !important;border:1px solid rgba(255,255,255,.16)}
 .klh-btn.ghost:hover{border-color:rgba(77,106,255,.8);background:rgba(77,106,255,.10)}
 .klh-btn svg{width:18px;height:18px;transition:transform .15s ease}
 .klh-btn.ghost:hover svg{transform:translateX(4px)}
 @media(max-width:900px){
 .klh{padding:80px 0 84px}
 .klh h1{font-size:46px}
 .klh .lead{font-size:17px}
 }
 @media(max-width:600px){
 .klh{padding:64px 0 68px}
 .klh .kw{padding:0 22px}
 .klh h1{font-size:34px}
 .klh-btn{width:100%;justify-content:center}
 }

**Kardinal Foundry

 Cerballiance optimizes its at-home blood test scheduling with Kardinal
 The Cerballiance network of medical biology laboratories optimizes the planning of its at-home blood tests thanks to the Kardinal solution. Find out how Cerballiance digitized the management of its at-home blood tests and for what benefits for its teams.

 [Talk to sales](https://kardinal.ai/fr/contact-form/)
 [See our solutions](https://kardinal.ai/fr)

.ftq{--bg:#FBFAF6;--card:#FFFFFF;--line:rgba(27,24,19,.10);--line2:rgba(27,24,19,.07);--tx:#1B1813;--mut:#6B6558;--soft:#8A8377;--blue:#4D6AFF;--blue-soft:rgba(77,106,255,.10);
 position:relative;z-index:0;isolation:isolate;background:var(--bg);color:var(--tx);margin:0;padding:72px 0;
 font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif}
 .ftq *{box-sizing:border-box}
 .ftq .wrap{max-width:1160px;margin:0 auto;padding:0 40px}
 .ftq-card{background:var(--card);border:1px solid var(--line);border-radius:24px;overflow:hidden}
 .ftq-top{padding:44px 48px 40px}
 .ftq-eyebrow{display:inline-flex;align-items:center;gap:10px;margin:0 0 26px}
 .ftq-eyebrow i{width:8px;height:8px;border-radius:50%;background:var(--blue);flex:none;display:block}
 .ftq-eyebrow span{font:400 14px 'Fakt Pro',Inter,system-ui,sans-serif;letter-spacing:.15em;text-transform:uppercase;color:var(--blue)}
 .ftq-quote{display:flex;gap:22px;align-items:flex-start}
 .ftq-mark{flex:none;color:var(--blue);opacity:.9;margin-top:2px}
 .ftq-mark svg{width:40px;height:40px;display:block}
 .ftq-body{flex:1;min-width:0}
 .ftq-text{font:500 27px/1.42 Inter,sans-serif;letter-spacing:-.014em;color:var(--tx);margin:0 0 26px;max-width:56ch;text-wrap:balance}
 .ftq-by{display:flex;align-items:center;gap:14px}
 .ftq-ava{flex:none;width:46px;height:46px;border-radius:50%;background:var(--blue-soft);border:1px solid rgba(77,106,255,.24);color:var(--blue);display:flex;align-items:center;justify-content:center;font:700 15px Inter,sans-serif;letter-spacing:.02em}
 .ftq-nm{font:600 16px Inter,sans-serif;color:var(--tx);line-height:1.3}
 .ftq-rl{font:400 14px Inter,sans-serif;color:var(--mut);line-height:1.4;margin-top:2px}
 .ftq-foot{border-top:1px solid var(--line2);background:#FCFBF8;padding:30px 48px 36px}
 .ftq-ctx{font:600 13px 'Fakt Pro',Inter,system-ui,sans-serif;letter-spacing:.06em;text-transform:uppercase;color:var(--soft);margin:0 0 22px}
 .ftq-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:26px}
 .ftq-stat{display:flex;flex-direction:column;gap:12px;min-width:0}
 .ftq-ic{width:40px;height:40px;border-radius:11px;background:var(--blue-soft);border:1px solid rgba(77,106,255,.20);display:flex;align-items:center;justify-content:center;flex:none}
 .ftq-ic svg{width:20px;height:20px;fill:none;stroke:var(--blue);stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
 .ftq-n{font:700 26px/1 Inter,sans-serif;letter-spacing:-.02em;color:var(--tx)}
 .ftq-l{font:400 14px/1.45 Inter,sans-serif;color:var(--mut)}
 @media(max-width:900px){
 .ftq{padding:52px 0}
 .ftq .wrap{padding:0 20px}
 .ftq-top{padding:34px 28px 30px}
 .ftq-foot{padding:26px 28px 32px}
 .ftq-text{font-size:22px;max-width:none}
 .ftq-stats{grid-template-columns:repeat(2,1fr);gap:24px 20px}
 }
 @media(max-width:460px){.ftq-stats{grid-template-columns:1fr}}

**Retour client

J'ai beaucoup apprécié la patience dont les collaborateurs de Kardinal ont fait preuve afin que l'on puisse tous se comprendre. Nous avons noué un véritable partenariat avec les équipes de Kardinal : on avance main dans la main et cela est vraiment enrichissant et indispensable.

 CF
 Cécile Fargeat
 Biologiste médical chez Cerballiance
 Chiffres clés

 500
 laboratoires

 4 800
 collaborateurs

 70 000
 patients / jour

 -1h
 de planification / jour

## Pre-project overview

### Manual planning by each lab

> At the time, when we started working on the subject of digitizing the organization of home blood tests, I was in charge of a laboratory where every day there were 3 nurses going out. Every day, I had a lot of organizational problems, the management of the patients, the management of the nurses. The project was born from this idea that this management had to be automated.

Before the project, the appointments for at-home blood tests were recorded by the clerks the day before, and then the samplers manually divided the appointments into different rounds for the next day. This planning took about 1 hour per lab and required a recheck the next morning before leaving the lab to ensure that all patient constraints were met.

This planning was carried out on a lab-by-lab basis, without any possibility of pooling appointments between labs.

### A complex planning due to strict constraints

At-home blood test planning required Cerballiance labs to take into account industry-specific constraints, e.g:

- managing sample returns to the lab: it is important to comply with the pre-analytical requirements of the collected biological samples. For example, a blood sample must be brought back to the lab within 3 hours after its collection to be centrifuged,
- sample collector/collection: the compatibility of the sample collectors and technical procedure must be considered when planning (for example, not all sample collectors can place a catheter),
- the time slots for the sampler to come and go: the fact that some patients have caretakers at home determines the time slots for the samplers to visit.

There are many constraints of this kind that must be taken into account when optimizing the rounds, **which makes** **it very difficult to plan them manually**.

> Make an appointment, create the round, take into account the obligations in terms of hours of passage, the little things to know to take care of them correctly, be able to tell them at what time approximatively we would be able to come and then keep this commitment. Doing all this by hand, it appeared that it was almost impossible.

## The solution

.roc{--bg:#FBFAF6;--card:#FFFFFF;--line:rgba(27,24,19,.10);--tx:#1B1813;--mut:#6B6558;--blue:#4D6AFF;--blue-soft:rgba(77,106,255,.10);
 background:var(--bg);color:var(--tx);margin:0;padding:56px 0;
 font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
 border:1px solid var(--line);border-radius:28px}
 .roc *{box-sizing:border-box}
 .roc-wrap{max-width:1160px;margin:0 auto;padding:0 40px}
 .roc-eyebrow{display:flex;align-items:center;justify-content:center;gap:10px;margin:0 0 40px}
 .roc-eyebrow i{width:7px;height:7px;border-radius:50%;background:var(--blue);flex:none;display:block}
 .roc-eyebrow span{font:700 13px Inter,sans-serif;letter-spacing:.16em;text-transform:uppercase;color:var(--blue)}
 .roc-row{display:flex;align-items:center;justify-content:center;gap:16px;flex-wrap:nowrap}
 .roc-card{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:24px 18px;width:280px;flex:0 0 280px;text-align:center;
 box-shadow:0 1px 2px rgba(27,24,19,.03)}
 .roc-icon{width:52px;height:52px;border-radius:14px;background:var(--blue-soft);border:1px solid rgba(77,106,255,.20);
 display:flex;align-items:center;justify-content:center;margin:0 auto 18px}
 .roc-icon svg{width:26px;height:26px;stroke:var(--blue);fill:none;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
 .roc-card p{font:700 17px/1.4 Inter,sans-serif;color:var(--tx);margin:0;letter-spacing:-.005em}
 .roc-plus{flex:none;width:28px;height:28px;display:flex;align-items:center;justify-content:center}
 .roc-plus svg{width:22px;height:22px;stroke:var(--blue);fill:none;stroke-width:2.2;stroke-linecap:round}
 @media(max-width:900px){
 .roc{padding:40px 0;border-radius:20px}
 .roc-wrap{padding:0 22px}
 .roc-row{gap:8px}
 .roc-card{padding:18px 10px;width:auto;flex:1 1 0;min-width:0}
 .roc-card p{font-size:13px}
 .roc-icon{width:40px;height:40px;margin-bottom:10px}
 .roc-icon svg{width:20px;height:20px}
 .roc-plus{width:18px}
 .roc-plus svg{width:14px;height:14px}
 }

**Comment ça fonctionne

Une interface web pour la prise de rendez-vous

Un algorithme de planification intelligent

Une application mobile pour les préleveurs

> Since using the Kardinal solution, secretaries or nurses make appointments on the web interface. Then, the site manager indicates the working hours of each nurse. Then the algorithm starts automatically and the next morning, the nurse just has to take her phone and go!

The software created by Kardinal is a business solution dedicated to scheduling appointments by taking into account specific business constraints of at-home blood sampling operations:

- Management of lab returns
- Pooling inter-lab samples
- Automatic and optimized emergency dispatch
- The transportation method used (on foot, public transport, by car)
- Resource prioritization system (with possible backup)
- Considering the sampler's departure address
- Considering the collector's skills (e.g., catheter placement)
- Considering the samples' life span
- Possibility to set the sampling time
- Possibility to set the maximum distance covered by each sampler

## The benefits

### At the lab

> It took over an hour to dispatch our 30-40 patients per day. With Kardinal, we save at least 1 hour of time, so the person who planned the round for more than an hour can do other things in the lab.

.benef{
 --bg:transparent; --card:#FFFFFF; --line:rgba(27,24,19,.10);
 --tx:#1B1813; --mut:#6B6558; --blue:#4D6AFF;
 background:var(--bg); color:var(--tx); padding:20px 0; margin:0;
 font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
 }
 .benef *{ box-sizing:border-box; }
 .benef-wrap{ max-width:none; margin:0 auto; padding:0 0px; }
 .benef-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:22px; }
 .benef .bcard{ background:var(--card); border:1px solid var(--line); border-radius:18px; padding:30px 26px; }
 .benef .bicon{ width:48px; height:48px; border-radius:12px; background:rgba(77,106,255,.10);
 border:1px solid rgba(77,106,255,.30); display:flex; align-items:center; justify-content:center; margin-bottom:20px; }
 .benef .bicon svg{ width:24px; height:24px; stroke:var(--blue); fill:none; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
 .benef .bcard h3{ font-size:19px; font-weight:700; margin:0; color:var(--tx); letter-spacing:-.01em; }
 @media (max-width:900px){
 .benef{ padding:64px 0; }
 .benef-wrap{ padding:0 22px; }
 .benef-grid{ grid-template-columns:1fr; }
 }

Gain de temps sur la planification

 Amélioration de la productivité

 Gestion facilitée des urgences (dispatch automatique)

 Meilleure visibilité sur les tournées en cours

 Respect des conditions préanalytiques des prélèvements

 Facilite la communication en centralisant l'information

> Before Kardinal, there had to be perfect communication between everyone but that wasn't always the case. Knowing the requirements of each patient, their time constraints, the presence of a home help or other: Kardinal made it easier to manage these time constraints.

### For nurses

.benef{
 --bg:transparent; --card:#FFFFFF; --line:rgba(27,24,19,.10);
 --tx:#1B1813; --mut:#6B6558; --blue:#4D6AFF;
 background:var(--bg); color:var(--tx); padding:20px 0; margin:0;
 font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
 }
 .benef *{ box-sizing:border-box; }
 .benef-wrap{ max-width:none; margin:0 auto; padding:0 0px; }
 .benef-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:22px; }
 .benef .bcard{ background:var(--card); border:1px solid var(--line); border-radius:18px; padding:30px 26px; }
 .benef .bicon{ width:48px; height:48px; border-radius:12px; background:rgba(77,106,255,.10);
 border:1px solid rgba(77,106,255,.30); display:flex; align-items:center; justify-content:center; margin-bottom:20px; }
 .benef .bicon svg{ width:24px; height:24px; stroke:var(--blue); fill:none; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
 .benef .bcard h3{ font-size:19px; font-weight:700; margin:0; color:var(--tx); letter-spacing:-.01em; }
 @media (max-width:900px){
 .benef{ padding:64px 0; }
 .benef-wrap{ padding:0 22px; }
 .benef-grid{ grid-template-columns:1fr; }
 }

Moins de stress pour le respect des contraintes

 Moins de temps perdu lors de la réalisation de la tournée

 Moins de kilomètres parcourus

> The Kardinal solution allows us to limit the distance traveled by each nurse: previously, nurses tried to optimize rounds without calculating the number of kilometers traveled. Now we can enter data into the system so that they do not travel more than 5 kilometers each morning.

### For patients

.benef{
 --bg:transparent; --card:#FFFFFF; --line:rgba(27,24,19,.10);
 --tx:#1B1813; --mut:#6B6558; --blue:#4D6AFF;
 background:var(--bg); color:var(--tx); padding:20px 0; margin:0;
 font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
 }
 .benef *{ box-sizing:border-box; }
 .benef-wrap{ max-width:none; margin:0 auto; padding:0 0px; }
 .benef-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:22px; }
 .benef .bcard{ background:var(--card); border:1px solid var(--line); border-radius:18px; padding:30px 26px; }
 .benef .bicon{ width:48px; height:48px; border-radius:12px; background:rgba(77,106,255,.10);
 border:1px solid rgba(77,106,255,.30); display:flex; align-items:center; justify-content:center; margin-bottom:20px; }
 .benef .bicon svg{ width:24px; height:24px; stroke:var(--blue); fill:none; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
 .benef .bcard h3{ font-size:19px; font-weight:700; margin:0; color:var(--tx); letter-spacing:-.01em; }
 @media (max-width:900px){
 .benef{ padding:64px 0; }
 .benef-wrap{ padding:0 22px; }
 .benef-grid{ grid-template-columns:1fr; }
 }

Meilleur respect des contraintes du patient

 Capacité d'informer le patient de l'arrivée du préleveur

 Résultats d'analyses disponibles plus tôt

> Beyond the optimization and the improvements of the rounds, what we really appreciate is that we can estimate at what time we visit each patient. When a patient calls us because he is worried that the nurse has not yet come by, we will be able to tell him: "you are next" or "we will arrive within 1 hour or 1 and a half hours", something that patients really appreciate.

## Discover the video testimony of the Cerballiance team below:

https://www.youtube.com/watch?v=EeqS6Gxfz5M

.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)

.kart{
 --bg:#FBFAF6; --card:#FFFFFF; --line:rgba(27,24,19,.10);
 --tx:#1B1813; --mut:#6B6558; --blue:#4D6AFF; --blue-hover:#3A56E6;
 background:var(--bg); color:var(--tx); padding:80px 0; margin:0;
 font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
 }
 .kart *{box-sizing:border-box}
 .kart-wrap{max-width:1000px;margin:0 auto;padding:0 0px}
 .kart-head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:34px;flex-wrap:wrap}
 .kart .eyebrow{display:inline-flex;align-items:center;gap:10px;margin:0 0 20px;
 font:400 16px 'Fakt Pro',Inter,system-ui,sans-serif;letter-spacing:.14em;text-transform:uppercase;color:var(--blue)}
 .kart .eyebrow::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--blue);flex:none}
 .kart-h2{font:700 44px/1.07 Inter,sans-serif;letter-spacing:-.02em;color:var(--tx);margin:0}
 .kart-all,.kart-all:link,.kart-all:visited,.kart-all:hover,.kart-all:focus,.kart-all:active{
 color:#fff !important;text-decoration:none !important;
 }
 .kart-all{display:inline-flex;align-items:center;gap:10px;background:var(--blue);
 font:600 15px Inter,sans-serif;border-radius:12px;padding:13px 22px;
 transition:background .15s ease;white-space:nowrap;-webkit-tap-highlight-color:transparent}
 .kart-all:hover{background:var(--blue-hover) !important}
 .kart-all svg{width:18px;height:18px;transition:transform .15s ease}
 .kart-all:hover svg{transform:translateX(4px)}
 /* grille */
 .kart-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
 .kart-card,.kart-card:link,.kart-card:visited,.kart-card:hover,.kart-card:focus{
 text-decoration:none !important;color:inherit !important;
 }
 .kart-card{display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line);
 border-radius:18px;overflow:hidden;
 transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease}
 .kart-card:hover{transform:translateY(-4px);border-color:rgba(77,106,255,.35);box-shadow:0 16px 40px rgba(27,24,19,.06)}
 .kart-thumb{position:relative;width:100%;aspect-ratio:16/10;background:#ECE9E2 center/cover no-repeat;flex:none}
 .kart-pill{position:absolute;top:14px;left:14px;display:inline-flex;align-items:center;
 background:var(--blue);color:#fff;font:700 11px Inter,sans-serif;letter-spacing:.10em;text-transform:uppercase;
 padding:6px 13px;border-radius:999px}
 .kart-body{display:flex;flex-direction:column;flex:1;padding:22px 24px 24px}
 .kart-date{font:400 13px Inter,sans-serif;color:var(--mut);margin:0 0 10px}
 .kart-title{font:700 19px/1.35 Inter,sans-serif;letter-spacing:-.01em;color:var(--tx);margin:0 0 18px;
 display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
 .kart-more{margin-top:auto;display:inline-flex;align-items:center;gap:8px;
 font:700 12px Inter,sans-serif;letter-spacing:.10em;text-transform:uppercase;color:var(--blue)}
 .kart-more svg{width:16px;height:16px;transition:transform .15s ease}
 .kart-card:hover .kart-more svg{transform:translateX(4px)}
 /* etats chargement / erreur */
 .kart-msg{grid-column:1/-1;font:400 15px Inter,sans-serif;color:var(--mut);padding:8px 0;margin:0}
 .kart-card.skeleton{pointer-events:none}
 .kart-sk-line{height:12px;border-radius:6px;background:#EDEAE3;margin:0 24px 12px}
 @media (max-width:980px){ .kart-grid{grid-template-columns:repeat(2,1fr)} }
 @media (max-width:940px){ .kart-h2{font-size:34px} }
 @media (max-width:620px){
 .kart-wrap{padding:0 22px}
 .kart-grid{grid-template-columns:1fr}
 .kart-all{width:100%;justify-content:center}
 }

From the blog

 Latest articles
 [See all articles](https://kardinal.ai/blog/)
