/* ============ Fabrications / Lots — registre, détail, traçabilité, wizard ============ */

/* chip variants */
.chip.blue { background: rgba(58,111,192,0.12); color: #3a6fc0; }
.chip.red { background: var(--red-soft); color: var(--red); }
.chip.muted { background: var(--surface-3); color: var(--text-muted); }
.chip.bordeaux { background: var(--bordeaux-soft); color: var(--bordeaux); }
.chip-sm { padding: 2px 8px; font-size: 11px; }
[data-theme="dark"] .chip.blue { background: rgba(120,160,230,0.16); color: #8fb0e6; }
.muted-dash { color: var(--text-faint); }

/* ---------- KPI row ---------- */
.kpi-row { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; margin-bottom: 18px; }
.kpi { padding: 16px 18px; display: flex; align-items: center; gap: 14px; }
.kpi-ico { width: 42px; height: 42px; border-radius: 12px; flex-shrink: 0; display: grid; place-items: center; background: var(--surface-3); color: var(--text-muted); }
.kpi-ico svg { width: 21px; height: 21px; }
.kpi-ico.green { background: var(--green-soft); color: var(--green); }
.kpi-ico.amber { background: var(--amber-soft); color: var(--amber); }
.kpi-ico.bordeaux { background: var(--bordeaux-soft); color: var(--bordeaux); }
.kpi-ico.layers { background: rgba(120,90,160,0.13); color: #7d5aa0; }
[data-theme="dark"] .kpi-ico.layers { background: rgba(176,148,208,0.16); color: #b094d0; }
.kpi-val { font-size: 22px; font-weight: 750; letter-spacing: -0.02em; line-height: 1.1; }
.kpi-label { font-size: 12.5px; color: var(--text-muted); font-weight: 500; margin-top: 2px; }
.kpi-sub { font-size: 11px; color: var(--text-faint); margin-top: 1px; }

/* ---------- Registry table ---------- */
.reg-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 14px 18px; border-bottom: 1px solid var(--border); }
.reg-search { position: relative; width: 280px; }
.reg-search .search-input { padding-left: 38px; }
.reg-table thead th { position: sticky; top: 0; }
.reg-row { cursor: pointer; transition: background .12s; }
.reg-row:hover { background: var(--surface-2); }
.reg-num { font-weight: 600; font-size: 13px; }
.reg-prod { font-weight: 600; font-size: 13.5px; display: flex; align-items: center; }
.reg-date { color: var(--text-muted); font-size: 13px; }
.reg-chev { width: 16px; height: 16px; color: var(--text-faint); }
.reg-row:hover .reg-chev { color: var(--accent); }

/* ---------- Lot detail ---------- */
.back-btn { margin-bottom: 16px; }
.lot-head { padding: 18px 22px; display: flex; align-items: center; gap: 16px; margin-bottom: 16px; }
.lot-head-ico { width: 50px; height: 50px; border-radius: 13px; flex-shrink: 0; display: grid; place-items: center; background: var(--bordeaux-soft); color: var(--bordeaux); }
.lot-head-ico svg { width: 25px; height: 25px; }
.lot-head-ico.semi { background: rgba(120,90,160,0.13); color: #7d5aa0; }
[data-theme="dark"] .lot-head-ico.semi { background: rgba(176,148,208,0.16); color: #b094d0; }
.lot-numero { font-size: 21px; font-weight: 750; letter-spacing: -0.01em; }
.lot-fiche { font-size: 13.5px; color: var(--text); font-weight: 500; margin-top: 2px; }
.lot-head-chips { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; justify-content: flex-end; }
.lot-grid { display: grid; grid-template-columns: 1fr 340px; gap: 16px; align-items: start; }

/* cost compare */
.cost-compare { display: flex; align-items: stretch; gap: 12px; }
.cc-block { flex: 1; background: var(--surface-2); border: 1px solid var(--border); border-radius: 13px; padding: 14px 16px; }
.cc-block.reel { background: var(--bordeaux-soft); border-color: transparent; }
.cc-label { font-size: 11.5px; color: var(--text-muted); font-weight: 600; }
.cc-block.reel .cc-label { color: var(--bordeaux); }
.cc-val { font-size: 23px; font-weight: 750; letter-spacing: -0.02em; margin-top: 6px; }
.cc-block.reel .cc-val { color: var(--bordeaux); }
.cc-unit { font-size: 12px; color: var(--text-muted); margin-top: 2px; }
.cc-arrow { display: grid; place-items: center; color: var(--text-faint); }
.cc-arrow svg { width: 20px; height: 20px; }
.cc-ecart { display: flex; align-items: center; gap: 7px; margin-top: 12px; font-size: 12.5px; font-weight: 600; padding: 8px 12px; border-radius: 10px; }
.cc-ecart svg { width: 15px; height: 15px; }
.cc-ecart.neg { background: var(--amber-soft); color: var(--amber); }
.cc-ecart.pos { background: var(--green-soft); color: var(--green); }

/* meta rows */
.meta-row { display: flex; align-items: flex-start; gap: 11px; padding: 7px 0; }
.meta-row svg { width: 17px; height: 17px; color: var(--text-faint); flex-shrink: 0; margin-top: 2px; }
.meta-k { font-size: 11.5px; color: var(--text-muted); }
.meta-v { font-size: 14px; font-weight: 600; }
.dlc-big { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; }
.dlc-date { font-size: 18px; font-weight: 700; letter-spacing: -0.01em; margin-top: 2px; }
.rule-note { display: flex; align-items: flex-start; gap: 8px; font-size: 12px; font-weight: 500; line-height: 1.45; padding: 9px 11px; border-radius: 10px; margin-top: 10px; }
.rule-note svg { width: 15px; height: 15px; flex-shrink: 0; margin-top: 1px; }
.rule-note.ok { background: var(--green-soft); color: var(--green); }
.rule-note.red { background: var(--red-soft); color: var(--red); }
.rule-note.neutral { background: var(--surface-3); color: var(--text-muted); }
.alg-none { display: flex; align-items: center; gap: 8px; font-size: 12.5px; color: var(--text-muted); }
.alg-none svg { width: 15px; height: 15px; color: var(--green); }
.alg-list { display: flex; flex-wrap: wrap; gap: 7px; }
.alg-tag { font-size: 12px; font-weight: 700; padding: 4px 11px; border-radius: 20px; background: var(--amber-soft); color: var(--amber); text-transform: capitalize; }

/* ---------- Traceability tree ---------- */
.trace-root { padding: 14px 18px 18px; }
.trace-rootrow { display: flex; align-items: center; gap: 10px; padding: 9px 12px; background: var(--surface-2); border: 1px solid var(--border); border-radius: 10px; }
.trace-children { margin-left: 18px; padding-left: 16px; border-left: 1.5px dashed var(--border-strong); margin-top: 2px; }
.trace-node { position: relative; }
.trace-row { display: flex; align-items: center; gap: 9px; padding: 8px 10px; border-radius: 9px; transition: background .12s; }
.trace-row:hover { background: var(--surface-2); }
.trace-toggle { width: 20px; height: 20px; border-radius: 6px; display: grid; place-items: center; color: var(--text-muted); flex-shrink: 0; }
.trace-toggle:hover { background: var(--surface-3); }
.trace-toggle svg { width: 14px; height: 14px; }
.trace-leaf-dot { width: 20px; display: grid; place-items: center; flex-shrink: 0; }
.trace-leaf-dot::after { content: ''; width: 5px; height: 5px; border-radius: 50%; background: var(--text-faint); }
.trace-badge { display: inline-flex; align-items: center; gap: 4px; font-size: 10px; font-weight: 700; letter-spacing: 0.02em; text-transform: uppercase; padding: 3px 8px; border-radius: 7px; flex-shrink: 0; }
.trace-badge svg { width: 11px; height: 11px; }
.trace-badge.mp { background: rgba(58,111,192,0.12); color: #3a6fc0; }
.trace-badge.semi { background: rgba(120,90,160,0.13); color: #7d5aa0; }
.trace-badge.fini { background: var(--bordeaux-soft); color: var(--bordeaux); }
[data-theme="dark"] .trace-badge.mp { background: rgba(120,160,230,0.16); color: #8fb0e6; }
[data-theme="dark"] .trace-badge.semi { background: rgba(176,148,208,0.16); color: #b094d0; }
.trace-name { font-size: 13px; font-weight: 550; flex: 1; min-width: 0; }
.trace-name.strong { font-weight: 700; }
.trace-lot { font-size: 12px; font-variant-numeric: tabular-nums; color: var(--text-muted); background: var(--surface-3); padding: 2px 8px; border-radius: 6px; }
.trace-four { font-size: 11.5px; color: var(--text-faint); }
.trace-dlc { min-width: 120px; display: flex; justify-content: flex-end; }
.trace-qty { font-size: 12.5px; color: var(--text-muted); min-width: 74px; text-align: right; }
.trace-cout { font-size: 13px; font-weight: 650; min-width: 64px; text-align: right; }
.trace-cout.strong { font-weight: 750; }
.trace-childlot { font-size: 11px; color: var(--text-faint); padding: 4px 10px 2px; font-style: italic; }

/* ---------- Modal / wizard ---------- */
.modal-overlay { position: fixed; inset: 0; background: rgba(30,24,18,0.42); backdrop-filter: blur(3px); display: grid; place-items: center; z-index: 100; padding: 28px; animation: fadein .15s ease; }
[data-theme="dark"] .modal-overlay { background: rgba(0,0,0,0.6); }
@keyframes fadein { from { opacity: 0; } }
.modal { background: var(--surface); border: 1px solid var(--border); border-radius: 20px; box-shadow: var(--shadow-lg); width: 100%; max-width: 860px; max-height: calc(100vh - 56px); display: flex; flex-direction: column; overflow: hidden; animation: pop .18s cubic-bezier(.2,.9,.3,1.1); }
@keyframes pop { from { transform: translateY(10px) scale(.99); opacity: 0; } }
.wiz-head { display: flex; align-items: center; justify-content: space-between; padding: 18px 22px; border-bottom: 1px solid var(--border); }
.wiz-title { display: flex; align-items: center; gap: 10px; font-size: 16px; font-weight: 700; }
.wiz-steps { display: flex; gap: 6px; padding: 14px 22px; border-bottom: 1px solid var(--border); background: var(--surface-2); }
.wiz-step { display: flex; align-items: center; gap: 8px; font-size: 12.5px; font-weight: 600; color: var(--text-faint); padding: 5px 12px 5px 6px; border-radius: 20px; }
.wiz-step.active { color: var(--accent); background: var(--accent-soft); }
.wiz-step.done { color: var(--green); }
.wiz-step-num { width: 22px; height: 22px; border-radius: 50%; display: grid; place-items: center; font-size: 11px; font-weight: 700; background: var(--surface-3); color: var(--text-muted); }
.wiz-step.active .wiz-step-num { background: var(--accent); color: #fff; }
.wiz-step.done .wiz-step-num { background: var(--green); color: #fff; }
.wiz-step.done .wiz-step-num svg { width: 12px; height: 12px; }
.wiz-body { flex: 1; overflow-y: auto; padding: 22px; }
.wiz-foot { display: flex; align-items: center; padding: 16px 22px; border-top: 1px solid var(--border); background: var(--surface-2); }
.wiz-foot-spacer { flex: 1; }

/* step 1 — fiches */
.wiz-fiches { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.wiz-fiche-card { display: flex; align-items: center; gap: 13px; padding: 15px 16px; border-radius: 14px; border: 1.5px solid var(--border); background: var(--surface); text-align: left; transition: border-color .14s, background .14s; }
.wiz-fiche-card:hover { border-color: var(--border-strong); background: var(--surface-2); }
.wiz-fiche-card.on { border-color: var(--accent); background: var(--accent-soft); }
.wiz-fiche-ico { width: 42px; height: 42px; border-radius: 11px; flex-shrink: 0; display: grid; place-items: center; background: var(--bordeaux-soft); color: var(--bordeaux); }
.wiz-fiche-ico svg { width: 21px; height: 21px; }
.wiz-fiche-ico.semi { background: rgba(120,90,160,0.13); color: #7d5aa0; }
.wiz-fiche-info { flex: 1; min-width: 0; }
.wiz-fiche-name { font-weight: 650; font-size: 14px; }
.wiz-fiche-meta { font-size: 11.5px; color: var(--text-muted); margin-top: 2px; }
.wiz-fiche-cost { font-size: 15px; font-weight: 700; text-align: right; }
.wiz-fiche-cost span { display: block; font-size: 10px; color: var(--text-faint); font-weight: 500; }

/* step 2 — quantité */
.wiz-qte { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.wiz-qte-card { }
.qte-big-wrap { display: flex; align-items: baseline; gap: 10px; margin: 10px 0 14px; }
.qte-big { width: 150px; font-size: 38px; font-weight: 750; letter-spacing: -0.03em; background: var(--surface-2); border: 1.5px solid var(--border-strong); border-radius: 14px; padding: 8px 16px; font-variant-numeric: tabular-nums; }
.qte-big:focus { outline: none; border-color: var(--accent); background: var(--surface); }
.qte-big-unit { font-size: 17px; font-weight: 600; color: var(--text-muted); }
.qte-presets { display: flex; gap: 8px; margin-bottom: 12px; }
.qte-preset { padding: 7px 13px; border-radius: 9px; border: 1px solid var(--border-strong); font-size: 13px; font-weight: 600; background: var(--surface); color: var(--text-muted); transition: .12s; }
.qte-preset:hover { border-color: var(--accent); color: var(--accent); background: var(--accent-soft); }
.qte-hint-line { font-size: 12px; color: var(--text-muted); }
.wiz-explosion { background: var(--surface-2); border: 1px solid var(--border); border-radius: 14px; padding: 14px 16px; }
.exp-row { display: flex; align-items: center; gap: 10px; padding: 7px 0; border-bottom: 1px solid var(--border); }
.exp-row:last-child { border-bottom: none; }
.exp-name { flex: 1; font-size: 13px; font-weight: 550; }
.exp-need { font-size: 13.5px; font-weight: 700; color: var(--accent); font-variant-numeric: tabular-nums; }

/* step 3 — lots */
.wiz-lots { display: flex; flex-direction: column; gap: 12px; }
.lotrow { padding: 14px 16px; }
.lotrow-head { display: flex; align-items: center; gap: 10px; margin-bottom: 12px; }
.lotrow-name { flex: 1; font-weight: 650; font-size: 14px; }
.lotrow-need { font-size: 13.5px; font-weight: 700; color: var(--accent); font-variant-numeric: tabular-nums; }
.mp-grid { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 12px; }
.wiz-field { display: flex; flex-direction: column; gap: 6px; }
.wiz-field > span { font-size: 11.5px; font-weight: 600; color: var(--text-muted); }
.wiz-input { background: var(--surface-2); border: 1px solid var(--border-strong); border-radius: 9px; padding: 9px 11px; font-size: 13px; }
.wiz-input:focus { outline: none; border-color: var(--accent-line); background: var(--surface); }
.wiz-input.missing { border-color: var(--red); background: var(--red-soft); }
.wiz-foot-hint { display: inline-flex; align-items: center; gap: 7px; font-size: 12px; font-weight: 600; color: var(--red); margin-right: 14px; }
.wiz-foot-hint svg { width: 15px; height: 15px; }
.lot-choices { display: flex; flex-direction: column; gap: 8px; }
.lot-choice { display: flex; align-items: center; gap: 12px; padding: 10px 13px; border-radius: 10px; border: 1.5px solid var(--border); background: var(--surface-2); text-align: left; transition: .12s; }
.lot-choice:hover { border-color: var(--border-strong); }
.lot-choice.on { border-color: var(--accent); background: var(--accent-soft); }
.lc-num { font-weight: 650; font-size: 13px; }
.lc-meta { flex: 1; font-size: 12px; color: var(--text-muted); }
.lot-none { font-size: 12.5px; color: var(--text-muted); padding: 8px 2px; }
.fab-now { display: flex; align-items: center; gap: 9px; font-size: 12.5px; color: #7d5aa0; background: rgba(120,90,160,0.10); padding: 11px 13px; border-radius: 10px; }
.fab-now svg { width: 16px; height: 16px; flex-shrink: 0; }
[data-theme="dark"] .fab-now { color: #b094d0; background: rgba(176,148,208,0.12); }

/* step 4 — final */
.wiz-final { display: grid; grid-template-columns: 1fr 300px; gap: 18px; align-items: start; }
.final-stats { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 18px; }
.fstat { background: var(--surface-2); border: 1px solid var(--border); border-radius: 12px; padding: 12px 14px; }
.fstat .lbl { font-size: 11.5px; color: var(--text-muted); }
.fstat .val { font-size: 18px; font-weight: 700; margin-top: 3px; font-variant-numeric: tabular-nums; }
.fstat .val.accent { color: var(--accent); }
.wiz-recap { padding: 16px 18px; }
.recap-num { display: flex; flex-direction: column; gap: 4px; }
.recap-k { font-size: 11.5px; color: var(--text-muted); font-weight: 600; }
.recap-numero { font-size: 19px; font-weight: 750; letter-spacing: -0.01em; color: var(--accent); }

/* toast */
.toast { position: fixed; bottom: 24px; left: 50%; transform: translateX(-50%); z-index: 200; display: flex; align-items: center; gap: 9px; background: var(--text); color: var(--bg); padding: 12px 18px; border-radius: 12px; font-size: 13.5px; font-weight: 600; box-shadow: var(--shadow-lg); animation: toastin .25s cubic-bezier(.2,.9,.3,1.1); }
.toast svg { width: 17px; height: 17px; color: var(--green); }
@keyframes toastin { from { transform: translate(-50%, 14px); opacity: 0; } }

/* responsive */
@media (max-width: 1080px) {
  .kpi-row { grid-template-columns: 1fr 1fr; }
  .lot-grid, .wiz-final, .wiz-qte { grid-template-columns: 1fr; }
}

/* ---------- wizard MP hint ---------- */
.lotrow-hint { display: flex; align-items: center; gap: 8px; font-size: 11.5px; color: var(--text-muted); margin-bottom: 11px; }
.lotrow-hint svg { width: 14px; height: 14px; color: var(--accent); flex-shrink: 0; }

/* ---------- Articles screen ---------- */
.cat-tabs { display: flex; gap: 4px; flex-wrap: wrap; }
.cat-tab { padding: 6px 12px; border-radius: 8px; font-size: 12.5px; font-weight: 600; color: var(--text-muted); transition: .12s; }
.cat-tab:hover { background: var(--surface-3); color: var(--text); }
.cat-tab.active { background: var(--accent-soft); color: var(--accent); }
.art-scroll { max-height: calc(100vh - 320px); overflow-y: auto; }
.art-table thead th { position: sticky; top: 0; z-index: 1; }
.art-four { font-size: 13px; color: var(--text-muted); }
.art-lot { font-weight: 600; font-size: 13px; background: var(--surface-3); padding: 2px 8px; border-radius: 6px; display: inline-block; }
.art-lot-sub { font-size: 11px; color: var(--text-faint); margin-top: 3px; }
.rec-btn { white-space: nowrap; }

/* ---------- Articles : deux niveaux (boucherie / catalogue) ---------- */
.art-tabs { display: flex; align-items: center; gap: 8px; margin-bottom: 16px; flex-wrap: wrap; }
.art-tab { display: flex; align-items: center; gap: 8px; padding: 9px 15px; border-radius: 12px; font-size: 13.5px; font-weight: 650; color: var(--text-muted); border: 1px solid var(--border); background: var(--surface); transition: .13s; }
.art-tab svg { width: 17px; height: 17px; }
.art-tab:hover { background: var(--surface-3); color: var(--text); }
.art-tab.active { background: var(--accent-soft); color: var(--accent); border-color: var(--accent-line); }
.art-tab-count { font-size: 11.5px; font-weight: 700; background: var(--surface-3); color: var(--text-muted); padding: 1px 8px; border-radius: 20px; font-variant-numeric: tabular-nums; }
.art-tab.active .art-tab-count { background: var(--accent); color: #fff; }
.art-tab-todo { font-size: 11px; font-weight: 700; background: var(--amber); color: #fff; padding: 1px 7px; border-radius: 20px; }
.art-tabs-spacer { flex: 1; }
.art-tabs-search { width: 280px; }
@media (max-width: 720px) { .art-tabs-search { width: 100%; order: 5; } .art-tabs-spacer { display: none; } }

.art-filterbar { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; padding: 12px 18px; border-bottom: 1px solid var(--border); }
.art-filter { appearance: none; background: var(--surface-2) url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23999' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'><path d='m6 9 6 6 6-6'/></svg>") no-repeat right 10px center; border: 1px solid var(--border-strong); border-radius: 9px; padding: 7px 30px 7px 11px; font-size: 12.5px; font-weight: 600; color: var(--text); }
.art-filter:focus { outline: none; border-color: var(--accent-line); }
.art-todo-btn { display: inline-flex; align-items: center; gap: 6px; padding: 7px 12px; border-radius: 9px; font-size: 12.5px; font-weight: 600; color: var(--amber); background: var(--amber-soft); border: 1px solid transparent; margin-left: auto; }
.art-todo-btn.on { border-color: var(--amber); }
.art-cat-note { display: inline-flex; align-items: center; gap: 7px; font-size: 12px; color: var(--text-muted); margin-left: auto; }
.art-cat-note svg { color: var(--text-faint); }

.art-row-click { cursor: pointer; }
.art-row-click:hover { background: var(--surface-2); }
.todo-pill { display: inline-block; font-size: 10px; font-weight: 700; letter-spacing: 0.02em; text-transform: uppercase; color: var(--amber); background: var(--amber-soft); padding: 1px 7px; border-radius: 6px; margin-left: 8px; vertical-align: middle; }
.art-cap-note { padding: 12px 18px; text-align: center; font-size: 12px; color: var(--text-muted); border-top: 1px solid var(--border); background: var(--surface-2); }
.inactif-pill { color: var(--text-faint); background: var(--surface-3); }

/* ---------- Fournisseurs : lien cliquable, sélecteur, mini-fiche, référentiel ---------- */
.fourn-link { display: inline-flex; align-items: center; gap: 5px; font-size: 13px; font-weight: 600; color: var(--text); border-radius: 6px; padding: 1px 3px; margin: -1px -3px; transition: color .12s, background .12s; text-align: left; }
.fourn-link:hover { color: var(--accent); background: var(--accent-soft); }
.fourn-link > svg { color: var(--text-faint); flex-shrink: 0; }
.fourn-link:hover > svg { color: var(--accent); }
.fourn-unknown { display: inline-grid; place-items: center; width: 15px; height: 15px; border-radius: 50%; background: var(--amber-soft); color: var(--amber); font-size: 10px; font-weight: 800; margin-left: 3px; }
.stat-fourn-link { font-size: 13px; }

/* sélecteur */
.fsel { position: relative; width: 100%; }
.fsel-trigger { display: flex; align-items: center; justify-content: space-between; gap: 8px; width: 100%; background: var(--surface-2); border: 1px solid var(--border-strong); border-radius: 9px; padding: 9px 11px; font-size: 13.5px; font-weight: 500; color: var(--text); text-align: left; }
.fsel-trigger:hover { border-color: var(--text-faint); }
.fsel-trigger.open { border-color: var(--accent); background: var(--surface); }
.fsel-trigger.empty { color: var(--text-faint); font-weight: 400; }
.fsel-val { display: inline-flex; align-items: center; gap: 7px; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fsel-val > svg { color: var(--accent); flex-shrink: 0; }
.fsel-chev { color: var(--text-faint); transition: transform .18s; flex-shrink: 0; }
.fsel-chev.up { transform: rotate(180deg); }
.fsel-pop { position: absolute; z-index: 60; top: calc(100% + 6px); left: 0; right: 0; background: var(--surface); border: 1px solid var(--border-strong); border-radius: 12px; box-shadow: var(--shadow-lg, 0 12px 32px rgba(0,0,0,0.16)); overflow: hidden; }
.fsel-search { position: relative; padding: 10px 10px 8px; border-bottom: 1px solid var(--border); }
.fsel-search .search-ico { left: 20px; }
.fsel-search .search-input { width: 100%; }
.fsel-list { max-height: 360px; overflow-y: auto; padding: 5px; }
/* Dans une modale (corps en overflow-y:auto), la liste absolue est rognée : on la
   passe dans le flux pour qu'elle pousse le contenu et que le corps défile. */
.wiz-body .fsel-pop, .modal .fsel-pop { position: relative; top: 0; margin-top: 6px; }
.fsel-opt { display: flex; align-items: center; gap: 10px; width: 100%; padding: 8px 10px; border-radius: 8px; text-align: left; }
.fsel-opt:hover { background: var(--surface-2); }
.fsel-opt.on { background: var(--accent-soft); }
.fsel-opt-main { flex: 1; min-width: 0; }
.fsel-opt-nom { font-size: 13px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.fsel-opt-meta { font-size: 11px; color: var(--text-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.fsel-inactif { font-size: 10px; font-weight: 700; text-transform: uppercase; color: var(--text-faint); background: var(--surface-3); padding: 1px 6px; border-radius: 5px; }
.fsel-empty { padding: 14px 12px; font-size: 12.5px; color: var(--text-muted); text-align: center; }
.fsel-free { display: inline-flex; align-items: center; gap: 5px; margin-top: 10px; font-size: 12px; font-weight: 600; color: var(--accent); background: var(--accent-soft); padding: 6px 11px; border-radius: 8px; }
.fsel-foot { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 8px 12px; border-top: 1px solid var(--border); background: var(--surface-2); }
.fsel-all { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; color: var(--text-muted); }
.fsel-clear { font-size: 12px; font-weight: 600; color: var(--text-muted); }
.fsel-clear:hover { color: var(--bordeaux); }

/* mini-fiche */
.modal.ffiche { max-width: 760px; }
.ffiche-head { display: flex; align-items: center; gap: 13px; padding: 16px 18px; border-bottom: 1px solid var(--border); }
.ffiche-ico { width: 42px; height: 42px; border-radius: 11px; flex-shrink: 0; display: grid; place-items: center; background: var(--bordeaux-soft); color: var(--bordeaux); }
.ffiche-ico svg { width: 22px; height: 22px; }
.ffiche-nom { font-size: 17px; font-weight: 700; letter-spacing: -0.01em; }
.ffiche-sub { font-size: 12px; color: var(--text-muted); margin-top: 2px; }
.ffiche-hors { display: inline-flex; align-items: center; gap: 5px; color: var(--amber); font-weight: 600; }
.fourn-actif { display: inline-flex; align-items: center; gap: 7px; font-size: 12px; font-weight: 600; color: var(--text-muted); padding: 5px 11px 5px 7px; border-radius: 20px; border: 1px solid var(--border-strong); }
.fourn-actif.on { color: var(--green); border-color: var(--green); background: var(--green-soft); }
.fourn-actif.sm { padding: 3px 9px 3px 5px; font-size: 11px; }
.ffiche-body { padding: 18px; max-height: 70vh; overflow-y: auto; }
.ffiche-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }
.ffiche-col { display: flex; flex-direction: column; gap: 12px; min-width: 0; }
.ffiche-sec { font-size: 11px; font-weight: 700; letter-spacing: 0.05em; text-transform: uppercase; color: var(--text-faint); display: flex; align-items: center; gap: 8px; }
.ffiche-sec span { font-size: 10px; font-weight: 600; letter-spacing: 0.02em; text-transform: none; color: var(--text-muted); background: var(--surface-3); padding: 1px 8px; border-radius: 20px; }
.ffiche-info { display: flex; flex-direction: column; gap: 7px; }
.ffiche-line { display: flex; align-items: center; gap: 8px; font-size: 13px; min-width: 0; }
.ffiche-line.muted { color: var(--text-faint); }
.ffiche-line > svg { color: var(--text-faint); flex-shrink: 0; }
.ffiche-line a { color: var(--accent); word-break: break-all; }
.ffiche-k { font-size: 11px; font-weight: 700; text-transform: uppercase; color: var(--text-faint); width: 52px; flex-shrink: 0; }
.ffiche-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.ffiche-chip { display: flex; flex-direction: column; gap: 2px; padding: 8px 12px; border-radius: 10px; background: var(--surface-2); border: 1px solid var(--border); }
.ffiche-chip span { font-size: 10.5px; font-weight: 600; color: var(--text-muted); }
.ffiche-chip b { font-size: 14px; font-weight: 700; }
.ffiche-notes { width: 100%; min-height: 80px; resize: vertical; background: var(--surface-2); border: 1px solid var(--border-strong); border-radius: 10px; padding: 10px 12px; font-size: 13px; font-family: inherit; line-height: 1.5; }
.ffiche-notes:focus { outline: none; border-color: var(--accent-line); background: var(--surface); }
.ffiche-block { background: var(--surface-2); border: 1px solid var(--border); border-radius: 12px; padding: 12px 14px; }
.ffiche-block-t { display: flex; align-items: center; gap: 7px; font-size: 12px; font-weight: 650; margin-bottom: 9px; }
.ffiche-block-t svg { color: var(--text-muted); }
.ffiche-block-t span { margin-left: auto; font-size: 12px; font-weight: 700; color: var(--bordeaux); }
.ffiche-arts, .ffiche-achats { display: flex; flex-direction: column; gap: 1px; }
.ffiche-art, .ffiche-achat { display: flex; align-items: center; gap: 10px; padding: 6px 0; border-bottom: 1px solid var(--border); font-size: 12.5px; }
.ffiche-art:last-child, .ffiche-achat:last-child { border-bottom: none; }
.ffiche-art span { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ffiche-art b { font-weight: 700; white-space: nowrap; }
.ffiche-achat-d { color: var(--text-muted); width: 56px; flex-shrink: 0; }
.ffiche-achat-a { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ffiche-more, .ffiche-none { font-size: 11.5px; color: var(--text-faint); padding-top: 6px; }
.ffiche-libre { max-width: 520px; }

.fref-stats { font-size: 13px; color: var(--text-muted); }
.fref-stats b { color: var(--text); font-weight: 700; }
.fref-table tbody tr { cursor: pointer; }

@media (max-width: 760px) {
  .ffiche-grid { grid-template-columns: 1fr; gap: 18px; }
  .modal.ffiche { max-width: 100%; }
}
.art-badges { display: flex; flex-wrap: wrap; gap: 5px; }
.abadge { display: inline-flex; align-items: center; gap: 3px; font-size: 10.5px; font-weight: 600; padding: 2px 7px; border-radius: 20px; background: var(--surface-3); color: var(--text-muted); }
.abadge.bio { background: var(--green-soft); color: var(--green); }
.abadge.noncert { background: var(--surface-3); color: var(--text-muted); }
.abadge.inv { background: var(--bordeaux-soft); color: var(--bordeaux); }
.abadge.prov { background: var(--amber-soft); color: var(--amber); }
.abadge.semi { background: rgba(120,90,160,0.13); color: #7d5aa0; }
[data-theme="dark"] .abadge.semi { background: rgba(176,148,208,0.16); color: #b094d0; }

/* pastille « Provisoire » inline (titres, listes, lots) */
.prov-pill { display: inline-flex; align-items: center; gap: 3px; font-size: 10px; font-weight: 700; letter-spacing: 0.02em; text-transform: uppercase; color: var(--amber); background: var(--amber-soft); padding: 1px 7px; border-radius: 6px; margin-left: 8px; vertical-align: middle; }

/* carte « Produits provisoires » */
.prov-card { padding: 16px 18px; margin-bottom: 16px; border-color: var(--amber); }
.prov-card-h { display: flex; align-items: center; gap: 9px; font-size: 15px; font-weight: 650; }
.prov-card-ico { display: grid; place-items: center; width: 26px; height: 26px; border-radius: 8px; background: var(--amber-soft); color: var(--amber); }
.prov-card-ico svg { width: 16px; height: 16px; }
.prov-card-intro { font-size: 12.5px; color: var(--text-muted); line-height: 1.5; margin: 8px 0 12px; }
.prov-list { display: flex; flex-direction: column; gap: 6px; }
.prov-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 9px 12px; border: 1px solid var(--border); border-radius: 11px; background: var(--surface-2); }
.prov-row-nom { font-size: 13.5px; font-weight: 600; }
.prov-row-meta { font-size: 11.5px; color: var(--text-muted); margin-top: 2px; }
.prov-locked { display: inline-flex; align-items: center; gap: 5px; font-size: 11.5px; font-weight: 600; color: var(--amber); }

/* « Nouveau produit (temporaire) » dans la recherche de réception */
.rec-pick-new { border: 1.5px dashed var(--border-strong) !important; background: var(--surface-2); }
.rec-pick-new:hover { border-color: var(--accent) !important; background: var(--accent-soft); }
.rec-new-ico { display: grid; place-items: center; width: 34px; height: 34px; border-radius: 9px; background: var(--accent-soft); color: var(--accent); flex-shrink: 0; }
.rec-fourn { grid-column: 1 / -1; }
.mr-prov { border-style: dashed; color: var(--accent); margin-top: 8px; }

/* ---------- Tunnel « Nouvelle fiche » ---------- */
.modal.fichet { max-width: 920px; }
.fichet-id { display: flex; flex-direction: column; gap: 14px; max-width: 620px; margin: 0 auto; }
.fichet-grid2 { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.fichet-row { display: flex; }
.fichet-row .dlc-toggle { width: 100%; }
.fichet-id .segmented { display: flex; }
.fichet-id .seg-btn { flex: 1; text-align: center; }
.fichet-comp { display: grid; grid-template-columns: 1fr 280px; gap: 18px; align-items: start; }
.fichet-comp-main { min-width: 0; }
.fichet-prev { position: sticky; top: 0; background: var(--surface-2); border: 1px solid var(--border); border-radius: 14px; padding: 16px; }
.prev-inp { width: 58px; text-align: right; background: var(--surface); border: 1px solid var(--border-strong); border-radius: 7px; padding: 3px 7px; font-size: 13px; font-variant-numeric: tabular-nums; }

/* sélecteur produit fini + réconciliation */
.pfs-code { color: var(--text-faint); font-weight: 500; margin-left: 4px; }
.reconcile { margin-top: 12px; border: 1px solid var(--border); border-radius: 12px; background: var(--surface-2); padding: 12px 14px; }
.reconcile-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 5px 0; font-size: 13px; }
.reconcile-row span { color: var(--text-muted); }
.reconcile-ecart { display: flex; align-items: center; gap: 6px; margin-top: 8px; padding-top: 9px; border-top: 1px solid var(--border); font-size: 12.5px; font-weight: 600; }
.reconcile-ecart.ok { color: var(--green); }
.reconcile-ecart.warn { color: var(--amber); }
.rattach-btn { margin-top: 10px; }

@media (max-width: 760px) {
  .modal.fichet { max-width: 100%; }
  .fichet-comp { grid-template-columns: 1fr; }
  .fichet-prev { position: static; }
  .fichet-grid2 { grid-template-columns: 1fr; }
}

/* Ingrédients non certifiables bio (Paramètres) */
.ncert-chips { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-bottom: 14px; }
.ncert-chip { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 600; padding: 5px 6px 5px 12px; border-radius: 20px; background: var(--surface-2); border: 1px solid var(--border-strong); }
.ncert-chip button { display: grid; place-items: center; width: 18px; height: 18px; border-radius: 50%; color: var(--text-faint); background: var(--surface-3); }
.ncert-chip button:hover { color: #fff; background: var(--bordeaux); }
.ncert-add { display: inline-flex; align-items: center; gap: 4px; }
.ncert-input { width: 130px; background: var(--surface-2); border: 1px dashed var(--border-strong); border-radius: 20px; padding: 6px 13px; font-size: 13px; }
.ncert-input:focus { outline: none; border-style: solid; border-color: var(--accent-line); background: var(--surface); }
.ncert-add-btn { display: grid; place-items: center; width: 30px; height: 30px; border-radius: 50%; background: var(--accent-soft); color: var(--accent); }
.ncert-add-btn:disabled { opacity: 0.4; }
.ncert-foot { display: flex; align-items: center; justify-content: space-between; gap: 14px; flex-wrap: wrap; padding-top: 14px; border-top: 1px solid var(--border); }
.ncert-status { font-size: 12.5px; }
.ncert-dirty { display: inline-flex; align-items: center; gap: 6px; color: var(--amber); font-weight: 600; }
.ncert-ok { display: inline-flex; align-items: center; gap: 6px; color: var(--green); font-weight: 600; }

/* table catalogue */
.cat-table tbody td { vertical-align: middle; }
.cat-poids-edit { display: inline-flex; align-items: center; gap: 6px; justify-content: flex-end; }
.cat-poids-input { width: 76px; text-align: right; background: var(--surface-2); border: 1px dashed var(--border-strong); border-radius: 7px; padding: 5px 8px; font-size: 12.5px; font-variant-numeric: tabular-nums; }
.cat-poids-input:focus { outline: none; border-style: solid; border-color: var(--accent-line); background: var(--surface); }
.cat-poids-tag { font-size: 9.5px; font-weight: 700; text-transform: uppercase; color: var(--accent); background: var(--accent-soft); padding: 1px 5px; border-radius: 5px; }

/* modal édition boucherie */
.modal.art-edit { max-width: 880px; }
.art-edit-body { padding: 20px 22px; }
.art-edit-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 26px; margin-top: 14px; }
.art-edit-col { display: flex; flex-direction: column; gap: 14px; }
.art-edit-sec { font-size: 11px; font-weight: 700; letter-spacing: 0.05em; text-transform: uppercase; color: var(--text-faint); display: flex; align-items: center; gap: 8px; }
.art-edit-sec span { font-size: 10px; font-weight: 600; letter-spacing: 0.02em; text-transform: none; color: var(--text-muted); background: var(--surface-3); padding: 1px 8px; border-radius: 20px; }
.art-edit-col .wiz-field > span { display: flex; align-items: center; gap: 6px; }
.fhint { font-style: normal; font-size: 10.5px; font-weight: 500; color: var(--text-faint); }
.art-maj { font-size: 11px; color: var(--text-faint); margin-top: -6px; }
.art-toggle-row { display: flex; }
.art-toggle-row .dlc-toggle { width: 100%; }
.seg-btn em { display: block; font-style: normal; font-size: 9.5px; font-weight: 500; opacity: 0.75; margin-top: 1px; }
.art-edit-col .segmented { display: flex; }
.art-edit-col .seg-btn { flex: 1; text-align: center; }

.allerg-chips { display: flex; flex-wrap: wrap; gap: 5px; }
.allerg-chip { font-size: 11.5px; font-weight: 500; padding: 4px 10px; border-radius: 20px; background: var(--surface-2); border: 1px solid var(--border-strong); color: var(--text-muted); text-transform: capitalize; transition: .12s; }
.allerg-chip:hover { border-color: var(--amber); }
.allerg-chip.on { background: var(--amber-soft); border-color: var(--amber); color: var(--amber); font-weight: 600; }
.allerg-none { display: inline-flex; align-items: center; gap: 6px; margin-top: 9px; font-size: 12px; font-weight: 600; color: var(--text-muted); padding: 5px 10px; border-radius: 8px; border: 1px solid var(--border-strong); }
.allerg-none.on { color: var(--green); border-color: var(--green); background: var(--green-soft); }

/* --- Fiche article : Essentiel / Détails (accordéons + révélations inline) --- */
.gx-details-sec { margin-top: 4px; }
.gx-sec { border: 1px solid var(--border); border-radius: 11px; background: var(--surface-2); overflow: hidden; }
.gx-sec.open { border-color: var(--border-strong); background: var(--surface); }
.gx-head { display: flex; align-items: center; gap: 10px; width: 100%; padding: 10px 12px; background: none; border: none; cursor: pointer; text-align: left; font: inherit; }
.gx-head:hover { background: var(--surface-3); }
.gx-sec.open .gx-head:hover { background: none; }
.gx-title { font-size: 12.5px; font-weight: 650; color: var(--text); display: inline-flex; align-items: center; gap: 7px; flex-shrink: 0; }
.gx-sum { flex: 1; min-width: 0; font-size: 11.5px; font-weight: 500; color: var(--text-muted); text-align: right; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gx-chev { width: 16px; height: 16px; color: var(--text-faint); flex-shrink: 0; transition: transform .18s; }
.gx-sec.open .gx-chev { transform: rotate(180deg); }
.gx-body { display: flex; flex-direction: column; gap: 13px; padding: 2px 12px 14px; }
.gx-note { font-size: 11px; font-weight: 500; color: var(--text-faint); line-height: 1.4; }
.gx-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--accent); flex-shrink: 0; }
.gx-dot.todo { background: var(--amber); }

.gx-rev .gx-rev-row { display: flex; align-items: center; gap: 10px; }
.gx-rev-sum { flex: 1; min-width: 0; font-size: 12.5px; font-weight: 500; color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gx-rev-btn { flex-shrink: 0; font-size: 11.5px; font-weight: 600; color: var(--accent); background: var(--accent-soft); border: 1px solid var(--accent-line); border-radius: 7px; padding: 5px 11px; cursor: pointer; transition: background .15s, color .15s; }
.gx-rev-btn:hover { background: var(--accent); color: #fff; }
.gx-rev-body { display: flex; flex-direction: column; gap: 10px; margin-top: 6px; }

.art-ro { background: var(--surface-2); border: 1px solid var(--border); border-radius: 12px; overflow: hidden; }
.art-ro-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 9px 13px; border-bottom: 1px solid var(--border); font-size: 13px; }
.art-ro-row:last-child { border-bottom: none; }
.art-ro-row span { color: var(--text-muted); font-size: 12px; }
.art-lotbox { background: var(--surface-2); border: 1px solid var(--border); border-radius: 12px; padding: 13px 15px; }
.art-lotbox.empty { display: flex; align-items: center; justify-content: space-between; gap: 12px; font-size: 13px; color: var(--text-muted); }
.art-lotbox-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.art-lotbox-lot { font-weight: 700; font-size: 15px; }
.art-lotbox-sub { font-size: 11.5px; color: var(--text-muted); margin-top: 3px; }
.art-lotbox-foot { display: flex; align-items: center; gap: 12px; margin-top: 9px; font-size: 12.5px; font-weight: 600; }
.art-lotbox-hist { font-size: 11px; font-weight: 500; color: var(--text-faint); margin-left: auto; }

/* tag catalogue dans la fiche */
.cat-tag { display: inline-flex; align-items: center; gap: 4px; font-size: 10px; font-weight: 700; letter-spacing: 0.03em; text-transform: uppercase; color: var(--text-muted); background: var(--surface-3); padding: 1px 7px; border-radius: 6px; margin-right: 7px; }
.ing-warn { display: inline-flex; align-items: center; gap: 5px; font-size: 11px; font-weight: 600; color: var(--amber); margin-top: 4px; }

@media (max-width: 760px) {
  .art-edit-grid { grid-template-columns: 1fr; gap: 18px; }
  .modal.art-edit { max-width: 100%; }
}

/* ---------- Reception modal ---------- */
.modal.reception { max-width: 560px; }
.rec-picklist { display: flex; flex-direction: column; gap: 4px; max-height: 360px; overflow-y: auto; }
.rec-pick { display: flex; align-items: center; gap: 12px; padding: 10px 12px; border-radius: 10px; text-align: left; transition: .12s; }
.rec-pick:hover { background: var(--surface-3); }
.rec-pick .dd-price { margin-left: auto; text-align: right; }
.rec-pick .dd-price b { font-size: 13px; }
.rec-pick .dd-price span { font-size: 11px; color: var(--text-muted); display: block; }
.rec-article { display: flex; align-items: center; gap: 12px; padding: 13px 15px; border-radius: 13px; background: var(--surface-2); border: 1px solid var(--border); margin-bottom: 14px; }
.rec-art-ico { width: 40px; height: 40px; border-radius: 11px; background: var(--surface-3); color: var(--text-muted); display: grid; place-items: center; flex-shrink: 0; }
.rec-art-ico svg { width: 20px; height: 20px; }
.rec-art-name { font-weight: 650; font-size: 14.5px; }
.rec-art-meta { font-size: 12px; color: var(--text-muted); margin-top: 2px; }
.rec-current { display: flex; align-items: center; gap: 10px; padding: 10px 14px; border-radius: 11px; background: var(--surface-3); margin-bottom: 16px; flex-wrap: wrap; }
.rec-current-k { font-size: 11px; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; color: var(--text-faint); }
.rec-current-v { font-weight: 700; font-size: 14px; }
.rec-current-sub { font-size: 11.5px; color: var(--text-muted); margin-left: auto; }
.rec-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 13px; }
.px-flag { font-style: normal; font-size: 10px; font-weight: 700; text-transform: uppercase; color: var(--amber); background: var(--amber-soft); padding: 1px 6px; border-radius: 6px; margin-left: 6px; }

/* ---------- QR ---------- */
.qr-svg { display: block; border-radius: 4px; }
.qr-fallback { display: grid; place-items: center; font-size: 11px; color: var(--text-muted); background: var(--surface-3); border-radius: 6px; }

/* ---------- Étiquette modal ---------- */
.etiquette-modal { max-width: 740px; }
.etiquette-body { display: flex; gap: 18px; align-items: flex-start; }
/* .etiquette-print : carte d'aperçu à l'écran ET cadre imprimé, sans bordure (le rouleau
   se suffit à lui-même). En impression, seules les dimensions physiques (largeur/hauteur
   mm, padding) comptent — cf. bloc @media print plus bas. */
.etiquette-print { flex: 1; min-width: 0; max-width: 320px; background: #fff; color: #000; padding: 4mm; box-sizing: border-box; }
[data-theme="dark"] .etiquette-print { background: #fff; color: #000; }
.etq-side { width: 240px; flex-shrink: 0; }
.etq-side-card { background: var(--surface-2); border: 1px solid var(--border); border-radius: 12px; padding: 14px; }
.etq-side-k { display: flex; align-items: center; gap: 7px; font-size: 11px; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; color: var(--text-faint); margin-bottom: 8px; }
.etq-side-url { font-size: 12px; color: var(--accent); word-break: break-all; line-height: 1.4; }
.etq-side-note { font-size: 11.5px; color: var(--text-muted); margin-top: 10px; line-height: 1.5; }

/* ---------- Étiquette — contenu (écran + impression, format fixe cf. Paramètres) ----------
   Ordre unique, chaque mention une seule fois : logo magasin pleine largeur · dénomination
   (centrée) · ingrédients + légende · n° lot / DLC (+ conservation) · logo bio +
   certification/origine + QR · pied de page (cf. label.jsx).
   Tailles en pt/mm dès l'écran pour que l'aperçu corresponde au rendu imprimé — pas de
   redimensionnement additionnel à l'impression (cf. @media print, largement identique). */
.etq4-rule { border-top: 0.4mm solid #000; margin: 2.2mm 0; }
.etq4-k { font-size: 6.5pt; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; margin-bottom: 1mm; }

.etq4-shop-logo { display: block; width: 100%; max-height: 11mm; object-fit: contain; margin-bottom: 2.5mm; }

.etq4-denom { font-size: 16pt; font-weight: 800; line-height: 1.15; text-align: center; word-wrap: break-word; overflow-wrap: break-word; }

.etq4-ing-label { font-size: 8pt; font-weight: 800; margin-top: 1mm; margin-bottom: 1mm; }
.etq4-ingredients { font-size: 8pt; line-height: 1.4; word-wrap: break-word; overflow-wrap: break-word; }
.ing-allergen { font-weight: 800; }
.ing-pct { font-variant-numeric: tabular-nums; }
.etq4-legend { font-size: 6.5pt; margin-top: 1mm; }

.etq4-lotgrid { display: flex; align-items: flex-start; justify-content: space-between; gap: 2.5mm; margin-top: 1mm; }
.etq4-lot-value { font-size: 11pt; font-weight: 800; line-height: 1.2; }
.etq4-dlc-value { font-size: 13pt; font-weight: 800; line-height: 1.2; }
.etq4-conserv { font-size: 6.5pt; margin-top: 1.5mm; }

.etq4-certgrid { display: flex; align-items: flex-end; justify-content: space-between; gap: 2.5mm; margin-top: 2.2mm; }
.etq4-eu-col { min-width: 0; }
/* Logo Eurofeuille : PNG noir sur fond transparent, affiché tel quel (aucun filtre). */
.etq4-eu-box { display: inline-flex; width: 22mm; height: 14mm; align-items: center; justify-content: center; }
.etq4-eu-logo { display: block; max-width: 100%; max-height: 100%; object-fit: contain; }
.etq4-eu-cap { font-size: 6pt; font-weight: 700; text-transform: uppercase; line-height: 1.35; margin-top: 1mm; }
.etq4-origine-solo { font-size: 7.5pt; font-weight: 700; }
.etq4-qr-col { flex-shrink: 0; display: flex; flex-direction: column; align-items: center; gap: 1mm; }
.etq4-qr-box { border: 0.4mm solid #000; border-radius: 1.5mm; padding: 1mm; display: flex; }
.etq4-qr-box .qr-svg { display: block; width: 13mm; height: 13mm; }
.etq4-qr-cap { font-size: 6pt; }

.etq4-footer { font-size: 6.5pt; line-height: 1.5; text-align: center; margin-top: 2.5mm; }

/* Mode impression : format FIXE (largeur × hauteur, cf. Paramètres). Activé en JS
   (classe .etq4-print-sized, cf. label.jsx) juste avant window.print() pour mesurer le
   contenu à la largeur réelle d'impression et calculer --etq4-scale si ça dépasse la
   hauteur du rouleau (grosse recette) — mieux vaut réduire la police que paginer sur une
   2e feuille. Reste dans le flux normal (pas de positionnement hors-écran) ; le nettoyage
   post-impression n'est pas minuté de façon serrée (cf. doPrint), la classe peut donc
   rester active un moment sans dépendre d'un retrait synchronisé précisément. */
.etq4-print-sized.etiquette-print {
  flex: none; /* .etiquette-print a flex:1 (flex-basis:0%) en écran normal : ça ignore la
                 largeur explicite dans le layout flex de .etiquette-body, il faut le
                 désactiver pour que la mesure/l'impression utilisent la vraie largeur. */
  width: var(--etq4-w, 62mm); max-width: none;
  padding: 3mm; box-sizing: border-box;
}
.etq4-print-sized .etq4-scale { transform: scale(var(--etq4-scale, 1)); transform-origin: top left; width: calc(100% / var(--etq4-scale, 1)); }

/* ---------- Public trace page ---------- */
.public-page { min-height: 100vh; background: var(--bg); display: flex; justify-content: center; padding: 36px 20px; overflow-y: auto; }
.public-card { width: 100%; max-width: 600px; background: var(--surface); border: 1px solid var(--border); border-radius: 22px; box-shadow: var(--shadow-md); padding: 30px 32px; height: fit-content; }
.pub-head { display: flex; align-items: center; gap: 15px; padding-bottom: 18px; border-bottom: 1px solid var(--border); }
.pub-logo { width: 46px; height: 46px; border-radius: 13px; background: var(--accent); color: #fff; display: grid; place-items: center; font-weight: 700; font-size: 21px; flex-shrink: 0; }
.pub-denom { font-size: 22px; font-weight: 750; letter-spacing: -0.02em; line-height: 1.15; }
.pub-bio { display: inline-flex; align-items: center; gap: 5px; font-size: 12px; font-weight: 700; color: var(--green); margin-top: 5px; }
.pub-raison { font-size: 12.5px; color: var(--text-muted); margin-top: 4px; }
.pub-lotbar { display: grid; grid-template-columns: 1fr 1fr; gap: 14px 18px; padding: 18px 0; border-bottom: 1px solid var(--border); }
.pub-k { font-size: 11px; font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase; color: var(--text-faint); }
.pub-v { font-size: 15px; font-weight: 650; margin-top: 3px; }
.pub-sec { padding: 18px 0; border-bottom: 1px solid var(--border); }
.pub-sec:last-of-type { border-bottom: none; }
.pub-sec h3 { font-size: 13px; font-weight: 700; letter-spacing: -0.01em; margin-bottom: 10px; }
.pub-ings { font-size: 13.5px; line-height: 1.6; color: var(--text); }
.pub-note { font-size: 11.5px; color: var(--text-muted); margin-top: 9px; }
.pub-allergs, .pub-origines { display: flex; flex-wrap: wrap; gap: 8px; }
.pub-trace .trace-rootrow { margin-bottom: 4px; }
.pub-footer { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 6px; padding-top: 18px; font-size: 11.5px; color: var(--text-faint); }
.pub-empty { text-align: center; }
.pub-empty .pub-logo { margin: 0 auto 16px; }
.pub-empty h2 { font-size: 19px; margin-bottom: 8px; }
.pub-empty p { color: var(--text-muted); font-size: 13.5px; line-height: 1.55; margin-bottom: 18px; }

/* ---------- Settings ---------- */
.set-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; align-items: start; }
.set-fields { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.set-field { display: flex; flex-direction: column; gap: 6px; }
.set-field.wide { grid-column: 1 / -1; }
.set-field > span { font-size: 11.5px; font-weight: 600; color: var(--text-muted); }
.set-preview { display: flex; gap: 14px; align-items: center; margin-top: 14px; padding: 14px; background: var(--surface-2); border: 1px solid var(--border); border-radius: 13px; }
.set-preview-qr { flex-shrink: 0; }
.set-k { font-size: 11px; font-weight: 600; color: var(--text-faint); text-transform: uppercase; letter-spacing: 0.04em; }
.set-url { font-size: 12.5px; color: var(--accent); word-break: break-all; margin: 4px 0; }
.set-sub { font-size: 11.5px; color: var(--text-muted); }
/* Aperçu (écran uniquement, Paramètres → Étiquettes & QR) de la mention bio telle qu'imprimée */
.etq-bio { display: inline-flex; align-items: center; gap: 5px; font-size: 12.5px; font-weight: 700; color: #3f7e2e; }

/* ---------- Paramètres consolidés (set2) ---------- */
.set2-layout { display: grid; grid-template-columns: 232px 1fr; gap: 20px; align-items: start; }
.set2-nav { position: sticky; top: 0; display: flex; flex-direction: column; gap: 3px; }
.set2-navitem { display: flex; align-items: center; gap: 10px; padding: 10px 13px; border-radius: 10px; font-size: 13.5px; font-weight: 600; color: var(--text-muted); text-align: left; }
.set2-navitem svg { color: var(--text-faint); flex-shrink: 0; }
.set2-navitem:hover { background: var(--surface-2); color: var(--text); }
.set2-navitem.on { background: var(--accent-soft); color: var(--accent); }
.set2-navitem.on svg { color: var(--accent); }
.set2-body { display: flex; flex-direction: column; gap: 16px; min-width: 0; }
.set-card { padding: 18px 20px; }
.set-static { display: flex; align-items: center; gap: 8px; font-size: 13px; color: var(--text-muted); }

/* upload des logos d'étiquette */
.logo-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
@media (max-width: 640px) { .logo-grid { grid-template-columns: 1fr; } }
.logo-up { display: flex; flex-direction: column; gap: 9px; padding: 13px; border: 1px solid var(--border); border-radius: 13px; background: var(--surface-2); }
.logo-up-head { display: flex; align-items: baseline; gap: 7px; flex-wrap: wrap; }
.logo-up-label { font-size: 12px; font-weight: 650; color: var(--text); }
.logo-up-row { display: flex; align-items: center; gap: 12px; }
.logo-prev { flex-shrink: 0; width: 96px; height: 64px; border-radius: 9px; border: 1px solid var(--border); display: flex; align-items: center; justify-content: center; overflow: hidden;
  background-color: #fff;
  background-image: linear-gradient(45deg, #e7e2d8 25%, transparent 25%), linear-gradient(-45deg, #e7e2d8 25%, transparent 25%), linear-gradient(45deg, transparent 75%, #e7e2d8 75%), linear-gradient(-45deg, transparent 75%, #e7e2d8 75%);
  background-size: 12px 12px; background-position: 0 0, 0 6px, 6px -6px, -6px 0; }
.logo-prev img { max-width: 88px; max-height: 56px; width: auto; height: auto; object-fit: contain; display: block; }
.logo-prev.empty { background: var(--surface-3); background-image: none; }
.logo-prev-ph { font-size: 10.5px; color: var(--text-faint); font-family: var(--mono, ui-monospace, monospace); }
.logo-up-actions { display: flex; flex-wrap: wrap; gap: 7px; }
.logo-up-err { display: flex; align-items: center; gap: 5px; font-size: 11px; font-weight: 600; color: var(--red, #c0392b); }

/* formats d'étiquette */
.fmt-list { display: flex; flex-direction: column; gap: 7px; }
.fmt-row { display: flex; align-items: center; gap: 9px; padding: 9px 12px; border: 1px solid var(--border); border-radius: 11px; background: var(--surface-2); }
.fmt-row.on { border-color: var(--accent-line); background: var(--accent-soft); }
.fmt-radio { width: 22px; height: 22px; flex-shrink: 0; border-radius: 50%; border: 1.5px solid var(--border-strong); background: var(--surface); display: grid; place-items: center; color: #fff; }
.fmt-radio.on { background: var(--accent); border-color: var(--accent); }
.fmt-num { width: 64px; text-align: right; background: var(--surface); border: 1px solid var(--border-strong); border-radius: 8px; padding: 6px 9px; font-size: 13px; }
.fmt-num:focus { outline: none; border-color: var(--accent-line); }
.fmt-x { color: var(--text-faint); font-size: 13px; }
.fmt-unit { font-size: 12px; color: var(--text-muted); }
.fmt-spacer { flex: 1; }
.fmt-def { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.03em; color: var(--accent); }
.fmt-set { font-size: 12px; font-weight: 600; color: var(--text-muted); padding: 4px 9px; border-radius: 7px; border: 1px solid var(--border-strong); }
.fmt-set:hover { color: var(--accent); border-color: var(--accent-line); }

/* tables de mapping (TVA / unités / conservation) */
.map-table { width: 100%; border-collapse: collapse; margin-top: 6px; }
.map-table th { font-size: 10.5px; font-weight: 700; letter-spacing: 0.03em; text-transform: uppercase; color: var(--text-faint); text-align: left; padding: 6px 10px; border-bottom: 1px solid var(--border); }
.map-table th.num { text-align: right; }
.map-table td { padding: 6px 10px; border-bottom: 1px solid var(--border); font-size: 13px; vertical-align: middle; }
.map-table td.num { text-align: right; }
.map-table tr:last-child td { border-bottom: none; }
.map-input { width: 92px; background: var(--surface-2); border: 1px solid var(--border-strong); border-radius: 8px; padding: 6px 9px; font-size: 13px; text-align: right; }
.map-input.wide { width: 100%; text-align: left; }
.map-input:focus { outline: none; border-color: var(--accent-line); background: var(--surface); }
.cons-table td:first-child { font-weight: 600; font-size: 12.5px; }
.dlc-mini { width: 24px; height: 24px; border-radius: 7px; border: 1.5px solid var(--border-strong); background: var(--surface); display: inline-grid; place-items: center; color: #fff; }
.dlc-mini.on { background: var(--accent); border-color: var(--accent); }

.lot-prev-chip { font-size: 18px; font-weight: 700; letter-spacing: 0.02em; color: var(--accent); background: var(--accent-soft); padding: 8px 16px; border-radius: 10px; }

.rayon-grid { display: flex; flex-wrap: wrap; gap: 8px; }
.rayon-chip { display: inline-flex; align-items: center; gap: 8px; font-size: 12.5px; font-weight: 600; padding: 6px 12px 6px 6px; border-radius: 20px; background: var(--surface-2); border: 1px solid var(--border); }
.rayon-code { display: inline-grid; place-items: center; min-width: 22px; height: 22px; padding: 0 6px; border-radius: 11px; background: var(--surface-3); color: var(--text-muted); font-size: 11px; font-weight: 700; }

.ncert-chip.cap { text-transform: none; }

.theme-pick { display: flex; gap: 10px; }
.theme-opt { display: inline-flex; align-items: center; gap: 8px; padding: 11px 18px; border-radius: 12px; font-size: 14px; font-weight: 600; color: var(--text-muted); border: 1.5px solid var(--border-strong); background: var(--surface-2); }
.theme-opt svg { width: 18px; height: 18px; }
.theme-opt.on { border-color: var(--accent); background: var(--accent-soft); color: var(--accent); }

@media (max-width: 860px) {
  .set2-layout { grid-template-columns: 1fr; }
  .set2-nav { position: static; flex-direction: row; flex-wrap: nowrap; overflow-x: auto; gap: 6px; padding-bottom: 4px; margin: 0 -4px; }
  .set2-navitem { flex-shrink: 0; padding: 8px 12px; }
  .set2-navitem span { white-space: nowrap; }
}

/* ---------- Print (étiquette seule) — format FIXE (largeur × hauteur, cf. Paramètres) ----------
   Scopé par body[data-print="etiquette"] (posé en JS, cf. label.jsx) pour ne jamais affecter
   les autres impressions de l'app (rappel / fiche de traçabilité, cf. bloc data-print plus bas).
   Le @page (taille physique) est injecté dynamiquement en JS, pas ici, pour la même raison —
   ne concerne QUE l'impression de l'étiquette.
   #root est masqué en display:none (pas visibility:hidden) : l'étiquette est rendue via un
   portail React DANS #print-root, sibling de #root (cf. label.jsx) — display:none le retire
   entièrement du flux, contrairement à visibility:hidden qui garde sa hauteur et peut, sur
   certains moteurs d'impression, continuer à générer des pages supplémentaires (vides ou avec
   du contenu d'écran non voulu) lors de la pagination même si rien n'y est peint.
   Hauteur FIXE + overflow:hidden : la présélection papier AirPrint du Brother QL-820NWB ne
   propose que des formats à hauteur fixe (pas de « largeur × auto »). Si le contenu dépasse
   (grosse recette), --etq4-scale (cf. doPrint) le réduit AVANT l'impression pour éviter tout
   débordement sur une 2e page.
   Position FIXED (pas absolute) : testé sur Safari Mac, position:absolute combiné aux
   ancêtres display:contents ci-dessous produisait un décalage (contenu tronqué en haut +
   pagination sur 2 pages) — bug de calcul du bloc englobant spécifique à Safari.
   position:fixed ignore explicitement les ancêtres display:contents (elle ne cherche que
   les ancêtres avec transform/filter/perspective, absents ici) et se cale donc de façon
   fiable sur l'origine de la page, quel que soit le moteur d'impression. */
@media print {
  body[data-print="etiquette"] { height: var(--etq4-h, 100mm); margin: 0; padding: 0; overflow: hidden; background: #fff; }
  body[data-print="etiquette"] #root { display: none !important; }
  /* Neutralise le chrome de la modale (fond assombri, carte blanche à bords arrondis,
     padding) : display:contents fait disparaître leur propre boîte (fond, bordure, ombre)
     tout en laissant .etiquette-print se positionner normalement, sans conteneur parasite. */
  body[data-print="etiquette"] .modal-overlay,
  body[data-print="etiquette"] .modal-overlay .modal,
  body[data-print="etiquette"] .modal-overlay .modal .wiz-body { display: contents; }
  body[data-print="etiquette"] .etiquette-print {
    position: fixed; left: 0; top: 0;
    width: var(--etq4-w, 62mm); height: var(--etq4-h, 100mm);
    margin: 0; padding: 3mm; box-sizing: border-box;
    max-width: none;
    overflow: hidden;
    color: #000; background: #fff;
    page-break-inside: avoid; break-inside: avoid;
    -webkit-print-color-adjust: exact; print-color-adjust: exact;
  }
  /* Noir uniquement (imprimante thermique monochrome) : aucune couleur d'accent héritée. */
  body[data-print="etiquette"] .etiquette-print * { color: #000 !important; }
  body[data-print="etiquette"] .etiquette-print img,
  body[data-print="etiquette"] .etiquette-print svg { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
}

/* responsive */
@media (max-width: 1080px) {
  .set-grid, .etiquette-body { grid-template-columns: 1fr; }
  .etiquette-body { flex-direction: column; }
  .etq-side { width: 100%; }
}

/* ---------- Bootstrap / login / démo ---------- */
.boot-screen { min-height: 100vh; display: grid; place-items: center; background: var(--bg); padding: 24px; }
.boot-card { width: 100%; max-width: 380px; background: var(--surface); border: 1px solid var(--border); border-radius: 20px; box-shadow: var(--shadow-md); padding: 32px 30px; text-align: center; display: flex; flex-direction: column; align-items: center; gap: 4px; }
.boot-card.login { text-align: left; align-items: stretch; }
.boot-logo { width: 52px; height: 52px; border-radius: 15px; background: var(--accent); color: #fff; display: grid; place-items: center; font-weight: 700; font-size: 24px; margin-bottom: 6px; align-self: center; }
.boot-logo.err { background: var(--red-soft); color: var(--red); }
.boot-logo.err svg { width: 26px; height: 26px; }
.boot-spinner { width: 30px; height: 30px; border-radius: 50%; border: 3px solid var(--surface-3); border-top-color: var(--accent); animation: spin .8s linear infinite; margin: 8px 0; }
@keyframes spin { to { transform: rotate(360deg); } }
.boot-label { font-size: 13.5px; color: var(--text-muted); }
.boot-title { font-size: 19px; font-weight: 700; margin: 4px 0; align-self: center; }
.boot-msg { font-size: 13.5px; color: var(--text-muted); margin-bottom: 10px; align-self: center; text-align: center; }
.boot-hint { font-size: 12px; color: var(--text-faint); margin-top: 12px; line-height: 1.5; text-align: center; }
.boot-hint code { background: var(--surface-3); padding: 1px 6px; border-radius: 5px; font-size: 11.5px; }
.boot-card.login .wiz-field { margin-bottom: 12px; }
.login-btn { width: 100%; justify-content: center; margin-top: 4px; }
.login-err { display: flex; align-items: center; gap: 7px; font-size: 12.5px; color: var(--red); background: var(--red-soft); padding: 8px 11px; border-radius: 9px; margin-bottom: 12px; }
.login-err svg { width: 15px; height: 15px; flex-shrink: 0; }
.demo-badge { position: fixed; bottom: 16px; right: 16px; z-index: 90; display: flex; align-items: center; gap: 6px; font-size: 11.5px; font-weight: 600; color: var(--amber); background: var(--amber-soft); border: 1px solid color-mix(in srgb, var(--amber) 30%, transparent); padding: 5px 11px; border-radius: 20px; }

/* ---------- Traçabilité (écran interne) ---------- */
.lot-toprow { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 16px; }
.lot-toprow .back-btn { margin-bottom: 0; }
.trace-search-card { padding: 16px 18px; margin-bottom: 16px; }
.trace-search { position: relative; }
.trace-search .search-input { width: 100%; padding-left: 40px; font-size: 14px; }
.trace-search .search-ico { left: 14px; }
.trace-suggest { margin-top: 8px; border-top: 1px solid var(--border); padding-top: 6px; display: flex; flex-direction: column; gap: 2px; max-height: 320px; overflow-y: auto; }
.trace-suggest-item { display: flex; align-items: center; gap: 11px; padding: 9px 10px; border-radius: 9px; text-align: left; transition: background .12s; }
.trace-suggest-item:hover { background: var(--surface-3); }
.ts-label { font-weight: 650; font-size: 13px; }
.ts-sub { font-size: 12px; color: var(--text-muted); }
.trace-empty { text-align: center; padding: 56px 20px; }
.trace-empty .ph-ico { width: 54px; height: 54px; border-radius: 15px; background: var(--surface-3); color: var(--text-faint); display: grid; place-items: center; margin: 0 auto 16px; }
.trace-empty .ph-ico svg { width: 26px; height: 26px; }
.trace-empty p { color: var(--text-muted); font-size: 13.5px; max-width: 420px; margin: 0 auto; line-height: 1.6; }
.trace-entity { padding: 16px 20px; display: flex; align-items: center; gap: 15px; margin-bottom: 14px; }
.trace-entity-actions { display: flex; gap: 8px; flex-wrap: wrap; justify-content: flex-end; }
.recall-trigger { color: var(--red); border-color: color-mix(in srgb, var(--red) 35%, transparent); }
.recall-trigger:hover { background: var(--red-soft); }
.recall-trigger svg { width: 15px; height: 15px; }
.recall-banner { display: flex; align-items: center; gap: 9px; background: var(--red-soft); color: var(--red); font-size: 13px; padding: 11px 15px; border-radius: 12px; margin-bottom: 14px; }
.recall-banner svg { width: 17px; height: 17px; flex-shrink: 0; }
.trace-tabs { display: flex; gap: 6px; margin-bottom: 14px; }
.trace-tab { display: flex; align-items: center; gap: 7px; padding: 9px 15px; border-radius: 11px; font-size: 13px; font-weight: 600; color: var(--text-muted); border: 1px solid var(--border); background: var(--surface); transition: .13s; }
.trace-tab svg { width: 15px; height: 15px; }
.trace-tab:hover { background: var(--surface-3); }
.trace-tab.on { background: var(--accent-soft); color: var(--accent); border-color: var(--accent-line); }
.trace-section { margin-bottom: 14px; }
.no-print-hide { display: none; }
.aval-body { padding: 14px 18px 18px; }
.aval-group-title { font-size: 12px; font-weight: 700; letter-spacing: 0.03em; text-transform: uppercase; color: var(--text-faint); margin-bottom: 9px; display: flex; align-items: center; gap: 8px; }
.agt-count { background: var(--surface-3); color: var(--text-muted); border-radius: 20px; padding: 1px 8px; font-size: 11px; }
.aval-row { display: grid; grid-template-columns: 130px 1.4fr 96px auto auto 110px 1.6fr; align-items: center; gap: 10px; padding: 9px 10px; border-radius: 9px; }
.aval-row:hover { background: var(--surface-2); }
.aval-num { font-weight: 650; font-size: 12.5px; }
.aval-prod { font-weight: 600; font-size: 13px; display: flex; align-items: center; }
.aval-date { font-size: 12.5px; color: var(--text-muted); }
.aval-qte { font-size: 12.5px; font-weight: 600; text-align: right; }
.aval-chemin { font-size: 11.5px; color: var(--text-faint); }
.aval-none { font-size: 12.5px; color: var(--text-muted); padding: 4px 2px 8px; }
.amont-mp { display: flex; align-items: center; gap: 13px; padding: 18px 20px; }
.amont-mp > svg { width: 26px; height: 26px; color: var(--text-faint); flex-shrink: 0; }
.amont-mp-t { font-weight: 650; font-size: 14px; }
.amont-mp-s { font-size: 12.5px; color: var(--text-muted); margin-top: 3px; }

/* recall modal / fiche imprimable */
.recall-modal { max-width: 640px; }
.recall-print { background: #fff; color: #1c1712; border: 1px solid #e3ddd2; border-radius: 12px; padding: 22px 24px; }
[data-theme="dark"] .recall-print { background: #fff; color: #1c1712; }
.recall-h1 { font-size: 19px; font-weight: 750; margin-bottom: 14px; }
.recall-meta { display: grid; grid-template-columns: 1fr 1fr; gap: 10px 18px; padding-bottom: 14px; border-bottom: 2px solid #1c1712; margin-bottom: 14px; }
.recall-k { display: block; font-size: 10px; font-weight: 700; letter-spacing: 0.05em; text-transform: uppercase; color: #8a7f70; }
.recall-v { font-size: 14px; font-weight: 650; }
.recall-table { width: 100%; border-collapse: collapse; margin-bottom: 14px; }
.recall-table th { font-size: 10px; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; color: #8a7f70; text-align: left; padding: 6px 8px; border-bottom: 1px solid #d8cfc1; }
.recall-table th.num, .recall-table td.num { text-align: right; }
.recall-table td { font-size: 12.5px; padding: 7px 8px; border-bottom: 1px solid #efe9df; }
.recall-allerg { font-size: 12.5px; margin-bottom: 18px; }
.recall-sign { display: flex; gap: 30px; }
.recall-sign > div { flex: 1; }
.recall-sign-k { font-size: 11px; color: #8a7f70; margin-bottom: 22px; }
.recall-sign-line { border-top: 1px solid #1c1712; }

/* ============ Correction : une fiche = recette greffée sur un produit IziBio ============ */
.fiche-name-locked { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.fiche-name-txt { font-size: 20px; font-weight: 750; letter-spacing: -0.01em; }
.fiche-name-gov { display: inline-flex; align-items: center; gap: 4px; font-size: 10.5px; font-weight: 600; color: var(--text-faint); background: var(--surface-3); padding: 2px 7px; border-radius: 6px; }
.fiche-name-gov svg { color: var(--text-faint); }
.fiche-head-actions { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-top: 10px; }
.fiche-prov-hint { display: inline-flex; align-items: center; gap: 6px; font-size: 11.5px; font-weight: 500; color: var(--amber); }

.izi-compare { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin: 12px 0 4px; }
.izic-col { background: var(--surface-2); border: 1px solid var(--border); border-radius: 11px; padding: 10px 12px; display: flex; flex-direction: column; gap: 2px; }
.izic-col.calc { border-color: var(--accent-line); background: var(--accent-soft); }
.izic-k { font-size: 11px; font-weight: 600; color: var(--text-muted); }
.izic-v { font-size: 18px; font-weight: 750; letter-spacing: -0.01em; }
.izic-sub { font-size: 10.5px; color: var(--text-faint); }
.izic-ecart { grid-column: 1 / -1; display: flex; align-items: center; gap: 6px; font-size: 12px; font-weight: 600; padding: 7px 10px; border-radius: 9px; }
.izic-ecart.ok { background: var(--green-soft); color: var(--green); }
.izic-ecart.warn { background: var(--amber-soft); color: var(--amber); }

.ecart-pill { display: inline-block; font-size: 11.5px; font-weight: 700; padding: 2px 8px; border-radius: 7px; font-variant-numeric: tabular-nums; }
.ecart-pill.ok { background: var(--green-soft); color: var(--green); }
.ecart-pill.warn { background: var(--amber-soft); color: var(--amber); }

.fsel-opt-has { display: inline-flex; align-items: center; gap: 3px; font-size: 9.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .02em; color: var(--green); background: var(--green-soft); padding: 1px 5px; border-radius: 5px; margin-left: 7px; }
.fsel-create { display: flex; align-items: center; gap: 7px; width: 100%; padding: 9px 11px; font-size: 12.5px; font-weight: 600; color: var(--accent); border-radius: 8px; }
.fsel-create:hover { background: var(--accent-soft); }

.prod-pick-card { display: flex; align-items: center; gap: 13px; padding: 13px 15px; border: 1px solid var(--border-strong); border-radius: 13px; background: var(--surface-2); }
.prod-pick-card.slim { padding: 10px 13px; }
.ppc-ico { width: 40px; height: 40px; border-radius: 11px; flex-shrink: 0; display: grid; place-items: center; background: var(--bordeaux-soft); color: var(--bordeaux); }
.ppc-ico svg { width: 20px; height: 20px; }
.ppc-main { min-width: 0; }
.ppc-nom { font-size: 15px; font-weight: 700; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.ppc-meta { font-size: 12px; color: var(--text-muted); margin-top: 2px; }
.fichet-semi-link { display: inline-flex; align-items: center; gap: 7px; font-size: 12.5px; font-weight: 600; color: var(--text-muted); padding: 8px 0; }
.fichet-semi-link:hover { color: var(--accent); }

.art-edit-tabs { display: flex; gap: 4px; padding: 0 22px; border-bottom: 1px solid var(--border); margin-top: 2px; }
.art-edit-tab { display: inline-flex; align-items: center; gap: 7px; padding: 11px 14px; font-size: 13px; font-weight: 600; color: var(--text-muted); border-bottom: 2px solid transparent; margin-bottom: -1px; }
.art-edit-tab:hover { color: var(--text); }
.art-edit-tab.active { color: var(--accent); border-bottom-color: var(--accent); }
.art-edit-tab-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--green); }
.art-edit-tab-add { font-size: 13px; font-weight: 700; color: var(--text-faint); }

.art-fab { padding: 4px 0; }
.art-fab-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 14px; }
.art-fab-ref { font-size: 12px; font-weight: 600; color: var(--text-muted); display: flex; align-items: center; }
.art-fab-grid { display: grid; grid-template-columns: 1fr 280px; gap: 22px; align-items: start; }
.art-fab-ing { width: 100%; }
.art-fab-compo { display: flex; flex-wrap: wrap; gap: 6px; }
.compo-chip { font-size: 11.5px; font-weight: 500; color: var(--text-muted); background: var(--surface-2); border: 1px solid var(--border); padding: 3px 9px; border-radius: 20px; }
.compo-chip em { font-style: normal; color: var(--text-faint); font-weight: 600; }
.art-fab-side { display: flex; flex-direction: column; gap: 12px; }
.art-fab-empty { text-align: center; padding: 36px 24px; }
.art-fab-empty-ico { width: 56px; height: 56px; border-radius: 16px; margin: 0 auto 14px; display: grid; place-items: center; background: var(--bordeaux-soft); color: var(--bordeaux); }
.art-fab-empty-ico svg { width: 26px; height: 26px; }
.art-fab-empty h4 { font-size: 16px; font-weight: 700; margin: 0 0 6px; }
.art-fab-empty p { font-size: 13px; color: var(--text-muted); line-height: 1.5; max-width: 380px; margin: 0 auto 16px; }

.kpi-ico.amber { background: var(--amber-soft); color: var(--amber); }

/* régularisation (provisoire → IziBio) */
.regul-conflict { margin-top: 12px; display: flex; flex-direction: column; gap: 8px; }
.regul-opt { display: flex; align-items: flex-start; gap: 10px; text-align: left; padding: 11px 13px; border: 1px solid var(--border-strong); border-radius: 11px; background: var(--surface-2); }
.regul-opt:hover { border-color: var(--accent-line); }
.regul-opt.on { border-color: var(--accent); background: var(--accent-soft); }
.regul-opt-radio { width: 16px; height: 16px; border-radius: 50%; border: 2px solid var(--border-strong); flex-shrink: 0; margin-top: 2px; }
.regul-opt.on .regul-opt-radio { border-color: var(--accent); background: radial-gradient(circle, var(--accent) 0 4px, transparent 5px); }
.regul-opt b { font-size: 13px; font-weight: 650; }
.regul-opt em { display: block; font-style: normal; font-size: 11.5px; color: var(--text-muted); margin-top: 2px; }

.prov-rec-tag { display: inline-flex; align-items: center; gap: 3px; font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .02em; color: #7d5aa0; background: rgba(120,90,160,0.13); padding: 1px 6px; border-radius: 5px; margin-left: 7px; }
.compose-cta { display: inline-flex; align-items: center; gap: 4px; font-size: 11.5px; font-weight: 700; color: var(--accent); }

/* ingrédients composés — étiquette + éditeur */
.ing-sous { font-weight: 400; }
.compo-sous { color: var(--text-faint); font-weight: 400; }
.compose-tag { display: inline-flex; align-items: center; gap: 3px; font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .02em; color: #7d5aa0; background: rgba(120,90,160,0.13); padding: 1px 6px; border-radius: 5px; margin-left: 7px; }
.cat-compo-mini { font-size: 11.5px; color: var(--text-muted); }
.cat-compo-edit { display: inline-flex; align-items: center; gap: 4px; font-size: 11.5px; font-weight: 600; color: var(--accent); }
.sous-editor { margin-top: 10px; display: flex; flex-direction: column; gap: 8px; border-left: 2px solid var(--accent-line); padding-left: 12px; }
.sous-empty { font-size: 12px; color: var(--text-faint); font-style: italic; }
.sous-row { background: var(--surface-2); border: 1px solid var(--border); border-radius: 10px; padding: 9px 10px; }
.sous-row-top { display: flex; align-items: center; gap: 8px; }
.sous-nom { flex: 1; }
.sous-bio { font-size: 11px; font-weight: 700; padding: 5px 9px; border-radius: 7px; border: 1px solid var(--border-strong); color: var(--text-faint); background: var(--surface); white-space: nowrap; }
.sous-bio.on { color: var(--green); border-color: var(--green); background: var(--green-soft); }
.sous-allerg { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 8px; }
.allerg-chip.sm { font-size: 10.5px; padding: 2px 7px; }
.sous-add { margin-top: 2px; align-self: flex-start; }

@media (max-width: 760px) {
  .art-fab-grid { grid-template-columns: 1fr; }
  .izi-compare { grid-template-columns: 1fr; }
}

/* ---------- Traçabilité : onglets de mode + vue semaine ---------- */
.trace-modetabs { display: flex; gap: 6px; margin-bottom: 16px; }
.trace-modetab { display: flex; align-items: center; gap: 8px; padding: 10px 16px; border-radius: 11px; font-size: 13px; font-weight: 600; color: var(--text-muted); border: 1px solid var(--border); background: var(--surface); transition: .13s; }
.trace-modetab:hover { background: var(--surface-3); }
.trace-modetab.on { background: var(--accent-soft); color: var(--accent); border-color: var(--accent-line); }

.wk-wrap { display: flex; flex-direction: column; gap: 14px; }
.wk-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; padding: 12px 16px; }
.wk-nav { display: flex; align-items: center; gap: 10px; }
.wk-nav-label { display: flex; flex-direction: column; line-height: 1.2; min-width: 168px; text-align: center; }
.wk-nav-label b { font-size: 14px; font-weight: 700; }
.wk-nav-label span { font-size: 11.5px; color: var(--text-muted); }
.wk-filters { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.wk-search { position: relative; min-width: 200px; }
.wk-search .search-input { width: 100%; padding-left: 36px; }
.wk-search .search-ico { left: 12px; }

.wk-recap { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; }
.wk-recap-item { display: flex; flex-direction: column; gap: 1px; padding: 12px 15px; border: 1px solid var(--border); border-radius: 12px; background: var(--surface); }
.wk-recap-item b { font-size: 20px; font-weight: 750; letter-spacing: -0.02em; }
.wk-recap-item span { font-size: 11.5px; color: var(--text-muted); }
.wk-recap-item.alert { border-color: color-mix(in srgb, var(--amber) 40%, transparent); background: var(--amber-soft); }
.wk-recap-item.alert b, .wk-recap-item.alert svg { color: var(--amber); }
.wk-recap-item svg { color: var(--green); }

.wk-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 8px; }
.wk-col { display: flex; flex-direction: column; border: 1px solid var(--border); border-radius: 12px; background: var(--surface-2); overflow: hidden; min-height: 120px; }
.wk-col.today { border-color: var(--accent-line); box-shadow: 0 0 0 1px var(--accent-line); }
.wk-col-head { display: flex; align-items: center; gap: 8px; padding: 9px 11px; background: var(--surface); border-bottom: 1px solid var(--border); text-align: left; }
.wk-col.today .wk-col-head { background: var(--accent-soft); }
.wk-col-day { display: flex; flex-direction: column; line-height: 1.2; flex: 1; min-width: 0; }
.wk-col-dname { font-size: 12px; font-weight: 700; }
.wk-col-date { font-size: 10.5px; color: var(--text-muted); }
.wk-col-today { font-size: 9px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--accent); }
.wk-col-count { font-size: 11px; font-weight: 700; min-width: 20px; height: 20px; padding: 0 6px; border-radius: 20px; background: var(--surface-3); color: var(--text-muted); display: grid; place-items: center; }
.wk-col-chev { display: none; width: 16px; height: 16px; color: var(--text-faint); transition: transform .16s; }
.wk-col-body { display: flex; flex-direction: column; gap: 7px; padding: 9px; }
.wk-empty { font-size: 16px; color: var(--text-faint); text-align: center; padding: 8px 0; }
.wk-grp { font-size: 9.5px; font-weight: 700; letter-spacing: 0.03em; text-transform: uppercase; color: var(--text-faint); display: flex; align-items: center; gap: 6px; margin-top: 2px; }
.wk-grp span { background: var(--surface-3); border-radius: 20px; padding: 0 6px; }

.wk-card { display: flex; flex-direction: column; gap: 5px; padding: 9px 10px; border-radius: 10px; border: 1px solid var(--border); border-left: 3px solid var(--text-faint); background: var(--surface); text-align: left; transition: .12s; }
.wk-card:hover { background: var(--surface-3); transform: translateY(-1px); box-shadow: var(--shadow-sm); }
.wk-card.fini { border-left-color: var(--accent); }
.wk-card.semi { border-left-color: #7d5aa0; }
.wk-card.urg-amber { border-left-color: var(--amber); }
.wk-card.urg-red { border-left-color: var(--red); }
.wk-card-top { display: flex; align-items: center; justify-content: space-between; gap: 6px; flex-wrap: wrap; }
.wk-card-num { font-size: 11px; font-weight: 700; font-variant-numeric: tabular-nums; color: var(--text-muted); }
.wk-tag { display: inline-flex; align-items: center; gap: 3px; font-size: 9px; font-weight: 700; text-transform: uppercase; letter-spacing: .02em; padding: 1px 6px; border-radius: 5px; background: var(--accent-soft); color: var(--accent); }
.wk-tag.semi { background: rgba(120,90,160,0.13); color: #7d5aa0; }
[data-theme="dark"] .wk-tag.semi { background: rgba(176,148,208,0.16); color: #b094d0; }
.wk-card-prod { font-size: 12.5px; font-weight: 650; line-height: 1.25; }
.wk-card-foot { display: flex; align-items: center; justify-content: space-between; gap: 6px; flex-wrap: wrap; }
.wk-card-qte { font-size: 11.5px; font-weight: 700; }

@media (max-width: 1080px) {
  .wk-recap { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 1180px) {
  .wk-grid { grid-template-columns: 1fr; }
  .wk-col { min-height: 0; }
  .wk-col-head { cursor: pointer; }
  .wk-col-chev { display: block; }
  .wk-col.collapsed .wk-col-chev { transform: rotate(-90deg); }
  .wk-col.collapsed .wk-col-body { display: none; }
}
@media (max-width: 640px) {
  .wk-toolbar { flex-direction: column; align-items: stretch; }
  .wk-nav { justify-content: space-between; }
  .wk-recap { grid-template-columns: 1fr 1fr; }
}

/* ---------- Impression : étiquette / rappel / fiche traçabilité ---------- */
@media print {
  body[data-print="recall"] *, body[data-print="trace"] * { visibility: hidden; }
  body[data-print="recall"] .recall-print, body[data-print="recall"] .recall-print * { visibility: visible; }
  body[data-print="recall"] .recall-print { position: absolute; left: 0; top: 0; width: 100%; border: none; }
  body[data-print="trace"] .trace-print, body[data-print="trace"] .trace-print * { visibility: visible; }
  body[data-print="trace"] .trace-print { position: absolute; left: 0; top: 0; width: 100%; }
  body[data-print="trace"] .no-print-hide { display: block !important; }
  body[data-print] .no-print { display: none !important; }
}

/* ============ Réceptions (photo BL) + rappel de lot + type de viande ============ */

/* --- sélecteur de type de viande (gros boutons) --- */
.tv-picker { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
.tv-btn { position: relative; display: flex; flex-direction: column; align-items: center; gap: 6px; padding: 14px 8px; min-height: 80px; border: 1.5px solid var(--border); border-radius: 14px; background: var(--surface); cursor: pointer; transition: all 0.14s ease; }
.tv-btn:hover { border-color: var(--border-strong); }
.tv-btn.on { border-color: var(--accent); background: var(--accent-soft); }
.tv-emoji { font-size: 26px; line-height: 1; }
.tv-lbl { font-size: 13px; font-weight: 650; color: var(--text); }
.tv-check { position: absolute; top: 7px; right: 7px; width: 18px; height: 18px; border-radius: 50%; background: var(--accent); color: #fff; display: grid; place-items: center; }
.tv-check svg { width: 12px; height: 12px; }

/* --- chips type viande (fiche article) --- */
.tv-select-row { display: flex; flex-wrap: wrap; gap: 7px; }
.tv-chip { display: inline-flex; align-items: center; gap: 5px; padding: 7px 12px; border: 1.5px solid var(--border); border-radius: 999px; background: var(--surface); font-size: 13px; font-weight: 600; color: var(--text-muted); cursor: pointer; transition: all 0.14s ease; }
.tv-chip:hover { border-color: var(--border-strong); }
.tv-chip.on { border-color: var(--accent); background: var(--accent-soft); color: var(--accent); }

/* --- écran Réceptions (desktop) --- */
.rcp-screen { max-width: 1000px; }
.rcp-screen-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 18px; }
.rcp-seg { display: inline-flex; gap: 4px; background: var(--surface-3); padding: 4px; border-radius: 10px; }
.rcp-list { display: flex; flex-direction: column; gap: 12px; }
.rcp-card { display: flex; align-items: center; gap: 14px; padding: 12px; background: var(--surface); border: 1px solid var(--border); border-radius: 14px; box-shadow: var(--shadow-sm); }
.rcp-card.pointee { opacity: 0.72; }
.rcp-card-photo { flex-shrink: 0; width: 72px; height: 72px; border-radius: 10px; overflow: hidden; border: 1px solid var(--border); background: var(--surface-3); cursor: pointer; padding: 0; }
.rcp-thumb-wrap, .rcp-card-photo .rcp-noimg { width: 100%; height: 100%; position: relative; }
.rcp-thumb-wrap img { width: 100%; height: 100%; object-fit: cover; }
.rcp-noimg { display: grid; place-items: center; color: var(--text-faint); width: 100%; height: 100%; }
.rcp-noimg svg { width: 26px; height: 26px; }
.rcp-thumb-count { position: absolute; bottom: 3px; right: 3px; background: rgba(0,0,0,0.6); color: #fff; font-size: 10px; font-weight: 700; padding: 1px 6px; border-radius: 8px; }
.rcp-card-main { flex: 1; min-width: 0; }
.rcp-card-top { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; }
.rcp-card-four { font-weight: 700; font-size: 14.5px; color: var(--text); }
.rcp-card-date { font-size: 12.5px; color: var(--text-muted); }
.rcp-card-types { display: flex; flex-wrap: wrap; gap: 5px; margin: 6px 0; }
.rcp-type-badge { display: inline-flex; align-items: center; gap: 3px; font-size: 11.5px; font-weight: 600; padding: 2px 8px; border-radius: 999px; background: var(--surface-3); color: var(--text); }
.rcp-card-bot { display: flex; align-items: center; gap: 12px; }
.rcp-card-total { font-size: 13px; font-weight: 600; color: var(--text); }
.rcp-card-total em { color: var(--text-faint); font-weight: 500; }
.rcp-status { font-size: 11.5px; font-weight: 700; display: inline-flex; align-items: center; gap: 3px; padding: 2px 9px; border-radius: 999px; }
.rcp-status svg { width: 12px; height: 12px; }
.rcp-status.todo { background: var(--amber-soft); color: var(--amber); }
.rcp-status.ok { background: var(--green-soft); color: var(--green); }
.rcp-card-actions { display: flex; flex-direction: column; align-items: flex-end; gap: 7px; flex-shrink: 0; }
.rcp-del { width: 30px; height: 30px; border-radius: 8px; border: 1px solid var(--border); background: var(--surface); color: var(--text-faint); cursor: pointer; display: grid; place-items: center; }
.rcp-del:hover { color: var(--red); border-color: var(--red); }
.rcp-del svg { width: 15px; height: 15px; }
.rcp-empty { text-align: center; padding: 70px 20px; color: var(--text-muted); }
.rcp-empty-ico { width: 64px; height: 64px; margin: 0 auto 18px; border-radius: 18px; background: var(--accent-soft); color: var(--accent); display: grid; place-items: center; }
.rcp-empty-ico svg { width: 30px; height: 30px; }
.rcp-empty h3 { font-size: 18px; color: var(--text); margin-bottom: 6px; }
.rcp-empty p { max-width: 420px; margin: 0 auto 20px; font-size: 14px; line-height: 1.5; }

/* --- modal réception (desktop) --- */
.rcp-modal { width: min(560px, 94vw); }
.rcp-body { padding: 22px; display: flex; flex-direction: column; gap: 18px; max-height: 72vh; overflow-y: auto; }
.rcp-capture { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.rcp-cap-btn { display: flex; align-items: center; justify-content: center; gap: 8px; padding: 16px; border: 1.5px dashed var(--border-strong); border-radius: 14px; background: var(--surface-2); font-size: 14px; font-weight: 600; color: var(--text); cursor: pointer; min-height: 56px; }
.rcp-cap-btn:hover { border-color: var(--accent); color: var(--accent); }
.rcp-cap-btn svg { width: 18px; height: 18px; }
.rcp-cap-btn.primary { border-style: solid; border-color: var(--accent); background: var(--accent-soft); color: var(--accent); }
.rcp-thumbs { display: flex; flex-wrap: wrap; gap: 10px; }
.rcp-thumb { position: relative; width: 84px; height: 84px; border-radius: 10px; overflow: hidden; border: 1px solid var(--border); background: var(--surface-3); }
.rcp-thumb img { width: 100%; height: 100%; object-fit: cover; }
.rcp-thumb-pdf { width: 100%; height: 100%; display: grid; place-items: center; color: var(--text-muted); }
.rcp-thumb-pdf svg { width: 22px; height: 22px; }
.rcp-thumb-pdf span { position: absolute; bottom: 4px; font-size: 9px; font-weight: 700; }
.rcp-thumb-del { position: absolute; top: 3px; right: 3px; width: 20px; height: 20px; border-radius: 50%; border: none; background: rgba(0,0,0,0.6); color: #fff; cursor: pointer; display: grid; place-items: center; }
.rcp-thumb-del svg { width: 12px; height: 12px; }
.rcp-field { display: flex; flex-direction: column; gap: 7px; }
.rcp-label { font-size: 13px; font-weight: 650; color: var(--text); }
.rcp-grid2 { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.rcp-input { width: 100%; padding: 10px 12px; border: 1px solid var(--border); border-radius: 10px; background: var(--surface); color: var(--text); font-size: 14px; font-family: inherit; }
.rcp-input:focus { outline: none; border-color: var(--accent-line); }
.rcp-money { display: flex; align-items: center; gap: 8px; }
.rcp-money span { color: var(--text-muted); font-weight: 600; }

/* volet comptable de la réception unifiée */
.rcp-acc { border-top: 1px solid var(--border); padding-top: 4px; }
.rcp-acc-toggle { display: flex; align-items: center; gap: 8px; width: 100%; background: none; border: none; padding: 8px 0; cursor: pointer; font-size: 13.5px; font-weight: 650; color: var(--text); }
.rcp-acc-chev { width: 16px; height: 16px; color: var(--text-muted); transition: transform 0.15s ease; }
.rcp-acc-chev.up { transform: rotate(180deg); }
.rcp-acc-body { display: flex; flex-direction: column; gap: 12px; padding-top: 6px; }
.rcp-acc-note { display: flex; gap: 8px; font-size: 12.5px; line-height: 1.45; color: var(--text-muted); background: var(--surface-2); padding: 10px 12px; border-radius: 10px; }
.rcp-acc-note svg { flex-shrink: 0; color: var(--accent); margin-top: 1px; }
.rcp-lines-head { display: flex; align-items: center; justify-content: space-between; font-size: 13px; font-weight: 650; }
.rcp-line { display: flex; flex-direction: column; gap: 6px; padding: 10px; border: 1px solid var(--border); border-radius: 10px; background: var(--surface-2); }
.rcp-line-main { display: flex; gap: 8px; align-items: center; }
.rcp-il-art { flex: 1; }
.rcp-il-m { width: 130px; flex-shrink: 0; }
.rcp-il-lot { width: 100%; }
.rcp-majlot { display: flex; align-items: center; gap: 7px; font-size: 12.5px; color: var(--text); }
.rcp-lotna { font-size: 12px; color: var(--text-faint); }
.rcp-acc-total { display: flex; align-items: center; justify-content: space-between; padding: 10px 12px; background: var(--surface-3); border-radius: 10px; font-size: 13.5px; }
.rcp-acc-total b { font-size: 16px; }

/* --- visionneuse photo plein écran --- */
.photo-viewer { position: fixed; inset: 0; z-index: 9999; background: rgba(0,0,0,0.92); display: flex; align-items: center; justify-content: center; }
.pv-close { position: absolute; top: 18px; right: 18px; width: 44px; height: 44px; border-radius: 50%; border: none; background: rgba(255,255,255,0.14); color: #fff; cursor: pointer; display: grid; place-items: center; z-index: 2; }
.pv-close svg { width: 22px; height: 22px; }
.pv-count { position: absolute; top: 24px; left: 50%; transform: translateX(-50%); color: #fff; font-size: 13px; font-weight: 600; }
.pv-open { position: absolute; top: 20px; right: 76px; display: inline-flex; align-items: center; gap: 6px; padding: 9px 14px; border-radius: 9px; background: rgba(255,255,255,0.14); color: #fff; font-size: 12.5px; font-weight: 600; text-decoration: none; z-index: 2; }
.pv-open:hover { background: rgba(255,255,255,0.24); }
.pv-stage { max-width: 92vw; max-height: 86vh; display: flex; align-items: center; justify-content: center; }
.pv-img { max-width: 92vw; max-height: 86vh; object-fit: contain; border-radius: 6px; }
.pv-pdf { width: 88vw; height: 86vh; border: none; border-radius: 6px; background: #fff; }
.pv-pdf-scroll { width: 90vw; max-height: 86vh; overflow-y: auto; display: flex; justify-content: center; }
.pv-pdf-pages { display: flex; flex-direction: column; gap: 12px; }
.pv-pdf-page { max-width: 100%; height: auto; border-radius: 4px; box-shadow: 0 4px 20px rgba(0,0,0,0.4); background: #fff; }
.pv-loading { color: #fff; font-size: 15px; opacity: 0.8; }
.pv-nav { position: absolute; bottom: 28px; left: 50%; transform: translateX(-50%); display: flex; gap: 16px; }
.pv-arrow { width: 48px; height: 48px; border-radius: 50%; border: none; background: rgba(255,255,255,0.14); color: #fff; cursor: pointer; display: grid; place-items: center; }
.pv-arrow svg { width: 24px; height: 24px; }

/* --- bandeau de rappel de lot --- */
.lot-reminder { display: flex; flex-direction: column; gap: 8px; margin-bottom: 16px; }
.lot-reminder-row { display: flex; align-items: center; gap: 12px; padding: 12px 14px; border-radius: 12px; background: var(--amber-soft); border: 1px solid color-mix(in srgb, var(--amber) 32%, transparent); }
.lr-ico { flex-shrink: 0; color: var(--amber); display: grid; place-items: center; }
.lr-ico svg { width: 20px; height: 20px; }
.lr-txt { flex: 1; min-width: 0; font-size: 13.5px; line-height: 1.4; color: var(--text); }
.lr-txt b { font-weight: 700; }
.lr-actions { display: flex; gap: 8px; flex-shrink: 0; }
.lr-btn { display: inline-flex; align-items: center; gap: 5px; padding: 8px 13px; border-radius: 9px; border: 1px solid var(--border-strong); background: var(--surface); color: var(--text); font-size: 12.5px; font-weight: 650; cursor: pointer; white-space: nowrap; }
.lr-btn:hover { border-color: var(--accent); color: var(--accent); }
.lr-btn.primary { background: var(--amber); border-color: var(--amber); color: #fff; }
.lr-btn.primary:hover { color: #fff; opacity: 0.92; }
.lr-btn svg { flex-shrink: 0; }

@media (max-width: 640px) {
  .lot-reminder-row { flex-wrap: wrap; }
  .lr-actions { width: 100%; }
  .lr-btn { flex: 1; justify-content: center; }
  .rcp-card { flex-wrap: wrap; }
  .rcp-card-actions { flex-direction: row; width: 100%; justify-content: flex-end; }
}

