{{-- L'écran de lecture (v2.0 §3, §5 et §9). Trois publics, un seul écran : qui ne lit pas écoute la consigne en darija ; qui lit vite déplie la transcription et saute au quiz ; tout le monde retrouve sa position, même trois semaines plus tard. L'attribut data-battement-url arme le battement du lecteur : un signal toutes les trente secondes, uniquement si la lecture est active ET l'onglet visible. Le client n'envoie que sa position — le serveur décide seul de ce qui peut être crédité. --}}
@if ($sequence->type?->value === 'video') @if ($urlLecteur)
{{-- Ce que le compteur a réellement retenu, en direct. Volontairement discret : c'est une information de confiance, pas un objectif à atteindre. --}}
@else

{{ __('formation.video_indisponible') }}

@endif @elseif ($sequence->type?->value === 'audio' && $audio) @elseif ($sequence->type?->value === 'document') {{ __('formation.document_ouvrir') }} @endif
{{-- La consigne, avec sa voix. Le texte reste visible à côté : qui lit, lit. --}} @if (filled($contenu))
{!! nl2br(e($contenu)) !!}
@elseif ($audio && $sequence->type?->value !== 'audio')
@endif {{-- La voie rapide : transcription dépliable pour qui préfère lire (§3). --}} @if (filled($transcription)) @if ($transcriptionOuverte)
{!! nl2br(e($transcription)) !!}
@endif @endif

! ($progression?->terminee)])> ✓ {{ __('formation.termine') }}

{{-- Un seul bouton : la suite du chemin. Pour une séquence texte ou document, il vaut aussi accusé de lecture — la lecture d'un texte ne se mesure pas honnêtement, on ne crédite donc aucune heure, on note seulement le passage. --}} type?->estChronometrable()) wire:click="marquerLue" @endunless> {{ $apres['libelle'] }}