{"id":197,"date":"2026-08-25T19:53:39","date_gmt":"2026-08-26T00:53:39","guid":{"rendered":"https:\/\/halalultimateclub.com\/?page_id=197"},"modified":"2026-08-25T19:53:42","modified_gmt":"2026-08-26T00:53:42","slug":"ruta-al-nacional-de-clubes","status":"publish","type":"page","link":"https:\/\/halalultimateclub.com\/index.php\/ruta-al-nacional-de-clubes\/","title":{"rendered":"Ruta al\u00a0Nacional de Clubes"},"content":{"rendered":"\n<div class=\"halal-ruta\">\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=Bricolage+Grotesque:opsz,wght@12..96,600;12..96,800&#038;family=Instrument+Sans:wght@400;500;600&#038;family=IBM+Plex+Mono:wght@400;500;600&#038;display=swap\" rel=\"stylesheet\">\n<style>\n\n\/* ===== 1. Integracion con el tema (solo afecta a ESTA pagina) ===== *\/\n\n\/* Oculta el titulo y la fecha que imprime el tema (el bloque ya trae su propio H1) *\/\n.entry-header,\n.page-header,\n.entry-title,\n.page-title,\n.wp-block-post-title,\n.entry-meta,\n.wp-block-post-date,\n.posted-on,\n.entry-date,\n.post-date{display:none!important}\n\n\/* Ancho completo: la medida exacta la calcula el JS al final del bloque\n   (mas fiable que 100vw, porque no depende de como el tema arme sus columnas) *\/\n.halal-ruta{max-width:none;box-sizing:border-box}\nhtml,body{overflow-x:clip}\n\n\/* Al imprimir \/ Guardar PDF: fuera el encabezado y el pie del sitio *\/\n@media print{\n#wpadminbar,.site-header,.site-footer,#masthead,#colophon,\n.site-branding,.main-navigation,.nav-menu,.widget-area,\n#secondary,.sidebar,.comments-area,.site-info{display:none!important}\n}\n\n\/* ===== 2. Estilos del cronograma ===== *\/\n.halal-ruta{\n--brand:#1268D8;\n--brand-2:#0A0B3B;\n--ink:#111428;\n--ink-2:#525A6B;\n--ink-3:#8A93A5;\n--paper:#EDF0F5;\n--card:#FFFFFF;\n--line:#D3DAE6;\n--c-nacional:var(--brand-2);\n--c-distrital:var(--brand);\n--c-desarrollo:#00A4DB;\n--c-fisico:#8A93A5;\n--display:\"Bricolage Grotesque\",Georgia,serif;\n--body:\"Instrument Sans\",system-ui,sans-serif;\n--mono:\"IBM Plex Mono\",ui-monospace,monospace;\n}\n.halal-ruta *{box-sizing:border-box}\n.halal-ruta{-webkit-text-size-adjust:100%}\n.halal-ruta{\nmargin:0;background:var(--paper);color:var(--ink);\nfont-family:var(--body);font-size:15px;line-height:1.5;\npadding:0 0 64px;\n}\n.halal-ruta .wrap{max-width:1120px;margin:0 auto;padding:0 24px}\n.halal-ruta .eyebrow{font-family:var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-3);margin:0}\n.halal-ruta header.top{background:var(--brand-2);color:#fff;padding:38px 0 34px;position:relative;overflow:hidden}\n.halal-ruta header.top .eyebrow{color:rgba(255,255,255,.62)}\n.halal-ruta header.top .rule{position:absolute;inset:auto 0 0 0;height:5px;background:var(--brand)}\n.halal-ruta .head-grid{display:flex;gap:32px;align-items:flex-end;justify-content:space-between;flex-wrap:wrap}\n.halal-ruta h1{\nfont-family:var(--display);font-weight:800;font-size:clamp(30px,5.2vw,54px);\nline-height:.98;letter-spacing:-.02em;margin:12px 0 10px;max-width:15em;\n}\n.halal-ruta h1 em{font-style:normal;color:#fff;background:var(--brand);padding:0 .18em;box-decoration-break:clone}\n.halal-ruta .head-meta{font-size:14px;color:rgba(255,255,255,.78);margin:0;max-width:46ch}\n.halal-ruta .count{\nborder:1px solid rgba(255,255,255,.28);border-radius:2px;padding:14px 20px;min-width:186px;\nbackground:rgba(0,0,0,.16)\n}\n.halal-ruta .count b{display:block;font-family:var(--display);font-weight:800;font-size:46px;line-height:1;letter-spacing:-.03em}\n.halal-ruta .count span{font-family:var(--mono);font-size:11px;letter-spacing:.13em;text-transform:uppercase;color:rgba(255,255,255,.7)}\n.halal-ruta .toolbar{\nposition:sticky;top:0;z-index:20;background:rgba(236,239,238,.94);\nbackdrop-filter:blur(6px);border-bottom:1px solid var(--line);padding:12px 0;margin-bottom:28px\n}\n.halal-ruta .tools{display:flex;gap:10px;align-items:center;flex-wrap:wrap}\n.halal-ruta .chip{\nfont:inherit;font-size:13px;cursor:pointer;border:1px solid var(--line);background:var(--card);\ncolor:var(--ink-2);border-radius:2px;padding:6px 12px;display:inline-flex;align-items:center;gap:7px\n}\n.halal-ruta .chip:hover{border-color:var(--ink-3);color:var(--ink)}\n.halal-ruta .chip[aria-pressed=\"true\"]{background:var(--ink);border-color:var(--ink);color:#fff}\n.halal-ruta .chip .dot{width:8px;height:8px;border-radius:50%;background:currentColor;flex:none}\n.halal-ruta .chip[data-f=\"nacional\"] .dot{background:var(--c-nacional)}\n.halal-ruta .chip[data-f=\"distrital\"] .dot{background:var(--c-distrital)}\n.halal-ruta .chip[data-f=\"desarrollo\"] .dot{background:var(--c-desarrollo)}\n.halal-ruta .chip[data-f=\"fisico\"] .dot{background:var(--c-fisico)}\n.halal-ruta .chip[aria-pressed=\"true\"] .dot{background:#fff}\n.halal-ruta .spacer{flex:1 1 auto}\n.halal-ruta .swatch{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--ink-2)}\n.halal-ruta .swatch input{\ninline-size:26px;block-size:26px;padding:0;border:1px solid var(--line);border-radius:2px;\nbackground:none;cursor:pointer\n}\n.halal-ruta .link{background:none;border:0;font:inherit;font-size:13px;color:var(--ink-2);text-decoration:underline;text-underline-offset:3px;cursor:pointer;padding:6px 2px}\n.halal-ruta .link:hover{color:var(--brand)}\n.halal-ruta .stats{display:grid;grid-template-columns:repeat(5,1fr);gap:1px;background:var(--line);border:1px solid var(--line);margin-bottom:32px}\n.halal-ruta .stat{background:var(--card);padding:16px 18px}\n.halal-ruta .stat b{display:block;font-family:var(--display);font-weight:800;font-size:32px;line-height:1;letter-spacing:-.02em}\n.halal-ruta .stat span{font-family:var(--mono);font-size:10.5px;letter-spacing:.11em;text-transform:uppercase;color:var(--ink-3)}\n.halal-ruta .section-head{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap;margin:0 0 14px}\n.halal-ruta .section-head h2{font-family:var(--display);font-weight:600;font-size:21px;letter-spacing:-.01em;margin:0}\n.halal-ruta .section-head p{margin:0;font-size:13.5px;color:var(--ink-2);max-width:60ch}\n.halal-ruta .curve{background:var(--card);border:1px solid var(--line);padding:22px 22px 14px;margin-bottom:34px}\n.halal-ruta .bars{display:flex;align-items:flex-end;gap:6px;height:132px;border-bottom:1px solid var(--ink);padding-bottom:0}\n.halal-ruta .bcol{flex:1 1 0;display:flex;flex-direction:column;justify-content:flex-end;align-items:stretch;height:100%;position:relative}\n.halal-ruta .bar{width:100%;background:var(--c-desarrollo);position:relative;transition:height .5s cubic-bezier(.2,.7,.2,1)}\n.halal-ruta .bar.nacional{background:var(--brand)}\n.halal-ruta .bar.hueco{background:repeating-linear-gradient(135deg,transparent 0 5px,var(--c-fisico) 5px 6px);border:1px dashed var(--c-fisico);border-bottom:0}\n.halal-ruta .bval{font-family:var(--mono);font-size:11px;color:var(--ink-2);text-align:center;padding-bottom:4px}\n.halal-ruta .blabels{display:flex;gap:6px;padding-top:7px}\n.halal-ruta .blabels div{flex:1 1 0;font-family:var(--mono);font-size:10px;letter-spacing:.04em;color:var(--ink-3);text-align:center;line-height:1.3}\n.halal-ruta .blabels div.hi{color:var(--brand);font-weight:600}\n.halal-ruta .alert{\nborder:1px solid var(--brand);border-left:5px solid var(--brand);background:var(--card);\npadding:16px 20px;margin-bottom:34px\n}\n.halal-ruta .alert h3{font-family:var(--display);font-weight:600;font-size:16px;margin:0 0 5px}\n.halal-ruta .alert p{margin:0;font-size:13.5px;color:var(--ink-2);max-width:78ch}\n.halal-ruta .week{border-top:1px solid var(--line);padding:20px 0 22px;break-inside:avoid}\n.halal-ruta .week.oculta{display:none}\n.halal-ruta .wk-head{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap;margin-bottom:12px}\n.halal-ruta .wk-n{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);min-width:74px}\n.halal-ruta .wk-range{font-family:var(--display);font-weight:600;font-size:18px;letter-spacing:-.01em}\n.halal-ruta .tag{\nfont-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;\npadding:3px 8px;border:1px solid;border-radius:2px\n}\n.halal-ruta .tag.nacional{color:var(--c-nacional);border-color:var(--c-nacional)}\n.halal-ruta .tag.distrital{color:var(--c-distrital);border-color:var(--c-distrital)}\n.halal-ruta .tag.desarrollo{color:var(--c-desarrollo);border-color:var(--c-desarrollo)}\n.halal-ruta .wk-h{font-family:var(--mono);font-size:11px;color:var(--ink-3);margin-left:auto}\n.halal-ruta .grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}\n.halal-ruta .card{\nbackground:var(--card);border:1px solid var(--line);border-top:3px solid var(--c-desarrollo);\npadding:13px 14px;cursor:pointer;text-align:left;font:inherit;color:inherit;\ndisplay:flex;flex-direction:column;gap:7px;transition:border-color .15s,transform .15s\n}\n.halal-ruta .card:hover{border-color:var(--ink-3);transform:translateY(-2px)}\n.halal-ruta .card:focus-visible{outline:2px solid var(--brand);outline-offset:2px}\n.halal-ruta .card.nacional{border-top-color:var(--c-nacional)}\n.halal-ruta .card.distrital{border-top-color:var(--c-distrital)}\n.halal-ruta .card.fisico{border-top-color:var(--c-fisico)}\n.halal-ruta .card.atenuada{opacity:.28}\n.halal-ruta .card.pasada .fecha{color:var(--ink-3)}\n.halal-ruta .card.hoy{border-color:var(--brand);box-shadow:0 0 0 2px color-mix(in srgb,var(--brand) 22%,transparent)}\n.halal-ruta .fecha{font-family:var(--mono);font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2);display:flex;justify-content:space-between;align-items:center;gap:8px}\n.halal-ruta .fecha .hoypill{background:var(--brand);color:#fff;padding:1px 6px;border-radius:2px;font-size:9.5px;letter-spacing:.1em}\n.halal-ruta .titulo{font-family:var(--display);font-weight:600;font-size:15.5px;line-height:1.22;letter-spacing:-.005em}\n.halal-ruta .dur{font-family:var(--mono);font-size:10.5px;color:var(--ink-3)}\n.halal-ruta .detalle{display:none;border-top:1px solid var(--line);padding-top:9px;margin-top:2px}\n.halal-ruta .card.abierta .detalle{display:block}\n.halal-ruta .detalle ul{margin:0;padding-left:16px}\n.halal-ruta .detalle li{font-size:12.5px;color:var(--ink-2);margin-bottom:3px;line-height:1.4}\n.halal-ruta .detalle .aviso{font-size:12px;color:var(--brand);margin:8px 0 0;font-weight:500}\n.halal-ruta .vacio{padding:26px 0;color:var(--ink-3);font-size:14px;border-top:1px solid var(--line)}\n.halal-ruta .brecha{\nborder:1px dashed var(--ink-3);background:none;padding:16px 20px;margin:22px 0 0;\ndisplay:flex;gap:16px;align-items:baseline;flex-wrap:wrap\n}\n.halal-ruta .brecha b{font-family:var(--display);font-weight:600;font-size:16px}\n.halal-ruta .brecha span{font-size:13.5px;color:var(--ink-2)}\n.halal-ruta .meta-nacional{margin-top:34px;background:var(--brand-2);color:#fff;padding:30px 26px 26px}\n.halal-ruta .meta-nacional .eyebrow{color:rgba(255,255,255,.6)}\n.halal-ruta .meta-nacional h2{font-family:var(--display);font-weight:800;font-size:clamp(24px,3.4vw,34px);letter-spacing:-.02em;margin:8px 0 18px}\n.halal-ruta .dias{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}\n.halal-ruta .dia{border:1px solid rgba(255,255,255,.24);padding:14px;background:rgba(0,0,0,.14)}\n.halal-ruta .dia b{display:block;font-family:var(--display);font-weight:800;font-size:34px;line-height:1;letter-spacing:-.03em}\n.halal-ruta .dia span{font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:rgba(255,255,255,.72)}\n.halal-ruta .dia p{margin:9px 0 0;font-size:12.5px;color:rgba(255,255,255,.82)}\n.halal-ruta .notas{margin-top:34px;display:grid;grid-template-columns:repeat(3,1fr);gap:20px;border-top:1px solid var(--line);padding-top:22px}\n.halal-ruta .nota h4{font-family:var(--mono);font-size:10.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--ink-3);margin:0 0 6px}\n.halal-ruta .nota p{margin:0;font-size:13px;color:var(--ink-2)}\n.halal-ruta .pie{margin-top:26px;font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;color:var(--ink-3)}\n@media (max-width:900px){.halal-ruta .stats{grid-template-columns:repeat(2,1fr)}\n.halal-ruta .grid{grid-template-columns:repeat(2,1fr)}\n.halal-ruta .dias{grid-template-columns:repeat(2,1fr)}\n.halal-ruta .notas{grid-template-columns:1fr}\n.halal-ruta .bval{display:none}\n}\n@media (max-width:560px){.halal-ruta .grid{grid-template-columns:1fr}\n.halal-ruta .wrap{padding:0 16px}\n.halal-ruta .blabels div{font-size:8.5px}\n}\n@media (prefers-reduced-motion:reduce){.halal-ruta *{transition:none!important}\n}\n@media print{.halal-ruta{background:#fff;padding:0}\n.halal-ruta .toolbar,.halal-ruta .no-print{display:none!important}\n.halal-ruta header.top{padding:22px 0}\n.halal-ruta .week,.halal-ruta .curve,.halal-ruta .meta-nacional,.halal-ruta .alert{break-inside:avoid}\n.halal-ruta .detalle{display:block!important}\n.halal-ruta .card{opacity:1!important;transform:none!important}\n.halal-ruta .card.atenuada{display:none}\n@page{size:A4 portrait;margin:12mm}\n}\n\n\n\/* ===== 3. Blindaje de color contra el tema =====\n   El tema define reglas propias para h1\/h2\/p\/li\/span que ganaban por\n   herencia y dejaban textos en negro sobre el encabezado azul marino.\n   Primero se neutraliza esa herencia y luego se reimponen, uno por uno,\n   los colores propios del cronograma. *\/\n.halal-ruta :where(h1,h2,h3,h4,h5,h6,p,ul,ol,li,b,strong,em,i,span,div,section,header,button,small,a){color:inherit!important}\n.halal-ruta{color:var(--ink)!important}\n.halal-ruta header.top,\n.halal-ruta header.top h1,\n.halal-ruta .count b{color:#fff!important}\n.halal-ruta{color:var(--ink)!important}\n.halal-ruta .eyebrow{color:var(--ink-3)!important}\n.halal-ruta header.top{color:#fff!important}\n.halal-ruta header.top .eyebrow{color:rgba(255,255,255,.62)!important}\n.halal-ruta h1 em{color:#fff!important}\n.halal-ruta .head-meta{color:rgba(255,255,255,.78)!important}\n.halal-ruta .count span{color:rgba(255,255,255,.7)!important}\n.halal-ruta .chip{color:var(--ink-2)!important}\n.halal-ruta .chip:hover{color:var(--ink)!important}\n.halal-ruta .chip[aria-pressed=\"true\"]{color:#fff!important}\n.halal-ruta .swatch{color:var(--ink-2)!important}\n.halal-ruta .link{color:var(--ink-2)!important}\n.halal-ruta .link:hover{color:var(--brand)!important}\n.halal-ruta .stat span{color:var(--ink-3)!important}\n.halal-ruta .section-head p{color:var(--ink-2)!important}\n.halal-ruta .bval{color:var(--ink-2)!important}\n.halal-ruta .blabels div{color:var(--ink-3)!important}\n.halal-ruta .blabels div.hi{color:var(--brand)!important}\n.halal-ruta .alert p{color:var(--ink-2)!important}\n.halal-ruta .wk-n{color:var(--ink-3)!important}\n.halal-ruta .tag.nacional{color:var(--c-nacional)!important}\n.halal-ruta .tag.distrital{color:var(--c-distrital)!important}\n.halal-ruta .tag.desarrollo{color:var(--c-desarrollo)!important}\n.halal-ruta .wk-h{color:var(--ink-3)!important}\n.halal-ruta .card{color:inherit!important}\n.halal-ruta .card.pasada .fecha{color:var(--ink-3)!important}\n.halal-ruta .fecha{color:var(--ink-2)!important}\n.halal-ruta .fecha .hoypill{color:#fff!important}\n.halal-ruta .dur{color:var(--ink-3)!important}\n.halal-ruta .detalle li{color:var(--ink-2)!important}\n.halal-ruta .detalle .aviso{color:var(--brand)!important}\n.halal-ruta .vacio{color:var(--ink-3)!important}\n.halal-ruta .brecha span{color:var(--ink-2)!important}\n.halal-ruta .meta-nacional{color:#fff!important}\n.halal-ruta .meta-nacional .eyebrow{color:rgba(255,255,255,.6)!important}\n.halal-ruta .dia span{color:rgba(255,255,255,.72)!important}\n.halal-ruta .dia p{color:rgba(255,255,255,.82)!important}\n.halal-ruta .nota h4{color:var(--ink-3)!important}\n.halal-ruta .nota p{color:var(--ink-2)!important}\n.halal-ruta .pie{color:var(--ink-3)!important}\n<\/style>\n\n<header class=\"top\">\n  <div class=\"wrap\">\n    <div class=\"head-grid\">\n      <div>\n        <p class=\"eyebrow\">Club Deportivo Halal \u00b7 Equipo Open<\/p>\n        <h1>Ruta al <em>Nacional de Clubes<\/em><\/h1>\n        <p class=\"head-meta\">Cronograma de entrenamientos del 2 de agosto al 29 de septiembre de 2026, con el torneo del 9 al 12 de octubre. Entrenador: Jair Castiblanco.<\/p>\n      <\/div>\n      <div class=\"count\">\n        <b id=\"hl-cuenta\">\u2013<\/b>\n        <span id=\"hl-cuentaLbl\">d\u00edas al Nacional<\/span>\n      <\/div>\n    <\/div>\n  <\/div>\n  <div class=\"rule\"><\/div>\n<\/header>\n\n<div class=\"toolbar no-print\">\n  <div class=\"wrap tools\">\n    <button class=\"chip\" data-f=\"todas\" aria-pressed=\"true\">Todas las sesiones<\/button>\n    <button class=\"chip\" data-f=\"nacional\" aria-pressed=\"false\"><i class=\"dot\"><\/i>Prep. nacional<\/button>\n    <button class=\"chip\" data-f=\"distrital\" aria-pressed=\"false\"><i class=\"dot\"><\/i>Distrital<\/button>\n    <button class=\"chip\" data-f=\"desarrollo\" aria-pressed=\"false\"><i class=\"dot\"><\/i>Desarrollo<\/button>\n    <button class=\"chip\" data-f=\"fisico\" aria-pressed=\"false\"><i class=\"dot\"><\/i>F\u00edsico arena<\/button>\n    <button class=\"chip\" id=\"hl-soloPend\" aria-pressed=\"false\">Solo pendientes<\/button>\n    <span class=\"spacer\"><\/span>\n    <span class=\"swatch\"><input type=\"color\" id=\"hl-c1\" value=\"#1268D8\" aria-label=\"Color principal del club\"> principal<\/span>\n    <span class=\"swatch\"><input type=\"color\" id=\"hl-c2\" value=\"#0A0B3B\" aria-label=\"Color secundario del club\"> secundario<\/span>\n    <button class=\"link\" id=\"hl-verTodo\">Abrir todas<\/button>\n    <button class=\"link\" id=\"hl-imprimir\">Guardar PDF<\/button>\n  <\/div>\n<\/div>\n\n<main class=\"wrap\">\n  <div class=\"stats\" id=\"hl-stats\"><\/div>\n\n  <div class=\"section-head\">\n    <h2>Volumen semanal programado<\/h2>\n    <p>Horas de entrenamiento por semana seg\u00fan el plan. La altura es carga real, no intenci\u00f3n: revela d\u00f3nde el ciclo sube, d\u00f3nde baja y d\u00f3nde se queda en blanco.<\/p>\n  <\/div>\n  <div class=\"curve\">\n    <div class=\"bars\" id=\"hl-bars\"><\/div>\n    <div class=\"blabels\" id=\"hl-blabels\"><\/div>\n  <\/div>\n\n  <div class=\"alert\" id=\"hl-alerta\"><\/div>\n\n  <div class=\"section-head\">\n    <h2>Semana por semana<\/h2>\n    <p>Toca cualquier sesi\u00f3n para ver las actividades completas.<\/p>\n  <\/div>\n  <div id=\"hl-timeline\"><\/div>\n  <p class=\"vacio\" id=\"hl-vacio\" style=\"display:none\">Ninguna sesi\u00f3n coincide con los filtros activos.<\/p>\n\n  <div class=\"brecha\" id=\"hl-brecha\"><\/div>\n\n  <section class=\"meta-nacional\">\n    <p class=\"eyebrow\">Meta del ciclo<\/p>\n    <h2>Torneo Nacional de Clubes<\/h2>\n    <div class=\"dias\" id=\"hl-dias\"><\/div>\n  <\/section>\n\n  <div class=\"notas\">\n    <div class=\"nota\">\n      <h4>Martes<\/h4>\n      <p>1 hora de f\u00edsico en arena PRD: cambios de direcci\u00f3n y carga aer\u00f3bica. 9 sesiones en el ciclo.<\/p>\n    <\/div>\n    <div class=\"nota\">\n      <h4>S\u00e1bados<\/h4>\n      <p>2 horas en cancha. Si no hay cancha disponible, se reemplaza por 1 hora de f\u00edsico en arena.<\/p>\n    <\/div>\n    <div class=\"nota\">\n      <h4>Seguimiento<\/h4>\n      <p>Cada sesi\u00f3n se eval\u00faa con una escala de cumplimiento de 0 % a 100 % en el plan del entrenador.<\/p>\n    <\/div>\n  <\/div>\n  <p class=\"pie\">Fuente: Plan_para_Halal_Open.xlsx \u00b7 hoja \u00abAgo &#8211; Sep\u00bb \u00b7 34 sesiones registradas<\/p>\n<\/main>\n\n<script>\n(function(){\n  function init(){\n  var ROOT = document.querySelector('.halal-ruta');\n  if(!ROOT) return;\n\n  \/* ---- ancho completo a prueba de temas ----\n     Mide donde queda realmente el bloque dentro del layout del tema y lo\n     corre a la izquierda esa misma distancia, con el ancho util del\n     navegador (clientWidth excluye la barra de scroll). *\/\n  function ajustarAncho(){\n    ROOT.style.marginLeft = '0px';\n    ROOT.style.width = 'auto';\n    var izq = ROOT.getBoundingClientRect().left + (window.pageXOffset || 0);\n    ROOT.style.marginLeft = (-izq) + 'px';\n    ROOT.style.width = document.documentElement.clientWidth + 'px';\n  }\n  ajustarAncho();\n  var tmr;\n  window.addEventListener('resize', function(){\n    clearTimeout(tmr); tmr = setTimeout(ajustarAncho, 120);\n  });\n  window.addEventListener('load', ajustarAncho);\n  const SESIONES = [\n   {\n    \"iso\": \"2026-08-02\",\n    \"dia\": \"Domingo\",\n    \"diaCorto\": \"Dom\",\n    \"d\": 2,\n    \"mes\": \"agosto\",\n    \"mesNum\": 8,\n    \"tipo\": \"Base f\u00edsica y cutting\",\n    \"tipoKey\": \"fisico-tec\",\n    \"fase\": \"Preparaci\u00f3n nacional\",\n    \"faseKey\": \"nacional\",\n    \"duracion\": \"2 h en cancha\",\n    \"alterna\": false,\n    \"actividades\": [\n     \"Movilidad din\u00e1mica y activaci\u00f3n\",\n     \"t\u00e9cnica de carrera\",\n     \"cutting en V, L y profundo\",\n     \"cambios de direcci\u00f3n 1v1\",\n     \"juego reducido 4v4 enfatizando cortes\",\n     \"scrimmage 7v7\",\n     \"vuelta a la calma\"\n    ],\n    \"obs\": \"Preparaci\u00f3n Nacional\"\n   },\n   {\n    \"iso\": \"2026-08-04\",\n    \"dia\": \"Martes\",\n    \"diaCorto\": \"Mar\",\n    \"d\": 4,\n    \"mes\": \"agosto\",\n    \"mesNum\": 8,\n    \"tipo\": \"F\u00edsico en arena PRD\",\n    \"tipoKey\": \"fisico\",\n    \"fase\": \"Trabajo f\u00edsico complementario\",\n    \"faseKey\": \"fisico\",\n    \"duracion\": \"1 h en arena\",\n    \"alterna\": false,\n    \"actividades\": [\n     \"cambios de direccion, aumento de carga aerobica en arena\"\n    ],\n    \"obs\": \"Preparaci\u00f3n Nacional\"\n   },\n   {\n    \"iso\": \"2026-08-06\",\n    \"dia\": \"Jueves\",\n    \"diaCorto\": \"Jue\",\n    \"d\": 6,\n    \"mes\": \"agosto\",\n    \"mesNum\": 8,\n    \"tipo\": \"Defensa individual\",\n    \"tipoKey\": \"defensa\",\n    \"fase\": \"Preparaci\u00f3n nacional\",\n    \"faseKey\": \"nacional\",\n    \"duracion\": \"2 h en cancha\",\n    \"alterna\": false,\n    \"actividades\": [\n     \"Activaci\u00f3n\",\n     \"footwork defensivo\",\n     \"drill de marcaci\u00f3n y force\",\n     \"1v1 y 2v2\",\n     \"defensa de continuaciones\",\n     \"juego condicionado\",\n     \"scrimmage con \u00e9nfasis defensivo\"\n    ],\n    \"obs\": \"Preparaci\u00f3n Nacional\"\n   },\n   {\n    \"iso\": \"2026-08-08\",\n    \"dia\": \"S\u00e1bado\",\n    \"diaCorto\": \"S\u00e1b\",\n    \"d\": 8,\n    \"mes\": \"agosto\",\n    \"mesNum\": 8,\n    \"tipo\": \"Continuaci\u00f3n y hucks\",\n    \"tipoKey\": \"ofensiva\",\n    \"fase\": \"Preparaci\u00f3n nacional\",\n    \"faseKey\": \"nacional\",\n    \"duracion\": \"2 h en cancha o 1 h en arena\",\n    \"alterna\": true,\n    \"actividades\": [\n     \"Calentamiento\",\n     \"timing de continuaciones\",\n     \"lanzamientos largos (hucks) y recepci\u00f3n\",\n     \"drill de continuidad 3-man\",\n     \"transici\u00f3n ofensiva\",\n     \"scrimmage buscando profundidad\"\n    ],\n    \"obs\": \"Preparaci\u00f3n Nacional\"\n   },\n   {\n    \"iso\": \"2026-08-09\",\n    \"dia\": \"Domingo\",\n    \"diaCorto\": \"Dom\",\n    \"d\": 9,\n    \"mes\": \"agosto\",\n    \"mesNum\": 8,\n    \"tipo\": \"Zona ofensiva y defensiva\",\n    \"tipoKey\": \"zona\",\n    \"fase\": \"Preparaci\u00f3n nacional\",\n    \"faseKey\": \"nacional\",\n    \"duracion\": \"2 h en cancha\",\n    \"alterna\": false,\n    \"actividades\": [\n     \"Activaci\u00f3n\",\n     \"organizaci\u00f3n de zona 3-3-1 y ataque contra zona\",\n     \"rotaciones defensivas\",\n     \"ejercicios de swing y paciencia\",\n     \"scrimmage iniciando en defensa de zona\"\n    ],\n    \"obs\": \"Preparaci\u00f3n Nacional\"\n   },\n   {\n    \"iso\": \"2026-08-11\",\n    \"dia\": \"Martes\",\n    \"diaCorto\": \"Mar\",\n    \"d\": 11,\n    \"mes\": \"agosto\",\n    \"mesNum\": 8,\n    \"tipo\": \"F\u00edsico en arena PRD\",\n    \"tipoKey\": \"fisico\",\n    \"fase\": \"Trabajo f\u00edsico complementario\",\n    \"faseKey\": \"fisico\",\n    \"duracion\": \"1 h en arena\",\n    \"alterna\": false,\n    \"actividades\": [\n     \"cambios de direccion, aumento de carga aerobica en arena\"\n    ],\n    \"obs\": \"Preparaci\u00f3n Nacional\"\n   },\n   {\n    \"iso\": \"2026-08-13\",\n    \"dia\": \"Jueves\",\n    \"diaCorto\": \"Jue\",\n    \"d\": 13,\n    \"mes\": \"agosto\",\n    \"mesNum\": 8,\n    \"tipo\": \"Scrimmage t\u00e1ctico\",\n    \"tipoKey\": \"scrimmage\",\n    \"fase\": \"Preparaci\u00f3n nacional\",\n    \"faseKey\": \"nacional\",\n    \"duracion\": \"2 h en cancha\",\n    \"alterna\": false,\n    \"actividades\": [\n     \"Movilidad y activaci\u00f3n\",\n     \"repaso de sistemas ofensivos y defensivos\",\n     \"scrimmage 7v7 con objetivos t\u00e1cticos por periodos\",\n     \"situaciones especiales (red zone, pull, timeout)\",\n     \"retroalimentaci\u00f3n final\"\n    ],\n    \"obs\": \"Preparaci\u00f3n Nacional\"\n   },\n   {\n    \"iso\": \"2026-08-15\",\n    \"dia\": \"S\u00e1bado\",\n    \"diaCorto\": \"S\u00e1b\",\n    \"d\": 15,\n    \"mes\": \"agosto\",\n    \"mesNum\": 8,\n    \"tipo\": \"Base f\u00edsica y cutting\",\n    \"tipoKey\": \"fisico-tec\",\n    \"fase\": \"Preparaci\u00f3n nacional\",\n    \"faseKey\": \"nacional\",\n    \"duracion\": \"2 h en cancha o 1 h en arena\",\n    \"alterna\": true,\n    \"actividades\": [\n     \"Movilidad din\u00e1mica y activaci\u00f3n\",\n     \"t\u00e9cnica de carrera\",\n     \"cutting en V, L y profundo\",\n     \"cambios de direcci\u00f3n 1v1\",\n     \"juego reducido 4v4 enfatizando cortes\",\n     \"scrimmage 7v7\",\n     \"vuelta a la calma\"\n    ],\n    \"obs\": \"Preparaci\u00f3n Nacional\"\n   },\n   {\n    \"iso\": \"2026-08-16\",\n    \"dia\": \"Domingo\",\n    \"diaCorto\": \"Dom\",\n    \"d\": 16,\n    \"mes\": \"agosto\",\n    \"mesNum\": 8,\n    \"tipo\": \"Handlers y resets\",\n    \"tipoKey\": \"handlers\",\n    \"fase\": \"Preparaci\u00f3n distrital\",\n    \"faseKey\": \"distrital\",\n    \"duracion\": \"2 h en cancha\",\n    \"alterna\": false,\n    \"actividades\": [\n     \"Activaci\u00f3n con disco\",\n     \"pivotes y fakes\",\n     \"drill handler-weave\",\n     \"resets break y around\",\n     \"posesi\u00f3n 5v5 a 10 pases\",\n     \"scrimmage priorizando movimiento de handlers\",\n     \"estiramiento\"\n    ],\n    \"obs\": \"Preparaci\u00f3n Nacional\"\n   },\n   {\n    \"iso\": \"2026-08-18\",\n    \"dia\": \"Martes\",\n    \"diaCorto\": \"Mar\",\n    \"d\": 18,\n    \"mes\": \"agosto\",\n    \"mesNum\": 8,\n    \"tipo\": \"F\u00edsico en arena PRD\",\n    \"tipoKey\": \"fisico\",\n    \"fase\": \"Trabajo f\u00edsico complementario\",\n    \"faseKey\": \"fisico\",\n    \"duracion\": \"1 h en arena\",\n    \"alterna\": false,\n    \"actividades\": [\n     \"cambios de direccion, aumento de carga aerobica en arena\"\n    ],\n    \"obs\": \"Preparaci\u00f3n Nacional\"\n   },\n   {\n    \"iso\": \"2026-08-20\",\n    \"dia\": \"Jueves\",\n    \"diaCorto\": \"Jue\",\n    \"d\": 20,\n    \"mes\": \"agosto\",\n    \"mesNum\": 8,\n    \"tipo\": \"Base f\u00edsica y cutting\",\n    \"tipoKey\": \"fisico-tec\",\n    \"fase\": \"Desarrollo espec\u00edfico\",\n    \"faseKey\": \"desarrollo\",\n    \"duracion\": \"2 h en cancha\",\n    \"alterna\": false,\n    \"actividades\": [\n     \"Movilidad din\u00e1mica y activaci\u00f3n\",\n     \"t\u00e9cnica de carrera\",\n     \"cutting en V, L y profundo\",\n     \"cambios de direcci\u00f3n 1v1\",\n     \"juego reducido 4v4 enfatizando cortes\",\n     \"scrimmage 7v7\",\n     \"vuelta a la calma\"\n    ],\n    \"obs\": \"Preparaci\u00f3n Nacional\"\n   },\n   {\n    \"iso\": \"2026-08-22\",\n    \"dia\": \"S\u00e1bado\",\n    \"diaCorto\": \"S\u00e1b\",\n    \"d\": 22,\n    \"mes\": \"agosto\",\n    \"mesNum\": 8,\n    \"tipo\": \"Defensa individual\",\n    \"tipoKey\": \"defensa\",\n    \"fase\": \"Desarrollo espec\u00edfico\",\n    \"faseKey\": \"desarrollo\",\n    \"duracion\": \"2 h en cancha o 1 h en arena\",\n    \"alterna\": true,\n    \"actividades\": [\n     \"Activaci\u00f3n\",\n     \"footwork defensivo\",\n     \"drill de marcaci\u00f3n y force\",\n     \"1v1 y 2v2\",\n     \"defensa de continuaciones\",\n     \"juego condicionado\",\n     \"scrimmage con \u00e9nfasis defensivo\"\n    ],\n    \"obs\": \"Preparaci\u00f3n Nacional\"\n   },\n   {\n    \"iso\": \"2026-08-23\",\n    \"dia\": \"Domingo\",\n    \"diaCorto\": \"Dom\",\n    \"d\": 23,\n    \"mes\": \"agosto\",\n    \"mesNum\": 8,\n    \"tipo\": \"Zona ofensiva y defensiva\",\n    \"tipoKey\": \"zona\",\n    \"fase\": \"Distritales: taper y competencia\",\n    \"faseKey\": \"distrital\",\n    \"duracion\": \"2 h en cancha\",\n    \"alterna\": false,\n    \"actividades\": [\n     \"Activaci\u00f3n\",\n     \"organizaci\u00f3n de zona 3-3-1 y ataque contra zona\",\n     \"rotaciones defensivas\",\n     \"ejercicios de swing y paciencia\",\n     \"scrimmage iniciando en defensa de zona\"\n    ],\n    \"obs\": \"Preparaci\u00f3n Nacional\"\n   },\n   {\n    \"iso\": \"2026-08-25\",\n    \"dia\": \"Martes\",\n    \"diaCorto\": \"Mar\",\n    \"d\": 25,\n    \"mes\": \"agosto\",\n    \"mesNum\": 8,\n    \"tipo\": \"F\u00edsico en arena PRD\",\n    \"tipoKey\": \"fisico\",\n    \"fase\": \"Trabajo f\u00edsico complementario\",\n    \"faseKey\": \"fisico\",\n    \"duracion\": \"1 h en arena\",\n    \"alterna\": false,\n    \"actividades\": [\n     \"cambios de direccion, aumento de carga aerobica en arena\"\n    ],\n    \"obs\": \"Preparaci\u00f3n Nacional\"\n   },\n   {\n    \"iso\": \"2026-08-27\",\n    \"dia\": \"Jueves\",\n    \"diaCorto\": \"Jue\",\n    \"d\": 27,\n    \"mes\": \"agosto\",\n    \"mesNum\": 8,\n    \"tipo\": \"Scrimmage t\u00e1ctico\",\n    \"tipoKey\": \"scrimmage\",\n    \"fase\": \"Distritales: taper y competencia\",\n    \"faseKey\": \"distrital\",\n    \"duracion\": \"2 h en cancha\",\n    \"alterna\": false,\n    \"actividades\": [\n     \"Movilidad y activaci\u00f3n\",\n     \"repaso de sistemas ofensivos y defensivos\",\n     \"scrimmage 7v7 con objetivos t\u00e1cticos por periodos\",\n     \"situaciones especiales (red zone, pull, timeout)\",\n     \"retroalimentaci\u00f3n final\"\n    ],\n    \"obs\": \"Preparaci\u00f3n Nacional\"\n   },\n   {\n    \"iso\": \"2026-08-29\",\n    \"dia\": \"S\u00e1bado\",\n    \"diaCorto\": \"S\u00e1b\",\n    \"d\": 29,\n    \"mes\": \"agosto\",\n    \"mesNum\": 8,\n    \"tipo\": \"Zona ofensiva y defensiva\",\n    \"tipoKey\": \"zona\",\n    \"fase\": \"Distritales: taper y competencia\",\n    \"faseKey\": \"distrital\",\n    \"duracion\": \"2 h en cancha o 1 h en arena\",\n    \"alterna\": true,\n    \"actividades\": [\n     \"Activaci\u00f3n\",\n     \"organizaci\u00f3n de zona 3-3-1 y ataque contra zona\",\n     \"rotaciones defensivas\",\n     \"ejercicios de swing y paciencia\",\n     \"scrimmage iniciando en defensa de zona\"\n    ],\n    \"obs\": \"Preparaci\u00f3n Nacional\"\n   },\n   {\n    \"iso\": \"2026-08-30\",\n    \"dia\": \"Domingo\",\n    \"diaCorto\": \"Dom\",\n    \"d\": 30,\n    \"mes\": \"agosto\",\n    \"mesNum\": 8,\n    \"tipo\": \"Handlers y resets\",\n    \"tipoKey\": \"handlers\",\n    \"fase\": \"Desarrollo espec\u00edfico\",\n    \"faseKey\": \"desarrollo\",\n    \"duracion\": \"2 h en cancha\",\n    \"alterna\": false,\n    \"actividades\": [\n     \"Activaci\u00f3n con disco\",\n     \"pivotes y fakes\",\n     \"drill handler-weave\",\n     \"resets break y around\",\n     \"posesi\u00f3n 5v5 a 10 pases\",\n     \"scrimmage priorizando movimiento de handlers\",\n     \"estiramiento\"\n    ],\n    \"obs\": \"Preparaci\u00f3n Nacional\"\n   },\n   {\n    \"iso\": \"2026-09-01\",\n    \"dia\": \"Martes\",\n    \"diaCorto\": \"Mar\",\n    \"d\": 1,\n    \"mes\": \"septiembre\",\n    \"mesNum\": 9,\n    \"tipo\": \"F\u00edsico en arena PRD\",\n    \"tipoKey\": \"fisico\",\n    \"fase\": \"Trabajo f\u00edsico complementario\",\n    \"faseKey\": \"fisico\",\n    \"duracion\": \"1 h en arena\",\n    \"alterna\": false,\n    \"actividades\": [\n     \"cambios de direccion, aumento de carga aerobica en arena\"\n    ],\n    \"obs\": \"Preparaci\u00f3n Nacional\"\n   },\n   {\n    \"iso\": \"2026-09-03\",\n    \"dia\": \"Jueves\",\n    \"diaCorto\": \"Jue\",\n    \"d\": 3,\n    \"mes\": \"septiembre\",\n    \"mesNum\": 9,\n    \"tipo\": \"Scrimmage t\u00e1ctico\",\n    \"tipoKey\": \"scrimmage\",\n    \"fase\": \"Distritales: taper y competencia\",\n    \"faseKey\": \"distrital\",\n    \"duracion\": \"2 h en cancha\",\n    \"alterna\": false,\n    \"actividades\": [\n     \"Movilidad y activaci\u00f3n\",\n     \"repaso de sistemas ofensivos y defensivos\",\n     \"scrimmage 7v7 con objetivos t\u00e1cticos por periodos\",\n     \"situaciones especiales (red zone, pull, timeout)\",\n     \"retroalimentaci\u00f3n final\"\n    ],\n    \"obs\": \"Preparaci\u00f3n Nacional\"\n   },\n   {\n    \"iso\": \"2026-09-05\",\n    \"dia\": \"S\u00e1bado\",\n    \"diaCorto\": \"S\u00e1b\",\n    \"d\": 5,\n    \"mes\": \"septiembre\",\n    \"mesNum\": 9,\n    \"tipo\": \"Defensa individual\",\n    \"tipoKey\": \"defensa\",\n    \"fase\": \"Transici\u00f3n y mejora\",\n    \"faseKey\": \"desarrollo\",\n    \"duracion\": \"2 h en cancha o 1 h en arena\",\n    \"alterna\": true,\n    \"actividades\": [\n     \"Activaci\u00f3n\",\n     \"footwork defensivo\",\n     \"drill de marcaci\u00f3n y force\",\n     \"1v1 y 2v2\",\n     \"defensa de continuaciones\",\n     \"juego condicionado\",\n     \"scrimmage con \u00e9nfasis defensivo\"\n    ],\n    \"obs\": \"Preparaci\u00f3n Nacional\"\n   },\n   {\n    \"iso\": \"2026-09-06\",\n    \"dia\": \"Domingo\",\n    \"diaCorto\": \"Dom\",\n    \"d\": 6,\n    \"mes\": \"septiembre\",\n    \"mesNum\": 9,\n    \"tipo\": \"Base f\u00edsica y cutting\",\n    \"tipoKey\": \"fisico-tec\",\n    \"fase\": \"Desarrollo espec\u00edfico\",\n    \"faseKey\": \"desarrollo\",\n    \"duracion\": \"2 h en cancha\",\n    \"alterna\": false,\n    \"actividades\": [\n     \"Movilidad din\u00e1mica y activaci\u00f3n\",\n     \"t\u00e9cnica de carrera\",\n     \"cutting en V, L y profundo\",\n     \"cambios de direcci\u00f3n 1v1\",\n     \"juego reducido 4v4 enfatizando cortes\",\n     \"scrimmage 7v7\",\n     \"vuelta a la calma\"\n    ],\n    \"obs\": \"Preparaci\u00f3n Nacional\"\n   },\n   {\n    \"iso\": \"2026-09-08\",\n    \"dia\": \"Martes\",\n    \"diaCorto\": \"Mar\",\n    \"d\": 8,\n    \"mes\": \"septiembre\",\n    \"mesNum\": 9,\n    \"tipo\": \"F\u00edsico en arena PRD\",\n    \"tipoKey\": \"fisico\",\n    \"fase\": \"Trabajo f\u00edsico complementario\",\n    \"faseKey\": \"fisico\",\n    \"duracion\": \"1 h en arena\",\n    \"alterna\": false,\n    \"actividades\": [\n     \"cambios de direccion, aumento de carga aerobica en arena\"\n    ],\n    \"obs\": \"Preparaci\u00f3n Nacional\"\n   },\n   {\n    \"iso\": \"2026-09-10\",\n    \"dia\": \"Jueves\",\n    \"diaCorto\": \"Jue\",\n    \"d\": 10,\n    \"mes\": \"septiembre\",\n    \"mesNum\": 9,\n    \"tipo\": \"Handlers y resets\",\n    \"tipoKey\": \"handlers\",\n    \"fase\": \"Desarrollo espec\u00edfico\",\n    \"faseKey\": \"desarrollo\",\n    \"duracion\": \"2 h en cancha\",\n    \"alterna\": false,\n    \"actividades\": [\n     \"Activaci\u00f3n con disco\",\n     \"pivotes y fakes\",\n     \"drill handler-weave\",\n     \"resets break y around\",\n     \"posesi\u00f3n 5v5 a 10 pases\",\n     \"scrimmage priorizando movimiento de handlers\",\n     \"estiramiento\"\n    ],\n    \"obs\": \"Preparaci\u00f3n Nacional\"\n   },\n   {\n    \"iso\": \"2026-09-12\",\n    \"dia\": \"S\u00e1bado\",\n    \"diaCorto\": \"S\u00e1b\",\n    \"d\": 12,\n    \"mes\": \"septiembre\",\n    \"mesNum\": 9,\n    \"tipo\": \"Handlers y resets\",\n    \"tipoKey\": \"handlers\",\n    \"fase\": \"Desarrollo espec\u00edfico\",\n    \"faseKey\": \"desarrollo\",\n    \"duracion\": \"2 h en cancha o 1 h en arena\",\n    \"alterna\": true,\n    \"actividades\": [\n     \"Activaci\u00f3n con disco\",\n     \"pivotes y fakes\",\n     \"drill handler-weave\",\n     \"resets break y around\",\n     \"posesi\u00f3n 5v5 a 10 pases\",\n     \"scrimmage priorizando movimiento de handlers\",\n     \"estiramiento\"\n    ],\n    \"obs\": \"Preparaci\u00f3n Nacional\"\n   },\n   {\n    \"iso\": \"2026-09-13\",\n    \"dia\": \"Domingo\",\n    \"diaCorto\": \"Dom\",\n    \"d\": 13,\n    \"mes\": \"septiembre\",\n    \"mesNum\": 9,\n    \"tipo\": \"Scrimmage t\u00e1ctico\",\n    \"tipoKey\": \"scrimmage\",\n    \"fase\": \"Desarrollo espec\u00edfico\",\n    \"faseKey\": \"desarrollo\",\n    \"duracion\": \"2 h en cancha\",\n    \"alterna\": false,\n    \"actividades\": [\n     \"Movilidad y activaci\u00f3n\",\n     \"repaso de sistemas ofensivos y defensivos\",\n     \"scrimmage 7v7 con objetivos t\u00e1cticos por periodos\",\n     \"situaciones especiales (red zone, pull, timeout)\",\n     \"retroalimentaci\u00f3n final\"\n    ],\n    \"obs\": \"Preparaci\u00f3n Nacional\"\n   },\n   {\n    \"iso\": \"2026-09-15\",\n    \"dia\": \"Martes\",\n    \"diaCorto\": \"Mar\",\n    \"d\": 15,\n    \"mes\": \"septiembre\",\n    \"mesNum\": 9,\n    \"tipo\": \"F\u00edsico en arena PRD\",\n    \"tipoKey\": \"fisico\",\n    \"fase\": \"Trabajo f\u00edsico complementario\",\n    \"faseKey\": \"fisico\",\n    \"duracion\": \"1 h en arena\",\n    \"alterna\": false,\n    \"actividades\": [\n     \"cambios de direccion, aumento de carga aerobica en arena\"\n    ],\n    \"obs\": \"Preparaci\u00f3n Nacional\"\n   },\n   {\n    \"iso\": \"2026-09-17\",\n    \"dia\": \"Jueves\",\n    \"diaCorto\": \"Jue\",\n    \"d\": 17,\n    \"mes\": \"septiembre\",\n    \"mesNum\": 9,\n    \"tipo\": \"Base f\u00edsica y cutting\",\n    \"tipoKey\": \"fisico-tec\",\n    \"fase\": \"Desarrollo espec\u00edfico\",\n    \"faseKey\": \"desarrollo\",\n    \"duracion\": \"2 h en cancha\",\n    \"alterna\": false,\n    \"actividades\": [\n     \"Movilidad din\u00e1mica y activaci\u00f3n\",\n     \"t\u00e9cnica de carrera\",\n     \"cutting en V, L y profundo\",\n     \"cambios de direcci\u00f3n 1v1\",\n     \"juego reducido 4v4 enfatizando cortes\",\n     \"scrimmage 7v7\",\n     \"vuelta a la calma\"\n    ],\n    \"obs\": \"Preparaci\u00f3n Nacional\"\n   },\n   {\n    \"iso\": \"2026-09-19\",\n    \"dia\": \"S\u00e1bado\",\n    \"diaCorto\": \"S\u00e1b\",\n    \"d\": 19,\n    \"mes\": \"septiembre\",\n    \"mesNum\": 9,\n    \"tipo\": \"Defensa individual\",\n    \"tipoKey\": \"defensa\",\n    \"fase\": \"Transici\u00f3n y mejora\",\n    \"faseKey\": \"desarrollo\",\n    \"duracion\": \"2 h en cancha o 1 h en arena\",\n    \"alterna\": true,\n    \"actividades\": [\n     \"Activaci\u00f3n\",\n     \"footwork defensivo\",\n     \"drill de marcaci\u00f3n y force\",\n     \"1v1 y 2v2\",\n     \"defensa de continuaciones\",\n     \"juego condicionado\",\n     \"scrimmage con \u00e9nfasis defensivo\"\n    ],\n    \"obs\": \"Preparaci\u00f3n Nacional\"\n   },\n   {\n    \"iso\": \"2026-09-20\",\n    \"dia\": \"Domingo\",\n    \"diaCorto\": \"Dom\",\n    \"d\": 20,\n    \"mes\": \"septiembre\",\n    \"mesNum\": 9,\n    \"tipo\": \"Handlers y resets\",\n    \"tipoKey\": \"handlers\",\n    \"fase\": \"Desarrollo espec\u00edfico\",\n    \"faseKey\": \"desarrollo\",\n    \"duracion\": \"2 h en cancha\",\n    \"alterna\": false,\n    \"actividades\": [\n     \"Activaci\u00f3n con disco\",\n     \"pivotes y fakes\",\n     \"drill handler-weave\",\n     \"resets break y around\",\n     \"posesi\u00f3n 5v5 a 10 pases\",\n     \"scrimmage priorizando movimiento de handlers\",\n     \"estiramiento\"\n    ],\n    \"obs\": \"Preparaci\u00f3n Nacional\"\n   },\n   {\n    \"iso\": \"2026-09-22\",\n    \"dia\": \"Martes\",\n    \"diaCorto\": \"Mar\",\n    \"d\": 22,\n    \"mes\": \"septiembre\",\n    \"mesNum\": 9,\n    \"tipo\": \"F\u00edsico en arena PRD\",\n    \"tipoKey\": \"fisico\",\n    \"fase\": \"Trabajo f\u00edsico complementario\",\n    \"faseKey\": \"fisico\",\n    \"duracion\": \"1 h en arena\",\n    \"alterna\": false,\n    \"actividades\": [\n     \"cambios de direccion, aumento de carga aerobica en arena\"\n    ],\n    \"obs\": \"Preparaci\u00f3n Nacional\"\n   },\n   {\n    \"iso\": \"2026-09-24\",\n    \"dia\": \"Jueves\",\n    \"diaCorto\": \"Jue\",\n    \"d\": 24,\n    \"mes\": \"septiembre\",\n    \"mesNum\": 9,\n    \"tipo\": \"Defensa individual\",\n    \"tipoKey\": \"defensa\",\n    \"fase\": \"Desarrollo espec\u00edfico\",\n    \"faseKey\": \"desarrollo\",\n    \"duracion\": \"2 h en cancha\",\n    \"alterna\": false,\n    \"actividades\": [\n     \"Activaci\u00f3n\",\n     \"footwork defensivo\",\n     \"drill de marcaci\u00f3n y force\",\n     \"1v1 y 2v2\",\n     \"defensa de continuaciones\",\n     \"juego condicionado\",\n     \"scrimmage con \u00e9nfasis defensivo\"\n    ],\n    \"obs\": \"Preparaci\u00f3n Nacional\"\n   },\n   {\n    \"iso\": \"2026-09-26\",\n    \"dia\": \"S\u00e1bado\",\n    \"diaCorto\": \"S\u00e1b\",\n    \"d\": 26,\n    \"mes\": \"septiembre\",\n    \"mesNum\": 9,\n    \"tipo\": \"Handlers y resets\",\n    \"tipoKey\": \"handlers\",\n    \"fase\": \"Desarrollo espec\u00edfico\",\n    \"faseKey\": \"desarrollo\",\n    \"duracion\": \"2 h en cancha o 1 h en arena\",\n    \"alterna\": true,\n    \"actividades\": [\n     \"Activaci\u00f3n con disco\",\n     \"pivotes y fakes\",\n     \"drill handler-weave\",\n     \"resets break y around\",\n     \"posesi\u00f3n 5v5 a 10 pases\",\n     \"scrimmage priorizando movimiento de handlers\",\n     \"estiramiento\"\n    ],\n    \"obs\": \"Preparaci\u00f3n Nacional\"\n   },\n   {\n    \"iso\": \"2026-09-27\",\n    \"dia\": \"Domingo\",\n    \"diaCorto\": \"Dom\",\n    \"d\": 27,\n    \"mes\": \"septiembre\",\n    \"mesNum\": 9,\n    \"tipo\": \"Defensa individual\",\n    \"tipoKey\": \"defensa\",\n    \"fase\": \"Desarrollo espec\u00edfico\",\n    \"faseKey\": \"desarrollo\",\n    \"duracion\": \"2 h en cancha\",\n    \"alterna\": false,\n    \"actividades\": [\n     \"Activaci\u00f3n\",\n     \"footwork defensivo\",\n     \"drill de marcaci\u00f3n y force\",\n     \"1v1 y 2v2\",\n     \"defensa de continuaciones\",\n     \"juego condicionado\",\n     \"scrimmage con \u00e9nfasis defensivo\"\n    ],\n    \"obs\": \"Preparaci\u00f3n Nacional\"\n   },\n   {\n    \"iso\": \"2026-09-29\",\n    \"dia\": \"Martes\",\n    \"diaCorto\": \"Mar\",\n    \"d\": 29,\n    \"mes\": \"septiembre\",\n    \"mesNum\": 9,\n    \"tipo\": \"F\u00edsico en arena PRD\",\n    \"tipoKey\": \"fisico\",\n    \"fase\": \"Trabajo f\u00edsico complementario\",\n    \"faseKey\": \"fisico\",\n    \"duracion\": \"1 h en arena\",\n    \"alterna\": false,\n    \"actividades\": [\n     \"cambios de direccion, aumento de carga aerobica en arena\"\n    ],\n    \"obs\": \"Preparaci\u00f3n Nacional\"\n   }\n  ];\n  const NACIONAL = [\n    {d:9,  dia:'Viernes', nota:'Jornada 1 \u00b7 fase de grupos'},\n    {d:10, dia:'S\u00e1bado',  nota:'Jornada 2 \u00b7 fase de grupos'},\n    {d:11, dia:'Domingo', nota:'Jornada 3 \u00b7 cruces'},\n    {d:12, dia:'Lunes',   nota:'Jornada 4 \u00b7 finales'}\n  ];\n  const INICIO_NACIONAL = new Date(2026,9,9);\n  const FIN_NACIONAL = new Date(2026,9,12);\n  const FASE_LBL = {nacional:'Preparaci\u00f3n nacional',distrital:'Competencia distrital',desarrollo:'Desarrollo espec\u00edfico',fisico:'F\u00edsico complementario'};\n  const hoy = new Date(); hoy.setHours(0,0,0,0);\n  const fecha = s => new Date(+s.iso.slice(0,4), +s.iso.slice(5,7)-1, +s.iso.slice(8,10));\n  const horas = s => s.tipoKey === 'fisico' ? 1 : 2;\n\n  const semanas = [];\n  SESIONES.forEach(s => {\n    const f = fecha(s);\n    const ini = new Date(f); ini.setDate(f.getDate() - f.getDay());\n    const clave = ini.toISOString().slice(0,10);\n    let w = semanas.find(x => x.clave === clave);\n    if(!w){ w = {clave, ini, sesiones:[]}; semanas.push(w); }\n    w.sesiones.push(s);\n  });\n  semanas.forEach((w,i) => {\n    w.n = i+1;\n    w.horas = w.sesiones.reduce((a,s) => a+horas(s), 0);\n    const fases = w.sesiones.map(s => s.faseKey).filter(k => k !== 'fisico');\n    const cuenta = {};\n    fases.forEach(k => cuenta[k] = (cuenta[k]||0)+1);\n    w.faseDom = Object.keys(cuenta).sort((a,b) => cuenta[b]-cuenta[a])[0] || 'fisico';\n    const a = fecha(w.sesiones[0]), b = fecha(w.sesiones[w.sesiones.length-1]);\n    w.rango = a.getMonth() === b.getMonth()\n      ? `${a.getDate()}\u2013${b.getDate()} de ${w.sesiones[0].mes}`\n      : `${a.getDate()} de ${w.sesiones[0].mes} \u2013 ${b.getDate()} de ${w.sesiones[w.sesiones.length-1].mes}`;\n  });\n\n  const total = SESIONES.length;\n  const cumplidas = SESIONES.filter(s => fecha(s) < hoy).length;\n  const dias = Math.ceil((INICIO_NACIONAL - hoy)\/86400000);\n  const horasTotal = SESIONES.reduce((a,s) => a+horas(s), 0);\n\n  document.getElementById('hl-cuenta').textContent =\n    dias > 0 ? dias : (hoy <= FIN_NACIONAL ? '\u00a1Ya!' : '\u2713');\n  document.getElementById('hl-cuentaLbl').textContent =\n    dias > 1 ? 'd\u00edas al Nacional' : dias === 1 ? 'd\u00eda al Nacional' :\n    (hoy <= FIN_NACIONAL ? 'el torneo est\u00e1 en curso' : 'ciclo cerrado');\n\n  document.getElementById('hl-stats').innerHTML = [\n    [total,'sesiones en el plan'],\n    [semanas.length,'semanas de trabajo'],\n    [horasTotal+' h','volumen programado'],\n    [cumplidas,'sesiones cumplidas'],\n    [Math.max(total-cumplidas,0),'sesiones por delante']\n  ].map(([v,l]) => `<div class=\"stat\"><b>${v}<\/b><span>${l}<\/span><\/div>`).join('');\n\n  const maxH = Math.max(...semanas.map(w => w.horas), 8);\n  const cols = semanas.map(w => ({h:w.horas, lbl:`S${w.n}`, sub:w.rango.split(' de ')[0], cls:''}))\n    .concat([{h:0, lbl:'\u2014', sub:'30 sep\u20138 oct', cls:'hueco'},\n             {h:maxH, lbl:'NAC', sub:'9\u201312 oct', cls:'nacional'}]);\n  document.getElementById('hl-bars').innerHTML = cols.map(c => `\n    <div class=\"bcol\" title=\"${c.cls==='nacional' ? '4 d\u00edas de torneo' : c.h+' horas'}\">\n      <div class=\"bval\">${c.cls==='nacional' ? '4 d' : c.h+' h'}<\/div>\n      <div class=\"bar ${c.cls}\" style=\"height:${Math.max(c.h\/maxH*100, c.cls==='hueco'?4:6)}%\"><\/div>\n    <\/div>`).join('');\n  document.getElementById('hl-blabels').innerHTML = cols.map(c =>\n    `<div class=\"${c.cls==='nacional'?'hi':''}\">${c.lbl}<br>${c.sub}<\/div>`).join('');\n\n  document.getElementById('hl-alerta').innerHTML = `\n    <h3>Hay 10 d\u00edas sin sesiones antes del torneo<\/h3>\n    <p>El plan cierra el 29 de septiembre y el Nacional arranca el 9 de octubre. Entre esas dos fechas\n    no hay nada programado, y la \u00faltima semana registrada baja a 3 horas. Si la intenci\u00f3n es llegar\n    afinados, falta definir ese bloque: microciclo de activaci\u00f3n, un scrimmage de calibraci\u00f3n y la\n    log\u00edstica de viaje. Si la intenci\u00f3n era descanso, conviene dejarlo escrito.<\/p>`;\n\n  document.getElementById('hl-brecha').innerHTML = `\n    <b>30 de septiembre \u2013 8 de octubre<\/b>\n    <span>Sin sesiones programadas en el plan \u00b7 9 d\u00edas \u00b7 decisi\u00f3n pendiente del cuerpo t\u00e9cnico<\/span>`;\n\n  document.getElementById('hl-dias').innerHTML = NACIONAL.map(d => `\n    <div class=\"dia\"><b>${d.d}<\/b><span>${d.dia} \u00b7 octubre<\/span><p>${d.nota}<\/p><\/div>`).join('');\n\n  const tl = document.getElementById('hl-timeline');\n  tl.innerHTML = semanas.map(w => `\n    <section class=\"week\" data-fases=\"${[...new Set(w.sesiones.map(s => s.faseKey))].join(' ')}\">\n      <div class=\"wk-head\">\n        <span class=\"wk-n\">Semana ${w.n}<\/span>\n        <span class=\"wk-range\">${w.rango}<\/span>\n        <span class=\"tag ${w.faseDom}\">${FASE_LBL[w.faseDom]}<\/span>\n        <span class=\"wk-h\">${w.horas} h \u00b7 ${w.sesiones.length} sesiones<\/span>\n      <\/div>\n      <div class=\"grid\">\n        ${w.sesiones.map(s => {\n          const f = fecha(s);\n          const esHoy = f.getTime() === hoy.getTime();\n          return `<button class=\"card ${s.faseKey} ${f < hoy ? 'pasada' : ''} ${esHoy ? 'hoy' : ''}\"\n              data-fase=\"${s.faseKey}\" data-iso=\"${s.iso}\" aria-expanded=\"false\">\n            <span class=\"fecha\">${s.diaCorto} ${s.d} ${s.mes.slice(0,3)}\n              ${esHoy ? '<i class=\"hoypill\">hoy<\/i>' : ''}<\/span>\n            <span class=\"titulo\">${s.tipo}<\/span>\n            <span class=\"dur\">${s.duracion}<\/span>\n            <span class=\"detalle\">\n              <ul>${s.actividades.map(a => `<li>${a}<\/li>`).join('')}<\/ul>\n              ${s.alterna ? '<p class=\"aviso\">Sin cancha: 1 hora de f\u00edsico en arena PRD.<\/p>' : ''}\n            <\/span>\n          <\/button>`;\n        }).join('')}\n      <\/div>\n    <\/section>`).join('');\n\n  tl.addEventListener('click', e => {\n    const c = e.target.closest('.card');\n    if(!c) return;\n    const abierta = c.classList.toggle('abierta');\n    c.setAttribute('aria-expanded', abierta ? 'true' : 'false');\n  });\n\n  let filtro = 'todas', soloPend = false;\n  const chips = [...ROOT.querySelectorAll('.chip[data-f]')];\n  function aplicar(){\n    ROOT.querySelectorAll('.card').forEach(c => {\n      const okFase = filtro === 'todas' || c.dataset.fase === filtro;\n      const okPend = !soloPend || new Date(c.dataset.iso.slice(0,4), +c.dataset.iso.slice(5,7)-1, +c.dataset.iso.slice(8,10)) >= hoy;\n      c.classList.toggle('atenuada', !(okFase && okPend));\n    });\n    let visibles = 0;\n    ROOT.querySelectorAll('.week').forEach(w => {\n      const hay = [...w.querySelectorAll('.card')].some(c => !c.classList.contains('atenuada'));\n      w.classList.toggle('oculta', !hay);\n      if(hay) visibles++;\n    });\n    document.getElementById('hl-vacio').style.display = visibles ? 'none' : 'block';\n  }\n  chips.forEach(ch => ch.addEventListener('click', () => {\n    filtro = ch.dataset.f;\n    chips.forEach(o => o.setAttribute('aria-pressed', String(o === ch)));\n    aplicar();\n  }));\n  const btnPend = document.getElementById('hl-soloPend');\n  btnPend.addEventListener('click', () => {\n    soloPend = !soloPend;\n    btnPend.setAttribute('aria-pressed', String(soloPend));\n    aplicar();\n  });\n\n  const btnVer = document.getElementById('hl-verTodo');\n  btnVer.addEventListener('click', () => {\n    const abrir = btnVer.textContent === 'Abrir todas';\n    ROOT.querySelectorAll('.card').forEach(c => {\n      c.classList.toggle('abierta', abrir);\n      c.setAttribute('aria-expanded', String(abrir));\n    });\n    btnVer.textContent = abrir ? 'Cerrar todas' : 'Abrir todas';\n  });\n\n  document.getElementById('hl-imprimir').addEventListener('click', () => window.print());\n  document.getElementById('hl-c1').addEventListener('input', e =>\n    ROOT.style.setProperty('--brand', e.target.value));\n  document.getElementById('hl-c2').addEventListener('input', e =>\n    ROOT.style.setProperty('--brand-2', e.target.value));\n  }\n  if(document.readyState === 'loading'){\n    document.addEventListener('DOMContentLoaded', init);\n  } else { init(); }\n})();\n<\/script>\n<\/div>\n\n","protected":false},"excerpt":{"rendered":"<p>Club Deportivo Halal \u00b7 Equipo Open Ruta al Nacional de Clubes Cronograma de entrenamientos del 2 de agosto al 29 de septiembre de 2026, con el torneo del 9 al 12 de octubre. Entrenador: Jair Castiblanco. \u2013 d\u00edas al Nacional Todas las sesiones Prep. nacional Distrital Desarrollo F\u00edsico arena Solo pendientes principal secundario Abrir todas [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"om_disable_all_campaigns":false,"_mi_skip_tracking":false},"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/halalultimateclub.com\/index.php\/wp-json\/wp\/v2\/pages\/197"}],"collection":[{"href":"https:\/\/halalultimateclub.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/halalultimateclub.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/halalultimateclub.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/halalultimateclub.com\/index.php\/wp-json\/wp\/v2\/comments?post=197"}],"version-history":[{"count":6,"href":"https:\/\/halalultimateclub.com\/index.php\/wp-json\/wp\/v2\/pages\/197\/revisions"}],"predecessor-version":[{"id":203,"href":"https:\/\/halalultimateclub.com\/index.php\/wp-json\/wp\/v2\/pages\/197\/revisions\/203"}],"wp:attachment":[{"href":"https:\/\/halalultimateclub.com\/index.php\/wp-json\/wp\/v2\/media?parent=197"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}