{"id":7,"date":"2026-04-30T15:35:37","date_gmt":"2026-04-30T15:35:37","guid":{"rendered":"https:\/\/feria.rauldiaz.es\/?page_id=7"},"modified":"2026-04-30T15:58:44","modified_gmt":"2026-04-30T15:58:44","slug":"inicio","status":"publish","type":"page","link":"https:\/\/feria.rauldiaz.es\/","title":{"rendered":"Inicio"},"content":{"rendered":"\n<!-- ================================================================\n     FERIA DE DOS HERMANAS 2026 \u00b7 GU\u00cdA DE COMUNICACI\u00d3N\n     \u00b7\u00b7\u00b7 Ra\u00fal D\u00edaz Comunicaci\u00f3n\n     \n     VERSI\u00d3N WORDPRESS \u00b7 Pegar TODO este bloque en un m\u00f3dulo\n     \"HTML personalizado\" de Gutenberg dentro de la p\u00e1gina.\n     \n     Patr\u00f3n Full-Bleed activado: rompe los contenedores del tema\n     y ocupa el 100% del ancho del viewport.\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=DM+Sans:wght@300;400;500;600;700&#038;family=DM+Serif+Display:ital@0;1&#038;family=JetBrains+Mono:wght@400;500&#038;display=swap\" rel=\"stylesheet\">\n\n<style>\n\n\/* ============================================================\n   FULL-BLEED PARA WORDPRESS \u00b7 Rompe los contenedores del tema\n   Compatible con cualquier tema (Twenty Twenty-Five, GeneratePress, etc.)\n   ============================================================ *\/\n.rd-feria-app {\n  position: relative;\n  width: 100vw;\n  left: 50%;\n  right: 50%;\n  margin-left: -50vw;\n  margin-right: -50vw;\n  overflow-x: hidden;\n  box-sizing: border-box;\n}\n\n\/* Reset selectivo \u2014 neutraliza estilos heredados del tema *\/\n.rd-feria-app *,\n.rd-feria-app *::before,\n.rd-feria-app *::after {\n  box-sizing: border-box;\n}\n\n.rd-feria-app a { color: inherit; text-decoration: none; }\n.rd-feria-app button {\n  font: inherit; color: inherit; background: none;\n  border: none; padding: 0; margin: 0; cursor: pointer;\n}\n.rd-feria-app ul, .rd-feria-app ol, .rd-feria-app li {\n  list-style: none; margin: 0; padding: 0;\n}\n.rd-feria-app h1, .rd-feria-app h2, .rd-feria-app h3,\n.rd-feria-app h4, .rd-feria-app h5, .rd-feria-app h6,\n.rd-feria-app p { margin: 0; padding: 0; }\n.rd-feria-app img, .rd-feria-app svg { max-width: 100%; display: block; }\n.rd-feria-app input, .rd-feria-app textarea {\n  font-family: inherit; font-size: inherit;\n}\n.rd-feria-app table { border-collapse: collapse; width: 100%; }\n\n\n\/* ============================================================\n   FERIA 2026 \u00b7 GU\u00cdA DE COMUNICACI\u00d3N \u00b7 RA\u00daL D\u00cdAZ\n   Sistema visual: Azul Nocturno #0F1F35 + DM Sans\/Serif\n   ============================================================ *\/\n\n:root {\n  \/* Paleta corporativa Ra\u00fal D\u00edaz *\/\n  --rd-azul-nocturno: #0F1F35;\n  --rd-azul-medio: #1A3050;\n  --rd-azul-suave: #2A4060;\n  --rd-blanco: #FFFFFF;\n  --rd-gris-texto: #374151;\n  --rd-gris-medio: #6B7280;\n  --rd-gris-niebla: #F4F6F8;\n  --rd-gris-linea: #E5E7EB;\n  --rd-gris-borde: #D1D5DB;\n\n  \/* Acentos contextuales (sobre paleta base) *\/\n  --rd-acento-tinta: #C9A961;       \/* Dorado discreto, \u00fanico acento crom\u00e1tico *\/\n  --rd-fondo-papel: #FAFAF7;        \/* Fondo crema editorial *\/\n\n  \/* Tipograf\u00eda *\/\n  --ff-sans: 'DM Sans', system-ui, sans-serif;\n  --ff-serif: 'DM Serif Display', Georgia, serif;\n  --ff-mono: 'JetBrains Mono', 'Courier New', monospace;\n\n  \/* Espaciado *\/\n  --container: 1280px;\n  --gutter: clamp(1rem, 4vw, 2.5rem);\n}\n\n* { box-sizing: border-box; margin: 0; padding: 0; }\n\nhtml { scroll-behavior: smooth; }\n\n.rd-feria-app {\n  font-family: var(--ff-sans);\n  font-weight: 400;\n  font-size: 16px;\n  line-height: 1.6;\n  color: var(--rd-azul-nocturno);\n  background: var(--rd-fondo-papel);\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n  min-height: 100vh;\n  display: flex;\n  flex-direction: column;\n}\n\n\/* ============================================================\n   1. ESTRUCTURA GLOBAL\n   ============================================================ *\/\n\n.rd-container {\n  width: 100%;\n  max-width: var(--container);\n  margin: 0 auto;\n  padding-left: var(--gutter);\n  padding-right: var(--gutter);\n}\n\n\/* Barra superior fina *\/\n.rd-topbar {\n  background: var(--rd-azul-nocturno);\n  height: 4px;\n  width: 100%;\n}\n\n\/* ============================================================\n   2. HEADER \u00b7 MARCA + META\n   ============================================================ *\/\n\n.rd-header {\n  background: var(--rd-blanco);\n  border-bottom: 1px solid var(--rd-gris-linea);\n  position: sticky;\n  top: 0;\n  z-index: 100;\n  backdrop-filter: blur(10px);\n  background: rgba(255, 255, 255, 0.96);\n}\n\n.rd-header-row {\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  padding: 1.5rem 0;\n  gap: 1.5rem;\n  flex-wrap: wrap;\n}\n\n.rd-brand {\n  display: flex;\n  flex-direction: column;\n  gap: 0.15rem;\n}\n\n.rd-brand-logo {\n  font-family: var(--ff-sans);\n  font-weight: 700;\n  font-size: 1.25rem;\n  color: var(--rd-azul-nocturno);\n  letter-spacing: -0.01em;\n  display: flex;\n  align-items: baseline;\n  gap: 0.4rem;\n}\n\n.rd-brand-logo .dots {\n  font-weight: 700;\n  color: var(--rd-azul-nocturno);\n  letter-spacing: 0.05em;\n}\n\n.rd-brand-meta {\n  font-family: var(--ff-mono);\n  font-size: 0.7rem;\n  font-weight: 500;\n  color: var(--rd-gris-medio);\n  letter-spacing: 0.12em;\n  text-transform: uppercase;\n}\n\n.rd-countdown {\n  display: flex;\n  align-items: baseline;\n  gap: 0.6rem;\n  padding: 0.5rem 1rem;\n  border: 1px solid var(--rd-gris-borde);\n  background: var(--rd-fondo-papel);\n}\n\n.rd-countdown-label {\n  font-family: var(--ff-mono);\n  font-size: 0.65rem;\n  font-weight: 500;\n  letter-spacing: 0.15em;\n  text-transform: uppercase;\n  color: var(--rd-gris-medio);\n}\n\n.rd-countdown-num {\n  font-family: var(--ff-serif);\n  font-size: 1.6rem;\n  line-height: 1;\n  color: var(--rd-azul-nocturno);\n}\n\n.rd-countdown-suffix {\n  font-family: var(--ff-mono);\n  font-size: 0.7rem;\n  letter-spacing: 0.1em;\n  text-transform: uppercase;\n  color: var(--rd-gris-medio);\n}\n\n\/* ============================================================\n   3. NAVEGACI\u00d3N POR PESTA\u00d1AS\n   ============================================================ *\/\n\n.rd-nav {\n  border-top: 1px solid var(--rd-gris-linea);\n  overflow-x: auto;\n  -webkit-overflow-scrolling: touch;\n}\n\n.rd-nav-list {\n  display: flex;\n  gap: 0;\n  list-style: none;\n  min-width: max-content;\n}\n\n.rd-nav-item {\n  background: none;\n  border: none;\n  cursor: pointer;\n  font-family: var(--ff-sans);\n  font-size: 0.78rem;\n  font-weight: 500;\n  letter-spacing: 0.1em;\n  text-transform: uppercase;\n  color: var(--rd-gris-medio);\n  padding: 1.1rem 0;\n  margin-right: 2.5rem;\n  border-bottom: 2px solid transparent;\n  transition: color 0.2s ease, border-color 0.2s ease;\n  white-space: nowrap;\n  position: relative;\n  display: flex;\n  align-items: center;\n  gap: 0.5rem;\n}\n\n.rd-nav-item:hover {\n  color: var(--rd-azul-medio);\n}\n\n.rd-nav-item.active {\n  color: var(--rd-azul-nocturno);\n  border-bottom-color: var(--rd-azul-nocturno);\n  font-weight: 600;\n}\n\n.rd-nav-item .num {\n  font-family: var(--ff-mono);\n  font-size: 0.7rem;\n  color: var(--rd-gris-medio);\n  font-weight: 400;\n}\n\n.rd-nav-item.active .num {\n  color: var(--rd-azul-nocturno);\n}\n\n\/* ============================================================\n   4. MAIN\n   ============================================================ *\/\n\n.rd-main {\n  flex-grow: 1;\n  padding: 3.5rem 0 5rem;\n}\n\n.rd-tab-content {\n  display: none;\n  animation: fadeInUp 0.5s ease-out forwards;\n}\n\n.rd-tab-content.active {\n  display: block;\n}\n\n@keyframes fadeInUp {\n  from { opacity: 0; transform: translateY(8px); }\n  to { opacity: 1; transform: translateY(0); }\n}\n\n\/* ============================================================\n   5. CABECERA DE SECCI\u00d3N (estilo editorial)\n   ============================================================ *\/\n\n.rd-section-head {\n  margin-bottom: 3rem;\n  max-width: 780px;\n}\n\n.rd-section-eyebrow {\n  font-family: var(--ff-mono);\n  font-size: 0.72rem;\n  font-weight: 500;\n  letter-spacing: 0.18em;\n  text-transform: uppercase;\n  color: var(--rd-gris-medio);\n  margin-bottom: 1rem;\n  display: flex;\n  align-items: center;\n  gap: 0.6rem;\n}\n\n.rd-section-eyebrow::before {\n  content: '\u00b7\u00b7\u00b7';\n  color: var(--rd-azul-nocturno);\n  font-weight: 700;\n  letter-spacing: 0.1em;\n}\n\n.rd-section-title {\n  font-family: var(--ff-serif);\n  font-size: clamp(2rem, 4.5vw, 3.2rem);\n  line-height: 1.05;\n  letter-spacing: -0.015em;\n  color: var(--rd-azul-nocturno);\n  margin-bottom: 1.2rem;\n  font-weight: 400;\n}\n\n.rd-section-lede {\n  font-size: 1.05rem;\n  line-height: 1.65;\n  color: var(--rd-gris-texto);\n  max-width: 660px;\n}\n\n\/* ============================================================\n   6. ESTRATEGIA \u00b7 DISTRIBUCI\u00d3N Y FASES\n   ============================================================ *\/\n\n.rd-strategy-grid {\n  display: grid;\n  grid-template-columns: 1fr;\n  gap: 2.5rem;\n  margin-top: 1rem;\n}\n\n@media (min-width: 1024px) {\n  .rd-strategy-grid {\n    grid-template-columns: 360px 1fr;\n    gap: 3rem;\n  }\n}\n\n.rd-mix-card {\n  background: var(--rd-blanco);\n  border: 1px solid var(--rd-gris-linea);\n  padding: 2rem;\n  position: sticky;\n  top: 8rem;\n  align-self: start;\n}\n\n.rd-mix-title {\n  font-family: var(--ff-mono);\n  font-size: 0.7rem;\n  font-weight: 500;\n  letter-spacing: 0.15em;\n  text-transform: uppercase;\n  color: var(--rd-gris-medio);\n  margin-bottom: 0.5rem;\n}\n\n.rd-mix-subtitle {\n  font-family: var(--ff-serif);\n  font-size: 1.4rem;\n  line-height: 1.2;\n  color: var(--rd-azul-nocturno);\n  margin-bottom: 1.5rem;\n}\n\n.rd-mix-bars {\n  display: flex;\n  flex-direction: column;\n  gap: 1.2rem;\n  margin-top: 1.5rem;\n}\n\n.rd-mix-row {\n  display: flex;\n  flex-direction: column;\n  gap: 0.4rem;\n}\n\n.rd-mix-row-head {\n  display: flex;\n  justify-content: space-between;\n  align-items: baseline;\n  gap: 1rem;\n}\n\n.rd-mix-row-label {\n  font-size: 0.85rem;\n  font-weight: 500;\n  color: var(--rd-azul-nocturno);\n}\n\n.rd-mix-row-pct {\n  font-family: var(--ff-mono);\n  font-size: 0.85rem;\n  font-weight: 500;\n  color: var(--rd-azul-nocturno);\n  letter-spacing: 0.02em;\n}\n\n.rd-mix-bar {\n  height: 4px;\n  background: var(--rd-gris-niebla);\n  position: relative;\n  overflow: hidden;\n}\n\n.rd-mix-bar-fill {\n  position: absolute;\n  top: 0;\n  left: 0;\n  height: 100%;\n  background: var(--rd-azul-nocturno);\n  width: 0%;\n  transition: width 1s cubic-bezier(0.22, 1, 0.36, 1);\n}\n\n.rd-mix-bar-fill.fill-2 { background: var(--rd-azul-medio); }\n.rd-mix-bar-fill.fill-3 { background: var(--rd-acento-tinta); }\n\n.rd-mix-note {\n  margin-top: 1.5rem;\n  padding-top: 1.5rem;\n  border-top: 1px solid var(--rd-gris-linea);\n  font-size: 0.85rem;\n  color: var(--rd-gris-medio);\n  line-height: 1.55;\n}\n\n\/* ============================================================\n   7. FASES (Phase cards)\n   ============================================================ *\/\n\n.rd-phases {\n  display: flex;\n  flex-direction: column;\n  gap: 2rem;\n}\n\n.rd-phase {\n  background: var(--rd-blanco);\n  border: 1px solid var(--rd-gris-linea);\n  padding: 2rem;\n  position: relative;\n  transition: border-color 0.25s ease;\n}\n\n.rd-phase:hover {\n  border-color: var(--rd-azul-medio);\n}\n\n.rd-phase-current {\n  border-color: var(--rd-azul-nocturno);\n  border-width: 1px;\n  box-shadow: 0 0 0 1px var(--rd-azul-nocturno);\n}\n\n.rd-phase-current::before {\n  content: 'EN CURSO';\n  position: absolute;\n  top: -1px;\n  right: -1px;\n  background: var(--rd-azul-nocturno);\n  color: var(--rd-blanco);\n  font-family: var(--ff-mono);\n  font-size: 0.65rem;\n  font-weight: 500;\n  letter-spacing: 0.15em;\n  padding: 0.45rem 0.85rem;\n}\n\n.rd-phase-head {\n  display: flex;\n  align-items: baseline;\n  gap: 1.2rem;\n  margin-bottom: 1rem;\n  padding-bottom: 1.2rem;\n  border-bottom: 1px solid var(--rd-gris-linea);\n}\n\n.rd-phase-num {\n  font-family: var(--ff-serif);\n  font-size: 2.4rem;\n  line-height: 1;\n  color: var(--rd-azul-nocturno);\n}\n\n.rd-phase-title-block { flex: 1; }\n\n.rd-phase-title {\n  font-family: var(--ff-serif);\n  font-size: 1.5rem;\n  line-height: 1.2;\n  color: var(--rd-azul-nocturno);\n  margin-bottom: 0.25rem;\n}\n\n.rd-phase-objective {\n  font-size: 0.85rem;\n  color: var(--rd-gris-medio);\n  font-style: italic;\n}\n\n.rd-phase-objective strong {\n  font-style: normal;\n  font-weight: 500;\n  color: var(--rd-gris-texto);\n}\n\n.rd-phase-body { padding-top: 0.5rem; }\n\n\/* Lista de bloques de la fase 1 *\/\n.rd-block-list {\n  list-style: none;\n  display: flex;\n  flex-direction: column;\n}\n\n.rd-block-list li {\n  display: flex;\n  gap: 1rem;\n  padding: 0.85rem 0;\n  border-bottom: 1px dashed var(--rd-gris-linea);\n}\n\n.rd-block-list li:last-child { border-bottom: none; }\n\n.rd-block-list .block-mark {\n  font-family: var(--ff-mono);\n  font-size: 0.7rem;\n  font-weight: 500;\n  color: var(--rd-azul-medio);\n  letter-spacing: 0.1em;\n  width: 26px;\n  flex-shrink: 0;\n  padding-top: 0.15rem;\n}\n\n.rd-block-list .block-content {\n  font-size: 0.95rem;\n  line-height: 1.55;\n  color: var(--rd-gris-texto);\n}\n\n.rd-block-list .block-content strong {\n  color: var(--rd-azul-nocturno);\n  font-weight: 600;\n  display: block;\n  margin-bottom: 0.15rem;\n}\n\n\/* Bloques de Fase 2 (chips) *\/\n.rd-chip-grid {\n  display: grid;\n  grid-template-columns: 1fr;\n  gap: 1.5rem;\n}\n\n@media (min-width: 768px) {\n  .rd-chip-grid { grid-template-columns: 1fr 1fr; }\n}\n\n.rd-chip-group-title {\n  font-family: var(--ff-mono);\n  font-size: 0.7rem;\n  font-weight: 500;\n  letter-spacing: 0.15em;\n  text-transform: uppercase;\n  color: var(--rd-gris-medio);\n  margin-bottom: 0.85rem;\n}\n\n.rd-chips {\n  display: flex;\n  flex-wrap: wrap;\n  gap: 0.45rem;\n}\n\n.rd-chip {\n  font-size: 0.82rem;\n  padding: 0.4rem 0.8rem;\n  border: 1px solid var(--rd-gris-borde);\n  background: var(--rd-fondo-papel);\n  color: var(--rd-azul-nocturno);\n  font-weight: 400;\n  transition: all 0.2s;\n}\n\n.rd-chip:hover {\n  border-color: var(--rd-azul-nocturno);\n  background: var(--rd-azul-nocturno);\n  color: var(--rd-blanco);\n  cursor: default;\n}\n\n.rd-chip.muted {\n  background: var(--rd-gris-niebla);\n  border-color: var(--rd-gris-linea);\n  color: var(--rd-gris-medio);\n}\n\n.rd-chip.muted:hover {\n  background: var(--rd-azul-medio);\n  border-color: var(--rd-azul-medio);\n  color: var(--rd-blanco);\n}\n\n\/* Hitos clave (Fase 3) *\/\n.rd-milestones {\n  display: grid;\n  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\n  gap: 0;\n  border: 1px solid var(--rd-gris-linea);\n}\n\n.rd-milestone {\n  padding: 1.2rem 1.4rem;\n  border-right: 1px solid var(--rd-gris-linea);\n  border-bottom: 1px solid var(--rd-gris-linea);\n}\n\n.rd-milestone:last-child { border-right: none; }\n\n.rd-milestone-date {\n  font-family: var(--ff-mono);\n  font-size: 0.7rem;\n  letter-spacing: 0.15em;\n  text-transform: uppercase;\n  color: var(--rd-gris-medio);\n  margin-bottom: 0.3rem;\n}\n\n.rd-milestone-event {\n  font-family: var(--ff-serif);\n  font-size: 1.1rem;\n  line-height: 1.25;\n  color: var(--rd-azul-nocturno);\n}\n\n\/* ============================================================\n   8. CALENDARIO EDITORIAL\n   ============================================================ *\/\n\n.rd-cal-controls {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: end;\n  justify-content: space-between;\n  gap: 1.5rem;\n  margin-bottom: 2.5rem;\n}\n\n.rd-day-picker {\n  display: flex;\n  border: 1px solid var(--rd-gris-borde);\n  background: var(--rd-blanco);\n}\n\n.rd-day-btn {\n  padding: 0.85rem 1.2rem;\n  background: transparent;\n  border: none;\n  border-right: 1px solid var(--rd-gris-linea);\n  cursor: pointer;\n  font-family: var(--ff-sans);\n  font-size: 0.85rem;\n  font-weight: 500;\n  color: var(--rd-gris-medio);\n  letter-spacing: 0.02em;\n  transition: all 0.2s;\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  gap: 0.15rem;\n  min-width: 70px;\n}\n\n.rd-day-btn:last-child { border-right: none; }\n\n.rd-day-btn:hover {\n  color: var(--rd-azul-nocturno);\n  background: var(--rd-fondo-papel);\n}\n\n.rd-day-btn.active {\n  background: var(--rd-azul-nocturno);\n  color: var(--rd-blanco);\n}\n\n.rd-day-btn .day-num {\n  font-family: var(--ff-serif);\n  font-size: 1.15rem;\n  line-height: 1;\n}\n\n.rd-day-btn .day-name {\n  font-family: var(--ff-mono);\n  font-size: 0.65rem;\n  letter-spacing: 0.15em;\n  text-transform: uppercase;\n}\n\n\/* D\u00eda activo - layout *\/\n.rd-day-view {\n  display: grid;\n  grid-template-columns: 1fr;\n  gap: 2rem;\n}\n\n@media (min-width: 1024px) {\n  .rd-day-view {\n    grid-template-columns: 1.6fr 1fr;\n    gap: 2.5rem;\n  }\n}\n\n.rd-day-header {\n  margin-bottom: 1.5rem;\n  padding-bottom: 1.2rem;\n  border-bottom: 2px solid var(--rd-azul-nocturno);\n}\n\n.rd-day-eyebrow {\n  font-family: var(--ff-mono);\n  font-size: 0.7rem;\n  letter-spacing: 0.18em;\n  text-transform: uppercase;\n  color: var(--rd-gris-medio);\n  margin-bottom: 0.5rem;\n}\n\n.rd-day-title {\n  font-family: var(--ff-serif);\n  font-size: clamp(1.6rem, 3vw, 2.2rem);\n  line-height: 1.15;\n  color: var(--rd-azul-nocturno);\n  margin-bottom: 0.5rem;\n}\n\n.rd-day-focus {\n  font-size: 0.95rem;\n  color: var(--rd-gris-texto);\n  font-style: italic;\n}\n\n.rd-day-focus strong {\n  font-style: normal;\n  color: var(--rd-azul-nocturno);\n  font-weight: 500;\n}\n\n.rd-checklist {\n  background: var(--rd-blanco);\n  border: 1px solid var(--rd-gris-linea);\n}\n\n.rd-checklist-head {\n  padding: 1rem 1.5rem;\n  border-bottom: 1px solid var(--rd-gris-linea);\n  background: var(--rd-fondo-papel);\n  font-family: var(--ff-mono);\n  font-size: 0.72rem;\n  letter-spacing: 0.15em;\n  text-transform: uppercase;\n  color: var(--rd-gris-medio);\n}\n\n.rd-task {\n  display: flex;\n  gap: 1rem;\n  padding: 1.15rem 1.5rem;\n  border-bottom: 1px solid var(--rd-gris-linea);\n  transition: background-color 0.15s ease;\n}\n\n.rd-task:last-child { border-bottom: none; }\n\n.rd-task:hover { background: var(--rd-fondo-papel); }\n\n.rd-task-check {\n  flex-shrink: 0;\n  width: 18px;\n  height: 18px;\n  margin-top: 3px;\n  border: 1.5px solid var(--rd-gris-borde);\n  cursor: pointer;\n  position: relative;\n  transition: all 0.2s;\n}\n\n.rd-task-check:hover { border-color: var(--rd-azul-nocturno); }\n\n.rd-task-check.checked {\n  background: var(--rd-azul-nocturno);\n  border-color: var(--rd-azul-nocturno);\n}\n\n.rd-task-check.checked::after {\n  content: '';\n  position: absolute;\n  left: 5px;\n  top: 1px;\n  width: 5px;\n  height: 10px;\n  border: solid var(--rd-blanco);\n  border-width: 0 2px 2px 0;\n  transform: rotate(45deg);\n}\n\n.rd-task-body { flex: 1; }\n\n.rd-task-meta {\n  display: flex;\n  gap: 0.6rem;\n  margin-bottom: 0.4rem;\n  flex-wrap: wrap;\n}\n\n.rd-tag {\n  font-family: var(--ff-mono);\n  font-size: 0.65rem;\n  font-weight: 500;\n  letter-spacing: 0.12em;\n  text-transform: uppercase;\n  padding: 0.2rem 0.5rem;\n  border: 1px solid var(--rd-gris-borde);\n  color: var(--rd-gris-medio);\n  background: var(--rd-blanco);\n}\n\n.rd-tag.tag-primary {\n  border-color: var(--rd-azul-nocturno);\n  color: var(--rd-azul-nocturno);\n  background: var(--rd-blanco);\n}\n\n.rd-tag.tag-filled {\n  background: var(--rd-azul-nocturno);\n  color: var(--rd-blanco);\n  border-color: var(--rd-azul-nocturno);\n}\n\n.rd-task-text {\n  font-size: 0.95rem;\n  line-height: 1.55;\n  color: var(--rd-azul-nocturno);\n}\n\n.rd-task.done .rd-task-text {\n  text-decoration: line-through;\n  color: var(--rd-gris-medio);\n}\n\n\/* Card lateral - copy de referencia *\/\n.rd-copy-card {\n  background: var(--rd-azul-nocturno);\n  color: var(--rd-blanco);\n  padding: 2rem;\n  position: sticky;\n  top: 9rem;\n  align-self: start;\n}\n\n.rd-copy-card-eyebrow {\n  font-family: var(--ff-mono);\n  font-size: 0.7rem;\n  font-weight: 500;\n  letter-spacing: 0.15em;\n  text-transform: uppercase;\n  color: rgba(255,255,255,0.6);\n  margin-bottom: 0.8rem;\n  display: flex;\n  align-items: center;\n  gap: 0.5rem;\n}\n\n.rd-copy-card-eyebrow::before {\n  content: '\u00b7\u00b7\u00b7';\n  color: var(--rd-blanco);\n}\n\n.rd-copy-card-title {\n  font-family: var(--ff-serif);\n  font-size: 1.3rem;\n  line-height: 1.25;\n  margin-bottom: 1.2rem;\n  color: var(--rd-blanco);\n}\n\n.rd-copy-text {\n  font-family: var(--ff-serif);\n  font-style: italic;\n  font-size: 1rem;\n  line-height: 1.65;\n  color: rgba(255,255,255,0.92);\n  padding: 1.2rem 0;\n  border-top: 1px solid rgba(255,255,255,0.15);\n  border-bottom: 1px solid rgba(255,255,255,0.15);\n  margin-bottom: 1.2rem;\n}\n\n.rd-copy-actions {\n  display: flex;\n  gap: 0.5rem;\n}\n\n.rd-btn {\n  font-family: var(--ff-sans);\n  font-size: 0.78rem;\n  font-weight: 500;\n  letter-spacing: 0.05em;\n  padding: 0.7rem 1rem;\n  background: var(--rd-blanco);\n  color: var(--rd-azul-nocturno);\n  border: 1px solid var(--rd-blanco);\n  cursor: pointer;\n  transition: all 0.2s;\n  display: inline-flex;\n  align-items: center;\n  gap: 0.4rem;\n}\n\n.rd-btn:hover { background: transparent; color: var(--rd-blanco); }\n\n.rd-btn-ghost {\n  background: transparent;\n  color: var(--rd-blanco);\n  border-color: rgba(255,255,255,0.3);\n}\n\n.rd-btn-ghost:hover { border-color: var(--rd-blanco); background: rgba(255,255,255,0.05); }\n\n.rd-btn-feedback {\n  position: absolute;\n  background: var(--rd-acento-tinta);\n  color: var(--rd-azul-nocturno);\n  font-family: var(--ff-mono);\n  font-size: 0.7rem;\n  font-weight: 500;\n  letter-spacing: 0.1em;\n  padding: 0.3rem 0.6rem;\n  pointer-events: none;\n  opacity: 0;\n  transform: translateY(0);\n  transition: opacity 0.2s, transform 0.4s;\n}\n\n.rd-btn-feedback.show {\n  opacity: 1;\n  transform: translateY(-30px);\n}\n\n\/* ============================================================\n   9. SERVICIOS \u00b7 GU\u00cdA DE COPYS\n   ============================================================ *\/\n\n.rd-services-grid {\n  display: grid;\n  grid-template-columns: 1fr;\n  gap: 1.5rem;\n}\n\n@media (min-width: 768px) { .rd-services-grid { grid-template-columns: 1fr 1fr; } }\n@media (min-width: 1100px) { .rd-services-grid { grid-template-columns: 1fr 1fr 1fr; } }\n\n.rd-service {\n  background: var(--rd-blanco);\n  border: 1px solid var(--rd-gris-linea);\n  padding: 1.75rem;\n  display: flex;\n  flex-direction: column;\n  position: relative;\n  transition: all 0.25s ease;\n}\n\n.rd-service:hover {\n  border-color: var(--rd-azul-nocturno);\n  transform: translateY(-2px);\n}\n\n.rd-service-num {\n  font-family: var(--ff-mono);\n  font-size: 0.7rem;\n  font-weight: 500;\n  letter-spacing: 0.15em;\n  color: var(--rd-gris-medio);\n  margin-bottom: 0.85rem;\n}\n\n.rd-service-icon {\n  width: 36px;\n  height: 36px;\n  margin-bottom: 1rem;\n  color: var(--rd-azul-nocturno);\n}\n\n.rd-service-title {\n  font-family: var(--ff-serif);\n  font-size: 1.3rem;\n  line-height: 1.25;\n  color: var(--rd-azul-nocturno);\n  margin-bottom: 0.6rem;\n}\n\n.rd-service-text {\n  font-size: 0.9rem;\n  line-height: 1.6;\n  color: var(--rd-gris-texto);\n  flex: 1;\n  margin-bottom: 1.2rem;\n}\n\n.rd-service-footer {\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  padding-top: 1rem;\n  border-top: 1px solid var(--rd-gris-linea);\n  gap: 0.5rem;\n  flex-wrap: wrap;\n}\n\n.rd-service-tags {\n  display: flex;\n  gap: 0.35rem;\n  flex-wrap: wrap;\n}\n\n.rd-service .rd-tag {\n  font-size: 0.6rem;\n  padding: 0.18rem 0.45rem;\n}\n\n.rd-copy-btn {\n  font-family: var(--ff-mono);\n  font-size: 0.7rem;\n  font-weight: 500;\n  letter-spacing: 0.1em;\n  text-transform: uppercase;\n  padding: 0.4rem 0.7rem;\n  background: transparent;\n  color: var(--rd-azul-nocturno);\n  border: 1px solid var(--rd-gris-borde);\n  cursor: pointer;\n  transition: all 0.2s;\n  display: inline-flex;\n  align-items: center;\n  gap: 0.3rem;\n  position: relative;\n}\n\n.rd-copy-btn:hover {\n  border-color: var(--rd-azul-nocturno);\n  background: var(--rd-azul-nocturno);\n  color: var(--rd-blanco);\n}\n\n\/* ============================================================\n   10. PROGRAMA \u00b7 TABLA EDITORIAL\n   ============================================================ *\/\n\n.rd-program-search {\n  position: relative;\n  width: 100%;\n  max-width: 320px;\n}\n\n.rd-program-search input {\n  width: 100%;\n  padding: 0.75rem 1rem 0.75rem 2.4rem;\n  border: 1px solid var(--rd-gris-borde);\n  background: var(--rd-blanco);\n  font-family: var(--ff-sans);\n  font-size: 0.9rem;\n  color: var(--rd-azul-nocturno);\n  transition: border-color 0.2s;\n  outline: none;\n}\n\n.rd-program-search input:focus { border-color: var(--rd-azul-nocturno); }\n\n.rd-program-search::before {\n  content: '';\n  position: absolute;\n  left: 1rem;\n  top: 50%;\n  transform: translateY(-50%);\n  width: 14px;\n  height: 14px;\n  background-image: url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 24 24' fill='none' stroke='%236B7280' stroke-width='2'%3E%3Ccircle cx='11' cy='11' r='8'\/%3E%3Cpath d='m21 21-4.35-4.35'\/%3E%3C\/svg%3E\");\n  background-repeat: no-repeat;\n  background-size: contain;\n  pointer-events: none;\n}\n\n.rd-program-table {\n  width: 100%;\n  border-collapse: collapse;\n  background: var(--rd-blanco);\n  border: 1px solid var(--rd-gris-linea);\n}\n\n.rd-program-table thead {\n  background: var(--rd-fondo-papel);\n  border-bottom: 1px solid var(--rd-gris-linea);\n}\n\n.rd-program-table th {\n  font-family: var(--ff-mono);\n  font-size: 0.7rem;\n  font-weight: 500;\n  letter-spacing: 0.15em;\n  text-transform: uppercase;\n  color: var(--rd-gris-medio);\n  text-align: left;\n  padding: 1rem 1.5rem;\n}\n\n.rd-program-table td {\n  padding: 1.2rem 1.5rem;\n  border-bottom: 1px solid var(--rd-gris-linea);\n  vertical-align: top;\n}\n\n.rd-program-table tr:last-child td { border-bottom: none; }\n\n.rd-program-table tr:hover td { background: var(--rd-fondo-papel); }\n\n.rd-program-day {\n  font-family: var(--ff-serif);\n  font-size: 1.05rem;\n  color: var(--rd-azul-nocturno);\n  line-height: 1.2;\n  margin-bottom: 0.2rem;\n  white-space: nowrap;\n}\n\n.rd-program-time {\n  font-family: var(--ff-mono);\n  font-size: 0.78rem;\n  color: var(--rd-gris-medio);\n  letter-spacing: 0.05em;\n}\n\n.rd-program-event {\n  font-family: var(--ff-sans);\n  font-size: 0.95rem;\n  font-weight: 500;\n  color: var(--rd-azul-nocturno);\n  line-height: 1.4;\n  margin-bottom: 0.4rem;\n}\n\n.rd-program-type {\n  font-family: var(--ff-mono);\n  font-size: 0.62rem;\n  font-weight: 500;\n  letter-spacing: 0.15em;\n  text-transform: uppercase;\n  padding: 0.18rem 0.45rem;\n  background: var(--rd-azul-nocturno);\n  color: var(--rd-blanco);\n}\n\n.rd-program-type.protocolo { background: var(--rd-azul-nocturno); }\n.rd-program-type.musica { background: var(--rd-acento-tinta); color: var(--rd-azul-nocturno); }\n.rd-program-type.feria { background: var(--rd-azul-medio); }\n.rd-program-type.tradicion { background: var(--rd-azul-suave); }\n.rd-program-type.concurso { background: var(--rd-gris-texto); }\n\n.rd-program-notes {\n  font-family: var(--ff-sans);\n  font-style: italic;\n  font-size: 0.88rem;\n  color: var(--rd-gris-texto);\n  line-height: 1.5;\n}\n\n.rd-no-results {\n  padding: 3rem 1.5rem;\n  text-align: center;\n  font-family: var(--ff-mono);\n  font-size: 0.85rem;\n  letter-spacing: 0.05em;\n  color: var(--rd-gris-medio);\n}\n\n\/* ============================================================\n   11. FOOTER\n   ============================================================ *\/\n\n.rd-footer {\n  background: var(--rd-azul-nocturno);\n  color: rgba(255,255,255,0.75);\n  padding: 3rem 0 2rem;\n  margin-top: auto;\n}\n\n.rd-footer-row {\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: space-between;\n  align-items: flex-start;\n  gap: 2rem;\n}\n\n.rd-footer-brand {\n  font-family: var(--ff-serif);\n  font-size: 1.5rem;\n  color: var(--rd-blanco);\n  display: flex;\n  align-items: baseline;\n  gap: 0.5rem;\n  margin-bottom: 0.5rem;\n}\n\n.rd-footer-tagline {\n  font-family: var(--ff-mono);\n  font-size: 0.7rem;\n  letter-spacing: 0.18em;\n  text-transform: uppercase;\n  color: rgba(255,255,255,0.5);\n}\n\n.rd-footer-meta {\n  text-align: right;\n  font-family: var(--ff-mono);\n  font-size: 0.72rem;\n  letter-spacing: 0.1em;\n  line-height: 1.8;\n  color: rgba(255,255,255,0.5);\n}\n\n.rd-footer-meta a {\n  color: rgba(255,255,255,0.85);\n  text-decoration: none;\n  transition: color 0.2s;\n}\n\n.rd-footer-meta a:hover { color: var(--rd-blanco); }\n\n.rd-footer-bottom {\n  margin-top: 2.5rem;\n  padding-top: 1.5rem;\n  border-top: 1px solid rgba(255,255,255,0.12);\n  font-family: var(--ff-mono);\n  font-size: 0.7rem;\n  letter-spacing: 0.1em;\n  color: rgba(255,255,255,0.4);\n  display: flex;\n  justify-content: space-between;\n  flex-wrap: wrap;\n  gap: 1rem;\n}\n\n\/* ============================================================\n   12. SCROLLBAR\n   ============================================================ *\/\n::-webkit-scrollbar { width: 8px; height: 8px; }\n::-webkit-scrollbar-track { background: var(--rd-fondo-papel); }\n::-webkit-scrollbar-thumb { background: var(--rd-gris-borde); }\n::-webkit-scrollbar-thumb:hover { background: var(--rd-gris-medio); }\n\n\/* Selection *\/\n::selection { background: var(--rd-azul-nocturno); color: var(--rd-blanco); }\n\n\/* Reduced motion *\/\n@media (prefers-reduced-motion: reduce) {\n  *, *::before, *::after { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; }\n}\n\n\/* ============================================================\n   13. PRINT\n   ============================================================ *\/\n@media print {\n  .rd-header, .rd-nav, .rd-footer, .rd-copy-actions, .rd-copy-btn { display: none !important; }\n  .rd-feria-app { background: white; }\n  .rd-tab-content { display: block !important; page-break-after: always; }\n  * { box-shadow: none !important; }\n}\n\n<\/style>\n\n<div class=\"rd-feria-app\">\n<!-- ============================================================\n     ESTRUCTURA HTML PRINCIPAL \u00b7 Se construye en bloques\n     ============================================================ -->\n\n<div class=\"rd-topbar\"><\/div>\n\n<header class=\"rd-header\">\n  <div class=\"rd-container\">\n    <div class=\"rd-header-row\">\n      <div class=\"rd-brand\">\n        <div class=\"rd-brand-logo\">Ra\u00fal D\u00edaz<span class=\"dots\">\u00b7\u00b7\u00b7<\/span><\/div>\n        <div class=\"rd-brand-meta\">Comunicaci\u00f3n \u00b7 Feria 2026<\/div>\n      <\/div>\n      <div class=\"rd-countdown\" aria-live=\"polite\">\n        <span class=\"rd-countdown-label\">Cuenta atr\u00e1s<\/span>\n        <span class=\"rd-countdown-num\" id=\"countdownDays\">\u00b7\u00b7<\/span>\n        <span class=\"rd-countdown-suffix\">d\u00edas<\/span>\n      <\/div>\n    <\/div>\n    <nav class=\"rd-nav\" aria-label=\"Secciones\">\n      <ul class=\"rd-nav-list\">\n        <li><button class=\"rd-nav-item active\" data-tab=\"estrategia\"><span class=\"num\">01<\/span>Estrategia y fases<\/button><\/li>\n        <li><button class=\"rd-nav-item\" data-tab=\"calendario\"><span class=\"num\">02<\/span>Calendario editorial<\/button><\/li>\n        <li><button class=\"rd-nav-item\" data-tab=\"servicios\"><span class=\"num\">03<\/span>Gu\u00eda de servicios<\/button><\/li>\n        <li><button class=\"rd-nav-item\" data-tab=\"programa\"><span class=\"num\">04<\/span>Programa de actuaciones<\/button><\/li>\n      <\/ul>\n    <\/nav>\n  <\/div>\n<\/header>\n\n<main class=\"rd-main\">\n  <div class=\"rd-container\">\n    <!-- ESTRATEGIA -->\n    <section id=\"tab-estrategia\" class=\"rd-tab-content active\">\n      <header class=\"rd-section-head\">\n        <div class=\"rd-section-eyebrow\">Secci\u00f3n 01 \u00b7 Planificaci\u00f3n<\/div>\n        <h1 class=\"rd-section-title\">Estrategia editorial<br>y fases de cobertura<\/h1>\n        <p class=\"rd-section-lede\">Visi\u00f3n global de las acciones de comunicaci\u00f3n. Define el tono, los objetivos por fase y la distribuci\u00f3n del contenido para maximizar el impacto, fomentar el orgullo local y ofrecer utilidad p\u00fablica.<\/p>\n      <\/header>\n\n      <div class=\"rd-strategy-grid\">\n        <aside class=\"rd-mix-card\">\n          <div class=\"rd-mix-title\">Mix de contenidos<\/div>\n          <h2 class=\"rd-mix-subtitle\">Proporci\u00f3n recomendada<\/h2>\n          <div class=\"rd-mix-bars\">\n            <div class=\"rd-mix-row\">\n              <div class=\"rd-mix-row-head\"><span class=\"rd-mix-row-label\">Informaci\u00f3n y servicios<\/span><span class=\"rd-mix-row-pct\">40%<\/span><\/div>\n              <div class=\"rd-mix-bar\"><div class=\"rd-mix-bar-fill\" data-fill=\"40\"><\/div><\/div>\n            <\/div>\n            <div class=\"rd-mix-row\">\n              <div class=\"rd-mix-row-head\"><span class=\"rd-mix-row-label\">Ambiente y emoci\u00f3n<\/span><span class=\"rd-mix-row-pct\">40%<\/span><\/div>\n              <div class=\"rd-mix-bar\"><div class=\"rd-mix-bar-fill fill-2\" data-fill=\"40\"><\/div><\/div>\n            <\/div>\n            <div class=\"rd-mix-row\">\n              <div class=\"rd-mix-row-head\"><span class=\"rd-mix-row-label\">Agenda y directos<\/span><span class=\"rd-mix-row-pct\">20%<\/span><\/div>\n              <div class=\"rd-mix-bar\"><div class=\"rd-mix-bar-fill fill-3\" data-fill=\"20\"><\/div><\/div>\n            <\/div>\n          <\/div>\n          <p class=\"rd-mix-note\">Esta distribuci\u00f3n mantiene a la audiencia informada sin saturarla, equilibrando utilidad p\u00fablica y orgullo de ciudad durante las tres fases.<\/p>\n        <\/aside>\n\n        <div class=\"rd-phases\">\n          <article class=\"rd-phase rd-phase-current\">\n            <div class=\"rd-phase-head\">\n              <div class=\"rd-phase-num\">01<\/div>\n              <div class=\"rd-phase-title-block\">\n                <h3 class=\"rd-phase-title\">Previa de Feria<\/h3>\n                <div class=\"rd-phase-objective\"><strong>Objetivo:<\/strong> generar expectaci\u00f3n, informar, calentar ambiente.<\/div>\n              <\/div>\n            <\/div>\n            <div class=\"rd-phase-body\">\n              <ul class=\"rd-block-list\">\n                <li><span class=\"block-mark\">A<\/span><div class=\"block-content\"><strong>Arranque y cuenta atr\u00e1s<\/strong>\u00abYa huele a feria\u2026\u00bb V\u00eddeo o carrusel emocional.<\/div><\/li>\n                <li><span class=\"block-mark\">B<\/span><div class=\"block-content\"><strong>Servicios municipales<\/strong>Informaci\u00f3n clara y \u00fatil sobre seguridad, limpieza y transporte.<\/div><\/li>\n                <li><span class=\"block-mark\">C<\/span><div class=\"block-content\"><strong>Actuaciones<\/strong>Destacar a Merche, Los del R\u00edo y artistas locales. Cartel + Reels.<\/div><\/li>\n                <li><span class=\"block-mark\">D<\/span><div class=\"block-content\"><strong>Alumbrado<\/strong>Anunciar hora (mi\u00e9rcoles 6, 22:30 h), menci\u00f3n a Protecci\u00f3n Civil y Banda Santa Ana.<\/div><\/li>\n              <\/ul>\n            <\/div>\n          <\/article>\n\n          <article class=\"rd-phase\">\n            <div class=\"rd-phase-head\">\n              <div class=\"rd-phase-num\">02<\/div>\n              <div class=\"rd-phase-title-block\">\n                <h3 class=\"rd-phase-title\">Durante la Feria<\/h3>\n                <div class=\"rd-phase-objective\"><strong>Objetivo:<\/strong> mostrar ambiente, reforzar orgullo, informar en tiempo real.<\/div>\n              <\/div>\n            <\/div>\n            <div class=\"rd-phase-body\">\n              <div class=\"rd-chip-grid\">\n                <div>\n                  <div class=\"rd-chip-group-title\">Bloques a alternar diariamente<\/div>\n                  <div class=\"rd-chips\">\n                    <span class=\"rd-chip\">Atracciones<\/span>\n                    <span class=\"rd-chip\">Casetas<\/span>\n                    <span class=\"rd-chip\">Feria de d\u00eda<\/span>\n                    <span class=\"rd-chip\">Feria de noche<\/span>\n                    <span class=\"rd-chip\">Portadas<\/span>\n                    <span class=\"rd-chip\">Paseo de caballos<\/span>\n                    <span class=\"rd-chip\">Bueyes<\/span>\n                  <\/div>\n                <\/div>\n                <div>\n                  <div class=\"rd-chip-group-title\">Servicios (repetici\u00f3n continua)<\/div>\n                  <div class=\"rd-chips\">\n                    <span class=\"rd-chip muted\">Transporte<\/span>\n                    <span class=\"rd-chip muted\">Punto Violeta<\/span>\n                    <span class=\"rd-chip muted\">Ni\u00f1os perdidos<\/span>\n                    <span class=\"rd-chip muted\">Seguridad<\/span>\n                  <\/div>\n                <\/div>\n              <\/div>\n            <\/div>\n          <\/article>\n\n          <article class=\"rd-phase\">\n            <div class=\"rd-phase-head\">\n              <div class=\"rd-phase-num\">03<\/div>\n              <div class=\"rd-phase-title-block\">\n                <h3 class=\"rd-phase-title\">Hitos clave<\/h3>\n                <div class=\"rd-phase-objective\"><strong>Objetivo:<\/strong> cobertura especial \u2014 stories en directo, fotograf\u00edas oficiales.<\/div>\n              <\/div>\n            <\/div>\n            <div class=\"rd-phase-body\">\n              <div class=\"rd-milestones\">\n                <div class=\"rd-milestone\">\n                  <div class=\"rd-milestone-date\">Mi\u00e9rcoles 6<\/div>\n                  <div class=\"rd-milestone-event\">Inauguraci\u00f3n y alumbrado<\/div>\n                <\/div>\n                <div class=\"rd-milestone\">\n                  <div class=\"rd-milestone-date\">Jueves 7<\/div>\n                  <div class=\"rd-milestone-event\">D\u00eda de la Infancia<\/div>\n                <\/div>\n                <div class=\"rd-milestone\">\n                  <div class=\"rd-milestone-date\">S\u00e1bado 9<\/div>\n                  <div class=\"rd-milestone-event\">Concurso de casetas<\/div>\n                <\/div>\n                <div class=\"rd-milestone\">\n                  <div class=\"rd-milestone-date\">Domingo 10<\/div>\n                  <div class=\"rd-milestone-event\">Fuegos y enganches<\/div>\n                <\/div>\n              <\/div>\n            <\/div>\n          <\/article>\n        <\/div>\n      <\/div>\n    <\/section>\n\n    <!-- CALENDARIO -->\n    <section id=\"tab-calendario\" class=\"rd-tab-content\">\n      <header class=\"rd-section-head\">\n        <div class=\"rd-section-eyebrow\">Secci\u00f3n 02 \u00b7 Ejecuci\u00f3n diaria<\/div>\n        <h1 class=\"rd-section-title\">Calendario editorial<br>de ejecuci\u00f3n<\/h1>\n        <p class=\"rd-section-lede\">Planificaci\u00f3n diaria de copys, creatividades y coberturas in situ. Selecciona un d\u00eda para ver el foco editorial, la lista de publicaciones y el copy de referencia listo para programar.<\/p>\n      <\/header>\n\n      <div class=\"rd-cal-controls\">\n        <div class=\"rd-day-picker\" role=\"tablist\">\n          <button class=\"rd-day-btn active\" data-day=\"miercoles\"><span class=\"day-num\">06<\/span><span class=\"day-name\">Mi\u00e9<\/span><\/button>\n          <button class=\"rd-day-btn\" data-day=\"jueves\"><span class=\"day-num\">07<\/span><span class=\"day-name\">Jue<\/span><\/button>\n          <button class=\"rd-day-btn\" data-day=\"viernes\"><span class=\"day-num\">08<\/span><span class=\"day-name\">Vie<\/span><\/button>\n          <button class=\"rd-day-btn\" data-day=\"sabado\"><span class=\"day-num\">09<\/span><span class=\"day-name\">S\u00e1b<\/span><\/button>\n          <button class=\"rd-day-btn\" data-day=\"domingo\"><span class=\"day-num\">10<\/span><span class=\"day-name\">Dom<\/span><\/button>\n        <\/div>\n      <\/div>\n\n      <div id=\"day-container\" class=\"rd-day-view\"><\/div>\n    <\/section>\n\n    <!-- SERVICIOS -->\n    <section id=\"tab-servicios\" class=\"rd-tab-content\">\n      <header class=\"rd-section-head\">\n        <div class=\"rd-section-eyebrow\">Secci\u00f3n 03 \u00b7 Recursos institucionales<\/div>\n        <h1 class=\"rd-section-title\">Gu\u00eda de servicios<br>y copys de referencia<\/h1>\n        <p class=\"rd-section-lede\">Textos institucionales pre-aprobados para copiar, pegar y programar. Estos mensajes deben intercalarse continuamente durante la Fase 2 para garantizar utilidad p\u00fablica y servicio al ciudadano.<\/p>\n      <\/header>\n\n      <div class=\"rd-services-grid\" id=\"services-grid\"><\/div>\n    <\/section>\n\n    <!-- PROGRAMA -->\n    <section id=\"tab-programa\" class=\"rd-tab-content\">\n      <header class=\"rd-section-head\">\n        <div class=\"rd-section-eyebrow\">Secci\u00f3n 04 \u00b7 Base de consulta<\/div>\n        <h1 class=\"rd-section-title\">Programa<br>de actuaciones<\/h1>\n        <p class=\"rd-section-lede\">Buscador r\u00e1pido de artistas y eventos en la Caseta Municipal. Informaci\u00f3n extra\u00edda del Programa de Mano oficial para responder con agilidad a la ciudadan\u00eda en redes sociales.<\/p>\n      <\/header>\n\n      <div class=\"rd-cal-controls\">\n        <div class=\"rd-program-search\">\n          <input type=\"text\" id=\"searchProgram\" placeholder=\"Buscar artista, d\u00eda o evento\u2026\" aria-label=\"Buscar en el programa\">\n        <\/div>\n      <\/div>\n\n      <div style=\"overflow-x:auto;\">\n        <table class=\"rd-program-table\">\n          <thead>\n            <tr>\n              <th style=\"width: 22%;\">D\u00eda \/ Hora<\/th>\n              <th style=\"width: 38%;\">Actuaci\u00f3n o evento<\/th>\n              <th>Ubicaci\u00f3n \/ Notas<\/th>\n            <\/tr>\n          <\/thead>\n          <tbody id=\"program-table-body\"><\/tbody>\n        <\/table>\n        <div id=\"no-results\" class=\"rd-no-results\" style=\"display:none;\">\u00b7\u00b7\u00b7  Sin resultados para esa b\u00fasqueda.<\/div>\n      <\/div>\n    <\/section>\n  <\/div>\n<\/main>\n\n<footer class=\"rd-footer\">\n  <div class=\"rd-container\">\n    <div class=\"rd-footer-row\">\n      <div>\n        <div class=\"rd-footer-brand\">Ra\u00fal D\u00edaz<span style=\"color: var(--rd-blanco);\">\u00b7\u00b7\u00b7<\/span><\/div>\n        <div class=\"rd-footer-tagline\">Comunicaci\u00f3n \u00b7 Direcci\u00f3n creativa<\/div>\n      <\/div>\n      <div class=\"rd-footer-meta\">\n        Herramienta interna<br>\n        <a href=\"https:\/\/rauldiaz.es\" target=\"_blank\" rel=\"noopener\">rauldiaz.es<\/a><br>\n        <a href=\"mailto:correo@rauldiaz.es\">correo@rauldiaz.es<\/a>\n      <\/div>\n    <\/div>\n    <div class=\"rd-footer-bottom\">\n      <span>Feria de Dos Hermanas 2026 \u00b7 Gu\u00eda editorial<\/span>\n      <span id=\"footerYear\">\u00a9 2026<\/span>\n    <\/div>\n  <\/div>\n<\/footer>\n\n<script>\n\/* ============================================================\n   DATOS ESTRUCTURALES \u00b7 Plan editorial diario, servicios y programa\n   ============================================================ *\/\n\nconst dailyPlan = {\n  miercoles: {\n    title: 'Mi\u00e9rcoles 6 de mayo \u00b7 V\u00edspera e inauguraci\u00f3n',\n    eyebrow: 'D\u00eda 1 \u00b7 Apertura',\n    focus: 'Emoci\u00f3n, protocolo, arranque oficial.',\n    tasks: [\n      { time: 'Ma\u00f1ana',   type: 'Recordatorio',     text: '\u00daltimo post de cuenta atr\u00e1s. Recordar servicios de transporte.' },\n      { time: 'Tarde',    type: 'Expectaci\u00f3n',      text: 'V\u00eddeo corto: \"\u00daltimos retoques en el recinto\". Ambiente de feriantes.' },\n      { time: '22:30 h',  type: 'Directo',          text: 'Encendido del alumbrado. Protecci\u00f3n Civil y Banda Santa Ana. Presencia de autoridades. Post potente: \"Inaugurada la Feria 2026\".', primary: true }\n    ],\n    copyTitle: 'Encendido del alumbrado',\n    copy: 'La espera ha terminado. A las 22:30 h se har\u00e1 la luz en el recinto ferial. Acompa\u00f1a a nuestra Banda Santa Ana y a Protecci\u00f3n Civil en el encendido. Dos Hermanas ya est\u00e1 de Feria. #FeriaDosHermanas2026'\n  },\n  jueves: {\n    title: 'Jueves 7 de mayo \u00b7 D\u00eda de la Infancia',\n    eyebrow: 'D\u00eda 2 \u00b7 Familias',\n    focus: 'Familias, sensibilidad, accesibilidad.',\n    tasks: [\n      { time: 'Ma\u00f1ana',    type: 'Informativo',     text: 'Explicar descuentos (2,00 \u20ac \/ 2,50 \u20ac) y horarios de atracciones.' },\n      { time: 'Mediod\u00eda',  type: 'Concienciaci\u00f3n',  text: 'Informar sobre la \"Feria sin ruido\" (sensibilidad ac\u00fastica) y ubicaci\u00f3n de la Caseta de Ni\u00f1os Perdidos.' },\n      { time: 'Tarde',     type: 'Ambiente',        text: 'Fotos y v\u00eddeos de familias, atracciones y ambiente cercano.' }\n    ],\n    copyTitle: 'D\u00eda de la Infancia',\n    copy: 'Hoy los peque\u00f1os son los protagonistas. Disfruta del D\u00eda de la Infancia en la #FeriaDosHermanas con descuentos en las atracciones. Garantizamos una feria inclusiva apoyando a las personas con sensibilidad sonora. Toda la informaci\u00f3n, en el enlace.'\n  },\n  viernes: {\n    title: 'Viernes 8 de mayo \u00b7 Pleno apogeo',\n    eyebrow: 'D\u00eda 3 \u00b7 Identidad',\n    focus: 'Orgullo de ciudad, casetas abiertas, actuaciones.',\n    tasks: [\n      { time: 'Ma\u00f1ana',     type: 'Servicios',     text: 'Recordar transporte p\u00fablico y parking gratuito vigilado.' },\n      { time: 'Mediod\u00eda',   type: 'Identidad',     text: 'Post sobre \"Feria Abierta\". Im\u00e1genes de convivencia en casetas.' },\n      { time: 'Tarde-noche',type: 'Agenda',        text: 'Promocionar el cartel de artistas del d\u00eda (destacar locales o cabeza de cartel).', primary: true }\n    ],\n    copyTitle: 'Feria abierta y acogedora',\n    copy: 'Nuestra mayor se\u00f1a de identidad: una Feria abierta y acogedora. Disfruta del ambiente en las casetas y recuerda que dispones de parking gratuito vigilado y un amplio servicio de autobuses para venir con tranquilidad. Te esperamos.'\n  },\n  sabado: {\n    title: 'S\u00e1bado 9 de mayo \u00b7 Concurso y tradici\u00f3n',\n    eyebrow: 'D\u00eda 4 \u00b7 Premios',\n    focus: 'Tradici\u00f3n, caballos, concurso de casetas.',\n    tasks: [\n      { time: 'Ma\u00f1ana',    type: 'Tradici\u00f3n',      text: 'Cobertura del paseo de caballos y enganches.' },\n      { time: 'Mediod\u00eda',  type: 'Premiaci\u00f3n',     text: 'Publicar ganadores del Concurso de Exorno de Casetas (entidades y particulares).', primary: true },\n      { time: 'Noche',     type: 'Prevenci\u00f3n',     text: 'Recordatorio del Punto Violeta. Una Feria segura para todas y todos.' }\n    ],\n    copyTitle: 'Concurso de exorno',\n    copy: 'El esfuerzo y la dedicaci\u00f3n tienen recompensa. Enhorabuena a las personas y entidades ganadoras del Concurso de Exorno de Casetas de este a\u00f1o. Pasea hoy por el recinto y marav\u00edllate con el arte de nuestra gente y la elegancia del paseo de caballos.'\n  },\n  domingo: {\n    title: 'Domingo 10 de mayo \u00b7 Broche de oro',\n    eyebrow: 'D\u00eda 5 \u00b7 Cierre',\n    focus: 'Agradecimiento, despedida, fuegos artificiales.',\n    tasks: [\n      { time: 'Ma\u00f1ana',  type: 'Resumen',       text: 'Galer\u00eda de fotos de los mejores momentos de la semana.' },\n      { time: 'Tarde',   type: 'Servicios',     text: 'Agradecimiento especial a los servicios municipales (limpieza, polic\u00eda, bomberos, sanitarios).' },\n      { time: 'Noche',   type: 'Despedida',     text: 'Cobertura de los fuegos artificiales. \"Hasta el a\u00f1o que viene\".', primary: true }\n    ],\n    copyTitle: 'Despedida y agradecimiento',\n    copy: 'Todo principio tiene su fin, pero nos despedimos a lo grande. Esta noche cerramos la #FeriaDosHermanas2026 con un espect\u00e1culo de fuegos artificiales. Gracias a todos los servicios municipales que la han hecho posible y a ti por llenarla de vida. Hasta el a\u00f1o que viene.'\n  }\n};\n\nconst services = [\n  {\n    icon: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"><path d=\"M8 6v12m8-12v12M3 6h18M5 18h14M5 6V4a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2v2\"\/><circle cx=\"8\" cy=\"15\" r=\"1.5\"\/><circle cx=\"16\" cy=\"15\" r=\"1.5\"\/><\/svg>',\n    title: 'Transporte p\u00fablico',\n    text: 'Servicio especial de autobuses urbanos que conectan todos los barrios con el Recinto Ferial. Frecuencias ampliadas de jueves a domingo.',\n    tags: ['Utilidad', 'Movilidad']\n  },\n  {\n    icon: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"><rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"0\"\/><path d=\"M9 17V7h4a3 3 0 0 1 0 6H9\"\/><\/svg>',\n    title: 'Parking gratuito',\n    text: 'Bolsas de aparcamiento gratuito y vigilado en los aleda\u00f1os del recinto. Evita atascos y aparca con tranquilidad.',\n    tags: ['Utilidad', 'Tr\u00e1fico']\n  },\n  {\n    icon: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"><circle cx=\"12\" cy=\"12\" r=\"9\"\/><path d=\"M12 7v5l3 2\"\/><\/svg>',\n    title: 'Punto Violeta',\n    text: 'Espacio seguro de informaci\u00f3n, atenci\u00f3n y prevenci\u00f3n de agresiones sexistas. Ubicado en la zona de servicios central. Por una Feria libre de violencias.',\n    tags: ['Seguridad', 'Social']\n  },\n  {\n    icon: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"><circle cx=\"12\" cy=\"8\" r=\"4\"\/><path d=\"M4 21v-1a6 6 0 0 1 6-6h4a6 6 0 0 1 6 6v1\"\/><\/svg>',\n    title: 'Ni\u00f1os perdidos',\n    text: 'Caseta espec\u00edfica gestionada por Protecci\u00f3n Civil y Cruz Roja. Recomendamos poner pulseras identificativas a los menores al llegar al recinto.',\n    tags: ['Seguridad', 'Familias']\n  },\n  {\n    icon: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"><path d=\"M3 21h18M5 21V10l4-3v14M9 21V7l5-4v18M14 21V10l5 3v8\"\/><\/svg>',\n    title: 'Mantenimiento integral',\n    text: 'Agradecimiento al equipo de limpieza, adecentamiento, riego y obras que trabajan veinticuatro horas para mantener el recinto impecable.',\n    tags: ['Institucional', 'Orgullo']\n  },\n  {\n    icon: '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"><path d=\"M12 2 4 5v6c0 5 3.5 9.5 8 11 4.5-1.5 8-6 8-11V5z\"\/><\/svg>',\n    title: 'Seguridad y salud',\n    text: 'Despliegue coordinado de Polic\u00eda Local, Polic\u00eda Nacional, Bomberos y servicio sanitario. Ante cualquier emergencia, acude a los agentes en el recinto.',\n    tags: ['Seguridad', 'Emergencias']\n  }\n];\n\nconst programData = [\n  { day: 'Mi\u00e9rcoles 6 de mayo', time: '22:30 h', event: 'Inauguraci\u00f3n de la iluminaci\u00f3n y actuaci\u00f3n', notes: 'Grupo de Danzas Ciudad de Dos Hermanas', type: 'protocolo' },\n  { day: 'Jueves 7 de mayo', time: 'Todo el d\u00eda', event: 'D\u00eda de la Infancia', notes: 'Atracciones a 2,00 \u20ac y 2,50 \u20ac. D\u00eda sin ruido.', type: 'feria' },\n  { day: 'Jueves 7 al domingo 10', time: 'Diario', event: 'Paseo de caballos y enganches', notes: 'Participaci\u00f3n diaria obligatoria seg\u00fan bases del concurso.', type: 'tradicion' },\n  { day: 'Pendiente de asignar', time: 'Verano \u00b7 TBD', event: 'Concierto \u00b7 Los del R\u00edo', notes: 'Caseta Municipal \u00b7 destacado del verano', type: 'musica' },\n  { day: 'Pendiente de asignar', time: 'Verano \u00b7 TBD', event: 'Actuaci\u00f3n \u00b7 Merche', notes: 'Caseta Municipal \u00b7 destacado del verano', type: 'musica' },\n  { day: 'Pendiente de asignar', time: 'TBD', event: 'Coro Hdad. del Roc\u00edo Montequinto', notes: 'Caseta Municipal', type: 'musica' },\n  { day: 'Pendiente de asignar', time: 'TBD', event: 'Los Sure\u00f1os', notes: 'Caseta Municipal', type: 'musica' },\n  { day: 'Pendiente de asignar', time: 'TBD', event: 'Jaime Est\u00e9vez', notes: 'Caseta Municipal', type: 'musica' },\n  { day: 'Pendiente de asignar', time: 'TBD', event: 'Maribel Lozano', notes: 'Caseta Municipal', type: 'musica' },\n  { day: 'Pendiente de asignar', time: 'TBD', event: 'Requiebros', notes: 'Caseta Municipal', type: 'musica' },\n  { day: 'Pendiente de asignar', time: 'TBD', event: 'A Tu Vera', notes: 'Caseta Municipal', type: 'musica' },\n  { day: 'S\u00e1bado 9 de mayo', time: 'TBD', event: 'Fallo del Concurso de Exorno de Casetas', notes: 'Mejor Entidad y Mejor Particular', type: 'concurso' }\n];\n\n\/* ============================================================\n   L\u00d3GICA DE LA APLICACI\u00d3N\n   ============================================================ *\/\n\n(function() {\n  'use strict';\n\n  \/* --- Cuenta atr\u00e1s --- *\/\n  function updateCountdown() {\n    const target = new Date('2026-05-06T22:30:00');\n    const now = new Date();\n    const diff = target - now;\n    const el = document.getElementById('countdownDays');\n    if (diff <= 0) { el.textContent = '0'; return; }\n    const days = Math.ceil(diff \/ (1000 * 60 * 60 * 24));\n    el.textContent = String(days).padStart(2, '0');\n  }\n\n  \/* --- A\u00f1o del footer --- *\/\n  document.getElementById('footerYear').textContent = '\u00a9 ' + new Date().getFullYear();\n\n  \/* --- Navegaci\u00f3n por pesta\u00f1as --- *\/\n  const tabs = document.querySelectorAll('.rd-nav-item');\n  const contents = document.querySelectorAll('.rd-tab-content');\n\n  tabs.forEach(tab => {\n    tab.addEventListener('click', () => {\n      const target = tab.dataset.tab;\n      tabs.forEach(t => t.classList.remove('active'));\n      contents.forEach(c => c.classList.remove('active'));\n      tab.classList.add('active');\n      document.getElementById('tab-' + target).classList.add('active');\n\n      \/\/ Animar barras del mix si entramos a estrategia\n      if (target === 'estrategia') animateMix();\n    });\n  });\n\n  \/* --- Animar barras del mix --- *\/\n  function animateMix() {\n    document.querySelectorAll('.rd-mix-bar-fill').forEach(bar => {\n      bar.style.width = '0%';\n      requestAnimationFrame(() => {\n        setTimeout(() => { bar.style.width = bar.dataset.fill + '%'; }, 100);\n      });\n    });\n  }\n\n  \/* --- Renderizar d\u00eda del calendario --- *\/\n  function renderDay(key) {\n    const data = dailyPlan[key];\n    const container = document.getElementById('day-container');\n    if (!data) return;\n\n    \/\/ Botones del picker\n    document.querySelectorAll('.rd-day-btn').forEach(b => {\n      b.classList.toggle('active', b.dataset.day === key);\n    });\n\n    const tasksHTML = data.tasks.map((task, i) => `\n      <div class=\"rd-task\" data-task-idx=\"${i}\">\n        <div class=\"rd-task-check\" role=\"checkbox\" aria-checked=\"false\" tabindex=\"0\"><\/div>\n        <div class=\"rd-task-body\">\n          <div class=\"rd-task-meta\">\n            <span class=\"rd-tag\">${escapeHTML(task.time)}<\/span>\n            <span class=\"rd-tag ${task.primary ? 'tag-filled' : 'tag-primary'}\">${escapeHTML(task.type)}<\/span>\n          <\/div>\n          <div class=\"rd-task-text\">${escapeHTML(task.text)}<\/div>\n        <\/div>\n      <\/div>\n    `).join('');\n\n    container.innerHTML = `\n      <div>\n        <header class=\"rd-day-header\">\n          <div class=\"rd-day-eyebrow\">\u00b7\u00b7\u00b7 ${escapeHTML(data.eyebrow)}<\/div>\n          <h2 class=\"rd-day-title\">${escapeHTML(data.title)}<\/h2>\n          <div class=\"rd-day-focus\"><strong>Foco editorial:<\/strong> ${escapeHTML(data.focus)}<\/div>\n        <\/header>\n        <div class=\"rd-checklist\">\n          <div class=\"rd-checklist-head\">Checklist de publicaciones<\/div>\n          ${tasksHTML}\n        <\/div>\n      <\/div>\n      <aside class=\"rd-copy-card\">\n        <div class=\"rd-copy-card-eyebrow\">Copy de referencia<\/div>\n        <h3 class=\"rd-copy-card-title\">${escapeHTML(data.copyTitle)}<\/h3>\n        <div class=\"rd-copy-text\">\u00ab${escapeHTML(data.copy)}\u00bb<\/div>\n        <div class=\"rd-copy-actions\">\n          <button class=\"rd-btn copy-trigger\" data-copy=\"${escapeAttr(data.copy)}\">\n            <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\"\/><path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"\/><\/svg>\n            Copiar\n          <\/button>\n        <\/div>\n      <\/aside>\n    `;\n\n    \/\/ Activar checkboxes\n    container.querySelectorAll('.rd-task-check').forEach(check => {\n      check.addEventListener('click', toggleCheck);\n      check.addEventListener('keydown', e => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); toggleCheck.call(check); } });\n    });\n\n    \/\/ Activar bot\u00f3n copiar\n    container.querySelector('.copy-trigger').addEventListener('click', e => copyToClipboard(e.currentTarget, data.copy));\n  }\n\n  function toggleCheck() {\n    this.classList.toggle('checked');\n    this.parentElement.classList.toggle('done');\n    this.setAttribute('aria-checked', this.classList.contains('checked'));\n  }\n\n  \/* --- Selector de d\u00eda --- *\/\n  document.querySelectorAll('.rd-day-btn').forEach(btn => {\n    btn.addEventListener('click', () => renderDay(btn.dataset.day));\n  });\n\n  \/* --- Renderizar servicios --- *\/\n  function renderServices() {\n    const grid = document.getElementById('services-grid');\n    grid.innerHTML = services.map((s, i) => `\n      <article class=\"rd-service\">\n        <div class=\"rd-service-num\">Servicio ${String(i + 1).padStart(2, '0')}<\/div>\n        <div class=\"rd-service-icon\">${s.icon}<\/div>\n        <h3 class=\"rd-service-title\">${escapeHTML(s.title)}<\/h3>\n        <p class=\"rd-service-text\">${escapeHTML(s.text)}<\/p>\n        <footer class=\"rd-service-footer\">\n          <div class=\"rd-service-tags\">${s.tags.map(t => `<span class=\"rd-tag\">${escapeHTML(t)}<\/span>`).join('')}<\/div>\n          <button class=\"rd-copy-btn copy-trigger\" data-copy=\"${escapeAttr(s.text)}\">\n            <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\"\/><path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"\/><\/svg>\n            Copiar\n          <\/button>\n        <\/footer>\n      <\/article>\n    `).join('');\n\n    grid.querySelectorAll('.copy-trigger').forEach(btn => {\n      btn.addEventListener('click', e => copyToClipboard(e.currentTarget, btn.dataset.copy));\n    });\n  }\n\n  \/* --- Renderizar programa --- *\/\n  function renderProgram(filter = '') {\n    const tbody = document.getElementById('program-table-body');\n    const noResults = document.getElementById('no-results');\n    const f = filter.toLowerCase().trim();\n\n    const filtered = programData.filter(item => {\n      if (!f) return true;\n      return (item.event + ' ' + item.notes + ' ' + item.day).toLowerCase().includes(f);\n    });\n\n    if (filtered.length === 0) {\n      tbody.innerHTML = '';\n      noResults.style.display = 'block';\n      return;\n    }\n\n    noResults.style.display = 'none';\n    tbody.innerHTML = filtered.map(item => `\n      <tr>\n        <td>\n          <div class=\"rd-program-day\">${escapeHTML(item.day)}<\/div>\n          <div class=\"rd-program-time\">${escapeHTML(item.time)}<\/div>\n        <\/td>\n        <td>\n          <div class=\"rd-program-event\">${escapeHTML(item.event)}<\/div>\n          <span class=\"rd-program-type ${item.type}\">${escapeHTML(item.type)}<\/span>\n        <\/td>\n        <td><div class=\"rd-program-notes\">${escapeHTML(item.notes)}<\/div><\/td>\n      <\/tr>\n    `).join('');\n  }\n\n  \/* --- B\u00fasqueda en programa --- *\/\n  document.getElementById('searchProgram').addEventListener('input', e => renderProgram(e.target.value));\n\n  \/* --- Copiar al portapapeles --- *\/\n  function copyToClipboard(button, text) {\n    navigator.clipboard.writeText(text).then(() => {\n      const feedback = document.createElement('span');\n      feedback.className = 'rd-btn-feedback';\n      feedback.textContent = 'Copiado';\n      const rect = button.getBoundingClientRect();\n      feedback.style.position = 'fixed';\n      feedback.style.left = rect.left + 'px';\n      feedback.style.top = rect.top + 'px';\n      document.body.appendChild(feedback);\n      requestAnimationFrame(() => feedback.classList.add('show'));\n      setTimeout(() => feedback.remove(), 1800);\n    }).catch(() => {\n      \/\/ Fallback m\u00ednimo\n      const ta = document.createElement('textarea');\n      ta.value = text;\n      document.body.appendChild(ta);\n      ta.select();\n      try { document.execCommand('copy'); } catch (err) {}\n      ta.remove();\n    });\n  }\n\n  \/* --- Utilidades de escape --- *\/\n  function escapeHTML(str) {\n    return String(str)\n      .replace(\/&\/g, '&amp;').replace(\/<\/g, '&lt;').replace(\/>\/g, '&gt;')\n      .replace(\/\"\/g, '&quot;').replace(\/'\/g, '&#039;');\n  }\n  function escapeAttr(str) {\n    return String(str).replace(\/\"\/g, '&quot;').replace(\/'\/g, '&#039;');\n  }\n\n  \/* --- Inicializaci\u00f3n --- *\/\n  updateCountdown();\n  setInterval(updateCountdown, 60 * 60 * 1000); \/\/ refrescar cada hora\n  renderDay('miercoles');\n  renderServices();\n  renderProgram();\n\n  \/\/ Animar barras al cargar (la pesta\u00f1a activa al inicio es estrategia)\n  setTimeout(animateMix, 300);\n\n})();\n<\/script>\n<\/div>\n\n","protected":false},"excerpt":{"rendered":"<p>Ra\u00fal D\u00edaz\u00b7\u00b7\u00b7 Comunicaci\u00f3n \u00b7 Feria 2026 Cuenta atr\u00e1s \u00b7\u00b7 d\u00edas 01Estrategia y fases 02Calendario editorial 03Gu\u00eda de servicios 04Programa de actuaciones Secci\u00f3n 01 \u00b7 Planificaci\u00f3n Estrategia editorialy fases de cobertura Visi\u00f3n global de las acciones de comunicaci\u00f3n. Define el tono, los objetivos por fase y la distribuci\u00f3n del contenido para maximizar el impacto, fomentar el [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-no-title","meta":{"footnotes":""},"class_list":["post-7","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Inicio - Feria de Dos Hermanas<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/feria.rauldiaz.es\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Inicio - Feria de Dos Hermanas\" \/>\n<meta property=\"og:description\" content=\"Ra\u00fal D\u00edaz\u00b7\u00b7\u00b7 Comunicaci\u00f3n \u00b7 Feria 2026 Cuenta atr\u00e1s \u00b7\u00b7 d\u00edas 01Estrategia y fases 02Calendario editorial 03Gu\u00eda de servicios 04Programa de actuaciones Secci\u00f3n 01 \u00b7 Planificaci\u00f3n Estrategia editorialy fases de cobertura Visi\u00f3n global de las acciones de comunicaci\u00f3n. Define el tono, los objetivos por fase y la distribuci\u00f3n del contenido para maximizar el impacto, fomentar el [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/feria.rauldiaz.es\/\" \/>\n<meta property=\"og:site_name\" content=\"Feria de Dos Hermanas\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-30T15:58:44+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data1\" content=\"2 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/feria.rauldiaz.es\\\/\",\"url\":\"https:\\\/\\\/feria.rauldiaz.es\\\/\",\"name\":\"Inicio - Feria de Dos Hermanas\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/feria.rauldiaz.es\\\/#website\"},\"datePublished\":\"2026-04-30T15:35:37+00:00\",\"dateModified\":\"2026-04-30T15:58:44+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/feria.rauldiaz.es\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/feria.rauldiaz.es\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/feria.rauldiaz.es\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/feria.rauldiaz.es\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Inicio\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/feria.rauldiaz.es\\\/#website\",\"url\":\"https:\\\/\\\/feria.rauldiaz.es\\\/\",\"name\":\"Feria de Dos Hermanas\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/feria.rauldiaz.es\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Inicio - Feria de Dos Hermanas","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:\/\/feria.rauldiaz.es\/","og_locale":"es_ES","og_type":"article","og_title":"Inicio - Feria de Dos Hermanas","og_description":"Ra\u00fal D\u00edaz\u00b7\u00b7\u00b7 Comunicaci\u00f3n \u00b7 Feria 2026 Cuenta atr\u00e1s \u00b7\u00b7 d\u00edas 01Estrategia y fases 02Calendario editorial 03Gu\u00eda de servicios 04Programa de actuaciones Secci\u00f3n 01 \u00b7 Planificaci\u00f3n Estrategia editorialy fases de cobertura Visi\u00f3n global de las acciones de comunicaci\u00f3n. Define el tono, los objetivos por fase y la distribuci\u00f3n del contenido para maximizar el impacto, fomentar el [&hellip;]","og_url":"https:\/\/feria.rauldiaz.es\/","og_site_name":"Feria de Dos Hermanas","article_modified_time":"2026-04-30T15:58:44+00:00","twitter_card":"summary_large_image","twitter_misc":{"Tiempo de lectura":"2 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/feria.rauldiaz.es\/","url":"https:\/\/feria.rauldiaz.es\/","name":"Inicio - Feria de Dos Hermanas","isPartOf":{"@id":"https:\/\/feria.rauldiaz.es\/#website"},"datePublished":"2026-04-30T15:35:37+00:00","dateModified":"2026-04-30T15:58:44+00:00","breadcrumb":{"@id":"https:\/\/feria.rauldiaz.es\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/feria.rauldiaz.es\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/feria.rauldiaz.es\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/feria.rauldiaz.es\/"},{"@type":"ListItem","position":2,"name":"Inicio"}]},{"@type":"WebSite","@id":"https:\/\/feria.rauldiaz.es\/#website","url":"https:\/\/feria.rauldiaz.es\/","name":"Feria de Dos Hermanas","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/feria.rauldiaz.es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"}]}},"_links":{"self":[{"href":"https:\/\/feria.rauldiaz.es\/index.php?rest_route=\/wp\/v2\/pages\/7","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/feria.rauldiaz.es\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/feria.rauldiaz.es\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/feria.rauldiaz.es\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/feria.rauldiaz.es\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=7"}],"version-history":[{"count":9,"href":"https:\/\/feria.rauldiaz.es\/index.php?rest_route=\/wp\/v2\/pages\/7\/revisions"}],"predecessor-version":[{"id":19,"href":"https:\/\/feria.rauldiaz.es\/index.php?rest_route=\/wp\/v2\/pages\/7\/revisions\/19"}],"wp:attachment":[{"href":"https:\/\/feria.rauldiaz.es\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=7"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}