/* === REPRODUCTION (P1) === */

/* En-tête des cartes (titre + bouton d'ajout / intro). */
.brd-list-head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 0.75rem; margin-bottom: 1rem; }
.brd-list-head h2 { margin: 0; }
.brd-add-btn { flex: 0 0 auto; }

/* Select thémé (statut, parent) : uniforme dark/light, pas de style natif. */
.brd-select {
  background: var(--bg-secondary); border: 1px solid var(--border); border-radius: var(--radius-sm);
  padding: 0.5rem 0.7rem; color: var(--text-primary); font: inherit; font-size: 0.92rem; cursor: pointer;
}
.brd-select:focus { outline: none; border-color: var(--accent); }
.dlg-field > .brd-select { width: 100%; }

/* Badge de génération (F0, F1...) : pastille discrète, partagée liste + arbre. */
.brd-gen {
  flex: 0 0 auto; padding: 0.05rem 0.45rem; border-radius: var(--radius-pill);
  background: var(--accent-muted); color: var(--accent); font-size: 0.7rem; font-weight: 700;
  line-height: 1.5; letter-spacing: 0.02em;
}

/* --- Liste des portées : structure fixe 2 lignes (robuste aux noms longs sur mobile) --- */
.brd-list { display: flex; flex-direction: column; }
.brd-row { display: flex; align-items: flex-start; gap: 0.6rem; padding: 0.65rem 0; border-top: 1px solid var(--header-border); }
.brd-row:first-child { border-top: none; }
.brd-dot { width: 10px; height: 10px; border-radius: 50%; flex: 0 0 auto; margin-top: 0.45rem; }
.brd-body { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 0.2rem; }
.brd-line1 { display: flex; align-items: baseline; flex-wrap: wrap; gap: 0.4rem 0.55rem; min-width: 0; }
.brd-name { font-weight: 600; min-width: 0; overflow-wrap: anywhere; }
.brd-sci { color: var(--text-secondary); font-size: 0.85rem; font-style: italic; min-width: 0; overflow-wrap: anywhere; }
/* Badge de statut : contour coloré (couleur portée par style inline), fond neutre. */
.brd-badge {
  flex: 0 0 auto; padding: 0.05rem 0.5rem; border: 1px solid currentColor; border-radius: var(--radius-pill);
  font-size: 0.7rem; font-weight: 600; line-height: 1.5; white-space: nowrap;
}
.brd-sub { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.2rem 0.6rem; color: var(--text-secondary); font-size: 0.85rem; }
.brd-morph { color: var(--text-primary); }
.brd-count { color: var(--text-secondary); }
.brd-note { color: var(--text-primary); min-width: 0; overflow-wrap: anywhere; }
.brd-acts { flex: 0 0 auto; display: inline-flex; gap: 0.4rem; align-items: flex-start; }

/* --- Arbre généalogique : listes imbriquées, filet de lignée à gauche --- */
.brd-tree { margin-top: 0.35rem; }
.brd-troot, .brd-tchildren { list-style: none; margin: 0; padding: 0; }
/* Enfants indentés + filet vertical (propriétés logiques : miroir correct en RTL). */
.brd-tchildren { margin-inline-start: 0.55rem; padding-inline-start: 0.85rem; border-inline-start: 1px solid var(--border); }
.brd-tnode { position: relative; }
.brd-tnode-row { display: flex; align-items: center; flex-wrap: wrap; gap: 0.4rem 0.55rem; padding: 0.4rem 0; min-width: 0; }
.brd-tnode-name { font-weight: 600; min-width: 0; overflow-wrap: anywhere; }
.brd-tnode-sci { color: var(--text-secondary); font-size: 0.85rem; font-style: italic; }
.brd-tnode-morph { color: var(--text-secondary); font-size: 0.85rem; }
.brd-tdot { width: 9px; height: 9px; border-radius: 50%; flex: 0 0 auto; }

/* --- Picker d'espèce (mini, dans le dialog) : input + liste de résultats flottante --- */
.brd-sp-pick { position: relative; }
.brd-sp-field { display: flex; align-items: stretch; gap: 0.4rem; }
.brd-sp-field .dlg-input { flex: 1 1 auto; min-width: 0; }
/* Bouton effacer (retour saisie libre) : discret, aligné sur l'input. */
.brd-sp-clear {
  flex: 0 0 auto; width: 2.4rem; border: 1px solid var(--border); border-radius: var(--radius-sm);
  background: var(--bg-secondary); color: var(--text-secondary); cursor: pointer; font-size: 1rem; line-height: 1;
}
.brd-sp-clear:hover { color: var(--bad); border-color: var(--bad); }
/* Liste de résultats : superposée, scrollable, ne pousse pas les champs sous elle. */
.brd-sp-results {
  position: absolute; z-index: 20; inset-inline: 0; top: calc(100% + 0.25rem);
  max-height: 15rem; overflow-y: auto; background: var(--bg-card); border: 1px solid var(--border);
  border-radius: var(--radius-sm); box-shadow: var(--shadow-card); padding: 0.25rem;
}
.brd-sp-opt {
  display: flex; flex-direction: column; gap: 0.05rem; width: 100%; min-width: 0; text-align: start;
  padding: 0.45rem 0.55rem; border: none; border-radius: var(--radius-xs); background: transparent;
  color: var(--text-primary); cursor: pointer; font: inherit;
}
.brd-sp-opt:hover { background: var(--accent-muted); }
.brd-sp-name { font-size: 0.92rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.brd-sp-sci { color: var(--text-secondary); font-size: 0.78rem; font-style: italic; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.brd-sp-hint { color: var(--text-secondary); font-size: 0.72rem; margin-top: 0.3rem; }

/* Œufs / alevins : deux champs compacts côte à côte. */
.brd-counts { display: grid; grid-template-columns: 1fr 1fr; gap: 0.75rem; }
