/* ============================================
   MBATOVÍ — Componentes
   ============================================ */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: .7rem;
  padding: 1.1rem 2.4rem;
  font-size: .72rem; font-weight: 500; letter-spacing: .22em; text-transform: uppercase;
  border: 1px solid transparent;
  transition: background .5s var(--curva), color .5s var(--curva), border-color .5s var(--curva), transform .4s var(--curva);
}
.btn--oro { background: var(--oro); color: var(--selva); border-color: var(--oro); }
.btn--oro:hover { background: var(--oro-claro); border-color: var(--oro-claro); transform: translateY(-2px); }
.btn--linea { border-color: rgba(232,228,218,.28); color: var(--hueso); }
.btn--linea:hover { border-color: var(--oro); color: var(--oro); transform: translateY(-2px); }
.btn--bloque { width: 100%; }

/* Formulario */
.campo { margin-bottom: var(--md); }
.campo label {
  display: block; font-size: .6rem; font-weight: 500; letter-spacing: .22em;
  text-transform: uppercase; color: var(--salvia); margin-bottom: .55rem;
}
.campo input, .campo select, .campo textarea {
  width: 100%; padding: .9rem 0;
  background: transparent; border: 0; border-bottom: 1px solid var(--musgo);
  font-size: 1rem; font-weight: 300; color: var(--hueso);
  transition: border-color .4s var(--curva);
}
.campo textarea { resize: vertical; min-height: 88px; }
.campo input:focus, .campo select:focus, .campo textarea:focus { outline: none; border-bottom-color: var(--oro); }
.campo select option { background: var(--selva); color: var(--hueso); }
.campo input[aria-invalid="true"], .campo select[aria-invalid="true"] { border-bottom-color: var(--error); }
.campo__err { display: none; margin-top: .4rem; font-size: .78rem; color: var(--error); }
.campo__err.visible { display: block; }

.campo--check { display: flex; align-items: flex-start; gap: .7rem; margin-bottom: var(--md); }
.campo--check input { width: 17px; height: 17px; margin-top: 4px; flex-shrink: 0; accent-color: var(--oro); }
.campo--check label {
  font-size: .82rem; font-weight: 300; letter-spacing: 0; text-transform: none;
  color: var(--hueso-tenue); line-height: 1.55; margin: 0;
}
.estado { display: none; margin-top: var(--md); padding: 1rem 1.1rem; font-size: .88rem; line-height: 1.55; }
.estado.visible { display: block; }
.estado--ok { background: rgba(127,184,143,.08); color: var(--exito); border: 1px solid rgba(127,184,143,.28); }
.estado--mal { background: rgba(217,139,122,.08); color: var(--error); border: 1px solid rgba(217,139,122,.28); }
.trampa { position: absolute; left: -9999px; opacity: 0; }
