:root{--papier:#f6efe2;--papier2:#fffdf7;--encre:#2a2017;--encre2:#5f5142;--discret:#897a66;--braise:#bf4d22;--braise2:#9c3c18;--ligne:#e2d6c0;--vert:#2f7d52;--rouge:#b23a2e;--ocre:#8a6418}
*{box-sizing:border-box;margin:0;padding:0}
body{background:var(--papier);color:var(--encre);font-family:system-ui,-apple-system,"Segoe UI",sans-serif;font-size:16px;line-height:1.5}
a{color:var(--braise2);text-decoration:none}a:hover{text-decoration:underline}
h1{font-family:Georgia,"Times New Roman",serif;font-weight:600;font-size:1.8rem;line-height:1.2}
h2{font-family:Georgia,serif;font-weight:600;font-size:1.2rem;margin:24px 0 10px}
h3{font-size:1rem;margin:18px 0 6px}
code{font-family:ui-monospace,monospace;background:#efe7d6;padding:1px 6px;border-radius:5px;font-size:.9em}
.discret{color:var(--discret);font-size:.92rem}
.barre{display:flex;align-items:center;gap:20px;padding:10px 22px;background:var(--papier2);border-bottom:1px solid var(--ligne);flex-wrap:wrap;position:sticky;top:0;z-index:5}
.marque{font-family:Georgia,serif;font-weight:600;font-size:1.15rem;color:var(--braise2)}.marque span{display:block;font-family:system-ui,sans-serif;font-weight:400;font-size:.72rem;color:var(--discret);letter-spacing:.06em;text-transform:uppercase}
.barre nav{display:flex;gap:16px;margin-right:auto}.barre nav a{color:var(--encre2);padding:4px 2px;border-bottom:2px solid transparent}.barre nav a.on{color:var(--braise);border-color:var(--braise)}
.compte{font-size:.88rem;color:var(--discret)}.compte .lien,.lien{color:var(--braise2);background:none;border:0;font:inherit;cursor:pointer;padding:0;text-decoration:underline}
.page{max-width:1180px;margin:22px auto 60px;padding:0 22px}
.entete{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:8px}
.actions{display:flex;gap:8px;flex-wrap:wrap}
.retour{display:inline-block;margin-bottom:8px;color:var(--discret);font-size:.92rem}
.btn{display:inline-block;font:inherit;font-weight:600;background:var(--braise);color:#fff;border:1px solid var(--braise);border-radius:9px;padding:8px 14px;cursor:pointer;text-decoration:none!important;line-height:1.3}
.btn.ghost{background:var(--papier2);color:var(--encre2);border-color:var(--ligne)}.btn.petit{padding:5px 10px;font-size:.9rem}.btn.plein{width:100%;margin-top:14px;padding:11px}
.enligne{display:inline}
.flash{padding:10px 14px;border-radius:9px;margin-bottom:12px;background:rgba(47,125,82,.12);color:var(--vert)}.flash.err{background:rgba(178,58,46,.12);color:var(--rouge)}.flash.info{background:rgba(138,100,24,.12);color:var(--ocre)}
.recherche{width:100%;font:inherit;font-size:1.1rem;padding:12px 14px;border:1px solid var(--ligne);border-radius:11px;background:var(--papier2);margin:10px 0}
.puces{display:flex;gap:6px;flex-wrap:wrap;margin:6px 0}.puce{padding:4px 11px;border-radius:20px;border:1px solid var(--ligne);background:var(--papier2);color:var(--encre2);font-size:.9rem}.puce.on{background:var(--braise);border-color:var(--braise);color:#fff}
.puces.petites .puce{font-size:.82rem;padding:3px 9px}
.liste{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:8px;margin-top:8px}
.item[hidden]{display:none!important}
.liste .item{display:flex;flex-direction:column;background:var(--papier2);border:1px solid var(--ligne);border-radius:10px;padding:10px 13px;color:var(--encre);text-decoration:none}
.liste .item:hover{border-color:var(--braise)}.liste .nom{font-weight:600}.liste .meta{font-size:.82rem;color:var(--discret)}
.tag{display:inline-block;font-size:.72rem;padding:1px 7px;border-radius:10px;background:var(--ligne);color:var(--encre2);vertical-align:middle;font-weight:500}
.tag.vendu{background:rgba(47,125,82,.14);color:var(--vert)}.tag.base{background:rgba(184,138,46,.18);color:var(--ocre)}.tag.alerte-tag{background:rgba(178,58,46,.12);color:var(--rouge)}
.pastille{display:inline-block;font-size:.8rem;padding:2px 8px;border-radius:10px;background:rgba(191,77,34,.13);color:var(--braise2);margin:1px 0}.pastille.trace{background:var(--ligne);color:var(--encre2)}
.meta-ligne{color:var(--encre2);font-size:.92rem;margin-bottom:8px}.description{margin:6px 0 10px;max-width:780px}
.echelle{display:flex;align-items:center;gap:8px;flex-wrap:wrap;background:var(--papier2);border:1px solid var(--ligne);border-radius:12px;padding:10px 12px;margin:12px 0}
.echelle.active{border-color:var(--braise);box-shadow:0 0 0 2px rgba(191,77,34,.15)}
.echelle select,.echelle input{font:inherit;padding:7px 9px;border:1px solid var(--ligne);border-radius:8px;background:#fff}.echelle input{width:110px}.echelle .espace{flex:1}
.grille{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:28px}
@media (max-width:900px){.grille{grid-template-columns:1fr}}
.tableau{width:100%;border-collapse:collapse;background:var(--papier2);border:1px solid var(--ligne);border-radius:10px;overflow:hidden}
.tableau th,.tableau td{text-align:left;padding:7px 10px;border-bottom:1px solid var(--ligne);vertical-align:top}
.tableau th{font-size:.74rem;text-transform:uppercase;letter-spacing:.05em;color:var(--discret);font-weight:600}
.tableau .num,.tableau .qte{text-align:right;white-space:nowrap}.tableau td.qte{font-weight:600;font-variant-numeric:tabular-nums}
.tableau tr.total td{font-weight:700;border-top:2px solid var(--ligne);border-bottom:0}
.tableau tr:last-child td{border-bottom:0}
.note{font-size:.82rem;color:var(--discret);font-weight:400}
.alerte{display:inline-block;width:17px;height:17px;line-height:17px;text-align:center;border-radius:50%;background:var(--rouge);color:#fff;font-size:.72rem;font-weight:700;cursor:help}
.avertissement{color:var(--ocre);background:rgba(138,100,24,.08);border-radius:9px;padding:8px 12px;margin:8px 0;font-size:.92rem}.avertissement summary{cursor:pointer}.avertissement ul{margin:6px 0 0 18px}
.etapes{padding-left:1.4em}.etapes li{margin-bottom:10px;padding-left:4px}
.historique{margin-top:20px;font-size:.88rem;color:var(--encre2)}.historique summary{cursor:pointer;color:var(--discret)}.historique ul{margin:6px 0 0 18px}
.carte{background:var(--papier2);border:1px solid var(--ligne);border-radius:12px;padding:14px 16px;margin-bottom:14px}.carte.important{border-color:var(--braise)}
.carte h2:first-child{margin-top:0}
.champs{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px 16px}
.champs label,.boite label{display:flex;flex-direction:column;gap:4px;font-size:.88rem;color:var(--encre2)}.champs .large{grid-column:1/-1}
input,select,textarea{font:inherit;color:var(--encre)}
.champs input,.champs select,.champs textarea,.edition textarea,.ligne-form input,.ligne-form select,.boite input{padding:8px 10px;border:1px solid var(--ligne);border-radius:8px;background:#fff;width:100%}
.duo{display:flex;gap:6px}.duo>*{flex:1;min-width:0}
.edition textarea{width:100%;line-height:1.5}
.tableau.edit td{padding:4px 5px}.tableau.edit input:not([type=checkbox]),.tableau.edit select{width:100%;padding:6px 7px;border:1px solid var(--ligne);border-radius:7px;background:#fff;min-width:0}
#t-lignes td:nth-child(1){min-width:220px}#t-lignes td:nth-child(2){width:90px}#t-lignes td:nth-child(3){width:96px}#t-lignes td:nth-child(4){width:140px}#t-lignes td:nth-child(5){width:40px;text-align:center}
#t-formats td:nth-child(2),#t-formats td:nth-child(3),#t-formats td:nth-child(5),#t-formats td:nth-child(6){width:84px}#t-formats td:nth-child(4){width:50px;text-align:center}#t-formats td:nth-child(7){width:100px}
.btns{white-space:nowrap;width:62px}.mini{font:inherit;width:26px;height:28px;border:1px solid var(--ligne);border-radius:6px;background:var(--papier2);cursor:pointer;color:var(--encre2)}
.barre-bas{position:sticky;bottom:0;background:var(--papier);padding:12px 0;border-top:1px solid var(--ligne);margin-top:14px;display:flex;gap:8px}
.ligne-form{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:6px 0}.ligne-form input,.ligne-form select{width:auto;flex:1 1 140px}.ligne-form .case{display:flex;gap:4px;align-items:center;font-size:.88rem}.ligne-form .case input{flex:0 0 auto}
.simple{list-style:none;margin:6px 0}.simple li{padding:5px 0;border-bottom:1px solid var(--ligne)}
.allergenes{max-width:420px;margin-bottom:12px}.allergenes td:not(:first-child),.allergenes th:not(:first-child){text-align:center;width:80px}
body.accueil{display:flex;min-height:100vh;align-items:center;justify-content:center;padding:16px}
.boite{background:var(--papier2);border:1px solid var(--ligne);border-radius:16px;padding:28px;width:100%;max-width:360px;display:flex;flex-direction:column;gap:10px}
@media (max-width:640px){.page{padding:0 14px}.barre{padding:8px 14px;gap:10px}h1{font-size:1.45rem}.tableau th,.tableau td{padding:6px 7px}}
.case-ligne span{display:flex;gap:8px;align-items:center}.case-ligne input{width:auto!important}
.defile{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;border-radius:10px}
.grille>*{min-width:0}
@media (max-width:640px){
 .barre{position:static;gap:6px 12px}.barre nav{order:3;width:100%;overflow-x:auto;gap:14px;white-space:nowrap}.compte{margin-left:auto}
 .cache-mobile{display:none}
 .tableau{font-size:.92rem}
 .echelle{gap:6px}.echelle label{width:100%;display:flex;flex-direction:column;gap:4px}.echelle select{width:100%}.echelle input{flex:1}.echelle .espace{display:none}.echelle .btn{flex:1;text-align:center}
 .entete .actions{width:100%}.entete .actions .btn,.entete .actions form{flex:1}.entete .actions form .btn{width:100%}
 .liste{grid-template-columns:1fr}
 .ligne-form{flex-direction:column;align-items:stretch}.ligne-form input,.ligne-form select{flex:1 1 auto;width:100%}
}
@media (min-width:641px){.edition .defile .tableau.edit{min-width:760px}}
@media (max-width:640px){
 .empile,.empile tbody{display:block;width:100%}.empile thead{display:none}.empile tr{display:block;padding:8px 10px;border-bottom:1px solid var(--ligne)}.empile tr:last-child{border-bottom:0}
 .empile td{display:flex;justify-content:space-between;gap:10px;border:0!important;padding:2px 0!important;text-align:right!important;white-space:normal!important}
 .empile td::before{content:attr(data-l);color:var(--discret);font-size:.8rem;text-align:left;flex-shrink:0}
 .empile td:first-child{display:block;text-align:left!important;font-weight:600}.empile td:first-child::before{content:none}
 .tableau.edit,.tableau.edit tbody{display:block;width:100%}.tableau.edit thead{display:none}.tableau.edit tbody tr{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:6px;padding:10px 0;border-bottom:1px solid var(--ligne)}
 .tableau.edit td{display:block;padding:0!important;border:0!important;width:auto!important;min-width:0!important}
 #t-lignes td:nth-child(1){grid-column:1/-1}#t-lignes td:nth-child(2),#t-lignes td:nth-child(3),#t-lignes td:nth-child(4){grid-column:span 2}
 #t-lignes td:nth-child(5){grid-column:span 1;display:flex;align-items:center;gap:4px;font-size:.8rem;color:var(--discret)}#t-lignes td:nth-child(5)::before{content:"Fac."}
 #t-lignes td:nth-child(6){grid-column:span 3}#t-lignes td:nth-child(7){grid-column:span 2;text-align:right}
 #t-formats td:nth-child(1){grid-column:1/-1}#t-formats td:nth-child(n+2):nth-child(-n+7){grid-column:span 2}
 #t-formats td:nth-child(4){display:flex;align-items:center;gap:4px;font-size:.8rem;color:var(--discret)}#t-formats td:nth-child(4)::before{content:"Vendu"}
 #t-formats td:nth-child(8){grid-column:1/-1;text-align:right}
}
@media (max-width:640px){.cache-mobile{display:none!important}.puces{flex-wrap:nowrap;overflow-x:auto;padding-bottom:4px;scrollbar-width:none}.puce{white-space:nowrap}}
.trace{white-space:pre-wrap;font-family:ui-monospace,monospace;font-size:.75rem;max-width:640px;overflow-wrap:anywhere}.erreur-trace{color:var(--rouge);font-weight:700}
/* ---------- Achats (admin) */
.compteur{display:inline-block;min-width:20px;padding:0 6px;border-radius:10px;background:rgba(255,255,255,.85);color:var(--braise2);font-size:.75rem;font-weight:700;text-align:center;margin-left:2px}
.puce:not(.on) .compteur{background:var(--braise);color:#fff}
.chiffres{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px;margin:12px 0}
.chiffres>div{background:var(--papier2);border:1px solid var(--ligne);border-radius:12px;padding:10px 14px}
.chiffres b{display:block;font-family:Georgia,serif;font-size:1.45rem;font-weight:600;line-height:1.2;font-variant-numeric:tabular-nums}.chiffres span{font-size:.85rem;color:var(--discret)}
.pos,.pos b{color:var(--vert)}.neg,.neg b{color:var(--rouge)}
.figure{margin:14px 0;background:var(--papier2);border:1px solid var(--ligne);border-radius:12px;padding:10px 12px}
.figure figcaption{font-size:.88rem;font-weight:600;color:var(--encre2);margin-bottom:4px}
.graphe{display:block;width:100%;height:auto}.graphe text{font-size:12px;fill:var(--encre2);font-family:system-ui,sans-serif}
.graphe .grille{stroke:var(--ligne);stroke-width:1}.graphe .axe{stroke:var(--discret);stroke-width:1}
.legende{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:.85rem;color:var(--encre2);margin-top:4px}.legende i{display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:5px;vertical-align:-1px}
.article{display:flex;gap:10px 18px;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;background:var(--papier2);border:1px solid var(--ligne);border-radius:10px;padding:10px 12px;margin-bottom:8px}
.art-tete{flex:1 1 320px;min-width:0}.art-tete strong{word-break:break-word}.art-action{flex:1 1 380px;display:flex;flex-direction:column;gap:4px;align-items:flex-end}
.rappro{display:flex;gap:6px;align-items:center;flex-wrap:wrap;justify-content:flex-end;width:100%}
.rappro input[name=ingredient]{flex:1 1 200px;min-width:0;padding:7px 9px;border:1px solid var(--ligne);border-radius:8px;background:#fff}
.rappro .fac{display:flex;align-items:center;gap:4px;color:var(--discret)}.rappro .fac input{width:92px;padding:7px 8px;border:1px solid var(--ligne);border-radius:8px;background:#fff}
.rappro .apercu{min-width:120px;text-align:right;font-variant-numeric:tabular-nums}.rappro .apercu.alerte-prix{color:var(--rouge)}
.filtre select{max-width:340px}
.repli summary{cursor:pointer;list-style:none}.repli summary h2{display:inline;margin:0}.repli summary::before{content:"▸ ";color:var(--discret)}.repli[open] summary::before{content:"▾ "}
tr.ecarte td{opacity:.55}
@media (max-width:640px){.art-action{align-items:stretch}.rappro{justify-content:stretch}.rappro .apercu{text-align:left}.chiffres b{font-size:1.2rem}}
/* rapports A4 */
body.rapport{background:#fff}
.barre-impr{padding:10px 16px;background:var(--papier);border-bottom:1px solid var(--ligne);display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.feuille-a4{max-width:190mm;margin:0 auto;padding:16px}
.entete-rapport{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;border-bottom:2px solid var(--braise);padding-bottom:6px;margin-bottom:10px;font-size:.9rem;color:var(--encre2)}
.pied-rapport{margin-top:18px;font-size:.8rem;color:var(--discret)}
@media print{
 @page{size:A4;margin:12mm}
 .noprint{display:none!important}
 body.rapport{font-size:10.5pt}
 .feuille-a4{max-width:none;padding:0}
 .rapport .tableau{border-radius:0}.rapport .tableau th,.rapport .tableau td{padding:4px 6px}
 .rapport .figure,.rapport .chiffres>div,.rapport tr{break-inside:avoid}
 .rapport .defile{overflow:visible}
 .rapport .pos,.rapport .neg,.rapport .tag{-webkit-print-color-adjust:exact;print-color-adjust:exact}
}
@media (max-width:640px){.puces.onglets{flex-wrap:wrap;overflow:visible}}
.figure .graphe{max-width:860px;margin:0 auto}.g-petit{display:none}
@media print{.g-petit{display:none!important}.g-large{display:block!important}}
.barres-h{display:flex;flex-direction:column;gap:5px}
.barre-l{display:grid;grid-template-columns:minmax(120px,30%) 1fr 84px;gap:10px;align-items:center;font-size:.88rem}
.b-lib{text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--encre2)}
.b-piste{position:relative;height:16px}.b-piste i{position:absolute;top:0;bottom:0;border-radius:3px;background:var(--braise)}
.b-piste i.haut{background:var(--rouge)}.b-piste i.bas{background:var(--vert)}.b-ref{position:absolute;top:-3px;bottom:-3px;width:1px;background:var(--discret)}
.b-val{font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--encre2)}
.barres-h i,.b-ref{-webkit-print-color-adjust:exact;print-color-adjust:exact}
@media (max-width:640px){
 .barre-l{grid-template-columns:1fr 76px;gap:2px 8px}.b-lib{grid-column:1/-1;text-align:left}
 .g-large{display:none!important}.g-petit{display:block!important}
 .empile td{flex-wrap:wrap}.empile td>div{flex-basis:100%;text-align:right}
 .chiffres{grid-template-columns:repeat(2,minmax(0,1fr))}
}
.g-petit text{font-size:14px}
.rappro select.choix{flex:1 1 220px;min-width:0;max-width:100%;padding:7px 9px;border:1px solid var(--ligne);border-radius:8px;background:#fff;font:inherit}
.rappro .nouveau{display:flex;gap:6px;flex-wrap:wrap;flex:1 1 100%}.rappro .nouveau[hidden],.rappro .ing-autre[hidden]{display:none}
.rappro .nouveau input{flex:2 1 200px;min-width:0;padding:7px 9px;border:1px solid var(--braise);border-radius:8px;background:#fff}
.rappro .nouveau select{flex:1 1 120px;padding:7px 9px;border:1px solid var(--ligne);border-radius:8px;background:#fff}
.rappro .ing-autre{flex:1 1 200px;min-width:0;padding:7px 9px;border:1px solid var(--braise);border-radius:8px;background:#fff}
/* Achats : fenêtre pièce et message flottant */
.voile-piece{position:fixed;inset:0;background:rgba(42,32,23,.55);z-index:50;display:flex;align-items:center;justify-content:center;padding:16px}
.fenetre-piece{position:relative;width:min(1100px,100%);height:min(92vh,1200px);background:var(--papier2);border-radius:12px;overflow:hidden;box-shadow:0 12px 40px rgba(0,0,0,.35)}
.fenetre-piece iframe{width:100%;height:100%;border:0;display:block}
.fermer-piece{position:absolute;top:6px;right:8px;z-index:2;width:34px;height:34px;border-radius:50%;border:1px solid var(--ligne);background:#fff;font-size:1.3rem;line-height:1;cursor:pointer;color:var(--encre2)}
body.piece-pop{display:flex;flex-direction:column;height:100vh;margin:0;padding:10px 12px;gap:8px;box-sizing:border-box}
.piece-tete{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:center;padding-right:40px;font-size:.92rem}
.piece-choix select{font:inherit;padding:4px 8px;border:1px solid var(--ligne);border-radius:8px;background:#fff}
.piece-lignes{font-size:.88rem}.piece-lignes td,.piece-lignes th{padding:4px 8px}
.piece-doc{flex:1;min-height:300px;width:100%;border:1px solid var(--ligne);border-radius:8px;background:#fff}
.toast{position:fixed;left:50%;bottom:18px;transform:translateX(-50%);z-index:40;max-width:min(560px,calc(100% - 32px));box-shadow:0 6px 24px rgba(0,0,0,.18);border-radius:9px;transition:opacity .6s}
.toast{background:var(--papier2)}.toast .flash{margin:0}.toast.part{opacity:0}
