
        /* ===== CHASSE POINTS HOVER PANEL ===== */
        #chassePtsPanel {
            position: fixed;
            z-index: 1200;
            background: rgba(255,255,255,0.97);
            border: 1px solid rgba(0,0,153,0.15);
            border-radius: 10px;
            box-shadow: 0 8px 32px rgba(0,0,53,0.16);
            padding: 16px var(--space-4);
            pointer-events: auto;
            opacity: 0;
            transform: translateY(6px);
            transition: opacity 0.18s, transform 0.18s;
        }
        #chassePtsPanel.visible {
            opacity: 1;
            transform: translateY(0);
        }

        /* ===== CONSULTANT CARD ===== */
        .consultant-grid {
            display: grid;
            grid-template-columns: repeat(auto-fill, minmax(340px, 1fr));
            gap: var(--space-4);
            margin-bottom: var(--space-6);
        }

        .consultant-card {
            background: var(--card);
            border-radius: var(--radius);
            box-shadow: var(--shadow);
            overflow: hidden;
            cursor: pointer;
            transition: transform 0.2s, box-shadow 0.2s;
        }

        .consultant-card:hover {
            transform: translateY(-2px);
            box-shadow: 0 4px 20px rgba(245,10,99,0.2), 0 0 30px rgba(245,10,99,0.08);
        }

        .consultant-card--mine {
            border: 2px solid var(--accent);
            box-shadow: 0 0 0 3px rgba(245,10,99,0.12), var(--shadow);
        }

        .consultant-card--mine:hover {
            box-shadow: 0 4px 16px rgba(245,10,99,0.22), 0 0 0 3px rgba(245,10,99,0.12);
        }

        .consultant-card-header {
            padding: var(--space-5);
            display: flex;
            align-items: center;
            gap: 16px;
            border-bottom: 1px solid rgba(255,255,255,0.07);
        }

        .avatar {
            width: 48px; height: 48px;
            border-radius: 50%;
            display: flex;
            align-items: center;
            justify-content: center;
            font-weight: 800;
            font-size: 18px;
            color: white;
            flex-shrink: 0;
        }

        .consultant-card-header .name {
            font-weight: 700;
            font-size: 16px;
        }

        .consultant-card-header .email {
            font-size: 12px;
            color: var(--text-light);
        }

        .consultant-card-body {
            padding: var(--space-4) var(--space-5);
        }

        .consultant-stats {
            display: flex;
            gap: var(--space-2);
            margin-bottom: var(--space-3);
            flex-wrap: wrap;
        }

        .consultant-stat {
            flex: 1;
            text-align: center;
            min-width: 50px;
        }

        .consultant-stat .value {
            font-size: 18px;
            font-weight: 800;
        }

        .consultant-stat .label {
            font-size: 11px;
            color: var(--text-light);
            text-transform: uppercase;
        }

        /* ===== DETAIL PANEL ===== */
        .detail-overlay {
            display: none;
            position: fixed;
            inset: 0;
            background: rgba(0,0,0,0.65);
            z-index: 200;
        }

        .detail-overlay.active { display: block; }

        .detail-panel {
            position: fixed;
            top: 0; right: 0; bottom: 0;
            width: 780px;
            max-width: 90vw;
            background: var(--card);
            box-shadow: var(--shadow-lg);
            z-index: 201;
            overflow-y: auto;
            transform: translateX(100%);
            transition: transform var(--transition-smooth);
        }

        .detail-overlay.active .detail-panel {
            transform: translateX(0);
        }

        .detail-overlay.fullscreen .detail-panel {
            width: 100%;
            max-width: 100vw;
            left: 0;
            box-shadow: none;
        }
        .detail-overlay.fullscreen .detail-panel-body {
            max-width: 1200px;
            margin: 0 auto;
            padding: var(--space-6) var(--space-8);
        }

        .detail-panel-header {
            padding: var(--space-5) var(--space-6);
            border-bottom: 1px solid rgba(255,255,255,0.07);
            display: flex;
            align-items: center;
            justify-content: space-between;
            position: sticky;
            top: 0;
            background: var(--card);
            z-index: 1;
        }

        .detail-panel-header h2 {
            font-size: 18px;
        }

        .close-btn {
            width: 36px; height: 36px;
            border: none;
            background: #f5f5f5;
            border-radius: 50%;
            cursor: pointer;
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: 18px;
            transition: background 0.2s;
        }

        .close-btn:hover { background: var(--border); }

        .detail-panel-body {
            padding: var(--space-6);
        }

        /* ===== MON TABLEAU DE CHASSE ===== */
        .chasse-banner {
            border-radius: var(--radius);
            box-shadow: var(--shadow-md);
            margin-bottom: var(--space-5);
            overflow: hidden;
            background: var(--card);
        }

        /* Zone hero sombre */
        .chasse-hero {
            background: linear-gradient(120deg, var(--primary-dark) 0%, var(--deep-koamaru) 60%, #1a1060 100%);
            padding: 10px var(--space-6);
            position: relative;
            overflow: hidden;
        }

        .chasse-hero::before {
            content: '';
            position: absolute;
            top: -40px; right: -40px;
            width: 200px; height: 200px;
            background: radial-gradient(circle, rgba(245,10,99,0.22) 0%, transparent 65%);
            pointer-events: none;
        }

        /* Zone claire (palier + cible + stats) */
        .chasse-body {
            padding: var(--space-4) var(--space-6) var(--space-4);
        }


        /* --- Header --- */
        .chasse-header {
            display: flex;
            align-items: center;
            justify-content: space-between;
            margin-bottom: 0;
            gap: var(--space-3);
        }

        .chasse-identity {
            flex: 1;
            min-width: 0;
            display: flex;
            align-items: center;
            gap: 16px;
        }

        .chasse-identity-icon {
            flex-shrink: 0;
        }

        .chasse-banner-title {
            font-size: 20px;
            font-weight: 800;
            letter-spacing: 0.04em;
            color: #fff;
            white-space: nowrap;
        }

        /* --- Rank --- */
        .chasse-rank-wrap {
            flex-shrink: 0;
            display: flex;
            flex-direction: column;
            align-items: center;
            gap: 8px;
        }

        .chasse-rank-badge {
            width: 72px;
            height: 72px;
            border-radius: 50%;
            display: flex;
            align-items: center;
            justify-content: center;
            position: relative;
            overflow: visible;
        }

        /* Reflet interne (effet gem) */
        .chasse-rank-badge::after {
            content: '';
            position: absolute;
            top: 11px; left: 14px;
            width: 36%; height: 26%;
            background: rgba(255,255,255,0.32);
            border-radius: 50%;
            filter: blur(3px);
            pointer-events: none;
        }

        .chasse-rank-badge--gold {
            background: linear-gradient(145deg, #FFE04D 0%, #F5A623 50%, #CC7A00 100%);
            box-shadow:
                0 0 0 3px rgba(245,197,24,0.25),
                0 8px 28px rgba(245,166,35,0.6);
            animation: rankGoldPulse 3s ease-in-out infinite;
        }

        .chasse-rank-badge--silver {
            background: linear-gradient(145deg, #E8EEF4 0%, #B0BEC5 50%, #78909C 100%);
            box-shadow:
                0 0 0 3px rgba(176,190,197,0.2),
                0 6px 22px rgba(120,144,156,0.5);
        }

        .chasse-rank-badge--bronze {
            background: linear-gradient(145deg, #D4956A 0%, #B05A25 50%, #7A3410 100%);
            box-shadow:
                0 0 0 3px rgba(176,90,37,0.25),
                0 6px 22px rgba(122,52,16,0.5);
        }

        .chasse-rank-badge--default {
            background: rgba(255,255,255,0.08);
            border: 1.5px solid rgba(255,255,255,0.18);
            box-shadow: 0 4px 14px rgba(0,0,0,0.2);
        }

        .chasse-rank-badge--default::after {
            display: none;
        }

        @keyframes rankGoldPulse {
            0%, 100% {
                box-shadow:
                    0 0 0 3px rgba(245,197,24,0.25),
                    0 8px 28px rgba(245,166,35,0.6);
            }
            50% {
                box-shadow:
                    0 0 0 6px rgba(245,197,24,0.1),
                    0 8px 36px rgba(245,166,35,0.8);
            }
        }

        /* Couronne au-dessus du badge #1 */
        .chasse-rank-crown {
            position: absolute;
            top: -16px;
            left: 50%;
            transform: translateX(-50%);
            color: #FFE04D;
            filter: drop-shadow(0 2px 5px rgba(245,166,35,0.7));
        }

        .chasse-rank-number {
            font-size: 26px;
            font-weight: 900;
            line-height: 1;
            color: #fff;
            text-shadow: 0 2px 8px rgba(0,0,0,0.35);
            letter-spacing: -0.5px;
            position: relative;
            z-index: 1;
        }

        .chasse-rank-badge--default .chasse-rank-number {
            font-size: 22px;
        }

        .chasse-rank-label {
            font-size: 11px;
            color: rgba(255,255,255,0.45);
        }


        /* --- Target line --- */
        .chasse-target {
            display: flex;
            align-items: center;
            gap: var(--space-2);
            font-size: 13px;
            color: var(--text);
            background: rgba(245,10,99,0.05);
            border: 1px solid rgba(245,10,99,0.12);
            border-radius: 8px;
            padding: var(--space-2) 16px;
            margin-top: var(--space-4);
            margin-bottom: var(--space-4);
            line-height: 1.4;
        }

        .chasse-target--leader {
            background: rgba(245,197,24,0.08);
            border-color: rgba(245,197,24,0.25);
        }

        .chasse-target-icon {
            font-size: 16px;
            flex-shrink: 0;
        }

        .chasse-target strong {
            color: var(--accent);
        }

        .chasse-target--leader strong {
            color: #b45309;
        }

        /* --- Stats grid --- */
        .chasse-stats-grid {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(110px, 1fr));
            gap: 8px;
        }

        .chasse-stat-card {
            background: var(--bg);
            border-radius: 10px;
            padding: var(--space-3) 8px;
            display: flex;
            flex-direction: column;
            align-items: center;
            gap: 8px;
            border: 1px solid var(--border);
            transition: box-shadow 0.15s, border-color 0.15s;
        }

        .chasse-stat-card:hover {
            border-color: rgba(245,10,99,0.2);
            box-shadow: 0 2px 8px rgba(245,10,99,0.08);
        }

        .chasse-stat-card--highlight {
            background: linear-gradient(135deg, rgba(245,197,24,0.07) 0%, rgba(245,166,35,0.04) 100%);
            border-color: rgba(245,197,24,0.22);
        }

        .chasse-stat-icon {
            width: 34px; height: 34px;
            border-radius: 8px;
            display: flex;
            align-items: center;
            justify-content: center;
            flex-shrink: 0;
        }

        .chasse-stat-value {
            font-size: 18px;
            font-weight: 800;
            line-height: 1;
        }

        .chasse-stat-label {
            font-size: 11px;
            color: var(--text-light);
            text-transform: uppercase;
            letter-spacing: 0.06em;
            text-align: center;
            line-height: 1.2;
        }

        .chasse-stat-record {
            font-size: 10px;
            color: var(--text-light);
            text-align: center;
            line-height: 1.3;
            border-top: 1px solid rgba(245,197,24,0.2);
            padding-top: 8px;
            margin-top: 2px;
            width: 100%;
            opacity: 0.8;
        }

        /* ===== BADGES SECTION (tableau de chasse) ===== */
        .chasse-badges-section {
            padding: var(--space-4) var(--space-5) var(--space-3);
            border-top: 1px solid var(--border);
        }

        .chasse-badges-row {
            display: flex;
            gap: var(--space-6);
            align-items: flex-start;
        }

        .chasse-badges-col {
            flex: 1;
            min-width: 0;
        }

        .chasse-badges-col--ghost {
            border-left: 1px solid var(--border);
            padding-left: var(--space-6);
        }

        .chasse-badges-title {
            font-size: 11px;
            font-weight: 700;
            color: var(--text-light);
            text-transform: uppercase;
            letter-spacing: 0.08em;
            margin-bottom: 8px;
        }

        .badges-grid {
            display: flex;
            flex-wrap: wrap;
            gap: 8px;
        }

        .badge-item {
            display: flex;
            flex-direction: column;
            align-items: center;
            gap: var(--space-2);
            width: 108px;
            cursor: default;
        }

        .badge-item--ghost {
            opacity: 0.35;
            filter: grayscale(1);
        }

        .badge-icon-wrap {
            position: relative;
            width: 82px;
            height: 82px;
            background: rgba(245,10,99,0.08);
            border-radius: 16px;
            display: flex;
            align-items: center;
            justify-content: center;
        }

        .badge-lucide-icon {
            width: 42px;
            height: 42px;
            stroke: var(--accent);
            stroke-width: 2;
        }

        .badge-img-icon {
            width: 78px;
            height: 78px;
            object-fit: contain;
        }

        .badge-count-overlay {
            position: absolute;
            top: -6px;
            right: -6px;
            background: white;
            color: var(--accent, var(--accent));
            border-radius: 20px;
            font-size: 11px;
            font-weight: 800;
            padding: 2px 8px;
            border: 1.5px solid var(--accent, var(--accent));
            line-height: 1.4;
        }

        .badge-lock-overlay {
            position: absolute;
            top: -6px;
            right: -6px;
            font-size: 13px;
        }

        .badge-name {
            font-size: 11px;
            font-weight: 600;
            color: var(--text);
            text-align: center;
            line-height: 1.3;
            width: 100%;
            white-space: normal;
            word-break: break-word;
        }

        .badge-ghost-label {
            font-size: 10px;
            color: var(--text-light);
            text-align: center;
            line-height: 1.3;
        }

        /* ===== DRAWER BADGE PUBLIC ===== */
        .badge-drawer-overlay {
            display: none;
            position: fixed;
            inset: 0;
            background: rgba(0,0,0,0.4);
            z-index: 900;
        }

        .badge-drawer-overlay.active {
            display: block;
        }

        .badge-drawer {
            position: fixed;
            top: 0;
            right: 0;
            height: 100%;
            width: 360px;
            max-width: 100vw;
            background: var(--card);
            z-index: 901;
            transform: translateX(100%);
            transition: transform 280ms cubic-bezier(0.32, 0.72, 0, 1);
            box-shadow: -4px 0 24px rgba(0,0,0,0.18);
            display: flex;
            flex-direction: column;
        }

        .badge-drawer.open {
            transform: translateX(0);
        }

        .badge-drawer-header {
            background: var(--deep-koamaru);
            padding: var(--space-5) var(--space-5) 16px;
            position: relative;
            flex-shrink: 0;
        }

        .badge-drawer-close {
            position: absolute;
            top: 14px;
            right: 14px;
            background: none;
            border: none;
            color: rgba(255,255,255,0.6);
            font-size: 16px;
            cursor: pointer;
            padding: var(--space-1) var(--space-2);
            border-radius: 4px;
            transition: color 0.15s;
        }

        .badge-drawer-close:hover { color: white; }

        .badge-drawer-name {
            font-size: 18px;
            font-weight: 800;
            color: white;
            margin-bottom: var(--space-1);
        }

        .badge-drawer-rank {
            font-size: 12px;
            color: rgba(255,255,255,0.6);
        }

        .badge-drawer-body {
            padding: var(--space-5);
            overflow-y: auto;
            flex: 1;
        }

        .badge-drawer-empty {
            color: var(--text-light);
            font-size: 14px;
            text-align: center;
            margin-top: var(--space-8);
        }

        /* ===== ATTRIBUTION DES POINTS (tableau de chasse) ===== */
        .chasse-attrib {
            background: linear-gradient(135deg, rgba(46,125,50,0.06), rgba(245,166,35,0.05));
            border: 1px solid rgba(46,125,50,0.18);
            border-radius: 10px;
            padding: 12px 16px;
            margin: 16px 0 4px;
        }
        .chasse-attrib-details summary {
            font-size: 12px;
            font-weight: 600;
            color: var(--accent);
            cursor: pointer;
            list-style: none;
            display: flex;
            align-items: center;
            gap: 6px;
            border-top: 1px dashed rgba(46,125,50,0.18);
            padding-top: 8px;
            margin-top: 10px;
        }
        .chasse-attrib-details summary::-webkit-details-marker { display: none; }
        .chasse-attrib-chevron { transition: transform 0.2s; flex-shrink: 0; }
        .chasse-attrib-details[open] .chasse-attrib-chevron { transform: rotate(180deg); }
        .chasse-attrib-row {
            display: flex;
            align-items: center;
            gap: 10px;
            padding: 8px 12px;
            background: #fff9ef;
            border-radius: 6px;
            border-left: 3px solid #f5a623;
        }

        /* ===== BADGE ATTRIBUTION (panneau détail consultant) ===== */
        .attrib-badge {
            font-size: 11px;
            font-weight: 700;
            border-radius: 5px;
            padding: 2px 9px;
            white-space: nowrap;
            display: inline-flex;
            align-items: center;
            gap: 3px;
        }
        .attrib-badge--ok { color: #2e7d32; background: #e7f4ea; }
        .attrib-badge--pending { color: #b8860b; background: #faeeda; }
