{"id":9210,"date":"2026-04-12T08:40:11","date_gmt":"2026-04-12T13:40:11","guid":{"rendered":"https:\/\/visitquito.ec\/?page_id=9210"},"modified":"2026-04-16T13:03:51","modified_gmt":"2026-04-16T18:03:51","slug":"conciertos-y-grandes-eventos-en-quito","status":"publish","type":"page","link":"https:\/\/visitquito.ec\/es\/conciertos-y-grandes-eventos-en-quito\/","title":{"rendered":"Conciertos y grandes eventos en Quito"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"9210\" class=\"elementor elementor-9210\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f01f6b2 e-flex e-con-boxed e-con e-parent\" data-id=\"f01f6b2\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-bc23731 elementor-widget elementor-widget-heading\" data-id=\"bc23731\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Quito <\/br> ciudad <\/br>de <\/br>Grandes<\/br>eventos\n<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-68093be e-flex e-con-boxed e-con e-parent\" data-id=\"68093be\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a2c8640 elementor-widget elementor-widget-html\" data-id=\"a2c8640\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!DOCTYPE html>\n<html lang=\"es\">\n<head>\n  <meta charset=\"UTF-8\" \/>\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" \/>\n  <title>Conciertos y festivales en Quito 2026<\/title>\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=Raleway:wght@400;500;600;700;800;900&display=swap\" rel=\"stylesheet\">\n  <style>\n    :root {\n      --accent: #22ffa5;\n      --accent-deep: #11d98a;\n      --accent-soft: rgba(34, 255, 165, .14);\n      --bg: #f3f5f4;\n      --panel: #ffffff;\n      --text: #111111;\n      --muted: #6b6f72;\n      --line: #e4e8e6;\n      --line-dark: #cfd7d3;\n      --chip: #f8faf9;\n      --shadow: 0 18px 40px rgba(17, 17, 17, .06);\n      --shadow-soft: 0 10px 20px rgba(17, 17, 17, .04);\n      --radius: 22px;\n    }\n    * { box-sizing: border-box; }\n    html { scroll-behavior: smooth; }\n    body {\n      margin: 0;\n      background:\n        radial-gradient(circle at top left, rgba(34,255,165,.12), transparent 25%),\n        linear-gradient(180deg, #f8faf9 0%, var(--bg) 100%);\n      color: var(--text);\n      font-family: 'Raleway', sans-serif;\n    }\n    a { color: inherit; }\n    .wrap {\n      max-width: 1440px;\n      margin: 0 auto;\n      padding: 24px 18px 42px;\n    }\n    .panel {\n      background: rgba(255,255,255,.88);\n      backdrop-filter: blur(8px);\n      border: 1px solid rgba(255,255,255,.65);\n      border-radius: 28px;\n      box-shadow: var(--shadow);\n      overflow: hidden;\n    }\n    .head {\n      position: relative;\n      padding: 30px 28px 10px;\n      border-bottom: 1px solid var(--line);\n      background:\n        linear-gradient(180deg, rgba(34,255,165,.08) 0%, rgba(255,255,255,.96) 70%);\n    }\n    .eyebrow {\n      display: inline-flex;\n      align-items: center;\n      gap: 8px;\n      margin-bottom: 14px;\n      padding: 8px 12px;\n      background: rgba(17,17,17,.92);\n      color: #fff;\n      border-radius: 999px;\n      font-size: 11px;\n      font-weight: 800;\n      letter-spacing: .12em;\n      text-transform: uppercase;\n    }\n    .title {\n      margin: 0 0 10px;\n      font-size: clamp(28px, 3vw, 46px);\n      line-height: 1.02;\n      font-weight: 900;\n      letter-spacing: -.03em;\n      max-width: 900px;\n    }\n    .sub {\n      margin: 0;\n      max-width: 900px;\n      font-size: 15px;\n      color: var(--muted);\n      line-height: 1.55;\n    }\n    .summary {\n      display: grid;\n      grid-template-columns: repeat(3, minmax(0, 1fr));\n      gap: 12px;\n      padding: 18px 28px 8px;\n    }\n    .summary-card {\n      background: linear-gradient(180deg, #ffffff 0%, #f9fbfa 100%);\n      border: 1px solid var(--line);\n      border-radius: 18px;\n      padding: 16px 16px 15px;\n      box-shadow: var(--shadow-soft);\n    }\n    .summary-label {\n      display: block;\n      margin-bottom: 8px;\n      font-size: 12px;\n      text-transform: uppercase;\n      letter-spacing: .08em;\n      font-weight: 800;\n      color: var(--muted);\n    }\n    .summary-value {\n      font-size: clamp(20px, 2vw, 30px);\n      font-weight: 900;\n      line-height: 1;\n      letter-spacing: -.03em;\n    }\n    .summary-help {\n      margin-top: 8px;\n      font-size: 13px;\n      color: var(--muted);\n      line-height: 1.45;\n    }\n    .controls {\n      padding: 14px 28px 12px;\n      display: grid;\n      gap: 10px;\n    }\n\n    .sub,\n    .summary,\n    .filters,\n    .notice {\n      display: none !important;\n    }\n    .tabs-wrap {\n      display: flex;\n      gap: 10px;\n      overflow-x: auto;\n      padding-bottom: 2px;\n      scrollbar-width: thin;\n    }\n    .tabs-wrap::-webkit-scrollbar { height: 6px; }\n    .tabs-wrap::-webkit-scrollbar-thumb {\n      background: rgba(17,17,17,.18);\n      border-radius: 999px;\n    }\n    .tab {\n      flex: 0 0 auto;\n      display: inline-flex;\n      align-items: center;\n      gap: 8px;\n      border: 1px solid var(--line);\n      background: var(--chip);\n      color: var(--text);\n      border-radius: 999px;\n      padding: 11px 14px;\n      font: inherit;\n      font-size: 12px;\n      font-weight: 900;\n      text-transform: uppercase;\n      cursor: pointer;\n      transition: transform .18s ease, border-color .18s ease, background .18s ease, box-shadow .18s ease;\n      white-space: nowrap;\n    }\n    .tab:hover {\n      border-color: var(--accent);\n      transform: translateY(-1px);\n      box-shadow: 0 10px 22px rgba(17,17,17,.06);\n    }\n    .tab.active {\n      background: linear-gradient(180deg, var(--accent) 0%, #b8ffd9 100%);\n      border-color: transparent;\n      box-shadow: 0 12px 26px rgba(34,255,165,.28);\n    }\n    .tab-count {\n      display: inline-flex;\n      align-items: center;\n      justify-content: center;\n      min-width: 22px;\n      height: 22px;\n      padding: 0 6px;\n      background: rgba(17,17,17,.08);\n      border-radius: 999px;\n      font-size: 11px;\n      font-weight: 900;\n    }\n    .tab.active .tab-count {\n      background: rgba(17,17,17,.14);\n    }\n    .filters {\n      display: grid;\n      grid-template-columns: minmax(0, 1.3fr) minmax(220px, .9fr);\n      gap: 12px;\n    }\n    .field {\n      position: relative;\n      display: flex;\n      align-items: center;\n      min-height: 54px;\n      border: 1px solid var(--line);\n      border-radius: 16px;\n      background: #fff;\n      box-shadow: var(--shadow-soft);\n    }\n    .field svg {\n      position: absolute;\n      left: 16px;\n      width: 18px;\n      height: 18px;\n      color: var(--muted);\n      pointer-events: none;\n    }\n    .field input,\n    .field select {\n      width: 100%;\n      min-height: 54px;\n      border: 0;\n      background: transparent;\n      outline: 0;\n      padding: 15px 16px 15px 48px;\n      font: inherit;\n      font-size: 14px;\n      color: var(--text);\n      border-radius: 16px;\n    }\n    .field select {\n      appearance: none;\n      cursor: pointer;\n      padding-right: 42px;\n    }\n    .field.select::after {\n      content: \"\u25be\";\n      position: absolute;\n      right: 16px;\n      color: var(--muted);\n      font-size: 14px;\n      pointer-events: none;\n    }\n    .meta {\n      display: flex;\n      justify-content: space-between;\n      gap: 12px;\n      align-items: center;\n      flex-wrap: wrap;\n    }\n    .meta p {\n      margin: 0;\n      color: var(--muted);\n      font-size: 14px;\n    }\n    .table-shell {\n      padding: 0 28px 10px;\n    }\n    .table-wrap {\n      border: 1px solid var(--line);\n      border-radius: 20px;\n      overflow: hidden;\n      background: #fff;\n      box-shadow: var(--shadow-soft);\n    }\n    table {\n      width: 100%;\n      border-collapse: collapse;\n      table-layout: fixed;\n    }\n    thead th {\n      padding: 14px 16px;\n      text-align: left;\n      font-size: 11.5px;\n      font-weight: 900;\n      text-transform: uppercase;\n      letter-spacing: .12em;\n      color: var(--muted);\n      border-bottom: 1px solid var(--line);\n      background: linear-gradient(180deg, #fbfcfc 0%, #f4f7f6 100%);\n      white-space: nowrap;\n    }\n    tbody tr {\n      transition: background .18s ease, transform .18s ease, box-shadow .18s ease;\n    }\n    tbody tr:nth-child(even) {\n      background: #fcfdfd;\n    }\n    tbody tr:hover {\n      background: #f7fffb;\n      box-shadow: inset 4px 0 0 var(--accent);\n    }\n    tbody td {\n      padding: 14px 16px;\n      font-size: 14px;\n      border-bottom: 1px solid #eef1ef;\n      vertical-align: middle;\n    }\n    tbody tr:last-child td {\n      border-bottom: 0;\n    }\n    .date-cell,\n    .time-cell,\n    .link-cell {\n      text-align: center;\n      vertical-align: middle;\n    }\n    .date-text {\n      display: inline-block;\n      font-family: 'Raleway', sans-serif;\n      font-size: 20px;\n      font-weight: 800;\n      color: #111111;\n      line-height: 1.1;\n      letter-spacing: -0.02em;\n      white-space: nowrap;\n    }\n    .artist {\n      font-weight: 900;\n      font-size: 15px;\n      line-height: 1.15;\n      margin-bottom: 2px;\n      letter-spacing: -.01em;\n    }\n    .tour {\n      color: var(--muted);\n      font-size: 12.5px;\n      line-height: 1.35;\n      white-space: nowrap;\n      overflow: hidden;\n      text-overflow: ellipsis;\n    }\n    .venue {\n      font-weight: 800;\n      white-space: nowrap;\n      overflow: hidden;\n      text-overflow: ellipsis;\n    }\n    .more {\n      display: inline-flex;\n      align-items: center;\n      justify-content: center;\n      gap: 8px;\n      text-decoration: none;\n      color: #111;\n      font-weight: 900;\n      padding: 11px 14px;\n      border-radius: 999px;\n      border: 1px solid transparent;\n      transition: background .18s ease, border-color .18s ease, transform .18s ease;\n      margin: 0 auto;\n    }\n    .more svg {\n      width: 16px;\n      height: 16px;\n      flex: none;\n    }\n    .more:hover {\n      background: var(--accent-soft);\n      border-color: rgba(34,255,165,.4);\n      transform: translateY(-1px);\n    }\n    .meta {\n      display: flex;\n      align-items: center;\n      justify-content: space-between;\n      gap: 12px;\n    }\n    .footerbar {\n      padding: 10px 28px 26px;\n      display: flex;\n      justify-content: space-between;\n      align-items: center;\n      gap: 14px;\n      flex-wrap: wrap;\n    }\n    .pager-info {\n      color: var(--muted);\n      font-size: 14px;\n    }\n    .pagination {\n      display: flex;\n      gap: 8px;\n      flex-wrap: wrap;\n    }\n    .page-btn {\n      min-width: 44px;\n      height: 42px;\n      padding: 0 14px;\n      border-radius: 12px;\n      border: 1px solid var(--line);\n      background: #fff;\n      font: inherit;\n      font-weight: 900;\n      cursor: pointer;\n      transition: transform .18s ease, border-color .18s ease, background .18s ease;\n    }\n    .page-btn:hover:not(:disabled) {\n      transform: translateY(-1px);\n      border-color: var(--accent);\n    }\n    .page-btn.active {\n      background: linear-gradient(180deg, var(--accent) 0%, #b6ffd8 100%);\n      border-color: transparent;\n    }\n    .page-btn:disabled {\n      opacity: .45;\n      cursor: not-allowed;\n    }\n    .empty {\n      display: none;\n      margin: 0 28px 18px;\n      padding: 18px;\n      border: 1px dashed var(--line-dark);\n      border-radius: 16px;\n      background: #fbfbfb;\n      color: var(--muted);\n      font-weight: 700;\n    }\n    .notice {\n      margin: 0;\n      padding: 0 28px 28px;\n      color: var(--muted);\n      font-size: 13px;\n      line-height: 1.5;\n    }\n\n    @media (max-width: 991px) {\n      .summary {\n        grid-template-columns: 1fr;\n      }\n      .filters {\n        grid-template-columns: 1fr;\n      }\n      .date-pill {\n        min-width: 110px;\n      }\n    }\n\n    @media (max-width: 767px) {\n      .wrap {\n        padding: 12px 10px 24px;\n      }\n      .panel {\n        border-radius: 22px;\n      }\n      .head,\n      .controls,\n      .table-shell,\n      .footerbar,\n      .notice {\n        padding-left: 14px;\n        padding-right: 14px;\n      }\n      .summary {\n        padding: 14px 14px 6px;\n      }\n      .title {\n        font-size: 31px;\n      }\n      .sub,\n      .meta p,\n      .pager-info {\n        font-size: 13px;\n      }\n      .table-wrap {\n        border-radius: 16px;\n        overflow: visible;\n        border: 0;\n        background: transparent;\n        box-shadow: none;\n      }\n      table,\n      thead,\n      tbody,\n      tr,\n      td {\n        display: block;\n        width: 100%;\n      }\n      thead {\n        display: none;\n      }\n      tbody {\n        display: grid;\n        gap: 12px;\n      }\n      tbody tr {\n        background: #fff !important;\n        border: 1px solid var(--line);\n        border-radius: 18px;\n        box-shadow: var(--shadow-soft);\n        padding: 14px;\n      }\n      tbody tr:hover {\n        box-shadow: var(--shadow-soft);\n      }\n      tbody td {\n        border: 0;\n        padding: 0;\n      }\n      td.time-cell {\n        display: none;\n      }\n      td.date-cell {\n        margin-bottom: 12px;\n      }\n      td.artist-cell {\n        margin-bottom: 8px;\n      }\n      td.tour-cell {\n        margin-bottom: 8px;\n      }\n      td.venue-cell {\n        margin-bottom: 12px;\n      }\n      .date-pill {\n        min-width: 0;\n      }\n      .artist {\n        font-size: 18px;\n      }\n      .tour,\n      .venue {\n        white-space: normal;\n        overflow: visible;\n        text-overflow: initial;\n        font-size: 13px;\n        line-height: 1.45;\n      }\n      .mobile-meta {\n        display: flex;\n        align-items: center;\n        justify-content: space-between;\n        gap: 10px;\n        margin-top: 12px;\n        flex-wrap: wrap;\n      }\n      .link-cell .more {\n        padding-left: 0;\n        padding-right: 0;\n      }\n      .meta {\n      display: flex;\n      align-items: center;\n      justify-content: space-between;\n      gap: 12px;\n    }\n    .footerbar {\n        align-items: flex-start;\n      }\n      .pagination {\n        width: 100%;\n      }\n      .page-btn {\n        min-width: 40px;\n        height: 40px;\n      }\n    }\n  \n    .event-date-inline{\n      font-size: 18px;\n      font-weight: 800;\n      letter-spacing: -.02em;\n      line-height: 1.1;\n      white-space: nowrap;\n    }\n    .table td.col-fecha,\n    .table th.col-fecha{\n      width: 16%;\n      min-width: 150px;\n    }\n    .table td.col-masinfo,\n    .table th.col-masinfo{\n      width: 11%;\n      min-width: 120px;\n      text-align: center;\n    }\n    .info-link{\n      display: inline-flex;\n      align-items: center;\n      justify-content: center;\n      gap: 8px;\n      width: 100%;\n      text-align: center;\n    }\n\n  \n    .event-date-inline{\n      display: inline-block !important;\n      font-family: 'Raleway', sans-serif !important;\n      font-size: 20px !important;\n      font-weight: 800 !important;\n      color: #111111 !important;\n      line-height: 1.1 !important;\n      letter-spacing: -0.02em !important;\n      white-space: nowrap !important;\n      text-transform: none !important;\n      background: transparent !important;\n      padding: 0 !important;\n      border: 0 !important;\n      border-radius: 0 !important;\n      box-shadow: none !important;\n    }\n\n<\/style>\n<\/head>\n<body>\n  <section class=\"wrap\">\n    <div class=\"panel\">\n      <div class=\"head\">\n        <div class=\"eyebrow\">Agenda 2026 \u00b7 Quito<\/div>\n        <h1 class=\"title\">Conciertos y festivales en Quito 2026<\/h1>\n        \n      <\/div>\n\n      <div class=\"controls\">\n        <div class=\"tabs-wrap\" id=\"monthTabs\"><\/div>\n\n        <div class=\"meta\">\n          <p id=\"activeMonthLabel\">Mostrando: todos<\/p>\n          <p id=\"resultsLabel\"><\/p>\n        <\/div>\n      <\/div>\n\n      <div class=\"table-shell\">\n        <div class=\"table-wrap\">\n          <table>\n            <thead>\n              <tr>\n                <th style=\"width:18%\">Fecha<\/th>\n                <th style=\"width:8%\">Hora<\/th>\n                <th style=\"width:26%\">Artista \/ festival<\/th>\n                <th style=\"width:30%\">Tour \/ detalle<\/th>\n                <th style=\"width:18%\">Lugar<\/th>\n                <th style=\"width:12%\">M\u00e1s Info.<\/th>\n              <\/tr>\n            <\/thead>\n            <tbody id=\"concertTableBody\"><\/tbody>\n          <\/table>\n        <\/div>\n      <\/div>\n\n      <div class=\"empty\" id=\"emptyState\">No hay conciertos disponibles con los filtros seleccionados.<\/div>\n\n      <div class=\"footerbar\">\n        <div class=\"pager-info\" id=\"pagerInfo\"><\/div>\n        <div class=\"pagination\" id=\"pagination\"><\/div>\n      <\/div>\n\n      <p class=\"notice\">En escritorio, cada concierto se mantiene en una sola l\u00ednea. En m\u00f3vil, cada fila se reorganiza en una tarjeta m\u00e1s legible para conservar toda la informaci\u00f3n sin comprimir el contenido.<\/p>\n    <\/div>\n  <\/section>\n\n  <script>\n    const concertData = [{\"date\": \"2026-01-23\", \"time\": \"20:00\", \"artist\": \"Santiago Cruz\", \"tour\": \"Concierto en Quito 2026\", \"venue\": \"Teatro Nacional CCE\", \"source\": \"https:\/\/www.ticketshow.com.ec\/evento\/Santiago-Cruz-QUITO-2026\", \"sourceName\": \"TicketShow\"}, {\"date\": \"2026-03-07\", \"time\": \"19:00\", \"artist\": \"Festival del Vallenato 25\", \"tour\": \"Hebert Vargas, Alex Manga, Los Inquietos y Alejandro Palacios\", \"venue\": \"Plaza de Toros Quito\", \"source\": \"https:\/\/www.ticketmas.com.ec\/event-details\/festival-del-vallenato-25-quito\", \"sourceName\": \"TicketM\u00e1s\"}, {\"date\": \"2026-03-12\", \"time\": \"20:00\", \"artist\": \"Kudai y Kiruba\", \"tour\": \"Concierto en Quito 2026\", \"venue\": \"Coliseo General Rumi\u00f1ahui\", \"source\": \"https:\/\/topshows.ec\/shows\/kudai-kiruba\/\", \"sourceName\": \"Top Shows\"}, {\"date\": \"2026-03-19\", \"time\": \"20:30\", \"artist\": \"Pablo Albor\u00e1n\", \"tour\": \"Km0\", \"venue\": \"Coliseo General Rumi\u00f1ahui\", \"source\": \"https:\/\/www.ticketshow.com.ec\/evento\/Pablo-Albor%C3%A1n-en-Quito-Quito\", \"sourceName\": \"TicketShow\"}, {\"date\": \"2026-03-27\", \"time\": \"19:00\", \"artist\": \"SNAP!\", \"tour\": \"LIVE THE 90'S - Quito, Ecuador\", \"venue\": \"Plaza de Toros Quito\", \"source\": \"https:\/\/open.spotify.com\/concert\/5dgRGNVsLJeLrpTykY9brb\", \"sourceName\": \"Spotify\"}, {\"date\": \"2026-04-14\", \"time\": \"18:00\", \"artist\": \"Nach\", \"tour\": \"Concierto en Quito 2026\", \"venue\": \"Quito Exhibition Center\", \"source\": \"https:\/\/music.apple.com\/us\/concerts\/ce.f42eac5c-0a20-418f-96b0-d1360b411d68\", \"sourceName\": \"Apple Music\"}, {\"date\": \"2026-04-17\", \"time\": \"18:00\", \"artist\": \"Festival Herencia Viva\", \"tour\": \"Illapu, Kala Marka, Los Nocheros, Diableros Juje\u00f1os y Jarawi\", \"venue\": \"Plaza de Toros Quito\", \"source\": \"https:\/\/ticketexito.com\/events\/herenciaviva-quito\", \"sourceName\": \"Ticket \u00c9xito\"}, {\"date\": \"2026-04-17\", \"time\": \"20:00\", \"artist\": \"Covi Quintana\", \"tour\": \"Concierto en Quito 2026\", \"venue\": \"Centro de Exposiciones Quito\", \"source\": \"https:\/\/www.songkick.com\/es\/concerts\/43058320-covi-quintana-at-centro-de-exposiciones-quito\", \"sourceName\": \"Songkick\"}, {\"date\": \"2026-04-18\", \"time\": \"18:00\", \"artist\": \"El Mundial del Vallenato 2\", \"tour\": \"Festival con Hebert Vargas, Jean Carlos Centeno, Luis Mateus, Adriana Luc\u00eda y Los Embajadores\", \"venue\": \"Coliseo Rumi\u00f1ahui\", \"source\": \"https:\/\/elmundialdelvallenato.com\/\", \"sourceName\": \"Sitio oficial\"}, {\"date\": \"2026-04-18\", \"time\": \"18:00\", \"artist\": \"Hebert Vargas\", \"tour\": \"Participaci\u00f3n en El Mundial del Vallenato 2\", \"venue\": \"Coliseo Rumi\u00f1ahui\", \"source\": \"https:\/\/www.shazam.com\/es-es\/event\/42e3a134-99df-4522-951d-370505842422\", \"sourceName\": \"Shazam\"}, {\"date\": \"2026-04-22\", \"time\": \"20:00\", \"artist\": \"Non Servium\", \"tour\": \"Vuelve a Quito\", \"venue\": \"Centro de Exposiciones Quito\", \"source\": \"https:\/\/www.buenplan.com.ec\/event\/non-servium-2026-quito\", \"sourceName\": \"BuenPlan\"}, {\"date\": \"2026-04-23\", \"time\": \"21:00\", \"artist\": \"Daniel Toledo\", \"tour\": \"Concierto en Quito 2026\", \"venue\": \"Teatro Nacional Sucre\", \"source\": \"https:\/\/open.spotify.com\/concert\/7pEvP54NtvuIV800cECCiL\", \"sourceName\": \"Spotify\"}, {\"date\": \"2026-04-24\", \"time\": \"20:00\", \"artist\": \"Laura Pausini\", \"tour\": \"Yo Canto World Tour 2026\", \"venue\": \"Coliseo General Rumi\u00f1ahui\", \"source\": \"https:\/\/www.ticketshow.com.ec\/evento\/Laura-Pausini-Quito-2026\", \"sourceName\": \"TicketShow\"},{\"date\": \"2026-04-24\", \"time\": \"20:00\", \"artist\": \"Pablo Olivares\", \"tour\": \"Noche de Alabanza y Adoraci\u00f3n\", \"venue\": \"Teatro Edificio de las C\u00e1maras\", \"source\": \"https:\/\/www.ticketstar365.com\/ticket2\/index.php?modulo=publicacion&con=1758\", \"sourceName\": \"TicketStar365\"}, {\"date\": \"2026-04-24\", \"time\": \"21:00\", \"artist\": \"Daniel Toledo\", \"tour\": \"Concierto en Quito 2026\", \"venue\": \"Teatro Nacional Sucre\", \"source\": \"https:\/\/music.apple.com\/ec\/concerts\/ce.a510d5ca-8987-4956-ae69-3d2b63fa5a5f\", \"sourceName\": \"Apple Music\"}, {\"date\": \"2026-04-25\", \"time\": \"21:00\", \"artist\": \"Daniel Toledo\", \"tour\": \"Concierto en Quito 2026\", \"venue\": \"Teatro Nacional Sucre\", \"source\": \"https:\/\/www.shazam.com\/es-es\/event\/4e0e0430-d16e-4962-aa98-6e64b88f088e\", \"sourceName\": \"Shazam\"}, {\"date\": \"2026-04-30\", \"time\": \"20:00\", \"artist\": \"Steve Aoki\", \"tour\": \"Monster Music Festival 2026\", \"venue\": \"Arena Top Media\", \"source\": \"https:\/\/www.teleamazonas.com\/tendencias\/entretenimiento\/dj-steve-aoki-llega-quito-abril-2026-festival-monster-music-109995\/\", \"sourceName\": \"Teleamazonas\"}, {\"date\": \"2026-04-30\", \"time\": \"20:00\", \"artist\": \"The Capo Mc 07\", \"tour\": \"Back To School Bway\", \"venue\": \"Parque Bicentenario de Quito\", \"source\": \"https:\/\/www.songkick.com\/es\/concerts\/43140980-capo-mc-07-at-parque-bicentenario-de-quito\", \"sourceName\": \"Songkick\"}, {\"date\": \"2026-04-30\", \"time\": \"20:30\", \"artist\": \"Sebasti\u00e1n Yatra\", \"tour\": \"Entre tanta gente Tour\", \"venue\": \"Coliseo General Rumi\u00f1ahui\", \"source\": \"https:\/\/www.ticketshow.com.ec\/evento\/Sebastian-Yatra-Quito-2026\", \"sourceName\": \"TicketShow\"}, {\"date\": \"2026-05-02\", \"time\": \"14:30\", \"artist\": \"Kadosh Punk\", \"tour\": \"Concierto en Quito 2026\", \"venue\": \"El Pan\u00f3ptico Casa de Arte\", \"source\": \"https:\/\/open.spotify.com\/concert\/37HZmNdWICTGbUJgKo9XvX\", \"sourceName\": \"Spotify\"}, {\"date\": \"2026-05-02\", \"time\": \"18:00\", \"artist\": \"J Quiles y Lenny Tav\u00e1rez\", \"tour\": \"Superarte\", \"venue\": \"Coliseo General Rumi\u00f1ahui\", \"source\": \"https:\/\/www.ticketshow.com.ec\/evento\/Jquiles-y-Lenny-Tavares-Superarte-QUITO-2026\", \"sourceName\": \"TicketShow\"}, {\"date\": \"2026-05-02\", \"time\": \"19:00\", \"artist\": \"Evaristo\", \"tour\": \"Concierto en Quito 2026\", \"venue\": \"Plaza de Toros Quito\", \"source\": \"https:\/\/www.ticketshow.com.ec\/evento\/EVARISTO-QUITO-2026\", \"sourceName\": \"TicketShow\"}, {\"date\": \"2026-05-06\", \"time\": \"20:00\", \"artist\": \"Portugal. The Man\", \"tour\": \"Concierto en Quito 2026\", \"venue\": \"SoundGarden UIO\", \"source\": \"https:\/\/www.songkick.com\/es\/concerts\/43013730-portugal-the-man-at-soundgarden-uio\", \"sourceName\": \"Songkick\"}, {\"date\": \"2026-05-07\", \"time\": \"20:00\", \"artist\": \"Alberto Plaza\", \"tour\": \"Show Exclusivo\", \"venue\": \"Casa de la M\u00fasica\", \"source\": \"https:\/\/www.buenplan.com.ec\/event\/alberto-plaza-show-exclusivo-2026-quito\", \"sourceName\": \"BuenPlan\"}, {\"date\": \"2026-05-08\", \"time\": \"20:00\", \"artist\": \"Beret\", \"tour\": \"Concierto en Quito 2026\", \"venue\": \"Teatro Nacional C.C.E.\", \"source\": \"https:\/\/www.songkick.com\/es\/concerts\/43113375-beret-at-teatro-nacional-cce\", \"sourceName\": \"Songkick\"}, {\"date\": \"2026-05-09\", \"time\": \"19:30\", \"artist\": \"MIEL\", \"tour\": \"Artista invitado en el concierto de The Lumineers\", \"venue\": \"Arena Top Media\", \"source\": \"https:\/\/www.instagram.com\/p\/DW7JQiADHz4\/\", \"sourceName\": \"Instagram\"}, {\"date\": \"2026-05-09\", \"time\": \"20:00\", \"artist\": \"C.R.O\", \"tour\": \"Otra Vez en Tus Ruinas World Tour\", \"venue\": \"Centro de Exposiciones Quito\", \"source\": \"https:\/\/www.buenplan.com.ec\/event\/cro-2026-quito\", \"sourceName\": \"BuenPlan\"}, {\"date\": \"2026-05-09\", \"time\": \"20:00\", \"artist\": \"El Cuarteto de Nos\", \"tour\": \"Tour Puertas\", \"venue\": \"Coliseo General Rumi\u00f1ahui\", \"source\": \"https:\/\/music.apple.com\/us\/concerts\/ce.7e788e06-d04e-48ea-b2f8-609c119dd737\", \"sourceName\": \"Apple Music\"}, {\"date\": \"2026-05-09\", \"time\": \"20:00\", \"artist\": \"God Save The Queen\", \"tour\": \"World Tour 2026\", \"venue\": \"Teatro \u00c1gora CCE\", \"source\": \"https:\/\/www.ticketshow.com.ec\/evento\/God-Save-The-Queen-Quito-2026\", \"sourceName\": \"TicketShow\"}, {\"date\": \"2026-05-09\", \"time\": \"20:00\", \"artist\": \"Mujeres a la Plancha + Roberto Rub\u00e9n Rodr\u00edguez\", \"tour\": \"Concierto en Quito 2026\", \"venue\": \"Quorum Paseo San Francisco\", \"source\": \"https:\/\/www.buenplan.com.ec\/event\/mujeres-a-la-plancha-2026-quito\", \"sourceName\": \"BuenPlan\"}, {\"date\": \"2026-05-09\", \"time\": \"20:00\", \"artist\": \"Pxndx Vive + Desierto Drive\", \"tour\": \"Concierto en Quito 2026\", \"venue\": \"Club La Campi\u00f1a\", \"source\": \"https:\/\/sale.ticketshow.com.ec\/rps\/synopsis.aspx?evento=8995&nombreEvento=Panda_Vive_y_Desierto_Drive_-_Quito_2026\", \"sourceName\": \"TicketShow\"}, {\"date\": \"2026-05-09\", \"time\": \"20:00\", \"artist\": \"The Lumineers\", \"tour\": \"The Automatic World Tour\", \"venue\": \"Arena Top Media\", \"source\": \"https:\/\/www.primicias.ec\/entretenimiento\/musica\/concierto-the-lumineers-quito-fecha-entradas-feel-tickets-114724\/\", \"sourceName\": \"Primicias\"}, {\"date\": \"2026-05-12\", \"time\": \"20:00\", \"artist\": \"Mon Laferte\", \"tour\": \"Femme Fatale Tour\", \"venue\": \"Parque Bicentenario de Quito\", \"source\": \"https:\/\/sale.ticketshow.com.ec\/rps\/synopsis.aspx?evento=8970&nombreEvento=Mon_Laferte_Femme_Fatale_Tour_-_Quito_2026\", \"sourceName\": \"TicketShow\"}, {\"date\": \"2026-05-15\", \"time\": \"20:00\", \"artist\": \"Elena Rose\", \"tour\": \"Concierto en Quito 2026\", \"venue\": \"Casa de la Cultura Ecuatoriana\", \"source\": \"https:\/\/music.apple.com\/us\/concerts\/ce.9c8fc797-b95a-4a82-bebc-3be5dc18cead\", \"sourceName\": \"Apple Music\"}, {\"date\": \"2026-05-15\", \"time\": \"20:00\", \"artist\": \"Magneto y Mercurio\", \"tour\": \"Concierto en Quito 2026\", \"venue\": \"Quito Plaza de Toros Monumental\", \"source\": \"https:\/\/www.songkick.com\/es\/concerts\/43153218-magneto-at-quito-plaza-de-toros-monumental\", \"sourceName\": \"Songkick\"}, {\"date\": \"2026-05-16\", \"time\": \"20:30\", \"artist\": \"Soda Stereo\", \"tour\": \"Concierto en Quito 2026\", \"venue\": \"Coliseo General Rumi\u00f1ahui\", \"source\": \"https:\/\/www.ticketshow.com.ec\/evento\/Soda-Stereo-Quito-2026\", \"sourceName\": \"TicketShow\"}, {\"date\": \"2026-05-17\", \"time\": \"11:00\", \"artist\": \"Lux Eterna\", \"tour\": \"Concierto por la Paz\", \"venue\": \"Teatro Bol\u00edvar\", \"source\": \"https:\/\/sale.ticketshow.com.ec\/rps\/synopsis.aspx?evento=9015&nombreEvento=Lux_Eterna_Sinfonia_Quito_2026\", \"sourceName\": \"TicketShow\"}, {\"date\": \"2026-05-21\", \"time\": \"20:00\", \"artist\": \"Ricardo Montaner\", \"tour\": \"Concierto en Quito 2026\", \"venue\": \"Coliseo General Rumi\u00f1ahui\", \"source\": \"https:\/\/www.songkick.com\/es\/concerts\/42886525-ricardo-montaner-at-coliseo-general-ruminahui\", \"sourceName\": \"Songkick\"}, {\"date\": \"2026-05-23\", \"time\": \"19:00\", \"artist\": \"RUGGERO\", \"tour\": \"La Dolce Vita Tour\", \"venue\": \"Auditorio de la C\u00e1mara de Comercio de Quito\", \"source\": \"https:\/\/www.buenplan.com.ec\/event\/ruggero-2026-quito\", \"sourceName\": \"BuenPlan\"}, {\"date\": \"2026-05-23\", \"time\": \"20:00\", \"artist\": \"Ed Sheeran\", \"tour\": \"Loop Tour\", \"venue\": \"Estadio Ol\u00edmpico Atahualpa\", \"source\": \"https:\/\/music.apple.com\/us\/concerts\/ce.93cb6612-15f4-438e-89ed-a25fd7fd97a8\", \"sourceName\": \"Apple Music\"}, {\"date\": \"2026-05-29\", \"time\": \"20:00\", \"artist\": \"No Te Va Gustar\", \"tour\": \"Concierto en Quito 2026\", \"venue\": \"Teatro San Gabriel\", \"source\": \"https:\/\/www.songkick.com\/es\/concerts\/42909644-no-te-va-gustar-at-teatro-san-gabriel\", \"sourceName\": \"Songkick\"}, {\"date\": \"2026-05-30\", \"time\": \"19:00\", \"artist\": \"Pizza Fest 2026\", \"tour\": \"Bacilos, Lalo Ebratt, Renn y Mach\", \"venue\": \"Parque Bicentenario de Quito\", \"source\": \"https:\/\/music.apple.com\/us\/concerts\/ce.46b7b373-51b8-4bc3-8275-75de97a5f8cb\", \"sourceName\": \"Apple Music\"}, {\"date\": \"2026-06-02\", \"time\": \"20:00\", \"artist\": \"Natalia Lafourcade\", \"tour\": \"Concierto en Quito 2026\", \"venue\": \"Teatro \u00c1gora CCE\", \"source\": \"https:\/\/www.songkick.com\/es\/concerts\/42943281-natalia-lafourcade-at-teatro-agora-cce\", \"sourceName\": \"Songkick\"}, {\"date\": \"2026-06-04\", \"time\": \"20:00\", \"artist\": \"Verde 70\", \"tour\": \"Fulgorama Tour\", \"venue\": \"\u00c1gora Casa de la Cultura Ecuatoriana\", \"source\": \"https:\/\/sale.ticketshow.com.ec\/rps\/synopsis.aspx?evento=9001&nombreEvento=VERDE-70-FULGORAMA-TOUR-QUITO-2026\", \"sourceName\": \"TicketShow\"}, {\"date\": \"2026-06-05\", \"time\": \"20:00\", \"artist\": \"Bandalos Chinos\", \"tour\": \"V\u00e1ndalos Tour\", \"venue\": \"Quito\", \"source\": \"https:\/\/www.buenplan.com.ec\/\", \"sourceName\": \"BuenPlan\"}, {\"date\": \"2026-06-06\", \"time\": \"20:00\", \"artist\": \"Tygers of Pan Tang\", \"tour\": \"Concierto en Quito 2026\", \"venue\": \"Orion Club\", \"source\": \"https:\/\/www.songkick.com\/es\/concerts\/43098374-tygers-of-pan-tang-at-orion-club\", \"sourceName\": \"Songkick\"}, {\"date\": \"2026-06-07\", \"time\": \"20:00\", \"artist\": \"Usted Se\u00f1alemelo\", \"tour\": \"Concierto en Quito 2026\", \"venue\": \"SoundGarden UIO\", \"source\": \"https:\/\/www.songkick.com\/es\/concerts\/43113406-usted-senalemelo-at-soundgarden-uio\", \"sourceName\": \"Songkick\"}, {\"date\": \"2026-06-12\", \"time\": \"19:30\", \"artist\": \"Alex Ponce\", \"tour\": \"La \u00daltima Noche\", \"venue\": \"Teatro San Gabriel\", \"source\": \"https:\/\/open.spotify.com\/concert\/0Zidl96ZIrqOLzK4Ii2Jcz\", \"sourceName\": \"Spotify\"}, {\"date\": \"2026-06-18\", \"time\": \"20:00\", \"artist\": \"Sin Bandera\", \"tour\": \"Concierto en Quito 2026\", \"venue\": \"Coliseo General Rumi\u00f1ahui\", \"source\": \"https:\/\/music.apple.com\/us\/concerts\/ce.4a2cd180-de6c-4dcd-bd16-cf8e255d44f4\", \"sourceName\": \"Apple Music\"}, {\"date\": \"2026-07-03\", \"time\": \"20:00\", \"artist\": \"Sexores\", \"tour\": \"Concierto en Quito 2026\", \"venue\": \"The Cat Cave\", \"source\": \"https:\/\/www.songkick.com\/es\/concerts\/43137166-sexores-at-cat-cave\", \"sourceName\": \"Songkick\"}, {\"date\": \"2026-07-04\", \"time\": \"21:00\", \"artist\": \"Matute\", \"tour\": \"Disco Stereo Tour\", \"venue\": \"Arena Top Media\", \"source\": \"https:\/\/open.spotify.com\/concert\/3xv7JPEVQRRzLc4fsBD6M6\", \"sourceName\": \"Spotify\"}, {\"date\": \"2026-07-10\", \"time\": \"20:00\", \"artist\": \"Liv Kristine\", \"tour\": \"Ethereal y Don Craneos\", \"venue\": \"Miami Convenciones y Eventos\", \"source\": \"https:\/\/www.songkick.com\/es\/concerts\/43107159-liv-kristine-at-miami-convenciones-y-eventos\", \"sourceName\": \"Songkick\"}, {\"date\": \"2026-07-17\", \"time\": \"20:00\", \"artist\": \"Kany Garc\u00eda\", \"tour\": \"Tour 2026\", \"venue\": \"Coliseo General Rumi\u00f1ahui\", \"source\": \"https:\/\/www.buenplan.com.ec\/event\/kany-garcia-quito-2026\", \"sourceName\": \"BuenPlan\"}, {\"date\": \"2026-07-30\", \"time\": \"20:00\", \"artist\": \"Arc\u00e1ngel\", \"tour\": \"Concierto en Quito 2026\", \"venue\": \"Coliseo General Rumi\u00f1ahui\", \"source\": \"https:\/\/www.songkick.com\/es\/concerts\/43084648-arcangel-at-coliseo-general-ruminahui\", \"sourceName\": \"Songkick\"}, {\"date\": \"2026-08-06\", \"time\": \"20:00\", \"artist\": \"Ricardo Arjona\", \"tour\": \"Concierto en Quito 2026\", \"venue\": \"Estadio Ol\u00edmpico Atahualpa\", \"source\": \"https:\/\/www.songkick.com\/es\/concerts\/42943280-ricardo-arjona-at-estadio-olimpico-atahualpa\", \"sourceName\": \"Songkick\"}, {\"date\": \"2026-08-27\", \"time\": \"20:30\", \"artist\": \"Rawayana\", \"tour\": \"\u00bfD\u00f3nde es el After? Tour\", \"venue\": \"Coliseo General Rumi\u00f1ahui\", \"source\": \"https:\/\/www.ticketshow.com.ec\/evento\/RAWAYANA-QUITO-2026\", \"sourceName\": \"TicketShow\"}, {\"date\": \"2026-08-29\", \"time\": \"18:00\", \"artist\": \"FTC Live al Parque 2026\", \"tour\": \"MAROON 5 \u2219 YANDEL SINF\u00d3NICO \u2219 MYKE TOWERS \u2219 LOST FREQUENCIES \u2219 FRUKO Y SUS TESOS\", \"venue\": \"Parque Bicentenario de Quito\", \"source\": \"https:\/\/www.songkick.com\/es\/festivals\/3780332-ftc-live-al-parque\/id\/43154938-ftc-live-al-parque-2026\", \"sourceName\": \"Songkick\"}, {\"date\": \"2026-09-03\", \"time\": \"20:00\", \"artist\": \"Carlos Vives\", \"tour\": \"Tour al Sol\", \"venue\": \"Coliseo General Rumi\u00f1ahui\", \"source\": \"https:\/\/www.ticketshow.com.ec\/evento\/CARLOS-VIVES-QUITO-2026\", \"sourceName\": \"TicketShow\"}, {\"date\": \"2026-09-11\", \"time\": \"20:00\", \"artist\": \"NASA Histoires\", \"tour\": \"D\u00edas Malos Tour\", \"venue\": \"Teatro San Gabriel\", \"source\": \"https:\/\/open.spotify.com\/concert\/1kqEH8hvCY8CIa1uYbcP02\", \"sourceName\": \"Spotify\"}, {\"date\": \"2026-09-17\", \"time\": \"20:00\", \"artist\": \"Andr\u00e9s Cepeda\", \"tour\": \"Nuestra vida en canciones\", \"venue\": \"Coliseo General Rumi\u00f1ahui\", \"source\": \"https:\/\/www.ticketshow.com.ec\/evento\/ANDRES-CEPEDA-QUITO-2026\", \"sourceName\": \"TicketShow\"}, {\"date\": \"2026-09-23\", \"time\": \"20:00\", \"artist\": \"Sonata Arctica\", \"tour\": \"30th Anniversary Tour + Blacksun + Kill City\", \"venue\": \"Teatro San Gabriel\", \"source\": \"https:\/\/www.songkick.com\/es\/concerts\/43079231-sonata-arctica-at-teatro-san-gabriel\", \"sourceName\": \"Songkick\"}, {\"date\": \"2026-09-30\", \"time\": \"20:00\", \"artist\": \"This Is Michael\", \"tour\": \"Espect\u00e1culo homenaje a Michael Jackson\", \"venue\": \"Teatro Nacional CCE\", \"source\": \"https:\/\/www.ticketshow.com.ec\/evento\/QUITO-THIS-IS-MICHAEL-2026\", \"sourceName\": \"TicketShow\"}, {\"date\": \"2026-10-09\", \"time\": \"20:00\", \"artist\": \"Grupo Frontera\", \"tour\": \"Concierto en Quito 2026\", \"venue\": \"Coliseo General Rumi\u00f1ahui\", \"source\": \"https:\/\/www.songkick.com\/es\/concerts\/42943273-grupo-frontera-at-coliseo-general-ruminahui\", \"sourceName\": \"Songkick\"}, {\"date\": \"2026-10-14\", \"time\": \"19:30\", \"artist\": \"The Raven Age\", \"tour\": \"Invitado especial de Iron Maiden\", \"venue\": \"Estadio Ol\u00edmpico Atahualpa\", \"source\": \"https:\/\/www.buenplan.com.ec\/ironmaiden\", \"sourceName\": \"BuenPlan\"}, {\"date\": \"2026-10-14\", \"time\": \"21:00\", \"artist\": \"Iron Maiden\", \"tour\": \"Run For Your Lives World Tour\", \"venue\": \"Estadio Ol\u00edmpico Atahualpa\", \"source\": \"https:\/\/www.buenplan.com.ec\/ironmaiden\", \"sourceName\": \"BuenPlan\"}, {\"date\": \"2026-10-24\", \"time\": \"20:00\", \"artist\": \"Humbe\", \"tour\": \"Due\u00f1o del Cielo Tour\", \"venue\": \"Coliseo General Rumi\u00f1ahui\", \"source\": \"https:\/\/www.ticketshow.com.ec\/evento\/Humbe-en-Quito-2026\", \"sourceName\": \"TicketShow\"}, {\"date\": \"2026-11-06\", \"time\": \"20:30\", \"artist\": \"Alejandro Fern\u00e1ndez\", \"tour\": \"De Rey a Rey\", \"venue\": \"Coliseo General Rumi\u00f1ahui\", \"source\": \"https:\/\/www.ticketshow.com.ec\/evento\/Alejandro-Fernandez-en-Quito-Quito\", \"sourceName\": \"TicketShow\"}];\n    const rowsPerPage = 5;\n    const monthNames = [\"enero\", \"febrero\", \"marzo\", \"abril\", \"mayo\", \"junio\", \"julio\", \"agosto\", \"septiembre\", \"octubre\", \"noviembre\", \"diciembre\"];\n\n    let activeMonth = 'todos';\n    let currentPage = 1;\n\n    const tabsContainer = document.getElementById('monthTabs');\n    const tableBody = document.getElementById('concertTableBody');\n    const emptyState = document.getElementById('emptyState');\n    const monthLabelEl = document.getElementById('activeMonthLabel');\n    const resultsLabelEl = document.getElementById('resultsLabel');\n    const pagerInfoEl = document.getElementById('pagerInfo');\n    const paginationEl = document.getElementById('pagination');\n\n    function parseLocalDate(dateStr) {\n      const [year, month, day] = dateStr.split('-').map(Number);\n      return new Date(year, month - 1, day, 23, 59, 59, 999);\n    }\n\n    function getMonthIndex(dateStr) {\n      const [, month] = dateStr.split('-').map(Number);\n      return month - 1;\n    }\n\n    function monthShort(dateStr) {\n      const monthIndex = getMonthIndex(dateStr);\n      return monthNames[monthIndex].slice(0, 3);\n    }\n\n    function formatDate(dateStr) {\n      const [year, month, day] = dateStr.split('-').map(Number);\n      return `${String(day).padStart(2, '0')}\/${String(month).padStart(2, '0')}\/${year}`;\n    }\n\n    function upcomingEvents() {\n      const now = new Date();\n      return concertData\n        .filter(item => parseLocalDate(item.date).getTime() >= now.getTime())\n        .sort((a, b) => {\n          const dateDiff = a.date.localeCompare(b.date) || a.time.localeCompare(b.time);\n          return dateDiff || a.artist.localeCompare(b.artist, 'es');\n        });\n    }\n\n    function getAvailableMonths(events) {\n      return [...new Set(events.map(item => getMonthIndex(item.date)))];\n    }\n\n    function getMonthCount(events, monthIndex) {\n      return events.filter(item => getMonthIndex(item.date) === monthIndex).length;\n    }\n\n    function renderTabs(events) {\n      const months = getAvailableMonths(events);\n      tabsContainer.innerHTML = '';\n\n      const addBtn = (label, value, count) => {\n        const btn = document.createElement('button');\n        btn.className = `tab ${activeMonth === value ? 'active' : ''}`;\n        btn.type = 'button';\n        btn.innerHTML = `<span>${label}<\/span><span class=\"tab-count\">${count}<\/span>`;\n        btn.addEventListener('click', () => {\n          activeMonth = value;\n          currentPage = 1;\n          update();\n        });\n        tabsContainer.appendChild(btn);\n      };\n\n      addBtn('Todos', 'todos', events.length);\n      months.forEach(monthIndex => addBtn(monthNames[monthIndex], monthIndex, getMonthCount(events, monthIndex)));\n    }\n\n    function filteredEvents() {\n      const events = upcomingEvents();\n      return events.filter(item => activeMonth === 'todos' ? true : getMonthIndex(item.date) === activeMonth);\n    }\n\n    function desktopDateMarkup(item) {\n      const [, month, day] = item.date.split('-');\n      const monthName = monthNames[Number(month) - 1];\n      const monthLabel = monthName.charAt(0).toUpperCase() + monthName.slice(1);\n      return `<div class=\"date-text\">${Number(day)} ${monthLabel}<\/div>`;\n    }\n\n    function rowTemplate(item) {\n      return `\n        <tr>\n          <td class=\"date-cell\">${desktopDateMarkup(item)}<\/td>\n          <td class=\"time-cell\">${item.time}<\/td>\n          <td class=\"artist-cell\"><div class=\"artist\">${item.artist}<\/div><\/td>\n          <td class=\"tour-cell\"><div class=\"tour\" title=\"${item.tour}\">${item.tour}<\/div><\/td>\n          <td class=\"venue-cell\"><div class=\"venue\" title=\"${item.venue}\">${item.venue}<\/div><\/td>\n          <td class=\"link-cell\">\n            <div class=\"mobile-meta\">\n              <a class=\"more\" href=\"${item.source}\" target=\"_blank\" rel=\"noopener noreferrer\" aria-label=\"Ver m\u00e1s informaci\u00f3n de ${item.artist}\">\n                <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M14 3h7v7\"><\/path><path d=\"M10 14L21 3\"><\/path><path d=\"M21 14v7H3V3h7\"><\/path><\/svg>\n                M\u00e1s Info.\n              <\/a>\n            <\/div>\n          <\/td>\n        <\/tr>\n      `;\n    }\n\n    function renderTable(events) {\n      const total = events.length;\n      const totalPages = Math.max(1, Math.ceil(total \/ rowsPerPage));\n      if (currentPage > totalPages) currentPage = totalPages;\n\n      const start = (currentPage - 1) * rowsPerPage;\n      const pageItems = events.slice(start, start + rowsPerPage);\n\n      tableBody.innerHTML = pageItems.map(rowTemplate).join('');\n      emptyState.style.display = total ? 'none' : 'block';\n      document.querySelector('.table-wrap').style.display = total ? 'block' : 'none';\n\n      resultsLabelEl.textContent = `${total} evento${total === 1 ? '' : 's'} disponible${total === 1 ? '' : 's'}`;\n      pagerInfoEl.textContent = total ? `Mostrando ${start + 1}-${Math.min(start + rowsPerPage, total)} de ${total}` : '';\n\n      paginationEl.innerHTML = '';\n      const totalPagesSafe = Math.max(1, totalPages);\n\n      const prev = document.createElement('button');\n      prev.className = 'page-btn';\n      prev.textContent = '\u2039';\n      prev.disabled = currentPage === 1 || !total;\n      prev.addEventListener('click', () => {\n        currentPage--;\n        update(false);\n      });\n      paginationEl.appendChild(prev);\n\n      for (let i = 1; i <= totalPagesSafe; i++) {\n        const btn = document.createElement('button');\n        btn.className = `page-btn ${i === currentPage ? 'active' : ''}`;\n        btn.textContent = i;\n        btn.addEventListener('click', () => {\n          currentPage = i;\n          update(false);\n        });\n        paginationEl.appendChild(btn);\n      }\n\n      const next = document.createElement('button');\n      next.className = 'page-btn';\n      next.textContent = '\u203a';\n      next.disabled = currentPage === totalPagesSafe || !total;\n      next.addEventListener('click', () => {\n        currentPage++;\n        update(false);\n      });\n      paginationEl.appendChild(next);\n    }\n\n    function update(resetTabs = true) {\n      const upcoming = upcomingEvents();\n      const months = getAvailableMonths(upcoming);\n\n      if (activeMonth !== 'todos' && !months.includes(activeMonth)) {\n        activeMonth = months[0] ?? 'todos';\n        currentPage = 1;\n      }\n\n      if (resetTabs) {\n        renderTabs(upcoming);\n      }\n\n      const events = filteredEvents();\n      monthLabelEl.textContent = activeMonth === 'todos' ? 'Mostrando todos los meses' : `Mostrando ${monthNames[activeMonth]}`;\n      renderTable(events);\n    }\n\n    update();\n  <\/script>\n<\/body>\n<\/html>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-770cec0 e-flex e-con-boxed e-con e-parent\" data-id=\"770cec0\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-81bdc57 elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"81bdc57\" data-element_type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-51395dd e-flex e-con-boxed e-con e-parent\" data-id=\"51395dd\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-17d099d elementor-widget elementor-widget-heading\" data-id=\"17d099d\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">LA CIUDAD DE LOS<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4ba1c0d elementor-widget elementor-widget-heading\" data-id=\"4ba1c0d\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">GRANDES <span style=\"background-color: #ffff00;color: #000000\"> EVENTOS <\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1f2995d elementor-widget-divider--view-line elementor-widget elementor-widget-divider\" data-id=\"1f2995d\" data-element_type=\"widget\" data-widget_type=\"divider.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-divider\">\n\t\t\t<span class=\"elementor-divider-separator\">\n\t\t\t\t\t\t<\/span>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-1e48303 e-flex e-con-boxed e-con e-parent\" data-id=\"1e48303\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5149cfc elementor-pagination-position-inside elementor-skin-carousel elementor-arrows-yes elementor-pagination-type-bullets elementor-widget elementor-widget-media-carousel\" data-id=\"5149cfc\" data-element_type=\"widget\" data-settings=\"{&quot;slides_per_view&quot;:&quot;3&quot;,&quot;slides_to_scroll&quot;:&quot;1&quot;,&quot;autoplay_speed&quot;:2000,&quot;skin&quot;:&quot;carousel&quot;,&quot;effect&quot;:&quot;slide&quot;,&quot;show_arrows&quot;:&quot;yes&quot;,&quot;pagination&quot;:&quot;bullets&quot;,&quot;speed&quot;:500,&quot;autoplay&quot;:&quot;yes&quot;,&quot;loop&quot;:&quot;yes&quot;,&quot;pause_on_hover&quot;:&quot;yes&quot;,&quot;space_between&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:10,&quot;sizes&quot;:[]},&quot;space_between_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:10,&quot;sizes&quot;:[]},&quot;space_between_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:10,&quot;sizes&quot;:[]}}\" data-widget_type=\"media-carousel.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-swiper\">\n\t\t\t\t\t<div class=\"elementor-main-swiper swiper\" role=\"region\" aria-roledescription=\"carousel\" aria-label=\"Slides\">\n\t\t\t\t<div class=\"swiper-wrapper\">\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"swiper-slide\" role=\"group\" aria-roledescription=\"slide\">\n\t\t\t\t\t\t\t<a href=\"https:\/\/visitquito.ec\/es\/sebastian-yatra-30-abril\/\">\t\t<div class=\"elementor-carousel-image\" role=\"img\" aria-label=\"Yatra-30abril\" style=\"background-image: url(&#039;https:\/\/visitquito.ec\/wp-content\/uploads\/2026\/04\/Yatra-30abril.jpg&#039;)\">\n\n\t\t\t\n\t\t\t\t\t<\/div>\n\t\t<\/a>\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"swiper-slide\" role=\"group\" aria-roledescription=\"slide\">\n\t\t\t\t\t\t\t<a href=\"https:\/\/visitquito.ec\/es\/mon-laferte-12-de-mayo\/\">\t\t<div class=\"elementor-carousel-image\" role=\"img\" aria-label=\"Mon-Laferte-12mayo\" style=\"background-image: url(&#039;https:\/\/visitquito.ec\/wp-content\/uploads\/2026\/04\/Mon-Laferte-12mayo.jpg&#039;)\">\n\n\t\t\t\n\t\t\t\t\t<\/div>\n\t\t<\/a>\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"swiper-slide\" role=\"group\" aria-roledescription=\"slide\">\n\t\t\t\t\t\t\t<a href=\"https:\/\/visitquito.ec\/es\/ed-sheeran-23-de-mayo\/\">\t\t<div class=\"elementor-carousel-image\" role=\"img\" aria-label=\"Ed-Sheran-23mayo\" style=\"background-image: url(&#039;https:\/\/visitquito.ec\/wp-content\/uploads\/2026\/04\/Ed-Sheran-23mayo.jpg&#039;)\">\n\n\t\t\t\n\t\t\t\t\t<\/div>\n\t\t<\/a>\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"swiper-slide\" role=\"group\" aria-roledescription=\"slide\">\n\t\t\t\t\t\t\t<a href=\"https:\/\/visitquito.ec\/es\/ftc-live-al-parque-29-agosto\/\">\t\t<div class=\"elementor-carousel-image\" role=\"img\" aria-label=\"FTC-29-de-agosto\" style=\"background-image: url(&#039;https:\/\/visitquito.ec\/wp-content\/uploads\/2026\/04\/FTC-29-de-agosto.jpg&#039;)\">\n\n\t\t\t\n\t\t\t\t\t<\/div>\n\t\t<\/a>\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"elementor-swiper-button elementor-swiper-button-prev\" role=\"button\" tabindex=\"0\" aria-label=\"Anterior\">\n\t\t\t\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-eicon-chevron-left\" viewBox=\"0 0 1000 1000\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M646 125C629 125 613 133 604 142L308 442C296 454 292 471 292 487 292 504 296 521 308 533L604 854C617 867 629 875 646 875 663 875 679 871 692 858 704 846 713 829 713 812 713 796 708 779 692 767L438 487 692 225C700 217 708 204 708 187 708 171 704 154 692 142 675 129 663 125 646 125Z\"><\/path><\/svg>\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t<div class=\"elementor-swiper-button elementor-swiper-button-next\" role=\"button\" tabindex=\"0\" aria-label=\"Siguiente\">\n\t\t\t\t\t\t\t<svg aria-hidden=\"true\" class=\"e-font-icon-svg e-eicon-chevron-right\" viewBox=\"0 0 1000 1000\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M696 533C708 521 713 504 713 487 713 471 708 454 696 446L400 146C388 133 375 125 354 125 338 125 325 129 313 142 300 154 292 171 292 187 292 204 296 221 308 233L563 492 304 771C292 783 288 800 288 817 288 833 296 850 308 863 321 871 338 875 354 875 371 875 388 867 400 854L696 533Z\"><\/path><\/svg>\t\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<div class=\"swiper-pagination\"><\/div>\n\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Quito ciudad de Grandeseventos Conciertos y festivales en Quito 2026 Agenda 2026 \u00b7 Quito Conciertos y festivales en Quito 2026 Mostrando: todos Fecha Hora Artista \/ festival Tour \/ detalle Lugar M\u00e1s Info. No hay conciertos disponibles con los filtros seleccionados. En escritorio, cada concierto se mantiene en una sola l\u00ednea. En m\u00f3vil, cada fila [&hellip;]<\/p>\n","protected":false},"author":12,"featured_media":9217,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-9210","page","type-page","status-publish","has-post-thumbnail","hentry"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/visitquito.ec\/es\/wp-json\/wp\/v2\/pages\/9210","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/visitquito.ec\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/visitquito.ec\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/visitquito.ec\/es\/wp-json\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/visitquito.ec\/es\/wp-json\/wp\/v2\/comments?post=9210"}],"version-history":[{"count":157,"href":"https:\/\/visitquito.ec\/es\/wp-json\/wp\/v2\/pages\/9210\/revisions"}],"predecessor-version":[{"id":9850,"href":"https:\/\/visitquito.ec\/es\/wp-json\/wp\/v2\/pages\/9210\/revisions\/9850"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/visitquito.ec\/es\/wp-json\/wp\/v2\/media\/9217"}],"wp:attachment":[{"href":"https:\/\/visitquito.ec\/es\/wp-json\/wp\/v2\/media?parent=9210"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}