{"id":13553,"date":"2025-11-26T13:34:11","date_gmt":"2025-11-26T13:34:11","guid":{"rendered":"https:\/\/www.365scores.com\/news\/?p=13553"},"modified":"2025-11-27T08:56:25","modified_gmt":"2025-11-27T08:56:25","slug":"ramos-liga-mx-impact-rating-liga-mx","status":"publish","type":"post","link":"https:\/\/www.365scores.com\/news\/ramos-liga-mx-impact-rating-liga-mx","title":{"rendered":"The Ageless Commander: How Sergio Ramos&#8217;s Balanced Impact Rating Defies Time in Liga MX"},"content":{"rendered":"\n<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>LIGA MX Apertura Impact Report<\/title>\n    <script src=\"https:\/\/cdn.tailwindcss.com\"><\/script>\n    <script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js\"><\/script>\n    <!-- New: Plugin to show data labels (values) on the bars (Only used for other charts now) -->\n    <script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chartjs-plugin-datalabels@2.2.0\"><\/script>\n    <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@300;400;600;800&#038;display=swap\" rel=\"stylesheet\">\n    \n    <style>\n        body { font-family: 'Inter', sans-serif; background-color: #F3F4F6; }\n        \n        ::-webkit-scrollbar { width: 8px; }\n        ::-webkit-scrollbar-track { background: #f1f1f1; }\n        ::-webkit-scrollbar-thumb { background: #cbd5e1; border-radius: 4px; }\n        ::-webkit-scrollbar-thumb:hover { background: #94a3b8; }\n\n        .chart-container {\n            position: relative;\n            width: 100%;\n            margin-left: auto;\n            margin-right: auto;\n        }\n\n        .card-hover:hover {\n            transform: translateY(-2px);\n            box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);\n            transition: all 0.3s ease;\n        }\n        \n        .chart-height-sm { height: 300px; max-height: 300px; }\n        .chart-height-md { height: 400px; max-height: 400px; }\n        .chart-height-lg { height: 500px; max-height: 500px; }\n        \n        \/* Add cursor pointer to chart for visual feedback *\/\n        #ramosChart { cursor: pointer; }\n    <\/style>\n    <\/head>\n<body class=\"text-gray-800 antialiased\">\n\n    <header class=\"bg-gradient-to-r from-violet-600 via-pink-500 to-cyan-500 text-white shadow-lg\">\n        <div class=\"container mx-auto px-6 py-12 text-center\">\n            <!-- Added Liga MX Logo\/Icon -->\n            <img decoding=\"async\" \n                src=\"https:\/\/placehold.co\/100x100\/ffffff\/000000?text=LIGA+MX\" \n                onerror=\"this.onerror=null;this.src='https:\/\/placehold.co\/100x100\/ffffff\/000000?text=LIGA+MX';\" \n                alt=\"Liga MX Logo Placeholder\" \n                class=\"mx-auto mb-6 rounded-full p-2 bg-white shadow-xl ring-4 ring-white\/50\"\n            \/>\n            \n            <h1 class=\"text-4xl md:text-6xl font-extrabold tracking-tight mb-4\">LIGA MX APERTURA<\/h1>\n            <p class=\"text-xl md:text-2xl font-light opacity-90 mb-6\">Regular Season Impact Report<\/p>\n            <p class=\"max-w-2xl mx-auto text-base md:text-lg opacity-80 leading-relaxed\">\n                Before the playoff frenzy begins, we analyze the <strong>Impact Rating (IR)<\/strong> of the league&#8217;s top performers. From elite European imports to high-flying goalkeepers, discover who truly defined the regular season.\n            <\/p>\n            <div class=\"mt-8\">\n                <span class=\"inline-block bg-white text-violet-600 font-bold py-2 px-6 rounded-full shadow-md text-sm uppercase tracking-wider\">\n                    Data: Regular Season 2025\n                <\/span>\n            <\/div>\n        <\/div>\n    <\/header>\n\n    <main class=\"container mx-auto px-4 py-12 grid grid-cols-1 gap-12\">\n\n        <section class=\"bg-white rounded-xl shadow-md p-6 md:p-8\">\n            <div class=\"mb-6 border-l-4 border-pink-500 pl-4\">\n                <h2 class=\"text-2xl font-bold text-gray-900\">SPOTLIGHT: Sergio Ramos\u2014Balanced Veteran Faces Playoff Rival<\/h2>\n                <p class=\"text-gray-600 mt-2\">\n                    Ramos is statistically unique among defenders. His ability to impact the game offensively (24.28 Att IR) is almost identical to his defensive work (20.68 Def IR). Below are his <strong>Top 5 Performances<\/strong> of the season, showcasing his ability to dominate on both ends.\n                <\/p>\n            <\/div>\n\n            <div class=\"grid grid-cols-1 lg:grid-cols-3 gap-8\">\n                <div class=\"lg:col-span-2\">\n                    <div class=\"chart-container chart-height-md\">\n                        <canvas id=\"ramosChart\"><\/canvas>\n                    <\/div>\n                <\/div>\n\n                <div class=\"flex flex-col space-y-6\">\n                    <div class=\"bg-gradient-to-br from-gray-900 to-gray-800 text-white rounded-lg p-6 shadow-xl relative overflow-hidden\">\n                        <div class=\"absolute top-0 right-0 -mt-2 -mr-2 w-24 h-24 bg-red-500 rounded-full opacity-20 blur-xl\"><\/div>\n                        <h3 class=\"text-lg font-bold text-red-400 mb-2 uppercase tracking-wide\">QUARTER-FINALS WARNING<\/h3>\n                        <p class=\"text-sm opacity-80 mb-4\">Ramos&#8217;s lowest impact game (21.0 IR) was against his upcoming rival, **Club Am\u00e9rica**. Monterrey must rely on the veteran defender recovering his elite form to advance.<\/p>\n                        \n                        <div class=\"border-t border-gray-700 pt-4\">\n                            <div class=\"flex justify-between items-end mb-1\">\n                                <span class=\"text-xs text-gray-400\">Matchup<\/span>\n                                <span class=\"font-bold text-sm\">Monterrey vs. Club Am\u00e9rica<\/span>\n                            <\/div>\n                            <div class=\"flex justify-between items-end mb-4\">\n                                <span class=\"text-xs text-gray-400\">Worst Game IR<\/span>\n                                <span class=\"text-3xl font-bold text-red-500\">21.0<\/span>\n                            <\/div>\n                            <div class=\"w-full bg-gray-700 rounded-full h-1.5 mb-2\">\n                                <div class=\"bg-red-500 h-1.5 rounded-full\" style=\"width: 28%\"><\/div>\n                            <\/div>\n                            <p class=\"text-xs text-gray-500 italic text-right\">Avg Season IR: 44.96<\/p>\n                        <\/div>\n                    <\/div>\n                    \n                    <div class=\"bg-pink-50 p-4 rounded-lg border border-pink-100\">\n                        <h4 class=\"font-bold text-pink-800 text-sm mb-2\">Performance Insight<\/h4>\n                        <p class=\"text-xs text-pink-700 leading-relaxed\">\n                            While Ramos had a masterclass against Santos Laguna (74.3 IR), his struggle against Club Am\u00e9rica highlights the tactical battle awaiting Monterrey. His ability to dominate the box will define the series.\n                        <\/p>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/section>\n        \n        <section class=\"bg-white rounded-xl shadow-md p-6 md:p-8\">\n             <div class=\"mb-6 border-l-4 border-violet-500 pl-4\">\n                <div class=\"flex items-center justify-between\">\n                    <h3 class=\"text-2xl font-bold text-gray-900\">Featured Comparison: The 17-Year Gap<\/h3>\n                    <span class=\"bg-violet-100 text-violet-800 text-sm font-semibold px-2.5 py-0.5 rounded\">Age Range in Top 10<\/span>\n                <\/div>\n                <p class=\"text-gray-600 mt-2\">\n                    The top 10 features a stark contrast: <strong>Sergio Ramos (39)<\/strong>, defying age with world-class positioning, versus <strong>Oscar Garc\u00eda (22)<\/strong>, the Leon prodigy relying on explosive reflexes.\n                <\/p>\n            <\/div>\n\n            <div class=\"grid grid-cols-1 md:grid-cols-2 gap-6\">\n                <div class=\"bg-slate-50 p-4 rounded-lg border border-slate-200 card-hover\">\n                    <div class=\"flex items-center mb-3\">\n                        <div class=\"w-10 h-10 rounded-full bg-pink-500 flex items-center justify-center text-white font-bold mr-3\">SR<\/div>\n                        <div>\n                            <h4 class=\"font-bold text-gray-900\">\n                                <a href=\"https:\/\/www.365scores.com\/en-us\/football\/player\/sergio-ramos-114\" target=\"_blank\" class=\"hover:text-pink-600 hover:underline\">Sergio Ramos <span class=\"text-xs font-normal text-gray-500\">(Monterrey)<\/span><\/a>\n                            <\/h4>\n                            <p class=\"text-xs text-gray-500\">Center Back<\/p>\n                        <\/div>\n                        <div class=\"ml-auto text-2xl font-bold text-pink-600\">39<span class=\"text-xs font-normal text-gray-400 block text-right\">yo<\/span><\/div>\n                    <\/div>\n                    <div class=\"space-y-3\">\n                        <div>\n                            <div class=\"flex justify-between text-xs mb-1\">\n                                <span>Total Impact<\/span>\n                                <span class=\"font-bold\">44.96<\/span>\n                            <\/div>\n                            <div class=\"w-full bg-gray-200 rounded-full h-2\">\n                                <div class=\"bg-pink-500 h-2 rounded-full\" style=\"width: 80%\"><\/div>\n                            <\/div>\n                        <\/div>\n                        <p class=\"text-xs text-gray-500 mt-2\">\n                            <strong>Strength:<\/strong> Balanced. Nearly equal attacking and defensive contributions.\n                        <\/p>\n                    <\/div>\n                <\/div>\n\n                <div class=\"bg-slate-50 p-4 rounded-lg border border-slate-200 card-hover\">\n                    <div class=\"flex items-center mb-3\">\n                        <div class=\"w-10 h-10 rounded-full bg-cyan-500 flex items-center justify-center text-white font-bold mr-3\">OG<\/div>\n                        <div>\n                            <h4 class=\"font-bold text-gray-900\">\n                                <a href=\"https:\/\/www.365scores.com\/en-us\/football\/player\/oscar-garcia-124918\" target=\"_blank\" class=\"hover:text-cyan-600 hover:underline\">Oscar Garc\u00eda <span class=\"text-xs font-normal text-gray-500\">(Leon)<\/span><\/a>\n                            <\/h4>\n                            <p class=\"text-xs text-gray-500\">Goalkeeper<\/p>\n                        <\/div>\n                        <div class=\"ml-auto text-2xl font-bold text-cyan-600\">22<span class=\"text-xs font-normal text-gray-400 block text-right\">yo<\/span><\/div>\n                    <\/div>\n                    <div class=\"space-y-3\">\n                        <div>\n                            <div class=\"flex justify-between text-xs mb-1\">\n                                <span>Total Impact<\/span>\n                                <span class=\"font-bold\">44.53<\/span>\n                            <\/div>\n                            <div class=\"w-full bg-gray-200 rounded-full h-2\">\n                                <div class=\"bg-cyan-500 h-2 rounded-full\" style=\"width: 79%\"><\/div>\n                            <\/div>\n                        <\/div>\n                        <p class=\"text-xs text-gray-500 mt-2\">\n                            <strong>Strength:<\/strong> Defensive Volume. High-risk, high-reward shot stopping.\n                        <\/p>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/section>\n\n        <section class=\"bg-white rounded-xl shadow-md p-6 md:p-8\">\n            <div class=\"mb-6 border-l-4 border-cyan-500 pl-4\">\n                <h2 class=\"text-2xl font-bold text-gray-900\">Regular Season Summary: The Top 10 Leaderboard<\/h2>\n                <p class=\"text-gray-600 mt-2\">\n                    This definitive ranking of the regular season players by Impact Rating reveals the top performers across all positions. Click a player&#8217;s name to view their 365Scores profile in a new tab.\n                <\/p>\n            <\/div>\n            \n            <div class=\"grid grid-cols-1 gap-8 items-center\">\n                <!-- List Container: Adjusted to be w-full for full responsiveness -->\n                <div id=\"topTenListContainer\" class=\"w-full\">\n                    <!-- Player list will be injected here by JavaScript -->\n                <\/div>\n                \n                <div class=\"bg-gray-50 rounded-lg p-6 border border-gray-100 mt-4\">\n                    <h3 class=\"text-lg font-semibold text-cyan-600 mb-4 border-b pb-2\">Leaderboard Key Takeaways<\/h3>\n                    <ul class=\"space-y-4\">\n                        <li class=\"flex items-start\">\n                            <span class=\"text-2xl mr-3\">\ud83d\udc51<\/span>\n                            <p class=\"text-sm text-gray-700\"><strong>Sergio Canales (56.33 IR)<\/strong> dominates with a rare blend of elite attacking output and significant defensive work rate.<\/p>\n                        <\/li>\n                        <li class=\"flex items-start\">\n                            <span class=\"text-2xl mr-3\">\ud83e\udde4<\/span>\n                            <p class=\"text-sm text-gray-700\"><strong>Three Goalkeepers<\/strong> made the top 10, an anomaly driven by high-volume, high-xG saves, proving that shot-stoppers were high-leverage assets this season.<\/p>\n                        <\/li>\n                        <li class=\"flex items-start\">\n                            <span class=\"text-2xl mr-3\">\u26a1<\/span>\n                            <p class=\"text-sm text-gray-700\"><strong>Toluca &#038; Tigres<\/strong> both feature multiple players in the top 10 (Paulinho, A. Vega, Angel Correa, Juan Brunetta), signaling strong offensive depth entering the playoffs.<\/p>\n                        <\/li>\n                    <\/ul>\n                <\/div>\n\n            <\/div>\n        <\/section>\n\n        <section class=\"grid grid-cols-1 md:grid-cols-2 gap-8\">\n            <div class=\"bg-white rounded-xl shadow-md p-6 md:p-8 col-span-1 md:col-span-2\">\n                <div class=\"mb-6 border-l-4 border-pink-500 pl-4\">\n                    <h2 class=\"text-2xl font-bold text-gray-900\">Impact Profile: Attacking vs. Defensive Contribution<\/h2>\n                    <p class=\"text-gray-600 mt-2\">\n                        This scatter plot separates the <strong>Goal Creators (high Y-axis)<\/strong> from the <strong>Goal Preventers (high X-axis)<\/strong>. AMCs cluster in the top-right quadrant, highlighting balanced offensive leadership.\n                    <\/p>\n                <\/div>\n                \n                <!-- Chart Container: Adjusted to be w-full for full responsiveness -->\n                <div class=\"chart-container chart-height-lg w-full\">\n                    <canvas id=\"scatterChart\"><\/canvas>\n                <\/div>\n                <p class=\"text-center text-xs text-gray-400 mt-4 italic\">Bubble size represents Total Average Impact Rating<\/p>\n            <\/div>\n        <\/section>\n\n        <section class=\"grid grid-cols-1 md:grid-cols-3 gap-8\">\n            <div class=\"bg-white rounded-xl shadow-md p-6 col-span-1 md:col-span-3\">\n                <div class=\"mb-6 border-l-4 border-violet-500 pl-4\">\n                    <h3 class=\"text-2xl font-bold text-gray-900\">Positional Dominance Breakdown<\/h3>\n                    <p class=\"text-gray-600 mt-2\">\n                        A quick look at how the top talent is distributed across the pitch in the Apertura regular season.\n                    <\/p>\n                <\/div>\n                <div class=\"md:grid md:grid-cols-3 gap-8\">\n                    <div class=\"col-span-1 md:col-span-1\">\n                        <div class=\"chart-container\" style=\"height: 250px; max-height: 250px;\">\n                            <canvas id=\"positionChart\"><\/canvas>\n                        <\/div>\n                    <\/div>\n                    <div class=\"col-span-2 text-sm pt-4 md:pt-0 flex flex-col justify-center\">\n                        <ul class=\"space-y-2 text-gray-700\">\n                            <li><span class=\"font-semibold text-pink-500\">AMC (30%):<\/span> The most represented role, confirming the importance of creative attacking midfielders.<\/li>\n                            <li><span class=\"font-semibold text-violet-500\">Forward (30%):<\/span> Pure strikers and wide forwards, essential for converting chances into goals.<\/li>\n                            <li><span class=\"font-semibold text-cyan-500\">Goalkeeper (30%):<\/span> The high percentage here highlights the impact of elite shot-stopping in tight Liga MX matches.<\/li>\n                            <li><span class=\"font-semibold text-green-600\">Center Back (10%):<\/span> Dominated solely by Sergio Ramos, the one defender versatile enough to join the offensive-minded group.<\/li>\n                        <\/ul>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/section>\n\n        <footer class=\"text-center py-8 text-gray-500 text-sm border-t border-gray-200 mt-4\">\n            <p class=\"mb-2\">Data sourced from 365Scores Regular Season Analytics.<\/p>\n            <p>\n                <a href=\"https:\/\/www.365scores.com\/football\/league\/liga-mx-141\" class=\"text-violet-600 hover:underline font-semibold\" target=\"_blank\">\n                    View Live Playoff Scores &#038; Stats on 365Scores\n                <\/a>\n            <\/p>\n        <\/footer>\n\n    <\/main>\n\n    <script>\n        \/\/ --- Data Definitions ---\n        const top10Data = [\n            { rank: 1, name: \"Sergio Canales\", club: \"Monterrey\", position: \"AMC\", age: 34, total: 56.33, att: 48.96, def: 7.38, url: \"https:\/\/www.365scores.com\/en-us\/football\/player\/sergio-canales-3640\" },\n            { rank: 2, name: \"Juan Brunetta\", club: \"Tigres UANL\", position: \"AMC\", age: 28, total: 51.42, att: 47.96, def: 3.46, url: \"https:\/\/www.365scores.com\/en-us\/football\/player\/juan-brunetta-45856\" },\n            { rank: 3, name: \"Antonio Rodr\u00edguez\", club: \"Club Tijuana\", position: \"GK\", age: 33, total: 49.20, att: 4.49, def: 3.41, url: \"https:\/\/www.365scores.com\/en-us\/football\/player\/antonio-rodriguez-8815\" }, \n            { rank: 4, name: \"A. Vega\", club: \"Toluca\", position: \"FWD\", age: 28, total: 45.19, att: 42.26, def: 2.94, url: \"https:\/\/www.365scores.com\/en-us\/football\/player\/alexis-vega-39139\" },\n            { rank: 5, name: \"Sergio Ramos\", club: \"Monterrey\", position: \"CB\", age: 39, total: 44.96, att: 24.28, def: 20.68, url: \"https:\/\/www.365scores.com\/en-us\/football\/player\/sergio-ramos-114\" },\n            { rank: 6, name: \"Oscar Garc\u00eda\", club: \"Leon\", position: \"GK\", age: 22, total: 44.53, att: 1.76, def: 4.49, url: \"https:\/\/www.365scores.com\/en-us\/football\/player\/oscar-garcia-124918\" },\n            { rank: 7, name: \"Agust\u00edn Palavecino\", club: \"Necaxa\", position: \"AMC\", age: 29, total: 43.75, att: 40.10, def: 3.65, url: \"https:\/\/www.365scores.com\/en-us\/football\/player\/agustin-palavecino-61029\" },\n            { rank: 8, name: \"Angel Correa\", club: \"Tigres UANL\", position: \"FWD\", age: 30, total: 43.62, att: 39.78, def: 3.84, url: \"https:\/\/www.365scores.com\/en-us\/football\/player\/angel-correa-13147\" },\n            { rank: 9, name: \"Paulinho\", club: \"Toluca\", position: \"FWD\", age: 33, total: 41.97, att: 37.74, def: 4.24, url: \"https:\/\/www.365scores.com\/en-us\/football\/player\/paulinho-10653\" },\n            { rank: 10, name: \"Carlos Acevedo\", club: \"Santos Laguna\", position: \"GK\", age: 29, total: 40.77, att: -0.54, def: 4.16, url: \"https:\/\/www.365scores.com\/en-us\/football\/player\/carlos-acevedo-45401\" }\n        ];\n\n        const ramosGames = [\n            \/\/ Removed matchUrl property as requested\n            { game: \"Monterrey - Santos Laguna\", date: \"2025-09-28\", total: 74.3, att: 23.0, def: 51.3 },\n            { game: \"Monterrey - Pumas UNAM\", date: \"2025-10-19\", total: 70.2, att: 54.9, def: 15.3 },\n            { game: \"Monterrey - Tigres UANL\", date: \"2025-11-02\", total: 56.8, att: 30.4, def: 26.4 },\n            { game: \"Atl\u00e9tico San Luis - Monterrey\", date: \"2025-07-19\", total: 55.7, att: 13.4, def: 42.3 },\n            { game: \"Monterrey - Necaxa\", date: \"2025-08-24\", total: 53.7, att: 37.2, def: 16.5 }\n        ];\n\n        \/\/ --- Helper Functions ---\n        \n        function formatLabel(label) {\n            \/\/ Function to split long labels for axis (Y-Axis) ticks\n            if (label.length <= 16) return label;\n            const words = label.split(' ');\n            const lines = [];\n            let currentLine = words[0];\n\n            for (let i = 1; i < words.length; i++) {\n                if (currentLine.length + 1 + words[i].length <= 16) {\n                    currentLine += ' ' + words[i];\n                } else {\n                    lines.push(currentLine);\n                    currentLine = words[i];\n                }\n            }\n            lines.push(currentLine);\n            return lines;\n        }\n\n        \/\/ Standard Tooltip Title config (required for all Charts to handle multi-line labels correctly)\n        const standardTooltipTitleConfig = {\n            callbacks: {\n                title: function(tooltipItems) {\n                    const item = tooltipItems[0];\n                    let label = item.chart.data.labels[item.dataIndex];\n                    \/\/ Join array labels back into a single string for the title\n                    if (Array.isArray(label)) {\n                        return label.join(' ');\n                    } else {\n                        return label;\n                    }\n                }\n            }\n        };\n\n        \/\/ --- New Function: Top 10 Leaderboard (List) ---\n        function renderTopTenList() {\n            const container = document.getElementById('topTenListContainer');\n            if (!container) return;\n\n            let htmlContent = `<div class=\"space-y-4\">`;\n\n            top10Data.forEach(player => {\n                \/\/ Determine color based on rank for visual appeal\n                let rankColor = 'bg-gray-200 text-gray-800 border-gray-300';\n                let totalColor = 'text-pink-600';\n                \n                if (player.rank === 1) {\n                    rankColor = 'bg-yellow-400 text-gray-900 font-bold border-yellow-500';\n                    totalColor = 'text-yellow-600';\n                } else if (player.rank <= 3) {\n                    rankColor = 'bg-violet-500 text-white font-bold border-violet-600';\n                } else if (player.rank <= 5) {\n                    rankColor = 'bg-cyan-500 text-white font-semibold border-cyan-600';\n                }\n\n                htmlContent += `\n                    <div class=\"flex items-center p-4 bg-white border-l-4 rounded-lg shadow-sm hover:shadow-md transition card-hover\" style=\"border-left-color: ${player.rank === 1 ? '#F59E0B' : player.rank <= 3 ? '#8B5CF6' : '#06B6D4'};\">\n                        <div class=\"flex-shrink-0 w-8 h-8 rounded-full flex items-center justify-center text-sm mr-4 ${rankColor}\">\n                            #${player.rank}\n                        <\/div>\n                        \n                        <div class=\"flex-grow min-w-0\">\n                            <!-- Link target=\"_blank\" is already set to open in new tab -->\n                            <a href=\"${player.url}\" target=\"_blank\" class=\"font-semibold text-lg text-gray-900 hover:text-violet-600 hover:underline truncate block\">\n                                ${player.name} <span class=\"text-sm font-normal text-gray-500 ml-1\">(${player.club})<\/span>\n                            <\/a>\n                            <p class=\"text-sm text-gray-500\">${player.position}<\/p>\n                        <\/div>\n\n                        <div class=\"text-right flex-shrink-0 ml-4\">\n                            <span class=\"text-2xl font-extrabold ${totalColor}\">${player.total.toFixed(2)}<\/span>\n                            <p class=\"text-xs text-gray-400\">IR<\/p>\n                        <\/div>\n                    <\/div>\n                `;\n            });\n\n            htmlContent += `<\/div>`;\n            container.innerHTML = htmlContent;\n        }\n\n\n        \/\/ --- Chart 2: Scatter Plot (Att vs Def) ---\n        function initScatterChart() {\n            const ctxScatter = document.getElementById('scatterChart').getContext('2d');\n            \n            const scatterDataPoints = top10Data.map(p => ({\n                x: p.def,\n                y: p.att,\n                r: p.total \/ 3,\n                player: p.name,\n                position: p.position,\n                club: p.club, \/\/ Include club for tooltip\n                url: p.url \n            }));\n\n            new Chart(ctxScatter, {\n                type: 'bubble',\n                data: {\n                    datasets: [{\n                        label: 'Players',\n                        data: scatterDataPoints,\n                        backgroundColor: (ctx) => {\n                            const val = ctx.raw?.position;\n                            if (val === 'AMC') return '#EC4899';\n                            if (val === 'GK') return '#06B6D4';\n                            if (val === 'CB') return '#10B981';\n                            return '#8B5CF6';\n                        },\n                        borderColor: '#fff',\n                        borderWidth: 2\n                    }]\n                },\n                options: {\n                    responsive: true,\n                    maintainAspectRatio: false,\n                    plugins: {\n                        tooltip: {\n                            callbacks: {\n                                title: standardTooltipTitleConfig.callbacks.title,\n                                label: function(context) {\n                                    const p = context.raw;\n                                    return `${p.player} (${p.club}): Att ${p.y.toFixed(2)}, Def ${p.x.toFixed(2)}`;\n                                }\n                            }\n                        },\n                        legend: { display: false }\n                    },\n                    scales: {\n                        x: {\n                            title: { display: true, text: 'Avg. Defensive Impact Rating', font: {weight: 'bold'} },\n                            grid: { color: '#E5E7EB' }\n                        },\n                        y: {\n                            title: { display: true, text: 'Avg. Attacking Impact Rating', font: {weight: 'bold'} },\n                            grid: { color: '#E5E7EB' }\n                        }\n                    }\n                }\n            });\n        }\n\n        \/\/ --- Chart 3: Positional Breakdown (Doughnut) ---\n        function initPositionChart() {\n            const ctxPos = document.getElementById('positionChart').getContext('2d');\n            \n            new Chart(ctxPos, {\n                type: 'doughnut',\n                data: {\n                    labels: ['AMC', 'Forward', 'Goalkeeper', 'Center Back'],\n                    datasets: [{\n                        data: [3, 3, 3, 1],\n                        backgroundColor: ['#EC4899', '#8B5CF6', '#06B6D4', '#10B981'],\n                        borderWidth: 0,\n                        hoverOffset: 4\n                    }]\n                },\n                options: {\n                    responsive: true,\n                    maintainAspectRatio: false,\n                    plugins: {\n                        legend: { position: 'right', labels: { usePointStyle: true } },\n                        tooltip: {\n                            callbacks: {\n                                \/\/ Default callbacks for doughnut are fine, just ensuring title is correct\n                                title: standardTooltipTitleConfig.callbacks.title,\n                            }\n                        }\n                    },\n                    cutout: '70%'\n                }\n            });\n        }\n\n        \/\/ --- Chart 4: Sergio Ramos Deep Dive (Stacked Bar) ---\n        function initRamosChart() {\n            const ctxRamos = document.getElementById('ramosChart').getContext('2d');\n\n            const ramosTooltipConfig = {\n                callbacks: {\n                    title: function(tooltipItems) {\n                        const item = tooltipItems[0];\n                        let label = item.chart.data.labels[item.dataIndex];\n                        \/\/ Join all lines except the date for the tooltip title\n                        return Array.isArray(label) ? label.slice(0, label.length - 1).join(' ') : label;\n                    },\n                    afterTitle: function(tooltipItems) {\n                        const item = tooltipItems[0];\n                        const dataIndex = item.dataIndex;\n                        const dateString = ramosGames[dataIndex].date; \/\/ Get the full date string\n                        \/\/ Use the last element as the date subtitle\n                        if (dateString) {\n                            \/\/ Extract and format the year from the date string for accuracy\n                            const year = dateString.substring(0, 4); \n                            const shortDate = dateString.substring(5);\n                            return `Date: ${year}-${shortDate}`;\n                        }\n                        return null;\n                    },\n                    label: function(context) {\n                        return `${context.dataset.label}: ${context.formattedValue}`;\n                    },\n                    footer: function(tooltipItems) {\n                        \/\/ Calculate total impact and display it in the footer\n                        const dataIndex = tooltipItems[0].dataIndex;\n                        const totalIR = ramosGames[dataIndex].total.toFixed(1);\n                        return `Total IR: ${totalIR}`;\n                    }\n                }\n            };\n            \n            \/\/ Modified label generation to include the short date (MM-DD)\n            const labelsRamos = ramosGames.map(g => {\n                const formattedName = formatLabel(g.game);\n                const shortDate = g.date.substring(5); \/\/ Extracts MM-DD\n                \n                if (Array.isArray(formattedName)) {\n                    \/\/ Combine the multi-line name and the short date\n                    return [...formattedName, shortDate];\n                } else {\n                    \/\/ This case should not happen with formatLabel, but ensures the date is always the last element.\n                    return [formattedName, shortDate]; \n                }\n            });\n\n            new Chart(ctxRamos, {\n                type: 'bar',\n                data: {\n                    labels: labelsRamos,\n                    datasets: [\n                        {\n                            label: 'Attacking Impact',\n                            data: ramosGames.map(g => g.att),\n                            backgroundColor: '#EC4899',\n                            stack: 'Stack 0',\n                        },\n                        {\n                            label: 'Defensive Impact',\n                            data: ramosGames.map(g => g.def),\n                            backgroundColor: '#06B6D4',\n                            stack: 'Stack 0',\n                            borderRadius: { topLeft: 6, topRight: 6 }\n                        }\n                    ]\n                },\n                options: {\n                    responsive: true,\n                    maintainAspectRatio: false,\n                    onHover: (event, elements) => {\n                        \/\/ Keeps pointer cursor for visual feedback, even without a click action\n                        event.chart.canvas.style.cursor = elements.length > 0 ? 'pointer' : 'default';\n                    },\n                    \/\/ REMOVED onClick handler\n                    plugins: {\n                        tooltip: ramosTooltipConfig, \/\/ Use specialized tooltip config\n                        legend: { position: 'top' }\n                    },\n                    scales: {\n                        x: {\n                            grid: { display: false },\n                            ticks: {\n                                autoSkip: false,\n                                maxRotation: 0,\n                                \/\/ CUSTOM CALLBACK: Filters out the last element (the date) for axis display only\n                                callback: function(value, index, values) {\n                                    const fullLabel = this.chart.data.labels[index];\n                                    if (Array.isArray(fullLabel)) {\n                                        return fullLabel.slice(0, fullLabel.length - 1);\n                                    }\n                                    return fullLabel;\n                                }\n                            }\n                        },\n                        y: {\n                            beginAtZero: true,\n                            title: { display: true, text: 'Impact Rating Contribution' },\n                            stacked: true\n                        }\n                    }\n                }\n            });\n        }\n\n        window.addEventListener('load', () => {\n            renderTopTenList(); \n            initScatterChart();\n            initPositionChart();\n            initRamosChart();\n        });\n\n    <\/script>\n<\/body>\n<\/html>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>LIGA MX Apertura Impact Report LIGA MX APERTURA Regular Season Impact Report Before the playoff frenzy begins, we analyze the Impact Rating (IR) of the league&#8217;s top performers. From elite European imports to high-flying goalkeepers, discover who truly defined the regular season. Data: Regular Season 2025 SPOTLIGHT: Sergio Ramos\u2014Balanced Veteran Faces Playoff Rival Ramos is &hellip;<\/p>\n","protected":false},"author":37,"featured_media":13552,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"rank_math_title":"","rank_math_description":"","rank_math_canonical_url":"","rank_math_focus_keyword":"Sergio Ramos","rank_math_facebook_image":"","rank_math_robots":[],"footnotes":""},"categories":[9],"tags":[3616,3617,2324,108],"content-tags":[],"article_type":[3332],"entity_type":[3333,3334],"inspiration":[3340],"class_list":["post-13553","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-soccer","tag-liga-mx","tag-monterrey-fc","tag-sergio-ramos","tag-soccer","article_type-seo","entity_type-athlete","entity_type-competition","inspiration-relevancy-trending"],"_links":{"self":[{"href":"https:\/\/www.365scores.com\/news\/wp-json\/wp\/v2\/posts\/13553","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.365scores.com\/news\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.365scores.com\/news\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.365scores.com\/news\/wp-json\/wp\/v2\/users\/37"}],"replies":[{"embeddable":true,"href":"https:\/\/www.365scores.com\/news\/wp-json\/wp\/v2\/comments?post=13553"}],"version-history":[{"count":5,"href":"https:\/\/www.365scores.com\/news\/wp-json\/wp\/v2\/posts\/13553\/revisions"}],"predecessor-version":[{"id":13563,"href":"https:\/\/www.365scores.com\/news\/wp-json\/wp\/v2\/posts\/13553\/revisions\/13563"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.365scores.com\/news\/wp-json\/wp\/v2\/media\/13552"}],"wp:attachment":[{"href":"https:\/\/www.365scores.com\/news\/wp-json\/wp\/v2\/media?parent=13553"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.365scores.com\/news\/wp-json\/wp\/v2\/categories?post=13553"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.365scores.com\/news\/wp-json\/wp\/v2\/tags?post=13553"},{"taxonomy":"content-tags","embeddable":true,"href":"https:\/\/www.365scores.com\/news\/wp-json\/wp\/v2\/content-tags?post=13553"},{"taxonomy":"article_type","embeddable":true,"href":"https:\/\/www.365scores.com\/news\/wp-json\/wp\/v2\/article_type?post=13553"},{"taxonomy":"entity_type","embeddable":true,"href":"https:\/\/www.365scores.com\/news\/wp-json\/wp\/v2\/entity_type?post=13553"},{"taxonomy":"inspiration","embeddable":true,"href":"https:\/\/www.365scores.com\/news\/wp-json\/wp\/v2\/inspiration?post=13553"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}