:root{
    --bg:#0E171D;
    --surface:#16232B;
    --surface-2:#1D2E38;
    --line:#24363F;
    --text:#E8EEF1;
    --muted:#8AA0AB;
    --accent:#E8A054;
    --done:#7FC08F;
    --danger:#D98080;
    --radius:14px;
  }
  *{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
  html{font-size:16px}
  body{
    background:var(--bg);color:var(--text);
    font-family:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
    min-height:100vh;padding-bottom:90px;
    padding-top:env(safe-area-inset-top);
  }
  .wrap{max-width:520px;margin:0 auto;padding:20px 16px}

  /* En-tête */
  header{margin:8px 0 20px}
  header .jour{font-size:1.9rem;font-weight:700;letter-spacing:-.02em;line-height:1.1}
  header .date{color:var(--muted);margin-top:4px;font-size:.95rem}
  header .progress{margin-top:14px;height:6px;background:var(--surface);border-radius:3px;overflow:hidden}
  header .progress i{display:block;height:100%;background:var(--done);border-radius:3px;transition:width .3s ease}
  header .pcount{color:var(--muted);font-size:.85rem;margin-top:6px}

  /* Bandeau voyage */
  .travel-banner{
    background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius);
    padding:12px 14px;margin-bottom:18px;font-size:.9rem;color:var(--text);
    display:flex;gap:10px;align-items:flex-start;
  }
  .travel-banner b{color:var(--accent)}
  .travel-banner .ico{font-size:1.1rem;line-height:1.3}

  /* Sections matin / soir */
  .slot-title{
    display:flex;align-items:baseline;gap:10px;margin:22px 0 10px;
  }
  .slot-title h2{font-size:1.05rem;font-weight:600}
  .slot-title .heure{color:var(--muted);font-size:.9rem}
  .slot-title .heure .shifted{color:var(--accent);font-weight:600}

  /* Lignes de prise */
  .dose{
    display:flex;align-items:center;gap:14px;
    width:100%;text-align:left;font-family:inherit;font-size:1rem;color:var(--text);
    background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);
    padding:16px 14px;margin-bottom:10px;cursor:pointer;user-select:none;
    transition:background .15s ease,border-color .15s ease;
  }
  .dose:active{background:var(--surface-2)}
  .dose .check{
    width:28px;height:28px;flex:none;border-radius:50%;
    border:2px solid var(--muted);display:flex;align-items:center;justify-content:center;
    font-size:1rem;color:transparent;transition:all .15s ease;
  }
  .dose.taken .check{background:var(--done);border-color:var(--done);color:#0E171D}
  .dose .infos{flex:1;min-width:0}
  .dose .nom{font-weight:600;font-size:1rem;display:block}
  .dose .detail{color:var(--muted);font-size:.88rem;margin-top:2px;display:block}
  .dose.taken .nom,.dose.taken .detail{opacity:.55;text-decoration:line-through}
  .vide{color:var(--muted);font-size:.9rem;padding:10px 2px}

  /* Barre du bas */
  nav{
    position:fixed;bottom:0;left:0;right:0;
    background:rgba(14,23,29,.92);backdrop-filter:blur(10px);
    border-top:1px solid var(--line);
    display:flex;justify-content:space-around;
    padding:10px 0 calc(10px + env(safe-area-inset-bottom));
  }
  nav button{
    background:none;border:none;color:var(--muted);font-family:inherit;
    font-size:.8rem;display:flex;flex-direction:column;align-items:center;gap:3px;
    cursor:pointer;padding:4px 18px;
  }
  nav button .i{font-size:1.25rem}
  nav button.actif{color:var(--accent)}

  /* Panneaux */
  /* Les panneaux sont pilotes par l'attribut hidden, pas par une classe. */
  .panel h1{font-size:1.5rem;font-weight:700;margin:8px 0 18px}

  .card{
    background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);
    padding:16px 14px;margin-bottom:14px;
  }
  .card h3{font-size:1rem;font-weight:600;margin-bottom:12px;display:flex;justify-content:space-between;align-items:center}
  .card h3 .suppr{background:none;border:none;color:var(--danger);font-size:.82rem;cursor:pointer;font-family:inherit}

  .champ{margin-bottom:12px}
  .champ label{display:block;font-size:.82rem;color:var(--muted);margin-bottom:5px}
  .champ input,.champ select{
    width:100%;background:var(--surface-2);border:1px solid var(--line);border-radius:10px;
    color:var(--text);font-family:inherit;font-size:1rem;padding:10px 12px;
  }
  .champ input:focus,.champ select:focus{outline:none;border-color:var(--accent)}
  .grille{display:grid;grid-template-columns:1fr 1fr;gap:10px}
  .grille-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}

  .slots-check{display:flex;gap:10px}
  .slots-check label{
    flex:1;display:flex;align-items:center;justify-content:center;gap:6px;
    background:var(--surface-2);border:1px solid var(--line);border-radius:10px;
    padding:10px;font-size:.9rem;cursor:pointer;color:var(--muted);
  }
  .slots-check input{position:absolute;opacity:0;width:1px;height:1px;margin:0}
  .slots-check label{position:relative}
  .slots-check label:focus-within{border-color:var(--accent)}
  .slots-check label.on{border-color:var(--accent);color:var(--text)}

  .note{font-size:.82rem;color:var(--muted);line-height:1.45;margin-top:10px}
  .note b{color:var(--accent);font-weight:600}
  .info-jour{font-size:.88rem;color:var(--text);background:var(--surface-2);border-radius:10px;padding:10px 12px;margin-bottom:12px}

  .btn{
    display:block;width:100%;background:var(--surface-2);border:1px solid var(--line);
    color:var(--text);font-family:inherit;font-size:.95rem;font-weight:600;
    border-radius:12px;padding:13px;cursor:pointer;margin-top:6px;
  }
  .btn:active{background:var(--line)}
  .btn.accent{background:var(--accent);border-color:var(--accent);color:#0E171D}
  .btn.discret{border:none;background:none;color:var(--accent);font-weight:600;padding:8px}

  .phase-ligne{display:grid;grid-template-columns:1fr 90px 34px;gap:8px;margin-bottom:8px;align-items:center}
  .phase-ligne input{background:var(--surface-2);border:1px solid var(--line);border-radius:10px;color:var(--text);font-family:inherit;font-size:.92rem;padding:9px 10px;width:100%}
  .phase-ligne .x{background:none;border:none;color:var(--danger);font-size:1.1rem;cursor:pointer}

  .switch-ligne{display:flex;justify-content:space-between;align-items:center;padding:4px 0;margin-bottom:10px}
  .switch-ligne span{font-size:.95rem}
  .switch{position:relative;width:46px;height:26px;flex:none}
  .switch input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer;z-index:1}
  .switch input:focus-visible + i{border-color:var(--accent);box-shadow:0 0 0 2px rgba(232,160,84,.4)}
  .switch i{
    position:absolute;inset:0;background:var(--surface-2);border:1px solid var(--line);
    border-radius:13px;transition:.2s;cursor:pointer;
  }
  .switch i:before{
    content:"";position:absolute;width:20px;height:20px;border-radius:50%;
    background:var(--muted);top:2px;left:2px;transition:.2s;
  }
  .switch input:checked + i{background:var(--accent);border-color:var(--accent)}
  .switch input:checked + i:before{background:#0E171D;left:22px}

  @media (prefers-reduced-motion: reduce){
    *{transition:none !important}
  }

  /* ----- Panneaux pilotes par l'attribut hidden ----- */
  .panel[hidden]{display:none}
  [hidden]{display:none !important}

  /* ----- Connexion ----- */
  .login{
    min-height:100vh;display:flex;flex-direction:column;justify-content:center;
    max-width:400px;margin:0 auto;padding:24px 20px;
  }
  .login .logo{font-size:2.2rem;font-weight:700;letter-spacing:-.03em;margin-bottom:6px}
  .login .accroche{color:var(--muted);font-size:.95rem;margin-bottom:28px;line-height:1.5}
  .erreur{color:var(--danger);font-size:.88rem;margin-top:12px;line-height:1.4}
  .succes{color:var(--done);font-size:.88rem;margin-top:12px;line-height:1.4}
  .btn:disabled{opacity:.5;cursor:default}
  .info-jour.alerte{color:var(--danger)}
  .etiquette-paliers{display:block;font-size:.82rem;color:var(--muted);margin-bottom:6px}
  nav{z-index:10}
  .card h3{gap:10px}
  .card h3 .suppr{flex:none}
  .switch-ligne{gap:12px}
  header .pcount{min-height:1.1em}

