(function() {

var casillas = [
  { id: 'c01', texto: 'Por si acaso...', patron: 'escudo' },
  { id: 'c02', texto: '\u00bfMe lo validas?', patron: 'escudo' },
  { id: 'c03', texto: 'Te pongo en copia.', patron: 'escudo' },
  { id: 'c04', texto: '\u00bfMe lo confirmas?', patron: 'escudo' },
  { id: 'c05', texto: 'Ya lo hago yo.', patron: 'heroe' },
  { id: 'c06', texto: 'D\u00e9jalo, ya me encargo.', patron: 'heroe' },
  { id: 'c07', texto: 'No te preocupes, ya lo hago yo.', patron: 'heroe' },
  { id: 'c08', texto: 'Lo saco este fin de semana.', patron: 'heroe' },
  { id: 'c09', texto: 'S\u00ed, pero...', patron: 'vuelta' },
  { id: 'c10', texto: 'Le damos una vuelta.', patron: 'vuelta' },
  { id: 'c11', texto: 'Lo dejamos encima de la mesa.', patron: 'vuelta' },
  { id: 'c12', texto: 'Vamos a verlo.', patron: 'vuelta' },
  { id: 'c13', texto: 'Como prefer\u00e1is.', patron: 'prefer' },
  { id: 'c14', texto: 'A m\u00ed me da igual.', patron: 'prefer' },
  { id: 'c15', texto: 'Lo que decid\u00e1is.', patron: 'prefer' },
  { id: 'c16', texto: 'Adelante.', patron: 'prefer' },
  { id: 'c17', texto: 'Nuestro proyecto...', patron: 'trofeo' },
  { id: 'c18', texto: 'Ya lo comentamos.', patron: 'trofeo' },
  { id: 'c19', texto: 'Ha sido un trabajo de equipo.', patron: 'trofeo' },
  { id: 'c20', texto: 'Eso ya lo hab\u00edamos dicho.', patron: 'trofeo' },
  { id: 'c21', texto: 'No era el momento.', patron: 'silencio' },
  { id: 'c22', texto: 'Yo ya lo ve\u00eda venir.', patron: 'silencio' },
  { id: 'c23', texto: 'No era mi sitio.', patron: 'silencio' },
  { id: 'c24', texto: 'Prefer\u00ed no decir nada.', patron: 'silencio' },
  { id: 'libre', texto: 'Esto en mi empresa nunca pasa', patron: 'libre' },
];

var orden = ['c01','c05','c09','c13','c17','c02','c06','c10','c14','c18','c03','c07','libre','c15','c19','c04','c08','c11','c16','c20','c21','c22','c12','c23','c24'];

var ICONOS = {
  escudo: '<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg>',
  heroe: '<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="8" r="4"/><path d="M12 14c-5 0-8 2-8 4v1h16v-1c0-2-3-4-8-4z"/><path d="M17 3l1.5 1.5M7 3L5.5 4.5M12 1v2"/></svg>',
  vuelta: '<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><polyline points="12 6 12 12 16 14"/></svg>',
  prefer: '<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M23 21v-2a4 4 0 0 0-3-3.87"/><path d="M16 3.13a4 4 0 0 1 0 7.75"/></svg>',
  trofeo: '<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="14.5 17 14.5 21"/><polyline points="9.5 17 9.5 21"/><line x1="7" y1="21" x2="17" y2="21"/><path d="M5 3h14v8a7 7 0 0 1-14 0z"/><path d="M5 7H2a1 1 0 0 0-1 1v1a5 5 0 0 0 5 5"/><path d="M19 7h3a1 1 0 0 1 1 1v1a5 5 0 0 1-5 5"/></svg>',
  silencio: '<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/><line x1="9" y1="10" x2="9" y2="10"/><line x1="12" y1="10" x2="12" y2="10"/><line x1="15" y1="10" x2="15" y2="10"/></svg>',
  libre: '<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"/><path d="M8 14s1.5 2 4 2 4-2 4-2"/><line x1="9" y1="9" x2="9.01" y2="9"/><line x1="15" y1="9" x2="15.01" y2="9"/></svg>',
};

var colores = { escudo:'#002445', heroe:'#FF751F', vuelta:'#19C4D5', prefer:'#BFB620', trofeo:'#002445', silencio:'#FF751F', libre:'#19C4D5' };

var patrones = {
  escudo: { nombre: 'Por si acaso', texto: 'Pedir una validaci\u00f3n puede ser una buena pr\u00e1ctica cuando otra persona tiene m\u00e1s informaci\u00f3n o autoridad. El problema aparece cuando toda decisi\u00f3n necesita una capa adicional de aprobaci\u00f3n. Entonces el equipo no est\u00e1 repartiendo responsabilidad. Est\u00e1 repartiendo el coste de equivocarse.' },
  heroe: { nombre: 'Ya lo hago yo', texto: 'Ayudar fortalece al equipo. Hacerlo siempre acaba ocultando un problema de distribuci\u00f3n del trabajo. El h\u00e9roe no crea el problema: lo hace soportable. Y mientras lo hace soportable, nadie lo resuelve.' },
  vuelta: { nombre: 'Le damos una vuelta', texto: 'Cuestionar una propuesta es pensamiento cr\u00edtico cuando ayuda a mejorarla. Deja de serlo cuando el pero se convierte en un mecanismo para aplazar indefinidamente la decisi\u00f3n. Las ideas no se rechazan. Se dejan enfriar hasta que desaparecen solas.' },
  prefer: { nombre: 'Como prefer\u00e1is', texto: 'Estas frases parecen colaboraci\u00f3n. A veces lo son. Pero cuando son la respuesta habitual ante cualquier decisi\u00f3n, el equipo ha sacrificado informaci\u00f3n para evitar el conflicto. El consenso parece perfecto porque casi nadie dice realmente lo que piensa.' },
  trofeo: { nombre: 'Nuestro proyecto', texto: 'Reconocer el trabajo colectivo es sano. Diluir sistem\u00e1ticamente la autor\u00eda individual no lo es. El m\u00e9rito siempre encuentra compa\u00f1\u00eda. La responsabilidad suele viajar sola.' },
  silencio: { nombre: 'No era el momento', texto: 'Guardar silencio puede ser prudencia. Se convierte en un h\u00e1bito cuando el momento adecuado para hablar nunca llega. La discrepancia no desaparece. Solo cambia de sitio: del comit\u00e9 al caf\u00e9.' },
};

var premios = [
  { min: 0, max: 4, texto: 'Todav\u00eda distingues una reuni\u00f3n de una conversaci\u00f3n. Cuida ese privilegio.' },
  { min: 5, max: 9, texto: 'Empiezas a hablar organizacion\u00e9s. Fluido, pero a\u00fan reconocible.' },
  { min: 10, max: 14, texto: 'Ya entiendes frases que no significan lo que dicen. Es una habilidad. No precisamente la que quer\u00edas desarrollar.' },
  { min: 15, max: 19, texto: 'Ya sabes interpretar silencios, copias y por si acaso. Deber\u00eda estar en tu LinkedIn.' },
  { min: 20, max: 22, texto: 'Probablemente has sonre\u00eedo demasiado leyendo este cart\u00f3n. Eso tambi\u00e9n dice algo.' },
  { min: 23, max: 25, texto: '\u00a1BINGO! Has obtenido el M\u00e1ster Ejecutivo en Supervivencia Organizativa. El diploma llegar\u00e1 en copia a toda la cadena de mando para su validaci\u00f3n. Despu\u00e9s se convocar\u00e1 una reuni\u00f3n para decidir qui\u00e9n lidera la siguiente reuni\u00f3n.' },
];
var marcadas = {};

function getPremio(n) {
  for (var i=0;i<premios.length;i++) {
    if (n>=premios[i].min && n<=premios[i].max) return premios[i].texto;
  }
  return '';
}

function contarPorPatron() {
  var counts = {}; var keys = Object.keys(patrones);
  for (var i=0;i<keys.length;i++) counts[keys[i]]=0;
  var ids = Object.keys(marcadas);
  for (var j=0;j<ids.length;j++) {
    if (!marcadas[ids[j]]) continue;
    for (var k=0;k<casillas.length;k++) {
      if (casillas[k].id===ids[j] && casillas[k].patron!=='libre' && counts[casillas[k].patron]!==undefined) {
        counts[casillas[k].patron]++;
      }
    }
  }
  return counts;
}

function getPatronMax(counts) {
  var max=0,patron=null; var keys=Object.keys(counts);
  for (var i=0;i<keys.length;i++) { if (counts[keys[i]]>max) { max=counts[keys[i]]; patron=keys[i]; } }
  return max>0 ? patron : null;
}

function totalMarcadas() {
  var n=0; var ids=Object.keys(marcadas);
  for (var i=0;i<ids.length;i++) { if (marcadas[ids[i]]) n++; }
  return n;
}

function getCasilla(id) {
  for (var i=0;i<casillas.length;i++) { if (casillas[i].id===id) return casillas[i]; }
  return null;
}

function getIconColor(patron, esMarcada) {
  if (esMarcada) return '#fff';
  return colores[patron] || '#002445';
}

function render() {
  var wrapper = document.getElementById('bingo-coletillas-wrapper');
  if (!wrapper) return;
  var total=totalMarcadas(), counts=contarPorPatron(), patronMax=getPatronMax(counts);

  var H = '<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@700&family=Noto+Sans:wght@400;600&display=swap" rel="stylesheet">';
  H += '<div style="font-family:Roboto,Arial,sans-serif;max-width:860px;margin:0 auto;">';
  H += '<div style="background:#002445;padding:28px 32px;border-radius:10px 10px 0 0;">';
  H += '<div style="color:#19C4D5;font-size:0.7rem;font-weight:700;letter-spacing:3px;text-transform:uppercase;margin-bottom:8px;">ORH \u2014 Juegos de verano \u00b7 Edici\u00f3n final</div>';
  H += '<h2 style="color:#fff;font-size:1.75rem;font-weight:700;margin:0 0 8px 0;line-height:1.2;">El bingo de las coletillas organizativas</h2>';
  H += '<p style="color:#BFB620;font-size:0.95rem;font-weight:600;margin:0 0 6px 0;">El \u00fanico bingo en el que nadie quiere completar el cart\u00f3n... y casi todos lo hacen.</p>';
  H += '<p style="color:#ccc;font-size:0.85rem;margin:0;">Marca las que has o\u00eddo esta semana. Si las has dicho t\u00fa... tambi\u00e9n cuentan.</p>';
  H += '</div>';
  H += '<div style="background:#fff8f4;border-left:4px solid #FF751F;padding:14px 20px;border-right:1px solid #f0e0d0;">';
  H += '<p style="font-family:Noto Sans,Georgia,serif;font-size:0.85rem;color:#555;margin:0;line-height:1.6;">Veinticinco frases, seis patrones y un cart\u00f3n para descubrir qu\u00e9 h\u00e1bitos culturales dominan en tu equipo. El bingo de las coletillas organizativas no mide cu\u00e1ntas frases reconoces sino cu\u00e1les se repiten. Y recuerda que los equipos se desgastan por las peque\u00f1as conductas que nadie cuestiona porque parecen normales.</p>';
  H += '</div>';
  H += '<div style="background:#e8f4fd;border-left:4px solid #19C4D5;padding:10px 20px;border-right:1px solid #c0dff0;">';
  H += '<p style="font-family:Noto Sans,Georgia,serif;font-size:0.82rem;color:#444;margin:0;line-height:1.5;">Cada frase lleva un icono. Al terminar, mira cu\u00e1l has marcado m\u00e1s veces: ese es el patr\u00f3n que mejor describe c\u00f3mo funciona tu equipo.</p>';
  H += '</div>';
  H += '<div style="background:#fff;padding:20px;border:1px solid #e0e0e0;border-top:none;">';
  H += '<div style="display:grid;grid-template-columns:repeat(5,1fr);gap:8px;">';

  for (var oi=0; oi<orden.length; oi++) {
    var c = getCasilla(orden[oi]);
    if (!c) continue;
    var esMarcada = !!marcadas[c.id];
    var esLibre = c.patron === 'libre';
    var color = colores[c.patron] || '#002445';
    var bg, border, tc;
    if (esLibre) {
      bg = esMarcada ? '#19C4D5' : '#e8fafa';
      border = '2px solid #19C4D5';
      tc = esMarcada ? '#fff' : '#002445';
    } else if (esMarcada) {
      bg = color; border = '2px solid ' + color; tc = '#fff';
    } else {
      bg = '#fff'; border = '2px solid #e8e8e8'; tc = '#333';
    }
    var icoColor = getIconColor(c.patron, esMarcada);
    var ico = (ICONOS[c.patron] || '').replace(/currentColor/g, icoColor);
    var cid = c.id;
    H += '<div onclick="window._bM(\'' + cid + '\')" style="background:'+bg+';border:'+border+';border-radius:8px;padding:10px 8px;cursor:pointer;min-height:80px;display:flex;flex-direction:column;justify-content:space-between;transition:all 0.15s;">';
    H += '<span style="display:block;margin-bottom:4px;">'+ico+'</span>';
    H += '<span style="font-family:Noto Sans,Georgia,serif;font-size:'+(esLibre?'0.7rem':'0.75rem')+';line-height:1.4;color:'+tc+';'+(esLibre?'font-style:italic;font-weight:600;':'')+'">' + c.texto + '</span>';
    if (esMarcada && !esLibre) H += '<span style="font-size:0.9rem;text-align:right;display:block;color:#fff;">\u2713</span>';
    H += '</div>';
  }

  H += '</div>';
  H += '<div style="margin-top:16px;display:flex;align-items:center;gap:12px;">';
  H += '<div style="flex:1;height:6px;background:#e8e8e8;border-radius:3px;overflow:hidden;"><div style="height:100%;width:'+Math.round(total/24*100)+'%;background:#FF751F;border-radius:3px;transition:width 0.3s;"></div></div>';
  H += '<span style="font-size:0.8rem;color:#555;white-space:nowrap;font-weight:600;">'+total+' marcadas</span>';
  H += '</div></div>';

  if (total > 0) {
    var maxCount = 0;
    var pkeys2 = Object.keys(patrones);
    for (var pi2=0; pi2<pkeys2.length; pi2++) {
      if ((counts[pkeys2[pi2]]||0) > maxCount) maxCount = counts[pkeys2[pi2]];
    }
    var dominantes = [];
    for (var pi3=0; pi3<pkeys2.length; pi3++) {
      if ((counts[pkeys2[pi3]]||0) === maxCount && maxCount > 0) dominantes.push(pkeys2[pi3]);
    }
    var hayPatronClaro = dominantes.length === 1 && maxCount >= 2;

    H += '<div style="background:#002445;padding:20px 24px;">';
    H += '<div style="color:#BFB620;font-size:0.65rem;font-weight:700;letter-spacing:2px;text-transform:uppercase;margin-bottom:8px;">Tu resultado</div>';

    if (hayPatronClaro) {
      H += '<p style="font-family:Noto Sans,Georgia,serif;color:#fff;font-size:0.95rem;line-height:1.7;margin:0;">Has marcado '+total+' de 24 situaciones. La cantidad no es lo relevante: lo importante es que apuntan al mismo patr\u00f3n.</p>';
    } else {
      H += '<p style="font-family:Noto Sans,Georgia,serif;color:#fff;font-size:0.95rem;line-height:1.7;margin:0 0 8px 0;">Has marcado '+total+' de 24 situaciones.</p>';
      H += '<p style="font-family:Noto Sans,Georgia,serif;color:#aaa;font-size:0.8rem;line-height:1.5;margin:0;">No hay un patr\u00f3n dominante claro todav\u00eda. Mira abajo qu\u00e9 iconos se repiten m\u00e1s.</p>';
    }

    H += '</div>';
  }

  H += '<div style="background:#f5f5f5;padding:20px 24px;border:1px solid #e0e0e0;border-top:none;">';
  H += '<div style="color:#002445;font-size:0.65rem;font-weight:700;letter-spacing:2px;text-transform:uppercase;margin-bottom:16px;">\u00bfQu\u00e9 has marcado m\u00e1s?</div>';
  H += '<div style="display:grid;grid-template-columns:1fr 1fr;gap:12px;">';

  var pkeys = Object.keys(patrones);
  for (var pi=0; pi<pkeys.length; pi++) {
    var pk=pkeys[pi], p=patrones[pk], pn=counts[pk]||0, esMax=pk===patronMax&&pn>0;
    var bg2=esMax?'#002445':'#fff', bC=esMax?'2px solid #002445':'2px solid #e0e0e0', sC=esMax?'#19C4D5':'#FF751F';
    var diagIcoColor = esMax ? '#fff' : (colores[pk] || '#002445');
    var diagIco = (ICONOS[pk] || '').replace(/currentColor/g, diagIcoColor);
    H += '<div style="background:'+bg2+';border:'+bC+';border-radius:8px;padding:14px 16px;">';
    H += '<div style="display:flex;align-items:center;gap:8px;margin-bottom:8px;">'+diagIco;
    H += '<div><div style="font-size:0.65rem;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:'+sC+';">'+p.nombre+'</div>';
    H += '<div style="font-size:0.7rem;color:'+(esMax?'#aaa':'#999')+';">'+pn+' marcadas</div></div></div>';
    H += '<p style="font-family:Noto Sans,Georgia,serif;font-size:0.78rem;line-height:1.6;color:'+(esMax?'#ddd':'#555')+';margin:0;">'+p.texto+'</p>';
    H += '</div>';
  }

  H += '</div></div>';
  H += '<div style="background:#fff;border:1px solid #e0e0e0;border-top:none;border-radius:0 0 10px 10px;padding:24px 28px;text-align:center;">';
  H += '<p style="font-family:Noto Sans,Georgia,serif;font-size:1rem;font-style:italic;color:#002445;line-height:1.7;margin:0 0 12px 0;">Si has cantado l\u00ednea, el equipo tiene h\u00e1bitos; si has cantado bingo, los h\u00e1bitos ya tienen al equipo. Mejor no ense\u00f1es el resultado en la pr\u00f3xima reuni\u00f3n, seguro que alguien propondr\u00eda crear un comit\u00e9 para analizarlo.<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="#BFB620" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" style="display:inline;vertical-align:middle;margin-left:4px;"><circle cx="12" cy="12" r="10"/><path d="M8 14s1.5 2 4 2 4-2 4-2"/><line x1="9" y1="9" x2="9.01" y2="9"/><line x1="15" y1="9" x2="15.01" y2="9"/></svg></p>';
  H += '<div style="width:40px;height:3px;background:#FF751F;margin:0 auto;"></div>';
  H += '</div></div>';

  wrapper.innerHTML = H;
}

window._bM = function(id) { marcadas[id] = !marcadas[id]; render(); };

if (document.readyState === 'loading') {
  document.addEventListener('DOMContentLoaded', render);
} else {
  render();
}

})();
