/* Cahier d’entraînement — « Plan d’eau »
   Eau profonde pour l’encre et les actions, jaune balle (haute visibilité) pour ce qui se passe aujourd’hui,
   chiffres en Archivo étroit comme sur un tableau de score. Une sélection est en encre, une action en bleu. */
@font-face{font-family:"Archivo";src:url(fonts/archivo.woff2) format("woff2-variations"),url(fonts/archivo.woff2) format("woff2");font-weight:100 900;font-stretch:62% 125%;font-display:swap;
  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:"Archivo";src:url(fonts/archivo-ext.woff2) format("woff2-variations"),url(fonts/archivo-ext.woff2) format("woff2");font-weight:100 900;font-stretch:62% 125%;font-display:swap;
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}

:root{--spring:linear(0,.098,.303,.524,.715,.858,.952,1.006,1.032,1.038,1.035,1.027,1.019,1.011,1.006,1.002,1);--spring-b:linear(0,.115,.365,.638,.866,1.02,1.102,1.126,1.113,1.082,1.047,1.018,.998,.987,.984,.986,.989,.994,.998,1);
  --bg:#ebf1f0;--card:#fff;--sunk:#e2eae9;--ink:#0c2830;--mute:#526a71;--line:#d4dfdd;
  --accent:#0a5f73;--accent-ink:#fff;--soft:color-mix(in srgb,var(--accent) 11%,transparent);
  --signal:#ffcd1c;--signal-ink:#2b2300;--signal-edge:#9a7400;
  --ok:#1b8a55;--warn:#b07000;--bad:#c93a3a;--okbg:#dcf1e6;--warnbg:#fbeecf;--badbg:#fae2e2;
  --water:#0a7f99;--dry:#7a5cc4;--other:#8a9aa5;--match:#f07a1a;--pw:#cfe9f2;--pl:#7fb3c6;
  --tabbg:#fff;--radius:20px;--r2:14px;--r3:11px;--tab:52px;--tabsafe:max(12px,calc(env(safe-area-inset-bottom) - 12px));
  --font:"Archivo",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  color-scheme:light;
}
/* Sombre : selon le téléphone, ou choisi dans les Paramètres (data-theme) */
@media (prefers-color-scheme:dark){:root:not([data-theme=light]){
  --bg:#06171c;--card:#0d232a;--sunk:#15313a;--ink:#e3efef;--mute:#8aa5ab;--line:#1f3b43;
  --accent:#4cc3db;--accent-ink:#03222b;--signal:#ffd43b;--signal-edge:transparent;
  --okbg:#0f3326;--warnbg:#3a2c08;--badbg:#3f1a1a;--ok:#3cc382;--warn:#e7a52a;--bad:#f06565;
  --water:#4cc3db;--dry:#a68df0;--other:#7f95a1;--match:#ff9442;--pw:#0f3140;--pl:#2f6a80;--tabbg:#1d3d47;color-scheme:dark}}
:root[data-theme=dark]{
  --bg:#06171c;--card:#0d232a;--sunk:#15313a;--ink:#e3efef;--mute:#8aa5ab;--line:#1f3b43;
  --accent:#4cc3db;--accent-ink:#03222b;--signal:#ffd43b;--signal-edge:transparent;
  --okbg:#0f3326;--warnbg:#3a2c08;--badbg:#3f1a1a;--ok:#3cc382;--warn:#e7a52a;--bad:#f06565;
  --water:#4cc3db;--dry:#a68df0;--other:#7f95a1;--match:#ff9442;--pw:#0f3140;--pl:#2f6a80;--tabbg:#1d3d47;color-scheme:dark}

/* ---------- Base ---------- */
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;background:var(--bg)}
html,body{overflow-x:clip}
body{margin:0;background:var(--bg);color:var(--ink);font:400 16px/1.45 var(--font);font-stretch:100%;-webkit-font-smoothing:antialiased}
h1{font-size:2.05rem;font-weight:800;font-stretch:70%;letter-spacing:-.005em;line-height:1.02;margin:.35rem 0 1rem}
h2{font-size:1.4rem;font-weight:800;font-stretch:78%;line-height:1.1;margin:.2rem 0 .5rem}
h3{font-size:1.08rem;font-weight:700;font-stretch:92%;line-height:1.2;margin:0 0 .6rem}
h4{font-size:.86rem;font-weight:650;color:var(--mute);margin:1.05rem 0 .4rem}
h4 small,h3 small{font-weight:500}
a{color:var(--accent)}p{margin:.4rem 0}small{color:var(--mute)}
hr{border:0;border-top:1px solid var(--line);margin:1rem 0}
:focus-visible{outline:2.5px solid var(--accent);outline-offset:2px}
select,input,textarea{font:inherit;color:var(--ink);background:var(--sunk);border:1.5px solid transparent;border-radius:12px;padding:.55rem .7rem;min-height:46px;max-width:100%}
select:focus,input:focus,textarea:focus{outline:none;border-color:var(--accent);background:var(--card)}
dialog :is(input:not([type=checkbox]):not([type=range]),select,textarea){background:var(--card)}
textarea{width:100%;resize:vertical;line-height:1.4}input[type=checkbox],input[type=radio]{min-height:0;padding:0;border:0;border-radius:0;background:none}
/* Dates et heures : sur iPhone, le champ natif ignore la largeur et dépasse ; on le remet dans le rang */
input[type=date],input[type=time],input[type=datetime-local],input[type=month]{-webkit-appearance:none;appearance:none;display:block;width:100%;min-width:0;text-align:left;line-height:1.45}
input[type=date]::-webkit-date-and-time-value,input[type=time]::-webkit-date-and-time-value{text-align:left;margin:0}
input[type=date]::-webkit-calendar-picker-indicator{opacity:.55}
::placeholder{color:var(--mute)}
.ic{width:24px;height:24px;flex:none}
.grow{flex:1;min-width:0}.center{text-align:center}.sp{margin-top:1rem}
.t{font-weight:650}.s,.help{color:var(--mute);font-size:.86rem}.help{margin:.2rem 0 .6rem}
.ok{color:var(--ok)}.warn{color:var(--warn)}.bad{color:var(--bad)}
[aria-disabled="true"]{opacity:.42}
/* Les chiffres qui comptent : étroits, gras, tabulaires */
.kpis b,.evn b,.streak,.dt b,.gnum b,.hero .big,.vn,.kg,.gtime,.greps,.wnav span,.obn{font-stretch:68%;font-weight:800;font-variant-numeric:tabular-nums}

/* ---------- Coquille ---------- */
#top{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:.6rem;
  padding:calc(.45rem + env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) .45rem max(16px,env(safe-area-inset-left));
  background:color-mix(in srgb,var(--bg) 86%,transparent);-webkit-backdrop-filter:saturate(1.4) blur(14px);backdrop-filter:saturate(1.4) blur(14px)}
.brand{display:flex;align-items:center;gap:.45rem;text-decoration:none;color:var(--ink);font-weight:800;font-stretch:72%;font-size:1.15rem;letter-spacing:.01em}
.brand svg{width:24px;height:24px}.brand small{display:none}
.hr{display:flex;gap:.4rem;align-items:center}
.gear{display:grid;place-items:center;width:44px;height:44px;margin-right:-8px;border-radius:50%;color:var(--mute)}.gear.on,.gear:hover{color:var(--accent)}
.hbtn{display:grid;place-items:center;width:44px;height:44px;border:0;border-radius:50%;background:none;color:var(--mute);cursor:pointer;padding:0}.hbtn:hover{color:var(--accent)}.hr{gap:0}
.bugctx{margin-top:.2rem}.chips.bugctx .chip{min-height:0;padding:.2rem .6rem;font-size:.8rem;font-weight:550;color:var(--mute);cursor:default}
#offline{background:var(--warnbg);color:var(--ink);text-align:center;font-size:.86rem;padding:.35rem}
.layout{display:flex;max-width:1100px;margin:0 auto}
#side{display:none}
main{flex:1;min-width:0;padding:.3rem max(16px,env(safe-area-inset-right)) calc(var(--tab) + var(--tabsafe) + 1.6rem) max(16px,env(safe-area-inset-left))}
/* Barre d’onglets : une bulle qui flotte au-dessus de la page, avec une ombre douce (comme sur iPhone) */
#tabbar{position:fixed;left:50%;bottom:var(--tabsafe);transform:translateX(-50%);z-index:20;display:flex;gap:2px;width:min(var(--tabw,300px),calc(100vw - 48px));padding:5px;border-radius:99px;
  background:color-mix(in srgb,var(--tabbg) 94%,transparent);-webkit-backdrop-filter:blur(18px) saturate(1.7);backdrop-filter:blur(18px) saturate(1.7);
  box-shadow:0 14px 34px color-mix(in srgb,#03141a 30%,transparent),0 3px 10px color-mix(in srgb,#03141a 18%,transparent),inset 0 0 0 1px color-mix(in srgb,var(--ink) 14%,transparent)}
#tabbar a{flex:1;display:grid;place-items:center;height:calc(var(--tab) - 10px);border-radius:99px;color:var(--mute);text-decoration:none;transition:background .25s,color .25s}
#tabbar .ic{width:25px;height:25px}
#tabbar .on{background:var(--soft);color:var(--accent)}
#tabbar a:active{transform:scale(.94)}
@media(min-width:860px){
  #tabbar{display:none}
  #side{display:flex;flex-direction:column;gap:2px;width:220px;padding:1rem .6rem;padding-left:max(.6rem,env(safe-area-inset-left));position:sticky;top:64px;align-self:flex-start}
  #side a{display:flex;align-items:center;gap:.75rem;padding:.65rem .85rem;border-radius:12px;color:var(--ink);text-decoration:none;font-weight:600}
  #side a:hover{background:var(--card)}#side .on{background:var(--card);color:var(--accent)}
  main{padding-bottom:3rem;max-width:780px}.brand small{display:inline;font-weight:500;font-stretch:100%;font-size:.8rem;color:var(--mute);margin-left:.2rem}
  /* grand écran : colonne de lecture centrée, en-tête alignée dessus, curseur et focus clavier bien visibles */
  .layout{max-width:1020px}
  #top{padding-left:max(16px,calc((100vw - 1020px) / 2 + .6rem));padding-right:max(16px,calc((100vw - 1020px) / 2 + .6rem))}
  #guide>*{width:100%;max-width:640px;margin-left:auto;margin-right:auto}
  [data-a],[data-href],[data-c],summary,label.chk{cursor:pointer}
  [aria-disabled="true"],:disabled{cursor:default}
  #side a:focus-visible{outline-offset:-2px}
  .row.act:hover,.ring:hover,.chip:hover,.tile:hover,.exo:hover,.lgo:hover,.bonus:hover,.axcard:hover{filter:brightness(.97)}
}

/* ---------- Blocs ---------- */
.card{background:var(--card);border-radius:var(--radius);padding:1rem;margin:0 0 .8rem}
.card.flush{padding:.15rem 0;overflow:hidden}.card.flush .row{padding:.75rem 1rem}
.card.hl{box-shadow:inset 0 0 0 1.5px color-mix(in srgb,var(--warn) 60%,transparent)}
.grid2{display:grid;gap:.8rem}@media(min-width:760px){.grid2{grid-template-columns:1fr 1fr}}
.head{display:flex;align-items:center;justify-content:space-between;gap:.6rem;flex-wrap:wrap;margin-bottom:.45rem}.head h1,.head h3{margin:0}
.row{display:flex;align-items:center;gap:.75rem;padding:.65rem 0;border-top:1px solid var(--line);text-decoration:none;color:inherit}
.row:first-of-type,h3+.row,.head+.row,.help+.row{border-top:0}
.row.act:hover{background:color-mix(in srgb,var(--sunk) 50%,transparent)}
.dt{width:42px;text-align:center;line-height:1}.dt b{display:block;font-size:1.55rem}.dt span{font-size:.75rem;color:var(--mute)}
.row.act .dt{border-left:3px solid var(--c,var(--other));padding-left:6px;width:50px;text-align:left}
.back{display:inline-flex;align-items:center;min-height:40px;margin-bottom:.1rem;text-decoration:none;font-weight:600;font-size:.92rem}
.meta{display:flex;gap:.4rem .9rem;flex-wrap:wrap;align-items:center;margin-bottom:.4rem;font-size:.92rem}
.content{margin:.2rem 0;padding-left:1.1rem}
.empty{display:flex;flex-direction:column;align-items:center;gap:.25rem;color:var(--mute);padding:1.4rem 1rem;text-align:center;font-size:.92rem}.empty strong{color:var(--ink);font-size:1rem}
.btns{display:flex;flex-wrap:wrap;gap:.5rem;margin:.5rem 0}

/* ---------- Boutons, puces, onglets ---------- */
.btn{font:inherit;font-weight:650;font-size:.92rem;padding:.6rem 1.05rem;min-height:44px;border-radius:12px;border:0;background:var(--sunk);color:var(--ink);cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:.4rem;transition:background .15s,transform .1s}
.btn:hover{background:color-mix(in srgb,var(--sunk) 70%,var(--ink) 8%)}
.btn:active{transform:scale(.97)}
.btn.primary{background:var(--accent);color:var(--accent-ink)}.btn.primary:hover{background:color-mix(in srgb,var(--accent) 88%,var(--ink))}
.btn.danger{background:var(--badbg);color:var(--bad)}
.btn.ghost{background:transparent;color:var(--accent)}.btn.ghost:hover{background:var(--soft)}
.btn.sm{min-height:44px;padding:.35rem .8rem;font-size:.86rem;border-radius:10px}
.btn.block{display:flex;width:100%;margin:.5rem 0}
.btn:disabled{opacity:.35;cursor:default}
.chip{display:inline-flex;align-items:center;gap:.25rem;padding:.16rem .6rem;border-radius:99px;font-size:.8rem;font-weight:600;background:var(--sunk);border:0;color:var(--ink);white-space:nowrap}
.chip.ok{background:var(--okbg);color:color-mix(in srgb,var(--ok) 72%,var(--ink))}.chip.warn{background:var(--warnbg);color:color-mix(in srgb,var(--warn) 65%,var(--ink))}.chip.bad{background:var(--badbg);color:color-mix(in srgb,var(--bad) 70%,var(--ink))}
.row .chip{white-space:normal}
.tchip{background:color-mix(in srgb,var(--c) 17%,transparent);color:var(--ink)}
.chips{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:.3rem 0 .7rem}
.chips .chip{font:inherit;font-size:.92rem;font-weight:550;padding:.45rem .85rem;min-height:38px;cursor:pointer;color:var(--ink)}
.chips .chip.on{background:var(--ink);color:var(--card)}
.chips .chip.on[style*="--c"]{background:var(--c);color:#fff}
.tabs{position:relative;display:flex;gap:2px;margin:0 0 1rem;padding:3px;background:var(--sunk);border-radius:13px;overflow:hidden}
.tabs .tpill{position:absolute;top:3px;bottom:3px;left:3px;width:calc((100% - 6px - (var(--n) - 1) * 2px) / var(--n));transform:translateX(calc(var(--i) * (100% + 2px)));border-radius:10px;background:var(--card);box-shadow:0 1px 2px color-mix(in srgb,var(--ink) 12%,transparent)}
.tabs button{position:relative;flex:1 1 0;min-width:0;font:inherit;font-size:clamp(.76rem,3.55vw,.9rem);font-weight:600;background:none;border:0;border-radius:10px;padding:.5rem .3rem;min-height:38px;color:var(--mute);cursor:pointer;white-space:nowrap}
.tabs .on{color:var(--ink);transition:color .2s}
.seg2{display:flex;gap:3px;margin:.45rem 0;padding:3px;background:var(--sunk);border-radius:12px}
.seg2 button{flex:1;font:inherit;font-size:.86rem;font-weight:600;padding:.45rem .3rem;border-radius:9px;border:0;background:none;color:var(--mute);cursor:pointer;min-height:44px}
.seg2 .on{background:var(--card);color:var(--ink);box-shadow:0 1px 2px color-mix(in srgb,var(--ink) 12%,transparent)}
.seg2.mini{margin:.35rem 0 0}.seg2.mini button{min-height:44px;font-size:.8rem}

/* ---------- Formulaires ---------- */
.field{margin:.7rem 0}.field>label{display:block;font-size:.86rem;font-weight:600;color:var(--mute);margin-bottom:.3rem}
.field input:not([type=checkbox]):not([type=range]),.field select{width:100%}
.field output{margin-left:.5rem;font-weight:700}input[type=range]{width:85%;padding:0;background:none;min-height:30px}
.chk{display:flex;gap:.55rem;align-items:center;margin:.3rem 0;font-size:.92rem;color:var(--ink)!important;cursor:pointer}
.chk input[type=checkbox]{width:20px;height:20px;accent-color:var(--accent)}
.multi{max-height:220px;overflow:auto;border-radius:12px;background:var(--sunk);padding:.3rem .7rem}
.sw{justify-content:space-between;flex-direction:row-reverse;padding:.55rem 0;gap:1rem}
.sw span small{display:block;color:var(--mute);font-size:.8rem;line-height:1.3;margin-top:1px}
.sw input{appearance:none;-webkit-appearance:none;width:51px!important;height:31px!important;border-radius:99px;background:var(--line);position:relative;flex:none;transition:background .2s;cursor:pointer;margin:0}
.sw input::after{content:"";position:absolute;top:2px;left:2px;width:27px;height:27px;border-radius:50%;background:#fff;box-shadow:0 2px 4px #0003;transition:left .2s}
.sw input:checked{background:var(--accent)}.sw input:checked::after{left:22px}
.inl{display:flex;gap:.5rem;align-items:flex-start}.inl input{flex:1;min-width:0}.inl>.btn{align-self:flex-start;min-height:46px}
.daypick{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.daypick label{position:relative;cursor:pointer;margin:0!important}
.daypick input{position:absolute;opacity:0;pointer-events:none}
.daypick span{display:grid;place-items:center;height:44px;border-radius:11px;background:var(--sunk);font-size:.8rem;font-weight:650;color:var(--ink)}
.daypick input:checked+span{background:var(--ink);color:var(--card)}.daypick input:focus-visible+span{outline:2.5px solid var(--accent);outline-offset:2px}

/* ---------- Fenêtres ---------- */
/* Fenêtres : le fond de l’app (eau claire), champs et puces comme sur les écrans */
dialog{--sunk:color-mix(in srgb,var(--bg) 86%,var(--ink) 8%);border:0;border-radius:22px;padding:0;background:var(--bg);color:var(--ink);width:min(560px,94vw);max-height:90vh;box-shadow:0 24px 70px #0007}
/* Une seule zone qui défile (le contenu) : la fenêtre elle-même ne défile jamais */
dialog[open]{display:flex;flex-direction:column;overflow:hidden}dialog>form{display:flex;flex-direction:column;flex:1 1 auto;min-height:0}
dialog::backdrop{background:color-mix(in srgb,#03141a 55%,transparent);animation:bdin .24s ease-out}
dialog[open]{animation:dlg .42s var(--spring)}
@keyframes dlg{from{opacity:0;transform:translateY(16px)}}
@keyframes bdin{from{opacity:0}}
/* la fenêtre coulissante monte d’un bloc, opaque : on ne voit jamais l’écran derrière à travers */
dialog.sheet[open]{animation:sheetin .5s var(--spring)}
@keyframes sheetin{from{transform:translateY(100%)}}
/* fermeture : une copie de la fenêtre redescend pendant que la vraie est déjà fermée (closeModal) */
.mghost{position:fixed!important;margin:0!important;animation:none!important;z-index:9998;pointer-events:none}
.mghostbd{position:fixed;inset:0;z-index:9997;pointer-events:none;background:color-mix(in srgb,#03141a 55%,transparent)}
/* retour au toucher : on s’enfonce vite, on revient avec un ressort */
.btn,.row[data-a],button.row,.bonus,.lgo,.addbig,.ring,#tabbar a,.card[data-a]{transition:transform .45s var(--spring-b),opacity .25s}
:is(.btn,.row[data-a],button.row,.bonus,.lgo,.addbig,.card[data-a]):active{transform:scale(.97);transition-duration:.08s}
.ring:active,#tabbar a:active{transition-duration:.08s}
html.modal-open,html.modal-open body{overflow:hidden}html.modal-open body{position:fixed;left:0;right:0;width:100%}
.mbody{padding:1.2rem 1.2rem 1rem;overflow:auto;flex:1 1 auto;min-height:0;overscroll-behavior:none}.mbody h3{font-size:1.25rem}.mbody h3:focus{outline:none}
.mfoot{position:relative;display:flex;justify-content:flex-end;align-items:center;gap:.5rem;padding:.3rem 1rem;background:var(--bg);flex:none}
/* le contenu s’efface doucement sous les boutons, sans trait */
.mfoot::before{content:"";position:absolute;left:0;right:0;bottom:100%;height:20px;background:linear-gradient(color-mix(in srgb,var(--bg) 0%,transparent),var(--bg));pointer-events:none}
.mfoot .btn{min-height:40px;padding:.45rem .95rem}
.mfoot .btn.primary{min-width:120px}
dialog.sheet{margin:auto auto 0;border-radius:24px 24px 0 0;width:100vw;max-width:100vw;max-height:92vh;box-shadow:0 70vh 0 0 var(--bg),0 -8px 40px #0004}
dialog.sheet .mbody{padding-top:1.5rem;position:relative}
dialog.sheet .mbody::before{content:"";position:absolute;top:8px;left:50%;width:38px;height:5px;margin-left:-19px;border-radius:3px;background:var(--line)}
dialog.sheet{touch-action:pan-y}
@media(min-width:620px){dialog.sheet{margin:auto;border-radius:24px;width:min(600px,94vw);box-shadow:0 24px 70px #0007}dialog.sheet .mbody::before{display:none}dialog.sheet .mbody{padding-top:1.2rem}dialog.sheet[open]{animation:dlg .24s cubic-bezier(.2,.9,.3,1)}}
/* Notification : pastille en haut de l’écran, comme celles du téléphone ; elle tombe d’en haut et remonte en partant */
#toast{position:fixed;inset:auto;left:50%;top:calc(env(safe-area-inset-top) + 8px);bottom:auto;margin:0;transform:translate(-50%,-140%) scale(.9);
  width:max-content;max-width:min(440px,calc(100vw - 24px));min-height:50px;display:flex;align-items:center;gap:.65rem;padding:.45rem .5rem .45rem .45rem;
  border:0;border-radius:26px;background:#0c2830;color:#f1f7f6;box-shadow:0 12px 32px rgba(3,20,26,.3),0 2px 6px rgba(3,20,26,.16);
  opacity:0;pointer-events:none;transition:transform .2s ease-in,opacity .2s ease-in;z-index:90;font-size:.92rem;font-weight:650;line-height:1.25;overflow:visible;touch-action:none;cursor:pointer}
#toast.show{opacity:1;transform:translate(-50%,0) scale(1);pointer-events:auto;transition:transform .45s cubic-bezier(.2,1.3,.35,1),opacity .15s}
#toast .tic{flex:none;display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:#2fae66;color:#fff}
#toast .tic .ic{width:19px;height:19px;stroke-width:2.8}
#toast .tic.win{background:var(--signal);color:var(--signal-ink)}#toast .tic.win .ic{stroke-width:2.2}
#toast .tic.warn{background:#f2a62b;color:#2b1a00}
#toast .tmsg{flex:1;min-width:0;padding:0 .55rem 0 .05rem;text-wrap:pretty}
#toast button{font:inherit;font-weight:750;flex:none;background:rgba(255,255,255,.15);border:0;border-radius:20px;color:#fff;padding:.55rem .95rem;cursor:pointer}
/* le trait fait le tour par l’extérieur, parti d’en bas à gauche ; quand il a fait le tour, la notification s’en va */
#toast .tring{position:absolute;inset:-5px;width:calc(100% + 10px);height:calc(100% + 10px);pointer-events:none;overflow:visible}
#toast .tring path{fill:none;stroke:#2fae66;stroke-width:3;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:1;animation:tring linear forwards}
#toast .tring.win path{stroke:var(--signal)}#toast .tring.warn path{stroke:#f2a62b}
@keyframes tring{to{stroke-dashoffset:0}}
#toast:popover-open{display:flex}
@media (prefers-color-scheme:dark){:root:not([data-theme=light]) #toast{background:#e6f1f0;color:#0c2830;box-shadow:0 12px 32px rgba(0,0,0,.5)}:root:not([data-theme=light]) #toast button{background:rgba(12,40,48,.1);color:#0c2830}}
:root[data-theme=dark] #toast{background:#e6f1f0;color:#0c2830;box-shadow:0 12px 32px rgba(0,0,0,.5)}:root[data-theme=dark] #toast button{background:rgba(12,40,48,.1);color:#0c2830}
@media (prefers-reduced-motion:reduce){#toast,#toast.show{transition:opacity .2s;transform:translate(-50%,0)}}

/* ---------- Ma semaine (accueil) ---------- */
.hello{display:flex;align-items:center;justify-content:space-between;gap:.6rem}.hello h1{margin-bottom:.8rem}
.streak{display:inline-flex;align-items:center;gap:.2rem;background:var(--signal);color:var(--signal-ink);padding:.3rem .75rem .3rem .6rem;border-radius:99px;font-size:1.2rem;line-height:1;white-space:nowrap}
/* Mes phrases de motivation (Paramètres) */
.qrow{display:flex;gap:.4rem;align-items:flex-start;margin:.45rem 0}.qrow textarea{flex:1;min-width:0}
.qideas{display:grid;gap:6px}.qideas button{font:inherit;display:flex;align-items:flex-start;gap:.5rem;text-align:left;padding:.55rem .7rem;border:0;border-radius:12px;background:var(--sunk);color:var(--ink);font-size:.92rem;cursor:pointer}
.qideas .ic{width:18px;height:18px;color:var(--accent);margin-top:1px}
.frame .head{margin-bottom:.6rem}
.card.frame{overflow:hidden}.wdate{overflow:hidden;display:inline-block}.wslide{display:block;will-change:transform}
.wnav{display:flex;align-items:center;gap:.2rem}.wnav span{font-size:.92rem;color:var(--mute);min-width:6.6em;text-align:center;font-weight:700}
.wnav button{font:inherit;width:36px;height:36px;border-radius:50%;border:0;background:var(--sunk);color:var(--ink);cursor:pointer;font-size:1.2rem;line-height:1}
.wnav button:disabled{opacity:.3;cursor:default}
.wnav button{position:relative}.wnav button::after{content:'';position:absolute;inset:-4px;border-radius:50%}   /* cible de 44 px autour du rond de 36 */
/* Le verdict : un grand chiffre (séances qui manquent) et ce qu’il veut dire */
.verdict{display:flex;align-items:center;gap:.8rem;border-radius:var(--r2);padding:.7rem .85rem;margin:0 0 .4rem;background:var(--sunk);font-weight:650;font-size:1rem;line-height:1.25}
.verdict small{display:block;font-weight:500;font-size:.86rem;margin-top:1px}
.verdict .vn{display:grid;place-items:center;min-width:46px;height:46px;padding:0 .3rem;border-radius:12px;background:var(--card);font-size:2rem;line-height:1;flex:none}
.verdict .vn .ic{width:28px;height:28px;stroke-width:2.6}
.verdict.todo .vn{background:var(--ink);color:var(--card)}
.verdict.ok{background:var(--okbg);color:var(--ok)}.verdict.ok small{color:inherit;opacity:.85}.verdict.ok .vn{background:var(--ok);color:#fff}
.verdict.warn{background:var(--warnbg)}
.frame.done{background:linear-gradient(170deg,color-mix(in srgb,var(--ok) 10%,var(--card)),var(--card) 60%)}
.frow{display:flex;align-items:center;justify-content:space-between;gap:.6rem;padding:.5rem 0;border-top:1px solid var(--line)}
.verdict+.frow,.help+.frow{border-top:0}
button.fl{font:inherit;color:inherit;background:none;border:0;padding:0;text-align:left;cursor:pointer;flex:1;min-width:0}
.fl b{display:block;font-size:1rem;font-weight:650}button.fl b{display:flex;align-items:center}button.fl b .cic{vertical-align:baseline}button.fl{align-self:stretch;display:flex;align-items:center}.fl small{font-size:.8rem}.frow.ok .fl small{color:var(--ok)}
.fl small em{font-style:normal;font-weight:700;color:var(--signal-ink);background:var(--signal);padding:0 .3rem;border-radius:4px}
.frow.later .fl{opacity:.7}
.rings{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:10px 12px;padding:5px 7px 5px 0}
.rw{display:flex;flex-direction:column;align-items:center}
/* l’initiale du jour est dans le rond : une ligne de moins, et le rond reste lisible */
.ring .rl{font-style:normal;font-size:.8rem;font-weight:700;font-stretch:80%;line-height:1;color:var(--ink)}
.ring{width:44px;height:44px;border-radius:50%;border:2.5px solid var(--c);background:transparent;display:grid;place-items:center;flex:none;cursor:pointer;font:inherit;font-weight:800;font-size:1.1rem;color:#fff;padding:0;transition:transform .15s,opacity .25s}
.ring:active{transform:scale(.9)}.ring.on{background:var(--c)}
.ring.opt{border-style:dashed;opacity:.85}.ring.miss{opacity:.45;cursor:default}
.ring.fut{border-style:dashed;border-color:color-mix(in srgb,var(--c) 72%,transparent)}.ring.fut .rl{color:var(--mute)}
.ring.late{box-shadow:0 0 0 2px var(--card),0 0 0 4.5px color-mix(in srgb,var(--warn) 70%,transparent)}
.ring.now{box-shadow:0 0 0 3px var(--card),0 0 0 6px var(--signal),0 0 0 7px var(--signal-edge);animation:nowp 2s ease-in-out infinite}
@keyframes nowp{50%{box-shadow:0 0 0 3px var(--card),0 0 0 6px var(--signal),0 0 0 7px var(--signal-edge),0 0 0 11px color-mix(in srgb,var(--signal) 35%,transparent)}}
.ring.sm{width:16px;height:16px;border-width:2px}
/* pas faite (avec une raison) ou jour d’arrêt : excusée, ne bloque pas la semaine */
.ring.skip{border-style:solid;background:repeating-linear-gradient(135deg,color-mix(in srgb,var(--c) 22%,transparent) 0 4px,transparent 4px 8px);color:var(--c);font-size:1.3rem;opacity:.8}
.ring.skip .ic{width:18px;height:18px;stroke-width:2.2}
.ring.pop{animation:pop .6s cubic-bezier(.2,1.6,.4,1);position:relative}
/* séance faite : une onde jaune part du rond */
.ring.pop::after{content:'';position:absolute;inset:-3px;border-radius:50%;border:3px solid var(--signal);animation:ripple .7s .12s ease-out both;pointer-events:none}
@keyframes ripple{from{transform:scale(.8);opacity:1}to{transform:scale(1.9);opacity:0}}
@keyframes pop{0%{transform:scale(.3)}60%{transform:scale(1.25)}100%{transform:scale(1)}}
.bonus{font:inherit;display:flex;align-items:center;gap:.65rem;width:100%;text-align:left;margin-top:.5rem;padding:.55rem .7rem;border:0;border-radius:var(--r2);background:var(--sunk);color:var(--ink);cursor:pointer;font-weight:650;min-height:48px}
.bonus span{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:var(--card);color:var(--accent);font-size:1.2rem;font-weight:700}
.bonus:active{transform:scale(.985)}
/* Bandeaux, échéance, bilan de la semaine passée */
.banners .row{align-items:flex-start}.banners .row>span:first-child{font-size:1.1rem;line-height:1.3}
.banners .dotl{margin-top:.45rem;flex:none}
.banners .bhead{margin:0 0 .15rem}.banners .row+.bhead{margin-top:.5rem;padding-top:.75rem;border-top:1px solid var(--line)}.banners .btns.sp{margin:.45rem 0 0}
.dotl{display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--mute)}.dotl.ok{background:var(--ok)}.dotl.warn{background:var(--warn)}.dotl.bad{background:var(--bad)}
.card.event{display:flex;align-items:center;gap:.9rem;text-decoration:none;color:inherit}
.evn{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:60px;height:60px;border-radius:15px;background:var(--signal);color:var(--signal-ink);flex:none}
.evn b{font-size:1.9rem;line-height:.9}.evn small{color:inherit;font-size:.75rem;font-weight:650}
.evn.sm{min-width:44px;height:44px;border-radius:12px}.evn.sm b{font-size:1.25rem}
.card.recap .head{margin-bottom:.2rem}
.card.recap.win{background:color-mix(in srgb,var(--signal) 30%,var(--card))}
.kpis{display:flex;flex-wrap:wrap;gap:.8rem 1.6rem}.kpis b{display:block;font-size:1.75rem;line-height:1}.kpis span{font-size:.8rem;color:var(--mute)}
.kpis.mini{margin-top:.6rem}.kpis.mini b{font-size:1.5rem}
.ebar{display:flex;height:9px;border-radius:9px;overflow:hidden;margin:.7rem 0 .3rem;gap:2px}.ebar i{display:block}
/* Forme du jour */
.well .wrow{display:flex;align-items:center;justify-content:space-between;gap:.6rem;padding:.4rem 0;border-top:1px solid var(--line)}
.well .wrow:first-of-type{border-top:0}
.wl{flex:1;min-width:0}.wl b{font-weight:650;font-size:.92rem}
.five{display:flex;gap:4px}.five label{position:relative;cursor:pointer}.five input{position:absolute;opacity:0;pointer-events:none}
.five span{display:grid;place-items:center;width:40px;height:40px;border-radius:11px;background:var(--sunk);font-weight:750;font-stretch:80%;font-size:1.05rem}
.five input:checked+span{background:hsl(var(--h) 62% 44%);color:#fff}.five input:focus-visible+span{outline:2.5px solid var(--accent);outline-offset:2px}
.wellmini .head{margin-bottom:0}.wellmini .s{margin:.3rem 0 0;font-size:.86rem}

/* ---------- Saisir une séance ---------- */
.effort{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin:.3rem 0}
.effort button{font:inherit;text-align:left;border:0;background:color-mix(in srgb,var(--c) 13%,var(--card));box-shadow:inset 0 0 0 1.5px color-mix(in srgb,var(--c) 40%,transparent);color:var(--ink);border-radius:var(--r2);padding:.6rem .65rem;cursor:pointer;min-height:66px;display:flex;flex-direction:column;gap:2px}
.effort b{font-size:1rem;font-weight:750}.effort small{font-size:.75rem;line-height:1.22;color:var(--mute)}
/* Enregistrer touché sans ressenti : les 4 choix se signalent */
.effort.need button{animation:need .5s 2}@keyframes need{50%{transform:scale(1.06)}}
.effort button.on{background:var(--c);box-shadow:none;color:#fff}.effort button.on small{color:#fffe}
.effort button{min-height:52px;align-items:center;justify-content:center;text-align:center;padding:.5rem .2rem}.effort b{font-size:.92rem}
.tiles{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:.6rem 0}
.tile{font:inherit;text-align:left;border:0;background:color-mix(in srgb,var(--c) 14%,var(--card));color:var(--ink);border-radius:var(--r2);padding:.65rem .75rem;cursor:pointer;display:flex;flex-direction:column;gap:2px;min-height:80px}
.tile span{font-size:1.35rem}.tile b{font-size:1rem}.tile small{font-size:.75rem;color:var(--mute);line-height:1.2}
.tile.new{background:var(--sunk);box-shadow:none}
.qlh{display:flex;align-items:baseline;flex-wrap:wrap;gap:.35rem;margin-bottom:.5rem}.qlh small{font-weight:500;font-size:.92rem}
.qlh .chip{font-size:.86rem;padding:.25rem .7rem}
.chip.pick{font:inherit;font-size:.86rem;cursor:pointer}
.qltpl{margin-top:0}
.qldate{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;margin:.3rem 0 .4rem}.qldate>span{font-size:.86rem;color:var(--mute);font-weight:600}.qldate .chips{margin:0}
.datechip{position:relative;overflow:hidden}.datechip input{position:absolute;inset:0;opacity:0;width:100%;height:100%;min-height:0;padding:0;border:0;cursor:pointer}
.launch{display:grid;gap:8px;margin:.5rem 0 .2rem}
.lgo{display:grid;grid-template-columns:44px 1fr;align-items:center;column-gap:.85rem;width:100%;min-height:70px;padding:.7rem .9rem;border-radius:var(--r2);border:0;background:var(--sunk);color:var(--ink);font:inherit;text-align:left;cursor:pointer}
.lgo .ic{grid-row:span 2;width:44px;height:44px;padding:10px;border-radius:12px;background:var(--card);color:var(--accent)}
.lgo b{font-size:1.02rem;line-height:1.2}.lgo small{font-size:.8rem;line-height:1.25}
.lgo.primary{background:var(--accent);color:var(--accent-ink)}.lgo.primary .ic{background:color-mix(in srgb,var(--accent-ink) 16%,transparent);color:inherit}.lgo.primary small{color:inherit;opacity:.85}
.lgo:active{transform:scale(.985)}
.painbox{border-radius:var(--r2);padding:.5rem .8rem;margin:.5rem 0;background:var(--sunk)}.painbox h4{margin:.2rem 0}.painbox label{font-size:.86rem;font-weight:600}
.painbox input:not([type=range]){background:var(--card)}
/* Suggestions sous le champ, sur toute sa largeur */
.ac{position:relative;flex:1;min-width:0}
.acl{margin-top:4px;background:var(--card);border-radius:12px;box-shadow:0 0 0 1.5px var(--line),0 10px 24px color-mix(in srgb,#03141a 14%,transparent);overflow:hidden}
.acl:empty{display:none}
.acl button{display:block;width:100%;font:inherit;font-size:.92rem;text-align:left;padding:.65rem .85rem;min-height:44px;border:0;border-top:1px solid var(--line);background:none;color:var(--ink);cursor:pointer}
.acl button:first-child{border-top:0}.acl button:hover,.acl button:focus-visible{background:var(--sunk)}
.acl b{font-weight:750}
.painbox .acl{box-shadow:0 0 0 1.5px var(--line)}
.plvl{display:grid;grid-template-columns:repeat(5,1fr);gap:.4rem;align-items:end;height:84px}
.plvl button{height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:stretch;gap:.2rem;border:0;background:none;padding:0;font:inherit;color:var(--mute);cursor:pointer;min-height:44px}
.plvl i{display:block;height:var(--h);border-radius:8px 8px 4px 4px;background:color-mix(in srgb,var(--c) 22%,transparent);transition:background .15s}
.plvl button.on i{background:var(--c)}.plvl button[aria-checked="true"]{color:var(--ink);font-weight:800}
.plvl span{font-size:.85rem;text-align:center;font-variant-numeric:tabular-nums}
.pevo{margin-top:.7rem}.pevo>small{color:var(--mute);font-size:.8rem}
.pchart{display:block;width:100%;height:auto;overflow:visible}.pchart line{stroke:var(--line);stroke-width:1;vector-effect:non-scaling-stroke}
.pchart polyline{fill:none;stroke:var(--mute);stroke-width:2;vector-effect:non-scaling-stroke;stroke-linejoin:round}
.pchax{display:flex;justify-content:space-between;font-size:.75rem;color:var(--mute)}
.porig{margin:.35rem 0 .5rem}.porig .chip{background:var(--card)}.porig .chip.on{background:var(--ink);color:var(--card)}
.pcurves{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:6px;margin:.35rem 0 .2rem}
.pcurves button{font:inherit;font-size:.8rem;display:flex;align-items:center;gap:.45rem;text-align:left;padding:.4rem .55rem;border-radius:11px;border:0;background:var(--card);color:var(--ink);cursor:pointer;min-height:44px}
.pcurves svg{width:30px;height:24px;flex:none;fill:none;stroke:var(--mute);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.pcurves .on{background:var(--ink);color:var(--card);font-weight:650}.pcurves .on svg{stroke:currentColor}
.pinfo{font-size:.86rem;padding:.5rem .65rem;border-radius:11px;background:var(--card)}.pinfo.warn{background:var(--warnbg);color:var(--ink)}

/* ---------- Séances : journal, modèles, max ---------- */
.week{scroll-margin-top:calc(70px + env(safe-area-inset-top))}
.week h3{margin:1.1rem 0 .45rem;font-size:1rem}.week h3 small{font-weight:500}
/* Séances › Modèles : les miens, puis les proposés, nettement séparés */
.tsec>h3{margin:1.1rem 0 .45rem;font-size:1rem}
.tsec.lib{margin-top:1.8rem;padding-top:1.1rem;border-top:1.5px solid var(--line)}.tsec.lib>h3{margin-top:0;color:var(--mute)}
.tsec.lib .row{padding-left:1rem}
.swipe{position:relative;overflow:hidden;border-top:1px solid var(--line)}.card.flush .swipe:first-child{border-top:0}
.swipe .row{border-top:0}
.swc{position:relative;z-index:1;background:var(--card);transition:transform .22s ease;touch-action:pan-y}
.swd,.swr{position:absolute;top:0;bottom:0;width:0;overflow:hidden;white-space:nowrap;padding:0;border:0;color:#fff;font:inherit;font-weight:700;cursor:pointer;transition:width .22s ease}.swd{right:0;background:var(--bad)}.swr{left:0;background:var(--accent);color:var(--accent-ink)}
.swcard .swd,.swcard .swr{border-radius:var(--radius)}
.swcard{border-top:0;border-radius:var(--radius);margin:0 0 .6rem}.swcard .swc{background:none}.swcard .card{margin:0}.swcard>.swc>.card{border-radius:var(--radius)}
.edot{width:12px;height:12px;border-radius:50%;flex:none}
.tdot{display:inline-block;width:12px;height:12px;border-radius:50%;background:var(--c);flex:none}
.card.tpl .head b::before{content:"";display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--c);margin-right:.5rem;vertical-align:.06em}
.card.tpl .head{flex-wrap:nowrap;align-items:flex-start}.card.tpl .head>div{min-width:0}.card.tpl .s{margin-top:2px}.card.tpl .btns{margin-bottom:0}.card.tpl .btns{margin-top:.6rem}
.maxrow,.trow{font:inherit;color:inherit;width:100%;background:none;border:0;border-top:1px solid var(--line);text-align:left;cursor:pointer}
.card.flush .maxrow:first-child,.trow:first-of-type{border-top:0}.maxrow .kg{font-size:1.6rem}
/* programme lisible */
.workout{margin:.3rem 0}.wblock{border-radius:var(--r2);padding:.6rem .75rem;margin:.45rem 0;background:var(--sunk)}
.wbh{display:flex;justify-content:space-between;gap:.5rem;align-items:baseline;flex-wrap:wrap;margin-bottom:.2rem}
.wlist{list-style:none;margin:0;padding:0}.wlist li{display:flex;gap:.5rem;align-items:baseline;padding:.22rem 0}
.wlist li.ss{display:block;border-left:3px solid var(--accent);padding:.1rem 0 .1rem .55rem;margin:.25rem 0}.wlist li.ss ul{list-style:none;margin:0;padding:0}
.wlist li.ss small{color:var(--accent);font-weight:700;font-size:.75rem}
.wn{flex:none;min-width:1.9em;font-weight:800;font-stretch:75%;font-size:.86rem;color:var(--accent)}
.dose{color:var(--mute);font-size:.86rem}
.wrest{font-size:.8rem;color:var(--mute);margin-top:.25rem}
.wpause,.wrepeat{text-align:center;font-size:.8rem;color:var(--mute);margin:.25rem 0}.wrepeat{font-weight:700;color:var(--ink)}
.wmus{display:flex;flex-wrap:wrap;gap:4px;margin-top:.5rem}.wmus .chip b{color:var(--accent)}
.workout.compact .wblock{padding:.45rem .65rem}.workout.compact .wrest{display:none}
/* éditeur de programme */
.teb{border-radius:var(--r2);padding:.6rem .7rem .3rem;margin:.7rem 0;background:var(--sunk)}
/* éditeur épuré : le nom en titre, le reste en retrait */
.te .tename{display:block;min-height:0;width:100%;border:0!important;background:none!important;box-shadow:none!important;padding:.1rem 0;font:inherit;font-size:1.55rem;font-weight:800;font-stretch:72%;color:var(--ink)}
.tename::placeholder{color:var(--mute);opacity:.6}
.temeta{display:flex;flex-wrap:wrap;gap:.4rem;margin:.3rem 0 .2rem}
.temeta label{max-width:100%;min-width:0;display:flex;align-items:center;gap:.35rem;font-size:.8rem;color:var(--mute);font-weight:600}
.temeta select{min-width:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;min-height:36px;padding:.25rem 1.6rem .25rem .6rem;font-size:.86rem;border-radius:99px}
.te .tegoal{min-height:0;width:100%;border:0!important;background:none!important;box-shadow:none!important;padding:.35rem 0;font-size:.92rem;color:var(--ink)}
.tebh{display:flex;align-items:center;gap:.5rem}
.tebl{display:grid;place-items:center;width:26px;height:26px;border-radius:8px;background:var(--ink);color:var(--card);font-size:.86rem;font-weight:800;flex:none}
.te .tebh input{min-height:0;flex:1;min-width:0;border:0!important;background:none!important;box-shadow:none!important;padding:.2rem 0;font:inherit;font-weight:700;font-size:1rem;color:var(--ink)}
.tebs{display:flex;align-items:center;gap:.4rem;width:100%;text-align:left;font:inherit;font-size:.8rem;color:var(--mute);background:none;border:0;padding:.15rem 0 .35rem;cursor:pointer}
.tebs span{flex:1;min-width:0}.tebs svg{width:15px;height:15px;flex:none;opacity:.7}.tebs.on{color:var(--ink)}
.teset{background:var(--card);border-radius:12px;padding:.2rem .6rem .5rem;margin:.1rem 0 .5rem}.teset .seg2{background:var(--sunk)}.te .teset .tegrid select{background:var(--sunk)}.teset .tegrid{align-items:end}
.teis{display:flex;flex-direction:column;gap:4px;margin:.2rem 0}
.teil{display:flex;align-items:center;gap:.55rem;width:100%;text-align:left;font:inherit;background:none;border:0;color:var(--ink);padding:.15rem 0;min-height:44px;cursor:pointer}
.teil .grow{min-width:0}.teil b{display:block;font-weight:650;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.teil small{display:block;font-size:.8rem;color:var(--mute)}
.teact .danger{color:var(--bad)}.teact{display:flex;align-items:center;gap:.2rem;margin-top:.3rem}.teact .btn.sm{min-width:40px}
.terep{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;font-size:.86rem;color:var(--mute);font-weight:600;margin:.3rem 0}.terep select{min-height:36px;padding:.25rem 1.6rem .25rem .6rem;font-size:.86rem}
.telinks{display:flex;flex-wrap:wrap;gap:.2rem 1rem;margin:.6rem 0 .2rem}
.teir input,.teir select{height:42px;box-sizing:border-box}.te .tedose .teir :is(input,select),.te .tei .teir :is(input,select){background:var(--sunk)}
.tedose small{display:block;font-size:.75rem;font-weight:600;color:var(--mute)}
.teb>.head input{flex:1;min-width:0;min-height:38px;padding:.3rem .55rem;background:var(--card)}
.teb .seg2{background:var(--card)}.teb .seg2 .on{background:var(--ink);color:var(--card)}
.tegrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:.45rem .6rem;margin:.4rem 0 .6rem}
.tegrid label,.ni{display:flex;flex-direction:column;gap:3px;font-size:.75rem;font-weight:600;color:var(--mute)}.tegrid select{width:100%;background:var(--card);min-height:42px}
.tegrid .teact{grid-column:1/-1;margin-top:-.15rem;align-items:stretch;text-align:left}.te .teset .tegrid .teact input{width:100%;min-height:44px;padding:.4rem .75rem;border-radius:10px;background:var(--sunk);font-size:1rem;color:var(--ink)}
.ni.inline{flex-direction:row;align-items:center;gap:.4rem;font-size:.86rem}.ni.inline input{width:80px;min-height:40px}
.tei{background:var(--card);border-radius:12px;padding:.2rem .65rem}.tei.open{padding-bottom:.5rem}
.tei.linked{border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-bottom:2px dashed var(--accent)}
.tei.linked+.tei{margin-top:0;border-top-left-radius:4px;border-top-right-radius:4px}
.teih{display:flex;align-items:center;gap:.25rem}.ten{flex:1;min-width:0;text-align:left;font:inherit;font-weight:650;background:none;border:0;color:var(--ink);padding:.3rem 0;cursor:pointer}.ten small{display:block;font-weight:400;font-size:.75rem}
.teih .btn.sm{min-width:36px;padding:.2rem .4rem}
.tei .seg2{background:var(--sunk)}
.teir{display:grid;grid-template-columns:repeat(auto-fit,minmax(64px,1fr));gap:.4rem;align-items:end;margin-top:.35rem}.teir input,.teir select{width:100%;min-height:42px;padding:.4rem .45rem}
.tei .chk{font-size:.86rem;margin-top:.45rem}
/* même dose pour tout le bloc : remplie une fois, au-dessus des exercices (qui n’affichent plus que leur nom) */
.tesame{font-size:.92rem;font-weight:650;padding:.2rem 0}
.tedose{background:var(--card);border-radius:12px;padding:.55rem .65rem;margin:.35rem 0 .7rem}.tedose .seg2{background:var(--sunk)}
/* durée de la séance : centrée sous les notes, sur le fond de la feuille ; − / + par 5 min, ou on tape le chiffre */
.tesum{display:flex;flex-direction:column;align-items:center;gap:.4rem;margin:1rem 0 .2rem;text-align:center}
.tesum #tesum:empty{display:none}
#tesum .btn{display:block;margin:.3rem auto 0}
/* exercices au choix : combien, sans les détailler */
.tecount{display:flex;align-items:center;justify-content:space-between;gap:.5rem;font-size:.92rem;font-weight:600;margin:.35rem 0 .6rem}.tecount .tedv{min-width:48px}.tecount .tedv b{font-size:1.4rem;font-weight:800;font-stretch:70%;font-variant-numeric:tabular-nums}.tecount .stepper button{background:var(--card)}.tei .tecount .stepper button{background:var(--sunk)}
.tedur{display:flex;align-items:center;gap:.7rem}.tedur>label{font-size:.92rem;font-weight:650;color:var(--mute)}
.tedur .stepper button{background:var(--card)}
.tedv{display:flex;align-items:baseline;justify-content:center;gap:.2rem;min-width:76px}
.tedv #tedur{width:2.6ch;min-height:36px;padding:0;border:0;border-radius:0;background:none!important;text-align:center;font:inherit;font-size:1.9rem;font-weight:800;font-stretch:70%;font-variant-numeric:tabular-nums;color:var(--ink);-moz-appearance:textfield}
.tedv input:focus{box-shadow:0 2px 0 var(--accent)}
.tedv input::-webkit-inner-spin-button,.tedv input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
.tedv small{font-size:.86rem;font-weight:600;color:var(--mute)}
.exsearch{width:100%;margin:.3rem 0}.exlist{display:grid;gap:6px;margin:.5rem 0 1rem;grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}
.exo{font:inherit;text-align:left;border:0;background:var(--sunk);color:var(--ink);border-radius:12px;padding:.6rem .75rem;cursor:pointer;display:flex;flex-direction:column;gap:1px}.exo b{font-weight:650}.exo small{font-size:.75rem}
/* préparer mes poids : la charge est le chiffre qu’on cherche des yeux */
.prep{list-style:none;margin:.2rem 0;padding:0;display:grid;gap:6px;width:100%}
.pr{display:grid;grid-template-columns:42px minmax(0,1fr) auto;align-items:center;column-gap:.75rem;width:100%;padding:.6rem .85rem .6rem .6rem;border-radius:var(--r2);border:0;background:var(--sunk);color:var(--ink);font:inherit;text-align:left}
.pr .prn{display:block;min-width:0;padding:0;border:0;background:none;color:inherit;font:inherit;font-size:.92rem;font-weight:650;line-height:1.25;text-align:left}.pr .prn small{display:block;font-size:.8rem;font-weight:700;color:var(--accent);margin-top:2px}
/* la charge mise : un petit champ, la charge conseillée en gris tant qu’il est vide */
.kgin{display:flex;align-items:baseline;gap:3px}.kgin input{width:4.6rem;min-height:44px;padding:.3rem .4rem;text-align:right;font-size:1.35rem;font-weight:800;font-stretch:68%;font-variant-numeric:tabular-nums;background:var(--sunk);border-radius:10px}
.kgin input::placeholder{color:var(--mute);opacity:.8}.kgin small{font-size:.8rem;font-weight:650;color:var(--mute)}
.eq{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;background:var(--card);color:var(--accent);flex:none}
.kg{font-size:2rem;line-height:.9;white-space:nowrap;letter-spacing:-.01em}.kg small{display:inline;font-size:.8rem;font-weight:650;font-stretch:100%;margin-left:2px;letter-spacing:0;color:var(--mute)}
.prephelp{margin:.5rem 0 0;font-size:.8rem}

/* ---------- Objectifs ---------- */
.wgrid{margin:.1rem 0 .3rem}
.wtr{display:grid;grid-template-columns:minmax(0,1fr) repeat(7,22px) 12px;column-gap:3px;row-gap:1px;align-items:center;width:100%;padding:.65rem 0;border:0;border-top:1px solid var(--line);background:none;color:inherit;font:inherit;text-align:left}
button.wtr{cursor:pointer}button.wtr:hover .chev{color:var(--accent)}
.wth{padding:0 0 .3rem;border-top:0}.wth small{text-align:center;font-size:.75rem;font-weight:700;letter-spacing:-.02em}
.wth+.wtr{border-top:0}
.wtn{min-width:0;padding-right:.3rem;font-size:1rem;font-weight:650;font-stretch:88%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.wti{grid-column:1/-1;font-size:.8rem;line-height:1.25}
.wtr i{justify-self:center;width:6px;height:6px;border-radius:50%;background:var(--line)}
.wtr i.on{width:20px;height:20px;background:var(--c)}.wtr i.on.opt{background:transparent;border:2px dashed var(--c)}
.chev{color:var(--mute);font-size:1.3rem;line-height:1;text-align:right}
/* catégorie libre : hachure arrondie sur les 7 jours, « libre » dans un cartouche qui l’interrompt */
.wfree{grid-column:2/span 7;border:0;padding:0;font:inherit;background:none;position:relative;display:grid;place-items:center;height:22px}
.wfree .hatch{position:absolute;inset:0;width:100%;height:100%;fill:none;stroke:color-mix(in srgb,var(--c) 50%,transparent);stroke-width:2.4;stroke-linecap:round}
.wfree em{position:relative;font-style:normal;font-size:.75rem;font-weight:700;line-height:1;padding:.22rem .6rem;border-radius:99px;color:var(--ink);background:var(--pbg,var(--card));
  min-width:64px;text-align:center;box-shadow:inset 0 0 0 1.5px color-mix(in srgb,var(--c) 55%,transparent)}
.wfree em b{font-weight:800;font-stretch:75%;color:var(--c)}
.wov .wfree{--pbg:var(--sunk)}
.wov{margin:.5rem 0;padding:.5rem .75rem .2rem;border-radius:var(--r2);background:var(--sunk)}.wov .head{margin:0}
.goalrow{padding:.8rem 0;border-top:1px solid var(--line)}.help+.goalrow,.head+.goalrow{border-top:0}.goalrow .head{margin-bottom:0;flex-wrap:nowrap;align-items:flex-start}.goalrow .head b{font-weight:650}
.gnum{margin-top:.25rem}.gnum b{font-size:1.6rem}
.bar{height:8px;background:var(--sunk);border-radius:9px;overflow:hidden;margin:.45rem 0 .25rem}.bar i{display:block;height:100%;background:var(--accent);border-radius:9px}
.fcast{margin-top:.5rem;padding:.5rem .65rem;border-radius:11px;background:var(--sunk);font-size:.86rem;font-weight:600}
.fcast small{display:block;font-weight:400;margin-top:.1rem}.fcast.ok{background:var(--okbg);color:var(--ok)}.fcast.warn{background:var(--warnbg);color:var(--ink)}
.season .bar{margin:.6rem 0 .25rem}.season h4{margin:1rem 0 .2rem}

/* ---------- Bilan ---------- */
.period{margin-bottom:.2rem}.period+.help{margin-top:0}
.hero{display:grid;grid-template-columns:auto 1fr;align-items:center;column-gap:1rem}.hero .big{font-size:3.4rem;line-height:.9;white-space:nowrap;display:flex;align-items:baseline;gap:.15rem}
.hero .big small{font-size:1.6rem}
.hero>b{font-weight:650;line-height:1.25}.hero .kpis.mini{grid-column:1/-1;margin-top:.9rem;padding-top:.8rem;border-top:1px solid var(--line);justify-content:space-between}
.heat{display:grid;grid-template-rows:repeat(7,1fr);grid-auto-flow:column;grid-auto-columns:1fr;gap:3px;margin:.4rem 0}
.heat i{aspect-ratio:1.6;max-height:26px;border-radius:3px;background:var(--sunk)}   /* toute la largeur, sans devenir une tour */.heat i.fut{background:transparent;outline:1px dashed var(--line)}.heat i.out{background:transparent}
.heatbox{display:grid;grid-template-columns:auto 1fr;column-gap:6px}
.heatd{display:grid;grid-template-rows:repeat(7,1fr);gap:3px;margin:.4rem 0}.heatd small{display:grid;place-items:center;font-size:.75rem;font-weight:700;color:var(--mute);line-height:1}
.heatlb{display:grid;grid-auto-columns:1fr;gap:3px;margin:-.15rem 0 .5rem}.heatlb small{font-size:.75rem;color:var(--mute);white-space:nowrap;overflow:visible;font-variant-numeric:tabular-nums}
.heatwk{display:grid;grid-auto-columns:1fr;gap:3px;margin:-.1rem 0 .4rem}.heatwk i{height:5px;border-radius:3px}
.heatwk i.ok,.legend i.wkok-i{background:var(--ok)}.heatwk i.pz,.legend i.wkpz-i{background:repeating-linear-gradient(135deg,var(--mute) 0 2px,transparent 2px 4px)}
.legend{display:flex;flex-wrap:wrap;gap:.25rem 1rem;font-size:.8rem;color:var(--mute);margin-top:.35rem}.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:.35rem}
.legend i.wkok-i,.legend i.wkpz-i{height:5px;width:14px;vertical-align:middle}
.chart{width:100%;height:auto;display:block}.chart .grid{stroke:var(--line);stroke-width:1}.chart .ax{fill:var(--mute);font-size:12px;font-family:var(--font)}
@media(max-width:600px){.chart .ax{font-size:12px}}
.hb{display:grid;grid-template-columns:120px 1fr 56px;align-items:center;gap:.6rem;margin:.45rem 0;font-size:.92rem}.hbt{background:var(--sunk);border-radius:6px;padding:2px}.hbf{height:10px;border-radius:5px}.hb b{text-align:right;white-space:nowrap}
@media(max-width:600px){.hb{grid-template-columns:105px 1fr 58px;font-size:.86rem}}
.tiers{display:grid;gap:.1rem}
.tgot{margin:0 0 .2rem;text-align:right}
.tier{display:flex;align-items:center;gap:.8rem;padding:.6rem 0;border-top:1px solid var(--line)}.tier:first-child{border-top:0}
.tier .ti{position:relative;font-size:1.45rem;width:44px;height:44px;border-radius:13px;display:grid;place-items:center;background:var(--sunk);flex:none;filter:grayscale(1);opacity:.55}
.tier.got .ti{filter:none;opacity:1;background:var(--soft);color:var(--accent)}
.tier .ti b{position:absolute;right:-5px;bottom:-5px;font-size:.75rem;min-width:20px;height:20px;padding:0 4px;border-radius:10px;background:var(--ink);color:var(--card);display:grid;place-items:center;font-stretch:80%}
.tier .t small{font-weight:400}.tier .bar{margin:.3rem 0 .15rem;height:6px}.tier .bar i{background:var(--accent)}.tier>.grow>small{font-size:.75rem}
.row.note{align-items:flex-start}.row.note .t{white-space:pre-line;font-weight:400;margin-top:.1rem}
.review{padding:.75rem 0;border-top:1px solid var(--line)}.review:first-of-type{border-top:0}.review .head{margin-bottom:.2rem}
.review p{margin:.25rem 0}.review p small{display:block;font-size:.8rem;font-weight:600}
.stars{color:var(--warn);letter-spacing:1px}
.report{background:#fff;color:#111;padding:1.2rem;border-radius:14px}.report table{font-size:.86rem}
.tbl{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:.86rem}th{font-size:.8rem;color:var(--mute);text-align:left}th,td{padding:.45rem .6rem;border-top:1px solid var(--line);vertical-align:middle}thead th{border-top:0}

/* ---------- Démarrage ---------- */
.onboard{padding:1.4rem 1.2rem;max-width:620px;margin-inline:auto}
.onboard h1{font-size:2.1rem}.onboard h2{font-size:1.6rem;margin:.2rem 0 .4rem}
.obdots{display:flex;gap:6px;margin-bottom:1.2rem}.obdots i{flex:1;height:4px;border-radius:4px;background:var(--sunk)}.obdots i.on{background:var(--accent)}
.obwhy{list-style:none;margin:.2rem 0 1.1rem;padding:0;display:grid;gap:.55rem}.obwhy li{display:flex;align-items:center;gap:.7rem;font-size:1.05rem}.obwhy .ic{flex:none;width:34px;height:34px;padding:7px;border-radius:11px;background:var(--soft);color:var(--accent)}
.obweek{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;margin:.8rem 0 .5rem}.obweek div{display:flex;flex-direction:column;align-items:center;gap:5px;padding:.45rem 0;border-radius:var(--r2);background:var(--sunk);min-height:96px}.obweek small{color:var(--mute);font-weight:700}
.obweek span{display:flex;flex-direction:column;gap:4px;align-items:center}.obweek i{width:26px;height:26px;border-radius:50%;background:var(--c);color:#fff;display:grid;place-items:center}.obweek i .ic{width:15px;height:15px}
.obsum{text-align:center;color:var(--mute);margin:.2rem 0 1rem}.obsum b{color:var(--ink);font-size:1.3em;font-stretch:68%;font-weight:800}
.obrem{display:flex;align-items:center;gap:.7rem;width:100%;min-height:48px;padding:.6rem .85rem;margin-bottom:.9rem;border:0;border-radius:var(--r2);background:var(--sunk);color:var(--ink);font:inherit;text-align:left}.obrem .ic{flex:none;width:22px;height:22px}.obrem span{flex:1}
.obrem i{flex:none;width:44px;height:26px;border-radius:13px;background:var(--line);position:relative;transition:background .2s}.obrem i::after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;transition:transform .2s}.obrem.on i{background:var(--accent)}.obrem.on i::after{transform:translateX(18px)}
.helpl{list-style:none;margin:.4rem 0 0;padding:0}.helpl li{padding:.55rem 0;border-top:1px solid var(--line);font-size:1rem}.helpl li:first-child{border-top:0}
.obhero{width:56px;height:56px;border-radius:16px;background:var(--soft);color:var(--accent);display:grid;place-items:center;margin-bottom:.8rem}.obhero svg{width:30px;height:30px}
.obalt{margin-top:1rem;display:flex;flex-wrap:wrap;justify-content:center;gap:.4rem}
.fck{width:24px;height:24px;border-radius:50%;border:2px solid var(--line);display:grid;place-items:center;flex:none}.fck.on{background:var(--accent);border-color:var(--accent);color:#fff}.fck svg{width:15px;height:15px}
.obcats .chip{background:color-mix(in srgb,var(--c) 15%,var(--sunk));transition:background .2s,color .2s}
.obrow .head b{display:flex;align-items:center;gap:.45rem}.obrow{padding:.6rem .75rem;margin:.55rem 0;border-radius:var(--r2);background:var(--sunk)}.obrow .head{margin:0}
.obn{font-size:.92rem;color:var(--mute);padding:.15rem .55rem;border-radius:99px;background:var(--card)}.obn.on{color:#fff;background:var(--c)}
.obdays{display:grid;grid-template-columns:repeat(7,minmax(0,40px));justify-content:space-between;gap:4px;margin-top:.55rem}
.obdays button{font:inherit;font-size:.86rem;font-weight:650;width:100%;aspect-ratio:1;max-width:40px;border-radius:50%;border:0;background:var(--card);color:var(--ink);cursor:pointer;padding:0;transition:background .15s,transform .15s}
.obdays button.on{background:var(--c);color:#fff}.obdays button:active{transform:scale(.88)}
.ob-nav{justify-content:flex-end;margin-top:1.2rem}.ob-nav .btn.primary{min-width:150px}

/* ---------- Mode guidé (plein écran) ---------- */
#guide{position:fixed;inset:0;z-index:60;background:var(--bg);color:var(--ink);display:flex;flex-direction:column;padding:calc(env(safe-area-inset-top) + .6rem) max(16px,env(safe-area-inset-right)) calc(env(safe-area-inset-bottom) + 1rem) max(16px,env(safe-area-inset-left))}
html.guiding body{overflow:hidden}
.gtop{display:flex;justify-content:space-between;align-items:flex-start;gap:.6rem;font-size:.86rem;font-weight:600;color:var(--ink)}
.gx{font:inherit;font-size:1.15rem;width:44px;height:44px;display:grid;place-items:center;padding:0;border-radius:50%;border:0;background:var(--card);color:var(--ink);cursor:pointer}.gx .ic{width:22px;height:22px;stroke-width:2.2}
.gprog{height:6px;background:color-mix(in srgb,var(--ink) 16%,transparent);border-radius:3px;overflow:hidden;margin:.45rem 0}.gprog i{display:block;height:100%;background:var(--accent)}
.gmain{flex:1;min-height:0;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;gap:.4rem;max-width:560px;margin:0 auto;width:100%}
/* bandeau fixe en haut : bloc, exercice, tour — visible aussi pendant les récups */
.gband{display:flex;flex-wrap:wrap;align-items:center;gap:.3rem .45rem;min-width:0;min-height:44px}.gband span,.gband em{font-size:.95rem;font-weight:750;font-style:normal;font-variant-numeric:tabular-nums;padding:.25rem .55rem;border-radius:999px;background:color-mix(in srgb,var(--ink) 12%,transparent);white-space:nowrap}
.gband em{background:none;padding-left:0;color:color-mix(in srgb,var(--ink) 78%,transparent);font-weight:650;max-width:10rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gbl{display:grid;place-items:center;min-width:36px;height:36px;padding:0 .7rem;white-space:nowrap;border-radius:10px;background:var(--ink);color:var(--bg);font-size:1.15rem;font-weight:800}
.gmore{font:inherit;font-weight:700;min-height:44px;padding:0 1.2rem;border-radius:999px;border:0;background:var(--card);color:var(--ink);margin-top:.4rem;cursor:pointer}
.gmain.rest.active h2{font-size:2rem;line-height:1.05}.gmain.rest.active>small{color:var(--ok);font-weight:800;text-transform:uppercase;letter-spacing:.04em}
.gact{display:inline-block;margin-left:.4rem;padding:.05rem .45rem;border-radius:999px;background:color-mix(in srgb,var(--ok) 22%,transparent);color:var(--ink);font-size:.78rem;font-weight:700}
/* exercices enchaînés sans récup : la liste, les répétitions en face */
.gmain.list{justify-content:flex-start;overflow-y:auto;padding-top:.6rem}
.glist{list-style:none;margin:0;padding:0;width:100%;display:grid;gap:6px;text-align:left}
.glist li{display:flex;align-items:center;justify-content:space-between;gap:.8rem;padding:.65rem .9rem;border-radius:var(--r2);background:var(--card)}
.glist span{font-size:1.2rem;font-weight:750;line-height:1.15;min-width:0}.glist span small{display:block;font-size:.78rem;font-weight:600;color:var(--mute)}
.glist b{font-size:2.2rem;font-stretch:62%;font-weight:800;line-height:1;white-space:nowrap;font-variant-numeric:tabular-nums}.glist b small{font-size:.8rem;font-stretch:100%;font-weight:650;color:var(--mute);margin-left:2px}
/* le mot compris par la reconnaissance vocale */
.vword{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.2rem .6rem;margin:.5rem 0 0;padding:.45rem .7rem;border-radius:10px;background:var(--sunk);font-size:.86rem;text-align:left}
.vword span{display:flex;align-items:center;gap:.3rem;font-weight:650;color:var(--mute)}.vword span .ic{width:16px;height:16px}.vword b{font-weight:750;overflow-wrap:anywhere}
.vword.ok{background:color-mix(in srgb,var(--ok) 30%,var(--sunk))}.vword.ok span{color:var(--ink)}.vword.low{background:color-mix(in srgb,var(--signal) 30%,var(--sunk))}.vword.low span{color:var(--ink)}
.gmain h2{font-size:2.2rem;margin:.1rem 0}.gmain>small{font-weight:650;font-size:.92rem;color:color-mix(in srgb,var(--ink) 78%,transparent)}
/* la couleur de fond dit où on en est : effort (jaune) ou récupération (vert) */
#guide:has(.gmain.rest){background:radial-gradient(120% 70% at 50% 40%,color-mix(in srgb,var(--ok) 16%,var(--bg)),var(--bg))}
#guide:has(.gmain.work){background:radial-gradient(120% 70% at 50% 40%,color-mix(in srgb,var(--signal) 15%,var(--bg)),var(--bg))}
.gtime{font-size:min(36vw,10rem);font-stretch:62%;line-height:.9;letter-spacing:-.02em}
.greps{font-size:min(38vw,10.5rem);font-stretch:62%;line-height:.9;display:flex;flex-direction:column;align-items:center}.greps small{font-size:1rem;font-weight:650;font-stretch:100%;color:color-mix(in srgb,var(--ink) 78%,transparent);letter-spacing:0}
.gload{font-size:2.6rem;font-weight:800;font-stretch:72%;color:var(--ink);margin:0;font-variant-numeric:tabular-nums}
.gtrack{width:min(420px,90%);height:8px;border-radius:5px;background:var(--sunk);overflow:hidden}.gtrack i{display:block;height:100%;width:0;background:var(--accent);transition:width .1s linear}
.gnext{color:var(--mute)}.gemom{display:flex;align-items:baseline;gap:.5rem;color:var(--mute)}.gemom b{font-size:2.4rem;font-stretch:62%;font-weight:800;line-height:1;color:var(--ink);font-variant-numeric:tabular-nums}.gnext b{color:var(--ink)}.gbig{font-size:3rem;line-height:1}
.gmain .effort{width:100%}
.gmain.ready{justify-content:flex-start;align-items:stretch;text-align:left;overflow-y:auto;padding:.2rem 2px 1rem;gap:.2rem;scrollbar-width:thin}
.gmain.ready h2{font-size:2.1rem;line-height:1.02}.gmain.ready>.s{margin:0 0 .4rem;font-size:.92rem}.gmain.ready .gbig{font-size:2.6rem;margin-top:.4rem}
.gmain.ready h4{margin:1rem 0 .4rem}.gmain.ready .field{margin:.55rem 0}.gmain.ready .pr{background:var(--card)}.gmain.ready .eq{background:var(--sunk)}
.gmain.ready textarea{background:var(--card)}
.gvoice{margin:1rem 0 0;padding:.55rem .85rem;border-radius:var(--r2);background:var(--card)}
/* voix : le mot ou un son fort, et la jauge pour essayer le niveau de déclenchement */
.vword{margin-top:.5rem}
.vhint{display:flex;align-items:center;gap:.4rem;margin:.55rem 0 .2rem;font-weight:650;color:var(--mute)}.vhint .ic{width:18px;height:18px;color:var(--accent)}.vhint{flex-wrap:wrap}.vhint small{flex-basis:100%;font-weight:500;font-size:.8rem;padding-left:calc(18px + .4rem)}
/* son fort : la jauge du micro, et le trait du niveau qui déclenche, qu’on fait glisser au doigt */
.vtune{margin:.7rem 0 .2rem}
.vbar{position:relative;height:38px;border-radius:10px;background:var(--sunk);transition:background .2s;touch-action:none}
.vbar i{position:absolute;left:0;top:0;bottom:0;width:0;border-radius:10px 0 0 10px;background:color-mix(in srgb,var(--accent) 35%,transparent);transition:width .06s linear}
.vbar b{position:absolute;top:-4px;bottom:-4px;left:var(--v);width:6px;margin-left:-3px;border-radius:3px;background:var(--ink);box-shadow:0 0 0 3px var(--card);pointer-events:none}
.vbar input[type=range]{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:ew-resize}
.vbar.hit{background:color-mix(in srgb,var(--ok) 35%,var(--sunk))}
.vlbl{display:block;position:relative;left:clamp(0px,calc(var(--v) - 3.2rem),calc(100% - 6.4rem));width:6.4rem;text-align:center;margin-top:.3rem;font-size:.8rem;color:var(--mute)}
.vtune.wig .vbar b,.vtune.wig .vlbl{animation:vwig 1.4s ease-in-out .3s}
@keyframes vwig{0%,100%{transform:none}25%{transform:translateX(14px)}55%{transform:translateX(-10px)}80%{transform:translateX(5px)}}
@media(prefers-reduced-motion:reduce){.vtune.wig .vbar b,.vtune.wig .vlbl{animation:none}}
.vonly{margin-top:.5rem}
.gfoot{display:flex;gap:.5rem;justify-content:center;align-items:center;flex-wrap:nowrap;flex:none;padding-top:.5rem}.gfoot .btn{min-height:54px;background:var(--card)}
.gfoot .btn .ic{width:22px;height:22px;stroke-width:2.1;margin-right:.35rem}.gfoot .btn[aria-label] .ic{margin:0}.gfoot .btn[aria-label]{min-width:54px;padding:0}
.gfoot .btn:disabled{opacity:.5}.gfoot .btn.primary{background:var(--accent)}.gfoot .btn.danger{background:var(--bad);color:#fff}
.btn.big{font-size:1.15rem;padding:.8rem 1.6rem;min-height:60px;flex:1;max-width:520px;border-radius:16px}
.gstop{font-size:1.8rem!important;font-stretch:75%;font-weight:800;min-height:120px!important;max-width:none!important;background:var(--bad)!important;color:#fff!important;border-radius:22px!important}
.gres{display:flex;flex-direction:column;gap:.35rem;font-weight:650}.gres input{font-size:2.4rem;font-weight:800;font-stretch:70%;text-align:center;width:220px;margin:0 auto;background:var(--card)}
.dots{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;max-width:320px}.dots i{width:16px;height:16px;border-radius:50%;background:var(--sunk)}.dots i.ok{background:var(--ok)}.dots i.ko{background:var(--bad)}
.vmeter{display:flex;flex-direction:column;align-items:center;gap:.4rem}.vmeter i{display:block;height:6px;width:0;max-width:220px;border-radius:6px;background:currentColor;transition:width .05s}
.confetti{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:80}

/* ---------- Application native, impression, mouvement réduit ---------- */
html.native{-webkit-tap-highlight-color:transparent}
html.native body{overscroll-behavior-y:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
html.native input,html.native textarea,html.native p,html.native td{-webkit-user-select:text;user-select:text}
html.native select,html.native input,html.native textarea{font-size:16px}
html.native .btn:hover{background:var(--sunk)}html.native .btn.primary:hover{background:var(--accent)}html.native .btn.ghost:hover{background:transparent}
html.native .row.act:hover{background:none}
html.native dialog{max-height:calc(100vh - env(safe-area-inset-top) - 20px)}
html.native .mfoot{padding-bottom:max(.3rem,calc(env(safe-area-inset-bottom) - 18px))}html.kb .mfoot{padding-bottom:.3rem}
@media print{#top,#side,#tabbar,.noprint,#offline,#toast{display:none!important}body{background:#fff}main{padding:0}.report{padding:0}.card{break-inside:avoid}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* ---------- Icônes de catégorie (remplacent les emojis) ---------- */
.cic{display:inline-grid;place-items:center;width:1.6em;height:1.6em;margin-right:.45em;border-radius:.5em;background:color-mix(in srgb,var(--c,var(--mute)) 15%,transparent);color:var(--c,var(--mute));vertical-align:-.42em;flex:none}
.cic .ic{width:1.05em;height:1.05em;stroke-width:2}
/* en sombre, la couleur de catégorie seule manque de relief : icône éclaircie, fond plus marqué */
@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .cic{background:color-mix(in srgb,var(--c,var(--mute)) 28%,transparent);color:color-mix(in srgb,var(--c,var(--mute)) 60%,#fff)}}
:root[data-theme=dark] .cic{background:color-mix(in srgb,var(--c,var(--mute)) 28%,transparent);color:color-mix(in srgb,var(--c,var(--mute)) 60%,#fff)}
.chip .ic{width:1.1em;height:1.1em;margin-right:.1em}
.chips .chip.on .ic,.tchip .ic{color:inherit}
.tile .cic{width:34px;height:34px;margin:0 0 .15rem;border-radius:10px;font-size:1rem}.tile .cic .ic{width:20px;height:20px}
.streak .ic{width:1em;height:1em;stroke-width:2.2}
.hero .big small .ic,.evn b .ic{width:1em;height:1em}
.gbig .ic{width:1em;height:1em;stroke-width:2.4;color:var(--ok)}
.tier .ti .ic{width:24px;height:24px}
.vmeter .ic{width:1.1em;height:1.1em;vertical-align:-.2em;margin-right:.3em}
.mfoot .btn .ic{width:18px;height:18px;margin-right:.3rem}
.mfoot .grow{flex:1}

/* Lien d’ajout, aligné à gauche comme les titres */
.addln{font:inherit;display:inline-flex;align-items:center;gap:.4rem;min-height:40px;padding:.3rem 0;margin:.5rem 0 .1rem;border:0;background:none;color:var(--accent);font-size:.92rem;font-weight:650;cursor:pointer}
.addln .ic{width:18px;height:18px;stroke-width:2.2}

/* Jour de la séance : les 7 derniers jours + calendrier */
.dstrip{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:5px;margin:.2rem 0 .3rem}
.dstrip button,.dcal{font:inherit;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;min-height:52px;padding:.3rem 0;border:0;border-radius:12px;background:var(--sunk);color:var(--ink);cursor:pointer;overflow:hidden}
.dstrip small{font-size:.75rem;color:var(--mute);font-weight:600}.dstrip b{font-size:1.05rem;font-weight:750;font-variant-numeric:tabular-nums}
/* jours passés plus foncés, aujourd’hui plus clair (liseré jaune), jours à venir en retrait */
.dstrip .past{background:color-mix(in srgb,var(--sunk) 82%,var(--ink) 10%)}
.dstrip .today{background:var(--card);box-shadow:inset 0 0 0 2px var(--signal),inset 0 0 0 3px var(--signal-edge)}.dstrip .today small{color:var(--ink);font-weight:750}
.dstrip .fut{background:color-mix(in srgb,var(--sunk) 45%,var(--card));color:color-mix(in srgb,var(--mute) 70%,var(--card));cursor:default}.dstrip .fut small{color:inherit}
.dstrip .on{background:var(--ink);color:var(--card)}.dstrip .on small{color:inherit;opacity:.75}
.dstrip .today.on{box-shadow:inset 0 0 0 2px var(--signal),inset 0 0 0 4px var(--ink)}
.dcal .ic{width:20px;height:20px;color:var(--mute)}
.dcal input{position:absolute;inset:0;opacity:0;width:100%;height:100%;min-height:0;padding:0;border:0;cursor:pointer}

/* Durée au curseur : 4 crans ; le centre du rond (28 px) va de 14 px au bord droit moins 14 px, les crans et les libellés aussi */
.hval{display:flex;align-items:baseline;justify-content:space-between}.hval b{font-size:1rem;color:var(--ink);font-weight:750;font-variant-numeric:tabular-nums}
.dsl{position:relative;height:40px;margin:.1rem 0 0}
.dtrack{position:absolute;left:14px;right:14px;top:17px;height:6px;border-radius:3px;background:var(--sunk)}
.dtrack::before{content:"";position:absolute;left:0;top:0;bottom:0;width:calc(var(--i) / var(--n,3) * 100%);border-radius:3px;background:var(--accent)}
.dtrack i{position:absolute;top:50%;left:calc(var(--p) / var(--n,3) * 100%);width:12px;height:12px;margin:-6px 0 0 -6px;border-radius:50%;background:var(--line)}.dtrack i.on{background:var(--accent)}
.dsl input{position:absolute;inset:0;width:100%;height:40px;margin:0;padding:0;min-height:0;-webkit-appearance:none;appearance:none;background:transparent;border:0;cursor:pointer}
.dsl input::-webkit-slider-runnable-track{height:40px;background:transparent}
.dsl input::-webkit-slider-thumb{-webkit-appearance:none;width:28px;height:28px;margin-top:6px;border-radius:50%;background:var(--accent);border:4px solid var(--card);box-shadow:0 1px 6px color-mix(in srgb,#03141a 35%,transparent)}
.dsl input::-moz-range-track{height:40px;background:transparent}
.dsl input::-moz-range-thumb{width:20px;height:20px;border-radius:50%;background:var(--accent);border:4px solid var(--card);box-shadow:0 1px 6px #0005}
.dsl input:focus{background:transparent}.dsl input:focus-visible{outline:none}.dsl input:focus-visible::-webkit-slider-thumb{outline:2.5px solid var(--accent);outline-offset:2px}
.dticks{position:relative;height:1.9rem;margin:0 0 .3rem}
.dticks button{position:absolute;top:0;left:calc(14px + (100% - 28px) * var(--p) / var(--n,3));transform:translateX(-50%);font:inherit;font-size:.75rem;font-weight:600;font-stretch:85%;white-space:nowrap;padding:.3rem .1rem;border:0;background:none;color:var(--mute);cursor:pointer}
.dticks button:first-child{left:0;transform:none}.dticks button:last-child{left:auto;right:0;transform:none}
.dticks button.on{color:var(--ink);font-weight:750}

/* Objectifs de la semaine */
.frow.tgt{flex-wrap:wrap}.frow.tgt .tbar{flex:1 1 120px;max-width:180px;height:8px;border-radius:9px;background:var(--sunk);overflow:hidden}
.frow.tgt .tbar i{display:block;height:100%;border-radius:9px;background:var(--c,var(--accent))}
.frow.tgt.ok .tbar i{background:var(--ok)}
.fl b .cic{font-size:.92rem}
.tglist{margin:.1rem 0 .3rem}
.tgl{display:flex;align-items:center;justify-content:space-between;gap:.6rem;padding:.6rem 0;border-top:1px solid var(--line)}
.tgl b{font-size:1rem;font-weight:650}.tgl span{font-size:.92rem;font-weight:650;font-variant-numeric:tabular-nums}
.tgte{display:grid;grid-template-columns:1fr 1fr auto;gap:6px;align-items:center;padding:.5rem 0;border-top:1px solid var(--line)}
.tgte select{min-height:40px}
.tgte .stepper{grid-column:1/3}
.stepper{display:flex;align-items:center;gap:.4rem}
.stepper button{font:inherit;width:40px;height:40px;border-radius:11px;border:0;background:var(--sunk);color:var(--ink);font-size:1.25rem;font-weight:700;cursor:pointer}
.stepper b{min-width:92px;text-align:center;font-variant-numeric:tabular-nums}

/* Grille de la semaine : catégories sans jour fixe en retrait */
.wtr.free .wtn{color:var(--mute);font-weight:550}.wtr.free .cic{opacity:.55}
.wtn .cic{font-size:.86rem}
.wedit .wtr{grid-template-columns:minmax(0,1fr) repeat(7,28px);column-gap:3px;padding:.4rem 0}
.wd{width:28px;height:44px;border-radius:9px;border:0;padding:0;background:var(--sunk);cursor:pointer}
.wd.on{background:var(--c)}
.wd:focus-visible{outline:2.5px solid var(--accent);outline-offset:2px}

/* Rappel : une heure par jour coché */
.dhours{display:grid;gap:6px}.dh{display:flex;align-items:center;justify-content:space-between;gap:.6rem;font-size:.92rem;font-weight:600;color:var(--ink)}
.dh select{width:auto!important;min-width:110px}
.field>label.chk.sw{display:flex;margin:0;padding:.3rem 0;font-size:1rem;font-weight:650}.field>label.chk.sw small{font-weight:500}
.dh[hidden],[hidden]{display:none!important}

/* Filtre par catégorie : « Toutes » à part, les catégories avec leur couleur */
.cfilt .csep{width:1.5px;height:24px;background:var(--line);margin:0 4px}
.cfilt .chip.cf .tdot{width:9px;height:9px}
.cfilt .chip.cf.in{background:color-mix(in srgb,var(--c) 16%,var(--sunk))}
.cfilt .chip.cf.on .tdot{background:#fff}
/* Carnet : le titre (physique, mental) n’est pas du texte écrit */
.row.note .np{margin-top:.3rem}.row.note .np+.np{margin-top:.85rem}.nlab{display:block;font-size:.75rem;font-weight:700;color:var(--mute);line-height:1.2}.ntx{display:block;white-space:pre-line;line-height:1.35}
/* Bilan : période, dates et PDF restent visibles en défilant */
.bstick{position:sticky;top:calc(env(safe-area-inset-top) + .9rem + 44px);z-index:10;margin:0 calc(-1 * max(16px,env(safe-area-inset-right))) 0 calc(-1 * max(16px,env(safe-area-inset-left)));padding:.35rem max(16px,env(safe-area-inset-right)) .4rem max(16px,env(safe-area-inset-left));background:var(--bg)}
.bstick .tabs{margin:0}
.bbar{margin:0 0 .6rem;padding:.2rem 0 .1rem}
.bbr{display:flex;align-items:center;gap:.5rem}
/* la période : de simples pastilles, pour ne pas ressembler aux onglets de la page juste au-dessus */
.per{display:flex;gap:2px;flex:1;min-width:0;transition:opacity .25s}
.per button{font:inherit;font-size:.86rem;font-weight:600;padding:.3rem .6rem;min-height:34px;border:0;border-radius:99px;background:none;color:var(--mute);cursor:pointer;white-space:nowrap;transition:background .2s,color .2s}
.per .on{background:var(--ink);color:var(--card)}
.bbar small{display:block;margin-top:.2rem;padding-left:.7rem;font-size:.8rem;font-weight:600;max-height:1.5em;overflow:hidden;transition:opacity .25s,max-height .25s,margin .25s}
/* sous le calendrier, la période n’a pas de sens : elle s’efface (et sa ligne de dates se replie) */
.bbar.off .per{opacity:0;visibility:hidden;pointer-events:none}.bbar.off small{opacity:0;max-height:0;margin-top:0}
.tabs+.bbar{margin-top:-.75rem}
.tabs.vtog{flex:none;width:76px;margin:0;border-radius:11px}.tabs.vtog button{min-height:34px;padding:0;display:grid;place-items:center}.tabs.vtog .tpill{border-radius:8px}.tabs.vtog .ic{width:19px;height:19px}
/* Forme : détail d’un point */
.chart .hit{cursor:pointer}
/* moyennes de la période sur le fond de la carte ; le détail d’un point s’affiche par-dessus, grisé */
.wbox{position:relative;margin-top:.6rem}
.wavg{padding:.6rem .75rem .3rem}.wavg .head{margin:0;flex-wrap:nowrap;align-items:baseline}.wavg .head>small{font-size:.8rem}
.wsel{position:absolute;inset:0;padding:.6rem .75rem .3rem;border-radius:var(--r2);background:var(--sunk);animation:wsin .18s ease-out}
.wsel{bottom:auto;min-height:100%}.wsel .head{margin:0;flex-wrap:nowrap;align-items:flex-start}.wsel .head b{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.wsel .head .btn{min-height:26px;height:26px;padding:0 .55rem;margin:-.15rem -.45rem 0 0}.wsel .hbt{background:var(--card)}
@keyframes wsin{from{opacity:0;transform:translateY(4px)}}
/* douleurs déjà signalées : disparue ou toujours là ? */
.pfollow{display:grid;gap:6px;margin:.2rem 0 .3rem}
.pfu{display:flex;align-items:center;gap:.6rem;padding:.5rem .6rem .5rem .8rem;border-radius:var(--r2);background:var(--sunk)}
.pfu b{display:block;font-weight:650;font-size:.92rem}.pfu small{font-size:.8rem}
.pfu .seg2{margin:0;background:var(--card);flex:none}.pfu .seg2 button{padding:.3rem .6rem;white-space:nowrap}
.pfu .seg2 .on{background:var(--ink);color:var(--card)}

/* Onglet Max */
.maxadd{margin:.6rem 0 1rem}
/* raisons écrites soi-même : appui long pour les modifier */
.chip[data-lp]{-webkit-touch-callout:none;user-select:none;-webkit-user-select:none}
.chip.own{outline:1.5px dashed var(--mute);outline-offset:-1.5px}
.chip[data-a="qlOther"] .ic{width:14px;height:14px}
/* « Autre » : on écrit dans la bulle même */
.chips .chip.ochip{padding:0 .35rem;cursor:text;min-height:38px}
/* « Autre » écrit dans la bulle : elle garde sa taille et sa couleur (rien du champ de formulaire : ni fond blanc, ni bordure, ni hauteur) */
dialog .chips .chip.ochip input,dialog .chips .chip.ochip input:focus{-webkit-appearance:none;appearance:none;border:0;background:transparent;box-shadow:none;color:inherit;font:inherit;font-size:16px;font-weight:600;line-height:1.2;padding:.28rem .5rem;min-height:0;height:auto;width:auto;min-width:0;max-width:100%;outline:none;border-radius:0}
dialog .chips .chip.ochip input::placeholder{color:color-mix(in srgb,var(--card) 65%,transparent)}
/* appui long sur une raison à moi : petite bulle accrochée sous elle */
.rchips{position:relative}
.rpop{position:absolute;z-index:5;left:0;top:100%;width:280px;padding:.55rem;border-radius:16px;background:var(--card);box-shadow:0 10px 30px rgba(3,20,26,.28),0 0 0 1px var(--line);animation:tin .22s cubic-bezier(.2,1.15,.35,1)}
.rpop::before{content:"";position:absolute;top:-6px;left:calc(var(--ax,50%) - 7px);width:14px;height:14px;background:var(--card);transform:rotate(45deg);border-radius:3px;box-shadow:-1px -1px 0 var(--line)}
.rpop input{position:relative;width:100%;font:inherit;font-size:16px;padding:.5rem .7rem;border:0;border-radius:10px;background:var(--sunk);color:var(--ink)}
.rpb{display:flex;align-items:center;gap:.4rem;margin-top:.45rem}.rpb .danger{color:var(--bad)}
/* séance pas faite : un carré cerclé de rouge, vide (ou autour de l'effort si une autre séance a été faite ce jour-là) */
.heat i.miss,.legend i.miss-i{background:color-mix(in srgb,var(--bad) 14%,transparent);box-shadow:inset 0 0 0 2px var(--bad)}
.heat i.part{box-shadow:inset 0 0 0 2px var(--bad)}
/* Séance dure ou max : écran plein qui salue l’effort, sous les confettis ; il s’efface seul ou au toucher */
#proud{position:fixed;inset:0;z-index:79;display:grid;place-items:center;padding:2rem max(24px,env(safe-area-inset-right)) calc(2rem + env(safe-area-inset-bottom));
  background:color-mix(in srgb,#03141a 90%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);color:#fff;text-align:center;animation:bdin .25s ease-out;cursor:pointer}
#proud.out{opacity:0;transition:opacity .28s}
#proud .pin{display:flex;flex-direction:column;align-items:center;gap:.35rem;max-width:22rem}
#proud .pdisc{display:grid;place-items:center;width:96px;height:96px;border-radius:50%;background:var(--signal);color:var(--signal-ink);margin-bottom:.8rem;animation:ppop .55s cubic-bezier(.2,1.5,.4,1) both}
#proud .pdisc .ic{width:52px;height:52px;stroke-width:2}
#proud h2{margin:0;font-size:2.6rem;font-weight:850;font-stretch:66%;line-height:1;letter-spacing:-.005em;text-wrap:balance;animation:pup .5s .12s cubic-bezier(.2,.9,.3,1) both}
#proud p{display:flex;flex-wrap:wrap;justify-content:center;gap:.4rem;margin:.7rem 0 0;animation:pup .5s .22s cubic-bezier(.2,.9,.3,1) both}
#proud p>*{padding:.2rem .65rem;border-radius:99px;background:rgba(255,255,255,.12);font-size:.92rem;font-weight:650}
#proud p b{background:var(--c);color:#fff}
#proud small{margin-top:.5rem;color:rgba(255,255,255,.7);font-size:.92rem;animation:pup .5s .3s cubic-bezier(.2,.9,.3,1) both}
#proud .pbar{position:absolute;left:50%;bottom:calc(1.4rem + env(safe-area-inset-bottom));width:120px;height:3px;margin-left:-60px;border-radius:2px;background:rgba(255,255,255,.18);overflow:hidden}
#proud .pbar::after{content:"";position:absolute;inset:0;background:var(--signal);transform-origin:left;animation:pbar 3.8s linear forwards}
@keyframes pbar{to{transform:scaleX(0)}}
@keyframes ppop{from{transform:scale(.3);opacity:0}}
@keyframes pup{from{transform:translateY(14px);opacity:0}}
@media(prefers-reduced-motion:reduce){#proud .pdisc,#proud h2,#proud p,#proud small{animation:none}}
/* Journal : une séance pas faite, une séance prévue jamais remplie (on la touche pour la remplir) */
button.row.act{width:100%;font:inherit;text-align:left;background:none;border-left:0;border-right:0;border-bottom:0;cursor:pointer}
.row.act.skip .t,.row.act.unf .t{color:var(--mute)}
.row.act.skip .s{color:var(--bad)}
.row.act.unf .s{color:var(--warn);font-weight:600}
.jst{flex:none;display:grid;place-items:center;width:26px;height:26px;border-radius:50%;font-weight:800;font-size:.92rem;color:var(--bad);box-shadow:inset 0 0 0 2px currentColor}
.row.act.unf .jst{color:var(--warn);box-shadow:none;outline:2px dashed currentColor;outline-offset:-2px}
.heat i.unf,.legend i.unf-i{background:transparent;outline:2px dashed var(--warn);outline-offset:-2px}
.card.flush>button.row.act:not(:first-child){border-top:1px solid var(--line)}

/* Séances : l’ajout, toujours en haut à droite */
/* « + » dans une languette qui sort du bas de la carte au-dessus (même fond, coins raccordés en creux) */
.addrow{position:relative;display:flex;justify-content:center;margin:calc(-.8rem - 1px) 0 1.1rem;--rr:14px}
.addtab{position:relative;padding:4px 10px 10px;background:var(--card);border-radius:0 0 20px 20px}
.addtab::before,.addtab::after{content:"";position:absolute;top:1px;width:var(--rr);height:var(--rr)}
.addtab::before{right:100%;background:radial-gradient(circle at 0 100%,transparent calc(var(--rr) - .5px),var(--card) var(--rr))}
.addtab::after{left:100%;background:radial-gradient(circle at 100% 100%,transparent calc(var(--rr) - .5px),var(--card) var(--rr))}
.addbig{display:grid;place-items:center;width:48px;height:44px;border:0;border-radius:14px;background:var(--accent);color:var(--accent-ink);cursor:pointer;padding:0;transition:transform .12s}
.addbig:active{transform:scale(.92)}.addbig .ic{width:24px;height:24px;stroke-width:2.6}
.head .hadd{gap:.25rem;padding-left:.6rem}.hadd .ic{width:17px;height:17px;stroke-width:2.4}
/* Tests : le choix du test et « + Test » sur une ligne */
.tsel{display:flex;gap:.5rem;align-items:center}.tsel select{flex:1;min-width:0}.tsel .btn{flex:none;gap:.2rem;padding:.5rem .8rem}.tsel .ic{width:17px;height:17px;stroke-width:2.4}
/* Préparer mes poids : ma forme règle la fourchette */
/* Signaler : où, et l’onglet */
/* Listes déroulantes (Où ? du signalement) : le rectangle, puis les choix juste en dessous, de sa largeur */
.ddrow{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.5rem;align-items:start;margin-bottom:.7rem}
.ddb{font:inherit;display:grid;grid-template-columns:1fr auto;align-items:center;width:100%;text-align:left;padding:.4rem .5rem .45rem .8rem;min-height:52px;border-radius:12px;border:1.5px solid transparent;background:var(--card);color:var(--ink);cursor:pointer}
.ddb small{grid-column:1;font-size:.75rem;font-weight:550;line-height:1.1}.ddb b{grid-column:1;font-weight:650;font-size:.92rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ddb .ic{grid-column:2;grid-row:1/3;width:20px;height:20px;color:var(--mute);transition:transform .2s}
.dd.open .ddb{border-color:var(--accent)}.dd.open .ddb .ic{transform:rotate(180deg)}
.ddl{margin-top:4px;background:var(--card);border-radius:12px;box-shadow:0 0 0 1.5px var(--line),0 10px 24px color-mix(in srgb,#03141a 14%,transparent);overflow:hidden}
.ddl button{display:flex;align-items:center;justify-content:space-between;gap:.4rem;width:100%;font:inherit;font-size:.92rem;text-align:left;padding:.6rem .85rem;min-height:44px;border:0;border-top:1px solid var(--line);background:none;color:var(--ink);cursor:pointer}
.ddl button:first-child{border-top:0}.ddl button.on{font-weight:700}.ddl .ic{width:18px;height:18px;color:var(--accent);stroke-width:2.4;flex:none}
/* Voix pendant la série : la même jauge, sous la consigne */
.vrun{width:min(420px,100%);margin-top:.6rem;text-align:left}.vrun .vhint{justify-content:center}.vrun .vtune{margin:.3rem 0 0}
.obprefs{margin:.3rem 0 1rem}.obprefs .chk.sw{border-top:1px solid var(--line)}.obprefs .chk.sw:first-child{border-top:0}
.addln.danger{color:var(--bad)}.qlclr{display:flex;margin:1.2rem auto .2rem}

/* ---------- Programme : cycles ---------- */
.cyc-now{padding:.35rem 1rem}
.cyl{font:inherit;color:inherit;text-align:left;display:flex;align-items:center;gap:.6rem;width:100%;padding:.55rem 0;border:0;border-top:1px solid var(--line);background:none;cursor:pointer}
.cyl:first-child{border-top:0}.cyl .cic{margin:0;width:34px;height:34px;border-radius:10px}.cyl .cic .ic{width:20px;height:20px}
.cbar{position:relative;display:flex;gap:3px;height:14px;margin:.8rem 0 .5rem}
.cbar i{display:block;min-width:4px;border-radius:5px;background:color-mix(in srgb,var(--c) 50%,var(--card))}
.cbar i.alt{background:color-mix(in srgb,var(--c) 34%,var(--card))}
.cbar i.past{background:color-mix(in srgb,var(--c) 16%,var(--card))}
.cbar i.now{background:var(--c)}
.cbar b{position:absolute;top:-4px;bottom:-4px;width:4px;margin-left:-2px;border-radius:2px;background:var(--signal);box-shadow:0 0 0 1.5px var(--card)}
.cbar.mini{width:72px;height:8px;gap:2px;margin:0;flex:none}.cbar.mini i{border-radius:2px;min-width:2px}.cbar.mini b{top:-3px;bottom:-3px;width:3px;margin-left:-1.5px}
.card.cycle .head b{display:flex;align-items:center}
.cgoal{font-weight:600;margin:.5rem 0 0}
/* une ligne par type de muscu ; celui en cours sur fond jaune pâle */
.cph{padding:.45rem .6rem;margin:0 -.6rem;border-radius:12px}
.cph.now{background:color-mix(in srgb,var(--signal) 24%,transparent)}
.cph.past .cphh b{color:var(--mute)}
.cphh{display:flex;align-items:center;gap:.5rem}
.cphh i,.cweh>i{flex:none;width:10px;height:10px;border-radius:3px;background:color-mix(in srgb,var(--c) 50%,var(--card))}
.cphh i.alt,.cweh>i.alt{background:color-mix(in srgb,var(--c) 34%,var(--card))}
.cph.now .cphh i{background:var(--c)}
.cphh b{flex:1;min-width:0;font-weight:700;line-height:1.2}
.cph .chips{margin:.35rem 0 0 1.1rem}
/* En-tête de carte qu’on touche pour la modifier (cycle, séance) : toute la ligne, chevron à droite.
   Un bloc role=button : la carte contient d’autres boutons (séances du cycle, Lancer) */
.hedit{flex-wrap:nowrap;cursor:pointer;-webkit-tap-highlight-color:transparent}.hedit:active{opacity:.6}.hedit>div{flex:1;min-width:0}
button.row .chev,.hedit .chev{margin-left:auto;padding-left:.4rem}
/* Échéance lointaine : le jaune est réservé à ce qui arrive (EVENT_SOON jours) */
.evn.far{background:var(--sunk);color:var(--ink)}
.grid2f{display:grid;grid-template-columns:1fr 1fr;gap:.6rem}
.cwe{padding:.55rem 0;border-top:1px solid var(--line)}
.cweh{display:flex;align-items:center;gap:.5rem}.cweh .ac{flex:1;min-width:0}
.cwe input{width:100%;min-height:38px;padding:.35rem .6rem;font-size:.92rem}
.cwed{display:flex;align-items:center;gap:.5rem;margin:.4rem 0 0 18px;font-size:.86rem;font-weight:600}
.cwed input{width:auto;flex:1;min-height:34px}
.cwe .chips{margin:.45rem 0 0 18px}
.mbody>.cbar{margin:.9rem 0 .2rem}

/* ---------- Programme : axes de travail ---------- */
.axcard{display:block;width:100%;font:inherit;color:inherit;text-align:left;border:0;cursor:pointer}
.axcard .head{margin-bottom:.5rem}.axcard .head b{display:flex;align-items:center}
.axdots{display:inline-flex;align-items:flex-end;gap:4px;height:22px;margin:0 0 .35rem}.axdots i{width:10px;min-height:5px;border-radius:3px}
.row .axdots{margin:0;flex:none}.row .axdots{height:14px}.row .axdots i{width:6px;min-height:3px;border-radius:2px}
.axq{padding:.55rem 0;border-top:1px solid var(--line)}.axq:first-of-type{border-top:0}.axq>b{display:block;font-size:.92rem;margin-bottom:.35rem}
.axr{display:grid;grid-template-columns:repeat(4,1fr);gap:5px;margin-bottom:.4rem}
.axr button{font:inherit;font-size:.86rem;font-weight:650;min-height:38px;border:0;border-radius:10px;background:color-mix(in srgb,var(--c) 14%,var(--card));color:var(--ink);cursor:pointer}
.axr button.on{background:var(--c);color:#fff}
.axq input{width:100%;min-height:40px;padding:.4rem .65rem;font-size:.92rem}

/* ---------- Démarrage et Paramètres : seul, coach, équipe ---------- */
.modes{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin:.3rem 0 .5rem}
.modes button{font:inherit;color:var(--ink);display:flex;flex-direction:column;align-items:flex-start;gap:.15rem;text-align:left;padding:.65rem .6rem;min-height:96px;border:0;border-radius:14px;background:var(--sunk);cursor:pointer}
.modes button .ic{width:22px;height:22px;color:var(--accent);margin-bottom:.2rem}
.modes button b{font-size:.92rem;line-height:1.15}.modes button small{font-size:.75rem;line-height:1.25}
.modes button.on{background:var(--ink);color:var(--card)}.modes button.on small,.modes button.on .ic{color:color-mix(in srgb,var(--card) 80%,transparent)}

/* ---------- Accueil : la journée (le soir) ---------- */
.dayrec{display:flex;flex-wrap:wrap;gap:6px;margin:.1rem 0 .2rem}
.dayrec .chip{font:inherit;font-size:.86rem;font-weight:600;padding:.35rem .7rem;border:0;cursor:pointer;gap:.35rem}
.dayrec .chip .ic{width:16px;height:16px;color:var(--c)}.dayrec .chip small{font-weight:500}
.card.recap.month{background:color-mix(in srgb,var(--accent) 9%,var(--card))}
.card.recap.month .s .cic{font-size:.8rem}

/* ---------- Bilan : calendrier ---------- */
.mcal .cgrid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px 2px;margin-top:.4rem}
.cdh{text-align:center;font-size:.75rem;font-weight:650}
.cday{position:relative;font:inherit;color:var(--ink);display:grid;place-items:center;aspect-ratio:1;padding:0;border:0;background:none;cursor:pointer;min-width:0}
.cday.out{visibility:hidden}
/* jour avec séance : rond plein, de la couleur de la catégorie (partagé quand il y en a plusieurs) ; aujourd’hui : cerclé de jaune */
.cring{display:grid;width:min(32px,calc(100% - 10px));aspect-ratio:1;border-radius:50%;background:var(--g,transparent)}
.cring b{display:grid;place-items:center;border-radius:50%;font-weight:700;font-stretch:72%;font-size:1rem;font-variant-numeric:tabular-nums}
.cday.on b{color:#fff;font-weight:800;text-shadow:0 1px 2px rgb(0 0 0 / .25)}
.cday.fut b{color:color-mix(in srgb,var(--mute) 60%,transparent);font-weight:500}
.cday.today .cring{box-shadow:0 0 0 2px var(--card),0 0 0 4.5px var(--signal),0 0 0 5.5px var(--signal-edge)}
.cday.skip .cring{outline:1.5px dashed var(--mute);outline-offset:-3px;box-shadow:none}
.cday.unf::after{content:"";position:absolute;bottom:2px;width:5px;height:5px;border-radius:50%;background:var(--warn)}
.cday.stop .cring b{background:repeating-linear-gradient(135deg,var(--warnbg) 0 3px,var(--card) 3px 6px)}
.cday small{position:absolute;top:0;right:0;font-size:.75rem;font-weight:800;min-width:16px;height:16px;line-height:15px;border-radius:8px;background:var(--ink);color:var(--card);text-align:center}

/* ---------- Bilan : santé dans le temps ---------- */
.btns.sant{display:flex;gap:.5rem;justify-content:flex-end;margin:-.3rem 0 .8rem}
.htl{margin:.3rem 0 .2rem}
.hrow{display:grid;grid-template-columns:92px 1fr;align-items:center;gap:.5rem;min-height:30px;border-top:1px solid var(--line)}
.hrow:first-child{border-top:0}.hrow.hax{border-top:0;min-height:22px}
.hz{font-size:.8rem;font-weight:600;line-height:1.15;overflow:hidden;text-overflow:ellipsis}
.htrack{position:relative;height:22px;background:linear-gradient(var(--line),var(--line)) center/100% 1px no-repeat}
.hax .htrack{background:none;height:18px}
.htrack.hpain{height:46px;margin:.3rem 0;background:repeating-linear-gradient(to bottom,var(--line) 0 1px,transparent 1px 25%) 0 4px/100% calc(100% - 7px) no-repeat}
.hplot{position:absolute;inset:4px 0}.hcurve{position:absolute;inset:0;width:100%;height:100%;overflow:visible}.hcurve polyline{fill:none;stroke:var(--mute);stroke-width:1.5;vector-effect:non-scaling-stroke;stroke-linejoin:round}
.htrack.hpain .hbar{top:auto;bottom:-2px;height:6px}
.hbar{position:absolute;top:6px;height:10px;border-radius:5px;background:color-mix(in srgb,var(--warn) 45%,var(--card));overflow:hidden}
.hbar.done{background:color-mix(in srgb,var(--ok) 35%,var(--card))}
.hbar i{position:absolute;left:0;top:0;bottom:0;background:var(--bad);border-radius:5px}
.hdot{position:absolute;top:50%;width:var(--s,10px);height:var(--s,10px);border-radius:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 1.5px var(--card)}
.hdot.st{position:static;transform:none;width:12px;height:12px;flex:none}
.hgone{position:absolute;top:50%;transform:translate(-50%,-50%);color:var(--ok);display:grid}.hgone .ic{width:14px;height:14px;stroke-width:3}
.hax small{position:absolute;top:2px;font-size:.75rem;white-space:nowrap;transform:translateX(-50%)}.hax small.l{transform:none}.hax small.r{transform:translateX(-100%)}
.legend i.hl-inj{background:color-mix(in srgb,var(--warn) 45%,var(--card));width:16px;height:8px;border-radius:4px;vertical-align:middle}
.legend i.hl-stop{background:var(--bad);width:16px;height:8px;border-radius:4px;vertical-align:middle}
/* une ligne touchable (blessure, cycle terminé, axe terminé) a l’allure d’une ligne */
button.row{width:100%;font:inherit;color:inherit;text-align:left;background:none;border:0;border-top:1px solid var(--line);cursor:pointer}
h3+button.row,.card.flush>button.row:first-child{border-top:0}
h4+.axq{border-top:0;padding-top:0}

/* ---------- Semaines A/B, charges, brouillon, séance guidée depuis le remplissage ---------- */
.weab{margin:.2rem 0 .3rem}.weside{margin:.2rem 0 .4rem}
.wecur{display:flex;align-items:center;justify-content:space-between;gap:.6rem;margin:0 0 .7rem;font-size:.9rem;font-weight:600;color:var(--mute)}.wecur .seg2{flex:none;width:7.5rem}.wecur .seg2 button{min-height:44px}
.seg2.charge{margin:.2rem 0 .4rem}.seg2.charge .on.light{color:var(--water,#0b8bb0)}.seg2.charge .on.heavy{color:var(--bad)}
.guideme{display:flex;align-items:center;justify-content:center;gap:.45rem;width:100%;min-height:48px;margin:.9rem 0 .1rem}.guideme .ic{width:20px;height:20px}
.qlwipe{display:flex;justify-content:flex-end;margin:0}.qlwipe .addln{margin:.4rem 0 0}
/* dernière charge mise et son ressenti, sous le nom de l’exercice */
.prn .plast{display:block;font-size:.78rem;font-weight:650;color:var(--mute);margin-top:2px}.prn .plast.heavy{color:var(--bad)}.prn .plast.light{color:var(--water,#0b8bb0)}.prn .plast.ok{color:var(--ok)}
.prep.feel li{border-radius:var(--r2);background:var(--card);padding:0 .5rem .5rem}.prep.feel .pr,.gmain.ready .prep.feel .pr{grid-template-columns:42px minmax(0,1fr);background:none;padding:.55rem .35rem .4rem .1rem}
.pr .prn .pkg{display:block;font-size:.8rem;font-weight:650;color:var(--mute);margin-top:2px}.prep.feel .seg2{margin:0;background:var(--sunk)}

/* Clavier ouvert (--kb donné par l’app) : la fenêtre coulissante se pose au-dessus du clavier et reste entière à l’écran ;
   le fond devient plein pour que la page derrière, que iOS peut faire glisser, ne se voie jamais */
html.native dialog.sheet{max-height:calc(100vh - var(--kb,0px) - env(safe-area-inset-top) - 20px)}
html.native.kb dialog.sheet{margin-bottom:var(--kb,0px)}
html.native.kb dialog::backdrop{background:var(--bg)}

/* petit bouton rond pour fermer une carte */
.xbtn{display:grid;place-items:center;width:44px;height:44px;margin:-8px -10px -8px 0;border:0;border-radius:50%;background:none;color:var(--mute);cursor:pointer;padding:0}.xbtn .ic{width:20px;height:20px}.xbtn:hover{color:var(--accent);background:var(--soft)}
.sech{margin:.2rem 0 .5rem 1rem}
.addtab.two{display:flex;gap:6px}.addbig.wide{display:inline-flex;align-items:center;gap:.3rem;width:auto;padding:0 1rem 0 .8rem;font:inherit;font-weight:650;font-size:.92rem}.addbig.wide .ic{width:20px;height:20px}.addbig.alt{background:var(--sunk);color:var(--ink)}
.legend .lgp{display:inline-flex;align-items:center;gap:.25rem}.legend .lgp i{margin:0}
.head.ph{min-height:44px;flex-wrap:nowrap}
#tabbar[hidden],#tabbar:empty{display:none}
/* sous l’heure et l’îlot : une fenêtre qu’iOS remonte avec le clavier ne laisse jamais son texte passer dessous */
dialog.sheet.kb[open]{position:fixed;left:0;margin:0;top:calc(var(--vvt,0px) + env(safe-area-inset-top) + 6px);bottom:auto;height:calc(var(--vvh,100vh) - env(safe-area-inset-top) - 6px);max-height:none;box-shadow:0 -8px 40px #0004;animation:none}
/* séance : nom et durée à gauche, « Lancer » à droite, sur une seule ligne */
.card.tpl{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;column-gap:.4rem}
.card.tpl .head{margin:0;align-items:center}.card.tpl .btns{margin:0}

/* dose : interrupteur répétitions/durée discret, quantités sur une ligne, charge « de … à … » + unité sur la suivante */
.dkind{display:inline-flex;gap:2px;margin:.3rem 0 0;padding:2px;border-radius:9px;background:var(--sunk)}
.dkind button{font:inherit;font-size:.75rem;font-weight:600;color:var(--mute);background:none;border:0;border-radius:7px;padding:.3rem .65rem;min-height:32px;cursor:pointer}
.dkind button.on{background:var(--card);color:var(--ink);box-shadow:0 1px 2px #0002}
.teir.q{grid-template-columns:repeat(2,minmax(0,92px))}
/* charge « 60 à 70 » : deux petites cases et le « à » entre elles, puis l’unité */
.teir.l{grid-template-columns:auto minmax(76px,96px)}
.lrng{display:flex;align-items:center;gap:.35rem}.lrng input{width:3.6rem;text-align:center}.lrng em{font-style:normal;font-size:.86rem;font-weight:600;color:var(--mute)}
/* Un axe : son nom s’écrit dans le titre, la catégorie juste dessous */
.axh{margin:0 0 .3rem}#modal .axh input{width:100%;min-height:44px;padding:.25rem .1rem;border:0;border-bottom:1.5px solid var(--line);border-radius:0;background:none;font:inherit;font-size:1.25rem;font-weight:800;color:var(--ink)}
#modal .axh input:focus{border-bottom-color:var(--accent);outline:none}
.axset{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;margin:.2rem 0 .8rem}.axset label{font-size:.86rem;font-weight:600;color:var(--mute)}.axset select{flex:1;min-width:9rem;min-height:44px}
.mfoot:empty{display:none}

/* Programme → Semaine : la semaine B se détache nettement de la semaine A */
/* entre la semaine A et la B : un trait court et épais, couleur des initiales des jours un peu plus sombre */
.head.wab{margin-bottom:.15rem}.head.wab.wb{position:relative;margin-top:1.4rem;padding-top:1.2rem}.head.wab.wb::before{content:'';position:absolute;top:0;left:50%;width:56px;height:3px;margin-left:-28px;border-radius:2px;background:color-mix(in srgb,var(--mute) 80%,var(--ink))}
/* Liste des séances : la durée, à part dans une pastille, ne se confond pas avec la séance */
.row.act .t{display:flex;align-items:center;font-weight:650}.row.act .t .cic{font-size:.85rem}
.adur{flex:none;padding:.2rem .55rem;border-radius:999px;background:var(--sunk);color:var(--ink);font-size:.82rem;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}
/* Bloc repliable : « › » qui tourne vers le bas */
.fold{margin:1.2rem 0 .4rem}.foldh{display:flex;align-items:center;gap:.5rem;width:100%;min-height:44px;padding:0 .3rem;border:0;background:none;color:var(--mute);font:inherit;font-size:.95rem;cursor:pointer;text-align:left}
.foldh b{font-weight:700}.foldh small{margin-left:auto;font-weight:700;font-variant-numeric:tabular-nums;background:var(--sunk);border-radius:999px;padding:.1rem .55rem}
.fchev{display:inline-block;font-size:1.3rem;line-height:1;width:1rem;text-align:center;transition:transform .22s ease}.fold.on .fchev{transform:rotate(90deg)}
.foldb{display:none}.fold.on .foldb{display:block;margin-top:.3rem}
@media (prefers-reduced-motion:reduce){.fchev{transition:none}}
/* Santé : une douleur par ligne, son état en pastille ; archivées repliées */
.card.flush>h3.fh{margin:.75rem 1rem .1rem}.prow.past .t{color:var(--mute)}.prow .hdot.st{flex:none}

/* Le soir, à côté d’une séance du jour pas encore faite */
.nudge{margin:-.1rem 0 .5rem;padding:.45rem .7rem;border-radius:12px;background:var(--signal-soft,color-mix(in srgb,var(--signal) 22%,transparent));color:var(--ink);font-size:.88rem;font-weight:600;line-height:1.3;text-wrap:pretty}

/* Séance guidée : barre d’avancement tout en haut (avec la croix), le bandeau « Bloc B : gainage · Tour 2/6 » dessous */
.gtopw{align-items:center}.gtopw .gprog{flex:1;margin:0}
.gtopw+.gband{margin:.35rem 0 .2rem}
.gband .gbl{display:block;max-width:100%;height:auto;min-height:36px;line-height:36px;font-size:1.05rem;overflow:hidden;text-overflow:ellipsis}
/* Voix : « Détection de la voix » au-dessus de la jauge, puis la bulle « Dis Top » qui devient « Top reconnu » */
.vlab{display:flex;align-items:center;gap:.4rem;margin:0 0 .35rem;font-size:.86rem;font-weight:700;color:var(--mute)}.vlab .ic{width:17px;height:17px;color:var(--accent)}
.vword{display:flex;justify-content:center;margin:.6rem 0 0;padding:.55rem .8rem;border-radius:999px;font-size:.95rem;transition:background .2s}
.vword span{color:var(--ink);font-weight:750;gap:.35rem;flex-wrap:wrap;justify-content:center}.vword span .ic{width:18px;height:18px;color:var(--ok)}.vword small{font-weight:550;color:var(--mute);font-size:.8rem}
.vword.ok{background:color-mix(in srgb,var(--ok) 32%,var(--sunk))}
/* Performances → Tests : une carte par test suivi ; nom et meilleure perf, courbe, un seul bouton */
.testcard{padding:.35rem 1rem .8rem;margin-bottom:.6rem}
.tch{display:flex;align-items:center;gap:.6rem;width:100%;min-height:52px;padding:.3rem 0;border:0;background:none;color:inherit;font:inherit;text-align:left;cursor:pointer}
.tch .tn{flex:1;min-width:0;font-weight:700;font-size:1.02rem;line-height:1.2}
.tbest{display:flex;flex-direction:column;align-items:flex-end;line-height:1}.tbest b{font-size:1.6rem;font-weight:800;font-variant-numeric:tabular-nums}.tbest small{font-size:.75rem;color:var(--mute);font-weight:650;margin-top:2px}
.tspark{display:block;width:100%;height:34px;margin:.1rem 0 0}.tspark polyline{fill:none;stroke:var(--water,#0b8bb0);stroke-width:2.5;stroke-linejoin:round;stroke-linecap:round;vector-effect:non-scaling-stroke}.tspark circle{fill:var(--signal);stroke:var(--card);stroke-width:2}
.tlast{margin:0;font-size:.85rem;color:var(--mute)}.tlast b{color:var(--ink)}
.tgo{display:flex;align-items:center;justify-content:space-between;gap:.6rem;flex-wrap:wrap;margin-top:.35rem}.tgo .btn{display:inline-flex;align-items:center;min-height:44px;gap:.35rem;margin-left:auto;white-space:nowrap}.tgo .ic{width:17px;height:17px}
.tnew{display:flex;align-items:center;justify-content:center;gap:.4rem;min-height:48px;margin:.4rem 0 1rem}.tnew .ic{width:19px;height:19px}
.tres{margin-top:.6rem}.tres .trow{display:flex;align-items:center;gap:.5rem;padding:.7rem 0}.tmore{display:flex;flex-direction:column;align-items:flex-start;margin-top:.6rem}
.tsug{margin-bottom:.4rem}

/* ---------- Mode coach (coach.js) : partager son programme, le suivre en lecture seule ---------- */
/* Côté coach : le code en grand (à recopier dans l’app), le lien dessous ; tout se sélectionne d’un geste */
.shcode{display:block;margin:.3rem 0 .2rem;padding:.65rem .85rem;border-radius:var(--r2);background:var(--sunk);-webkit-user-select:all;user-select:all}
.shcode b{display:block;font-size:1.75rem;line-height:1.1;font-weight:800;font-stretch:68%;letter-spacing:.08em;font-variant-numeric:tabular-nums}
.shcode small{display:block;font-size:.8rem;overflow-wrap:anywhere}
.head.ph .phb{display:flex;align-items:center;gap:.2rem;flex:none}.hbtn.on{color:var(--accent)}
/* Côté athlète : la semaine jour par jour ; aujourd’hui en jaune, les jours passés en retrait */
.rowk .wnav button{width:44px;height:44px}
.rwk{margin:.1rem 0 .2rem}
.rday{display:grid;grid-template-columns:44px minmax(0,1fr);gap:.6rem;align-items:center;padding:.35rem 0;border-top:1px solid var(--line);min-height:52px}
.rday:first-child{border-top:0}
.rdd{display:flex;flex-direction:column;align-items:center;justify-content:center;width:44px;height:44px;border-radius:12px;line-height:1}
.rdd small{font-size:.72rem;font-weight:650;color:inherit;opacity:.75}.rdd b{font-size:1.25rem;font-weight:800;font-stretch:68%;font-variant-numeric:tabular-nums}
.rday.now .rdd{background:var(--signal);color:var(--signal-ink);box-shadow:inset 0 0 0 1px var(--signal-edge)}
.rday.past .rdd,.rday.rest .rdd{color:var(--mute)}.rday.past .rds{opacity:.55}
.rds{display:flex;flex-direction:column;gap:.35rem;min-width:0}
.rses{display:flex;align-items:center;gap:.55rem;width:100%;min-height:44px;padding:.35rem .6rem;border:0;border-radius:12px;background:color-mix(in srgb,var(--c,var(--mute)) 13%,var(--sunk));color:var(--ink);font:inherit;text-align:left;line-height:1.2}
button.rses{cursor:pointer}
.rses .cic{margin:0;width:30px;height:30px;border-radius:9px}.rses .cic .ic{width:18px;height:18px}
.rses b{display:block;font-weight:650;overflow-wrap:anywhere}.rses small{display:block;font-size:.8rem;margin-top:1px}.rses .chev{margin-left:auto;color:var(--mute)}
.rses.opt{background:transparent;box-shadow:inset 0 0 0 1.5px color-mix(in srgb,var(--c,var(--mute)) 40%,transparent)}
.rwk.paused .rses{opacity:.5}
.rfree{margin-top:.2rem}.rfree h4{margin:.6rem 0 .35rem}.rfree .rses+.rses{margin-top:.35rem}
a.cyl{text-decoration:none}
.rotpl{width:100%;border:0;font:inherit;color:inherit;text-align:left;cursor:pointer;grid-template-columns:minmax(0,1fr)}.rotpl .head{flex-wrap:nowrap}
.rotxt{white-space:pre-line}
/* Coach : liste des athlètes */
.row.ath{gap:.7rem}.athi{flex:none;width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:var(--sunk);font-weight:700}
.athbar{height:5px;border-radius:3px;background:var(--sunk);margin-top:.35rem;overflow:hidden}.athbar i{display:block;height:100%;background:var(--accent);border-radius:3px}
.athn{flex:none;text-align:right;line-height:1}.athn b{font-size:1.25rem}.athn small{color:var(--mute)}.athn.ok b{color:var(--ok)}
.athfoot{text-align:center;margin-top:.5rem}.s.warn{color:var(--warn)}
.rback{margin:0 0 .4rem}.rses .rok{flex:none;color:var(--ok)}.rses .rok .ic{width:22px;height:22px}
