:root {
    --bleu-france: #002654;
    --blanc-france: #ffffff;
    --rouge-france: #ED2939;
    --vert-succes: #27ae60;
    --gris-fond: #F4F6F8;
    --gris-texte: #333333;
    --gris-clair: #E0E0E0;
}

* { box-sizing: border-box; margin: 0; padding: 0; user-select: none; -webkit-tap-highlight-color: transparent; touch-action: manipulation; }

html, body {
    margin: 0;
    padding: 0;
    width: 100vw;
    height: 100vh;
    height: 100dvh;
    overflow: hidden;
    background-color: #1e293b; /* Fond sombre élégant autour de l'app si affichée sur PC */
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
    display: flex; justify-content: center; height: 100vh;
}

#app {
    width: 100vw;
    height: 100vh;
    height: 100dvh;
    max-width: none; /* On retire la limite de largeur pour prendre tout l'écran mobile */
    background-color: var(--gris-fond);
    display: flex; 
    flex-direction: column; 
    position: relative; 
    overflow: hidden;
}

.french-flag-bar {
    height: 6px; width: 100%; flex-shrink: 0;
    background: linear-gradient(90deg, var(--bleu-france) 33.3%, var(--blanc-france) 33.3%, var(--blanc-france) 66.6%, var(--rouge-france) 66.6%);
}

#menu-screen, #game-screen, #end-screen {
    flex: 1; 
    display: flex; 
    flex-direction: column; 
    width: 100%; 
    height: 100%;
    overflow: hidden;
}

.hidden { display: none !important; }

/* MENU */
.menu-header { text-align: center; padding: 40px 20px 20px; background: var(--blanc-france); }
.menu-header h1 { color: var(--bleu-france); font-size: 2.5rem; font-weight: 800; letter-spacing: -1px; }
.menu-header p { color: var(--rouge-france); font-weight: 600; margin-top: 5px; }
.menu-content {
    flex: 1; 
    padding: 15px; /* Réduit un peu les marges pour tout faire tenir */
    display: flex; 
    flex-direction: column; 
    gap: 15px; /* Resserre les blocs pour éviter d'avoir à scroller */
    overflow-y: auto; /* Seul le menu peut scroller si l'écran est petit */
    background: var(--blanc-france);
}
.setting-group h3 { font-size: 1rem; color: var(--gris-texte); margin-bottom: 12px; font-weight: 600; }
.setting-hint { font-size: 0.85rem; color: #666; margin-top: 8px; text-align: center; font-style: italic; }

.segmented-control { display: flex; background-color: var(--gris-fond); border-radius: 12px; padding: 4px; }
.segmented-control input[type="radio"] { display: none; }
.segmented-control label { flex: 1; text-align: center; padding: 12px 5px; font-size: 0.95rem; font-weight: 600; color: #666; border-radius: 8px; cursor: pointer; transition: all 0.2s ease; }
.segmented-control input[type="radio"]:checked + label { background-color: var(--blanc-france); color: var(--bleu-france); box-shadow: 0 2px 8px rgba(0,0,0,0.1); }

.menu-footer { padding: 20px; background-color: var(--blanc-france); border-top: 1px solid var(--gris-clair); }

/* BOUTONS */
.btn {
    width: 100%; 
    padding: 16px; 
    border: none; 
    border-radius: 12px; 
    font-size: 1.1rem; 
    font-weight: 700; 
    cursor: pointer; 
    transition: transform 0.05s, background-color 0.2s; 
    touch-action: manipulation; /* Évite le délai de double-tap zoom sur mobile */
}
.btn:active { transform: scale(0.96); }
.btn-primary { background-color: var(--bleu-france); color: var(--blanc-france); }
.btn-text { background-color: transparent; color: var(--rouge-france); font-size: 0.95rem; padding: 10px; }

/* JEU */
.game-header { background-color: var(--blanc-france); border-bottom: 2px solid var(--gris-clair); }
.header-top { display: flex; justify-content: space-between; align-items: center; padding: 15px 20px; }
.btn-icon { background: none; border: none; color: var(--rouge-france); font-weight: 600; font-size: 1rem; cursor: pointer; }
.score { font-weight: 700; color: var(--bleu-france); }

.progress-bar { height: 4px; background-color: var(--gris-clair); width: 100%; }
.progress-fill { height: 100%; width: 0%; background-color: var(--bleu-france); transition: width 0.3s ease; }

.game-content {
    flex: 1; 
    padding: 15px; 
    display: flex; 
    flex-direction: column; 
    gap: 15px; 
    justify-content: space-between;
    overflow: hidden; /* Empêche le jeu de dépasser de l'écran */
}

.question-card { background-color: var(--blanc-france); padding: 30px 20px; border-radius: 12px; text-align: center; box-shadow: 0 4px 12px rgba(0,0,0,0.03); border-top: 4px solid var(--bleu-france); }
.question-card h2 { font-size: 1.3rem; font-weight: 400; line-height: 1.4; color: var(--gris-texte); }
.question-card strong { font-weight: 700; color: var(--bleu-france); }

#feedback-text { margin-top: 15px; font-weight: 600; font-size: 1.1rem; padding: 10px; border-radius: 8px; }
.feedback-success { background-color: #e8f8f5; color: var(--vert-succes); }
.feedback-error { background-color: #fdeded; color: var(--rouge-france); }

.interaction-zone { display: flex; flex-direction: column; gap: 15px; margin-bottom: 20px; }
.input-section { display: flex; flex-direction: column; gap: 10px; }
input[type="text"] { width: 100%; padding: 15px; font-size: 1.2rem; border: 2px solid var(--gris-clair); border-radius: 8px; text-align: center; outline: none; transition: border-color 0.2s; user-select: auto; }
input[type="text"]:focus { border-color: var(--bleu-france); }

.qcm-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.btn-qcm { background-color: var(--blanc-france); border: 2px solid var(--gris-clair); color: var(--bleu-france); border-radius: 8px; padding: 15px; font-size: 1rem; font-weight: 600; cursor: pointer; }

/* --- Bouton d'affichage de la carte --- */
#map-wrapper {
    display: flex;
    flex-direction: column;
    align-items: center;
    margin-bottom: 15px;
}

#btn-show-map {
    background-color: var(--blanc-france);
    color: var(--bleu-france);
    border: 2px solid var(--bleu-france);
    padding: 10px 20px;
    border-radius: 8px;
    font-weight: 700;
    font-size: 1rem;
    cursor: pointer;
    transition: all 0.2s;
}

#btn-show-map:active {
    background-color: var(--bleu-france);
    color: var(--blanc-france);
}

#map-container svg {
    width: 100%;
    height: 100%;
    max-height: fit-content; /* Ajuste selon la taille souhaitée */
    object-fit: contain;
}

/* S'assure que tous les départements ont une couleur de base pour ne pas être invisibles */
#france-map .departement {
    fill: #d0d5dc; /* Couleur par défaut des départements (gris/bleu clair) */
    stroke: #ffffff; /* Couleur des frontières */
    stroke-width: 0.8px;
    transition: fill 0.3s ease;
}

/* Le département actif en rouge */
#france-map .departement.actif {
    fill: #ED2939 !important;
}

/* --- Champ personnalisé tours --- */
#input-tours-perso {
    margin-top: 15px;
    width: 100%;
    padding: 12px;
    border: 2px solid var(--gris-clair);
    border-radius: 8px;
    font-size: 1rem;
    text-align: center;
    outline: none;
}
#input-tours-perso:focus { border-color: var(--bleu-france); }

/* --- Écran de fin --- */
#end-screen {
    flex: 1; display: flex; flex-direction: column; background: var(--blanc-france);
}
.end-content {
    flex: 1; display: flex; flex-direction: column; justify-content: center; align-items: center; padding: 20px; text-align: center; gap: 20px;
}
.end-content h2 { color: var(--bleu-france); font-size: 2rem; }
.score-circle {
    width: 150px; height: 150px; border-radius: 50%; background-color: var(--bleu-france);
    display: flex; justify-content: center; align-items: center; color: var(--blanc-france); font-size: 3rem; font-weight: 800;
    box-shadow: 0 10px 20px rgba(0, 38, 84, 0.2);
}
.end-details { font-size: 1.2rem; font-weight: 600; color: var(--gris-texte); }
.end-message { font-size: 1rem; color: #666; font-style: italic; }