{"id":1127,"date":"2025-11-17T12:47:55","date_gmt":"2025-11-17T12:47:55","guid":{"rendered":"https:\/\/vig-bay.com\/?page_id=1127"},"modified":"2025-11-17T13:23:39","modified_gmt":"2025-11-17T13:23:39","slug":"calculadora-ritmos-minibay","status":"publish","type":"page","link":"https:\/\/vig-bay.com\/gl\/calculadora-ritmos-minibay\/","title":{"rendered":"Calculadora de ritmo MINIBAY"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"1127\" class=\"elementor elementor-1127\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-50636e6 e-flex e-con-boxed e-con e-parent\" data-id=\"50636e6\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-f4b9b42 e-con-full e-flex e-con e-child\" data-id=\"f4b9b42\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ad61a9d e-transform elementor-widget elementor-widget-heading\" data-id=\"ad61a9d\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;_transform_scaleX_effect_hover&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;_transform_scaleX_effect_hover_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;_transform_scaleX_effect_hover_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;_transform_scaleY_effect_hover&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;_transform_scaleY_effect_hover_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;_transform_scaleY_effect_hover_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]}}\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">\u00a1calcula tus tiempos!<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1150de9 elementor-widget elementor-widget-text-editor\" data-id=\"1150de9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Introduce el tiempo deseado y ver\u00e1s los ritmos ajustados al perfil de la carrera<\/p>\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\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-5f95529 e-flex e-con-boxed e-con e-parent\" data-id=\"5f95529\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-391dacb elementor-widget elementor-widget-text-editor\" data-id=\"391dacb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Esta calculadora de ritmos tiene en cuenta no solo tu tiempo objetivo, sino tambi\u00e9n la altimetr\u00eda real del recorrido de la MINIBAY. A partir del perfil del circuito y de la pendiente de cada tramo, aplica un modelo de \u201critmo equivalente\u201d (GAP) que estima el esfuerzo extra en las subidas y el ahorro relativo en los tramos m\u00e1s favorables. De este modo, el tiempo total se mantiene igual al que indiques, pero los ritmos se reparten de forma m\u00e1s realista kil\u00f3metro a kil\u00f3metro, ayud\u00e1ndote a planificar d\u00f3nde conviene contenerte y d\u00f3nde puedes permitirte correr algo m\u00e1s r\u00e1pido.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-c264155 e-flex e-con-boxed e-con e-parent\" data-id=\"c264155\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5331c91 elementor-widget elementor-widget-html\" data-id=\"5331c91\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\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\" \/>\r\n<title>VIGBAY \u00b7 Calculadora de Ritmos (GAP por altimetr\u00eda)<\/title>\r\n<style>\r\n  \/* Paleta y estilos, S\u00d3LO dentro del componente *\/\r\n  .vigbay-gap{ --bg:#ffffff; --text:#111827; --muted:#4b5563; --card:#f8fafc; --border:#e5e7eb; }\r\n  .vigbay-gap{font:16px\/1.5 system-ui,Segoe UI,Roboto,Arial;color:var(--text)}\r\n  .vigbay-gap .vg-wrap{max-width:1000px;margin:0 auto;padding:24px;background:var(--bg)}\r\n  .vigbay-gap .vg-title{display:flex;gap:10px;align-items:center;margin:0 0 12px}\r\n  .vigbay-gap .vg-pill{display:inline-block;padding:6px 10px;border-radius:999px;background:linear-gradient(135deg,var(--accent),var(--accent-2));color:#fff;font-weight:800;font-size:12px;letter-spacing:.3px;text-transform:uppercase}\r\n  .vigbay-gap .vg-card{background:var(--card);border:1px solid var(--border);border-radius:14px;padding:18px;margin-bottom:16px}\r\n  .vigbay-gap .vg-row{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end}\r\n  .vigbay-gap label{font-weight:700}\r\n  .vigbay-gap input[type=text]{padding:10px 12px;border:1px solid var(--border);border-radius:10px;background:#fff;color:#111827}\r\n  .vigbay-gap button{padding:10px 16px;border-radius:999px;border:0;background:linear-gradient(135deg,var(--accent),var(--accent-2));color:#fff;font-weight:800;cursor:pointer}\r\n  .vigbay-gap .vg-meta{color:var(--muted);font-size:14px}\r\n  .vigbay-gap .vg-canvas-wrap{display:grid;gap:8px}\r\n  .vigbay-gap canvas{width:100%;height:240px;display:block;background:#fff;border:1px solid var(--border);border-radius:10px}\r\n\r\n  \/* Tabla responsive *\/\r\n  .vigbay-gap .table-wrap{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}\r\n  .vigbay-gap table{width:100%;border-collapse:collapse;min-width:640px}\r\n  .vigbay-gap th,.vigbay-gap td{padding:10px 8px;border-bottom:1px solid var(--border);text-align:right;white-space:nowrap}\r\n  .vigbay-gap th:first-child,.vigbay-gap td:first-child{text-align:left}\r\n\r\n  \/* Mobile *\/\r\n  @media (max-width:640px){\r\n    .vigbay-gap .vg-wrap{padding:16px}\r\n    .vigbay-gap .vg-title h1{font-size:20px;margin:0}\r\n    .vigbay-gap .vg-card{padding:14px}\r\n    .vigbay-gap .vg-row{flex-direction:column;align-items:stretch}\r\n    .vigbay-gap input[type=text], .vigbay-gap button{width:100%}\r\n    .vigbay-gap .vg-meta{font-size:13px}\r\n    .vigbay-gap canvas{height:200px}\r\n    .vigbay-gap th,.vigbay-gap td{padding:8px 6px;font-size:14px}\r\n  }\r\n<\/style>\r\n<\/head>\r\n<body>\r\n\r\n<!-- Instancia MINIBAY: color AZUL solo aqu\u00ed -->\r\n<section class=\"vigbay-gap\" style=\"--accent:#2563eb;--accent-2:#1e40af\">\r\n  <div class=\"vg-wrap\">\r\n    <div class=\"vg-title\">\r\n      <span class=\"vg-pill\">MINIBAY<\/span>\r\n      <h1 style=\"margin:0\">Calculadora de Ritmos (ajuste por altimetr\u00eda)<\/h1>\r\n    <\/div>\r\n\r\n    <div class=\"vg-card\">\r\n      <div class=\"vg-row\">\r\n        <div>\r\n          <label for=\"targetTime-mini\">Tiempo objetivo (HH:MM:SS)<\/label><br>\r\n          <input id=\"targetTime-mini\" type=\"text\" value=\"00:50:00\" placeholder=\"00:50:00\" inputmode=\"numeric\" \/>\r\n        <\/div>\r\n        <div>\r\n          <button id=\"btn-mini\" type=\"button\">Calcular ritmos<\/button>\r\n        <\/div>\r\n        <div class=\"vg-meta\">Distancia del recorrido: <strong id=\"dist-mini\">\u2014<\/strong><\/div>\r\n      <\/div>\r\n      <p class=\"vg-meta\">Altimetr\u00eda y ritmos ajustados (GAP \/ modelo Minetti) a partir del GPX oficial.<\/p>\r\n      <div class=\"vg-canvas-wrap\">\r\n        <canvas id=\"elev-mini\"><\/canvas>\r\n        <div class=\"vg-meta\"><script id=\"data-json-mini\" type=\"application\/json\">\r\n{\r\n  \"distance_km\": 10.6,\r\n  \"points\": [\r\n    {\"d_m\":0.0,\"e_m\":4.724,\"grade\":0.0},\r\n    {\"d_m\":100.0,\"e_m\":4.435,\"grade\":-0.002893},\r\n    {\"d_m\":200.0,\"e_m\":4.524,\"grade\":0.000889},\r\n    {\"d_m\":300.0,\"e_m\":4.83,\"grade\":0.003057},\r\n    {\"d_m\":400.0,\"e_m\":5.026,\"grade\":0.001966},\r\n    {\"d_m\":500.0,\"e_m\":5.646,\"grade\":0.006194},\r\n    {\"d_m\":600.0,\"e_m\":6.327,\"grade\":0.006818},\r\n    {\"d_m\":700.0,\"e_m\":6.994,\"grade\":0.006671},\r\n    {\"d_m\":800.0,\"e_m\":7.805,\"grade\":0.008101},\r\n    {\"d_m\":900.0,\"e_m\":8.899,\"grade\":0.010939},\r\n    {\"d_m\":1000.0,\"e_m\":10.946,\"grade\":0.020476},\r\n    {\"d_m\":1100.0,\"e_m\":11.868,\"grade\":0.009219},\r\n    {\"d_m\":1200.0,\"e_m\":10.394,\"grade\":-0.014744},\r\n    {\"d_m\":1300.0,\"e_m\":9.847,\"grade\":-0.005462},\r\n    {\"d_m\":1400.0,\"e_m\":10.745,\"grade\":0.008972},\r\n    {\"d_m\":1500.0,\"e_m\":6.355,\"grade\":-0.043898},\r\n    {\"d_m\":1600.0,\"e_m\":5.584,\"grade\":-0.007709},\r\n    {\"d_m\":1700.0,\"e_m\":5.494,\"grade\":-0.0009},\r\n    {\"d_m\":1800.0,\"e_m\":5.332,\"grade\":-0.00162},\r\n    {\"d_m\":1900.0,\"e_m\":4.594,\"grade\":-0.007384},\r\n    {\"d_m\":2000.0,\"e_m\":4.056,\"grade\":-0.005378},\r\n    {\"d_m\":2100.0,\"e_m\":4.191,\"grade\":0.001353},\r\n    {\"d_m\":2200.0,\"e_m\":4.427,\"grade\":0.002357},\r\n    {\"d_m\":2300.0,\"e_m\":4.393,\"grade\":-0.000338},\r\n    {\"d_m\":2400.0,\"e_m\":4.53,\"grade\":0.001373},\r\n    {\"d_m\":2500.0,\"e_m\":4.631,\"grade\":0.001011},\r\n    {\"d_m\":2600.0,\"e_m\":4.586,\"grade\":-0.000451},\r\n    {\"d_m\":2700.0,\"e_m\":4.291,\"grade\":-0.002946},\r\n    {\"d_m\":2800.0,\"e_m\":4.373,\"grade\":0.000815},\r\n    {\"d_m\":2900.0,\"e_m\":4.934,\"grade\":0.005609},\r\n    {\"d_m\":3000.0,\"e_m\":5.528,\"grade\":0.005943},\r\n    {\"d_m\":3100.0,\"e_m\":6.869,\"grade\":0.013415},\r\n    {\"d_m\":3200.0,\"e_m\":7.361,\"grade\":0.004913},\r\n    {\"d_m\":3300.0,\"e_m\":7.175,\"grade\":-0.001858},\r\n    {\"d_m\":3400.0,\"e_m\":6.784,\"grade\":-0.003911},\r\n    {\"d_m\":3500.0,\"e_m\":7.392,\"grade\":0.006086},\r\n    {\"d_m\":3600.0,\"e_m\":8.198,\"grade\":0.008052},\r\n    {\"d_m\":3700.0,\"e_m\":7.304,\"grade\":-0.008938},\r\n    {\"d_m\":3800.0,\"e_m\":7.465,\"grade\":0.001609},\r\n    {\"d_m\":3900.0,\"e_m\":8.087,\"grade\":0.006221},\r\n    {\"d_m\":4000.0,\"e_m\":7.837,\"grade\":-0.002502},\r\n    {\"d_m\":4100.0,\"e_m\":6.837,\"grade\":-0.010002},\r\n    {\"d_m\":4200.0,\"e_m\":6.704,\"grade\":-0.001329},\r\n    {\"d_m\":4300.0,\"e_m\":6.341,\"grade\":-0.003633},\r\n    {\"d_m\":4400.0,\"e_m\":5.917,\"grade\":-0.00424},\r\n    {\"d_m\":4500.0,\"e_m\":5.844,\"grade\":-0.00073},\r\n    {\"d_m\":4600.0,\"e_m\":5.587,\"grade\":-0.002573},\r\n    {\"d_m\":4700.0,\"e_m\":5.772,\"grade\":0.00185},\r\n    {\"d_m\":4800.0,\"e_m\":5.385,\"grade\":-0.00387},\r\n    {\"d_m\":4900.0,\"e_m\":4.903,\"grade\":-0.00482},\r\n    {\"d_m\":5000.0,\"e_m\":4.807,\"grade\":-0.000962},\r\n    {\"d_m\":5100.0,\"e_m\":4.525,\"grade\":-0.00282},\r\n    {\"d_m\":5200.0,\"e_m\":4.152,\"grade\":-0.00373},\r\n    {\"d_m\":5300.0,\"e_m\":4.499,\"grade\":0.003474},\r\n    {\"d_m\":5400.0,\"e_m\":4.564,\"grade\":0.00065},\r\n    {\"d_m\":5500.0,\"e_m\":4.408,\"grade\":-0.00156},\r\n    {\"d_m\":5600.0,\"e_m\":4.528,\"grade\":0.001195},\r\n    {\"d_m\":5700.0,\"e_m\":4.487,\"grade\":-0.000412},\r\n    {\"d_m\":5800.0,\"e_m\":4.249,\"grade\":-0.002377},\r\n    {\"d_m\":5900.0,\"e_m\":4.152,\"grade\":-0.000974},\r\n    {\"d_m\":6000.0,\"e_m\":4.291,\"grade\":0.001394},\r\n    {\"d_m\":6100.0,\"e_m\":4.389,\"grade\":0.00098},\r\n    {\"d_m\":6200.0,\"e_m\":4.099,\"grade\":-0.0029},\r\n    {\"d_m\":6300.0,\"e_m\":4.089,\"grade\":-0.0001},\r\n    {\"d_m\":6400.0,\"e_m\":4.137,\"grade\":0.00048},\r\n    {\"d_m\":6500.0,\"e_m\":3.834,\"grade\":-0.00303},\r\n    {\"d_m\":6600.0,\"e_m\":3.978,\"grade\":0.00144},\r\n    {\"d_m\":6700.0,\"e_m\":4.059,\"grade\":0.00081},\r\n    {\"d_m\":6800.0,\"e_m\":3.862,\"grade\":-0.00197},\r\n    {\"d_m\":6900.0,\"e_m\":3.947,\"grade\":0.00085},\r\n    {\"d_m\":7000.0,\"e_m\":3.858,\"grade\":-0.00089},\r\n    {\"d_m\":7100.0,\"e_m\":3.771,\"grade\":-0.00087},\r\n    {\"d_m\":7200.0,\"e_m\":3.824,\"grade\":0.00053},\r\n    {\"d_m\":7300.0,\"e_m\":3.934,\"grade\":0.0011},\r\n    {\"d_m\":7400.0,\"e_m\":4.037,\"grade\":0.00103},\r\n    {\"d_m\":7500.0,\"e_m\":3.874,\"grade\":-0.00163},\r\n    {\"d_m\":7600.0,\"e_m\":3.754,\"grade\":-0.0012},\r\n    {\"d_m\":7700.0,\"e_m\":3.583,\"grade\":-0.00171},\r\n    {\"d_m\":7800.0,\"e_m\":3.363,\"grade\":-0.0022},\r\n    {\"d_m\":7900.0,\"e_m\":3.623,\"grade\":0.0026},\r\n    {\"d_m\":8000.0,\"e_m\":3.825,\"grade\":0.00202},\r\n    {\"d_m\":8100.0,\"e_m\":4.089,\"grade\":0.00264},\r\n    {\"d_m\":8200.0,\"e_m\":4.052,\"grade\":-0.00037},\r\n    {\"d_m\":8300.0,\"e_m\":4.049,\"grade\":-0.00003},\r\n    {\"d_m\":8400.0,\"e_m\":4.084,\"grade\":0.00035},\r\n    {\"d_m\":8500.0,\"e_m\":4.142,\"grade\":0.00058},\r\n    {\"d_m\":8600.0,\"e_m\":4.192,\"grade\":0.0005},\r\n    {\"d_m\":8700.0,\"e_m\":4.2,\"grade\":0.00008},\r\n    {\"d_m\":8800.0,\"e_m\":4.319,\"grade\":0.00119},\r\n    {\"d_m\":8900.0,\"e_m\":4.242,\"grade\":-0.00077},\r\n    {\"d_m\":9000.0,\"e_m\":4.188,\"grade\":-0.00054},\r\n    {\"d_m\":9100.0,\"e_m\":4.509,\"grade\":0.00321},\r\n    {\"d_m\":9200.0,\"e_m\":4.527,\"grade\":0.00018},\r\n    {\"d_m\":9300.0,\"e_m\":4.759,\"grade\":0.00232},\r\n    {\"d_m\":9400.0,\"e_m\":4.537,\"grade\":-0.00222},\r\n    {\"d_m\":9500.0,\"e_m\":3.882,\"grade\":-0.00655},\r\n    {\"d_m\":9600.0,\"e_m\":3.946,\"grade\":0.00064},\r\n    {\"d_m\":9700.0,\"e_m\":3.467,\"grade\":-0.00479},\r\n    {\"d_m\":9800.0,\"e_m\":4.337,\"grade\":0.008704},\r\n    {\"d_m\":9900.0,\"e_m\":3.594,\"grade\":-0.007434},\r\n    {\"d_m\":10000.0,\"e_m\":2.91,\"grade\":-0.006831},\r\n    {\"d_m\":10100.0,\"e_m\":5.132,\"grade\":0.02222},\r\n    {\"d_m\":10200.0,\"e_m\":5.688,\"grade\":0.005556},\r\n    {\"d_m\":10300.0,\"e_m\":4.658,\"grade\":-0.0103},\r\n    {\"d_m\":10400.0,\"e_m\":4.452,\"grade\":-0.002065},\r\n    {\"d_m\":10500.0,\"e_m\":3.801,\"grade\":-0.00651},\r\n    {\"d_m\":10600.0,\"e_m\":3.904,\"grade\":0.001029}\r\n  ]\r\n}\r\n<\/script>\r\nPerfil de altimetr\u00eda (m). L\u00edneas verticales = puntos kilom\u00e9tricos (1, 2, \u2026, Meta).<\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"vg-card\">\r\n      <div id=\"summary-mini\"><\/div>\r\n      <div class=\"table-wrap\">\r\n        <table>\r\n          <thead>\r\n            <tr><th>KM<\/th><th>Pend. media (%)<\/th><th>Ritmo<\/th><th>Tiempo acum.<\/th><th>Altitud (m)<\/th><\/tr>\r\n          <\/thead>\r\n          <tbody id=\"tbody-mini\"><\/tbody>\r\n        <\/table>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<!-- JSON embebido: distancia corregida a 10,60 km -->\r\n<script id=\"data-json-mini\" type=\"application\/json\">\r\n{\r\n  \"distance_km\": 10.6,\r\n  \"points\": [{\"d_m\": 0.0, \"e_m\": -13.036692307692308, \"grade\": -0.0027899509072005025}, {\"d_m\": 100.0, \"e_m\": -13.647736241349953, \"grade\": -0.0076238497395340055}, {\"d_m\": 200.0, \"e_m\": -14.313926555058927, \"grade\": -0.0028814549388009605}, {\"d_m\": 300.0, \"e_m\": -14.35406822204372, \"grade\": 0.0006129517717236333}, {\"d_m\": 400.0, \"e_m\": -14.227777016249398, \"grade\": 0.00164651150078317}, {\"d_m\": 500.0, \"e_m\": -14.075265300221782, \"grade\": 0.0007460418453593398}, {\"d_m\": 600.0, \"e_m\": -14.115398101305809, \"grade\": -0.0013612736979943384}, {\"d_m\": 700.0, \"e_m\": -14.306039132266035, \"grade\": -0.0017358128218228509}, {\"d_m\": 800.0, \"e_m\": -14.425086144842583, \"grade\": -0.0006531814288222471}, {\"d_m\": 900.0, \"e_m\": -14.476615014975504, \"grade\": -0.0008457307284580651}, {\"d_m\": 1000.0, \"e_m\": -14.586421750638914, \"grade\": -0.0011790807604213783}, {\"d_m\": 1100.0, \"e_m\": -14.710145921190604, \"grade\": -0.0015153251037201088}, {\"d_m\": 1200.0, \"e_m\": -14.851890190555546, \"grade\": -0.0010350207758349228}, {\"d_m\": 1300.0, \"e_m\": -14.890166556377876, \"grade\": 0.0012053680219582042}, {\"d_m\": 1400.0, \"e_m\": -14.637059949573944, \"grade\": 0.003016108039325154}, {\"d_m\": 1500.0, \"e_m\": -14.352594344873308, \"grade\": 0.003258810579991547}, {\"d_m\": 1600.0, \"e_m\": -13.267545789225021, \"grade\": 0.026537389729874194}, {\"d_m\": 1700.0, \"e_m\": -9.15192840478432, \"grade\": 0.04063913641646514}, {\"d_m\": 1800.0, \"e_m\": -6.764618124587313, \"grade\": 0.004539799236769202}, {\"d_m\": 1900.0, \"e_m\": -7.43586197254863, \"grade\": -0.00920524888572471}, {\"d_m\": 2000.0, \"e_m\": -8.290182873279482, \"grade\": -0.008299717643965136}, {\"d_m\": 2100.0, \"e_m\": -9.32322848655792, \"grade\": -0.014039437877307374}, {\"d_m\": 2200.0, \"e_m\": -10.772928948001038, \"grade\": -0.011201179277392672}, {\"d_m\": 2300.0, \"e_m\": -11.52363921747201, \"grade\": -0.004290609149983471}, {\"d_m\": 2400.0, \"e_m\": -11.77541514377935, \"grade\": 0.0010005606005301538}, {\"d_m\": 2500.0, \"e_m\": -10.83434027990089, \"grade\": 0.015912742193403825}, {\"d_m\": 2600.0, \"e_m\": -9.59526052278709, \"grade\": -0.004263225138737905}, {\"d_m\": 2700.0, \"e_m\": -12.192297686304217, \"grade\": -0.03497346053217223}, {\"d_m\": 2800.0, \"e_m\": -15.03890888969331, \"grade\": -0.015368283178377969}, {\"d_m\": 2900.0, \"e_m\": -15.711819503286733, \"grade\": -0.004136703228709316}, {\"d_m\": 3000.0, \"e_m\": -15.96122837392588, \"grade\": -0.003353590364192662}, {\"d_m\": 3100.0, \"e_m\": -16.429947285777825, \"grade\": -0.004193920969686431}, {\"d_m\": 3200.0, \"e_m\": -16.54604837224878, \"grade\": 0.0025168559365204503}, {\"d_m\": 3300.0, \"e_m\": -16.073178023534208, \"grade\": 0.007446988316628875}, {\"d_m\": 3400.0, \"e_m\": -15.194214718965704, \"grade\": 0.00898019160461228}, {\"d_m\": 3500.0, \"e_m\": -14.422528587136034, \"grade\": 0.004759391924973713}, {\"d_m\": 3600.0, \"e_m\": -14.08965374767766, \"grade\": 0.0034514912643926186}, {\"d_m\": 3700.0, \"e_m\": -13.469482012262016, \"grade\": 0.024047540539909366}, {\"d_m\": 3800.0, \"e_m\": -8.820119106164329, \"grade\": 0.0612294580890974}, {\"d_m\": 3900.0, \"e_m\": -3.161050824863565, \"grade\": 0.042078930818687466}, {\"d_m\": 4000.0, \"e_m\": 1.2361957427320462, \"grade\": 0.046209300854591843}, {\"d_m\": 4100.0, \"e_m\": 4.798478872209601, \"grade\": 0.018471972009521723}, {\"d_m\": 4200.0, \"e_m\": 5.435399701172989, \"grade\": 0.005644754663339571}, {\"d_m\": 4300.0, \"e_m\": 6.603304922886366, \"grade\": 0.016384584647316177}, {\"d_m\": 4400.0, \"e_m\": 8.514256471939609, \"grade\": 0.020234185156811763}, {\"d_m\": 4500.0, \"e_m\": 10.601801094652517, \"grade\": 0.02149897719181805}, {\"d_m\": 4600.0, \"e_m\": 12.698095033116932, \"grade\": 0.020374079167927234}, {\"d_m\": 4700.0, \"e_m\": 14.637466403617308, \"grade\": 0.018171210180777154}, {\"d_m\": 4800.0, \"e_m\": 16.568817867038575, \"grade\": 0.018782124061222306}, {\"d_m\": 4900.0, \"e_m\": 18.25746780075582, \"grade\": 0.0173769379087053}, {\"d_m\": 5000.0, \"e_m\": 19.893649601885222, \"grade\": 0.01551503121694342}, {\"d_m\": 5100.0, \"e_m\": 21.648716061036403, \"grade\": 0.021444877301467855}, {\"d_m\": 5200.0, \"e_m\": 23.96234337858821, \"grade\": 0.02385290149991153}, {\"d_m\": 5300.0, \"e_m\": 26.887248005814456, \"grade\": 0.033897849699227184}, {\"d_m\": 5400.0, \"e_m\": 30.22986169234465, \"grade\": 0.025917257040205897}, {\"d_m\": 5500.0, \"e_m\": 31.618767749225498, \"grade\": 0.0032001107412854067}, {\"d_m\": 5600.0, \"e_m\": 31.224947031463852, \"grade\": -0.005398183105810865}, {\"d_m\": 5700.0, \"e_m\": 30.945091717660922, \"grade\": 0.0034109389977456674}, {\"d_m\": 5800.0, \"e_m\": 32.327629632588064, \"grade\": 0.023280483106952906}, {\"d_m\": 5900.0, \"e_m\": 34.88551845239945, \"grade\": 0.020379296528735366}, {\"d_m\": 6000.0, \"e_m\": 35.62294068010799, \"grade\": -0.008077975015601098}, {\"d_m\": 6100.0, \"e_m\": 34.06872102924954, \"grade\": -0.01911536224079235}, {\"d_m\": 6200.0, \"e_m\": 32.00440882764584, \"grade\": -0.017564074931020884}, {\"d_m\": 6300.0, \"e_m\": 30.946819478941, \"grade\": -0.0024955532665370227}, {\"d_m\": 6400.0, \"e_m\": 31.140102103576556, \"grade\": 0.0033835876462356396}, {\"d_m\": 6500.0, \"e_m\": 31.40174149119349, \"grade\": 0.0011928697837290158}, {\"d_m\": 6600.0, \"e_m\": 31.474301347291302, \"grade\": 0.000938294610541881}, {\"d_m\": 6700.0, \"e_m\": 31.58032613074729, \"grade\": 0.001204614917548632}, {\"d_m\": 6800.0, \"e_m\": 31.69782938022717, \"grade\": 8.591442136587801e-05}, {\"d_m\": 6900.0, \"e_m\": 31.306034155004383, \"grade\": -0.00946018663957954}, {\"d_m\": 7000.0, \"e_m\": 30.023571081576858, \"grade\": -0.01324449913086056}, {\"d_m\": 7100.0, \"e_m\": 28.760879503611246, \"grade\": -0.013883536644475144}, {\"d_m\": 7200.0, \"e_m\": 26.97620676532436, \"grade\": -0.020982483519900584}, {\"d_m\": 7300.0, \"e_m\": 24.938190753874913, \"grade\": -0.01647285582003878}, {\"d_m\": 7400.0, \"e_m\": 23.760679250891094, \"grade\": -0.007996580693474833}, {\"d_m\": 7500.0, \"e_m\": 23.22500861019728, \"grade\": -0.005758124762624206}, {\"d_m\": 7600.0, \"e_m\": 22.394704238853738, \"grade\": -0.010764335122092704}, {\"d_m\": 7700.0, \"e_m\": 21.374238941462927, \"grade\": -0.006146592127113628}, {\"d_m\": 7800.0, \"e_m\": 21.334684681527165, \"grade\": 0.0035793938167896044}, {\"d_m\": 7900.0, \"e_m\": 21.710004632896027, \"grade\": 0.0012451754921236002}, {\"d_m\": 8000.0, \"e_m\": 21.414863362397387, \"grade\": -0.006765836283843889}, {\"d_m\": 8100.0, \"e_m\": 20.543482648018365, \"grade\": -0.00804752818843415}, {\"d_m\": 8200.0, \"e_m\": 20.022251894763105, \"grade\": -0.0014208427642286381}, {\"d_m\": 8300.0, \"e_m\": 20.104377253268414, \"grade\": 0.00084137463403124}, {\"d_m\": 8400.0, \"e_m\": 20.07483383960725, \"grade\": -0.0014204736688387953}, {\"d_m\": 8500.0, \"e_m\": 19.859789023692883, \"grade\": -0.0032513008695331537}, {\"d_m\": 8600.0, \"e_m\": 19.382329720972436, \"grade\": -0.005884122753653891}, {\"d_m\": 8700.0, \"e_m\": 18.82624260047108, \"grade\": -0.0037493520950469873}, {\"d_m\": 8800.0, \"e_m\": 18.558473705384667, \"grade\": -0.0028775570487108836}, {\"d_m\": 8900.0, \"e_m\": 18.12721657064962, \"grade\": -0.006035256734606342}, {\"d_m\": 9000.0, \"e_m\": 17.39522381523033, \"grade\": -0.007910687702336681}, {\"d_m\": 9100.0, \"e_m\": 16.612230439883927, \"grade\": -0.007738365739562631}, {\"d_m\": 9200.0, \"e_m\": 15.846700772746273, \"grade\": -0.007367136986803349}, {\"d_m\": 9300.0, \"e_m\": 15.198856114111107, \"grade\": -0.005438015172605777}, {\"d_m\": 9400.0, \"e_m\": 14.710959821313782, \"grade\": -0.0060915917648669375}, {\"d_m\": 9500.0, \"e_m\": 13.716847565444557, \"grade\": -0.012816486139785166}, {\"d_m\": 9600.0, \"e_m\": 12.638697279036421, \"grade\": -0.004014722694744943}, {\"d_m\": 9700.0, \"e_m\": 12.891819239145361, \"grade\": 0.004646245226394061}, {\"d_m\": 9800.0, \"e_m\": 13.176931935270455, \"grade\": -0.0006255904600943651}, {\"d_m\": 9900.0, \"e_m\": 12.96567175976324, \"grade\": -0.0008369508335440124}, {\"d_m\": 10000.0, \"e_m\": 13.063265332485862, \"grade\": 0.0014037223884933604}, {\"d_m\": 10100.0, \"e_m\": 13.124718379726284, \"grade\": -0.0005876126867407727}, {\"d_m\": 10200.0, \"e_m\": 12.961949458445908, \"grade\": -0.002324024038932322}, {\"d_m\": 10300.0, \"e_m\": 12.759835900244925, \"grade\": -0.0004310877149091041}, {\"d_m\": 10400.0, \"e_m\": 12.869179606784376, \"grade\": 0.0013999918430939928}, {\"d_m\": 10500.0, \"e_m\": 12.835157751839459, \"grade\": -0.002331163020800471}, {\"d_m\": 10600.0, \"e_m\": 12.55768924755843, \"grade\": -0.0024222689420769685}, {\"d_m\": 10700.0, \"e_m\": 12.189393968610883, \"grade\": -0.009640430529159687}, {\"d_m\": 10800.0, \"e_m\": 10.703873920947945, \"grade\": -0.017628555119932762}, {\"d_m\": 10900.0, \"e_m\": 8.81710655835978, \"grade\": -0.020079830276896384}, {\"d_m\": 11000.0, \"e_m\": 6.455960104447373, \"grade\": -0.02682374660654357}, {\"d_m\": 11100.0, \"e_m\": 3.9538060661741015, \"grade\": -0.01795258836544898}, {\"d_m\": 11200.0, \"e_m\": 2.8288429519669487, \"grade\": -0.0049088870547712915}, {\"d_m\": 11300.0, \"e_m\": 2.804065588907453, \"grade\": 0.0008554076765593655}, {\"d_m\": 11400.0, \"e_m\": 2.6005374337493694, \"grade\": -0.0151920386190786}, {\"d_m\": 11500.0, \"e_m\": -0.9387941813964517, \"grade\": -0.049427063766972944}, {\"d_m\": 11600.0, \"e_m\": -6.034901054471624, \"grade\": -0.04668798690782786}, {\"d_m\": 11700.0, \"e_m\": -10.261856821231664, \"grade\": -0.033654381534904305}, {\"d_m\": 11800.0, \"e_m\": -12.934554215932803, \"grade\": -0.022453099931027846}, {\"d_m\": 11900.0, \"e_m\": -14.818205433842342, \"grade\": -0.01758568040971639}, {\"d_m\": 12000.0, \"e_m\": -16.524336057929617, \"grade\": -0.01454089451163151}, {\"d_m\": 12100.0, \"e_m\": -17.472820082002023, \"grade\": -0.0014458069984761934}, {\"d_m\": 12200.0, \"e_m\": -16.533546499224375, \"grade\": 0.019387988147328075}, {\"d_m\": 12300.0, \"e_m\": -13.915916811596317, \"grade\": 0.026845409306571442}, {\"d_m\": 12400.0, \"e_m\": -11.399177391504804, \"grade\": 0.02196002236928102}, {\"d_m\": 12500.0, \"e_m\": -9.764487574528252, \"grade\": 0.007967519782116562}, {\"d_m\": 12600.0, \"e_m\": -10.2429306515545, \"grade\": -0.017116662750884012}, {\"d_m\": 12700.0, \"e_m\": -12.601781739547867, \"grade\": -0.025534255163480513}, {\"d_m\": 12800.0, \"e_m\": -14.893086974679644, \"grade\": -0.015184864879582243}, {\"d_m\": 12900.0, \"e_m\": -15.832969174031419, \"grade\": -0.007865060703501054}, {\"d_m\": 13000.0, \"e_m\": -16.61093652150555, \"grade\": -0.0076300975630290676}, {\"d_m\": 13100.0, \"e_m\": -17.35259673818935, \"grade\": -0.007435756814071652}, {\"d_m\": 13200.0, \"e_m\": -18.143470325090632, \"grade\": -0.00791510148488051}, {\"d_m\": 13300.0, \"e_m\": -18.82686843100862, \"grade\": -0.0048602190308016805}, {\"d_m\": 13400.0, \"e_m\": -19.03731930371861, \"grade\": 0.0001890414800375595}, {\"d_m\": 13500.0, \"e_m\": -18.929604297892336, \"grade\": 0.0005233796907751298}, {\"d_m\": 13600.0, \"e_m\": -18.962609349136944, \"grade\": 0.0005306221919259712}, {\"d_m\": 13700.0, \"e_m\": -18.514986226295, \"grade\": 0.00834888746465623}, {\"d_m\": 13800.0, \"e_m\": -17.525411852393994, \"grade\": 0.00879492173074837}, {\"d_m\": 13900.0, \"e_m\": -16.761780401753086, \"grade\": 0.0069972444575156344}, {\"d_m\": 14000.0, \"e_m\": -16.264032565192437, \"grade\": 0.002368333621909677}, {\"d_m\": 14100.0, \"e_m\": -16.25569450643947, \"grade\": -0.0005617421984728566}, {\"d_m\": 14200.0, \"e_m\": -16.24673646884855, \"grade\": 0.0017363571807204891}, {\"d_m\": 14300.0, \"e_m\": -15.94945616583966, \"grade\": 0.0027957127467700717}, {\"d_m\": 14400.0, \"e_m\": -15.822176203529503, \"grade\": -0.0003611006121685811}, {\"d_m\": 14500.0, \"e_m\": -15.909838044330444, \"grade\": -0.00020236871116699362}, {\"d_m\": 14600.0, \"e_m\": -15.721976675396737, \"grade\": 0.004794633908252735}, {\"d_m\": 14700.0, \"e_m\": -14.915279560827404, \"grade\": 0.012059299073164649}, {\"d_m\": 14800.0, \"e_m\": -13.457584104604484, \"grade\": 0.013529399537731983}, {\"d_m\": 14900.0, \"e_m\": -12.290815690486848, \"grade\": 0.008734159146027452}, {\"d_m\": 15000.0, \"e_m\": -11.684615097310965, \"grade\": 0.0056550933859258554}, {\"d_m\": 15100.0, \"e_m\": -10.828838881359594, \"grade\": 0.018711033359473106}, {\"d_m\": 15200.0, \"e_m\": -8.00859599546878, \"grade\": 0.027182463379196335}, {\"d_m\": 15300.0, \"e_m\": -6.928687835602636, \"grade\": -0.008568727209127953}, {\"d_m\": 15400.0, \"e_m\": -8.582803417419049, \"grade\": -0.01621205968829618}, {\"d_m\": 15500.0, \"e_m\": -10.089675563445068, \"grade\": -0.01371128776077077}, {\"d_m\": 15600.0, \"e_m\": -10.1525225687894, \"grade\": 0.024002365170365005}, {\"d_m\": 15700.0, \"e_m\": -6.154774783941025, \"grade\": 0.03716084560665014}, {\"d_m\": 15800.0, \"e_m\": -3.9918919280272616, \"grade\": 0.005837754511269542}, {\"d_m\": 15900.0, \"e_m\": -3.8759716558921267, \"grade\": 0.001841911937415408}, {\"d_m\": 16000.0, \"e_m\": -4.487450646146021, \"grade\": -0.03230706110252524}, {\"d_m\": 16100.0, \"e_m\": -10.325890476718746, \"grade\": -0.06491299759723354}, {\"d_m\": 16200.0, \"e_m\": -15.14273120870129, \"grade\": -0.021836295491083194}, {\"d_m\": 16300.0, \"e_m\": -15.811361869435254, \"grade\": 0.0024917533337817234}, {\"d_m\": 16400.0, \"e_m\": -14.546925969062718, \"grade\": 0.022857100901683067}, {\"d_m\": 16500.0, \"e_m\": -11.846596127499659, \"grade\": 0.01949469766287331}, {\"d_m\": 16600.0, \"e_m\": -11.27760283233053, \"grade\": -0.006808013266946205}, {\"d_m\": 16700.0, \"e_m\": -12.401785899517412, \"grade\": -0.009761648116438836}, {\"d_m\": 16800.0, \"e_m\": -13.248760825781808, \"grade\": -0.0111616771409423}, {\"d_m\": 16900.0, \"e_m\": -14.705408521653691, \"grade\": -0.01226726294879116}, {\"d_m\": 17000.0, \"e_m\": -15.36842583139303, \"grade\": -0.000542732886056907}, {\"d_m\": 17100.0, \"e_m\": -14.889129213981768, \"grade\": 0.0077621389598984255}, {\"d_m\": 17200.0, \"e_m\": -14.17140784951795, \"grade\": 0.0030021671110382364}, {\"d_m\": 17300.0, \"e_m\": -14.348909616923448, \"grade\": -0.0031845030743122395}, {\"d_m\": 17400.0, \"e_m\": -14.659958941864932, \"grade\": -0.0075131163513172975}, {\"d_m\": 17500.0, \"e_m\": -15.97620666428892, \"grade\": -0.01563300600335463}, {\"d_m\": 17600.0, \"e_m\": -17.27264251318153, \"grade\": -0.00617507593942598}, {\"d_m\": 17700.0, \"e_m\": -17.433588153998286, \"grade\": 0.0005698702108124109}, {\"d_m\": 17800.0, \"e_m\": -17.469562239324453, \"grade\": -0.004055080221545957}, {\"d_m\": 17900.0, \"e_m\": -18.099585466134883, \"grade\": -0.0054699894518617145}, {\"d_m\": 18000.0, \"e_m\": -18.390632978562525, \"grade\": -0.001178068107581538}, {\"d_m\": 18100.0, \"e_m\": -18.551641721975862, \"grade\": -0.002022891033158203}, {\"d_m\": 18200.0, \"e_m\": -18.67323725501528, \"grade\": 0.0007092840720600791}, {\"d_m\": 18300.0, \"e_m\": -18.40536045504886, \"grade\": 0.0028344197718883635}, {\"d_m\": 18400.0, \"e_m\": -18.241340724005436, \"grade\": 0.0006824157160278687}, {\"d_m\": 18500.0, \"e_m\": -18.15875508197567, \"grade\": 0.002144410457491439}, {\"d_m\": 18600.0, \"e_m\": -17.876562527963717, \"grade\": 0.0023986169336775733}, {\"d_m\": 18700.0, \"e_m\": -17.769066883537104, \"grade\": -0.00024816490253702026}, {\"d_m\": 18800.0, \"e_m\": -17.833478037028854, \"grade\": -0.00024054925435148533}, {\"d_m\": 18900.0, \"e_m\": -17.78631168119273, \"grade\": 0.001005467175840451}, {\"d_m\": 19000.0, \"e_m\": -17.57078700503085, \"grade\": 0.002906893426078483}, {\"d_m\": 19100.0, \"e_m\": -17.29928085006364, \"grade\": 0.0028090293680999422}, {\"d_m\": 19200.0, \"e_m\": -16.932755744135108, \"grade\": 0.004613986189618728}, {\"d_m\": 19300.0, \"e_m\": -16.46268565337922, \"grade\": 0.0035388015548830152}, {\"d_m\": 19400.0, \"e_m\": -16.27164794497439, \"grade\": 0.0007175275853344232}, {\"d_m\": 19500.0, \"e_m\": -16.264872374775972, \"grade\": -6.837044065374442e-05}, {\"d_m\": 19600.0, \"e_m\": -16.276278205820795, \"grade\": -0.0007849435305286789}, {\"d_m\": 19700.0, \"e_m\": -16.505055182757424, \"grade\": -0.0036625124253664865}, {\"d_m\": 19800.0, \"e_m\": -16.903370935705638, \"grade\": -0.002809789924601631}, {\"d_m\": 19900.0, \"e_m\": -16.98141323949238, \"grade\": 0.0012216755244558186}, {\"d_m\": 20000.0, \"e_m\": -16.585670901042636, \"grade\": 0.00527160450271463}, {\"d_m\": 20100.0, \"e_m\": -16.191768612010932, \"grade\": 0.0007458299631551668}, {\"d_m\": 20200.0, \"e_m\": -16.443302791586575, \"grade\": -0.0031169402769608114}, {\"d_m\": 20300.0, \"e_m\": -16.614397251610754, \"grade\": -0.00042364066428234536}, {\"d_m\": 20400.0, \"e_m\": -16.612019396433027, \"grade\": 0.00029505023647875107}, {\"d_m\": 20500.0, \"e_m\": -16.57400175404785, \"grade\": 0.00029408455407114786}, {\"d_m\": 20600.0, \"e_m\": -16.58249094844729, \"grade\": -0.0013134459499368133}, {\"d_m\": 20700.0, \"e_m\": -16.824379740078978, \"grade\": -0.001989067871715129}, {\"d_m\": 20800.0, \"e_m\": -16.878248199793095, \"grade\": 0.0004916880060647699}, {\"d_m\": 20900.0, \"e_m\": -16.886416465324313, \"grade\": -0.001267635194803134}, {\"d_m\": 21000.0, \"e_m\": -17.06160515935005, \"grade\": -0.0011926109887827963}, {\"d_m\": 21100.0, \"e_m\": -17.122135000190664, \"grade\": -0.000906589268859399}, {\"d_m\": 21200.0, \"e_m\": -17.309709368447155, \"grade\": -0.002786562425493919}, {\"d_m\": 21300.0, \"e_m\": -17.59572726264046, \"grade\": -0.0017255799131237737}, {\"d_m\": 21400.0, \"e_m\": -17.642059194932514, \"grade\": -5.561536405995327e-05}]\r\n}\r\n<\/script>\r\n\r\n<script>\r\n(function(){\r\n  \/\/ ---------- Utilidades ----------\r\n  function minettiCost(s){\r\n    const x = Math.max(-0.35, Math.min(0.35, s));\r\n    return 155.4*x**5 - 30.4*x**4 - 43.3*x**3 + 46.3*x**2 + 19.5*x + 3.6;\r\n  }\r\n\r\n  function parseTimeStr(str){\r\n    const p = str.trim().split(\":\").map(Number);\r\n    if(p.length===3) return p[0]*3600 + p[1]*60 + p[2];\r\n    if(p.length===2) return p[0]*60 + p[1];\r\n    if(p.length===1) return p[0];\r\n    return NaN;\r\n  }\r\n\r\n  function fmtPace(secPerKm){\r\n    const m = Math.floor(secPerKm\/60);\r\n    const s = Math.round(secPerKm%60);\r\n    return m+\":\"+String(s).padStart(2,\"0\")+\"\/km\";\r\n  }\r\n\r\n  function fmtTime(s){\r\n    s = Math.round(s);\r\n    const h  = Math.floor(s\/3600);\r\n    const m  = Math.floor((s%3600)\/60);\r\n    const sc = s%60;\r\n    return h>0\r\n      ? (h+\":\"+String(m).padStart(2,\"0\")+\":\"+String(sc).padStart(2,\"0\"))\r\n      : (m+\":\"+String(sc).padStart(2,\"0\"));\r\n  }\r\n\r\n  \/\/ ---------- Datos embebidos ----------\r\n  const dataEl = document.getElementById(\"data-json-mini\");\r\n  if(!dataEl){\r\n    console.error(\"No se ha encontrado #data-json-mini\");\r\n    return;\r\n  }\r\n\r\n  const data = JSON.parse(dataEl.textContent);\r\n  const D    = Math.round(data.distance_km * 1000); \/\/ 10,6 km -> 10600 m\r\n\r\n  const distEl = document.getElementById(\"dist-mini\");\r\n  if (distEl) distEl.textContent = data.distance_km.toFixed(2) + \" km\";\r\n\r\n  \/\/ ---------- Canvas helper ----------\r\n  function sizeCanvas(cvs){\r\n    const ratio = Math.max(1, window.devicePixelRatio || 1);\r\n    const cssW  = cvs.clientWidth || (cvs.parentElement ? cvs.parentElement.clientWidth : 300) || 300;\r\n    const cssH  = parseFloat(getComputedStyle(cvs).height) || 240;\r\n    cvs.width   = Math.round(cssW * ratio);\r\n    cvs.height  = Math.round(cssH * ratio);\r\n    const ctx   = cvs.getContext('2d');\r\n    ctx.setTransform(ratio,0,0,ratio,0,0); \/\/ dibujar en unidades CSS\r\n    return {ctx, w: cssW, h: cssH};\r\n  }\r\n\r\n  function niceStep(range){\r\n    const rough = range \/ 5; \/\/ ~5 marcas\r\n    const pow10 = Math.pow(10, Math.floor(Math.log10(Math.max(rough,1e-6))));\r\n    const candidates = [1,2,5,10];\r\n    let best = candidates[0]*pow10;\r\n    for(const c of candidates){\r\n      const v = c*pow10;\r\n      if(Math.abs(rough - v) < Math.abs(rough - best)) best = v;\r\n    }\r\n    return best;\r\n  }\r\n\r\n  \/\/ ---------- Dibujo altimetr\u00eda ----------\r\n  function drawElevation(){\r\n    if(!data || !data.points || !data.points.length) return;\r\n\r\n    const cvs = document.getElementById(\"elev-mini\");\r\n    if(!cvs) return;\r\n\r\n    const {ctx, w, h} = sizeCanvas(cvs);\r\n\r\n    const es   = data.points.map(p=>p.e_m);\r\n    const emin = Math.min(...es);\r\n    const emax = Math.max(...es);\r\n    const padL = 52, padR = 24, padT = 20, padB = 44;\r\n\r\n    ctx.clearRect(0,0,w,h);\r\n\r\n    \/\/ Eje X base\r\n    ctx.strokeStyle = \"#e5e7eb\";\r\n    ctx.lineWidth   = 1.5;\r\n    ctx.beginPath();\r\n    ctx.moveTo(padL, h-padB);\r\n    ctx.lineTo(w-padR, h-padB);\r\n    ctx.stroke();\r\n\r\n    \/\/ Ticks por kil\u00f3metro\r\n    const totalKm = Math.floor(D\/1000);\r\n    ctx.fillStyle    = \"#6b7280\";\r\n    ctx.textAlign    = \"center\";\r\n    ctx.textBaseline = \"top\";\r\n    ctx.font         = \"600 12px system-ui,Segoe UI,Roboto,Arial\";\r\n\r\n    for(let k=1;k<=totalKm;k++){\r\n      const x = padL + (k*1000 \/ D) * (w - padL - padR);\r\n      ctx.strokeStyle = \"#e5e7eb\";\r\n      ctx.beginPath();\r\n      ctx.moveTo(x,padT);\r\n      ctx.lineTo(x,h-padB);\r\n      ctx.stroke();\r\n      ctx.fillText(String(k), x, h - padB + 6);\r\n    }\r\n\r\n    \/\/ Meta si no es m\u00faltiplo exacto\r\n    if (D % 1000){\r\n      const xMeta = padL + (D \/ D) * (w - padL - padR);\r\n      ctx.strokeStyle = \"#94a3b8\";\r\n      ctx.setLineDash([8,6]);\r\n      ctx.beginPath();\r\n      ctx.moveTo(xMeta,padT);\r\n      ctx.lineTo(xMeta,h-padB);\r\n      ctx.stroke();\r\n      ctx.setLineDash([]);\r\n      ctx.fillText(\"Meta\", xMeta, h - padB + 6);\r\n    }\r\n\r\n    \/\/ Eje Y altitud\r\n    const range = (emax - emin) || 1;\r\n    const step  = niceStep(range);\r\n    const start = Math.ceil(emin\/step)*step;\r\n\r\n    ctx.textAlign    = \"right\";\r\n    ctx.textBaseline = \"middle\";\r\n    ctx.fillStyle    = \"#6b7280\";\r\n    ctx.font         = \"600 12px system-ui,Segoe UI,Roboto,Arial\";\r\n\r\n    for(let v = start; v <= emax + 1e-6; v += step){\r\n      const y = padT + (1 - ((v - emin) \/ range)) * (h - padT - padB);\r\n      \/\/ l\u00ednea horizontal\r\n      ctx.strokeStyle = \"#f1f5f9\";\r\n      ctx.beginPath();\r\n      ctx.moveTo(padL, y);\r\n      ctx.lineTo(w - padR, y);\r\n      ctx.stroke();\r\n      \/\/ tick + etiqueta\r\n      ctx.strokeStyle = \"#cbd5e1\";\r\n      ctx.beginPath();\r\n      ctx.moveTo(padL-6, y);\r\n      ctx.lineTo(padL, y);\r\n      ctx.stroke();\r\n      ctx.fillText(`${Math.round(v)} m`, padL-8, y);\r\n    }\r\n\r\n    \/\/ Perfil altim\u00e9trico con color = --accent de ESTA secci\u00f3n\r\n    const gapSection = cvs.closest('.vigbay-gap');\r\n    let accent = \"#2563eb\";\r\n    if(gapSection){\r\n      const cssAccent = getComputedStyle(gapSection).getPropertyValue('--accent');\r\n      if(cssAccent && cssAccent.trim()) accent = cssAccent.trim();\r\n    }\r\n\r\n    ctx.strokeStyle = accent;\r\n    ctx.lineWidth   = 2;\r\n    ctx.beginPath();\r\n    for(let i=0;i<data.points.length;i++){\r\n      const x = padL + (data.points[i].d_m \/ D) * (w - padL - padR);\r\n      const y = padT + (1 - ((data.points[i].e_m - emin) \/ range)) * (h - padT - padB);\r\n      if(i===0) ctx.moveTo(x,y); else ctx.lineTo(x,y);\r\n    }\r\n    ctx.stroke();\r\n  }\r\n\r\n  \/\/ ---------- C\u00e1lculo ritmos + tabla ----------\r\n  function computeAndRender(){\r\n    if(!data || !data.points || !data.points.length){\r\n      alert(\"Datos de altimetr\u00eda no cargados.\");\r\n      return;\r\n    }\r\n\r\n    const timeInput = document.getElementById(\"targetTime-mini\");\r\n    const T = parseTimeStr(timeInput ? timeInput.value : \"\");\r\n    if(!isFinite(T) || T<=0){\r\n      alert(\"Tiempo objetivo no v\u00e1lido\");\r\n      return;\r\n    }\r\n\r\n    const pts  = data.points;\r\n    const base = T \/ D;\r\n    const C0   = minettiCost(0.0);\r\n\r\n    let sumW = 0, sumD = 0;\r\n    const rel = new Array(pts.length);\r\n\r\n    for(let i=0;i<pts.length;i++){\r\n      rel[i] = minettiCost(pts[i].grade)\/C0;\r\n    }\r\n    for(let i=1;i<pts.length;i++){\r\n      const dd = pts[i].d_m - pts[i-1].d_m;\r\n      sumW += rel[i]*dd;\r\n      sumD += dd;\r\n    }\r\n    const fAvg = sumW\/sumD;\r\n\r\n    let cum = 0;\r\n    const timeAt = [[0,0]];\r\n    for(let i=1;i<pts.length;i++){\r\n      const dd   = pts[i].d_m - pts[i-1].d_m;\r\n      const pace = base * (rel[i]\/fAvg);\r\n      cum += dd*pace;\r\n      timeAt.push([pts[i].d_m, cum]);\r\n    }\r\n\r\n    const totalKm = Math.floor(D\/1000);\r\n    const rows    = [];\r\n    for(let k=1;k<=totalKm;k++){\r\n      const x = k*1000;\r\n      let idx = 1;\r\n      while(idx < timeAt.length && timeAt[idx][0] < x) idx++;\r\n\r\n      const x0 = timeAt[idx-1][0], t0 = timeAt[idx-1][1];\r\n      const x1 = timeAt[idx][0],   t1 = timeAt[idx][1];\r\n      const r  = (x1===x0)?0:(x-x0)\/(x1-x0);\r\n      const t  = t0 + r*(t1-t0);\r\n\r\n      const e0   = pts[idx-1].e_m, e1 = pts[idx].e_m;\r\n      const elev = e0 + r*(e1-e0);\r\n\r\n      rows.push({km:k, t:t, e:elev});\r\n    }\r\n\r\n    const tbody = document.getElementById(\"tbody-mini\");\r\n    if(!tbody) return;\r\n    tbody.innerHTML = \"\";\r\n\r\n    let prev = 0;\r\n    for(let i=0;i<rows.length;i++){\r\n      const split   = rows[i].t - prev;\r\n      prev          = rows[i].t;\r\n      const kmStart = i*1000;\r\n      const kmEnd   = (i+1)*1000;\r\n\r\n      let wsum = 0, w = 0;\r\n      for(let j=1;j<pts.length;j++){\r\n        const dm0 = pts[j-1].d_m;\r\n        const dm1 = pts[j].d_m;\r\n        if(dm0 < kmEnd && dm1 > kmStart){\r\n          const segStart = Math.max(dm0, kmStart);\r\n          const segEnd   = Math.min(dm1, kmEnd);\r\n          const dd       = Math.max(0, segEnd - segStart);\r\n          if(dd>0){\r\n            wsum += pts[j].grade * dd;\r\n            w    += dd;\r\n          }\r\n        }\r\n      }\r\n      const gradePct = w>0 ? (wsum\/w)*100 : 0;\r\n\r\n      const tr = document.createElement(\"tr\");\r\n      tr.innerHTML =\r\n        \"<td>k\"+(i+1)+\"<\/td>\"+\r\n        \"<td>\"+gradePct.toFixed(2)+\"<\/td>\"+\r\n        \"<td>\"+fmtPace(split)+\"<\/td>\"+\r\n        \"<td>\"+fmtTime(rows[i].t)+\"<\/td>\"+\r\n        \"<td>\"+rows[i].e.toFixed(1)+\"<\/td>\";\r\n      tbody.appendChild(tr);\r\n    }\r\n\r\n    const summary = document.getElementById(\"summary-mini\");\r\n    if(summary){\r\n      summary.innerHTML =\r\n        \"<p><strong>Tiempo objetivo:<\/strong> \"+fmtTime(T)+\r\n        \" \u00b7 <strong>Ritmo medio (llano):<\/strong> \"+fmtPace(T\/(D\/1000))+\"<\/p>\";\r\n    }\r\n  }\r\n\r\n  \/\/ ---------- Eventos, inicializaci\u00f3n ----------\r\n  const btn = document.getElementById(\"btn-mini\");\r\n  if(btn){\r\n    btn.addEventListener(\"click\", computeAndRender);\r\n  }\r\n\r\n  \/\/ Primer render al cargar el bloque\r\n  drawElevation();\r\n  computeAndRender();\r\n\r\n  \/\/ Re-dibujar gr\u00e1fica en resize (debounced)\r\n  let rAF = null;\r\n  window.addEventListener(\"resize\", () => {\r\n    if(rAF) cancelAnimationFrame(rAF);\r\n    rAF = requestAnimationFrame(drawElevation);\r\n  });\r\n})();\r\n<\/script>\r\n\r\n<\/body>\r\n<\/html>\r\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>\u00a1calcula tus tiempos! Introduce el tiempo deseado y ver\u00e1s los ritmos ajustados al perfil de la carrera Esta calculadora de [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-1127","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Calculadora de ritmos MINIBAY - vig-bay.com<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/vig-bay.com\/gl\/calculadora-ritmos-minibay\/\" \/>\n<meta property=\"og:locale\" content=\"gl_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Calculadora de ritmos MINIBAY - vig-bay.com\" \/>\n<meta property=\"og:description\" content=\"\u00a1calcula tus tiempos! Introduce el tiempo deseado y ver\u00e1s los ritmos ajustados al perfil de la carrera Esta calculadora de [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vig-bay.com\/gl\/calculadora-ritmos-minibay\/\" \/>\n<meta property=\"og:site_name\" content=\"vig-bay.com\" \/>\n<meta property=\"article:modified_time\" content=\"2025-11-17T13:23:39+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Tempo de lectura\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minuto\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/vig-bay.com\/calculadora-ritmos-minibay\/\",\"url\":\"https:\/\/vig-bay.com\/calculadora-ritmos-minibay\/\",\"name\":\"Calculadora de ritmos MINIBAY - vig-bay.com\",\"isPartOf\":{\"@id\":\"https:\/\/vig-bay.com\/#website\"},\"datePublished\":\"2025-11-17T12:47:55+00:00\",\"dateModified\":\"2025-11-17T13:23:39+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/vig-bay.com\/calculadora-ritmos-minibay\/#breadcrumb\"},\"inLanguage\":\"gl-ES\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/vig-bay.com\/calculadora-ritmos-minibay\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/vig-bay.com\/calculadora-ritmos-minibay\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/vig-bay.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Calculadora de ritmos MINIBAY\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/vig-bay.com\/#website\",\"url\":\"https:\/\/vig-bay.com\/\",\"name\":\"vig-bay.com\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/vig-bay.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/vig-bay.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"gl-ES\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/vig-bay.com\/#organization\",\"name\":\"vig-bay.com\",\"url\":\"https:\/\/vig-bay.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"gl-ES\",\"@id\":\"https:\/\/vig-bay.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/vig-bay.com\/wp-content\/uploads\/2025\/07\/cropped-logo-vigbay_Mesa-de-trabajo-1-1.png\",\"contentUrl\":\"https:\/\/vig-bay.com\/wp-content\/uploads\/2025\/07\/cropped-logo-vigbay_Mesa-de-trabajo-1-1.png\",\"width\":512,\"height\":512,\"caption\":\"vig-bay.com\"},\"image\":{\"@id\":\"https:\/\/vig-bay.com\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Calculadora de ritmos MINIBAY - vig-bay.com","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/vig-bay.com\/gl\/calculadora-ritmos-minibay\/","og_locale":"gl_ES","og_type":"article","og_title":"Calculadora de ritmos MINIBAY - vig-bay.com","og_description":"\u00a1calcula tus tiempos! Introduce el tiempo deseado y ver\u00e1s los ritmos ajustados al perfil de la carrera Esta calculadora de [&hellip;]","og_url":"https:\/\/vig-bay.com\/gl\/calculadora-ritmos-minibay\/","og_site_name":"vig-bay.com","article_modified_time":"2025-11-17T13:23:39+00:00","twitter_card":"summary_large_image","twitter_misc":{"Tempo de lectura":"1 minuto"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/vig-bay.com\/calculadora-ritmos-minibay\/","url":"https:\/\/vig-bay.com\/calculadora-ritmos-minibay\/","name":"Calculadora de ritmos MINIBAY - vig-bay.com","isPartOf":{"@id":"https:\/\/vig-bay.com\/#website"},"datePublished":"2025-11-17T12:47:55+00:00","dateModified":"2025-11-17T13:23:39+00:00","breadcrumb":{"@id":"https:\/\/vig-bay.com\/calculadora-ritmos-minibay\/#breadcrumb"},"inLanguage":"gl-ES","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vig-bay.com\/calculadora-ritmos-minibay\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/vig-bay.com\/calculadora-ritmos-minibay\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/vig-bay.com\/"},{"@type":"ListItem","position":2,"name":"Calculadora de ritmos MINIBAY"}]},{"@type":"WebSite","@id":"https:\/\/vig-bay.com\/#website","url":"https:\/\/vig-bay.com\/","name":"vig-bay.com","description":"","publisher":{"@id":"https:\/\/vig-bay.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vig-bay.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"gl-ES"},{"@type":"Organization","@id":"https:\/\/vig-bay.com\/#organization","name":"vig-bay.com","url":"https:\/\/vig-bay.com\/","logo":{"@type":"ImageObject","inLanguage":"gl-ES","@id":"https:\/\/vig-bay.com\/#\/schema\/logo\/image\/","url":"https:\/\/vig-bay.com\/wp-content\/uploads\/2025\/07\/cropped-logo-vigbay_Mesa-de-trabajo-1-1.png","contentUrl":"https:\/\/vig-bay.com\/wp-content\/uploads\/2025\/07\/cropped-logo-vigbay_Mesa-de-trabajo-1-1.png","width":512,"height":512,"caption":"vig-bay.com"},"image":{"@id":"https:\/\/vig-bay.com\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/vig-bay.com\/gl\/wp-json\/wp\/v2\/pages\/1127","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vig-bay.com\/gl\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/vig-bay.com\/gl\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/vig-bay.com\/gl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vig-bay.com\/gl\/wp-json\/wp\/v2\/comments?post=1127"}],"version-history":[{"count":10,"href":"https:\/\/vig-bay.com\/gl\/wp-json\/wp\/v2\/pages\/1127\/revisions"}],"predecessor-version":[{"id":1173,"href":"https:\/\/vig-bay.com\/gl\/wp-json\/wp\/v2\/pages\/1127\/revisions\/1173"}],"wp:attachment":[{"href":"https:\/\/vig-bay.com\/gl\/wp-json\/wp\/v2\/media?parent=1127"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}