:root{
  --rouge:#ff3b30; --orange:#ff9500; --vert:#34c759; --gris:#c7c7cc;
  --bg:#f2f2f7; --surface:#ffffff; --ink:#1c1c1e; --sec:#8e8e93; --ter:#c4c4c8;
  --line:#e7e7ec; --accent:#0a84ff; --radius:16px;
  --safe-top:env(safe-area-inset-top,0px); --safe-bot:env(safe-area-inset-bottom,0px);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;background:var(--bg);color:var(--ink);overflow-x:hidden;
  font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI",Roboto,sans-serif;
  font-size:16px;line-height:1.4;-webkit-font-smoothing:antialiased}
.app{max-width:560px;margin:0 auto;min-height:100vh;background:var(--bg);overflow-x:hidden}

/* En-tête + barre d'outils */
header{position:sticky;top:0;z-index:10;background:rgba(242,242,247,.88);
  backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px);
  padding:calc(12px + var(--safe-top)) 16px 10px;border-bottom:.5px solid var(--line)}
.h1row{display:flex;align-items:baseline;gap:8px}
h1{font-size:26px;font-weight:800;letter-spacing:-.02em;margin:0}
.today{margin-left:auto;font-size:13px;color:var(--sec)}
.toolbar{display:flex;align-items:center;gap:10px;margin-top:10px}
.filterbtn{display:inline-flex;align-items:center;gap:6px;border:none;background:#e3e3e9;
  color:var(--ink);font-size:14px;font-weight:600;padding:8px 13px;border-radius:10px;cursor:pointer}
.filterbtn svg{opacity:.7}
.fcount{color:var(--accent);font-weight:700}
.resume{font-size:13px;color:var(--sec)}
.refreshbtn{margin-left:auto;display:inline-flex;align-items:center;gap:6px;border:none;
  background:#e3e3e9;color:var(--ink);font-size:14px;font-weight:600;
  padding:8px 13px;border-radius:10px;cursor:pointer}
.refreshbtn svg{opacity:.7}
.refreshbtn:disabled{opacity:.6;cursor:default}
.refreshbtn.busy svg{animation:spin .8s linear infinite;transform-origin:50% 50%}
@keyframes spin{to{transform:rotate(360deg)}}
@media(max-width:359px){ .refreshbtn .rlab{display:none} }

/* Panneau de filtres */
.panel{margin-top:12px;background:var(--surface);border:.5px solid var(--line);border-radius:14px;
  padding:14px;box-shadow:0 6px 24px rgba(0,0,0,.08)}
.search{position:relative}
.search input{width:100%;border:none;background:#ececf1;border-radius:10px;
  padding:10px 12px 10px 36px;font-size:16px;color:var(--ink)}
.search input::placeholder{color:#9a9aa0}
.search svg{position:absolute;left:11px;top:50%;transform:translateY(-50%);opacity:.45}
.plab{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;
  color:var(--sec);margin:14px 2px 7px}
.chips{display:flex;gap:8px;flex-wrap:wrap}
.chip{border:none;background:#ececf1;color:#3a3a3c;font-size:14px;font-weight:600;
  padding:7px 13px;border-radius:999px;cursor:pointer;white-space:nowrap}
.chip[aria-pressed=true]{background:var(--ink);color:#fff}
.cdot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:5px;vertical-align:middle}
.panelclose{margin-top:14px;width:100%;border:none;background:#ececf1;color:#3a3a3c;
  font-size:15px;font-weight:600;padding:11px;border-radius:11px;cursor:pointer}

/* Liste */
main{padding:8px 16px calc(40px + var(--safe-bot))}
.grouphdr{font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;
  color:var(--sec);margin:18px 4px 8px}
.grouphdr .n{color:var(--ter);margin-left:6px;font-weight:600}
.list{background:var(--surface);border-radius:var(--radius);overflow:hidden;
  box-shadow:0 1px 2px rgba(0,0,0,.04);margin-bottom:6px}
.row{display:flex;align-items:center;gap:12px;padding:12px 14px;cursor:pointer;
  border-bottom:.5px solid var(--line)}
.row:last-child{border-bottom:none}
.row:active{background:#f2f2f5}
.dotcol{flex:0 0 auto;align-self:flex-start;margin-top:5px}
.dot{display:block;width:10px;height:10px;border-radius:50%}
.dot.rouge{background:var(--rouge)} .dot.orange{background:var(--orange)}
.dot.vert{background:var(--vert)} .dot.gris,.dot.ignore{background:var(--gris)}
.body{flex:1;min-width:0}
.l1{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--sec);font-weight:600}
.l1 .sep{color:var(--ter)}
.gtag{font-size:11px;font-weight:700;color:var(--orange);background:#fff3e0;
  padding:1px 6px;border-radius:5px;letter-spacing:.01em}
.seen{font-size:11px;font-weight:700;color:var(--sec);background:#ececf0;
  padding:1px 6px;border-radius:5px;letter-spacing:.01em}
.warnico{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;
  border-radius:50%;background:var(--orange);color:#fff;font-size:11px;font-weight:800;line-height:1}
.name{font-size:17px;font-weight:600;letter-spacing:-.01em;margin:2px 0 0;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.l3{font-size:14px;color:var(--sec);margin-top:1px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lmail{font-size:12px;color:var(--ter);margin-top:2px}
.right{flex:0 0 auto;display:flex;flex-direction:column;align-items:flex-end;gap:3px;align-self:center}
.delai{font-size:13px;color:var(--sec);font-weight:600}
.delai.rouge{color:var(--rouge);font-weight:700}
.chev{color:var(--ter);font-size:20px;line-height:1}
.empty{color:var(--sec);text-align:center;padding:60px 20px}

/* Fiche détail */
.sheet{position:fixed;inset:0;z-index:30;display:none}
.sheet.open{display:flex;justify-content:center}
.scrim{position:absolute;inset:0;background:rgba(0,0,0,.35);opacity:0;transition:opacity .25s}
.sheet.open .scrim{opacity:1}
.card{position:relative;z-index:1;height:100%;width:min(560px,100%);background:var(--bg);
  overflow-y:auto;-webkit-overflow-scrolling:touch;
  transform:translateX(100%);transition:transform .28s cubic-bezier(.32,.72,0,1)}
.sheet.open .card{transform:translateX(0)}
.dhead{position:sticky;top:0;background:rgba(242,242,247,.92);
  backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);
  padding:calc(10px + var(--safe-top)) 14px 10px;display:flex;align-items:center;gap:10px;
  border-bottom:.5px solid var(--line);z-index:2}
.back{border:none;background:none;color:var(--accent);font-size:16px;font-weight:500;cursor:pointer}
.dhead .badge{margin-left:auto;font-size:12px;font-weight:700;padding:4px 10px;border-radius:999px}
.badge.rouge{background:#ffe5e3;color:#d70015}.badge.orange{background:#fff0db;color:#a25b00}
.badge.vert{background:#e2f7e9;color:#137a37}.badge.gris,.badge.ignore{background:#ececf0;color:#6b6b70}
.dtitle{padding:16px 18px 4px}
.dtitle h2{font-size:23px;font-weight:800;letter-spacing:-.02em;margin:0}
.dtitle .meta{color:var(--sec);font-size:14px;margin-top:3px}
.glab{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;
  color:var(--sec);margin:15px 18px 6px}
.grp{background:var(--surface);border-radius:14px;margin:0 16px;overflow:hidden;
  box-shadow:0 1px 2px rgba(0,0,0,.04)}
.f{display:flex;gap:12px;align-items:baseline;padding:9px 16px;border-bottom:.5px solid var(--line)}
.f:last-child{border-bottom:none}
.f .k{color:var(--sec);font-size:14px;flex:0 0 96px}
.f .v{font-weight:600;font-size:15px;flex:1;word-break:break-word}
.f .cp{align-self:center;border:none;background:#eef0f3;color:var(--accent);border-radius:7px;
  padding:4px 10px;font-size:13px;font-weight:600;cursor:pointer}
.linkrow{padding:12px 16px;border-top:.5px solid var(--line)}
.link{color:var(--accent);font-weight:600;text-decoration:none;font-size:15px}
.mhint{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;
  color:var(--sec);padding:10px 16px 0}
.draft{padding:13px 16px;font-size:14.5px;white-space:pre-wrap;color:#2c2c2e}
.draftbar{display:flex;gap:9px;padding:0 16px 13px;flex-wrap:wrap}
.mini{border:none;border-radius:9px;padding:8px 13px;font-size:14px;font-weight:600;cursor:pointer}
.mini.fill{background:var(--accent);color:#fff}.mini.soft{background:#eef0f3;color:#3a3a3c}

/* Cases d'action */
.task{display:flex;gap:12px;align-items:flex-start;padding:12px 16px;border-bottom:.5px solid var(--line);cursor:pointer}
.task:last-child{border-bottom:none}
.box{flex:0 0 auto;width:22px;height:22px;border-radius:7px;border:2px solid var(--ter);
  display:flex;align-items:center;justify-content:center;margin-top:1px;transition:.12s}
.task.done .box{background:var(--vert);border-color:var(--vert)}
.box svg{opacity:0;transition:.12s}
.task.done .box svg{opacity:1}
.task .txt{font-size:15px;font-weight:600;flex:1}
.task.done .txt{color:var(--sec);text-decoration:line-through;text-decoration-color:var(--ter)}

.future{margin:0 16px;border:1px dashed #cdd0d6;border-radius:14px;padding:14px;
  background:#fbfbfd;color:var(--sec);font-size:13.5px}
.future b{color:#48484a}
.future .lock{font-size:12px;color:var(--accent);font-weight:700;display:block;margin-bottom:5px}
.note{font-size:12px;color:var(--ter);text-align:center;padding:14px 24px 0}

/* Barre d'action en bas de la fiche */
.dfoot{position:sticky;bottom:0;background:#fff;border-top:.5px solid var(--line);
  box-shadow:0 -2px 10px rgba(0,0,0,.05);
  padding:14px 16px calc(16px + var(--safe-bot));display:flex;gap:9px;align-items:center}
.pbtn{border:none;border-radius:13px;padding:14px 10px;font-size:16px;font-weight:700;
  cursor:pointer;white-space:nowrap}
.pbtn.go{flex:2;background:var(--vert);color:#fff}
.pbtn.reopen{flex:1;background:#eef0f3;color:var(--ink)}
.pbtn.sec{flex:1;background:#eef0f3;color:#3a3a3c}
.pbtn.del{flex:1;background:#ffe5e3;color:#d70015}

/* Fenêtre de confirmation */
.modal{position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;
  background:rgba(0,0,0,.4);padding:24px}
.modal[hidden]{display:none}
.mbox{background:#fff;border-radius:16px;max-width:340px;width:100%;overflow:hidden;
  box-shadow:0 20px 60px rgba(0,0,0,.3)}
.mtext{padding:22px 20px;font-size:16px;text-align:center;line-height:1.45}
.mbtns{display:flex;border-top:.5px solid var(--line)}
.mbtn{flex:1;border:none;background:none;padding:14px;font-size:16px;cursor:pointer}
.mbtn.cancel{color:var(--sec);border-right:.5px solid var(--line)}
.mbtn.ok{color:var(--accent);font-weight:700}
.mbtn.ok.danger{color:var(--rouge)}

@media(min-width:560px){ .app{box-shadow:0 0 0 1px var(--line)} }

/* Page de connexion */
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}
.login-card{width:min(360px,100%);background:var(--surface);border:.5px solid var(--line);
  border-radius:18px;padding:28px 22px;box-shadow:0 10px 40px rgba(0,0,0,.08);text-align:center}
.login-title{font-size:24px;font-weight:800;letter-spacing:-.02em;margin:0}
.login-sub{color:var(--sec);font-size:13px;font-weight:700;letter-spacing:.06em;
  text-transform:uppercase;margin:4px 0 20px}
.login-input{width:100%;border:none;background:#ececf1;border-radius:11px;padding:13px 14px;
  font-size:16px;color:var(--ink);margin-bottom:12px}
.login-input::placeholder{color:#9a9aa0}
.login-btn{width:100%;border:none;border-radius:12px;background:var(--accent);color:#fff;
  font-size:16px;font-weight:700;padding:13px;cursor:pointer}
.login-err{background:#ffe5e3;color:#d70015;font-size:14px;font-weight:600;
  padding:9px 12px;border-radius:10px;margin-bottom:14px}
.logoutrow{margin-top:12px;text-align:center}
.logoutlink{color:var(--rouge);font-size:14px;font-weight:600;text-decoration:none}
