/* Suivi glycémie de Doriane — interface claire, colorée et animée.
   Contraintes tenues : aucune police ni ressource externe (données de santé),
   couleurs SÉMANTIQUES (on doit comprendre sans lire), et lisibilité d'abord —
   les animations soulignent l'information, elles ne la décorent pas. */
:root{
  --fond:#f2f6fc; --carte:#ffffff; --bord:#e6ecf6;
  --texte:#132038; --doux:#6b7c96;
  --bas:#f97316; --cible:#10b981; --haut:#ef4444; --critique:#b91c1c;
  --accent:#4f7cf7; --accent2:#7c5cf7;
  --repas:#a855f7; --insuline:#06b6d4; --comprime:#64748b;
  --ombre:0 1px 2px rgba(19,32,56,.06), 0 10px 30px rgba(19,32,56,.07);
  --ombre-f:0 2px 6px rgba(19,32,56,.10), 0 18px 44px rgba(19,32,56,.12);
  --r:18px;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  font-family:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  background:
    radial-gradient(1100px 520px at 8% -8%, #dbe7ff 0%, transparent 62%),
    radial-gradient(900px 460px at 102% 4%, #e8ddff 0%, transparent 58%),
    var(--fond);
  background-attachment:fixed;
  color:var(--texte); -webkit-text-size-adjust:100%;
  min-height:100dvh;
}
.centre{min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:1.2rem}

/* ─── Animations : discrètes, jamais gratuites ─── */
@keyframes monte{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@keyframes pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.06)}}
@keyframes trace{from{stroke-dashoffset:var(--len)}to{stroke-dashoffset:0}}
@keyframes apparait{from{opacity:0}to{opacity:1}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* ─── Connexion ─── */
.carte-connexion{
  background:var(--carte);border:1px solid var(--bord);border-radius:24px;
  box-shadow:var(--ombre-f);padding:2.2rem 1.7rem;width:min(100%,390px);text-align:center;
  animation:monte .5s cubic-bezier(.2,.7,.3,1) both;
}
.logo{font-size:2.9rem;line-height:1;animation:pulse 2.6s ease-in-out infinite}
.carte-connexion h1{font-size:1.4rem;margin:.6rem 0 .1rem;
  background:linear-gradient(92deg,var(--accent),var(--accent2));
  -webkit-background-clip:text;background-clip:text;color:transparent}
.sous{color:var(--doux);margin:0 0 1.5rem}
label{display:block;text-align:left;font-size:.84rem;color:var(--doux);margin-bottom:.9rem}
input,select,textarea{
  width:100%;margin-top:.32rem;padding:.8rem .85rem;font-size:1rem;
  border:1.5px solid var(--bord);border-radius:13px;background:#fff;color:var(--texte);
  transition:border-color .18s, box-shadow .18s;
}
input:focus,select:focus,textarea:focus{
  outline:none;border-color:var(--accent);box-shadow:0 0 0 4px rgba(79,124,247,.14)}
button{
  width:100%;padding:.85rem;font-size:1rem;font-weight:650;color:#fff;
  background:linear-gradient(92deg,var(--accent),var(--accent2));
  border:0;border-radius:13px;cursor:pointer;
  transition:transform .12s, box-shadow .2s, filter .2s;
  box-shadow:0 6px 18px rgba(79,124,247,.28);
}
button:hover{filter:brightness(1.05);box-shadow:0 9px 24px rgba(79,124,247,.34)}
button:active{transform:translateY(1px) scale(.995)}
.erreur{color:var(--haut);font-size:.88rem;margin:.8rem 0 0}
.mention{font-size:.72rem;color:var(--doux);margin:1.5rem 0 0;line-height:1.55}

/* ─── Application ─── */
.appli{max-width:1020px;margin:0 auto;padding:1rem 1rem 5rem}
.entete{display:flex;align-items:center;gap:.7rem;margin-bottom:1rem;
        animation:monte .45s cubic-bezier(.2,.7,.3,1) both}
.entete h1{font-size:1.15rem;margin:0;flex:1;font-weight:700}
.lien{background:none;border:0;color:var(--doux);font-size:.82rem;width:auto;padding:.35rem .5rem;
      box-shadow:none;border-radius:9px;font-weight:500}
.lien:hover{background:rgba(19,32,56,.05);filter:none;box-shadow:none;color:var(--texte)}

.carte{background:var(--carte);border:1px solid var(--bord);border-radius:var(--r);
       box-shadow:var(--ombre);padding:1.1rem;margin-bottom:.95rem;
       animation:monte .45s cubic-bezier(.2,.7,.3,1) both}
.carte:nth-child(2){animation-delay:.05s}
.carte:nth-child(3){animation-delay:.1s}
.carte:nth-child(4){animation-delay:.15s}
.carte h2{font-size:.75rem;letter-spacing:.1em;text-transform:uppercase;
          color:var(--doux);margin:0 0 .85rem;font-weight:700}

/* Grande valeur */
.actuel{display:flex;align-items:baseline;gap:.6rem}
.actuel .val{font-size:3.2rem;font-weight:800;line-height:1;letter-spacing:-.02em;
             transition:color .3s}
.actuel .unite{font-size:1rem;color:var(--doux)}
.actuel .quand{margin-left:auto;font-size:.82rem;color:var(--doux);text-align:right;line-height:1.5}
.bas{color:var(--bas)} .ok{color:var(--cible)} .haut{color:var(--haut)}

/* Onglets */
.onglets{display:flex;gap:.45rem;overflow-x:auto;padding:.15rem .15rem .5rem;margin-bottom:.95rem;
         scrollbar-width:none;-webkit-overflow-scrolling:touch}
.onglets::-webkit-scrollbar{display:none}
.onglet{flex:0 0 auto;padding:.55rem .95rem;border-radius:999px;border:1.5px solid var(--bord);
        background:#fff;color:var(--doux);font-size:.86rem;cursor:pointer;width:auto;
        box-shadow:none;font-weight:600;transition:all .2s}
.onglet:hover{border-color:var(--accent);color:var(--accent);filter:none;box-shadow:none}
.onglet.actif{background:linear-gradient(92deg,var(--accent),var(--accent2));color:#fff;
              border-color:transparent;box-shadow:0 5px 16px rgba(79,124,247,.3)}

/* Saisie rapide */
.rapide{display:grid;grid-template-columns:repeat(auto-fit,minmax(148px,1fr));gap:.6rem}
.rapide button{background:#eef3ff;color:var(--accent);font-size:.94rem;padding:.9rem .6rem;
               box-shadow:none;font-weight:600}
.rapide button:hover{background:#e3ecff;transform:translateY(-2px);box-shadow:0 8px 20px rgba(79,124,247,.16)}
.rapide button.repas{background:#f7edff;color:#7e22ce}
.rapide button.repas:hover{background:#f0e0ff;box-shadow:0 8px 20px rgba(168,85,247,.18)}
.rapide button.insuline{background:#e3f8fd;color:#0e7490}
.rapide button.insuline:hover{background:#d3f2fb;box-shadow:0 8px 20px rgba(6,182,212,.18)}
.rapide button.comprime{background:#eff2f7;color:#475569}
.rapide button.comprime:hover{background:#e6ebf3;box-shadow:0 8px 20px rgba(100,116,139,.16)}

/* Graphiques */
.graphe{width:100%;height:240px;display:block;overflow:visible}
.graphe .courbe{stroke-dasharray:var(--len);animation:trace 1.1s ease-out both}
.graphe circle{transition:r .15s}
.graphe circle:hover{r:7}
.graphe .pt{cursor:pointer;animation:apparait .5s both}
.legende{display:flex;flex-wrap:wrap;gap:.9rem;font-size:.76rem;color:var(--doux);margin-top:.6rem}
.pastille{display:inline-block;width:.62rem;height:.62rem;border-radius:50%;margin-right:.32rem;
          vertical-align:baseline}
.infobulle{position:fixed;background:#132038;color:#fff;font-size:.78rem;padding:.4rem .6rem;
           border-radius:9px;pointer-events:none;opacity:0;transition:opacity .15s;z-index:60;
           white-space:nowrap;box-shadow:0 8px 20px rgba(0,0,0,.25)}
.infobulle.vu{opacity:1}

/* Barre de progression animée */
.jauge{height:15px;border-radius:9px;overflow:hidden;display:flex;margin-top:.9rem;background:#e9eef7}
.jauge>i{display:block;height:100%;transition:width 1s cubic-bezier(.2,.8,.3,1)}

/* Listes */
.ligne{display:flex;align-items:center;gap:.7rem;padding:.65rem 0;border-bottom:1px solid var(--bord);
       transition:background .15s;border-radius:9px}
.ligne:last-child{border-bottom:0}
.ligne:hover{background:#f7faff}
.heure{font-variant-numeric:tabular-nums;color:var(--doux);font-size:.85rem;min-width:3.4rem}
.libelle{flex:1;font-size:.93rem;line-height:1.45}
.suppr{background:none;border:0;color:var(--doux);font-size:1rem;width:auto;padding:.25rem .45rem;
       cursor:pointer;box-shadow:none;border-radius:8px;opacity:.5;transition:all .15s}
.suppr:hover{opacity:1;background:#fee2e2;color:var(--haut);filter:none;box-shadow:none}

/* Constats */
.constat{display:flex;gap:.7rem;padding:.75rem 0;border-bottom:1px solid var(--bord);
         font-size:.91rem;line-height:1.5;animation:monte .4s both}
.constat:last-child{border-bottom:0}
.constat .ic{font-size:1.15rem;flex:0 0 auto}

/* Puces de synthèse colorées */
.chiffres{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:.6rem}
.chiffre{background:#f7faff;border:1px solid var(--bord);border-radius:14px;padding:.8rem;text-align:center}
.chiffre b{display:block;font-size:1.5rem;font-weight:800;line-height:1.2}
.chiffre span{font-size:.74rem;color:var(--doux)}

/* Modale */
.voile{position:fixed;inset:0;background:rgba(19,32,56,.5);backdrop-filter:blur(3px);
       display:none;align-items:flex-end;justify-content:center;z-index:40;
       animation:apparait .2s both}
.voile.ouvert{display:flex}
.modale{background:#fff;width:min(100%,540px);border-radius:24px 24px 0 0;
        padding:1.3rem 1.1rem 1.7rem;max-height:92dvh;overflow:auto;
        animation:monte .32s cubic-bezier(.2,.8,.3,1) both}
@media(min-width:640px){ .voile{align-items:center} .modale{border-radius:24px} }
.modale h3{margin:.1rem 0 1.1rem;font-size:1.1rem;font-weight:700}
.deux{display:grid;grid-template-columns:1fr 1fr;gap:.6rem}
.secondaire{background:#eef2f8;color:var(--texte);margin-top:.55rem;box-shadow:none}
.secondaire:hover{background:#e4eaf4;filter:none;box-shadow:none}
.avertissement{font-size:.75rem;color:var(--doux);line-height:1.55;margin-top:1.2rem;
               border-top:1px solid var(--bord);padding-top:.9rem}
