/* ══════════════════════════════════════════════════════════════════════
   SORRA — charte graphique de PERFORM YL.1, reprise à l'identique.
   Toutes les couleurs sont déclarées ici, dans :root, avec la valeur
   qu'elles avaient dans YL.1 (perform.css, accueil, connexion, listes).
   Aucune couleur nouvelle. Seuls les voiles et ombres transparents
   (rgba de noir, de blanc ou du bleu nuit) restent écrits en place.
   ══════════════════════════════════════════════════════════════════════ */

:root{
  /* Socle de YL.1 (perform.css) */
  --noir:#0c2461; --noir2:#0d2d7a; --noir3:#1241a8;
  --gris3:#333; --gris5:#555; --gris8:#888; --grisb:#bbb; --grise:#eee;
  --off:#f0f5ff; --blanc:#fff;
  --vert:#15803d; --rouge:#b91c1c; --ambre:#d97706;

  /* Écrites en dur dans YL.1, regroupées ici sans changer de valeur */
  --bord:#ddd;            /* bordures cartes, tableaux, filtres */
  --bord-champ:#ccc;      /* bordures des champs */
  --noir3-survol:#0d3ecf; /* survol du bouton « + Nouveau » */
  --b600:#1a56db; --b500:#2563eb; --b400:#3b82f6; --b300:#93c5fd;
  --b200:#bfdbfe; --b100:#dbeafe; --b050:#eff6ff;   /* échelle de bleus (accueil, connexion) */
  --b-attenue:#6b93c8;    /* textes discrets de l'accueil */
  --b-nuit:#071640;       /* dégradé tuile navy */
  --b-acier:#1e40af;      /* dégradé tuile steel */
  --ambre-vif:#f59e0b; --ambre-encre:#1a1100;        /* tuile ambre */
  --rouge-vif:#dc2626; --rouge-clair:#fca5a5; --rouge-pale:#fef2f2; /* Quitter, erreur connexion */
  --ardoise:#94a3b8;      /* pied de l'écran de connexion */
  --flash-ok-fond:#f0f0f0;
  --danger-fond:#f9f0f0; --danger-encre:#8b0000;
  --warn-fond:#faf8f0; --warn-encre:#5a4000; --warn-trait:#a07800;
  --info-fond:#f0f4f8;
  --alerte-fond:#fde8e8; --alerte-bord:#d8a0a0;
  --ok-fond:#e8f5e8; --ok-encre:#2a6a2a; --ok-bord:#b0d8b0;
  --att-fond:#fff3e0; --att-encre:#7a4800; --att-bord:#f0c080;
  --inf-fond:#e0eaff; --inf-encre:#1a3a8a; --inf-bord:#a0bce8;
  --suppr:#c0392b; --suppr-bord:#e8b0a8;
  --requis:#a00;
  --liste-bord:#d0daf0; --liste-champ:#c0c8e0;       /* écran des listes */
  --actif-encre:#1a5a1a; --actif-bord:#90c890;
}

*{box-sizing:border-box;margin:0;padding:0;}
html,body{height:100%;}
body{font-family:'Space Grotesk','Segoe UI',system-ui,sans-serif;background:var(--off);
     display:flex;flex-direction:column;}

/* ── Bandeau & barre supérieure ─────────────────────────────────────── */
.kente-band{height:5px;flex-shrink:0;background:repeating-linear-gradient(90deg,
  var(--noir) 0,var(--noir) 20px,var(--blanc) 20px,var(--blanc) 40px,var(--noir3) 40px,var(--noir3) 60px,
  var(--blanc) 60px,var(--blanc) 80px,var(--noir) 80px,var(--noir) 100px,var(--b400) 100px,var(--b400) 120px);}
.topbar{display:flex;justify-content:space-between;align-items:center;padding:.5rem 1.2rem;
        flex-shrink:0;background:var(--noir);border-bottom:3px solid var(--noir3);}
.topbar-brand{display:flex;align-items:center;gap:.55rem;text-decoration:none;}
.topbar-name{font-size:.88rem;font-weight:800;color:var(--blanc);letter-spacing:.04em;line-height:1.2;}
.topbar-sub{font-size:.58rem;color:rgba(255,255,255,.4);}
.topbar-right{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;}
.topbar-right form{display:inline;}
.topbar-user{font-size:.7rem;color:rgba(255,255,255,.5);}
.btn-top{display:inline-flex;align-items:center;gap:.3rem;background:transparent;color:var(--grisb);
         border:1.5px solid rgba(255,255,255,.2);border-radius:6px;font-size:.7rem;font-weight:700;
         padding:.26rem .6rem;text-decoration:none;transition:all .15s;cursor:pointer;white-space:nowrap;
         font-family:inherit;}
.btn-top:hover{background:var(--blanc);color:var(--noir);border-color:var(--blanc);}
.btn-top.actif{background:var(--noir3);border-color:var(--noir3);color:var(--blanc);}

/* Logo : le poulet SORRA (app/utils/logo.py), mêmes taille et ombre que l'emplacement de YL.1 */
.logo-texte{width:32px;height:32px;flex-shrink:0;display:flex;align-items:center;justify-content:center;
     font-size:.46rem;font-weight:800;letter-spacing:.03em;color:var(--blanc);
     filter:drop-shadow(0 1px 4px rgba(0,0,0,.5));}

/* ── Corps de page & en-tête ────────────────────────────────────────── */
.page-body{flex:1;padding:1.1rem 1.4rem 2rem;overflow-y:auto;}
.page-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:.9rem;
           flex-wrap:wrap;gap:.5rem;}
.page-head-left{display:flex;align-items:center;gap:.6rem;}
.page-icon{width:38px;height:38px;background:var(--noir);border-radius:8px;display:flex;
           align-items:center;justify-content:center;color:var(--blanc);font-size:1.1rem;flex-shrink:0;}
.page-title{font-size:1.05rem;font-weight:900;color:var(--noir);}
.page-sub{font-size:.65rem;color:var(--gris8);font-weight:600;}
.page-actions{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap;}

/* ── Messages flash ─────────────────────────────────────────────────── */
.flash-zone{margin-bottom:.7rem;}
.flash-item{padding:.45rem .8rem;border-radius:7px;font-size:.74rem;font-weight:700;
            margin-bottom:.3rem;display:flex;align-items:center;gap:.5rem;}
.flash-item.success{background:var(--flash-ok-fond);color:var(--noir);border-left:4px solid var(--noir);}
.flash-item.danger {background:var(--danger-fond);color:var(--danger-encre);border-left:4px solid var(--danger-encre);}
.flash-item.warning{background:var(--warn-fond);color:var(--warn-encre);border-left:4px solid var(--warn-trait);}
.flash-item.info   {background:var(--info-fond);color:var(--noir3);border-left:4px solid var(--gris5);}

/* ── Pastilles de statistiques (référence Suivi DI/OT) ──────────────── */
.stat-bar{display:flex;gap:.6rem;flex-wrap:wrap;margin-bottom:.9rem;}
.stat-chip{display:inline-flex;align-items:center;gap:.35rem;padding:.35rem .8rem;
           border-radius:20px;font-size:.67rem;font-weight:800;background:var(--blanc);
           border:1.5px solid var(--bord);color:var(--gris5);text-decoration:none;white-space:nowrap;}
.stat-chip .num{font-size:.9rem;font-weight:900;color:var(--noir);}
a.stat-chip:hover{border-color:var(--noir);color:var(--gris5);}
.stat-chip.ot   .num{color:var(--noir3);}
.stat-chip.ok   .num{color:var(--vert);}
.stat-chip.warn .num{color:var(--ambre);}
.stat-chip.alerte,.stat-chip.stat-chip-alert{background:var(--alerte-fond);color:var(--danger-encre);border-color:var(--alerte-bord);}
.stat-chip.alerte .num,.stat-chip.stat-chip-alert .num{color:var(--danger-encre);}

/* ── Barre de filtres ───────────────────────────────────────────────── */
.filters-bar{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:.9rem;align-items:center;
             padding:.65rem .8rem;background:var(--blanc);border-radius:8px;border:1.5px solid var(--bord);}
.filter-label{font-size:.6rem;font-weight:800;color:var(--gris5);letter-spacing:.06em;
              text-transform:uppercase;white-space:nowrap;}
.filter-sel,.filter-date{padding:.38rem .55rem;border:1.5px solid var(--grisb);border-radius:6px;
     font-family:inherit;font-size:.72rem;color:var(--noir3);background:var(--blanc);
     outline:none;cursor:pointer;transition:border-color .15s;}
.filter-sel:focus,.filter-date:focus{border-color:var(--noir);}
.filter-search{padding:.4rem .75rem;border:1.5px solid var(--bord-champ);border-radius:7px;font-family:inherit;
     font-size:.8rem;outline:none;transition:border-color .15s;background:var(--blanc);color:var(--noir);}
.filter-search:focus{border-color:var(--noir);}
.btn-filter{padding:.38rem .7rem;background:var(--noir);color:var(--blanc);border:none;border-radius:6px;
     font-family:inherit;font-size:.7rem;font-weight:700;cursor:pointer;white-space:nowrap;}
.btn-filter-reset{padding:.38rem .6rem;background:transparent;color:var(--gris5);
     border:1.5px solid var(--grisb);border-radius:6px;font-family:inherit;font-size:.7rem;
     font-weight:700;cursor:pointer;text-decoration:none;}

/* ── Tableaux ───────────────────────────────────────────────────────── */
.table-wrap{background:var(--blanc);border-radius:10px;border:1.5px solid var(--bord);
            box-shadow:0 2px 12px rgba(0,0,0,.06);overflow:hidden;}
.table-scroll{overflow-x:auto;}
.table-wrap table{width:100%;border-collapse:collapse;font-size:.74rem;}
.table-wrap thead tr{background:var(--noir);color:var(--blanc);}
.table-wrap thead th{padding:.6rem .75rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;
     font-size:.6rem;white-space:nowrap;border-right:1px solid rgba(255,255,255,.08);text-align:left;}
.table-wrap thead th:last-child{border-right:none;}
.table-wrap tbody tr{border-bottom:1px solid var(--grise);transition:background .1s;}
.table-wrap tbody tr:last-child{border-bottom:none;}
.table-wrap tbody tr:hover{background:var(--off);}
.table-wrap tbody td{padding:.55rem .75rem;color:var(--noir3);vertical-align:middle;}
.td-num{font-family:'JetBrains Mono',monospace;font-size:.68rem;font-weight:800;color:var(--noir);white-space:nowrap;}
.td-num a{color:var(--noir);text-decoration:none;}
.td-num a:hover{text-decoration:underline;}
.td-wrap{max-width:140px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.tr-click{cursor:pointer;}
.table-vide{text-align:center;padding:2.5rem 1rem;color:var(--grisb);font-size:.8rem;}
.table-vide i{font-size:2rem;display:block;margin-bottom:.5rem;}

/* Tableaux hors conteneur .table-wrap : meme rendu */
table{width:100%;border-collapse:collapse;font-size:.74rem;}
thead tr{background:var(--noir);color:var(--blanc);}
thead th{padding:.6rem .75rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;
     font-size:.6rem;white-space:nowrap;border-right:1px solid rgba(255,255,255,.08);text-align:left;}
thead th:last-child{border-right:none;}
tbody tr{border-bottom:1px solid var(--grise);transition:background .1s;}
tbody tr:last-child{border-bottom:none;}
tbody tr:hover{background:var(--off);}
tbody td{padding:.55rem .75rem;color:var(--noir3);vertical-align:middle;}

/* ── Badges ─────────────────────────────────────────────────────────── */
.badge{display:inline-block;padding:.2rem .5rem;border-radius:5px;font-size:.58rem;font-weight:800;
       letter-spacing:.05em;text-transform:uppercase;white-space:nowrap;}
.badge-neutre{background:var(--flash-ok-fond);color:var(--gris5);}
.badge-ok    {background:var(--ok-fond);color:var(--ok-encre);border:1px solid var(--ok-bord);}
.badge-warn  {background:var(--att-fond);color:var(--att-encre);border:1px solid var(--att-bord);}
.badge-danger{background:var(--alerte-fond);color:var(--danger-encre);border:1px solid var(--alerte-bord);}
.badge-info  {background:var(--inf-fond);color:var(--inf-encre);border:1px solid var(--inf-bord);}
.badge-off   {background:var(--grise);color:var(--grisb);border:1px solid var(--bord);}

/* ── Boutons d'action ───────────────────────────────────────────────── */
.btn-new{display:inline-flex;align-items:center;gap:.4rem;background:var(--noir3);color:var(--blanc);
     border:none;border-radius:8px;font-family:inherit;font-size:.72rem;font-weight:800;
     letter-spacing:.04em;text-transform:uppercase;padding:.45rem .9rem;cursor:pointer;
     transition:background .15s;text-decoration:none;white-space:nowrap;}
.btn-new:hover{background:var(--noir3-survol);color:var(--blanc);}
.btn-ghost{display:inline-flex;align-items:center;gap:.35rem;background:transparent;color:var(--noir3);
     border:1.5px solid var(--noir3);border-radius:8px;font-family:inherit;font-size:.72rem;
     font-weight:800;letter-spacing:.04em;text-transform:uppercase;padding:.45rem .9rem;
     cursor:pointer;transition:all .15s;text-decoration:none;white-space:nowrap;}
.btn-ghost:hover{background:var(--off);color:var(--noir3);}
.btn-edit{background:transparent;border:1.5px solid var(--noir3);color:var(--noir3);border-radius:5px;
     padding:.18rem .45rem;font-size:.62rem;font-weight:800;cursor:pointer;transition:all .12s;
     text-decoration:none;display:inline-flex;align-items:center;gap:.2rem;}
.btn-edit:hover{background:var(--noir3);color:var(--blanc);}
.btn-del{background:transparent;border:1.5px solid var(--suppr-bord);color:var(--suppr);border-radius:5px;
     padding:.18rem .42rem;font-size:.62rem;cursor:pointer;transition:all .12s;}
.btn-del:hover{background:var(--suppr);color:var(--blanc);border-color:var(--suppr);}

/* ── Cartes ─────────────────────────────────────────────────────────── */
.card-p{background:var(--blanc);border-radius:10px;border:1.5px solid var(--bord);
        box-shadow:0 2px 12px rgba(0,0,0,.06);margin-bottom:1rem;overflow:hidden;}
.card-p-head{display:flex;align-items:center;justify-content:space-between;gap:.6rem;
     padding:.65rem 1rem;background:var(--noir);color:var(--blanc);flex-wrap:wrap;}
.card-p-title{font-size:.72rem;font-weight:900;letter-spacing:.06em;text-transform:uppercase;
     display:flex;align-items:center;gap:.5rem;}
.card-p-body{padding:.85rem 1rem 1rem;}
.empty-note{border:1.5px dashed var(--grisb);border-radius:10px;padding:1rem;text-align:center;
     font-size:.73rem;font-weight:600;color:var(--gris8);background:var(--blanc);}

/* ── Formulaires & modales ──────────────────────────────────────────── */
.modal-overlay{position:fixed;inset:0;z-index:1000;background:rgba(0,0,0,.55);display:flex;
     align-items:center;justify-content:center;padding:1rem;}
.modal-overlay[hidden]{display:none!important;}
.modal-box{background:var(--blanc);border-radius:12px;border:2px solid var(--noir);width:100%;
     max-width:720px;box-shadow:0 8px 40px rgba(0,0,0,.35);display:flex;flex-direction:column;
     max-height:92vh;overflow:hidden;}
.modal-box form{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden;}
.modal-head{display:flex;align-items:center;justify-content:space-between;padding:.8rem 1.1rem;
     background:var(--noir);border-radius:10px 10px 0 0;flex-shrink:0;}
.modal-head-title{font-size:.82rem;font-weight:900;color:var(--blanc);letter-spacing:.05em;
     text-transform:uppercase;display:flex;align-items:center;gap:.5rem;}
.modal-close{background:transparent;border:none;color:rgba(255,255,255,.5);font-size:1.2rem;
     cursor:pointer;line-height:1;transition:color .12s;padding:0 .2rem;}
.modal-close:hover{color:var(--blanc);}
.modal-body{padding:1rem 1.2rem;overflow-y:auto;flex:1;min-height:0;}
.modal-footer{padding:.75rem 1.2rem;border-top:1px solid var(--grise);display:flex;
     justify-content:flex-end;gap:.6rem;flex-shrink:0;background:var(--blanc);}
.section-title{font-size:.6rem;font-weight:900;letter-spacing:.1em;text-transform:uppercase;
     color:var(--noir);padding:.2rem 0 .45rem;border-bottom:2px solid var(--noir);margin-bottom:.65rem;}
.section-block{margin-bottom:.9rem;}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:.65rem .9rem;}
.form-grid .span2{grid-column:1/-1;}
.form-group{display:flex;flex-direction:column;gap:.2rem;}
.form-label{font-size:.62rem;font-weight:800;color:var(--noir);letter-spacing:.06em;text-transform:uppercase;}
.form-label .req{color:var(--requis);margin-left:.1rem;}
.form-control{padding:.48rem .7rem;border:1.5px solid var(--bord-champ);border-radius:7px;font-family:inherit;
     font-size:.8rem;color:var(--noir);background:var(--blanc);outline:none;transition:border-color .15s;}
.form-control:focus{border-color:var(--noir);}
textarea.form-control{resize:vertical;min-height:72px;}
select.form-control{cursor:pointer;}
.form-hint{font-size:.58rem;color:var(--gris8);font-style:italic;margin-top:.1rem;}
.btn-annuler{background:transparent;color:var(--gris5);border:1.5px solid var(--grisb);border-radius:7px;
     font-family:inherit;font-size:.73rem;font-weight:700;padding:.48rem 1rem;cursor:pointer;transition:all .12s;}
.btn-annuler:hover{border-color:var(--noir);color:var(--noir);}
.btn-enregistrer{background:var(--noir);color:var(--blanc);border:none;border-radius:7px;
     font-family:inherit;font-size:.73rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase;
     padding:.48rem 1.2rem;cursor:pointer;transition:background .12s;}
.btn-enregistrer:hover{background:var(--noir2);}

.mono{font-family:'JetBrains Mono',monospace;font-weight:900;color:var(--noir);}
[hidden]{display:none!important;}

/* Cases à cocher (provinces, actif) — tailles et couleurs du socle */
.coches{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.3rem .8rem;}
.coche{display:flex;align-items:center;gap:.4rem;font-size:.75rem;font-weight:600;color:var(--noir);cursor:pointer;}
.coche input{accent-color:var(--noir3);}

@media(max-width:600px){
  .filters-bar{flex-direction:column;align-items:flex-start;}
  .form-grid{grid-template-columns:1fr;}
  .form-grid .span2{grid-column:1;}
  .page-body{padding:1rem .8rem 2rem;}
}

/* ══ Listes configurables (repris de l'écran « Listes déroulantes ») ═══ */
.cat-card{background:var(--blanc);border-radius:12px;border:1.5px solid var(--liste-bord);box-shadow:0 2px 10px rgba(12,36,97,.07);margin-bottom:1.2rem;overflow:hidden;}
.cat-head{display:flex;align-items:center;justify-content:space-between;padding:.7rem 1rem;background:var(--noir);color:var(--blanc);}
.cat-title{font-size:.8rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase;display:flex;align-items:center;gap:.5rem;}
.cat-count{font-size:.65rem;background:rgba(255,255,255,.15);border-radius:12px;padding:.15rem .5rem;}
.cat-body{padding:.75rem 1rem 1rem;}
.val-list{list-style:none;margin-bottom:.75rem;}
.val-item{display:flex;align-items:center;gap:.5rem;padding:.38rem .5rem;border-radius:7px;border:1px solid transparent;transition:background .1s;cursor:grab;}
.val-item:hover{background:var(--off);}
.val-item.inactif{opacity:.5;}
.drag-handle{color:var(--grisb);font-size:.9rem;cursor:grab;flex-shrink:0;}
.val-text{flex:1;font-size:.8rem;font-weight:600;color:var(--noir);}
.badge-actif{display:inline-block;padding:.1rem .4rem;border-radius:4px;font-size:.55rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase;}
.badge-actif.on{background:var(--ok-fond);color:var(--actif-encre);border:1px solid var(--actif-bord);}
.badge-actif.off{background:var(--grise);color:var(--gris5);border:1px solid var(--bord-champ);}
.add-row{display:flex;gap:.5rem;align-items:center;margin-top:.5rem;}
.add-input{flex:1;padding:.42rem .7rem;border:1.5px solid var(--liste-champ);border-radius:7px;font-family:inherit;font-size:.8rem;color:var(--noir);background:var(--blanc);outline:none;transition:border-color .15s;}
.add-input:focus{border-color:var(--noir3);}
.btn-add{display:inline-flex;align-items:center;gap:.3rem;background:var(--noir);color:var(--blanc);border:none;border-radius:7px;font-family:inherit;font-size:.72rem;font-weight:800;padding:.42rem .9rem;cursor:pointer;transition:background .12s;white-space:nowrap;}
.btn-add:hover{background:var(--noir2);}
.form-label-sm{font-size:.62rem;font-weight:800;color:var(--noir);letter-spacing:.06em;text-transform:uppercase;display:block;margin-bottom:.25rem;}
.form-control-sm2{width:100%;padding:.45rem .7rem;border:1.5px solid var(--liste-champ);border-radius:7px;font-family:inherit;font-size:.82rem;color:var(--noir);outline:none;transition:border-color .15s;margin-bottom:.75rem;}
.form-control-sm2:focus{border-color:var(--noir3);}
.toggle-row{display:flex;align-items:center;gap:.6rem;margin-bottom:.75rem;}
.toggle-lbl{font-size:.75rem;font-weight:700;color:var(--gris5);}
.btn-save{background:var(--noir);color:var(--blanc);border:none;border-radius:7px;font-family:inherit;font-size:.78rem;font-weight:800;padding:.5rem 1.2rem;cursor:pointer;}
.btn-save:hover{background:var(--noir2);}
.btn-cancel{background:transparent;color:var(--gris5);border:1.5px solid var(--grisb);border-radius:7px;font-family:inherit;font-size:.78rem;font-weight:700;padding:.5rem 1rem;cursor:pointer;}
.btn-cancel:hover{border-color:var(--noir);color:var(--noir);}

/* ══ Accueil (repris de accueil.html de YL.1) ══════════════════════════ */
.page-accueil{display:block;min-height:100%;}
.page-accueil .kente-band{background:repeating-linear-gradient(90deg,
  var(--noir) 0,var(--noir) 20px,var(--blanc) 20px,var(--blanc) 40px,var(--b600) 40px,var(--b600) 60px,
  var(--blanc) 60px,var(--blanc) 80px,var(--noir) 80px,var(--noir) 100px,var(--b300) 100px,var(--b300) 120px);}
.page-accueil .topbar{display:flex;align-items:center;gap:.5rem;padding:.45rem 1.2rem;background:var(--noir);
  position:sticky;top:0;z-index:100;border-bottom:2px solid rgba(255,255,255,.08);justify-content:space-between;}
.page-accueil .topbar-brand{display:flex;align-items:center;gap:.5rem;flex-shrink:0;text-decoration:none;}
.page-accueil .logo-texte{filter:drop-shadow(0 1px 3px rgba(0,0,0,.5));}
.topbar-brand-name{font-size:.85rem;font-weight:800;color:var(--blanc);letter-spacing:.04em;line-height:1.2;}
.topbar-brand-sub{font-size:.56rem;color:rgba(255,255,255,.38);}
.page-accueil .topbar-right{display:flex;align-items:center;gap:.35rem;flex-shrink:0;flex-wrap:nowrap;}
.page-accueil .topbar-user{font-size:.68rem;color:rgba(255,255,255,.45);white-space:nowrap;}
.page-accueil .btn-top{display:inline-flex;align-items:center;gap:.25rem;background:transparent;color:var(--b300);
  border:1.5px solid rgba(255,255,255,.25);border-radius:6px;font-size:.67rem;font-weight:700;padding:.24rem .58rem;
  text-decoration:none;transition:all .14s;white-space:nowrap;}
.page-accueil .btn-top:hover{background:var(--b600);color:var(--blanc);border-color:var(--b600);}
.page-accueil .btn-top.quitter{border-color:rgba(239,68,68,.45);color:var(--rouge-clair);}
.page-accueil .btn-top.quitter:hover{background:var(--rouge-vif);color:var(--blanc);border-color:var(--rouge-vif);}

.greeting-bar{background:var(--blanc);border-bottom:1px solid var(--b100);padding:1rem 1.4rem .85rem;
  display:flex;align-items:flex-end;justify-content:space-between;flex-wrap:wrap;gap:.5rem;}
.greeting-hello{font-size:1.35rem;font-weight:700;color:var(--noir);line-height:1.2;}
.greeting-hello strong{font-weight:800;}
.greeting-role{display:inline-block;margin-top:.35rem;font-size:.65rem;font-weight:700;letter-spacing:.1em;
  text-transform:uppercase;color:var(--noir3);background:var(--b050);padding:.18rem .6rem;border-radius:10px;
  border:1px solid var(--b200);}
.greeting-date{font-size:.68rem;color:var(--b-attenue);font-weight:600;}

.tab-bar{display:flex;gap:0;background:var(--blanc);border-bottom:2px solid var(--b100);padding:0 1.4rem;
  overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;}
.tab-bar::-webkit-scrollbar{display:none;}
.tab-btn{flex:0 0 auto;white-space:nowrap;padding:.65rem 1.1rem;font-family:inherit;font-size:.78rem;font-weight:700;
  letter-spacing:.03em;background:none;border:none;border-bottom:3px solid transparent;margin-bottom:-2px;
  color:var(--b-attenue);cursor:pointer;display:flex;align-items:center;gap:.38rem;transition:color .14s,border-color .14s;}
.tab-btn:hover{color:var(--b600);}
.tab-btn.active{color:var(--noir3);border-bottom-color:var(--b600);}
.tab-btn i{font-size:.85rem;}

.content{padding:1.3rem 1.4rem 2rem;max-width:1100px;margin:0 auto;}
.tab-panel{display:none!important;}
.tab-panel.active{display:flex!important;flex-direction:row;gap:1.2rem;align-items:flex-start;}

.modules-col{flex:1 1 auto;min-width:0;}
.alertes-col{width:300px;flex:0 0 300px;}
.modules-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-bottom:0;}
.module-card{border-radius:12px;padding:1.3rem 1rem 1.15rem;display:flex;flex-direction:column;align-items:center;
  justify-content:center;text-align:center;gap:.45rem;text-decoration:none;color:var(--blanc);min-height:108px;
  position:relative;overflow:hidden;transition:filter .15s,transform .13s,box-shadow .15s;
  box-shadow:0 3px 14px rgba(12,36,97,.18);}
.module-card::before{content:'';position:absolute;inset:0;
  background:linear-gradient(135deg,rgba(255,255,255,.13) 0%,transparent 55%);pointer-events:none;}
.module-card:hover{filter:brightness(1.09);transform:translateY(-3px);box-shadow:0 6px 20px rgba(12,36,97,.28);color:var(--blanc);}
.module-card:active{transform:scale(.98);}
.module-card i{font-size:1.7rem;opacity:.95;}
.mc-title{font-size:.82rem;font-weight:800;letter-spacing:.02em;line-height:1.25;}
.mc-sub{font-size:.62rem;opacity:.72;font-weight:500;}
.mc-navy  {background:linear-gradient(135deg,var(--noir),var(--b-nuit));}
.mc-cobalt{background:linear-gradient(135deg,var(--noir2),var(--noir));}
.mc-royal {background:linear-gradient(135deg,var(--noir3),var(--noir2));}
.mc-blue  {background:linear-gradient(135deg,var(--b600),var(--noir3));}
.mc-sky   {background:linear-gradient(135deg,var(--b500),var(--b600));}
.mc-steel {background:linear-gradient(135deg,var(--b-acier),var(--noir));}
.mc-amber {background:linear-gradient(135deg,var(--ambre-vif),var(--ambre));color:var(--ambre-encre)!important;box-shadow:0 3px 14px rgba(217,119,6,.3);}
.module-card:last-child:nth-child(odd){grid-column:1/-1;max-width:calc(50% - .5rem);margin:0;}

/* Encadré latéral (« Alertes » dans YL.1) : sert ici au périmètre et aux modules à venir */
.alertes-zone{background:var(--blanc);border-radius:12px;border:1.5px solid var(--b100);overflow:hidden;
  box-shadow:0 2px 8px rgba(15,31,61,.07);margin-bottom:1rem;}
.alertes-header{display:flex;align-items:center;justify-content:space-between;padding:.55rem .9rem;
  background:linear-gradient(90deg,var(--noir),var(--noir2));}
.alertes-title{font-size:.62rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;
  color:rgba(255,255,255,.82);display:flex;align-items:center;gap:.35rem;}
.alertes-badge{font-size:.56rem;font-weight:800;background:var(--b500);color:var(--blanc);padding:.1rem .45rem;
  border-radius:10px;line-height:1.5;}
.alertes-list{max-height:420px;overflow-y:auto;}
.alerte-item{display:flex;align-items:flex-start;gap:.5rem;padding:.5rem .9rem;border-bottom:1px solid var(--b100);
  transition:background .1s;}
.alerte-item:last-child{border-bottom:none;}
.alerte-item:hover{background:var(--b050);}
.alerte-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;margin-top:.26rem;}
.alerte-dot.warning{background:var(--b600);box-shadow:0 0 0 3px rgba(26,86,219,.15);}
.alerte-dot.info{background:var(--b300);box-shadow:0 0 0 3px rgba(147,197,253,.2);}
.alerte-body{flex:1;min-width:0;}
.alerte-msg{font-size:.69rem;font-weight:700;color:var(--noir);line-height:1.35;word-break:break-word;}
.alerte-meta{font-size:.57rem;color:var(--b-attenue);margin-top:.1rem;font-weight:600;}
.alertes-vide{text-align:center;padding:.9rem .5rem;font-size:.66rem;color:var(--bord-champ);}
.alertes-vide i{display:block;font-size:1.3rem;margin-bottom:.3rem;}

@media(max-width:760px){
  .tab-panel.active{flex-direction:column;}
  .alertes-col{width:100%;flex:1 1 auto;position:static;}
  .modules-grid{grid-template-columns:1fr 1fr;gap:.6rem;}
  .module-card:last-child:nth-child(odd){grid-column:1/-1;max-width:100%;}
  .content{padding:.9rem 1rem 2rem;}
  .greeting-bar{padding:.8rem 1rem;}
  .tab-bar{padding:0 .5rem;}
  .tab-btn{padding:.6rem .75rem;font-size:.72rem;}
}

/* ══ Connexion (repris de auth/connexion.html de YL.1) ═════════════════ */
.page-connexion{background:linear-gradient(160deg,var(--noir) 0%,var(--b600) 55%,var(--b400) 100%);
  min-height:100vh;margin:0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:1rem;}
.page-connexion .kente-top{position:fixed;top:0;left:0;right:0;height:5px;z-index:9999;
  background:repeating-linear-gradient(90deg,var(--noir) 0,var(--noir) 20px,var(--blanc) 20px,var(--blanc) 40px,
  var(--b600) 40px,var(--b600) 60px,var(--blanc) 60px,var(--blanc) 80px,var(--noir) 80px,var(--noir) 100px,
  var(--b300) 100px,var(--b300) 120px);}
.login-card{width:100%;max-width:380px;background:var(--blanc);border-radius:12px;border-top:4px solid var(--b400);
  box-shadow:0 12px 48px rgba(12,36,97,.35);overflow:hidden;margin-top:8px;}
.login-head{background:var(--noir);border-bottom:3px solid var(--b400);padding:1.6rem 1.75rem 1.3rem;text-align:center;}
.login-head-logo{width:80px;height:80px;margin:0 auto .75rem;display:flex;align-items:center;justify-content:center;
  font-size:1.1rem;font-weight:800;letter-spacing:.05em;color:var(--blanc);filter:drop-shadow(0 2px 8px rgba(0,0,0,.5));}
.login-head h1{font-size:1.15rem;font-weight:800;color:var(--blanc);margin:0 0 3px;letter-spacing:.05em;}
.login-head p{font-size:.73rem;color:rgba(191,219,254,.75);margin:0;}
.login-body{padding:1.5rem 1.75rem 1.75rem;}
.page-connexion .form-label{font-size:.82rem;font-weight:700;color:var(--noir);margin-bottom:5px;}
.page-connexion .form-control{border-radius:8px!important;font-size:.875rem;border-color:var(--b200);padding:9px 12px;}
.page-connexion .form-control:focus{border-color:var(--b600);box-shadow:0 0 0 3px rgba(26,86,219,.15);}
.page-connexion .btn-oeil{border-radius:0;border-color:var(--bord);}
.btn-login{width:100%;padding:10px;border-radius:8px!important;font-family:inherit;font-weight:800;font-size:.9rem;
  letter-spacing:.03em;background:var(--b600);border:none;color:var(--blanc);transition:background .15s;}
.btn-login:hover{background:var(--noir);}
.login-foot{text-align:center;padding:9px;border-top:1px solid var(--b200);font-size:.72rem;color:var(--ardoise);
  background:var(--b050);}
.erreur-box{background:var(--rouge-pale);border-left:3px solid var(--rouge-vif);font-size:.82rem;color:var(--rouge-vif);
  padding:.5rem .75rem;margin-bottom:1rem;border-radius:6px;}

/* ══ Lot 1 — accueil par modules, fermes, formulaires de terrain ═══════ */
/* Onglets « Option » et tuiles pas encore livrées */
.tab-option{font-size:.52rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;
  border:1px solid var(--b200);color:var(--b-attenue);border-radius:8px;padding:.05rem .35rem;}
button.module-card{border:none;font-family:inherit;width:100%;cursor:pointer;}
.module-card.tuile-bientot{opacity:.55;}
.module-card.tuile-bientot:hover{opacity:.7;transform:none;}
.tuile-etiquette{position:absolute;top:.5rem;right:.55rem;font-size:.52rem;font-weight:800;letter-spacing:.06em;
  text-transform:uppercase;background:rgba(255,255,255,.22);color:var(--blanc);border-radius:8px;padding:.1rem .45rem;}
.mc-amber .tuile-etiquette{background:rgba(26,17,0,.15);color:var(--ambre-encre);}
.tuile-phrase{margin-top:1rem;padding:.65rem .9rem;border-radius:10px;background:var(--blanc);
  border:1.5px dashed var(--b200);font-size:.78rem;font-weight:600;color:var(--noir);}
.alertes-vide i{color:var(--vert);}

/* Accueil de l'éleveur : « Ma ferme » */
.ma-ferme-zone{max-width:520px;margin:0 auto;display:flex;flex-direction:column;gap:1rem;}
.ma-ferme{background:var(--blanc);border-radius:14px;border:1.5px solid var(--b100);padding:1.1rem 1.1rem 1.2rem;
  box-shadow:0 3px 14px rgba(12,36,97,.08);}
.ma-ferme-tete{display:flex;justify-content:space-between;align-items:flex-start;gap:.6rem;}
.ma-ferme-titre{font-size:.62rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--b-attenue);}
.ma-ferme-nom{font-size:1.25rem;font-weight:800;color:var(--noir);line-height:1.2;}
.ma-ferme-num{font-family:'JetBrains Mono',monospace;font-size:.8rem;font-weight:700;color:var(--noir3);}
.ma-ferme-chiffres{display:flex;gap:1.4rem;margin:1rem 0;font-size:.85rem;font-weight:600;color:var(--gris5);}
.ma-ferme-chiffres .num{display:block;font-size:1.6rem;font-weight:800;color:var(--noir);line-height:1.1;}
.ma-ferme-agent{display:flex;gap:.6rem;align-items:flex-start;font-size:.85rem;color:var(--noir);
  background:var(--b050);border-radius:10px;padding:.65rem .8rem;margin-bottom:.9rem;}
.ma-ferme-agent i{font-size:1.3rem;color:var(--noir3);}

/* Gros bouton pleine largeur (téléphone, une main) */
.btn-gros{display:flex;align-items:center;justify-content:center;gap:.5rem;width:100%;min-height:52px;
  background:var(--noir3);color:var(--blanc);border:none;border-radius:12px;font-family:inherit;
  font-size:1rem;font-weight:800;letter-spacing:.02em;text-decoration:none;cursor:pointer;transition:background .15s;}
.btn-gros:hover{background:var(--noir3-survol);color:var(--blanc);}

/* Formulaires de terrain : champs empilés pleine largeur */
.form-terrain{max-width:560px;display:flex;flex-direction:column;gap:.85rem;}
.form-terrain .form-control{font-size:.95rem;padding:.65rem .8rem;min-height:46px;}
.form-terrain .form-label{font-size:.66rem;}
.champ-fixe{padding:.65rem .8rem;border:1.5px dashed var(--bord-champ);border-radius:7px;font-weight:700;color:var(--noir);background:var(--off);}
.note-numero{text-align:center;font-size:.72rem;color:var(--gris8);font-style:italic;margin-top:-.3rem;}
.bloc-gps{border:1.5px solid var(--b200);border-radius:12px;padding:.85rem;background:var(--b050);display:flex;flex-direction:column;gap:.55rem;}
.btn-gps{display:flex;align-items:center;justify-content:center;gap:.5rem;width:100%;min-height:52px;background:var(--blanc);
  color:var(--noir3);border:2px solid var(--noir3);border-radius:12px;font-family:inherit;font-size:.95rem;font-weight:800;cursor:pointer;}
.btn-gps:disabled{opacity:.6;}
.gps-ok{background:var(--ok-fond);border:1px solid var(--ok-bord);color:var(--ok-encre);border-radius:9px;padding:.55rem .7rem;font-size:.82rem;font-weight:700;}
.gps-message{background:var(--att-fond);border:1px solid var(--att-bord);color:var(--att-encre);border-radius:9px;padding:.55rem .7rem;font-size:.8rem;font-weight:600;}
.lien-discret-inline{font-size:.75rem;color:var(--noir3);font-weight:700;align-self:flex-start;}
.question-localite{background:var(--att-fond);border:1.5px solid var(--att-bord);border-radius:12px;padding:.8rem .9rem;}
.question-titre{font-size:.9rem;font-weight:800;color:var(--att-encre);margin-bottom:.6rem;}
.question-choix{display:flex;flex-direction:column;gap:.5rem;}
.question-choix .btn-ghost{justify-content:center;min-height:46px;background:var(--blanc);}

/* Fiche ferme */
.fiche-lignes{display:grid;grid-template-columns:max-content 1fr;gap:.45rem .9rem;margin:0;font-size:.8rem;}
.fiche-lignes dt{font-size:.6rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--gris8);padding-top:.15rem;}
.fiche-lignes dd{margin:0;color:var(--noir);font-weight:600;}
.fiche-lignes a{color:var(--noir3);}
.position-zone{display:flex;gap:1rem;align-items:center;flex-wrap:wrap;}
.carte-province{width:220px;max-width:100%;height:auto;flex-shrink:0;}
.carte-province path{fill:var(--b050);stroke:var(--noir3);stroke-width:1.2;stroke-linejoin:round;}
.carte-epingle path{fill:var(--noir3);stroke:var(--blanc);stroke-width:1.2;}
.carte-epingle circle{fill:var(--blanc);}
.carte-epingle.hors path{fill:var(--ambre);}
.position-texte{flex:1;min-width:180px;display:flex;flex-direction:column;gap:.35rem;font-size:.8rem;}
.position-ok{color:var(--vert);font-weight:700;}
.position-alerte{background:var(--att-fond);border:1px solid var(--att-bord);color:var(--att-encre);border-radius:8px;padding:.5rem .65rem;font-weight:600;}
.td-sous{font-size:.66rem;color:var(--gris8);font-weight:600;}
.ligne-inactive td{opacity:.55;}
tfoot .ligne-total td{font-weight:800;color:var(--noir);border-top:2px solid var(--noir);padding:.55rem .75rem;}
.historique{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.45rem;font-size:.8rem;}
.historique-date{font-family:'JetBrains Mono',monospace;font-weight:700;color:var(--noir);margin-right:.4rem;}
.lien-discret{margin-top:.8rem;text-align:right;font-size:.72rem;}
.lien-discret a{color:var(--gris8);text-decoration:none;font-weight:600;}
.lien-discret a:hover{color:var(--noir3);text-decoration:underline;}
.texte-aide{font-size:.8rem;color:var(--gris5);}
.import-erreur{font-size:.72rem;color:var(--danger-encre);font-weight:600;margin-top:.2rem;}
.import-avert{font-size:.72rem;color:var(--gris5);margin-top:.2rem;}
.import-avert.fort{color:var(--att-encre);font-weight:700;}
.page-title .badge{vertical-align:middle;margin-left:.3rem;}

@media(max-width:600px){
  .fiche-lignes{grid-template-columns:1fr;gap:.1rem;}
  .fiche-lignes dd{margin-bottom:.45rem;}
  .carte-province{width:100%;}
}

/* ══ Lot 2 — intrants : confirmation de réception, compteurs, stock ════ */
.carte-livraison{background:var(--blanc);border-radius:14px;border:2px solid var(--att-bord);padding:1rem 1.05rem 1.1rem;
  box-shadow:0 3px 14px rgba(12,36,97,.08);display:flex;flex-direction:column;gap:.7rem;}
.carte-livraison-titre{font-size:.72rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--att-encre);
  display:flex;align-items:center;gap:.4rem;}
.carte-livraison-meta{font-size:.78rem;color:var(--gris5);font-weight:600;}
.carte-livraison form{display:flex;flex-direction:column;gap:.7rem;}
.carte-livraison-lignes{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.35rem;font-size:.95rem;color:var(--noir);}
.carte-livraison-lignes .num{font-size:1.25rem;font-weight:800;}
.btn-gros-secondaire{display:flex;align-items:center;justify-content:center;gap:.5rem;width:100%;min-height:52px;
  background:var(--blanc);color:var(--noir3);border:2px solid var(--noir3);border-radius:12px;font-family:inherit;
  font-size:1rem;font-weight:800;text-decoration:none;}
.btn-gros-secondaire:hover{background:var(--off);color:var(--noir3);}

/* Gros compteur « − valeur + » */
.compteur{display:flex;flex-direction:column;gap:.35rem;}
.compteur-libelle{font-size:.66rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--noir);}
.compteur-boutons{display:flex;align-items:stretch;gap:.5rem;}
.compteur-moins,.compteur-plus{width:56px;min-height:52px;border-radius:12px;border:2px solid var(--noir3);background:var(--blanc);
  color:var(--noir3);font-size:1.6rem;font-weight:800;line-height:1;cursor:pointer;}
.compteur-moins:active,.compteur-plus:active{background:var(--off);}
.compteur-valeur{flex:1;min-width:0;text-align:center;font-family:inherit;font-size:1.4rem;font-weight:800;color:var(--noir);
  border:1.5px solid var(--bord-champ);border-radius:12px;}

.carte-ligne{border:1.5px solid var(--b200);border-radius:12px;padding:.8rem;background:var(--b050);display:flex;flex-direction:column;gap:.6rem;}
.carte-ligne-titre{font-size:.92rem;font-weight:800;color:var(--noir);}

/* Filet de sécurité « Reçue ✓ — Annuler » */
.bandeau-annuler{display:flex;align-items:center;justify-content:space-between;gap:.6rem;padding:.75rem .9rem;border-radius:12px;
  background:var(--ok-fond);border:1.5px solid var(--ok-bord);color:var(--ok-encre);font-weight:800;margin-bottom:1rem;}
.bandeau-annuler form{margin:0;}
.bandeau-annuler-btn{background:var(--blanc);border:2px solid var(--ok-encre);color:var(--ok-encre);border-radius:10px;
  font-family:inherit;font-weight:800;padding:.45rem .8rem;cursor:pointer;min-height:44px;}

.encadre-confirmation{background:var(--ok-fond);border:1px solid var(--ok-bord);color:var(--ok-encre);border-radius:9px;
  padding:.55rem .8rem;font-size:.8rem;font-weight:600;margin-bottom:.9rem;}
.ecart{color:var(--danger-encre);font-weight:800;}
a.alerte-lien{text-decoration:none;}
.alerte-dot.urgence{background:var(--noir);box-shadow:0 0 0 3px rgba(12,36,97,.2);}

/* ══ Lot 3 — bandes : « Ma bande aujourd'hui », feu, fiche, courbe ══════ */
.feu{display:inline-block;width:46px;height:46px;border-radius:50%;flex-shrink:0;border:3px solid var(--blanc);
  box-shadow:0 0 0 2px var(--bord);}
.feu-petit{width:16px;height:16px;border-width:2px;}
.feu.feu-vert{background:var(--vert);}
.feu.feu-orange{background:var(--ambre);}
.feu.feu-rouge{background:var(--rouge);}
.feu.feu-gris{background:var(--grisb);}
.bloc-bande{background:var(--blanc);border-radius:14px;border:2px solid var(--b100);padding:1rem 1.05rem 1.1rem;
  box-shadow:0 3px 14px rgba(12,36,97,.08);display:flex;flex-direction:column;gap:.75rem;}
.bloc-bande.feu-orange{border-color:var(--att-bord);}
.bloc-bande.feu-rouge{border-color:var(--alerte-bord);}
.bloc-bande-tete{display:flex;gap:.85rem;align-items:center;}
.bloc-jour{font-size:.72rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--b-attenue);}
.bloc-phrase{font-size:1.1rem;font-weight:800;color:var(--noir);line-height:1.25;}
.bloc-presents{font-size:.85rem;color:var(--gris5);font-weight:600;}
.bloc-presents .num{font-size:1.2rem;font-weight:800;color:var(--noir);}
.encadre-rouge{background:var(--alerte-fond);border:1.5px solid var(--alerte-bord);color:var(--danger-encre);
  border-radius:10px;padding:.6rem .75rem;font-size:.88rem;}
.btn-gros-rouge{display:flex;align-items:center;justify-content:center;gap:.5rem;width:100%;min-height:52px;border:none;
  border-radius:12px;background:var(--rouge);color:var(--blanc);font-family:inherit;font-size:1rem;font-weight:800;cursor:pointer;}
.a-faire{background:var(--att-fond);border:1.5px solid var(--att-bord);border-radius:10px;padding:.6rem .8rem;color:var(--att-encre);}
.a-faire-titre{font-size:.68rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;margin-bottom:.25rem;}
.a-faire ul{margin:0;padding-left:1.1rem;font-size:.88rem;font-weight:600;}
.form-saisie{display:flex;flex-direction:column;gap:.7rem;}
.boutons-secondaires{display:grid;grid-template-columns:1fr 1fr;gap:.6rem;}
.historique-saisies{list-style:none;margin:0;padding:0;font-size:.82rem;color:var(--gris5);display:flex;flex-direction:column;gap:.2rem;}
.coche-envoye{color:var(--vert);font-weight:800;margin-left:.3rem;font-size:.75rem;}
.encouragement{background:var(--b050);border-radius:10px;padding:.55rem .75rem;font-size:.85rem;font-weight:700;color:var(--noir3);}
.encouragement i{color:var(--ambre);}
.carte-poussins{border-color:var(--ok-bord);}
.carte-poussins .carte-livraison-titre{color:var(--ok-encre);}

/* Grosses cases de choix (bâtiment, motif de sortie, aliment) */
.choix-cases{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:.55rem;}
.choix-petits{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));}
.case-choix{position:relative;cursor:pointer;}
.case-choix input{position:absolute;opacity:0;}
.case-choix span{display:block;text-align:center;padding:.75rem .5rem;border:2px solid var(--bord-champ);border-radius:12px;
  background:var(--blanc);font-size:.85rem;color:var(--noir);min-height:64px;}
.case-choix span i{font-size:1.3rem;color:var(--noir3);}
.case-choix input:checked + span{border-color:var(--noir3);background:var(--b050);box-shadow:0 0 0 2px var(--b200);}
.case-choix.indisponible span{opacity:.5;cursor:not-allowed;}
.carte-choix-livraison{display:flex;gap:.7rem;align-items:center;border:2px solid var(--ok-bord);background:var(--ok-fond);
  border-radius:12px;padding:.75rem;cursor:pointer;}
.carte-choix-livraison input{width:22px;height:22px;accent-color:var(--noir3);}
.carte-choix-livraison > span{display:flex;flex-direction:column;}
.ccl-titre{font-size:.75rem;font-weight:800;color:var(--ok-encre);}
.ccl-nombre .num{font-size:1.4rem;font-weight:800;color:var(--noir);}
.champ-gros{font-size:1.4rem!important;font-weight:800;text-align:center;}

/* Fiche bande (ordinateur) */
.bandeau-feu{display:flex;align-items:center;gap:.6rem;padding:.5rem .8rem;border-radius:10px;background:var(--blanc);
  border:1.5px solid var(--bord);font-weight:800;color:var(--noir);margin-bottom:.9rem;}
.bandeau-feu .feu{width:22px;height:22px;}
.cartes-chiffres{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.8rem;margin-bottom:1rem;}
.carte-chiffre{background:var(--blanc);border:1.5px solid var(--bord);border-radius:10px;padding:.75rem .9rem;}
.cc-libelle{font-size:.6rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--gris8);}
.cc-valeur{font-size:1.5rem;font-weight:800;color:var(--noir);line-height:1.2;}
.cc-sous{font-size:.7rem;color:var(--gris5);font-weight:600;}
.courbe{width:100%;height:auto;}
.courbe-grille{stroke:var(--grise);stroke-width:1;}
.courbe-texte{font-size:9px;fill:var(--gris8);font-family:inherit;}
.courbe-attendue{fill:none;stroke:var(--b300);stroke-width:2;stroke-dasharray:5 4;}
.courbe-reelle{fill:none;stroke:var(--noir);stroke-width:2.5;}
.courbe-point{fill:var(--noir);}
.legende{font-size:.7rem;color:var(--gris5);display:flex;align-items:center;gap:.4rem;flex-wrap:wrap;}
.legende-reelle,.legende-attendue{display:inline-block;width:18px;height:0;border-top:3px solid var(--noir);}
.legende-attendue{border-top:3px dashed var(--b300);margin-left:.6rem;}

/* ══ Lot 4 — santé animale : photos, pictogrammes, message vocal ═══════ */
.liens-discrets{display:flex;gap:1rem;flex-wrap:wrap;font-size:.78rem;font-weight:700;}
.liens-discrets a{color:var(--noir3);}
a.btn-gros-rouge{text-decoration:none;}
a.btn-gros-rouge:hover{color:var(--blanc);filter:brightness(1.08);}
.photos-zone{display:flex;flex-direction:column;gap:.5rem;}
.photos-vignettes{display:flex;gap:.5rem;flex-wrap:wrap;}
.photos-vignettes img{width:96px;height:96px;object-fit:cover;border-radius:10px;border:2px solid var(--b200);cursor:pointer;}
.pictos .case-choix span{min-height:92px;font-weight:700;}
.pictos .case-choix span i{font-size:2rem;display:block;margin-bottom:.2rem;}
.pictos .case-choix input:checked + span{border-color:var(--rouge);background:var(--alerte-fond);}
.btn-gros-secondaire.enregistre{border-color:var(--rouge);color:var(--rouge);}
.pictos-lecture{display:flex;flex-wrap:wrap;gap:.4rem;}
.picto-lu{display:inline-flex;align-items:center;gap:.3rem;padding:.3rem .6rem;border-radius:20px;background:var(--alerte-fond);
  border:1px solid var(--alerte-bord);color:var(--danger-encre);font-size:.78rem;font-weight:700;}
.photos-lecture{display:flex;gap:.6rem;flex-wrap:wrap;margin-top:.6rem;}
.photos-lecture img{width:180px;height:140px;object-fit:cover;border-radius:10px;border:1.5px solid var(--bord);}

/* ══ Lot 5 — pilotage : barres, carte des fermes ═════════════════════ */
.barre-ligne{display:grid;grid-template-columns:minmax(90px,30%) 1fr auto;align-items:center;gap:.6rem;padding:.3rem 0;font-size:.78rem;}
.barre-libelle{font-weight:700;color:var(--noir);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.barre-ligne .barre{display:block;height:14px;border-radius:7px;background:var(--noir3);min-width:2px;justify-self:start;}
.barre-ligne .barre.barre-claire{background:var(--b300);}
.barre-valeur{font-weight:800;color:var(--noir);white-space:nowrap;}
.carte-fermes{width:100%;max-width:720px;height:auto;display:block;margin:0 auto;}
.carte-province-gabon path{fill:var(--b050);stroke:var(--noir3);stroke-width:1.2;stroke-linejoin:round;}
.point-ferme{stroke:var(--blanc);stroke-width:2.5;cursor:pointer;}
.point-ferme.point-vert{fill:var(--vert);}
.point-ferme.point-orange{fill:var(--ambre);}
.point-ferme.point-rouge{fill:var(--rouge);}
.point-ferme.point-gris{fill:var(--grisb);}
.mono-champ{font-family:ui-monospace,Consolas,monospace;}

/* ══ Lot 6 — traçabilité : QR code, page publique ════════════════════ */
.qr-ecran svg{width:220px;max-width:100%;height:auto;display:inline-block;}
.public-lignes{grid-template-columns:1fr;gap:.1rem;font-size:.95rem;}
.public-lignes dd{margin-bottom:.6rem;}
.public-mention{margin-top:.8rem;padding:.6rem .8rem;border-radius:9px;background:var(--off);color:var(--gris5);font-size:.8rem;}

/* ══ Lot 7 — hors connexion : bandeau ◷ / ✓ ══════════════════════════ */
.bandeau-envoi{border-radius:10px;padding:.6rem .85rem;margin-bottom:.8rem;font-size:.82rem;}
.bandeau-envoi.attente{background:var(--att-fond);border:1px solid var(--att-bord);color:var(--noir);}
.bandeau-envoi.fait{background:var(--ok-fond);border:1px solid var(--ok-bord);color:var(--ok-encre);font-weight:700;}
.bandeau-envoi ul{list-style:none;margin:.35rem 0 0;padding:0;}
.bandeau-envoi li{padding:.1rem 0;display:flex;justify-content:space-between;gap:.5rem;align-items:baseline;}
.bandeau-sous{display:block;font-size:.74rem;color:var(--gris5);margin-top:.15rem;}
.coche-attente{display:inline-block;min-width:1.1rem;white-space:nowrap;text-align:center;font-weight:800;}
.ligne-vue td{opacity:.55;}

/* ══ Logo SORRA : le poulet (app/utils/logo.py) ══════════════════════ */
.logo-poulet{width:100%;height:100%;display:block;overflow:visible;}
.logo-corps{fill:var(--blanc);}
.logo-crete{fill:var(--rouge-vif);}
.logo-bec{fill:var(--ambre-vif);}
.logo-oeil{fill:var(--noir);}
.logo-aile{fill:var(--b200);}
.logo-pattes{stroke:var(--ambre-vif);stroke-width:2.6;stroke-linecap:round;}

/* ── Entretien (lot 10) : écran de l'agent pour l'éleveur ; l'éleveur a eleveur.css ─ */
.entretien{max-width:640px;}
.carte-panne{background:var(--alerte-fond);border:1px solid var(--alerte-bord);border-radius:10px;padding:.8rem;margin-bottom:.7rem;}
.panne-titre{font-weight:800;}
.carte-sous{color:var(--gris5);font-size:.85rem;margin-bottom:.5rem;}
.tache-entretien{display:flex;align-items:center;gap:.6rem;background:var(--blanc);border:1px solid var(--bord);
  border-radius:10px;padding:.6rem .8rem;margin-bottom:.5rem;}
.tache-entretien form{margin:0;}
.tache-ico{font-size:1.5rem;line-height:1;flex-shrink:0;}
.tache-texte{flex:1;min-width:0;}
.tache-texte small{display:block;color:var(--gris5);}
.tache-retard{display:inline-block;background:var(--att-fond);color:var(--att-encre);border:1px solid var(--att-bord);
  border-radius:999px;padding:0 .5rem;font-size:.75rem;font-weight:700;}
.tache-bouton{border:0;border-radius:8px;padding:.5rem .8rem;font-weight:700;color:var(--blanc);background:var(--vert);min-height:40px;white-space:nowrap;}
.tache-entretien.faite{opacity:.6;}
.tache-fait{font-weight:700;color:var(--vert);white-space:nowrap;}
.btn-panne{display:block;text-align:center;background:var(--alerte-fond);color:var(--rouge);border:1px solid var(--alerte-bord);
  border-radius:10px;padding:.8rem;font-weight:800;text-decoration:none;margin-top:.5rem;}
i.picto-panne{font-style:normal;font-size:2rem;display:block;}
.types-panne{grid-template-columns:repeat(3,1fr);}
.case-large{grid-column:1 / -1;}
.avertissement-desinfection{background:var(--warn-fond);border:1px solid var(--warn-trait);border-radius:10px;padding:.7rem .9rem;margin-bottom:.8rem;}
.avertissement-desinfection span{display:block;color:var(--gris5);}

/* ── Argent (lot 11) : « J'ai payé » saisi par l'agent pour l'éleveur ─ */
.categories-depense{grid-template-columns:repeat(4,1fr);}

/* ── Saisies à vérifier (lot 12) : deux versions côte à côte ─────────── */
.versions{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:.7rem;}
.version{border:1px solid var(--bord);border-radius:10px;padding:.8rem;}
.version-comptee{border-color:var(--ok-bord);background:var(--ok-fond);}
.version-qui{font-weight:800;}
.version-valeur{font-size:1.15rem;font-weight:800;margin:.3rem 0;}
.verif-rouge{border:2px solid var(--rouge);}
.cases-rapides{display:flex;flex-wrap:wrap;gap:.5rem;flex-basis:100%;margin-top:.3rem;}
.case-rapide{flex:1;min-height:42px;border:1px solid var(--bord-champ);background:var(--blanc);border-radius:8px;font-weight:700;padding:.4rem .6rem;}
.case-rapide.choisie{border-color:var(--vert);background:var(--ok-fond);color:var(--ok-encre);}
.message-vide{background:var(--warn-fond);border:1px solid var(--warn-trait);border-radius:8px;padding:.5rem .8rem;font-weight:700;margin-bottom:.6rem;}
.a-verifier{display:inline-block;background:var(--warn-fond);color:var(--warn-encre);border-radius:999px;padding:0 .5rem;font-weight:700;font-size:.8rem;}
.choix-conseils,.choix-recommandations{display:flex;flex-direction:column;gap:.3rem;}
.reponse-veto{background:var(--ok-fond);border-radius:8px;padding:.5rem .7rem;}

/* ── Accueil du pilotage (lot 15) : compteurs sur les tuiles, périmètre, 2FA ─ */
.module-card{position:relative;}
.tuile-compteur{position:absolute;top:.5rem;right:.5rem;min-width:1.6rem;padding:.1rem .45rem;border-radius:999px;
  background:var(--rouge-vif);color:var(--blanc);font-weight:800;font-size:.8rem;text-align:center;}
.greeting-perimetre{font-size:.8rem;font-weight:700;color:var(--b-attenue);margin-left:.3rem;}
.qr-2fa img{width:200px;height:200px;display:block;margin:.5rem 0;background:var(--blanc);}
.codes-secours{display:grid;grid-template-columns:repeat(2,1fr);gap:.4rem;margin-top:.8rem;}
.codes-secours code{font-size:1.05rem;padding:.4rem;border:1px solid var(--bord);border-radius:6px;text-align:center;}
.etapes-2fa li{margin-bottom:.6rem;}


/* Lot 16 — agent : mot de passe provisoire, nouvelle commande, score de biosécurité chez l'éleveur */
.mdp-provisoire{font-size:1.4rem;letter-spacing:.08em;}
.form-commande{display:flex;flex-wrap:wrap;gap:.5rem;align-items:flex-end;}
.form-commande .form-control{flex:1 1 200px;min-width:0;}
.score-bio{font-weight:800;font-size:1.1rem;margin:.35rem 0;}
.score-bio.score-rouge{color:var(--danger-encre);}
.score-bio.score-orange{color:var(--att-encre);}
.score-bio.score-vert{color:var(--ok-encre);}

/* Lot 17 — vétérinaire : sorties bloquées */
.ligne-verif{padding:.5rem 0;border-bottom:1px solid var(--bord);}
.ligne-verif:last-child{border-bottom:0;}
.blocage-sorties{display:flex;flex-direction:column;gap:.4rem;}

/* Nouvel éleveur sans réseau : identifiant et mot de passe préparés sur le téléphone */
.carte-provisoire{border:1.5px dashed var(--att-bord);background:var(--att-fond);border-radius:10px;padding:.75rem;margin-bottom:1rem;}

/* Démonstration publique (YL2_DEMO=1) : bandeau sur toutes les pages */
.bandeau-demo{position:sticky;top:0;z-index:2000;background:var(--att-encre);color:var(--blanc);text-align:center;
  font-weight:800;font-size:.8rem;letter-spacing:.06em;padding:.3rem .5rem;}
