/* styles/components/error-flash.css — extrait de styles.css L581-L659. .err-flash + toast + board-shake. */
}
/* ===== Error flash — subtil mais lisible ================================= */
.board-node.error-flash{
  animation:
    err-shake 0.35s cubic-bezier(.36,.07,.19,.97) both,
    err-glow  0.9s ease-out both !important;
  z-index: 30 !important;
}
@keyframes err-shake{
  0%,100%{ transform:translate(-50%,-50%); }
  20%    { transform:translate(calc(-50% - 3px), -50%); }
  40%    { transform:translate(calc(-50% + 3px), -50%); }
  60%    { transform:translate(calc(-50% - 2px), -50%); }
  80%    { transform:translate(calc(-50% + 2px), -50%); }
}
@keyframes err-glow{
  0%   { box-shadow: 0 0 0 0 rgba(255,90,90,0),   0 0 0 0 rgba(255,90,90,0); }
  30%  { box-shadow: 0 0 18px 2px rgba(255,90,90,.55), 0 0 0 2px rgba(255,90,90,.8); }
  100% { box-shadow: 0 0 0 0 rgba(255,90,90,0),   0 0 0 0 rgba(255,90,90,0); }
}

/* Petit tooltip d'erreur au-dessus OU en dessous du node */
.err-tooltip{
  position:absolute;
  z-index:40;
  padding:5px 12px;
  background:rgba(20,20,20,.96);
  border:1px solid rgba(255,90,90,.7);
  border-radius:6px;
  font-family:var(--mono);
  font-size:10px;
  font-weight:500;
  letter-spacing:.02em;
  color:#ffb8b8;
  white-space:nowrap;
  pointer-events:none;
  opacity:0;
  transform:translate(-50%, 0) scale(.9);
  transition:opacity .18s ease, transform .18s ease;
  box-shadow:0 4px 14px rgba(0,0,0,.35), 0 0 12px -4px rgba(255,90,90,.6);
}
.err-tooltip.show{
  opacity:1;
  transform:translate(-50%, 0) scale(1);
}
.err-tooltip::after{
  content:"";
  position:absolute;
  left:50%;
  width:0; height:0;
  border:5px solid transparent;
}
.err-tooltip.below::after{
  top:-10px; transform:translateX(-50%);
  border-bottom-color:rgba(255,90,90,.7);
}
.err-tooltip.above::after{
  bottom:-10px; transform:translateX(-50%);
  border-top-color:rgba(255,90,90,.7);
}

/* Global board shake (erreurs sans target — champs vides) */
.board.shake{
  animation: board-shake .4s cubic-bezier(.36,.07,.19,.97);
}
@keyframes board-shake{
  0%,100%{ transform:translateX(0); }
  20%    { transform:translateX(-6px); }
  40%    { transform:translateX(6px); }
  60%    { transform:translateX(-3px); }
  80%    { transform:translateX(3px); }
}

/* Toast désactivé — feedback d'erreur = nodes qui clignotent in-board */
.toast{ display:none !important; }
.toast.show{
  transform:translateX(-50%) translateY(0);
  opacity:1;
}
