/* kb-plan.css — Mon plan et parcours (semaine, repas, fête, occasions).
   Famille 4 de la refonte « Ketchup moutarde ». Chargé après kb-base.css ;
   jetons uniquement, pas de couleurs écrites en dur. */

/* ══ Mon plan ═════════════════════════════════════════════════════════ */

.plan-banner {
  display: flex;
  align-items: center;
  gap: 4px;
  flex-shrink: 0;
  padding: 4px var(--gutter) 8px 12px;
  background: var(--color-bg);
}
.plan-banner__heading { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.plan-banner__title { font: 600 24px/30px var(--font-display); letter-spacing: -.02em; color: var(--color-text); }
.plan-banner__sub { font-size: 13px; line-height: 18px; color: var(--color-muted); font-variant-numeric: tabular-nums; }
.plan-banner__nav { display: flex; margin-right: -10px; }
.plan-banner__nav .kb-icon-btn { color: var(--color-text); }

.kb-plan { display: flex; flex-direction: column; gap: 16px; padding-top: 4px; }
.kb-plan > * { flex-shrink: 0; }
.screen__body.kb-plan { padding-bottom: 0; scroll-padding-bottom: calc(100px + var(--safe-bottom)); }
.kb-plan__scope { display: flex; flex-direction: column; gap: 6px; }
.kb-plan__views { display: flex; align-items: center; gap: 8px; }
.kb-plan__views .kb-seg { flex: 1; }
.kb-plan__today { flex: none; }

/* Bande de 7 jours (64 px) : jour choisi en marque, point = repas planifié. */
.plan-wstrip { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 2px; }
.plan-wday {
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px;
  height: 64px; min-width: 0; padding: 0;
  border: 0; border-radius: var(--radius-tile);
  background: transparent; color: var(--color-text);
  font: inherit; cursor: pointer;
  transition: background var(--trans-fast), color var(--trans-fast);
}
.plan-wday__d { font-size: 11px; line-height: 13px; font-weight: 500; text-transform: capitalize; opacity: .85; }
.plan-wday__n { font-size: 17px; line-height: 20px; font-weight: 600; font-variant-numeric: tabular-nums; }
.plan-wday__dot { width: 5px; height: 5px; border-radius: 999px; background: transparent; }
.plan-wday.has .plan-wday__dot { background: var(--color-primary); }
.plan-wday.today:not(.sel) .plan-wday__d,
.plan-wday.today:not(.sel) .plan-wday__n { color: var(--color-primary); }
.plan-wday.sel { background: var(--color-primary); color: var(--color-on-primary); }
.plan-wday.sel .plan-wday__d { opacity: 1; }
.plan-wday.sel.has .plan-wday__dot { background: var(--color-on-primary); }

/* Vue mois */
.plan-month { display: flex; flex-direction: column; gap: 4px; }
.plan-mwdays, .plan-mgrid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 2px; }
.plan-mwday { text-align: center; font-size: 11px; font-weight: 600; letter-spacing: .06em; color: var(--color-subtle); }
.plan-mcell {
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px;
  height: 44px; min-width: 0; padding: 0;
  border: 0; border-radius: 12px; background: transparent; color: var(--color-text);
  font: inherit; cursor: pointer;
}
.plan-mcell__n { font-size: 15px; font-weight: 600; font-variant-numeric: tabular-nums; }
.plan-mcell__dot { width: 5px; height: 5px; border-radius: 999px; }
.plan-mcell.has .plan-mcell__dot { background: var(--color-primary); }
.plan-mcell.out .plan-mcell__n { color: var(--color-subtle); font-weight: 400; }
.plan-mcell.today:not(.sel) .plan-mcell__n { color: var(--color-primary); }
.plan-mcell.sel { background: var(--color-primary); color: var(--color-on-primary); }
.plan-mcell.sel .plan-mcell__n { color: var(--color-on-primary); }
.plan-mcell.sel.has .plan-mcell__dot { background: var(--color-on-primary); }

.kb-plan__mode { display: flex; }
.kb-plan__grid-toggle { min-height: 36px; font-size: 13px; }

/* Jour choisi */
.plan-dd { display: flex; flex-direction: column; gap: 12px; }
.plan-dd:not(.open) { display: none; }
.plan-dd__head { display: flex; align-items: center; gap: 8px; min-height: 32px; }
.plan-dd__title { flex: 1; min-width: 0; font: 600 17px/24px var(--font-display); letter-spacing: -.01em; }
.plan-dd__chabbat { display: inline-flex; align-items: center; gap: 4px; font-size: 13px; color: var(--color-muted); white-space: nowrap; font-variant-numeric: tabular-nums; }
.plan-dd__close { width: 36px; height: 36px; margin-right: -8px; color: var(--color-subtle); }

.kb-plan-meals { display: flex; flex-direction: column; gap: 12px; }
.kb-plan-meal {
  display: flex; flex-direction: column; gap: 12px;
  padding: 14px 12px 12px 14px;
  border: 1px solid var(--color-border); border-radius: var(--radius-card);
  background: var(--color-surface);
}
.kb-plan-meal__top { display: flex; align-items: flex-start; gap: 12px; }
.kb-plan-meal__top > input[type="checkbox"] { margin-top: 2px; }
.kb-plan-meal__body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.kb-plan-meal__slot { font-size: 11px; line-height: 14px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--color-subtle); }
.kb-plan-meal__title {
  padding: 0; border: 0; background: none; text-align: left; cursor: pointer;
  font: 600 17px/22px var(--font-display); letter-spacing: -.01em; color: var(--color-text);
  overflow-wrap: anywhere;
}
.kb-plan-meal__title:hover { text-decoration: underline; text-decoration-color: var(--color-border); }
.kb-plan-meal__meta { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; font-size: 13px; line-height: 18px; color: var(--color-muted); font-variant-numeric: tabular-nums; }
.kb-plan-meal__chev { flex: none; align-self: center; color: var(--color-subtle); }
.kb-plan-meal.is-done .kb-plan-meal__title { color: var(--color-muted); text-decoration: line-through; text-decoration-color: var(--color-subtle); }
.kb-plan-meal__actions { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; padding-left: 34px; }
.kb-plan-meal__actions .btn { min-height: 40px; }
.kb-plan-meal__del { margin-left: auto; color: var(--color-subtle); }

/* Conflit de régime : encadré danger dans la carte, avec ses actions. */
.kb-plan-conflict { display: flex; flex-direction: column; gap: 8px; padding: 12px 14px; border-radius: var(--radius-field); background: var(--color-danger-soft); color: var(--color-danger); }
.kb-plan-conflict__title { display: flex; gap: 8px; align-items: flex-start; font: 600 15px/20px var(--font-body); }
.kb-plan-conflict__title svg { flex: none; margin-top: 1px; }
.kb-plan-conflict__text { font-size: 13px; line-height: 18px; padding-left: 26px; }
.kb-plan-conflict__actions { display: flex; gap: 8px; padding-left: 26px; flex-wrap: wrap; }
.btn.kb-plan-conflict__retirer { color: var(--color-danger); }

/* Portions préparées / servies / restes : barre segmentée. */
.kb-plan-portions { display: flex; flex-direction: column; gap: 8px; }
.kb-plan-portions__bar { display: flex; gap: 2px; height: 6px; border-radius: 999px; overflow: hidden; background: var(--color-surface-2); }
.kb-plan-portions__bar > span { background: var(--color-primary); }
.kb-plan-portions__bar > span.is-reste { background: var(--color-primary-soft); }
.kb-plan-portions__nums { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); margin: 0; font-variant-numeric: tabular-nums; }
.kb-plan-portions__nums > div { display: flex; flex-direction: column-reverse; }
.kb-plan-portions__nums dt { font-size: 11px; font-weight: 500; color: var(--color-muted); }
.kb-plan-portions__nums dd { margin: 0; font-size: 17px; font-weight: 600; }

/* Jour vide */
.kb-plan-empty {
  display: flex; flex-direction: column; align-items: flex-start; gap: 6px;
  padding: 24px 20px 20px; border: 1px solid var(--color-border); border-radius: var(--radius-card);
  background: var(--color-surface);
}
.kb-plan-empty__icon { color: var(--color-subtle); margin-bottom: 8px; }
.kb-plan-empty__title { font: 600 17px/24px var(--font-display); }
.kb-plan-empty__desc { font-size: 15px; line-height: 21px; color: var(--color-muted); margin-bottom: 8px; }
.kb-plan__add { align-self: flex-start; }

/* Raccourcis en pastilles défilantes */
.kb-plan__actions .kb-chip { font-size: 13px; }

/* Vue « toute la semaine » : grille 7 × 2 */
.kb-plan-grid { display: flex; flex-direction: column; }
.kb-plan-grid__head, .kb-plan-grid__row { display: grid; grid-template-columns: 44px minmax(0, 1fr) minmax(0, 1fr); gap: 6px; }
.kb-plan-grid__head { padding-bottom: 6px; font-size: 11px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--color-subtle); }
.kb-plan-grid__row { padding: 6px 0; border-top: 1px solid var(--color-border); }
.kb-plan-grid__day { display: flex; flex-direction: column; justify-content: center; line-height: 1.1; }
.kb-plan-grid__day span { font-size: 13px; font-weight: 500; text-transform: capitalize; }
.kb-plan-grid__day strong { font-size: 20px; font-weight: 600; font-variant-numeric: tabular-nums; }
.kb-plan-grid__day small { font-size: 11px; color: var(--color-muted); }
.kb-plan-grid__row.is-today .kb-plan-grid__day { color: var(--color-primary); }
.kb-plan-grid__cell {
  display: flex; flex-direction: column; align-items: flex-start; justify-content: space-between; gap: 6px;
  min-width: 0; min-height: 56px; padding: 8px 10px;
  border: 1px solid var(--color-border); border-radius: 12px;
  background: var(--color-surface); color: var(--color-text);
  font: 600 13px/17px var(--font-body); text-align: left; cursor: pointer;
}
.kb-plan-grid__titre { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; overflow-wrap: anywhere; }
.kb-plan-grid__cell--vide { border-style: dashed; background: transparent; color: var(--color-subtle); justify-content: flex-start; }

/* Feuilles : imprévu (modes radio), génération en cours, déplacer, terminer */
.kb-plan-modes { display: flex; flex-direction: column; gap: 8px; }
.kb-plan-mode {
  display: flex; align-items: center; gap: 12px; min-height: 64px; padding: 12px 14px;
  border: 1px solid var(--color-border); border-radius: var(--radius-tile);
  background: var(--color-surface); cursor: pointer;
}
.kb-plan-mode.is-active { background: var(--color-primary-soft); border-color: var(--color-primary); box-shadow: inset 0 0 0 1px var(--color-primary); }
.kb-plan-mode__body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.kb-plan-mode__label { font-size: 15px; line-height: 20px; font-weight: 600; }
.kb-plan-mode__sub { font-size: 13px; line-height: 18px; color: var(--color-muted); }
.kb-plan-field { display: flex; flex-direction: column; gap: 10px; }
.kb-plan-field__label { font-size: 15px; line-height: 20px; font-weight: 600; color: var(--color-text); }
.kb-plan-field .kb-chip { min-height: 40px; font-size: 13px; }
.kb-plan-textarea { min-height: 96px; }
.kb-plan-stepper { display: inline-flex; align-items: center; align-self: flex-start; gap: 4px; padding: 3px; border: 1px solid var(--color-border); border-radius: 999px; background: var(--color-surface); }
.kb-plan-stepper > button { display: grid; place-items: center; width: 44px; height: 44px; border: 0; border-radius: 999px; background: transparent; color: var(--color-primary); }
.kb-plan-stepper > button:active { background: var(--color-surface-2); }
.kb-plan-stepper__val { min-width: 76px; text-align: center; font-size: 17px; font-weight: 600; font-variant-numeric: tabular-nums; }
.kb-plan-note { display: flex; gap: 8px; align-items: flex-start; font-size: 13px; line-height: 18px; color: var(--color-muted); }
.kb-plan-note svg { flex: none; margin-top: 1px; }

.kb-plan-progress__bar { height: 6px; border-radius: 999px; background: var(--color-surface-2); overflow: hidden; }
.kb-plan-progress__bar > span { display: block; height: 100%; border-radius: 999px; background: var(--color-primary); transition: width 400ms ease-out; }
.kb-plan-progress__steps { list-style: none; display: flex; flex-direction: column; }
.kb-plan-progress__steps li { display: flex; align-items: center; gap: 12px; min-height: 44px; font-size: 15px; color: var(--color-muted); }
.kb-plan-progress__steps li.is-current { color: var(--color-text); font-weight: 600; }
.kb-plan-progress__steps li.is-done { color: var(--color-text); }
.kb-plan-progress__dot { flex: none; display: grid; place-items: center; width: 22px; height: 22px; border-radius: 999px; border: 1.5px solid var(--color-border); color: var(--color-on-primary); }
.kb-plan-progress__steps li.is-done .kb-plan-progress__dot { background: var(--color-primary); border-color: var(--color-primary); }
.kb-plan-progress__steps li.is-current .kb-plan-progress__dot { border: 2px solid var(--color-primary); }
.kb-plan-progress__steps li > span:nth-child(2) { flex: 1; min-width: 0; }
.kb-plan-progress__state { font-size: 13px; font-weight: 400; color: var(--color-subtle); }

.kb-plan-move__head { display: flex; flex-direction: column; gap: 2px; }
.kb-plan-move__eyebrow { font-size: 13px; color: var(--color-muted); }
.kb-plan-move__titre { font: 600 20px/26px var(--font-display); letter-spacing: -.015em; overflow-wrap: anywhere; }
.btn.kb-plan-move__autre { align-self: flex-start; margin-left: -12px; }
.kb-plan-move__vide { padding: 20px 0; text-align: center; color: var(--color-subtle); font-size: 13px; }
.kb-plan-move__day:disabled { opacity: .5; cursor: default; }
.kb-plan-move__day.is-swap .kb-row__meta { color: var(--color-primary); font-weight: 600; }

.kb-plan-complete__titre { font: 600 17px/24px var(--font-display); }
.kb-plan-complete__row { display: flex; align-items: center; gap: 12px; }
.form-input.kb-plan-complete__num { width: 96px; text-align: center; font-size: 20px; font-weight: 600; }
.kb-plan-complete__surplus { display: flex; align-items: center; gap: 8px; padding: 10px 14px; border-radius: var(--radius-field); background: var(--parve-bg); color: var(--parve-fg); font-size: 13px; font-weight: 600; }

/* Macros du jour prévu (et de la fiche recette, même présentation) */
.v4-day-nutrition, .v4-recipe-nutrition {
  display: grid; gap: 4px; padding: 12px 14px;
  border: 0; border-radius: var(--radius-tile);
  background: var(--color-surface-2); color: var(--color-text);
}
.v4-day-nutrition strong, .v4-recipe-nutrition strong { font-size: 13px; font-weight: 600; color: var(--color-muted); }
.v4-day-nutrition span, .v4-recipe-nutrition span { font-size: 15px; font-weight: 600; font-variant-numeric: tabular-nums; }
.v4-day-nutrition small, .v4-recipe-nutrition small { font-size: 13px; line-height: 18px; color: var(--color-muted); }

/* ══ Revue de semaine (WeekReview) et relecture photo (OCRReview) ══════ */

.week-review__desc, .ocr-review__desc { font-size: 13px; line-height: 18px; color: var(--color-muted); }
.week-review__day { display: flex; flex-direction: column; gap: 6px; }
.week-review__day + .week-review__day { margin-top: 8px; }
.week-review__day-label { font: 600 17px/24px var(--font-display); letter-spacing: -.01em; color: var(--color-text); text-transform: capitalize; }
.week-review__slot-label { margin: 6px 0 4px; font-size: 11px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--color-subtle); }
.week-review__list, .ocr-review__list { display: flex; flex-direction: column; gap: 6px; }
.week-review__conflict { display: flex; align-items: center; gap: 6px; padding: 8px 12px; border-radius: var(--radius-field); background: var(--color-danger-soft); color: var(--color-danger); font-size: 13px; font-weight: 600; }
.week-review__missing { display: flex; gap: 10px; align-items: flex-start; padding: 14px 16px; border-radius: var(--radius-tile); background: var(--dlc-bientot-bg); color: var(--dlc-bientot-fg); }
.week-review__missing > svg { flex: none; }
.week-review__missing > div { display: flex; flex-direction: column; gap: 4px; }
.week-review__missing-title { font-size: 15px; line-height: 20px; font-weight: 600; }
.week-review__missing-days { font-size: 13px; line-height: 18px; }
.btn.week-review__missing-btn { align-self: flex-start; margin-top: 6px; background: var(--dlc-bientot-fg); color: var(--dlc-bientot-bg); }
.week-review__footer-count { padding: 8px var(--gutter) 0; font-size: 13px; color: var(--color-muted); text-align: center; font-variant-numeric: tabular-nums; }
.week-review__actions { flex-wrap: wrap; }
.week-review__actions > .btn--primary { flex: 1 1 100%; order: -1; }
.week-review__move { margin-top: 6px; min-height: 40px; font-size: 13px; }

.ocr-item {
  display: flex; align-items: flex-start; gap: 12px; padding: 12px 14px;
  border: 1px solid var(--color-border); border-radius: var(--radius-tile);
  background: var(--color-surface); cursor: pointer;
}
.ocr-item--checked { border-color: var(--color-primary); background: var(--color-primary-soft); }
.ocr-item--blocked { opacity: .6; cursor: default; }
.ocr-item__check { margin-top: 1px; }
.ocr-item__body { flex: 1; min-width: 0; }
.ocr-item__meta { display: flex; gap: 6px; margin-bottom: 2px; font-size: 11px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--color-subtle); }
.ocr-item__titre { font-size: 15px; line-height: 20px; font-weight: 600; color: var(--color-text); overflow-wrap: anywhere; }
.ocr-item__reasons { display: flex; flex-direction: column; gap: 4px; margin-top: 6px; }
.ocr-item__reason { align-self: flex-start; padding: 2px 8px; border-radius: 8px; background: var(--dlc-urgent-bg); color: var(--dlc-urgent-fg); font-size: 12px; line-height: 16px; }
.ocr-item__status { flex: none; }
.kb-plan > .kb-bottom-bar { margin-top: auto; }
@media (max-width: 380px) {
  .kb-plan-meal__actions { padding-left: 0; }
}

/* ══ Parcours : gabarit des étapes (semaine, repas, fête) ══════════════ */

/* Une étape occupe la hauteur restante : l'action principale reste en bas, au pouce. */
.parcours:has(> .parcours__corps:not([hidden]) > .kb-step) { flex: 1 0 auto; }
.parcours__corps:not([hidden]):has(> .kb-step) { flex: 1 0 auto; display: flex; flex-direction: column; }
.kb-step { flex: 1 0 auto; display: flex; flex-direction: column; gap: 16px; }
.kb-step > .kb-bottom-bar { margin-top: auto; }
.kb-step__title { font: 600 24px/30px var(--font-display); letter-spacing: -.02em; color: var(--color-text); }
.kb-step__h3 { font: 600 17px/24px var(--font-display); letter-spacing: -.01em; }
.kb-step__lead { font-size: 15px; line-height: 21px; color: var(--color-muted); }
.kb-step__section { display: flex; flex-direction: column; gap: 10px; }
.kb-step__profils { font-size: 13px; line-height: 18px; color: var(--color-muted); }
.kb-step__profils strong { color: var(--color-text); font-weight: 600; }
.kb-step__secondary { align-self: flex-start; }
.kb-step__ok { display: flex; align-items: flex-start; gap: 8px; font-size: 15px; line-height: 20px; color: var(--color-apple); font-weight: 500; }
.kb-step__ok svg { flex: none; margin-top: 1px; }
.kb-step__note { display: flex; gap: 10px; align-items: flex-start; font-size: 13px; line-height: 18px; color: var(--color-muted); }
.kb-step__note svg { flex: none; margin-top: 1px; }
.kb-field { display: flex; flex-direction: column; gap: 10px; }
.kb-field__label { font-size: 13px; line-height: 18px; font-weight: 500; color: var(--color-muted); }
.kb-step .kb-chip { font-size: 15px; min-height: 44px; }
.kb-step .kb-chips .kb-chip[aria-pressed="true"] { background: var(--color-primary); border-color: var(--color-primary); color: var(--color-on-primary); }

/* Interrupteur sur fond marque doux (« Utiliser mon stock ») */
.kb-step__switch {
  display: flex; align-items: center; gap: 12px; min-height: 56px; padding: 10px 16px;
  border-radius: var(--radius-tile); background: var(--color-surface-2); cursor: pointer;
}
.kb-step__switch:has(input:checked) { background: var(--color-primary-soft); }
.kb-step__switch > span { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.kb-step__switch strong { font-size: 15px; line-height: 20px; font-weight: 600; color: var(--color-text); }
.kb-step__switch small { font-size: 13px; line-height: 18px; color: var(--color-muted); }

@media (max-width: 380px) {
  .kb-step__row-wrap { flex-direction: column; }
}

/* ── Semaine : résumé, sélection, voies ── */
.semaine__resume, .repas-choix__resume { font-size: 13px; line-height: 18px; color: var(--color-muted); }
.semaine-organiser__compte { font-size: 15px; font-weight: 600; }
.semaine-choix__voies > button { font-size: 13px; padding: 0 8px; }
.semaine-selection { display: flex; flex-direction: column; gap: 8px; }
.semaine-selection__titre { display: flex; align-items: center; gap: 8px; font: 600 17px/24px var(--font-display); }
.semaine-selection__nb { display: inline-grid; place-items: center; min-width: 24px; height: 24px; padding: 0 7px; border-radius: 999px; background: var(--color-primary); color: var(--color-on-primary); font-size: 13px; font-variant-numeric: tabular-nums; }
.semaine-selection__liste { list-style: none; display: flex; flex-direction: column; border: 1px solid var(--color-border); border-radius: var(--radius-card); background: var(--color-surface); overflow: hidden; }
.semaine-selection__item { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; min-height: 52px; padding: 6px 4px 6px 16px; }
.semaine-selection__item + .semaine-selection__item { border-top: 1px solid var(--color-border); }
.semaine-selection__nom { flex: 1; min-width: 0; font-size: 15px; font-weight: 600; overflow-wrap: anywhere; }
.semaine-selection__vide, .semaine-ia__compte { font-size: 13px; color: var(--color-subtle); }
.semaine-ia { display: flex; flex-direction: column; gap: 10px; }
.semaine-ia__max { font-size: 13px; font-weight: 600; color: var(--color-muted); }

/* ── Semaine : pile de cartes « Ça te tente ? » (SwipeStack) ── */
.swipe-choix { display: flex; flex-direction: column; gap: 14px; }
.swipe-choix__tete { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; }
.swipe-choix__compte { flex: none; font-size: 13px; font-weight: 600; color: var(--color-primary); font-variant-numeric: tabular-nums; }
.swipe-choix .kb-swipe { margin-bottom: 16px; }
.swipe-choix__carte { display: flex; flex-direction: column; }
.swipe-choix__photo { display: block; width: 100%; height: 250px; object-fit: cover; background: var(--color-surface-2); pointer-events: none; }
.swipe-choix__photo--vide { display: grid; place-items: center; color: var(--color-subtle); }
.swipe-choix__corps { display: flex; flex-direction: column; gap: 8px; padding: 16px; }
.swipe-choix__titre { font: 600 20px/26px var(--font-display); letter-spacing: -.015em; overflow-wrap: anywhere; }
.swipe-choix__meta { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 8px; font-size: 13px; color: var(--color-muted); font-variant-numeric: tabular-nums; }
.swipe-choix__stock { font-size: 13px; line-height: 18px; font-weight: 500; color: var(--color-primary); }
.swipe-choix__manques { font-size: 13px; line-height: 18px; color: var(--color-muted); }
.swipe-choix__actions { display: flex; gap: 12px; }
.swipe-choix__actions > .btn { flex: 1; min-width: 0; }
.swipe-choix__aide { font-size: 13px; color: var(--color-subtle); text-align: center; }
.swipe-choix__attente { display: flex; flex-direction: column; gap: 12px; font-size: 13px; color: var(--color-muted); }
.swipe-choix__skel { height: 360px; border-radius: var(--radius-card); }
.swipe-choix__fin { font-size: 15px; color: var(--color-muted); }
.swipe-choix--fin { align-items: flex-start; padding: 24px 0; }
.recipe-ai__flag { font-size: 13px; line-height: 18px; color: var(--dlc-bientot-fg); }

/* ── Repas : qui mange, vérifier ── */
.repas-qui { list-style: none; }
.repas-qui__ligne { cursor: pointer; }
.repas-qui__avatar { flex: none; display: grid; place-items: center; width: 32px; height: 32px; border-radius: 999px; background: var(--color-surface-2); font-size: 13px; font-weight: 600; }
.repas-qui__ligne input[type="checkbox"] { width: 24px; height: 24px; }
.repas-verifier__alerte, .repas-verifier__note { display: flex; flex-direction: column; gap: 8px; padding: 12px 14px; border-radius: var(--radius-field); font-size: 13px; line-height: 18px; }
.repas-verifier__alerte { background: var(--color-danger-soft); color: var(--color-danger); }
.repas-verifier__alerte-titre { display: flex; align-items: center; gap: 8px; font-size: 15px; }
.repas-verifier__alerte .btn { align-self: flex-start; }
.repas-verifier__note { background: var(--dlc-bientot-bg); color: var(--dlc-bientot-fg); }
.repas-verifier__alerte ul, .repas-verifier__note ul { padding-left: 18px; }
.repas-verifier__manquants { list-style: none; }
.repas-verifier__manquants .kb-row { min-height: 48px; }
.repas-planifier__fait { display: flex; flex-direction: column; gap: 12px; align-items: flex-start; flex: 1 0 auto; }
.repas-planifier__fait > .kb-bottom-bar { align-self: stretch; margin-top: auto; }
.repas-cuisiner { display: flex; flex-direction: column; gap: 12px; }
.repas-cuisiner > * { width: 100%; }

/* IA : idées du parcours repas (RecipeAiSearch, rendu dans l'étape) */
.recipe-ai { display: flex; flex-direction: column; gap: 10px; }
.recipe-ai__ideas { display: flex; flex-direction: column; gap: 12px; }
.recipe-ai__idea { padding: 14px 16px; border: 1px solid var(--color-border); border-radius: var(--radius-card); background: var(--color-surface); }
.recipe-ai__idea h3 { margin: 0 0 4px; font: 600 17px/24px var(--font-display); }
.recipe-ai__idea ul { margin: 6px 0; padding-left: 18px; color: var(--color-muted); font-size: 13px; }
.recipe-ai__meta { font-size: 13px; color: var(--color-subtle); }
.recipe-ai__actions { display: flex; gap: 8px; flex-wrap: wrap; }

/* ── Fête : occasion, composer, menu, plan, à plusieurs ── */
.fete-occasion__invites { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 0; border-top: 1px solid var(--color-border); border-bottom: 1px solid var(--color-border); }
.fete-occasion__invites-txt { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.fete-occasion__invites-txt .kb-field__label { font-size: 15px; font-weight: 600; color: var(--color-text); }
.fete-occasion__table { font-size: 13px; line-height: 18px; color: var(--color-muted); }
.fete-occasion__stepper { flex: none; }
.fete-occasion__stepper > button:disabled { color: var(--color-subtle); }
.fete-occasion__nb { width: 48px; min-height: 40px; padding: 0; border: 0; background: transparent; text-align: center; font: 600 20px var(--font-body); font-variant-numeric: tabular-nums; -moz-appearance: textfield; }
.fete-occasion__nb::-webkit-inner-spin-button, .fete-occasion__nb::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }

.fete-composer .kb-field .kb-chip { font-size: 13px; min-height: 40px; }
.fete-element { display: flex; flex-direction: column; gap: 10px; padding: 14px 16px; border: 1px solid var(--color-border); border-radius: var(--radius-card); background: var(--color-surface); }
.fete-element:not(.is-on) { background: transparent; border-style: dashed; }
.fete-element__nom { display: flex; align-items: center; gap: 10px; min-height: 32px; font-size: 15px; cursor: pointer; }
.fete-element__nom strong { flex: 1; min-width: 0; font-weight: 600; }
.fete-element--toujours .fete-element__nom { cursor: default; }
.fete-element__aide { display: flex; align-items: center; gap: 6px; font-size: 13px; color: var(--color-muted); }
.fete-element__recettes { list-style: none; }
.fete-element__recette { display: inline-flex; align-items: center; min-height: 36px; padding: 0 14px; border-radius: 999px; background: var(--color-primary); color: var(--color-on-primary); font-size: 13px; font-weight: 600; }
.kb-chip.fete-element__choisir { align-self: flex-start; min-height: 40px; border-style: dashed; border-color: var(--color-primary); color: var(--color-primary); font-size: 13px; font-weight: 600; }
.fete-element__modes > button { font-size: 13px; }
.fete-choix { display: flex; flex-direction: column; gap: 12px; }

.fete-menu__gardes { display: flex; flex-direction: column; gap: 8px; }
.fete-menu__gardes .kb-row { padding-left: 0; }
.fete-menu__rouvrir { flex: 1; min-width: 0; display: flex; align-items: center; gap: 12px; min-height: 52px; padding: 0 0 0 14px; border: 0; background: none; text-align: left; font: inherit; color: var(--color-text); cursor: pointer; }
.fete-menu__alerte { font-size: 13px; line-height: 18px; color: var(--color-muted); }
.fete-menu__groupe { display: flex; flex-direction: column; gap: 8px; }
.fete-menu__groupe-tete { display: flex; align-items: center; justify-content: space-between; gap: 8px; flex-wrap: wrap; }
.fete-menu__groupe-tete h3 { font-size: 11px; line-height: 14px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; color: var(--color-subtle); }
.fete-menu__groupe .kb-list { list-style: none; }
.fete-plat { padding: 12px 14px 12px 16px; }
.fete-plat + .fete-plat { border-top: 1px solid var(--color-border); }
.fete-plat--bloque, .fete-plat--off .fete-plat__texte { opacity: .6; }
.fete-plat__case { display: flex; gap: 12px; align-items: center; cursor: pointer; }
.fete-plat__texte { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.fete-plat__texte strong { font-size: 15px; line-height: 20px; font-weight: 600; overflow-wrap: anywhere; }
.fete-plat__texte small { font-size: 13px; line-height: 18px; color: var(--color-muted); font-variant-numeric: tabular-nums; }
.fete-plat__bloque { margin-top: 6px; font-size: 13px; color: var(--viande-fg); }
.fete-plat__servi { display: flex; align-items: center; gap: 8px; margin-top: 8px; font-size: 13px; color: var(--color-muted); white-space: nowrap; }
.fete-plat__servi select { flex: 1; min-width: 0; min-height: 40px; font-size: 15px; }
.fete-menu__actions { display: flex; gap: 8px; flex-wrap: wrap; }
.v4-feast-incomplete { display: flex; flex-direction: column; gap: 6px; padding: 14px 16px; border-radius: var(--radius-tile); background: var(--dlc-bientot-bg); color: var(--dlc-bientot-fg); font-size: 13px; line-height: 18px; }
.v4-feast-incomplete__titre { display: flex; align-items: center; gap: 8px; font-size: 15px; }
.btn.v4-feast-incomplete__btn { align-self: flex-start; margin-top: 4px; background: var(--dlc-bientot-fg); color: var(--dlc-bientot-bg); }

.fete-ensemble__plats { flex-wrap: wrap; }
.fete-ensemble__plats-txt { flex: 1 1 160px; }

/* ── Fin de parcours : rond 72 px marque, titre 32, tuiles chiffrées ── */
.kb-fin { flex: 1 0 auto; padding: 32px var(--gutter) calc(20px + var(--safe-bottom)); gap: 28px; }
.kb-fin__haut { display: flex; flex-direction: column; gap: 28px; }
.kb-fin__rond { display: grid; place-items: center; width: 72px; height: 72px; border-radius: 999px; background: var(--color-primary); color: var(--color-on-primary); }
.kb-fin__textes { display: flex; flex-direction: column; gap: 8px; }
.kb-fin__titre { font: 600 32px/38px var(--font-display); letter-spacing: -.025em; color: var(--color-text); }
.kb-fin__sous { font-size: 17px; line-height: 24px; color: var(--color-muted); }
.kb-fin__tuiles { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin: 0; }
.kb-fin__tuile { display: flex; flex-direction: column-reverse; gap: 2px; padding: 14px; border: 1px solid var(--color-border); border-radius: var(--radius-tile); background: var(--color-surface); }
.kb-fin__tuile dt { font-size: 13px; line-height: 18px; color: var(--color-muted); }
.kb-fin__tuile dd { margin: 0; font: 600 24px/30px var(--font-display); font-variant-numeric: tabular-nums; }
.kb-fin__acces { margin-top: auto; display: flex; flex-direction: column; gap: 8px; }
.kb-fin__acces > .btn { width: 100%; }
.kb-fin__secondaires { display: flex; gap: 8px; }
.kb-fin__secondaires > .btn { flex: 1; min-width: 0; }
@media (max-width: 380px) { .kb-fin__secondaires { flex-direction: column; } }

/* ══ Organiser une occasion ═══════════════════════════════════════════ */
.kb-occasions { display: flex; flex-direction: column; gap: 12px; }
.kb-occasions > * { flex-shrink: 0; }
.occasion-intro { font-size: 15px; line-height: 21px; color: var(--color-muted); }
.kb-occasions__hero { display: flex; flex-direction: column; gap: 8px; padding: 18px; border-radius: var(--radius-card); background: var(--color-primary); color: var(--color-on-primary); }
.kb-occasions__eyebrow { font-size: 11px; line-height: 14px; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; }
.kb-occasions__fete { font: 600 24px/30px var(--font-display); letter-spacing: -.02em; color: var(--color-on-primary); }
.btn.kb-occasions__cta { align-self: flex-start; margin-top: 6px; background: var(--color-surface); color: var(--color-primary); }
.occasion-list { display: flex; flex-direction: column; gap: 8px; }
.occasion-link {
  display: flex; align-items: center; gap: 14px; width: 100%; min-height: 70px; padding: 12px 16px;
  border: 1px solid var(--color-border); border-radius: var(--radius-card);
  background: var(--color-surface); color: var(--color-text); text-align: left; cursor: pointer; font: inherit;
}
.occasion-link__icon { flex: none; display: grid; place-items: center; width: 40px; height: 40px; border-radius: 12px; background: var(--color-primary-soft); color: var(--color-primary); }
.occasion-link__body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.occasion-link__body strong { font: 600 17px/22px var(--font-display); letter-spacing: -.01em; }
.occasion-link__body small { font-size: 13px; line-height: 18px; color: var(--color-muted); }
.occasion-link__trail { flex: none; font-size: 13px; font-weight: 600; color: var(--color-primary); font-variant-numeric: tabular-nums; }
.occasion-link__chev { flex: none; color: var(--color-subtle); }
