# Integración Sprint D en sorteos/index.blade.php

## Scripts a agregar (al final del @push('scripts') o antes de </body>):

```html
<!-- Audio engine + UI extensions Sprint D -->
<script src="{{ asset('js/audio-engine.js') }}"></script>
<script src="{{ asset('js/sorteo-ui-ext.js') }}"></script>
```

## Botón de pantalla completa (agregar junto al panel de sorteo):
```html
<button onclick="FelUI.toggleFullscreen('panel-sorteo')"
        class="btn btn-sm"
        style="background:#1B2A4A; color:#C9A84C; border:1px solid #C9A84C;">
    ⛶ Pantalla completa
</button>
```

## Al hacer click en "Ejecutar sorteo", reemplazar la llamada directa por:
```javascript
FelUI.iniciarSecuencia({
    duracion: 5,           // segundos del conteo
    panelId: 'panel-sorteo',
    onEjecutar: function(callback) {
        // Aquí va tu fetch/axios al endpoint de ejecutar
        felFetch('/sorteos/' + sorteoId + '/ejecutar', { method: 'POST' })
            .then(r => r.json())
            .then(data => callback(data));
    },
    onCompletado: function(resultado) {
        // Actualizar la UI con el ganador
        console.log('Ganador:', resultado);
    }
});
```

## Para anular un ganador con SweetAlert2:
```javascript
FelUI.confirmarAnularGanador(nombreGanador, function() {
    felFetch('/ganadores/' + ganadorId + '/anular', { method: 'POST' })
        .then(r => r.json())
        .then(data => {
            if (data.success) {
                Swal.fire('Anulado', data.mensaje, 'success').then(() => location.reload());
            } else {
                FelAudio.error();
                Swal.fire('Error', data.mensaje, 'error');
            }
        });
});
```

## Para publicar un sorteo:
```javascript
FelUI.confirmarPublicarSorteo(nombreSorteo, function() {
    felFetch('/sorteos/' + sorteoId + '/publicar', { method: 'POST' })
        .then(r => r.json())
        .then(data => {
            Swal.fire('Publicado', '¡Resultado visible en el muro!', 'success');
        });
});
```
