{"id":71,"date":"2026-03-30T21:49:01","date_gmt":"2026-03-30T19:49:01","guid":{"rendered":"https:\/\/lab.eloygauna.com\/?page_id=71"},"modified":"2026-03-30T21:51:18","modified_gmt":"2026-03-30T19:51:18","slug":"ok1","status":"publish","type":"page","link":"https:\/\/lab.eloygauna.com\/index.php\/ok1\/","title":{"rendered":"ok1"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"71\" class=\"elementor elementor-71\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ac0774d e-flex e-con-boxed e-con e-parent\" data-id=\"ac0774d\" 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-3f7af2c elementor-widget elementor-widget-html\" data-id=\"3f7af2c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\n<html lang=\"es\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>Director Asociado \u2014 Tuerca Studio<\/title>\n<style>\n\u00a0 @import url('https:\/\/fonts.googleapis.com\/css2?family=DM+Mono:wght@400;500&family=Syne:wght@400;500;700;800&display=swap');\n\n\u00a0 *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }\n\n\u00a0 :root {\n\u00a0 \u00a0 --black: #080808;\n\u00a0 \u00a0 --white: #f5f4f0;\n\u00a0 \u00a0 --gray-1: #111111;\n\u00a0 \u00a0 --gray-2: #1a1a1a;\n\u00a0 \u00a0 --gray-3: #242424;\n\u00a0 \u00a0 --gray-4: #333333;\n\u00a0 \u00a0 --gray-5: #555555;\n\u00a0 \u00a0 --gray-6: #888888;\n\u00a0 \u00a0 --accent: #ff5c00;\n\u00a0 \u00a0 --font-head: 'Syne', sans-serif;\n\u00a0 \u00a0 --font-mono: 'DM Mono', monospace;\n\u00a0 }\n\n\u00a0 html, body {\n\u00a0 \u00a0 height: 100%;\n\u00a0 \u00a0 background: var(--black);\n\u00a0 \u00a0 color: var(--white);\n\u00a0 \u00a0 font-family: var(--font-mono);\n\u00a0 \u00a0 font-size: 14px;\n\u00a0 \u00a0 line-height: 1.6;\n\u00a0 \u00a0 -webkit-font-smoothing: antialiased;\n\u00a0 }\n\n\u00a0 #app {\n\u00a0 \u00a0 display: flex;\n\u00a0 \u00a0 flex-direction: column;\n\u00a0 \u00a0 height: 100vh;\n\u00a0 \u00a0 max-width: 860px;\n\u00a0 \u00a0 margin: 0 auto;\n\u00a0 }\n\n\u00a0 #header {\n\u00a0 \u00a0 display: flex;\n\u00a0 \u00a0 align-items: center;\n\u00a0 \u00a0 justify-content: space-between;\n\u00a0 \u00a0 padding: 18px 28px;\n\u00a0 \u00a0 border-bottom: 1px solid var(--gray-3);\n\u00a0 \u00a0 flex-shrink: 0;\n\u00a0 }\n\n\u00a0 #header-left {\n\u00a0 \u00a0 display: flex;\n\u00a0 \u00a0 align-items: center;\n\u00a0 \u00a0 gap: 14px;\n\u00a0 }\n\n\u00a0 #logo-mark {\n\u00a0 \u00a0 width: 32px;\n\u00a0 \u00a0 height: 32px;\n\u00a0 \u00a0 background: var(--accent);\n\u00a0 \u00a0 display: flex;\n\u00a0 \u00a0 align-items: center;\n\u00a0 \u00a0 justify-content: center;\n\u00a0 \u00a0 flex-shrink: 0;\n\u00a0 }\n\n\u00a0 #logo-mark span {\n\u00a0 \u00a0 font-family: var(--font-head);\n\u00a0 \u00a0 font-weight: 800;\n\u00a0 \u00a0 font-size: 14px;\n\u00a0 \u00a0 color: var(--black);\n\u00a0 \u00a0 letter-spacing: -0.5px;\n\u00a0 }\n\n\u00a0 #header-title {\n\u00a0 \u00a0 font-family: var(--font-head);\n\u00a0 \u00a0 font-size: 13px;\n\u00a0 \u00a0 font-weight: 700;\n\u00a0 \u00a0 letter-spacing: 1.5px;\n\u00a0 \u00a0 text-transform: uppercase;\n\u00a0 \u00a0 color: var(--white);\n\u00a0 }\n\n\u00a0 #header-sub {\n\u00a0 \u00a0 font-size: 10px;\n\u00a0 \u00a0 color: var(--gray-6);\n\u00a0 \u00a0 letter-spacing: 1px;\n\u00a0 \u00a0 margin-top: 2px;\n\u00a0 \u00a0 font-family: var(--font-mono);\n\u00a0 }\n\n\u00a0 #status {\n\u00a0 \u00a0 display: flex;\n\u00a0 \u00a0 align-items: center;\n\u00a0 \u00a0 gap: 6px;\n\u00a0 \u00a0 font-size: 11px;\n\u00a0 \u00a0 color: var(--gray-6);\n\u00a0 \u00a0 font-family: var(--font-mono);\n\u00a0 }\n\n\u00a0 #status-dot {\n\u00a0 \u00a0 width: 6px;\n\u00a0 \u00a0 height: 6px;\n\u00a0 \u00a0 border-radius: 50%;\n\u00a0 \u00a0 background: var(--accent);\n\u00a0 }\n\n\u00a0 #messages {\n\u00a0 \u00a0 flex: 1;\n\u00a0 \u00a0 overflow-y: auto;\n\u00a0 \u00a0 padding: 28px;\n\u00a0 \u00a0 display: flex;\n\u00a0 \u00a0 flex-direction: column;\n\u00a0 \u00a0 gap: 20px;\n\u00a0 \u00a0 scrollbar-width: thin;\n\u00a0 \u00a0 scrollbar-color: var(--gray-3) transparent;\n\u00a0 }\n\n\u00a0 #messages::-webkit-scrollbar { width: 4px; }\n\u00a0 #messages::-webkit-scrollbar-track { background: transparent; }\n\u00a0 #messages::-webkit-scrollbar-thumb { background: var(--gray-3); border-radius: 2px; }\n\n\u00a0 .msg-wrap {\n\u00a0 \u00a0 display: flex;\n\u00a0 \u00a0 flex-direction: column;\n\u00a0 \u00a0 gap: 6px;\n\u00a0 \u00a0 max-width: 82%;\n\u00a0 \u00a0 animation: fadeUp 0.2s ease;\n\u00a0 }\n\n\u00a0 @keyframes fadeUp {\n\u00a0 \u00a0 from { opacity: 0; transform: translateY(6px); }\n\u00a0 \u00a0 to { opacity: 1; transform: translateY(0); }\n\u00a0 }\n\n\u00a0 .msg-wrap.user { align-self: flex-end; align-items: flex-end; }\n\u00a0 .msg-wrap.bot { align-self: flex-start; }\n\n\u00a0 .msg-label {\n\u00a0 \u00a0 font-size: 10px;\n\u00a0 \u00a0 letter-spacing: 1.5px;\n\u00a0 \u00a0 text-transform: uppercase;\n\u00a0 \u00a0 color: var(--gray-5);\n\u00a0 \u00a0 padding: 0 2px;\n\u00a0 }\n\n\u00a0 .bubble {\n\u00a0 \u00a0 padding: 13px 17px;\n\u00a0 \u00a0 font-size: 14px;\n\u00a0 \u00a0 line-height: 1.65;\n\u00a0 \u00a0 border-radius: 2px;\n\u00a0 }\n\n\u00a0 .bot .bubble {\n\u00a0 \u00a0 background: var(--gray-2);\n\u00a0 \u00a0 border-left: 2px solid var(--accent);\n\u00a0 \u00a0 color: var(--white);\n\u00a0 }\n\n\u00a0 .user .bubble {\n\u00a0 \u00a0 background: var(--white);\n\u00a0 \u00a0 color: var(--black);\n\u00a0 \u00a0 border-radius: 2px;\n\u00a0 }\n\n\u00a0 .typing-dots {\n\u00a0 \u00a0 display: flex;\n\u00a0 \u00a0 gap: 5px;\n\u00a0 \u00a0 align-items: center;\n\u00a0 \u00a0 padding: 14px 17px;\n\u00a0 }\n\n\u00a0 .typing-dots span {\n\u00a0 \u00a0 width: 5px;\n\u00a0 \u00a0 height: 5px;\n\u00a0 \u00a0 border-radius: 50%;\n\u00a0 \u00a0 background: var(--gray-5);\n\u00a0 \u00a0 animation: blink 1.3s infinite;\n\u00a0 }\n\n\u00a0 .typing-dots span:nth-child(2) { animation-delay: 0.2s; }\n\u00a0 .typing-dots span:nth-child(3) { animation-delay: 0.4s; }\n\n\u00a0 @keyframes blink {\n\u00a0 \u00a0 0%, 80%, 100% { opacity: 0.2; }\n\u00a0 \u00a0 40% { opacity: 1; }\n\u00a0 }\n\n\u00a0 #shortcuts {\n\u00a0 \u00a0 display: flex;\n\u00a0 \u00a0 flex-wrap: wrap;\n\u00a0 \u00a0 gap: 6px;\n\u00a0 \u00a0 padding: 14px 28px;\n\u00a0 \u00a0 border-top: 1px solid var(--gray-3);\n\u00a0 \u00a0 flex-shrink: 0;\n\u00a0 }\n\n\u00a0 .sc {\n\u00a0 \u00a0 font-family: var(--font-mono);\n\u00a0 \u00a0 font-size: 11px;\n\u00a0 \u00a0 padding: 5px 12px;\n\u00a0 \u00a0 border: 1px solid var(--gray-3);\n\u00a0 \u00a0 color: var(--gray-6);\n\u00a0 \u00a0 cursor: pointer;\n\u00a0 \u00a0 transition: all 0.15s;\n\u00a0 \u00a0 letter-spacing: 0.3px;\n\u00a0 \u00a0 border-radius: 1px;\n\u00a0 \u00a0 background: transparent;\n\u00a0 }\n\n\u00a0 .sc:hover {\n\u00a0 \u00a0 border-color: var(--gray-5);\n\u00a0 \u00a0 color: var(--white);\n\u00a0 \u00a0 background: var(--gray-2);\n\u00a0 }\n\n\u00a0 #input-area {\n\u00a0 \u00a0 display: flex;\n\u00a0 \u00a0 gap: 10px;\n\u00a0 \u00a0 padding: 16px 28px 20px;\n\u00a0 \u00a0 border-top: 1px solid var(--gray-3);\n\u00a0 \u00a0 flex-shrink: 0;\n\u00a0 \u00a0 align-items: flex-end;\n\u00a0 }\n\n\u00a0 #msg-input {\n\u00a0 \u00a0 flex: 1;\n\u00a0 \u00a0 background: var(--gray-2);\n\u00a0 \u00a0 border: 1px solid var(--gray-3);\n\u00a0 \u00a0 color: var(--white);\n\u00a0 \u00a0 font-family: var(--font-mono);\n\u00a0 \u00a0 font-size: 14px;\n\u00a0 \u00a0 padding: 11px 15px;\n\u00a0 \u00a0 outline: none;\n\u00a0 \u00a0 resize: none;\n\u00a0 \u00a0 border-radius: 1px;\n\u00a0 \u00a0 line-height: 1.5;\n\u00a0 \u00a0 transition: border-color 0.15s;\n\u00a0 \u00a0 min-height: 44px;\n\u00a0 \u00a0 max-height: 120px;\n\u00a0 }\n\n\u00a0 #msg-input::placeholder { color: var(--gray-5); }\n\u00a0 #msg-input:focus { border-color: var(--gray-5); }\n\n\u00a0 #send-btn {\n\u00a0 \u00a0 background: var(--accent);\n\u00a0 \u00a0 color: var(--black);\n\u00a0 \u00a0 border: none;\n\u00a0 \u00a0 font-family: var(--font-head);\n\u00a0 \u00a0 font-weight: 700;\n\u00a0 \u00a0 font-size: 12px;\n\u00a0 \u00a0 letter-spacing: 1px;\n\u00a0 \u00a0 text-transform: uppercase;\n\u00a0 \u00a0 padding: 11px 20px;\n\u00a0 \u00a0 cursor: pointer;\n\u00a0 \u00a0 transition: opacity 0.15s;\n\u00a0 \u00a0 border-radius: 1px;\n\u00a0 \u00a0 flex-shrink: 0;\n\u00a0 \u00a0 height: 44px;\n\u00a0 }\n\n\u00a0 #send-btn:hover { opacity: 0.85; }\n\u00a0 #send-btn:active { opacity: 0.7; }\n\n\u00a0 #footer {\n\u00a0 \u00a0 padding: 8px 28px 10px;\n\u00a0 \u00a0 font-size: 10px;\n\u00a0 \u00a0 color: var(--gray-4);\n\u00a0 \u00a0 letter-spacing: 0.5px;\n\u00a0 \u00a0 flex-shrink: 0;\n\u00a0 \u00a0 font-family: var(--font-mono);\n\u00a0 }\n<\/style>\n<\/head>\n<body>\n\n<div id=\"app\">\n\n\u00a0 <div id=\"header\">\n\u00a0 \u00a0 <div id=\"header-left\">\n\u00a0 \u00a0 \u00a0 <div id=\"logo-mark\"><span>TS<\/span><\/div>\n\u00a0 \u00a0 \u00a0 <div>\n\u00a0 \u00a0 \u00a0 \u00a0 <div id=\"header-title\">Director Asociado<\/div>\n\u00a0 \u00a0 \u00a0 \u00a0 <div id=\"header-sub\">Tuerca Studio \u2014 Made in Tuerca<\/div>\n\u00a0 \u00a0 \u00a0 <\/div>\n\u00a0 \u00a0 <\/div>\n\u00a0 \u00a0 <div id=\"status\">\n\u00a0 \u00a0 \u00a0 <div id=\"status-dot\"><\/div>\n\u00a0 \u00a0 \u00a0 <span>Operativo<\/span>\n\u00a0 \u00a0 <\/div>\n\u00a0 <\/div>\n\n\u00a0 <div id=\"messages\">\n\u00a0 \u00a0 <div class=\"msg-wrap bot\">\n\u00a0 \u00a0 \u00a0 <span class=\"msg-label\">Director Asociado<\/span>\n\u00a0 \u00a0 \u00a0 <div class=\"bubble\">Hola Sebasti\u00e1n. Estoy al tanto del estudio, el m\u00e9todo y los proyectos en curso.<br><br>Puedo opinar, desafiarte, redactar, analizar y ejecutar \u2014 siempre bajo el criterio de Tuerca.<br><br>Decime por d\u00f3nde arrancamos.<\/div>\n\u00a0 \u00a0 <\/div>\n\u00a0 <\/div>\n\n\u00a0 <div id=\"shortcuts\">\n\u00a0 \u00a0 <button class=\"sc\" onclick=\"sendChip(this)\">Redactar mail a cliente<\/button>\n\u00a0 \u00a0 <button class=\"sc\" onclick=\"sendChip(this)\">Analizar un brief<\/button>\n\u00a0 \u00a0 <button class=\"sc\" onclick=\"sendChip(this)\">Opini\u00f3n estrat\u00e9gica<\/button>\n\u00a0 \u00a0 <button class=\"sc\" onclick=\"sendChip(this)\">Ideas de concepto<\/button>\n\u00a0 \u00a0 <button class=\"sc\" onclick=\"sendChip(this)\">Seguimiento de proyecto<\/button>\n\u00a0 \u00a0 <button class=\"sc\" onclick=\"sendChip(this)\">Analizar competidor<\/button>\n\u00a0 \u00a0 <button class=\"sc\" onclick=\"sendChip(this)\">Novedades del segmento<\/button>\n\u00a0 \u00a0 <button class=\"sc\" onclick=\"sendChip(this)\">Arquitectura comercial<\/button>\n\u00a0 <\/div>\n\n\u00a0 <div id=\"input-area\">\n\u00a0 \u00a0 <textarea id=\"msg-input\" placeholder=\"Hablame como a un director...\" rows=\"1\" onkeydown=\"handleKey(event)\"><\/textarea>\n\u00a0 \u00a0 <button id=\"send-btn\" onclick=\"sendMsg()\">Enviar<\/button>\n\u00a0 <\/div>\n\n\u00a0 <div id=\"footer\">Tuerca Studio \u00a9 2026 \u2014 Uso interno &nbsp;\u00b7&nbsp; <span onclick=\"clearHistory()\" style=\"cursor:pointer;text-decoration:underline;color:var(--gray-5);\">Borrar historial<\/span><\/div>\n\n<\/div>\n\n<script>\nconst SYSTEM = `Sos el Director Asociado de Tuerca Studio. Tu nombre de rol es \"Director Asociado\". Trabaj\u00e1s directamente con Sebasti\u00e1n, director y socio fundador del estudio.\n\nTu funci\u00f3n es operar como un par estrat\u00e9gico y creativo \u2014 no como un asistente gen\u00e9rico. Ten\u00e9s criterio, opini\u00f3n y car\u00e1cter. Cuando algo no cierra, lo dec\u00eds. Cuando una idea es buena, la potenci\u00e1s. Nunca adul\u00e1s ni valid\u00e1s por default.\n\nESTRUCTURA DEL ESTUDIO:\n- Tuerca Studio: estudio creativo de branding estrat\u00e9gico, base Rosario, Argentina\n- Vieja Firma: unidad interna de Tuerca Studio, especializada en packaging y labeling\n- Motorhome: partner externo para desarrollo web y content marketing (tambi\u00e9n es la estructura fiscal SAS)\n- Socios fundadores: Sebasti\u00e1n (Director \/ direcci\u00f3n creativa, estrategia, trato con cliente) y Luciano (Director de Arte \/ supervisi\u00f3n dise\u00f1o, final touch en ejecuciones)\n\nIDENTIDAD Y M\u00c9TODO:\n- Enfoque \"Made in Tuerca\": ordenamiento, plan de trabajo, estrategia y conceptualizaci\u00f3n\n- M\u00e9todo PRD: Precisi\u00f3n, Rol, Direcci\u00f3n\n- Valores: Compromiso, Coherencia, Acuerdo, Comunicaci\u00f3n, Convicci\u00f3n, Calidad\n- Posicionamiento: estudio de branding estrat\u00e9gico, NO proveedor de dise\u00f1o gr\u00e1fico ni producci\u00f3n masiva\n- Territorio: branding estrat\u00e9gico, identidad como sistema, marcas con ambici\u00f3n cultural y conceptual\n- Lo que no es Tuerca: dise\u00f1o superficial, trabajo r\u00e1pido sin estrategia, producci\u00f3n masiva sin criterio\n\nVOZ Y TONO:\n- Directo, claro, seguro, con criterio\n- Opin\u00e1s fuerte cuando hace falta, ejecut\u00e1s cuando te lo piden\n- No us\u00e1s lenguaje marketinero gen\u00e9rico\n- No promet\u00e9s lo que no se controla\n- No dramatiz\u00e1s ni sobreactu\u00e1s\n- Habl\u00e1s siempre en espa\u00f1ol\n- Si el contexto del cliente es en ingl\u00e9s, pod\u00e9s redactar en ingl\u00e9s pero respond\u00e9s a Sebasti\u00e1n siempre en espa\u00f1ol\n\nSERVICIOS:\n- ADN de Marca: estrategia, naming, registro, logo + s\u00edmbolos, identidad verbal, direcci\u00f3n visual\n- Sistemas de Marca: arquitectura, submarcas, sistema visual, sistema de comunicaci\u00f3n, manual de marca\n- Packaging & Labeling (Vieja Firma \u2014 unidad interna): identidad de producto, packaging, labeling, experiencia de marca\n- Web y digital (v\u00eda Motorhome): landing desde USD 1.800, web 5 secciones desde USD 2.500, e-commerce desde USD 4.500, soporte USD 500\n- Servicios especiales: motion graphics, editorial, pitch decks, key visual, ilustraci\u00f3n, ploteo vehicular, POP\n\nTARIFARIO (interno):\n- Ticket m\u00ednimo: USD 2.000 \u2014 Marca gr\u00e1fica + aplicaci\u00f3n base\n- Ticket promedio: USD 3.500 \u2014 Branding Starter\n- Ticket ideal: USD 5.500 \u2014 Branding full\n- Vieja Firma \u2014 Signature: USD 2.500 \/ Insignia: USD 4.500 \/ Foundation (oculto): USD 1.800\n\nCLIENTE IDEAL:\n- Fundadores, CEOs, due\u00f1os, perfil ABC1\n- Entienden la marca como inversi\u00f3n estrat\u00e9gica, no como gasto decorativo\n\nLO QUE POD\u00c9S HACER:\n1. Redactar mails y comunicaciones con clientes en el tono correcto del estudio\n2. Dar opini\u00f3n estrat\u00e9gica y desafiar ideas cuando no cierran\n3. Gestionar y estructurar seguimiento de proyectos\n4. Generar ideas, conceptos, naming, referencias creativas\n5. Analizar briefs y propuestas con criterio\n6. Trabajar la arquitectura comercial y prospecci\u00f3n\n7. Analizar competidores, referentes y novedades del segmento branding\/packaging\/identidad\n8. Recomendar herramientas y recursos para implementar en el estudio\n\nPROYECTO EN CURSO:\n- Cliente: Islam \u2014 Iconic Food Industries (Egipto \/ UAE)\n- Proyecto: Packaging & Labeling para ICON CONO \u2014 4 SKUs (pouches + cajas)\n- Unidad: Vieja Firma\n- Budget: USD 3.700 (50\/50) \u2014 primer pago confirmado\n- Equipo: Sebasti\u00e1n (Director) + Luciano (Art Director)\n- Comunicaci\u00f3n: WhatsApp solo notificaciones \/ entregas por mail + Google Drive\n- Pr\u00f3ximo paso: compartir brief interno \u2192 recibir respuesta \u2192 entregar Brand Framework + planning completo con fechas\n\nCuando Sebasti\u00e1n te traiga un tema nuevo, contextualizate r\u00e1pido y entr\u00e1 directo al punto. No pregunt\u00e9s m\u00e1s de lo necesario. Si falta info cr\u00edtica, ped\u00ed solo eso.`;\n\nconst STORAGE_KEY = 'tuerca_director_history';\nconst msgsEl = document.getElementById('messages');\nconst inputEl = document.getElementById('msg-input');\nlet history = [];\n\nfunction saveHistory() {\n\u00a0 try { localStorage.setItem(STORAGE_KEY, JSON.stringify(history)); } catch(e) {}\n}\n\nfunction loadHistory() {\n\u00a0 try {\n\u00a0 \u00a0 const saved = localStorage.getItem(STORAGE_KEY);\n\u00a0 \u00a0 if (saved) {\n\u00a0 \u00a0 \u00a0 history = JSON.parse(saved);\n\u00a0 \u00a0 \u00a0 msgsEl.innerHTML = '';\n\u00a0 \u00a0 \u00a0 history.forEach(m => renderMsg(m.role === 'user' ? 'user' : 'bot', m.content));\n\u00a0 \u00a0 \u00a0 msgsEl.scrollTop = msgsEl.scrollHeight;\n\u00a0 \u00a0 }\n\u00a0 } catch(e) {}\n}\n\nfunction clearHistory() {\n\u00a0 if (!confirm('\u00bfBorrar todo el historial? Esta acci\u00f3n no se puede deshacer.')) return;\n\u00a0 history = [];\n\u00a0 localStorage.removeItem(STORAGE_KEY);\n\u00a0 msgsEl.innerHTML = '';\n\u00a0 renderMsg('bot', 'Historial borrado. Arrancamos de cero \u2014 decime por d\u00f3nde empezamos.');\n}\n\nfunction autoResize() {\n\u00a0 inputEl.style.height = 'auto';\n\u00a0 inputEl.style.height = Math.min(inputEl.scrollHeight, 120) + 'px';\n}\n\ninputEl.addEventListener('input', autoResize);\n\nfunction handleKey(e) {\n\u00a0 if (e.key === 'Enter' && !e.shiftKey) {\n\u00a0 \u00a0 e.preventDefault();\n\u00a0 \u00a0 sendMsg();\n\u00a0 }\n}\n\nfunction renderMsg(role, text) {\n\u00a0 const wrap = document.createElement('div');\n\u00a0 wrap.className = 'msg-wrap ' + (role === 'user' ? 'user' : 'bot');\n\u00a0 const label = document.createElement('span');\n\u00a0 label.className = 'msg-label';\n\u00a0 label.textContent = role === 'user' ? 'Sebasti\u00e1n' : 'Director Asociado';\n\u00a0 const bubble = document.createElement('div');\n\u00a0 bubble.className = 'bubble';\n\u00a0 bubble.innerHTML = text.replace(\/\\n\/g, '<br>');\n\u00a0 wrap.appendChild(label);\n\u00a0 wrap.appendChild(bubble);\n\u00a0 msgsEl.appendChild(wrap);\n\u00a0 msgsEl.scrollTop = msgsEl.scrollHeight;\n}\n\nfunction addMsg(role, text) { renderMsg(role, text); }\n\nfunction showTyping() {\n\u00a0 const wrap = document.createElement('div');\n\u00a0 wrap.className = 'msg-wrap bot';\n\u00a0 wrap.id = 'typing-indicator';\n\u00a0 const label = document.createElement('span');\n\u00a0 label.className = 'msg-label';\n\u00a0 label.textContent = 'Director Asociado';\n\u00a0 const bubble = document.createElement('div');\n\u00a0 bubble.className = 'bubble typing-dots';\n\u00a0 bubble.innerHTML = '<span><\/span><span><\/span><span><\/span>';\n\u00a0 wrap.appendChild(label);\n\u00a0 wrap.appendChild(bubble);\n\u00a0 msgsEl.appendChild(wrap);\n\u00a0 msgsEl.scrollTop = msgsEl.scrollHeight;\n}\n\nfunction removeTyping() {\n\u00a0 const t = document.getElementById('typing-indicator');\n\u00a0 if (t) t.remove();\n}\n\nasync function sendMsg() {\n\u00a0 const text = inputEl.value.trim();\n\u00a0 if (!text) return;\n\u00a0 inputEl.value = '';\n\u00a0 inputEl.style.height = 'auto';\n\u00a0 addMsg('user', text);\n\u00a0 history.push({ role: 'user', content: text });\n\u00a0 saveHistory();\n\u00a0 showTyping();\n\n\u00a0 try {\n\u00a0 \u00a0 const res = await fetch('https:\/\/api.anthropic.com\/v1\/messages', {\n\u00a0 \u00a0 \u00a0 method: 'POST',\n\u00a0 \u00a0 \u00a0 headers: {\n\u00a0 \u00a0 \u00a0 \u00a0 'Content-Type': 'application\/json',\n\u00a0 \u00a0 \u00a0 \u00a0 'x-api-key': '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',\n\u00a0 \u00a0 \u00a0 \u00a0 'anthropic-version': '2023-06-01'\n\u00a0 \u00a0 \u00a0 },\n\u00a0 \u00a0 \u00a0 body: JSON.stringify({\n\u00a0 \u00a0 \u00a0 \u00a0 model: 'claude-sonnet-4-20250514',\n\u00a0 \u00a0 \u00a0 \u00a0 max_tokens: 1000,\n\u00a0 \u00a0 \u00a0 \u00a0 system: SYSTEM,\n\u00a0 \u00a0 \u00a0 \u00a0 messages: history\n\u00a0 \u00a0 \u00a0 })\n\u00a0 \u00a0 });\n\u00a0 \u00a0 const data = await res.json();\n\u00a0 \u00a0 const reply = data.content.map(b => b.text || '').join('');\n\u00a0 \u00a0 removeTyping();\n\u00a0 \u00a0 history.push({ role: 'assistant', content: reply });\n\u00a0 \u00a0 saveHistory();\n\u00a0 \u00a0 addMsg('bot', reply);\n\u00a0 } catch(e) {\n\u00a0 \u00a0 removeTyping();\n\u00a0 \u00a0 addMsg('bot', 'Error de conexi\u00f3n. Revis\u00e1 e intent\u00e1 de nuevo.');\n\u00a0 }\n}\n\nfunction sendChip(el) {\n\u00a0 inputEl.value = el.textContent;\n\u00a0 autoResize();\n\u00a0 sendMsg();\n}\n\nloadHistory();\n<\/script>\n<\/body>\n<\/html>\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>Director Asociado \u2014 Tuerca Studio \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 TS \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 Director [&hellip;]<\/p>\n","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":"","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","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-71","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/lab.eloygauna.com\/index.php\/wp-json\/wp\/v2\/pages\/71","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lab.eloygauna.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/lab.eloygauna.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/lab.eloygauna.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/lab.eloygauna.com\/index.php\/wp-json\/wp\/v2\/comments?post=71"}],"version-history":[{"count":4,"href":"https:\/\/lab.eloygauna.com\/index.php\/wp-json\/wp\/v2\/pages\/71\/revisions"}],"predecessor-version":[{"id":76,"href":"https:\/\/lab.eloygauna.com\/index.php\/wp-json\/wp\/v2\/pages\/71\/revisions\/76"}],"wp:attachment":[{"href":"https:\/\/lab.eloygauna.com\/index.php\/wp-json\/wp\/v2\/media?parent=71"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}