{"id":4673,"date":"2025-07-23T15:37:24","date_gmt":"2025-07-23T20:37:24","guid":{"rendered":"https:\/\/itishoemath.com\/?p=4575"},"modified":"2025-10-17T10:18:47","modified_gmt":"2025-10-17T15:18:47","slug":"cien-anos-de-desintegracion","status":"publish","type":"post","link":"https:\/\/itishoemath.com\/es_es\/cien-anos-de-desintegracion\/","title":{"rendered":"Cien a\u00f1os de desintegraci\u00f3n [Con Adam Lane Smith]."},"content":{"rendered":"<div data-elementor-type=\"wp-post\" data-elementor-id=\"4673\" class=\"elementor elementor-4673\" data-elementor-post-type=\"post\">\n\t\t\t\t<div class=\"elementor-element elementor-element-97dd7a3 e-flex e-con-boxed e-con e-parent\" data-id=\"97dd7a3\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ce1c704 elementor-widget elementor-widget-html\" data-id=\"ce1c704\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h4>La sorprendente verdad sobre los hombres que juzgan la promiscuidad<\/h4>\n\nEl doble rasero en torno a la vida sexual de las mujeres no se trata s\u00f3lo de que \"la sociedad averg\u00fcence a las mujeres\". Hoe_math analiza por qu\u00e9 los hombres juzgan la promiscuidad de forma diferente a la lealtad, recurriendo a la psicolog\u00eda, las palabras reales y la fr\u00eda l\u00f3gica.\n<br><br>\n+ Los hombres est\u00e1n predispuestos a ver el historial sexual de una mujer como un indicio de su lealtad. Para muchos hombres, m\u00e1s parejas significa m\u00e1s riesgo de que ella no se comprometa o no sea digna de confianza.\n<br>\n+ No se trata de reglas ni de \"decir a las mujeres lo que tienen que hacer\". Las preferencias y los l\u00edmites son personales: nadie puede decidirlos por ti.\n<br>\n+ El comportamiento pasado importa. El historial de una persona suele ser la mejor prueba de c\u00f3mo actuar\u00e1 en el futuro. Si ha enga\u00f1ado, hay m\u00e1s probabilidades de que vuelva a hacerlo.\n<br>\n+ La confianza y el compromiso no son s\u00f3lo palabras: se demuestran con lo que la gente realmente hace, no con lo que dice. Si hay una brecha entre lo que se dice y lo que se hace, la confianza se desvanece.\n<br><br>\nEn resumidas cuentas: No se puede avergonzar a nadie para que cambie lo que le atrae o le repele. Los est\u00e1ndares honestos ganan.\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8858505 elementor-widget elementor-widget-html\" data-id=\"8858505\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p> <\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4860eef elementor-widget elementor-widget-html\" data-id=\"4860eef\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- CSV for video links and summaries -->\n<!-- Header: Not Translated -->\n<script id=\"video-data-header\" type=\"text\/plain\">\ntime|stop|tab|title|description\n<\/script>\n<div id=\"tp-translatable-strings2\"\n     style=\"color:#000101; background:#000101; width:100vw; height:auto; position:static; z-index:1; font-size:1px;\">\n<pre id=\"video-data-rows\">\n0|42|Double_Standard|Double Standard on Promiscuity|La conversaci\u00f3n comienza destacando el doble rasero con el que la sociedad etiqueta a las mujeres que tienen muchas parejas sexuales frente a las que son fieles, cuestionando por qu\u00e9 existen estas diferencias y buscando una explicaci\u00f3n \"tonta\" desde una perspectiva masculina.  \n44|109|Perspectivas|Entender las perspectivas y los prejuicios|El ponente explica la importancia de ver los temas desde m\u00faltiples perspectivas, haciendo referencia a una herramienta de agregaci\u00f3n de noticias y debatiendo c\u00f3mo las plataformas de citas y empleo se enfrentan a retos sociales m\u00e1s amplios.  \n116|182|L\u00edmites|L\u00edmites emocionales y vigilancia del pensamiento|Se introduce el concepto de l\u00edmites emocionales, ilustrando c\u00f3mo la gente no puede dictar los sentimientos o preferencias de los dem\u00e1s, y c\u00f3mo intentar hacerlo es una forma de vigilancia del pensamiento.  \n198|295|Analog\u00eda|Analog\u00eda del perro para los l\u00edmites|Se utiliza una analog\u00eda con el desorden del perro para mostrar c\u00f3mo imponer las preferencias de uno a los dem\u00e1s es ineficaz y a menudo contraproducente, reforzando la importancia de respetar los l\u00edmites personales.  \n299|347|Asociaciones|Tri\u00e1ngulo de asociaci\u00f3n y preferencias|Se introduce el \"tri\u00e1ngulo de asociaci\u00f3n\" para explicar c\u00f3mo las personas forman sentimientos y por qu\u00e9 a los hombres pueden no gustarles las mujeres con muchas parejas, haciendo hincapi\u00e9 en que intentar cambiar las preferencias de alguien rara vez funciona.  \n350|405|Comportamiento|Patrones de comportamiento y confianza|El ponente habla de c\u00f3mo los comportamientos repetidos, como el cambio frecuente de pareja, se\u00f1alan acciones futuras, lo que hace dif\u00edcil que los hombres conf\u00eden en las mujeres con muchas parejas.  \n413|551|Confiabilidad|Confiabilidad, comportamiento y se\u00f1ales de alarma|La confianza est\u00e1 vinculada al comportamiento observable, con el argumento de que las elecciones pasadas son indicadores de la fiabilidad futura, y desestimar la importancia del comportamiento pasado se considera una se\u00f1al de alarma importante.  \n585|630|Racionalizaci\u00f3n|Racionalizaciones y autoenga\u00f1o|La frase \"mis elecciones no importan\" se critica como una t\u00e1ctica de racionalizaci\u00f3n, con ejemplos de c\u00f3mo las acciones y la autopresentaci\u00f3n influyen en la percepci\u00f3n y la fiabilidad.\n643|704|Manipulaci\u00f3n|Manipulaci\u00f3n, tentaci\u00f3n y material para la esposa|El orador advierte a los hombres j\u00f3venes sobre los comportamientos manipuladores, argumentando que las acciones visibles, como la vestimenta y los h\u00e1bitos sociales, predicen las acciones futuras y la fiabilidad en las relaciones.  \n709|752|Puesta a prueba|Puesta a prueba de la confianza y la coherencia|El conferenciante explica c\u00f3mo algunas mujeres pueden poner a prueba los l\u00edmites de los hombres pidi\u00e9ndoles que conf\u00eden m\u00e1s en las palabras que en las acciones, y advierte contra el riesgo de ignorar patrones de comportamiento claros.  \n769|789|Anuncio|Anuncio de una tienda|El episodio concluye con un desenfadado anuncio de una nueva tienda en la que se invita a opinar sobre los dise\u00f1os.\n\n<\/pre>\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-d08897e elementor-widget elementor-widget-html\" data-id=\"d08897e\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div id=\"tp-translatable-strings5\"\n     style=\"color:#000101; background:#000101; width:100vw; height:auto; position:static; z-index:1; font-size:1px;\">\n<span id=\"hiddenText\">\n0,0 As\u00ed que esta pregunta es para los hombres.  \n3.0 Presente.  \n4.0 Digamos que una mujer se acuesta con cien hombres.  \n8.0 Bruto.  \n9.0 La llamas...  \n12.0 Lo que quieras decir.  \n13.0 Quiz\u00e1 en Internet. En la vida real, simplemente dejamos de responder.  \n17.0 Una mujer se acuesta con su hombre cien veces.  \n20.0 Es leal. Es una esposa. Es lo que vosotros, raritos, quer\u00e1is decir.  \n31.0 \u00bfCu\u00e1l es la diferencia?  \n34.0 Una de ellas es...  \n36.0 No lo s\u00e9. \u00bfSon todos tan est\u00fapidos?  \n40.0 No lo s\u00e9. Quiero o\u00edrlo desde el punto de vista de un imb\u00e9cil.  \n44.0 Oh, bueno, desde un punto de vista est\u00fapido, ser una zorra te hace repugnante. Pero ya sabes que pensamos as\u00ed.  \n52.0 Por eso hiciste tu v\u00eddeo.  \n53.0 Los malentendidos como \u00e9ste son cada vez m\u00e1s comunes.  \n55.0 Si quieres entender por qu\u00e9, tienes que mirar cada asunto desde todos los \u00e1ngulos.  \n58.0 As\u00ed es como yo utilizo Ground News, el patrocinador de este v\u00eddeo.  \n63.0 Si quieres seguirme, haz clic en el enlace o escanea aqu\u00ed.  \n67.0 Cuando te quejas de las citas tanto como yo, mucha gente dir\u00e1 cosas como \"problema de habilidades\", como si fuera culpa tuya y el mundo no hubiera cambiado a tu alrededor.  \n76.0 Pero este art\u00edculo sobre la reestructuraci\u00f3n de Bumble porque los usuarios est\u00e1n hartos de ella tiene 129 fuentes en Ground News y todas est\u00e1n en el centro.  \n83,0 As\u00ed que es f\u00e1cil ver que este tema afecta realmente a todo el mundo.  \n88.0 Ground News te muestra qui\u00e9n est\u00e1 hablando de cada historia y hacia qu\u00e9 lado se inclinan pol\u00edticamente, para que puedas detectar la parcialidad.  \n94,0 Puedes desplazarte por los titulares y ver lo que dicen de un vistazo.  \n97,0 Y en este caso, todo el mundo est\u00e1 de acuerdo. Los inversores tienen dudas.  \n101,0 Hay muchos signos de crisis en el sector. Las plataformas de citas y de b\u00fasqueda de empleo atraviesan dificultades financieras.  \n107,0 As\u00ed de r\u00e1pido Ground News te ofrece una visi\u00f3n a vista de p\u00e1jaro, que necesitamos m\u00e1s que nunca.  \n111,0 Vea la imagen completa para 40% off. Escanea aqu\u00ed o haz clic en el enlace de los comentarios.  \n116,0 No s\u00e9. Quiero escucharlo desde el punto de vista de un tonto.  \n119.0 D\u00e9jame darte una respuesta menos tonta.  \n127,0 Cuando a alguien no le gusta algo, se acaba la conversaci\u00f3n.  \n132.0 No s\u00e9 qui\u00e9n te ha dicho que est\u00e1s a cargo de mis sentimientos, pero no es eso.  \n138,0 F\u00edsicamente no funciona as\u00ed. La realidad no tiene espacio para eso.  \n144,0 Son dibujos de l\u00edmites. Dibujo esto una y otra vez. Este fue el primero que hice.  \n148.0 El amarillo es un espacio p\u00fablico en el que est\u00e1n los dos. Es un bar.  \n152.0 Y entonces, est\u00e1 bien que el chico empiece a hablar con la chica. Pero cuando ella dice: \"No, no lo hagas m\u00e1s\", est\u00e1 ejerciendo un nuevo l\u00edmite.  \n159.0 Y si \u00e9l sigue haci\u00e9ndolo, eso es una violaci\u00f3n de los l\u00edmites.  \n163.0 Entonces, lo que est\u00e1 haciendo cuando me dice lo que deber\u00eda estar en mis sentimientos es... espera, tengo que hacer uno nuevo.  \n172.0 Ah\u00ed lo tienes. Est\u00e1s vigilando el pensamiento. Est\u00e1s tomando tus percepciones y sentimientos internos y dici\u00e9ndome que tambi\u00e9n deber\u00edan ser los m\u00edos, y t\u00fa no puedes hacer eso.  \n182.0 As\u00ed que puedes decirle a la gente que no te haga cosas malas. Como, por ejemplo, que no pongan m\u00fasica cuando intento dormir.  \n191.0 Pero no puedes coger tus sentimientos y decir que deje de gustarte la m\u00fasica.  \n198,0 Usted no es el polic\u00eda de mis sentimientos.  \n201.0 No estoy diciendo que los chicos estemos al mando y hagamos que las cosas sean como son. Lo que digo es que Dios est\u00e1 al mando.  \n210.0 A todos nos gusta lo que nos gusta y no nos gusta lo que no nos gusta y tenemos que lidiar con c\u00f3mo son las cosas.  \n214.0 As\u00ed que no se les puede decir a los hombres que les tienen que gustar las mujeres promiscuas.  \n220,0 Simplemente no funciona as\u00ed.  \n222.0 Te voy a ense\u00f1ar por qu\u00e9. Imagina que sales a dar un paseo y ves que alguien no ha limpiado los excrementos de su perro.  \n229.0 As\u00ed que, sintieron que no limpiaban en su interior y luego pusieron eso en el espacio que compartes.  \n238,0 \u00bfQu\u00e9 le parece? \u00bfLe gusta? Probablemente no.  \n241.0 \u00bfPuedes cambiarlo? \u00bfPuedes decir: \"Oh, genial. Voy a restregarme esto por los ojos\". Por supuesto que no.  \n248.0 As\u00ed es como te sientes.  \n251.0 Ahora, \u00bfy si hiciera un TikTok rega\u00f1\u00e1ndote por ello?  \n254.0 Esta pregunta es para la gente a la que no le gusta el perro.  \n259.0 Vale, digamos que saco a pasear a mi perro, lo recojo y lo tiro. T\u00fa dices que eso es bueno.  \n264.0 Ahora, digamos que llevo a mi perro a tu casa y se sube a tu almohada. De repente, eso es algo malo.  \n269.0 Esa es la diferencia.  \n272.0 As\u00ed que, como ves, estoy pensando en vigilarte. Hay algo que quiero que te guste, y te digo que deber\u00eda gustarte lo que te digo que te guste. \u00bfFuncion\u00f3?  \n281.0 Hombre, espero que no. De hecho, probablemente hizo que te gustara a\u00fan menos porque si quiero poner algo malo en tu vida y no lo quieres, entonces no te gustar\u00e9.  \n291.0 Este es un ejercicio que cre\u00e9 llamado el tri\u00e1ngulo de asociaci\u00f3n. Muestra c\u00f3mo la gente crea sentimientos en general.  \n304.0 Lo que nos acabas de decir es que si quieres acostarte con cien chicos y despu\u00e9s de eso le gustas a otro chico, entonces quieres que \u00e9l est\u00e9 de acuerdo con esto.  \n317.0 Pero a nosotros no nos parece bien.  \n320.0 Los hombres odiamos esto. De hecho, la mayor\u00eda vamos a odiar esto m\u00e1s de lo que nos gustas t\u00fa.  \n327.0 En lugar de sentirnos bien con tus elecciones, nos vamos a sentir mal contigo porque acabas de decir: \"Oye, aqu\u00ed hay algo que odias. Deja que te lo restriegue por los ojos\".  \n340.0 S\u00e9 que quer\u00edas la respuesta tonta. Lo siento por la respuesta inteligente. Espero que no la hayas odiado demasiado porque se va a volver menos tonta.  \n347.0 Aunque la respuesta que te acabo de dar era suficientemente buena, que lo que les guste a los dem\u00e1s no es asunto tuyo, tambi\u00e9n te voy a decir por qu\u00e9 no nos gusta.  \n357.0 \u00bfHablaste chino hoy por casualidad? Probablemente no.  \n362.0 Hablaste ingl\u00e9s ayer, as\u00ed que hablar\u00e1s ingl\u00e9s hoy y probablemente ma\u00f1ana.  \n366.0 \u00bfHa comido la misma comida m\u00e1s de una vez? Probablemente.  \n373,0 Hay muchas cosas que hace una y otra vez. Y si una de las cosas que haces una y otra vez es cambiar al chico con el que te acuestas, probablemente tambi\u00e9n seguir\u00e1s haci\u00e9ndolo.  \n388.0 Si s\u00e9 que has estado con un chico durante mucho tiempo, entonces en el futuro, probablemente estar\u00e1s con un chico durante mucho tiempo.  \n397.0 Pero si s\u00e9 que cambias de chico a menudo, esto es aproximadamente una vez cada 3,2 d\u00edas, entonces en el futuro, probablemente cambiar\u00e1s de chico a menudo. Y de nuevo, no nos gusta eso.  \n410.0 No queremos gastar tiempo y dinero en ti si s\u00f3lo vas a cambiar de chico.  \n417.0 Es raro que tenga que decirte esto. A la gente no le gusta hacer trampas.  \n422.0 Y si cambias mucho de chico, es m\u00e1s probable que seas infiel. A las mujeres les encanta decir: \"Conf\u00eda en m\u00ed. Ignora mi comportamiento. Soy material de esposa\".  \n431.0 \u00bfPero por qu\u00e9 \u00edbamos a confiar en ti si eres el tipo de persona menos digna de confianza?  \n437.0 Los infieles no dicen: \"Te voy a enga\u00f1ar\". Dicen: \"Conf\u00eda en m\u00ed\". Todo el mundo dice: \"Conf\u00eda en m\u00ed\".  \n442.0 Entonces, \u00bfc\u00f3mo sabemos qui\u00e9nes son los tramposos? Bueno, tenemos que observar su comportamiento.  \n449.0 Este es el cubo del comportamiento. Este es el eje del club de la iglesia. Ah\u00ed es donde eliges pasar tu tiempo.  \n454.0 Este es el eje modesto independiente. As\u00ed es como te presentas al mundo.  \n458,0 Y \u00e9ste es el eje de la lealtad. As\u00ed es como te has comportado con los hombres en el pasado.  \n463.0 El n\u00famero de hombres es una gran se\u00f1al. Cuantos m\u00e1s tengas, m\u00e1s dif\u00edcil es confiar en ti.  \n470.0 No todos los que tienen muchos te enga\u00f1an, pero s\u00ed un mayor n\u00famero de ellos.  \n475,0 Aqu\u00ed se puede ver que el matrimonio se vuelve menos estable a medida que aumenta el n\u00famero de cad\u00e1veres.  \n481.0 Y s\u00ed, a veces la gente cambia, pero no normalmente.  \n484.0 Esta historia de aqu\u00ed abajo es una vez que llegu\u00e9 a mi motel 6 a las 11:30 p.m. y una chica bastante guapa me vio en el vest\u00edbulo y me persigui\u00f3 hasta mi coche porque una vez fui atractivo y me ley\u00f3 la mano y le dije: \"H, lo m\u00e1s probable es que esto sea una mala idea y no lo hice\".  \n504.0 Y eso era nuevo para m\u00ed en ese momento. Eso es cambiar y la mayor\u00eda de la gente no lo hace.  \n510.0 As\u00ed que, si voy a ofrecerte un compromiso, que es caro, necesito saber que puedo confiar en ti, lo cual juzgo mirando tus elecciones, porque no hay otra manera.  \n518,0 Y si has hecho muchas malas, entonces al menos necesito ver que has cambiado. Y eso lleva m\u00e1s de 3,2 d\u00edas.  \n525.0 As\u00ed que, el n\u00famero de cuerpos no lo es todo, especialmente si es honesta al respecto y no lo ha hecho en un tiempo. Y tambi\u00e9n, ya sabes, tal vez t\u00fa tampoco eres perfecto, pero nunca dar\u00e9 nada de mi tiempo o dinero a alguien que dice que mi pasado no importa porque lo que hicimos antes lo volveremos a hacer.  \n548.0 Y cuanto m\u00e1s lo hagas, menos probable es que dejes de hacerlo.  \n551.0 As\u00ed que el pasado no desaparece sin m\u00e1s. Y ma\u00f1ana, hoy ser\u00e1 el pasado.  \n556.0 As\u00ed que hoy no importa. Mi comportamiento no importa. Ignora mi comportamiento. Voy a estar aqu\u00ed, pero tr\u00e1tame como si estuviera aqu\u00ed.  \n568.0 Nadie quiere comprarle un anillo a alguien que dice: \"No juzgues mi comportamiento\". Porque no tienes que decir eso a menos que sepas que es malo.  \n577.0 Por eso cualquier variaci\u00f3n de \"mis decisiones no importan\" es una de las mayores se\u00f1ales de alarma que existen. Adem\u00e1s, aros en la nariz en lo que sea esto.  \n585.0 \u00bfTan est\u00fapidos sois?  \n588.0 \"Mis decisiones no importan\" es lo mismo que \"Yo soy la mesa\". Significa que consigo lo que quiero y me callo sobre lo que t\u00fa quieres.  \n597.0 Estoy aqu\u00ed, \u00bfno? \"Mis decisiones no importan\" se presenta de muchas formas. Puede sonar como \"mi pasado no importa\".  \n605.0 Podr\u00eda ser \"cu\u00e1l es la diferencia entre un tipo y cien\".  \n609.0 Podr\u00eda ser \"lo que me pongo no me define\". Eso es lo que dijeron estas chicas.  \n614.0 Que me vista as\u00ed no significa que no tenga madera de esposa. Aunque vestirme as\u00ed llame la atenci\u00f3n y la atenci\u00f3n lleve a la tentaci\u00f3n.  \n621.0 Y nadie es inmune a la tentaci\u00f3n. Es s\u00f3lo cuesti\u00f3n de suerte. Y t\u00fa sabes todo eso y elegiste vestirte as\u00ed y tus elecciones te definen.  \n630.0 En otras palabras, que me comporte as\u00ed no significa que me comporte as\u00ed. Por eso tiene ojos de decepci\u00f3n.  \n638.0 Y no tiene por qu\u00e9 escuchar eso.  \n640.0 Si eres un chico m\u00e1s joven y con menos experiencia, probablemente te hayan dicho toda la vida que te limites a ser agradable. S\u00e9 t\u00fa mismo.  \n647.0 Y la sociedad dice que las chicas son simp\u00e1ticas y que tienes que ser simp\u00e1tico con ellas. Si no, est\u00e1s siendo controlador y eso es abusivo y puede ser confuso porque no parece que est\u00e9s siendo abusivo.  \n654,0 Parece que est\u00e1s siendo maltratado porque a veces lo eres.  \n664.0 Algunas mujeres simplemente te mienten para ver si eres lo suficientemente listo como para pillarlas mintiendo. Y si no lo eres, entonces no les gustas.  \n670.0 Har\u00e1n cosas con las que no deber\u00edas estar de acuerdo y luego te dir\u00e1n que est\u00e9s de acuerdo con ellas. Como esto. Cr\u00e9eme.  \n677.0 Entonces, estas chicas dijeron que vestirse as\u00ed no significa que no sean material para esposa, pero mientras m\u00e1s piel muestren y m\u00e1s seguido salgan, m\u00e1s atenci\u00f3n tendr\u00e1n.  \n688.0 Y cuanto m\u00e1s beban, menos lo resistir\u00e1n. Y as\u00ed, las posibilidades de que ocurra algo malo son cada vez mayores.  \n694.0 Entonces dicen, solo porque estoy maximizando las posibilidades de mal comportamiento no significa que no soy material de esposa, aunque material de esposa es alguien que minimiza las posibilidades de mal comportamiento.  \n707.0 Entonces, \u00bfves lo que quiero decir aqu\u00ed? Est\u00e1 su comportamiento visible, que es f\u00e1cil de juzgar, y luego est\u00e1 este turbio secreto \"conf\u00eda en m\u00ed\" en la zona misteriosa.  \n714.0 Puedo hacer todas las cosas malas y seguir siendo bueno. Ignora mi comportamiento.  \n723.0 Esta chica dijo: \"Un chico, 100 chicos, \u00bfqu\u00e9 importa?\". Bueno, lo que importa es que no quiero ser este tipo.  \n729.0 No quiero ser el t\u00edo n\u00famero 99 compr\u00e1ndote flores 3,2 d\u00edas antes de que aparezca el t\u00edo n\u00famero 100.  \n738.0 As\u00ed que, cuidado con \"mis decisiones no importan\". Yo no hice lo que hice. No significa lo que significa. Conf\u00eda en mis palabras, no en mis acciones.  \n747.0 Eso es s\u00f3lo una prueba. Y si no conf\u00edas en ella, dir\u00e1 esto.  \n754.0 \u00bfTan est\u00fapidos son?  \n756.0 Pero si conf\u00edas en ella, dir\u00e1 esto.  \n760.0 \u00bfTan est\u00fapidos son?  \n764.0 As\u00ed que, no conf\u00edes en alguien del cubo malo. S\u00f3lo encuentra a alguien en el cubo bueno.  \n769.0 Peque\u00f1o anuncio para aquellos que lo vean hasta el final.  \n771.0 Tengo una nueva tienda.  \n773.0 Ten\u00eda una antigua tienda, pero nadie iba all\u00ed.  \n775.0 Puedes encontrarla mirando debajo de la ventana de v\u00eddeo o desplaz\u00e1ndote hacia abajo, creo. No estoy seguro si funciona igual para ti.  \n782.0 La tienda tiene este aspecto, y puedes comprar p\u00f3sters, camisetas, tazas y otras cosas.\n787.0 Dime qu\u00e9 dise\u00f1os quieres en los comentarios.\n<\/span>\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-eddabf7 elementor-widget elementor-widget-html\" data-id=\"eddabf7\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<script>\n\/\/ 1. Define which video to play for each language:\nconst videoMap = {\n  en: { type: \"youtube\", id: \"Dvd9eDcMk_E\" },\n  es: { type: \"youtube\", id: \"SY8AOd_rHHU\" }, \n  fr: { type: \"youtube\", id: \"d6WVZ4e1keo\" },\n  ja: { type: \"youtube\", id: \"Sz-2VHQGqqE\" },\n  pt: { type: \"youtube\", id: \"M8savysaBF8\" } \n\n};\n<\/script>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-a010ab1 e-flex e-con-boxed e-con e-parent\" data-id=\"a010ab1\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4c437ca elementor-widget elementor-widget-template\" data-id=\"4c437ca\" data-element_type=\"widget\" data-widget_type=\"template.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-template\">\n\t\t\t\t\t<div data-elementor-type=\"section\" data-elementor-id=\"3172\" class=\"elementor elementor-3172\" data-elementor-post-type=\"elementor_library\">\n\t\t\t<div class=\"elementor-element elementor-element-7079b43 e-flex e-con-boxed e-con e-parent\" data-id=\"7079b43\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-800d60f elementor-widget elementor-widget-html\" data-id=\"800d60f\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>\n#simplified-transcript-note {\n  display: none !important;\n}\n<\/style>\n<div id=\"simplified-transcript-note\">Las traducciones y la transcripci\u00f3n simplificada se basan en traducciones del material original, localizadas en varios idiomas. Desarrollado por PeakCreatorRoyalty.com bajo licencia con <span>h<\/span>oe_math.<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3a02ec9 elementor-widget elementor-widget-html\" data-id=\"3a02ec9\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<script>\n  \/\/ Auto-hide translation block after page load\n  window.addEventListener('DOMContentLoaded', function() {\n    for (let i = 1; i <= 5; i++) {\n      document.querySelectorAll(`[id$=\"${i}\"]`).forEach(el => {\n        el.style.display = 'none';\n      });\n    }\n  });\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f2f7b1d elementor-widget elementor-widget-html\" data-id=\"f2f7b1d\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>\n  h3 {\n    margin-left: 0px; \/* Adjust as needed *\/\n    \/* Optionally add: *\/\n    text-align: left;  \n  }\n<\/style>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e3ade12 elementor-widget elementor-widget-html\" data-id=\"e3ade12\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- VIDEO PLAYER CONTAINER -->\n<div id=\"videoPlayerContainer\" style=\"max-width: 800px; margin: auto; text-align: center;\">\n  <!-- Video player is injected here -->\n<\/div>\n\n<!-- SCROLLING TABS & CHAPTER DETAILS -->\n<div style=\"max-width: 1000px; margin: 32px auto 0 auto;\">\n  <div id=\"chapterTabs\" class=\"chapter-tabs-scroll\">\n    <!-- Tabs will be generated by JavaScript -->\n  <\/div>\n  <!-- div id=\"chapterPlayPause\" style=\"margin:1em 0 0.5em 0;\">\n  <\/div -->\n  <div id=\"chapterPanel\" class=\"chapter-panel\">\n    <!-- Chapter text will appear here  -->\n  <\/div>\n<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-928f586 elementor-widget elementor-widget-html\" data-id=\"928f586\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- NO TOUCH Scripts -->\n<!-- Video script v1.0 -->\n<!--[wpcode id=\"1824\"] -->\n\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/hls.js@latest\"><\/script> <!-- Include HLS.js -->\r\n\r\n<style>\r\n  .half-br {\r\n    display: block;\r\n    height: 1px;\r\n    width: 100%;\r\n    border: none;\r\n    margin: 0;\r\n    padding: 0;\r\n  }\r\n<\/style>\r\n\r\n<script>\r\n\r\nlet currentChapterIdx = 0;\r\n\t\r\nfunction getCurrentLang() {\r\n  return document.documentElement.lang ? document.documentElement.lang.substring(0,2) : 'en';\r\n}\r\n\r\n\/\/ function waitTranslate(ms=1000) {\r\n\/\/   const end = Date.now() + ms; \/\/ 100 milliseconds = 1\/10 second\r\n\/\/   while (Date.now() < end) {\r\n\/\/     \/\/ Busy-wait: blocks the main thread!\r\n\/\/   }\r\n\/\/ }\r\n\r\n\/\/ const lang = getCurrentLang();\r\n\/\/ if (lang !== \"en\") {\r\n\/\/   var marker = document.getElementById('language-marker');\r\n\/\/   if (marker) {\r\n\/\/     \/\/ You can check for known translations of the phrase\r\n\/\/     var currentLangPhrase = marker.textContent.trim();\r\n\/\/ \r\n\/\/     \/\/ Example for English vs French\r\n\/\/     if (currentLangPhrase === \"Currently English language.\") {\r\n\/\/       console.log(\"Miss, translation in progress to '\/\"+lang+\"\/', 3 second delay.\")\r\n\/\/       waitTranslate(ms=3000);\r\n\/\/     } else {\r\n\/\/       console.log(\"Hit, pre-translated page in '\/\"+lang+\"\/'.\")\r\n\/\/     }\r\n\/\/   }\r\n\/\/ } else {\r\n\/\/   console.log(\"English, no translation needed.\")\r\n\/\/ }\r\n\r\n\/* ====== CONFIGURATION SECTION ====== *\/\r\n\/\/ const BUNNY_VIDEO_LIBRARY_ID = \"vz-c02c9ec9-42b.b-cdn.net\"; \/\/ Replace with your actual Bunny Video Library ID\r\nconst BUNNY_VIDEO_LIBRARY_ID = \"vz-d8eb6cfe-1f7.b-cdn.net\"; \/\/ Replace with your actual Bunny Video Library ID\r\n\r\n\/\/ 1. Define which video to play for each language:\r\n\/\/const videoMap = {\r\n\/\/  en: { type: \"youtube\", id: \"wWrsW76bG88\" },\r\n\/\/  fr: { type: \"bunny\", id: \"fc57904c-7f56-4b36-8d13-d1d715b82e81\" }, \/\/ This is the VIDEO ID\r\n\/\/  de: { type: \"bunny\", id: \"YOUR_GERMAN_VIDEO_ID\" }                   \/\/ This is the VIDEO ID\r\n  \/\/ Add more: es, it, etc.\r\n\/\/};\r\n\r\n\/\/ 2. Define chapters for each language:\r\nfunction parseCSVFromHeaderRows(headerText, rowsText) {\r\n  const headers = headerText.trim().split('|').map(h => h.trim());\r\n  const lines = rowsText.trim().split('\\n').filter(line => line.trim().length);\r\n\r\n  return lines.map(line => {\r\n    const values = [];\r\n    \/\/ Split by |, but don't split inside quotes (simple version assumes no | inside quotes)\r\n    \/\/ If you need to handle | inside quoted fields, regex needs to be more complex\r\n    let regex = \/(\"(?:[^\"]|\"\")*\"|'(?:[^']|'')*'|[^|]+)\/g;\r\n    let match;\r\n    while ((match = regex.exec(line))) {\r\n      let value = match[0].trim();\r\n      \/\/ Remove leading and trailing single or double quotes\r\n      value = value.replace(\/^(['\"])(.*)\\1$\/, '$2');\r\n      values.push(isNaN(value) ? value : Number(value));\r\n    }\r\n    const obj = {};\r\n    headers.forEach((h, i) => { obj[h] = values[i]; });\r\n    return obj;\r\n  });\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\/\/ Parse hiddenText into [{time: number, text: string}]\r\n\/\/ Parses lines like: 12.0 Text, or * Bullet point, or 1. Numbered item\r\nfunction parseHiddenText() {\r\n  const hiddenText = document.getElementById('hiddenText')?.textContent || '';\r\n  const lines = hiddenText.split('\\n').map(line => line.trim()).filter(Boolean);\r\n  const results = [];\r\n  let lastTime = null;\r\n\r\n  for (let line of lines) {\r\n    \/\/ Match timestamps with comma or dot\r\n    let match = \/^(\\d+(?:[.,]\\d+)?)\\s+(.*)$\/.exec(line);\r\n    if (match) {\r\n      lastTime = parseFloat(match[1].replace(',', '.'));\r\n      results.push({ time: lastTime, text: match[2] });\r\n      continue;\r\n    }\r\n    \/\/ Match bullets or numbers\r\n    match = \/^(\\*|\\-|\\d+\\.)\\s+(.*)$\/.exec(line);\r\n    if (match && lastTime !== null) {\r\n      results.push({ time: lastTime, text: line });\r\n      continue;\r\n    }\r\n    if (lastTime !== null) {\r\n      results.push({ time: lastTime, text: line });\r\n    }\r\n  }\r\n  return results;\r\n}\r\n\r\n\r\n\r\n\r\nconst hiddenTextLines = parseHiddenText(); \/\/ Global for later use\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\/\/ Get the header and rows from the DOM\r\nconst csvHeader = document.getElementById('video-data-header').textContent;\r\nconst csvRows = document.getElementById('video-data-rows').textContent;\r\n\r\nconst chapterMap = {\r\n  en: parseCSVFromHeaderRows(csvHeader, csvRows)\r\n};\r\n\r\n\/\/ List of properties to process\r\nconst properties = ['tab', 'title', 'description'];\r\n\r\n\/\/ Loop through each row in chapterMap.en\r\nchapterMap.en.forEach(row => {\r\n  properties.forEach(prop => {\r\n    const val = row[prop];\r\n    if (typeof val === 'string') {\r\n      row[prop] = val.replace(\/^[\\'\\\"]+|[\\'\\\"]+$\/g, '');\r\n    }\r\n  });\r\n});\r\n\r\n\/\/ console.log(chapterMap.en); \/\/ Output objects in browser console\r\n\r\n\r\n\/* ====== END CONFIGURATION ====== *\/\r\n\r\n\/* ----- Global Player Variables ----- *\/\r\nlet ytPlayer, ytReady = false, stopTimer = null;\r\nlet hlsInstance = null; \/\/ To store the HLS.js instance\r\nlet html5VideoElement = null; \/\/ To store the HTML5 video element for Bunny\r\n\r\n\r\n\/* ----- Player and Chapters Logic ----- *\/\r\nfunction cleanupPlayers() {\r\n    \/\/ Clear existing stop timer\r\n    if (stopTimer) {\r\n        clearInterval(stopTimer);\r\n        stopTimer = null;\r\n    }\r\n\r\n    \/\/ Cleanup YouTube Player\r\n    if (ytPlayer && typeof ytPlayer.destroy === 'function') {\r\n        ytPlayer.destroy();\r\n    }\r\n    ytPlayer = null;\r\n    ytReady = false;\r\n\r\n    \/\/ Cleanup HLS.js Player\r\n    if (hlsInstance) {\r\n        hlsInstance.destroy();\r\n        hlsInstance = null;\r\n    }\r\n    html5VideoElement = null; \/\/ Clear reference\r\n\r\n    \/\/ Clear the container\r\n    const container = document.getElementById('videoPlayerContainer');\r\n    if (container) container.innerHTML = \"\";\r\n}\r\n\r\nfunction setVideoPlayer(langObj) {\r\n  cleanupPlayers(); \/\/ Ensure previous players are cleaned up\r\n\r\n  const container = document.getElementById('videoPlayerContainer');\r\n  if (!container) return;\r\n\r\n  if (langObj.type === \"youtube\") {\r\n    container.innerHTML = `<div style=\"position: relative; width: 100%; padding-top: 56.25%;\">\r\n<iframe id=\"myVideo\" style=\"position: absolute;  top: 0; left: 0; width: 100%; height: 100%;\" \r\n            src=\"https:\/\/www.youtube.com\/embed\/${langObj.id}?enablejsapi=1&rel=0&origin=${window.location.origin}\"\r\n            frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\r\n            allowfullscreen><\/iframe><\/div>`;\r\n    \/\/ YT API will be loaded\/re-initialized later\r\n  } else if (langObj.type === \"bunny\") {\r\n    const bunnyStreamUrl = `https:\/\/${BUNNY_VIDEO_LIBRARY_ID}\/${langObj.id}\/playlist.m3u8`;\r\n    container.innerHTML = `<video id=\"myVideo\" width=\"100%\" height=\"390\" controls playsinline poster=\"https:\/\/itishoemath.com\/wp-content\/uploads\/2025\/05\/UCsEPI9OwGEw5Lm0E7Paq62g_0003_wWrsW76bG88_en.jpg\"><\/video>`;\r\n    html5VideoElement = document.getElementById('myVideo'); \/\/ Get the new video element\r\n\r\n\tif (html5VideoElement) {\r\n        html5VideoElement.addEventListener('play', () => renderPlayPauseButton(currentChapterIdx));\r\n        html5VideoElement.addEventListener('pause', () => renderPlayPauseButton(currentChapterIdx));\r\n    }\r\n\r\n\t  \r\n    if (Hls.isSupported()) {\r\n        hlsInstance = new Hls();\r\n        hlsInstance.loadSource(bunnyStreamUrl);\r\n        hlsInstance.attachMedia(html5VideoElement);\r\n        hlsInstance.on(Hls.Events.MANIFEST_PARSED, function() {\r\n            \/\/ console.log(\"Bunny HLS: Manifest parsed and video ready.\");\r\n            \/\/ html5VideoElement.play(); \/\/ Optional: Autoplay (mind browser restrictions)\r\n        });\r\n        hlsInstance.on(Hls.Events.ERROR, function(event, data) {\r\n            \/\/ console.error('Bunny HLS Error:', data);\r\n            if (data.fatal) {\r\n                switch(data.type) {\r\n                    case Hls.ErrorTypes.NETWORK_ERROR: hlsInstance.startLoad(); break;\r\n                    case Hls.ErrorTypes.MEDIA_ERROR: hlsInstance.recoverMediaError(); break;\r\n                    default: hlsInstance.destroy(); break;\r\n                }\r\n            }\r\n        });\r\n    } else if (html5VideoElement.canPlayType('application\/vnd.apple.mpegurl')) {\r\n        \/\/ Native HLS support (e.g., Safari)\r\n        html5VideoElement.src = bunnyStreamUrl;\r\n        html5VideoElement.addEventListener('loadedmetadata', function() {\r\n            \/\/ console.log('Bunny Native HLS: Metadata loaded.');\r\n        });\r\n    } else {\r\n        \/\/ console.error('HLS is not supported in this browser for Bunny.net video.');\r\n        container.innerHTML = '<p>Sorry, HLS video playback is not supported in your browser.<\/p>';\r\n    }\r\n  }\r\n}\r\n\r\nfunction renderTabs(activeIdx, chapters) {\r\n  const tabRow = document.getElementById('chapterTabs');\r\n  tabRow.innerHTML = chapters.map((ch, i) =>\r\n    `<button class=\"chapter-tab${i === activeIdx ? \" active\" : \"\"}\" onclick=\"showChapter(${i})\">${ch.tab}<\/button>`\r\n  ).join('');\r\n}\r\n\r\n\r\n\r\n\t\r\nfunction renderPlayPauseButton(idx) {\r\n  const lang = getCurrentLang();\r\n  const chapters = chapterMap['en'];\r\n  const ch = chapters[idx];\r\n  if (!ch) return \"\";\r\n\r\n  let isPlaying = false;\r\n  const videoObj = videoMap[lang] || videoMap['en'];\r\n\r\n  if (videoObj.type === \"youtube\" && ytPlayer && ytReady) {\r\n    isPlaying = ytPlayer.getPlayerState && ytPlayer.getPlayerState() === 1;\r\n  } else if (videoObj.type === \"bunny\" && html5VideoElement) {\r\n    isPlaying = !html5VideoElement.paused;\r\n  }\r\n\r\n  const buttonLabel = isPlaying ? \"Pause\" : \"Play\";\r\n  const buttonIcon = isPlaying ? \"\u23f8\" : \"\u25b6\ufe0f\";\r\n\r\n  const btnHtml = `<button id=\"playPauseBtn\" style=\"padding:0.5em 1em;font-size:1em;border-radius:6px;background: #0F3F91;color:#fff;border:none;cursor:pointer;margin-bottom:1em;transition: background 0.2s;display: block;\">\r\n      ${buttonIcon} ${buttonLabel}\r\n    <\/button>`;\r\n\r\n  const container = document.getElementById('playPauseContainer');\r\n  if (container) {\r\n    container.innerHTML = btnHtml;\r\n    const playPauseBtn = document.getElementById('playPauseBtn');\r\n    if (playPauseBtn) {\r\n      playPauseBtn.onclick = function() {\r\n        let isPlayingNow = false;\r\n        if (videoObj.type === \"youtube\" && ytPlayer && ytReady) {\r\n          isPlayingNow = ytPlayer.getPlayerState && ytPlayer.getPlayerState() === 1;\r\n          ytPlayer.seekTo(ch.time, true);\r\n          if (isPlayingNow) {\r\n            ytPlayer.pauseVideo();\r\n          } else {\r\n            ytPlayer.playVideo();\r\n          }\r\n        } else if (videoObj.type === \"bunny\" && html5VideoElement) {\r\n          isPlayingNow = !html5VideoElement.paused;\r\n          html5VideoElement.currentTime = ch.time;\r\n          if (isPlayingNow) {\r\n            html5VideoElement.pause();\r\n          } else {\r\n            html5VideoElement.play();\r\n          }\r\n        }\r\n        \/\/ No manual re-render here!\r\n      };\r\n    }\r\n  }\r\n}\r\n\r\n\r\nfunction formatTranscriptBlock(lines) {\r\n  let prevTime = null;\r\n  let out = [];\r\n  for (let i = 0; i < lines.length; i++) {\r\n    const { time, text } = lines[i];\r\n    \/\/ Convert seconds to MM:SS\r\n    const min = Math.floor(time \/ 60);\r\n    const sec = Math.floor(time % 60);\r\n    const mmss = `${min}:${sec.toString().padStart(2, '0')}`;\r\n    if (time !== prevTime) {\r\n      out.push(`<br><b><span style=\"color:#FFF\">${mmss}<\/span><\/b> ${text}`);\r\n    } else {\r\n      out.push(text);\r\n    }\r\n    prevTime = time;\r\n  }\r\n  return out.join('<br>');\r\n}\r\n\r\n\r\n\r\n\r\nfunction renderPanel(idx) {\r\n  const lang = getCurrentLang();\r\n\r\n  const simplifiedLabel = document.getElementById('simplified-transcript-label')?.textContent || \"\";\r\n  const simplifiedNote = document.getElementById('simplified-transcript-note')?.textContent || \"Note: ...\";\r\n\r\n  const chapters = chapterMap['en'];\r\n  const ch = chapters[idx];\r\n  if (!ch) {\r\n      console.error(`Chapter index ${idx} not found for language ${lang}.`);\r\n      return;\r\n  }\r\n\r\n  \/\/ --- Find hiddenText lines within this chapter's time range ---\r\n  const linesInRangeArr = hiddenTextLines\r\n    .filter(line => line.time >= ch.time && line.time < ch.stop);\r\n\r\n  const transcriptHTML = formatTranscriptBlock(linesInRangeArr);\r\n\r\n  let extra = \"\";\r\n  if (linesInRangeArr.length) {\r\n    extra = `\r\n      <br><br>\r\n      <!--span style=\"display:block;margin-top:1em;margin-bottom:0.25em;font-weight:bold\">${simplifiedLabel}<\/span-->\r\n      <span style=\"color:#f5f5f5;font-size:100%\">${transcriptHTML}<\/span>\r\n      <br>\r\n      <span style=\"display:block;margin-top:0.75em;font-size:75%;color:#00C2C2;\">\r\n        <br>${simplifiedNote}\r\n      <\/span>\r\n    `;\r\n  }\r\n\r\n  \/\/ Insert the Play\/Pause button at the very top of the panel\r\n  const playPauseButton = renderPlayPauseButton(idx);\r\n\r\n  document.getElementById('chapterPanel').innerHTML =\r\n    `<h3 style=\"margin-top:0;color:#fff\">${ch.title}<\/h3>\r\n     <div id=\"playPauseContainer\" style=\"margin-bottom:1em\"><\/div>\r\n     <p style=\"margin-bottom:0;color:#fff\">${ch.description}${extra}<\/p>`;\r\n\r\n  renderPlayPauseButton(idx);\r\n  renderTabs(idx, chapters);\r\n\r\n  \/\/ Attach the event handler after the button is inserted\r\n  const playPauseBtn = document.getElementById('playPauseBtn');\r\n  if (playPauseBtn) {\r\n    playPauseBtn.onclick = function() {\r\n      const videoObj = videoMap[lang] || videoMap['en'];\r\n      let isPlaying = false;\r\n      if (videoObj.type === \"youtube\" && ytPlayer && ytReady) {\r\n        isPlaying = ytPlayer.getPlayerState && ytPlayer.getPlayerState() === 1;\r\n        ytPlayer.seekTo(ch.time, true);\r\n        if (isPlaying) {\r\n          ytPlayer.pauseVideo();\r\n        } else {\r\n          ytPlayer.playVideo();\r\n        }\r\n      } else if (videoObj.type === \"bunny\" && html5VideoElement) {\r\n        isPlaying = !html5VideoElement.paused;\r\n        html5VideoElement.currentTime = ch.time;\r\n        if (isPlaying) {\r\n          html5VideoElement.pause();\r\n        } else {\r\n          html5VideoElement.play();\r\n        }\r\n      }\r\n      \/\/ Optionally update button after action\r\n      \/\/ setTimeout(() => renderPanel(idx), 300);\r\n    };\r\n  }\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nwindow.showChapter = function(idx) {\r\n  currentChapterIdx = idx;\r\n\r\n  const lang = getCurrentLang();\r\n  \/\/ const chapters = chapterMap[lang] || chapterMap['en']; \/\/ Fallback to 'en'   \r\n  \/\/ will switch for video but NOT for text (translatepress will accomplish)\r\n  const chapters = chapterMap['en']; \/\/ Fallback to 'en' chapters\r\n  const chapterData = chapters[idx];\r\n\r\n  if (!chapterData) {\r\n      console.error(`Chapter data for index ${idx} not found.`);\r\n      return;\r\n  }\r\n  renderPanel(idx); \/\/ Update panel and tabs\r\n\r\n  \/\/ Scroll tab into view\r\n  const buttons = document.getElementsByClassName('chapter-tab');\r\n  if (buttons[idx]) buttons[idx].scrollIntoView({ behavior: 'smooth', inline: 'center', block: 'nearest' });\r\n\r\n  const videoObj = videoMap[lang] || videoMap['en'];\r\n\r\n  \/\/ Clear previous stop timer\r\n  if (stopTimer) clearInterval(stopTimer);\r\n\r\n  if (videoObj.type === \"youtube\") {\r\n    if (ytReady && ytPlayer && typeof ytPlayer.seekTo === 'function') {\r\n      ytPlayer.seekTo(chapterData.time, true);\r\n      ytPlayer.playVideo();\r\n      \r\n    } else {\r\n        console.warn(\"YouTube player not ready or seekTo not available.\");\r\n    }\r\n  } else if (videoObj.type === \"bunny\" && html5VideoElement) {\r\n    html5VideoElement.currentTime = chapterData.time;\r\n    html5VideoElement.play().catch(e => console.warn(\"Autoplay after seek prevented:\", e));\r\n  }\r\n};\r\n\r\nfunction reInitChaptersAndPlayer() {\r\n  const lang = getCurrentLang();\r\n  const videoObj = videoMap[lang] || videoMap['en']; \/\/ Fallback to 'en' video\r\n\r\n  if (!videoObj) {\r\n      console.error(`No video configuration found for language: ${lang} or fallback 'en'.`);\r\n      return;\r\n  }\r\n\r\n  setVideoPlayer(videoObj); \/\/ This now also cleans up old players\r\n\r\n  \/\/ Short delay to ensure DOM is updated, especially for iframe\r\n  setTimeout(function(){\r\n    renderPanel(0); \/\/ Render first chapter panel\r\n    if (videoObj.type === \"youtube\") {\r\n      \/\/ Load or re-initialize YT API for new iframe\r\n      if (typeof YT === 'undefined' || !YT.Player) { \/\/ Check if YT object or YT.Player is undefined\r\n        var tag = document.createElement('script');\r\n        tag.src = \"https:\/\/www.youtube.com\/iframe_api\";\r\n        var firstScriptTag = document.getElementsByTagName('script')[0];\r\n        firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\r\n      } else {\r\n        \/\/ If API is loaded, re-initialize player for the new iframe if needed\r\n        onYouTubeIframeAPIReady();\r\n      }\r\n    }\r\n  }, 100); \/\/ Reduced delay, might need adjustment\r\n}\r\n\r\n\/* ----- YT API Bootstrapping ----- *\/\r\n\/\/ This global function is called by the YouTube Iframe API script\r\nwindow.onYouTubeIframeAPIReady = function() {\r\n  const iframe = document.getElementById('myVideo');\r\n  if (iframe && iframe.tagName === 'IFRAME' && !ytPlayer) { \/\/ Ensure it's an iframe and player not already set\r\n    \/\/ console.log(\"onYouTubeIframeAPIReady called, initializing YT Player.\");\r\n    ytPlayer = new YT.Player('myVideo', {\r\n      events: {\r\n        'onReady': function(event) {\r\n          ytReady = true;\r\n          \/\/ console.log(\"YouTube Player Ready.\");\r\n          \/\/ If a chapter was clicked before YT was ready, try to apply it now.\r\n          \/\/ This requires knowing the current chapter index, which might need to be stored.\r\n          \/\/ For simplicity, we'll assume the user might click a chapter again or it starts at 0.\r\n        },\r\n        'onStateChange': function(event) {\r\n\t\t\t\/\/ 1 = playing, 2 = paused\r\n\t\t\trenderPlayPauseButton(currentChapterIdx); \/\/ currentChapterIdx should be tracked globally\r\n\t\t}\r\n      }\r\n    });\r\n  } else if (iframe && iframe.tagName === 'IFRAME' && ytPlayer && typeof ytPlayer.destroy === 'function') {\r\n    \/\/ This case handles if the API is reloaded or if reInit is called and iframe exists\r\n    \/\/ It's a bit tricky; ideally, we destroy and recreate fully.\r\n    \/\/ The cleanupPlayers function should handle most of this.\r\n    \/\/ console.log(\"onYouTubeIframeAPIReady called, player might exist. Attempting to re-bind if necessary.\");\r\n  }\r\n};\r\n\r\n\/* ----- Event Hooks ----- *\/\r\ndocument.addEventListener('DOMContentLoaded', function() {\r\n    if (document.getElementById('videoPlayerContainer')) { \/\/ Only run if the container exists\r\n        reInitChaptersAndPlayer();\r\n\r\n\t\t\r\n\r\n\r\n    }\r\n});\r\n\/\/ TranslatePress fires this event on language change\r\ndocument.addEventListener('trp_language_changed', function() {\r\n    if (document.getElementById('videoPlayerContainer')) { \/\/ Only run if the container exists\r\n        reInitChaptersAndPlayer();\r\n\t\t\r\n\r\n    }\r\n});\r\n\r\n<\/script>\r\n\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-40859b7 elementor-widget elementor-widget-html\" data-id=\"40859b7\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<style>\n\/* Your existing CSS is good, no changes needed unless you want to refine *\/\n.chapter-tabs-scroll {\n  display: flex;\n  overflow-x: auto;\n  gap: 10px;\n  margin-bottom: 18px;\n  scrollbar-width: thin;\n  scrollbar-color: #a0aec0 #f7fafc; \/* For Firefox *\/\n  -webkit-overflow-scrolling: touch;\n  padding-bottom: 5px; \/* To make scrollbar visible without cutting content *\/\n  border-radius: 8px; \/* Optional: if you want rounded corners for the scroll area *\/\n}\n\/* Webkit Scrollbar Styles *\/\n.chapter-tabs-scroll::-webkit-scrollbar {\n  height: 7px;\n}\n.chapter-tabs-scroll::-webkit-scrollbar-track {\n  background: #111; \/* Or a lighter color if preferred *\/\n  border-radius: 4px;\n}\n.chapter-tabs-scroll::-webkit-scrollbar-thumb {\n  background: #333; \/* Or a contrasting color *\/\n  border-radius: 4px;\n}\n.chapter-tab {\n  white-space: nowrap;\n  border: none;\n  background: #222; \/* Darker tab background *\/\n  color: #fff;\n  font-size: 1.1em;\n  padding: 8px 22px;\n  border-radius: 999px; \/* Pill shape *\/\n  cursor: pointer;\n  transition: background 0.2s, color 0.2s, font-weight 0.2s, box-shadow 0.2s;\n  margin-bottom: 0; \/* Ensure no extra space below tabs if they wrap *\/\n  outline: none; \/* Remove default focus outline if you have custom focus styles *\/\n  margin-right: 0; \/* Reset if previously set for spacing between items *\/\n}\n.chapter-tab.active,\n.chapter-tab:hover {\n  background: #e0e7ff; \/* Light blue for active\/hover *\/\n  color: #111; \/* Dark text for active\/hover *\/\n  font-weight: bold;\n  box-shadow: 0 2px 8px #dbeafe66; \/* Softer shadow *\/\n}\n.chapter-panel {\n  background: rgba(20,20,20,0.88); \/* Semi-transparent dark background *\/\n  border-radius: 8px;\n  box-shadow: 0 2px 6px #111; \/* Subtle shadow *\/\n  padding: 20px 24px;\n  min-height: 80px; \/* Ensure panel has some height even if description is short *\/\n  transition: box-shadow 0.3s; \/* Smooth shadow transition on hover (if any) *\/\n}\n\/* Add a class for the video player container if you want to target its children more easily *\/\n#videoPlayerContainer video { \/* Ensure video tag fits container *\/\n    display: block; \/* Removes extra space below if it's inline *\/\n}\n<\/style>\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\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-e4bc449 e-flex e-con-boxed e-con e-parent\" data-id=\"e4bc449\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-fdce02d e-con-full e-flex e-con e-child\" data-id=\"fdce02d\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6160f3a elementor-widget elementor-widget-shortcode\" data-id=\"6160f3a\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><!-- Post Page Mid Roll -->\r\n<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ea60902 elementor-widget elementor-widget-html\" data-id=\"ea60902\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- 4. NO TOUCH Scripts -->\n<!-- ImageID_4 HTML external scripts to call + JS -->\n<!-- script src=\"https:\/\/code.jquery.com\/jquery-3.7.1.min.js\"><\/script -->\r\n<script>\r\njQuery(document).ready(function ($) {\r\n\r\n  \/\/ --- IMAGE HOTSPOTS AND BUTTONS INIT ---\r\n  $('.hotspot-block').each(function () {\r\n    const $block = $(this);\r\n    const id = $block.data('id');\r\n    const $image = $block.find(`.main-image[data-id=\"${id}\"]`);\r\n    const $container = $block.find('.hotspot-container');\r\n    const $buttons = $block.find('.hotspot-buttons');\r\n    const imageUrl = imageMap[id];\r\n\r\n\r\n\t\r\n    const csvRaw = $(`pre#hotspot-data-${id}`).text().trim();\r\n\r\n    const activeNumbers = [];\r\n    $block.data('activeNumbers', activeNumbers);\r\n\r\n    if (!imageUrl) return;\r\n    $image.attr('src', imageUrl);\r\n\r\n    $image.on('load', function () {\r\n      const imgWidth = $image[0].naturalWidth;\r\n      const imgHeight = $image[0].naturalHeight;\r\n\r\n      \/\/ --- Simple Pipe-Delimited Parse ---\r\n\tconst lines = csvRaw.split('\\n').map(line => line.trim()).filter(Boolean);\r\n\tif (lines.length < 2) return;\r\n\t\/\/ Optionally check header here if you want\r\n\tconst data = lines.slice(1).map(line => {\r\n\t  \/\/ Split by pipe instead of comma, but allow pipes in the text field (by joining the rest)\r\n\t  const parts = line.split('|');\r\n\t  const order = parts[0] ? parts[0].trim() : '';\r\n\t  const x_px = parts[1] ? parts[1].trim() : '';\r\n\t  const y_px = parts[2] ? parts[2].trim() : '';\r\n\t  const direction = parts[3] ? parts[3].trim() : '';\r\n\t  const text = parts.length > 4 ? parts.slice(4).join('|').trim() : '';\r\n\t  return { order, x_px, y_px, direction, text };\r\n\t});\r\n\r\n\t\/\/ console.log('Parsed data:', data);\r\n\r\n\r\n      data.forEach(row => {\r\n        const number = String($.trim(row.order));\r\n        const xPx = parseFloat(row.x_px);\r\n        const yPx = parseFloat(row.y_px);\r\n        const dir = (row.direction || \"A\").trim().toUpperCase();\r\n        const text = $.trim(row.text);\r\n        const leftPercent = (xPx \/ imgWidth) * 100;\r\n        const topPercent = (yPx \/ imgHeight) * 100;\r\n\r\n        const tooltipClass = {\r\n          A: 'tooltip-above',\r\n          B: 'tooltip-below',\r\n          L: 'tooltip-left',\r\n          R: 'tooltip-right'\r\n        }[dir] || 'tooltip-above';\r\n\r\n        \/\/ Tooltip text present in DOM for TranslatePress!\r\n        const formattedText = `${number}. ` + text.replace(\/\\n\/g, '<br>');\r\n        const $hotspot = $(`\r\n          <div class=\"hotspot ${tooltipClass}\" data-number=\"${number}\">\r\n            <span class=\"hotspot-number\">${number}<\/span>\r\n            <span class=\"hotspot-tooltip\" style=\"display:none;\">${formattedText}<\/span>\r\n          <\/div>\r\n        `).css({\r\n          left: `${leftPercent}%`,\r\n          top: `${topPercent}%`,\r\n          transform: 'translate(-50%, -50%)',\r\n          position: 'absolute'\r\n        });\r\n\r\n        $container.append($hotspot);\r\n        $buttons.append(`<button class=\"hotspot-btn\" data-number=\"${number}\">${number}<\/button>`);\r\n      });\r\n    });\r\n  });\r\n\r\n  \/\/ --- STYLE UPDATE FUNCTION ---\r\nfunction updateStyles($block) {\r\n  const active = $block.data('activeNumbers') || [];\r\n  $block.find('.hotspot').each(function () {\r\n    const num = String($(this).data('number'));\r\n    const $tooltip = $(this).find('.hotspot-tooltip');\r\n    if (active.includes(num)) {\r\n      $(this).addClass('enlarged active');\r\n      $tooltip.show(); \/\/ <-- Show tooltip!\r\n    } else {\r\n      $(this).removeClass('enlarged active');\r\n      $tooltip.hide(); \/\/ <-- Hide tooltip!\r\n    }\r\n  });\r\n  $block.find('.hotspot-btn').each(function () {\r\n    const num = String($(this).data('number'));\r\n    $(this)\r\n      .toggleClass('highlight', active.includes(num))\r\n      .toggleClass('enlarged', active.includes(num));\r\n  });\r\n}\r\n\r\n\r\n  \/\/ --- HOTSPOT\/BUTTON CLICK ---\r\n  $(document).on('click', '.hotspot, .hotspot-btn', function (e) {\r\n    e.preventDefault();\r\n    const $clicked = $(e.target).closest('.hotspot, .hotspot-btn');\r\n    const num = String($clicked.data('number'));\r\n    const $block = $clicked.closest('.hotspot-block');\r\n    let active = $block.data('activeNumbers') || [];\r\n\r\n    const wasActive = active.includes(num);\r\n\r\n    \/\/ Clear Hide if checked\r\n    const $hide = $block.find('.hide-numbers-toggle');\r\n    if ($hide.is(':checked')) {\r\n      $hide.prop('checked', false).trigger('change');\r\n    }\r\n\r\n    if (wasActive) {\r\n      active = active.filter(n => n !== num);\r\n    } else {\r\n      active = [num]; \/\/ Only one active at a time\r\n    }\r\n    $block.data('activeNumbers', active);\r\n    updateStyles($block);\r\n\r\n    \/\/ Uncheck \"Show all\" if not all hotspots are active\r\n    const allNums = $block.find('.hotspot').map((_, el) => String($(el).data('number'))).get();\r\n    const $toggle = $block.find('.show-all-toggle');\r\n    const isAllActive = allNums.every(n => active.includes(n));\r\n    $toggle.prop('checked', isAllActive);\r\n  });\r\n\r\n  \/\/ --- SHOW ALL \/ HIDE MUTUAL EXCLUSIVITY AND BEHAVIOR ---\r\n  $(document).on('change', '.show-all-toggle', function() {\r\n    const id = $(this).data('id');\r\n    const $block = $(`.hotspot-block[data-id=\"${id}\"]`);\r\n    const $hide = $block.find('.hide-numbers-toggle');\r\n    const $hotspots = $block.find('.hotspot');\r\n    const allNums = $hotspots.map((_, el) => String($(el).data('number'))).get();\r\n\r\n    \/\/ Mutually exclusive: uncheck Hide if Show All is checked\r\n    if ($(this).is(':checked')) {\r\n      if ($hide.is(':checked')) {\r\n        $hide.prop('checked', false).trigger('change');\r\n      }\r\n      $block.data('activeNumbers', allNums);\r\n    } else {\r\n      $block.data('activeNumbers', []);\r\n    }\r\n\r\n    updateStyles($block);\r\n  });\r\n\r\n  \/\/ Hide handler\r\n  $(document).on('change', '.hide-numbers-toggle', function() {\r\n    const id = $(this).data('id');\r\n    const $block = $(`.hotspot-block[data-id=\"${id}\"]`);\r\n    const $showAll = $block.find('.show-all-toggle');\r\n    const $hotspots = $block.find('.hotspot');\r\n    const checked = $(this).is(':checked');\r\n\r\n    \/\/ Mutually exclusive: uncheck Show All if Hide is checked\r\n    if (checked && $showAll.is(':checked')) {\r\n      $showAll.prop('checked', false).trigger('change');\r\n    }\r\n\r\n    if (checked) {\r\n      $hotspots.hide();\r\n      $block.find('.enlarged, .active').removeClass('enlarged active');\r\n    } else {\r\n      $hotspots.show();\r\n    }\r\n  });\r\n\r\n  \/\/ --- CLICKING OUTSIDE CLEARS EVERYTHING ---\r\n  $(document).on('click', function (e) {\r\n    const $target = $(e.target);\r\n    const $block = $target.closest('.hotspot-block');\r\n    $('.hotspot-block').each(function () {\r\n      const $thisBlock = $(this);\r\n      if (!$block.length || !$block.is(this)) {\r\n        $thisBlock.data('activeNumbers', []);\r\n        $thisBlock.find('.show-all-toggle').prop('checked', false);\r\n        updateStyles($thisBlock);\r\n      }\r\n    });\r\n  });\r\n\r\n});\r\n<\/script>\r\n \t\t\t\t<\/div>\n\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>","protected":false},"excerpt":{"rendered":"<p>La sorprendente verdad de los hombres que juzgan la promiscuidad El doble rasero en torno a la vida sexual de las mujeres no se trata s\u00f3lo de que \"la sociedad averg\u00fcence a las mujeres\". Hoe_math desglosa por qu\u00e9 los hombres juzgan la promiscuidad de forma diferente a la lealtad, tirando de psicolog\u00eda, lenguaje real y fr\u00eda l\u00f3gica. + Los hombres est\u00e1n predispuestos a ver el historial sexual de una mujer como un indicio de su lealtad. Para [...]<\/p>","protected":false},"author":6,"featured_media":5044,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[149,106,135,100,130,132,136],"tags":[127,126,129,128],"class_list":["post-4673","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-clips","category-gender-roles","category-mental-health","category-free-newsletter-insider-exclusives","category-recent","category-social-dynamics","category-technology","tag-es","tag-fr","tag-ja","tag-pt"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/itishoemath.com\/es_es\/wp-json\/wp\/v2\/posts\/4673","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/itishoemath.com\/es_es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/itishoemath.com\/es_es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/itishoemath.com\/es_es\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/itishoemath.com\/es_es\/wp-json\/wp\/v2\/comments?post=4673"}],"version-history":[{"count":12,"href":"https:\/\/itishoemath.com\/es_es\/wp-json\/wp\/v2\/posts\/4673\/revisions"}],"predecessor-version":[{"id":5375,"href":"https:\/\/itishoemath.com\/es_es\/wp-json\/wp\/v2\/posts\/4673\/revisions\/5375"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/itishoemath.com\/es_es\/wp-json\/wp\/v2\/media\/5044"}],"wp:attachment":[{"href":"https:\/\/itishoemath.com\/es_es\/wp-json\/wp\/v2\/media?parent=4673"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/itishoemath.com\/es_es\/wp-json\/wp\/v2\/categories?post=4673"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/itishoemath.com\/es_es\/wp-json\/wp\/v2\/tags?post=4673"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}