/* Socle de l'écosystème — kit de design commun à toutes les applis.
   Tiré de la charte (style 8) : verre expressif, Google Sans Flex, sombre et clair.
   Une seule mise en page qui s'adapte : téléphone (barre en bas), tablette (colonne à gauche),
   PC (menu à gauche + assistant à droite). */

@font-face{font-family:"Google Sans Flex";font-style:normal;font-weight:400 800;font-display:swap;
  src:url(polices/google-sans-flex-latin.woff2) format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Google Sans Flex";font-style:normal;font-weight:400 800;font-display:swap;
  src:url(polices/google-sans-flex-latin-ext.woff2) format("woff2");
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+1E00-1E9F,U+20A0-20AB,U+20AD-20C4,U+2C60-2C7F,U+A720-A7FF}

/* ---------- Couleurs ---------- */
:root{
  --police:"Google Sans Flex","Google Sans",system-ui,sans-serif;
  /* couleur de l'appli (triplet RVB) + texte foncé (clair) / texte clair (sombre) */
  --ac:91,196,138; --acd:#11512C; --acl:#C4F2D3;
  /* clair */
  --fond:#F3F7F2; --halo2:#E2D6FF; --ink:#14201A; --mut:#56645B;
  --carte:rgba(255,255,255,.62); --carte-b:rgba(255,255,255,.9); --ligne:rgba(20,40,30,.1); --bulle:rgba(255,255,255,.75);
  --ombre:0 10px 26px -18px rgba(20,60,30,.35); --reflet:none;
  --acx:var(--acd); --nav-fond:rgba(255,255,255,.55);
  --n1:#FFE08A;--n1t:#251A00;--n2:#FFD9E2;--n2t:#3E001D;--n3:#B4F1BE;--n3t:#002110;--n4:#D6E3FF;--n4t:#001B3E;--n5:#EADDFF;--n5t:#21005D;
  --avatar:#FFD9E2; --avatar-t:#3E001D;
  color-scheme:light;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="clair"]){
  --fond:#0D1115; --halo2:rgba(58,42,112,.45); --ink:#EEF4F0; --mut:rgba(238,244,240,.62);
  --carte:rgba(255,255,255,.07); --carte-b:rgba(255,255,255,.12); --ligne:rgba(255,255,255,.1); --bulle:rgba(255,255,255,.07);
  --ombre:none; --reflet:inset 0 1px 0 rgba(255,255,255,.1);
  --acx:var(--acl); --nav-fond:rgba(255,255,255,.06);
  --n1:#574500;--n1t:#FFE08A;--n2:#7B2949;--n2t:#FFD9E2;--n3:#1E5130;--n3t:#B4F1BE;--n4:#284777;--n4t:#D6E3FF;--n5:#4F378B;--n5t:#EADDFF;
  --avatar:rgba(231,163,173,.14); --avatar-t:#F3D3DA;
  color-scheme:dark}}
:root[data-theme="sombre"]{
  --fond:#0D1115; --halo2:rgba(58,42,112,.45); --ink:#EEF4F0; --mut:rgba(238,244,240,.62);
  --carte:rgba(255,255,255,.07); --carte-b:rgba(255,255,255,.12); --ligne:rgba(255,255,255,.1); --bulle:rgba(255,255,255,.07);
  --ombre:none; --reflet:inset 0 1px 0 rgba(255,255,255,.1);
  --acx:var(--acl); --nav-fond:rgba(255,255,255,.06);
  --n1:#574500;--n1t:#FFE08A;--n2:#7B2949;--n2t:#FFD9E2;--n3:#1E5130;--n3t:#B4F1BE;--n4:#284777;--n4t:#D6E3FF;--n5:#4F378B;--n5t:#EADDFF;
  --avatar:rgba(231,163,173,.14); --avatar-t:#F3D3DA;
  color-scheme:dark}

/* une couleur par appli */
[data-appli="journee"]{--ac:79,179,200;--acd:#0B4F5E;--acl:#C2EEF7}
[data-appli="cuisine"]{--ac:242,154,74;--acd:#7A3B0C;--acl:#FFD7B5}
[data-appli="forme"]{--ac:91,196,138;--acd:#11512C;--acl:#C4F2D3}
[data-appli="agenda"]{--ac:94,142,240;--acd:#173C8F;--acl:#CFDDFF}
[data-appli="cours"]{--ac:124,131,242;--acd:#2B2F8C;--acl:#D6D8FF}
[data-appli="biblio"]{--ac:217,138,106;--acd:#733217;--acl:#FFD9CB}
[data-appli="job"]{--ac:63,181,166;--acd:#0B5249;--acl:#C3F0E9}
[data-appli="esprit"]{--ac:169,139,232;--acd:#45268A;--acl:#E4D9FF}
[data-appli="idees"]{--ac:240,127,160;--acd:#82183D;--acl:#FFD3DF}
[data-appli="argent"]{--ac:19,181,122;--acd:#0B5A3C;--acl:#B8F0D6}
[data-appli="anglais"]{--ac:56,152,214;--acd:#0F3A66;--acl:#BFE3FA}
[data-appli="reves"]{--ac:236,124,104;--acd:#6B2318;--acl:#FFD3C8}
[data-appli="mycortex"]{--ac:124,92,240;--acd:#3A1F8F;--acl:#E2D9FF}

/* ---------- Base ---------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;background:var(--fond)}
body{margin:0;min-height:100dvh;font-family:var(--police);font-size:15px;line-height:1.45;color:var(--ink);
  background:radial-gradient(90% 55% at 0% 0%,rgba(var(--ac),.3) 0%,transparent 60%),radial-gradient(80% 50% at 100% 100%,var(--halo2) 0%,transparent 62%),var(--fond);
  background-attachment:fixed}
p{margin:0}
button{font:inherit;color:inherit}
:focus-visible{outline:2px solid rgb(var(--ac));outline-offset:2px}
[hidden]{display:none!important}
.ico{width:22px;height:22px;flex:none}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* ---------- Coque de l'appli ---------- */
.appli{min-height:100dvh;display:flex}
.contenu{flex:1;min-width:0;display:flex;flex-direction:column;gap:18px;
  padding:calc(18px + env(safe-area-inset-top,0px)) max(16px,env(safe-area-inset-right,0px)) calc(110px + env(safe-area-inset-bottom,0px)) max(16px,env(safe-area-inset-left,0px))}

/* navigation : 5 rubriques, chacune sa couleur et sa forme */
.nav{display:flex;z-index:20}
.nav .logo{display:none}
.nav .profil{display:none}
.nav a.profil{text-decoration:none;color:var(--ink)}
.nav button.profil{font:inherit;color:var(--ink);background:none;border-left:0;border-right:0;border-bottom:0;width:100%;text-align:left;cursor:pointer;border-radius:0}
button.avatar{border:0;cursor:pointer;font:inherit;font-weight:800}
/* l'avatar ajouté par le kit sur les pages qui n'en ont pas : seulement sur téléphone (ailleurs, le profil est dans le menu) */
.avatar.avatar-auto{display:none}
@media (max-width:759px){.avatar.avatar-auto{display:grid}}
.nav a,.nav button.rub{display:flex;flex-direction:column;align-items:center;gap:5px;flex:1;min-width:0;text-decoration:none;color:var(--mut);
  font-size:10px;font-weight:600;background:none;border:0;padding:0;cursor:pointer;white-space:nowrap}
.nav [aria-current="page"]{color:var(--ink);font-weight:800}
.ico-nav{width:42px;height:42px;display:grid;place-items:center;flex:none}
.ico-nav .ico{width:20px;height:20px}
.n1 .ico-nav,.ico-nav.n1{background:var(--n1);color:var(--n1t);border-radius:50%}
.n2 .ico-nav,.ico-nav.n2{background:var(--n2);color:var(--n2t);border-radius:14px}
.n3 .ico-nav,.ico-nav.n3{background:var(--n3);color:var(--n3t);border-radius:50% 50% 50% 14px}
.n4 .ico-nav,.ico-nav.n4{background:var(--n4);color:var(--n4t);border-radius:38% 62% 45% 55% / 55% 40% 60% 45%}
.n5 .ico-nav,.ico-nav.n5{background:var(--n5);color:var(--n5t);border-radius:22px 22px 8px 22px}
.nav a:not([aria-current="page"]) .ico-nav{opacity:.85}

/* téléphone : barre en bas */
.nav{position:fixed;left:max(10px,env(safe-area-inset-left,0px));right:max(10px,env(safe-area-inset-right,0px));bottom:calc(10px + env(safe-area-inset-bottom,0px));
  justify-content:space-between;gap:2px;padding:10px 6px 8px;border-radius:26px;background:var(--nav-fond);border:1px solid var(--carte-b);
  backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);box-shadow:var(--ombre),var(--reflet)}
.assistant{display:none}

/* tablette et PC : menu à gauche avec logo, nom et rubriques */
@media (min-width:760px){
  .contenu{padding:26px 30px 30px calc(232px + 30px)}
  .nav{left:0;top:0;bottom:0;right:auto;width:232px;flex-direction:column;justify-content:flex-start;align-items:stretch;gap:6px;
    padding:calc(24px + env(safe-area-inset-top,0px)) 16px calc(24px + env(safe-area-inset-bottom,0px));border-radius:0;border:0;border-right:1px solid var(--ligne);background:transparent;box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none}
  .nav .logo{display:flex;align-items:center;gap:12px;padding:0 6px 18px;margin:0;text-decoration:none;color:var(--ink)}
  .nav .logo img{width:40px;height:40px;display:block}
  .nav .logo b{font-size:20px;font-weight:800}
  .nav a,.nav button.rub{flex:none;flex-direction:row;gap:12px;padding:6px 10px 6px 6px;border-radius:20px;font-size:15px}
  .nav [aria-current="page"]{background:rgba(var(--ac),.16)}
  .nav .ico-nav{width:40px;height:40px}
  .nav .profil{display:flex;align-items:center;gap:10px;margin-top:auto;padding:12px 6px 0;border-top:1px solid var(--ligne)}
  .nav .profil b{font-size:14px;display:block}.nav .profil small{font-size:12px;color:var(--mut)}
}
/* PC seulement (souris) : l'assistant reste ouvert à droite */
@media (min-width:1200px) and (hover:hover) and (pointer:fine){
  .contenu{margin-right:300px}
  .assistant{display:flex;position:fixed;right:0;top:0;bottom:0;width:300px;flex-direction:column;gap:14px;padding:24px 20px;border-left:1px solid var(--ligne);background:var(--bulle);z-index:15}
}

/* assistant du PC : on peut le masquer et le rouvrir */
.bascule-assistant{display:none}
@media (min-width:1200px) and (hover:hover) and (pointer:fine){
  .bascule-assistant{display:grid;width:40px;height:40px;place-items:center;border-radius:14px;border:1px solid var(--ligne);background:var(--bulle);color:var(--ink);cursor:pointer}
  .bascule-assistant[aria-pressed="true"]{background:rgba(var(--ac),.2);border-color:rgba(var(--ac),.45);color:var(--acx)}
  html.sans-assistant .assistant{display:none}
  html.sans-assistant .contenu{margin-right:0}
  html.sans-assistant .saisie{right:30px}
  .appli.sans-panneau .assistant{display:none}
  .appli.sans-panneau .contenu{margin-right:0}
  body:has(.appli.sans-panneau) .saisie{right:30px}
}
.page-discussion{display:flex;flex-direction:column;gap:18px;flex:1}
.assistant .fermer{margin-left:auto;width:34px;height:34px;border-radius:12px;border:0;background:none;color:var(--mut);display:grid;place-items:center;cursor:pointer}
.assistant .fermer:hover{background:var(--bulle);color:var(--ink)}

/* ---------- En-tête ---------- */
.entete{display:flex;align-items:flex-end;justify-content:space-between;gap:16px}
.entete .sur{font-size:13px;color:var(--mut)}
.entete h1{margin:0;font-size:28px;font-weight:800;letter-spacing:-.02em;line-height:1.1}
.entete .actions{display:flex;align-items:center;gap:10px}
.avatar{width:40px;height:40px;border-radius:16px;display:grid;place-items:center;font-weight:800;flex:none;background:var(--avatar);color:var(--avatar-t)}
.recherche{display:flex;align-items:center;gap:10px;padding:11px 16px;border-radius:999px;background:var(--bulle);border:1px solid var(--ligne);color:var(--mut);font-size:14px;min-width:0}
.recherche input{flex:1;min-width:0;border:0;background:none;font:inherit;color:var(--ink);outline:none}
.entete .recherche{display:none}
@media (min-width:760px){.entete h1{font-size:34px}.entete .recherche{display:flex;width:auto;flex:0 1 300px;min-width:150px}}
/* tablette : la recherche cède la place au titre (elle rétrécit au lieu de l'écraser) */
@media (min-width:760px) and (max-width:1199px){.entete h1{font-size:30px}.entete .recherche{flex-basis:220px}}

/* ---------- Grille : 1 colonne (téléphone), 2 (tablette), 3 (PC) ---------- */
.grille{display:grid;grid-template-columns:minmax(0,1fr);gap:14px}
.grille>.bloc{min-width:0;display:flex}
.grille>.bloc>*{flex:1}
.grille>.bloc[data-tab="2"]{--tab:2}.grille>.bloc[data-pc="2"]{--pc:2}.grille>.bloc[data-pc="3"]{--pc:3}
@media (min-width:760px){.grille{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.grille>.bloc{grid-column:span var(--tab,1)}}
@media (min-width:1200px) and (hover:hover) and (pointer:fine){.grille{grid-template-columns:repeat(3,minmax(0,1fr))}.grille>.bloc{grid-column:span var(--pc,1)}}

/* ---------- Cartes ---------- */
.carte{background:var(--carte);border:1px solid var(--carte-b);border-radius:26px;padding:16px 18px;display:flex;flex-direction:column;gap:10px;min-width:0;
  backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);box-shadow:var(--ombre),var(--reflet)}
@media (min-width:760px){.carte{padding:20px 22px;border-radius:28px}}
.etiquette{font-size:13px;font-weight:600;color:var(--mut)}
.gros{font-size:30px;font-weight:800;line-height:1.1;font-variant-numeric:tabular-nums}
.gros small{font-size:14px;font-weight:500;color:var(--mut)}
.titre-carte{font-size:19px;font-weight:700;line-height:1.25}
.sous{font-size:13px;color:var(--mut)}
.texte{font-size:16px;font-weight:600;line-height:1.35}
.entre{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.pastille{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;font-weight:700;padding:5px 11px;border-radius:999px;background:rgba(var(--ac),.18);color:var(--acx);white-space:nowrap}
.pastille .ico{width:15px;height:15px;--sw:2.4}

/* carte principale : verre teinté de la couleur de l'appli */
.principale{position:relative;overflow:clip;border-radius:30px;color:var(--acx);
  background:linear-gradient(150deg,rgba(255,255,255,.62) 0%,rgba(255,255,255,.12) 50%,rgba(255,255,255,.3) 100%),rgba(var(--ac),.3);
  box-shadow:inset 0 1px 1px rgba(255,255,255,.95),inset 0 -1px 1px rgba(255,255,255,.35),0 16px 36px -18px rgba(var(--ac),.55)}
.principale::after{content:"";position:absolute;top:-60%;left:-30%;width:70%;height:220%;transform:rotate(25deg);background:linear-gradient(90deg,transparent,rgba(255,255,255,.35),transparent);pointer-events:none}
.principale>*{position:relative;z-index:1}
.principale .etiquette,.principale .sous{color:inherit;opacity:.85}
.principale .grand-titre{font-size:28px;font-weight:800;letter-spacing:-.01em;line-height:1.1}
@media (prefers-color-scheme:dark){:root:not([data-theme="clair"]) .principale{background:linear-gradient(145deg,rgba(var(--ac),.2),rgba(var(--ac),.06));border-color:rgba(var(--ac),.26);box-shadow:var(--reflet)}
  :root:not([data-theme="clair"]) .principale::after{opacity:.4}}
:root[data-theme="sombre"] .principale{background:linear-gradient(145deg,rgba(var(--ac),.2),rgba(var(--ac),.06));border-color:rgba(var(--ac),.26);box-shadow:var(--reflet)}
:root[data-theme="sombre"] .principale::after{opacity:.4}

/* ---------- Boutons et puces ---------- */
.boutons{display:flex;gap:10px;flex-wrap:wrap;margin-top:auto;padding-top:6px}
.bouton{display:inline-flex;align-items:center;gap:8px;font-size:14px;font-weight:700;padding:10px 18px;border-radius:999px;cursor:pointer;text-decoration:none;
  background:rgba(var(--ac),.16);color:var(--acx);border:1px solid rgba(var(--ac),.4);align-self:flex-start}
.bouton.discret{background:transparent}
.bouton:hover{background:rgba(var(--ac),.24)}
.puces{display:flex;flex-wrap:wrap;gap:8px}
.puces>*{font-size:13px;font-weight:600;padding:7px 12px;border-radius:12px;background:var(--bulle);border:1px solid var(--ligne);color:var(--ink)}
.puces>.actif,.puces>[aria-pressed="true"]{background:rgba(var(--ac),.26);border-color:rgba(var(--ac),.5)}
button.puce{cursor:pointer}
.puces>*{display:inline-flex;align-items:center;gap:6px;line-height:1.2}
.puces>* .ico{width:16px;height:16px;flex:none}

/* ---------- Anneau : centré, texte juste en dessous ---------- */
.anneau-carte{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:12px}
.anneau{position:relative;width:var(--taille,140px);height:var(--taille,140px);flex:none}
.anneau svg{width:100%;height:100%;transform:rotate(-90deg)}
.anneau .fond-a{stroke:var(--ligne)}
.anneau .plein{stroke:rgb(var(--ac));stroke-opacity:.85;transition:stroke-dashoffset .8s ease}
.principale .anneau .fond-a{stroke:rgba(255,255,255,.55)}
.anneau .valeur{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1.1}
.anneau .valeur b{font-size:24px;font-weight:800;font-variant-numeric:tabular-nums}
.anneau .valeur small{font-size:11px;color:var(--mut)}

/* jauge et vague */
.jauge{display:block;height:8px;border-radius:99px;background:var(--ligne);overflow:hidden}
.jauge>i{display:block;height:100%;border-radius:inherit;background:rgb(var(--ac))}
.jauge.alerte>i{background:#E5484D}
.vague{display:block;width:100%;height:14px}
.vague .v-plein{stroke:rgb(var(--ac))}.vague .v-reste{stroke:rgba(var(--ac),.22)}.vague circle{fill:rgb(var(--ac))}

/* ---------- Graphiques ---------- */
.courbe-boite{display:flex;flex-direction:column;gap:6px}
.courbe-zone{position:relative}
.courbe{display:block;width:100%;height:100%}
.courbe .grille-c line{stroke:var(--ligne);stroke-width:1;vector-effect:non-scaling-stroke}
.courbe .aire{fill:rgba(var(--ac),.16)}
.courbe .trait{stroke:rgb(var(--ac));fill:none;stroke-width:2.5;stroke-linejoin:round;stroke-linecap:round;vector-effect:non-scaling-stroke}
.courbe-zone .dernier{position:absolute;width:11px;height:11px;margin:-5.5px 0 0 -5.5px;border-radius:50%;background:rgb(var(--ac));border:2px solid var(--ink)}
.courbe-dates{position:relative;height:16px;font-size:11.5px;color:var(--mut)}
.courbe-dates span{position:absolute;top:0;transform:translateX(-50%);white-space:nowrap}
.courbe-dates .debut{transform:none}
.courbe-dates .fin{transform:translateX(-100%)}
.barres{display:flex;align-items:flex-end;gap:10px;height:var(--h,150px);padding-top:8px}
.barres>span{flex:1;height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:6px;min-width:0}
.barres i{width:100%;max-width:46px;border-radius:10px 10px 6px 6px;background:rgba(var(--ac),.32)}
.barres .actif i{background:rgb(var(--ac))}
.barres small{font-size:11.5px;color:var(--mut);white-space:nowrap}

/* ---------- Listes ---------- */
.liste{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:13px}
.liste li{display:flex;align-items:center;gap:12px;min-width:0}
.liste .txt{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.liste .txt b{font-size:15px;font-weight:600;line-height:1.3}
.liste .txt small{font-size:12.5px;color:var(--mut)}
.liste .droite{font-size:13px;font-weight:700;flex:none;text-align:right;font-variant-numeric:tabular-nums}
.point{width:11px;height:11px;border-radius:50%;flex:none;background:rgb(var(--ac))}
.c1{--pc:227,179,65}.c2{--pc:233,125,154}.c3{--pc:76,185,122}.c4{--pc:94,142,240}.c5{--pc:156,127,224}
.point.c1,.point.c2,.point.c3,.point.c4,.point.c5{background:rgb(var(--pc))}
.case{width:22px;height:22px;border-radius:8px;border:1.5px solid var(--mut);flex:none;display:grid;place-items:center;background:none;padding:0;cursor:pointer;color:#fff}
.case[aria-checked="true"]{background:rgb(var(--ac));border-color:rgb(var(--ac))}
.case .ico{width:15px;height:15px;--sw:2.4}
.case:not([aria-checked="true"]) .ico{visibility:hidden}

/* ---------- Tuiles de chiffres : 3 = 1 en haut + 2 dessous, 4 = 2 × 2 ---------- */
.tuiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px;flex:1;grid-auto-rows:1fr}
.tuile{display:flex;flex-direction:column;justify-content:center;gap:1px;padding:9px 12px;border-radius:16px;background:var(--bulle);border:1px solid var(--ligne);min-width:0}
.tuile small{font-size:12.5px;color:var(--mut);font-weight:600}
.tuile b{font-size:26px;font-weight:800;line-height:1.15;white-space:nowrap;font-variant-numeric:tabular-nums}
.tuile span{font-size:12.5px;color:var(--mut)}
.tuiles.empile{grid-template-columns:repeat(2,minmax(0,1fr))}
.tuiles.empile>.tuile:first-child:nth-last-child(3){grid-column:span 2}
.tuiles.colonne{grid-template-columns:minmax(0,1fr);grid-auto-rows:auto}
.tuiles.colonne>.tuile:first-child:nth-last-child(3){grid-column:auto}
.tuile span{overflow-wrap:anywhere}

/* ---------- Discussion avec une IA : pas de cadre, saisie fixée en bas ---------- */
.discussion{flex:1;display:flex;flex-direction:column;gap:10px;width:100%;max-width:820px;align-self:center;padding-bottom:84px}
.bulle{max-width:85%;padding:11px 15px;border-radius:20px;font-size:15px;line-height:1.45}
.bulle.moi{align-self:flex-end;background:rgba(var(--ac),.24);border-bottom-right-radius:6px}
.bulle.ia{align-self:flex-start;background:var(--carte);border:1px solid var(--carte-b);border-bottom-left-radius:6px}
.saisie{position:fixed;left:max(16px,env(safe-area-inset-left,0px));right:max(16px,env(safe-area-inset-right,0px));bottom:calc(98px + env(safe-area-inset-bottom,0px));z-index:18;
  display:flex;align-items:center;gap:10px;padding:7px 7px 7px 18px;border-radius:999px;background:var(--carte);border:1px solid var(--carte-b);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);box-shadow:var(--ombre)}
.saisie input,.saisie textarea{flex:1;min-width:0;border:0;background:none;font:inherit;font-size:15px;color:var(--ink);outline:none;resize:none}
.saisie input::placeholder{color:var(--mut)}
.micro{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;background:rgb(var(--ac));color:#fff;border:0;cursor:pointer;flex:none}
.micro .ico{width:20px;height:20px}
@media (min-width:760px){.saisie{left:calc(232px + 30px);right:30px;bottom:24px;max-width:820px;margin-inline:auto}.discussion{padding-bottom:90px}}
@media (min-width:1200px) and (hover:hover) and (pointer:fine){.saisie{left:calc(232px + 30px);right:calc(300px + 30px)}}
/* page sans assistant (ex. la discussion elle-même) : le contenu et la saisie sont centrés sur tout l'espace */
@media (min-width:1200px) and (hover:hover) and (pointer:fine){.appli:not(:has(.assistant)) .contenu{margin-right:0}
  body:not(:has(.assistant)) .saisie{right:30px}}
.assistant .tete{display:flex;align-items:center;gap:12px}
.assistant .tete b{font-size:16px;display:block}.assistant .tete small{font-size:12px;color:var(--mut)}
.assistant .fil{flex:1;display:flex;flex-direction:column;gap:10px;overflow:auto}
.assistant .bulle{font-size:14px}
.assistant .saisie{position:static;margin:0;max-width:none;width:100%;padding-left:16px}

/* ---------- Vignettes, frise, semaine, kanban, calendrier ---------- */
.vignettes{display:grid;grid-template-columns:repeat(var(--col,2),minmax(0,1fr));gap:14px}
@media (min-width:760px){.vignettes{--col:3}}
.vignette{display:flex;flex-direction:column;gap:4px;min-width:0;text-decoration:none;color:inherit}
.vignette .image{height:118px;border-radius:20px;display:grid;place-items:center;color:#fff;margin-bottom:6px;background:linear-gradient(135deg,var(--g1,rgb(var(--ac))),var(--g2,rgba(var(--ac),.6)));box-shadow:inset 0 1px 0 rgba(255,255,255,.35)}
.vignette .image .ico{width:40px;height:40px;--sw:1.6}
.vignette b{font-size:15px;font-weight:700;line-height:1.25}.vignette small{font-size:12.5px;color:var(--mut)}
.frise{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.frise li{display:flex;gap:14px}
.frise .heure{width:46px;flex:none;font-size:13px;font-weight:700;padding-top:10px;font-variant-numeric:tabular-nums}
.frise .evt{flex:1;min-width:0;padding:10px 14px;border-radius:14px;background:rgba(var(--pc,var(--ac)),.16);border-left:4px solid rgb(var(--pc,var(--ac)));display:flex;flex-direction:column;gap:2px}
.frise .evt small{font-size:12.5px;color:var(--mut)}
.kanban{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.kanban .col{display:flex;flex-direction:column;gap:10px;padding:12px;border-radius:22px;background:var(--bulle);border:1px solid var(--ligne);min-width:0}
.kanban .fiche{padding:11px 13px;border-radius:16px;background:var(--carte);border:1px solid var(--carte-b);display:flex;flex-direction:column;gap:2px;overflow-wrap:break-word}
.kanban .fiche small{font-size:12.5px;color:var(--mut)}
.calendrier{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}
.calendrier i{aspect-ratio:1;border-radius:10px;background:var(--ligne)}
.calendrier .h1{background:rgba(var(--ac),.15)}.calendrier .h2{background:rgba(var(--ac),.32)}.calendrier .h3{background:rgba(var(--ac),.5)}.calendrier .h4{background:rgba(var(--ac),.72)}.calendrier .h5{background:rgb(var(--ac))}

/* blocs réservés au grand écran ou au téléphone */
.grand-ecran{display:none!important}
@media (min-width:760px){.grand-ecran{display:flex!important}.tel-seul{display:none!important}}

/* ---------- Petits plus ---------- */
.vide{padding:28px;text-align:center;color:var(--mut);display:flex;flex-direction:column;align-items:center;gap:8px}
.toast{position:fixed;left:50%;bottom:calc(110px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);z-index:40;padding:11px 18px;border-radius:999px;
  background:var(--ink);color:var(--fond);font-weight:600;font-size:14px;box-shadow:0 10px 30px -10px rgba(0,0,0,.5)}
@media (min-width:760px){.toast{bottom:30px}}

/* invitation à installer l'appli : carte à fond plein, au-dessus de la barre du bas sur téléphone, en bas à gauche sur grand écran */
.invite-install{position:fixed;z-index:60;left:12px;right:12px;bottom:calc(100px + env(safe-area-inset-bottom,0px));display:flex;align-items:center;gap:12px;flex-wrap:wrap;
  padding:14px 14px 14px 16px;border-radius:24px;background:var(--fond);border:1px solid var(--carte-b);box-shadow:0 18px 40px -16px rgba(0,0,0,.55);color:var(--ink);
  animation:invite-monte .35s cubic-bezier(.2,.9,.25,1)}
.invite-install img{width:48px;height:48px;border-radius:14px;flex:none}
.invite-install .txt{flex:1;min-width:160px;display:flex;flex-direction:column;gap:2px}
.invite-install .txt b{font-size:16px;font-weight:700}
.invite-install .txt small{font-size:13px;color:var(--mut);line-height:1.35}
.invite-install .actions{display:flex;gap:8px;margin-left:auto}
.invite-install .bouton{padding:9px 16px}
@media (min-width:760px){.invite-install{left:calc(232px + 24px);right:auto;bottom:24px;max-width:460px}}
@keyframes invite-monte{from{opacity:0;transform:translateY(16px)}}

/* appli installée : rendu « natif », comme une appli Android.
   Le haut de la page a exactement la couleur de la barre du téléphone (heure, batterie) : pas de bande visible ;
   sur téléphone, la barre des rubriques est collée au bas de l'écran, d'un bord à l'autre. */
@media (display-mode:standalone),(display-mode:fullscreen){
  body{background:linear-gradient(to bottom,var(--fond) 0,transparent 140px),radial-gradient(90% 55% at 0% 0%,rgba(var(--ac),.3) 0%,transparent 60%),radial-gradient(80% 50% at 100% 100%,var(--halo2) 0%,transparent 62%),var(--fond)}
}
@media (display-mode:standalone) and (max-width:759px),(display-mode:fullscreen) and (max-width:759px){
  .nav{left:0;right:0;bottom:0;border-radius:24px 24px 0 0;border-width:1px 0 0;padding:10px max(6px,env(safe-area-inset-right,0px)) calc(8px + env(safe-area-inset-bottom,0px)) max(6px,env(safe-area-inset-left,0px));
    background:color-mix(in srgb,var(--fond) 86%,transparent)}
}

/* barres de défilement : invisibles sur écran tactile (téléphone, tablette) ; fines, arrondies et discrètes à la souris (PC) */
@media (pointer:coarse){html,body,*{scrollbar-width:none}*::-webkit-scrollbar{display:none}}
@media (pointer:fine){
  ::-webkit-scrollbar{width:12px;height:12px}::-webkit-scrollbar-track,::-webkit-scrollbar-corner{background:transparent}::-webkit-scrollbar-button{display:none}
  ::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--ink) 22%,transparent);border-radius:99px;border:3px solid transparent;background-clip:padding-box}
  ::-webkit-scrollbar-thumb:hover{background-color:color-mix(in srgb,var(--ink) 40%,transparent)}
  @supports not selector(::-webkit-scrollbar){*{scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--ink) 24%,transparent) transparent}}}

/* animation de chargement (logo MyCortex) : les six points font le tour de l'anneau, le cœur respire */
.chargeur{display:block;filter:drop-shadow(0 12px 22px rgba(60,30,120,.28))}
.chargeur .ch-orbite{transform-box:fill-box;transform-origin:center;animation:ch-tour 1.8s cubic-bezier(.55,.1,.45,.9) infinite}
.chargeur .ch-coeur,.chargeur .ch-halo{transform-box:fill-box;transform-origin:center;animation:ch-souffle 1.8s ease-in-out infinite}
.chargeur .ch-halo{animation-delay:-.25s}
@keyframes ch-tour{to{transform:rotate(360deg)}}
@keyframes ch-souffle{50%{transform:scale(.82)}}
@media (prefers-reduced-motion:reduce){.chargeur .ch-orbite{animation-duration:4s;animation-timing-function:linear}.chargeur .ch-coeur,.chargeur .ch-halo{animation:none}}
/* écran de chargement : au centre de l'écran, sur le fond de la page */
.ecran-chargement{position:fixed;inset:0;z-index:5;display:grid;place-items:center;pointer-events:none;animation:ch-apparait .12s ease both}
.ecran-erreur{display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;padding:18vh 24px 0;max-width:420px;margin:0 auto}
.ecran-erreur b{font-size:19px;font-weight:750}
.ecran-erreur .bouton{margin-top:8px;align-self:center}
.vue.en-preparation{visibility:hidden;animation:none;position:absolute;left:0;right:0;top:0;pointer-events:none;overflow:hidden}
/* rien ne doit dépasser sur le côté : sinon le téléphone dézoome et la barre du bas bouge */
html,body{overflow-x:clip}
@keyframes ch-apparait{from{opacity:0}}

/* panneau du « P » : fond plein (jamais du verre), feuille en bas sur téléphone, panneau en haut à droite sur grand écran */
.voile-compte{position:fixed;inset:0;z-index:90;background:rgba(10,12,16,.38);display:flex;align-items:flex-end;justify-content:center;animation:pc-fondu .2s ease both}
.voile-compte.sort{animation:pc-fondu .18s ease reverse both}
@keyframes pc-fondu{from{opacity:0}}
/* panneau moins haut que son contenu (tablette, petit écran) : il défile, rien ne s'écrase ni ne se chevauche */
.panneau-compte>*{flex-shrink:0}
.panneau-compte{width:100%;max-height:88dvh;overflow-y:auto;overscroll-behavior:contain;display:flex;flex-direction:column;gap:14px;
  padding:18px max(18px,env(safe-area-inset-right,0px)) calc(18px + env(safe-area-inset-bottom,0px)) max(18px,env(safe-area-inset-left,0px));
  background:var(--fond);color:var(--ink);border-radius:28px 28px 0 0;border:1px solid var(--carte-b);border-bottom:0;box-shadow:0 -20px 50px -20px rgba(0,0,0,.5);
  animation:pc-monte .3s cubic-bezier(.2,.9,.25,1) both}
@keyframes pc-monte{from{transform:translateY(40px);opacity:0}}
@media (min-width:760px){
  .voile-compte{background:transparent;align-items:flex-start;justify-content:flex-end;padding:calc(16px + env(safe-area-inset-top,0px)) 16px 16px}
  .panneau-compte{width:380px;max-height:calc(100dvh - 32px);border-radius:28px;border-bottom:1px solid var(--carte-b);box-shadow:0 24px 60px -18px rgba(0,0,0,.45)}
  @keyframes pc-monte{from{transform:translateY(-10px) scale(.98);opacity:0}}
}
.pc-tete{display:flex;align-items:center;justify-content:space-between;gap:10px}
.pc-marque{display:flex;align-items:center;gap:10px}
.pc-marque img{width:34px;height:34px;filter:drop-shadow(0 4px 8px rgba(60,30,120,.25))}
.pc-mot{font-size:20px;font-weight:780;letter-spacing:-.03em}.pc-mot span{font-weight:380}
.pc-fermer{width:38px;height:38px;border-radius:50%;border:0;background:var(--bulle);color:var(--ink);display:grid;place-items:center;cursor:pointer}
.pc-fermer .ico{width:18px;height:18px}
.pc-moi{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:22px;background:var(--carte);border:1px solid var(--carte-b)}
.pc-txt{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}
.pc-txt b{font-size:15px;font-weight:700}.pc-txt small{font-size:12.5px;color:var(--mut)}
.pc-liste{display:flex;flex-direction:column;gap:4px}
.pc-ligne{display:flex;align-items:center;gap:12px;padding:10px 10px 10px 8px;border-radius:18px;color:var(--ink);text-decoration:none}
.pc-ligne:hover,.pc-ligne:focus-visible{background:var(--bulle)}
.pc-ligne .ico-nav{width:40px;height:40px}
.pc-mini{width:40px;height:40px;flex:none}
.pc-fleche{width:18px;height:18px;color:var(--mut);flex:none}
.pc-titre{font-size:13px;font-weight:650;color:var(--mut);margin:4px 2px -4px}
.pc-grille{display:grid;grid-template-columns:repeat(4,1fr);gap:12px 6px;min-height:150px}
.pc-appli{position:relative;display:flex;flex-direction:column;align-items:center;gap:5px;padding:6px 2px;border-radius:16px;color:var(--ink);text-decoration:none;min-width:0}
.pc-appli img{width:46px;height:46px;filter:drop-shadow(0 5px 8px rgba(0,0,0,.2))}
.pc-appli small{font-size:11px;font-weight:600;line-height:1.15;text-align:center;letter-spacing:-.01em;word-spacing:.05em;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}
@media (max-width:380px){.pc-appli small{font-size:10px;letter-spacing:-.02em}}
a.pc-appli:hover,a.pc-appli:focus-visible{background:var(--bulle)}
.pc-appli.ici{background:rgba(var(--ac),.14)}
.pc-appli.bientot img{opacity:.42;filter:grayscale(.3)}
.pc-appli.bientot small{color:var(--mut)}
.pc-note{margin:-6px 2px 0;font-size:12px;color:var(--mut)}
.panneau-compte:focus{outline:none}
.pc-sortir{display:flex;align-items:center;justify-content:center;gap:8px;padding:12px;border-radius:999px;border:1px solid var(--ligne);color:#E5484D;font-weight:650;text-decoration:none}
.pc-sortir .ico{width:18px;height:18px}
.pc-sortir:hover{background:rgba(229,72,77,.08)}
/* Listes déroulantes (socle.js remplace l'affichage des <select>) : un champ comme les autres, un menu aux couleurs de myCortex */
select.liste-cachee{position:absolute!important;width:1px!important;height:1px!important;opacity:0!important;pointer-events:none!important;margin:0!important;padding:0!important;border:0!important}
.liste-k{display:flex;align-items:center;gap:10px;width:100%;min-width:0;padding:11px 12px 11px 14px;border-radius:14px;background:var(--bulle);border:1px solid var(--ligne);color:var(--ink);font:inherit;font-size:15px;font-weight:600;text-align:left;cursor:pointer;transition:border-color .15s,box-shadow .15s}
.liste-k:hover{border-color:rgba(var(--ac),.45)}
.liste-k:focus-visible,.liste-k[aria-expanded="true"]{outline:none;border-color:rgba(var(--ac),.65);box-shadow:0 0 0 3px rgba(var(--ac),.16)}
.liste-k .liste-txt{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.liste-k .liste-chevron{width:16px;height:16px;flex:none;color:var(--mut);transform:rotate(90deg);transition:transform .2s}
.liste-k[aria-expanded="true"] .liste-chevron{transform:rotate(-90deg);color:var(--acx)}
.liste-pop{position:fixed;z-index:120;max-height:min(340px,55vh);display:flex;flex-direction:column;background:var(--fond);border:1px solid var(--ligne);border-radius:18px;
  box-shadow:0 18px 50px -12px rgba(0,0,0,.35),0 2px 8px rgba(0,0,0,.08);padding:6px;animation:liste-in .16s cubic-bezier(.2,.9,.25,1)}
.liste-pop .liste-opts{overflow-y:auto;overscroll-behavior:contain;display:flex;flex-direction:column;gap:2px}
.liste-opt{display:flex;align-items:center;gap:10px;width:100%;padding:11px 12px;border:0;border-radius:12px;background:none;color:var(--ink);font:inherit;font-size:15px;font-weight:550;text-align:left;cursor:pointer}
.liste-opt span{flex:1}
.liste-opt:hover,.liste-opt:focus-visible{outline:none;background:rgba(var(--ac),.12)}
.liste-opt.choisi{background:rgba(var(--ac),.2);font-weight:700;color:var(--acx)}
.liste-opt .ico{width:18px;height:18px;flex:none}
.liste-opt[disabled]{opacity:.4;cursor:default}
@keyframes liste-in{from{opacity:0;transform:translateY(-4px) scale(.98)}}
/* téléphone : feuille qui monte du bas, au-dessus de tout */
.liste-voile{position:fixed;inset:0;z-index:119;background:rgba(8,10,12,.45);animation:liste-fondu .2s}
.liste-pop.en-bas{left:0;right:0;bottom:0;top:auto;max-height:70vh;border-radius:26px 26px 0 0;padding:6px 12px calc(14px + env(safe-area-inset-bottom,0px));animation:liste-monte .28s cubic-bezier(.2,.9,.25,1)}
.liste-pop.en-bas .liste-opt{padding:14px 14px;font-size:16px}
.liste-tete{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 6px 8px}
.liste-tete b{font-size:17px}
.liste-x{width:38px;height:38px;border-radius:50%;border:1px solid var(--ligne);background:var(--bulle);color:var(--ink);display:grid;place-items:center;cursor:pointer}
.liste-x .ico{width:18px;height:18px}
@keyframes liste-monte{from{transform:translateY(100%)}}
@keyframes liste-fondu{from{opacity:0}}
@media (prefers-reduced-motion:reduce){.liste-pop,.liste-voile{animation:none}}

/* Animations de chargement propres à chaque appli (Socle.chargeur, maquette validée JB1jEsyEr7wiyhFAsTPrMP) : seul le dessin blanc du logo bouge */
.chargeur.logo-anime [class]{transform-box:fill-box;transform-origin:center}
/* Journey : le soleil se lève puis redescend */
.chargeur[data-anim="journee"] .c-soleil{animation:ch-leve 2.4s ease-in-out infinite}
@keyframes ch-leve{0%,100%{transform:translateY(5px);opacity:.7}45%,60%{transform:translateY(-2px);opacity:1}}
/* Cuisine : trois filets de vapeur qui montent l'un après l'autre */
.chargeur[data-anim="cuisine"] .c-vapeur{animation:ch-vapeur 1.6s ease-in-out infinite}
.chargeur[data-anim="cuisine"] .c-v2{animation-delay:.22s}.chargeur[data-anim="cuisine"] .c-v3{animation-delay:.44s}
@keyframes ch-vapeur{0%{transform:translateY(4px) scaleY(.6);opacity:0}35%{opacity:1}70%{transform:translateY(-3px) scaleY(1);opacity:.9}100%{transform:translateY(-6px) scaleY(.8);opacity:0}}
.chargeur[data-anim="cuisine"] .c-bol{animation:ch-bol 1.6s ease-in-out infinite}
@keyframes ch-bol{0%,100%{transform:translateY(0)}50%{transform:translateY(.8px)}}
/* Sport : une répétition (on monte, on tient, on redescend) */
.chargeur[data-anim="forme"] .c-bloc-forme{animation:ch-rep 1.6s cubic-bezier(.45,.05,.35,1) infinite}
@keyframes ch-rep{0%,100%{transform:translateY(5px)}40%,55%{transform:translateY(-4px)}}
.chargeur[data-anim="forme"] .c-disque{animation:ch-serre 1.6s cubic-bezier(.45,.05,.35,1) infinite}
@keyframes ch-serre{0%,100%{transform:scaleY(1)}40%,55%{transform:scaleY(.94)}}
/* Agenda : la page du jour se tourne */
.chargeur[data-anim="agenda"] .c-page{transform-origin:top center;animation:ch-tourne 2s ease-in-out infinite}
@keyframes ch-tourne{0%,30%{transform:scaleY(1);opacity:1}55%{transform:scaleY(.06);opacity:.5}56%{transform:scaleY(.06);opacity:.5}80%,100%{transform:scaleY(1);opacity:1}}
.chargeur[data-anim="agenda"] .c-anneau{animation:ch-anneau 2s ease-in-out infinite}
.chargeur[data-anim="agenda"] .c-a2{animation-delay:.08s}
@keyframes ch-anneau{0%,40%,70%,100%{transform:translateY(0)}55%{transform:translateY(-2.5px)}}
/* Cours : la toque se soulève et bascule */
.chargeur[data-anim="cours"] .c-toque-plateau{animation:ch-toque 2s ease-in-out infinite}
@keyframes ch-toque{0%,100%{transform:translateY(0) rotate(0)}40%{transform:translateY(-4px) rotate(-9deg)}60%{transform:translateY(-4px) rotate(5deg)}}
/* Bibliothèque : le livre de derrière s'ouvre et se referme */
.chargeur[data-anim="biblio"] .c-livre-arriere{transform:rotate(9deg);animation:ch-livre 2.2s ease-in-out infinite}
@keyframes ch-livre{0%,100%{transform:rotate(9deg)}50%{transform:rotate(24deg) translateX(2px)}}
.chargeur[data-anim="biblio"] .c-livre-avant{animation:ch-avant 2.2s ease-in-out infinite}
@keyframes ch-avant{0%,100%{transform:rotate(0)}50%{transform:rotate(-4deg)}}
/* Job : la mallette se balance au bout de sa poignée */
.chargeur[data-anim="job"] .c-bloc-job{transform-origin:50% 0%;animation:ch-balance 1.8s ease-in-out infinite}
@keyframes ch-balance{0%,100%{transform:rotate(-7deg)}50%{transform:rotate(7deg)}}
/* Esprit : la lune se berce, les étoiles scintillent tour à tour */
.chargeur[data-anim="esprit"] .c-lune{animation:ch-berce 3s ease-in-out infinite}
@keyframes ch-berce{0%,100%{transform:rotate(-8deg)}50%{transform:rotate(6deg)}}
.chargeur[data-anim="esprit"] .c-etoile{animation:ch-scintille 1.5s ease-in-out infinite}
.chargeur[data-anim="esprit"] .c-e2{animation-delay:.75s}
@keyframes ch-scintille{0%,100%{transform:scale(.4);opacity:.35}50%{transform:scale(1.25);opacity:1}}
/* Idées : l'ampoule s'allume, la lumière rayonne par vagues */
.chargeur[data-anim="idees"] .c-ampoule{animation:ch-allume 1.8s ease-in-out infinite}
@keyframes ch-allume{0%,100%{opacity:.72;transform:scale(.96)}50%{opacity:1;transform:scale(1.04)}}
.chargeur[data-anim="idees"] .c-rayons rect{opacity:0;animation:ch-rayon 1.8s ease-in-out infinite}
.chargeur[data-anim="idees"] .c-rayons rect:nth-child(2){animation-delay:.12s}.chargeur[data-anim="idees"] .c-rayons rect:nth-child(3){animation-delay:.24s}
.chargeur[data-anim="idees"] .c-rayons rect:nth-child(4){animation-delay:.36s}.chargeur[data-anim="idees"] .c-rayons rect:nth-child(5){animation-delay:.48s}
@keyframes ch-rayon{0%,20%{opacity:0}50%{opacity:.95}85%,100%{opacity:0}}
/* Finance : les deux pièces se retournent l'une après l'autre */
.chargeur[data-anim="argent"] .c-piece{animation:ch-retourne 2s ease-in-out infinite}
.chargeur[data-anim="argent"] .c-p2{animation-delay:.5s}
@keyframes ch-retourne{0%,15%{transform:scaleX(1)}40%{transform:scaleX(.08)}65%,100%{transform:scaleX(1)}}
/* Anglais : les deux bulles se répondent, comme une conversation */
.chargeur[data-anim="anglais"] .c-bulle{animation:ch-parle 2s ease-in-out infinite}
.chargeur[data-anim="anglais"] .c-b1{transform-origin:70% 100%;animation-delay:1s}
.chargeur[data-anim="anglais"] .c-b2{transform-origin:20% 100%}
@keyframes ch-parle{0%,50%,100%{transform:scale(1) translateY(0)}20%{transform:scale(1.08) translateY(-1.5px)}35%{transform:scale(.98) translateY(0)}}
/* Rêves : l'étoile file, sa traînée s'étire derrière elle, puis elle brille */
.chargeur[data-anim="reves"] .c-etoile-f{animation:ch-file 2.4s cubic-bezier(.45,.05,.35,1) infinite}
@keyframes ch-file{0%,100%{transform:translate(-3px,3px) rotate(-8deg) scale(.94)}45%{transform:translate(2px,-2px) rotate(10deg) scale(1.06)}60%{transform:translate(2px,-2px) rotate(0) scale(1)}}
.chargeur[data-anim="reves"] .c-trainee{transform-origin:100% 0%;animation:ch-trainee 2.4s cubic-bezier(.45,.05,.35,1) infinite}
@keyframes ch-trainee{0%,100%{transform:translate(-3px,3px) scale(.75);opacity:.55}45%{transform:translate(2px,-2px) scale(1.08);opacity:1}60%{transform:translate(2px,-2px) scale(1);opacity:.85}}

@media (prefers-reduced-motion:reduce){.chargeur.chargeur.logo-anime [class],.chargeur .c-rayons rect{animation-duration:4s!important;animation-iteration-count:1!important}}

/* ---------- En-tête fixe (17 oct.) : le haut de la page reste en place, le contenu défile dessous ----------
   <div class="tete-fixe"><header class="entete">…</header> + recherche, puces… </div> en premier dans la page */
.tete-fixe{position:sticky;top:0;z-index:30;display:flex;flex-direction:column;gap:14px;
  margin:calc(-18px - env(safe-area-inset-top,0px)) -16px 0;padding:calc(18px + env(safe-area-inset-top,0px)) 16px 12px;
  background:transparent;transition:background-color .25s,box-shadow .25s,backdrop-filter .25s,-webkit-backdrop-filter .25s}
/* en haut de la page : aucun fond, l'en-tête se fond dans la page ; dès qu'on fait défiler, le contenu passe dessous un voile flouté */
html.a-defile .tete-fixe{background:color-mix(in srgb,var(--fond) 62%,transparent);backdrop-filter:blur(22px) saturate(150%);-webkit-backdrop-filter:blur(22px) saturate(150%);
  box-shadow:0 10px 18px -16px rgba(0,0,0,.28)}
.tete-fixe>.entete{margin:0}
@media (min-width:760px){.tete-fixe{margin:-26px -30px 0;padding:26px 30px 14px}}

/* ---------- Puces sur une seule ligne qu'on fait glisser (catégories, filtres) ---------- */
.puces.defile{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;overscroll-behavior-x:contain;margin-inline:-16px;padding:2px 16px 4px;
  scroll-padding-inline:16px;-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 16px,#000 calc(100% - 28px),transparent);mask-image:linear-gradient(90deg,transparent 0,#000 16px,#000 calc(100% - 28px),transparent)}
.puces.defile::-webkit-scrollbar{display:none}
.puces.defile>*{flex:none;white-space:nowrap;cursor:pointer}
.puces.defile.glisse{cursor:grabbing;user-select:none}
@media (min-width:760px){.puces.defile{margin-inline:-30px;padding-inline:30px;scroll-padding-inline:30px;
  -webkit-mask-image:linear-gradient(90deg,transparent 0,#000 30px,#000 calc(100% - 40px),transparent);mask-image:linear-gradient(90deg,transparent 0,#000 30px,#000 calc(100% - 40px),transparent)}}

/* ---------- Fiches (recette, exercice) : la grande photo défile, une petite barre prend le relais en haut ----------
   <div class="mini-barre-place"><div class="mini-barre">…</div></div> juste avant la photo ; Socle.barreCompacte(photo, barre) */
.mini-barre-place{position:sticky;top:0;height:0;z-index:40}
.mini-barre{position:absolute;top:0;left:-16px;right:-16px;display:flex;align-items:center;gap:10px;
  padding:calc(10px + env(safe-area-inset-top,0px)) 16px 10px;
  background:color-mix(in srgb,var(--fond) 62%,transparent);backdrop-filter:blur(22px) saturate(150%);-webkit-backdrop-filter:blur(22px) saturate(150%);
  box-shadow:0 10px 18px -16px rgba(0,0,0,.28);opacity:0;transform:translateY(-100%);pointer-events:none;transition:opacity .22s,transform .22s}
.mini-barre.visible{opacity:1;transform:none;pointer-events:auto}
.mini-barre b{flex:1;min-width:0;font-size:16px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mini-barre .rond-m{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;flex:none;background:var(--bulle);border:1px solid var(--ligne);color:var(--ink);cursor:pointer;text-decoration:none;font:inherit}
.mini-barre .rond-m .ico{width:19px;height:19px}
.mini-barre .rond-m.actif{color:#E8467C}
@media (min-width:760px){.mini-barre-place{top:0}.mini-barre{left:-30px;right:-30px;padding:12px 30px}}
@media (prefers-reduced-motion:reduce){.mini-barre{transition:none}}
