* { margin: 0; padding: 0; box-sizing: border-box; }
        body { font-family: system-ui, -apple-system, sans-serif; background: linear-gradient(135deg, #1e3a5a, #2d5986, #1e3a5a); min-height: 100vh; color: #e2e8f0; overflow-x: hidden; }

        .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: var(--game-header-space, 52px) clamp(12px, 2vw, 40px) 16px; width: 100%; min-height: 100vh; min-height: 100dvh; display: flex; flex-direction: column; }
        .controls, .question-bar, .results-screen { flex-shrink: 0; }

        /* Controls */
        .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-family: inherit; font-size: 0.82rem; font-weight: 600; cursor: pointer; transition: all 0.2s; }
        .chip.active { background: #6366f1; color: #fff; border-color: #6366f1; }
        .chip:hover { background: rgba(99,102,241,0.25); }
        .controls.locked .chip { opacity: 0.45; cursor: not-allowed; }
        .separator { width: 1px; height: 24px; background: rgba(148,163,184,0.3); margin: 0 4px; }

        /* Question */
        .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-data-status { margin: 8px auto 0; max-width: 42rem; color: #fde68a; font-size: 0.9rem; line-height: 1.45; }
        .map-data-retry { margin-top: 8px; min-height: 44px; padding: 8px 14px; border: 1px solid rgba(251,191,36,0.55); border-radius: 10px; background: rgba(120,53,15,0.55); color: #fef3c7; font: inherit; font-weight: 700; cursor: pointer; }
        .map-data-retry:focus-visible { outline: 3px solid #fff; outline-offset: 3px; }

        /* Map */
        .map-shell { position: relative; flex: 1 0 320px; min-height: 320px; }
        #map { width: 100%; height: 100%; 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) */ }

        /* Feedback */
        .feedback-overlay { position: fixed; top: 60px; left: 50%; transform: translateX(-50%); z-index: 2000; max-width: min(92vw, 560px); max-height: min(70vh, 420px); overflow: auto; padding: 10px 24px; border-radius: 12px; font-weight: 700; font-size: 1rem; display: none; animation: feedbackIn 0.3s ease; text-align: center; }
        .map-discussion { margin-top: 10px; padding-top: 8px; border-top: 1px solid rgba(255,255,255,.35); text-align: left; font-size: .88rem; line-height: 1.45; }
        .map-discussion summary { min-height: 44px; display: flex; align-items: center; cursor: pointer; }
        .map-discussion summary:focus-visible { outline: 3px solid #facc15; outline-offset: 3px; border-radius: 4px; }
        .map-discussion p { margin: 4px 0 0; font-weight: 500; }
        .map-discussion[hidden] { 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.ok { background: #78350f; color: #fde68a; border: 1px solid #f59e0b; }
        .feedback-overlay.miss { background: #7f1d1d; color: #fca5a5; border: 1px solid #ef4444; }
        @keyframes feedbackIn { from { opacity: 0; transform: translateX(-50%) translateY(-10px); } to { opacity: 1; transform: translateX(-50%) translateY(0); } }

        /* Results */
        .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; flex-wrap: wrap; }
        .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); }

        /* Loading */
        .map-loading { position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%); z-index: 500; background: rgba(15,23,42,0.9); padding: 20px 30px; border-radius: 12px; color: #a5b4fc; font-weight: 600; }

        /* Leaflet custom */
        .correct-marker { background: none; border: none; }
        .leaflet-popup-content { font-family: system-ui, sans-serif; font-size: 0.9rem; }
