/* Mantener la presentación original. Bootstrap 5 aporta solo el JavaScript. */
.form-honeypot { display: none !important; }
/* Equivalentes de .in que Bootstrap 5 expresa con .show. */
.fade.show { opacity: 1; }
.modal.fade.show .modal-dialog { transform: translate(0, 0); }
.modal-backdrop.show { opacity: .8; }
/* Las clases y keyframes originales conservan su apariencia sin WOW/jQuery. */
.wow { visibility: visible; opacity: 1; animation-duration: 1s; animation-fill-mode: both; }
@media (prefers-reduced-motion: reduce) {
  .wow { opacity: 1 !important; animation: none !important; }
}
/* Grilla equivalente a Cube Portfolio, usando el ancho del contenedor. */
.cbp { height: auto; display: grid; align-items: start; visibility: visible; overflow: visible; gap: 35px 15px; grid-template-columns: repeat(var(--gallery-columns, 1), var(--gallery-column-width, minmax(0, 1fr))); }
.cbp .cbp-item { position: relative; top: auto; left: auto; width: auto; height: auto; }
.cbp .cbp-caption { display: block; }
.cbp .cbp-caption img { width: 100%; height: auto; }
/* El mensaje solo ocupa lugar cuando existe una respuesta. */
form [role='status']:empty { display: none; }
