/* Dinovore v0.8 — design inspire Foodvisor, responsive, sans emoji */
:root{
 --bg:#F6F7F8; --surface:#FFF; --surface-2:#F1F3F4; --surface-3:#E8EBED;
 --vert:#24B47E; --vert-f:#178A5F; --vert-d:#E6F7F0;
 --bleu:#3B82F6; --bleu-d:#EFF6FF;
 --orange:#F5A524; --orange-d:#FEF6E7;
 --rouge:#E5484D; --rouge-d:#FDEDED;
 --violet:#8B5CF6;
 --texte:#16191C; --texte-2:#5B6570; --muted:#98A2AC;
 --trait:#E4E8EB;
 --r:12px; --r-g:16px; --r-xl:20px;
 --o:0 1px 2px rgba(16,24,40,.05);
 --o-md:0 4px 14px rgba(16,24,40,.09);
 --o-lg:0 12px 32px rgba(16,24,40,.14);
 --nav-w:250px;
 --pas:14px;
}
*{box-sizing:border-box;margin:0}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{background:var(--bg);color:var(--texte);font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;
 font-size:15px;line-height:1.55;-webkit-font-smoothing:antialiased;
 padding-top:env(safe-area-inset-top,0);padding-bottom:env(safe-area-inset-bottom,0)}
h1,h2,h3,h4{font-weight:700;color:var(--texte);line-height:1.25;letter-spacing:-.011em}
h1{font-size:clamp(1.35rem,4.2vw,1.9rem)} h2{font-size:clamp(1rem,2.6vw,1.2rem)}
h3{font-size:.94rem} h4{font-size:.82rem}
a{color:var(--vert-f);text-decoration:none}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{
 outline:2px solid var(--vert);outline-offset:2px;border-radius:6px}
.ico{flex:none;vertical-align:middle}

/* ============ LAYOUT RESPONSIVE ============ */
.contenu{width:100%;max-width:min(960px,100%);margin:0 auto;padding:0 clamp(12px,3vw,20px)}
.etroit{max-width:min(560px,100%)}

/* ---- Barre superieure ---- */
.topbar{background:var(--surface);border-bottom:1px solid var(--trait);position:sticky;top:0;z-index:60;
 padding-top:env(safe-area-inset-top,0);transition:box-shadow .18s}
.topbar.compact{box-shadow:var(--o-md)}
.topbar-in{max-width:960px;margin:0 auto;padding:10px clamp(12px,3vw,20px);display:flex;align-items:center;gap:12px;
 transition:padding .18s}
.topbar.compact .topbar-in{padding-top:6px;padding-bottom:6px}
.btn-menu{background:none;border:none;cursor:pointer;color:var(--texte);padding:6px;margin:-6px;
 display:grid;place-items:center;border-radius:8px;min-width:40px;min-height:40px}
.btn-menu:hover{background:var(--surface-2)}
.topbar .titre-page{font-weight:700;font-size:1.02rem;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;
 white-space:nowrap;transition:font-size .18s}
.topbar.compact .titre-page{font-size:.92rem}
.graines-pill{display:inline-flex;align-items:center;gap:5px;font-size:.8rem;font-weight:700;color:#8A5A00;
 background:var(--orange-d);padding:5px 11px;border-radius:99px;white-space:nowrap;transition:all .18s}
.topbar.compact .graines-pill{font-size:.74rem;padding:3px 9px}

/* ---- Menu lateral ---- */
.voile{position:fixed;inset:0;background:rgba(16,25,28,.44);opacity:0;pointer-events:none;
 transition:opacity .22s;z-index:90;backdrop-filter:blur(2px)}
.voile.ouvert{opacity:1;pointer-events:auto}
.sidebar{position:fixed;top:0;left:0;bottom:0;width:min(var(--nav-w),84vw);background:var(--surface);
 z-index:100;transform:translateX(-102%);transition:transform .24s cubic-bezier(.4,0,.2,1);
 display:flex;flex-direction:column;box-shadow:var(--o-lg);
 padding-top:env(safe-area-inset-top,0);padding-bottom:env(safe-area-inset-bottom,0)}
.sidebar.ouvert{transform:translateX(0)}
.sidebar-tete{display:flex;align-items:center;gap:10px;padding:16px 18px;border-bottom:1px solid var(--trait)}
.sidebar-tete .nom{font-weight:800;font-size:1.1rem;letter-spacing:-.02em;flex:1}
.sidebar-tete button{background:none;border:none;cursor:pointer;color:var(--texte-2);padding:6px;margin:-6px;
 min-width:36px;min-height:36px;display:grid;place-items:center;border-radius:8px}
.sidebar-tete button:hover{background:var(--surface-2)}
.sidebar nav{padding:10px;overflow-y:auto;flex:1}
.sidebar nav a{display:flex;align-items:center;gap:12px;padding:11px 12px;border-radius:10px;
 color:var(--texte-2);font-weight:600;font-size:.9rem;margin-bottom:2px;min-height:44px}
.sidebar nav a:hover{background:var(--surface-2);color:var(--texte)}
.sidebar nav a[aria-current="page"]{background:var(--vert-d);color:var(--vert-f)}
.sidebar nav a[aria-current="page"] .ico{color:var(--vert)}
.sidebar-pied{padding:12px 18px;border-top:1px solid var(--trait);font-size:.74rem;color:var(--muted)}

/* ---- Avertissement ---- */
.avertissement{background:var(--orange-d);color:#8A5A00;font-size:.79rem;padding:7px 16px;text-align:center;
 border-bottom:1px solid #F7D9A0;display:flex;align-items:center;justify-content:center;gap:6px}

/* ============ COMPOSANTS ============ */
.bloc{background:var(--surface);border:1px solid var(--trait);border-radius:var(--r-xl);
 padding:clamp(14px,3vw,18px);margin-bottom:var(--pas);box-shadow:var(--o)}
.bloc>h2:first-child,.bloc>h3:first-child{margin-top:0}

.bouton,button.bouton{display:inline-flex;align-items:center;justify-content:center;gap:6px;background:var(--vert);
 color:#fff;border:none;border-radius:10px;padding:10px 18px;font-size:.88rem;font-weight:600;font-family:inherit;
 cursor:pointer;transition:background .13s,transform .1s;min-height:40px}
.bouton:hover{background:var(--vert-f)} .bouton:active{transform:scale(.98)}
.bouton.secondaire{background:var(--surface);color:var(--texte);border:1px solid var(--trait)}
.bouton.secondaire:hover{background:var(--surface-2)}
.bouton.danger{background:var(--rouge)} .bouton.danger:hover{background:#C93B3F}
.bouton.petit{padding:6px 12px;font-size:.79rem;min-height:32px;border-radius:8px}
.bouton.plein{width:100%} .bouton:disabled{opacity:.42;cursor:not-allowed;transform:none}
.btn-icone{width:32px;height:32px;min-height:32px;padding:0;border-radius:50%}

.grille{display:grid;gap:var(--pas);grid-template-columns:1fr}
@media(min-width:700px){.grille.deux{grid-template-columns:1fr 1fr}}
.cartes{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(clamp(150px,44vw,190px),1fr))}

/* ---- Nutriments : nom et chiffre bien separes ---- */
.nutriment{margin-bottom:11px}
.nut-tete{display:flex;justify-content:space-between;align-items:baseline;gap:clamp(12px,4vw,28px);
 font-size:.84rem;margin-bottom:4px}
.nut-tete .nom{font-weight:600;flex:1;min-width:0}
.nut-tete .chiffre{color:var(--texte-2);font-size:.8rem;white-space:nowrap;font-variant-numeric:tabular-nums;
 flex:none;text-align:right}
.barre{height:6px;background:var(--surface-2);border-radius:99px;overflow:hidden}
.barre i{display:block;height:100%;border-radius:99px;transition:width .45s}
.barre i.insuffisant{background:var(--orange)} .barre i.partiel{background:var(--bleu)}
.barre i.couvert{background:var(--vert)} .barre i.au-dela-du-plafond{background:var(--violet)}
.tag-vig{display:inline-block;font-size:.6rem;font-weight:700;background:var(--orange-d);color:#8A5A00;
 padding:1px 6px;border-radius:99px;margin-left:5px;vertical-align:middle}

/* ---- Listes ---- */
.liste{list-style:none;padding:0}
.liste li{display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid var(--surface-2)}
.liste li:last-child{border-bottom:none}
.liste .principal{flex:1;min-width:0}
.liste .principal b{display:block;font-weight:600;font-size:.89rem}
.liste .principal small{color:var(--texte-2);font-size:.78rem}
.etiq{font-size:.69rem;font-weight:700;padding:3px 8px;border-radius:99px;background:var(--surface-2);
 color:var(--texte-2);white-space:nowrap;font-variant-numeric:tabular-nums}
.etiq.vert{background:var(--vert-d);color:var(--vert-f)}
.etiq.bleu{background:var(--bleu-d);color:#1D4ED8}
.etiq.orange{background:var(--orange-d);color:#8A5A00}

/* ---- Formulaires ---- */
label{display:block;font-size:.81rem;font-weight:600;color:var(--texte);margin-bottom:4px}
input[type=text],input[type=number],input[type=email],input[type=password],input[type=date],select,textarea{
 width:100%;padding:10px 12px;font-size:16px;font-family:inherit;border:1px solid var(--trait);
 border-radius:10px;background:var(--surface);color:var(--texte);transition:border-color .13s;min-height:42px}
@media(min-width:700px){input,select,textarea{font-size:.92rem}}
input:focus,select:focus,textarea:focus{border-color:var(--vert);outline:none;box-shadow:0 0 0 3px var(--vert-d)}
.champ{margin-bottom:12px}
.champs2{display:grid;gap:12px;grid-template-columns:1fr}
@media(min-width:520px){.champs2{grid-template-columns:1fr 1fr}}
.aide{font-size:.76rem;color:var(--muted);margin-top:3px;line-height:1.45}
.msg{padding:10px 14px;border-radius:10px;margin-bottom:12px;font-size:.85rem;display:flex;align-items:flex-start;gap:8px}
.msg.erreur{background:var(--rouge-d);color:#9B1C1F} .msg.succes{background:var(--vert-d);color:#106643}
.msg.info{background:var(--bleu-d);color:#1D4ED8} .msg.attention{background:var(--orange-d);color:#8A5A00}

/* ---- Score ---- */
.score-rond{width:clamp(64px,17vw,78px);height:clamp(64px,17vw,78px);position:relative;flex:none}
.score-rond svg{transform:rotate(-90deg);width:100%;height:100%}
.score-rond .v{position:absolute;inset:0;display:grid;place-items:center;text-align:center}
.score-rond .v b{font-size:clamp(1.2rem,4vw,1.45rem);font-weight:800;line-height:1;font-variant-numeric:tabular-nums}
.score-rond .v i{font-style:normal;font-size:.56rem;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.04em}

/* ---- Semaine ---- */
.bande-semaine{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:var(--pas)}
.jour{text-align:center;padding:8px 2px;border-radius:10px;font-size:.68rem;font-weight:700;color:var(--muted);
 background:var(--surface);border:1px solid var(--trait);min-height:48px;display:flex;flex-direction:column;
 justify-content:center;transition:all .13s}
.jour:hover{border-color:var(--vert)}
.jour b{display:block;font-size:.95rem;color:var(--texte-2);margin-top:1px;font-variant-numeric:tabular-nums}
.jour.actif{background:var(--vert);color:#fff;border-color:var(--vert)} .jour.actif b{color:#fff}
.jour.rempli{background:var(--vert-d);border-color:#BFE9D6} .jour.rempli b{color:var(--vert-f)}
.jour.passe{opacity:.5}

/* ---- Cartes repas ---- */
.repas{display:flex;align-items:center;gap:10px;padding:10px 12px;background:var(--surface);
 border:1px solid var(--trait);border-radius:var(--r);margin-bottom:6px}
.repas-ico{width:34px;height:34px;border-radius:9px;display:grid;place-items:center;flex:none;color:var(--texte-2)}
.repas .principal b{font-size:.88rem} .repas .principal small{font-size:.75rem}

/* ---- Grille planning ---- */
.plan{display:grid;gap:6px;grid-template-columns:repeat(7,minmax(118px,1fr))}
.plan-j{background:var(--surface);border:1px solid var(--trait);border-radius:var(--r);padding:8px}
.plan-j h4{font-size:.68rem;text-align:center;color:var(--texte-2);margin-bottom:6px;text-transform:uppercase;letter-spacing:.03em}
.creneau{font-size:.71rem;padding:6px;border-radius:8px;margin-bottom:4px;background:var(--surface-2);line-height:1.35}
.creneau b{display:block;font-weight:600;font-size:.73rem;color:var(--texte)}
.creneau small{color:var(--muted);font-size:.64rem}
.creneau.vide{opacity:.4;font-style:italic}
@media(max-width:700px){.plan{grid-template-columns:repeat(2,1fr)}}

/* ---- Recherche et filtres ---- */
.recherche{position:relative;margin-bottom:12px}
.recherche input{padding-left:38px}
.recherche .ico{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--muted);pointer-events:none}
.filtres{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px}
.fbtn{background:var(--surface);border:1px solid var(--trait);border-radius:99px;padding:6px 12px;
 font-size:.77rem;font-weight:600;color:var(--texte-2);cursor:pointer;font-family:inherit;min-height:34px}
.fbtn:hover{border-color:var(--vert)} .fbtn.on{background:var(--vert);color:#fff;border-color:var(--vert)}
.groupe-filtre{margin-bottom:8px}
.groupe-filtre .lbl{font-size:.7rem;color:var(--muted);font-weight:700;text-transform:uppercase;
 letter-spacing:.04em;margin-bottom:4px;display:block}
.compteur{font-size:.77rem;color:var(--muted);margin-bottom:10px}
.masquee{display:none!important}

/* ---- Recette en ligne ---- */
.rec{border-bottom:1px solid var(--surface-2);padding:11px 0}
.rec:last-child{border-bottom:none}
.rec-tete{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.rec-nom{font-weight:600;font-size:.89rem;flex:1;min-width:130px}
.rec-meta{display:flex;gap:5px;flex-wrap:wrap;align-items:center}
.btn-fav{background:none;border:none;cursor:pointer;color:var(--muted);padding:4px;display:grid;place-items:center;
 min-width:32px;min-height:32px;border-radius:50%}
.btn-fav:hover{background:var(--surface-2);color:var(--rouge)}
.btn-fav.on{color:var(--rouge)}
.rec-detail{margin-top:10px;padding:14px;background:var(--surface-2);border-radius:var(--r-g)}

/* ---- Boutique ---- */
.obj{background:var(--surface);border:1px solid var(--trait);border-radius:var(--r-g);padding:14px;
 text-align:center;transition:all .13s}
.obj:hover{border-color:var(--orange);box-shadow:var(--o-md)}
.obj .visuel{width:48px;height:48px;margin:0 auto 8px;display:grid;place-items:center;color:var(--vert-f);
 background:var(--vert-d);border-radius:12px}
.obj h3{font-size:.85rem;margin-bottom:2px} .obj p{font-size:.74rem;color:var(--texte-2);margin-bottom:8px}
.prix{display:inline-flex;align-items:center;gap:4px;font-size:.83rem;font-weight:700;color:#8A5A00}
.obj.acquis{opacity:.45}

/* ---- Prix / budget ---- */
.total-prix{background:var(--vert-d);border-radius:var(--r-g);padding:14px;margin-bottom:var(--pas)}
.total-prix .montant{font-size:1.5rem;font-weight:800;color:var(--vert-f);font-variant-numeric:tabular-nums}
.total-prix .note{font-size:.74rem;color:var(--texte-2);margin-top:3px}
.ligne-reste{background:var(--bleu-d);border-radius:10px;padding:10px 12px;margin-top:8px;font-size:.79rem;line-height:1.5}

/* ---- Pages pleine hauteur ---- */
.centre{min-height:100vh;min-height:100dvh;display:grid;place-items:center;background:var(--bg);padding:24px 16px}
.carte-centre{background:var(--surface);border-radius:var(--r-xl);padding:clamp(22px,5vw,30px);
 max-width:min(380px,100%);width:100%;box-shadow:var(--o-md);text-align:center}
.carte-centre h1{font-size:1.35rem;margin-bottom:4px}
.carte-centre p{color:var(--texte-2);font-size:.85rem;margin:0 0 18px}
.carte-centre form{text-align:left}

.pied{margin-top:30px;padding:20px 16px 34px;border-top:1px solid var(--trait);text-align:center;
 font-size:.75rem;color:var(--muted);line-height:1.6}
.pied a{color:var(--muted)}
.discret{color:var(--texte-2);font-size:.8rem}
.mt{margin-top:18px}
.defile-x{overflow-x:auto;-webkit-overflow-scrolling:touch}
table{width:100%;border-collapse:collapse}

/* ---- Grands ecrans : sidebar permanente ---- */
@media(min-width:1080px){
 .sidebar{transform:translateX(0);box-shadow:none;border-right:1px solid var(--trait)}
 .sidebar-tete button{display:none}
 .voile{display:none}
 body{padding-left:var(--nav-w)}
 .topbar{left:var(--nav-w)}
 .btn-menu{display:none}
}

@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
@media print{.topbar,.sidebar,.voile,.pied,.bouton{display:none!important}body{padding:0;background:#fff}}

/* ---- Preferences alimentaires ---- */
.pref-card{display:flex;align-items:center;gap:12px;padding:12px 14px;background:var(--surface);
 border:1px solid var(--trait);border-radius:var(--r);margin-bottom:6px;transition:all .13s}
.pref-card.liked{border-color:var(--vert);background:var(--vert-d)}
.pref-card.disliked{border-color:var(--rouge);background:var(--rouge-d);opacity:.55}
.pref-card .nom{flex:1;font-weight:600;font-size:.87rem}
.pref-card .categorie{font-size:.72rem;color:var(--muted)}
.pref-btn{width:34px;height:34px;border-radius:50%;border:1px solid var(--trait);cursor:pointer;
 display:grid;place-items:center;background:var(--surface);transition:transform .1s}
.pref-btn:hover{transform:scale(1.1)}
.pref-btn.like{color:var(--vert-f)} .pref-btn.dislike{color:var(--rouge)}
.pref-btn:disabled{opacity:.4;cursor:default;transform:none}
.module-card{background:var(--surface);border:1px solid var(--trait);border-radius:var(--r-g);padding:16px;
 margin-bottom:10px;display:block;color:inherit;transition:all .13s}
.module-card:hover{border-color:var(--vert);box-shadow:var(--o-md)}
.module-card .emoji{display:block;margin-bottom:6px;color:var(--vert-f)}
.quiz-question{background:var(--surface-2);border-radius:var(--r-g);padding:14px;margin-bottom:10px}
.quiz-question p{font-weight:600;margin-bottom:8px}
.quiz-choix{display:grid;gap:6px}
.quiz-choix label{display:flex;align-items:center;gap:9px;padding:9px 12px;background:var(--surface);
 border:1px solid var(--trait);border-radius:10px;cursor:pointer;font-weight:400;font-size:.87rem;min-height:42px}
.quiz-choix label:hover{border-color:var(--vert)}
.quiz-choix input{accent-color:var(--vert);width:17px;height:17px}
.nid{display:flex;gap:5px;justify-content:space-between}
.oeuf{flex:1;text-align:center}
.oeuf svg{width:100%;max-width:36px;height:auto}
.oeuf span{display:block;font-size:.66rem;color:var(--muted);margin-top:2px}
.oeuf.aujourdhui span{color:var(--vert-f);font-weight:700}
.vallee-scene{position:relative;border-radius:var(--r-xl);overflow:hidden;margin:12px 0;box-shadow:var(--o-md)}
.vallee-scene svg{display:block;width:100%;height:auto}
.montagne-labels{display:flex;justify-content:space-around;padding:8px 6px 2px}
.montagne-label{text-align:center;font-size:.68rem;font-weight:600;color:var(--texte-2);line-height:1.3}
.montagne-label b{display:block;font-size:.85rem;color:var(--texte);font-variant-numeric:tabular-nums}

/* ---- Menu trois points sur un plat du calendrier ---- */
.btn-points{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;color:var(--texte-2);
 flex:none;border:1px solid transparent}
.btn-points:hover{background:var(--surface-2);color:var(--texte);border-color:var(--trait)}
.fiche-plat{flex-basis:100%;margin-top:10px;padding-top:12px;border-top:1px solid var(--trait)}
.fiche-actions{display:flex;gap:6px;flex-wrap:wrap}

/* ---- Panneau de filtres repliable ---- */
.filtres-panneau summary::-webkit-details-marker{display:none}
.filtres-panneau summary::marker{content:''}
.filtres-panneau[open] summary{border-bottom:1px solid var(--trait);padding-bottom:10px}

/* ---- Mini-jeu de duel ---- */
.jeu-entete{display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:16px}
.jeu-scores{display:flex;gap:14px}
.jeu-scores div{text-align:center;background:var(--surface);border:1px solid var(--trait);
 border-radius:12px;padding:7px 13px;min-width:62px}
.jeu-scores b{display:block;font-size:1.15rem;font-variant-numeric:tabular-nums;line-height:1.1}
.jeu-scores span{font-size:.62rem;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-weight:700}
.jeu-zone{margin-bottom:14px}
.duel{display:grid;grid-template-columns:1fr auto 1fr;gap:10px;align-items:stretch}
@media(max-width:560px){.duel{grid-template-columns:1fr;gap:8px}}
.carte-duel{background:var(--surface);border:2px solid var(--trait);border-radius:var(--r-xl);
 padding:26px 16px;font-family:inherit;font-size:1rem;font-weight:600;color:var(--texte);cursor:pointer;
 display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;
 min-height:130px;transition:all .15s;text-align:center}
.carte-duel:hover:not(:disabled){border-color:var(--vert);transform:translateY(-2px);box-shadow:var(--o-md)}
.carte-duel:disabled{cursor:default}
.carte-duel .nom{line-height:1.3}
.carte-duel .valeur{font-size:1.5rem;font-weight:800;font-variant-numeric:tabular-nums;color:var(--texte-2);min-height:1.5rem}
.carte-duel.juste{border-color:var(--vert);background:var(--vert-d)}
.carte-duel.juste .valeur{color:var(--vert-f)}
.carte-duel.faux{border-color:var(--trait);opacity:.5}
.vs{display:grid;place-items:center;font-size:.78rem;font-weight:700;color:var(--muted);
 text-transform:uppercase;letter-spacing:.06em;padding:0 4px}
.jeu-retour{min-height:52px;margin-top:12px;padding:11px 14px;border-radius:12px;font-size:.87rem;
 line-height:1.5;display:flex;align-items:center;justify-content:center;text-align:center;
 background:transparent;transition:background .15s}
.jeu-retour.ok{background:var(--vert-d);color:#106643;font-weight:600}
.jeu-retour.ko{background:var(--rouge-d);color:#9B1C1F}
.note-plafond{display:block;width:100%;margin-top:6px;font-size:.76rem;opacity:.85}

/* ---- Choix des gouts ---- */
.zone-gout{max-width:430px;margin:0 auto}
.carte-gout{background:var(--surface);border:1px solid var(--trait);border-radius:var(--r-xl);
 padding:36px 22px;min-height:190px;display:flex;flex-direction:column;align-items:center;
 justify-content:center;gap:7px;text-align:center;box-shadow:var(--o-md)}
.carte-gout.entre{animation:goutEntre .18s ease-out}
.carte-gout.sort-droite{animation:goutDroite .18s ease-in forwards}
.carte-gout.sort-gauche{animation:goutGauche .18s ease-in forwards}
.carte-gout.sort-haut{animation:goutHaut .18s ease-in forwards}
@keyframes goutEntre{from{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}
@keyframes goutDroite{to{opacity:0;transform:translateX(50px) rotate(5deg)}}
@keyframes goutGauche{to{opacity:0;transform:translateX(-50px) rotate(-5deg)}}
@keyframes goutHaut{to{opacity:0;transform:translateY(-30px)}}
.gout-cat{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.gout-nom{font-size:1.35rem;font-weight:700;line-height:1.25}
.gout-portion{font-size:.8rem;color:var(--texte-2)}
.gout-boutons{display:grid;grid-template-columns:1fr auto 1fr;gap:8px;margin-top:14px}
.gout-btn{background:var(--surface);border:2px solid var(--trait);border-radius:14px;padding:13px 10px;
 font-family:inherit;font-size:.83rem;font-weight:600;cursor:pointer;display:flex;flex-direction:column;
 align-items:center;gap:5px;color:var(--texte-2);transition:all .13s;min-height:64px;justify-content:center}
.gout-btn:hover{transform:translateY(-2px);box-shadow:var(--o-md)}
.gout-btn.non:hover{border-color:var(--rouge);color:var(--rouge)}
.gout-btn.oui:hover{border-color:var(--vert);color:var(--vert-f)}
.gout-btn.passer{padding:13px 14px;font-size:.75rem}
.gout-btn.passer:hover{border-color:var(--muted)}
.exclus-liste{display:flex;flex-wrap:wrap;gap:6px}
.exclu-puce{display:inline-flex;align-items:center;gap:5px;background:var(--rouge-d);color:#9B1C1F;
 border-radius:99px;padding:5px 6px 5px 12px;font-size:.79rem;font-weight:600}
.exclu-puce button{background:none;border:none;cursor:pointer;color:inherit;opacity:.7;padding:2px;
 display:grid;place-items:center;border-radius:50%;min-width:22px;min-height:22px}
.exclu-puce button:hover{opacity:1;background:rgba(0,0,0,.08)}

/* ---- Moteur de jeux generique ---- */
.consigne{font-size:1.08rem;font-weight:700;text-align:center;margin:4px 0 14px;line-height:1.4;min-height:1.5em}
.options{display:grid;gap:10px}
.options.n2{grid-template-columns:1fr 1fr}
.options.n3,.options.n4{grid-template-columns:1fr 1fr}
@media(max-width:520px){.options.n2,.options.n3,.options.n4{grid-template-columns:1fr}}
.options .carte-duel{min-height:96px;padding:18px 14px;font-size:.95rem}
.options.n2 .carte-duel{min-height:128px}
.carte-duel.entre{animation:goutEntre .18s ease-out}
.carte-duel.choisi-faux{border-color:var(--rouge);background:var(--rouge-d);opacity:1}

/* ---- Cercle de couverture : texte contenu dans le cercle ---- */
.score-rond{width:clamp(78px,20vw,92px);height:clamp(78px,20vw,92px)}
.score-rond .v>div{display:flex;flex-direction:column;align-items:center;line-height:1}
.score-rond .v b{font-size:clamp(1.25rem,4.4vw,1.55rem)}
.score-rond .v b small{font-size:.55em;font-weight:700;margin-left:1px}
.score-rond .v i{font-size:.52rem;letter-spacing:.02em;margin-top:3px;max-width:56px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ---- Nutriments cliquables avec conseils ---- */
.nut-details{border-bottom:1px solid var(--surface-2);padding:8px 0}
.nut-details:last-child{border-bottom:none}
.nut-details summary{list-style:none;cursor:pointer}
.nut-details summary::-webkit-details-marker{display:none}
.nut-details[open] summary .nom{color:var(--vert-f)}
.conseils{margin:8px 0 2px;padding:10px 12px 10px 28px;background:var(--vert-d);border-radius:10px;
 font-size:.81rem;line-height:1.55;color:#0F5A3C}
.conseils li{margin-bottom:4px}
.conseils li:last-child{margin-bottom:0}

/* ---- Recettes en mini-cases ---- */
.grille-rec{display:grid;gap:8px;margin-top:10px;
 grid-template-columns:repeat(auto-fill,minmax(clamp(140px,40vw,178px),1fr))}
.case-rec{position:relative;background:var(--surface);border:1px solid var(--trait);border-radius:var(--r-g);
 padding:0;transition:border-color .13s,box-shadow .13s;min-height:92px;display:flex}
.case-rec:hover{border-color:var(--vert);box-shadow:var(--o-md)}
.case-rec.ouverte{border-color:var(--vert);background:var(--vert-d)}
.case-lien{flex:1;display:flex;flex-direction:column;justify-content:space-between;gap:8px;
 padding:11px 34px 10px 12px;color:var(--texte)}
.case-nom{font-weight:600;font-size:.82rem;line-height:1.3;display:-webkit-box;-webkit-line-clamp:3;
 -webkit-box-orient:vertical;overflow:hidden}
.case-meta{display:flex;justify-content:space-between;gap:6px;font-size:.7rem;color:var(--texte-2);
 font-variant-numeric:tabular-nums}
.case-meta span{display:inline-flex;align-items:center;gap:3px}
.case-fav{position:absolute;top:4px;right:4px;margin:0}
.case-fav .btn-fav{min-width:28px;min-height:28px}
.detail-pleine{grid-column:1/-1;margin-top:0}
.rec{border-bottom:none;padding:0}

/* ---- Indicateur d'enregistrement automatique ---- */
.etat-sauvegarde{position:fixed;bottom:calc(18px + env(safe-area-inset-bottom,0px));left:50%;
 transform:translate(-50%,20px);background:var(--texte);color:#fff;padding:9px 16px;border-radius:99px;
 font-size:.8rem;font-weight:600;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;z-index:150}
.etat-sauvegarde.visible{opacity:1;transform:translate(-50%,0)}
.etat-sauvegarde.ok{background:var(--vert-f)} .etat-sauvegarde.ko{background:var(--rouge)}
