/* Space Grotesk et Inter Tight embarquees ici : le fichier est mis en
   cache une fois et sert les quatorze pages. Aucune requete vers un
   hebergeur de polices, donc rien qui puisse tomber ou tracer. */

/* Qlovya, feuille de style du site vitrine */
:root{
  --brand:#7B405F;--brand-d:#5F3149;--brand-l:#FAF0F4;
  --ink:#43293A;--slate:#6E5462;--muted:#7E6773;--line:rgba(123,64,95,.16);
  --bg:#FFF8EB;--card:#fff;
  --ok:#176B50;--warn:#9A6300;--bad:#B4333C;
  /* couleurs de module : Okabe-Ito, separables en vision daltonienne */
  --haccp:#15A89C;--haccp-t:#0F7A71;--sondes:#0080B0;--sondes-t:#007796;--rh:#565CFE;--rh-t:#605CDD;--fid:#FE5ACC;--fid-t:#C61F9A;--food:#FE8445;--food-t:#BD4600;--stock:#00A144;--stock-t:#047E35;--tab:#29AFC8;--tab-t:#12697A;
  --disp:'Space Grotesk','Inter Tight',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;
  --body:'Inter Tight',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;
  --shadow:0 2px 3px rgba(67,41,58,.04),0 12px 30px rgba(67,41,58,.08);
  --shadow-lg:0 24px 60px rgba(67,41,58,.12);
  --wrap:1140px;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{font-family:var(--body);background:var(--bg);color:var(--ink);line-height:1.6;-webkit-font-smoothing:antialiased}
h1,h2,h3,h4{font-family:var(--disp);line-height:1.15;letter-spacing:-.02em;font-weight:700}
a{color:inherit;text-decoration:none}
img{max-width:100%;display:block}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 24px}

/* ---- en-tête ---- */
.hd{position:sticky;top:0;z-index:80;background:rgba(255,255,255,.88);backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}
.hd .in{display:flex;align-items:center;gap:28px;height:88px}
.logo{min-height:44px;display:flex;align-items:center}
/* Le mot-symbole complet remplace le monogramme suivi du mot ecrit.
   Les lettres prennent currentColor, seul le point de controle reste
   corail : c est le seul element de la marque qui ne change jamais. */
/* La barre est haute pour que le mot-symbole tienne sans etre serre. */
.logo .mot{height:36px;width:auto;display:block;color:var(--brand)}
.ft .logo .mot{content:url(marque/qlovya-blanc.png)}

.nav{display:flex;align-items:center;gap:4px;margin-left:8px}
.nav a{/* 39 px ne se vise pas au pouce : on monte a 44 px par le rembourrage */
  padding:11px 13px;border-radius:10px;font-size:14.5px;font-weight:600;color:var(--slate);transition:background .15s,color .15s}
.nav a:hover{background:#eef6f8;color:var(--ink)}
.nav a.on{color:var(--brand-d);background:var(--brand-l)}
.nav a.mob{display:none}
.hd .act{margin-left:auto;display:flex;align-items:center;gap:9px}
.burger{display:none;margin-left:auto;background:none;border:1px solid var(--line);border-radius:10px;padding:8px 11px;cursor:pointer;font-size:17px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:11px 20px;border-radius:12px;
  font-family:var(--body);font-size:14.5px;font-weight:700;cursor:pointer;white-space:nowrap;border:1px solid transparent;transition:transform .12s,box-shadow .15s,background .15s}
.btn:hover{transform:translateY(-1px)}
.btn.p{background:var(--brand);color:#fff;box-shadow:0 6px 18px rgba(0,134,206,.28)}
.btn.p:hover{background:var(--brand-d)}
.btn.d{background:var(--ink);color:#fff}
.btn.g{background:#fff;color:var(--ink);border-color:var(--line)}
.btn.g:hover{border-color:#c3dadf}
.btn.lg{padding:15px 28px;font-size:15.5px;border-radius:14px}

/* ---- structures ---- */
section{padding:82px 0}
.eyebrow{display:inline-flex;align-items:center;gap:8px;font-size:11px;font-weight:800;letter-spacing:1.7px;
  text-transform:uppercase;color:var(--brand-d);background:var(--brand-l);padding:7px 14px;border-radius:999px}
.lead{font-size:17.5px;color:var(--slate);max-width:660px;line-height:1.65}
h1.big{font-size:clamp(34px,5vw,54px);margin:20px 0 18px}
h2.sec{font-size:clamp(27px,3.4vw,38px);margin:16px 0 14px}
h3{font-size:19px;margin-bottom:8px}
.center{text-align:center}
.center .lead{margin-left:auto;margin-right:auto}
.grid{display:grid;gap:20px}
.g2{grid-template-columns:repeat(2,1fr)}
.g3{grid-template-columns:repeat(3,1fr)}
.g4{grid-template-columns:repeat(4,1fr)}
.card{background:var(--card);border:1px solid var(--line);border-radius:20px;padding:26px;box-shadow:var(--shadow)}
.card.link{transition:transform .15s,box-shadow .18s,border-color .15s}
.card.link:hover{transform:translateY(-3px);box-shadow:var(--shadow-lg);border-color:#cfe4e8}
.card .ic{width:46px;height:46px;border-radius:14px;display:grid;place-items:center;margin-bottom:16px}
.card p{color:var(--slate);font-size:14.5px}
.card .more{display:inline-flex;align-items:center;gap:6px;margin-top:14px;font-weight:700;font-size:14px;color:var(--brand-d)}

/* ---- hero ---- */
.hero{padding:78px 0 66px;background:
  radial-gradient(900px 420px at 82% -8%,rgba(0,134,206,.13),transparent 62%),
  radial-gradient(700px 360px at 8% 6%,rgba(14,159,110,.09),transparent 60%)}
.hero .in{display:grid;grid-template-columns:1.08fr .92fr;gap:52px;align-items:center}
.hero .cta{display:flex;gap:12px;flex-wrap:wrap;margin:26px 0 16px}
.hero .fine{font-size:13.5px;color:var(--slate)}
.hero .trust{display:flex;gap:18px;flex-wrap:wrap;margin-top:26px;padding-top:22px;border-top:1px solid var(--line)}
.hero .trust span{font-size:13.5px;color:var(--slate);font-weight:600;display:flex;align-items:center;gap:7px}
.hero .trust b{color:var(--ok)}

/* ---- bande de chiffres ---- */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:0;background:var(--card);border:1px solid var(--line);
  border-radius:20px;overflow:hidden;box-shadow:var(--shadow)}
.stats>div{padding:24px 22px;border-left:1px solid var(--line)}
.stats>div:first-child{border-left:0}
.stats .n{font-family:var(--disp);font-size:31px;font-weight:700;letter-spacing:-1px;line-height:1.15}
.stats .l{font-size:12.5px;color:var(--muted);font-weight:600;margin-top:3px}

/* ---- aperçu produit ---- */
.shot{background:var(--card);border:1px solid var(--line);border-radius:22px;box-shadow:var(--shadow-lg);overflow:hidden}
.shot .bar{display:flex;align-items:center;gap:7px;padding:12px 16px;border-bottom:1px solid var(--line);background:#fefbfc}
.shot .bar i{width:10px;height:10px;border-radius:50%;background:#e5eff1;display:block}
.shot .bar span{margin-left:8px;font-size:12px;color:var(--muted);font-weight:600;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.shot .body{padding:20px}
.row{display:flex;align-items:center;gap:12px;padding:13px 15px;border-radius:13px;background:var(--bg);margin-bottom:9px}
.row:last-child{margin-bottom:0}
.row .t{flex:1;font-size:14px;font-weight:600}
.row .s{font-size:12.5px;color:var(--muted)}
.row .v{font-weight:800;font-variant-numeric:tabular-nums}
.pill{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:800;padding:5px 11px;border-radius:999px}
.pill.ok{background:#e7f7f2;color:#0b7d57}
.pill.bad{background:#ffece5;color:#c5350f}

/* ---- étapes ---- */
.steps{counter-reset:s}
.steps .card{position:relative;padding-top:30px}
.steps .card::before{counter-increment:s;content:counter(s);position:absolute;top:-16px;left:26px;width:34px;height:34px;
  border-radius:11px;background:var(--ink);color:#fff;display:grid;place-items:center;font-family:var(--disp);font-weight:700;font-size:16px}

/* ---- tarifs ---- */
.plans{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;align-items:start}
.plan{background:var(--card);border:1px solid var(--line);border-radius:22px;padding:30px;box-shadow:var(--shadow);position:relative}
.plan.reco{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-l),var(--shadow-lg)}
.plan .tag{position:absolute;top:-13px;left:30px;background:var(--brand);color:#fff;font-size:11px;font-weight:800;
  letter-spacing:1px;text-transform:uppercase;padding:6px 13px;border-radius:999px}
.plan .amt{font-family:var(--disp);font-size:40px;font-weight:700;letter-spacing:-1.5px;margin:14px 0 2px}
.plan .amt small{font-family:var(--body);font-size:14px;font-weight:500;color:var(--muted);letter-spacing:0}
.plan ul{list-style:none;margin:20px 0}
.plan li{display:flex;gap:10px;font-size:14.5px;color:var(--slate);padding:7px 0;align-items:flex-start}
.plan li::before{content:"";width:17px;height:17px;border-radius:50%;background:#e7f7f2;flex:none;margin-top:3px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230e9f6e' stroke-width='3.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6L9 17l-5-5'/%3E%3C/svg%3E");
  background-size:11px;background-position:center;background-repeat:no-repeat}
.plan .amt .barre{font-family:var(--body);font-size:19px;font-weight:600;color:var(--muted);
  text-decoration:line-through;text-decoration-thickness:2px;margin-right:10px;letter-spacing:0;vertical-align:2px}
.plan.reco .amt{color:var(--brand-d)}
.bandeau{background:linear-gradient(90deg,var(--brand),#12697A);color:#fff;text-align:center;
  padding:11px 18px;font-size:14px;font-weight:600}
.bandeau b{font-weight:800}
.duo{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:38px}
.duo .card{position:relative;padding-top:28px}
.duo .qui{display:inline-flex;align-items:center;gap:8px;font-size:11px;font-weight:800;letter-spacing:1.5px;
  text-transform:uppercase;color:var(--brand-d);margin-bottom:12px}
.modtar{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:34px}
.modtar a{display:flex;gap:14px;align-items:flex-start;background:var(--card);border:1px solid var(--line);
  border-radius:18px;padding:20px;box-shadow:var(--shadow);transition:transform .15s,box-shadow .18s,border-color .15s}
.modtar a:hover{transform:translateY(-3px);box-shadow:var(--shadow-lg);border-color:#cfe4e8}
.modtar .i{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;flex:none}
.modtar b{display:block;font-family:var(--disp);font-size:16px;margin-bottom:3px}
.modtar span{font-size:13.5px;color:var(--muted)}
.modtar .pr{margin-left:auto;font-family:var(--disp);font-weight:700;font-size:17px;color:var(--ink);flex:none}
table.cmp{width:100%;border-collapse:collapse;background:var(--card);border:1px solid var(--line);border-radius:18px;overflow:hidden}
table.cmp th,table.cmp td{padding:14px 18px;border-bottom:1px solid var(--line);font-size:14.5px;text-align:left}
table.cmp thead th{background:#f2f9fa;font-size:12px;text-transform:uppercase;letter-spacing:.7px;color:var(--slate)}
table.cmp td:not(:first-child),table.cmp th:not(:first-child){text-align:center;width:150px}
table.cmp tr:last-child td{border-bottom:0}
.yes{color:var(--ok);font-weight:800}.no{color:#c8d9dc;font-weight:700;font-size:13px}

/* ---- FAQ ---- */
details.faq{background:var(--card);border:1px solid var(--line);border-radius:16px;margin-bottom:11px;overflow:hidden}
details.faq summary{padding:18px 22px;cursor:pointer;font-weight:700;font-size:15.5px;list-style:none;display:flex;align-items:center;gap:12px}
details.faq summary::-webkit-details-marker{display:none}
details.faq summary::after{content:"+";margin-left:auto;font-size:21px;color:var(--muted);font-weight:400}
details.faq[open] summary::after{content:"−"}
details.faq .a{padding:0 22px 20px;color:var(--slate);font-size:14.5px}

/* ---- bandeau d'appel ---- */
.cta-band{background:var(--ink);color:#fff;border-radius:26px;padding:52px 44px;text-align:center}
.cta-band h2{color:#fff;font-size:clamp(25px,3.2vw,34px)}
.cta-band p{color:#9fbec4;max-width:560px;margin:14px auto 26px;font-size:16px}
.cta-band .btn.g{background:transparent;color:#fff;border-color:rgba(255,255,255,.28)}

/* ---- pied de page ---- */
.ft{background:var(--ink);color:#93b2b8;padding:60px 0 30px;margin-top:20px}
.ft .cols{display:grid;grid-template-columns:1.6fr repeat(3,1fr);gap:34px}
.ft h4{color:#fff;font-size:14px;margin-bottom:14px;font-family:var(--body);font-weight:800;letter-spacing:.3px}
.ft a{display:block;padding:5px 0;font-size:14px;color:#93b2b8;transition:color .13s;padding:11px 2px;display:inline-flex;align-items:center;min-height:44px}
.ft a:hover{color:#fff}
.ft .logo{color:#fff;margin-bottom:12px}
.ft p{font-size:14px;max-width:300px}
.ft .bot{margin-top:44px;padding-top:22px;border-top:1px solid rgba(255,255,255,.1);display:flex;gap:16px;flex-wrap:wrap;
  align-items:center;font-size:13px}
.ft .bot nav{margin-left:auto;display:flex;gap:16px;flex-wrap:wrap}
.ft .bot nav a{display:inline;padding:0}

/* ---- fil d'ariane ---- */
.bc{padding:22px 0 0;font-size:13.5px;color:var(--muted)}
/* Le fil d Ariane faisait 16 px de haut. Meme regle que la navigation :
   la zone touchable monte a 44 px sans qu une ligne bouge. */
.bc a{padding:13px 4px;margin:-13px -4px;display:inline-flex;align-items:center;min-height:44px}

.bc a:hover{color:var(--brand-d)}
.bc span{margin:0 7px;opacity:.6}

/* ---- contenu long ---- */
.prose{max-width:760px}
.prose h2{font-size:25px;margin:38px 0 12px}
.prose h3{font-size:18px;margin:26px 0 8px}
.prose p,.prose li{color:var(--slate);font-size:15.5px;margin-bottom:12px}
.prose ul,.prose ol{padding-left:22px;margin-bottom:16px}
.prose li{margin-bottom:7px}
.prose strong{color:var(--ink)}
.prose .note{background:#fff6ec;border:1px solid #f6d5b4;border-radius:14px;padding:16px 20px;margin:20px 0}
.prose .note p{margin:0;font-size:14.5px;color:#7a4612}
.prose table{width:100%;border-collapse:collapse;margin:18px 0;font-size:14.5px}
.prose th,.prose td{border:1px solid var(--line);padding:10px 13px;text-align:left}
.prose th{background:#f2f9fa}

.split{display:grid;grid-template-columns:1fr 1fr;gap:44px;align-items:start}
.split.mid{align-items:center}
.split.rev>div:first-child{order:2}
.bullets{list-style:none;margin-top:20px}
.bullets li{display:flex;gap:13px;padding:11px 0;align-items:flex-start;font-size:15px;color:var(--slate)}
.bullets .b{width:26px;height:26px;border-radius:9px;flex:none;display:grid;place-items:center;background:var(--brand-l);color:var(--brand-d)}
.bullets b{color:var(--ink);display:block;font-size:15px}

@media(max-width:960px){
  .hero .in,.split{grid-template-columns:1fr;gap:34px}
  .split.rev>div:first-child{order:0}
  .g3,.g4,.plans,.stats,.modtar{grid-template-columns:repeat(2,1fr)}
  .duo{grid-template-columns:1fr}
  .ft .cols{grid-template-columns:1fr 1fr}
  .stats>div:nth-child(3){border-left:0}
  .nav,.hd .act .btn.g{display:none}
  .hd .act .btn.p{padding:9px 14px;font-size:13.5px;border-radius:10px}
  .burger{display:block;margin-left:12px}
  .nav.open{display:flex;position:absolute;top:66px;left:0;right:0;background:#fff;flex-direction:column;
    align-items:stretch;padding:12px;border-bottom:1px solid var(--line);gap:2px;box-shadow:var(--shadow);z-index:90}
  .nav.open a.mob{display:block;border-top:1px solid var(--line);margin-top:6px;padding-top:12px;color:var(--brand-d)}
  .nav.open a.mob+a.mob{border-top:0;margin-top:0;padding-top:8px}
}
@media(max-width:620px){
  section{padding:56px 0}
  .hd .act{display:none}
  .burger{margin-left:auto}
  h1.big{font-size:clamp(28px,8vw,34px)}
  .g2,.g3,.g4,.plans,.stats,.duo,.modtar{grid-template-columns:1fr}
  .stats>div{border-left:0;border-top:1px solid var(--line)}
  .stats>div:first-child{border-top:0}
  .ft .cols{grid-template-columns:1fr}
  .cta-band{padding:38px 24px}
}

/* ---- apparitions au défilement ---- */
.rv{opacity:0;transform:translateY(18px);
  transition:opacity .62s cubic-bezier(.22,1,.36,1),transform .62s cubic-bezier(.22,1,.36,1)}
.rv.in{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){
  .rv,.rv.in{opacity:1!important;transform:none!important;transition:none!important}
  .bo .ligne{stroke-dasharray:none!important;stroke-dashoffset:0!important;animation:none!important}
}
.hd{transition:box-shadow .2s,background .2s}
.hd.scr{box-shadow:0 4px 20px rgba(67,41,58,.09)}
.shot,.card,.plan,.modtar a{will-change:transform}
.shot{transition:transform .5s cubic-bezier(.22,1,.36,1),box-shadow .5s}
.shot:hover{transform:translateY(-4px)}
.pill.bad{animation:vgpulse 2.6s ease-in-out 1.2s 3}
@keyframes vgpulse{0%,100%{box-shadow:0 0 0 0 rgba(255,78,18,0)}50%{box-shadow:0 0 0 6px rgba(255,78,18,.14)}}

/* ---- sélecteur de vue ---- */
.seg{display:inline-flex;background:#e9f3f5;border-radius:14px;padding:5px;gap:4px;margin:0 auto}
.seg button{border:0;background:transparent;font-family:var(--body);font-size:14px;font-weight:700;
  color:var(--slate);padding:10px 20px;border-radius:10px;cursor:pointer;transition:background .18s,color .18s,box-shadow .18s}
.seg button.on{background:#fff;color:var(--ink);box-shadow:var(--shadow)}
.demo-pane{display:none}
.demo-pane.on{display:block;animation:vgfade .38s cubic-bezier(.22,1,.36,1)}
@keyframes vgfade{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.demo-note{font-size:13.5px;color:var(--muted);text-align:center;margin-top:20px}
.demo-note b{color:var(--brand-d)}

/* ---- tablette ---- */
.dev{max-width:640px;margin:0 auto;background:#200a15;border-radius:26px;padding:14px;box-shadow:var(--shadow-lg)}
.dev .scr{background:var(--bg);border-radius:15px;overflow:hidden;height:452px;display:flex;flex-direction:column;position:relative}
.tb-top{background:var(--brand);color:#fff;padding:11px 15px;display:flex;align-items:center;gap:10px;flex:none}
.tb-top .nm{font-family:var(--disp);font-weight:700;font-size:15px}
.tb-top .sub{font-size:11.5px;opacity:.85}
.tb-top .h{margin-left:auto;font-size:12px;opacity:.9;font-variant-numeric:tabular-nums}
.tb-back{background:rgba(255,255,255,.16);border:0;color:#fff;border-radius:9px;width:28px;height:28px;
  cursor:pointer;font-size:15px;line-height:1;display:none;place-items:center}
.tb-back.on{display:grid}
.tb-body{flex:1;overflow:auto;padding:14px}
.tb-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.tb-tile{background:#fff;border:1px solid var(--line);border-radius:15px;padding:15px 10px;text-align:center;
  cursor:pointer;transition:transform .14s,box-shadow .16s,border-color .14s}
.tb-tile:hover{transform:translateY(-2px);box-shadow:var(--shadow);border-color:#cfe4e8}
.tb-tile .i{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;margin:0 auto 8px}
.tb-tile .t{font-size:12.5px;font-weight:700;line-height:1.25}
.tb-tile .s{font-size:10.5px;color:var(--muted);margin-top:3px}
.tb-it{background:#fff;border:1px solid var(--line);border-radius:13px;padding:11px 13px;display:flex;
  align-items:center;gap:11px;margin-bottom:8px;cursor:pointer;transition:border-color .14s,transform .14s}
.tb-it:hover{border-color:var(--brand);transform:translateX(2px)}
.tb-it .t{font-size:13.5px;font-weight:700}
.tb-it .s{font-size:11.5px;color:var(--muted)}
.tb-it .v{margin-left:auto;font-weight:800;font-variant-numeric:tabular-nums}
.tb-hint{font-size:12px;color:var(--muted);margin-bottom:10px}
.tb-saisie{display:grid;grid-template-columns:1fr 190px;gap:16px;height:100%}
.tb-val{background:#fff;border:1px solid var(--line);border-radius:15px;padding:16px;display:flex;
  flex-direction:column;justify-content:center}
.tb-val .q{font-size:12px;color:var(--muted)}
.tb-val .n{font-family:var(--disp);font-size:46px;font-weight:700;letter-spacing:-2px;line-height:1.1;
  font-variant-numeric:tabular-nums}
.tb-val .c{font-size:12px;font-weight:700;margin-top:6px}
.kp{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;align-content:start}
.kp button{border:1px solid var(--line);background:#fff;border-radius:11px;padding:11px 0;font-family:var(--disp);
  font-size:17px;font-weight:700;cursor:pointer;transition:background .12s,transform .08s}
.kp button:hover{background:#eef6f8}
.kp button:active{transform:scale(.95)}
.kp button.ok{grid-column:span 3;background:var(--brand);color:#fff;border-color:var(--brand);font-size:15px}
.kp button.ok:hover{background:var(--brand-d)}
.tb-toast{position:absolute;left:50%;bottom:16px;transform:translate(-50%,20px);opacity:0;background:var(--ink);
  color:#fff;padding:10px 18px;border-radius:12px;font-size:13px;font-weight:600;pointer-events:none;
  transition:opacity .3s,transform .3s;white-space:nowrap;z-index:5}
.tb-toast.on{opacity:1;transform:translate(-50%,0)}

/* ---- back-office ---- */
.bo{background:var(--card);border:1px solid var(--line);border-radius:18px;overflow:hidden;box-shadow:var(--shadow-lg)}
.bo .chrome{display:flex;align-items:center;gap:7px;padding:11px 15px;border-bottom:1px solid var(--line);background:#fefbfc}
.bo .chrome i{width:10px;height:10px;border-radius:50%;background:#e5eff1;display:block}
.bo .chrome span{margin-left:8px;font-size:12px;color:var(--muted);font-weight:600}
.bo .in{display:grid;grid-template-columns:196px 1fr;min-height:452px}
.bo .side{background:#200a15;padding:14px 10px}
.bo .side .cat{font-size:9.5px;text-transform:uppercase;letter-spacing:1px;color:#7d9499;padding:8px 10px 5px}
.bo .side a{display:flex;gap:9px;align-items:center;color:#ccdde0;font-size:13px;font-weight:600;
  padding:8px 10px;border-radius:9px;cursor:pointer;transition:background .14s,color .14s}
.bo .side a:hover{background:#1c3237;color:#fff}
.bo .side a.on{background:var(--brand);color:#fff}
.bo .main{padding:18px 20px;background:var(--bg)}
.bo h4{font-family:var(--disp);font-size:17px;margin-bottom:2px}
.bo .sous{font-size:12.5px;color:var(--muted);margin-bottom:16px}
.bo-k{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:16px}
.bo-k>div{background:#fff;border:1px solid var(--line);border-radius:13px;padding:12px}
.bo-k .n{font-family:var(--disp);font-size:22px;font-weight:700;letter-spacing:-.6px;line-height:1.2;
  font-variant-numeric:tabular-nums}
.bo-k .l{font-size:10.5px;color:var(--muted);font-weight:600;margin-top:2px;line-height:1.3}
.bo-c{background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px}
.bo-c .tt{font-size:12.5px;font-weight:700;margin-bottom:10px;display:flex;align-items:center;gap:8px}
.bo-c .tt span{margin-left:auto;font-size:11px;color:var(--muted);font-weight:600}
.bo .ligne{stroke-dasharray:620;stroke-dashoffset:620}
.bo.vu .ligne{animation:vgtrace 1.5s cubic-bezier(.4,0,.2,1) forwards}
@keyframes vgtrace{to{stroke-dashoffset:0}}
.bo-r{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--line);font-size:12.5px}
.bo-r:last-child{border-bottom:0}
.bo-r .t{flex:1;font-weight:600}
.bo-r .s{font-size:11px;color:var(--muted);font-weight:500}
.bo-r .v{font-weight:800;font-variant-numeric:tabular-nums}
.bar{height:7px;background:#eef6f8;border-radius:99px;overflow:hidden;width:110px;flex:none}
.bar i{display:block;height:100%;border-radius:99px;width:0;transition:width 1s cubic-bezier(.22,1,.36,1)}
.bo table{width:100%;border-collapse:collapse;font-size:12.5px}
.bo table th{text-align:left;font-size:10px;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);
  padding:0 8px 8px 0}
.bo table td{padding:8px 8px 8px 0;border-top:1px solid var(--line)}
.bo .et{display:inline-flex;font-size:10.5px;font-weight:800;padding:3px 9px;border-radius:99px}
.bo .et.ok{background:#e7f7f2;color:#0b7d57}
.bo .et.bad{background:#ffece5;color:#c5350f}

@media(max-width:760px){
  .bo .in{grid-template-columns:1fr}
  .bo .side{display:flex;gap:4px;overflow-x:auto;padding:10px}
  .bo .side .cat{display:none}
  .bo .side a{white-space:nowrap}
  .bo-k{grid-template-columns:repeat(2,1fr)}
  .tb-saisie{grid-template-columns:1fr;height:auto}
  .tb-grid{grid-template-columns:repeat(2,1fr)}
  .dev .scr{height:auto;min-height:452px}
}

/* Un lien au fil du texte fait la hauteur de sa ligne. On elargit la zone
   touchable sans casser le rythme du paragraphe. */
.lgl a,.legal a,main p a{padding:12px 2px;margin:-12px -2px;display:inline-block}
