:root{
  --vert:#4a7c3a;
  --vert-fonce:#2f5223;
  --vert-clair:#eef4e8;
  --terre:#8a6d3b;
  --orange:#ec9334;
  --gris:#5a6156;
  --gris-clair:#f6f7f4;
  --bord:#dbe0d4;
  --rouge:#b23b3b;
  --ombre:0 1px 3px rgba(0,0,0,.08),0 6px 18px rgba(0,0,0,.05);
  --radius:12px;
}
*{box-sizing:border-box}
body{
  margin:0;font-family:system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  color:#28301f;background:var(--gris-clair);line-height:1.5;
}
a{color:var(--vert-fonce)}
.wrap{max-width:820px;margin:0 auto;padding:0 16px 64px}

/* En-tête */
header.site{
  background:linear-gradient(135deg,var(--vert),var(--vert-fonce));
  color:#fff;padding:26px 0;margin-bottom:26px;box-shadow:var(--ombre);
}
header.site .wrap{padding-bottom:0}
header.site h1{margin:0;font-size:1.55rem;letter-spacing:.2px}
header.site p{margin:4px 0 0;opacity:.9}

/* Blocs / cartes */
.carte{
  background:#fff;border:1px solid var(--bord);border-radius:var(--radius);
  padding:20px 22px;margin:18px 0;box-shadow:var(--ombre);
}
.carte h2{margin:0 0 4px;font-size:1.15rem;color:var(--vert-fonce)}
.carte h2 .num{
  display:inline-block;background:var(--vert);color:#fff;border-radius:50%;
  width:26px;height:26px;line-height:26px;text-align:center;font-size:.9rem;margin-right:8px;
}
.sous{color:var(--gris);font-size:.92rem;margin:.2rem 0 1rem}

/* Champs */
label{display:block;font-weight:600;margin:12px 0 4px;font-size:.95rem}
input[type=text],input[type=email],input[type=tel],input[type=number],
input[type=date],select,textarea{
  width:100%;padding:10px 12px;border:1px solid var(--bord);border-radius:8px;
  font-size:1rem;font-family:inherit;background:#fff;
}
input:focus,select:focus,textarea:focus{outline:2px solid var(--vert);border-color:var(--vert)}
.champ-obligatoire::after{content:" *";color:var(--rouge)}
.aide{font-size:.85rem;color:var(--gris);margin-top:3px;font-weight:400}

/* Produits */
.producteur-titre{
  margin:22px 0 6px;font-weight:700;color:var(--terre);font-size:1.02rem;
  border-bottom:2px solid var(--vert-clair);padding-bottom:5px;
}
.ligne-produit{
  display:flex;align-items:center;gap:12px;padding:12px 10px;border-radius:10px;
}
.ligne-produit:nth-child(even){background:var(--gris-clair)}
.ligne-produit .infos{flex:1;min-width:0}
.ligne-produit .nom{font-weight:600}
.ligne-produit .details{font-size:.85rem;color:var(--gris)}
.ligne-produit .qte{width:92px;flex:none}
.ligne-produit .qte input{text-align:center}
.badge{
  display:inline-block;font-size:.72rem;font-weight:700;text-transform:uppercase;
  letter-spacing:.4px;padding:2px 8px;border-radius:20px;margin-left:6px;vertical-align:middle;
}
.badge.oblig{background:#fde8d2;color:#a85a10}

/* Récapitulatif */
.recap table{width:100%;border-collapse:collapse;margin-top:6px}
.recap th,.recap td{padding:8px 10px;text-align:left;border-bottom:1px solid var(--bord);font-size:.92rem}
.recap th{color:var(--gris);font-weight:600}
.recap td.num,.recap th.num{text-align:right;white-space:nowrap}
.recap .prod-total td{font-weight:700;background:var(--vert-clair)}
.echeancier{display:flex;flex-wrap:wrap;gap:10px;margin-top:10px}
.echeancier .mois{
  flex:1 1 110px;background:var(--vert-clair);border:1px solid var(--bord);
  border-radius:10px;padding:10px 12px;text-align:center;
}
.echeancier .mois .lbl{font-size:.8rem;color:var(--gris)}
.echeancier .mois .val{font-weight:700;font-size:1.05rem;color:var(--vert-fonce)}
.total-general{
  margin-top:16px;padding:14px 16px;background:var(--vert-fonce);color:#fff;
  border-radius:10px;display:flex;justify-content:space-between;align-items:center;font-size:1.1rem;
}
.total-general strong{font-size:1.25rem}

/* Boutons */
.btn{
  display:inline-block;background:var(--vert);color:#fff;border:none;border-radius:10px;
  padding:13px 24px;font-size:1.02rem;font-weight:600;cursor:pointer;text-decoration:none;
}
.btn:hover{background:var(--vert-fonce)}
.btn.secondaire{background:#fff;color:var(--vert-fonce);border:1px solid var(--vert)}
.btn.danger{background:var(--rouge)}
.btn.petit{padding:7px 14px;font-size:.9rem}
.actions{margin-top:20px;display:flex;gap:12px;flex-wrap:wrap}

/* Messages */
.alerte{padding:12px 16px;border-radius:10px;margin:14px 0;font-size:.95rem}
.alerte.info{background:#e7f0fb;border:1px solid #b9d4f2;color:#1c4e8a}
.alerte.succes{background:#e6f4e2;border:1px solid #b7dcac;color:#2f5223}
.alerte.erreur{background:#fbe7e7;border:1px solid #f0b9b9;color:#8a1c1c}
.alerte.attention{background:#fdf3e2;border:1px solid #f2ddb9;color:#8a5a1c}

/* Divers */
.check-ligne{display:flex;gap:10px;align-items:flex-start;margin:12px 0}
.check-ligne input{margin-top:4px;width:18px;height:18px;flex:none}
footer.site{text-align:center;color:var(--gris);font-size:.85rem;padding:24px 0 8px}
.grille2{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}
@media(max-width:560px){.grille2{grid-template-columns:1fr}}
table.liste{width:100%;border-collapse:collapse}
table.liste th,table.liste td{padding:8px 10px;border-bottom:1px solid var(--bord);text-align:left;font-size:.9rem}
table.liste th{background:var(--vert-clair)}
.pill{font-size:.78rem;background:var(--gris-clair);border:1px solid var(--bord);border-radius:20px;padding:2px 8px}
.hidden{display:none}

/* Choix des permanences */
.perm-grille{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:8px;margin-top:8px}
.perm-choix{display:flex;align-items:center;gap:8px;padding:9px 12px;border:1px solid var(--bord);
  border-radius:10px;font-weight:500;cursor:pointer;background:#fff}
.perm-choix:hover{border-color:var(--vert)}
.perm-choix input{width:18px;height:18px;flex:none;margin:0}
.perm-choix:has(input:checked){background:var(--vert-clair);border-color:var(--vert)}

/* Tableaux de planning / suivi (admin) */
.tbl-planning{width:100%;border-collapse:collapse;font-size:.85rem}
.tbl-planning th,.tbl-planning td{border:1px solid var(--bord);padding:5px 7px;text-align:center}
.tbl-planning th{background:var(--vert-clair)}
.tbl-planning td.g,.tbl-planning th.g{text-align:left;white-space:nowrap;position:sticky;left:0;background:#fff}
.tbl-planning th.g{background:var(--vert-clair)}
.tbl-planning .case{width:26px;height:22px}
.scroll-x{overflow-x:auto;border:1px solid var(--bord);border-radius:10px}
.zone-import{border:2px dashed var(--bord);border-radius:10px;padding:16px;background:var(--gris-clair)}

/* Impression : masquer la navigation et l'entête coloré */
@media print{
  header.site,.actions,.onglets,footer.site,.no-print{display:none!important}
  .carte{box-shadow:none;border:none;padding:0;margin:0}
  body{background:#fff}
  .tbl-planning th,.tbl-planning td{border:1px solid #999}
  .tbl-planning td.g,.tbl-planning th.g{position:static}
}

/* Documents par producteur */
.suivi-producteur{margin:22px 0 30px}
@media print{
  .suivi-producteur{break-after:page;page-break-after:always}
  .suivi-producteur:last-child{break-after:auto;page-break-after:auto}
}

/* Suivi producteur : cellule d'un produit non commandé par l'adhérent */
.tbl-planning td.cellule-grise{background:#e0e0e0}
@media print{ .tbl-planning td.cellule-grise{background:#d9d9d9 !important;-webkit-print-color-adjust:exact;print-color-adjust:exact} }

/* Récap par producteur : sur mobile, chaque ligne s'empile en colonne */
@media (max-width: 640px){
  .tbl-recap thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  .tbl-recap, .tbl-recap tbody, .tbl-recap tr, .tbl-recap td{display:block;width:100%}
  .tbl-recap tr{border:1px solid var(--bord);border-radius:10px;padding:8px 12px;margin-bottom:10px;background:#fff}
  .tbl-recap td{text-align:right;border:none;padding:4px 0;display:flex;justify-content:space-between;gap:12px}
  .tbl-recap td::before{content:attr(data-label);font-weight:600;color:#5b6b4f;text-align:left}
  .tbl-recap td:first-child{font-weight:700;font-size:1.02em;border-bottom:1px solid var(--bord);margin-bottom:4px;padding-bottom:6px}
  .tbl-recap td:first-child::before{content:""}
  .tbl-recap tr.prod-total{background:var(--vert-clair)}
  .tbl-recap tr.prod-total td[colspan]{font-weight:700;border:none;justify-content:flex-start}
  .tbl-recap tr.prod-total td[colspan]::before{content:""}
}

/* Suivi : séparation visuelle des groupes de colonnes (produits de même planning) */
.tbl-suivi th.grp{background:#e3eddb;border-left:2px solid #5b7f43;font-weight:700}
.tbl-suivi th.grp-start,.tbl-suivi td.grp-start{border-left:2px solid #5b7f43}

/* Avertissement sur aplat rouge (date de début) */
.alerte-rouge{background:#c0392b;color:#fff;padding:9px 13px;border-radius:8px;font-weight:700;margin-top:8px;letter-spacing:.2px}
