{{--
reCAPTCHA v3: el script de Google y el listener que le pide el token.
⚠️ **Va en `@assets` y este archivo se incluye desde las 8 blades que lo usan** — NO desde un
layout. Antes vivía en tres layouts (`guest/general`, `guest/preview-admin` y
`purchase-and-sale/general-form-tickets`) con un `@once` que no servía de nada: el `@once` se
evalúa en el layout, que se renderiza siempre, así que el script salía en TODO el sitio guest.
Medido: 9 de 12 páginas públicas lo cargaban sin tener un solo formulario que lo usara.
⚠️ **El `@assets` tiene que vivir en ESTE archivo, no copiado en las 8 blades.** Livewire
deduplica por `crc32()` de la ruta del archivo que compila la directiva
(`SupportScriptsAndAssets::getUniqueBladeCompileTimeKey()`), así que 8 blades serían 8 claves
distintas y el script se cargaría 8 veces en una página con varios formularios. Un solo
archivo incluido ocho veces = una sola clave = una sola carga.
⚠️ **Y tiene que ser `@assets`, no `@push`.** Cuatro de los ocho son pasos de wizard de Spatie
(`RegisterStepForm`, `UsedMachineIntakeStepForm`, `MediaStepForm`, `PurchaseTicketStepForm`):
el paso 2 y el 3 llegan POR AJAX, y un `@push` solo alcanza el render inicial — el botón se
quedaría sin listener al avanzar de paso. `@assets` viaja en el payload de la respuesta.
Quién lo incluye: los 4 formularios de contacto y los 4 pasos de wizard, todos con el trait
`App\Livewire\Traits\Captcha\WithRecaptcha`. Si agregás un noveno, incluí este partial.
--}}
@assets
@endassets