{"id":7235,"date":"2026-09-14T09:52:32","date_gmt":"2026-09-14T07:52:32","guid":{"rendered":"https:\/\/tharyon.com\/?page_id=7235"},"modified":"2026-09-18T16:19:19","modified_gmt":"2026-09-18T14:19:19","slug":"donar","status":"publish","type":"page","link":"https:\/\/tharyon.com\/en\/donar\/","title":{"rendered":"donaciones"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"7235\" class=\"elementor elementor-7235\" data-elementor-post-type=\"page\">\n\t\t\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-ec16e40 e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-parent\" data-id=\"ec16e40\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6fc75a5 elementor-hidden-mobile elementor-widget elementor-widget-html\" data-id=\"6fc75a5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- ============================================================\r\n     THARYON \u00b7 Donaciones - Dinosaurios (con pedido para Discord)\r\n     C\u00f3mo usarlo en WordPress:\r\n     1) Pega TODO este c\u00f3digo en un bloque \"HTML personalizado\" de la\r\n        p\u00e1gina\/entrada, o dentro de tu plantilla (page-donaciones.php).\r\n     2) IMG_BASE (justo al principio del script) es la carpeta donde\r\n        est\u00e1n las im\u00e1genes. C\u00e1mbiala cuando muevas las im\u00e1genes a tu\r\n        dominio y no tendr\u00e1s que tocar nada m\u00e1s.\r\n     3) Para a\u00f1adir\/editar un dinosaurio, edita solo el array DINOS.\r\n        Formato: { n: nombre, img: archivo, b: [variantes], p: [[nivel, precio], ...] }\r\n        Los precios se escriben con PUNTO decimal (5.99) y se muestran\r\n        con coma y el s\u00edmbolo \u20ac autom\u00e1ticamente.\r\n        Variantes v\u00e1lidas: \"normal\", \"zombie\", \"x\", \"aberrante\",\r\n        \"tek\", \"tiza\", \"hielo\"\r\n     4) SEXO: en todos los dinos hay que elegir Macho o Hembra antes de\r\n        poder a\u00f1adirlo. La hembra suma el recargo definido en RECARGO_SEXO\r\n        (por defecto 1 \u20ac). Cambia ese n\u00famero si alg\u00fan d\u00eda var\u00eda el precio.\r\n     ============================================================ -->\r\n<div id=\"tharyon-root\" class=\"thar-wrap\">\r\n\r\n  <style>\r\n    .thar-wrap{\r\n      --bg: #131211;\r\n      --card-bg: linear-gradient(180deg, #1e1b17 0%, #171512 100%);\r\n      --card-border: rgba(214,160,60,0.16);\r\n      --row-bg: rgba(255,255,255,0.03);\r\n      --row-bg-alt: rgba(255,255,255,0.06);\r\n      --text: #f1e9dc;\r\n      --text-dim: #a2968a;\r\n      --accent-a: #e0912a;\r\n      --accent-b: #f5c445;\r\n      --badge-normal: #e0912a;\r\n      --badge-zombie: #f97316;\r\n      --badge-x: #22d3ee;\r\n      --badge-aberrante: #a855f7;\r\n      --badge-tek: #38bdf8;\r\n      --badge-tiza: #eab308;\r\n      --badge-hielo: #60a5fa;\r\n      --badge-macho: #4f8ef7;\r\n      --badge-hembra: #ef5da8;\r\n\r\n      background: var(--bg);\r\n      color: var(--text);\r\n      font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\r\n      padding: 40px 20px 60px;\r\n      box-sizing: border-box;\r\n      max-width: 100vw;\r\n      overflow-x: hidden;\r\n    }\r\n    .thar-wrap *{ box-sizing: border-box; }\r\n    .thar-wrap.has-order{ padding-bottom: 130px; }\r\n\r\n    .thar-header{\r\n      max-width: 1200px;\r\n      margin: 0 auto 28px;\r\n      text-align: center;\r\n    }\r\n    .thar-header h1{\r\n      font-size: 28px;\r\n      margin: 0 0 8px;\r\n      font-weight: 700;\r\n      letter-spacing: 0.2px;\r\n    }\r\n    .thar-header p{\r\n      color: var(--text-dim);\r\n      margin: 0;\r\n      font-size: 15px;\r\n    }\r\n\r\n    .thar-help{\r\n      max-width: 720px;\r\n      margin: 0 auto 22px;\r\n      background: rgba(224,145,42,0.10);\r\n      border: 1px solid rgba(224,145,42,0.30);\r\n      border-radius: 12px;\r\n      padding: 12px 16px;\r\n      font-size: 13px;\r\n      color: var(--text-dim);\r\n      line-height: 1.6;\r\n      text-align: center;\r\n    }\r\n    .thar-help strong{ color: var(--text); font-weight: 600; }\r\n\r\n    \/* Pesta\u00f1as de categor\u00eda *\/\r\n    .thar-tabs{\r\n      max-width: 1360px;\r\n      margin: 0 auto 24px;\r\n      display: grid;\r\n      grid-template-columns: repeat(4, 1fr);\r\n      gap: 16px;\r\n    }\r\n    .thar-tab{\r\n      display: block;\r\n      padding: 22px 24px;\r\n      border-radius: 12px;\r\n      border: 1px solid var(--card-border);\r\n      background: rgba(255,255,255,0.03);\r\n      color: var(--text);\r\n      font-size: 17px;\r\n      font-weight: 700;\r\n      text-decoration: none;\r\n    }\r\n    .thar-tab:hover{ background: rgba(255,255,255,0.07); color: var(--text); }\r\n    .thar-tab.on{\r\n      background: linear-gradient(90deg, var(--accent-a), var(--accent-b));\r\n      border-color: transparent;\r\n      color: #1b1409;\r\n    }\r\n    .thar-tab:focus-visible{ outline: 2px solid #fff; outline-offset: 2px; }\r\n    @media (max-width: 700px){\r\n      .thar-tabs{ grid-template-columns: 1fr; gap: 10px; margin-bottom: 18px; }\r\n      .thar-tab{ padding: 14px 16px; font-size: 15px; }\r\n    }\r\n\r\n    .thar-chips{\r\n      display: flex;\r\n      flex-wrap: wrap;\r\n      gap: 8px;\r\n      margin: 0 0 22px;\r\n    }\r\n    .thar-chip{\r\n      display: inline-flex;\r\n      align-items: center;\r\n      gap: 7px;\r\n      padding: 7px 14px;\r\n      border-radius: 999px;\r\n      border: 1px solid var(--card-border);\r\n      background: rgba(255,255,255,0.03);\r\n      color: var(--text);\r\n      font-size: 12.5px;\r\n      font-weight: 600;\r\n      font-family: inherit;\r\n      cursor: pointer;\r\n      line-height: 1.5;\r\n    }\r\n    .thar-chip:hover{ background: rgba(255,255,255,0.09); }\r\n    .thar-chip .thar-chip-count{ color: var(--text-dim); font-size: 11.5px; font-weight: 700; }\r\n    .thar-chip.on{ background: #e0912a; border-color: #e0912a; color: #1b1409; }\r\n    .thar-chip.on .thar-chip-count{ color: rgba(27,20,9,0.6); }\r\n    .thar-chip:focus-visible{ outline: 2px solid #fff; outline-offset: 2px; }\r\n\r\n    .thar-search{\r\n      max-width: 420px;\r\n      margin: 0 auto 28px;\r\n      display: block;\r\n      width: 100%;\r\n      padding: 12px 16px;\r\n      border-radius: 10px;\r\n      border: 1px solid var(--card-border);\r\n      background: rgba(255,255,255,0.04);\r\n      color: var(--text);\r\n      font-size: 14px;\r\n      outline: none;\r\n    }\r\n    .thar-search::placeholder{ color: var(--text-dim); }\r\n    .thar-search:focus{ border-color: var(--accent-a); }\r\n\r\n    \/* P\u00e1gina: rejilla de dinos + columna lateral *\/\r\n    .thar-layout{\r\n      max-width: 1360px;\r\n      margin: 0 auto;\r\n      display: grid;\r\n      grid-template-columns: minmax(0, 1fr) 260px;\r\n      gap: 24px;\r\n      align-items: start;\r\n    }\r\n    .thar-grid{\r\n      display: grid;\r\n      grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));\r\n      gap: 22px;\r\n    }\r\n    @media (max-width: 1000px){\r\n      .thar-layout{ grid-template-columns: 1fr; }\r\n      \/* Antes esto ten\u00eda \"order:-1\" y pon\u00eda la caja de Donar la primera\r\n         de todas en m\u00f3vil. Como su fondo es casi negro sobre el fondo\r\n         negro de la p\u00e1gina, quedaba invisible y dejaba un hueco enorme\r\n         antes de los filtros. Ahora se queda en su sitio natural: al\r\n         final, despu\u00e9s de la rejilla de dinosaurios. *\/\r\n      .thar-side{ width: 100%; max-width: 420px; margin: 28px auto 0; }\r\n    }\r\n\r\n    \/* Tarjeta de donaci\u00f3n *\/\r\n    .thar-side{ position: sticky; top: 20px; }\r\n    .thar-donate{\r\n      background: linear-gradient(180deg, #211c16 0%, #17130f 100%);\r\n      border: 1px solid rgba(214,160,60,0.35);\r\n      border-radius: 16px;\r\n      padding: 24px 22px 26px;\r\n      text-align: center;\r\n      box-shadow: 0 8px 24px rgba(0,0,0,0.35);\r\n    }\r\n    .thar-donate h3{\r\n      margin: 0 0 10px;\r\n      font-size: 20px;\r\n      font-weight: 700;\r\n      color: #fff;\r\n    }\r\n    .thar-donate-underline{\r\n      height: 3px;\r\n      border-radius: 2px;\r\n      background: linear-gradient(90deg, #f5c445, #e0912a);\r\n      margin-bottom: 20px;\r\n    }\r\n    .thar-donate p{\r\n      margin: 0 0 24px;\r\n      font-size: 13.5px;\r\n      line-height: 1.65;\r\n      color: var(--text-dim);\r\n    }\r\n    .thar-donate-btn{\r\n      display: block;\r\n      padding: 13px 16px;\r\n      border-radius: 10px;\r\n      background: linear-gradient(90deg, #c026d3, #f21fc5);\r\n      color: #fff;\r\n      font-size: 14px;\r\n      font-weight: 700;\r\n      text-decoration: none;\r\n      transition: filter 0.15s ease;\r\n    }\r\n    .thar-donate-btn + .thar-donate-btn{ margin-top: 10px; }\r\n    .thar-donate-btn.paypal{ background: linear-gradient(90deg, #0070ba, #009cde); }\r\n    .thar-donate-btn.stripe{ background: linear-gradient(90deg, #635bff, #8b5cf6); }\r\n    .thar-donate-btn:hover,\r\n    .thar-donate-btn:focus{ filter: brightness(1.12); color: #fff; text-decoration: none; }\r\n    .thar-donate-btn:focus-visible{ outline: 2px solid #fff; outline-offset: 2px; }\r\n\r\n    .thar-card{\r\n      background: var(--card-bg);\r\n      border: 1px solid var(--card-border);\r\n      border-radius: 14px;\r\n      padding: 22px 20px 18px;\r\n      display: flex;\r\n      flex-direction: column;\r\n    }\r\n    .thar-card.selected{\r\n      border-color: rgba(224,145,42,0.6);\r\n      box-shadow: 0 0 0 1px rgba(224,145,42,0.2);\r\n    }\r\n\r\n    .thar-card-title{\r\n      font-size: 18px;\r\n      font-weight: 700;\r\n      margin: 0 0 6px;\r\n      color: #f7d488;\r\n    }\r\n\r\n    \/* El tema de WordPress suele pintar los h1\/h3 con su propio color:\r\n       estas reglas mantienen los textos legibles dentro del bloque. *\/\r\n    .thar-wrap .thar-card .thar-card-title{ color: #f7d488 !important; }\r\n    .thar-wrap .thar-header h1{ color: #ffffff !important; }\r\n    .thar-wrap .thar-header p{ color: var(--text-dim) !important; }\r\n    .thar-wrap .thar-modal-box h2{ color: #ffffff !important; }\r\n    .thar-wrap .thar-donate h3{ color: #ffffff !important; }\r\n    .thar-wrap .thar-price-row .thar-price{ color: #ffffff !important; }\r\n    .thar-card-underline{\r\n      width: 34px;\r\n      height: 3px;\r\n      border-radius: 2px;\r\n      background: linear-gradient(90deg, var(--accent-a), var(--accent-b));\r\n      margin-bottom: 10px;\r\n    }\r\n\r\n    .thar-badges{\r\n      display: flex;\r\n      flex-wrap: wrap;\r\n      gap: 6px;\r\n      min-height: 22px;\r\n      margin-bottom: 4px;\r\n    }\r\n    .thar-badge{\r\n      font-size: 11px;\r\n      font-weight: 700;\r\n      padding: 3px 9px;\r\n      border-radius: 999px;\r\n      color: #10121a;\r\n      line-height: 1.4;\r\n      border: 1px solid transparent;\r\n    }\r\n    .thar-badge.normal{ background: var(--badge-normal); color: #1b1409; }\r\n    .thar-badge.zombie{ background: var(--badge-zombie); color: #fff; }\r\n    .thar-badge.x{ background: var(--badge-x); }\r\n    .thar-badge.aberrante{ background: var(--badge-aberrante); color: #fff; }\r\n    .thar-badge.tek{ background: var(--badge-tek); color: #08202c; }\r\n    .thar-badge.tiza{ background: var(--badge-tiza); color: #241c02; }\r\n    .thar-badge.hielo{ background: var(--badge-hielo); color: #071b33; }\r\n\r\n    .thar-card-note{\r\n      font-size: 12px;\r\n      color: var(--text-dim);\r\n      font-style: italic;\r\n      margin: -2px 0 6px;\r\n    }\r\n\r\n    .thar-card-image{\r\n      height: 170px;\r\n      margin: 8px 0 14px;\r\n      display: flex;\r\n      align-items: center;\r\n      justify-content: flex-end;\r\n    }\r\n    .thar-card-image img{\r\n      max-width: 100%;\r\n      max-height: 170px;\r\n      object-fit: contain;\r\n      filter: drop-shadow(0 6px 14px rgba(0,0,0,0.45));\r\n    }\r\n    .thar-img-error{\r\n      font-size: 12px;\r\n      color: var(--text-dim);\r\n      text-align: center;\r\n      border: 1px dashed var(--card-border);\r\n      border-radius: 8px;\r\n      padding: 8px 10px;\r\n      line-height: 1.4;\r\n    }\r\n\r\n    .thar-prices{\r\n      margin-top: auto;\r\n      border-radius: 10px;\r\n      overflow: hidden;\r\n    }\r\n    .thar-price-row{\r\n      display: flex;\r\n      flex-direction: column;\r\n      align-items: stretch;\r\n      gap: 6px;\r\n      padding: 10px 12px;\r\n      font-size: 13px;\r\n      background: var(--row-bg);\r\n      border-left: 3px solid transparent;\r\n    }\r\n    .thar-row-top{\r\n      display: flex;\r\n      align-items: center;\r\n      gap: 8px;\r\n    }\r\n    .thar-vars{\r\n      display: flex;\r\n      flex-wrap: wrap;\r\n      gap: 4px;\r\n    }\r\n    .thar-var{\r\n      font-size: 10.5px;\r\n      font-weight: 700;\r\n      line-height: 1.4;\r\n      padding: 3px 7px;\r\n      border-radius: 999px;\r\n      border: 1px solid var(--card-border);\r\n      background: rgba(255,255,255,0.05);\r\n      color: var(--text-dim);\r\n      cursor: pointer;\r\n      font-family: inherit;\r\n    }\r\n    .thar-var:hover{ color: var(--text); }\r\n    .thar-var.on{ border-color: transparent; }\r\n    .thar-var.on.normal{ background: var(--badge-normal); color: #1b1409; }\r\n    .thar-var.on.zombie{ background: var(--badge-zombie); color: #fff; }\r\n    .thar-var.on.x{ background: var(--badge-x); color: #10121a; }\r\n    .thar-var.on.aberrante{ background: var(--badge-aberrante); color: #fff; }\r\n    .thar-var.on.tek{ background: var(--badge-tek); color: #08202c; }\r\n    .thar-var.on.tiza{ background: var(--badge-tiza); color: #241c02; }\r\n    .thar-var.on.hielo{ background: var(--badge-hielo); color: #071b33; }\r\n    .thar-var:focus-visible{ outline: 2px solid #fff; outline-offset: 1px; }\r\n    .thar-price-row:nth-child(even){ background: var(--row-bg-alt); }\r\n    .thar-price-row.on{\r\n      border-left-color: var(--accent-a);\r\n      background: rgba(224,145,42,0.13);\r\n    }\r\n    .thar-price-row .thar-level{ color: var(--text-dim); flex: 1; }\r\n    .thar-price-row.on .thar-level{ color: var(--text); }\r\n    .thar-price-row .thar-price{ font-weight: 700; color: #fff; white-space: nowrap; }\r\n\r\n    .thar-stats{ align-items: center; }\r\n    .thar-stats-label{\r\n      font-size: 10.5px;\r\n      font-weight: 700;\r\n      color: var(--text-dim);\r\n      margin-right: 2px;\r\n    }\r\n    .thar-var.thar-stat.on{\r\n      background: linear-gradient(90deg, var(--accent-a), var(--accent-b));\r\n      color: #fff;\r\n      border-color: transparent;\r\n    }\r\n\r\n    \/* ---------- Selector de gen (desplegable, la lista es larga) ---------- *\/\r\n    .thar-genes{ align-items: center; }\r\n    .thar-gene-select{\r\n      flex: 1;\r\n      min-width: 140px;\r\n      padding: 5px 8px;\r\n      border-radius: 8px;\r\n      border: 1px solid var(--card-border);\r\n      background: rgba(255,255,255,0.05);\r\n      color: var(--text);\r\n      font-size: 11.5px;\r\n      font-family: inherit;\r\n      cursor: pointer;\r\n    }\r\n    .thar-gene-select:focus{ border-color: var(--accent-a); outline: none; }\r\n    .thar-var.thar-gene-toggle.on{\r\n      background: linear-gradient(90deg, var(--accent-a), var(--accent-b));\r\n      color: #fff;\r\n      border-color: transparent;\r\n    }\r\n    .thar-gene-select option, .thar-gene-select optgroup{ background: #1a1714; color: #f1e9dc; }\r\n    .thar-gene-desc{\r\n      font-size: 11px;\r\n      color: var(--text-dim);\r\n      line-height: 1.4;\r\n      margin: -2px 0 0;\r\n      display: none;\r\n    }\r\n    .thar-gene-desc.show{ display: block; }\r\n\r\n    \/* ---------- Selector de sexo (obligatorio) ---------- *\/\r\n    .thar-sexes{ align-items: center; }\r\n    .thar-sexes .thar-stats-label{ color: var(--accent-b); }\r\n    .thar-var.thar-sex{ min-width: 58px; text-align: center; }\r\n    .thar-var.thar-sex.on.macho{\r\n      background: var(--badge-macho);\r\n      color: #051a38;\r\n      border-color: transparent;\r\n    }\r\n    .thar-var.thar-sex.on.hembra{\r\n      background: var(--badge-hembra);\r\n      color: #2c0518;\r\n      border-color: transparent;\r\n    }\r\n    .thar-price-row.needs-sex .thar-stats-label{ color: var(--accent-a); }\r\n\r\n    .thar-extra-note{\r\n      font-size: 11.5px;\r\n      line-height: 1.5;\r\n      color: var(--text-dim);\r\n      padding: 12px 12px 8px;\r\n      border-top: 1px solid var(--card-border);\r\n      margin-top: 6px;\r\n    }\r\n    .thar-price-row.thar-extra-row{\r\n      background: rgba(245,196,69,0.08);\r\n      border-left-color: rgba(245,196,69,0.55);\r\n    }\r\n\r\n    .thar-qty{\r\n      display: flex;\r\n      align-items: center;\r\n      gap: 4px;\r\n    }\r\n    .thar-qty button{\r\n      width: 28px;\r\n      height: 28px;\r\n      border-radius: 8px;\r\n      border: 1px solid var(--card-border);\r\n      background: rgba(255,255,255,0.06);\r\n      color: var(--text);\r\n      font-size: 16px;\r\n      line-height: 1;\r\n      cursor: pointer;\r\n      font-family: inherit;\r\n      padding: 0;\r\n    }\r\n    .thar-qty button:hover{ background: rgba(255,255,255,0.14); }\r\n    .thar-qty button:disabled{ opacity: 0.3; cursor: default; }\r\n    .thar-qty button:disabled:hover{ background: rgba(255,255,255,0.06); }\r\n    .thar-qty button.add{\r\n      background: linear-gradient(90deg, var(--accent-a), var(--accent-b));\r\n      border-color: transparent;\r\n      color: #fff;\r\n      font-weight: 700;\r\n    }\r\n    .thar-qty button:focus-visible{ outline: 2px solid #fff; outline-offset: 1px; }\r\n    .thar-qty .thar-count{\r\n      min-width: 22px;\r\n      text-align: center;\r\n      font-weight: 700;\r\n      color: #fff;\r\n      font-size: 13px;\r\n    }\r\n    .thar-qty .thar-count.zero{ color: var(--text-dim); font-weight: 600; }\r\n\r\n    .thar-no-results{\r\n      text-align: center;\r\n      color: var(--text-dim);\r\n      padding: 40px 0;\r\n      grid-column: 1 \/ -1;\r\n    }\r\n\r\n    .thar-footer{\r\n      text-align: center;\r\n      color: var(--text-dim);\r\n      font-size: 12px;\r\n      margin-top: 48px;\r\n    }\r\n\r\n    \/* ---------- Barra de pedido ---------- *\/\r\n    .thar-bar{\r\n      position: fixed;\r\n      left: 0; right: 0; bottom: 0;\r\n      z-index: 99990;\r\n      display: none;\r\n      background: rgba(19,17,15,0.97);\r\n      border-top: 1px solid rgba(214,160,60,0.2);\r\n      box-shadow: 0 -8px 24px rgba(0,0,0,0.45);\r\n      padding: 12px 16px;\r\n    }\r\n    .thar-bar.show{ display: block; }\r\n    .thar-bar-inner{\r\n      max-width: 1200px;\r\n      margin: 0 auto;\r\n      display: flex;\r\n      align-items: center;\r\n      gap: 12px;\r\n      flex-wrap: wrap;\r\n      color: var(--text);\r\n      font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\r\n    }\r\n    .thar-bar-info{ flex: 1; min-width: 150px; font-size: 14px; }\r\n    .thar-bar-info span{ color: var(--text-dim); }\r\n    .thar-bar-total{ font-size: 20px; font-weight: 700; color: #fff; }\r\n    .thar-btn{\r\n      border: none;\r\n      border-radius: 10px;\r\n      padding: 11px 18px;\r\n      font-size: 14px;\r\n      font-weight: 700;\r\n      cursor: pointer;\r\n      font-family: inherit;\r\n      background: linear-gradient(90deg, var(--accent-a), var(--accent-b));\r\n      color: #fff;\r\n    }\r\n    .thar-btn.ghost{\r\n      background: rgba(255,255,255,0.07);\r\n      color: var(--text-dim);\r\n      border: 1px solid var(--card-border);\r\n      font-weight: 600;\r\n    }\r\n    .thar-btn:focus-visible{ outline: 2px solid #fff; outline-offset: 2px; }\r\n\r\n    \/* ---------- Ventana de pedido ---------- *\/\r\n    .thar-modal{\r\n      position: fixed;\r\n      inset: 0;\r\n      z-index: 99999;\r\n      display: none;\r\n      align-items: center;\r\n      justify-content: center;\r\n      background: rgba(4,8,16,0.78);\r\n      padding: 16px;\r\n    }\r\n    .thar-modal.show{ display: flex; }\r\n    .thar-modal-box{\r\n      width: 100%;\r\n      max-width: 560px;\r\n      max-height: 92vh;\r\n      overflow-y: auto;\r\n      background: #1a1714;\r\n      border: 1px solid var(--card-border);\r\n      border-radius: 16px;\r\n      padding: 22px;\r\n      color: var(--text);\r\n      font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\r\n    }\r\n    .thar-modal-box h2{\r\n      margin: 0 0 4px;\r\n      font-size: 20px;\r\n      color: #fff;\r\n    }\r\n    .thar-modal-box .thar-sub{\r\n      margin: 0 0 16px;\r\n      font-size: 13px;\r\n      color: var(--text-dim);\r\n    }\r\n    .thar-modal-notice{\r\n      margin: -6px 0 16px;\r\n      padding: 10px 12px;\r\n      font-size: 12px;\r\n      line-height: 1.5;\r\n      color: #f5c445;\r\n      background: rgba(245,196,69,0.10);\r\n      border: 1px solid rgba(245,196,69,0.30);\r\n      border-radius: 10px;\r\n    }\r\n    .thar-field{ margin-bottom: 12px; }\r\n    .thar-field label{\r\n      display: block;\r\n      font-size: 13px;\r\n      color: var(--text-dim);\r\n      margin-bottom: 5px;\r\n    }\r\n    .thar-field input{\r\n      width: 100%;\r\n      padding: 10px 12px;\r\n      border-radius: 9px;\r\n      border: 1px solid var(--card-border);\r\n      background: rgba(255,255,255,0.04);\r\n      color: var(--text);\r\n      font-size: 14px;\r\n      font-family: inherit;\r\n      outline: none;\r\n    }\r\n    .thar-field input:focus{ border-color: var(--accent-a); }\r\n    #thar-output{\r\n      width: 100%;\r\n      min-height: 210px;\r\n      padding: 12px;\r\n      border-radius: 10px;\r\n      border: 1px solid var(--card-border);\r\n      background: #110f0d;\r\n      color: var(--text);\r\n      font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;\r\n      font-size: 12.5px;\r\n      line-height: 1.55;\r\n      resize: vertical;\r\n      outline: none;\r\n    }\r\n    .thar-modal-actions{\r\n      display: flex;\r\n      gap: 10px;\r\n      margin-top: 14px;\r\n      flex-wrap: wrap;\r\n    }\r\n    .thar-modal-actions .thar-btn{ flex: 1; min-width: 130px; }\r\n    .thar-btn.danger{\r\n      background: rgba(239,68,68,0.12);\r\n      color: #fca5a5;\r\n      border: 1px solid rgba(239,68,68,0.35);\r\n      font-weight: 600;\r\n    }\r\n    .thar-btn.danger:hover{ background: rgba(239,68,68,0.2); }\r\n    .thar-copied{\r\n      font-size: 13px;\r\n      color: #4ade80;\r\n      margin-top: 10px;\r\n      min-height: 18px;\r\n    }\r\n\r\n    \/* ---------- Tablet ---------- *\/\r\n    @media (max-width: 1000px){\r\n      .thar-side{ position: static; }\r\n    }\r\n\r\n    \/* ---------- M\u00f3vil ---------- *\/\r\n    @media (max-width: 700px){\r\n      .thar-wrap{ padding: 24px 14px 40px; }\r\n      .thar-wrap.has-order{ padding-bottom: 150px; }\r\n\r\n      .thar-header{ margin-bottom: 20px; }\r\n      .thar-header h1{ font-size: 22px; }\r\n      .thar-header p{ font-size: 14px; }\r\n      .thar-help{ font-size: 12.5px; padding: 11px 14px; margin-bottom: 18px; text-align: left; }\r\n\r\n      .thar-search{ margin-bottom: 16px; padding: 11px 14px; font-size: 16px; }\r\n\r\n      \/* Los 16 filtros en una sola fila deslizable en vez de 5 l\u00edneas *\/\r\n      .thar-chips{\r\n        flex-wrap: nowrap;\r\n        overflow-x: auto;\r\n        -webkit-overflow-scrolling: touch;\r\n        scrollbar-width: none;\r\n        padding-bottom: 4px;\r\n        margin-bottom: 18px;\r\n      }\r\n      .thar-chips::-webkit-scrollbar{ display: none; }\r\n      .thar-chip{ flex: 0 0 auto; }\r\n\r\n      .thar-layout{ gap: 18px; }\r\n      .thar-grid{ grid-template-columns: 1fr; gap: 14px; }\r\n\r\n      .thar-card{ padding: 16px 14px 14px; }\r\n      .thar-card-image{ height: 120px; margin: 6px 0 12px; }\r\n      .thar-card-image img{ max-height: 120px; }\r\n\r\n      .thar-qty button{ width: 34px; height: 34px; font-size: 18px; }\r\n      .thar-qty .thar-count{ min-width: 26px; font-size: 14px; }\r\n      .thar-var{ font-size: 11px; padding: 4px 9px; }\r\n      .thar-var.thar-sex{ padding: 5px 12px; }\r\n\r\n      .thar-bar{ padding: 10px 12px; }\r\n      .thar-bar-inner{ gap: 8px; }\r\n      .thar-bar-info{ flex: 1 1 100%; min-width: 0; font-size: 13px; }\r\n      .thar-bar-total{ font-size: 18px; }\r\n      .thar-bar .thar-btn{ flex: 1 1 0; padding: 12px 10px; }\r\n\r\n      .thar-modal{ padding: 0; align-items: flex-end; }\r\n      .thar-modal-box{\r\n        max-width: none;\r\n        max-height: 100%;\r\n        min-height: 100%;\r\n        border-radius: 0;\r\n        padding: 20px 16px 28px;\r\n      }\r\n      .thar-field input{ font-size: 16px; }\r\n      #thar-output{ min-height: 240px; font-size: 13px; }\r\n      .thar-modal-actions .thar-btn{ min-width: 0; }\r\n\r\n      .thar-footer{ margin-top: 32px; }\r\n    }\r\n\r\n    \/* Pantallas muy estrechas *\/\r\n    @media (max-width: 360px){\r\n      .thar-row-top{ flex-wrap: wrap; }\r\n      .thar-row-top .thar-level{ flex: 1 1 100%; }\r\n    }\r\n  <\/style>\r\n\r\n  <div class=\"thar-header\">\r\n    <h1>Donaciones \u00b7 Dinosaurios<\/h1>\r\n    <p>Precios de dinosaurios disponibles en Tharyon<\/p>\r\n  <\/div>\r\n\r\n  <!-- CAMBIA LOS href POR LAS URLS DE TUS P\u00c1GINAS -->\r\n  <div class=\"thar-tabs\">\r\n    <a class=\"thar-tab on\" href=\"#\">Dinosaurios<\/a>\r\n    <a class=\"thar-tab\" href=\"https:\/\/tharyon.com\/recursos\/\">Recursos\/Objetos<\/a>\r\n    <a class=\"thar-tab\" href=\"https:\/\/tharyon.com\/desbloqueos\/\">Desbloqueos<\/a>\r\n    <a class=\"thar-tab\" href=\"https:\/\/tharyon.com\/vip\/\">VIP<\/a>\r\n  <\/div>\r\n\r\n  <div class=\"thar-help\">\r\n    En cada nivel eliges primero <strong>Macho o Hembra<\/strong> (la hembra cuesta 1 \u20ac m\u00e1s) y la\r\n    <strong>versi\u00f3n<\/strong> que quieres (Aberrante y X cuestan 1 \u20ac m\u00e1s). Despu\u00e9s marcas\r\n    <strong>cu\u00e1ntos quieres<\/strong> con los botones \u2212 y +. Hasta que no elijas el sexo, el bot\u00f3n + est\u00e1 bloqueado.\r\n    Puedes pedir varios dinos, los tres niveles y varias unidades de cada uno. Cuando termines, pulsa\r\n    <strong>Ver mi pedido<\/strong>, c\u00f3pialo y env\u00edamelo por Discord.\r\n    <br><br>\r\n    Los dinos que llevan montura se entregan con <strong>montura normal<\/strong> incluida.\r\n  <\/div>\r\n\r\n  <div class=\"thar-layout\">\r\n\r\n    <div class=\"thar-main\">\r\n      <input type=\"text\" class=\"thar-search\" id=\"thar-search\" placeholder=\"Buscar dinosaurio\u2026\">\r\n      <div class=\"thar-chips\" id=\"thar-chips-variante\"><\/div>\r\n      <div class=\"thar-chips\" id=\"thar-chips\"><\/div>\r\n      <div class=\"thar-grid\" id=\"thar-grid\"><\/div>\r\n    <\/div>\r\n\r\n    <aside class=\"thar-side\">\r\n      <div class=\"thar-donate\">\r\n        <h3>Donar<\/h3>\r\n        <div class=\"thar-donate-underline\"><\/div>\r\n        <p>Puedes donar por varias cosas a la vez poniendo el sumatorio del precio<\/p>\r\n        <!-- CAMBIA AQU\u00cd LOS DOS ENLACES (href) -->\r\n        <a class=\"thar-donate-btn paypal\" href=\"https:\/\/www.paypal.com\/donate\/?business=5BUS93N772UCW&no_recurring=0&item_name=Donaci%C3%B3n+voluntaria+para+costes+de+hardware+y+hosting+del+servidor+Tharyon.&currency_code=EUR\" target=\"_blank\" rel=\"noopener\">Donar con PayPal<\/a>\r\n        <a class=\"thar-donate-btn stripe\" href=\"https:\/\/donate.stripe.com\/9B6eV60rl7TR8GR5ULfnO0b\" target=\"_blank\" rel=\"noopener\">Donar con tarjeta (Stripe)<\/a>\r\n      <\/div>\r\n    <\/aside>\r\n\r\n  <\/div>\r\n\r\n  <div class=\"thar-footer\">2026 \u00a9 Tharyon<\/div>\r\n\r\n  <div class=\"thar-bar\" id=\"thar-bar\">\r\n    <div class=\"thar-bar-inner\">\r\n      <div class=\"thar-bar-info\">\r\n        <span id=\"thar-bar-count\">0 art\u00edculos<\/span><br>\r\n        <span class=\"thar-bar-total\" id=\"thar-bar-total\">0,00 \u20ac<\/span>\r\n      <\/div>\r\n      <button type=\"button\" class=\"thar-btn ghost\" id=\"thar-clear\">Vaciar<\/button>\r\n      <button type=\"button\" class=\"thar-btn\" id=\"thar-open\">Ver mi pedido<\/button>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div class=\"thar-modal\" id=\"thar-modal\">\r\n    <div class=\"thar-modal-box\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"thar-modal-title\">\r\n      <h2 id=\"thar-modal-title\">Tu pedido<\/h2>\r\n      <p class=\"thar-sub\">Copia el texto y p\u00e9gamelo en Discord. Puedes editarlo antes de copiar.<\/p>\r\n      <p class=\"thar-modal-notice\">\u26a0\ufe0f Este cuadro incluye TODO lo que llevas a\u00f1adido, aunque sea de hace un rato. Si algo de esto ya no lo quieres, vac\u00edalo con el bot\u00f3n de abajo antes de copiar.<\/p>\r\n\r\n      <div class=\"thar-field\">\r\n        <label for=\"thar-platform\">Tu ID de consola o Steam<\/label>\r\n        <input type=\"text\" id=\"thar-platform\" placeholder=\"Gamertag, PSN ID o ID de Steam\" autocomplete=\"off\" spellcheck=\"false\">\r\n      <\/div>\r\n      <div class=\"thar-field\">\r\n        <label for=\"thar-eosid\">Tu EOS ID<\/label>\r\n        <input type=\"text\" id=\"thar-eosid\" placeholder=\"Pega aqu\u00ed tu EOS ID\" autocomplete=\"off\" spellcheck=\"false\">\r\n      <\/div>\r\n\r\n      <div class=\"thar-field\" id=\"thar-color-field\" style=\"display:none\">\r\n        <label for=\"thar-color\">Color o colores de la pintura<\/label>\r\n        <input type=\"text\" id=\"thar-color\" placeholder=\"Ej.: Rex en rojo y negro\" autocomplete=\"off\">\r\n      <\/div>\r\n\r\n      <textarea id=\"thar-output\" spellcheck=\"false\"><\/textarea>\r\n\r\n      <div class=\"thar-modal-actions\">\r\n        <button type=\"button\" class=\"thar-btn\" id=\"thar-copy\">Copiar pedido<\/button>\r\n        <button type=\"button\" class=\"thar-btn ghost\" id=\"thar-close\">Seguir eligiendo<\/button>\r\n        <button type=\"button\" class=\"thar-btn danger\" id=\"thar-modal-clear\">Vaciar este pedido<\/button>\r\n      <\/div>\r\n      <div class=\"thar-copied\" id=\"thar-copied\"><\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <script>\r\n  \/\/ --------------------------------------------------------------\r\n  \/\/ Si la p\u00e1gina no tiene la etiqueta <meta name=\"viewport\">, el\r\n  \/\/ m\u00f3vil renderiza todo como si fuera un ordenador (~980px) y luego\r\n  \/\/ lo encoge: por eso hay que desplazar la pantalla y los estilos\r\n  \/\/ de m\u00f3vil de m\u00e1s abajo nunca llegan a activarse. La a\u00f1adimos\r\n  \/\/ nosotros mismos por si la plantilla de WordPress no la est\u00e1\r\n  \/\/ poniendo (pasa con algunas plantillas \"Canvas\" de Elementor).\r\n  \/\/ --------------------------------------------------------------\r\n  (function () {\r\n    try {\r\n      if (!document.querySelector('meta[name=\"viewport\"]')) {\r\n        var vp = document.createElement(\"meta\");\r\n        vp.name = \"viewport\";\r\n        vp.content = \"width=device-width, initial-scale=1\";\r\n        document.head.appendChild(vp);\r\n      }\r\n    } catch (e) { \/* si falla, seguimos sin romper el resto *\/ }\r\n  })();\r\n\r\n  (function () {\r\n    \/\/ ------------------------------------------------------------\r\n    \/\/ Carpeta de las im\u00e1genes. C\u00e1mbiala si subes las im\u00e1genes a\r\n    \/\/ la Biblioteca de medios de WordPress o a otro dominio.\r\n    \/\/\r\n    \/\/ Si en el ORDENADOR se ven bien pero en el M\u00d3VIL no aparece\r\n    \/\/ ninguna imagen, el c\u00f3digo ya no es el problema (mira m\u00e1s abajo\r\n    \/\/ el aviso \"Imagen no disponible\" que ahora se muestra en su\r\n    \/\/ lugar): lo m\u00e1s probable es uno de estos dos casos:\r\n    \/\/   1) El proyecto de Vercel tiene activada la \"Deployment\r\n    \/\/      Protection\" y solo t\u00fa (con sesi\u00f3n iniciada en Vercel)\r\n    \/\/      puedes ver las im\u00e1genes. Rev\u00edsalo en el panel de Vercel,\r\n    \/\/      en Settings \u2192 Deployment Protection, y desact\u00edvalo (o pon\r\n    \/\/      \"Only Preview Deployments\", nunca Production).\r\n    \/\/   2) Est\u00e1s abriendo el enlace desde el navegador integrado de\r\n    \/\/      Discord (o Instagram\/TikTok), que a veces bloquea\r\n    \/\/      contenido de terceros. Prueba a abrir la p\u00e1gina con el\r\n    \/\/      bot\u00f3n de \"Abrir en el navegador\" o pegando el enlace\r\n    \/\/      directamente en Safari\/Chrome.\r\n    \/\/ ------------------------------------------------------------\r\n    var IMG_BASE = \"https:\/\/valkysaurios.vercel.app\/images\/dinosaurs\/\";\r\n\r\n    \/\/ ------------------------------------------------------------\r\n    \/\/ DATOS: edita\/a\u00f1ade dinosaurios aqu\u00ed.\r\n    \/\/   n   = nombre\r\n    \/\/   img = archivo de imagen (dentro de IMG_BASE)\r\n    \/\/   b   = variantes: \"normal\", \"zombie\", \"x\", \"aberrante\",\r\n    \/\/         \"tek\", \"tiza\", \"hielo\"\r\n    \/\/   p   = [[\"Etiqueta del nivel\", precio], ...] (precio con punto)\r\n    \/\/   note= texto en cursiva bajo las variantes (opcional)\r\n    \/\/ ------------------------------------------------------------\r\n    var DINOS = [\r\n      { n: \"Achatina\", img: \"achatina.webp\", b: [\"normal\",\"aberrante\"], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",2.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Acrocanthosaurus\", img: \"acrocanto.webp\", b: [\"x\"], p: [[\"Nivel 225\",3.50],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1350 (castrado)\",14.50]] },\r\n      { n: \"Archelon\", img: \"archelon.webp\", b: [\"x\"], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",4.99],[\"Nivel 1350 (castrado)\",9.99]] },\r\n      { n: \"Armadoggo\", img: \"armadoggo.webp\", b: [], p: [[\"Nivel 225\",2.99],[\"Nivel 600 (castrado)\",6.50],[\"Nivel 1350 (castrado)\",9.99]] },\r\n      { n: \"Aureliax\", img: \"aureliax.webp\", b: [], p: [[\"Nivel 225\",5.50],[\"Nivel 600 (castrado)\",9.50],[\"Nivel 1350 (castrado)\",12.99]] },\r\n      { n: \"Basilisco\", img: \"basilisco.webp\", b: [], p: [[\"Nivel 225\",4.50],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1350 (castrado)\",10.50]] },\r\n      { n: \"Allosaurus\", img: \"allosaurus.webp\", b: [\"x\"], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",7.99]] },\r\n      { n: \"Anglerfish\", img: \"angler.webp\", b: [\"normal\",\"aberrante\"], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1200 (castrado)\",7.99]] },\r\n      { n: \"Ankylosaurus\", img: \"ankylosaurus.webp\", b: [\"normal\",\"aberrante\",\"x\"], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",4.50],[\"Nivel 1350 (castrado)\",8.99]] },\r\n      { n: \"Araneo\", img: \"araneo.webp\", b: [\"normal\",\"aberrante\"], p: [[\"Nivel 225\",2.99],[\"Nivel 600 (castrado)\",6.50],[\"Nivel 1350 (castrado)\",9.99]] },\r\n      { n: \"Archaeopteryx\", img: \"archaeopteryx.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",2.50],[\"Nivel 1350 (castrado)\",4.99]] },\r\n      { n: \"Argentavis\", img: \"argentavis.webp\", b: [\"x\"], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",2.99],[\"Nivel 1350 (castrado)\",6.99]] },\r\n      { n: \"Arthropluera\", img: \"arthropluera.webp\", b: [\"normal\",\"aberrante\"], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",2.50],[\"Nivel 1350 (castrado)\",4.99]] },\r\n      { n: \"Baryonyx\", img: \"baryonyx.webp\", b: [\"normal\",\"aberrante\"], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",4.99],[\"Nivel 1200 (castrado)\",7.99]] },\r\n      { n: \"Basilosaurus\", img: \"basilosaurus.webp\", b: [\"x\"], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",6.99],[\"Nivel 1200 (castrado)\",12.99]] },\r\n      { n: \"Bison\", img: \"bison.webp\", b: [], p: [[\"Nivel 225\",3.50],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1350 (castrado)\",10.50]] },\r\n      { n: \"Beelzebufo\", img: \"beelzebufo.webp\", b: [\"normal\",\"aberrante\"], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",4.99],[\"Nivel 1200 (castrado)\",9.99]] },\r\n      { n: \"Brontosaurus\", img: \"brontosaurus.webp\", b: [], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",6.50],[\"Nivel 1350 (castrado)\",9.50]] },\r\n      { n: \"Bulbdog\", img: \"bulbdog.webp\", b: [], p: [[\"Nivel 225\",1.99],[\"Nivel 600 (castrado)\",4.50],[\"Nivel 1350 (castrado)\",6.99]] },\r\n      { n: \"Burrowbuck\", img: \"burrowbuck.webp\", b: [], p: [[\"Nivel 225\",2.99],[\"Nivel 600 (castrado)\",6.50],[\"Nivel 1350 (castrado)\",9.99]] },\r\n      { n: \"Carbonemys\", img: \"carbonemys.webp\", b: [\"normal\",\"aberrante\"], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",4.99]] },\r\n      { n: \"Carcharodontosaurus\", img: \"carcharodontosaurus.webp\", b: [], p: [[\"Nivel 225\",3.50],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1350 (castrado)\",14.50]] },\r\n      { n: \"Carnotaurus\", img: \"carnotaurus.webp\", b: [\"normal\",\"aberrante\"], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",6.99]] },\r\n      { n: \"Castoroides\", img: \"castoroides.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",6.99]] },\r\n      { n: \"Cat\", img: \"cat.webp\", b: [], p: [[\"Nivel 225\",1.99],[\"Nivel 600 (castrado)\",5.50],[\"Nivel 1350 (castrado)\",8.99]] },\r\n      { n: \"Ceratosaurus\", img: \"ceratosaur.webp\", b: [], p: [[\"Nivel 225\",3.50],[\"Nivel 600 (castrado)\",6.99],[\"Nivel 1350 (castrado)\",14.99]] },\r\n      { n: \"Chalicotherium\", img: \"chalicotherium.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",4.99]] },\r\n      { n: \"Compognathus\", img: \"compy.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",2.50],[\"Nivel 1350 (castrado)\",4.99]] },\r\n      { n: \"Cosmo\", img: \"cosmo.webp\", b: [], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",5.50],[\"Nivel 1350 (castrado)\",9.50]] },\r\n      { n: \"Daeodon\", img: \"daeodon.webp\", b: [], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",4.99],[\"Nivel 1350 (castrado)\",9.99]] },\r\n      { n: \"Deinosuchus\", img: \"deinosuchus.webp\", b: [\"x\"], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",4.50],[\"Nivel 1200 (castrado)\",8.99]] },\r\n      { n: \"Deinotherium\", img: \"deinotherium.webp\", b: [], p: [[\"Nivel 225\",3.50],[\"Nivel 600 (castrado)\",5.50],[\"Nivel 1350 (castrado)\",10.99]] },\r\n      { n: \"Deinonychus\", img: \"deinonychus.png\", b: [], p: [[\"Nivel 225\",4.99],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1200 (castrado)\",11.99]] },\r\n      { n: \"Desmodus\", img: \"desmodus.webp\", b: [], p: [[\"Nivel 225\",3.50],[\"Nivel 600 (castrado)\",6.50],[\"Nivel 1350 (castrado)\",9.99]] },\r\n      { n: \"Dilophosaur\", img: \"dilophosaur.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",2.50],[\"Nivel 1350 (castrado)\",4.99]] },\r\n      { n: \"Dimetrodon\", img: \"dimetrodon.webp\", b: [\"normal\",\"aberrante\"], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",2.50],[\"Nivel 1350 (castrado)\",4.99]] },\r\n      { n: \"Dimorphodon\", img: \"dimorphodon.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",2.50],[\"Nivel 1350 (castrado)\",4.99]] },\r\n      { n: \"Diplocaulus\", img: \"diplocaulus.webp\", b: [\"normal\",\"aberrante\"], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",2.50],[\"Nivel 1350 (castrado)\",4.99]] },\r\n      { n: \"Direbear\", img: \"direbear.webp\", b: [\"normal\",\"aberrante\"], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",4.50],[\"Nivel 1350 (castrado)\",7.50]] },\r\n      { n: \"Direwolf\", img: \"direwolf.webp\", b: [], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",4.50],[\"Nivel 1350 (castrado)\",7.50]] },\r\n      { n: \"Doedicurus\", img: \"doedicurus.webp\", b: [\"normal\",\"aberrante\"], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",4.50],[\"Nivel 1350 (castrado)\",6.99]] },\r\n      { n: \"Dodo\", img: \"dodo.webp\", b: [\"normal\",\"aberrante\"], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",2.50],[\"Nivel 1350 (castrado)\",4.99]] },\r\n      { n: \"Drakeling\", img: \"drakeling.webp\", b: [], p: [[\"Nivel 225\",4.99],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1350 (castrado)\",11.99]] },\r\n      { n: \"Dreadmare\", img: \"dreadmare.webp\", b: [], p: [[\"Nivel 225\",4.99],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1350 (castrado)\",11.99]] },\r\n      { n: \"Dreadnoughtus\", img: \"dreadnoughtus.webp\", b: [], p: [[\"Nivel 225\",6.50],[\"Nivel 600 (castrado)\",10.50],[\"Nivel 1200 (castrado)\",19.50]] },\r\n      { n: \"Dung Beetle\", img: \"dungbeetle.webp\", b: [\"normal\",\"aberrante\"], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",2.99],[\"Nivel 1350 (castrado)\",4.99]] },\r\n      { n: \"Dunkleosteus\", img: \"dunkleosteus.webp\", b: [\"x\"], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1200 (castrado)\",11.99]] },\r\n      { n: \"Electrophorus\", img: \"electrophorus.webp\", b: [\"normal\",\"aberrante\"], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",2.50],[\"Nivel 1200 (castrado)\",4.99]] },\r\n      { n: \"Elderclaw\", img: \"elderclaw.webp\", b: [], p: [[\"Nivel 225\",4.99],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1350 (castrado)\",11.99]] },\r\n      { n: \"Enforcer\", img: \"enforcer.webp\", b: [], p: [[\"Nivel 225\",3.50],[\"Nivel 600 (castrado)\",6.50],[\"Nivel 1350 (castrado)\",9.50]] },\r\n      { n: \"Equus\", img: \"equus.webp\", b: [\"normal\",\"aberrante\"], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Fasolasuchus\", img: \"fasolasuchus.webp\", b: [\"normal\",\"aberrante\"], p: [[\"Nivel 225\",4.50],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1350 (castrado)\",9.99]] },\r\n      { n: \"Featherlight\", img: \"featherlight.webp\", b: [], p: [[\"Nivel 225\",1.99],[\"Nivel 600 (castrado)\",4.50],[\"Nivel 1350 (castrado)\",6.99]] },\r\n      { n: \"Ice Wyvern\", img: \"frostwyvern.webp\", b: [], p: [[\"Nivel 225\",4.99],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1350 (castrado)\",11.99]] },\r\n      { n: \"Gacha\", img: \"gacha.webp\", b: [], note: \"Recurso a elegir\", p: [[\"Nivel 225\",5.50],[\"Nivel 600 (castrado)\",6.99],[\"Nivel 1350 (castrado)\",9.99]] },\r\n      { n: \"Gasbags\", img: \"gasbags.webp\", b: [], p: [[\"Nivel 225\",3.50],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1350 (castrado)\",10.50]] },\r\n      { n: \"Gallimimus\", img: \"gallimimus.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Giant Bee\", img: \"giantbee.webp\", b: [], p: [[\"Nivel 225\",2.99]] },\r\n      { n: \"Giganotosaurus\", img: \"giganotosaurus.webp\", b: [\"normal\",\"tek\"], p: [[\"Nivel 225\",4.50],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1350 (castrado)\",14.50]] },\r\n      { n: \"Grand Tortugar\", img: \"grand_tortugar.webp\", b: [], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1200 (castrado)\",11.99]] },\r\n      { n: \"Griffin\", img: \"griffin.webp\", b: [], p: [[\"Nivel 225\",4.99],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1350 (castrado)\",11.99]] },\r\n      { n: \"Gloon\", img: \"gloon.webp\", b: [], p: [[\"Nivel 225\",4.50],[\"Nivel 600 (castrado)\",6.99],[\"Nivel 1350 (castrado)\",13.50]] },\r\n      { n: \"Glowtail\", img: \"glowtail.webp\", b: [], p: [[\"Nivel 225\",1.99],[\"Nivel 600 (castrado)\",4.50],[\"Nivel 1350 (castrado)\",6.99]] },\r\n      { n: \"Gigantopithecus\", img: \"gigantopithecus.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Gigantoraptor\", img: \"gigantoraptor.webp\", b: [\"normal\",\"aberrante\"], p: [[\"Nivel 225\",3.50],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1350 (castrado)\",14.99]] },\r\n      { n: \"Gigadesmodus\", img: \"gigadesmodus.webp\", b: [], p: [[\"Nivel 225\",6.50],[\"Nivel 600 (castrado)\",10.50],[\"Nivel 1350 (castrado)\",15.50]] },\r\n      { n: \"Helicoprion\", img: \"helicoprion.webp\", b: [], p: [[\"Nivel 225\",3.99],[\"Nivel 600\",9.99],[\"Nivel 1200\",11.99]] },\r\n      { n: \"Hesperornis\", img: \"hesperornis.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Hyaenodon\", img: \"hyaenodon.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Ichthyornis\", img: \"ichthyornis.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Ichthyosaurus\", img: \"ichthyosaurus.webp\", b: [\"x\"], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1200 (castrado)\",5.99]] },\r\n      { n: \"Iguanodon\", img: \"iguanodon.webp\", b: [\"normal\",\"aberrante\"], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Jerboa\", img: \"jerboa.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",6.50]] },\r\n      { n: \"Kairuku\", img: \"kairuku.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Kaprosuchus\", img: \"kaprosuchus.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1200 (castrado)\",5.99]] },\r\n      { n: \"Karkinos\", img: \"karkinos.webp\", b: [], p: [[\"Nivel 225\",4.99],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1200 (castrado)\",12.50]] },\r\n      { n: \"Kentrosaurus\", img: \"kentrosaurus.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",6.99]] },\r\n      { n: \"Lymantria\", img: \"lymantria.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Lystrosaurus\", img: \"lystrosaurus.webp\", b: [\"normal\",\"aberrante\"], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",2.50],[\"Nivel 1350 (castrado)\",4.99]] },\r\n      { n: \"Maeguana\", img: \"maeguana.png\", b: [], p: [[\"Nivel 225\",4.99],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1200 (castrado)\",10.50]] },\r\n      { n: \"Malwyn\", img: \"malwyn.webp\", b: [], p: [[\"Nivel 225\",5.50],[\"Nivel 600 (castrado)\",8.99],[\"Nivel 1350 (castrado)\",12.50]] },\r\n      { n: \"Mammoth\", img: \"mammoth.webp\", b: [], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",4.50],[\"Nivel 1350 (castrado)\",9.99]] },\r\n      { n: \"Managarmr\", img: \"managarmr.webp\", b: [], p: [[\"Nivel 225\",4.50],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1350 (castrado)\",11.99]] },\r\n      { n: \"Manta\", img: \"manta.webp\", b: [\"normal\",\"aberrante\"], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1200 (castrado)\",5.99]] },\r\n      { n: \"Mantis\", img: \"mantis.webp\", b: [], p: [[\"Nivel 225\",3.50],[\"Nivel 600 (castrado)\",5.99],[\"Nivel 1350 (castrado)\",11.99]] },\r\n      { n: \"Megalania\", img: \"megalania.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Megaloceros\", img: \"megaloceros.webp\", b: [], p: [[\"Nivel 225\",1.99],[\"Nivel 600 (castrado)\",4.50],[\"Nivel 1350 (castrado)\",6.99]] },\r\n      { n: \"Megalodon\", img: \"megalodon.webp\", b: [\"x\"], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",5.50],[\"Nivel 1200 (castrado)\",9.99]] },\r\n      { n: \"Megalosaurus\", img: \"megalosaurus.webp\", b: [\"normal\",\"aberrante\"], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",4.99],[\"Nivel 1350 (castrado)\",9.99]] },\r\n      { n: \"Megaraptor\", img: \"megaraptor.png\", b: [], p: [[\"Nivel 225\",4.50],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1350 (castrado)\",10.50]] },\r\n      { n: \"Megatherium\", img: \"megatherium.webp\", b: [], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",5.50],[\"Nivel 1350 (castrado)\",9.99]] },\r\n      { n: \"Mek\", img: \"mek.webp\", b: [], p: [[\"Nivel 225\",3.99],[\"Nivel 600 (castrado)\",6.50],[\"Nivel 1000 (castrado)\",14.99]] },\r\n      { n: \"Mesopithecus\", img: \"mesopithecus.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",2.50],[\"Nivel 1350 (castrado)\",4.50]] },\r\n      { n: \"Microraptor\", img: \"microraptor.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",2.50],[\"Nivel 1350 (castrado)\",4.50]] },\r\n      { n: \"Morellatops\", img: \"morellatops.webp\", b: [], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",4.50],[\"Nivel 1350 (castrado)\",6.99]] },\r\n      { n: \"Mosasaurus\", img: \"mosasaurus.webp\", b: [\"x\"], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",5.99],[\"Nivel 1200 (castrado)\",10.99]] },\r\n      { n: \"Moschops\", img: \"moschops.webp\", b: [\"normal\",\"aberrante\"], p: [[\"Nivel 225\",1.99],[\"Nivel 600 (castrado)\",3.99],[\"Nivel 1350 (castrado)\",7.99]] },\r\n      { n: \"Onychonycteris\", img: \"onyc.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Otter\", img: \"otter.webp\", b: [\"normal\",\"aberrante\",\"x\"], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1200 (castrado)\",5.99]] },\r\n      { n: \"Ossidon\", img: \"ossidon.webp\", b: [], p: [[\"Nivel 225\",6.50],[\"Nivel 600 (castrado)\",10.50],[\"Nivel 1350 (castrado)\",19.50]] },\r\n      { n: \"Oviraptor\", img: \"oviraptor.webp\", b: [\"normal\",\"aberrante\"], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Ovis\", img: \"ovis.webp\", b: [\"normal\",\"aberrante\"], p: [[\"Nivel 225\",1.99],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Pachycephalosaurus\", img: \"pachy.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Pachyrhinosaurus\", img: \"pachyrhinosaurus.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Paraceratherium\", img: \"paracer.webp\", b: [\"normal\",\"aberrante\",\"x\"], p: [[\"Nivel 225\",1.99],[\"Nivel 600 (castrado)\",4.50],[\"Nivel 1350 (castrado)\",6.99]] },\r\n      { n: \"Parasaurolophus\", img: \"parasaur.webp\", b: [\"normal\",\"aberrante\",\"tek\",\"x\"], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Pegomastax\", img: \"pegomastax.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Pelagornis\", img: \"pelagornis.webp\", b: [], p: [[\"Nivel 225\",1.99],[\"Nivel 600 (castrado)\",4.50],[\"Nivel 1350 (castrado)\",6.99]] },\r\n      { n: \"Phiomia\", img: \"phiomia.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Phoenix\", img: \"phoenix.webp\", b: [], p: [[\"Nivel 225\",3.50],[\"Nivel 600 (castrado)\",6.99],[\"Nivel 1350 (castrado)\",14.99]] },\r\n      { n: \"Pyromane\", img: \"pyromane.webp\", b: [], p: [[\"Nivel 225\",4.99],[\"Nivel 600 (castrado)\",9.99],[\"Nivel 1350 (castrado)\",14.99]] },\r\n      { n: \"Plesiosaur\", img: \"plesiosaur.webp\", b: [], p: [[\"Nivel 225\",1.99],[\"Nivel 600 (castrado)\",4.50],[\"Nivel 1200 (castrado)\",7.99]] },\r\n      { n: \"Procoptodon\", img: \"procoptodon.webp\", b: [], p: [[\"Nivel 225\",1.99],[\"Nivel 600 (castrado)\",4.50],[\"Nivel 1350 (castrado)\",7.99]] },\r\n      { n: \"Pteranodon\", img: \"pteranodon.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Pulmonoscorpius\", img: \"pulmonoscorpius.webp\", b: [\"normal\",\"aberrante\"], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Purlovia\", img: \"purlovia.webp\", b: [\"normal\",\"aberrante\"], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Quetzalcoatlus\", img: \"quetzal.webp\", b: [\"normal\",\"tek\"], p: [[\"Nivel 225\",3.50],[\"Nivel 600 (castrado)\",4.50],[\"Nivel 1350 (castrado)\",8.99]] },\r\n      { n: \"Raptor\", img: \"raptor.webp\", b: [\"normal\",\"aberrante\",\"tek\",\"x\"], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Ravager\", img: \"ravager.webp\", b: [], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",4.50],[\"Nivel 1350 (castrado)\",8.99]] },\r\n      { n: \"Reaper\", img: \"reaper.webp\", b: [], p: [[\"Nivel 225\",4.99],[\"Nivel 600\",7.50],[\"Nivel 1350\",14.99]] },\r\n      { n: \"Rex\", img: \"rex.webp\", b: [\"normal\",\"tek\",\"x\"], p: [[\"Nivel 225\",3.99],[\"Nivel 600 (castrado)\",5.50],[\"Nivel 1350 (castrado)\",11.99]] },\r\n      { n: \"Rock Drake\", img: \"rockdrake.webp\", b: [], p: [[\"Nivel 225\",4.99],[\"Nivel 600 (castrado)\",6.50],[\"Nivel 1350 (castrado)\",12.50]] },\r\n      { n: \"Roll Rat\", img: \"rollrat.webp\", b: [], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",4.50],[\"Nivel 1350 (castrado)\",7.99]] },\r\n      { n: \"Rhyniognatha\", img: \"rhyniognatha.webp\", b: [], p: [[\"Nivel 225\",4.99],[\"Nivel 600 (castrado)\",9.99],[\"Nivel 1350 (castrado)\",14.99]] },\r\n      { n: \"Rock Elemental\", img: \"rockelemental.webp\", b: [\"normal\",\"tiza\",\"hielo\",\"x\"], p: [[\"Nivel 225\",2.99],[\"Nivel 600 (castrado)\",4.99],[\"Nivel 1350 (castrado)\",8.50]] },\r\n      { n: \"Sabertooth\", img: \"sabertooth.webp\", b: [\"x\"], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Sarcosuchus\", img: \"sarco.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",4.50],[\"Nivel 1200 (castrado)\",6.99]] },\r\n      { n: \"Shastasaurus\", img: \"shastasaur.webp\", b: [], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",4.99],[\"Nivel 1200 (castrado)\",8.99]] },\r\n      { n: \"Shinehorn\", img: \"shinehorn.webp\", b: [], p: [[\"Nivel 225\",1.99],[\"Nivel 600 (castrado)\",4.50],[\"Nivel 1350 (castrado)\",6.99]] },\r\n      { n: \"Snow Owl\", img: \"snowowl.webp\", b: [], p: [[\"Nivel 225\",3.99],[\"Nivel 600 (castrado)\",6.50],[\"Nivel 1350 (castrado)\",9.99]] },\r\n      { n: \"Solwyn\", img: \"solwyn.webp\", b: [], p: [[\"Nivel 225\",5.50],[\"Nivel 600 (castrado)\",8.99],[\"Nivel 1350 (castrado)\",12.50]] },\r\n      { n: \"Spinosaur\", img: \"spinosaur.webp\", b: [\"normal\",\"aberrante\",\"x\"], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",4.99],[\"Nivel 1350 (castrado)\",9.99]] },\r\n      { n: \"Stegosaurus\", img: \"stegosaurus.webp\", b: [\"normal\",\"aberrante\",\"tek\"], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.99],[\"Nivel 1350 (castrado)\",7.99]] },\r\n      { n: \"Tapejara\", img: \"tapejara.webp\", b: [\"x\"], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Terror Bird\", img: \"terrorbird.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Therizinosaurus\", img: \"therizinosaurus.webp\", b: [], p: [[\"Nivel 225\",3.50],[\"Nivel 600 (castrado)\",5.50],[\"Nivel 1350 (castrado)\",11.99]] },\r\n      { n: \"Thorny Dragon\", img: \"thornydragon.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",6.99]] },\r\n      { n: \"Thylacoleo\", img: \"thylacoleo.webp\", b: [], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",4.50],[\"Nivel 1350 (castrado)\",8.99]] },\r\n      { n: \"Titanoboa\", img: \"titanoboa.webp\", b: [\"normal\",\"aberrante\"], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Triceratops\", img: \"triceratops.webp\", b: [\"normal\",\"aberrante\",\"tek\",\"x\"], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",4.99],[\"Nivel 1350 (castrado)\",6.50]] },\r\n      { n: \"Troodon\", img: \"troodon.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Tusoteuthis\", img: \"tusoteuthis.webp\", b: [], p: [[\"Nivel 225\",3.50],[\"Nivel 600 (castrado)\",5.50],[\"Nivel 1200 (castrado)\",11.99]] },\r\n      { n: \"Unicorn\", img: \"unicorn.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Woolly Rhino\", img: \"woollyrhino.webp\", b: [\"x\"], p: [[\"Nivel 225\",3.50],[\"Nivel 600 (castrado)\",5.50],[\"Nivel 1350 (castrado)\",11.99]] },\r\n      { n: \"Vulture\", img: \"vulture.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.99],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Fire Wyvern\", img: \"wyvern.webp\", b: [\"normal\",\"zombie\"], p: [[\"Nivel 225\",4.99],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1350 (castrado)\",11.99]] },\r\n      { n: \"Lightning Wyvern\", img: \"lightningwyvern.webp\", b: [\"normal\",\"zombie\"], p: [[\"Nivel 225\",4.99],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1350 (castrado)\",11.99]] },\r\n      { n: \"Poison Wyvern\", img: \"poisonwyvern.webp\", b: [\"normal\",\"zombie\"], p: [[\"Nivel 225\",4.99],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1350 (castrado)\",11.99]] },\r\n      { n: \"Veilwyn\", img: \"veilwyn.webp\", b: [], p: [[\"Nivel 225\",2.99],[\"Nivel 600 (castrado)\",8.99],[\"Nivel 1350 (castrado)\",12.50]] },\r\n      { n: \"Velonasaur\", img: \"velonasaur.webp\", b: [], p: [[\"Nivel 225\",4.50],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1350 (castrado)\",11.99]] },\r\n      { n: \"Xiphactinus\", img: \"xiphactinus.webp\", b: [\"x\"], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",5.50],[\"Nivel 1200 (castrado)\",9.99]] },\r\n      { n: \"Yi Ling\", img: \"yiling.webp\", b: [], p: [[\"Nivel 225\",4.50],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1350 (castrado)\",13.99]] },\r\n      { n: \"Yutyrannus\", img: \"yutyrannus.webp\", b: [\"x\"], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",4.50],[\"Nivel 1350 (castrado)\",9.99]] },\r\n      { n: \"Astrocetus\", img: \"astrocetus.webp\", b: [], p: [[\"Nivel 225\",4.50],[\"Nivel 600 (castrado)\",6.50],[\"Nivel 1350 (castrado)\",10.50]] },\r\n      { n: \"Bloodstalker\", img: \"bloodstalker.webp\", b: [], p: [[\"Nivel 225\",4.50],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1350 (castrado)\",11.99]] },\r\n      { n: \"Ferox\", img: \"ferox.webp\", b: [], p: [[\"Nivel 225\",3.99],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1350 (castrado)\",11.99]] },\r\n      { n: \"Magmasaur\", img: \"magmasaur.webp\", b: [], p: [[\"Nivel 225\",4.99],[\"Nivel 600 (castrado)\",9.99],[\"Nivel 1350 (castrado)\",14.99]] },\r\n      { n: \"Megachelon\", img: \"megachelon.webp\", b: [], p: [[\"Nivel 225\",3.50],[\"Nivel 600 (castrado)\",6.99],[\"Nivel 1350 (castrado)\",10.50]] },\r\n      { n: \"Tidepup\", img: \"tidepup.webp\", b: [], p: [[\"Nivel 225\",3.99],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1350 (castrado)\",11.99]] },\r\n      { n: \"Palaeoctopus\", img: \"palaeoctopus.webp\", b: [], p: [[\"Nivel 225\",3.50],[\"Nivel 600 (castrado)\",6.99],[\"Nivel 1350 (castrado)\",11.99]] },\r\n      { n: \"Parrot\", img: \"parrot.webp\", b: [], p: [[\"Nivel 225\",3.50],[\"Nivel 600 (castrado)\",6.50],[\"Nivel 1350 (castrado)\",9.99]] },\r\n      { n: \"Cryolophosaurus\", img: \"cryolophosaurus.webp\", b: [\"normal\",\"x\"], p: [[\"Nivel 225\",2.99],[\"Nivel 600 (castrado)\",5.50],[\"Nivel 1350 (castrado)\",8.50]] },\r\n      { n: \"Umbra\", img: \"umbra.webp\", b: [\"normal\"], p: [[\"Nivel 225\",4.50],[\"Nivel 600 (castrado)\",12.50],[\"Nivel 1350 (castrado)\",19.50]] },\r\n      { n: \"Lumina\", img: \"lumina.webp\", b: [\"normal\"], p: [[\"Nivel 225\",3.50],[\"Nivel 600 (castrado)\",8.50],[\"Nivel 1350 (castrado)\",13.50]] },\r\n      { n: \"Concavenator\", img: \"concavenator.webp\", b: [\"normal\",\"aberrante\",\"x\"], p: [[\"Nivel 225\",3.50],[\"Nivel 600 (castrado)\",6.99],[\"Nivel 1350 (castrado)\",11.99]] },\r\n      { n: \"Boaratos\", img: \"boaratos.webp\", b: [], p: [[\"Nivel 225\",4.50],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1350 (castrado)\",14.50]] }\r\n    ];\r\n\r\n    \/\/ ------------------------------------------------------------\r\n    \/\/ GENES: organizados por categor\u00eda para el desplegable del extra\r\n    \/\/ de m\u00e1s abajo. Cada gen lleva \"n\" (nombre) y \"d\" (descripci\u00f3n,\r\n    \/\/ se muestra debajo del desplegable al elegirlo). Para a\u00f1adir o\r\n    \/\/ quitar un gen, edita solo esta lista; para a\u00f1adir una categor\u00eda\r\n    \/\/ nueva, copia un bloque { cat: \"...\", items: [...] }.\r\n    \/\/ ------------------------------------------------------------\r\n    var GENES = [\r\n      { cat: \"Reducci\u00f3n de peso (inventario)\", items: [\r\n        { n: \"Planta-portadora\", d: \"Reduce el peso de las plantas en su inventario.\" },\r\n        { n: \"Carne-Lleva\", d: \"Reduce el peso de la carne en su inventario.\" },\r\n        { n: \"Con carcasa\", d: \"Reduce el peso de las canales en su inventario.\" },\r\n        { n: \"Mineral-Holding\", d: \"Reduce el peso de los minerales en su inventario.\" },\r\n        { n: \"De origen ex\u00f3tico\", d: \"Reduce el peso de los art\u00edculos ex\u00f3ticos en su inventario.\" },\r\n        { n: \"Portador de desierto\", d: \"Reduce el peso de los objetos de Tierra quemada en su inventario.\" },\r\n        { n: \"Cavernas\", d: \"Reduce el peso de los objetos de aberraci\u00f3n en su inventario.\" },\r\n        { n: \"Contenedores de desechos\", d: \"Reduce el peso de los objetos de extinci\u00f3n en su inventario.\" }\r\n      ]},\r\n      { cat: \"Genes de cr\u00eda (Robusto \/ Fr\u00e1gil \/ Mutable)\", items: [\r\n        { n: \"Salud-Robusto\", d: \"M\u00e1s probabilidad de que las cr\u00edas hereden la salud m\u00e1s alta de sus padres.\" },\r\n        { n: \"Salud-Fr\u00e1gil\", d: \"M\u00e1s probabilidad de que las cr\u00edas hereden la salud m\u00e1s baja de sus padres.\" },\r\n        { n: \"Salud-Mutable\", d: \"La salud es altamente mutable: m\u00e1s probabilidad de mutaciones en las cr\u00edas.\" },\r\n        { n: \"Resistencia-Robusto\", d: \"M\u00e1s probabilidad de que las cr\u00edas hereden la resistencia m\u00e1s alta de sus padres.\" },\r\n        { n: \"Resistencia-Fr\u00e1gil\", d: \"M\u00e1s probabilidad de que las cr\u00edas hereden la resistencia m\u00e1s baja de sus padres.\" },\r\n        { n: \"Resistencia-Mutable\", d: \"La resistencia es altamente mutable: m\u00e1s probabilidad de mutaciones en las cr\u00edas.\" },\r\n        { n: \"Ox\u00edgeno-Robusto\", d: \"M\u00e1s probabilidad de que las cr\u00edas hereden el ox\u00edgeno m\u00e1s alto de sus padres.\" },\r\n        { n: \"Ox\u00edgeno-Fr\u00e1gil\", d: \"M\u00e1s probabilidad de que las cr\u00edas hereden el ox\u00edgeno m\u00e1s bajo de sus padres.\" },\r\n        { n: \"Ox\u00edgeno-Mutable\", d: \"El ox\u00edgeno es altamente mutable: m\u00e1s probabilidad de mutaciones en las cr\u00edas.\" },\r\n        { n: \"Comida-Robusto\", d: \"M\u00e1s probabilidad de que las cr\u00edas hereden la comida m\u00e1s alta de sus padres.\" },\r\n        { n: \"Comida-Fr\u00e1gil\", d: \"M\u00e1s probabilidad de que las cr\u00edas hereden la comida m\u00e1s baja de sus padres.\" },\r\n        { n: \"Comida-Mutable\", d: \"La comida es altamente mutable: m\u00e1s probabilidad de mutaciones en las cr\u00edas.\" },\r\n        { n: \"Peso-Robusto\", d: \"M\u00e1s probabilidad de que las cr\u00edas hereden el peso m\u00e1s alto de sus padres.\" },\r\n        { n: \"Peso-Fr\u00e1gil\", d: \"M\u00e1s probabilidad de que las cr\u00edas hereden el peso m\u00e1s bajo de sus padres.\" },\r\n        { n: \"Peso-Mutable\", d: \"El peso es altamente mutable: m\u00e1s probabilidad de mutaciones en las cr\u00edas.\" },\r\n        { n: \"Cuerpo a cuerpo-Robusto\", d: \"M\u00e1s probabilidad de que las cr\u00edas hereden el da\u00f1o cuerpo a cuerpo m\u00e1s alto de sus padres.\" },\r\n        { n: \"Cuerpo a cuerpo-Fr\u00e1gil\", d: \"M\u00e1s probabilidad de que las cr\u00edas hereden el da\u00f1o cuerpo a cuerpo m\u00e1s bajo de sus padres.\" },\r\n        { n: \"Cuerpo a cuerpo-Mutable\", d: \"El da\u00f1o cuerpo a cuerpo es altamente mutable: m\u00e1s probabilidad de mutaciones en las cr\u00edas.\" }\r\n      ]},\r\n      { cat: \"Comportamiento y combate\", items: [\r\n        { n: \"Enojado\", d: \"Obtiene un aumento de da\u00f1o saliente a medida que disminuye la salud.\" },\r\n        { n: \"Tenaz\", d: \"Obtiene reducci\u00f3n de da\u00f1o entrante a medida que disminuye la salud.\" },\r\n        { n: \"Vamp\u00edrico\", d: \"Recupera salud equivalente a un porcentaje del da\u00f1o que inflige.\" },\r\n        { n: \"C\u00e1lido\", d: \"Es excepcionalmente c\u00e1lida y protege a su jinete del fr\u00edo.\" },\r\n        { n: \"Fr\u00edo\", d: \"Es excepcionalmente fr\u00eda y protege a su jinete del calor.\" },\r\n        { n: \"Matanza de gigantes\", d: \"Inflige da\u00f1o adicional a objetivos m\u00e1s grandes, pero menos a los peque\u00f1os.\" },\r\n        { n: \"Alta resistencia\", d: \"Puede correr durante m\u00e1s tiempo que la mayor\u00eda.\" },\r\n        { n: \"Acu\u00e1tico\", d: \"Se ha adaptado a la vida en el agua.\" },\r\n        { n: \"Fren\u00e9tico\", d: \"Drena el letargo m\u00e1s r\u00e1pido de lo normal.\" },\r\n        { n: \"Distraer\", d: \"Distrae a los objetivos que golpea: inflige menos da\u00f1o a todo lo que no sea ella misma.\" },\r\n        { n: \"Excitable\", d: \"Se emociona cuanto m\u00e1s est\u00e1 en combate, siguiendo ataques simples con otros m\u00e1s poderosos.\" },\r\n        { n: \"Agresivo\", d: \"Se vuelve m\u00e1s r\u00e1pida al atacar.\" },\r\n        { n: \"Cobardemente\", d: \"Se vuelve m\u00e1s r\u00e1pida cuando es atacada.\" },\r\n        { n: \"Adormecer\", d: \"Puede ignorar el da\u00f1o\u2026 por un tiempo.\" },\r\n        { n: \"Despreocupado\", d: \"Es m\u00e1s r\u00e1pida cuando no est\u00e1 pensando en luchar.\" },\r\n        { n: \"Atl\u00e9tico\", d: \"Su gran capacidad pulmonar le permite regenerar r\u00e1pidamente salud y resistencia.\" },\r\n        { n: \"Aprendizaje r\u00e1pido\", d: \"Tiene una aptitud natural para crecer y aprender nuevas habilidades.\" },\r\n        { n: \"Nocturno\", d: \"Se ha adaptado para ser m\u00e1s activa durante la noche.\" },\r\n        { n: \"Diurno\", d: \"Se ha adaptado para ser m\u00e1s activa durante el d\u00eda.\" },\r\n        { n: \"Metabolismo lento\", d: \"Quema sus reservas de alimentos lentamente.\" },\r\n        { n: \"Graso\", d: \"Su grasa act\u00faa como una capa protectora contra da\u00f1os entrantes.\" },\r\n        { n: \"Protector\", d: \"Protege ferozmente a su jinete, incluso despu\u00e9s de que ya no lo monta.\" },\r\n        { n: \"Matanza del rey\", d: \"Tiene una aversi\u00f3n instintiva por los enemigos \\\"importantes\\\", pero es menos agresiva en otros aspectos.\" },\r\n        { n: \"Golpes r\u00e1pidos\", d: \"Golpea m\u00e1s r\u00e1pido, pero causa menos da\u00f1o.\" },\r\n        { n: \"De gran impacto\", d: \"Golpea m\u00e1s fuerte, pero menos r\u00e1pido.\" },\r\n        { n: \"Agresivo (truco 1)\", d: \"Se vuelve m\u00e1s r\u00e1pida al atacar.\" },\r\n        { n: \"Agresivo (truco 2)\", d: \"Se vuelve m\u00e1s r\u00e1pida al atacar.\" }\r\n      ]},\r\n      { cat: \"Utilidad y montura\", items: [\r\n        { n: \"Se\u00f1or de las bestias\", d: \"Aumenta el da\u00f1o cuerpo a cuerpo de las criaturas que monta.\" },\r\n        { n: \"Sanguinario\", d: \"Aumenta el da\u00f1o cuerpo a cuerpo.\" },\r\n        { n: \"Baluarte\", d: \"Reduce el da\u00f1o recibido mientras est\u00e1 en modo Torreta.\" },\r\n        { n: \"Eficiente\", d: \"Aumenta el rendimiento de las cosechas.\" },\r\n        { n: \"Piel de hierro\", d: \"Aumenta la salud m\u00e1xima de las criaturas que monta.\" },\r\n        { n: \"Mula de carga\", d: \"Tiene mayor capacidad de carga.\" },\r\n        { n: \"Tirador de primera\", d: \"Aumenta el da\u00f1o infligido mientras est\u00e1 en modo Torreta.\" },\r\n        { n: \"R\u00e1pido\", d: \"Aumenta la velocidad de movimiento.\" }\r\n      ]}\r\n    ];\r\n\r\n    \/\/ ------------------------------------------------------------\r\n    \/\/ EXTRAS: opciones que aparecen en TODOS los dinos, debajo de\r\n    \/\/ sus niveles. Para a\u00f1adir otra, copia un bloque y cambia texto\r\n    \/\/ y precio (con punto decimal).\r\n    \/\/   - \"stats\": lista corta -> se muestra como botones.\r\n    \/\/   - \"genes\": lista larga -> se muestra como desplegable.\r\n    \/\/   - \"levels\": true limita la opci\u00f3n solo al nivel base (225).\r\n    \/\/     Si lo dejas sin poner (o en null), la opci\u00f3n vale para\r\n    \/\/     cualquiera de los tres niveles, a precio fijo.\r\n    \/\/ ------------------------------------------------------------\r\n    var EXTRAS = [\r\n      {\r\n        label: \"{nivel} con 1 stat a elegir + pintura\",\r\n        price: 15.00,\r\n        note: \"Solo para el nivel base (225): se entrega con 1 stat a elegir en 60 puntos base + pintura. Son 15 \u20ac sobre el precio de ese nivel. Los niveles 600 y 1350 no llevan esta opci\u00f3n.\",\r\n        stats: [\"Salud\", \"Energ\u00eda\", \"Ox\u00edgeno\", \"Comida\", \"Peso\", \"Da\u00f1o\"],\r\n        color: true,\r\n        levels: true\r\n      }\r\n    ];\r\n\r\n    var BADGE_LABELS = {\r\n      normal: \"Normal\",\r\n      zombie: \"Zombie\",\r\n      x: \"X\",\r\n      aberrante: \"Aberrante\",\r\n      tek: \"Tek\",\r\n      tiza: \"Tiza\",\r\n      hielo: \"Hielo\"\r\n    };\r\n\r\n    \/\/ ------------------------------------------------------------\r\n    \/\/ SEXO: obligatorio en todos los dinos y en todos los niveles.\r\n    \/\/ El recargo de la hembra se cambia aqu\u00ed (en euros).\r\n    \/\/ ------------------------------------------------------------\r\n    var SEXOS = [\"macho\", \"hembra\"];\r\n    var SEX_LABELS = { macho: \"Macho\", hembra: \"Hembra\" };\r\n    var RECARGO_SEXO = { macho: 0, hembra: 1 };\r\n\r\n    \/\/ Precio fijo del gen opcional. Se puede a\u00f1adir en cualquier nivel\r\n    \/\/ (225, 600, 1350) y en cualquier extra, como una casilla opcional\r\n    \/\/ m\u00e1s dentro de esa misma fila.\r\n    var GENE_PRICE = 6.00;\r\n\r\n    function sexSurcharge(sex) {\r\n      return (sex && RECARGO_SEXO[sex]) ? RECARGO_SEXO[sex] : 0;\r\n    }\r\n\r\n    \/\/ Variantes con recargo (se suma al precio de cada nivel)\r\n    var RECARGO = { aberrante: 1, x: 1, tek: 1 };\r\n\r\n    function surcharge(variant) {\r\n      return (variant && RECARGO[variant]) ? RECARGO[variant] : 0;\r\n    }\r\n\r\n    \/\/ Opciones del selector: siempre \"Normal\" primero, despu\u00e9s sus variantes\r\n    function variantOptions(dino) {\r\n      if (!dino.b || dino.b.length === 0) return [];\r\n      var rest = dino.b.filter(function (v) { return v !== \"normal\"; });\r\n      return [\"normal\"].concat(rest);\r\n    }\r\n\r\n    \/\/ ------------------------------------------------------------\r\n    \/\/ FILTROS: cada grupo lleva la lista de dinos que lo componen.\r\n    \/\/ Para mover un dino de mapa, a\u00f1\u00e1delo o qu\u00edtalo de estas listas\r\n    \/\/ (el nombre debe escribirse igual que en DINOS).\r\n    \/\/ \"Todo\" y \"Terrestres\" se calculan solos.\r\n    \/\/ ------------------------------------------------------------\r\n    var GRUPOS = [\r\n      { id: \"todo\", label: \"Todo\" },\r\n\r\n      { id: \"destacados\", label: \"Destacados\", n: [\r\n        \"Acrocanthosaurus\",\"Aureliax\",\"Bison\",\"Burrowbuck\",\"Deinonychus\",\"Desmodus\",\"Drakeling\",\"Elderclaw\",\r\n        \"Grand Tortugar\",\"Griffin\",\"Gloon\",\"Gigadesmodus\",\"Maeguana\",\"Malwyn\",\"Megaraptor\",\"Ossidon\",\"Solwyn\",\r\n        \"Veilwyn\",\"Astrocetus\",\"Bloodstalker\",\"Magmasaur\",\"Megachelon\",\"Tidepup\",\"Palaeoctopus\",\"Parrot\",\r\n        \"Cryolophosaurus\",\"Umbra\",\"Lumina\",\"Concavenator\",\"Boaratos\"] },\r\n\r\n      { id: \"island\", label: \"The Island\", n: [\r\n        \"Achatina\",\"Allosaurus\",\"Anglerfish\",\"Ankylosaurus\",\"Araneo\",\"Archaeopteryx\",\"Argentavis\",\"Arthropluera\",\r\n        \"Baryonyx\",\"Basilosaurus\",\"Beelzebufo\",\"Brontosaurus\",\"Carbonemys\",\"Carcharodontosaurus\",\"Carnotaurus\",\r\n        \"Castoroides\",\"Ceratosaurus\",\"Chalicotherium\",\"Compognathus\",\"Daeodon\",\"Deinosuchus\",\"Deinotherium\",\r\n        \"Dilophosaur\",\"Dimetrodon\",\"Dimorphodon\",\"Diplocaulus\",\"Direbear\",\"Direwolf\",\"Doedicurus\",\"Dodo\",\r\n        \"Dung Beetle\",\"Dunkleosteus\",\"Electrophorus\",\"Equus\",\"Gallimimus\",\"Giant Bee\",\"Giganotosaurus\",\r\n        \"Gigantopithecus\",\"Gigantoraptor\",\"Hesperornis\",\"Hyaenodon\",\"Ichthyornis\",\"Ichthyosaurus\",\"Iguanodon\",\r\n        \"Kairuku\",\"Kaprosuchus\",\"Kentrosaurus\",\"Lystrosaurus\",\"Mammoth\",\"Manta\",\"Megalania\",\"Megaloceros\",\r\n        \"Megalodon\",\"Megalosaurus\",\"Megatherium\",\"Mesopithecus\",\"Microraptor\",\"Mosasaurus\",\"Moschops\",\r\n        \"Onychonycteris\",\"Otter\",\"Oviraptor\",\"Ovis\",\"Pachycephalosaurus\",\"Pachyrhinosaurus\",\"Paraceratherium\",\r\n        \"Parasaurolophus\",\"Pegomastax\",\"Pelagornis\",\"Phiomia\",\"Plesiosaur\",\"Procoptodon\",\"Pteranodon\",\r\n        \"Pulmonoscorpius\",\"Purlovia\",\"Quetzalcoatlus\",\"Raptor\",\"Rex\",\"Rhyniognatha\",\"Sabertooth\",\"Sarcosuchus\",\r\n        \"Spinosaur\",\"Stegosaurus\",\"Tapejara\",\"Terror Bird\",\"Therizinosaurus\",\"Thylacoleo\",\"Titanoboa\",\r\n        \"Triceratops\",\"Troodon\",\"Tusoteuthis\",\"Unicorn\",\"Woolly Rhino\",\"Xiphactinus\",\"Yutyrannus\"] },\r\n\r\n      { id: \"scorched\", label: \"Scorched Earth\", n: [\r\n        \"Ceratosaurus\",\"Fasolasuchus\",\"Jerboa\",\"Lymantria\",\"Mantis\",\"Morellatops\",\"Phoenix\",\"Rock Elemental\",\r\n        \"Thorny Dragon\",\"Vulture\",\"Fire Wyvern\",\"Lightning Wyvern\",\"Poison Wyvern\",\"Concavenator\"] },\r\n\r\n      { id: \"center\", label: \"The Center\", n: [\"Pyromane\",\"Shastasaurus\"] },\r\n\r\n      { id: \"aberration\", label: \"Aberration\", n: [\r\n        \"Achatina\",\"Basilisco\",\"Anglerfish\",\"Ankylosaurus\",\"Araneo\",\"Arthropluera\",\"Baryonyx\",\"Beelzebufo\",\r\n        \"Bulbdog\",\"Carbonemys\",\"Carnotaurus\",\"Cosmo\",\"Dimetrodon\",\"Diplocaulus\",\"Direbear\",\"Doedicurus\",\"Dodo\",\r\n        \"Dung Beetle\",\"Electrophorus\",\"Equus\",\"Fasolasuchus\",\"Featherlight\",\"Glowtail\",\"Gigantoraptor\",\r\n        \"Iguanodon\",\"Karkinos\",\"Lystrosaurus\",\"Manta\",\"Megalosaurus\",\"Moschops\",\"Otter\",\"Oviraptor\",\"Ovis\",\r\n        \"Paraceratherium\",\"Parasaurolophus\",\"Pulmonoscorpius\",\"Purlovia\",\"Raptor\",\"Ravager\",\"Reaper\",\r\n        \"Rock Drake\",\"Roll Rat\",\"Shinehorn\",\"Spinosaur\",\"Stegosaurus\",\"Titanoboa\",\"Triceratops\",\"Yi Ling\",\r\n        \"Concavenator\"] },\r\n\r\n      { id: \"extinction\", label: \"Extinction\", n: [\r\n        \"Armadoggo\",\"Dreadnoughtus\",\"Enforcer\",\"Gacha\",\"Gasbags\",\"Managarmr\",\"Mek\",\"Snow Owl\",\"Velonasaur\",\r\n        \"Concavenator\"] },\r\n\r\n      { id: \"astraeos\", label: \"Astraeos\", n: [\"Grand Tortugar\",\"Maeguana\",\"Concavenator\",\"Boaratos\"] },\r\n\r\n      { id: \"ragnarok\", label: \"Ragnarok\", n: [\r\n        \"Bison\",\"Drakeling\",\"Ice Wyvern\",\"Griffin\",\"Ossidon\",\"Veilwyn\",\"Concavenator\"] },\r\n\r\n      { id: \"valguero\", label: \"Valguero\", n: [\"Deinonychus\",\"Elderclaw\",\"Megaraptor\"] },\r\n\r\n      { id: \"lostcolony\", label: \"Lost Colony\", n: [\r\n        \"Aureliax\",\"Desmodus\",\"Gloon\",\"Gigadesmodus\",\"Malwyn\",\"Ossidon\",\"Solwyn\",\"Veilwyn\",\"Cryolophosaurus\"] },\r\n\r\n      { id: \"genesis1\", label: \"Genesis 1\", n: [\r\n        \"Acrocanthosaurus\",\"Archelon\",\"Allosaurus\",\"Ankylosaurus\",\"Argentavis\",\"Basilosaurus\",\"Deinosuchus\",\r\n        \"Dunkleosteus\",\"Ichthyosaurus\",\"Megalodon\",\"Mosasaurus\",\"Otter\",\"Paraceratherium\",\"Parasaurolophus\",\r\n        \"Raptor\",\"Rex\",\"Rock Elemental\",\"Sabertooth\",\"Spinosaur\",\"Tapejara\",\"Triceratops\",\"Woolly Rhino\",\r\n        \"Xiphactinus\",\"Yutyrannus\",\"Astrocetus\",\"Bloodstalker\",\"Ferox\",\"Magmasaur\",\"Megachelon\",\"Tidepup\",\r\n        \"Palaeoctopus\",\"Parrot\",\"Cryolophosaurus\",\"Umbra\",\"Lumina\",\"Concavenator\"] },\r\n\r\n      { id: \"terrestres\", label: \"Terrestres\" },\r\n\r\n      { id: \"voladores\", label: \"Voladores\", n: [\r\n        \"Argentavis\",\"Desmodus\",\"Drakeling\",\"Dreadmare\",\"Featherlight\",\"Ice Wyvern\",\"Griffin\",\"Gigadesmodus\",\r\n        \"Lymantria\",\"Pelagornis\",\"Phoenix\",\"Pteranodon\",\"Quetzalcoatlus\",\"Rhyniognatha\",\"Snow Owl\",\"Tapejara\",\r\n        \"Fire Wyvern\",\"Lightning Wyvern\",\"Poison Wyvern\",\"Astrocetus\",\"Parrot\",\"Umbra\",\"Lumina\"] },\r\n\r\n      { id: \"acuaticos\", label: \"Acu\u00e1ticos\", n: [\r\n        \"Archelon\",\"Anglerfish\",\"Basilosaurus\",\"Dunkleosteus\",\"Electrophorus\",\"Helicoprion\",\"Ichthyosaurus\",\r\n        \"Manta\",\"Megalodon\",\"Mosasaurus\",\"Plesiosaur\",\"Shastasaurus\",\"Tusoteuthis\",\"Xiphactinus\",\"Megachelon\",\r\n        \"Tidepup\",\"Palaeoctopus\"] },\r\n\r\n      { id: \"hombro\", label: \"Dino de hombro\", n: [\r\n        \"Archaeopteryx\",\"Bulbdog\",\"Cat\",\"Cosmo\",\"Dimorphodon\",\"Drakeling\",\"Featherlight\",\"Glowtail\",\r\n        \"Ichthyornis\",\"Jerboa\",\"Pyromane\",\"Shinehorn\",\"Vulture\",\"Ferox\",\"Tidepup\",\"Parrot\"] }\r\n    ];\r\n\r\n    \/\/ Dinos que no cuentan como terrestres aunque no est\u00e9n en voladores ni acu\u00e1ticos\r\n    var NO_TERRESTRES = [\"Archaeopteryx\",\"Dimorphodon\",\"Giant Bee\",\"Ichthyornis\",\"Onychonycteris\",\"Vulture\"];\r\n\r\n    \/\/ \"Terrestres\" = todo lo que no vuela, no nada y no est\u00e1 en la lista de arriba\r\n    (function () {\r\n      function listaDe(id) {\r\n        for (var i = 0; i < GRUPOS.length; i++) if (GRUPOS[i].id === id) return GRUPOS[i];\r\n        return null;\r\n      }\r\n      var fuera = {};\r\n      listaDe(\"voladores\").n.concat(listaDe(\"acuaticos\").n, NO_TERRESTRES).forEach(function (nm) { fuera[nm] = true; });\r\n      listaDe(\"terrestres\").n = DINOS.filter(function (d) { return !fuera[d.n]; }).map(function (d) { return d.n; });\r\n    })();\r\n\r\n    \/\/ \u00cdndices r\u00e1pidos y recuento real de cada filtro\r\n    GRUPOS.forEach(function (g) {\r\n      if (!g.n) { g.count = DINOS.length; return; }\r\n      var set = {};\r\n      g.n.forEach(function (nm) { set[nm] = true; });\r\n      g.set = set;\r\n      g.count = DINOS.filter(function (d) { return set[d.n]; }).length;\r\n    });\r\n\r\n    var grupoActivo = \"todo\";\r\n\r\n    \/\/ ------------------------------------------------------------\r\n    \/\/ FILTRO POR VARIANTE: fila aparte encima del filtro de mapa.\r\n    \/\/ Se calcula solo mirando qu\u00e9 dinos tienen esa variante en su\r\n    \/\/ campo \"b\". Clic otra vez en la misma variante la desactiva.\r\n    \/\/ ------------------------------------------------------------\r\n    var VARIANTES = [\r\n      { id: \"aberrante\", label: \"Aberrante\" },\r\n      { id: \"tek\", label: \"Tek\" },\r\n      { id: \"x\", label: \"X\" }\r\n    ];\r\n    VARIANTES.forEach(function (v) {\r\n      v.count = DINOS.filter(function (d) { return d.b.indexOf(v.id) !== -1; }).length;\r\n    });\r\n    var varianteActiva = null;\r\n\r\n    function enVariante(dino) {\r\n      if (!varianteActiva) return true;\r\n      return dino.b.indexOf(varianteActiva) !== -1;\r\n    }\r\n\r\n    function renderVarianteChips() {\r\n      var wrap = document.getElementById(\"thar-chips-variante\");\r\n      wrap.innerHTML = \"\";\r\n      VARIANTES.forEach(function (v) {\r\n        var on = v.id === varianteActiva;\r\n        var chip = el(\"button\", \"thar-chip\" + (on ? \" on\" : \"\"));\r\n        chip.type = \"button\";\r\n        chip.appendChild(el(\"span\", null, v.label));\r\n        chip.appendChild(el(\"span\", \"thar-chip-count\", String(v.count)));\r\n        chip.setAttribute(\"aria-pressed\", on ? \"true\" : \"false\");\r\n        chip.addEventListener(\"click\", function () {\r\n          varianteActiva = on ? null : v.id;\r\n          renderVarianteChips();\r\n          render(searchInput ? searchInput.value : \"\");\r\n        });\r\n        wrap.appendChild(chip);\r\n      });\r\n    }\r\n\r\n    \/\/ ---------- Estado ----------\r\n    var cart = {};        \/\/ clave -> { name, variant, sex, level, price, qty }\r\n\r\n    var root = document.getElementById(\"tharyon-root\");\r\n    var grid = document.getElementById(\"thar-grid\");\r\n    var searchInput = document.getElementById(\"thar-search\");\r\n    var bar = document.getElementById(\"thar-bar\");\r\n    var barCount = document.getElementById(\"thar-bar-count\");\r\n    var barTotal = document.getElementById(\"thar-bar-total\");\r\n    var modal = document.getElementById(\"thar-modal\");\r\n    var output = document.getElementById(\"thar-output\");\r\n    var copiedMsg = document.getElementById(\"thar-copied\");\r\n\r\n    function eur(n) {\r\n      return n.toFixed(2).replace(\".\", \",\") + \" \u20ac\";\r\n    }\r\n\r\n    function el(tag, className, text) {\r\n      var e = document.createElement(tag);\r\n      if (className) e.className = className;\r\n      if (text !== undefined) e.textContent = text;\r\n      return e;\r\n    }\r\n\r\n    \/\/ Cada fila (dino + nivel) guarda UNA sola configuraci\u00f3n a la vez:\r\n    \/\/ si cambias sexo\/variante\/gen con cantidad > 0, se actualiza esa\r\n    \/\/ misma l\u00ednea del pedido en vez de crear una nueva.\r\n    function keyFor(dino, levelLabel) {\r\n      return dino.n + \"||\" + levelLabel;\r\n    }\r\n\r\n    function changeQty(dino, levelLabel, basePrice, variant, stat, paint, sex, delta, gene) {\r\n      if (!sex) return 0; \/\/ el sexo es obligatorio\r\n      var k = keyFor(dino, levelLabel);\r\n      var item = cart[k];\r\n      var price = basePrice + surcharge(variant) + sexSurcharge(sex) + (gene ? GENE_PRICE : 0);\r\n      if (!item) {\r\n        item = cart[k] = {\r\n          name: dino.n,\r\n          variant: variant,\r\n          sex: sex,\r\n          level: levelLabel,\r\n          stat: stat || null,\r\n          gene: gene || null,\r\n          paint: !!paint,\r\n          price: price,\r\n          qty: 0\r\n        };\r\n      } else {\r\n        item.variant = variant;\r\n        item.sex = sex;\r\n        item.stat = stat || null;\r\n        item.gene = gene || null;\r\n        item.paint = !!paint;\r\n        item.price = price;\r\n      }\r\n      item.qty += delta;\r\n      if (item.qty <= 0) delete cart[k];\r\n      updateBar();\r\n      return cart[k] ? cart[k].qty : 0;\r\n    }\r\n\r\n    function totals() {\r\n      var units = 0, sum = 0;\r\n      for (var k in cart) {\r\n        units += cart[k].qty;\r\n        sum += cart[k].qty * cart[k].price;\r\n      }\r\n      return { units: units, sum: sum };\r\n    }\r\n\r\n    function updateBar() {\r\n      var t = totals();\r\n      if (t.units > 0) {\r\n        bar.classList.add(\"show\");\r\n        root.classList.add(\"has-order\");\r\n      } else {\r\n        bar.classList.remove(\"show\");\r\n        root.classList.remove(\"has-order\");\r\n      }\r\n      barCount.textContent = t.units === 1 ? \"1 dino seleccionado\" : t.units + \" dinos seleccionados\";\r\n      barTotal.textContent = eur(t.sum);\r\n    }\r\n\r\n    \/\/ ---------- Tarjetas ----------\r\n    function buildCard(dino) {\r\n      var card = el(\"div\", \"thar-card\");\r\n\r\n      card.appendChild(el(\"h3\", \"thar-card-title\", dino.n));\r\n      card.appendChild(el(\"div\", \"thar-card-underline\"));\r\n\r\n      var badgeWrap = el(\"div\", \"thar-badges\");\r\n      (dino.b || []).forEach(function (b) {\r\n        badgeWrap.appendChild(el(\"span\", \"thar-badge \" + b, BADGE_LABELS[b] || b));\r\n      });\r\n      card.appendChild(badgeWrap);\r\n\r\n      if (dino.note) card.appendChild(el(\"div\", \"thar-card-note\", dino.note));\r\n\r\n      var imgWrap = el(\"div\", \"thar-card-image\");\r\n      var img = document.createElement(\"img\");\r\n      img.alt = dino.n;\r\n      img.referrerPolicy = \"no-referrer\";\r\n      img.onerror = function () {\r\n        \/\/ Si la imagen no carga (enlace roto, hosting ca\u00eddo o\r\n        \/\/ bloqueado, etc.) mostramos un aviso claro en vez de dejar\r\n        \/\/ un hueco en blanco sin explicaci\u00f3n.\r\n        img.remove();\r\n        imgWrap.classList.add(\"thar-img-error\");\r\n        imgWrap.appendChild(document.createTextNode(\"Imagen no disponible\"));\r\n      };\r\n      img.src = IMG_BASE + dino.img;\r\n      imgWrap.appendChild(img);\r\n      card.appendChild(imgWrap);\r\n\r\n      var prices = el(\"div\", \"thar-prices\");\r\n      var rowRefs = [];\r\n      var opts = variantOptions(dino);\r\n\r\n      function addRow(levelLabel, basePrice, stats, pintura, levels) {\r\n        var chosen = opts.length ? opts[0] : null;\r\n        var chosenStat = null;\r\n        var chosenGene = null;\r\n        var geneEnabled = false;\r\n        var chosenSex = null; \/\/ obligatorio: nadie viene marcado por defecto\r\n        var chosenLevel = (levels && levels.length === 1) ? levels[0][0] : null;\r\n\r\n        function fullLabel() {\r\n          var varios = levels && levels.length > 1;\r\n          return (varios && chosenLevel) ? levelLabel + \" \u2014 \" + chosenLevel : levelLabel;\r\n        }\r\n\r\n        \/\/ Con selector de nivel, el precio es el del nivel elegido + el del extra\r\n        function precioBase() {\r\n          if (!levels || !levels.length || !chosenLevel) return basePrice;\r\n          for (var i = 0; i < levels.length; i++) {\r\n            if (levels[i][0] === chosenLevel) return basePrice + levels[i][1];\r\n          }\r\n          return basePrice;\r\n        }\r\n\r\n        var row = el(\"div\", \"thar-price-row\" + (levels ? \" thar-extra-row\" : \"\"));\r\n        var top = el(\"div\", \"thar-row-top\");\r\n        top.appendChild(el(\"span\", \"thar-level\", levelLabel));\r\n        var priceEl = el(\"span\", \"thar-price\", eur(basePrice));\r\n        top.appendChild(priceEl);\r\n\r\n        var qtyWrap = el(\"div\", \"thar-qty\");\r\n        var minus = el(\"button\", null, \"\u2212\");\r\n        minus.type = \"button\";\r\n        minus.setAttribute(\"aria-label\", \"Quitar uno de \" + dino.n + \" \" + levelLabel);\r\n        var count = el(\"span\", \"thar-count\", \"0\");\r\n        var plus = el(\"button\", \"add\", \"+\");\r\n        plus.type = \"button\";\r\n        plus.setAttribute(\"aria-label\", \"A\u00f1adir \" + dino.n + \" \" + levelLabel);\r\n\r\n        minus.addEventListener(\"click\", function () { paint(changeQty(dino, fullLabel(), precioBase(), chosen, chosenStat, pintura, chosenSex, -1, chosenGene)); });\r\n        plus.addEventListener(\"click\", function () { paint(changeQty(dino, fullLabel(), precioBase(), chosen, chosenStat, pintura, chosenSex, 1, chosenGene)); });\r\n\r\n        qtyWrap.appendChild(minus);\r\n        qtyWrap.appendChild(count);\r\n        qtyWrap.appendChild(plus);\r\n        top.appendChild(qtyWrap);\r\n        row.appendChild(top);\r\n\r\n        if (levels && levels.length > 1) {\r\n          var lvlWrap = el(\"div\", \"thar-vars thar-stats\");\r\n          lvlWrap.appendChild(el(\"span\", \"thar-stats-label\", \"Nivel:\"));\r\n          levels.forEach(function (lv) {\r\n            var chip = el(\"button\", \"thar-var thar-stat\", lv[0]);\r\n            chip.type = \"button\";\r\n            chip.setAttribute(\"aria-pressed\", \"false\");\r\n            chip.addEventListener(\"click\", function () {\r\n              chosenLevel = lv[0];\r\n              var all = lvlWrap.querySelectorAll(\".thar-stat\");\r\n              for (var i = 0; i < all.length; i++) {\r\n                all[i].classList.remove(\"on\");\r\n                all[i].setAttribute(\"aria-pressed\", \"false\");\r\n              }\r\n              chip.classList.add(\"on\");\r\n              chip.setAttribute(\"aria-pressed\", \"true\");\r\n              paint(readQty());\r\n            });\r\n            lvlWrap.appendChild(chip);\r\n          });\r\n          row.appendChild(lvlWrap);\r\n        }\r\n\r\n        \/\/ ---- Sexo: obligatorio en todas las filas ----\r\n        var sexWrap = el(\"div\", \"thar-vars thar-sexes\");\r\n        sexWrap.appendChild(el(\"span\", \"thar-stats-label\", \"Sexo:\"));\r\n        SEXOS.forEach(function (sx) {\r\n          var extra = sexSurcharge(sx);\r\n          var extraTxt = extra % 1 === 0 ? extra + \" \u20ac\" : eur(extra);\r\n          var label = SEX_LABELS[sx] + (extra ? \" +\" + extraTxt : \"\");\r\n          var chip = el(\"button\", \"thar-var thar-sex \" + sx, label);\r\n          chip.type = \"button\";\r\n          chip.setAttribute(\"aria-pressed\", \"false\");\r\n          chip.addEventListener(\"click\", function () {\r\n            chosenSex = sx;\r\n            var all = sexWrap.querySelectorAll(\".thar-sex\");\r\n            for (var i = 0; i < all.length; i++) {\r\n              all[i].classList.remove(\"on\");\r\n              all[i].setAttribute(\"aria-pressed\", \"false\");\r\n            }\r\n            chip.classList.add(\"on\");\r\n            chip.setAttribute(\"aria-pressed\", \"true\");\r\n            syncIfActive();\r\n            paint(readQty());\r\n          });\r\n          sexWrap.appendChild(chip);\r\n        });\r\n        row.appendChild(sexWrap);\r\n\r\n        if (opts.length) {\r\n          var varsWrap = el(\"div\", \"thar-vars\");\r\n          opts.forEach(function (v) {\r\n            var extra = surcharge(v);\r\n            var extraTxt = extra % 1 === 0 ? extra + \" \u20ac\" : eur(extra);\r\n            var label = (BADGE_LABELS[v] || v) + (extra ? \" +\" + extraTxt : \"\");\r\n            var chip = el(\"button\", \"thar-var \" + v + (v === chosen ? \" on\" : \"\"), label);\r\n            chip.type = \"button\";\r\n            chip.setAttribute(\"aria-pressed\", v === chosen ? \"true\" : \"false\");\r\n            chip.addEventListener(\"click\", function () {\r\n              chosen = v;\r\n              var all = varsWrap.querySelectorAll(\".thar-var\");\r\n              for (var i = 0; i < all.length; i++) {\r\n                all[i].classList.remove(\"on\");\r\n                all[i].setAttribute(\"aria-pressed\", \"false\");\r\n              }\r\n              chip.classList.add(\"on\");\r\n              chip.setAttribute(\"aria-pressed\", \"true\");\r\n              syncIfActive();\r\n              paint(readQty());\r\n            });\r\n            varsWrap.appendChild(chip);\r\n          });\r\n          row.appendChild(varsWrap);\r\n        }\r\n\r\n        if (stats && stats.length) {\r\n          var statsWrap = el(\"div\", \"thar-vars thar-stats\");\r\n          statsWrap.appendChild(el(\"span\", \"thar-stats-label\", \"Stat:\"));\r\n          stats.forEach(function (st) {\r\n            var chip = el(\"button\", \"thar-var thar-stat\", st);\r\n            chip.type = \"button\";\r\n            chip.setAttribute(\"aria-pressed\", \"false\");\r\n            chip.addEventListener(\"click\", function () {\r\n              chosenStat = \"Stat: \" + st;\r\n              var all = statsWrap.querySelectorAll(\".thar-stat\");\r\n              for (var i = 0; i < all.length; i++) {\r\n                all[i].classList.remove(\"on\");\r\n                all[i].setAttribute(\"aria-pressed\", \"false\");\r\n              }\r\n              chip.classList.add(\"on\");\r\n              chip.setAttribute(\"aria-pressed\", \"true\");\r\n              syncIfActive();\r\n              paint(readQty());\r\n            });\r\n            statsWrap.appendChild(chip);\r\n          });\r\n          row.appendChild(statsWrap);\r\n        }\r\n\r\n        \/\/ ---- Gen opcional: disponible en cualquier fila (225, 600,\r\n        \/\/ 1350 o el extra), sin duplicar sexo\/variante. ----\r\n        var geneToggleWrap = el(\"div\", \"thar-vars\");\r\n        var geneToggleBtn = el(\"button\", \"thar-var thar-gene-toggle\", \"+ Gen (+\" + eur(GENE_PRICE) + \")\");\r\n        geneToggleBtn.type = \"button\";\r\n        geneToggleBtn.setAttribute(\"aria-pressed\", \"false\");\r\n        geneToggleWrap.appendChild(geneToggleBtn);\r\n        row.appendChild(geneToggleWrap);\r\n\r\n        var genesWrap = el(\"div\", \"thar-vars thar-genes\");\r\n        genesWrap.style.display = \"none\";\r\n        genesWrap.appendChild(el(\"span\", \"thar-stats-label\", \"Gen:\"));\r\n        var geneSelect = document.createElement(\"select\");\r\n        geneSelect.className = \"thar-gene-select\";\r\n        var geneDefault = document.createElement(\"option\");\r\n        geneDefault.value = \"\";\r\n        geneDefault.textContent = \"Elige un gen\u2026\";\r\n        geneSelect.appendChild(geneDefault);\r\n        var geneDescMap = {};\r\n        GENES.forEach(function (group) {\r\n          var optgroup = document.createElement(\"optgroup\");\r\n          optgroup.label = group.cat;\r\n          group.items.forEach(function (gItem) {\r\n            geneDescMap[gItem.n] = gItem.d;\r\n            var opt = document.createElement(\"option\");\r\n            opt.value = gItem.n;\r\n            opt.textContent = gItem.n;\r\n            optgroup.appendChild(opt);\r\n          });\r\n          geneSelect.appendChild(optgroup);\r\n        });\r\n        genesWrap.appendChild(geneSelect);\r\n        row.appendChild(genesWrap);\r\n\r\n        var geneDesc = el(\"div\", \"thar-gene-desc\");\r\n        row.appendChild(geneDesc);\r\n\r\n        geneToggleBtn.addEventListener(\"click\", function () {\r\n          geneEnabled = !geneEnabled;\r\n          geneToggleBtn.classList.toggle(\"on\", geneEnabled);\r\n          geneToggleBtn.setAttribute(\"aria-pressed\", geneEnabled ? \"true\" : \"false\");\r\n          geneToggleBtn.textContent = geneEnabled ? \"\u2212 Quitar gen\" : (\"+ Gen (+\" + eur(GENE_PRICE) + \")\");\r\n          genesWrap.style.display = geneEnabled ? \"\" : \"none\";\r\n          if (!geneEnabled) {\r\n            chosenGene = null;\r\n            geneSelect.value = \"\";\r\n            geneDesc.textContent = \"\";\r\n            geneDesc.classList.remove(\"show\");\r\n          }\r\n          syncIfActive();\r\n          paint(readQty());\r\n        });\r\n\r\n        geneSelect.addEventListener(\"change\", function () {\r\n          chosenGene = geneSelect.value || null;\r\n          geneDesc.textContent = chosenGene ? geneDescMap[chosenGene] : \"\";\r\n          geneDesc.classList.toggle(\"show\", !!chosenGene);\r\n          syncIfActive();\r\n          paint(readQty());\r\n        });\r\n\r\n        function paint(q) {\r\n          var pendiente = levels && levels.length > 1 && !chosenLevel;\r\n          priceEl.textContent = (pendiente ? \"+\" : \"\") + eur(precioBase() + surcharge(chosen) + sexSurcharge(chosenSex) + (geneEnabled ? GENE_PRICE : 0));\r\n          count.textContent = q;\r\n          count.classList.toggle(\"zero\", q === 0);\r\n          minus.disabled = q === 0;\r\n          var faltaNivel = levels && levels.length > 1 && !chosenLevel;\r\n          var faltaStat = stats && stats.length && !chosenStat;\r\n          var faltaGen = geneEnabled && !chosenGene;\r\n          var faltaSexo = !chosenSex;\r\n          if (faltaNivel || faltaStat || faltaGen || faltaSexo) {\r\n            plus.disabled = true;\r\n            plus.title = faltaSexo ? \"Elige antes Macho o Hembra\"\r\n                       : (faltaNivel ? \"Elige antes el nivel\"\r\n                       : (faltaGen ? \"Elige un gen (o quita la opci\u00f3n de gen)\" : \"Elige antes la stat\"));\r\n          } else {\r\n            plus.disabled = false;\r\n            plus.title = \"\";\r\n          }\r\n          row.classList.toggle(\"needs-sex\", !chosenSex);\r\n          row.classList.toggle(\"on\", q > 0);\r\n          card.classList.toggle(\"selected\", cardHasSelection());\r\n        }\r\n\r\n        function readQty() {\r\n          var k = keyFor(dino, fullLabel());\r\n          return cart[k] ? cart[k].qty : 0;\r\n        }\r\n\r\n        \/\/ Si esta fila ya tiene cantidad a\u00f1adida, cambiar sexo, variante,\r\n        \/\/ stat o gen actualiza esa misma l\u00ednea del pedido en vez de\r\n        \/\/ dejarla como estaba y crear una nueva.\r\n        function syncIfActive() {\r\n          var k = keyFor(dino, fullLabel());\r\n          var item = cart[k];\r\n          if (item && item.qty > 0) {\r\n            item.variant = chosen;\r\n            item.sex = chosenSex;\r\n            item.stat = chosenStat;\r\n            item.gene = chosenGene;\r\n            item.price = precioBase() + surcharge(chosen) + sexSurcharge(chosenSex) + (geneEnabled ? GENE_PRICE : 0);\r\n            updateBar();\r\n          }\r\n        }\r\n\r\n        function cardHasSelection() {\r\n          for (var i = 0; i < rowRefs.length; i++) if (rowRefs[i].readQty() > 0) return true;\r\n          return false;\r\n        }\r\n\r\n        prices.appendChild(row);\r\n        rowRefs.push({ paint: paint, readQty: readQty });\r\n        paint(readQty());\r\n      }\r\n\r\n      dino.p.forEach(function (p) { addRow(p[0], p[1]); });\r\n\r\n      EXTRAS.forEach(function (ex) {\r\n        if (ex.note) prices.appendChild(el(\"div\", \"thar-extra-note\", ex.note));\r\n        var niveles = ex.levels ? [dino.p[0]] : null;\r\n        var etiqueta = ex.label.replace(\"{nivel}\", dino.p[0][0]);\r\n        addRow(etiqueta, ex.price, ex.stats, ex.color, niveles);\r\n      });\r\n\r\n      card.appendChild(prices);\r\n      return card;\r\n    }\r\n\r\n    function enGrupo(dino) {\r\n      if (grupoActivo === \"todo\") return true;\r\n      for (var i = 0; i < GRUPOS.length; i++) {\r\n        if (GRUPOS[i].id === grupoActivo) return !!(GRUPOS[i].set && GRUPOS[i].set[dino.n]);\r\n      }\r\n      return true;\r\n    }\r\n\r\n    function renderChips() {\r\n      var wrap = document.getElementById(\"thar-chips\");\r\n      wrap.innerHTML = \"\";\r\n      GRUPOS.forEach(function (g) {\r\n        var chip = el(\"button\", \"thar-chip\" + (g.id === grupoActivo ? \" on\" : \"\"));\r\n        chip.type = \"button\";\r\n        chip.appendChild(el(\"span\", null, g.label));\r\n        chip.appendChild(el(\"span\", \"thar-chip-count\", String(g.count)));\r\n        chip.setAttribute(\"aria-pressed\", g.id === grupoActivo ? \"true\" : \"false\");\r\n        chip.addEventListener(\"click\", function () {\r\n          grupoActivo = g.id;\r\n          renderChips();\r\n          render(searchInput ? searchInput.value : \"\");\r\n        });\r\n        wrap.appendChild(chip);\r\n      });\r\n    }\r\n\r\n    function render(filterText) {\r\n      grid.innerHTML = \"\";\r\n      var term = (filterText || \"\").trim().toLowerCase();\r\n      var matches = DINOS.filter(function (dino) {\r\n        return enGrupo(dino) && enVariante(dino) && dino.n.toLowerCase().indexOf(term) !== -1;\r\n      });\r\n\r\n      if (matches.length === 0) {\r\n        grid.appendChild(el(\"div\", \"thar-no-results\", \"Ning\u00fan dinosaurio con ese nombre en este filtro. Prueba con otra palabra o pulsa Todo.\"));\r\n        return;\r\n      }\r\n      matches.forEach(function (dino) {\r\n        grid.appendChild(buildCard(dino));\r\n      });\r\n    }\r\n\r\n    \/\/ ---------- Texto del pedido ----------\r\n    function buildOrderText() {\r\n      var lines = [];\r\n      var platform = document.getElementById(\"thar-platform\").value.trim();\r\n      var eosid = document.getElementById(\"thar-eosid\").value.trim();\r\n      var t = totals();\r\n      var d = new Date();\r\n      var fecha = (\"0\" + d.getDate()).slice(-2) + \"\/\" + (\"0\" + (d.getMonth() + 1)).slice(-2) + \"\/\" + d.getFullYear();\r\n\r\n      lines.push(\"\ud83e\udd96 PEDIDO THARYON \u2014 \" + fecha);\r\n      lines.push(\"ID consola\/Steam: \" + (platform || \"(pendiente de indicar)\"));\r\n      lines.push(\"EOS ID: \" + (eosid || \"(pendiente de indicar)\"));\r\n      lines.push(\"-----------------------------\");\r\n\r\n      var items = [];\r\n      for (var k in cart) items.push(cart[k]);\r\n      items.sort(function (a, b) {\r\n        return a.name.localeCompare(b.name) || a.level.localeCompare(b.level) ||\r\n               (a.sex || \"\").localeCompare(b.sex || \"\") ||\r\n               (a.stat || \"\").localeCompare(b.stat || \"\");\r\n      });\r\n\r\n      items.forEach(function (it) {\r\n        var name = it.name + (it.variant ? \" (\" + (BADGE_LABELS[it.variant] || it.variant) + \")\" : \"\");\r\n        var sexo = \" \u00b7 \" + (SEX_LABELS[it.sex] || \"sin indicar\");\r\n        var stat = it.stat ? \" \u00b7 \" + it.stat : \"\";\r\n        var gene = it.gene ? \" \u00b7 Gen: \" + it.gene : \"\";\r\n        lines.push(it.qty + \"x \" + name + sexo + \" \u00b7 \" + it.level + stat + gene + \" \u00b7 \" + eur(it.qty * it.price));\r\n      });\r\n\r\n      lines.push(\"-----------------------------\");\r\n      lines.push(\"Total dinos: \" + t.units);\r\n      lines.push(\"TOTAL: \" + eur(t.sum));\r\n\r\n      if (llevaPintura()) {\r\n        var color = document.getElementById(\"thar-color\").value.trim();\r\n        lines.push(\"Pintura: \" + (color || \"(pendiente de indicar)\"));\r\n      }\r\n      return lines.join(\"\\n\");\r\n    }\r\n\r\n    function llevaPintura() {\r\n      for (var k in cart) if (cart[k].paint) return true;\r\n      return false;\r\n    }\r\n\r\n    function refreshOutput() {\r\n      document.getElementById(\"thar-color-field\").style.display = llevaPintura() ? \"\" : \"none\";\r\n      output.value = buildOrderText();\r\n      copiedMsg.textContent = \"\";\r\n    }\r\n\r\n    function copyOrder() {\r\n      var text = output.value;\r\n      function done() {\r\n        copiedMsg.textContent = \"Pedido copiado. P\u00e9galo en Discord.\";\r\n      }\r\n      function fallback() {\r\n        output.focus();\r\n        output.select();\r\n        output.setSelectionRange(0, 99999);\r\n        try {\r\n          document.execCommand(\"copy\");\r\n          done();\r\n        } catch (e) {\r\n          copiedMsg.textContent = \"No se ha podido copiar solo. Mant\u00e9n pulsado el texto y c\u00f3pialo a mano.\";\r\n        }\r\n      }\r\n      if (navigator.clipboard && navigator.clipboard.writeText) {\r\n        navigator.clipboard.writeText(text).then(done, fallback);\r\n      } else {\r\n        fallback();\r\n      }\r\n    }\r\n\r\n    \/\/ ---------- Eventos ----------\r\n    if (searchInput) {\r\n      searchInput.addEventListener(\"input\", function (e) { render(e.target.value); });\r\n    }\r\n\r\n    document.getElementById(\"thar-open\").addEventListener(\"click\", function () {\r\n      refreshOutput();\r\n      modal.classList.add(\"show\");\r\n    });\r\n\r\n    function closeModal() {\r\n      modal.classList.remove(\"show\");\r\n    }\r\n\r\n    document.getElementById(\"thar-close\").addEventListener(\"click\", closeModal);\r\n    modal.addEventListener(\"click\", function (e) {\r\n      if (e.target === modal) closeModal();\r\n    });\r\n    document.addEventListener(\"keydown\", function (e) {\r\n      if (e.key === \"Escape\") closeModal();\r\n    });\r\n    document.getElementById(\"thar-copy\").addEventListener(\"click\", copyOrder);\r\n\r\n    \/\/ Vaciar el pedido desde dentro de la propia ventana \"Tu pedido\",\r\n    \/\/ sin tener que salir. El pedido se queda vac\u00edo pero la ventana\r\n    \/\/ sigue abierta para que veas que ha funcionado.\r\n    document.getElementById(\"thar-modal-clear\").addEventListener(\"click\", function () {\r\n      cart = {};\r\n      updateBar();\r\n      render(searchInput ? searchInput.value : \"\");\r\n      refreshOutput();\r\n    });\r\n\r\n    document.getElementById(\"thar-platform\").addEventListener(\"input\", refreshOutput);\r\n    document.getElementById(\"thar-eosid\").addEventListener(\"input\", refreshOutput);\r\n    document.getElementById(\"thar-color\").addEventListener(\"input\", refreshOutput);\r\n\r\n    document.getElementById(\"thar-clear\").addEventListener(\"click\", function () {\r\n      cart = {};\r\n      updateBar();\r\n      render(searchInput ? searchInput.value : \"\");\r\n    });\r\n\r\n    renderChips();\r\n    renderVarianteChips();\r\n    render(\"\");\r\n    updateBar();\r\n  })();\r\n  <\/script>\r\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-856fa65 e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-parent\" data-id=\"856fa65\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2b7ec13 elementor-hidden-desktop elementor-hidden-laptop elementor-hidden-tablet elementor-widget elementor-widget-html\" data-id=\"2b7ec13\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- ============================================================\r\n     THARYON \u00b7 Donaciones - Dinosaurios \u2014 VERSI\u00d3N M\u00d3VIL\r\n     Esta es una versi\u00f3n aparte, pensada solo para pantallas peque\u00f1as:\r\n     siempre una columna, sin la rejilla de dos columnas de escritorio,\r\n     y con sus propias clases (empiezan por \"thm-\" en vez de \"thar-\")\r\n     para que no choque con la versi\u00f3n de escritorio si conviven en\r\n     la misma p\u00e1gina.\r\n\r\n     C\u00d3MO USARLA EN WORDPRESS \/ ELEMENTOR (recomendado):\r\n     1) Deja tu widget de escritorio actual tal cual est\u00e1.\r\n     2) A\u00f1ade OTRO widget de \"HTML personalizado\" justo debajo (o donde\r\n        quieras) y pega ah\u00ed TODO este c\u00f3digo.\r\n     3) En ese nuevo widget, en Elementor: pesta\u00f1a \"Avanzado\" \u2192\r\n        \"Responsive\" \u2192 \"Ocultar en Escritorio\" y \"Ocultar en Tablet\"\r\n        (que solo se vea en M\u00f3vil).\r\n     4) En tu widget de escritorio actual, pon lo contrario: \"Ocultar\r\n        en M\u00f3vil\" (y Tablet si quieres), para que ese no se vea en\r\n        el tel\u00e9fono.\r\n     As\u00ed cada dispositivo carga y ve solo su propia versi\u00f3n, sin\r\n     depender de que las media queries \"adivinen\" el ancho real.\r\n\r\n     El resto de instrucciones (IMG_BASE, array DINOS, recargo de\r\n     sexo, etc.) es id\u00e9ntico a la versi\u00f3n de escritorio.\r\n     ============================================================ -->\r\n<div id=\"tharyon-mobile-root\" class=\"thm-wrap\">\r\n\r\n  <style>\r\n    .thm-wrap{\r\n      --bg: #131211;\r\n      --card-bg: linear-gradient(180deg, #1e1b17 0%, #171512 100%);\r\n      --card-border: rgba(214,160,60,0.16);\r\n      --row-bg: rgba(255,255,255,0.03);\r\n      --row-bg-alt: rgba(255,255,255,0.06);\r\n      --text: #f1e9dc;\r\n      --text-dim: #a2968a;\r\n      --accent-a: #e0912a;\r\n      --accent-b: #f5c445;\r\n      --badge-normal: #e0912a;\r\n      --badge-zombie: #f97316;\r\n      --badge-x: #22d3ee;\r\n      --badge-aberrante: #a855f7;\r\n      --badge-tek: #38bdf8;\r\n      --badge-tiza: #eab308;\r\n      --badge-hielo: #60a5fa;\r\n      --badge-macho: #4f8ef7;\r\n      --badge-hembra: #ef5da8;\r\n\r\n      display: block !important;\r\n      width: 100% !important;\r\n      max-width: 100vw !important;\r\n      overflow-x: hidden !important;\r\n      background: var(--bg);\r\n      color: var(--text);\r\n      font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\r\n      padding: 20px 14px 40px;\r\n      box-sizing: border-box;\r\n    }\r\n    .thm-wrap *{ box-sizing: border-box; max-width: 100%; }\r\n    .thm-wrap.has-order{ padding-bottom: 150px; }\r\n\r\n    .thm-wrap .thm-card .thm-card-title{ color: #f7d488 !important; }\r\n    .thm-wrap .thm-header h1{ color: #ffffff !important; }\r\n    .thm-wrap .thm-header p{ color: var(--text-dim) !important; }\r\n    .thm-wrap .thm-modal-box h2{ color: #ffffff !important; }\r\n    .thm-wrap .thm-donate h3{ color: #ffffff !important; }\r\n    .thm-wrap .thm-row-top .thm-price{ color: #ffffff !important; }\r\n\r\n    .thm-header{ margin: 0 0 20px; text-align: center; }\r\n    .thm-header h1{ font-size: 22px; margin: 0 0 8px; font-weight: 700; }\r\n    .thm-header p{ color: var(--text-dim); margin: 0; font-size: 14px; }\r\n\r\n    .thm-tabs{ display: flex; flex-direction: column; gap: 10px; margin: 0 0 18px; }\r\n    .thm-tab{\r\n      display: block; padding: 14px 16px; border-radius: 12px;\r\n      border: 1px solid var(--card-border); background: rgba(255,255,255,0.03);\r\n      color: var(--text); font-size: 15px; font-weight: 700; text-decoration: none; text-align: center;\r\n    }\r\n    .thm-tab.on{\r\n      background: linear-gradient(90deg, var(--accent-a), var(--accent-b));\r\n      border-color: transparent; color: #1b1409;\r\n    }\r\n\r\n    .thm-help{\r\n      margin: 0 0 18px; background: rgba(224,145,42,0.10);\r\n      border: 1px solid rgba(224,145,42,0.30); border-radius: 12px;\r\n      padding: 11px 14px; font-size: 12.5px; color: var(--text-dim);\r\n      line-height: 1.6; text-align: left;\r\n    }\r\n    .thm-help strong{ color: var(--text); font-weight: 600; }\r\n\r\n    .thm-search{\r\n      display: block; width: 100%; margin: 0 0 16px; padding: 11px 14px;\r\n      border-radius: 10px; border: 1px solid var(--card-border);\r\n      background: rgba(255,255,255,0.04); color: var(--text); font-size: 16px; outline: none;\r\n    }\r\n    .thm-search::placeholder{ color: var(--text-dim); }\r\n    .thm-search:focus{ border-color: var(--accent-a); }\r\n\r\n    .thm-chips{\r\n      display: flex; flex-wrap: nowrap; overflow-x: auto; -webkit-overflow-scrolling: touch;\r\n      scrollbar-width: none; gap: 8px; padding-bottom: 4px; margin: 0 0 18px;\r\n    }\r\n    .thm-chips::-webkit-scrollbar{ display: none; }\r\n    .thm-chip{\r\n      flex: 0 0 auto; display: inline-flex; align-items: center; gap: 7px;\r\n      padding: 7px 14px; border-radius: 999px; border: 1px solid var(--card-border);\r\n      background: rgba(255,255,255,0.03); color: var(--text); font-size: 12.5px;\r\n      font-weight: 600; font-family: inherit; cursor: pointer; line-height: 1.5;\r\n    }\r\n    .thm-chip .thm-chip-count{ color: var(--text-dim); font-size: 11.5px; font-weight: 700; }\r\n    .thm-chip.on{ background: #e0912a; border-color: #e0912a; color: #1b1409; }\r\n    .thm-chip.on .thm-chip-count{ color: rgba(27,20,9,0.6); }\r\n\r\n    .thm-layout{ display: block; width: 100%; }\r\n    .thm-main{ display: block; width: 100%; }\r\n    .thm-side{ display: block; width: 100%; margin: 0 0 22px; }\r\n\r\n    .thm-grid{ display: grid; grid-template-columns: 1fr; gap: 14px; }\r\n\r\n    .thm-donate{\r\n      background: linear-gradient(180deg, #211c16 0%, #17130f 100%);\r\n      border: 1px solid rgba(214,160,60,0.35); border-radius: 16px;\r\n      padding: 22px 20px 24px; text-align: center; box-shadow: 0 8px 24px rgba(0,0,0,0.35);\r\n    }\r\n    .thm-donate h3{ margin: 0 0 10px; font-size: 19px; font-weight: 700; }\r\n    .thm-donate-underline{\r\n      height: 3px; border-radius: 2px; margin-bottom: 18px;\r\n      background: linear-gradient(90deg, #f5c445, #e0912a);\r\n    }\r\n    .thm-donate p{ margin: 0 0 20px; font-size: 13px; line-height: 1.6; color: var(--text-dim); }\r\n    .thm-donate-btn{\r\n      display: block; padding: 13px 16px; border-radius: 10px;\r\n      background: linear-gradient(90deg, #c026d3, #f21fc5);\r\n      color: #fff; font-size: 14px; font-weight: 700; text-decoration: none;\r\n    }\r\n    .thm-donate-btn + .thm-donate-btn{ margin-top: 10px; }\r\n    .thm-donate-btn.paypal{ background: linear-gradient(90deg, #0070ba, #009cde); }\r\n    .thm-donate-btn.stripe{ background: linear-gradient(90deg, #635bff, #8b5cf6); }\r\n\r\n    .thm-card{\r\n      background: var(--card-bg); border: 1px solid var(--card-border);\r\n      border-radius: 14px; padding: 16px 14px 14px; display: flex; flex-direction: column;\r\n    }\r\n    .thm-card.selected{ border-color: rgba(224,145,42,0.6); box-shadow: 0 0 0 1px rgba(224,145,42,0.2); }\r\n\r\n    .thm-card-title{ font-size: 17px; font-weight: 700; margin: 0 0 6px; color: #f7d488; }\r\n    .thm-card-underline{\r\n      width: 34px; height: 3px; border-radius: 2px; margin-bottom: 10px;\r\n      background: linear-gradient(90deg, var(--accent-a), var(--accent-b));\r\n    }\r\n\r\n    .thm-badges{ display: flex; flex-wrap: wrap; gap: 6px; min-height: 22px; margin-bottom: 4px; }\r\n    .thm-badge{\r\n      font-size: 11px; font-weight: 700; padding: 3px 9px; border-radius: 999px;\r\n      color: #10121a; line-height: 1.4; border: 1px solid transparent;\r\n    }\r\n    .thm-badge.normal{ background: var(--badge-normal); color: #1b1409; }\r\n    .thm-badge.zombie{ background: var(--badge-zombie); color: #fff; }\r\n    .thm-badge.x{ background: var(--badge-x); }\r\n    .thm-badge.aberrante{ background: var(--badge-aberrante); color: #fff; }\r\n    .thm-badge.tek{ background: var(--badge-tek); color: #08202c; }\r\n    .thm-badge.tiza{ background: var(--badge-tiza); color: #241c02; }\r\n    .thm-badge.hielo{ background: var(--badge-hielo); color: #071b33; }\r\n\r\n    .thm-card-note{ font-size: 12px; color: var(--text-dim); font-style: italic; margin: -2px 0 6px; }\r\n\r\n    .thm-card-image{ height: 120px; margin: 6px 0 12px; display: flex; align-items: center; justify-content: center; }\r\n    .thm-card-image img{\r\n      max-width: 100%; max-height: 120px; object-fit: contain;\r\n      filter: drop-shadow(0 6px 14px rgba(0,0,0,0.45));\r\n    }\r\n    .thm-img-error{\r\n      font-size: 12px; color: var(--text-dim); text-align: center;\r\n      border: 1px dashed var(--card-border); border-radius: 8px; padding: 8px 10px; line-height: 1.4;\r\n    }\r\n\r\n    .thm-prices{ margin-top: auto; border-radius: 10px; overflow: hidden; }\r\n    .thm-price-row{\r\n      display: flex; flex-direction: column; gap: 6px; padding: 10px 12px;\r\n      font-size: 13px; background: var(--row-bg); border-left: 3px solid transparent;\r\n    }\r\n    .thm-price-row:nth-child(even){ background: var(--row-bg-alt); }\r\n    .thm-price-row.on{ border-left-color: var(--accent-a); background: rgba(224,145,42,0.13); }\r\n    .thm-row-top{ display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }\r\n    .thm-row-top .thm-level{ flex: 1 1 100%; color: var(--text-dim); }\r\n    .thm-price-row.on .thm-level{ color: var(--text); }\r\n    .thm-row-top .thm-price{ font-weight: 700; white-space: nowrap; }\r\n\r\n    .thm-vars{ display: flex; flex-wrap: wrap; gap: 4px; }\r\n    .thm-var{\r\n      font-size: 11px; font-weight: 700; line-height: 1.4; padding: 4px 9px;\r\n      border-radius: 999px; border: 1px solid var(--card-border);\r\n      background: rgba(255,255,255,0.05); color: var(--text-dim); cursor: pointer; font-family: inherit;\r\n    }\r\n    .thm-var.on{ border-color: transparent; }\r\n    .thm-var.on.normal{ background: var(--badge-normal); color: #1b1409; }\r\n    .thm-var.on.zombie{ background: var(--badge-zombie); color: #fff; }\r\n    .thm-var.on.x{ background: var(--badge-x); color: #10121a; }\r\n    .thm-var.on.aberrante{ background: var(--badge-aberrante); color: #fff; }\r\n    .thm-var.on.tek{ background: var(--badge-tek); color: #08202c; }\r\n    .thm-var.on.tiza{ background: var(--badge-tiza); color: #241c02; }\r\n    .thm-var.on.hielo{ background: var(--badge-hielo); color: #071b33; }\r\n\r\n    .thm-stats-label{ font-size: 10.5px; font-weight: 700; color: var(--text-dim); margin-right: 2px; }\r\n    .thm-var.thm-stat.on{\r\n      background: linear-gradient(90deg, var(--accent-a), var(--accent-b));\r\n      color: #fff; border-color: transparent;\r\n    }\r\n\r\n    .thm-genes{ align-items: center; }\r\n    .thm-gene-select{\r\n      flex: 1; min-width: 120px; padding: 6px 8px; border-radius: 8px;\r\n      border: 1px solid var(--card-border); background: rgba(255,255,255,0.05);\r\n      color: var(--text); font-size: 12px; font-family: inherit; cursor: pointer;\r\n    }\r\n    .thm-gene-select:focus{ border-color: var(--accent-a); outline: none; }\r\n    .thm-var.thm-gene-toggle.on{\r\n      background: linear-gradient(90deg, var(--accent-a), var(--accent-b));\r\n      color: #fff; border-color: transparent;\r\n    }\r\n    .thm-gene-select option, .thm-gene-select optgroup{ background: #1a1714; color: #f1e9dc; }\r\n    .thm-gene-desc{\r\n      font-size: 11px; color: var(--text-dim); line-height: 1.4;\r\n      margin: -2px 0 0; display: none;\r\n    }\r\n    .thm-gene-desc.show{ display: block; }\r\n\r\n    .thm-sexes .thm-stats-label{ color: var(--accent-b); }\r\n    .thm-var.thm-sex{ min-width: 58px; text-align: center; padding: 5px 12px; }\r\n    .thm-var.thm-sex.on.macho{ background: var(--badge-macho); color: #051a38; border-color: transparent; }\r\n    .thm-var.thm-sex.on.hembra{ background: var(--badge-hembra); color: #2c0518; border-color: transparent; }\r\n    .thm-price-row.needs-sex .thm-stats-label{ color: var(--accent-a); }\r\n\r\n    .thm-extra-note{\r\n      font-size: 11.5px; line-height: 1.5; color: var(--text-dim);\r\n      padding: 12px 12px 8px; border-top: 1px solid var(--card-border); margin-top: 6px;\r\n    }\r\n    .thm-price-row.thm-extra-row{ background: rgba(245,196,69,0.08); border-left-color: rgba(245,196,69,0.55); }\r\n\r\n    .thm-qty{ display: flex; align-items: center; gap: 4px; margin-left: auto; }\r\n    .thm-qty button{\r\n      width: 34px; height: 34px; border-radius: 8px; border: 1px solid var(--card-border);\r\n      background: rgba(255,255,255,0.06); color: var(--text); font-size: 18px; line-height: 1;\r\n      cursor: pointer; font-family: inherit; padding: 0;\r\n    }\r\n    .thm-qty button:disabled{ opacity: 0.3; }\r\n    .thm-qty button.add{\r\n      background: linear-gradient(90deg, var(--accent-a), var(--accent-b));\r\n      border-color: transparent; color: #fff; font-weight: 700;\r\n    }\r\n    .thm-qty .thm-count{ min-width: 26px; text-align: center; font-weight: 700; color: #fff; font-size: 14px; }\r\n    .thm-qty .thm-count.zero{ color: var(--text-dim); font-weight: 600; }\r\n\r\n    .thm-no-results{ text-align: center; color: var(--text-dim); padding: 40px 0; }\r\n\r\n    .thm-footer{ text-align: center; color: var(--text-dim); font-size: 12px; margin-top: 32px; }\r\n\r\n    .thm-bar{\r\n      position: fixed; left: 0; right: 0; bottom: 0; z-index: 99990; display: none;\r\n      background: rgba(19,17,15,0.97); border-top: 1px solid rgba(214,160,60,0.2);\r\n      box-shadow: 0 -8px 24px rgba(0,0,0,0.45); padding: 10px 12px;\r\n    }\r\n    .thm-bar.show{ display: block; }\r\n    .thm-bar-inner{ display: flex; align-items: center; gap: 8px; flex-wrap: wrap; color: var(--text); }\r\n    .thm-bar-info{ flex: 1 1 100%; min-width: 0; font-size: 13px; }\r\n    .thm-bar-info span{ color: var(--text-dim); }\r\n    .thm-bar-total{ font-size: 18px; font-weight: 700; color: #fff; }\r\n    .thm-btn{\r\n      border: none; border-radius: 10px; padding: 12px 10px; font-size: 14px; font-weight: 700;\r\n      cursor: pointer; font-family: inherit; background: linear-gradient(90deg, var(--accent-a), var(--accent-b));\r\n      color: #fff; flex: 1 1 0;\r\n    }\r\n    .thm-btn.ghost{ background: rgba(255,255,255,0.07); color: var(--text-dim); border: 1px solid var(--card-border); font-weight: 600; }\r\n\r\n    .thm-modal{\r\n      position: fixed; inset: 0; z-index: 99999; display: none;\r\n      align-items: flex-end; justify-content: center; background: rgba(4,8,16,0.78); padding: 0;\r\n    }\r\n    .thm-modal.show{ display: flex; }\r\n    .thm-modal-box{\r\n      width: 100%; max-width: none; max-height: 100%; min-height: 100%; overflow-y: auto;\r\n      background: #1a1714; border: 1px solid var(--card-border); border-radius: 0;\r\n      padding: 20px 16px 28px; color: var(--text);\r\n    }\r\n    .thm-modal-box h2{ margin: 0 0 4px; font-size: 19px; }\r\n    .thm-modal-box .thm-sub{ margin: 0 0 16px; font-size: 13px; color: var(--text-dim); }\r\n    .thm-modal-notice{\r\n      margin: -6px 0 16px; padding: 10px 12px; font-size: 12px; line-height: 1.5;\r\n      color: #f5c445; background: rgba(245,196,69,0.10);\r\n      border: 1px solid rgba(245,196,69,0.30); border-radius: 10px;\r\n    }\r\n    .thm-field{ margin-bottom: 12px; }\r\n    .thm-field label{ display: block; font-size: 13px; color: var(--text-dim); margin-bottom: 5px; }\r\n    .thm-field input{\r\n      width: 100%; padding: 10px 12px; border-radius: 9px; border: 1px solid var(--card-border);\r\n      background: rgba(255,255,255,0.04); color: var(--text); font-size: 16px; font-family: inherit; outline: none;\r\n    }\r\n    #thm-output{\r\n      width: 100%; min-height: 240px; padding: 12px; border-radius: 10px;\r\n      border: 1px solid var(--card-border); background: #110f0d; color: var(--text);\r\n      font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;\r\n      font-size: 13px; line-height: 1.55; resize: vertical; outline: none;\r\n    }\r\n    .thm-modal-actions{ display: flex; gap: 10px; margin-top: 14px; flex-wrap: wrap; }\r\n    .thm-modal-actions .thm-btn{ min-width: 0; }\r\n    .thm-btn.danger{\r\n      background: rgba(239,68,68,0.12); color: #fca5a5;\r\n      border: 1px solid rgba(239,68,68,0.35); font-weight: 600;\r\n    }\r\n    .thm-copied{ font-size: 13px; color: #4ade80; margin-top: 10px; min-height: 18px; }\r\n\r\n    @media (max-width: 360px){\r\n      .thm-row-top{ flex-wrap: wrap; }\r\n      .thm-row-top .thm-level{ flex: 1 1 100%; }\r\n    }\r\n  <\/style>\r\n\r\n  <div class=\"thm-header\">\r\n    <h1>Donaciones \u00b7 Dinosaurios<\/h1>\r\n    <p>Precios de dinosaurios disponibles en Tharyon<\/p>\r\n  <\/div>\r\n\r\n  <!-- CAMBIA LOS href POR LAS URLS DE TUS P\u00c1GINAS -->\r\n  <div class=\"thm-tabs\">\r\n    <a class=\"thm-tab on\" href=\"#\">Dinosaurios<\/a>\r\n    <a class=\"thm-tab\" href=\"https:\/\/tharyon.com\/recursos\/\">Recursos\/Objetos<\/a>\r\n    <a class=\"thm-tab\" href=\"https:\/\/tharyon.com\/desbloqueos\/\">Desbloqueos<\/a>\r\n    <a class=\"thm-tab\" href=\"https:\/\/tharyon.com\/vip\/\">VIP<\/a>\r\n  <\/div>\r\n\r\n  <div class=\"thm-help\">\r\n    En cada nivel eliges primero <strong>Macho o Hembra<\/strong> (la hembra cuesta 1 \u20ac m\u00e1s) y la\r\n    <strong>versi\u00f3n<\/strong> que quieres (Aberrante y X cuestan 1 \u20ac m\u00e1s). Despu\u00e9s marcas\r\n    <strong>cu\u00e1ntos quieres<\/strong> con los botones \u2212 y +. Hasta que no elijas el sexo, el bot\u00f3n + est\u00e1 bloqueado.\r\n    Puedes pedir varios dinos, los tres niveles y varias unidades de cada uno. Cuando termines, pulsa\r\n    <strong>Ver mi pedido<\/strong>, c\u00f3pialo y env\u00edamelo por Discord.\r\n    <br><br>\r\n    Los dinos que llevan montura se entregan con <strong>montura normal<\/strong> incluida.\r\n  <\/div>\r\n\r\n  <!-- La caja de Donar va aqu\u00ed, ANTES de la lista de dinosaurios, para\r\n       que se vea sin tener que hacer scroll por los 166 dinos. -->\r\n  <aside class=\"thm-side\">\r\n    <div class=\"thm-donate\">\r\n      <h3>Donar<\/h3>\r\n      <div class=\"thm-donate-underline\"><\/div>\r\n      <p>Puedes donar por varias cosas a la vez poniendo el sumatorio del precio<\/p>\r\n      <!-- CAMBIA AQU\u00cd LOS DOS ENLACES (href) -->\r\n      <a class=\"thm-donate-btn paypal\" href=\"https:\/\/www.paypal.com\/donate\/?business=5BUS93N772UCW&no_recurring=0&item_name=Donaci%C3%B3n+voluntaria+para+costes+de+hardware+y+hosting+del+servidor+Tharyon.&currency_code=EUR\" target=\"_blank\" rel=\"noopener\">Donar con PayPal<\/a>\r\n      <a class=\"thm-donate-btn stripe\" href=\"https:\/\/donate.stripe.com\/9B6eV60rl7TR8GR5ULfnO0b\" target=\"_blank\" rel=\"noopener\">Donar con tarjeta (Stripe)<\/a>\r\n    <\/div>\r\n  <\/aside>\r\n\r\n  <div class=\"thm-layout\">\r\n    <div class=\"thm-main\">\r\n      <input type=\"text\" class=\"thm-search\" id=\"thm-search\" placeholder=\"Buscar dinosaurio\u2026\">\r\n      <div class=\"thm-chips\" id=\"thm-chips-variante\"><\/div>\r\n      <div class=\"thm-chips\" id=\"thm-chips\"><\/div>\r\n      <div class=\"thm-grid\" id=\"thm-grid\"><\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div class=\"thm-footer\">2026 \u00a9 Tharyon<\/div>\r\n\r\n  <div class=\"thm-bar\" id=\"thm-bar\">\r\n    <div class=\"thm-bar-inner\">\r\n      <div class=\"thm-bar-info\">\r\n        <span id=\"thm-bar-count\">0 art\u00edculos<\/span><br>\r\n        <span class=\"thm-bar-total\" id=\"thm-bar-total\">0,00 \u20ac<\/span>\r\n      <\/div>\r\n      <button type=\"button\" class=\"thm-btn ghost\" id=\"thm-clear\">Vaciar<\/button>\r\n      <button type=\"button\" class=\"thm-btn\" id=\"thm-open\">Ver mi pedido<\/button>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div class=\"thm-modal\" id=\"thm-modal\">\r\n    <div class=\"thm-modal-box\" role=\"dialog\" aria-modal=\"true\" aria-labelledby=\"thm-modal-title\">\r\n      <h2 id=\"thm-modal-title\">Tu pedido<\/h2>\r\n      <p class=\"thm-sub\">Copia el texto y p\u00e9gamelo en Discord. Puedes editarlo antes de copiar.<\/p>\r\n      <p class=\"thm-modal-notice\">\u26a0\ufe0f Este cuadro incluye TODO lo que llevas a\u00f1adido, aunque sea de hace un rato. Si algo de esto ya no lo quieres, vac\u00edalo con el bot\u00f3n de abajo antes de copiar.<\/p>\r\n\r\n      <div class=\"thm-field\">\r\n        <label for=\"thm-platform\">Tu ID de consola o Steam<\/label>\r\n        <input type=\"text\" id=\"thm-platform\" placeholder=\"Gamertag, PSN ID o ID de Steam\" autocomplete=\"off\" spellcheck=\"false\">\r\n      <\/div>\r\n      <div class=\"thm-field\">\r\n        <label for=\"thm-eosid\">Tu EOS ID<\/label>\r\n        <input type=\"text\" id=\"thm-eosid\" placeholder=\"Pega aqu\u00ed tu EOS ID\" autocomplete=\"off\" spellcheck=\"false\">\r\n      <\/div>\r\n\r\n      <div class=\"thm-field\" id=\"thm-color-field\" style=\"display:none\">\r\n        <label for=\"thm-color\">Color o colores de la pintura<\/label>\r\n        <input type=\"text\" id=\"thm-color\" placeholder=\"Ej.: Rex en rojo y negro\" autocomplete=\"off\">\r\n      <\/div>\r\n\r\n      <textarea id=\"thm-output\" spellcheck=\"false\"><\/textarea>\r\n\r\n      <div class=\"thm-modal-actions\">\r\n        <button type=\"button\" class=\"thm-btn\" id=\"thm-copy\">Copiar pedido<\/button>\r\n        <button type=\"button\" class=\"thm-btn ghost\" id=\"thm-close\">Seguir eligiendo<\/button>\r\n        <button type=\"button\" class=\"thm-btn danger\" id=\"thm-modal-clear\">Vaciar este pedido<\/button>\r\n      <\/div>\r\n      <div class=\"thm-copied\" id=\"thm-copied\"><\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <script>\r\n  \/\/ --------------------------------------------------------------\r\n  \/\/ Si la p\u00e1gina no tiene la etiqueta <meta name=\"viewport\">, el\r\n  \/\/ m\u00f3vil renderiza todo como si fuera un ordenador (~980px) y luego\r\n  \/\/ lo encoge: por eso hay que desplazar la pantalla y los estilos\r\n  \/\/ de m\u00f3vil de m\u00e1s abajo nunca llegan a activarse. La a\u00f1adimos\r\n  \/\/ nosotros mismos por si la plantilla de WordPress no la est\u00e1\r\n  \/\/ poniendo (pasa con algunas plantillas \"Canvas\" de Elementor).\r\n  \/\/ --------------------------------------------------------------\r\n  (function () {\r\n    try {\r\n      if (!document.querySelector('meta[name=\"viewport\"]')) {\r\n        var vp = document.createElement(\"meta\");\r\n        vp.name = \"viewport\";\r\n        vp.content = \"width=device-width, initial-scale=1\";\r\n        document.head.appendChild(vp);\r\n      }\r\n    } catch (e) { \/* si falla, seguimos sin romper el resto *\/ }\r\n  })();\r\n\r\n  (function () {\r\n    \/\/ ------------------------------------------------------------\r\n    \/\/ Carpeta de las im\u00e1genes. C\u00e1mbiala si subes las im\u00e1genes a\r\n    \/\/ la Biblioteca de medios de WordPress o a otro dominio.\r\n    \/\/\r\n    \/\/ Si en el ORDENADOR se ven bien pero en el M\u00d3VIL no aparece\r\n    \/\/ ninguna imagen, el c\u00f3digo ya no es el problema (mira m\u00e1s abajo\r\n    \/\/ el aviso \"Imagen no disponible\" que ahora se muestra en su\r\n    \/\/ lugar): lo m\u00e1s probable es uno de estos dos casos:\r\n    \/\/   1) El proyecto de Vercel tiene activada la \"Deployment\r\n    \/\/      Protection\" y solo t\u00fa (con sesi\u00f3n iniciada en Vercel)\r\n    \/\/      puedes ver las im\u00e1genes. Rev\u00edsalo en el panel de Vercel,\r\n    \/\/      en Settings \u2192 Deployment Protection, y desact\u00edvalo (o pon\r\n    \/\/      \"Only Preview Deployments\", nunca Production).\r\n    \/\/   2) Est\u00e1s abriendo el enlace desde el navegador integrado de\r\n    \/\/      Discord (o Instagram\/TikTok), que a veces bloquea\r\n    \/\/      contenido de terceros. Prueba a abrir la p\u00e1gina con el\r\n    \/\/      bot\u00f3n de \"Abrir en el navegador\" o pegando el enlace\r\n    \/\/      directamente en Safari\/Chrome.\r\n    \/\/ ------------------------------------------------------------\r\n    var IMG_BASE = \"https:\/\/valkysaurios.vercel.app\/images\/dinosaurs\/\";\r\n\r\n    \/\/ ------------------------------------------------------------\r\n    \/\/ DATOS: edita\/a\u00f1ade dinosaurios aqu\u00ed.\r\n    \/\/   n   = nombre\r\n    \/\/   img = archivo de imagen (dentro de IMG_BASE)\r\n    \/\/   b   = variantes: \"normal\", \"zombie\", \"x\", \"aberrante\",\r\n    \/\/         \"tek\", \"tiza\", \"hielo\"\r\n    \/\/   p   = [[\"Etiqueta del nivel\", precio], ...] (precio con punto)\r\n    \/\/   note= texto en cursiva bajo las variantes (opcional)\r\n    \/\/ ------------------------------------------------------------\r\n    var DINOS = [\r\n      { n: \"Achatina\", img: \"achatina.webp\", b: [\"normal\",\"aberrante\"], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",2.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Acrocanthosaurus\", img: \"acrocanto.webp\", b: [\"x\"], p: [[\"Nivel 225\",3.50],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1350 (castrado)\",14.50]] },\r\n      { n: \"Archelon\", img: \"archelon.webp\", b: [\"x\"], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",4.99],[\"Nivel 1350 (castrado)\",9.99]] },\r\n      { n: \"Armadoggo\", img: \"armadoggo.webp\", b: [], p: [[\"Nivel 225\",2.99],[\"Nivel 600 (castrado)\",6.50],[\"Nivel 1350 (castrado)\",9.99]] },\r\n      { n: \"Aureliax\", img: \"aureliax.webp\", b: [], p: [[\"Nivel 225\",5.50],[\"Nivel 600 (castrado)\",9.50],[\"Nivel 1350 (castrado)\",12.99]] },\r\n      { n: \"Basilisco\", img: \"basilisco.webp\", b: [], p: [[\"Nivel 225\",4.50],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1350 (castrado)\",10.50]] },\r\n      { n: \"Allosaurus\", img: \"allosaurus.webp\", b: [\"x\"], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",7.99]] },\r\n      { n: \"Anglerfish\", img: \"angler.webp\", b: [\"normal\",\"aberrante\"], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1200 (castrado)\",7.99]] },\r\n      { n: \"Ankylosaurus\", img: \"ankylosaurus.webp\", b: [\"normal\",\"aberrante\",\"x\"], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",4.50],[\"Nivel 1350 (castrado)\",8.99]] },\r\n      { n: \"Araneo\", img: \"araneo.webp\", b: [\"normal\",\"aberrante\"], p: [[\"Nivel 225\",2.99],[\"Nivel 600 (castrado)\",6.50],[\"Nivel 1350 (castrado)\",9.99]] },\r\n      { n: \"Archaeopteryx\", img: \"archaeopteryx.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",2.50],[\"Nivel 1350 (castrado)\",4.99]] },\r\n      { n: \"Argentavis\", img: \"argentavis.webp\", b: [\"x\"], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",2.99],[\"Nivel 1350 (castrado)\",6.99]] },\r\n      { n: \"Arthropluera\", img: \"arthropluera.webp\", b: [\"normal\",\"aberrante\"], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",2.50],[\"Nivel 1350 (castrado)\",4.99]] },\r\n      { n: \"Baryonyx\", img: \"baryonyx.webp\", b: [\"normal\",\"aberrante\"], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",4.99],[\"Nivel 1200 (castrado)\",7.99]] },\r\n      { n: \"Basilosaurus\", img: \"basilosaurus.webp\", b: [\"x\"], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",6.99],[\"Nivel 1200 (castrado)\",12.99]] },\r\n      { n: \"Bison\", img: \"bison.webp\", b: [], p: [[\"Nivel 225\",3.50],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1350 (castrado)\",10.50]] },\r\n      { n: \"Beelzebufo\", img: \"beelzebufo.webp\", b: [\"normal\",\"aberrante\"], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",4.99],[\"Nivel 1200 (castrado)\",9.99]] },\r\n      { n: \"Brontosaurus\", img: \"brontosaurus.webp\", b: [], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",6.50],[\"Nivel 1350 (castrado)\",9.50]] },\r\n      { n: \"Bulbdog\", img: \"bulbdog.webp\", b: [], p: [[\"Nivel 225\",1.99],[\"Nivel 600 (castrado)\",4.50],[\"Nivel 1350 (castrado)\",6.99]] },\r\n      { n: \"Burrowbuck\", img: \"burrowbuck.webp\", b: [], p: [[\"Nivel 225\",2.99],[\"Nivel 600 (castrado)\",6.50],[\"Nivel 1350 (castrado)\",9.99]] },\r\n      { n: \"Carbonemys\", img: \"carbonemys.webp\", b: [\"normal\",\"aberrante\"], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",4.99]] },\r\n      { n: \"Carcharodontosaurus\", img: \"carcharodontosaurus.webp\", b: [], p: [[\"Nivel 225\",3.50],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1350 (castrado)\",14.50]] },\r\n      { n: \"Carnotaurus\", img: \"carnotaurus.webp\", b: [\"normal\",\"aberrante\"], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",6.99]] },\r\n      { n: \"Castoroides\", img: \"castoroides.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",6.99]] },\r\n      { n: \"Cat\", img: \"cat.webp\", b: [], p: [[\"Nivel 225\",1.99],[\"Nivel 600 (castrado)\",5.50],[\"Nivel 1350 (castrado)\",8.99]] },\r\n      { n: \"Ceratosaurus\", img: \"ceratosaur.webp\", b: [], p: [[\"Nivel 225\",3.50],[\"Nivel 600 (castrado)\",6.99],[\"Nivel 1350 (castrado)\",14.99]] },\r\n      { n: \"Chalicotherium\", img: \"chalicotherium.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",4.99]] },\r\n      { n: \"Compognathus\", img: \"compy.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",2.50],[\"Nivel 1350 (castrado)\",4.99]] },\r\n      { n: \"Cosmo\", img: \"cosmo.webp\", b: [], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",5.50],[\"Nivel 1350 (castrado)\",9.50]] },\r\n      { n: \"Daeodon\", img: \"daeodon.webp\", b: [], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",4.99],[\"Nivel 1350 (castrado)\",9.99]] },\r\n      { n: \"Deinosuchus\", img: \"deinosuchus.webp\", b: [\"x\"], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",4.50],[\"Nivel 1200 (castrado)\",8.99]] },\r\n      { n: \"Deinotherium\", img: \"deinotherium.webp\", b: [], p: [[\"Nivel 225\",3.50],[\"Nivel 600 (castrado)\",5.50],[\"Nivel 1350 (castrado)\",10.99]] },\r\n      { n: \"Deinonychus\", img: \"deinonychus.png\", b: [], p: [[\"Nivel 225\",4.99],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1200 (castrado)\",11.99]] },\r\n      { n: \"Desmodus\", img: \"desmodus.webp\", b: [], p: [[\"Nivel 225\",3.50],[\"Nivel 600 (castrado)\",6.50],[\"Nivel 1350 (castrado)\",9.99]] },\r\n      { n: \"Dilophosaur\", img: \"dilophosaur.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",2.50],[\"Nivel 1350 (castrado)\",4.99]] },\r\n      { n: \"Dimetrodon\", img: \"dimetrodon.webp\", b: [\"normal\",\"aberrante\"], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",2.50],[\"Nivel 1350 (castrado)\",4.99]] },\r\n      { n: \"Dimorphodon\", img: \"dimorphodon.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",2.50],[\"Nivel 1350 (castrado)\",4.99]] },\r\n      { n: \"Diplocaulus\", img: \"diplocaulus.webp\", b: [\"normal\",\"aberrante\"], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",2.50],[\"Nivel 1350 (castrado)\",4.99]] },\r\n      { n: \"Direbear\", img: \"direbear.webp\", b: [\"normal\",\"aberrante\"], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",4.50],[\"Nivel 1350 (castrado)\",7.50]] },\r\n      { n: \"Direwolf\", img: \"direwolf.webp\", b: [], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",4.50],[\"Nivel 1350 (castrado)\",7.50]] },\r\n      { n: \"Doedicurus\", img: \"doedicurus.webp\", b: [\"normal\",\"aberrante\"], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",4.50],[\"Nivel 1350 (castrado)\",6.99]] },\r\n      { n: \"Dodo\", img: \"dodo.webp\", b: [\"normal\",\"aberrante\"], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",2.50],[\"Nivel 1350 (castrado)\",4.99]] },\r\n      { n: \"Drakeling\", img: \"drakeling.webp\", b: [], p: [[\"Nivel 225\",4.99],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1350 (castrado)\",11.99]] },\r\n      { n: \"Dreadmare\", img: \"dreadmare.webp\", b: [], p: [[\"Nivel 225\",4.99],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1350 (castrado)\",11.99]] },\r\n      { n: \"Dreadnoughtus\", img: \"dreadnoughtus.webp\", b: [], p: [[\"Nivel 225\",6.50],[\"Nivel 600 (castrado)\",10.50],[\"Nivel 1200 (castrado)\",19.50]] },\r\n      { n: \"Dung Beetle\", img: \"dungbeetle.webp\", b: [\"normal\",\"aberrante\"], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",2.99],[\"Nivel 1350 (castrado)\",4.99]] },\r\n      { n: \"Dunkleosteus\", img: \"dunkleosteus.webp\", b: [\"x\"], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1200 (castrado)\",11.99]] },\r\n      { n: \"Electrophorus\", img: \"electrophorus.webp\", b: [\"normal\",\"aberrante\"], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",2.50],[\"Nivel 1200 (castrado)\",4.99]] },\r\n      { n: \"Elderclaw\", img: \"elderclaw.webp\", b: [], p: [[\"Nivel 225\",4.99],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1350 (castrado)\",11.99]] },\r\n      { n: \"Enforcer\", img: \"enforcer.webp\", b: [], p: [[\"Nivel 225\",3.50],[\"Nivel 600 (castrado)\",6.50],[\"Nivel 1350 (castrado)\",9.50]] },\r\n      { n: \"Equus\", img: \"equus.webp\", b: [\"normal\",\"aberrante\"], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Fasolasuchus\", img: \"fasolasuchus.webp\", b: [\"normal\",\"aberrante\"], p: [[\"Nivel 225\",4.50],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1350 (castrado)\",9.99]] },\r\n      { n: \"Featherlight\", img: \"featherlight.webp\", b: [], p: [[\"Nivel 225\",1.99],[\"Nivel 600 (castrado)\",4.50],[\"Nivel 1350 (castrado)\",6.99]] },\r\n      { n: \"Ice Wyvern\", img: \"frostwyvern.webp\", b: [], p: [[\"Nivel 225\",4.99],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1350 (castrado)\",11.99]] },\r\n      { n: \"Gacha\", img: \"gacha.webp\", b: [], note: \"Recurso a elegir\", p: [[\"Nivel 225\",5.50],[\"Nivel 600 (castrado)\",6.99],[\"Nivel 1350 (castrado)\",9.99]] },\r\n      { n: \"Gasbags\", img: \"gasbags.webp\", b: [], p: [[\"Nivel 225\",3.50],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1350 (castrado)\",10.50]] },\r\n      { n: \"Gallimimus\", img: \"gallimimus.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Giant Bee\", img: \"giantbee.webp\", b: [], p: [[\"Nivel 225\",2.99]] },\r\n      { n: \"Giganotosaurus\", img: \"giganotosaurus.webp\", b: [\"normal\",\"tek\"], p: [[\"Nivel 225\",4.50],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1350 (castrado)\",14.50]] },\r\n      { n: \"Grand Tortugar\", img: \"grand_tortugar.webp\", b: [], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1200 (castrado)\",11.99]] },\r\n      { n: \"Griffin\", img: \"griffin.webp\", b: [], p: [[\"Nivel 225\",4.99],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1350 (castrado)\",11.99]] },\r\n      { n: \"Gloon\", img: \"gloon.webp\", b: [], p: [[\"Nivel 225\",4.50],[\"Nivel 600 (castrado)\",6.99],[\"Nivel 1350 (castrado)\",13.50]] },\r\n      { n: \"Glowtail\", img: \"glowtail.webp\", b: [], p: [[\"Nivel 225\",1.99],[\"Nivel 600 (castrado)\",4.50],[\"Nivel 1350 (castrado)\",6.99]] },\r\n      { n: \"Gigantopithecus\", img: \"gigantopithecus.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Gigantoraptor\", img: \"gigantoraptor.webp\", b: [\"normal\",\"aberrante\"], p: [[\"Nivel 225\",3.50],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1350 (castrado)\",14.99]] },\r\n      { n: \"Gigadesmodus\", img: \"gigadesmodus.webp\", b: [], p: [[\"Nivel 225\",6.50],[\"Nivel 600 (castrado)\",10.50],[\"Nivel 1350 (castrado)\",15.50]] },\r\n      { n: \"Helicoprion\", img: \"helicoprion.webp\", b: [], p: [[\"Nivel 225\",3.99],[\"Nivel 600\",9.99],[\"Nivel 1200\",11.99]] },\r\n      { n: \"Hesperornis\", img: \"hesperornis.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Hyaenodon\", img: \"hyaenodon.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Ichthyornis\", img: \"ichthyornis.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Ichthyosaurus\", img: \"ichthyosaurus.webp\", b: [\"x\"], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1200 (castrado)\",5.99]] },\r\n      { n: \"Iguanodon\", img: \"iguanodon.webp\", b: [\"normal\",\"aberrante\"], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Jerboa\", img: \"jerboa.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",6.50]] },\r\n      { n: \"Kairuku\", img: \"kairuku.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Kaprosuchus\", img: \"kaprosuchus.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1200 (castrado)\",5.99]] },\r\n      { n: \"Karkinos\", img: \"karkinos.webp\", b: [], p: [[\"Nivel 225\",4.99],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1200 (castrado)\",12.50]] },\r\n      { n: \"Kentrosaurus\", img: \"kentrosaurus.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",6.99]] },\r\n      { n: \"Lymantria\", img: \"lymantria.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Lystrosaurus\", img: \"lystrosaurus.webp\", b: [\"normal\",\"aberrante\"], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",2.50],[\"Nivel 1350 (castrado)\",4.99]] },\r\n      { n: \"Maeguana\", img: \"maeguana.png\", b: [], p: [[\"Nivel 225\",4.99],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1200 (castrado)\",10.50]] },\r\n      { n: \"Malwyn\", img: \"malwyn.webp\", b: [], p: [[\"Nivel 225\",5.50],[\"Nivel 600 (castrado)\",8.99],[\"Nivel 1350 (castrado)\",12.50]] },\r\n      { n: \"Mammoth\", img: \"mammoth.webp\", b: [], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",4.50],[\"Nivel 1350 (castrado)\",9.99]] },\r\n      { n: \"Managarmr\", img: \"managarmr.webp\", b: [], p: [[\"Nivel 225\",4.50],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1350 (castrado)\",11.99]] },\r\n      { n: \"Manta\", img: \"manta.webp\", b: [\"normal\",\"aberrante\"], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1200 (castrado)\",5.99]] },\r\n      { n: \"Mantis\", img: \"mantis.webp\", b: [], p: [[\"Nivel 225\",3.50],[\"Nivel 600 (castrado)\",5.99],[\"Nivel 1350 (castrado)\",11.99]] },\r\n      { n: \"Megalania\", img: \"megalania.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Megaloceros\", img: \"megaloceros.webp\", b: [], p: [[\"Nivel 225\",1.99],[\"Nivel 600 (castrado)\",4.50],[\"Nivel 1350 (castrado)\",6.99]] },\r\n      { n: \"Megalodon\", img: \"megalodon.webp\", b: [\"x\"], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",5.50],[\"Nivel 1200 (castrado)\",9.99]] },\r\n      { n: \"Megalosaurus\", img: \"megalosaurus.webp\", b: [\"normal\",\"aberrante\"], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",4.99],[\"Nivel 1350 (castrado)\",9.99]] },\r\n      { n: \"Megaraptor\", img: \"megaraptor.png\", b: [], p: [[\"Nivel 225\",4.50],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1350 (castrado)\",10.50]] },\r\n      { n: \"Megatherium\", img: \"megatherium.webp\", b: [], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",5.50],[\"Nivel 1350 (castrado)\",9.99]] },\r\n      { n: \"Mek\", img: \"mek.webp\", b: [], p: [[\"Nivel 225\",3.99],[\"Nivel 600 (castrado)\",6.50],[\"Nivel 1000 (castrado)\",14.99]] },\r\n      { n: \"Mesopithecus\", img: \"mesopithecus.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",2.50],[\"Nivel 1350 (castrado)\",4.50]] },\r\n      { n: \"Microraptor\", img: \"microraptor.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",2.50],[\"Nivel 1350 (castrado)\",4.50]] },\r\n      { n: \"Morellatops\", img: \"morellatops.webp\", b: [], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",4.50],[\"Nivel 1350 (castrado)\",6.99]] },\r\n      { n: \"Mosasaurus\", img: \"mosasaurus.webp\", b: [\"x\"], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",5.99],[\"Nivel 1200 (castrado)\",10.99]] },\r\n      { n: \"Moschops\", img: \"moschops.webp\", b: [\"normal\",\"aberrante\"], p: [[\"Nivel 225\",1.99],[\"Nivel 600 (castrado)\",3.99],[\"Nivel 1350 (castrado)\",7.99]] },\r\n      { n: \"Onychonycteris\", img: \"onyc.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Otter\", img: \"otter.webp\", b: [\"normal\",\"aberrante\",\"x\"], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1200 (castrado)\",5.99]] },\r\n      { n: \"Ossidon\", img: \"ossidon.webp\", b: [], p: [[\"Nivel 225\",6.50],[\"Nivel 600 (castrado)\",10.50],[\"Nivel 1350 (castrado)\",19.50]] },\r\n      { n: \"Oviraptor\", img: \"oviraptor.webp\", b: [\"normal\",\"aberrante\"], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Ovis\", img: \"ovis.webp\", b: [\"normal\",\"aberrante\"], p: [[\"Nivel 225\",1.99],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Pachycephalosaurus\", img: \"pachy.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Pachyrhinosaurus\", img: \"pachyrhinosaurus.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Paraceratherium\", img: \"paracer.webp\", b: [\"normal\",\"aberrante\",\"x\"], p: [[\"Nivel 225\",1.99],[\"Nivel 600 (castrado)\",4.50],[\"Nivel 1350 (castrado)\",6.99]] },\r\n      { n: \"Parasaurolophus\", img: \"parasaur.webp\", b: [\"normal\",\"aberrante\",\"tek\",\"x\"], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Pegomastax\", img: \"pegomastax.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Pelagornis\", img: \"pelagornis.webp\", b: [], p: [[\"Nivel 225\",1.99],[\"Nivel 600 (castrado)\",4.50],[\"Nivel 1350 (castrado)\",6.99]] },\r\n      { n: \"Phiomia\", img: \"phiomia.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Phoenix\", img: \"phoenix.webp\", b: [], p: [[\"Nivel 225\",3.50],[\"Nivel 600 (castrado)\",6.99],[\"Nivel 1350 (castrado)\",14.99]] },\r\n      { n: \"Pyromane\", img: \"pyromane.webp\", b: [], p: [[\"Nivel 225\",4.99],[\"Nivel 600 (castrado)\",9.99],[\"Nivel 1350 (castrado)\",14.99]] },\r\n      { n: \"Plesiosaur\", img: \"plesiosaur.webp\", b: [], p: [[\"Nivel 225\",1.99],[\"Nivel 600 (castrado)\",4.50],[\"Nivel 1200 (castrado)\",7.99]] },\r\n      { n: \"Procoptodon\", img: \"procoptodon.webp\", b: [], p: [[\"Nivel 225\",1.99],[\"Nivel 600 (castrado)\",4.50],[\"Nivel 1350 (castrado)\",7.99]] },\r\n      { n: \"Pteranodon\", img: \"pteranodon.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Pulmonoscorpius\", img: \"pulmonoscorpius.webp\", b: [\"normal\",\"aberrante\"], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Purlovia\", img: \"purlovia.webp\", b: [\"normal\",\"aberrante\"], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Quetzalcoatlus\", img: \"quetzal.webp\", b: [\"normal\",\"tek\"], p: [[\"Nivel 225\",3.50],[\"Nivel 600 (castrado)\",4.50],[\"Nivel 1350 (castrado)\",8.99]] },\r\n      { n: \"Raptor\", img: \"raptor.webp\", b: [\"normal\",\"aberrante\",\"tek\",\"x\"], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Ravager\", img: \"ravager.webp\", b: [], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",4.50],[\"Nivel 1350 (castrado)\",8.99]] },\r\n      { n: \"Reaper\", img: \"reaper.webp\", b: [], p: [[\"Nivel 225\",4.99],[\"Nivel 600\",7.50],[\"Nivel 1350\",14.99]] },\r\n      { n: \"Rex\", img: \"rex.webp\", b: [\"normal\",\"tek\",\"x\"], p: [[\"Nivel 225\",3.99],[\"Nivel 600 (castrado)\",5.50],[\"Nivel 1350 (castrado)\",11.99]] },\r\n      { n: \"Rock Drake\", img: \"rockdrake.webp\", b: [], p: [[\"Nivel 225\",4.99],[\"Nivel 600 (castrado)\",6.50],[\"Nivel 1350 (castrado)\",12.50]] },\r\n      { n: \"Roll Rat\", img: \"rollrat.webp\", b: [], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",4.50],[\"Nivel 1350 (castrado)\",7.99]] },\r\n      { n: \"Rhyniognatha\", img: \"rhyniognatha.webp\", b: [], p: [[\"Nivel 225\",4.99],[\"Nivel 600 (castrado)\",9.99],[\"Nivel 1350 (castrado)\",14.99]] },\r\n      { n: \"Rock Elemental\", img: \"rockelemental.webp\", b: [\"normal\",\"tiza\",\"hielo\",\"x\"], p: [[\"Nivel 225\",2.99],[\"Nivel 600 (castrado)\",4.99],[\"Nivel 1350 (castrado)\",8.50]] },\r\n      { n: \"Sabertooth\", img: \"sabertooth.webp\", b: [\"x\"], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Sarcosuchus\", img: \"sarco.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",4.50],[\"Nivel 1200 (castrado)\",6.99]] },\r\n      { n: \"Shastasaurus\", img: \"shastasaur.webp\", b: [], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",4.99],[\"Nivel 1200 (castrado)\",8.99]] },\r\n      { n: \"Shinehorn\", img: \"shinehorn.webp\", b: [], p: [[\"Nivel 225\",1.99],[\"Nivel 600 (castrado)\",4.50],[\"Nivel 1350 (castrado)\",6.99]] },\r\n      { n: \"Snow Owl\", img: \"snowowl.webp\", b: [], p: [[\"Nivel 225\",3.99],[\"Nivel 600 (castrado)\",6.50],[\"Nivel 1350 (castrado)\",9.99]] },\r\n      { n: \"Solwyn\", img: \"solwyn.webp\", b: [], p: [[\"Nivel 225\",5.50],[\"Nivel 600 (castrado)\",8.99],[\"Nivel 1350 (castrado)\",12.50]] },\r\n      { n: \"Spinosaur\", img: \"spinosaur.webp\", b: [\"normal\",\"aberrante\",\"x\"], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",4.99],[\"Nivel 1350 (castrado)\",9.99]] },\r\n      { n: \"Stegosaurus\", img: \"stegosaurus.webp\", b: [\"normal\",\"aberrante\",\"tek\"], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.99],[\"Nivel 1350 (castrado)\",7.99]] },\r\n      { n: \"Tapejara\", img: \"tapejara.webp\", b: [\"x\"], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Terror Bird\", img: \"terrorbird.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Therizinosaurus\", img: \"therizinosaurus.webp\", b: [], p: [[\"Nivel 225\",3.50],[\"Nivel 600 (castrado)\",5.50],[\"Nivel 1350 (castrado)\",11.99]] },\r\n      { n: \"Thorny Dragon\", img: \"thornydragon.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",6.99]] },\r\n      { n: \"Thylacoleo\", img: \"thylacoleo.webp\", b: [], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",4.50],[\"Nivel 1350 (castrado)\",8.99]] },\r\n      { n: \"Titanoboa\", img: \"titanoboa.webp\", b: [\"normal\",\"aberrante\"], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Triceratops\", img: \"triceratops.webp\", b: [\"normal\",\"aberrante\",\"tek\",\"x\"], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",4.99],[\"Nivel 1350 (castrado)\",6.50]] },\r\n      { n: \"Troodon\", img: \"troodon.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Tusoteuthis\", img: \"tusoteuthis.webp\", b: [], p: [[\"Nivel 225\",3.50],[\"Nivel 600 (castrado)\",5.50],[\"Nivel 1200 (castrado)\",11.99]] },\r\n      { n: \"Unicorn\", img: \"unicorn.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.50],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Woolly Rhino\", img: \"woollyrhino.webp\", b: [\"x\"], p: [[\"Nivel 225\",3.50],[\"Nivel 600 (castrado)\",5.50],[\"Nivel 1350 (castrado)\",11.99]] },\r\n      { n: \"Vulture\", img: \"vulture.webp\", b: [], p: [[\"Nivel 225\",1.50],[\"Nivel 600 (castrado)\",3.99],[\"Nivel 1350 (castrado)\",5.99]] },\r\n      { n: \"Fire Wyvern\", img: \"wyvern.webp\", b: [\"normal\",\"zombie\"], p: [[\"Nivel 225\",4.99],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1350 (castrado)\",11.99]] },\r\n      { n: \"Lightning Wyvern\", img: \"lightningwyvern.webp\", b: [\"normal\",\"zombie\"], p: [[\"Nivel 225\",4.99],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1350 (castrado)\",11.99]] },\r\n      { n: \"Poison Wyvern\", img: \"poisonwyvern.webp\", b: [\"normal\",\"zombie\"], p: [[\"Nivel 225\",4.99],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1350 (castrado)\",11.99]] },\r\n      { n: \"Veilwyn\", img: \"veilwyn.webp\", b: [], p: [[\"Nivel 225\",2.99],[\"Nivel 600 (castrado)\",8.99],[\"Nivel 1350 (castrado)\",12.50]] },\r\n      { n: \"Velonasaur\", img: \"velonasaur.webp\", b: [], p: [[\"Nivel 225\",4.50],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1350 (castrado)\",11.99]] },\r\n      { n: \"Xiphactinus\", img: \"xiphactinus.webp\", b: [\"x\"], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",5.50],[\"Nivel 1200 (castrado)\",9.99]] },\r\n      { n: \"Yi Ling\", img: \"yiling.webp\", b: [], p: [[\"Nivel 225\",4.50],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1350 (castrado)\",13.99]] },\r\n      { n: \"Yutyrannus\", img: \"yutyrannus.webp\", b: [\"x\"], p: [[\"Nivel 225\",2.50],[\"Nivel 600 (castrado)\",4.50],[\"Nivel 1350 (castrado)\",9.99]] },\r\n      { n: \"Astrocetus\", img: \"astrocetus.webp\", b: [], p: [[\"Nivel 225\",4.50],[\"Nivel 600 (castrado)\",6.50],[\"Nivel 1350 (castrado)\",10.50]] },\r\n      { n: \"Bloodstalker\", img: \"bloodstalker.webp\", b: [], p: [[\"Nivel 225\",4.50],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1350 (castrado)\",11.99]] },\r\n      { n: \"Ferox\", img: \"ferox.webp\", b: [], p: [[\"Nivel 225\",3.99],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1350 (castrado)\",11.99]] },\r\n      { n: \"Magmasaur\", img: \"magmasaur.webp\", b: [], p: [[\"Nivel 225\",4.99],[\"Nivel 600 (castrado)\",9.99],[\"Nivel 1350 (castrado)\",14.99]] },\r\n      { n: \"Megachelon\", img: \"megachelon.webp\", b: [], p: [[\"Nivel 225\",3.50],[\"Nivel 600 (castrado)\",6.99],[\"Nivel 1350 (castrado)\",10.50]] },\r\n      { n: \"Tidepup\", img: \"tidepup.webp\", b: [], p: [[\"Nivel 225\",3.99],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1350 (castrado)\",11.99]] },\r\n      { n: \"Palaeoctopus\", img: \"palaeoctopus.webp\", b: [], p: [[\"Nivel 225\",3.50],[\"Nivel 600 (castrado)\",6.99],[\"Nivel 1350 (castrado)\",11.99]] },\r\n      { n: \"Parrot\", img: \"parrot.webp\", b: [], p: [[\"Nivel 225\",3.50],[\"Nivel 600 (castrado)\",6.50],[\"Nivel 1350 (castrado)\",9.99]] },\r\n      { n: \"Cryolophosaurus\", img: \"cryolophosaurus.webp\", b: [\"normal\",\"x\"], p: [[\"Nivel 225\",2.99],[\"Nivel 600 (castrado)\",5.50],[\"Nivel 1350 (castrado)\",8.50]] },\r\n      { n: \"Umbra\", img: \"umbra.webp\", b: [\"normal\"], p: [[\"Nivel 225\",4.50],[\"Nivel 600 (castrado)\",12.50],[\"Nivel 1350 (castrado)\",19.50]] },\r\n      { n: \"Lumina\", img: \"lumina.webp\", b: [\"normal\"], p: [[\"Nivel 225\",3.50],[\"Nivel 600 (castrado)\",8.50],[\"Nivel 1350 (castrado)\",13.50]] },\r\n      { n: \"Concavenator\", img: \"concavenator.webp\", b: [\"normal\",\"aberrante\",\"x\"], p: [[\"Nivel 225\",3.50],[\"Nivel 600 (castrado)\",6.99],[\"Nivel 1350 (castrado)\",11.99]] },\r\n      { n: \"Boaratos\", img: \"boaratos.webp\", b: [], p: [[\"Nivel 225\",4.50],[\"Nivel 600 (castrado)\",7.50],[\"Nivel 1350 (castrado)\",14.50]] }\r\n    ];\r\n\r\n\r\n    \/\/ ------------------------------------------------------------\r\n    \/\/ GENES: organizados por categor\u00eda para el desplegable del extra\r\n    \/\/ de m\u00e1s abajo. Cada gen lleva \"n\" (nombre) y \"d\" (descripci\u00f3n,\r\n    \/\/ se muestra debajo del desplegable al elegirlo). Para a\u00f1adir o\r\n    \/\/ quitar un gen, edita solo esta lista; para a\u00f1adir una categor\u00eda\r\n    \/\/ nueva, copia un bloque { cat: \"...\", items: [...] }.\r\n    \/\/ ------------------------------------------------------------\r\n    var GENES = [\r\n      { cat: \"Reducci\u00f3n de peso (inventario)\", items: [\r\n        { n: \"Planta-portadora\", d: \"Reduce el peso de las plantas en su inventario.\" },\r\n        { n: \"Carne-Lleva\", d: \"Reduce el peso de la carne en su inventario.\" },\r\n        { n: \"Con carcasa\", d: \"Reduce el peso de las canales en su inventario.\" },\r\n        { n: \"Mineral-Holding\", d: \"Reduce el peso de los minerales en su inventario.\" },\r\n        { n: \"De origen ex\u00f3tico\", d: \"Reduce el peso de los art\u00edculos ex\u00f3ticos en su inventario.\" },\r\n        { n: \"Portador de desierto\", d: \"Reduce el peso de los objetos de Tierra quemada en su inventario.\" },\r\n        { n: \"Cavernas\", d: \"Reduce el peso de los objetos de aberraci\u00f3n en su inventario.\" },\r\n        { n: \"Contenedores de desechos\", d: \"Reduce el peso de los objetos de extinci\u00f3n en su inventario.\" }\r\n      ]},\r\n      { cat: \"Genes de cr\u00eda (Robusto \/ Fr\u00e1gil \/ Mutable)\", items: [\r\n        { n: \"Salud-Robusto\", d: \"M\u00e1s probabilidad de que las cr\u00edas hereden la salud m\u00e1s alta de sus padres.\" },\r\n        { n: \"Salud-Fr\u00e1gil\", d: \"M\u00e1s probabilidad de que las cr\u00edas hereden la salud m\u00e1s baja de sus padres.\" },\r\n        { n: \"Salud-Mutable\", d: \"La salud es altamente mutable: m\u00e1s probabilidad de mutaciones en las cr\u00edas.\" },\r\n        { n: \"Resistencia-Robusto\", d: \"M\u00e1s probabilidad de que las cr\u00edas hereden la resistencia m\u00e1s alta de sus padres.\" },\r\n        { n: \"Resistencia-Fr\u00e1gil\", d: \"M\u00e1s probabilidad de que las cr\u00edas hereden la resistencia m\u00e1s baja de sus padres.\" },\r\n        { n: \"Resistencia-Mutable\", d: \"La resistencia es altamente mutable: m\u00e1s probabilidad de mutaciones en las cr\u00edas.\" },\r\n        { n: \"Ox\u00edgeno-Robusto\", d: \"M\u00e1s probabilidad de que las cr\u00edas hereden el ox\u00edgeno m\u00e1s alto de sus padres.\" },\r\n        { n: \"Ox\u00edgeno-Fr\u00e1gil\", d: \"M\u00e1s probabilidad de que las cr\u00edas hereden el ox\u00edgeno m\u00e1s bajo de sus padres.\" },\r\n        { n: \"Ox\u00edgeno-Mutable\", d: \"El ox\u00edgeno es altamente mutable: m\u00e1s probabilidad de mutaciones en las cr\u00edas.\" },\r\n        { n: \"Comida-Robusto\", d: \"M\u00e1s probabilidad de que las cr\u00edas hereden la comida m\u00e1s alta de sus padres.\" },\r\n        { n: \"Comida-Fr\u00e1gil\", d: \"M\u00e1s probabilidad de que las cr\u00edas hereden la comida m\u00e1s baja de sus padres.\" },\r\n        { n: \"Comida-Mutable\", d: \"La comida es altamente mutable: m\u00e1s probabilidad de mutaciones en las cr\u00edas.\" },\r\n        { n: \"Peso-Robusto\", d: \"M\u00e1s probabilidad de que las cr\u00edas hereden el peso m\u00e1s alto de sus padres.\" },\r\n        { n: \"Peso-Fr\u00e1gil\", d: \"M\u00e1s probabilidad de que las cr\u00edas hereden el peso m\u00e1s bajo de sus padres.\" },\r\n        { n: \"Peso-Mutable\", d: \"El peso es altamente mutable: m\u00e1s probabilidad de mutaciones en las cr\u00edas.\" },\r\n        { n: \"Cuerpo a cuerpo-Robusto\", d: \"M\u00e1s probabilidad de que las cr\u00edas hereden el da\u00f1o cuerpo a cuerpo m\u00e1s alto de sus padres.\" },\r\n        { n: \"Cuerpo a cuerpo-Fr\u00e1gil\", d: \"M\u00e1s probabilidad de que las cr\u00edas hereden el da\u00f1o cuerpo a cuerpo m\u00e1s bajo de sus padres.\" },\r\n        { n: \"Cuerpo a cuerpo-Mutable\", d: \"El da\u00f1o cuerpo a cuerpo es altamente mutable: m\u00e1s probabilidad de mutaciones en las cr\u00edas.\" }\r\n      ]},\r\n      { cat: \"Comportamiento y combate\", items: [\r\n        { n: \"Enojado\", d: \"Obtiene un aumento de da\u00f1o saliente a medida que disminuye la salud.\" },\r\n        { n: \"Tenaz\", d: \"Obtiene reducci\u00f3n de da\u00f1o entrante a medida que disminuye la salud.\" },\r\n        { n: \"Vamp\u00edrico\", d: \"Recupera salud equivalente a un porcentaje del da\u00f1o que inflige.\" },\r\n        { n: \"C\u00e1lido\", d: \"Es excepcionalmente c\u00e1lida y protege a su jinete del fr\u00edo.\" },\r\n        { n: \"Fr\u00edo\", d: \"Es excepcionalmente fr\u00eda y protege a su jinete del calor.\" },\r\n        { n: \"Matanza de gigantes\", d: \"Inflige da\u00f1o adicional a objetivos m\u00e1s grandes, pero menos a los peque\u00f1os.\" },\r\n        { n: \"Alta resistencia\", d: \"Puede correr durante m\u00e1s tiempo que la mayor\u00eda.\" },\r\n        { n: \"Acu\u00e1tico\", d: \"Se ha adaptado a la vida en el agua.\" },\r\n        { n: \"Fren\u00e9tico\", d: \"Drena el letargo m\u00e1s r\u00e1pido de lo normal.\" },\r\n        { n: \"Distraer\", d: \"Distrae a los objetivos que golpea: inflige menos da\u00f1o a todo lo que no sea ella misma.\" },\r\n        { n: \"Excitable\", d: \"Se emociona cuanto m\u00e1s est\u00e1 en combate, siguiendo ataques simples con otros m\u00e1s poderosos.\" },\r\n        { n: \"Agresivo\", d: \"Se vuelve m\u00e1s r\u00e1pida al atacar.\" },\r\n        { n: \"Cobardemente\", d: \"Se vuelve m\u00e1s r\u00e1pida cuando es atacada.\" },\r\n        { n: \"Adormecer\", d: \"Puede ignorar el da\u00f1o\u2026 por un tiempo.\" },\r\n        { n: \"Despreocupado\", d: \"Es m\u00e1s r\u00e1pida cuando no est\u00e1 pensando en luchar.\" },\r\n        { n: \"Atl\u00e9tico\", d: \"Su gran capacidad pulmonar le permite regenerar r\u00e1pidamente salud y resistencia.\" },\r\n        { n: \"Aprendizaje r\u00e1pido\", d: \"Tiene una aptitud natural para crecer y aprender nuevas habilidades.\" },\r\n        { n: \"Nocturno\", d: \"Se ha adaptado para ser m\u00e1s activa durante la noche.\" },\r\n        { n: \"Diurno\", d: \"Se ha adaptado para ser m\u00e1s activa durante el d\u00eda.\" },\r\n        { n: \"Metabolismo lento\", d: \"Quema sus reservas de alimentos lentamente.\" },\r\n        { n: \"Graso\", d: \"Su grasa act\u00faa como una capa protectora contra da\u00f1os entrantes.\" },\r\n        { n: \"Protector\", d: \"Protege ferozmente a su jinete, incluso despu\u00e9s de que ya no lo monta.\" },\r\n        { n: \"Matanza del rey\", d: \"Tiene una aversi\u00f3n instintiva por los enemigos \\\"importantes\\\", pero es menos agresiva en otros aspectos.\" },\r\n        { n: \"Golpes r\u00e1pidos\", d: \"Golpea m\u00e1s r\u00e1pido, pero causa menos da\u00f1o.\" },\r\n        { n: \"De gran impacto\", d: \"Golpea m\u00e1s fuerte, pero menos r\u00e1pido.\" },\r\n        { n: \"Agresivo (truco 1)\", d: \"Se vuelve m\u00e1s r\u00e1pida al atacar.\" },\r\n        { n: \"Agresivo (truco 2)\", d: \"Se vuelve m\u00e1s r\u00e1pida al atacar.\" }\r\n      ]},\r\n      { cat: \"Utilidad y montura\", items: [\r\n        { n: \"Se\u00f1or de las bestias\", d: \"Aumenta el da\u00f1o cuerpo a cuerpo de las criaturas que monta.\" },\r\n        { n: \"Sanguinario\", d: \"Aumenta el da\u00f1o cuerpo a cuerpo.\" },\r\n        { n: \"Baluarte\", d: \"Reduce el da\u00f1o recibido mientras est\u00e1 en modo Torreta.\" },\r\n        { n: \"Eficiente\", d: \"Aumenta el rendimiento de las cosechas.\" },\r\n        { n: \"Piel de hierro\", d: \"Aumenta la salud m\u00e1xima de las criaturas que monta.\" },\r\n        { n: \"Mula de carga\", d: \"Tiene mayor capacidad de carga.\" },\r\n        { n: \"Tirador de primera\", d: \"Aumenta el da\u00f1o infligido mientras est\u00e1 en modo Torreta.\" },\r\n        { n: \"R\u00e1pido\", d: \"Aumenta la velocidad de movimiento.\" }\r\n      ]}\r\n    ];\r\n\r\n    \/\/ ------------------------------------------------------------\r\n    \/\/ EXTRAS: opciones que aparecen en TODOS los dinos, debajo de\r\n    \/\/ sus niveles. Para a\u00f1adir otra, copia un bloque y cambia texto\r\n    \/\/ y precio (con punto decimal).\r\n    \/\/   - \"stats\": lista corta -> se muestra como botones.\r\n    \/\/   - \"genes\": lista larga -> se muestra como desplegable.\r\n    \/\/   - \"levels\": true limita la opci\u00f3n solo al nivel base (225).\r\n    \/\/     Si lo dejas sin poner (o en null), la opci\u00f3n vale para\r\n    \/\/     cualquiera de los tres niveles, a precio fijo.\r\n    \/\/ ------------------------------------------------------------\r\n    var EXTRAS = [\r\n      {\r\n        label: \"{nivel} con 1 stat a elegir + pintura\",\r\n        price: 15.00,\r\n        note: \"Solo para el nivel base (225): se entrega con 1 stat a elegir en 60 puntos base + pintura. Son 15 \u20ac sobre el precio de ese nivel. Los niveles 600 y 1350 no llevan esta opci\u00f3n.\",\r\n        stats: [\"Salud\", \"Energ\u00eda\", \"Ox\u00edgeno\", \"Comida\", \"Peso\", \"Da\u00f1o\"],\r\n        color: true,\r\n        levels: true\r\n      }\r\n    ];\r\n\r\n    var BADGE_LABELS = {\r\n      normal: \"Normal\",\r\n      zombie: \"Zombie\",\r\n      x: \"X\",\r\n      aberrante: \"Aberrante\",\r\n      tek: \"Tek\",\r\n      tiza: \"Tiza\",\r\n      hielo: \"Hielo\"\r\n    };\r\n\r\n    \/\/ ------------------------------------------------------------\r\n    \/\/ SEXO: obligatorio en todos los dinos y en todos los niveles.\r\n    \/\/ El recargo de la hembra se cambia aqu\u00ed (en euros).\r\n    \/\/ ------------------------------------------------------------\r\n    var SEXOS = [\"macho\", \"hembra\"];\r\n    var SEX_LABELS = { macho: \"Macho\", hembra: \"Hembra\" };\r\n    var RECARGO_SEXO = { macho: 0, hembra: 1 };\r\n\r\n    \/\/ Precio fijo del gen opcional. Se puede a\u00f1adir en cualquier nivel\r\n    \/\/ (225, 600, 1350) y en cualquier extra, como una casilla opcional\r\n    \/\/ m\u00e1s dentro de esa misma fila.\r\n    var GENE_PRICE = 6.00;\r\n\r\n    function sexSurcharge(sex) {\r\n      return (sex && RECARGO_SEXO[sex]) ? RECARGO_SEXO[sex] : 0;\r\n    }\r\n\r\n    \/\/ Variantes con recargo (se suma al precio de cada nivel)\r\n    var RECARGO = { aberrante: 1, x: 1, tek: 1 };\r\n\r\n    function surcharge(variant) {\r\n      return (variant && RECARGO[variant]) ? RECARGO[variant] : 0;\r\n    }\r\n\r\n    \/\/ Opciones del selector: siempre \"Normal\" primero, despu\u00e9s sus variantes\r\n    function variantOptions(dino) {\r\n      if (!dino.b || dino.b.length === 0) return [];\r\n      var rest = dino.b.filter(function (v) { return v !== \"normal\"; });\r\n      return [\"normal\"].concat(rest);\r\n    }\r\n\r\n    \/\/ ------------------------------------------------------------\r\n    \/\/ FILTROS: cada grupo lleva la lista de dinos que lo componen.\r\n    \/\/ Para mover un dino de mapa, a\u00f1\u00e1delo o qu\u00edtalo de estas listas\r\n    \/\/ (el nombre debe escribirse igual que en DINOS).\r\n    \/\/ \"Todo\" y \"Terrestres\" se calculan solos.\r\n    \/\/ ------------------------------------------------------------\r\n    var GRUPOS = [\r\n      { id: \"todo\", label: \"Todo\" },\r\n\r\n      { id: \"destacados\", label: \"Destacados\", n: [\r\n        \"Acrocanthosaurus\",\"Aureliax\",\"Bison\",\"Burrowbuck\",\"Deinonychus\",\"Desmodus\",\"Drakeling\",\"Elderclaw\",\r\n        \"Grand Tortugar\",\"Griffin\",\"Gloon\",\"Gigadesmodus\",\"Maeguana\",\"Malwyn\",\"Megaraptor\",\"Ossidon\",\"Solwyn\",\r\n        \"Veilwyn\",\"Astrocetus\",\"Bloodstalker\",\"Magmasaur\",\"Megachelon\",\"Tidepup\",\"Palaeoctopus\",\"Parrot\",\r\n        \"Cryolophosaurus\",\"Umbra\",\"Lumina\",\"Concavenator\",\"Boaratos\"] },\r\n\r\n      { id: \"island\", label: \"The Island\", n: [\r\n        \"Achatina\",\"Allosaurus\",\"Anglerfish\",\"Ankylosaurus\",\"Araneo\",\"Archaeopteryx\",\"Argentavis\",\"Arthropluera\",\r\n        \"Baryonyx\",\"Basilosaurus\",\"Beelzebufo\",\"Brontosaurus\",\"Carbonemys\",\"Carcharodontosaurus\",\"Carnotaurus\",\r\n        \"Castoroides\",\"Ceratosaurus\",\"Chalicotherium\",\"Compognathus\",\"Daeodon\",\"Deinosuchus\",\"Deinotherium\",\r\n        \"Dilophosaur\",\"Dimetrodon\",\"Dimorphodon\",\"Diplocaulus\",\"Direbear\",\"Direwolf\",\"Doedicurus\",\"Dodo\",\r\n        \"Dung Beetle\",\"Dunkleosteus\",\"Electrophorus\",\"Equus\",\"Gallimimus\",\"Giant Bee\",\"Giganotosaurus\",\r\n        \"Gigantopithecus\",\"Gigantoraptor\",\"Hesperornis\",\"Hyaenodon\",\"Ichthyornis\",\"Ichthyosaurus\",\"Iguanodon\",\r\n        \"Kairuku\",\"Kaprosuchus\",\"Kentrosaurus\",\"Lystrosaurus\",\"Mammoth\",\"Manta\",\"Megalania\",\"Megaloceros\",\r\n        \"Megalodon\",\"Megalosaurus\",\"Megatherium\",\"Mesopithecus\",\"Microraptor\",\"Mosasaurus\",\"Moschops\",\r\n        \"Onychonycteris\",\"Otter\",\"Oviraptor\",\"Ovis\",\"Pachycephalosaurus\",\"Pachyrhinosaurus\",\"Paraceratherium\",\r\n        \"Parasaurolophus\",\"Pegomastax\",\"Pelagornis\",\"Phiomia\",\"Plesiosaur\",\"Procoptodon\",\"Pteranodon\",\r\n        \"Pulmonoscorpius\",\"Purlovia\",\"Quetzalcoatlus\",\"Raptor\",\"Rex\",\"Rhyniognatha\",\"Sabertooth\",\"Sarcosuchus\",\r\n        \"Spinosaur\",\"Stegosaurus\",\"Tapejara\",\"Terror Bird\",\"Therizinosaurus\",\"Thylacoleo\",\"Titanoboa\",\r\n        \"Triceratops\",\"Troodon\",\"Tusoteuthis\",\"Unicorn\",\"Woolly Rhino\",\"Xiphactinus\",\"Yutyrannus\"] },\r\n\r\n      { id: \"scorched\", label: \"Scorched Earth\", n: [\r\n        \"Ceratosaurus\",\"Fasolasuchus\",\"Jerboa\",\"Lymantria\",\"Mantis\",\"Morellatops\",\"Phoenix\",\"Rock Elemental\",\r\n        \"Thorny Dragon\",\"Vulture\",\"Fire Wyvern\",\"Lightning Wyvern\",\"Poison Wyvern\",\"Concavenator\"] },\r\n\r\n      { id: \"center\", label: \"The Center\", n: [\"Pyromane\",\"Shastasaurus\"] },\r\n\r\n      { id: \"aberration\", label: \"Aberration\", n: [\r\n        \"Achatina\",\"Basilisco\",\"Anglerfish\",\"Ankylosaurus\",\"Araneo\",\"Arthropluera\",\"Baryonyx\",\"Beelzebufo\",\r\n        \"Bulbdog\",\"Carbonemys\",\"Carnotaurus\",\"Cosmo\",\"Dimetrodon\",\"Diplocaulus\",\"Direbear\",\"Doedicurus\",\"Dodo\",\r\n        \"Dung Beetle\",\"Electrophorus\",\"Equus\",\"Fasolasuchus\",\"Featherlight\",\"Glowtail\",\"Gigantoraptor\",\r\n        \"Iguanodon\",\"Karkinos\",\"Lystrosaurus\",\"Manta\",\"Megalosaurus\",\"Moschops\",\"Otter\",\"Oviraptor\",\"Ovis\",\r\n        \"Paraceratherium\",\"Parasaurolophus\",\"Pulmonoscorpius\",\"Purlovia\",\"Raptor\",\"Ravager\",\"Reaper\",\r\n        \"Rock Drake\",\"Roll Rat\",\"Shinehorn\",\"Spinosaur\",\"Stegosaurus\",\"Titanoboa\",\"Triceratops\",\"Yi Ling\",\r\n        \"Concavenator\"] },\r\n\r\n      { id: \"extinction\", label: \"Extinction\", n: [\r\n        \"Armadoggo\",\"Dreadnoughtus\",\"Enforcer\",\"Gacha\",\"Gasbags\",\"Managarmr\",\"Mek\",\"Snow Owl\",\"Velonasaur\",\r\n        \"Concavenator\"] },\r\n\r\n      { id: \"astraeos\", label: \"Astraeos\", n: [\"Grand Tortugar\",\"Maeguana\",\"Concavenator\",\"Boaratos\"] },\r\n\r\n      { id: \"ragnarok\", label: \"Ragnarok\", n: [\r\n        \"Bison\",\"Drakeling\",\"Ice Wyvern\",\"Griffin\",\"Ossidon\",\"Veilwyn\",\"Concavenator\"] },\r\n\r\n      { id: \"valguero\", label: \"Valguero\", n: [\"Deinonychus\",\"Elderclaw\",\"Megaraptor\"] },\r\n\r\n      { id: \"lostcolony\", label: \"Lost Colony\", n: [\r\n        \"Aureliax\",\"Desmodus\",\"Gloon\",\"Gigadesmodus\",\"Malwyn\",\"Ossidon\",\"Solwyn\",\"Veilwyn\",\"Cryolophosaurus\"] },\r\n\r\n      { id: \"genesis1\", label: \"Genesis 1\", n: [\r\n        \"Acrocanthosaurus\",\"Archelon\",\"Allosaurus\",\"Ankylosaurus\",\"Argentavis\",\"Basilosaurus\",\"Deinosuchus\",\r\n        \"Dunkleosteus\",\"Ichthyosaurus\",\"Megalodon\",\"Mosasaurus\",\"Otter\",\"Paraceratherium\",\"Parasaurolophus\",\r\n        \"Raptor\",\"Rex\",\"Rock Elemental\",\"Sabertooth\",\"Spinosaur\",\"Tapejara\",\"Triceratops\",\"Woolly Rhino\",\r\n        \"Xiphactinus\",\"Yutyrannus\",\"Astrocetus\",\"Bloodstalker\",\"Ferox\",\"Magmasaur\",\"Megachelon\",\"Tidepup\",\r\n        \"Palaeoctopus\",\"Parrot\",\"Cryolophosaurus\",\"Umbra\",\"Lumina\",\"Concavenator\"] },\r\n\r\n      { id: \"terrestres\", label: \"Terrestres\" },\r\n\r\n      { id: \"voladores\", label: \"Voladores\", n: [\r\n        \"Argentavis\",\"Desmodus\",\"Drakeling\",\"Dreadmare\",\"Featherlight\",\"Ice Wyvern\",\"Griffin\",\"Gigadesmodus\",\r\n        \"Lymantria\",\"Pelagornis\",\"Phoenix\",\"Pteranodon\",\"Quetzalcoatlus\",\"Rhyniognatha\",\"Snow Owl\",\"Tapejara\",\r\n        \"Fire Wyvern\",\"Lightning Wyvern\",\"Poison Wyvern\",\"Astrocetus\",\"Parrot\",\"Umbra\",\"Lumina\"] },\r\n\r\n      { id: \"acuaticos\", label: \"Acu\u00e1ticos\", n: [\r\n        \"Archelon\",\"Anglerfish\",\"Basilosaurus\",\"Dunkleosteus\",\"Electrophorus\",\"Helicoprion\",\"Ichthyosaurus\",\r\n        \"Manta\",\"Megalodon\",\"Mosasaurus\",\"Plesiosaur\",\"Shastasaurus\",\"Tusoteuthis\",\"Xiphactinus\",\"Megachelon\",\r\n        \"Tidepup\",\"Palaeoctopus\"] },\r\n\r\n      { id: \"hombro\", label: \"Dino de hombro\", n: [\r\n        \"Archaeopteryx\",\"Bulbdog\",\"Cat\",\"Cosmo\",\"Dimorphodon\",\"Drakeling\",\"Featherlight\",\"Glowtail\",\r\n        \"Ichthyornis\",\"Jerboa\",\"Pyromane\",\"Shinehorn\",\"Vulture\",\"Ferox\",\"Tidepup\",\"Parrot\"] }\r\n    ];\r\n\r\n    \/\/ Dinos que no cuentan como terrestres aunque no est\u00e9n en voladores ni acu\u00e1ticos\r\n    var NO_TERRESTRES = [\"Archaeopteryx\",\"Dimorphodon\",\"Giant Bee\",\"Ichthyornis\",\"Onychonycteris\",\"Vulture\"];\r\n\r\n    \/\/ \"Terrestres\" = todo lo que no vuela, no nada y no est\u00e1 en la lista de arriba\r\n    (function () {\r\n      function listaDe(id) {\r\n        for (var i = 0; i < GRUPOS.length; i++) if (GRUPOS[i].id === id) return GRUPOS[i];\r\n        return null;\r\n      }\r\n      var fuera = {};\r\n      listaDe(\"voladores\").n.concat(listaDe(\"acuaticos\").n, NO_TERRESTRES).forEach(function (nm) { fuera[nm] = true; });\r\n      listaDe(\"terrestres\").n = DINOS.filter(function (d) { return !fuera[d.n]; }).map(function (d) { return d.n; });\r\n    })();\r\n\r\n    \/\/ \u00cdndices r\u00e1pidos y recuento real de cada filtro\r\n    GRUPOS.forEach(function (g) {\r\n      if (!g.n) { g.count = DINOS.length; return; }\r\n      var set = {};\r\n      g.n.forEach(function (nm) { set[nm] = true; });\r\n      g.set = set;\r\n      g.count = DINOS.filter(function (d) { return set[d.n]; }).length;\r\n    });\r\n\r\n    var grupoActivo = \"todo\";\r\n\r\n    \/\/ ------------------------------------------------------------\r\n    \/\/ FILTRO POR VARIANTE: fila aparte encima del filtro de mapa.\r\n    \/\/ ------------------------------------------------------------\r\n    var VARIANTES = [\r\n      { id: \"aberrante\", label: \"Aberrante\" },\r\n      { id: \"tek\", label: \"Tek\" },\r\n      { id: \"x\", label: \"X\" }\r\n    ];\r\n    VARIANTES.forEach(function (v) {\r\n      v.count = DINOS.filter(function (d) { return d.b.indexOf(v.id) !== -1; }).length;\r\n    });\r\n    var varianteActiva = null;\r\n\r\n    function enVariante(dino) {\r\n      if (!varianteActiva) return true;\r\n      return dino.b.indexOf(varianteActiva) !== -1;\r\n    }\r\n\r\n    function renderVarianteChips() {\r\n      var wrap = document.getElementById(\"thm-chips-variante\");\r\n      wrap.innerHTML = \"\";\r\n      VARIANTES.forEach(function (v) {\r\n        var on = v.id === varianteActiva;\r\n        var chip = el(\"button\", \"thm-chip\" + (on ? \" on\" : \"\"));\r\n        chip.type = \"button\";\r\n        chip.appendChild(el(\"span\", null, v.label));\r\n        chip.appendChild(el(\"span\", \"thm-chip-count\", String(v.count)));\r\n        chip.setAttribute(\"aria-pressed\", on ? \"true\" : \"false\");\r\n        chip.addEventListener(\"click\", function () {\r\n          varianteActiva = on ? null : v.id;\r\n          renderVarianteChips();\r\n          render(searchInput ? searchInput.value : \"\");\r\n        });\r\n        wrap.appendChild(chip);\r\n      });\r\n    }\r\n\r\n    \/\/ ---------- Estado ----------\r\n    var cart = {};        \/\/ clave -> { name, variant, sex, level, price, qty }\r\n\r\n    var root = document.getElementById(\"tharyon-mobile-root\");\r\n    var grid = document.getElementById(\"thm-grid\");\r\n    var searchInput = document.getElementById(\"thm-search\");\r\n    var bar = document.getElementById(\"thm-bar\");\r\n    var barCount = document.getElementById(\"thm-bar-count\");\r\n    var barTotal = document.getElementById(\"thm-bar-total\");\r\n    var modal = document.getElementById(\"thm-modal\");\r\n    var output = document.getElementById(\"thm-output\");\r\n    var copiedMsg = document.getElementById(\"thm-copied\");\r\n\r\n    function eur(n) {\r\n      return n.toFixed(2).replace(\".\", \",\") + \" \u20ac\";\r\n    }\r\n\r\n    function el(tag, className, text) {\r\n      var e = document.createElement(tag);\r\n      if (className) e.className = className;\r\n      if (text !== undefined) e.textContent = text;\r\n      return e;\r\n    }\r\n\r\n    \/\/ Cada fila (dino + nivel) guarda UNA sola configuraci\u00f3n a la vez:\r\n    \/\/ si cambias sexo\/variante\/gen con cantidad > 0, se actualiza esa\r\n    \/\/ misma l\u00ednea del pedido en vez de crear una nueva.\r\n    function keyFor(dino, levelLabel) {\r\n      return dino.n + \"||\" + levelLabel;\r\n    }\r\n\r\n    function changeQty(dino, levelLabel, basePrice, variant, stat, paint, sex, delta, gene) {\r\n      if (!sex) return 0; \/\/ el sexo es obligatorio\r\n      var k = keyFor(dino, levelLabel);\r\n      var item = cart[k];\r\n      var price = basePrice + surcharge(variant) + sexSurcharge(sex) + (gene ? GENE_PRICE : 0);\r\n      if (!item) {\r\n        item = cart[k] = {\r\n          name: dino.n,\r\n          variant: variant,\r\n          sex: sex,\r\n          level: levelLabel,\r\n          stat: stat || null,\r\n          gene: gene || null,\r\n          paint: !!paint,\r\n          price: price,\r\n          qty: 0\r\n        };\r\n      } else {\r\n        item.variant = variant;\r\n        item.sex = sex;\r\n        item.stat = stat || null;\r\n        item.gene = gene || null;\r\n        item.paint = !!paint;\r\n        item.price = price;\r\n      }\r\n      item.qty += delta;\r\n      if (item.qty <= 0) delete cart[k];\r\n      updateBar();\r\n      return cart[k] ? cart[k].qty : 0;\r\n    }\r\n\r\n    function totals() {\r\n      var units = 0, sum = 0;\r\n      for (var k in cart) {\r\n        units += cart[k].qty;\r\n        sum += cart[k].qty * cart[k].price;\r\n      }\r\n      return { units: units, sum: sum };\r\n    }\r\n\r\n    function updateBar() {\r\n      var t = totals();\r\n      if (t.units > 0) {\r\n        bar.classList.add(\"show\");\r\n        root.classList.add(\"has-order\");\r\n      } else {\r\n        bar.classList.remove(\"show\");\r\n        root.classList.remove(\"has-order\");\r\n      }\r\n      barCount.textContent = t.units === 1 ? \"1 dino seleccionado\" : t.units + \" dinos seleccionados\";\r\n      barTotal.textContent = eur(t.sum);\r\n    }\r\n\r\n    \/\/ ---------- Tarjetas ----------\r\n    function buildCard(dino) {\r\n      var card = el(\"div\", \"thm-card\");\r\n\r\n      card.appendChild(el(\"h3\", \"thm-card-title\", dino.n));\r\n      card.appendChild(el(\"div\", \"thm-card-underline\"));\r\n\r\n      var badgeWrap = el(\"div\", \"thm-badges\");\r\n      (dino.b || []).forEach(function (b) {\r\n        badgeWrap.appendChild(el(\"span\", \"thm-badge \" + b, BADGE_LABELS[b] || b));\r\n      });\r\n      card.appendChild(badgeWrap);\r\n\r\n      if (dino.note) card.appendChild(el(\"div\", \"thm-card-note\", dino.note));\r\n\r\n      var imgWrap = el(\"div\", \"thm-card-image\");\r\n      var img = document.createElement(\"img\");\r\n      img.alt = dino.n;\r\n      img.referrerPolicy = \"no-referrer\";\r\n      img.onerror = function () {\r\n        \/\/ Si la imagen no carga (enlace roto, hosting ca\u00eddo o\r\n        \/\/ bloqueado, etc.) mostramos un aviso claro en vez de dejar\r\n        \/\/ un hueco en blanco sin explicaci\u00f3n.\r\n        img.remove();\r\n        imgWrap.classList.add(\"thm-img-error\");\r\n        imgWrap.appendChild(document.createTextNode(\"Imagen no disponible\"));\r\n      };\r\n      img.src = IMG_BASE + dino.img;\r\n      imgWrap.appendChild(img);\r\n      card.appendChild(imgWrap);\r\n\r\n      var prices = el(\"div\", \"thm-prices\");\r\n      var rowRefs = [];\r\n      var opts = variantOptions(dino);\r\n\r\n      function addRow(levelLabel, basePrice, stats, pintura, levels) {\r\n        var chosen = opts.length ? opts[0] : null;\r\n        var chosenStat = null;\r\n        var chosenGene = null;\r\n        var geneEnabled = false;\r\n        var chosenSex = null; \/\/ obligatorio: nadie viene marcado por defecto\r\n        var chosenLevel = (levels && levels.length === 1) ? levels[0][0] : null;\r\n\r\n        function fullLabel() {\r\n          var varios = levels && levels.length > 1;\r\n          return (varios && chosenLevel) ? levelLabel + \" \u2014 \" + chosenLevel : levelLabel;\r\n        }\r\n\r\n        \/\/ Con selector de nivel, el precio es el del nivel elegido + el del extra\r\n        function precioBase() {\r\n          if (!levels || !levels.length || !chosenLevel) return basePrice;\r\n          for (var i = 0; i < levels.length; i++) {\r\n            if (levels[i][0] === chosenLevel) return basePrice + levels[i][1];\r\n          }\r\n          return basePrice;\r\n        }\r\n\r\n        var row = el(\"div\", \"thm-price-row\" + (levels ? \" thm-extra-row\" : \"\"));\r\n        var top = el(\"div\", \"thm-row-top\");\r\n        top.appendChild(el(\"span\", \"thm-level\", levelLabel));\r\n        var priceEl = el(\"span\", \"thm-price\", eur(basePrice));\r\n        top.appendChild(priceEl);\r\n\r\n        var qtyWrap = el(\"div\", \"thm-qty\");\r\n        var minus = el(\"button\", null, \"\u2212\");\r\n        minus.type = \"button\";\r\n        minus.setAttribute(\"aria-label\", \"Quitar uno de \" + dino.n + \" \" + levelLabel);\r\n        var count = el(\"span\", \"thm-count\", \"0\");\r\n        var plus = el(\"button\", \"add\", \"+\");\r\n        plus.type = \"button\";\r\n        plus.setAttribute(\"aria-label\", \"A\u00f1adir \" + dino.n + \" \" + levelLabel);\r\n\r\n        minus.addEventListener(\"click\", function () { paint(changeQty(dino, fullLabel(), precioBase(), chosen, chosenStat, pintura, chosenSex, -1, chosenGene)); });\r\n        plus.addEventListener(\"click\", function () { paint(changeQty(dino, fullLabel(), precioBase(), chosen, chosenStat, pintura, chosenSex, 1, chosenGene)); });\r\n\r\n        qtyWrap.appendChild(minus);\r\n        qtyWrap.appendChild(count);\r\n        qtyWrap.appendChild(plus);\r\n        top.appendChild(qtyWrap);\r\n        row.appendChild(top);\r\n\r\n        if (levels && levels.length > 1) {\r\n          var lvlWrap = el(\"div\", \"thm-vars thm-stats\");\r\n          lvlWrap.appendChild(el(\"span\", \"thm-stats-label\", \"Nivel:\"));\r\n          levels.forEach(function (lv) {\r\n            var chip = el(\"button\", \"thm-var thm-stat\", lv[0]);\r\n            chip.type = \"button\";\r\n            chip.setAttribute(\"aria-pressed\", \"false\");\r\n            chip.addEventListener(\"click\", function () {\r\n              chosenLevel = lv[0];\r\n              var all = lvlWrap.querySelectorAll(\".thm-stat\");\r\n              for (var i = 0; i < all.length; i++) {\r\n                all[i].classList.remove(\"on\");\r\n                all[i].setAttribute(\"aria-pressed\", \"false\");\r\n              }\r\n              chip.classList.add(\"on\");\r\n              chip.setAttribute(\"aria-pressed\", \"true\");\r\n              paint(readQty());\r\n            });\r\n            lvlWrap.appendChild(chip);\r\n          });\r\n          row.appendChild(lvlWrap);\r\n        }\r\n\r\n        \/\/ ---- Sexo: obligatorio en todas las filas ----\r\n        var sexWrap = el(\"div\", \"thm-vars thm-sexes\");\r\n        sexWrap.appendChild(el(\"span\", \"thm-stats-label\", \"Sexo:\"));\r\n        SEXOS.forEach(function (sx) {\r\n          var extra = sexSurcharge(sx);\r\n          var extraTxt = extra % 1 === 0 ? extra + \" \u20ac\" : eur(extra);\r\n          var label = SEX_LABELS[sx] + (extra ? \" +\" + extraTxt : \"\");\r\n          var chip = el(\"button\", \"thm-var thm-sex \" + sx, label);\r\n          chip.type = \"button\";\r\n          chip.setAttribute(\"aria-pressed\", \"false\");\r\n          chip.addEventListener(\"click\", function () {\r\n            chosenSex = sx;\r\n            var all = sexWrap.querySelectorAll(\".thm-sex\");\r\n            for (var i = 0; i < all.length; i++) {\r\n              all[i].classList.remove(\"on\");\r\n              all[i].setAttribute(\"aria-pressed\", \"false\");\r\n            }\r\n            chip.classList.add(\"on\");\r\n            chip.setAttribute(\"aria-pressed\", \"true\");\r\n            syncIfActive();\r\n            paint(readQty());\r\n          });\r\n          sexWrap.appendChild(chip);\r\n        });\r\n        row.appendChild(sexWrap);\r\n\r\n        if (opts.length) {\r\n          var varsWrap = el(\"div\", \"thm-vars\");\r\n          opts.forEach(function (v) {\r\n            var extra = surcharge(v);\r\n            var extraTxt = extra % 1 === 0 ? extra + \" \u20ac\" : eur(extra);\r\n            var label = (BADGE_LABELS[v] || v) + (extra ? \" +\" + extraTxt : \"\");\r\n            var chip = el(\"button\", \"thm-var \" + v + (v === chosen ? \" on\" : \"\"), label);\r\n            chip.type = \"button\";\r\n            chip.setAttribute(\"aria-pressed\", v === chosen ? \"true\" : \"false\");\r\n            chip.addEventListener(\"click\", function () {\r\n              chosen = v;\r\n              var all = varsWrap.querySelectorAll(\".thm-var\");\r\n              for (var i = 0; i < all.length; i++) {\r\n                all[i].classList.remove(\"on\");\r\n                all[i].setAttribute(\"aria-pressed\", \"false\");\r\n              }\r\n              chip.classList.add(\"on\");\r\n              chip.setAttribute(\"aria-pressed\", \"true\");\r\n              syncIfActive();\r\n              paint(readQty());\r\n            });\r\n            varsWrap.appendChild(chip);\r\n          });\r\n          row.appendChild(varsWrap);\r\n        }\r\n\r\n        if (stats && stats.length) {\r\n          var statsWrap = el(\"div\", \"thm-vars thm-stats\");\r\n          statsWrap.appendChild(el(\"span\", \"thm-stats-label\", \"Stat:\"));\r\n          stats.forEach(function (st) {\r\n            var chip = el(\"button\", \"thm-var thm-stat\", st);\r\n            chip.type = \"button\";\r\n            chip.setAttribute(\"aria-pressed\", \"false\");\r\n            chip.addEventListener(\"click\", function () {\r\n              chosenStat = \"Stat: \" + st;\r\n              var all = statsWrap.querySelectorAll(\".thm-stat\");\r\n              for (var i = 0; i < all.length; i++) {\r\n                all[i].classList.remove(\"on\");\r\n                all[i].setAttribute(\"aria-pressed\", \"false\");\r\n              }\r\n              chip.classList.add(\"on\");\r\n              chip.setAttribute(\"aria-pressed\", \"true\");\r\n              syncIfActive();\r\n              paint(readQty());\r\n            });\r\n            statsWrap.appendChild(chip);\r\n          });\r\n          row.appendChild(statsWrap);\r\n        }\r\n\r\n        \/\/ ---- Gen opcional: disponible en cualquier fila (225, 600,\r\n        \/\/ 1350 o el extra), sin duplicar sexo\/variante. ----\r\n        var geneToggleWrap = el(\"div\", \"thm-vars\");\r\n        var geneToggleBtn = el(\"button\", \"thm-var thm-gene-toggle\", \"+ Gen (+\" + eur(GENE_PRICE) + \")\");\r\n        geneToggleBtn.type = \"button\";\r\n        geneToggleBtn.setAttribute(\"aria-pressed\", \"false\");\r\n        geneToggleWrap.appendChild(geneToggleBtn);\r\n        row.appendChild(geneToggleWrap);\r\n\r\n        var genesWrap = el(\"div\", \"thm-vars thm-genes\");\r\n        genesWrap.style.display = \"none\";\r\n        genesWrap.appendChild(el(\"span\", \"thm-stats-label\", \"Gen:\"));\r\n        var geneSelect = document.createElement(\"select\");\r\n        geneSelect.className = \"thm-gene-select\";\r\n        var geneDefault = document.createElement(\"option\");\r\n        geneDefault.value = \"\";\r\n        geneDefault.textContent = \"Elige un gen\u2026\";\r\n        geneSelect.appendChild(geneDefault);\r\n        var geneDescMap = {};\r\n        GENES.forEach(function (group) {\r\n          var optgroup = document.createElement(\"optgroup\");\r\n          optgroup.label = group.cat;\r\n          group.items.forEach(function (gItem) {\r\n            geneDescMap[gItem.n] = gItem.d;\r\n            var opt = document.createElement(\"option\");\r\n            opt.value = gItem.n;\r\n            opt.textContent = gItem.n;\r\n            optgroup.appendChild(opt);\r\n          });\r\n          geneSelect.appendChild(optgroup);\r\n        });\r\n        genesWrap.appendChild(geneSelect);\r\n        row.appendChild(genesWrap);\r\n\r\n        var geneDesc = el(\"div\", \"thm-gene-desc\");\r\n        row.appendChild(geneDesc);\r\n\r\n        geneToggleBtn.addEventListener(\"click\", function () {\r\n          geneEnabled = !geneEnabled;\r\n          geneToggleBtn.classList.toggle(\"on\", geneEnabled);\r\n          geneToggleBtn.setAttribute(\"aria-pressed\", geneEnabled ? \"true\" : \"false\");\r\n          geneToggleBtn.textContent = geneEnabled ? \"\u2212 Quitar gen\" : (\"+ Gen (+\" + eur(GENE_PRICE) + \")\");\r\n          genesWrap.style.display = geneEnabled ? \"\" : \"none\";\r\n          if (!geneEnabled) {\r\n            chosenGene = null;\r\n            geneSelect.value = \"\";\r\n            geneDesc.textContent = \"\";\r\n            geneDesc.classList.remove(\"show\");\r\n          }\r\n          syncIfActive();\r\n          paint(readQty());\r\n        });\r\n\r\n        geneSelect.addEventListener(\"change\", function () {\r\n          chosenGene = geneSelect.value || null;\r\n          geneDesc.textContent = chosenGene ? geneDescMap[chosenGene] : \"\";\r\n          geneDesc.classList.toggle(\"show\", !!chosenGene);\r\n          syncIfActive();\r\n          paint(readQty());\r\n        });\r\n\r\n        function paint(q) {\r\n          var pendiente = levels && levels.length > 1 && !chosenLevel;\r\n          priceEl.textContent = (pendiente ? \"+\" : \"\") + eur(precioBase() + surcharge(chosen) + sexSurcharge(chosenSex) + (geneEnabled ? GENE_PRICE : 0));\r\n          count.textContent = q;\r\n          count.classList.toggle(\"zero\", q === 0);\r\n          minus.disabled = q === 0;\r\n          var faltaNivel = levels && levels.length > 1 && !chosenLevel;\r\n          var faltaStat = stats && stats.length && !chosenStat;\r\n          var faltaGen = geneEnabled && !chosenGene;\r\n          var faltaSexo = !chosenSex;\r\n          if (faltaNivel || faltaStat || faltaGen || faltaSexo) {\r\n            plus.disabled = true;\r\n            plus.title = faltaSexo ? \"Elige antes Macho o Hembra\"\r\n                       : (faltaNivel ? \"Elige antes el nivel\"\r\n                       : (faltaGen ? \"Elige un gen (o quita la opci\u00f3n de gen)\" : \"Elige antes la stat\"));\r\n          } else {\r\n            plus.disabled = false;\r\n            plus.title = \"\";\r\n          }\r\n          row.classList.toggle(\"needs-sex\", !chosenSex);\r\n          row.classList.toggle(\"on\", q > 0);\r\n          card.classList.toggle(\"selected\", cardHasSelection());\r\n        }\r\n\r\n        function readQty() {\r\n          var k = keyFor(dino, fullLabel());\r\n          return cart[k] ? cart[k].qty : 0;\r\n        }\r\n\r\n        \/\/ Si esta fila ya tiene cantidad a\u00f1adida, cambiar sexo, variante,\r\n        \/\/ stat o gen actualiza esa misma l\u00ednea del pedido en vez de\r\n        \/\/ dejarla como estaba y crear una nueva.\r\n        function syncIfActive() {\r\n          var k = keyFor(dino, fullLabel());\r\n          var item = cart[k];\r\n          if (item && item.qty > 0) {\r\n            item.variant = chosen;\r\n            item.sex = chosenSex;\r\n            item.stat = chosenStat;\r\n            item.gene = chosenGene;\r\n            item.price = precioBase() + surcharge(chosen) + sexSurcharge(chosenSex) + (geneEnabled ? GENE_PRICE : 0);\r\n            updateBar();\r\n          }\r\n        }\r\n\r\n        function cardHasSelection() {\r\n          for (var i = 0; i < rowRefs.length; i++) if (rowRefs[i].readQty() > 0) return true;\r\n          return false;\r\n        }\r\n\r\n        prices.appendChild(row);\r\n        rowRefs.push({ paint: paint, readQty: readQty });\r\n        paint(readQty());\r\n      }\r\n\r\n      dino.p.forEach(function (p) { addRow(p[0], p[1]); });\r\n\r\n      EXTRAS.forEach(function (ex) {\r\n        if (ex.note) prices.appendChild(el(\"div\", \"thm-extra-note\", ex.note));\r\n        var niveles = ex.levels ? [dino.p[0]] : null;\r\n        var etiqueta = ex.label.replace(\"{nivel}\", dino.p[0][0]);\r\n        addRow(etiqueta, ex.price, ex.stats, ex.color, niveles);\r\n      });\r\n\r\n      card.appendChild(prices);\r\n      return card;\r\n    }\r\n\r\n    function enGrupo(dino) {\r\n      if (grupoActivo === \"todo\") return true;\r\n      for (var i = 0; i < GRUPOS.length; i++) {\r\n        if (GRUPOS[i].id === grupoActivo) return !!(GRUPOS[i].set && GRUPOS[i].set[dino.n]);\r\n      }\r\n      return true;\r\n    }\r\n\r\n    function renderChips() {\r\n      var wrap = document.getElementById(\"thm-chips\");\r\n      wrap.innerHTML = \"\";\r\n      GRUPOS.forEach(function (g) {\r\n        var chip = el(\"button\", \"thm-chip\" + (g.id === grupoActivo ? \" on\" : \"\"));\r\n        chip.type = \"button\";\r\n        chip.appendChild(el(\"span\", null, g.label));\r\n        chip.appendChild(el(\"span\", \"thm-chip-count\", String(g.count)));\r\n        chip.setAttribute(\"aria-pressed\", g.id === grupoActivo ? \"true\" : \"false\");\r\n        chip.addEventListener(\"click\", function () {\r\n          grupoActivo = g.id;\r\n          renderChips();\r\n          render(searchInput ? searchInput.value : \"\");\r\n        });\r\n        wrap.appendChild(chip);\r\n      });\r\n    }\r\n\r\n    function render(filterText) {\r\n      grid.innerHTML = \"\";\r\n      var term = (filterText || \"\").trim().toLowerCase();\r\n      var matches = DINOS.filter(function (dino) {\r\n        return enGrupo(dino) && enVariante(dino) && dino.n.toLowerCase().indexOf(term) !== -1;\r\n      });\r\n\r\n      if (matches.length === 0) {\r\n        grid.appendChild(el(\"div\", \"thm-no-results\", \"Ning\u00fan dinosaurio con ese nombre en este filtro. Prueba con otra palabra o pulsa Todo.\"));\r\n        return;\r\n      }\r\n      matches.forEach(function (dino) {\r\n        grid.appendChild(buildCard(dino));\r\n      });\r\n    }\r\n\r\n    \/\/ ---------- Texto del pedido ----------\r\n    function buildOrderText() {\r\n      var lines = [];\r\n      var platform = document.getElementById(\"thm-platform\").value.trim();\r\n      var eosid = document.getElementById(\"thm-eosid\").value.trim();\r\n      var t = totals();\r\n      var d = new Date();\r\n      var fecha = (\"0\" + d.getDate()).slice(-2) + \"\/\" + (\"0\" + (d.getMonth() + 1)).slice(-2) + \"\/\" + d.getFullYear();\r\n\r\n      lines.push(\"\ud83e\udd96 PEDIDO THARYON \u2014 \" + fecha);\r\n      lines.push(\"ID consola\/Steam: \" + (platform || \"(pendiente de indicar)\"));\r\n      lines.push(\"EOS ID: \" + (eosid || \"(pendiente de indicar)\"));\r\n      lines.push(\"-----------------------------\");\r\n\r\n      var items = [];\r\n      for (var k in cart) items.push(cart[k]);\r\n      items.sort(function (a, b) {\r\n        return a.name.localeCompare(b.name) || a.level.localeCompare(b.level) ||\r\n               (a.sex || \"\").localeCompare(b.sex || \"\") ||\r\n               (a.stat || \"\").localeCompare(b.stat || \"\");\r\n      });\r\n\r\n      items.forEach(function (it) {\r\n        var name = it.name + (it.variant ? \" (\" + (BADGE_LABELS[it.variant] || it.variant) + \")\" : \"\");\r\n        var sexo = \" \u00b7 \" + (SEX_LABELS[it.sex] || \"sin indicar\");\r\n        var stat = it.stat ? \" \u00b7 \" + it.stat : \"\";\r\n        var gene = it.gene ? \" \u00b7 Gen: \" + it.gene : \"\";\r\n        lines.push(it.qty + \"x \" + name + sexo + \" \u00b7 \" + it.level + stat + gene + \" \u00b7 \" + eur(it.qty * it.price));\r\n      });\r\n\r\n      lines.push(\"-----------------------------\");\r\n      lines.push(\"Total dinos: \" + t.units);\r\n      lines.push(\"TOTAL: \" + eur(t.sum));\r\n\r\n      if (llevaPintura()) {\r\n        var color = document.getElementById(\"thm-color\").value.trim();\r\n        lines.push(\"Pintura: \" + (color || \"(pendiente de indicar)\"));\r\n      }\r\n      return lines.join(\"\\n\");\r\n    }\r\n\r\n    function llevaPintura() {\r\n      for (var k in cart) if (cart[k].paint) return true;\r\n      return false;\r\n    }\r\n\r\n    function refreshOutput() {\r\n      document.getElementById(\"thm-color-field\").style.display = llevaPintura() ? \"\" : \"none\";\r\n      output.value = buildOrderText();\r\n      copiedMsg.textContent = \"\";\r\n    }\r\n\r\n    function copyOrder() {\r\n      var text = output.value;\r\n      function done() {\r\n        copiedMsg.textContent = \"Pedido copiado. P\u00e9galo en Discord.\";\r\n      }\r\n      function fallback() {\r\n        output.focus();\r\n        output.select();\r\n        output.setSelectionRange(0, 99999);\r\n        try {\r\n          document.execCommand(\"copy\");\r\n          done();\r\n        } catch (e) {\r\n          copiedMsg.textContent = \"No se ha podido copiar solo. Mant\u00e9n pulsado el texto y c\u00f3pialo a mano.\";\r\n        }\r\n      }\r\n      if (navigator.clipboard && navigator.clipboard.writeText) {\r\n        navigator.clipboard.writeText(text).then(done, fallback);\r\n      } else {\r\n        fallback();\r\n      }\r\n    }\r\n\r\n    \/\/ ---------- Eventos ----------\r\n    if (searchInput) {\r\n      searchInput.addEventListener(\"input\", function (e) { render(e.target.value); });\r\n    }\r\n\r\n    document.getElementById(\"thm-open\").addEventListener(\"click\", function () {\r\n      refreshOutput();\r\n      modal.classList.add(\"show\");\r\n    });\r\n\r\n    function closeModal() {\r\n      modal.classList.remove(\"show\");\r\n    }\r\n\r\n    document.getElementById(\"thm-close\").addEventListener(\"click\", closeModal);\r\n    modal.addEventListener(\"click\", function (e) {\r\n      if (e.target === modal) closeModal();\r\n    });\r\n    document.addEventListener(\"keydown\", function (e) {\r\n      if (e.key === \"Escape\") closeModal();\r\n    });\r\n    document.getElementById(\"thm-copy\").addEventListener(\"click\", copyOrder);\r\n\r\n    \/\/ Vaciar el pedido desde dentro de la propia ventana \"Tu pedido\",\r\n    \/\/ sin tener que salir. El pedido se queda vac\u00edo pero la ventana\r\n    \/\/ sigue abierta para que veas que ha funcionado.\r\n    document.getElementById(\"thm-modal-clear\").addEventListener(\"click\", function () {\r\n      cart = {};\r\n      updateBar();\r\n      render(searchInput ? searchInput.value : \"\");\r\n      refreshOutput();\r\n    });\r\n\r\n    document.getElementById(\"thm-platform\").addEventListener(\"input\", refreshOutput);\r\n    document.getElementById(\"thm-eosid\").addEventListener(\"input\", refreshOutput);\r\n    document.getElementById(\"thm-color\").addEventListener(\"input\", refreshOutput);\r\n\r\n    document.getElementById(\"thm-clear\").addEventListener(\"click\", function () {\r\n      cart = {};\r\n      updateBar();\r\n      render(searchInput ? searchInput.value : \"\");\r\n    });\r\n\r\n    renderChips();\r\n    renderVarianteChips();\r\n    render(\"\");\r\n    updateBar();\r\n  })();\r\n  <\/script>\r\n<\/div>\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>Donaciones \u00b7 Dinosaurios Precios de dinosaurios disponibles en Tharyon Dinosaurios Recursos\/Objetos Desbloqueos VIP En cada nivel eliges primero Macho o Hembra (la hembra cuesta 1 \u20ac m\u00e1s) y la versi\u00f3n que quieres (Aberrante y X cuestan 1 \u20ac m\u00e1s). Despu\u00e9s marcas cu\u00e1ntos quieres con los botones \u2212 y +. Hasta que no elijas el sexo, el bot\u00f3n + est\u00e1 bloqueado. Puedes pedir varios dinos, los tres niveles y varias unidades de cada uno. Cuando termines, pulsa Ver mi pedido, c\u00f3pialo y env\u00edamelo por Discord. Los dinos que llevan montura se entregan con montura normal incluida. Donar Puedes donar por varias cosas a la vez poniendo el sumatorio del precio Donar con PayPal Donar con tarjeta (Stripe) 2026 \u00a9 Tharyon 0 art\u00edculos 0,00 \u20ac Vaciar Ver mi pedido Tu pedido Copia el texto y p\u00e9gamelo en Discord. Puedes editarlo antes de copiar. \u26a0\ufe0f Este cuadro incluye TODO lo que llevas a\u00f1adido, aunque sea de hace un rato. Si algo de esto ya no lo quieres, vac\u00edalo con el bot\u00f3n de abajo antes de copiar. Tu ID de consola o Steam Tu EOS ID Color o colores de la pintura Copiar pedido Seguir eligiendo Vaciar este pedido Donaciones \u00b7 Dinosaurios Precios de dinosaurios disponibles en Tharyon Dinosaurios Recursos\/Objetos Desbloqueos VIP En cada nivel eliges primero Macho o Hembra (la hembra cuesta 1 \u20ac m\u00e1s) y la versi\u00f3n que quieres (Aberrante y X cuestan 1 \u20ac m\u00e1s). Despu\u00e9s marcas cu\u00e1ntos quieres con los botones \u2212 y +. Hasta que no elijas el sexo, el bot\u00f3n + est\u00e1 bloqueado. Puedes pedir varios dinos, los tres niveles y varias unidades de cada uno. Cuando termines, pulsa Ver mi pedido, c\u00f3pialo y env\u00edamelo por Discord. Los dinos que llevan montura se entregan con montura normal incluida. Donar Puedes donar por varias cosas a la vez poniendo el sumatorio del precio Donar con PayPal Donar con tarjeta (Stripe) 2026 \u00a9 Tharyon 0 art\u00edculos 0,00 \u20ac Vaciar Ver mi pedido Tu pedido Copia el texto y p\u00e9gamelo en Discord. Puedes editarlo antes de copiar. \u26a0\ufe0f Este cuadro incluye TODO lo que llevas a\u00f1adido, aunque sea de hace un rato. Si algo de esto ya no lo quieres, vac\u00edalo con el bot\u00f3n de abajo antes de copiar. Tu ID de consola o Steam Tu EOS ID Color o colores de la pintura Copiar pedido Seguir eligiendo Vaciar este pedido<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","theme-transparent-header-meta":"default","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-7235","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>donaciones - Server Ark Ascended<\/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:\/\/tharyon.com\/en\/donar\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"donaciones - Server Ark Ascended\" \/>\n<meta property=\"og:description\" content=\"Donaciones \u00b7 Dinosaurios Precios de dinosaurios disponibles en Tharyon Dinosaurios Recursos\/Objetos Desbloqueos VIP En cada nivel eliges primero Macho o Hembra (la hembra cuesta 1 \u20ac m\u00e1s) y la versi\u00f3n que quieres (Aberrante y X cuestan 1 \u20ac m\u00e1s). Despu\u00e9s marcas cu\u00e1ntos quieres con los botones \u2212 y +. Hasta que no elijas el sexo, el bot\u00f3n + est\u00e1 bloqueado. Puedes pedir varios dinos, los tres niveles y varias unidades de cada uno. Cuando termines, pulsa Ver mi pedido, c\u00f3pialo y env\u00edamelo por Discord. Los dinos que llevan montura se entregan con montura normal incluida. Donar Puedes donar por varias cosas a la vez poniendo el sumatorio del precio Donar con PayPal Donar con tarjeta (Stripe) 2026 \u00a9 Tharyon 0 art\u00edculos 0,00 \u20ac Vaciar Ver mi pedido Tu pedido Copia el texto y p\u00e9gamelo en Discord. Puedes editarlo antes de copiar. \u26a0\ufe0f Este cuadro incluye TODO lo que llevas a\u00f1adido, aunque sea de hace un rato. Si algo de esto ya no lo quieres, vac\u00edalo con el bot\u00f3n de abajo antes de copiar. Tu ID de consola o Steam Tu EOS ID Color o colores de la pintura Copiar pedido Seguir eligiendo Vaciar este pedido Donaciones \u00b7 Dinosaurios Precios de dinosaurios disponibles en Tharyon Dinosaurios Recursos\/Objetos Desbloqueos VIP En cada nivel eliges primero Macho o Hembra (la hembra cuesta 1 \u20ac m\u00e1s) y la versi\u00f3n que quieres (Aberrante y X cuestan 1 \u20ac m\u00e1s). Despu\u00e9s marcas cu\u00e1ntos quieres con los botones \u2212 y +. Hasta que no elijas el sexo, el bot\u00f3n + est\u00e1 bloqueado. Puedes pedir varios dinos, los tres niveles y varias unidades de cada uno. Cuando termines, pulsa Ver mi pedido, c\u00f3pialo y env\u00edamelo por Discord. Los dinos que llevan montura se entregan con montura normal incluida. Donar Puedes donar por varias cosas a la vez poniendo el sumatorio del precio Donar con PayPal Donar con tarjeta (Stripe) 2026 \u00a9 Tharyon 0 art\u00edculos 0,00 \u20ac Vaciar Ver mi pedido Tu pedido Copia el texto y p\u00e9gamelo en Discord. Puedes editarlo antes de copiar. \u26a0\ufe0f Este cuadro incluye TODO lo que llevas a\u00f1adido, aunque sea de hace un rato. Si algo de esto ya no lo quieres, vac\u00edalo con el bot\u00f3n de abajo antes de copiar. Tu ID de consola o Steam Tu EOS ID Color o colores de la pintura Copiar pedido Seguir eligiendo Vaciar este pedido\" \/>\n<meta property=\"og:url\" content=\"https:\/\/tharyon.com\/en\/donar\/\" \/>\n<meta property=\"og:site_name\" content=\"Servidor Ark Survival Ascended - Tharyon\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-18T14:19:19+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"858 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/tharyon.com\\\/donar\\\/\",\"url\":\"https:\\\/\\\/tharyon.com\\\/donar\\\/\",\"name\":\"donaciones - Server Ark Ascended\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/tharyon.com\\\/#website\"},\"datePublished\":\"2026-09-14T07:52:32+00:00\",\"dateModified\":\"2026-09-18T14:19:19+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/tharyon.com\\\/donar\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/tharyon.com\\\/donar\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/tharyon.com\\\/donar\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/tharyon.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"donaciones\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/tharyon.com\\\/#website\",\"url\":\"https:\\\/\\\/tharyon.com\\\/\",\"name\":\"Servidor Ark Survival Ascended - Tharyon\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/tharyon.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/tharyon.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/tharyon.com\\\/#organization\",\"name\":\"Servidor Ark Survival Ascended - Tharyon\",\"url\":\"https:\\\/\\\/tharyon.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/tharyon.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/tharyon.com\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/TOP-10-servers-lineage-2.png\",\"contentUrl\":\"https:\\\/\\\/tharyon.com\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/TOP-10-servers-lineage-2.png\",\"width\":120,\"height\":134,\"caption\":\"Servidor Ark Survival Ascended - Tharyon\"},\"image\":{\"@id\":\"https:\\\/\\\/tharyon.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"donaciones - Server Ark Ascended","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:\/\/tharyon.com\/en\/donar\/","og_locale":"en_US","og_type":"article","og_title":"donaciones - Server Ark Ascended","og_description":"Donaciones \u00b7 Dinosaurios Precios de dinosaurios disponibles en Tharyon Dinosaurios Recursos\/Objetos Desbloqueos VIP En cada nivel eliges primero Macho o Hembra (la hembra cuesta 1 \u20ac m\u00e1s) y la versi\u00f3n que quieres (Aberrante y X cuestan 1 \u20ac m\u00e1s). Despu\u00e9s marcas cu\u00e1ntos quieres con los botones \u2212 y +. Hasta que no elijas el sexo, el bot\u00f3n + est\u00e1 bloqueado. Puedes pedir varios dinos, los tres niveles y varias unidades de cada uno. Cuando termines, pulsa Ver mi pedido, c\u00f3pialo y env\u00edamelo por Discord. Los dinos que llevan montura se entregan con montura normal incluida. Donar Puedes donar por varias cosas a la vez poniendo el sumatorio del precio Donar con PayPal Donar con tarjeta (Stripe) 2026 \u00a9 Tharyon 0 art\u00edculos 0,00 \u20ac Vaciar Ver mi pedido Tu pedido Copia el texto y p\u00e9gamelo en Discord. Puedes editarlo antes de copiar. \u26a0\ufe0f Este cuadro incluye TODO lo que llevas a\u00f1adido, aunque sea de hace un rato. Si algo de esto ya no lo quieres, vac\u00edalo con el bot\u00f3n de abajo antes de copiar. Tu ID de consola o Steam Tu EOS ID Color o colores de la pintura Copiar pedido Seguir eligiendo Vaciar este pedido Donaciones \u00b7 Dinosaurios Precios de dinosaurios disponibles en Tharyon Dinosaurios Recursos\/Objetos Desbloqueos VIP En cada nivel eliges primero Macho o Hembra (la hembra cuesta 1 \u20ac m\u00e1s) y la versi\u00f3n que quieres (Aberrante y X cuestan 1 \u20ac m\u00e1s). Despu\u00e9s marcas cu\u00e1ntos quieres con los botones \u2212 y +. Hasta que no elijas el sexo, el bot\u00f3n + est\u00e1 bloqueado. Puedes pedir varios dinos, los tres niveles y varias unidades de cada uno. Cuando termines, pulsa Ver mi pedido, c\u00f3pialo y env\u00edamelo por Discord. Los dinos que llevan montura se entregan con montura normal incluida. Donar Puedes donar por varias cosas a la vez poniendo el sumatorio del precio Donar con PayPal Donar con tarjeta (Stripe) 2026 \u00a9 Tharyon 0 art\u00edculos 0,00 \u20ac Vaciar Ver mi pedido Tu pedido Copia el texto y p\u00e9gamelo en Discord. Puedes editarlo antes de copiar. \u26a0\ufe0f Este cuadro incluye TODO lo que llevas a\u00f1adido, aunque sea de hace un rato. Si algo de esto ya no lo quieres, vac\u00edalo con el bot\u00f3n de abajo antes de copiar. Tu ID de consola o Steam Tu EOS ID Color o colores de la pintura Copiar pedido Seguir eligiendo Vaciar este pedido","og_url":"https:\/\/tharyon.com\/en\/donar\/","og_site_name":"Servidor Ark Survival Ascended - Tharyon","article_modified_time":"2026-09-18T14:19:19+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"858 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/tharyon.com\/donar\/","url":"https:\/\/tharyon.com\/donar\/","name":"donaciones - Server Ark Ascended","isPartOf":{"@id":"https:\/\/tharyon.com\/#website"},"datePublished":"2026-09-14T07:52:32+00:00","dateModified":"2026-09-18T14:19:19+00:00","breadcrumb":{"@id":"https:\/\/tharyon.com\/donar\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/tharyon.com\/donar\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/tharyon.com\/donar\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/tharyon.com\/"},{"@type":"ListItem","position":2,"name":"donaciones"}]},{"@type":"WebSite","@id":"https:\/\/tharyon.com\/#website","url":"https:\/\/tharyon.com\/","name":"Servidor Ark Survival Ascended - Tharyon","description":"","publisher":{"@id":"https:\/\/tharyon.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/tharyon.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/tharyon.com\/#organization","name":"Servidor Ark Survival Ascended - Tharyon","url":"https:\/\/tharyon.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/tharyon.com\/#\/schema\/logo\/image\/","url":"https:\/\/tharyon.com\/wp-content\/uploads\/2024\/04\/TOP-10-servers-lineage-2.png","contentUrl":"https:\/\/tharyon.com\/wp-content\/uploads\/2024\/04\/TOP-10-servers-lineage-2.png","width":120,"height":134,"caption":"Servidor Ark Survival Ascended - Tharyon"},"image":{"@id":"https:\/\/tharyon.com\/#\/schema\/logo\/image\/"}}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/tharyon.com\/en\/wp-json\/wp\/v2\/pages\/7235","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tharyon.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/tharyon.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/tharyon.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tharyon.com\/en\/wp-json\/wp\/v2\/comments?post=7235"}],"version-history":[{"count":122,"href":"https:\/\/tharyon.com\/en\/wp-json\/wp\/v2\/pages\/7235\/revisions"}],"predecessor-version":[{"id":7421,"href":"https:\/\/tharyon.com\/en\/wp-json\/wp\/v2\/pages\/7235\/revisions\/7421"}],"wp:attachment":[{"href":"https:\/\/tharyon.com\/en\/wp-json\/wp\/v2\/media?parent=7235"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}