* { margin: 0; padding: 0; box-sizing: border-box; }
        body { font-family: system-ui, -apple-system, sans-serif; background: linear-gradient(135deg, #1a2744, #1e3a5a, #1a2744); min-height: 100vh; color: #e2e8f0; }
        .game-header { position: fixed; top: 0; left: 0; right: 0; z-index: 1000; background: rgba(15,23,42,0.95); backdrop-filter: blur(10px); padding: 8px 16px; display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid rgba(99,102,241,0.2); }
        .header-left { display: flex; align-items: center; gap: 10px; }
        .btn-quit { padding: 6px 12px; border-radius: 8px; border: 1px solid rgba(239,68,68,0.4); background: rgba(239,68,68,0.1); color: #f87171; font-size: 0.8rem; font-weight: 600; cursor: pointer; text-decoration: none; }
        .game-title { font-size: 1rem; font-weight: 700; color: #f8fafc; }
        .header-right { display: flex; align-items: center; gap: 15px; font-size: 0.85rem; }
        .score-display { color: #fbbf24; font-weight: 700; }
        .progress-display { color: #a5b4fc; }
        .game-container { padding-top: var(--game-header-space, 52px); max-width: 1100px; margin: 0 auto; padding-left: 12px; padding-right: 12px; }
        .controls { display: flex; gap: 8px; padding: 12px 0; flex-wrap: wrap; align-items: center; justify-content: center; }
        .chip { padding: 6px 14px; border-radius: 20px; border: 1px solid rgba(99,102,241,0.3); background: rgba(99,102,241,0.1); color: #a5b4fc; font: inherit; font-size: 0.82rem; font-weight: 600; cursor: pointer; transition: all 0.2s; }
        .chip.active { background: #6366f1; color: #fff; border-color: #6366f1; }
        .separator { width: 1px; height: 24px; background: rgba(148,163,184,0.3); margin: 0 4px; }
        .question-bar { background: rgba(255,255,255,0.06); border: 1px solid rgba(99,102,241,0.15); border-radius: 12px; padding: 12px 18px; margin-bottom: 10px; text-align: center; }
        .question-text { font-size: 1.15rem; font-weight: 700; color: #f8fafc; }
        .question-hint { font-size: 0.85rem; color: #94a3b8; margin-top: 4px; font-style: italic; }
        #map { width: 100%; height: 520px; border-radius: 14px; border: 2px solid rgba(99,102,241,0.2); z-index: 1; background: #cfe3f2; /* mer (fond vectoriel self-hosté, plus de tuiles CARTO) */ }
        @media screen and (max-width: 700px) { #map { height: 380px; } }
        .feedback-overlay { position: fixed; top: 60px; left: 50%; transform: translateX(-50%); z-index: 2000; padding: 10px 24px; border-radius: 12px; font-weight: 700; font-size: 1rem; display: none; }
        .feedback-overlay.perfect { background: #065f46; color: #6ee7b7; border: 1px solid #10b981; }
        .feedback-overlay.good { background: #1e3a5f; color: #93c5fd; border: 1px solid #3b82f6; }
        .feedback-overlay.miss { background: #7f1d1d; color: #fca5a5; border: 1px solid #ef4444; }
        .results-screen { display: none; text-align: center; padding: 2rem 1rem; }
        .results-screen.active { display: block; }
        .results-score { font-size: 3rem; font-weight: 900; color: #fbbf24; }
        .results-detail { color: #94a3b8; margin: 0.5rem 0 1.5rem; }
        .results-stars { font-size: 2.5rem; margin-bottom: 1rem; }
        .results-actions { display: flex; gap: 10px; justify-content: center; }
        .results-actions a, .results-actions button { padding: 10px 20px; border-radius: 10px; font-weight: 700; font-size: 0.95rem; text-decoration: none; border: none; cursor: pointer; }
        .btn-primary { background: #6366f1; color: #fff; }
        .btn-secondary { background: rgba(255,255,255,0.1); color: #cbd5e1; border: 1px solid rgba(148,163,184,0.3); }
        .correct-marker { background: none; border: none; }
        .map-number { display: grid; place-items: center; width: 30px; height: 30px; border-radius: 50%; border: 2px solid #fff; background: #4338ca; color: #fff; font-size: 15px; font-weight: 800; box-shadow: 0 1px 5px #0f172a; }
        .map-number.answer-correct { background: #15803d; }
        .chip:focus-visible, .answer-choice:focus-visible, .results-actions :focus-visible, .btn-quit:focus-visible { outline: 3px solid #facc15; outline-offset: 3px; }
        .map-instructions { margin: 0 0 10px; text-align: center; color: #cbd5e1; font-size: .95rem; }
        .answer-options { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; margin: 12px 0 24px; }
        .answer-choice { min-height: 44px; padding: 9px 14px; border: 1px solid rgba(165,180,252,.45); border-radius: 10px; background: #27365c; color: #f8fafc; font: inherit; font-weight: 650; cursor: pointer; }
        .answer-choice:hover { background: #394c7b; }
        .question-start { margin-top: 8px; }
        .answer-options[hidden], .answer-explanation[hidden] { display: none; }
        .answer-explanation { max-width: 760px; margin: 12px auto 24px; padding: 14px 18px; border-radius: 12px; background: rgba(255,255,255,.08); border: 1px solid rgba(165,180,252,.35); color: #f8fafc; text-align: center; line-height: 1.55; }
        .map-discussion { max-width: 760px; margin: -12px auto 24px; padding: 0 18px; color: #e2e8f0; line-height: 1.45; }
        .map-discussion summary { width: fit-content; min-height: 44px; margin: 0 auto; cursor: pointer; }
        .map-discussion summary:focus-visible { outline: 3px solid #facc15; outline-offset: 3px; border-radius: 4px; }
        .map-discussion p { margin: 4px 0 0; text-align: center; }
        .map-discussion[hidden] { display: none; }
        @media (prefers-reduced-motion: reduce) { *, *::before, *::after { scroll-behavior: auto !important; transition-duration: .01ms !important; animation-duration: .01ms !important; } }
