{"id":10682,"date":"2026-07-08T15:27:02","date_gmt":"2026-07-08T15:27:02","guid":{"rendered":"https:\/\/www.switchfleet.com\/?p=10682"},"modified":"2026-07-08T15:32:18","modified_gmt":"2026-07-08T15:32:18","slug":"matriculaciones-junio-2026","status":"publish","type":"post","link":"https:\/\/www.switchfleet.com\/en\/matriculaciones-junio-2026\/","title":{"rendered":"Matriculaciones Junio 2026"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"10682\" class=\"elementor elementor-10682\" data-elementor-post-type=\"post\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9852607 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"9852607\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-5ab97ef\" data-id=\"5ab97ef\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div data-ra-url=\"https:\/\/www.switchfleet.com\/pro\/\" data-ra-target=\"_self\" class=\"ra-clickable-wrapper elementor-element elementor-element-e7ad1aa elementor-widget elementor-widget-image\" style=\"cursor:pointer;\" data-id=\"e7ad1aa\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"332\" src=\"https:\/\/www.switchfleet.com\/comp\/uploads\/Logo_Switched-09.png\" class=\"attachment-large size-large wp-image-9604\" alt=\"\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-56f5691 elementor-widget elementor-widget-html\" data-id=\"56f5691\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"es\">\r\n<head>\r\n    <meta charset=\"UTF-8\">\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n    <title>Switch BI | Inteligencia Tecnol\u00f3gica 2026<\/title>\r\n    <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Raleway:wght@200;400;600;700;800;900&display=swap\" rel=\"stylesheet\">\r\n    <script src=\"https:\/\/cdn.tailwindcss.com\"><\/script>\r\n    <script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js\"><\/script>\r\n    <script src=\"https:\/\/unpkg.com\/lucide@latest\"><\/script>\r\n    \r\n    <style>\r\n        #masthead, #colophon, .site-header, .site-footer, footer#colophon, header#masthead { display: none !important; }\r\n\r\n        :root {\r\n            --switch-teal: #018391;\r\n            --switch-yellow: #f6d32d;\r\n            --bg-deep: #020617;\r\n            --card-grad-start: #1e293b;\r\n            --card-grad-end: #0f172a;\r\n            --text-bright: #f8fafc;\r\n            --text-muted: #94a3b8;\r\n        }\r\n\r\n        body { \r\n            font-family: 'Raleway', sans-serif !important; \r\n            background: radial-gradient(circle at top center, #1e293b 0%, var(--bg-deep) 100%) !important; \r\n            color: var(--text-bright) !important; \r\n            min-height: 100vh; \r\n            margin: 0; \r\n            overflow-x: hidden; \r\n            font-size: 1.15rem; \r\n        }\r\n\r\n        @keyframes fadeIn { \r\n            from { opacity: 0; transform: translateY(-10px); } \r\n            to { opacity: 1; transform: translateY(0); } \r\n        }\r\n        \r\n        @keyframes pulseSoft {\r\n            0%, 100% { opacity: 1; transform: scale(1); }\r\n            50% { opacity: 0.85; transform: scale(0.98); }\r\n        }\r\n\r\n        .update-banner { \r\n            animation: fadeIn 1s ease-out, pulseSoft 3s ease-in-out infinite; \r\n        }\r\n\r\n        .reveal { \r\n            opacity: 0; \r\n            transform: translateY(15px); \r\n            transition: all 0.6s cubic-bezier(0.16, 1, 0.3, 1); \r\n        }\r\n        \r\n        .reveal.active { \r\n            opacity: 1; \r\n            transform: translateY(0); \r\n        }\r\n        \r\n        .premium-card { \r\n            background: linear-gradient(145deg, var(--card-grad-start) 0%, var(--card-grad-end) 100%) !important; \r\n            border: 1px solid rgba(255, 255, 255, 0.05) !important; \r\n            border-radius: 24px !important; \r\n            box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.5) !important; \r\n            position: relative; \r\n            overflow: hidden; \r\n        }\r\n        \r\n        .kpi-label { \r\n            color: var(--text-muted); \r\n            letter-spacing: 0.15em; \r\n            font-weight: 700; \r\n            font-size: 0.85rem; \r\n            text-transform: uppercase; \r\n        }\r\n        \r\n        .chart-container { \r\n            position: relative; \r\n            height: 350px; \r\n            width: 100%; \r\n        }\r\n        \r\n        .btn-reset { \r\n            color: var(--switch-yellow); \r\n            border: 2px solid var(--switch-yellow); \r\n            background: rgba(246, 211, 45, 0.05); \r\n            font-weight: 800; \r\n        }\r\n        \r\n        .btn-reset:hover { \r\n            background: var(--switch-yellow); \r\n            color: #000; \r\n        }\r\n\r\n        \/* Estilizaci\u00f3n para desplegables premium *\/\r\n        select {\r\n            appearance: none;\r\n            background-image: url(\"data:image\/svg+xml;utf8,<svg xmlns='http:\/\/www.w3.org\/2000\/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%23f6d32d' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'><\/polyline><\/svg>\");\r\n            background-repeat: no-repeat;\r\n            background-position: right 14px center;\r\n            background-size: 16px;\r\n        }\r\n    <\/style>\r\n<\/head>\r\n<body class=\"p-6 md:p-12 lg:p-20\">\r\n\r\n    <div class=\"max-w-7xl mx-auto mb-8 text-center flex flex-col items-center gap-4\">\r\n        <div class=\"update-banner inline-flex items-center gap-2 bg-white\/5 border border-white\/10 px-6 py-2.5 rounded-full text-xs font-bold uppercase tracking-widest text-[#f6d32d]\">\r\n            <span class=\"relative flex h-2.5 w-2.5\">\r\n                <span class=\"animate-ping absolute inline-flex h-full w-full rounded-full bg-yellow-400 opacity-75\"><\/span>\r\n                <span class=\"relative inline-flex rounded-full h-2.5 w-2.5 bg-yellow-500\"><\/span>\r\n            <\/span>\r\n            Actualizado a junio 2026\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <main class=\"max-w-7xl mx-auto\">\r\n        <div class=\"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-10 mb-16\">\r\n            \r\n            <!-- KPI Total 2025 -->\r\n            <div class=\"premium-card p-10 flex flex-col justify-center text-center reveal\">\r\n                <p class=\"kpi-label mb-2\">Total A\u00f1o 2025<\/p>\r\n                <h3 id=\"kpi-total-25-val\" class=\"text-4xl font-bold tracking-tighter text-white\">254.783<\/h3>\r\n            <\/div>\r\n            \r\n            <!-- KPI Acumulado 2026 -->\r\n            <div class=\"premium-card p-10 flex flex-col justify-center text-center border-l-4 border-l-[#f6d32d] reveal\">\r\n                <p class=\"kpi-label mb-2\">Acumulado 2026<\/p>\r\n                <div class=\"flex flex-col items-center\">\r\n                    <h3 id=\"kpi-total-26\" class=\"text-4xl font-bold tracking-tighter text-[#f6d32d]\">158.180<\/h3>\r\n                    <span id=\"kpi-growth-val\" class=\"text-sm font-bold text-green-400 mt-1 uppercase tracking-widest\">+63.4% vs 2025<\/span>\r\n                <\/div>\r\n            <\/div>\r\n            \r\n            <!-- Selector Desplegable Premium de Segmentaci\u00f3n (Reemplaza Datos Consolidados) -->\r\n            <div class=\"premium-card p-8 flex flex-col justify-center text-center reveal\">\r\n                <p class=\"kpi-label mb-3\">Segmentar Tecnolog\u00eda<\/p>\r\n                <div class=\"relative w-full\">\r\n                    <select id=\"tech-filter\" onchange=\"filterTechnology()\" class=\"w-full bg-[#020617] text-[#f6d32d] font-bold py-3.5 px-6 pr-12 rounded-xl border border-white\/10 focus:outline-none focus:border-[#018391] focus:ring-1 focus:ring-[#018391] cursor-pointer text-center text-xs tracking-wider uppercase transition-all\">\r\n                        <option value=\"ALL\">Todas (BEV + PHEV)<\/option>\r\n                        <option value=\"BEV\">BEV (El\u00e9ctricos puros)<\/option>\r\n                        <option value=\"PHEV\">PHEV (H\u00edbridos Enchufables)<\/option>\r\n                    <\/select>\r\n                <\/div>\r\n            <\/div>\r\n            \r\n            <!-- Bot\u00f3n Reiniciar Filtros -->\r\n            <div class=\"premium-card p-10 flex flex-col justify-center items-center btn-reset cursor-pointer transition-all reveal\" onclick=\"resetFilters()\">\r\n                <div class=\"flex items-center gap-3\">\r\n                    <i data-lucide=\"rotate-ccw\" class=\"w-6 h-6\"><\/i>\r\n                    <span class=\"text-xs font-black uppercase tracking-[0.2em]\">Reiniciar<\/span>\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"grid grid-cols-1 lg:grid-cols-12 gap-12 mb-16\">\r\n            <div class=\"lg:col-span-8 premium-card p-12 reveal\">\r\n                <div class=\"flex justify-between items-center mb-10 border-b border-white\/5 pb-4\">\r\n                    <h4 class=\"kpi-label\">Evoluci\u00f3n Comparativa Mensual<\/h4>\r\n                    <span class=\"text-xs font-semibold text-slate-500 tracking-wider\">Ene - Dic (Consolidado 2026)<\/span>\r\n                <\/div>\r\n                <div class=\"chart-container\"><canvas id=\"mainChart\"><\/canvas><\/div>\r\n            <\/div>\r\n            <div class=\"lg:col-span-4 premium-card p-12 reveal\">\r\n                <h4 id=\"donut-title\" class=\"kpi-label text-center mb-10 border-b border-white\/5 pb-4\">Tecnolog\u00eda (Uds)<\/h4>\r\n                <div class=\"chart-container\"><canvas id=\"techChart\"><\/canvas><\/div>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"premium-card p-12 reveal\">\r\n            <div class=\"flex justify-between items-center mb-10 border-b border-white\/5 pb-4\">\r\n                <h4 class=\"kpi-label\">Top 10 Marcas del Mercado<\/h4>\r\n                <span class=\"text-xs font-semibold text-slate-500 tracking-wider\">Ordenado por volumen acumulado<\/span>\r\n            <\/div>\r\n            <div class=\"overflow-x-auto\">\r\n                <table class=\"w-full text-left\">\r\n                    <thead>\r\n                        <tr class=\"text-sm text-[#018391] uppercase tracking-widest border-b border-white\/10\">\r\n                            <th class=\"pb-5 font-bold\">Posici\u00f3n<\/th>\r\n                            <th class=\"pb-5 font-bold\">Marca<\/th>\r\n                            <th class=\"pb-5 font-bold\">Volumen 2026<\/th>\r\n                            <th class=\"pb-5 font-bold\">Cuota de Mercado<\/th>\r\n                        <\/tr>\r\n                    <\/thead>\r\n                    <tbody id=\"brands-table-body\" class=\"text-slate-300\">\r\n                        <!-- Carga din\u00e1mica con tipograf\u00edas m\u00e1s grandes -->\r\n                    <\/tbody>\r\n                <\/table>\r\n            <\/div>\r\n        <\/div>\r\n    <\/main>\r\n\r\n    <script>\r\n        \/\/ --- 1. CONFIGURACI\u00d3N DE REPARTO TECNOL\u00d3GICO POR MARCA ---\r\n        \/\/ Coeficientes l\u00f3gicos aproximados para BEV vs PHEV\r\n        const TECH_COEFFS = {\r\n            'TESLA': { BEV: 1.00, PHEV: 0.00 },\r\n            'BYD': { BEV: 0.82, PHEV: 0.18 },\r\n            'VOLKSWAGEN': { BEV: 0.70, PHEV: 0.30 },\r\n            'CITROEN': { BEV: 0.65, PHEV: 0.35 },\r\n            'AUDI': { BEV: 0.58, PHEV: 0.42 },\r\n            'CUPRA': { BEV: 0.52, PHEV: 0.48 },\r\n            'B.M.W.': { BEV: 0.46, PHEV: 0.54 },\r\n            'MERCEDES': { BEV: 0.40, PHEV: 0.60 },\r\n            'FORD': { BEV: 0.35, PHEV: 0.65 },\r\n            'JAECOO': { BEV: 0.10, PHEV: 0.90 }\r\n        };\r\n\r\n        \/\/ --- 2. DATOS DE RESERVA \/ FALLBACK INTELIGENTE ---\r\n        const FALLBACK_MARCAS = [\r\n            { name: 'BYD', volume: 41200, share: '26.0%' },\r\n            { name: 'TESLA', volume: 34100, share: '21.6%' },\r\n            { name: 'MERCEDES', volume: 18400, share: '11.6%' },\r\n            { name: 'FORD', volume: 14500, share: '9.2%' },\r\n            { name: 'VOLKSWAGEN', volume: 13200, share: '8.3%' },\r\n            { name: 'B.M.W.', volume: 11900, share: '7.5%' },\r\n            { name: 'AUDI', volume: 10100, share: '6.4%' },\r\n            { name: 'JAECOO', volume: 6800, share: '4.3%' },\r\n            { name: 'CITROEN', volume: 4400, share: '2.8%' },\r\n            { name: 'CUPRA', volume: 3580, share: '2.3%' }\r\n        ];\r\n\r\n        const MONTHLY_BASE_2025 = [12052, 14548, 18305, 18315, 24372, 28121, 23852, 16636, 22781, 24727, 24418, 26656];\r\n        const MONTHLY_BASE_2026_DEFAULT = [17004, 23469, 29745, 25712, 29150, 33100]; \/\/ Hasta Junio 2026\r\n\r\n        \/\/ Almacenamiento primario para filtrados cruzados\r\n        let rawMonthly25 = [...MONTHLY_BASE_2025];\r\n        let rawMonthly26 = [...MONTHLY_BASE_2026_DEFAULT];\r\n        let rawBrands = [...FALLBACK_MARCAS];\r\n        let rawCategories = { BEV: 92400, PHEV: 65780 };\r\n\r\n        \/\/ Instancias de gr\u00e1ficos globales\r\n        let mainChartInstance = null;\r\n        let techChartInstance = null;\r\n\r\n        \/\/ --- 3. AYUDANTE PARSER DE CSV GEN\u00c9RICO ---\r\n        function parseCSV(text) {\r\n            const lines = text.split('\\n').map(line => line.trim()).filter(line => line.length > 0);\r\n            if (lines.length === 0) return [];\r\n            \r\n            const delimiter = lines[0].includes(';') ? ';' : ',';\r\n            const headers = lines[0].split(delimiter).map(h => h.replace(\/[\"']\/g, '').trim());\r\n            \r\n            return lines.slice(1).map(line => {\r\n                const values = line.split(delimiter).map(v => v.replace(\/[\"']\/g, '').trim());\r\n                const obj = {};\r\n                headers.forEach((header, index) => {\r\n                    obj[header] = values[index] || '';\r\n                });\r\n                return obj;\r\n            });\r\n        }\r\n\r\n        \/\/ --- 4. CARGA INICIAL DE DATOS ---\r\n        async function loadDashboardData() {\r\n            try {\r\n                const [totalesRes, marcasRes, categoriasRes] = await Promise.all([\r\n                    fetch('totales.csv').then(r => r.ok ? r.text() : null),\r\n                    fetch('marcas.csv').then(r => r.ok ? r.text() : null),\r\n                    fetch('categorias.csv').then(r => r.ok ? r.text() : null)\r\n                ]);\r\n\r\n                \/\/ Procesar totales.csv\r\n                if (totalesRes) {\r\n                    const parsedTotales = parseCSV(totalesRes);\r\n                    if (parsedTotales.length > 0) {\r\n                        const col25 = Object.keys(parsedTotales[0]).find(k => k.includes('2025'));\r\n                        const col26 = Object.keys(parsedTotales[0]).find(k => k.includes('2026'));\r\n                        if (col25 && col26) {\r\n                            rawMonthly25 = parsedTotales.map(row => parseFloat(row[col25].replace(\/\\.\/g, '').replace(\/,\/g, '')) || 0);\r\n                            rawMonthly26 = parsedTotales.map(row => {\r\n                                const val = row[col26];\r\n                                return val ? parseFloat(val.replace(\/\\.\/g, '').replace(\/,\/g, '')) : null;\r\n                            }).filter(val => val !== null && !isNaN(val));\r\n                        }\r\n                    }\r\n                }\r\n\r\n                \/\/ Procesar marcas.csv\r\n                if (marcasRes) {\r\n                    const parsedMarcas = parseCSV(marcasRes);\r\n                    if (parsedMarcas.length > 0) {\r\n                        const brandCol = Object.keys(parsedMarcas[0]).find(k => k.toLowerCase().includes('marca'));\r\n                        const volCol = Object.keys(parsedMarcas[0]).find(k => k.toLowerCase().includes('vol') || k.toLowerCase().includes('cant') || k.toLowerCase().includes('uds'));\r\n                        if (brandCol && volCol) {\r\n                            const tempBrands = parsedMarcas.map(row => {\r\n                                const name = row[brandCol].toUpperCase();\r\n                                const volume = parseFloat(row[volCol].replace(\/\\.\/g, '').replace(\/,\/g, '')) || 0;\r\n                                return { name, volume };\r\n                            }).filter(b => b.name && b.volume > 0);\r\n                            \r\n                            tempBrands.sort((a, b) => b.volume - a.volume);\r\n                            const totalVol = tempBrands.reduce((sum, b) => sum + b.volume, 0);\r\n                            \r\n                            rawBrands = tempBrands.map(b => ({\r\n                                name: b.name,\r\n                                volume: b.volume,\r\n                                share: ((b.volume \/ totalVol) * 100).toFixed(1) + '%'\r\n                            }));\r\n                        }\r\n                    }\r\n                }\r\n\r\n                \/\/ Procesar categorias.csv\r\n                if (categoriasRes) {\r\n                    const parsedCats = parseCSV(categoriasRes);\r\n                    if (parsedCats.length > 0) {\r\n                        const catCol = Object.keys(parsedCats[0]).find(k => k.toLowerCase().includes('cat') || k.toLowerCase().includes('tec'));\r\n                        const volCol = Object.keys(parsedCats[0]).find(k => k.toLowerCase().includes('vol') || k.toLowerCase().includes('cant') || k.toLowerCase().includes('uds'));\r\n                        if (catCol && volCol) {\r\n                            rawCategories = {};\r\n                            parsedCats.forEach(row => {\r\n                                let cat = row[catCol].toUpperCase();\r\n                                if (cat.includes(\"BEV\") || cat.includes(\"EV\") || cat.includes(\"EL\u00c9C\")) cat = \"BEV\";\r\n                                if (cat.includes(\"PHEV\") || cat.includes(\"H\u00cdBR\")) cat = \"PHEV\";\r\n                                const vol = parseFloat(row[volCol].replace(\/\\.\/g, '').replace(\/,\/g, '')) || 0;\r\n                                if (cat && vol) {\r\n                                    rawCategories[cat] = (rawCategories[cat] || 0) + vol;\r\n                                }\r\n                            });\r\n                        }\r\n                    }\r\n                }\r\n\r\n            } catch (err) {\r\n                console.warn(\"Fallo de acceso a los ficheros CSV locales. Usando Fallback.\", err);\r\n            }\r\n\r\n            \/\/ Aplicar renderizado por defecto (Todas las tecnolog\u00edas)\r\n            filterTechnology();\r\n        }\r\n\r\n        \/\/ --- 5. L\u00d3GICA DE FILTRADO Y ACTUALIZACI\u00d3N DIN\u00c1MICA ---\r\n        function filterTechnology() {\r\n            const tech = document.getElementById('tech-filter').value;\r\n            \r\n            let filteredM25 = [...rawMonthly25];\r\n            let filteredM26 = [...rawMonthly26];\r\n            let filteredBrands = [];\r\n            let filteredCategories = {};\r\n            \r\n            \/\/ T\u00edtulo de la tarjeta circular adaptativo\r\n            const donutTitleEl = document.getElementById('donut-title');\r\n\r\n            if (tech === 'ALL') {\r\n                donutTitleEl.innerText = 'Tecnolog\u00eda (Uds)';\r\n                filteredBrands = [...rawBrands].slice(0, 10);\r\n                filteredCategories = { ...rawCategories };\r\n            } else {\r\n                donutTitleEl.innerText = `Top Marcas en ${tech}`;\r\n                \r\n                \/\/ Relaci\u00f3n proporcional general para la serie temporal\r\n                const totalAcumulado = (rawCategories.BEV || 0) + (rawCategories.PHEV || 0);\r\n                const ratio = tech === 'BEV' \r\n                    ? (rawCategories.BEV \/ totalAcumulado) \r\n                    : (rawCategories.PHEV \/ totalAcumulado);\r\n                \r\n                filteredM25 = rawMonthly25.map(v => Math.round(v * ratio));\r\n                filteredM26 = rawMonthly26.map(v => Math.round(v * ratio));\r\n\r\n                \/\/ Filtrar marcas seg\u00fan su perfil tecnol\u00f3gico individual, ordenar y recalcular cuota\r\n                let computedBrands = rawBrands.map(b => {\r\n                    const profile = TECH_COEFFS[b.name] || { BEV: 0.58, PHEV: 0.42 }; \/\/ fallback general\r\n                    const brandFactor = tech === 'BEV' ? profile.BEV : profile.PHEV;\r\n                    const computedVolume = Math.round(b.volume * brandFactor);\r\n                    return {\r\n                        name: b.name,\r\n                        volume: computedVolume\r\n                    };\r\n                }).filter(b => b.volume > 0);\r\n\r\n                \/\/ Volver a ordenar por el nuevo volumen generado\r\n                computedBrands.sort((a, b) => b.volume - a.volume);\r\n                const totalFilteredVolume = computedBrands.reduce((sum, b) => sum + b.volume, 0);\r\n\r\n                filteredBrands = computedBrands.map(b => ({\r\n                    name: b.name,\r\n                    volume: b.volume,\r\n                    share: totalFilteredVolume > 0 ? ((b.volume \/ totalFilteredVolume) * 100).toFixed(1) + '%' : '0%'\r\n                })).slice(0, 10);\r\n\r\n                \/\/ Desglose del gr\u00e1fico circular para mostrar el Top 3 espec\u00edfico de la tecnolog\u00eda seleccionada vs el resto\r\n                const top3Vol = filteredBrands.slice(0, 3).reduce((sum, b) => sum + b.volume, 0);\r\n                const otrosVol = Math.max(0, totalFilteredVolume - top3Vol);\r\n\r\n                filteredBrands.slice(0, 3).forEach(b => {\r\n                    filteredCategories[b.name] = b.volume;\r\n                });\r\n                if (otrosVol > 0) {\r\n                    filteredCategories['OTRAS MARCAS'] = otrosVol;\r\n                }\r\n            }\r\n\r\n            updateUI(filteredM25, filteredM26, filteredBrands, filteredCategories);\r\n        }\r\n\r\n        \/\/ --- 6. RENDERIZACI\u00d3N DE INTERFAZ GR\u00c1FICA ---\r\n        function updateUI(m25, m26, brands, categories) {\r\n            \/\/ Totales de KPIs consolidados\r\n            const total25Val = m25.reduce((sum, v) => sum + v, 0);\r\n            const total26Val = m26.reduce((sum, v) => sum + v, 0);\r\n            \r\n            document.getElementById('kpi-total-25-val').innerText = total25Val.toLocaleString('es-ES');\r\n            document.getElementById('kpi-total-26').innerText = total26Val.toLocaleString('es-ES');\r\n            \r\n            const growth = ((total26Val \/ total25Val) * 100).toFixed(1);\r\n            document.getElementById('kpi-growth-val').innerText = `+${growth}% vs 2025`;\r\n\r\n            \/\/ Construcci\u00f3n din\u00e1mica de tabla (Subido el tama\u00f1o de fuente y peso a text-base\/lg)\r\n            const body = document.getElementById('brands-table-body');\r\n            body.innerHTML = brands.map((m, index) => `\r\n                <tr class=\"border-b border-white\/5 hover:bg-white\/10 transition-colors\">\r\n                    <td class=\"py-5 text-slate-400 font-extrabold text-lg md:text-xl\">${index + 1}<\/td>\r\n                    <td class=\"py-5 font-black text-white text-base md:text-lg tracking-wide\">${m.name}<\/td>\r\n                    <td class=\"py-5 text-slate-100 font-semibold text-base md:text-lg\">${m.volume.toLocaleString('es-ES')}<\/td>\r\n                    <td class=\"py-5 text-switch-teal font-extrabold text-base md:text-lg\">${m.share}<\/td>\r\n                <\/tr>\r\n            `).join('');\r\n\r\n            \/\/ Actualizar Gr\u00e1ficos\r\n            renderMainChart(m25, m26);\r\n            renderTechChart(categories);\r\n        }\r\n\r\n        \/\/ --- 7. CONFIGURACI\u00d3N DE GR\u00c1FICOS (CHART.JS) ---\r\n        function renderMainChart(m25, m26) {\r\n            const months = ['ENE', 'FEB', 'MAR', 'ABR', 'MAY', 'JUN', 'JUL', 'AGO', 'SEP', 'OCT', 'NOV', 'DIC'];\r\n            const ctx = document.getElementById('mainChart').getContext('2d');\r\n\r\n            if (mainChartInstance) {\r\n                mainChartInstance.destroy();\r\n            }\r\n\r\n            \/\/ Completar con nulos para mostrar el gr\u00e1fico hasta fin de a\u00f1o\r\n            const displayM26 = [...m26];\r\n            while (displayM26.length < 12) {\r\n                displayM26.push(null);\r\n            }\r\n\r\n            mainChartInstance = new Chart(ctx, {\r\n                type: 'line',\r\n                data: {\r\n                    labels: months,\r\n                    datasets: [\r\n                        { \r\n                            label: '2025', \r\n                            data: m25, \r\n                            borderColor: 'rgba(255, 255, 255, 0.25)', \r\n                            tension: 0.4, \r\n                            pointRadius: 0, \r\n                            borderWidth: 2 \r\n                        },\r\n                        { \r\n                            label: '2026', \r\n                            data: displayM26, \r\n                            borderColor: '#018391', \r\n                            backgroundColor: 'rgba(1, 131, 145, 0.1)', \r\n                            fill: true, \r\n                            tension: 0.4, \r\n                            pointBackgroundColor: '#f6d32d', \r\n                            pointRadius: 5, \r\n                            borderWidth: 5 \r\n                        }\r\n                    ]\r\n                },\r\n                options: { \r\n                    responsive: true, \r\n                    maintainAspectRatio: false, \r\n                    plugins: { legend: { display: false } }, \r\n                    scales: { \r\n                        y: { display: false }, \r\n                        x: { \r\n                            grid: { display: false }, \r\n                            ticks: { color: '#ffffff', font: { family: 'Raleway', weight: '700' } } \r\n                        } \r\n                    } \r\n                }\r\n            });\r\n        }\r\n\r\n        function renderTechChart(categories) {\r\n            const ctx = document.getElementById('techChart').getContext('2d');\r\n            const labels = Object.keys(categories);\r\n            const data = Object.values(categories);\r\n\r\n            if (techChartInstance) {\r\n                techChartInstance.destroy();\r\n            }\r\n\r\n            techChartInstance = new Chart(ctx, {\r\n                type: 'doughnut',\r\n                data: { \r\n                    labels: labels, \r\n                    datasets: [{ \r\n                        data: data, \r\n                        backgroundColor: ['#018391', '#f6d32d', '#94a3b8', '#38bdf8', '#10b981'], \r\n                        borderWidth: 0, \r\n                        hoverOffset: 15 \r\n                    }] \r\n                },\r\n                options: { \r\n                    responsive: true, \r\n                    maintainAspectRatio: false, \r\n                    cutout: '80%', \r\n                    plugins: { \r\n                        legend: { \r\n                            position: 'bottom', \r\n                            labels: { color: '#ffffff', font: { family: 'Raleway', weight: '600', size: 11 } } \r\n                        } \r\n                    } \r\n                }\r\n            });\r\n        }\r\n\r\n        \/\/ --- 8. RESTABLECER FILTROS ---\r\n        function resetFilters() { \r\n            document.getElementById('tech-filter').value = 'ALL';\r\n            filterTechnology();\r\n        }\r\n\r\n        \/\/ --- 9. INICIO DEL DASHBOARD ---\r\n        window.onload = function() {\r\n            lucide.createIcons();\r\n            setTimeout(() => document.querySelectorAll('.reveal').forEach(el => el.classList.add('active')), 50);\r\n            loadDashboardData();\r\n        };\r\n    <\/script>\r\n<\/body>\r\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-e375cdb elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"e375cdb\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-d7a4774\" data-id=\"d7a4774\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-e277344 elementor-widget elementor-widget-heading\" data-id=\"e277344\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Radiograf\u00eda del Veh\u00edculo El\u00e9ctrico en 2026: \u00bfEst\u00e1 tu flota qued\u00e1ndose atr\u00e1s?<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c162125 elementor-widget elementor-widget-text-editor\" data-id=\"c162125\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p><span data-path-to-node=\"6,0,0,0\">El mercado no solo crece, se est\u00e1 transformando. <\/span><span data-path-to-node=\"6,0,0,2\"><span class=\"citation-41\">Con <\/span><b data-path-to-node=\"6,0,0,2\" data-index-in-node=\"4\"><span class=\"citation-41\">95.930 matriculaciones<\/span><\/b><span class=\"citation-41\"> en el primer cuatrimestre, el salto del <\/span><b data-path-to-node=\"6,0,0,2\" data-index-in-node=\"67\"><span class=\"citation-41\">51,7%<\/span><\/b><span class=\"citation-41\"> es una se\u00f1al inequ\u00edvoca<\/span><\/span><span data-path-to-node=\"6,0,0,4\">.<\/span><\/p><p>\u00a0<\/p><p data-path-to-node=\"11,3\">Analiza t\u00fa mismo\u00a0 el mercado en tiempo real.<\/p><p id=\"p-rc_5bb51958d94e1361-39\" data-path-to-node=\"11,4\"><span data-path-to-node=\"11,4,0\">\u2705 Filtra por marca. <br \/><\/span><span data-path-to-node=\"11,4,0\">\u2705 Compara canales de venta.<br \/><\/span><span data-path-to-node=\"11,4,2\"><span class=\"citation-34\">\u2705 Descubre el Market Share real. <\/span><\/span><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-9d8484a elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"9d8484a\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-4f24783\" data-id=\"4f24783\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-ac9a7bb elementor-align-center elementor-tablet-align-left elementor-mobile-align-center elementor-invisible elementor-widget elementor-widget-button\" data-id=\"ac9a7bb\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInUp&quot;}\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm elementor-animation-float\" href=\"https:\/\/www.switchfleet.com\/pro\/empresas\/\" target=\"_blank\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-long-arrow-alt-right\"><\/i>\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Reg\u00edstrate gratis<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-50 elementor-inner-column elementor-element elementor-element-3d3d8be\" data-id=\"3d3d8be\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-d039249 elementor-align-center elementor-tablet-align-left elementor-mobile-align-center elementor-invisible elementor-widget elementor-widget-button\" data-id=\"d039249\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_animation&quot;:&quot;fadeInUp&quot;}\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm elementor-animation-float\" href=\"https:\/\/www.switchfleet.com\/pro\/empresas\/\" target=\"_blank\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t<span class=\"elementor-button-icon\">\n\t\t\t\t<i aria-hidden=\"true\" class=\"fas fa-long-arrow-alt-right\"><\/i>\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Conoce m\u00e1s<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<div data-ra-url=\"https:\/\/www.switchfleet.com\/pro\/\" data-ra-target=\"_self\" class=\"ra-clickable-wrapper elementor-element elementor-element-f83afdf elementor-widget elementor-widget-image\" style=\"cursor:pointer;\" data-id=\"f83afdf\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"332\" src=\"https:\/\/www.switchfleet.com\/comp\/uploads\/Logo_Switched-09.png\" class=\"attachment-large size-large wp-image-9604\" alt=\"\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Switch BI | Inteligencia Tecnol\u00f3gica 2026 Actualizado a junio 2026 Total A\u00f1o 2025 254.783 Acumulado 2026 158.180 +63.4% vs 2025 Segmentar Tecnolog\u00eda Todas (BEV + PHEV)BEV (El\u00e9ctricos puros)PHEV (H\u00edbridos Enchufables) Reiniciar Evoluci\u00f3n Comparativa Mensual Ene &#8211; Dic (Consolidado 2026) Tecnolog\u00eda (Uds) Top 10 Marcas del Mercado Ordenado por volumen acumulado Posici\u00f3n Marca Volumen 2026 Cuota [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"elementor_header_footer","format":"standard","meta":{"content-type":"","ocean_post_layout":"","ocean_both_sidebars_style":"","ocean_both_sidebars_content_width":0,"ocean_both_sidebars_sidebars_width":0,"ocean_sidebar":"","ocean_second_sidebar":"","ocean_disable_margins":"enable","ocean_add_body_class":"","ocean_shortcode_before_top_bar":"","ocean_shortcode_after_top_bar":"","ocean_shortcode_before_header":"","ocean_shortcode_after_header":"","ocean_has_shortcode":"","ocean_shortcode_after_title":"","ocean_shortcode_before_footer_widgets":"","ocean_shortcode_after_footer_widgets":"","ocean_shortcode_before_footer_bottom":"","ocean_shortcode_after_footer_bottom":"","ocean_display_top_bar":"default","ocean_display_header":"default","ocean_header_style":"","ocean_center_header_left_menu":"","ocean_custom_header_template":"","ocean_custom_logo":0,"ocean_custom_retina_logo":0,"ocean_custom_logo_max_width":0,"ocean_custom_logo_tablet_max_width":0,"ocean_custom_logo_mobile_max_width":0,"ocean_custom_logo_max_height":0,"ocean_custom_logo_tablet_max_height":0,"ocean_custom_logo_mobile_max_height":0,"ocean_header_custom_menu":"","ocean_menu_typo_font_family":"","ocean_menu_typo_font_subset":"","ocean_menu_typo_font_size":0,"ocean_menu_typo_font_size_tablet":0,"ocean_menu_typo_font_size_mobile":0,"ocean_menu_typo_font_size_unit":"px","ocean_menu_typo_font_weight":"","ocean_menu_typo_font_weight_tablet":"","ocean_menu_typo_font_weight_mobile":"","ocean_menu_typo_transform":"","ocean_menu_typo_transform_tablet":"","ocean_menu_typo_transform_mobile":"","ocean_menu_typo_line_height":0,"ocean_menu_typo_line_height_tablet":0,"ocean_menu_typo_line_height_mobile":0,"ocean_menu_typo_line_height_unit":"","ocean_menu_typo_spacing":0,"ocean_menu_typo_spacing_tablet":0,"ocean_menu_typo_spacing_mobile":0,"ocean_menu_typo_spacing_unit":"","ocean_menu_link_color":"","ocean_menu_link_color_hover":"","ocean_menu_link_color_active":"","ocean_menu_link_background":"","ocean_menu_link_hover_background":"","ocean_menu_link_active_background":"","ocean_menu_social_links_bg":"","ocean_menu_social_hover_links_bg":"","ocean_menu_social_links_color":"","ocean_menu_social_hover_links_color":"","ocean_disable_title":"default","ocean_disable_heading":"default","ocean_post_title":"","ocean_post_subheading":"","ocean_post_title_style":"","ocean_post_title_background_color":"","ocean_post_title_background":0,"ocean_post_title_bg_image_position":"","ocean_post_title_bg_image_attachment":"","ocean_post_title_bg_image_repeat":"","ocean_post_title_bg_image_size":"","ocean_post_title_height":0,"ocean_post_title_bg_overlay":0.5,"ocean_post_title_bg_overlay_color":"","ocean_disable_breadcrumbs":"default","ocean_breadcrumbs_color":"","ocean_breadcrumbs_separator_color":"","ocean_breadcrumbs_links_color":"","ocean_breadcrumbs_links_hover_color":"","ocean_display_footer_widgets":"default","ocean_display_footer_bottom":"default","ocean_custom_footer_template":"","ocean_post_oembed":"","ocean_post_self_hosted_media":"","ocean_post_video_embed":"","ocean_link_format":"","ocean_link_format_target":"self","ocean_quote_format":"","ocean_quote_format_link":"post","ocean_gallery_link_images":"on","ocean_gallery_id":[],"footnotes":""},"categories":[23],"tags":[],"class_list":["post-10682","post","type-post","status-publish","format-standard","hentry","category-pills","entry"],"_links":{"self":[{"href":"https:\/\/www.switchfleet.com\/en\/wp-json\/wp\/v2\/posts\/10682","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.switchfleet.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.switchfleet.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.switchfleet.com\/en\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.switchfleet.com\/en\/wp-json\/wp\/v2\/comments?post=10682"}],"version-history":[{"count":10,"href":"https:\/\/www.switchfleet.com\/en\/wp-json\/wp\/v2\/posts\/10682\/revisions"}],"predecessor-version":[{"id":10692,"href":"https:\/\/www.switchfleet.com\/en\/wp-json\/wp\/v2\/posts\/10682\/revisions\/10692"}],"wp:attachment":[{"href":"https:\/\/www.switchfleet.com\/en\/wp-json\/wp\/v2\/media?parent=10682"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.switchfleet.com\/en\/wp-json\/wp\/v2\/categories?post=10682"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.switchfleet.com\/en\/wp-json\/wp\/v2\/tags?post=10682"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}