/* === Plan de bataille, les cinq étapes : le texte qui s’écrit en place, la carte de la cible et ses outils,
   l’escouade, le cadre commun des étapes, les états du plan, le briefing, les sacs, l’équipe en liste et le
   déroulé.
   Vient du découpage de tools.css (21 oct. 2026), qui faisait 9 464 lignes à lui seul. Les tranches se chargent
   dans l’ordre d’avant, aucun style n’a changé d’effet. === */

/* ═══ Le texte qui s'écrit en place (les bulles et le résumé de la carte du plan) : pas de case. ═══ */
.pl-say {
  min-width: 6ch;
  max-width: 100%;
  margin: 0 2px;
  padding: 0 2px 1px;
  border: 0;
  border-bottom: 1px dashed rgba(var(--gold-rgb), 0.45);
  background: transparent;
  color: var(--cream);
  font: inherit;
  font-weight: 500;
  field-sizing: content;
  vertical-align: baseline;
  outline: none;
  transition: border-color 0.15s, background-color 0.15s;
}
.pl-say::placeholder {
  color: rgba(214, 205, 189, 0.45);
  font-style: italic;
  font-weight: 400;
}
.pl-say:hover {
  border-bottom-color: var(--gold);
  background: rgba(var(--gold-rgb), 0.05);
}
.pl-say:focus {
  border-bottom: 1px solid var(--gold);
  background: rgba(var(--gold-rgb), 0.08);
}
.pl-say.is-strong {
  color: var(--value-strong);
  font-weight: 700;
}
.pl-say.is-grid {
  width: 5ch;
  text-transform: uppercase;
}
.pl-say.is-long {
  display: inline-block;
  width: min(100%, 60ch);
  min-height: 1.7em;
  overflow: hidden;
  resize: none;
  vertical-align: top;
}
/* ═══ La carte du plan (étape « La cible », maquette C, 6 oct.) : la carte du wipe en grand, les outils à gauche, les
   bulles qu'on écrit sur place, le résumé à droite. Pas de colonne à côté de l'étape. ═══ */

.pl-board {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 320px;
  min-height: 640px;
  border: 1px solid rgba(var(--gold-rgb), 0.3);
}
.pl-board__stage {
  position: relative;
  min-width: 0;
  min-height: 640px;
}
.pl-board__map {
  position: absolute;
  inset: 0;
  overflow: hidden;
  background: #0b1a22;
  cursor: grab;
  touch-action: none;
  user-select: none;
}
.pl-board:not([data-tool="move"]) .pl-board__map {
  cursor: crosshair;
}
.pl-board__map.is-dragging {
  cursor: grabbing;
}
.pl-board__plane {
  position: absolute;
  top: 0;
  left: 0;
  transform-origin: 0 0;
  will-change: transform;
}
.pl-board__plane.is-smooth {
  transition: transform 0.35s ease;
}
.tools-panel .pl-board__img,
.pl-board__svg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}
.tools-panel .pl-board__img {
  object-fit: fill;
  pointer-events: none;
}
.pl-board__svg {
  overflow: visible;
  pointer-events: none;
}
.pl-board__grid line {
  stroke: rgba(var(--shadow-rgb), 0.22);
  stroke-width: 1;
  vector-effect: non-scaling-stroke;
}
.pl-board__route {
  fill: none;
  stroke: var(--value-strong);
  stroke-width: 3;
  stroke-dasharray: 8 6;
  vector-effect: non-scaling-stroke;
  filter: drop-shadow(0 0 2px #000);
}
/* Le nom de chaque case, comme en jeu : gris foncé, discret, dans le coin haut gauche ; un quart de la case, jamais
   moins de 8 px à l'écran (calc avec --inv, 1 / zoom) */
.pl-board__labels span {
  position: absolute;
  margin: 0.25em 0 0 0.35em;
  color: rgba(16, 18, 14, 0.55);
  font: 500 min(max(calc(var(--cell) * 0.2), calc(8px * var(--inv, 1))), calc(13px * var(--inv, 1))) / 1 "Roboto Condensed", sans-serif;
  letter-spacing: 0.02em;
  pointer-events: none;
}
/* Ce qui est posé : à taille fixe quel que soit le zoom (scale inverse) */
.pl-board__thing {
  position: absolute;
  width: 0;
  height: 0;
  transform: scale(var(--inv, 1));
}
.pl-board__pin {
  position: absolute;
  left: -16px;
  top: -16px;
  display: grid;
  place-items: center;
  width: 32px;
  height: 32px;
  border: 3px solid #fff;
  border-radius: 50%;
  background: #d0644e;
  color: #fff;
  font: 800 13px "Roboto Condensed", sans-serif;
  box-shadow: 0 0 0 5px rgba(var(--shadow-rgb), 0.25), 0 4px 10px #000a;
}
button.pl-board__pin {
  padding: 0;
  cursor: pointer;
}
.pl-board__thing:hover {
  z-index: 2;
}
.pl-board__thing.is-open {
  z-index: 3;
}
/* Repliée : une étiquette d'une ligne à côté du repère ; un clic la rouvre */
.pl-board__tag {
  position: absolute;
  left: 22px;
  top: -12px;
  max-width: 190px;
  overflow: hidden;
  padding: 3px 9px;
  border: 0;
  border-left: 3px solid var(--gold);
  background: rgba(24, 20, 15, 0.9);
  color: var(--cream);
  font: 700 0.82rem "Roboto Condensed", sans-serif;
  text-overflow: ellipsis;
  white-space: nowrap;
  box-shadow: 0 3px 8px #0008;
  cursor: pointer;
}
.pl-board__tag:hover {
  background: rgba(40, 32, 22, 0.96);
}
.pl-board__tag.is-target { border-left-color: #d0644e; }
.pl-board__tag.is-start { border-left-color: #6f9f57; }
.pl-board__tag.is-danger { border-left-color: #e0912f; }
.pl-board__tag.is-note { border-left-color: #cfc5b1; }
.pl-board__pin.is-start {
  background: #6f9f57;
}
.pl-board__pin.is-danger {
  background: #e0912f;
}
.pl-board__pin.is-note {
  background: #cfc5b1;
  color: var(--honey-ink);
}
.pl-board__bubble {
  position: absolute;
  left: 24px;
  top: -20px;
  display: grid;
  gap: 4px;
  width: 250px;
  padding: 10px 12px;
  border: 1px solid var(--gold);
  border-left: 3px solid var(--gold);
  background: rgba(24, 20, 15, 0.94);
  box-shadow: 0 10px 24px #000b;
  cursor: auto;
}
.pl-board__bubble.is-target {
  width: 280px;
  border-color: #d0644e;
}
.pl-board__bubble.is-start {
  width: 220px;
  border-color: #6f9f57;
}
.pl-board__bubble.is-danger {
  border-color: #e0912f;
}
.pl-board__bubble.is-note {
  border-color: #cfc5b1;
}
.pl-board__bubble small {
  display: flex;
  align-items: center;
  justify-content: space-between;
  color: var(--gold);
  font: 800 0.8rem "Roboto Condensed", sans-serif;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}
.pl-board__bubble.is-target small {
  color: var(--state-target);
}
.pl-board__bubble.is-start small {
  color: var(--state-ok);
}
.pl-board__bubble .pl-say {
  width: 100%;
  margin: 0;
  font-size: 0.92rem;
}
.pl-board__bubble .pl-say[data-pl-field="target:group"] {
  color: var(--cream);
  font: 700 1.15rem "Roboto Condensed", sans-serif;
}
.tools-panel .pl-board__bubble img {
  display: block;
  width: 100%;
  height: auto;
  margin-top: 4px;
  border: 1px solid rgba(var(--sheen-rgb), 0.1);
}
.pl-board__x {
  padding: 0 2px;
  border: 0;
  background: none;
  color: var(--text-soft);
  cursor: pointer;
}
.pl-board__x:hover {
  color: #e2705c;
}
/* Les outils, le conseil, le zoom : par-dessus la carte */
.pl-board__tools {
  position: absolute;
  top: 12px;
  left: 12px;
  z-index: 5;
  display: grid;
  gap: 6px;
}
.pl-board__tools button {
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 150px;
  padding: 10px 14px;
  border: 1px solid rgba(var(--gold-rgb), 0.3);
  background: rgba(24, 20, 15, 0.92);
  color: var(--cream);
  font: 700 0.92rem "Roboto Condensed", sans-serif;
  text-align: left;
  cursor: pointer;
}
.pl-board__tools button:hover {
  border-color: var(--gold);
}
.pl-board__tools button.is-on {
  border-color: var(--value-strong);
  background: rgba(var(--gold-rgb), 0.28);
}
.pl-board__tools .is-target i { color: var(--state-target); }
.pl-board__tools .is-start i { color: var(--state-ok); }
.pl-board__tools .is-danger i { color: #e0912f; }
.pl-board__tools .is-note i { color: #cfc5b1; }
.pl-board__hint {
  position: absolute;
  bottom: 12px;
  left: 12px;
  right: 60px;
  z-index: 5;
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0;
  padding: 9px 14px;
  border-left: 3px solid var(--gold);
  background: rgba(24, 20, 15, 0.9);
  color: var(--text);
  font-size: 0.88rem;
  pointer-events: none;
}
.pl-board__hint i {
  color: var(--gold);
}
.pl-board__zoom {
  position: absolute;
  right: 10px;
  bottom: 10px;
  z-index: 5;
  display: grid;
  gap: 4px;
}
.pl-board__zoom .pl-icon {
  display: grid;
  place-items: center;
  width: 34px;
  height: 34px;
  border: 1px solid rgba(var(--gold-rgb), 0.35);
  background: rgba(20, 16, 12, 0.92);
  color: var(--cream);
  cursor: pointer;
}
.pl-board__wait {
  display: grid;
  place-content: center;
  justify-items: center;
  gap: 12px;
  height: 100%;
  min-height: 640px;
  padding: 24px;
  color: var(--text-soft);
  text-align: center;
}
.pl-board__wait > .fa-solid {
  color: var(--gold);
  font-size: 2rem;
}
.pl-board__wait p {
  margin: 0;
}
.pl-board__byhand {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 8px 18px;
  font-size: 1.2rem;
}
/* Le résumé, à droite */
.pl-board__side {
  display: grid;
  align-content: start;
  gap: 12px;
  padding: 18px;
  border-left: 1px solid rgba(var(--gold-rgb), 0.25);
  background: linear-gradient(180deg, #1c1813, #141110);
}
.pl-board__side h3 {
  margin: 0;
  color: var(--cream);
  font: 700 1.15rem "Roboto Condensed", sans-serif;
}
.pl-board__list {
  display: grid;
  gap: 4px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.pl-board__list li > * {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  padding: 7px 8px;
  border: 1px solid transparent;
  background: none;
  color: var(--text-soft);
  font: 500 0.92rem Roboto, sans-serif;
  text-align: left;
}
.pl-board__list li.is-done > * {
  color: var(--cream);
}
.pl-board__list button {
  cursor: pointer;
}
.pl-board__list button:hover {
  border-color: rgba(var(--gold-rgb), 0.4);
}
.pl-board__list i {
  width: 18px;
  text-align: center;
}
.pl-board__list .fa-crosshairs { color: var(--state-target); }
.pl-board__list .fa-flag { color: var(--state-ok); }
.pl-board__list .fa-route { color: var(--value-strong); }
.pl-board__list .fa-triangle-exclamation { color: #e0912f; }
.pl-board__list .fa-note-sticky { color: #cfc5b1; }
.pl-board__cover .pl-cover {
  min-height: 150px;
}
@media (max-width: 1100px) {
  .pl-board {
    grid-template-columns: minmax(0, 1fr);
  }
  .pl-board__side {
    border-top: 1px solid rgba(var(--gold-rgb), 0.25);
    border-left: 0;
  }
}
@media (max-width: 640px) {
  .pl-board__stage,
  .pl-board {
    min-height: 520px;
  }
  .pl-board__tools {
    right: 12px;
    display: flex;
    overflow-x: auto;
  }
  .pl-board__tools button {
    flex: none;
    min-width: 0;
    padding: 8px 10px;
  }
  .pl-board__tools button span {
    display: none;
  }
  .pl-board__hint {
    font-size: 0.8rem;
  }
  .pl-board__bubble,
  .pl-board__bubble.is-target,
  .pl-board__bubble.is-start {
    left: -110px;
    top: 26px;
    width: 220px;
  }
  .pl-board[data-tool="move"] .pl-board__hint {
    display: none;
  }
}

/* ═══ L'escouade (étape « L'équipe », 7 oct.) : le rendez-vous en une phrase, une carte par rôle où l'on glisse les
   joueurs (des jetons), le banc des sans-rôle ; un clic sur un jeton ouvre sa bulle. Pas de colonne à côté. ═══ */

.pl-say[type="date"],
.pl-say[type="time"] {
  color-scheme: dark;
}

/* À côté : le trajet posé sur la carte */

.pl-flowside__line {
  margin: 0;
  color: var(--cream);
  font: 600 0.95rem "Roboto Condensed", sans-serif;
}

/* ═══ Le cadre commun des cinq étapes (7 oct.), pris sur la carte de l'étape 1 : l'espace de travail à gauche, le
   résumé à droite (pl-board__side), une ligne de conseil en bas. Plus de colonne à part dans le parcours. ═══ */
.pl-wiz {
  grid-template-columns: minmax(0, 1fr);
  grid-template-areas: "rail" "main" "notes" "foot";
}
.pl-wiz .pl-wiz__main {
  margin: 14px 14px 0;
  padding: 0;
  border-top: 0;
  background: none;
}
.pl-frame {
  min-height: 0;
}
.pl-frame__main {
  display: grid;
  grid-template-rows: auto;
  align-content: start;
  gap: 16px;
  min-width: 0;
  padding: 20px 22px;
}
.pl-frame__title {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 8px 16px;
  margin: 0;
  color: var(--cream);
  font: 700 1.15rem "Roboto Condensed", sans-serif;
}
.pl-frame__muted {
  margin: 0;
  color: var(--text-soft);
  font-size: 0.9rem;
}
/* Le résumé : les lignes à icône en miel, faites en vert, à surveiller en orange */
.pl-frame .pl-board__list i {
  color: var(--gold);
}
.pl-frame .pl-board__list li.is-done i {
  color: #8fb07a;
}
.pl-frame .pl-board__list li.is-warn > * {
  color: var(--state-wait);
}
.pl-frame .pl-board__list li.is-warn i {
  color: var(--state-wait);
}
.pl-board__side .pl-iam {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 0;
  border: 0;
  background: none;
  color: var(--text-soft);
  font-size: 0.88rem;
}
.pl-board__side .pl-iam select {
  flex: 1;
}

/* L'escouade : une ligne par rôle (le rôle à gauche, ses joueurs à droite), séparées d'un trait ; pas de cadres */

.pl-roster__add {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 6px 4px;
  border: 0;
  background: none;
  color: var(--gold);
  font: 600 0.88rem Roboto, sans-serif;
  cursor: pointer;
}

.pl-roster__add:hover {
  opacity: 1;
  text-decoration: underline;
}
/* Le déroulé : à droite le trajet écrit et le lien vers la carte */
.pl-flowside__line {
  margin: 0;
  color: var(--cream);
  font: 600 0.95rem "Roboto Condensed", sans-serif;
}

/* Les sacs : les filtres en onglets de texte (le choisi en miel, souligné), pas une rangée de boutons encadrés ; un
   sac par joueur, sans bordure dorée */
.pl-frame .pl-filters {
  display: flex;
  flex-wrap: wrap;
  gap: 2px 14px;
}
.pl-frame .pl-filters button {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 0;
  border: 0;
  border-bottom: 2px solid transparent;
  background: none;
  color: var(--text-soft);
  font: 600 0.9rem Roboto, sans-serif;
  cursor: pointer;
}
.pl-frame .pl-filters button:hover {
  color: var(--cream);
}
.pl-frame .pl-filters button.is-on {
  border-bottom-color: var(--gold);
  color: var(--gold);
}

.pl-sidebtns {
  display: grid;
  justify-items: start;
  gap: 4px;
}

/* Petits écrans : le cadre des étapes, moins de marge */
@media (max-width: 640px) {
  .pl-frame__main {
    padding: 16px 14px;
  }
  
}

/* ═══ Les états du plan (7 oct.) : sous le nom, en une ligne, la présence de l'équipe, ses sacs, puis le plan (complet,
   ses points à régler, validé). Trois états séparés, les mêmes partout. ═══ */
.pl-steptabs__pending {
  color: var(--state-wait);
}

/* ═══ Le briefing (7 oct.) : quand et où, la stratégie, ma mission ; à droite ce qui bloque et le trajet. Des sections
   séparées par l'espace et des traits fins, pas de cadres. ═══ */
.pl-head .pl-iam {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 0;
  border: 0;
  background: none;
  color: var(--text-soft);
  font: 600 0.9rem Roboto, sans-serif;
}
.pl-head .pl-iam select {
  min-width: 150px;
  border-color: rgba(var(--gold-rgb), 0.55);
  color: var(--gold);
  font-weight: 700;
}

/* ═══ Les sacs (7 oct.) : les joueurs en onglets (leur état, leurs objets prêts), le sac choisi en lignes lisibles ;
   à droite ce que toute l'équipe doit emporter, et à part ce qu'il faut fabriquer avant. ═══ */

.pl-bagsel {
  display: grid;
  gap: 10px;
}
.pl-bagsel__head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 12px;
}
.pl-bagsel__head > i {
  color: var(--c);
}
.pl-bagsel__head > span {
  display: grid;
  flex: 1;
}
.pl-bagsel__head b {
  color: var(--cream);
  font: 700 1.1rem "Roboto Condensed", sans-serif;
}
.pl-bagsel__head small {
  color: var(--text-soft);
  font-size: 0.82rem;
}
.pl-bagsel__head .pl-state {
  padding: 0;
  border: 0;
  background: none;
  font: 600 0.92rem Roboto, sans-serif;
  cursor: pointer;
}
.pl-bagsel__out {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 12px;
  margin: 0;
  color: var(--text-soft);
}
.pl-baglines {
  display: grid;
  margin: 0;
  padding: 0;
  list-style: none;
}
.pl-baglines li {
  display: grid;
  grid-template-columns: 26px 32px minmax(0, 1fr) 90px 26px;
  align-items: center;
  gap: 10px;
  padding: 6px 4px;
  border-bottom: 1px solid rgba(var(--sheen-rgb), 0.05);
}
.pl-baglines li:hover {
  background: rgba(var(--sheen-rgb), 0.025);
}
.tools-panel .pl-baglines img {
  width: 32px;
  height: 32px;
}
.pl-baglines__name {
  overflow: hidden;
  color: var(--cream);
  font-weight: 500;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.pl-baglines li.is-done .pl-baglines__name {
  color: #b9d6a8;
}
.pl-baglines .pl-in.is-qty {
  width: 100%;
  padding: 4px 8px;
  text-align: right;
}
.pl-check {
  padding: 0;
  border: 0;
  background: none;
  color: var(--text-soft);
  font-size: 1.15rem;
  cursor: pointer;
}
.pl-check:hover {
  color: var(--cream);
}
.pl-check.is-on {
  color: #8fb07a;
}
.pl-bagsel.is-out .pl-baglines {
  opacity: 0.7;
}
/* À emporter pour toute l'équipe : ce qui manque d'abord, qui le porte */
.pl-needs {
  display: grid;
  margin: 0;
  padding: 0;
  list-style: none;
}
.pl-needs li {
  display: grid;
  grid-template-columns: 28px minmax(0, 1fr) auto;
  align-items: center;
  gap: 4px 10px;
  padding: 7px 0;
  border-bottom: 1px solid rgba(var(--sheen-rgb), 0.06);
}
.tools-panel .pl-needs img {
  width: 28px;
  height: 28px;
}
.pl-needs__name {
  display: grid;
  min-width: 0;
}
.pl-needs__name b {
  overflow: hidden;
  color: var(--cream);
  font-weight: 600;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.pl-needs__name small {
  color: var(--text-soft);
  font-size: 0.8rem;
}
.pl-needs em {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 0.82rem;
  font-style: normal;
  white-space: nowrap;
}
.pl-needs .is-ok em {
  color: var(--state-ok);
}
.pl-needs .is-missing em {
  color: var(--state-wait);
}
.pl-needs__edit {
  display: flex;
  grid-column: 2 / -1;
  align-items: center;
  gap: 6px;
}
.pl-needs__edit .pl-in.is-qty {
  width: 90px;
  padding: 3px 8px;
}
@media (max-width: 640px) {
  .pl-baglines li {
    grid-template-columns: 26px 28px minmax(0, 1fr) 70px 22px;
    gap: 6px;
  }
}

/* ═══ L'équipe en liste compacte (7 oct.) : joueur · rôle · présence en toutes lettres · sac · menu ; des traits fins,
   pas de cadres ; ma ligne éclairée. ═══ */
.pl-team {
  display: grid;
}
.pl-team__head,
.pl-team__row {
  display: grid;
  grid-template-columns: minmax(160px, 1.3fr) minmax(130px, 0.9fr) minmax(250px, 1.4fr) minmax(120px, 0.8fr) 36px;
  align-items: center;
  gap: 12px;
  padding: 8px 6px;
}
.pl-team__head {
  color: var(--text-soft);
  font: 700 0.8rem "Roboto Condensed", sans-serif;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}
.pl-team__row {
  border-top: 1px solid rgba(var(--sheen-rgb), 0.06);
}
.pl-team__row:last-child {
  border-bottom: 1px solid rgba(var(--sheen-rgb), 0.06);
}
.pl-team__row.is-me {
  background: rgba(var(--gold-rgb), 0.06);
  box-shadow: inset 3px 0 0 var(--gold);
}
.pl-team__row.is-no .pl-team__who {
  opacity: 0.6;
}
.pl-team__who {
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
}
.pl-team__who .pl-say.is-name {
  flex: 1;
  min-width: 0;
  color: var(--cream);
  font: 700 1rem "Roboto Condensed", sans-serif;
  border-bottom-color: transparent;
}
.pl-team__row:hover .pl-say.is-name,
.pl-team__who .pl-say.is-name:focus {
  border-bottom-color: rgba(var(--gold-rgb), 0.45);
}
.pl-team__me {
  color: var(--gold);
  font: 700 0.8rem "Roboto Condensed", sans-serif;
  font-style: normal;
  text-transform: uppercase;
}
.pl-team__role {
  width: 100%;
  padding: 5px 8px;
  border-left: 3px solid var(--c);
}
/* La présence : trois choix en toutes lettres, le choisi à sa couleur */
.pl-team__bag {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 0;
  border: 0;
  background: none;
  font: 600 0.85rem Roboto, sans-serif;
  cursor: pointer;
}
.pl-team__bag small {
  color: var(--text-soft);
  font-weight: 500;
}
.pl-team__bag:hover {
  text-decoration: underline;
}
.pl-team__bag.is-ready {
  color: var(--state-ok);
}
.pl-team__bag.is-todo {
  color: var(--state-wait);
}
.pl-team__bag.is-out {
  color: var(--text-soft);
}
.pl-team__end {
  justify-self: end;
}
.pl-team__row .pl-steamrow {
  grid-column: 1 / -1;
}
@media (max-width: 1100px) {
  .pl-team__head {
    display: none;
  }
  .pl-team__row {
    grid-template-columns: minmax(0, 1fr) 36px;
    gap: 8px;
  }
  .pl-team__row > div:nth-child(2),
  .pl-team__row > div:nth-child(3),
  .pl-team__row > div:nth-child(4) {
    grid-column: 1 / -1;
  }
  .pl-team__end {
    grid-column: 2;
    grid-row: 1;
  }
}

/* ═══ Le déroulé allégé (7 oct.) : une ligne = l'heure, l'action, les personnes concernées ; le détail au clic ; l'étape
   clé en miel ; le repli dans un encadré orange, à droite. ═══ */
.pl-tl__remove {
  justify-self: start;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 0;
  border: 0;
  background: none;
  color: var(--text-soft);
  font: 500 0.82rem Roboto, sans-serif;
  cursor: pointer;
}
.pl-tl__remove:hover {
  color: #e2705c;
}

/* ═══ La carte de l'étape 1 (7 oct.) : une petite barre d'icônes en haut à gauche, le mode actif dit en clair ; la
   consigne seulement pendant qu'on pose, avec « Annuler ». ═══ */
.pl-board .pl-board__tools {
  display: flex;
  align-items: center;
  gap: 2px;
  padding: 3px;
  background: rgba(20, 16, 12, 0.92);
  box-shadow: 0 4px 12px #0008;
}
.pl-board .pl-board__tools button {
  display: grid;
  place-items: center;
  width: 36px;
  min-width: 0;
  height: 36px;
  padding: 0;
  border: 1px solid transparent;
  background: none;
}
.pl-board .pl-board__tools button:hover {
  border-color: rgba(var(--gold-rgb), 0.45);
}
.pl-board .pl-board__tools button.is-on {
  border-color: var(--value-strong);
  background: rgba(var(--gold-rgb), 0.25);
}
.pl-board__hint {
  pointer-events: auto;
}
.pl-board__hint span {
  flex: 1;
}
.pl-board__cancel {
  padding: 3px 10px;
  border: 1px solid rgba(var(--gold-rgb), 0.5);
  background: none;
  color: var(--cream);
  font: 600 0.82rem Roboto, sans-serif;
  cursor: pointer;
}
.pl-board__cancel:hover {
  border-color: var(--gold);
}

/* L'objectif, à droite de la carte (d'après la maquette) : la cible, la stratégie en gras, la capture, l'entrée, les
   dangers ; les observations repliées. */
.pl-obj__facts {
  display: grid;
  gap: 2px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.pl-obj__facts li,
.pl-obj__facts li > button {
  display: grid;
  grid-template-columns: 18px 70px minmax(0, 1fr);
  align-items: baseline;
  gap: 10px;
  padding: 6px 0;
}
.pl-obj__facts li.is-danger {
  padding: 0;
}
.pl-obj__facts li > button {
  width: 100%;
  border: 0;
  background: none;
  color: var(--cream);
  font: 400 0.9rem Roboto, sans-serif;
  text-align: left;
  cursor: pointer;
}
.pl-obj__facts i {
  color: var(--gold);
}
.pl-obj__facts .is-danger i {
  color: #e0912f;
}
.pl-obj__label {
  color: var(--cream);
  font: 700 0.88rem "Roboto Condensed", sans-serif;
}
.pl-obj__facts .pl-say {
  width: 100%;
  font-size: 0.9rem;
}
.pl-obj__more {
  border-top: 1px solid rgba(var(--sheen-rgb), 0.07);
}
.pl-obj__more > summary {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 0 6px;
  color: var(--cream);
  font: 700 0.95rem "Roboto Condensed", sans-serif;
  list-style: none;
  cursor: pointer;
}
.pl-obj__more > summary::-webkit-details-marker {
  display: none;
}
.pl-obj__more > summary i {
  color: var(--gold);
  transition: transform 0.15s;
}
.pl-obj__more[open] > summary i {
  transform: rotate(180deg);
}
.pl-obj__facts li.is-danger {
  display: block;
}

