{"id":4994,"date":"2025-11-14T18:33:32","date_gmt":"2025-11-14T18:33:32","guid":{"rendered":"https:\/\/buddypacer.com\/?page_id=4994"},"modified":"2025-11-18T11:25:26","modified_gmt":"2025-11-18T11:25:26","slug":"calculadora","status":"publish","type":"page","link":"https:\/\/buddypacer.com\/en\/calculadora\/","title":{"rendered":"Calculadora de tiempos y ritmos. 10K, media marat\u00f3n y marat\u00f3n"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"4994\" class=\"elementor elementor-4994\" data-elementor-post-type=\"page\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-00c57fb elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"00c57fb\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\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-6e33e30\" data-id=\"6e33e30\" 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-88ea987 elementor-widget-mobile__width-initial elementor-nav-menu--stretch elementor-widget__width-initial elementor-widget-tablet__width-initial elementor-nav-menu__text-align-aside elementor-nav-menu--toggle elementor-nav-menu--burger elementor-widget elementor-widget-nav-menu\" data-id=\"88ea987\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;full_width&quot;:&quot;stretch&quot;,&quot;layout&quot;:&quot;dropdown&quot;,&quot;submenu_icon&quot;:{&quot;value&quot;:&quot;&lt;i class=\\&quot;fas fa-caret-down\\&quot;&gt;&lt;\\\/i&gt;&quot;,&quot;library&quot;:&quot;fa-solid&quot;},&quot;toggle&quot;:&quot;burger&quot;}\" data-widget_type=\"nav-menu.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-menu-toggle\" role=\"button\" tabindex=\"0\" aria-label=\"Menu Toggle\" aria-expanded=\"false\">\n\t\t\t<i aria-hidden=\"true\" role=\"presentation\" class=\"elementor-menu-toggle__icon--open eicon-menu-bar\"><\/i><i aria-hidden=\"true\" role=\"presentation\" class=\"elementor-menu-toggle__icon--close eicon-close\"><\/i>\t\t<\/div>\n\t\t\t\t\t<nav class=\"elementor-nav-menu--dropdown elementor-nav-menu__container\" aria-hidden=\"true\">\n\t\t\t\t<ul id=\"menu-2-88ea987\" class=\"elementor-nav-menu\"><li class=\"menu-item menu-item-type-custom menu-item-object-custom menu-item-5277\"><a href=\"https:\/\/buddypacer.com\" class=\"elementor-item\" tabindex=\"-1\">Home<\/a><\/li>\n<li class=\"menu-item menu-item-type-custom menu-item-object-custom menu-item-346\"><a href=\"#funciona\" class=\"elementor-item elementor-item-anchor\" tabindex=\"-1\">C\u00f3mo funciona<\/a><\/li>\n<li class=\"menu-item menu-item-type-custom menu-item-object-custom menu-item-351\"><a href=\"https:\/\/buddypacer.com\/about-us\/\" class=\"elementor-item\" tabindex=\"-1\">Acerca de<\/a><\/li>\n<li class=\"menu-item menu-item-type-custom menu-item-object-custom menu-item-5204\"><a href=\"https:\/\/buddypacer.com\/carreras-oficiales\" class=\"elementor-item\" tabindex=\"-1\">Buddys en carreras oficiales<\/a><\/li>\n<li class=\"menu-item menu-item-type-custom menu-item-object-custom menu-item-5202\"><a href=\"https:\/\/buddypacer.com\/calculadora\" class=\"elementor-item\" tabindex=\"-1\">Calculadora tiempos y ritmos<\/a><\/li>\n<li class=\"menu-item menu-item-type-custom menu-item-object-custom menu-item-1857\"><a href=\"#contacto\" class=\"elementor-item elementor-item-anchor\" tabindex=\"-1\">Contacto<\/a><\/li>\n<li class=\"menu-item menu-item-type-custom menu-item-object-custom menu-item-3089\"><a href=\"https:\/\/buddypacer.com\/faqs\" class=\"elementor-item\" tabindex=\"-1\">FAQs<\/a><\/li>\n<li class=\"menu-item menu-item-type-post_type menu-item-object-page current_page_parent menu-item-2577\"><a href=\"https:\/\/buddypacer.com\/en\/blog-running-buddy-pacer\/\" class=\"elementor-item\" tabindex=\"-1\">Blog<\/a><\/li>\n<li class=\"trp-language-switcher-container trp-menu-ls-item trp-menu-ls-desktop current-language-menu-item menu-item menu-item-type-post_type menu-item-object-language_switcher menu-item-has-children menu-item-4575\"><a href=\"https:\/\/buddypacer.com\/en\/wp-json\/wp\/v2\/pages\/4994#TRPLINKPROCESSED\" class=\"elementor-item elementor-item-anchor\" tabindex=\"-1\"><span class=\"trp-menu-ls-label\" data-no-translation title=\"\"><img loading=\"lazy\" src=\"https:\/\/buddypacer.com\/wp-content\/plugins\/translatepress-multilingual\/assets\/flags\/4x3\/en_GB.svg\" class=\"trp-flag-image\" alt=\"\" role=\"presentation\" loading=\"lazy\" decoding=\"async\" width=\"18\" height=\"14\" \/><\/span><\/a>\n<ul class=\"sub-menu elementor-nav-menu--dropdown\">\n\t<li class=\"trp-language-switcher-container trp-menu-ls-item trp-menu-ls-desktop current-language-menu-item menu-item menu-item-type-post_type menu-item-object-language_switcher menu-item-4553\"><a href=\"https:\/\/buddypacer.com\/en\/wp-json\/wp\/v2\/pages\/4994#TRPLINKPROCESSED\" class=\"elementor-sub-item elementor-item-anchor\" tabindex=\"-1\"><span class=\"trp-menu-ls-label\" data-no-translation title=\"\"><img loading=\"lazy\" src=\"https:\/\/buddypacer.com\/wp-content\/plugins\/translatepress-multilingual\/assets\/flags\/4x3\/es_ES.svg\" class=\"trp-flag-image\" alt=\"Change language to Spanish\" loading=\"lazy\" decoding=\"async\" width=\"18\" height=\"14\" \/><\/span><\/a><\/li>\n\t<li class=\"trp-language-switcher-container trp-menu-ls-item trp-menu-ls-desktop menu-item menu-item-type-post_type menu-item-object-language_switcher current-language-menu-item menu-item-4551\"><a href=\"https:\/\/buddypacer.com\/en\/wp-json\/wp\/v2\/pages\/4994#TRPLINKPROCESSED\" class=\"elementor-sub-item elementor-item-anchor\" tabindex=\"-1\"><span class=\"trp-menu-ls-label\" data-no-translation title=\"\"><img loading=\"lazy\" src=\"https:\/\/buddypacer.com\/wp-content\/plugins\/translatepress-multilingual\/assets\/flags\/4x3\/fr_FR.svg\" class=\"trp-flag-image\" alt=\"Change language to French\" loading=\"lazy\" decoding=\"async\" width=\"18\" height=\"14\" \/><\/span><\/a><\/li>\n\t<li class=\"trp-language-switcher-container trp-menu-ls-item trp-menu-ls-desktop menu-item menu-item-type-post_type menu-item-object-language_switcher current-language-menu-item menu-item-4549\"><a href=\"https:\/\/buddypacer.com\/en\/wp-json\/wp\/v2\/pages\/4994#TRPLINKPROCESSED\" class=\"elementor-sub-item elementor-item-anchor\" tabindex=\"-1\"><span class=\"trp-menu-ls-label\" data-no-translation title=\"\"><img loading=\"lazy\" src=\"https:\/\/buddypacer.com\/wp-content\/plugins\/translatepress-multilingual\/assets\/flags\/4x3\/de_DE.svg\" class=\"trp-flag-image\" alt=\"Change language to German\" loading=\"lazy\" decoding=\"async\" width=\"18\" height=\"14\" \/><\/span><\/a><\/li>\n\t<li class=\"trp-language-switcher-container trp-menu-ls-item trp-menu-ls-desktop menu-item menu-item-type-post_type menu-item-object-language_switcher current-language-menu-item menu-item-4550\"><a href=\"https:\/\/buddypacer.com\/en\/wp-json\/wp\/v2\/pages\/4994#TRPLINKPROCESSED\" class=\"elementor-sub-item elementor-item-anchor\" tabindex=\"-1\"><span class=\"trp-menu-ls-label\" data-no-translation title=\"\"><img loading=\"lazy\" src=\"https:\/\/buddypacer.com\/wp-content\/plugins\/translatepress-multilingual\/assets\/flags\/4x3\/it_IT.svg\" class=\"trp-flag-image\" alt=\"Change language to Italian\" loading=\"lazy\" decoding=\"async\" width=\"18\" height=\"14\" \/><\/span><\/a><\/li>\n\t<li class=\"trp-language-switcher-container trp-menu-ls-item trp-menu-ls-desktop menu-item menu-item-type-post_type menu-item-object-language_switcher current-language-menu-item menu-item-4547\"><a href=\"https:\/\/buddypacer.com\/en\/wp-json\/wp\/v2\/pages\/4994#TRPLINKPROCESSED\" class=\"elementor-sub-item elementor-item-anchor\" tabindex=\"-1\"><span class=\"trp-menu-ls-label\" data-no-translation title=\"\"><img loading=\"lazy\" src=\"https:\/\/buddypacer.com\/wp-content\/plugins\/translatepress-multilingual\/assets\/flags\/4x3\/pt_PT.svg\" class=\"trp-flag-image\" alt=\"Change language to Portuguese\" loading=\"lazy\" decoding=\"async\" width=\"18\" height=\"14\" \/><\/span><\/a><\/li>\n\t<li class=\"trp-language-switcher-container trp-menu-ls-item trp-menu-ls-desktop menu-item menu-item-type-post_type menu-item-object-language_switcher current-language-menu-item menu-item-4548\"><a href=\"https:\/\/buddypacer.com\/en\/wp-json\/wp\/v2\/pages\/4994#TRPLINKPROCESSED\" class=\"elementor-sub-item elementor-item-anchor\" tabindex=\"-1\"><span class=\"trp-menu-ls-label\" data-no-translation title=\"\"><img loading=\"lazy\" src=\"https:\/\/buddypacer.com\/wp-content\/plugins\/translatepress-multilingual\/assets\/flags\/4x3\/ar.svg\" class=\"trp-flag-image\" alt=\"Change language to Arabic\" loading=\"lazy\" decoding=\"async\" width=\"18\" height=\"14\" \/><\/span><\/a><\/li>\n\t<li class=\"trp-language-switcher-container trp-menu-ls-item trp-menu-ls-desktop menu-item menu-item-type-post_type menu-item-object-language_switcher current-language-menu-item menu-item-4546\"><a href=\"https:\/\/buddypacer.com\/en\/wp-json\/wp\/v2\/pages\/4994#TRPLINKPROCESSED\" class=\"elementor-sub-item elementor-item-anchor\" tabindex=\"-1\"><span class=\"trp-menu-ls-label\" data-no-translation title=\"\"><img loading=\"lazy\" src=\"https:\/\/buddypacer.com\/wp-content\/uploads\/2025\/11\/Flag_of_Catalonia.svg\" class=\"trp-flag-image trp-custom-flag\" alt=\"catalan\" loading=\"lazy\" decoding=\"async\" width=\"18\" height=\"14\" \/><\/span><\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>\t\t\t<\/nav>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9e06923 elementor-widget-mobile__width-initial elementor-widget__width-initial elementor-widget-tablet__width-initial elementor-widget elementor-widget-theme-site-logo elementor-widget-image\" data-id=\"9e06923\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"theme-site-logo.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/buddypacer.com\/en\">\n\t\t\t<img decoding=\"async\" width=\"300\" height=\"103\" src=\"https:\/\/buddypacer.com\/wp-content\/uploads\/2025\/03\/Group-1.png\" class=\"attachment-full size-full wp-image-4752\" alt=\"\" srcset=\"https:\/\/buddypacer.com\/wp-content\/uploads\/2025\/03\/Group-1.png 300w, https:\/\/buddypacer.com\/wp-content\/uploads\/2025\/03\/Group-1-18x6.png 18w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/>\t\t\t\t<\/a>\n\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-1eb2a7f elementor-align-right elementor-mobile-align-right elementor-widget__width-initial elementor-widget-tablet__width-initial elementor-widget-mobile__width-initial elementor-hidden-desktop elementor-hidden-tablet elementor-hidden-mobile elementor-widget elementor-widget-button\" data-id=\"1eb2a7f\" data-element_type=\"widget\" data-e-type=\"widget\" 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\" href=\"http:\/\/www.buddypacer.com\/carreras-oficiales\" 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-external-link-alt\"><\/i>\t\t\t<\/span>\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Buddys Marat\u00f3n Valencia<\/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<section class=\"elementor-section elementor-top-section elementor-element elementor-element-effe18c elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"effe18c\" 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-883c8ac\" data-id=\"883c8ac\" 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-980da37 elementor-widget elementor-widget-html\" data-id=\"980da37\" 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<!-- ========================================= -->\n<!--   CALCULADORA DE RITMOS BUDDY PACER       -->\n<!-- ========================================= -->\n\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=IBM+Plex+Sans:wght@300;400;600&display=swap\" rel=\"stylesheet\">\n\n<style>\n  \/* Todo dentro de este wrapper *\/\n  .bp-cal-wrapper,\n  .bp-cal-wrapper * {\n    box-sizing: border-box;\n    font-family: \"IBM Plex Sans\", system-ui, -apple-system, sans-serif;\n  }\n\n  .bp-cal-wrapper {\n    max-width: 1400px;\n    margin: 0 auto;\n    padding: 40px 0;\n    color: #ffffff;\n  }\n\n  .bp-cal {\n    background: #081224;\n    padding: 50px 40px 40px;\n    border-radius: 20px;\n    box-shadow: 0 25px 50px rgba(0,0,0,0.45);\n  }\n\n  .bp-cal__title {\n    text-align: center;\n    margin-bottom: 10px;\n    font-size: 32px;\n    font-weight: 700;\n  }\n\n  .bp-cal__subtitle {\n    text-align: center;\n    padding: 20px 00px 40px;\n    margin-bottom: 30px;\n    font-size: 14px;\n    font-weight: 500;\n    opacity: 0.8;\n  }\n\n  \/* -------- LAYOUT 3 COLUMNAS -------- *\/\n.bp-cal__grid {\n    display: flex;\n    align-items: flex-start;\n\n    \/* distribuci\u00f3n m\u00e1s natural que no estira las columnas *\/\n    justify-content: flex-start;\n\n    \/* eliminamos el gap global *\/\n    gap: 0;\n}\n\n\/* Espaciado personalizado entre columnas *\/\n.bp-cal__col:nth-child(1) { margin-right: 80px; }  \/* Distancia -> Tiempo *\/\n.bp-cal__col:nth-child(2) { margin-right: 110px; }  \/* Tiempo -> Ritmo *\/\n}\n\n  .bp-cal__col {\n    flex: 1 1 0;\n    min-width: 0;\n  }\n\n  .bp-cal__section-title {\n    text-align: left;\n    font-size: 20px;\n    margin-bottom: 24px;\n    font-weight: 500;\n  }\n\n  \/* -------- FILA DE INPUTS -------- *\/\n\n  .bp-cal__inputs {\n    display: flex;\n    align-items: flex-start;\n    gap: 12px;\n    flex-wrap: nowrap;\n  }\n\n  .bp-cal__field {\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    gap: 6px;\n  }\n\n  .bp-cal__label {\n    font-size: 13px;\n    opacity: 0.8;\n  }\n\n  .bp-cal__box {\n    width: 90px;\n    height: 90px;\n    background: #ffffff;\n    border: 1px solid #cfd6e0;\n    border-radius: 6px;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    box-shadow: inset 0 0 6px rgba(0,0,0,0.08);\n  }\n\n  \/* \ud83d\udc47 Reglas fuertes para que el input se vea SIEMPRE *\/\n  .bp-cal-wrapper .bp-cal__box input[type=\"number\"] {\n    width: 100%;\n    height: 100%;\n    border: none;\n    background: transparent;\n    text-align: center;\n    font-size: 44px;\n    font-weight: 700;\n    color: #051022;           \/* negro, para que se vea *\/\n    outline: none;\n    padding: 0;\n    margin: 0;\n    caret-color: #111111;\n  }\n\n  .bp-cal-wrapper .bp-cal__box input[type=\"number\"]::placeholder {\n    font-size: 44px;\n    font-weight: 600;\n    color: #d5dde8;           \/* gris clarito tipo Santander *\/\n  }\n\n  \/* Quitar spinners de number (est\u00e9tico) *\/\n  .bp-cal-wrapper .bp-cal__box input[type=number]::-webkit-outer-spin-button,\n  .bp-cal-wrapper .bp-cal__box input[type=number]::-webkit-inner-spin-button {\n    -webkit-appearance: none;\n    margin: 0;\n  }\n  .bp-cal-wrapper .bp-cal__box input[type=number] {\n    -moz-appearance: textfield;\n  }\n\n  .bp-cal__separator {\n    font-size: 32px;\n    font-weight: 600;\n    color: rgba(255,255,255,0.45);\n    margin-top: 30px;\n  }\n\n  .bp-cal__unit {\n    font-size: 14px;\n    opacity: 0.8;\n    margin-top: 30px;\n  }\n\n  \/* -------- BOTONES DISTANCIA -------- *\/\n\n  .bp-cal__presets {\n    margin-top: 12px;\n    display: flex;\n    gap: 10px;\n    flex-wrap: wrap;\n  }\n\n  .bp-cal__presets button {\n    padding: 4px 10px;\n    border-radius: 10px;\n    background: transparent;\n    border: 1px solid #ffffff;\n    color: #ffffff;\n    cursor: pointer;\n    transition: .2s;\n    font-size: 14px;\n    line-height: 1.2;\n  }\n\n  .bp-cal__presets button:hover {\n    border-color: #c6fc20;\n    color: #c6fc20;\n  }\n\n  \/* -------- BOTONES CALCULAR \/ RESET -------- *\/\n\n.bp-cal__buttons {\n  margin-top: 40px;\n  display: flex;\n  justify-content: center;\n  gap: 60px;\n  flex-wrap: wrap;\n}\n\n.bp-cal__btn {\n  font-size: 12px;\n  height: 60px;\n  padding: 10px;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  cursor: pointer;\n  transition: 0.15s ease-in-out;\n}\n\n\/* ----- Bot\u00f3n Calcular (verde Buddy Pacer) ----- *\/\n#bp-cal-btn-calc {\n  background:#c6fc20;\n  color: #051022;\n  border: 2px solid #c6fc20;\n  border-radius:10px;\n  max-width: 180px;\n}\n\n#bp-cal-btn-calc:hover {\n  filter: brightness(1.08);\n}\n\n\/* ----- Bot\u00f3n Borrar Datos (outline blanco) ----- *\/\n#bp-cal-btn-reset {\n  background:#081224;\n  color: #ffffff;\n  border-color: #ffffff;\n  border: 1px solid #cfd6e0;\n  border-radius:10px;\n  max-width: 180px\n}\n\n  .bp-cal__footer {\n    text-align: center;\n    margin-top: 20px;\n    opacity: .7;\n    font-size: 14px;\n  }\n\/* ============================= *\/\n\/*     VERSI\u00d3N M\u00d3VIL COMPACTA    *\/\n\/* ============================= *\/\n\n@media (max-width: 768px) {\n\n  \/* Wrapper y caja azul *\/\n  .bp-cal-wrapper {\n    max-width: 100%;\n    padding: 12px 0 20px;\n  }\n\n  .bp-cal {\n    padding: 20px 14px 18px;\n    border-radius: 14px;\n    box-shadow: 0 14px 26px rgba(0,0,0,0.5);\n  }\n\n  \/* T\u00edtulos *\/\n  .bp-cal__title {\n    font-size: 22px;\n    margin-bottom: 8px;\n  }\n\n  .bp-cal__subtitle {\n    font-size: 14px;\n    margin-bottom: 16px;\n  }\n\n  \/* 3 bloques en columna: Distancia \/ Tiempo \/ Ritmo *\/\n  .bp-cal__grid {\n    display: flex;\n    flex-direction: column;\n    gap: 24px;          \/* espacio m\u00ednimo entre secciones *\/\n  }\n\n  .bp-cal__col {\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    text-align: center;\n  }\n\n  .bp-cal__section-title {\n    font-size: 16px;\n    margin-bottom: 20px;\n    width: 100%;\n    text-align: center;\n  }\n\n  \/* Inputs: compactos, centrados *\/\n  .bp-cal__inputs {\n    display: flex;\n    align-items: flex-start;\n    justify-content: center;\n    gap: 6px;\n    flex-wrap: nowrap;\n  }\n\n  .bp-cal__box {\n    width: 80px;\n    height: 80px;\n    border-radius: 6px;\n    box-shadow: inset 0 0 6px rgba(0,0,0,0.08);\n  }\n\n  .bp-cal__box input[type=\"number\"] {\n    font-size: 30px;\n    font-weight: 600;\n  }\n\n  .bp-cal__box input[type=\"number\"]::placeholder {\n    font-size: 20px;\n  }\n\n  .bp-cal__label {\n    font-size: 11px;\n    margin-top: 4px;\n    width: 100%;\n    text-align: center;\n    opacity: 0.8;\n  }\n\n  .bp-cal__separator {\n    font-size: 22px;\n    margin-top: 18px;\n    margin-left: 4px;\n    margin-right: 4px;\n    color: rgba(255,255,255,0.45);\n  }\n\n  .bp-cal__unit {\n    font-size: 12px;\n    margin-top: 20px;\n    width: 100%;\n    text-align: center;\n    opacity: 0.8;\n  }\n\n  \/* Presets de distancia (5K, 10K, etc.) *\/\n  .bp-cal__presets {\n    margin-top: 8px;\n    display: flex;\n    flex-wrap: wrap;\n    gap: 7px;\n    justify-content: center;\n  }\n\n  .bp-cal__preset {\n    font-size: 11px;\n  }\n\n  \/* Botones: columna, ancho casi completo, compactos *\/\n  .bp-cal__buttons {\n    margin-top: 20px;\n    display: flex;\n    flex-direction: column;\n    gap: 16px;\n    align-items: center;\n  }\n\n  .bp-cal__btn {\n    width: 100%;\n    max-width: 260px;\n    height: 50px;\n    padding: 0 16px;\n    font-size: 14px;\n    border-radius: 10px;\n  }\n\n  \/* Footer *\/\n  .bp-cal__footer {\n    margin-top: 14px;\n    font-size: 14px;\n    text-align: center;\n    opacity: 0.7;\n  }\n  \/* =============== *\/\n\/*  CENTRADO TOTAL *\/\n\/* =============== *\/\n\n@media (max-width: 768px) {\n\n  \/* Los 3 bloques (Distancia, Tiempo, Ritmo) *\/\n  .bp-cal__col {\n    width: 100%;\n    display: flex;\n    flex-direction: column;\n    align-items: center !important;\n    justify-content: center !important;\n    text-align: center !important;\n  }\n  \/* ==== AJUSTE ESPEC\u00cdFICO PARA RITMO EN M\u00d3VIL ==== *\/\n\n  \/* Ocultamos el \/km original dentro del flex para que no desplace nada *\/\n  .bp-cal__col:last-child .bp-cal__unit {\n    display: none;\n  }\n\n  \/* Volvemos a pintar \/km debajo del bloque de Ritmo, centrado *\/\n  .bp-cal__col:last-child::after {\n    content: \"\/km\";\n    display: block;\n    margin-top: 4px;\n    font-size: 12px;\n    text-align: center;\n    opacity: 0.8;\n  }\n}\n\n<\/style>\n\n<div class=\"bp-cal-wrapper\">\n  <div class=\"bp-cal\">\n\n    <h1 class=\"bp-cal__title\">Calculadora de tiempos y ritmos<\/h1>\n    <p class=\"bp-cal__subtitle\">\n      Rellenando dos de los tres campos (<em>distancia<\/em>, <em>tiempo<\/em> o <em>ritmo<\/em>) y pulsando el bot\u00f3n CALCULAR podr\u00e1s conocer tus resultados del par\u00e1metro restante\n    <\/p>\n\n    <div class=\"bp-cal__grid\">\n\n      <!-- DISTANCIA -->\n      <div class=\"bp-cal__col\">\n        <div class=\"bp-cal__section-title\">Distancia<\/div>\n\n        <div class=\"bp-cal__inputs\">\n          <div class=\"bp-cal__field\">\n            <div class=\"bp-cal__box\">\n              <input type=\"number\" id=\"bp-cal-dist-km\" placeholder=\"00\">\n            <\/div>\n            <div class=\"bp-cal__label\">Km<\/div>\n          <\/div>\n\n          <span class=\"bp-cal__separator\">:<\/span>\n\n          <div class=\"bp-cal__field\">\n            <div class=\"bp-cal__box\">\n              <input type=\"number\" id=\"bp-cal-dist-m\" placeholder=\"000\">\n            <\/div>\n            <div class=\"bp-cal__label\">m<\/div>\n          <\/div>\n        <\/div>\n\n        <div class=\"bp-cal__presets\">\n          <button data-dist=\"5\">5K<\/button>\n          <button data-dist=\"10\">10K<\/button>\n          <button data-dist=\"21.097\">1\/2 marat\u00f3n<\/button>\n          <button data-dist=\"42.195\">Marat\u00f3n<\/button>\n        <\/div>\n      <\/div>\n\n      <!-- TIEMPO -->\n      <div class=\"bp-cal__col\">\n        <div class=\"bp-cal__section-title\">Tiempo<\/div>\n\n        <div class=\"bp-cal__inputs\">\n          <div class=\"bp-cal__field\">\n            <div class=\"bp-cal__box\">\n              <input type=\"number\" id=\"bp-cal-time-h\" placeholder=\"00\">\n            <\/div>\n            <div class=\"bp-cal__label\">horas<\/div>\n          <\/div>\n\n          <span class=\"bp-cal__separator\">:<\/span>\n\n          <div class=\"bp-cal__field\">\n            <div class=\"bp-cal__box\">\n              <input type=\"number\" id=\"bp-cal-time-m\" placeholder=\"00\">\n            <\/div>\n            <div class=\"bp-cal__label\">min<\/div>\n          <\/div>\n\n          <span class=\"bp-cal__separator\">:<\/span>\n\n          <div class=\"bp-cal__field\">\n            <div class=\"bp-cal__box\">\n              <input type=\"number\" id=\"bp-cal-time-s\" placeholder=\"00\">\n            <\/div>\n            <div class=\"bp-cal__label\">seg<\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <!-- RITMO -->\n      <div class=\"bp-cal__col\">\n        <div class=\"bp-cal__section-title\">Ritmo<\/div>\n\n        <div class=\"bp-cal__inputs\">\n          <div class=\"bp-cal__field\">\n            <div class=\"bp-cal__box\">\n              <input type=\"number\" id=\"bp-cal-pace-m\" placeholder=\"00\">\n            <\/div>\n            <div class=\"bp-cal__label\">min<\/div>\n          <\/div>\n\n          <span class=\"bp-cal__separator\">:<\/span>\n\n          <div class=\"bp-cal__field\">\n            <div class=\"bp-cal__box\">\n              <input type=\"number\" id=\"bp-cal-pace-s\" placeholder=\"00\">\n            <\/div>\n            <div class=\"bp-cal__label\">seg<\/div>\n          <\/div>\n\n          <span class=\"bp-cal__unit\">\/km<\/span>\n        <\/div>\n      <\/div>\n\n    <\/div>\n\n    <!-- BOTONES -->\n    <div class=\"bp-cal__buttons\">\n      <button id=\"bp-cal-btn-calc\" class=\"bp-cal__btn\">Calcular<\/button>\n      <button id=\"bp-cal-btn-reset\" class=\"bp-cal__btn\">Borrar datos<\/button>\n    <\/div>\n\n    <div class=\"bp-cal__footer\">\n      Perfecto para preparar tus entrenos y carreras con Buddy Pacer.\n    <\/div>\n\n  <\/div>\n<\/div>\n\n<script>\n(function() {\n  const distKm = document.getElementById(\"bp-cal-dist-km\");\n  const distM  = document.getElementById(\"bp-cal-dist-m\");\n  const timeH  = document.getElementById(\"bp-cal-time-h\");\n  const timeM  = document.getElementById(\"bp-cal-time-m\");\n  const timeS  = document.getElementById(\"bp-cal-time-s\");\n  const paceM  = document.getElementById(\"bp-cal-pace-m\");\n  const paceS  = document.getElementById(\"bp-cal-pace-s\");\n\n  const btnCalc  = document.getElementById(\"bp-cal-btn-calc\");\n  const btnReset = document.getElementById(\"bp-cal-btn-reset\");\n  const presets  = document.querySelectorAll(\".bp-cal__presets button\");\n\n  \/* ====== FORMATO METROS (000, 097, 500, etc.) ====== *\/\n  function formatMeters(m) {\n    m = Math.max(0, Math.min(999, Math.round(Number(m) || 0)));\n    return String(m).padStart(3, \"0\");\n  }\n\n  \/* Botones r\u00e1pidos de distancia (5K, 10K, 1\/2, marat\u00f3n) *\/\n  presets.forEach(btn => {\n    btn.addEventListener(\"click\", () => {\n      const d  = parseFloat(btn.dataset.dist || \"0\");\n      const km = Math.floor(d);\n      const m  = Math.round((d - km) * 1000);\n\n      distKm.value = km > 0 ? km : \"\";\n      distM.value  = formatMeters(m);  \/\/ metros en formato 000\n    });\n  });\n\n  \/* ===== LIMITAR MINUTOS Y SEGUNDOS A 59 ===== *\/\n\n  function clampTo59(input) {\n    let v = Number(input.value);\n    if (v > 59) input.value = 59;\n    else if (v < 0 || isNaN(v)) input.value = \"\";\n  }\n\n  \/* TIEMPO *\/\n  timeM.addEventListener(\"input\", () => clampTo59(timeM)); \/\/ minutos\n  timeS.addEventListener(\"input\", () => clampTo59(timeS)); \/\/ segundos\n\n  \/* RITMO *\/\n  paceM.addEventListener(\"input\", () => clampTo59(paceM)); \/\/ minutos\n  paceS.addEventListener(\"input\", () => clampTo59(paceS)); \/\/ segundos\n\n  \/* ===== FUNCIONES AUXILIARES ===== *\/\n\n  function getDistanceKm() {\n    return (Number(distKm.value) || 0) + (Number(distM.value) || 0) \/ 1000;\n  }\n\n  function getTimeSec() {\n    return (Number(timeH.value) || 0) * 3600 +\n           (Number(timeM.value) || 0) * 60 +\n           (Number(timeS.value) || 0);\n  }\n\n  function getPaceSecPerKm() {\n    return (Number(paceM.value) || 0) * 60 +\n           (Number(paceS.value) || 0);\n  }\n\n  function setTimeSec(total) {\n    if (!isFinite(total) || total <= 0) return;\n    timeH.value = Math.floor(total \/ 3600);\n    total = total % 3600;\n    timeM.value = Math.floor(total \/ 60);\n    timeS.value = Math.round(total % 60);\n  }\n\n  function setPace(p) {\n    if (!isFinite(p) || p <= 0) return;\n    paceM.value = Math.floor(p \/ 60);\n    paceS.value = Math.round(p % 60);\n  }\n\n  function setDist(d) {\n    if (!isFinite(d) || d <= 0) return;\n    const km = Math.floor(d);\n    const m  = Math.round((d - km) * 1000);\n\n    distKm.value = km;\n    distM.value  = formatMeters(m);  \/\/ \ud83d\udc48 tambi\u00e9n aqu\u00ed metros en 000\n  }\n\n  \/* ===== CLICK EN CALCULAR ===== *\/\n\n  btnCalc.addEventListener(\"click\", () => {\n    const d = getDistanceKm();\n    const t = getTimeSec();\n    const p = getPaceSecPerKm();\n\n    const filled = [d > 0, t > 0, p > 0].filter(Boolean).length;\n    if (filled < 2) {\n      alert(\"Rellena al menos 2 campos (distancia, tiempo o ritmo).\");\n      return;\n    }\n\n    if (!d && t && p) {\n      setDist(t \/ p);\n    } else if (!t && d && p) {\n      setTimeSec(d * p);\n    } else if (!p && d && t) {\n      setPace(t \/ d);\n    } else if (d && t) {\n      setPace(t \/ d);\n    }\n\n    \/* ===== INTEGRACI\u00d3N CON TABLA 5K (marathonranking) =====\n       Si la distancia es 5K y hay tiempo, mostramos la recomendaci\u00f3n\n    *\/\n    const distAfter  = getDistanceKm();\n    const timeAfter  = getTimeSec();\n    const adviceBox  = document.getElementById(\"bp-5k-rep-advice\");\n\n    if (typeof show5kRepAdvice === \"function\" &&\n        Math.abs(distAfter - 5) < 0.05 &&  \/\/ tolerancia por si es 4.999 \/ 5.001\n        timeAfter > 0) {\n\n      show5kRepAdvice(timeAfter);  \/\/ tiempo de 5K en segundos\n\n    } else if (adviceBox) {\n      \/\/ Si no es 5K, ocultamos el bloque (por si estaba mostrado de antes)\n      adviceBox.style.display = \"none\";\n      adviceBox.innerHTML = \"\";\n    }\n\n  });\n\n  \/* ===== CLICK EN BORRAR ===== *\/\n\n  btnReset.addEventListener(\"click\", () => {\n    [distKm, distM, timeH, timeM, timeS, paceM, paceS].forEach(i => i.value = \"\");\n    const adviceBox = document.getElementById(\"bp-5k-rep-advice\");\n    if (adviceBox) {\n      adviceBox.style.display = \"none\";\n      adviceBox.innerHTML = \"\";\n    }\n  });\n})();\n<\/script>\n\n\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-8484a2f elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"8484a2f\" 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-407e708\" data-id=\"407e708\" 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-6db5ab5 elementor-widget elementor-widget-html\" data-id=\"6db5ab5\" 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<!-- ======================================= -->\n<!-- SECCI\u00d3N DE RECOMENDACI\u00d3N DE ENTRENAMIENTOS -->\n<!-- ======================================= -->\n\n<div id=\"bp-rep-advice\" class=\"bp-rep-advice\" style=\"display:none;\"><\/div>\n\n<style>\n\/* ===== ESTILOS DEL BLOQUE DE RECOMENDACI\u00d3N ===== *\/\n.bp-rep-advice {\n    margin-top: 40px;\n    padding: 25px;\n    border-radius: 14px;\n    background: rgba(255,255,255,0.05);\n    border: 1px solid rgba(255,255,255,0.09);\n    color: #ffffff;\n    font-family: \"IBM Plex Sans\", sans-serif;\n    font-size: 15px;\n}\n\n.bp-rep-title {\n    font-size: 20px;\n    font-weight: 700;\n    margin-bottom: 12px;\n}\n\n.bp-rep-list {\n    list-style: none;\n    padding: 0;\n    margin: 15px 0;\n}\n\n.bp-rep-list li {\n    margin-bottom: 6px;\n    font-size: 15px;\n}\n\n.bp-rep-note {\n    font-size: 13px;\n    opacity: 0.8;\n}\n\n.bp-rep-note a {\n    color: #c6fc20;\n    text-decoration: underline;\n}\n<\/style>\n\n<script>\n\/* ===========================================================\n   1) TABLAS DE RITMOS (MarathonRanking.com)\n   =========================================================== *\/\n\n\/* ----- 5K ----- *\/\nconst TABLE_5K = [\n  { raceTime: \"14:27\", reps: { \"400\": {min:\"1:04\", max:\"1:07\"}, \"800\": {min:\"2:14\", max:\"2:19\"}, \"1000\": {min:\"2:51\", max:\"2:57\"} } },\n  { raceTime: \"15:24\", reps: { \"400\": {min:\"1:08\", max:\"1:11\"}, \"800\": {min:\"2:22\", max:\"2:28\"}, \"1000\": {min:\"3:01\", max:\"3:08\"} } },\n  { raceTime: \"16:22\", reps: { \"400\": {min:\"1:12\", max:\"1:15\"}, \"800\": {min:\"2:29\", max:\"2:37\"}, \"1000\": {min:\"3:12\", max:\"3:20\"} } },\n  { raceTime: \"17:20\", reps: { \"400\": {min:\"1:15\", max:\"1:20\"}, \"800\": {min:\"2:37\", max:\"2:46\"}, \"1000\": {min:\"3:23\", max:\"3:30\"} } },\n  { raceTime: \"18:18\", reps: { \"400\": {min:\"1:19\", max:\"1:23\"}, \"800\": {min:\"2:46\", max:\"2:54\"}, \"1000\": {min:\"3:32\", max:\"3:41\"} } },\n  { raceTime: \"19:16\", reps: { \"400\": {min:\"1:23\", max:\"1:27\"}, \"800\": {min:\"2:55\", max:\"3:03\"}, \"1000\": {min:\"3:43\", max:\"3:53\"} } },\n  { raceTime: \"20:13\", reps: { \"400\": {min:\"1:27\", max:\"1:32\"}, \"800\": {min:\"3:04\", max:\"3:10\"}, \"1000\": {min:\"3:50\", max:\"4:03\"} } },\n  { raceTime: \"21:11\", reps: { \"400\": {min:\"1:31\", max:\"1:35\"}, \"800\": {min:\"3:09\", max:\"3:19\"}, \"1000\": {min:\"4:01\", max:\"4:15\"} } },\n  { raceTime: \"22:09\", reps: { \"400\": {min:\"1:34\", max:\"1:39\"}, \"800\": {min:\"3:17\", max:\"3:28\"}, \"1000\": {min:\"4:12\", max:\"4:25\"} } },\n  { raceTime: \"23:07\", reps: { \"400\": {min:\"1:38\", max:\"1:43\"}, \"800\": {min:\"3:25\", max:\"3:34\"}, \"1000\": {min:\"4:23\", max:\"4:37\"} } },\n  { raceTime: \"24:05\", reps: { \"400\": {min:\"1:42\", max:\"1:48\"}, \"800\": {min:\"3:33\", max:\"3:43\"}, \"1000\": {min:\"4:34\", max:\"4:46\"} } },\n  { raceTime: \"25:02\", reps: { \"400\": {min:\"1:46\", max:\"1:52\"}, \"800\": {min:\"3:41\", max:\"3:52\"}, \"1000\": {min:\"4:45\", max:\"4:57\"} } },\n  { raceTime: \"26:00\", reps: { \"400\": {min:\"1:49\", max:\"1:56\"}, \"800\": {min:\"3:48\", max:\"4:01\"}, \"1000\": {min:\"4:51\", max:\"5:09\"} } },\n  { raceTime: \"26:58\", reps: { \"400\": {min:\"1:53\", max:\"2:00\"}, \"800\": {min:\"3:56\", max:\"4:06\"}, \"1000\": {min:\"5:01\", max:\"5:16\"} } },\n  { raceTime: \"27:56\", reps: { \"400\": {min:\"1:57\", max:\"2:04\"}, \"800\": {min:\"4:04\", max:\"4:14\"}, \"1000\": {min:\"5:11\", max:\"5:28\"} } },\n];\n\n\/* ----- 10K (tiempos < 1h en MM:SS) ----- *\/\nconst TABLE_10K = [\n  { raceTime: \"30:00\", reps: { \"400\": {min:\"1:04\", max:\"1:07\"}, \"800\": {min:\"2:14\", max:\"2:19\"}, \"1000\": {min:\"2:51\", max:\"2:57\"} } },\n  { raceTime: \"32:00\", reps: { \"400\": {min:\"1:08\", max:\"1:11\"}, \"800\": {min:\"2:22\", max:\"2:28\"}, \"1000\": {min:\"3:01\", max:\"3:08\"} } },\n  { raceTime: \"34:00\", reps: { \"400\": {min:\"1:12\", max:\"1:15\"}, \"800\": {min:\"2:29\", max:\"2:37\"}, \"1000\": {min:\"3:12\", max:\"3:20\"} } },\n  { raceTime: \"36:00\", reps: { \"400\": {min:\"1:15\", max:\"1:20\"}, \"800\": {min:\"2:37\", max:\"2:46\"}, \"1000\": {min:\"3:23\", max:\"3:30\"} } },\n  { raceTime: \"38:00\", reps: { \"400\": {min:\"1:19\", max:\"1:23\"}, \"800\": {min:\"2:46\", max:\"2:54\"}, \"1000\": {min:\"3:32\", max:\"3:41\"} } },\n  { raceTime: \"40:00\", reps: { \"400\": {min:\"1:23\", max:\"1:27\"}, \"800\": {min:\"2:55\", max:\"3:03\"}, \"1000\": {min:\"3:43\", max:\"3:53\"} } },\n  { raceTime: \"42:00\", reps: { \"400\": {min:\"1:27\", max:\"1:32\"}, \"800\": {min:\"3:04\", max:\"3:10\"}, \"1000\": {min:\"3:50\", max:\"4:03\"} } },\n  { raceTime: \"44:00\", reps: { \"400\": {min:\"1:31\", max:\"1:35\"}, \"800\": {min:\"3:09\", max:\"3:19\"}, \"1000\": {min:\"4:01\", max:\"4:15\"} } },\n  { raceTime: \"46:00\", reps: { \"400\": {min:\"1:34\", max:\"1:39\"}, \"800\": {min:\"3:17\", max:\"3:28\"}, \"1000\": {min:\"4:12\", max:\"4:25\"} } },\n  { raceTime: \"48:00\", reps: { \"400\": {min:\"1:38\", max:\"1:43\"}, \"800\": {min:\"3:25\", max:\"3:34\"}, \"1000\": {min:\"4:23\", max:\"4:37\"} } },\n  { raceTime: \"50:00\", reps: { \"400\": {min:\"1:42\", max:\"1:48\"}, \"800\": {min:\"3:33\", max:\"3:43\"}, \"1000\": {min:\"4:34\", max:\"4:46\"} } },\n  { raceTime: \"52:00\", reps: { \"400\": {min:\"1:46\", max:\"1:52\"}, \"800\": {min:\"3:41\", max:\"3:52\"}, \"1000\": {min:\"4:45\", max:\"4:57\"} } },\n  { raceTime: \"54:00\", reps: { \"400\": {min:\"1:49\", max:\"1:56\"}, \"800\": {min:\"3:48\", max:\"4:01\"}, \"1000\": {min:\"4:51\", max:\"5:09\"} } },\n  { raceTime: \"56:00\", reps: { \"400\": {min:\"1:53\", max:\"2:00\"}, \"800\": {min:\"3:56\", max:\"4:06\"}, \"1000\": {min:\"5:01\", max:\"5:16\"} } },\n  { raceTime: \"58:00\", reps: { \"400\": {min:\"1:57\", max:\"2:04\"}, \"800\": {min:\"4:04\", max:\"4:14\"}, \"1000\": {min:\"5:11\", max:\"5:28\"} } },\n];\n\n\/* ----- 21K ----- *\/\nconst TABLE_21K = [\n  { raceTime: \"1:06:53\", reps: { \"400\": {min:\"1:04\", max:\"1:07\"}, \"800\": {min:\"2:14\", max:\"2:19\"}, \"1000\": {min:\"2:51\", max:\"2:57\"} } },\n  { raceTime: \"1:11:20\", reps: { \"400\": {min:\"1:08\", max:\"1:11\"}, \"800\": {min:\"2:22\", max:\"2:28\"}, \"1000\": {min:\"3:01\", max:\"3:08\"} } },\n  { raceTime: \"1:15:48\", reps: { \"400\": {min:\"1:12\", max:\"1:15\"}, \"800\": {min:\"2:29\", max:\"2:37\"}, \"1000\": {min:\"3:12\", max:\"3:20\"} } },\n  { raceTime: \"1:20:15\", reps: { \"400\": {min:\"1:15\", max:\"1:20\"}, \"800\": {min:\"2:37\", max:\"2:46\"}, \"1000\": {min:\"3:23\", max:\"3:30\"} } },\n  { raceTime: \"1:24:43\", reps: { \"400\": {min:\"1:19\", max:\"1:23\"}, \"800\": {min:\"2:46\", max:\"2:54\"}, \"1000\": {min:\"3:32\", max:\"3:41\"} } },\n  { raceTime: \"1:29:10\", reps: { \"400\": {min:\"1:23\", max:\"1:27\"}, \"800\": {min:\"2:55\", max:\"3:03\"}, \"1000\": {min:\"3:43\", max:\"3:53\"} } },\n  { raceTime: \"1:33:38\", reps: { \"400\": {min:\"1:27\", max:\"1:32\"}, \"800\": {min:\"3:04\", max:\"3:10\"}, \"1000\": {min:\"3:50\", max:\"4:03\"} } },\n  { raceTime: \"1:38:05\", reps: { \"400\": {min:\"1:31\", max:\"1:35\"}, \"800\": {min:\"3:09\", max:\"3:19\"}, \"1000\": {min:\"4:01\", max:\"4:15\"} } },\n  { raceTime: \"1:42:33\", reps: { \"400\": {min:\"1:34\", max:\"1:39\"}, \"800\": {min:\"3:17\", max:\"3:28\"}, \"1000\": {min:\"4:12\", max:\"4:25\"} } },\n  { raceTime: \"1:47:11\", reps: { \"400\": {min:\"1:38\", max:\"1:43\"}, \"800\": {min:\"3:25\", max:\"3:34\"}, \"1000\": {min:\"4:23\", max:\"4:37\"} } },\n  { raceTime: \"1:51:28\", reps: { \"400\": {min:\"1:42\", max:\"1:48\"}, \"800\": {min:\"3:33\", max:\"3:43\"}, \"1000\": {min:\"4:34\", max:\"4:46\"} } },\n  { raceTime: \"1:55:56\", reps: { \"400\": {min:\"1:46\", max:\"1:52\"}, \"800\": {min:\"3:41\", max:\"3:52\"}, \"1000\": {min:\"4:45\", max:\"4:57\"} } },\n  { raceTime: \"2:00:23\", reps: { \"400\": {min:\"1:49\", max:\"1:56\"}, \"800\": {min:\"3:48\", max:\"4:01\"}, \"1000\": {min:\"4:51\", max:\"5:09\"} } },\n  { raceTime: \"2:04:51\", reps: { \"400\": {min:\"1:53\", max:\"2:00\"}, \"800\": {min:\"3:56\", max:\"4:06\"}, \"1000\": {min:\"5:01\", max:\"5:16\"} } },\n  { raceTime: \"2:09:18\", reps: { \"400\": {min:\"1:57\", max:\"2:04\"}, \"800\": {min:\"4:04\", max:\"4:14\"}, \"1000\": {min:\"5:11\", max:\"5:28\"} } },\n];\n\n\/* ----- 42K ----- *\/\nconst TABLE_42K = [\n  { raceTime: \"2:20:45\", reps: { \"400\": {min:\"1:04\", max:\"1:07\"}, \"800\": {min:\"2:14\", max:\"2:19\"}, \"1000\": {min:\"2:51\", max:\"2:57\"} } },\n  { raceTime: \"2:30:08\", reps: { \"400\": {min:\"1:08\", max:\"1:11\"}, \"800\": {min:\"2:22\", max:\"2:28\"}, \"1000\": {min:\"3:01\", max:\"3:08\"} } },\n  { raceTime: \"2:39:31\", reps: { \"400\": {min:\"1:12\", max:\"1:15\"}, \"800\": {min:\"2:29\", max:\"2:37\"}, \"1000\": {min:\"3:12\", max:\"3:20\"} } },\n  { raceTime: \"2:48:54\", reps: { \"400\": {min:\"1:15\", max:\"1:20\"}, \"800\": {min:\"2:37\", max:\"2:46\"}, \"1000\": {min:\"3:23\", max:\"3:30\"} } },\n  { raceTime: \"2:58:17\", reps: { \"400\": {min:\"1:19\", max:\"1:23\"}, \"800\": {min:\"2:46\", max:\"2:54\"}, \"1000\": {min:\"3:32\", max:\"3:41\"} } },\n  { raceTime: \"3:07:40\", reps: { \"400\": {min:\"1:23\", max:\"1:27\"}, \"800\": {min:\"2:55\", max:\"3:03\"}, \"1000\": {min:\"3:43\", max:\"3:53\"} } },\n  { raceTime: \"3:17:03\", reps: { \"400\": {min:\"1:27\", max:\"1:32\"}, \"800\": {min:\"3:04\", max:\"3:10\"}, \"1000\": {min:\"3:50\", max:\"4:03\"} } },\n  { raceTime: \"3:26:26\", reps: { \"400\": {min:\"1:31\", max:\"1:35\"}, \"800\": {min:\"3:09\", max:\"3:19\"}, \"1000\": {min:\"4:01\", max:\"4:15\"} } },\n  { raceTime: \"3:35:49\", reps: { \"400\": {min:\"1:34\", max:\"1:39\"}, \"800\": {min:\"3:17\", max:\"3:28\"}, \"1000\": {min:\"4:12\", max:\"4:25\"} } },\n  { raceTime: \"3:45:12\", reps: { \"400\": {min:\"1:38\", max:\"1:43\"}, \"800\": {min:\"3:25\", max:\"3:34\"}, \"1000\": {min:\"4:23\", max:\"4:37\"} } },\n  { raceTime: \"3:54:35\", reps: { \"400\": {min:\"1:42\", max:\"1:48\"}, \"800\": {min:\"3:33\", max:\"3:43\"}, \"1000\": {min:\"4:34\", max:\"4:46\"} } },\n  { raceTime: \"4:03:58\", reps: { \"400\": {min:\"1:46\", max:\"1:52\"}, \"800\": {min:\"3:41\", max:\"3:52\"}, \"1000\": {min:\"4:45\", max:\"4:57\"} } },\n  { raceTime: \"4:13:21\", reps: { \"400\": {min:\"1:49\", max:\"1:56\"}, \"800\": {min:\"3:48\", max:\"4:01\"}, \"1000\": {min:\"4:51\", max:\"5:09\"} } },\n  { raceTime: \"4:22:44\", reps: { \"400\": {min:\"1:53\", max:\"2:00\"}, \"800\": {min:\"3:56\", max:\"4:06\"}, \"1000\": {min:\"5:01\", max:\"5:16\"} } },\n  { raceTime: \"4:32:07\", reps: { \"400\": {min:\"1:57\", max:\"2:04\"}, \"800\": {min:\"4:04\", max:\"4:14\"}, \"1000\": {min:\"5:11\", max:\"5:28\"} } },\n];\n\n\/* ===========================================================\n   2) FUNCIONES AUXILIARES\n   =========================================================== *\/\n\nfunction parseTimeToSeconds(str) {\n  const p = str.split(\":\").map(Number);\n  if (p.length === 2) {\n    \/\/ MM:SS\n    return p[0] * 60 + p[1];\n  }\n  \/\/ H:MM:SS\n  return p[0] * 3600 + p[1] * 60 + p[2];\n}\n\nfunction findClosestRow(table, targetSec) {\n  let best = null;\n  let bestDiff = Infinity;\n\n  table.forEach(row => {\n    const rowSec = parseTimeToSeconds(row.raceTime);\n    const diff = Math.abs(targetSec - rowSec);\n    if (diff < bestDiff) {\n      bestDiff = diff;\n      best = row;\n    }\n  });\n\n  return best;\n}\n\nfunction getTableForDistance(distanceKm) {\n  if (!distanceKm || distanceKm <= 0) return null;\n  if (distanceKm < 7)  return { label: \"5K\",  table: TABLE_5K  };\n  if (distanceKm < 15) return { label: \"10K\", table: TABLE_10K };\n  if (distanceKm < 30) return { label: \"21K\", table: TABLE_21K };\n  return { label: \"42K\", table: TABLE_42K };\n}\n\n\/* Pinta el bloque *\/\nfunction renderRepAdvice(distanceKm, targetSeconds) {\n  const container = document.getElementById(\"bp-rep-advice\");\n  if (!container) return;\n  const distInfo = getTableForDistance(distanceKm);\n  if (!distInfo) {\n    container.style.display = \"none\";\n    return;\n  }\n  const row = findClosestRow(distInfo.table, targetSeconds);\n  if (!row) {\n    container.style.display = \"none\";\n    return;\n  }\n\n  const r400  = row.reps[\"400\"];\n  const r800  = row.reps[\"800\"];\n  const r1000 = row.reps[\"1000\"];\n\n  container.style.display = \"block\";\n  container.innerHTML = `\n    <h3 class=\"bp-rep-title\">\n      Referencia de series para tu objetivo (${row.raceTime} en ${distInfo.label})\n    <\/h3>\n\n    <p>Para estar en condiciones de hacer este tiempo, deber\u00edas ser capaz de completar\n    <strong>entre 8 y 10 repeticiones<\/strong> a estos ritmos:<\/p>\n\n    <ul class=\"bp-rep-list\">\n      <li><strong>400 m:<\/strong> ${r400.min} \u2013 ${r400.max}<\/li>\n      <li><strong>800 m:<\/strong> ${r800.min} \u2013 ${r800.max}<\/li>\n      <li><strong>1000 m:<\/strong> ${r1000.min} \u2013 ${r1000.max}<\/li>\n    <\/ul>\n\n    <p class=\"bp-rep-note\">\n      Datos basados en las tablas de\n      <strong>MarathonRanking.com<\/strong>\n      <br>\n      Ver tablas completas en:\n      <a href=\"https:\/\/www.buddypacer.com\/tablas-ritmos\" target=\"_blank\">\n        buddypacer.com\/tablas-ritmos\n      <\/a>\n    <\/p>\n  `;\n}\n\n\/* ===========================================================\n   3) ENGANCHE AUTOM\u00c1TICO AL BOT\u00d3N \"CALCULAR\"\n   =========================================================== *\/\n\ndocument.addEventListener(\"DOMContentLoaded\", function() {\n  const btn = document.getElementById(\"bp-cal-btn-calc\");\n  if (!btn) return;\n\n  btn.addEventListener(\"click\", function() {\n    \/\/ Leer distancia de la calculadora\n    const km  = Number(document.getElementById(\"bp-cal-dist-km\")?.value || 0);\n    const mts = Number(document.getElementById(\"bp-cal-dist-m\")?.value || 0);\n    const distanceKm = km + mts \/ 1000;\n\n    \/\/ Leer tiempo de la calculadora (tras el c\u00e1lculo)\n    const h = Number(document.getElementById(\"bp-cal-time-h\")?.value || 0);\n    const m = Number(document.getElementById(\"bp-cal-time-m\")?.value || 0);\n    const s = Number(document.getElementById(\"bp-cal-time-s\")?.value || 0);\n    const totalSec = h * 3600 + m * 60 + s;\n\n    if (distanceKm > 0 && totalSec > 0) {\n      renderRepAdvice(distanceKm, totalSec);\n    } else {\n      const container = document.getElementById(\"bp-rep-advice\");\n      if (container) container.style.display = \"none\";\n    }\n  });\n});\n<\/script>\n\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>Buddys Marat\u00f3n Valencia Calculadora de tiempos y ritmos Rellenando dos de los tres campos (distancia, tiempo o ritmo) y pulsando el bot\u00f3n CALCULAR podr\u00e1s conocer tus resultados del par\u00e1metro restante Distancia Km : m 5K 10K 1\/2 marat\u00f3n Marat\u00f3n Tiempo horas : min : seg Ritmo min : seg \/km Calcular Borrar datos Perfecto para [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"inline_featured_image":false,"footnotes":""},"class_list":["post-4994","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.3 (Yoast SEO v27.0) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Calculadora de tiempos y ritmos. 10K, media marat\u00f3n y marat\u00f3n - Buddy Pacer<\/title>\n<meta name=\"description\" content=\"Calculadora de tiempos y ritmos. Calcula el tiempo o el ritmo que quieres hacer en una carrera de 5K, 10K, 21K o Marat\u00f3n con la calculadora de Buddy Pacer.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/buddypacer.com\/en\/calculadora\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Calculadora de tiempos y ritmos. 10K, media marat\u00f3n y marat\u00f3n\" \/>\n<meta property=\"og:description\" content=\"Calculadora de tiempos y ritmos. Calcula el tiempo o el ritmo que quieres hacer en una carrera de 5K, 10K, 21K o Marat\u00f3n con la calculadora de Buddy Pacer.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/buddypacer.com\/en\/calculadora\/\" \/>\n<meta property=\"og:site_name\" content=\"Buddy Pacer\" \/>\n<meta property=\"article:modified_time\" content=\"2025-11-18T11:25:26+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/buddypacer.com\/it\/calculadora\/\",\"url\":\"https:\/\/buddypacer.com\/it\/calculadora\/\",\"name\":\"Calculadora de tiempos y ritmos. 10K, media marat\u00f3n y marat\u00f3n - Buddy Pacer\",\"isPartOf\":{\"@id\":\"https:\/\/buddypacer.com\/#website\"},\"datePublished\":\"2025-11-14T18:33:32+00:00\",\"dateModified\":\"2025-11-18T11:25:26+00:00\",\"description\":\"Calculadora de tiempos y ritmos. Calcula el tiempo o el ritmo que quieres hacer en una carrera de 5K, 10K, 21K o Marat\u00f3n con la calculadora de Buddy Pacer.\",\"breadcrumb\":{\"@id\":\"https:\/\/buddypacer.com\/it\/calculadora\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/buddypacer.com\/it\/calculadora\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/buddypacer.com\/it\/calculadora\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/buddypacer.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Calculadora de tiempos y ritmos. 10K, media marat\u00f3n y marat\u00f3n\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/buddypacer.com\/#website\",\"url\":\"https:\/\/buddypacer.com\/\",\"name\":\"BuddyPacer\",\"description\":\"Conectamos Runners\",\"publisher\":{\"@id\":\"https:\/\/buddypacer.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/buddypacer.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/buddypacer.com\/#organization\",\"name\":\"BuddyPacer\",\"alternateName\":\"Conectamos Runner\",\"url\":\"https:\/\/buddypacer.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/buddypacer.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/buddypacer.com\/wp-content\/uploads\/2025\/03\/Group-1.png\",\"contentUrl\":\"https:\/\/buddypacer.com\/wp-content\/uploads\/2025\/03\/Group-1.png\",\"width\":300,\"height\":103,\"caption\":\"BuddyPacer\"},\"image\":{\"@id\":\"https:\/\/buddypacer.com\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Calculadora de tiempos y ritmos. 10K, media marat\u00f3n y marat\u00f3n - Buddy Pacer","description":"Calculadora de tiempos y ritmos. Calcula el tiempo o el ritmo que quieres hacer en una carrera de 5K, 10K, 21K o Marat\u00f3n con la calculadora de Buddy Pacer.","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:\/\/buddypacer.com\/en\/calculadora\/","og_locale":"en_GB","og_type":"article","og_title":"Calculadora de tiempos y ritmos. 10K, media marat\u00f3n y marat\u00f3n","og_description":"Calculadora de tiempos y ritmos. Calcula el tiempo o el ritmo que quieres hacer en una carrera de 5K, 10K, 21K o Marat\u00f3n con la calculadora de Buddy Pacer.","og_url":"https:\/\/buddypacer.com\/en\/calculadora\/","og_site_name":"Buddy Pacer","article_modified_time":"2025-11-18T11:25:26+00:00","twitter_card":"summary_large_image","twitter_misc":{"Estimated reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/buddypacer.com\/it\/calculadora\/","url":"https:\/\/buddypacer.com\/it\/calculadora\/","name":"Calculadora de tiempos y ritmos. 10K, media marat\u00f3n y marat\u00f3n - Buddy Pacer","isPartOf":{"@id":"https:\/\/buddypacer.com\/#website"},"datePublished":"2025-11-14T18:33:32+00:00","dateModified":"2025-11-18T11:25:26+00:00","description":"Calculadora de tiempos y ritmos. Calcula el tiempo o el ritmo que quieres hacer en una carrera de 5K, 10K, 21K o Marat\u00f3n con la calculadora de Buddy Pacer.","breadcrumb":{"@id":"https:\/\/buddypacer.com\/it\/calculadora\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/buddypacer.com\/it\/calculadora\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/buddypacer.com\/it\/calculadora\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/buddypacer.com\/"},{"@type":"ListItem","position":2,"name":"Calculadora de tiempos y ritmos. 10K, media marat\u00f3n y marat\u00f3n"}]},{"@type":"WebSite","@id":"https:\/\/buddypacer.com\/#website","url":"https:\/\/buddypacer.com\/","name":"BuddyPacer","description":"We connect runners","publisher":{"@id":"https:\/\/buddypacer.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/buddypacer.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Organization","@id":"https:\/\/buddypacer.com\/#organization","name":"BuddyPacer","alternateName":"Conectamos Runner","url":"https:\/\/buddypacer.com\/","logo":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/buddypacer.com\/#\/schema\/logo\/image\/","url":"https:\/\/buddypacer.com\/wp-content\/uploads\/2025\/03\/Group-1.png","contentUrl":"https:\/\/buddypacer.com\/wp-content\/uploads\/2025\/03\/Group-1.png","width":300,"height":103,"caption":"BuddyPacer"},"image":{"@id":"https:\/\/buddypacer.com\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/buddypacer.com\/en\/wp-json\/wp\/v2\/pages\/4994","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/buddypacer.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/buddypacer.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/buddypacer.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/buddypacer.com\/en\/wp-json\/wp\/v2\/comments?post=4994"}],"version-history":[{"count":166,"href":"https:\/\/buddypacer.com\/en\/wp-json\/wp\/v2\/pages\/4994\/revisions"}],"predecessor-version":[{"id":5208,"href":"https:\/\/buddypacer.com\/en\/wp-json\/wp\/v2\/pages\/4994\/revisions\/5208"}],"wp:attachment":[{"href":"https:\/\/buddypacer.com\/en\/wp-json\/wp\/v2\/media?parent=4994"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}