/**
 * Goundi utilities — small helpers. Prefer components over utilities.
 */

.gnd-hidden {
  display: none !important;
}

.gnd-visually-hidden {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}

.gnd-text-muted {
  color: var(--goundi-muted);
}

.gnd-text-success {
  color: var(--gnd-color-success);
}

.gnd-text-error {
  color: var(--gnd-color-error);
}

.gnd-text-center {
  text-align: center;
}

.gnd-flex {
  display: flex;
}

.gnd-flex-center {
  display: flex;
  align-items: center;
  justify-content: center;
}

.gnd-gap-2 {
  gap: var(--gnd-space-2);
}

.gnd-gap-4 {
  gap: var(--gnd-space-4);
}

.gnd-mt-4 {
  margin-top: var(--gnd-space-4);
}

.gnd-mb-4 {
  margin-bottom: var(--gnd-space-4);
}

.gnd-stack > * + * {
  margin-top: var(--gnd-space-4);
}

.gnd-cluster {
  display: flex;
  flex-wrap: wrap;
  gap: var(--gnd-space-2);
  align-items: center;
}

/* Companion feedback visibility */
.gnd-feedback--idle .gnd-companion__message {
  opacity: 0.85;
}

.gnd-feedback--loading .gnd-companion__message::after {
  content: "…";
  animation: gnd-ellipsis 1s steps(4, end) infinite;
}

@keyframes gnd-ellipsis {
  0% {
    content: "";
  }
  25% {
    content: ".";
  }
  50% {
    content: "..";
  }
  75% {
    content: "...";
  }
}

.gnd-feedback--success .gnd-companion--variant-golgo,
.gnd-feedback--gratitude .gnd-companion--variant-tosse {
  display: block;
}

.gnd-feedback--error .gnd-companion,
.gnd-feedback--pending .gnd-companion--variant-golgo,
.gnd-feedback--pending .gnd-companion--variant-tosse {
  display: none;
}

@media (prefers-reduced-motion: reduce) {
  .gnd-feedback--loading .gnd-companion__message::after {
    animation: none;
    content: "…";
  }
}
