:root{
  --vert:#2f6d3f;
  --vert-fonce:#1f4d2c;
  --vert-clair:#e7f3ea;
  --ambre:#c98a1c;
  --gris:#6b6f6a;
  --fond:#f6f7f4;
  --carte:#ffffff;
  --danger:#b3492f;
  --bordure:#e6e6e2;
}
*{box-sizing:border-box;}
body{
  margin:0;
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;
  background:var(--fond);
  color:#222;
}
a{color:var(--vert-fonce);}

/* Barre du haut */
.barre-haut{
  background:var(--vert-fonce);
  color:#fff;
  padding:12px 16px;
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  position:sticky;
  top:0;
  z-index:10;
  box-shadow:0 2px 6px rgba(0,0,0,.15);
}
.barre-titre{font-weight:700; font-size:1.05rem;}
.barre-nav{display:flex; gap:14px; flex-wrap:wrap;}
.barre-nav a{color:#fff; text-decoration:none; font-size:.85rem; opacity:.9;}
.barre-nav a:hover{opacity:1; text-decoration:underline;}
.barre-utilisateur{font-size:.8rem; opacity:.85;}

.contenu{
  max-width:680px;
  margin:0 auto;
  padding:14px 12px 60px;
}
.pied{
  text-align:center;
  font-size:.72rem;
  color:var(--gris);
  padding:20px 12px 30px;
}

/* Cartes génériques */
.card{
  background:var(--carte);
  border-radius:14px;
  box-shadow:0 1px 4px rgba(0,0,0,.08);
  padding:16px;
  margin-bottom:16px;
}
h1{font-size:1.2rem; color:var(--vert-fonce); margin:6px 0 14px;}
h2{font-size:1rem; color:var(--vert-fonce); margin:0 0 12px;}

/* Formulaires */
form label{
  display:block;
  font-size:.8rem;
  color:var(--gris);
  margin-bottom:10px;
}
input[type=text], input[type=password], textarea{
  width:100%;
  margin-top:4px;
  border:1px solid #ddd;
  border-radius:8px;
  padding:9px 10px;
  font-size:.9rem;
  font-family:inherit;
  background:#fcfcfb;
}
textarea{resize:vertical; min-height:44px;}
button{
  cursor:pointer;
  border:none;
  border-radius:9px;
  padding:10px 14px;
  font-weight:700;
  font-size:.85rem;
  background:var(--vert);
  color:#fff;
}
button.bouton-discret{
  background:#f0efe9;
  color:var(--danger);
}
button.x-bouton{
  background:transparent;
  color:var(--gris);
  font-size:1rem;
  padding:0 6px;
  line-height:1;
}
.form-inline{display:inline-flex; align-items:center;}
.mini-form, .mini-form-tache{
  margin-top:10px;
  padding-top:10px;
  border-top:1px dashed var(--bordure);
}
.mini-form-tache{display:flex; flex-direction:column;}

/* Messages */
.alerte{background:#fbeae5; color:var(--danger); padding:10px 12px; border-radius:8px; font-size:.85rem;}
.succes{background:var(--vert-clair); color:var(--vert-fonce); padding:10px 12px; border-radius:8px; font-size:.85rem;}
.info{background:#fff2dd; color:#7a5410; padding:10px 12px; border-radius:8px; font-size:.85rem;}

/* Page de connexion */
.login-card{max-width:360px; margin:40px auto;}

/* Choix de ferme */
.grille-fermes{display:grid; gap:12px;}
.carte-ferme{
  display:block;
  background:var(--carte);
  border:1px solid var(--bordure);
  border-radius:14px;
  padding:16px;
  text-decoration:none;
}
.carte-ferme-nom{font-weight:700; color:var(--vert-fonce); font-size:1rem;}
.carte-ferme-lieu{font-size:.78rem; color:var(--gris); margin-top:4px;}

/* En-tête ferme + navigation semaine */
.entete-ferme{margin-bottom:10px;}
.sous-titre{font-size:.8rem; color:var(--gris); margin-top:-8px;}
.nav-semaine{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  background:var(--carte);
  border-radius:12px;
  padding:10px 12px;
  margin-bottom:10px;
  font-size:.8rem;
}
.btn-nav{text-decoration:none; color:var(--vert-fonce); font-weight:600; white-space:nowrap;}
.semaine-label{text-align:center; font-weight:700; color:#222;}
.barre-lien{margin-bottom:14px; font-size:.85rem;}

.badge{
  display:inline-block;
  background:var(--ambre);
  color:#fff;
  font-size:.65rem;
  padding:2px 8px;
  border-radius:20px;
  margin-left:6px;
  font-weight:600;
  vertical-align:middle;
}
.badge-gris{background:var(--gris);}

.banniere-verrou{
  background:#fdf1e8;
  border:1px solid #f0d3ad;
  color:#7a4b12;
  padding:10px 12px;
  border-radius:10px;
  font-size:.82rem;
  margin-bottom:12px;
  display:flex;
  align-items:center;
  gap:10px;
  flex-wrap:wrap;
}
.lien-bouton{
  background:none;
  border:1px solid #7a4b12;
  color:#7a4b12;
  padding:5px 10px;
  font-size:.75rem;
}

.progres-global{margin-bottom:14px;}
.progres-barre-fond{
  background:#e2e5e0;
  border-radius:8px;
  height:10px;
  overflow:hidden;
}
.progres-barre{height:100%; background:var(--vert); transition:width .3s;}
.progres-texte{font-size:.75rem; color:var(--gris); margin-top:5px;}

/* Jours (accordéon) */
.jour{
  background:var(--carte);
  border-radius:14px;
  margin-bottom:12px;
  box-shadow:0 1px 4px rgba(0,0,0,.08);
  overflow:hidden;
}
.jour-entete{
  padding:14px 16px;
  display:flex;
  justify-content:space-between;
  align-items:center;
  cursor:pointer;
  background:var(--vert-clair);
}
.jour-entete.aujourdhui{background:#fff2dd;}
.jour-titre{font-weight:700; font-size:.95rem; color:var(--vert-fonce);}
.jour-meta{font-size:.72rem; color:var(--gris); margin-top:2px;}
.jour-progres{font-size:.78rem; font-weight:700; color:var(--vert); white-space:nowrap;}
.chevron{display:inline-block; margin-left:8px; transition:transform .2s;}
.jour.ouvert .chevron{transform:rotate(180deg);}
.jour-cultures{
  display:flex;
  flex-wrap:wrap;
  gap:6px;
  align-items:center;
  padding:10px 16px 0;
}
.puce-culture{
  background:#fff;
  border:1px solid #cfe0d3;
  color:var(--vert-fonce);
  font-size:.7rem;
  padding:3px 6px 3px 9px;
  border-radius:20px;
  font-weight:600;
  display:flex;
  align-items:center;
  gap:4px;
}
.ajout-discret, .ajout-tache{
  display:block;
  width:100%;
}
.ajout-discret summary, .ajout-tache summary{
  cursor:pointer;
  font-size:.75rem;
  color:var(--vert-fonce);
  font-weight:700;
  padding:6px 4px;
}
.jour-corps{
  display:none;
  padding:6px 12px 14px;
}
.jour.ouvert .jour-corps{display:block;}

/* Tâches */
.tache{
  border:1px solid var(--bordure);
  border-radius:12px;
  margin:10px 0;
  padding:12px 12px 10px;
  background:#fff;
}
.tache.faite{background:var(--vert-clair); border-color:#b9d9c1;}
.tache-haut{display:flex; align-items:flex-start; gap:10px;}
.tache-heure{
  background:var(--vert-fonce);
  color:#fff;
  font-size:.72rem;
  font-weight:700;
  padding:3px 8px;
  border-radius:7px;
  white-space:nowrap;
  margin-top:2px;
}
.tache-titre{font-weight:700; font-size:.92rem; flex:1;}
.tache-haut form{margin-left:auto;}
.tache-details{margin:8px 0 4px; font-size:.8rem; color:var(--gris); line-height:1.5;}
.tache-details span{display:block;}
.bouton-coche{
  width:100%;
  margin-top:8px;
  background:#fff;
  border:2px solid var(--vert);
  color:var(--vert-fonce);
}
.bouton-coche.actif{background:var(--vert); color:#fff;}
.bouton-coche:disabled{opacity:.6; cursor:not-allowed;}
.fait-par{font-size:.7rem; color:var(--gris); margin-top:6px;}
.form-commentaire textarea{margin-top:8px;}

/* Historique */
.liste-semaines{display:flex; flex-direction:column; gap:8px;}
.ligne-semaine{
  background:var(--carte);
  border:1px solid var(--bordure);
  border-radius:10px;
  padding:12px 14px;
  text-decoration:none;
  color:#222;
  font-size:.85rem;
}
.ligne-semaine:hover{border-color:var(--vert);}

/* Admin techniciens */
.cases-fermes{display:flex; flex-wrap:wrap; gap:10px; margin:6px 0 12px;}
.case{
  display:flex;
  align-items:center;
  gap:6px;
  font-size:.8rem;
  background:#f4f5f2;
  padding:6px 10px;
  border-radius:8px;
}
.case input{width:auto; margin:0;}
.ligne-technicien{
  border-top:1px solid var(--bordure);
  padding:14px 0;
}
.ligne-technicien:first-of-type{border-top:none; padding-top:0;}
.technicien-nom{font-weight:700; margin-bottom:8px;}
.ligne-technicien details{margin-top:8px; font-size:.82rem;}
.ligne-technicien .mini-form{display:flex; flex-wrap:wrap; gap:8px; align-items:center; border:none; padding:6px 0 0; margin:0;}
.ligne-technicien .mini-form input[type=text]{width:auto; flex:1; min-width:160px;}

@media (min-width:600px){
  .mini-form-tache{display:grid; grid-template-columns:1fr 1fr; gap:0 14px;}
  .mini-form-tache label:last-of-type, .mini-form-tache button{grid-column:1 / -1;}
}
