# Story 4.2: Intro narrative et premier choix
Status: ready-for-dev
## Story
As a visiteur aventurier,
I want une introduction narrative captivante suivie d'un premier choix,
so that je suis immergé dès le début de l'aventure.
## Acceptance Criteria
1. **Given** le visiteur a sélectionné son héros sur la landing page **When** il commence l'aventure **Then** une séquence d'intro narrative s'affiche avec le narrateur (Le Bug)
2. **And** le texte présente le "héros mystérieux" (le développeur) à découvrir
3. **And** l'effet typewriter anime le texte (skippable par clic/Espace)
4. **And** l'ambiance visuelle est immersive (fond sombre, illustrations)
5. **And** un bouton "Continuer" permet d'avancer
6. **And** à la fin de l'intro, le premier choix binaire s'affiche via `ChoiceCards`
7. **And** le choix propose deux zones à explorer en premier (ex: Projets vs Compétences)
8. **And** le contenu est bilingue (FR/EN) et adapté au héros (vouvoiement/tutoiement)
9. **And** la durée de l'intro est courte (15-30s max, skippable)
## Tasks / Subtasks
- [ ] **Task 1: Créer les textes d'intro dans l'API** (AC: #2, #8)
- [ ] Ajouter les contextes `intro_sequence_1`, `intro_sequence_2`, `intro_sequence_3` dans narrator_texts
- [ ] Variantes pour chaque type de héros (vouvoiement/tutoiement)
- [ ] Textes mystérieux présentant le développeur
- [ ] **Task 2: Créer la page intro** (AC: #1, #4, #9)
- [ ] Créer `frontend/app/pages/intro.vue`
- [ ] Rediriger automatiquement depuis landing après choix du héros
- [ ] Fond sombre avec ambiance mystérieuse
- [ ] Structure en étapes (séquences de texte)
- [ ] **Task 3: Implémenter la séquence narrative** (AC: #2, #3, #5)
- [ ] Créer composant `IntroSequence.vue`
- [ ] Afficher le Bug avec le texte en typewriter
- [ ] Bouton "Continuer" pour passer à l'étape suivante
- [ ] Clic/Espace pour skip le typewriter
- [ ] 3-4 séquences de texte courtes
- [ ] **Task 4: Ajouter les illustrations d'ambiance** (AC: #4)
- [ ] Illustrations de fond (toiles d'araignée, ombres, code flottant)
- [ ] Animation subtile sur les éléments de fond
- [ ] Cohérence avec l'univers de Le Bug
- [ ] **Task 5: Intégrer le premier choix** (AC: #6, #7)
- [ ] Après la dernière séquence, afficher ChoiceCards
- [ ] Choix : Projets vs Compétences
- [ ] La sélection navigue vers la zone choisie
- [ ] **Task 6: Gérer le skip global** (AC: #9)
- [ ] Bouton discret "Passer l'intro" visible en permanence
- [ ] Navigation directe vers le choix si skip
- [ ] Enregistrer dans le store que l'intro a été vue/skip
- [ ] **Task 7: Tests et validation**
- [ ] Tester le flow complet
- [ ] Vérifier les 3 types de héros (textes adaptés)
- [ ] Tester FR et EN
- [ ] Valider la durée (< 30s)
- [ ] Tester le skip intro
## Dev Notes
### Textes d'intro (exemples)
```php
// À ajouter dans NarratorTextSeeder.php
// Intro séquence 1 - Recruteur (vouvoiement)
['context' => 'intro_sequence_1', 'text_key' => 'narrator.intro_seq.1.recruteur', 'variant' => 1, 'hero_type' => 'recruteur'],
// Intro séquence 1 - Client/Dev (tutoiement)
['context' => 'intro_sequence_1', 'text_key' => 'narrator.intro_seq.1.casual', 'variant' => 1, 'hero_type' => 'client'],
['context' => 'intro_sequence_1', 'text_key' => 'narrator.intro_seq.1.casual', 'variant' => 1, 'hero_type' => 'dev'],
// Traductions
['key' => 'narrator.intro_seq.1.recruteur', 'fr' => "Bienvenue dans mon domaine, voyageur... Je suis Le Bug, et je vais vous guider dans cette aventure.", 'en' => "Welcome to my domain, traveler... I am The Bug, and I will guide you through this adventure."],
['key' => 'narrator.intro_seq.1.casual', 'fr' => "Hey ! Bienvenue chez moi. Je suis Le Bug, ton guide pour cette aventure.", 'en' => "Hey! Welcome to my place. I'm The Bug, your guide for this adventure."],
['key' => 'narrator.intro_seq.2', 'fr' => "Il y a quelqu'un ici que tu cherches... Un développeur mystérieux qui a créé tout ce que tu vois autour de toi.", 'en' => "There's someone here you're looking for... A mysterious developer who created everything you see around you."],
['key' => 'narrator.intro_seq.3', 'fr' => "Pour le trouver, tu devras explorer ce monde. Chaque zone cache une partie de son histoire. Es-tu prêt ?", 'en' => "To find them, you'll have to explore this world. Each zone hides a part of their story. Are you ready?"],
```
### Page intro.vue
```vue