/* kkebi information badges. Controls, counters and achievement medals have separate roles. */
:root{
  --badge-radius:6px;--badge-font-size:11px;--badge-line-height:16px;
  --badge-neutral-bg:var(--soft,#F3F6F4);--badge-neutral-ink:var(--ink-2,#4A5B55);
  --badge-positive-bg:var(--primary-soft,#E6F3EE);--badge-positive-ink:var(--primary,#087E60);
  --badge-warning-bg:#FFF4DC;--badge-warning-ink:#8A5A00;
  --badge-danger-bg:#FEF1F2;--badge-danger-ink:#B4232B;
}
/* Explicit legacy adapters let old and newly rendered cards share the same component. */
html body :is(.kb-badge,.tg,.hero .meta .m.is-ready,.hero .meta .m.is-near,.swap-item b,.reco-tags>span.is-ready,.reco-tags>span.is-lack,.reco-tags>span.is-soon,.lk-pill,.recipe-body>.tag,.row-meta>.rtag,.status-pill,.pa-chip,.kp-tag,.status-kicker,.reflect .rh .tag2:not(.fridge-reflect-tag),.auth-hero .tagline,.kf-ing>b,.kf-ing>.kf-pill,.kf-chip,.badge-soft,.featured-card .ph .badge){
  display:inline-flex;align-items:center;justify-content:center;gap:4px;
  min-height:22px;height:auto;max-width:100%;padding:3px 7px;
  border:var(--kb-badge-border,0);border-radius:var(--badge-radius);box-shadow:none;
  font-family:inherit;font-size:var(--badge-font-size);font-style:normal;font-weight:600;line-height:var(--badge-line-height);
  letter-spacing:0;vertical-align:middle;white-space:normal;overflow-wrap:anywhere;
  color:var(--kb-badge-color,var(--badge-neutral-ink));background:var(--kb-badge-bg,var(--badge-neutral-bg));
}
html body :is(.tg.tg-ready,.q.is-ready .tg,.hero .meta .m.is-ready,.swap-item b.is-ready,.reco-tags>span.is-ready,.lk-pill.is-ready,.recipe-card.is-ready .tag,.kb-badge--positive,.badge-soft.ok,.kf-ing.is-have>.kf-pill){
  --kb-badge-bg:var(--badge-positive-bg);--kb-badge-color:var(--badge-positive-ink);
}
html body :is(.tg.tg-near,.q.is-near .tg,.hero .meta .m.is-near,.swap-item b:not(.is-ready),.reco-tags>span.is-lack,.lk-pill.is-lack,.recipe-card.is-near .tag,.kb-badge--warning){
  --kb-badge-bg:var(--badge-warning-bg);--kb-badge-color:var(--badge-warning-ink);
}
html body :is(.tg.tg-soon,.reco-tags>span.is-soon,.kb-badge--urgent,.kf-chip.is-urgent,.badge-soft.err){
  --kb-badge-bg:var(--badge-danger-bg);--kb-badge-color:var(--badge-danger-ink);
}
/* Recommendation over a photograph stays opaque and distinct from a selectable filter. */
html body .featured-card .ph .badge{--kb-badge-bg:var(--surface,#fff);--kb-badge-color:var(--ink-2,#4A5B55);--kb-badge-border:1px solid var(--line,#E3E8E5)}
/* Ingredient labels are larger than a short status, but remain neutral information. */
html body .order-ings:not(.is-empty) .order-ing{min-height:30px;padding:6px 10px;border-radius:8px;background:var(--badge-neutral-bg);color:var(--badge-neutral-ink)}
html body .order-ings .order-ing i{color:var(--badge-neutral-ink)}
/* Keep the existing checklist semantics (have / need / missing) and soften its labels. */
html body .kf-ing.is-miss>b{--kb-badge-bg:var(--badge-danger-bg);--kb-badge-color:var(--badge-danger-ink)}
html body .kf-ing.is-short>b{--kb-badge-bg:var(--badge-warning-bg);--kb-badge-color:var(--badge-warning-ink)}
html body .kf-chip small,html body .kf-chip em{font:inherit;color:inherit}
/* Mini fridge sheet (2026-10-02): rows that need action sit in a soft tinted box, so their badge is opaque white with the state ink. */
html body .kf-ing.is-miss>.kf-pill{--kb-badge-bg:var(--surface,#fff);--kb-badge-color:var(--badge-danger-ink)}
html body .kf-ing.is-short>.kf-pill{--kb-badge-bg:var(--surface,#fff);--kb-badge-color:#8A5408}
/* Filters are controls, not status badges: preserve their hit area and selected outline. */
html body :is([data-panel="saved"] .lk-chip.is-on,.reco-chip.is-on){background:var(--primary-soft);border-color:var(--primary);color:var(--primary)}
/* Floating counters retain their circular role and their actual, uncapped value. */
html body .kf-fab .kf-fab-n{min-width:20px;height:20px;padding:0 5px;border-radius:10px;font-size:11px;font-weight:700;line-height:18px;font-variant-numeric:tabular-nums}
html body .kf-fab.is-missing .kf-fab-n{background:var(--badge-danger-bg);color:var(--badge-danger-ink);border-color:var(--surface,#fff)}
html body .kf-fab.is-ready .kf-fab-n{background:var(--badge-positive-bg);color:var(--badge-positive-ink);border-color:var(--surface,#fff)}
html body :is(.kb-badge,.tg,.hero .meta .m,.swap-item b,.reco-tags>span,.lk-pill,.recipe-body>.tag,.row-meta>.rtag,.status-pill,.pa-chip,.kp-tag,.status-kicker,.reflect .rh .tag2,.auth-hero .tagline,.kf-ing>b,.kf-chip,.badge-soft,.featured-card .ph .badge)[hidden]{display:none!important}
