để tránh xung đột CTTD
                                        const $badge = $('Phân tích');
                                        $parent.append($badge);
                                        
                                        // Thêm class để CSS set position: relative CHỈ cho element có badge
                                        $parent.addClass('has-phan-tich-badge');
                                    }
                                    // Xử lý các p con (nếu có sub-p)
                                    attachPhanTichBadge($element);
                                }, 300); // Đợi 300ms để CTTD render xong
                            }
                        },
                        complete: function() {
                            $element.removeClass('loading-content'); 
                        }
                    })
                );
                processQueue();
            }
        });
        } catch(e) {
        }
    }
    $(window).on('scroll resize', function () {
        processVisibleParagraphs();
    });
    
    processVisibleParagraphs();
    // Chức năng phân tích điều luật (chỉ cho member_id = 4)
    if (memberID === 4 || memberID === 3 || memberID === 2) {
        // Modal cảnh báo
        function showWarningModal(message) {
            // Tạo modal nếu chưa có
            if ($('#warningModal').length === 0) {
                const modalHTML = `
                    
')) {
                    return para;
                }
                if (para) {
                    return '' + para.replace(/\n/g, '
') + '
';
                }
                return '';
            }).join('\n');
            
            // Clean up multiple line breaks
            html = html.replace(/\n{3,}/g, '\n\n');
            
            return html;
        }
        
        // Panel fixed position
        function closePhanTichPanel() {
            const $panel = $('#phanTichPanel');
            
            if ($panel.length) {
                $panel.removeClass('show');
                setTimeout(() => {
                    $panel.remove();
                }, 300);
            }
            
            // Reset highlight và badge khi đóng panel
            if (currentAnalyzingElement) {
                currentAnalyzingElement.removeClass('highlight-border-persistent');
            }
            if (currentAnalyzingBadge) {
                currentAnalyzingBadge.text('Phân tích').removeClass('analyzing');
                currentAnalyzingBadge.data('analyzing', false);
                currentAnalyzingBadge.data('hovering', false);
                currentAnalyzingBadge.css({display: 'none'}); // Ẩn badge khi đóng
            }
            
            // Reset tất cả các element khác (trong trường hợp có nhiều)
            $('#tab_noi_dung_vb .highlight-border-persistent').removeClass('highlight-border-persistent');
            $('#tab_noi_dung_vb .badge-phan-tich-container.analyzing').each(function() {
                $(this).text('Phân tích').removeClass('analyzing').data('analyzing', false);
            });
            
            // Check: có CTTD pointer đang mở không?
            const $visiblePointers = $('.pointer:visible');
            const hadCTTDOpen = $visiblePointers.length > 0;
            
            if (hadCTTDOpen) {
                // CÓ CTTD đang mở → giữ rightdocinfo ẩn
            } else {
                // KHÔNG có CTTD → SHOW lại rightdocinfo
                const $rightdocinfo = $('#rightdocinfo');
                if ($rightdocinfo.length > 0) {
                    $rightdocinfo.show();
                }
            }
            
            // Reset state
            isAnalyzing = false;
            currentAnalyzingAddress = null;
            currentAnalyzingElement = null;
            currentAnalyzingBadge = null;
            isPanelOpen = false; // Đánh dấu panel đã đóng
        }
        
        // Panel đã song song với rightdocinfo → không cần MutationObserver nữa
        // Resize event để update panel dimensions khi browser resize
        let resizeTimer;
        $(window).on('resize', function() {
            clearTimeout(resizeTimer);
            resizeTimer = setTimeout(function() {
                if (isPanelOpen && $('#phanTichPanel').length > 0) {
                    updatePanelDimensions();
                }
            }, 250); // Debounce 250ms
        });
        // Function để detect và áp dụng dimensions từ rightdocinfo
        function updatePanelDimensions() {
            const $panel = $('#phanTichPanel');
            const $rightdocinfo = $('#rightdocinfo');
            const $docRightCol = $('#doc-right-col');
            
            if ($panel.length === 0) return;
            
            // Ưu tiên: doc-right-col > rightdocinfo
            let $reference = $docRightCol.length > 0 ? $docRightCol : $rightdocinfo;
            
            // Nếu reference bị ẩn (display:none), tạm show để get dimensions
            let wasHidden = false;
            if ($reference.length > 0 && !$reference.is(':visible')) {
                wasHidden = true;
                $reference.css('visibility', 'hidden').show();
            }
            
            if ($reference.length > 0) {
                const refWidth = $reference.outerWidth();
                const refOffset = $reference.offset();
                
                if (refWidth && refOffset) {
                    // Tính vị trí right từ edge màn hình
                    const windowWidth = $(window).width();
                    const rightPosition = windowWidth - (refOffset.left + refWidth);
                    
                    $panel.css({
                        'width': refWidth + 'px',
                        'right': rightPosition + 'px'
                    });
                } else {
                }
                
                // Restore trạng thái hidden nếu cần
                if (wasHidden) {
                    $reference.hide().css('visibility', '');
                }
            }
        }
        function openPhanTichPanel(address, vbID) {
            // Kiểm tra nếu đang phân tích element khác
            if (isAnalyzing && currentAnalyzingAddress && currentAnalyzingAddress !== address) {
                const currentName = getElementDisplayName(currentAnalyzingAddress);
                showWarningModal('Vui lòng chờ phân tích ' + currentName + ' hoàn tất...');
                return;
            }
            
            // Nếu đang phân tích cùng element → không làm gì
            if (isAnalyzing && currentAnalyzingAddress === address) {
                return;
            }
            
            // Panel sẽ fixed position append vào body
            const $rightdocinfo = $('#rightdocinfo');
            
            // KHÔNG ẨN CTTD pointer - cho phép CTTD và panel cùng tồn tại
            
            // ẨN rightdocinfo để tiết kiệm không gian
            if ($rightdocinfo.length > 0) {
                $rightdocinfo.hide();
            }
            
            // XÓA highlight persistent của TẤT CẢ elements cũ trước
            $('#tab_noi_dung_vb .highlight-border-persistent').removeClass('highlight-border-persistent');
            
            // Tìm element đang được phân tích và badge của nó
            const $element = $('[address="' + address + '"]');
            const $badge = $element.find('.badge-phan-tich-container[data-for="' + address + '"]').first();
            
            // Set state
            isAnalyzing = true;
            currentAnalyzingAddress = address;
            currentAnalyzingElement = $element;
            currentAnalyzingBadge = $badge;
            
            // Thêm highlight persistent cho element MỚI này
            $element.addClass('highlight-border-persistent');
            
            // Thay đổi badge thành "Đang phân tích..." và giữ hiển thị
            if ($badge.length > 0) {
                $badge.text('Đang phân tích...').addClass('analyzing');
                // Giữ badge hiển thị và ở đúng vị trí
                $badge.data('analyzing', true);
                $badge.data('hovering', true); // Prevent auto-hide
                
                // Đảm bảo badge hiển thị ở đúng vị trí (vì dùng position: fixed)
                showPhanTichBadgeForParent($element);
            }
            // Tạo panel nếu chưa có - fixed position append vào body
            if ($('#phanTichPanel').length === 0) {
                const panelHTML = `
                    
                        
                        
                            
                                
                                    Đang phân tích...
                                
                                Đang phân tích...
                             
                         
                     `;
                
                // Append vào body (fixed position không cần container cụ thể)
                $('body').append(panelHTML);
                
                // Detect width từ rightdocinfo và áp dụng cho panel
                updatePanelDimensions();
                
                // Trigger show và set flag
                setTimeout(() => {
                    $('#phanTichPanel').addClass('show');
                    isPanelOpen = true;
                }, 10);
            } else {
                $('#phanTichPanelBody').html(`
                    
                        
                            Đang phân tích...
                        
                        Đang phân tích...
                     
                `);
                
                // Update dimensions khi re-open
                updatePanelDimensions();
                
                $('#phanTichPanel').addClass('show');
                isPanelOpen = true;
            }
            // Bind nút đóng và ESC
            $(document).off('click.closePhanTich').on('click.closePhanTich', '.close-phan-tich', function() {
                closePhanTichPanel();
            });
            $(document).off('keyup.closePhanTich').on('keyup.closePhanTich', function(e) {
                if (e.key === 'Escape') closePhanTichPanel();
            });
            
            // Bind nút refresh - phân tích lại
            $(document).off('click.refreshPhanTich').on('click.refreshPhanTich', '.btn-refresh-phan-tich', function(e) {
                e.preventDefault();
                e.stopPropagation();
                
                const $btn = $(this);
                const $icon = $btn.find('i');
                
                // Disable button và thêm animation
                $btn.prop('disabled', true);
                $icon.addClass('fa-spin');
                
                // Show loading trong panel
                $('#phanTichPanelBody').html(`
                    
                        
                            Đang phân tích lại...
                        
                        Đang xóa cache và phân tích lại...
                     
                `);
                
                // Gọi API xóa cache trước
                deletePhanTichCache(address, vbID, function(deleteSuccess) {
                    if (deleteSuccess) {
                        // Sau khi xóa cache, gọi lại API phân tích
                        callPhanTichAPI(address, vbID, function() {
                            // Enable lại button
                            $btn.prop('disabled', false);
                            $icon.removeClass('fa-spin');
                        });
                    } else {
                        $('#phanTichPanelBody').html(`
                            
                                Lỗi! Không thể xóa cache. Vui lòng thử lại.
                            
                        `);
                        $btn.prop('disabled', false);
                        $icon.removeClass('fa-spin');
                    }
                });
            });
            // Gọi API phân tích (dùng function helper)
            callPhanTichAPI(address, vbID);
        }
        
        // Helper: Gọi API phân tích (tách riêng để dùng lại)
        function callPhanTichAPI(address, vbID, callback) {
            const randomServer = Math.floor(Math.random() * 10) + 1;
            $.ajax({
                url: '//tnpl' + randomServer + '.hethongphapluat.com/tien-ich/phan.tich.dieu.luat.php',
                type: 'POST',
                contentType: 'application/json',
                timeout: 300000, // 5 phút
                data: JSON.stringify({
                    address: address,
                    vb_id: vbID
                }),
                success: function(response) {
                    // Reset badge về trạng thái bình thường (nhưng vẫn hiển thị)
                    if (currentAnalyzingBadge) {
                        currentAnalyzingBadge.text('Phân tích').removeClass('analyzing');
                        currentAnalyzingBadge.data('analyzing', false);
                    }
                    
                    // Reset state analyzing để có thể phân tích element khác
                    isAnalyzing = false;
                    
                    if (response.ok) {
                        // Render kết quả phân tích
                        let html = '';
                        html += '';
                        html += '
' + escapeHtml(response.ten_van_ban) + '
';
                        if (response.so_hieu) {
                            html += 'Số hiệu: ' + escapeHtml(response.so_hieu) + '
';
                        }
                        html += 'Điều khoản: ' + escapeHtml(response.address) + '';
                        if (response.from_cache) {
                            html += ' Cache';
                        }
                        html += '';
                        html += '' + markdownToHtml(response.phan_tich) + '
';
                        if (response.usage) {
                            html += '';
                            html += 'Thống kê: ';
                            html += 'Input tokens: ' + (response.usage.promptTokenCount || 0) + ', ';
                            html += 'Output tokens: ' + (response.usage.candidatesTokenCount || 0);
                            html += '
';
                        }
                        $('#phanTichPanelBody').html(html);
                    } else {
                        $('#phanTichPanelBody').html(`
                            
                                Lỗi! ${escapeHtml(response.error || 'Không thể phân tích điều luật.')}
                                Vui lòng thử lại sau.
                            
                        `);
                    }
                    
                    if (callback) callback();
                },
                error: function(xhr, status, error) {
                    // Reset badge về trạng thái bình thường
                    if (currentAnalyzingBadge) {
                        currentAnalyzingBadge.text('Phân tích').removeClass('analyzing');
                        currentAnalyzingBadge.data('analyzing', false);
                    }
                    
                    // Reset state analyzing
                    isAnalyzing = false;
                    
                    let errorMsg = error;
                    if (xhr.responseJSON && xhr.responseJSON.error) {
                        errorMsg = xhr.responseJSON.error;
                    }
                    $('#phanTichPanelBody').html(`
                        
                            Lỗi! Không thể kết nối đến server phân tích.
                            Chi tiết: ${escapeHtml(errorMsg)}
                        
                    `);
                    
                    if (callback) callback();
                }
            });
        }
        
        // Helper: Xóa cache phân tích
        function deletePhanTichCache(address, vbID, callback) {
            const randomServer = Math.floor(Math.random() * 10) + 1;
            $.ajax({
                url: '//tnpl' + randomServer + '.hethongphapluat.com/tien-ich/delete.phan.tich.cache.php',
                type: 'POST',
                contentType: 'application/json',
                timeout: 10000,
                data: JSON.stringify({
                    address: address,
                    vb_id: vbID
                }),
                success: function(response) {
                    if (callback) callback(response.ok || false);
                },
                error: function(xhr, status, error) {
                    if (callback) callback(false);
                }
            });
        }
        
        // Helper: Lấy tên hiển thị của element từ address
        function getElementDisplayName(address) {
            if (!address) return 'nội dung';
            
            const $element = $('[address="' + address + '"]');
            if ($element.length === 0) return address;
            
            // Parse address: vd "dieu_3_khoan_29" -> "Khoản 29 Điều 3"
            // Address format: lớn đến nhỏ (phan > chuong > muc > dieu > khoan > diem)
            const parts = address.split('_');
            const displayParts = [];
            
            for (let i = 0; i < parts.length; i += 2) {
                if (i + 1 < parts.length) {
                    const type = getParentTypeName(parts[i]);
                    const num = parts[i + 1];
                    displayParts.push(type + ' ' + num);
                }
            }
            
            // Reverse để hiển thị từ nhỏ đến lớn: "Khoản 29 Điều 3" (thay vì "Điều 3 Khoản 29")
            return displayParts.reverse().join(' ');
        }
        
        function openPhanTichModal(address, vbID) {
            // Tạo modal nếu chưa có
            if ($('#modalPhanTich').length === 0) {
                const modalHTML = `
                    
                        
                            
                                
                                
                                    
                                        
                                            Đang phân tích...
                                        
                                        Đang phân tích...
                                     
                                 
                                
                             
                         
                     
                `;
                $('body').append(modalHTML);
            }
            
            // Reset và hiển thị modal với loading
            $('#modalPhanTichBody').html(`
                
                    
                        Đang phân tích...
                    
                    Đang phân tích...
                 
            `);
            $('#modalPhanTich').modal('show');
            
            // AJAX request
            const randomServer = Math.floor(Math.random() * 10) + 1;
            $.ajax({
                url: '//tnpl' + randomServer + '.hethongphapluat.com/tien-ich/phan.tich.dieu.luat.php',
                type: 'POST',
                contentType: 'application/json',
                data: JSON.stringify({
                    address: address,
                    vb_id: vbID
                }),
                success: function(response) {
                    if (response.ok) {
                        // Render kết quả phân tích
                        let html = '';
                        
                        // Header thông tin văn bản
                        html += '';
                        html += '
' + escapeHtml(response.ten_van_ban) + '
';
                        if (response.so_hieu) {
                            html += 'Số hiệu: ' + escapeHtml(response.so_hieu) + '
';
                        }
                        html += 'Điều khoản: ' + escapeHtml(response.address) + '';
                        html += '';
                        
                        // Nội dung phân tích (Markdown -> HTML)
                        html += '';
                        html += markdownToHtml(response.phan_tich);
                        html += '
';
                        
                        // Thông tin usage (nếu có)
                        if (response.usage) {
                            html += '';
                            html += 'Thống kê: ';
                            html += 'Input tokens: ' + (response.usage.promptTokenCount || 0) + ', ';
                            html += 'Output tokens: ' + (response.usage.candidatesTokenCount || 0);
                            html += '
';
                        }
                        
                        $('#modalPhanTichBody').html(html);
                    } else {
                        $('#modalPhanTichBody').html(`
                            
                                Lỗi! ${escapeHtml(response.error || 'Không thể phân tích điều luật.')}
                                Vui lòng thử lại sau.
                            
                        `);
                    }
                },
                error: function(xhr, status, error) {
                    let errorMsg = error;
                    if (xhr.responseJSON && xhr.responseJSON.error) {
                        errorMsg = xhr.responseJSON.error;
                    }
                    $('#modalPhanTichBody').html(`
                        
                            Lỗi! Không thể kết nối đến server phân tích.
                            Chi tiết: ${escapeHtml(errorMsg)}
                        
                    `);
                }
            });
        }
        
        // Helpers: show/hide badge cho parent element (dieu, khoan,...) với position: fixed
        function showPhanTichBadgeForParent($parent) {
            // Lấy badge CỦA CHÍNH parent này (match data-for với address của parent)
            const parentAddress = $parent.attr('address');
            const $badge = $parent.find('.badge-phan-tich-container[data-for="' + parentAddress + '"]').first();
            
            if ($badge.length === 0) {
                return;
            }
            
            // Ẩn TẤT CẢ các badge khác để tránh overlap
            $('.badge-phan-tich-container').not($badge).each(function() {
                const $otherBadge = $(this);
                // Chỉ ẩn badge KHÔNG đang analyzing
                if (!$otherBadge.data('analyzing')) {
                    $otherBadge.css({display: 'none'});
                }
            });
            
            // Show badge tạm để tính width
            $badge.css({display: 'inline-block', opacity: 0, visibility: 'hidden'});
            const badgeWidth = $badge.outerWidth();
            
            // Tính toán vị trí fixed dựa trên offset của parent
            const offset = $parent.offset();
            const scrollTop = $(window).scrollTop();
            const scrollLeft = $(window).scrollLeft();
            
            // Position badge top-right của parent và show
            $badge.css({
                display: 'inline-block',
                visibility: 'visible',
                opacity: 1,
                top: (offset.top - scrollTop) + 'px',
                left: (offset.left + $parent.outerWidth() - badgeWidth - scrollLeft - 5) + 'px' // -5px padding
            });
            
            $parent.addClass('highlight-border');
        }
        function hidePhanTichBadgeForParent($parent) {
            const $badge = $parent.find('.badge-phan-tich-container').first();
            if ($badge.length === 0) return;
            
            $badge.css({display: 'none', opacity: 0});
            $parent.removeClass('highlight-border');
        }
        // Biến lưu element đang hover
        let currentHoveredElement = null;
        let hoverDebounceTimer = null;
        // Dùng mousemove để track chính xác element nào đang được hover
        $(document).on('mousemove', '#tab_noi_dung_vb', function(e) {
            // Tìm element gần nhất (phan, chuong, muc, dieu, khoan, diem) tại vị trí chuột
            const $target = $(e.target).closest('phan, chuong, muc, tieumuc, dieu, khoan, diem');
            
            if ($target.length === 0) {
                // Không hover vào element nào
                return;
            }
            
            const address = $target.attr('address');
            
            // Nếu đang hover vào cùng element → skip
            if (currentHoveredElement && currentHoveredElement[0] === $target[0]) {
                return;
            }
            
            // Clear debounce timer cũ
            if (hoverDebounceTimer) {
                clearTimeout(hoverDebounceTimer);
            }
            
            // Debounce để tránh trigger quá nhiều
            hoverDebounceTimer = setTimeout(function() {
                // Element thay đổi
                
                // Set flag hovering cho element mới
                $target.data('hovering', true);
                
                // Cancel timeout nếu có
                const timeoutId = $target.data('hideTimeout');
                if (timeoutId) {
                    clearTimeout(timeoutId);
                }
                
                // Ẩn badge của TẤT CẢ elements khác
                $('#tab_noi_dung_vb phan, #tab_noi_dung_vb chuong, #tab_noi_dung_vb muc, #tab_noi_dung_vb tieumuc, #tab_noi_dung_vb dieu, #tab_noi_dung_vb khoan, #tab_noi_dung_vb diem')
                    .not($target)
                    .each(function() {
                        const $el = $(this);
                        // Chỉ xóa highlight-border, KHÔNG xóa highlight-border-persistent
                        $el.removeClass('highlight-border');
                        
                        // Ẩn badge nếu KHÔNG đang analyzing
                        const $badge = $el.find('.badge-phan-tich-container');
                        if ($badge.length && !$badge.data('analyzing')) {
                            $badge.css({display: 'none'});
                        }
                    });
                
                // Attach badge nếu chưa có
                if (address && $target.find('.badge-phan-tich-container[data-for="' + address + '"]').length === 0) {
                    const parentType = getParentTypeName($target.prop('tagName').toLowerCase());
                    const $badge = $('Phân tích');
                    $target.append($badge);
                    $target.addClass('has-phan-tich-badge');
                }
                
                // Show badge cho element này
                if ($target.find('.badge-phan-tich-container').length > 0) {
                    showPhanTichBadgeForParent($target);
                }
                
                // Update current hovered element
                currentHoveredElement = $target;
            }, 50); // Debounce 50ms
        });
        
        // Event delegation cho hover ra khỏi #tab_noi_dung_vb
        $(document).on('mouseleave', '#tab_noi_dung_vb', function(e) {
            // Clear current hovered element
            currentHoveredElement = null;
            
            // Ẩn tất cả badge không đang analyzing sau một khoảng thời gian
            setTimeout(function() {
                if (currentHoveredElement === null) {
                    // Chỉ ẩn nếu thực sự không hover vào element nào
                    $('#tab_noi_dung_vb phan, #tab_noi_dung_vb chuong, #tab_noi_dung_vb muc, #tab_noi_dung_vb tieumuc, #tab_noi_dung_vb dieu, #tab_noi_dung_vb khoan, #tab_noi_dung_vb diem')
                        .each(function() {
                            const $el = $(this);
                            const $badge = $el.find('.badge-phan-tich-container');
                            if ($badge.length && !$badge.data('analyzing')) {
                                $badge.css({display: 'none'});
                            }
                        });
                }
            }, 300);
        });
        
        // Event delegation cho hover ra khỏi parent (giữ lại cho badge behavior)
        $(document).on('mouseleave', '#tab_noi_dung_vb phan, #tab_noi_dung_vb chuong, #tab_noi_dung_vb muc, #tab_noi_dung_vb tieumuc, #tab_noi_dung_vb dieu, #tab_noi_dung_vb khoan, #tab_noi_dung_vb diem', function(e) {
            const $parent = $(this);
            const parentAddress = $parent.attr('address');
            const $badge = $parent.find('.badge-phan-tich-container[data-for="' + parentAddress + '"]').first();
            
            // Set flag parent not hovering
            $parent.data('hovering', false);
            
            // Nếu badge đang analyzing thì KHÔNG ẩn, GIỮ hiển thị
            if ($badge.length > 0 && $badge.data('analyzing')) {
                return;
            }
            
            // Delay để có thời gian di chuột vào badge
            const timeoutId = setTimeout(() => {
                // Chỉ ẩn nếu cả parent và badge đều không hover và không analyzing
                if ($badge.length > 0 && !$parent.data('hovering') && !$badge.data('hovering') && !$badge.data('analyzing')) {
                    hidePhanTichBadgeForParent($parent);
                }
            }, 300); // Tăng lên 300ms
            
            $parent.data('hideTimeout', timeoutId);
        });
        
        // Hover vào badge → giữ hiển thị
        $(document).on('mouseenter', '.badge-phan-tich-container', function(e) {
            e.stopPropagation();
            const $badge = $(this);
            const $parent = $badge.parent();
            
            $badge.data('hovering', true);
            
            // Cancel timeout của parent
            const timeoutId = $parent.data('hideTimeout');
            if (timeoutId) {
                clearTimeout(timeoutId);
            }
        });
        
        // Hover ra khỏi badge → ẩn nếu không hover parent
        $(document).on('mouseleave', '.badge-phan-tich-container', function(e) {
            const $badge = $(this);
            $badge.data('hovering', false);
            const $parent = $badge.parent();
            
            // Nếu badge đang analyzing thì KHÔNG ẩn, GIỮ hiển thị
            if ($badge.data('analyzing') || $badge.hasClass('analyzing')) {
                return;
            }
            
            setTimeout(() => {
                // Chỉ ẩn nếu cả parent và badge đều không hover và không analyzing
                if (!$parent.data('hovering') && !$badge.data('hovering') && !$badge.data('analyzing') && !$badge.hasClass('analyzing')) {
                    hidePhanTichBadgeForParent($parent);
                }
            }, 300);
        });
        
        // Event delegation cho hover vào badge → hiện tooltip
        $(document).on('mouseenter', '.badge-phan-tich, .badge-phan-tich-container, .badge-phan-tich-fixed', function() {
            const $badge = $(this);
            const parentType = $badge.attr('data-parent-type') || 'Nội dung';
            
            if ($badge.find('.badge-tooltip').length === 0) {
                const $tooltip = $('Phân tích chi tiết nội dung ' + parentType + ' này');
                $badge.append($tooltip);
                setTimeout(() => $tooltip.addClass('show'), 10);
            }
        });
        
        // Event delegation cho hover ra khỏi badge → ẩn tooltip
        $(document).on('mouseleave', '.badge-phan-tich, .badge-phan-tich-container, .badge-phan-tich-fixed', function() {
            const $tooltip = $(this).find('.badge-tooltip');
            if ($tooltip.length > 0) {
                $tooltip.removeClass('show');
                setTimeout(() => $tooltip.remove(), 300);
            }
        });
        
        // Event delegation cho click badge → mở panel
        $(document).on('click', '.badge-phan-tich, .badge-phan-tich-container, .badge-phan-tich-fixed', function(e) {
            e.preventDefault();
            e.stopPropagation();
            
            const $badge = $(this);
            
            // Nếu badge đang analyzing thì không cho click
            if ($badge.hasClass('analyzing') || $badge.data('analyzing')) {
                return;
            }
            
            // Lấy address từ data-for attribute
            const address = $badge.attr('data-for');
            
            if (address && vbID) {
                openPhanTichPanel(address, vbID);
            } else {
                showWarningModal('Không tìm thấy địa chỉ điều luật hoặc ID văn bản!');
            }
        });
        
        // Ẩn badge khi click vào CTTD
        $(document).on('click', 'cttd.chuthichtudong span, dctk span, dctd span', function(e) {
            // Ẩn TẤT CẢ badge KHÔNG đang analyzing
            $('.badge-phan-tich-container').each(function() {
                const $badge = $(this);
                if (!$badge.data('analyzing') && !$badge.hasClass('analyzing')) {
                    $badge.css({display: 'none'});
                }
            });
        });
        
        // Update badge position khi scroll hoặc resize (vì dùng position: fixed)
        function updateBadgePositions() {
            $('.badge-phan-tich-container:visible').each(function() {
                const $badge = $(this);
                const $parent = $badge.parent();
                
                // Cập nhật position nếu parent đang hover HOẶC badge đang analyzing
                if ($parent.length && ($parent.is(':hover') || $badge.data('analyzing'))) {
                    // Re-calculate position
                    const offset = $parent.offset();
                    const scrollTop = $(window).scrollTop();
                    const scrollLeft = $(window).scrollLeft();
                    const badgeWidth = $badge.outerWidth();
                    
                    $badge.css({
                        top: (offset.top - scrollTop) + 'px',
                        left: (offset.left + $parent.outerWidth() - badgeWidth - scrollLeft - 5) + 'px'
                    });
                }
            });
        }
        
        $(window).on('scroll', updateBadgePositions);
        $(window).on('resize', updateBadgePositions);
    }
});