/* Cartes de confirmation des écritures (human-in-the-loop) et leur
   réécriture avant validation. Sorties d'app.css avec l'éditeur de cartes :
   le cliquet statique veut qu'une fonctionnalité neuve « paie » sa place en
   découpant, pas en gonflant le monolithe. */
  /* --- Actions d'écriture en attente de confirmation humaine. --- */
  .pending-actions {
    margin-top: 0.7rem;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
  }
  .pending-card {
    border: 1px solid var(--accent);
    border-radius: 14px;
    background: var(--accent-soft);
    padding: 0.7rem 0.9rem;
    box-shadow: var(--shadow);
  }
  .pending-card .pa-title {
    font-size: 0.85rem;
    font-weight: 650;
    margin-bottom: 0.3rem;
  }
  .pending-card pre {
    background: var(--code-bg);
    border-radius: 8px;
    padding: 0.35rem 0.55rem;
    font: 0.72rem/1.5 ui-monospace, "SF Mono", Menlo, Consolas, monospace;
    white-space: pre-wrap;
    overflow-wrap: anywhere;
    max-height: 9rem;
    overflow-y: auto;
    margin-bottom: 0.5rem;
  }
  /* Écran de décision : champs traduits, lisibles — le JSON brut reste
     accessible mais replié (débogage). */
  .pending-card .pa-fields {
    margin: 0 0 0.5rem;
    font-size: 0.88rem;
    display: grid;
    grid-template-columns: max-content 1fr;
    gap: 0.2rem 0.7rem;
    max-height: 45vh;
    max-height: 45dvh;
    overflow-y: auto;
  }
  .pending-card .pa-fields dt { color: var(--muted); font-weight: 650; }
  .pending-card .pa-fields dd {
    margin: 0;
    overflow-wrap: anywhere;
    white-space: pre-wrap;
  }
  .pending-card .pa-fields details summary {
    cursor: pointer;
    color: var(--muted);
  }
  .pending-card .pa-raw { margin-bottom: 0.5rem; }
  .pending-card .pa-raw summary {
    cursor: pointer;
    color: var(--muted);
    font-size: 0.75rem;
  }
  .pending-card .pa-raw pre { margin-top: 0.3rem; margin-bottom: 0; }
  .pending-card .pa-buttons { display: flex; gap: 0.5rem; }
  .pending-card button {
    font: inherit;
    font-size: 0.82rem;
    font-weight: 600;
    border: none;
    border-radius: 9px;
    padding: 0.35rem 0.9rem;
    cursor: pointer;
  }
  .pending-card button:disabled { opacity: 0.45; cursor: default; }
  .pending-card .pa-confirm { background: var(--accent); color: var(--surface); }
  .pending-card .pa-cancel { background: var(--surface); color: var(--text); border: 1px solid var(--border); }
  /* Réécriture d'une carte : le formulaire prend la place de la vue, dans la
     carte, sans quitter la conversation. */
  .pending-card .pa-edit { display: grid; gap: 0.45rem; margin-bottom: 0.5rem; }
  .pending-card .pa-edit-field { display: grid; gap: 0.15rem; font-size: 0.78rem; }
  .pending-card .pa-edit-field span { color: var(--muted); font-weight: 650; }
  .pending-card .pa-edit-field input[type="checkbox"] {
    justify-self: start;
    width: 22px;
    height: 22px;
  }
  .pending-card .pa-edit-field input,
  .pending-card .pa-edit-field textarea {
    /* 16px minimum : en dessous, iOS zoome à la prise de focus. */
    font: inherit;
    font-size: 16px;
    min-height: 44px;
    padding: 0.35rem 0.55rem;
    border-radius: 9px;
    border: 1px solid var(--border);
    background: var(--surface);
    color: var(--text);
    width: 100%;
    box-sizing: border-box;
  }
  .pending-card .pa-edit-field textarea { resize: vertical; }
  .pending-card .pa-edit-actions { display: flex; gap: 0.5rem; flex-wrap: wrap; }
  .pending-card .pa-edit-error:not(:empty) {
    color: var(--error);
    font-size: 0.8rem;
    font-weight: 600;
    white-space: pre-wrap;
  }
  .pending-card .pa-edit-open { background: var(--surface); color: var(--text); border: 1px solid var(--border); }
  .pending-card .pa-outcome { font-size: 0.8rem; }
  .pending-card .pa-outcome.ok { color: var(--accent); }
  .pending-card .pa-outcome.ko { color: var(--error); font-weight: 600; font-size: 0.9rem; }
  /* Échec du rejeu : la carte entière crie, pas seulement la ligne d'issue. */
  .pending-card.failed { border-color: var(--error); background: var(--error-bg); }
