.category-badge {
  position: absolute; z-index: 2; top: 12px; left: 12px;
  max-width: calc(100% - 24px); display: inline-flex; align-items: center;
  min-height: 28px; padding: 5px 10px; border: 1px solid #ffffff38;
  border-radius: 999px; color: #10131a; font-size: 11px; font-weight: 800;
  line-height: 1; letter-spacing: .02em; white-space: nowrap; overflow: hidden;
  text-overflow: ellipsis; box-shadow: 0 5px 14px #0005; backdrop-filter: blur(8px);
}
.category-breakfast { background: #e9b95f; }
.category-lunch { background: #78a9df; }
.category-dinner { background: #a58bd6; }
.category-snack { background: #77bf91; }
.category-dessert { background: #df8faa; }
.recipe-favorite { position: absolute; z-index: 2; top: 10px; right: 10px; width: 34px; min-height: 34px; padding: 5px; border-color: #ffffff45; background: #10151dcc; backdrop-filter: blur(8px); }
.recipe-body { display: flex; flex-direction: column; gap: 8px; }
.recipe-body h2 { margin: 0; font-size: 18px; line-height: 1.22; }
.recipe-description { margin: 0; color: var(--muted); font-size: 13px; line-height: 1.45; }
.recipe-body .macro-strip { margin: 4px 0; }
.recipe-body > .btn { margin-top: auto; width: 100%; }
.recipe-heading { padding-top: 12px; }
.recipe-heading .recipe-title { margin: 0 0 7px; }
.recipe-heading .recipe-description { max-width: 68ch; }
.recipe-facts { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; margin: 12px 0; }
.recipe-fact { min-height: 68px; display: flex; flex-direction: column; justify-content: center; gap: 4px; padding: 9px 11px; border: 1px solid #ffffff12; border-radius: 13px; background: linear-gradient(145deg, #1b2230, #121822); }
.recipe-fact-label { display: flex; align-items: center; gap: 5px; color: var(--muted); font-size: 10px; font-weight: 700; line-height: 1.15; text-transform: uppercase; letter-spacing: .045em; }
.recipe-fact-label i { font-style: normal; font-size: 13px; }
.recipe-fact strong { font-size: 14px; line-height: 1.2; }
.recipe-servings select { min-height: 27px; height: 27px; padding: 2px 24px 2px 8px; border-radius: 8px; font-size: 13px; font-weight: 750; }
.recipe-start { width: 100%; margin: 4px 0 8px; }
.ingredient-identity { min-width: 0; display: grid; gap: 4px; }
.ingredient-name { display: block; font-size: 14px; line-height: 1.3; }
.ingredient-metadata { display: flex; flex-wrap: wrap; align-items: center; gap: 2px 0; color: #8d98aa; font-size: 11px; line-height: 1.35; text-transform: none; }
.ingredient-metadata span { display: inline; }
.ingredient-metadata span + span::before { content: '·'; display: inline-block; margin: 0 6px; color: #637087; }
.ingredient-amount { flex: 0 0 auto; margin-left: 8px; font-size: 13px; line-height: 1.3; text-align: right; }
.ingredient-replacement { color: var(--green); font-size: 12px; line-height: 1.35; }
.ingredient-alternative { margin-top: 8px; }
.conversion-note { display: block; margin-top: 5px; color: #d6af72; }
.ingredient-simple-list { display: flex; flex-direction: column; }
.ingredient-simple-row { padding: 8px 2px; border-bottom: 1px solid rgba(255,255,255,.07); }
.ingredient-simple-list > .ingredient-simple-row:last-child { border-bottom: 0; }
.ingredient-simple-line { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; }
.ingredient-simple-name { font-weight: 600; min-width: 0; }
.ingredient-simple-qty { font-weight: 700; white-space: nowrap; font-variant-numeric: tabular-nums; }
.ingredient-simple-meta { margin-top: 1px; color: var(--muted); font-size: 11px; }
.ingredient-alternatives-toggle { margin-bottom: 8px; }
body.modal-open { overflow: hidden; }
dialog { position: relative; }
.modal-close { position: sticky; z-index: 3; top: 0; float: right; display: grid; place-items: center; width: 36px; min-height: 36px; margin: -8px -8px 8px 12px; padding: 0; border: 1px solid var(--line); border-radius: 50%; background: #252d3b; color: var(--text); font-size: 22px; line-height: 1; }
.modal-close:hover { background: #343f51; }
.bottom-nav { grid-template-columns: repeat(6, 1fr); }
.planned-meal { display: grid; grid-template-columns: 150px minmax(0, 1fr); gap: 14px; align-items: center; }
.planned-meal img { width: 150px; height: 112px; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 13px; }
.planned-meal h3 { margin: 7px 0 4px; }
.simple-snack-visual { display: flex; align-items: center; justify-content: center; background: #1b2230; border-radius: 13px; font-size: 40px; }
.planned-meal .simple-snack-visual { width: 150px; height: 112px; aspect-ratio: 4 / 3; }
.recipe-hero .simple-snack-visual { width: 100%; height: 100%; font-size: 96px; }
.meal-alternative { width: 100%; display: grid; gap: 3px; color: var(--text); text-align: left; cursor: pointer; }
.use-day { width: 100%; margin-top: 14px; }
.exercise-photo { display: block; width: 100%; max-height: 330px; object-fit: cover; border-radius: 15px; margin-bottom: 14px; }
@media (max-width: 600px) {
  .planned-meal { grid-template-columns: 92px minmax(0, 1fr); padding: 10px; }
  .planned-meal img { width: 92px; height: 69px; }
  .planned-meal .simple-snack-visual { width: 92px; height: 69px; font-size: 30px; }
  .planned-meal .row { grid-column: 1 / -1; }
  .bottom-nav button { font-size: 7px; }
  .bottom-nav span { font-size: 17px; }
}
@media (max-width: 600px) {
  .recipe-facts { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .recipe-fact { min-height: 64px; }
  .ingredient-metadata { display: grid; gap: 1px; }
  .ingredient-metadata span + span::before { display: none; }
  .category-badge { top: 10px; left: 10px; max-width: calc(100% - 58px); }
}
@media (max-width: 340px) {
  .recipe-facts { gap: 6px; }
  .recipe-fact { min-height: 60px; padding: 8px; }
  .recipe-fact-label { font-size: 9px; }
  .ingredient-amount { width: 100%; margin-left: 0; text-align: left; color: #d9e1ee; }
}
.exercise-demo-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-bottom:18px}.exercise-demo-grid figure{margin:0}.exercise-demo-grid .exercise-photo{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:14px}.exercise-demo-grid figcaption{margin-top:6px;color:var(--muted);font-size:.78rem;text-align:center}.exercise-media-missing{display:grid;place-items:center;min-height:190px;border:1px dashed rgba(255,255,255,.18);border-radius:16px;background:linear-gradient(145deg,rgba(255,255,255,.035),rgba(255,255,255,.01));color:var(--muted);text-align:center;padding:24px}@media(max-width:430px){.exercise-demo-grid{grid-template-columns:1fr}.exercise-demo-grid .exercise-photo{aspect-ratio:16/10}}
.exercise-filters{display:grid;grid-template-columns:minmax(220px,1.5fr) repeat(4,minmax(130px,1fr));gap:10px;margin-bottom:14px}.exercise-library-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.exercise-library-card{padding:0;overflow:hidden}.exercise-library-card>div:not(.exercise-thumb){padding:14px}.exercise-library-card h3{margin:9px 0 5px}.exercise-thumb{display:block;width:100%;aspect-ratio:16/10;object-fit:cover;background:rgba(255,255,255,.04)}.exercise-thumb.missing{display:grid;place-items:center;color:var(--muted);font-size:.8rem;border-bottom:1px dashed rgba(255,255,255,.15)}@media(max-width:900px){.exercise-filters{grid-template-columns:repeat(2,minmax(0,1fr))}.exercise-filters input{grid-column:1/-1}.exercise-library-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:430px){.exercise-filters,.exercise-library-grid{grid-template-columns:1fr}}
@media(min-width:901px){.exercise-filters{display:flex;flex-wrap:wrap;align-items:center}.exercise-filters input{flex:1 1 220px;min-width:160px;width:auto}.exercise-filters select{flex:0 0 auto;width:auto}}

/* Entraînement premium */
.training-dashboard{position:relative;min-height:330px;border-radius:28px;overflow:hidden;display:flex;align-items:flex-end;padding:clamp(22px,5vw,48px);background:#0d1614;margin-bottom:16px}.training-dashboard:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(5,10,9,.96) 0%,rgba(5,10,9,.78) 45%,rgba(5,10,9,.12) 100%)}.training-dashboard>img{position:absolute;inset:0 0 0 auto;width:62%;height:100%;object-fit:cover}.training-dashboard-copy{position:relative;z-index:1;max-width:590px}.training-dashboard h1,.programs-heading h1{font-size:clamp(2rem,5vw,3.6rem);line-height:1.02;margin:.3rem 0 .65rem}.training-next{display:flex;align-items:center;justify-content:space-between;gap:20px}.next-exercise-faces{display:flex}.next-exercise-faces img{width:62px;height:62px;object-fit:cover;border-radius:50%;border:3px solid #101816;margin-left:-12px}.training-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.training-kpis article{padding:18px;border-radius:18px;background:linear-gradient(145deg,rgba(255,255,255,.07),rgba(255,255,255,.025))}.training-kpis strong{display:block;font-size:1.55rem}.training-kpis small{color:var(--muted)}.training-actions{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.training-actions button{text-align:left;color:inherit;cursor:pointer}.training-actions strong,.training-actions span{display:block}.training-actions span{color:var(--muted);font-size:.82rem;margin-top:5px}
.programs-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin:20px 0 28px}.program-catalog{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.program-card{background:linear-gradient(150deg,rgba(255,255,255,.07),rgba(255,255,255,.025));border-radius:22px;overflow:hidden;box-shadow:0 18px 46px rgba(0,0,0,.14)}.program-cover{position:relative;height:210px}.program-cover img{width:100%;height:100%;object-fit:cover}.program-cover:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 35%,rgba(8,14,12,.9))}.program-cover-overlay{position:absolute;z-index:1;inset:14px;display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.program-card-body{padding:20px}.program-card-body h2{margin:.35rem 0}.program-card-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:18px 0}.program-card-stats span{padding:10px;border-radius:12px;background:rgba(255,255,255,.045);font-size:.72rem;color:var(--muted)}.program-card-stats strong{display:block;color:var(--text);font-size:1.05rem}.program-preview-hero{min-height:250px;background-size:cover;background-position:center;border-radius:18px;padding:24px;display:flex;flex-direction:column;justify-content:flex-end}.program-preview-hero h2{font-size:2rem;margin:.4rem 0}.program-facts{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0}.program-facts span{padding:8px 11px;border-radius:999px;background:rgba(255,255,255,.06);font-size:.78rem}.week-strip{display:grid;grid-template-columns:repeat(7,1fr);gap:7px}.week-strip div{min-height:82px;padding:9px;border-radius:12px;background:rgba(67,202,134,.12)}.week-strip .is-rest{background:rgba(255,255,255,.035);color:var(--muted)}.week-strip small,.week-strip strong{display:block}.week-strip strong{font-size:.72rem;margin-top:7px}.program-session-list details{padding:12px 0;border-bottom:1px solid rgba(255,255,255,.07)}.program-session-list summary{display:flex;justify-content:space-between}.program-exercises{display:grid;grid-template-columns:repeat(2,1fr);gap:9px;margin-top:10px}.program-exercise{display:flex;align-items:center;gap:10px;text-align:left;background:rgba(255,255,255,.035);color:inherit;border:0;border-radius:14px;padding:8px;cursor:pointer}.program-exercise img,.program-exercise .exercise-thumb{width:74px;height:62px;object-fit:cover;border-radius:10px;flex:0 0 auto}.program-exercise span,.program-exercise small{display:block}.program-exercise small{color:var(--muted);margin-top:4px}.recommend-results{display:grid;gap:9px;margin:16px 0}.recommend-results article{padding:14px;border-radius:14px;background:rgba(255,255,255,.04)}
.session-header.premium{position:sticky;top:0;z-index:4;border-radius:0 0 18px 18px;padding:14px 18px;background:rgba(12,20,18,.92);backdrop-filter:blur(14px)}.session-clock{text-align:right}.session-clock strong{font-size:1.5rem}.session-clock small{display:block}.session-exercise-card{padding:0;overflow:hidden}.exercise-session-media{display:block;width:100%;height:min(38vh,390px);padding:0;border:0;background:#0a100f;cursor:pointer}.exercise-session-media img{width:100%;height:100%;object-fit:cover}.exercise-media-missing.compact{min-height:170px;border-radius:0}.session-exercise-title{padding:18px 18px 8px}.title-button{border:0;background:none;color:inherit;padding:0;text-align:left;cursor:pointer}.title-button h1{margin:0 0 10px;font-size:clamp(1.7rem,5vw,2.6rem)}.previous-panel{margin:10px 18px;display:grid;grid-template-columns:1fr 1fr;gap:10px}.previous-panel>div{padding:13px;border-radius:14px;background:rgba(255,255,255,.04)}.previous-panel small,.previous-panel strong{display:block}.previous-panel strong{font-size:.85rem;margin-top:5px}.session-records{display:flex;gap:16px;padding:8px 18px;color:var(--muted);font-size:.78rem}.rest-overlay{position:sticky;top:92px;z-index:3;display:flex;align-items:center;justify-content:space-between;gap:10px;margin:10px 18px;padding:10px 14px;border-radius:16px;background:rgba(26,75,60,.94);box-shadow:0 10px 30px rgba(0,0,0,.25)}.set-table{padding:12px 18px}.set-table-head,.set-premium{display:grid;grid-template-columns:52px 84px repeat(3,minmax(54px,1fr)) 50px;gap:7px;align-items:center}.set-table-head{padding:0 6px 7px;color:var(--muted);font-size:.7rem;text-align:center}.set-premium{padding:7px 6px;border-radius:12px}.set-premium.is-done{background:rgba(67,202,134,.1)}.set-premium input,.set-type{width:100%;min-width:0;height:42px;text-align:center;padding:5px;border-radius:10px}.set-type{font-weight:800}.previous-set{text-align:center;font-size:.76rem;color:var(--muted)}.set-check{width:42px;height:42px;border-radius:12px;border:0;background:rgba(255,255,255,.08);color:var(--text);font-weight:800;cursor:pointer}.set-check.done{background:var(--accent);color:#06120d}.session-details{margin:0 18px 18px;padding:13px;border-radius:14px;background:rgba(255,255,255,.035)}.session-nav{position:sticky;bottom:0;z-index:4;display:flex;gap:8px;padding:12px;background:rgba(10,17,15,.92);backdrop-filter:blur(14px)}
/* La barre "précédent/suivant" ne doit réserver de la place pour la bottom-nav QUE quand celle-ci est
   réellement fixée en bas de l'écran (mobile, <760px) — au-delà, la nav devient une sidebar à gauche
   (voir style.css @media(min-width:760px)) et bottom:76px ne faisait plus que masquer du contenu pour rien. */
@media(max-width:759px){.session-nav{bottom:76px}}
@media(max-width:900px){.program-catalog{grid-template-columns:repeat(2,minmax(0,1fr))}.training-actions{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.training-dashboard{min-height:390px;padding:22px}.training-dashboard>img{width:100%;opacity:.58}.training-dashboard:after{background:linear-gradient(0deg,rgba(5,10,9,.98),rgba(5,10,9,.2))}.training-next{align-items:flex-start}.next-exercise-faces img{width:44px;height:44px}.training-kpis{grid-template-columns:repeat(2,1fr)}.programs-heading{display:block}.programs-heading .btn{margin-top:14px}.program-catalog{grid-template-columns:1fr}.week-strip-wrap{position:relative}.week-strip-wrap:after{content:'';position:absolute;top:0;right:0;bottom:0;width:26px;background:linear-gradient(90deg,transparent,#171c27);pointer-events:none}.week-strip{overflow-x:auto;grid-template-columns:repeat(7,90px);scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;scrollbar-width:none}.week-strip::-webkit-scrollbar{display:none}.week-strip>div{scroll-snap-align:start}.program-exercises{grid-template-columns:1fr}.previous-panel{grid-template-columns:1fr}.session-records{flex-direction:column;gap:3px}.set-table{padding:10px 6px}.set-table-head,.set-premium{grid-template-columns:42px 62px repeat(3,minmax(45px,1fr)) 42px;gap:4px}.set-premium input,.set-type,.set-check{height:40px}.set-premium input{padding:3px}.session-nav{bottom:68px}.session-nav .btn{padding-inline:10px;font-size:.76rem}}
.exercise-chart{height:130px;display:flex;align-items:flex-end;gap:7px;padding:12px;border-radius:14px;background:rgba(255,255,255,.035);margin:10px 0}.exercise-chart i{position:relative;flex:1;min-height:8px;border-radius:6px 6px 2px 2px;background:linear-gradient(180deg,var(--accent),rgba(67,202,134,.35))}.exercise-chart span{position:absolute;bottom:calc(100% + 3px);left:50%;transform:translateX(-50%);font-size:.65rem;font-style:normal}
