
/* Layout: application iOS — grand titre, cartes en encart, anneaux concentriques, barre d'onglets translucide, feuilles modales. */
:root{
  --bg:#F2F2F7; --card:#FFFFFF; --fill:#E9E9EE; --fill2:#F4F4F8;
  --fg:#000000; --fg2:#6C6C70; --fg3:#AEAEB2; --sep:#D1D1D6;
  --accent:#007AFF; --on-accent:#FFFFFF;
  --green:#34C759; --orange:#E68200; --red:#FF3B30; --pink:#FF2D55; --purple:#AF52DE; --teal:#30B0C7;
  --mm0:#E3E3E8; --mm1:#C2D9FB; --mm2:#7FB2F8; --neutral:#D9D9DE;
  --bar:rgba(249,249,249,.86); --overlay:rgba(0,0,0,.32); --shadow:0 1px 2px rgba(0,0,0,.04),0 6px 20px rgba(0,0,0,.05);
  --font:-apple-system,BlinkMacSystemFont,"SF Pro Text","SF Pro Display","Helvetica Neue",system-ui,sans-serif;
  --rounded:ui-rounded,"SF Pro Rounded",-apple-system,BlinkMacSystemFont,system-ui,sans-serif;
  /* Échelle U12 — typographie : tailles iOS Dynamic Type (taille par défaut) */
  --t-cap2:11px; --t-cap:12px; --t-foot:13px; --t-sub:15px; --t-body:17px;
  --t-title3:20px; --t-title2:22px; --t-title1:28px; --t-large:34px;
  /* chiffres en police arrondie : petit, moyen, grand, très grand, affichage */
  --n-s:20px; --n-m:24px; --n-l:28px; --n-xl:34px; --n-xxl:52px;
  /* espacements : entre sections, entre cartes d'une grille, dans les cartes */
  --space-section:24px; --space-grid:12px;
  --card-pad:16px; --card-pad-c:12px; --card-gap:12px; --card-gap-c:6px;
  /* rayons : petit champ, encart, carte, carte mise en avant, pastille */
  --r-xs:6px; --r-sm:10px; --r-md:12px; --r-card:16px; --r-feature:20px; --r-pill:999px;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --bg:#000000; --card:#1C1C1E; --fill:#2C2C2E; --fill2:#242426;
  --fg:#FFFFFF; --fg2:#98989F; --fg3:#636366; --sep:#38383A;
  --accent:#0A84FF; --on-accent:#FFFFFF;
  --green:#30D158; --orange:#D07800; --red:#FF453A; --pink:#FF375F; --purple:#BF5AF2; --teal:#40C8E0;
  --mm0:#2E2E31; --mm1:#16365F; --mm2:#1F5FB0; --neutral:#3A3A3D;
  --bar:rgba(22,22,24,.86); --overlay:rgba(0,0,0,.55); --shadow:none; color-scheme:dark}}
:root[data-theme="dark"]{
  --bg:#000000; --card:#1C1C1E; --fill:#2C2C2E; --fill2:#242426;
  --fg:#FFFFFF; --fg2:#98989F; --fg3:#636366; --sep:#38383A;
  --accent:#0A84FF; --on-accent:#FFFFFF;
  --green:#30D158; --orange:#D07800; --red:#FF453A; --pink:#FF375F; --purple:#BF5AF2; --teal:#40C8E0;
  --mm0:#2E2E31; --mm1:#16365F; --mm2:#1F5FB0; --neutral:#3A3A3D;
  --bar:rgba(22,22,24,.86); --overlay:rgba(0,0,0,.55); --shadow:none; color-scheme:dark}
html,body{height:100%}
html{scroll-padding-bottom:calc(var(--tabbar-h,0px) + 8px)}
body{background:var(--bg);color:var(--fg);font-family:var(--font);font-size:var(--t-body);line-height:1.35;-webkit-font-smoothing:antialiased;letter-spacing:-.01em}
#app{max-width:720px;margin:0 auto;padding-inline:16px;padding-block:0 max(130px,calc(var(--tabbar-h,0px) + 40px))}
button{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:8px}
a{color:var(--accent);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px}

/* En-tête */
.lt{padding-block:14px 4px;display:grid;gap:2px}
.lt .bar{display:flex;align-items:center;min-height:32px;gap:8px}
.lt h1{font-size:var(--t-large);font-weight:700;letter-spacing:-.025em;margin:0;line-height:1.1;text-wrap:balance}
.lt .sub{color:var(--fg2);font-size:var(--t-sub)}
.navbtn{appearance:none;border:0;background:none;color:var(--accent);font-size:var(--t-body);padding:6px 0;cursor:pointer;display:inline-flex;align-items:center;gap:4px}
.navbtn svg{width:22px;height:22px}
.spacer{flex:1}
.avatar{width:34px;height:34px;border-radius:50%;background:var(--fill);display:grid;place-items:center;color:var(--accent);border:0;cursor:pointer}
.avatar svg{width:20px;height:20px}

/* Bande de dates */
.strip{background:var(--bg);padding-block:6px 8px;margin-inline:-16px;padding-inline:16px}
.strip .w{display:flex;align-items:stretch;min-width:0}
.strip .chev{appearance:none;border:0;background:none;color:var(--accent);cursor:pointer;flex:none;width:44px;min-height:44px;display:grid;place-items:center;border-radius:var(--r-sm)}
.strip .chev:active{background:var(--fill)}
.strip .chev svg{width:18px;height:18px}
/* ruban : défilement natif à inertie, aimanté au centre ; bords estompés pour signaler la suite */
.strip .days{flex:1;min-width:0;display:flex;position:relative;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;overscroll-behavior-x:contain;scrollbar-width:none;padding-block:4px;-webkit-mask-image:linear-gradient(90deg,transparent,#000 22px,#000 calc(100% - 22px),transparent);mask-image:linear-gradient(90deg,transparent,#000 22px,#000 calc(100% - 22px),transparent)}
.strip .days::-webkit-scrollbar{display:none}
.strip .days.glide{scroll-snap-type:none}
.day{appearance:none;border:0;background:none;cursor:pointer;flex:0 0 46px;scroll-snap-align:center;display:grid;justify-items:center;gap:2px;padding:0;min-height:44px;-webkit-tap-highlight-color:transparent;transform-origin:50% 60%}
.day .m{font-size:var(--t-cap2);line-height:13px;height:13px;color:var(--accent);font-weight:600;white-space:nowrap}
.day .l{font-size:var(--t-cap2);color:var(--fg2);text-transform:uppercase;font-weight:600}
.day .n{width:2em;height:2em;border-radius:50%;display:grid;place-items:center;font-size:var(--t-body);font-variant-numeric:tabular-nums;color:var(--fg2)}
.day:active .n{background:var(--fill)}
.day.today .n{color:var(--accent);font-weight:700}
.day.sel .n{background:var(--fg);color:var(--bg);font-weight:600}
.day.sel.today .n{background:var(--accent);color:var(--on-accent)}
.day.sel .l{color:var(--fg)}
.day.m1{box-shadow:inset 1px 0 0 var(--sep)}
.day .dot{width:5px;height:5px;border-radius:50%;background:transparent}
.day .dot.on{background:var(--fg3)}
.day:focus-visible{outline:none}.day:focus-visible .n{outline:2px solid var(--accent);outline-offset:2px}
/* jours voisins discrets partout (gris secondaire, contraste ≥ 4,5:1) ; en plus, rapetissent vers les bords selon leur place
   dans le ruban (navigateurs compatibles) — taille seulement : l'opacité reste pleine pour garder le contraste */
@supports (animation-timeline:view()){@media (prefers-reduced-motion:no-preference){
 .strip .days .day{animation:day-edge linear both;animation-timeline:view(inline)}
 @keyframes day-edge{0%,100%{transform:scale(.78)}32%,68%{transform:none}}
}}
.strip .cap{font-size:var(--t-foot);color:var(--fg2);text-align:center;padding-top:2px}

/* Structure */
.stack{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-section);padding-top:8px}
.group{display:grid;grid-template-columns:minmax(0,1fr);gap:8px}
.gh{display:flex;align-items:baseline;gap:8px;padding-inline:4px}
.gh .t{font-size:var(--t-title3);font-weight:700;letter-spacing:-.015em;flex:1;min-width:0}
.gh .r{font-size:var(--t-sub);color:var(--fg2);font-variant-numeric:tabular-nums}
.gh button{font-size:var(--t-sub);color:var(--accent);background:none;border:0;cursor:pointer;padding:0;display:inline-flex;align-items:center;gap:6px}
.gh button svg{width:1.1em;height:1.1em;flex:none}
.gf{font-size:var(--t-foot);color:var(--fg2);padding-inline:4px;line-height:1.4}
/* Cartes : une seule surface (fond, rayon, ombre) pour toutes les cartes de contenu.
   Variantes — standard : .card (marge 16, écart 12) · compacte en rangée : .banner .ex .meal (12/16)
   · compacte et métrique : .tile .cr .rec .scard .pcard .rule .qbig (12, écart 6, chiffre arrondi + légende 12 px).
   Hors famille : .hero-card et cartes de recette (rayon 20, mises en avant), cartes de la séance guidée. */
.list,.card,.banner,.ex,.meal,.tile,.cr,.rec,.scard,.pcard,.rule,.qbig,.achip,.abtn,.rowi.streakrow{background:var(--card);border-radius:var(--r-card);box-shadow:var(--shadow)}
.list{overflow:hidden}
.card{padding:var(--card-pad);display:grid;grid-template-columns:minmax(0,1fr);gap:var(--card-gap);min-width:0}
.card.tight{gap:8px}
.rowi{display:flex;align-items:center;gap:12px;padding:11px 16px;min-height:44px;position:relative}
.rowi + .rowi::before{content:"";position:absolute;top:0;left:16px;right:0;border-top:.5px solid var(--sep)}
.rowi.ind + .rowi.ind::before{left:60px}
.rowi .main{flex:1;min-width:0}
.rowi .ttl{overflow-wrap:anywhere}
.rowi .s2{font-size:var(--t-sub);color:var(--fg2);font-variant-numeric:tabular-nums}
.rowi .val{color:var(--fg2);font-variant-numeric:tabular-nums;text-align:right}
.rowi.tap{cursor:pointer}
.rowi.tap:active{background:var(--fill)}
button.rowi{appearance:none;border:0;background:none;width:100%;text-align:left}
.chev-r{color:var(--fg3);width:14px;height:14px;flex:none}
.link{color:var(--accent)}
.danger{color:var(--red)}
.kicker{font-size:var(--t-foot);font-weight:600;color:var(--fg2);text-transform:uppercase;letter-spacing:.03em}
.title2{font-size:var(--t-title2);font-weight:700;letter-spacing:-.015em;line-height:1.2}
.cols2{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-grid)}
@media (max-width:420px){.cols2.st{grid-template-columns:1fr}}

/* Contrôles */
input.inl{appearance:none;border:0;background:transparent;color:var(--fg);font:inherit;text-align:right;width:96px;padding:0;font-variant-numeric:tabular-nums}
input.inl::placeholder{color:var(--fg3)}
input.field,select.field,textarea.field{appearance:none;border:0;background:var(--fill);color:var(--fg);font:inherit;border-radius:var(--r-sm);padding:10px 12px;width:100%;min-width:0}
textarea.field{min-height:84px;resize:vertical}
.seg{display:flex;flex-wrap:wrap;background:var(--fill);border-radius:9px;padding:2px;gap:2px}
.seg button{flex:1 1 0;appearance:none;border:0;background:none;border-radius:7px;padding:6px 4px;font-size:var(--t-foot);font-weight:500;cursor:pointer;color:var(--fg);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.seg button.on{background:var(--card);box-shadow:0 1px 3px rgba(0,0,0,.14),0 0 0 .5px rgba(0,0,0,.04);font-weight:600}
.btn{appearance:none;border:0;background:var(--accent);color:var(--on-accent);font-weight:600;border-radius:var(--r-md);padding:14px 16px;cursor:pointer;font-size:var(--t-body);width:100%}
.btn.sec{background:var(--fill);color:var(--accent)}
.btn.green{background:var(--green);color:#fff}
.btn.sm{width:auto;padding:7px 14px;font-size:var(--t-sub);border-radius:var(--r-pill)}
.btn:disabled{opacity:.45;cursor:default}
.tbtn{appearance:none;border:0;background:none;color:var(--accent);cursor:pointer;padding:4px 0;font-size:var(--t-body)}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chips.scroll{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;margin-inline:-16px;padding-inline:16px}
.chips.scroll::-webkit-scrollbar{display:none}
.chips:not(.scroll) .chip{max-width:100%;white-space:normal}
.chip{appearance:none;border:0;background:var(--fill);color:var(--fg);border-radius:var(--r-pill);padding:7px 14px;font-size:var(--t-sub);cursor:pointer;white-space:nowrap}
.chip.on{background:var(--accent);color:var(--on-accent)}
.chip.add{background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent);font-weight:500}
.chk{appearance:none;border:0;background:none;padding:0;cursor:pointer;width:28px;height:28px;flex:none;display:grid;place-items:center}
.chk .o{width:24px;height:24px;border-radius:50%;border:1.5px solid var(--fg3);display:grid;place-items:center}
.chk.on .o{background:var(--green);border-color:var(--green)}
.chk.on .o::after{content:"";width:6px;height:11px;border:solid #fff;border-width:0 2.2px 2.2px 0;transform:translateY(-1px) rotate(45deg)}
.chk.off{cursor:default}
input[type=range]{width:100%;accent-color:var(--accent)}
.pill{display:inline-flex;align-items:center;gap:4px;font-size:var(--t-cap);font-weight:600;border-radius:var(--r-pill);padding:3px 9px;background:var(--fill);color:var(--fg2);white-space:nowrap}
.pill.green{background:color-mix(in srgb,var(--green) 16%,transparent);color:var(--green)}
.pill.orange{background:color-mix(in srgb,var(--orange) 18%,transparent);color:var(--orange)}
.pill.red{background:color-mix(in srgb,var(--red) 16%,transparent);color:var(--red)}
.pill.blue{background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--accent)}
.num{font-variant-numeric:tabular-nums}
.muted{color:var(--fg2)}
.small{font-size:var(--t-sub)}
.xs{font-size:var(--t-cap)}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.row > *{min-width:0}
.grow{flex:1;min-width:0}
.banner{padding:var(--card-pad-c) var(--card-pad);font-size:var(--t-sub);color:var(--fg2)}

/* Anneaux */
.ringwrap{display:grid;grid-template-columns:minmax(120px,170px) 1fr;gap:16px;align-items:center}
.ringwrap > svg{width:100%;height:auto;display:block}
.legend{display:grid;gap:12px}
.legend .it{display:grid;gap:1px}
.legend .k{font-size:var(--t-foot);font-weight:600}
.legend .v{font-family:var(--rounded);font-size:var(--n-m);font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.01em}
.legend .v small{font-size:var(--t-foot);color:var(--fg2);font-weight:500}
@media (max-width:380px){.ringwrap{grid-template-columns:110px 1fr;gap:12px}.legend .v{font-size:var(--n-s)}}
.bar{height:8px;background:var(--fill);border-radius:999px;overflow:hidden}
.bar > i{display:block;height:100%;border-radius:999px}
.mrow{display:grid;grid-template-columns:82px 1fr auto;gap:10px;align-items:center;font-size:var(--t-sub)}
.mrow .v{font-variant-numeric:tabular-nums;color:var(--fg2);font-size:var(--t-sub);text-align:right}
.big{font-family:var(--rounded);font-size:var(--n-xl);font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums;line-height:1}
.hero{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.stat{display:grid;gap:2px;overflow-wrap:anywhere}
.stat .v{font-family:var(--rounded);font-size:var(--n-m);font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.01em}
.stat .k{font-size:var(--t-cap);color:var(--fg2)}
.stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-grid)}

/* Pesée rapide */
.stepper{display:flex;align-items:center;gap:10px}
.stepper button{appearance:none;border:0;width:44px;height:44px;border-radius:50%;background:var(--fill);font-size:24px;font-weight:500;color:var(--accent);cursor:pointer;display:grid;place-items:center;flex:none}
.stepper .sv{font-family:var(--rounded);font-size:var(--n-xl);font-weight:700;font-variant-numeric:tabular-nums;min-width:4ch;text-align:center}

/* Séance */
.focus{background:var(--card);border-radius:20px;padding:18px;display:grid;gap:16px;box-shadow:var(--shadow);border:1.5px solid color-mix(in srgb,var(--accent) 35%,transparent)}
.focus .head{display:flex;gap:12px;align-items:center}
.focus .pict{width:54px;height:54px;flex:none;background:var(--fill2);border-radius:14px;display:grid;place-items:center}
.focus .pict svg{width:46px;height:46px}
.fgrid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.fbox{background:var(--fill2);border-radius:14px;padding:10px;display:grid;justify-items:center;gap:6px}
.fbox .lab{font-size:12px;color:var(--fg2);font-weight:600;text-transform:uppercase;letter-spacing:.03em}
.fbox .ctl{display:flex;align-items:center;gap:6px;width:100%;justify-content:space-between}
.fbox .ctl button{appearance:none;border:0;width:42px;height:42px;border-radius:50%;background:var(--card);color:var(--accent);font-size:24px;cursor:pointer;flex:none;box-shadow:0 1px 2px rgba(0,0,0,.08)}
.fbox input{appearance:none;border:0;background:transparent;color:var(--fg);font-family:var(--rounded);font-size:30px;font-weight:700;text-align:center;width:100%;min-width:0;font-variant-numeric:tabular-nums;padding:0}
.rirs{display:grid;grid-template-columns:auto repeat(5,1fr);gap:6px;align-items:center}
.rirs .lab{font-size:13px;color:var(--fg2);padding-right:4px}
.rirs button{appearance:none;border:0;background:var(--fill);border-radius:10px;padding:8px 0;font-weight:600;cursor:pointer;font-variant-numeric:tabular-nums}
.rirs button.on{background:var(--accent);color:var(--on-accent)}
.dots{display:flex;gap:6px;flex-wrap:wrap}
.dots i{width:22px;height:6px;border-radius:3px;background:var(--fill)}
.dots i.d{background:var(--green)}
.dots i.c{background:var(--accent)}
.ex{padding:var(--card-pad-c) var(--card-pad);display:grid;gap:var(--card-gap)}
.ex .hd{display:flex;gap:12px;align-items:center}
.ex .pict{width:44px;height:44px;flex:none;background:var(--fill2);border-radius:12px;display:grid;place-items:center;border:0;cursor:pointer;padding:0}
.ex .pict svg{width:38px;height:38px}
.ex h3{font-size:var(--t-body);font-weight:600;margin:0;line-height:1.25}
.ex .sug{font-size:var(--t-sub);color:var(--accent);background:color-mix(in srgb,var(--accent) 9%,transparent);border-radius:var(--r-sm);padding:8px 10px}
.ex.cur{outline:1.5px solid color-mix(in srgb,var(--accent) 40%,transparent)}
.sets{display:grid;grid-template-columns:28px 1fr 1fr 1fr 32px;gap:6px 8px;align-items:center}
.sets .h{font-size:var(--t-cap2);color:var(--fg2);text-transform:uppercase;font-weight:600;text-align:center}
.sets .i{text-align:center;color:var(--fg2);font-variant-numeric:tabular-nums;font-size:var(--t-sub)}
.sets input{appearance:none;border:0;background:var(--fill);color:var(--fg);font:inherit;border-radius:var(--r-sm);padding:7px 4px;text-align:center;width:100%;min-width:0;font-variant-numeric:tabular-nums}
.sets input::placeholder{color:var(--fg3)}
.sets .dn input{background:color-mix(in srgb,var(--green) 14%,var(--fill))}
.exf{display:flex;gap:16px;flex-wrap:wrap}
#restRoot .rest{position:fixed;left:50%;transform:translateX(-50%);bottom:max(calc(86px + env(safe-area-inset-bottom,0px)),calc(var(--tabbar-h,0px) + 12px));z-index:7;background:var(--card);box-shadow:0 8px 28px rgba(0,0,0,.14),0 0 0 .5px var(--sep);border-radius:24px;padding:8px;display:flex;flex-wrap:wrap;align-items:center;gap:8px;width:min(360px,calc(100% - 32px));box-sizing:border-box}
#restRoot .rest-time{display:flex;align-items:center;gap:8px;flex:1 0 auto;min-width:max-content}
#restRoot .rest svg{width:32px;height:32px;flex:none}
#restRoot .rest .tm{font-family:var(--rounded);font-size:var(--n-s);font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}
#restRoot .rest-actions{display:flex;align-items:center;gap:6px;flex:none;margin-left:auto}
#restRoot .rest button{appearance:none;border:0;background:var(--fill);border-radius:999px;min-height:44px;min-width:44px;padding:8px 12px;font-size:var(--t-sub);font-weight:600;cursor:pointer;color:var(--fg);white-space:nowrap;flex:none}
#restRoot .rest button.p{background:var(--accent);color:var(--on-accent)}
#restRoot .rest button:active{opacity:.75}
[data-act="rCut"],[data-act="rAdd"]{white-space:nowrap}

/* Visuels */
.chart svg{display:block;width:100%;height:auto;overflow:visible}
.chart text{fill:var(--fg2);font-family:var(--font);font-size:var(--t-cap2)}
.legendrow{display:flex;gap:12px;flex-wrap:wrap;font-size:var(--t-foot);color:var(--fg2)}
.legendrow span{display:inline-flex;align-items:center;gap:6px}
.legendrow i{width:10px;height:10px;border-radius:3px;display:inline-block}
/* graphiques poids tracés à l'échelle 1:1 (chartBox) : tailles en px réels */
.chart .ax{font-size:var(--t-cap);fill:var(--fg2);font-variant-numeric:tabular-nums}
.chart .val{font-size:var(--t-cap);font-weight:600;fill:var(--fg);font-variant-numeric:tabular-nums}
.legendrow svg{width:20px;height:12px;flex:none;overflow:visible}
.stats.sm .v{font-size:var(--n-s)}
.stats.two{grid-template-columns:repeat(2,minmax(0,1fr))}
.stat .v small{font-size:var(--t-foot);color:var(--fg2);font-weight:500;letter-spacing:0}
.chartnote{margin:0;font-size:var(--t-foot);line-height:1.35;color:var(--fg2)}
.mmap{display:grid;grid-template-columns:1fr 1fr;gap:8px;max-width:340px;margin:0 auto;width:100%}
.mmap figure{margin:0;display:grid;justify-items:center;gap:4px}
.mmap figcaption{font-size:var(--t-cap);color:var(--fg2)}
.mmap svg{width:100%;height:auto;max-height:300px}
.heat svg{display:block;width:100%;height:auto}
.heat text{fill:var(--fg2);font-size:9px;font-family:var(--font)}
.tablewrap{overflow-x:auto}
table{border-collapse:collapse;width:100%;font-variant-numeric:tabular-nums;font-size:var(--t-sub)}
th,td{text-align:left;padding:9px 16px;white-space:nowrap}
th{font-size:var(--t-cap);text-transform:uppercase;color:var(--fg2);font-weight:600}
tbody tr + tr td{border-top:.5px solid var(--sep)}
#tip{position:fixed;z-index:40;pointer-events:none;background:var(--fg);color:var(--bg);font-size:var(--t-foot);line-height:1.35;padding:7px 10px;border-radius:var(--r-sm);max-width:240px;box-shadow:0 6px 18px rgba(0,0,0,.2);font-variant-numeric:tabular-nums;white-space:pre-line}

/* Photos */
.pgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px}
.pgrid button{appearance:none;border:0;padding:0;background:var(--fill);border-radius:var(--r-md);overflow:hidden;aspect-ratio:3/4;cursor:pointer;position:relative;max-width:100%}
.pgrid img{width:100%;height:100%;object-fit:cover;display:block}
.pgrid span{position:absolute;left:6px;bottom:6px;background:rgba(0,0,0,.55);color:#fff;font-size:var(--t-cap2);padding:2px 6px;border-radius:var(--r-xs)}
.cmp{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.cmp figure{margin:0;display:grid;gap:4px}
.cmp img{width:100%;aspect-ratio:3/4;object-fit:cover;border-radius:var(--r-md);background:var(--fill);display:block}
.cmp figcaption{font-size:var(--t-foot);color:var(--fg2);text-align:center}
.filebtn{position:relative;overflow:hidden}
.filebtn input{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%}

/* Bibliothèque */
.lib .pict{width:44px;height:44px;flex:none;background:var(--fill2);border-radius:12px;display:grid;place-items:center}
.lib .pict svg{width:38px;height:38px}
.steps{margin:0;padding-left:22px;display:grid;gap:8px;font-size:var(--t-body);line-height:1.45}

/* Coach */
.msgs{display:grid;gap:10px}
.msg{max-width:88%;padding:10px 14px;border-radius:18px;white-space:pre-wrap;line-height:1.45;font-size:var(--t-body);overflow-wrap:anywhere}
.msg.u{justify-self:end;background:var(--accent);color:var(--on-accent);border-bottom-right-radius:6px}
.msg.a{justify-self:start;background:var(--card);border-bottom-left-radius:6px;box-shadow:var(--shadow)}
.composer{display:flex;gap:8px;align-items:flex-end}
.composer textarea{min-height:44px;max-height:160px;border-radius:22px;padding:11px 16px}
.send{appearance:none;border:0;width:40px;height:40px;border-radius:50%;background:var(--accent);color:var(--on-accent);display:grid;place-items:center;cursor:pointer;flex:none;margin-bottom:2px}
.send svg{width:18px;height:18px}

/* Barre d'onglets */
nav.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:6;background:var(--bar);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);border-top:.5px solid var(--sep);padding-bottom:env(safe-area-inset-bottom,0px)}
nav.tabbar .in{max-width:720px;margin:0 auto;display:grid;grid-template-columns:repeat(5,1fr)}
nav.tabbar button{appearance:none;border:0;background:none;color:var(--fg3);display:grid;justify-items:center;gap:2px;padding:7px 2px 8px;cursor:pointer;font-size:10px;font-weight:500}
nav.tabbar button svg{width:26px;height:26px}
nav.tabbar button[aria-selected="true"]{color:var(--accent)}

/* Feuilles */
.sheetwrap{position:fixed;inset:0;z-index:20;background:var(--overlay);display:flex;align-items:flex-end;justify-content:center}
.sheet{background:var(--bg);width:100%;max-width:720px;max-height:92%;border-radius:var(--r-card) var(--r-card) 0 0;display:flex;flex-direction:column;overflow:hidden;padding-bottom:env(safe-area-inset-bottom,0px)}
.sheet .sh{display:flex;align-items:center;padding:12px 16px 8px;gap:8px}
.sheet .sh h2{font-size:var(--t-body);font-weight:600;margin:0;flex:1;text-align:center;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sheet .sh .navbtn{min-width:70px}
.sheet .sb{overflow-y:auto;padding:4px 16px 24px;display:grid;grid-template-columns:minmax(0,1fr);grid-auto-rows:max-content;gap:var(--space-section);align-content:start}
.grab{width:36px;height:5px;border-radius:3px;background:var(--fg3);opacity:.5;margin:6px auto 0}
@media (prefers-reduced-motion:no-preference){.sheet{animation:up .28s cubic-bezier(.2,.8,.2,1)}@keyframes up{from{transform:translateY(40px);opacity:.6}}.bar > i{transition:width .35s ease}.ringarc{transition:stroke-dasharray .5s ease}}
.toast{position:fixed;left:50%;top:calc(12px + env(safe-area-inset-top,0px));transform:translateX(-50%);z-index:30;background:var(--card);color:var(--fg);box-shadow:0 6px 24px rgba(0,0,0,.16),0 0 0 .5px var(--sep);padding:10px 16px;border-radius:999px;font-size:var(--t-sub);font-weight:500;max-width:calc(100vw - 32px)}
@media (max-width:380px){.lt h1{font-size:30px}}
/* v4 : tuiles & visuels */
.title1{font-family:var(--rounded);font-size:var(--t-title1);font-weight:700;letter-spacing:-.02em;line-height:1.1}
.kicker{display:inline-flex;align-items:center;gap:6px}
.kicker svg{width:16px;height:16px}
.legend .it{appearance:none;border:0;background:none;padding:0;text-align:left;cursor:default}
.legend .lk{cursor:pointer}
.legend .k{display:inline-flex;align-items:center;gap:5px}
.legend .k svg{width:15px;height:15px}
.tiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-grid)}
.tile{appearance:none;border:0;padding:var(--card-pad-c);display:grid;grid-template-columns:minmax(0,1fr);overflow-wrap:anywhere;hyphens:auto;gap:var(--card-gap-c);text-align:left;min-width:0;color:var(--fg);align-content:start}
button.tile{cursor:pointer}
button.tile:active{transform:scale(.98)}
.th{display:flex;align-items:center;gap:6px;font-size:var(--t-sub);font-weight:600;min-width:0}
.th > span:first-of-type{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.th svg{width:17px;height:17px;flex:none}
.th .tr{margin-left:auto;color:var(--fg3);display:inline-flex}
.th .tr .chev-r{width:12px;height:12px}
.okdot{width:18px;height:18px;border-radius:50%;background:var(--green);color:#fff;display:grid;place-items:center}
.okdot svg{width:12px;height:12px;stroke-width:3}
.tb{display:flex;align-items:flex-end;justify-content:space-between;gap:6px;min-height:40px}
.tv{display:flex;align-items:baseline;gap:4px;min-width:0;flex:0 1 auto}
.tv .n{font-family:var(--rounded);font-size:var(--n-l);font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums;line-height:1;white-space:nowrap}
.tv .n small{font-size:var(--t-sub);color:var(--fg2);font-weight:600}
.tv .u{font-size:var(--t-sub);color:var(--fg2);font-weight:500}
.tile.compact .tv .n{font-size:var(--n-s);white-space:normal;min-width:0}
.ts{font-size:var(--t-cap);color:var(--fg2);font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.spark{flex:1 1 0;min-width:0;max-width:96px;height:auto}
.minibars{display:flex;align-items:flex-end;gap:3px;height:34px;flex:1 1 0;min-width:0;max-width:90px}
.minibars i{flex:1;border-radius:3px;min-height:3px}
.mring{width:40px;height:40px;flex:none}
.glasses{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}
.gl{appearance:none;border:1px solid transparent;border-radius:12px;background:var(--fill);padding:8px;cursor:pointer;min-width:44px;min-height:44px;display:grid;place-items:center}
.gl.on{background:color-mix(in srgb,var(--teal) 12%,var(--card))}
.gl[aria-pressed="true"]{border-color:var(--teal);box-shadow:inset 0 0 0 1px var(--teal)}
.gl svg{width:20px;height:26px;display:block}
.water-help{margin:0;font-size:var(--t-cap);color:var(--fg2)}
/* Nutrition : actions contextuelles et mesures compactes, inspirées des listes iOS. */
.nutrition-methods .main{text-align:left;font-weight:600;letter-spacing:-.01em}
.nutrition-methods .rowi{min-height:52px;gap:12px}
.nutrition-methods .qs{width:36px;height:36px;border-radius:11px;background:color-mix(in srgb,var(--accent) 10%,var(--card))}
.recipe-access{justify-self:end;min-height:44px;padding:8px 4px}
.food-entry{display:flex;align-items:center;gap:0;border-radius:22px;background:var(--card);box-shadow:0 2px 10px rgba(0,0,0,.025);padding:4px}
.food-primary{appearance:none;border:0;background:none;padding:12px;display:flex;align-items:center;gap:12px;flex:1;min-width:0;text-align:left;cursor:pointer;border-radius:18px}
.food-entry-icon{display:grid;place-items:center;flex:none;width:42px;height:42px;border-radius:14px;color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,var(--card))}
.food-entry-icon svg{width:23px;height:23px}
.food-entry-copy{display:grid;gap:3px;min-width:0;flex:1}
.food-entry-caption{font-size:var(--t-cap);color:var(--fg2);letter-spacing:.01em}
.food-entry-title{font-size:var(--t-body);font-weight:600;letter-spacing:-.015em;line-height:1.25}
.food-primary > .chev-r{flex:none}
.food-more{appearance:none;border:0;border-left:1px solid var(--fill);background:none;color:var(--accent);font-size:26px;font-weight:700;min-width:44px;min-height:44px;border-radius:0 16px 16px 0;cursor:pointer;align-self:center}
.nutrition-water{border-radius:22px;gap:12px;box-shadow:0 2px 10px rgba(0,0,0,.025)}
.nw-heading{display:flex;align-items:center;gap:7px;color:var(--accent)}
.nw-heading h2{margin:0;font-size:var(--t-sub);font-weight:600;letter-spacing:-.01em}
.nw-icon{display:flex}.nw-icon svg{width:18px;height:18px}
.nw-reading{display:flex;align-items:baseline;justify-content:space-between;gap:8px;flex-wrap:wrap}
.nw-reading strong{font-size:var(--t-large);font-family:var(--rounded);font-weight:700;letter-spacing:-.035em;line-height:1.15;font-variant-numeric:tabular-nums}
.nw-reading small{font-size:var(--t-body);font-weight:500;letter-spacing:0;color:var(--fg2)}
.nw-reading > span,.nw-actions > span{font-size:var(--t-cap);color:var(--fg2)}
.nw-progress{height:6px;border-radius:999px;background:var(--fill);overflow:hidden}
.nw-progress i{display:block;height:100%;border-radius:inherit;background:var(--accent)}
.nw-actions{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}
.nw-actions > div{display:flex;gap:6px;margin-left:auto}
.water-step{appearance:none;border:0;min-height:44px;min-width:44px;border-radius:999px;cursor:pointer;font-size:var(--t-sub);font-weight:600}
.water-minus{background:var(--fill);color:var(--fg);font-size:22px}
.water-plus{padding:8px 16px;background:color-mix(in srgb,var(--accent) 11%,var(--card));color:var(--accent)}
.water-step:disabled{opacity:.4;cursor:default}
.nutrition-supp-section{display:grid;gap:8px}
.nutrition-supp-section h2{margin:0 4px;font-size:var(--t-sub);font-weight:600;color:var(--fg2);letter-spacing:-.01em}
.nutrition-supp-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,10em),1fr));gap:8px}
.nutrition-supp{appearance:none;border:0;min-height:52px;padding:12px 14px;border-radius:16px;background:var(--card);display:flex;align-items:center;gap:10px;text-align:left;cursor:pointer;font-size:var(--t-sub);font-weight:500}
.nutrition-supp > span:last-child{min-width:0;overflow-wrap:anywhere}
.ns-check{display:grid;place-items:center;flex:none;width:24px;height:24px;border-radius:50%;color:var(--fg2);background:var(--fill)}
.ns-check svg{width:14px;height:14px}
.nutrition-supp.on .ns-check{background:var(--green-t);color:#fff}
.sheet.nutrition-sheet{container-type:inline-size;background:color-mix(in srgb,var(--bg) 94%,transparent);backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);border-top:1px solid color-mix(in srgb,var(--card) 80%,transparent)}
.nutrition-sheet .sh h2{white-space:normal;overflow:visible;overflow-wrap:anywhere;line-height:1.2}
@container (max-width:14em){.nutrition-sheet .sh{display:grid;grid-template-columns:auto minmax(0,1fr);gap:12px}.nutrition-sheet .sh > span:last-child{display:none}}
.food-primary:active,.food-more:active,.nutrition-methods button:active,.nutrition-supp:active,.water-step:active{background:var(--fill);transform:scale(.98)}
@media (prefers-reduced-motion:reduce){.food-primary:active,.food-more:active,.nutrition-methods button:active,.nutrition-supp:active,.water-step:active{transform:none}}
@media (prefers-reduced-transparency:reduce){.sheet.nutrition-sheet{background:var(--bg);backdrop-filter:none;-webkit-backdrop-filter:none}}
@media (prefers-contrast:more){.food-entry,.nutrition-water,.nutrition-supp,.sheet.nutrition-sheet{border:1px solid var(--fg2);box-shadow:none}.sheet.nutrition-sheet{background:var(--bg)}}
.session-muscles summary{cursor:pointer;min-height:44px;align-content:center;font-weight:600}
.session-muscles[open] summary{margin-bottom:12px}
.session-overview .hc-stats{flex-wrap:wrap}
.hero-card{appearance:none;border:0;width:100%;text-align:left;color:var(--fg);cursor:pointer;border-radius:var(--r-feature);padding:var(--card-pad);display:grid;grid-template-columns:1fr 92px;gap:12px;align-items:center;background:linear-gradient(140deg,color-mix(in srgb,var(--accent) 22%,var(--card)) 0%,color-mix(in srgb,var(--purple) 10%,var(--card)) 60%,var(--card) 100%);box-shadow:var(--shadow)}
.hero-card.static{cursor:default;grid-template-columns:1fr}
.hero-card.rest-card{cursor:default;grid-template-columns:1fr;background:linear-gradient(140deg,color-mix(in srgb,var(--purple) 16%,var(--card)),var(--card))}
.hc-l{display:grid;gap:10px;min-width:0}
.hc-map svg{width:100%;height:auto;display:block}
.hc-stats{display:flex;gap:14px;font-size:var(--t-foot);color:var(--fg2)}
.hc-stats b{font-family:var(--rounded);font-size:var(--n-s);color:var(--fg);margin-right:3px}
.cta{display:inline-flex;align-items:center;gap:4px;background:var(--accent);color:var(--on-accent);font-weight:600;border-radius:var(--r-pill);padding:8px 14px;justify-self:start;font-size:var(--t-sub)}
.cta .chev-r{color:var(--on-accent)}
.wdots{display:flex;gap:6px}
.wd{display:grid;justify-items:center;gap:3px}
.wd i{width:22px;height:22px;border-radius:50%;background:var(--fill);display:block}
.wd b{font-size:var(--t-cap2);color:var(--fg2);font-weight:600}
.wd.done i{background:var(--green)}
.wd.plan i{background:transparent;border:2px solid var(--accent)}
.wd.miss i{background:transparent;border:2px solid var(--red)}
.wd.rest i{transform:scale(.55)}
.wd.now b{color:var(--accent)}
.sups{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--space-grid)}
.sup{appearance:none;border:0;background:none;display:grid;justify-items:center;gap:6px;cursor:pointer;padding:0;color:var(--fg)}
.sup .sc{width:58px;height:58px;border-radius:50%;background:var(--card);box-shadow:var(--shadow),inset 0 0 0 1.5px var(--sep);display:grid;place-items:center;color:var(--fg2);position:relative}
.sup .sc svg{width:24px;height:24px}
.sup.on .sc{background:var(--green);color:#fff;box-shadow:none}
.sup .sl{font-size:var(--t-cap);font-weight:500;color:var(--fg2);text-align:center;overflow-wrap:anywhere;hyphens:auto}
.badge{position:absolute;top:-2px;right:-2px;background:var(--orange);color:#fff;font-size:10px;font-weight:700;font-style:normal;border-radius:999px;padding:2px 5px}
.crit{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-grid)}
.cr{padding:var(--card-pad-c);display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.cr > div{min-width:0;overflow-wrap:anywhere}
.cv{font-family:var(--rounded);font-size:var(--n-s);font-weight:700;font-variant-numeric:tabular-nums}
.cl{font-size:var(--t-cap);color:var(--fg2)}
.donutwrap{display:grid;grid-template-columns:minmax(130px,170px) 1fr;gap:16px;align-items:center}
.donutwrap > svg{width:100%;height:auto;display:block}
.mc .mring{width:40px;height:40px;flex:none}
.mc{min-width:0}
.mv{white-space:nowrap}
.mchips{display:grid;gap:10px}
.mc{display:flex;gap:10px;align-items:center}
.mv{font-family:var(--rounded);font-size:var(--n-s);font-weight:700;font-variant-numeric:tabular-nums}
.mv small{font-size:var(--t-foot);color:var(--fg2);font-weight:500}
.ml{font-size:var(--t-cap);font-weight:600}
@media (max-width:380px){.donutwrap{grid-template-columns:120px 1fr;gap:10px}.mv{font-size:17px}}
.meal{padding:var(--card-pad-c) var(--card-pad);display:grid;gap:var(--card-gap)}
.mh{display:flex;align-items:center;gap:10px}
.mi{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;flex:none}
.mi svg{width:20px;height:20px}
.mt{font-weight:600;overflow-wrap:anywhere;hyphens:auto}
.addc{appearance:none;border:0;width:34px;height:34px;border-radius:50%;background:var(--accent);color:var(--on-accent);display:grid;place-items:center;cursor:pointer;flex:none}
.addc svg{width:18px;height:18px;stroke-width:2.6}
.items{display:grid;gap:2px}
.fi{display:grid;grid-template-columns:1fr auto auto 26px;gap:10px;align-items:center;font-size:var(--t-sub);padding:5px 0;border-top:.5px solid var(--sep)}
.fi:first-child{border-top:0}
.fn{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fg{color:var(--fg2);font-size:var(--t-foot);font-variant-numeric:tabular-nums}
.fk{font-variant-numeric:tabular-nums;font-weight:600;min-width:3ch;text-align:right}
.fx{appearance:none;border:0;background:var(--fill);width:24px;height:24px;border-radius:50%;color:var(--fg2);cursor:pointer;font-size:15px;line-height:1}
.meal .chips.scroll{margin-inline:calc(-1 * var(--card-pad));padding-inline:var(--card-pad)}
.iconb{appearance:none;border:0;width:32px;height:32px;border-radius:50%;background:var(--fill);color:var(--accent);display:grid;place-items:center;cursor:pointer}
.iconb svg{width:16px;height:16px}
.iconb:disabled{opacity:.3;cursor:default}
.mgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px}
.mg{background:var(--fill2);border-radius:var(--r-md);padding:8px 10px;display:grid;gap:3px}
.mgn{font-family:var(--rounded);font-size:var(--n-s);font-weight:700;font-variant-numeric:tabular-nums}
.mgl{font-size:var(--t-cap);color:var(--fg2)}
.mgb{height:4px;background:var(--fill);border-radius:2px;overflow:hidden}
.mgb i{display:block;height:100%}
.hscroll{display:flex;gap:var(--space-grid);overflow-x:auto;scrollbar-width:none;margin-inline:-16px;padding-inline:16px;padding-block:2px 6px}
.hscroll::-webkit-scrollbar{display:none}
.rec{appearance:none;border:0;flex:none;width:150px;padding:var(--card-pad-c);display:grid;gap:var(--card-gap-c);text-align:left;cursor:pointer;color:var(--fg)}
.rec .ri{color:var(--orange)}
.rec .ri svg{width:20px;height:20px}
.rec .rv{font-family:var(--rounded);font-size:var(--n-m);font-weight:700;font-variant-numeric:tabular-nums}
.rec .rv small{font-size:var(--t-foot);color:var(--fg2)}
.rec .rn{font-size:var(--t-foot);font-weight:600;line-height:1.2;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.rec .rd{font-size:var(--t-cap);color:var(--fg2)}
.sgrid,.pgrid2{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-grid)}
.scard{appearance:none;border:0;padding:var(--card-pad-c);display:grid;grid-template-columns:44px 1fr;gap:10px;align-items:center;text-align:left;cursor:pointer;color:var(--fg);min-width:0}
.smap svg{width:100%;height:auto;display:block}
.sinfo{min-width:0;display:grid;gap:2px}
.sdate{font-size:var(--t-cap);color:var(--fg2)}
.stitle{font-weight:700}
.schips{display:flex;flex-wrap:wrap;gap:4px 8px;font-size:var(--t-cap);color:var(--fg2)}
.pcard{appearance:none;border:0;padding:var(--card-pad-c);display:grid;gap:var(--card-gap-c);text-align:left;cursor:pointer;color:var(--fg)}
.pcard.dim{opacity:.55}
.pmaps{display:grid;grid-template-columns:1fr 1fr;gap:4px;max-width:120px}
.pmaps svg{width:100%;height:auto;display:block}
.ptitle{font-family:var(--rounded);font-size:var(--t-title3);font-weight:700}
.psub{font-size:var(--t-foot);color:var(--fg2)}
.wdays{display:flex;gap:6px;flex-wrap:wrap}
.wday{display:grid;justify-items:center;gap:4px}
.wday b{font-size:var(--t-cap2);color:var(--fg2)}
.wday i{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;font-style:normal;font-weight:700;font-size:14px;background:var(--fill);color:var(--fg3)}
.wday.on i{background:var(--accent);color:var(--on-accent)}
.rules{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-grid)}
@media (max-width:480px){.rules{grid-template-columns:1fr}}
.rule{padding:var(--card-pad-c);display:grid;gap:var(--card-gap-c)}
.rule svg{width:20px;height:20px;color:var(--accent)}
.rule b{font-size:var(--t-sub)}
.rule span{font-size:var(--t-foot);color:var(--fg2)}
.dotsel{display:flex;gap:6px;padding-top:6px}
.dotsel button{appearance:none;border:0;width:22px;height:22px;border-radius:50%;background:var(--fill);cursor:pointer;padding:0}
.dotsel button.on{background:var(--c)}
.empty-v{display:grid;justify-items:center;gap:8px;padding:18px 0;color:var(--fg3);font-size:var(--t-sub);text-align:center}
.empty-v svg{width:30px;height:30px}
.bigstep{display:flex;align-items:center;justify-content:center;gap:18px;padding:12px 0}
.bigstep button{appearance:none;border:0;width:56px;height:56px;border-radius:50%;background:var(--card);box-shadow:var(--shadow);font-size:28px;color:var(--accent);cursor:pointer}
.bigstep .bv{font-family:var(--rounded);font-size:var(--n-xxl);font-weight:700;font-variant-numeric:tabular-nums;min-width:4ch;text-align:center;letter-spacing:-.02em}
.bigstep .bu{font-size:var(--t-body);color:var(--fg2)}

/* v5 : séance guidée & photo d'assiette */
body.running{overflow:hidden}
.runner{position:fixed;inset:0;z-index:15;background:var(--bg);display:flex;flex-direction:column;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}
.rtop{display:flex;align-items:center;gap:10px;padding:10px 16px 6px;max-width:720px;width:100%;margin:0 auto}
.rtt{flex:1;text-align:center;display:grid;line-height:1.2}
.rtt b{font-size:16px}
.rtt span{font-size:13px;color:var(--fg2);font-variant-numeric:tabular-nums}
.rbtn{appearance:none;border:0;width:40px;height:40px;border-radius:50%;background:var(--fill);color:var(--fg);display:grid;place-items:center;cursor:pointer;flex:none}
.rbtn svg{width:20px;height:20px}
.rbtn.ghost{width:52px;height:52px;background:var(--card);box-shadow:var(--shadow);color:var(--accent)}
.rbtn:disabled{opacity:.3;cursor:default}
.rprog{display:flex;gap:4px;padding:4px 16px 8px;max-width:720px;width:100%;margin:0 auto}
.rprog i{flex:1;height:5px;border-radius:3px;background:var(--fill);overflow:hidden}
.rprog i b{display:block;height:100%;background:var(--green)}
.rprog i.cur{outline:1.5px solid var(--accent);outline-offset:1px}
.rbody{flex:1;overflow-y:auto;padding:8px 16px 16px;display:grid;gap:16px;align-content:start;max-width:720px;width:100%;margin:0 auto}
.rbody.center{justify-items:center;text-align:center;align-content:center}
.rex{display:flex;gap:14px;align-items:center}
.rpict{width:96px;height:120px;flex:none;background:var(--card);border-radius:20px;display:grid;place-items:center;box-shadow:var(--shadow)}
.rpict svg{width:84px;height:110px}
.rpict.sm{width:56px;height:68px;border-radius:14px}
.rpict.sm svg{width:48px;height:62px}
.rinfo{display:grid;gap:6px;min-width:0}
.rname{font-family:var(--rounded);font-size:26px;font-weight:700;letter-spacing:-.02em;line-height:1.15}
.rset{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:15px;color:var(--fg2)}
.rset b{font-family:var(--rounded);font-size:22px;color:var(--fg)}
.rsug{background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent);border-radius:14px;padding:10px 14px;font-weight:500;font-size:15px}
.rlast{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--fg2)}
.rlast svg{width:16px;height:16px;flex:none}
.runner .fbox{background:var(--card);box-shadow:var(--shadow);padding:14px 10px}
.runner .fbox input{font-size:40px}
.runner .fbox .ctl button{width:48px;height:48px;background:var(--fill2)}
.rfoot{display:flex;gap:12px;align-items:center;padding:10px 16px 14px;max-width:720px;width:100%;margin:0 auto}
.rmain{flex:1;padding:17px;font-size:18px;border-radius:16px}
.bigring{position:relative;width:min(240px,62vw);aspect-ratio:1}
.bigring svg{width:100%;height:100%;display:block}
.brv{position:absolute;inset:0;display:grid;place-items:center;font-family:var(--rounded);font-size:52px;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.rnext{display:flex;gap:12px;align-items:center;text-align:left;background:var(--card);border-radius:18px;padding:12px 16px;box-shadow:var(--shadow);width:100%;max-width:420px}
.rnn{font-weight:700;font-size:17px}
.okbig{width:64px;height:64px;border-radius:50%;background:var(--green);color:#fff;display:grid;place-items:center}
.okbig svg{width:34px;height:34px;stroke-width:3}
.slid{display:grid;grid-template-columns:70px 1fr 24px;gap:10px;align-items:center;font-size:15px}
.slid b{font-variant-numeric:tabular-nums;text-align:right}
.exstrip{display:grid;gap:8px}
.exs{display:grid;grid-template-columns:40px 1fr auto;gap:10px;align-items:center;font-size:15px}
.exs .pict{width:40px;height:40px;background:var(--fill2);border-radius:10px;display:grid;place-items:center}
.exs .pict svg{width:34px;height:34px}
.exs b{font-size:13px;color:var(--fg2);font-weight:500;font-variant-numeric:tabular-nums}
.setpips{display:flex;gap:4px;margin-top:4px}
.setpips i{width:16px;height:5px;border-radius:3px;background:var(--fill)}
.setpips i.d{background:var(--green)}
.addc.cam{background:var(--fill);color:var(--accent)}
.platepick{display:block;position:relative;border-radius:var(--r-feature);overflow:hidden;background:var(--card);box-shadow:var(--shadow);cursor:pointer;aspect-ratio:4/3;max-width:100%}
.platepick img{width:100%;height:100%;object-fit:cover;display:block}
.platepick input{position:absolute;inset:0;opacity:0;cursor:pointer}
.pp-empty{position:absolute;inset:0;display:grid;place-items:center;align-content:center;gap:10px;color:var(--accent)}
.pp-empty svg{width:44px;height:44px}
.pstats{display:grid;grid-template-columns:repeat(4,1fr);text-align:center}
.pstats b{display:block;font-family:var(--rounded);font-size:24px;font-variant-numeric:tabular-nums}
.pstats span{font-size:12px;color:var(--fg2)}
.pitems{display:grid;gap:4px}
.pit{display:grid;grid-template-columns:28px 1fr 84px;gap:10px;align-items:center;padding:6px 0;border-top:.5px solid var(--sep)}
.pit.off .pin{opacity:.45}
.pin{min-width:0}
.pin .s2{font-size:13px;color:var(--fg2)}
.pg{display:flex;align-items:center;gap:4px;font-size:14px;color:var(--fg2)}
.pg input{appearance:none;border:0;background:var(--fill);color:var(--fg);font:inherit;font-size:16px;border-radius:8px;padding:7px 6px;width:100%;min-width:0;text-align:center;font-variant-numeric:tabular-nums}
.spin{width:28px;height:28px;border-radius:50%;border:3px solid var(--fill);border-top-color:var(--accent);animation:sp 1s linear infinite}
@keyframes sp{to{transform:rotate(360deg)}}

/* v6 : écran de séance */
.runner{background:radial-gradient(130% 55% at 50% 0%,color-mix(in srgb,var(--accent) 16%,var(--bg)) 0%,var(--bg) 62%)}
.rtop,.rprog{max-width:560px}
.rwrap{flex:1;min-height:0;display:flex;flex-direction:column;max-width:560px;width:100%;margin:0 auto}
.rstage{flex:1;min-height:0;overflow-y:auto;display:grid;justify-items:center;align-content:center;gap:16px;padding:6px 20px 14px;text-align:center}
.rphoto{position:relative;width:100%;max-width:420px;aspect-ratio:3/2;border-radius:24px;overflow:hidden;background:#fff;box-shadow:0 10px 30px rgba(0,0,0,.18)}
.rphoto img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
.rphoto img.b{animation:xfade 2.4s ease-in-out infinite}
@keyframes xfade{0%,35%{opacity:0}50%,85%{opacity:1}100%{opacity:0}}
@media (prefers-reduced-motion:reduce){.rphoto img.b{animation:none;opacity:0}}
.ph-badge{position:absolute;right:10px;top:10px;width:44px;height:56px;border-radius:12px;background:rgba(28,28,30,.82);display:grid;place-items:center}
.ph-badge svg{width:38px;height:50px}
.ph-lab{position:absolute;left:10px;bottom:10px;background:rgba(28,28,30,.72);color:#fff;font-size:12px;font-weight:600;border-radius:999px;padding:4px 10px;display:inline-flex;align-items:center;gap:6px}
.ph-lab i{width:6px;height:6px;border-radius:50%;background:#34C759}
.rfig{position:relative;width:min(230px,56vw);aspect-ratio:1}
.rfig .sring{position:absolute;inset:0;width:100%;height:100%}
.rfig-b{position:absolute;inset:13% 25%;display:grid;place-items:center}
.rfig-b svg{width:100%;height:100%}
.rhead{display:grid;justify-items:center;gap:8px}
.rhead .rname{font-size:30px;text-wrap:balance}
.rpills{display:flex;gap:6px;flex-wrap:wrap;justify-content:center}
.link-pill{border:0;cursor:pointer;color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,transparent)}
.link-pill .chev-r{width:10px;height:10px;color:var(--accent)}
.rsetline{display:flex;gap:12px;align-items:center;text-align:left;background:var(--card);border-radius:18px;padding:12px 16px;width:100%;max-width:420px;box-shadow:var(--shadow)}
.rsetring{position:relative;width:52px;height:52px;flex:none}
.rsetring svg{width:100%;height:100%}
.rsetring b{position:absolute;inset:0;display:grid;place-items:center;font-family:var(--rounded);font-size:20px}
.rsl1{font-weight:700;font-size:16px}
.rsl2{font-size:14px;color:var(--accent);margin-top:2px}
.rsl3{font-size:13px;color:var(--fg2);display:flex;align-items:center;gap:5px;margin-top:4px}
.rsl3 svg{width:14px;height:14px;flex:none}
.rpanel{background:var(--card);border-radius:28px 28px 0 0;padding:18px 18px 12px;display:grid;gap:14px;box-shadow:0 -10px 30px rgba(0,0,0,.10)}
@media (min-width:600px){.rpanel{border-radius:28px;margin-bottom:16px}}
.rvals{display:grid;grid-template-columns:1fr 1px 1fr;align-items:center}
.rsep{width:1px;height:76%;background:var(--sep);justify-self:center}
.rval{display:grid;justify-items:center;gap:6px}
.rval .lab{font-size:12px;color:var(--fg2);font-weight:600;text-transform:uppercase;letter-spacing:.04em}
.rnum{display:flex;align-items:baseline;justify-content:center;gap:4px;width:100%}
.rnum input{appearance:none;border:0;background:transparent;color:var(--fg);font-family:var(--rounded);font-size:52px;font-weight:700;letter-spacing:-.03em;text-align:right;width:3.2ch;min-width:0;padding:0;font-variant-numeric:tabular-nums}
.rnum input::placeholder{color:var(--fg3)}
.rnum small{font-size:16px;color:var(--fg2);font-weight:600}
.rsteps{display:flex;gap:14px}
.rsteps button{appearance:none;border:0;width:46px;height:46px;border-radius:50%;background:var(--fill);color:var(--fg);font-size:24px;cursor:pointer;display:grid;place-items:center}
.rsteps button:active{transform:scale(.94)}
.rrir{display:grid;gap:6px}
.rrir > span{font-size:12px;color:var(--fg2);font-weight:600;text-transform:uppercase;letter-spacing:.04em;text-align:center}
.runner .rfoot{padding:0;max-width:none}
.runner .rfoot .rbtn{width:52px;height:52px;background:var(--fill);color:var(--accent)}
.rmain{display:inline-flex;align-items:center;justify-content:center;gap:8px}
.rmain svg{width:20px;height:20px;stroke-width:2.6}
.rmain .chev-r{color:currentColor}
.rnext{max-width:none;box-shadow:none;background:var(--fill2);padding:10px 12px}
.rnimg{width:72px;height:48px;object-fit:contain;background:#fff;border-radius:10px;flex:none}
.thumb{width:100%;height:100%;object-fit:contain;background:#fff;border-radius:inherit;display:block}
.exphotos{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.exphotos figure{margin:0;display:grid;gap:4px}
.exphotos img{width:100%;aspect-ratio:3/2;object-fit:contain;background:#fff;border-radius:var(--r-md);display:block}
.exphotos figcaption{font-size:var(--t-cap);color:var(--fg2);text-align:center}


/* v6 : barre d'onglets sans texte & mode démo */
nav.tabbar button{padding:10px 2px 12px}
nav.tabbar button svg{width:28px;height:28px}
.demopill{position:fixed;left:50%;transform:translateX(-50%);top:calc(8px + env(safe-area-inset-top,0px));z-index:9;display:flex;align-items:center;gap:8px;background:var(--orange);color:#fff;font-size:13px;font-weight:600;border-radius:999px;padding:5px 6px 5px 12px;box-shadow:0 4px 14px rgba(0,0,0,.2)}
.demopill svg{width:14px;height:14px}
.demopill button{appearance:none;border:0;background:rgba(255,255,255,.25);color:#fff;font-weight:600;font-size:12px;border-radius:999px;padding:4px 10px;cursor:pointer}

/* v7 : séance adaptée à la hauteur de chaque iPhone */
.runner{height:100vh;height:100dvh}
.rtop{padding-block:clamp(4px,1vh,10px) 4px}
.rbtn{width:clamp(34px,4.8vh,40px);height:clamp(34px,4.8vh,40px)}
.rprog{padding-block:2px clamp(4px,1vh,8px)}
.rstage{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:clamp(8px,1.8vh,16px);padding:clamp(4px,1vh,8px) 16px clamp(8px,1.5vh,14px);overflow:hidden}
.rstage > *{flex:none}
.runner{--ph:36dvh}
.rphoto{flex:none;width:auto;max-width:100%;height:min(var(--ph),calc((100vw - 32px) / 1.5),380px);min-height:90px;aspect-ratio:3/2}
.rfig{flex:0 1 auto;width:auto;height:min(230px,30dvh);max-width:56vw;aspect-ratio:1}
.rhead{gap:clamp(4px,.8vh,8px)}
.rhead .rname{font-size:clamp(20px,3.3vh,30px);line-height:1.12}
.runner .kicker{font-size:clamp(11px,1.5vh,13px)}
.rsetline{padding:clamp(8px,1.3vh,12px) 14px;gap:10px}
.rsetring{width:clamp(38px,5.6vh,52px);height:clamp(38px,5.6vh,52px)}
.rsl1{font-size:clamp(14px,2vh,16px)}
.rsl2{font-size:clamp(12.5px,1.75vh,14px)}
.rpanel{padding:clamp(10px,1.8vh,18px) 16px max(10px,env(safe-area-inset-bottom,0px));gap:clamp(8px,1.5vh,14px)}
@media (min-width:600px){.rpanel{padding-bottom:16px}}
.rnum input{font-size:clamp(34px,6.4vh,56px)}
.rnum small{font-size:clamp(13px,1.8vh,16px)}
.rsteps button{width:clamp(38px,5.4vh,48px);height:clamp(38px,5.4vh,48px);font-size:clamp(20px,2.8vh,24px)}
.rval{gap:clamp(2px,.7vh,6px)}
.rrir .seg button{padding-block:clamp(4px,.8vh,6px)}
.runner .rfoot .rbtn{width:clamp(44px,6.2vh,52px);height:clamp(44px,6.2vh,52px)}
.rmain{padding:clamp(12px,2vh,17px);font-size:clamp(16px,2.3vh,18px)}
.bigring{width:min(240px,34dvh,62vw)}
.brv{font-size:clamp(36px,6vh,52px)}
/* écrans courts (iPhone SE, mini, Safari avec barres) */
@media (max-height:740px){
  .rsl3,.ph-lab,.rhead .kicker{display:none}
  .runner{--ph:29dvh}
  .rrir > span{display:none}
}
@media (max-height:640px){
  .runner{--ph:23dvh}
  .rphoto{border-radius:16px}
  .ph-badge{display:none}
  .rpills .pill:not(.link-pill):not(.blue){display:none}
  .rsetline .rsl2{display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}
}
/* écrans larges et hauts : plus d'air */
@media (min-height:880px){.runner{--ph:38dvh}}


.rvals.one{grid-template-columns:1fr}
.rvals.one .rnum input{width:3ch}
.lestbtn{appearance:none;border:0;background:none;color:var(--accent);font-size:14px;font-weight:600;cursor:pointer;justify-self:center;padding:2px 8px;margin-top:-4px}



/* v11b : séance guidée */
.r2{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;display:flex;flex-direction:column;align-items:stretch;gap:clamp(8px,1.4vh,14px);padding:clamp(4px,1vh,10px) 16px max(10px,env(safe-area-inset-bottom,0px));max-width:560px;width:100%;margin:0 auto;box-sizing:border-box}
.rh{display:grid;gap:2px}
.rh-k{font-size:13px;font-weight:600;color:var(--fg2);letter-spacing:.01em}
.rh-t{display:flex;align-items:flex-start;gap:10px}
.rh-t .rname{flex:1;min-width:0;margin:0;font-family:var(--rounded);font-size:clamp(22px,3.3vh,30px);font-weight:700;letter-spacing:-.02em;line-height:1.12;text-wrap:balance}
.rinfo{appearance:none;border:0;background:var(--fill);color:var(--accent);width:36px;height:36px;border-radius:50%;display:grid;place-items:center;flex:none;cursor:pointer;margin-top:2px}
.rinfo svg{width:22px;height:22px}
.rvis{flex:1 1 auto;min-height:90px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;position:relative}
.rvis-in{position:relative;flex:1 1 auto;min-height:0;width:100%;max-height:420px}
.rvis-in img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
.rvis-in.pho{max-width:min(100%,520px);border-radius:22px;overflow:hidden;background:#fff}
.rvis-in.ill img{mix-blend-mode:multiply}
.rvis-in.pic{display:grid;place-items:center}
.rvis-in.pic svg{height:100%;max-height:260px;width:auto}
.rvis-in .fb{opacity:0}
@media (prefers-reduced-motion:no-preference){
 .rvis-in .fa{animation:fa 3.2s ease-in-out infinite}.rvis-in .fb{animation:fb 3.2s ease-in-out infinite}
 .rphase .pa{animation:pa 3.2s ease-in-out infinite}.rphase .pb{animation:pb 3.2s ease-in-out infinite}}
@keyframes fa{0%,44%{opacity:1}50%,94%{opacity:0}100%{opacity:1}}
@keyframes fb{0%,44%{opacity:0}50%,94%{opacity:1}100%{opacity:0}}
@keyframes pa{0%,46%{color:var(--fg);background:var(--fill)}50%,96%{color:var(--fg3);background:transparent}100%{color:var(--fg);background:var(--fill)}}
@keyframes pb{0%,46%{color:var(--fg3);background:transparent}50%,96%{color:var(--fg);background:var(--fill)}100%{color:var(--fg3);background:transparent}}
.rphase{display:flex;gap:4px;flex:none}
.rphase span{font-size:12px;font-weight:600;padding:3px 10px;border-radius:999px;color:var(--fg3)}
.rphase .pa{color:var(--fg);background:var(--fill)}
.rcard{background:var(--card);border-radius:var(--r-feature);padding:clamp(var(--card-pad-c),1.8vh,var(--card-pad)) clamp(8px,2.5vw,var(--card-pad-c));display:grid;gap:clamp(8px,1.4vh,14px);box-shadow:var(--shadow);flex:none}
.rc-h{display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.rc-s{font-size:15px;color:var(--fg2)}
.rc-s b{font-family:var(--rounded);font-size:20px;color:var(--fg);margin-right:2px}
.rdots{display:flex;gap:5px;flex:1}
.rdots i{width:9px;height:9px;border-radius:50%;background:var(--fill)}
.rdots i.ok{background:var(--green)}
.rdots i.cur{background:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 25%,transparent)}
.rc-tg{font-size:13px;font-weight:600;color:var(--accent);background:color-mix(in srgb,var(--accent) 14%,transparent);padding:4px 10px;border-radius:999px;white-space:nowrap}
.rc-tip{font-size:clamp(13px,1.8vh,15px);color:var(--fg2);line-height:1.35;display:grid;gap:4px}
.rc-last{display:flex;align-items:center;gap:5px;font-size:13px;color:var(--fg3)}
.rc-last svg{width:14px;height:14px;flex:none}
.rc-in{display:grid;gap:10px;border-top:.5px solid var(--sep);padding-top:clamp(8px,1.4vh,14px)}
.rc-in.two{grid-template-columns:1fr 1fr}
.stp{display:grid;justify-items:center;gap:2px}
.stp .lab{font-size:12px;color:var(--fg2);font-weight:600;text-transform:uppercase;letter-spacing:.04em}
.stc{display:flex;align-items:center;justify-content:center;gap:clamp(6px,2vw,14px);width:100%}
.stc button{appearance:none;border:0;width:clamp(40px,5.4vh,48px);height:clamp(40px,5.4vh,48px);border-radius:50%;background:var(--fill);color:var(--fg);font-size:24px;cursor:pointer;display:grid;place-items:center;flex:none}
.stc button:active{transform:scale(.94)}
.r2 .rnum{width:auto;min-width:0}
.r2 .rnum input{font-size:clamp(34px,6vh,52px);width:2.6ch}
.rc-in.two .rnum input{font-size:clamp(30px,5vh,42px);width:2.8ch}
.rc-in.two .rnum small{font-size:13px}
.r2 .lestbtn{justify-self:center;margin-top:-4px}
.rc-rir{display:grid;gap:6px}
.rc-rir > span{font-size:12px;color:var(--fg2);font-weight:600;text-transform:uppercase;letter-spacing:.04em;text-align:center}
.r2 .rfoot{padding:0;max-width:none;flex:none}
@media (max-height:700px){.rc-tip .rc-last,.rh-k{display:none}.rphase{display:none}}
/* illustrations au trait : fond fondu dans la page */
img.thumb.ill,img.rnimg.ill,.exphotos.ill img{background:transparent;mix-blend-mode:multiply}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .rvis-in.ill img,:root:not([data-theme="light"]) img.thumb.ill,:root:not([data-theme="light"]) img.rnimg.ill,:root:not([data-theme="light"]) .exphotos.ill img{filter:invert(1);mix-blend-mode:screen}}
:root[data-theme="dark"] .rvis-in.ill img,:root[data-theme="dark"] img.thumb.ill,:root[data-theme="dark"] img.rnimg.ill,:root[data-theme="dark"] .exphotos.ill img{filter:invert(1);mix-blend-mode:screen}
.exphotos.ill{background:var(--card);border-radius:var(--r-card);padding:8px}

/* v11a : en-têtes, champs, feuilles, thème */
/* Colonne bornée : un titre long ne peut pas élargir la page (Chromium mobile agrandirait alors la zone de mise en page et sortirait la barre d’onglets de l’écran). */
.lt{padding-block:12px 4px;container-type:inline-size;grid-template-columns:minmax(0,1fr)}
.lt .hrow{display:flex;align-items:center;gap:10px;min-height:44px}
.lt .hrow h1{flex:1;min-width:0}
.lt .hact{display:flex;align-items:center;gap:8px;flex:none}
.lt .hnav{display:flex;align-items:center;min-height:32px;margin-left:-6px}
input.field,select.field,textarea.field{box-sizing:border-box;max-width:100%}
.sheet.tall{height:92%}
:root[data-theme="light"]{color-scheme:light}
.mmap svg{max-height:340px}

/* v11c : anti-débordement carte de série */
.r2,.rcard,.rc-in,.rc-in > *,.stp,.stc,.rc-h,.rc-tip{min-width:0}
.rcard{width:auto;align-self:stretch;box-sizing:border-box;overflow:hidden}
.rc-tip{overflow-wrap:anywhere}
.rc-last{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}
.rc-last svg{vertical-align:-2px;margin-right:4px}
.rc-s{white-space:nowrap}
.stc{gap:clamp(4px,1.5vw,12px)}
.stc button{width:clamp(36px,4.8vh,44px);height:clamp(36px,4.8vh,44px);font-size:22px}
.r2 .rnum{flex:0 1 auto}
.r2 .rnum input{width:2.3ch;max-width:100%}
.rc-in.two .rnum input{font-size:clamp(26px,4.2vh,36px);width:2.4ch}
.rc-in.two .rnum small{font-size:12px}
.rc-in.two .stp .lab{font-size:11px}

/* v12a : vignettes contraintes (Safari) */
.pict{position:relative;overflow:hidden;box-sizing:border-box}
.pict > img.thumb{position:absolute;inset:0;width:100%;height:100%;max-width:100%;max-height:100%;object-fit:contain;padding:3px;box-sizing:border-box}
.pict > svg{width:100%;height:100%;max-width:100%;max-height:100%}
.rnimg{width:72px;height:48px;max-width:72px;max-height:48px;flex:none;object-fit:contain;background:transparent}

/* v13a : accueil allégé, semaine type lisible */
.streakrow{width:100%;text-align:left;appearance:none;border:0;font:inherit;color:var(--fg)}
.streakrow .si{width:36px;height:36px;border-radius:10px;background:color-mix(in srgb,var(--green) 16%,transparent);color:var(--green);display:grid;place-items:center;flex:none}
.streakrow .si svg{width:20px;height:20px}
.streakrow > svg:last-child{color:var(--fg3);width:18px;height:18px}
.wdays{gap:4px}
.wday i{width:auto;min-width:40px;height:26px;padding:0 8px;border-radius:var(--r-pill);font-size:var(--t-cap)}
@media (max-width:380px){.wday i{min-width:34px;padding:0 6px;font-size:11px}}

/* v14a : coach hors barre d'onglets */
.coachb{color:var(--purple);background:color-mix(in srgb,var(--purple) 14%,transparent)}
nav.tabbar button{flex:1}

/* v15a : scan produit */
.scanb{appearance:none;border:0;width:44px;height:44px;border-radius:12px;background:var(--fill);color:var(--accent);display:grid;place-items:center;flex:none;cursor:pointer}
.scanb svg{width:24px;height:24px}
.scanpick{aspect-ratio:3/2}
.pp-empty small{font-size:var(--t-cap);color:var(--fg2);font-weight:500}
.prodcard{display:flex;gap:12px;align-items:center}
.prodimg{width:64px;height:64px;object-fit:contain;border-radius:12px;background:#fff;flex:none}
.badges{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}
.nsb{font-size:var(--t-cap);font-weight:700;color:#fff;padding:3px 9px;border-radius:var(--r-pill);letter-spacing:.02em}

/* v16a : nutrition */
.ftile{position:relative;border-radius:var(--r-card);overflow:hidden;color:#fff;height:96px}
.ftile.big{height:150px;border-radius:var(--r-feature)}
.ftile.xs{width:44px;height:44px;border-radius:12px;flex:none}
.ftile .fa,.ftile .fb{position:absolute;display:grid;place-items:center}
.ftile .fa{left:12%;top:14%;width:54%;height:72%}
.ftile .fb{right:8%;bottom:10%;width:34%;height:42%;opacity:.9}
.ftile.xs .fa{left:8%;top:8%;width:84%;height:84%}.ftile.xs .fb{display:none}
.ftile svg{width:100%;height:100%;filter:drop-shadow(0 2px 4px rgba(0,0,0,.18))}
.ftile::after{content:"";position:absolute;inset:0;background:radial-gradient(120% 90% at 100% 0%,rgba(255,255,255,.22),transparent 55%)}
.rcards{align-items:stretch}
/* cartes de recette : sélecteur limité à leur rangée (.rcard sert aussi à la carte de série de la séance guidée) */
.rcards .rcard{appearance:none;border:0;background:var(--card);color:var(--fg);text-align:left;border-radius:var(--r-feature);padding:8px 8px 10px;width:156px;flex:none;display:grid;gap:var(--card-gap-c);box-shadow:var(--shadow);cursor:pointer}
.rcards .rcard .rn{font-size:var(--t-foot);font-weight:600;line-height:1.2;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:2.4em;padding-inline:4px}
.rcards .rcard .rm{font-size:var(--t-cap);color:var(--fg2);padding-inline:4px;font-variant-numeric:tabular-nums}
.rtags{display:flex;gap:6px;flex-wrap:wrap}
.rtags .pill{display:inline-flex;align-items:center;gap:4px}.rtags .pill svg{width:13px;height:13px}
.insights{display:grid;gap:12px}
.ins{display:flex;gap:10px;align-items:flex-start;font-size:var(--t-sub);line-height:1.35}
.ins .ii{width:28px;height:28px;border-radius:8px;display:grid;place-items:center;flex:none;background:var(--fill2)}
.ins .ii svg{width:17px;height:17px}
.ins.adv{flex-wrap:wrap}.ins.adv .btn{margin-left:38px}
.pdist{display:flex;gap:8px;align-items:flex-end;position:relative;padding-bottom:26px;border-top:.5px solid var(--sep);padding-top:12px}
.pd{flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:3px;min-height:0}
.pd i{display:block;width:100%;max-width:38px;border-radius:6px 6px 3px 3px;flex:none}
.pd b{font-size:var(--t-cap);font-variant-numeric:tabular-nums}.pd span{font-size:var(--t-cap2);color:var(--fg2)}
.pdl{position:absolute;left:0;right:0;bottom:4px;display:flex;justify-content:space-between;font-size:var(--t-cap2);color:var(--fg3)}
.mline{display:grid;gap:4px;padding-top:8px;border-top:.5px solid var(--sep)}
.mline .mb{height:5px;border-radius:3px;background:var(--fill);overflow:hidden;display:block}.mline .mb i{display:block;height:100%;border-radius:3px}
.mline .num{font-size:var(--t-cap);color:var(--fg2)}
.meal.next{outline:1.5px solid color-mix(in srgb,var(--accent) 45%,transparent);outline-offset:-1.5px}
.wstats{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-grid);margin-bottom:12px}
.wstats > div{display:grid;gap:2px;background:var(--fill2);border-radius:var(--r-md);padding:10px 12px}
.wstats b{font-family:var(--rounded);font-size:var(--n-m);font-variant-numeric:tabular-nums}.wstats b small{font-size:13px;color:var(--fg2)}
.wstats span{font-size:var(--t-cap);color:var(--fg2)}.wstats i{font-style:normal;font-size:var(--t-cap);font-weight:600}
/* bouton + central */
nav.tabbar .in{align-items:center}
nav.tabbar button.tabadd{padding:4px 0 6px}
nav.tabbar button.tabadd span{width:50px;height:50px;border-radius:50%;background:var(--accent);color:var(--on-accent);display:grid;place-items:center;box-shadow:0 6px 16px color-mix(in srgb,var(--accent) 40%,transparent);transform:translateY(-6px)}
nav.tabbar button.tabadd span svg{width:26px;height:26px;stroke-width:2.6}
nav.tabbar button.tabadd:active span{transform:translateY(-6px) scale(.94)}
.qgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-grid)}
.qbig{appearance:none;border:0;color:var(--fg);overflow-wrap:anywhere;hyphens:auto;padding:var(--card-pad-c) 8px;display:grid;justify-items:center;gap:var(--card-gap-c);text-align:center;cursor:pointer}
.qbig .qi{width:46px;height:46px;border-radius:50%;color:#fff;display:grid;place-items:center}.qbig .qi svg{width:24px;height:24px}
.qbig b{font-size:var(--t-sub)}.qbig > span:last-child{font-size:var(--t-cap);color:var(--fg2);line-height:1.2}
.qs{width:28px;height:28px;display:grid;place-items:center;flex:none}.qs svg{width:22px;height:22px}

/* v17a : Safari — largeur des blocs de séance sans pourcentage */
.r2 > .rh,.r2 > .rvis,.r2 > .rcard,.r2 > .rfoot{width:auto;align-self:stretch;flex-shrink:0}
.r2 > .rvis{flex:1 1 auto}
.rcard{grid-template-columns:minmax(0,1fr)}
.rc-in.two{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}

/* v18a : activités + note produit */
.achips{display:grid;gap:8px;margin-top:10px}
.achip{appearance:none;border:0;color:var(--fg);padding:10px var(--card-pad-c);display:flex;align-items:center;gap:10px;text-align:left;cursor:pointer;font:inherit}
.achip .ai,.actweek .ai{width:32px;height:32px;border-radius:9px;background:color-mix(in srgb,var(--teal) 16%,transparent);color:var(--teal);display:grid;place-items:center;flex:none}
.achip .ai svg,.actweek .ai svg{width:20px;height:20px}
.achip > span:not(.ai){flex:1;min-width:0;font-size:var(--t-sub)}
.achip b{font-size:var(--t-foot);color:var(--fg2);font-weight:600;white-space:nowrap}
.actweek{display:flex;align-items:center;gap:10px;font-size:var(--t-sub)}
.agrid{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}
.abtn{appearance:none;border:0;color:var(--fg);padding:10px 4px 8px;display:grid;justify-items:center;gap:4px;cursor:pointer;font:inherit}
.abtn span{width:30px;height:30px;display:grid;place-items:center;color:var(--fg2)}.abtn span svg{width:26px;height:26px}
.abtn b{font-size:var(--t-cap2);font-weight:600;text-align:center;line-height:1.15}
.abtn.on{background:var(--accent);color:var(--on-accent)}.abtn.on span{color:var(--on-accent)}
.arow{display:grid;gap:6px;padding:8px 0}.arow + .arow{border-top:.5px solid var(--sep)}
.arow .lab{font-size:var(--t-cap);color:var(--fg2);font-weight:600;text-transform:uppercase;letter-spacing:.04em;text-align:center}.arow .lab small{text-transform:none;font-weight:500;letter-spacing:0}
.arow .rnum input{font-size:36px;width:3ch}
.btn.danger{color:var(--red)}
.scorecard{display:grid;gap:8px}
.sch{display:flex;gap:12px;align-items:center}
.scring{width:52px;height:52px;flex:none}
.rems{display:grid;gap:5px}
.rem{display:flex;align-items:center;gap:8px;font-size:var(--t-sub)}
.rem i{width:9px;height:9px;border-radius:50%;flex:none}

/* v18b : aperçu iPhone sur grand écran */
.island,.homebar{display:none}
html.frame,html.frame body{height:100%;overflow:hidden;background:#09090b}
/* Marge UA de 8 px remplacée par un padding équivalent : même position du téléphone, mais racine de 100 % pile, donc jamais défilée par un focus. */
html.frame body{display:grid;place-items:center;margin:0;padding:16px 0 0;box-sizing:border-box}
/* #phone transformé = repère des position:fixed (barre, feuilles, séance) : il ne doit pas défiler, sinon ils partent avec le contenu. Le défilement est porté par #app. */
html.frame #phone{position:relative;width:393px;height:852px;overflow:hidden;transform:translateZ(0) scale(var(--pscale,1));transform-origin:center;border-radius:54px;background:var(--bg);box-shadow:0 0 0 11px #1c1c1e,0 0 0 13px #4a4a4e,0 0 0 14px #1c1c1e,0 40px 90px rgba(0,0,0,.65)}
html.frame #app{height:100%;box-sizing:border-box;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:none;scroll-padding-bottom:calc(var(--tabbar-h,0px) + 8px)}
html.frame #app::-webkit-scrollbar{display:none}
html.frame .island{display:block;position:fixed;left:50%;top:11px;transform:translateX(-50%);width:124px;height:36px;border-radius:20px;background:#000;z-index:40;pointer-events:none}
html.frame .homebar{display:block;position:fixed;left:50%;bottom:8px;transform:translateX(-50%);width:138px;height:5px;border-radius:3px;background:var(--fg);opacity:.9;z-index:40;pointer-events:none}
html.frame #app{padding-top:50px;padding-bottom:max(140px,calc(var(--tabbar-h,0px) + 40px))}
html.frame .runner{padding-top:50px;padding-bottom:18px;height:auto;box-sizing:border-box}
html.frame .demopill{top:58px}
html.frame .toast{top:62px}
html.frame nav.tabbar{padding-bottom:22px;border-bottom-left-radius:54px;border-bottom-right-radius:54px}
html.frame .sheet{padding-bottom:26px;border-radius:16px 16px 54px 54px}
html.frame .sheet .sb{padding-bottom:40px}
html.frame #restRoot .rest{bottom:max(108px,calc(var(--tabbar-h,0px) + 12px))}
html.frame .bigring{width:240px}
html.frame .rfig{max-width:230px}
html.frame .rvis-in{max-height:380px}
html.frame .lt{padding-top:6px}
#frameToggle{position:fixed;right:16px;top:16px;z-index:50;appearance:none;border:0;background:#1c1c1e;color:#f2f2f7;font:600 13px var(--font);padding:8px 14px;border-radius:999px;cursor:pointer;box-shadow:0 0 0 1px #3a3a3c}
#frameToggle[hidden]{display:none}
html:not(.frame) #frameToggle{background:var(--card);color:var(--fg);box-shadow:var(--shadow),0 0 0 .5px var(--sep)}
/* fiabilité : statut d'enregistrement réel, champs refusés (style minimal, à harmoniser par le lot UX) */
.savestate{display:none;align-items:center;gap:10px;flex-wrap:wrap;font-size:var(--t-foot);color:var(--fg2);padding:6px 2px 0}
.savestate.on{display:flex}
.savestate .err{color:var(--red-t);font-weight:600}
[aria-invalid="true"]{outline:2px solid var(--red);outline-offset:1px}

/* v19 : accessibilité, petit écran, bureau, contrastes (audit du 12/10/2026) */
*,*::before,*::after{box-sizing:border-box}
/* couleurs de texte et de remplissage séparées des couleurs décoratives */
:root{--fg2:#636366;--accent:#005FCC;--accent-fill:#005FCC;--green-t:#1E7B34;--green-fill:#1E7B34;--orange-t:#A65A00;--orange-fill:#A65A00;--teal-t:#0B7285;--teal-fill:#0B7285;--red-t:#D70015;--pink-t:#C8174A;--purple-t:#8944AB;--purple-fill:#8944AB;--lime-t:#3F6F12;--olive-t:#6B6B00;--tap:44px;--side:232px}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--fg2:#98989F;--accent:#4DA2FF;--accent-fill:#0060DF;--green-t:#30D158;--green-fill:#1A7F37;--orange-t:#E68A00;--orange-fill:#B25E00;--teal-t:#40C8E0;--teal-fill:#0B7285;--red-t:#FF6961;--pink-t:#FF5C7A;--purple-t:#C77DF5;--purple-fill:#8944AB;--lime-t:#8BD346;--olive-t:#C9C94A}}
:root[data-theme="dark"]{--fg2:#98989F;--accent:#4DA2FF;--accent-fill:#0060DF;--green-t:#30D158;--green-fill:#1A7F37;--orange-t:#E68A00;--orange-fill:#B25E00;--teal-t:#40C8E0;--teal-fill:#0B7285;--red-t:#FF6961;--pink-t:#FF5C7A;--purple-t:#C77DF5;--purple-fill:#8944AB;--lime-t:#8BD346;--olive-t:#C9C94A}
.btn,.chip.on,.rirs button.on,#restRoot .rest button.p,.msg.u,.send,.cta,.addc,.wday.on i,nav.tabbar button.tabadd span,.abtn.on,.day.sel.today .n{background:var(--accent-fill)}
.btn.green,.okdot,.chk.on .o,.sup.on .sc,.okbig{background:var(--green-fill)}
.chk.on .o{border-color:var(--green-fill)}
.pill.green{color:var(--green-t)}.pill.orange{color:var(--orange-t)}.pill.red{color:var(--red-t)}
.danger,.btn.danger,.tbtn.danger{color:var(--red-t)}
.badge{background:var(--orange-fill)}
.rec .ri{color:var(--orange-t)}
.empty-v,.rc-last,.pdl,.wday i{color:var(--fg2)}
input::placeholder,textarea::placeholder{color:var(--fg2)}
.chk .o{border-color:var(--fg2)}
.sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
[tabindex="-1"]:focus{outline:none}
.gh .t{margin:0}
.nsb{color:#000}

/* en-tête : actions toujours visibles, cibles de 44 px */
.lt h1{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hp-sub{display:none}
@media (max-width:359px){.lt h1{font-size:28px}.lt .hact .pill{display:none}.hp-sub{display:inline}}
/* texte agrandi (≤ 14 em de large) : le titre passe à la ligne au lieu d'être tronqué */
@container (max-width:14em){.lt .hrow{flex-wrap:wrap}.lt .hrow h1{flex-basis:100%;white-space:normal;overflow:visible;overflow-wrap:anywhere;hyphens:auto}.lt .hact{margin-left:auto}}
.avatar{width:var(--tap);height:var(--tap);background:none;position:relative;margin-inline:-3px}
.avatar::before{content:"";position:absolute;inset:5px;border-radius:50%;background:var(--fill)}
.avatar.coachb::before{background:color-mix(in srgb,var(--purple) 14%,transparent)}
.avatar svg{position:relative}
.lt .hact{gap:4px}

/* zones tactiles agrandies sans changer le rendu */
.fx,.addc,.tbtn,.gh button,.lestbtn,.chk,.iconb,.rinfo,.rirq{position:relative}
.fx::after,.addc::after,.tbtn::after,.gh button::after,.lestbtn::after,.chk::after,.iconb::after,.rinfo::after,.rirq::after{content:"";position:absolute;left:50%;top:50%;width:max(100%,var(--tap));height:max(100%,var(--tap));transform:translate(-50%,-50%)}
.fi{grid-template-columns:minmax(0,1fr) auto auto 32px}
.fx{width:30px;height:30px;justify-self:end}
.addc{width:40px;height:40px}
.chk{width:36px;height:36px}
.sets{grid-template-columns:28px 1fr 1fr 1fr 36px}
.dotsel{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:2px}
.dotsel button{width:100%;height:34px;background:none;position:relative}
.dotsel button::before{content:"";position:absolute;left:50%;top:50%;width:20px;height:20px;margin:-10px 0 0 -10px;border-radius:50%;background:var(--fill)}
.dotsel button.on{background:none}.dotsel button.on::before{background:var(--c)}
.gh button{padding:10px 4px;margin:-10px -4px}

/* barre d'onglets avec libellés */
nav.tabbar button{color:var(--fg2);padding:7px 2px 6px;gap:3px;min-width:0}
nav.tabbar button svg{width:25px;height:25px}
nav.tabbar .tl{font-size:10.5px;font-weight:600;letter-spacing:-.01em;line-height:1.1;max-width:100%;text-align:center;overflow-wrap:anywhere;-webkit-hyphens:auto;hyphens:auto}
nav.tabbar button[aria-current="page"]{color:var(--accent)}
nav.tabbar .tabadd .tl,nav.tabbar .deskonly{display:none}
.seg button{min-width:min-content;white-space:normal;text-overflow:clip;line-height:1.15;min-height:32px}

/* notifications en bas, sans bloquer les commandes ; mode démo dans le flux */
.toast{top:auto;bottom:max(calc(98px + env(safe-area-inset-bottom,0px)),calc(var(--tabbar-h,0px) + 12px));border-radius:var(--r-card);display:flex;align-items:center;gap:14px;pointer-events:none;width:max-content;line-height:1.3}
.toast[hidden]{display:none}
.toast button{pointer-events:auto;appearance:none;border:0;background:none;color:var(--accent);font:inherit;font-weight:600;padding:6px 2px;cursor:pointer;flex:none;min-height:var(--tap)}
body.has-rest .toast{bottom:max(calc(156px + env(safe-area-inset-bottom,0px)),calc(var(--tabbar-h,0px) + 70px))}
body.running .toast{bottom:auto;top:calc(58px + env(safe-area-inset-top,0px))}
html.frame .toast{top:auto;bottom:max(122px,calc(var(--tabbar-h,0px) + 12px))}
html.frame body.running .toast{top:104px;bottom:auto}
.demobar{display:flex;align-items:center;gap:10px;margin-top:10px;background:color-mix(in srgb,var(--orange) 14%,var(--card));border-radius:var(--r-md);padding:4px 6px 4px 12px;font-size:var(--t-sub);font-weight:500}
.demobar svg{width:16px;height:16px;color:var(--orange-t);flex:none}
.demobar span{flex:1;min-width:0}

/* date consultée */
.strip .cap.datectx{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:2px 8px;margin-top:4px;padding:2px 10px;border-radius:var(--r-md);background:color-mix(in srgb,var(--orange) 13%,var(--bg));color:var(--fg)}
.datectx b{font-weight:600}

/* illustrations */
.rvis-cap{font-size:13px;color:var(--fg2);text-align:center}
img.imgerr{visibility:hidden}
.rvis-fb,.thumb-fb{display:none}
.has-imgerr > .rvis-fb{display:grid;place-items:center;position:absolute;inset:0}
.has-imgerr > .rvis-fb svg{height:100%;max-height:240px;width:auto}
.pict.has-imgerr > .thumb-fb{display:grid;place-items:center;position:absolute;inset:0;color:var(--fg2)}
.thumb-fb svg{width:22px;height:22px}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .rvis-in.pho,:root:not([data-theme="light"]) .exphotos:not(.ill) img,:root:not([data-theme="light"]) .prodimg,:root:not([data-theme="light"]) .rnimg:not(.ill){filter:brightness(.82)}}
:root[data-theme="dark"] .rvis-in.pho,:root[data-theme="dark"] .exphotos:not(.ill) img,:root[data-theme="dark"] .prodimg,:root[data-theme="dark"] .rnimg:not(.ill){filter:brightness(.82)}
@keyframes pa{0%,46%{color:var(--fg);background:var(--fill)}50%,96%{color:var(--fg2);background:transparent}100%{color:var(--fg);background:var(--fill)}}
@keyframes pb{0%,46%{color:var(--fg2);background:transparent}50%,96%{color:var(--fg);background:var(--fill)}100%{color:var(--fg2);background:transparent}}
.rphase span{color:var(--fg2)}
/* mouvement réduit : départ et arrivée côte à côte */
@media (prefers-reduced-motion:reduce){
 .rvis-in.ill,.rvis-in.pho{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-rows:minmax(0,1fr);gap:8px}
 .rvis-in.ill > img,.rvis-in.pho > img{position:static;width:100%;height:100%;min-height:0;opacity:1}
 .rphase{align-self:stretch;display:grid;grid-template-columns:1fr 1fr;justify-items:center}
 .rphase span,.rphase .pa{color:var(--fg);background:none}
}

/* aides et valeurs des graphiques */
details.help,details.vals{font-size:var(--t-sub);color:var(--fg2)}
details.help summary,details.vals summary{cursor:pointer;color:var(--accent);font-weight:500;display:inline-flex;align-items:center;min-height:36px;list-style:none}
details.help summary::-webkit-details-marker,details.vals summary::-webkit-details-marker{display:none}
details.help p{margin:2px 0 6px;line-height:1.4}
details.vals table{font-size:var(--t-sub)}
details.vals th,details.vals td{padding:6px 10px 6px 0}
details.vals tbody th{font-size:var(--t-sub);text-transform:none;color:var(--fg);font-weight:500}
.rirq{appearance:none;border:0;background:var(--fill);color:var(--accent);width:20px;height:20px;border-radius:50%;font:700 12px var(--font);cursor:pointer;margin-left:6px;vertical-align:1px;text-transform:none}
.rirhelp{margin:0;font-size:13px;color:var(--fg2);text-align:center;line-height:1.35}
.rdate{color:var(--orange-t)!important;font-weight:600}
.heat [data-act="heatDay"]:focus-visible{outline:none;stroke:var(--fg);stroke-width:2.5px}
.tile.compact .ts{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.3}
.rowi .main > .ttl,.rowi .main > .s2{display:block}
.prefrow .seg{width:132px;flex:none}
.pill.green{background:color-mix(in srgb,var(--green) 13%,var(--card))}.pill.orange{background:color-mix(in srgb,var(--orange) 14%,var(--card))}.pill.red{background:color-mix(in srgb,var(--red) 12%,var(--card))}.pill.blue{background:color-mix(in srgb,var(--accent) 11%,var(--card))}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .seg button.on{background:#5A5A5F}}
:root[data-theme="dark"] .seg button.on{background:#5A5A5F}
.rvis-in.has-imgerr::after{content:"Illustration indisponible";position:absolute;left:0;right:0;bottom:6px;text-align:center;font-size:13px;color:var(--fg2)}
.rvis-in.pho.has-imgerr::after{color:#555}
.rvis-in.has-imgerr + .rphase{display:none}
@media (max-width:359px){
 .day{flex-basis:42px}
 .day .n{width:1.875em;height:1.875em;font-size:16px}
 .seg button{font-size:12px;padding-inline:2px}
 nav.tabbar .tl{font-size:10px;letter-spacing:-.02em}
 nav.tabbar .tl[data-short]{font-size:0}nav.tabbar .tl[data-short]::after{content:attr(data-short);font-size:10px}
 nav.tabbar button{padding-inline:0}
}
@media (min-width:1024px){html:not(.frame) .strip .w{max-width:768px;margin-inline:auto}}

/* bureau : vraie mise en page, l'aperçu iPhone devient une option */
.duo,.meals{display:grid;grid-template-columns:minmax(0,1fr);gap:22px;min-width:0}
.meals{gap:16px}
@media (min-width:1024px){
 html:not(.frame) body{padding-left:var(--side)}
 html:not(.frame) nav.tabbar{top:0;bottom:0;right:auto;width:var(--side);border-top:0;border-right:.5px solid var(--sep);padding:20px 12px;background:var(--bg);-webkit-backdrop-filter:none;backdrop-filter:none;overflow-y:auto}
 html:not(.frame) nav.tabbar .in{display:flex;flex-direction:column;gap:2px;max-width:none;align-items:stretch}
 html:not(.frame) nav.tabbar button{display:flex;flex:none;flex-direction:row;align-items:center;justify-content:flex-start;gap:12px;padding:9px 12px;border-radius:var(--r-sm);min-height:var(--tap);font-size:var(--t-sub);color:var(--fg)}
 html:not(.frame) nav.tabbar button svg{width:22px;height:22px;color:var(--fg2)}
 html:not(.frame) nav.tabbar .tl{font-size:var(--t-sub);font-weight:500;text-align:start}
 html:not(.frame) nav.tabbar button:hover{background:var(--fill)}
 html:not(.frame) nav.tabbar button[aria-current="page"]{background:color-mix(in srgb,var(--accent) 13%,transparent);color:var(--accent)}
 html:not(.frame) nav.tabbar button[aria-current="page"] svg{color:var(--accent)}
 html:not(.frame) nav.tabbar .tabadd{order:-1;margin-bottom:14px;padding:6px 12px}
 html:not(.frame) nav.tabbar .tabadd span{width:34px;height:34px;transform:none;box-shadow:none}
 html:not(.frame) nav.tabbar .tabadd span svg{width:20px;height:20px;color:var(--on-accent)}
 html:not(.frame) nav.tabbar .tabadd:active span{transform:scale(.94)}
 html:not(.frame) nav.tabbar .tabadd .tl{display:block;font-weight:600}
 html:not(.frame) nav.tabbar .deskonly{display:flex}
 html:not(.frame) nav.tabbar .deskonly.first{margin-top:14px;border-top:.5px solid var(--sep);border-radius:0 0 10px 10px;padding-top:12px}
 html:not(.frame) #app{max-width:1120px;padding-inline:32px;padding-bottom:72px}
 html:not(.frame) .strip,html:not(.frame) #app > .stack > .chips.scroll,html:not(.frame) .hscroll{margin-inline:-32px;padding-inline:32px}
 html:not(.frame) .toast{left:calc(50% + var(--side) / 2);bottom:28px}
 html:not(.frame) body.running .toast{left:50%;top:72px;bottom:auto}
 html:not(.frame) #restRoot .rest{left:calc(50% + var(--side) / 2);bottom:24px}
 html:not(.frame) .tiles{grid-template-columns:repeat(4,minmax(0,1fr))}
 html:not(.frame) .sgrid,html:not(.frame) .pgrid2{grid-template-columns:repeat(3,minmax(0,1fr))}
 html:not(.frame) .crit{grid-template-columns:repeat(4,minmax(0,1fr))}
 html:not(.frame) .duo{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:stretch}
 html:not(.frame) .duo > .hero-card{height:100%}
 html:not(.frame) .meals{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}
 html:not(.frame) .sheetwrap{align-items:center;padding:24px}
 html:not(.frame) .sheet{max-width:600px;border-radius:var(--r-card);max-height:88vh;padding-bottom:0;box-shadow:0 20px 60px rgba(0,0,0,.3)}
 html:not(.frame) .sheet.tall{height:88vh}
 html:not(.frame) .grab{display:none}
}

/* Programme : semaine lisible, séances et récupération distinctes. */
.program-overview{padding:18px;background:var(--card);border-radius:22px;box-shadow:var(--shadow);min-width:0}
.program-top{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.program-top h2{margin:5px 0 0;font-size:var(--t-title1);letter-spacing:-.025em;line-height:1.15}
.program-top .tbtn{min-height:44px;font-size:var(--t-sub);padding:8px 0}
.program-summary{color:var(--fg2);font-size:var(--t-sub);margin:8px 0 20px}
.program-week{display:grid;grid-template-columns:repeat(7,minmax(2.5em,1fr));gap:6px;overflow-x:auto;font-size:var(--t-cap);padding-bottom:4px}
.program-day{display:grid;justify-items:center;gap:10px;color:var(--fg2);font-weight:600}
.program-day i{width:100%;min-height:44px;border-radius:13px;background:var(--fill2);display:grid;place-items:center}
.program-day i svg{width:21px;height:21px}
.program-day.on i{color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,var(--card))}
.program-legend{display:grid;gap:8px;margin-top:16px;padding-top:14px;border-top:.5px solid var(--sep);font-size:var(--t-foot)}
.program-legend>div{display:flex;align-items:center;flex-wrap:wrap;gap:5px 8px}
.program-legend b{font-weight:600;overflow-wrap:anywhere}
.program-legend span:last-child{color:var(--fg2)}
.program-symbol{display:flex;color:var(--accent)}
.program-symbol svg{width:16px;height:16px}
.rest-legend .program-symbol{color:var(--fg2)}
/* Bibliothèque : découvrir par muscle, rechercher sans perdre le clavier. */
.library-page{gap:20px}
.library-bar{display:flex;align-items:center;gap:8px;min-height:44px;min-width:0}
.library-bar [hidden]{display:none!important}
.lib-icon{appearance:none;border:0;width:44px;height:44px;flex:none;display:grid;place-items:center;padding:0;border-radius:50%;background:var(--fill);color:var(--accent);cursor:pointer;transition:transform .12s ease-out,background-color .12s ease-out}
.lib-icon svg{width:20px;height:20px}
.lib-icon:active{transform:scale(.92);background:var(--fill2)}
.lib-icon.on{background:var(--accent);color:var(--on-accent)}
.lib-icon.on:active{background:color-mix(in srgb,var(--accent) 82%,#000)}
.lib-search{display:flex;align-items:center;min-width:0;margin-left:auto;flex:0 0 44px;border-radius:22px;transition:flex-grow .24s cubic-bezier(.2,.8,.2,1),background-color .2s ease-out}
.lib-search:not(.open)>:where(:not(#libSearchBtn)){display:none}
.lib-search.open{flex-grow:1;background:var(--fill);gap:6px;padding-left:12px;overflow:hidden}
.lib-search.open>#libSearchBtn{display:none}
.lib-search.open>.lib-search-glyph{display:flex;color:var(--fg2)}
.lib-search.open>.lib-search-glyph svg{width:18px;height:18px}
.lib-search.open>.field{display:block;flex:1;min-width:0;background:transparent;border:0;padding:10px 0;box-shadow:none;font-size:var(--t-body)}
.lib-search.open>#libClear{display:grid;background:transparent;color:var(--fg2)}
.lib-search.open>#libClear svg{width:18px;height:18px}
.lib-search input::-webkit-search-cancel-button{display:none}
.lib-search.open:focus-within{outline:2px solid var(--accent);outline-offset:2px}
.lib-search input:focus-visible{outline:none}
.lib-search.open:has(#libClear:focus-visible){outline:0}
.lib-search #libClear:focus-visible{outline-offset:-4px;border-radius:50%}
.lib-equip{position:relative;flex:none}
.lib-menu{position:absolute;z-index:6;top:calc(100% + 6px);right:0;min-width:13.5em;max-width:calc(100vw - 32px);padding:6px;border-radius:16px;background:var(--card);box-shadow:0 12px 36px rgb(0 0 0 / .18),0 0 0 .5px var(--sep);transform-origin:top right;animation:lib-menu-in .18s cubic-bezier(.2,.8,.2,1)}
.lib-menu button{appearance:none;border:0;background:none;color:var(--fg);font:inherit;font-size:var(--t-body);display:flex;align-items:center;gap:12px;width:100%;min-height:44px;padding:8px 10px;border-radius:10px;text-align:left;cursor:pointer}
.lib-menu button:hover,.lib-menu button:focus-visible{background:var(--fill)}
.lib-menu button:focus-visible{outline-offset:-2px}
.lib-menu button:active{background:var(--fill)}
.lib-menu-ic{display:flex;color:var(--accent)}
.lib-menu-ic svg,.lib-menu-check svg{width:20px;height:20px}
.lib-menu-check{display:flex;color:var(--accent);visibility:hidden}
.lib-menu [aria-checked="true"]{font-weight:600}
.lib-menu [aria-checked="true"] .lib-menu-check{visibility:visible}
@keyframes lib-menu-in{from{opacity:0;transform:scale(.94)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.lib-search{transition:none}.lib-icon{transition:none}.lib-icon:active{transform:none}.lib-menu{animation-name:lib-menu-fade}}
@keyframes lib-menu-fade{from{opacity:0}to{opacity:1}}
@media(prefers-contrast:more){.lib-menu{box-shadow:0 0 0 1px var(--fg2)}.lib-icon{box-shadow:inset 0 0 0 1px var(--sep)}}
.library-content{display:grid;gap:14px;min-width:0}
.library-heading{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:6px 12px}
.library-heading h2{font-size:var(--t-title3);letter-spacing:-.02em;line-height:1.2;margin:0;overflow-wrap:anywhere}
.muscle-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,9em),1fr));gap:12px;font-size:var(--t-sub)}
.muscle-card{appearance:none;position:relative;display:grid;grid-template-columns:1fr auto;grid-template-rows:72px auto auto;align-content:start;gap:3px 8px;min-width:0;padding:14px 16px 16px;border:1px solid color-mix(in srgb,var(--sep) 25%,transparent);border-radius:20px;background:var(--card);text-align:left;box-shadow:0 2px 8px rgb(0 0 0 / .025);cursor:pointer}
.muscle-art{display:block;width:60px;height:68px}
.muscle-art svg{width:100%;height:100%;display:block}
.muscle-chevron{color:var(--fg3);align-self:start;margin-top:4px}
.muscle-chevron svg{width:16px;height:16px}
.muscle-name{grid-column:1/-1;font-weight:600;font-size:var(--t-body);letter-spacing:-.02em;overflow-wrap:anywhere}
.muscle-count{grid-column:1/-1;color:var(--fg2);font-size:var(--t-foot)}
.muscle-card:active{background:var(--fill2);transform:scale(.98)}
#libRows .ttl{font-weight:500}
/* Menu inférieur : icônes seules, noms accessibles portés par les boutons. */
nav.tabbar .tl{display:none}
nav.tabbar button{justify-content:center;min-height:52px;padding-block:9px;gap:0}
@media(min-width:900px){html:not(.frame) nav.tabbar .tl{display:block}}
@media(prefers-reduced-motion:reduce){.muscle-card:active{transform:none}}
@media(prefers-contrast:more){.muscle-card{border-color:var(--sep)}.program-day.on i{outline:1px solid var(--accent)}}

.muscle-empty{margin:18px 0 2px;line-height:1.5}
/* Les cartes de séances passent sur une colonne si le texte agrandi le demande. */
.pgrid2{font-size:var(--t-sub);grid-template-columns:repeat(auto-fit,minmax(min(100%,8em),1fr))}
.pcard{min-width:0}
.pcard .pmaps{max-width:100%}
.pcard .ptitle,.pcard .psub{overflow-wrap:anywhere}

/* Réglages : accueil compact (carte profil, rubriques à icône, résumés) et sous-pages. Détail : docs/implementation-2026-10-12/reglages-navigation.md */
.set-back{min-height:var(--tap)}
.set-me,.set-row{appearance:none;border:0;width:100%;text-align:left;color:var(--fg);cursor:pointer;transition:background-color .12s ease-out}
.set-me{display:flex;align-items:center;gap:14px;padding:14px 16px;min-height:76px;background:var(--card);border-radius:var(--r-card);box-shadow:var(--shadow)}
.set-me .main{flex:1;min-width:0;display:grid;gap:2px}
.set-me .ttl{font-size:var(--t-title3);font-weight:600;letter-spacing:-.015em;line-height:1.2;overflow-wrap:anywhere}
.set-me .s2{font-size:var(--t-sub);color:var(--fg2)}
.set-av{width:52px;height:52px;border-radius:50%;flex:none;display:grid;place-items:center;background:var(--accent-fill);color:#fff;font:600 var(--t-title2)/1 var(--rounded)}
.set-av svg{width:28px;height:28px}
.set-row{background:none}
.set-row .main{display:grid;gap:1px}
.set-me:active,.set-row:active{background:var(--fill)}
.rowi.set-row + .rowi::before{left:58px}
.set-ic{width:30px;height:30px;border-radius:8px;flex:none;display:grid;place-items:center;color:#fff}
.set-ic svg{width:19px;height:19px}
.set-ic.blue{background:var(--accent-fill)}.set-ic.orange{background:var(--orange-fill)}.set-ic.green{background:var(--green-fill)}.set-ic.purple{background:var(--purple-fill)}.set-ic.teal{background:var(--teal-fill)}.set-ic.gray{background:#6C6C70}
.set-page .s2.warn,.set-page .s2 .warn{color:var(--orange-t)}
.set-page .s2.bad{color:var(--red-t)}
.set-week{display:flex;gap:3px;margin-top:6px}
.set-week i{width:14px;height:5px;border-radius:3px;background:var(--fill)}
.set-week i.on{background:var(--green-fill)}
/* cibles tactiles de 44 px : boutons segmentés, champs en ligne, listes déroulantes, coches */
.set-page .seg button{min-height:var(--tap)}
.set-page label.rowi{padding-block:0}
.set-page label.rowi > input.inl,.set-page label.rowi > select.field{min-height:var(--tap)}
.set-page label.rowi > select.field{background:transparent;color:var(--accent);text-align:right;text-align-last:right;padding:0 0 0 8px}
.set-page label.rowi > :is(input,select):focus-visible,.set-page .list :is(input,select,textarea):focus-visible{outline-offset:-2px}
.set-page .chk{width:var(--tap);height:var(--tap);margin:-8px -8px -8px 0}
.set-page .tbtn.danger{min-height:var(--tap)}
.set-weekrow .program-week{padding-bottom:0}
.set-macro{display:grid;gap:10px;padding:var(--card-pad)}
.set-mbar{display:flex;gap:2px;height:10px;border-radius:5px;overflow:hidden}
.set-mbar i{display:block;min-width:4px}
.set-mleg{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:var(--t-foot);color:var(--fg2);font-variant-numeric:tabular-nums}
.set-mleg i{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px}
.set-mbar .blue,.set-mleg .blue{background:var(--accent)}.set-mbar .orange,.set-mleg .orange{background:var(--orange)}.set-mbar .purple,.set-mleg .purple{background:var(--purple)}
@media(prefers-reduced-motion:reduce){.set-me,.set-row{transition:none}}
@media(prefers-contrast:more){.set-me{border:1px solid var(--fg2);box-shadow:none}.set-ic{box-shadow:inset 0 0 0 1px var(--fg)}.set-week i{outline:1px solid var(--fg2)}}

/* Cible web autonome : connexion, nouveau carnet, avis de session. S'appuie sur les jetons de src/styles.css. */
html.auth-mode nav.tabbar,html.auth-mode #frameToggle{display:none}
.auth{max-width:440px;margin-inline:auto;width:100%}
.auth-card{gap:10px}
.auth-label{font-size:var(--t-sub);color:var(--fg2);font-weight:600}
.auth .field{font-size:var(--t-body);min-height:44px}
.auth-code{letter-spacing:.32em;font-variant-numeric:tabular-nums;font-size:var(--t-title2)!important;text-align:center}
.auth-err[hidden]{display:none}
.auth-err{color:var(--red-t,var(--red));font-weight:500}
.auth-row{display:flex;justify-content:center}
.auth .btn.sec{width:100%}
.nb-title{font-size:var(--t-title3);font-weight:600;letter-spacing:-.01em}
.web-notice{position:fixed;left:50%;transform:translateX(-50%);top:max(10px,env(safe-area-inset-top));z-index:60;width:min(560px,calc(100% - 32px));display:flex;gap:12px;align-items:center;background:var(--card);color:var(--fg);border-radius:var(--r-card);box-shadow:0 8px 30px rgba(0,0,0,.18);padding:12px 16px;font-size:var(--t-sub)}
.web-notice span{flex:1;min-width:0}
@media (prefers-reduced-motion:no-preference){.web-notice{animation:webNoticeIn .28s cubic-bezier(.2,.8,.2,1)}}
@keyframes webNoticeIn{from{opacity:0;transform:translate(-50%,-8px)}to{opacity:1;transform:translate(-50%,0)}}
