.picto {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: .4em;
}

/* Pastille de couleur, même taille que les SVG */
.picto__pastille {
  display: block;
  box-sizing: border-box;
  width: 20px;
  height: 20px;
  border: 1px solid rgb(0 0 0 / .25);
  border-radius: 50%;
  background: var(--pastille);
}

@media (forced-colors: active) {
  .picto__pastille {
    border: 2px solid CanvasText;
    forced-color-adjust: none;
  }
}

/* Infobulle : masquée visuellement mais toujours lue par les lecteurs d'écran */
.picto--has-icon .picto__label {
  position: absolute;
  bottom: calc(100% + 8px);
  left: 50%;
  transform: translate(-50%, 4px);
  padding: .3em .6em;
  border-radius: 4px;
  background: #2b3a2e;
  color: #fff;
  font-size: .8rem;
  line-height: 1.2;
  white-space: nowrap;
  pointer-events: none;
  opacity: 0;
  transition: opacity .15s, transform .15s;
  z-index: 10;
}

/* Petite flèche */
.picto--has-icon .picto__label::after {
  content: "";
  position: absolute;
  top: 100%;
  left: 50%;
  transform: translateX(-50%);
  border: 5px solid transparent;
  border-top-color: #2b3a2e;
}

/* Affichage au survol, au focus clavier et au tap mobile */
.picto--has-icon:hover .picto__label,
.picto--has-icon:focus .picto__label,
.picto--has-icon:focus-within .picto__label {
  opacity: 1;
  transform: translate(-50%, 0);
}

.picto--has-icon:focus-visible {
  outline: 2px solid currentColor;
  outline-offset: 3px;
  border-radius: 4px;
}

@media (prefers-reduced-motion: reduce) {
  .picto--has-icon .picto__label { transition: none; }
}
