{"id":3849,"date":"2025-09-16T12:30:23","date_gmt":"2025-09-16T11:30:23","guid":{"rendered":"https:\/\/strattonapps.com\/?page_id=3849"},"modified":"2025-09-16T13:09:49","modified_gmt":"2025-09-16T12:09:49","slug":"rsthomas","status":"publish","type":"page","link":"https:\/\/strattonapps.com\/es\/rsthomas\/","title":{"rendered":"RSThomas"},"content":{"rendered":"<div data-elementor-type=\"wp-page\" data-elementor-id=\"3849\" class=\"elementor elementor-3849\">\n\t\t\t\t\t\t<div class=\"elementor-inner\">\n\t\t\t\t<div class=\"elementor-section-wrap\">\n\t\t\t\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-b1162aa elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"b1162aa\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t\t\t<div class=\"elementor-row\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-485f973\" data-id=\"485f973\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-column-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t<div class=\"elementor-widget-wrap\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-a3ff7b8 elementor-widget elementor-widget-html\" data-id=\"a3ff7b8\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<script>\n(function () {\n  \/\/ --- Anti-reinit ---\n  if (window.floatingChatInitialized) return;\n  window.floatingChatInitialized = true;\n\n  \/\/ ===== Config =====\n  const WEBHOOK_URL = 'https:\/\/primary-production-dbbe.up.railway.app\/webhook\/rsthomas-web';\n  const CHAT_HISTORY_KEY = 'floatingChatHistory';\n  const CHAT_OPEN_KEY = 'floatingChatOpen';\n  const IDs = {\n    button: 'floating-chat-button',\n    window: 'floating-chat-window',\n    body: 'floating-chat-body',\n    input: 'floating-chat-input',\n    sendBtn: 'floating-chat-send',\n    typingIndicator: 'floating-chat-typing-indicator',\n    headerClose: 'floating-chat-close'\n  };\n\n  \/\/ Opcional: define antes en tu HTML para cambiar tema\/posici\u00f3n:\n  \/\/ window.FloatingChatTheme = { primary: '#C8A24F', radius: 12, side: 'right'|'left' }\n  const EXTERNAL_THEME = window.FloatingChatTheme || {};\n\n  \/\/ ===== Helpers =====\n  const $ = (sel) => document.querySelector(sel);\n  let chatBodyEl;\n\n  function hexToRgb(hex) {\n    const m = \/^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$\/i.exec(hex);\n    if (!m) return null;\n    return { r: parseInt(m[1],16), g: parseInt(m[2],16), b: parseInt(m[3],16) };\n  }\n  function clamp(v, min, max) { return Math.min(max, Math.max(min, v)); }\n  function lighten(hex, pct = 10) {\n    const rgb = hexToRgb(hex); if (!rgb) return hex;\n    const k = pct\/100;\n    const r = clamp(Math.round(rgb.r + (255 - rgb.r)*k), 0, 255);\n    const g = clamp(Math.round(rgb.g + (255 - rgb.g)*k), 0, 255);\n    const b = clamp(Math.round(rgb.b + (255 - rgb.b)*k), 0, 255);\n    return `rgb(${r}, ${g}, ${b})`;\n  }\n  function darken(hex, pct = 12) {\n    const rgb = hexToRgb(hex); if (!rgb) return hex;\n    const k = pct\/100;\n    const r = clamp(Math.round(rgb.r*(1-k)), 0, 255);\n    const g = clamp(Math.round(rgb.g*(1-k)), 0, 255);\n    const b = clamp(Math.round(rgb.b*(1-k)), 0, 255);\n    return `rgb(${r}, ${g}, ${b})`;\n  }\n\n  function addMessageToUI(type, content, isHtml = false) {\n    if (!chatBodyEl) return;\n    const bubble = document.createElement('div');\n    bubble.className = type === 'user' ? 'user-bubble' : 'server-bubble';\n    if (isHtml && type === 'server') bubble.innerHTML = content;\n    else bubble.textContent = content;\n    chatBodyEl.appendChild(bubble);\n    chatBodyEl.scrollTop = chatBodyEl.scrollHeight;\n  }\n\n  function saveMessageToHistory(type, content, isHtml = false) {\n    try {\n      const history = JSON.parse(localStorage.getItem(CHAT_HISTORY_KEY)) || [];\n      history.push({ type, content, isHtml, ts: Date.now() });\n      localStorage.setItem(CHAT_HISTORY_KEY, JSON.stringify(history));\n    } catch(e){}\n  }\n\n  function loadChatHistory() {\n    if (!chatBodyEl) return;\n    try {\n      const history = JSON.parse(localStorage.getItem(CHAT_HISTORY_KEY));\n      if (Array.isArray(history)) history.forEach(m => addMessageToUI(m.type, m.content, m.isHtml));\n    } catch(e){}\n  }\n\n  function showTypingIndicator() {\n    if (!chatBodyEl || document.getElementById(IDs.typingIndicator)) return;\n    const el = document.createElement('div');\n    el.id = IDs.typingIndicator;\n    el.className = 'server-bubble typing-indicator';\n    el.innerHTML = `<span><\/span><span><\/span><span><\/span>`;\n    chatBodyEl.appendChild(el);\n    chatBodyEl.scrollTop = chatBodyEl.scrollHeight;\n  }\n  function hideTypingIndicator() {\n    const el = document.getElementById(IDs.typingIndicator);\n    if (el) el.remove();\n  }\n\n  \/\/ ===== Init =====\n  function init() {\n    if (document.getElementById(IDs.button)) return;\n\n    \/\/ Dorado elegante por defecto; ajusta con window.FloatingChatTheme.primary\n    const brand = EXTERNAL_THEME.primary || '#C8A24F'; \/\/ dorado sobrio\n    const brandHover = darken(brand, 10);\n    const brandSoft  = lighten(brand, 38);\n    const radius = Number.isFinite(EXTERNAL_THEME.radius) ? EXTERNAL_THEME.radius : 12;\n    const side = (EXTERNAL_THEME.side === 'left') ? 'left' : 'right';\n\n    \/\/ --- Styles ---\n    const style = document.createElement('style');\n    style.textContent = `\n      :root {\n        --chat-accent: ${brand};\n        --chat-accent-hover: ${brandHover};\n        --chat-accent-soft: ${brandSoft};\n        --chat-font: inherit;\n        --chat-bg: #ffffff;\n        --chat-text: #1f1f1f;\n        --chat-muted: #666666;\n        --chat-border: #e9e9e9;\n        --chat-border-strong: #dddddd;\n        --chat-radius: ${radius}px;\n        --chat-z: 10000;\n      }\n      @media (prefers-color-scheme: dark) {\n        :root {\n          --chat-bg: #0f0f0f;\n          --chat-text: #efefef;\n          --chat-muted: #bdbdbd;\n          --chat-border: #2a2a2a;\n          --chat-border-strong: #3a3a3a;\n        }\n      }\n\n      #${IDs.button}, #${IDs.window}, #${IDs.input}, #${IDs.sendBtn} { font-family: var(--chat-font); }\n\n      \/* FAB minimalista en dorado *\/\n      #${IDs.button} {\n        position: fixed;\n        bottom: 20px; ${side}: 20px; ${side === 'right' ? 'left:auto' : 'right:auto'};\n        width: 58px; height: 58px;\n        border-radius: 50%;\n        background: var(--chat-accent);\n        color: #fff;\n        display: inline-flex; align-items: center; justify-content: center;\n        border: none; cursor: pointer; outline: none;\n        box-shadow: 0 8px 24px rgba(0,0,0,.12);\n        transition: transform .15s ease, box-shadow .15s ease, background-color .15s ease;\n        z-index: var(--chat-z);\n      }\n      #${IDs.button}:hover { background: var(--chat-accent-hover); transform: translateY(-1px); box-shadow: 0 10px 28px rgba(0,0,0,.16); }\n      #${IDs.button}:active { transform: translateY(0); }\n      #${IDs.button}:focus-visible { outline: 2px solid var(--chat-accent-soft); outline-offset: 3px; }\n      #${IDs.button} svg { width: 28px; height: 28px; fill: currentColor; }\n\n      \/* Ventana *\/\n      #${IDs.window} {\n        position: fixed; bottom: 90px; ${side}: 20px; ${side === 'right' ? 'left:auto' : 'right:auto'};\n        width: 360px; max-height: 600px;\n        background: var(--chat-bg);\n        color: var(--chat-text);\n        border: 1px solid var(--chat-border);\n        border-radius: var(--chat-radius);\n        box-shadow: 0 16px 40px rgba(0,0,0,.16);\n        display: none; flex-direction: column; overflow: hidden;\n        z-index: calc(var(--chat-z) - 1);\n      }\n      #${IDs.window}[data-open=\"true\"] { display: flex; }\n\n      #${IDs.window} header {\n        display: flex; align-items: center; justify-content: space-between;\n        padding: 14px 16px;\n        font-size: 15px; font-weight: 700; letter-spacing: .01em;\n        color: var(--chat-text);\n        border-bottom: 1px solid var(--chat-border);\n        background:\n          linear-gradient(180deg, rgba(0,0,0,.00), rgba(0,0,0,.00)) padding-box,\n          linear-gradient(90deg, var(--chat-accent) 0%, var(--chat-accent-soft) 100%) border-box;\n        border-bottom: 1px solid rgba(0,0,0,0); \/* cubierto por gradient de borde *\/\n      }\n      #${IDs.window} header span { display:flex; align-items:center; gap:8px; }\n      #${IDs.window} header span::before {\n        content: \"\"; width: 8px; height: 8px; border-radius: 50%; background: var(--chat-accent);\n        box-shadow: 0 0 0 3px color-mix(in oklab, var(--chat-accent) 25%, #fff);\n      }\n      #${IDs.window} header button {\n        border: none; background: transparent; cursor: pointer; padding: 6px; border-radius: 8px; color: var(--chat-muted);\n      }\n      #${IDs.window} header button:hover { background: rgba(0,0,0,.04); color: var(--chat-text); }\n      @media (prefers-color-scheme: dark) {\n        #${IDs.window} header button:hover { background: rgba(255,255,255,.06); }\n      }\n\n      #${IDs.body} { flex: 1; padding: 14px; overflow-y: auto; background: var(--chat-bg); }\n\n      \/* Burbujas sobrias: usuario dorado s\u00f3lido, servidor blanco con borde *\/\n      #${IDs.body} .user-bubble {\n        background: var(--chat-accent);\n        color: #fff;\n        padding: 10px 13px;\n        border-radius: 14px 14px 6px 14px;\n        max-width: 82%;\n        margin: 10px 0; float: right; clear: both;\n        font-size: 14px; line-height: 1.5; word-wrap: break-word; white-space: pre-wrap;\n        box-shadow: 0 6px 18px rgba(0,0,0,.08);\n      }\n      #${IDs.body} .server-bubble {\n        background: #fff;\n        color: var(--chat-text);\n        padding: 10px 13px;\n        border-radius: 14px 14px 14px 6px;\n        max-width: 82%;\n        margin: 10px 0; float: left; clear: both;\n        font-size: 14px; line-height: 1.6; word-wrap: break-word; white-space: pre-wrap;\n        border: 1px solid var(--chat-border-strong);\n        box-shadow: 0 4px 14px rgba(0,0,0,.04);\n      }\n      @media (prefers-color-scheme: dark) {\n        #${IDs.body} .server-bubble { background: #111; border-color: var(--chat-border); }\n      }\n      #${IDs.body} .server-bubble a { color: var(--chat-accent); text-decoration: underline; font-weight: 600; }\n\n      .typing-indicator { display:inline-flex; align-items:center; padding: 10px 13px; gap:4px; border:1px solid var(--chat-border); border-radius: 12px; }\n      .typing-indicator span { width:7px; height:7px; background:#bdbdbd; border-radius:50%; display:inline-block; animation: fc-bounce 1.2s infinite ease-in-out both; }\n      .typing-indicator span:nth-child(1){ animation-delay: -0.32s; }\n      .typing-indicator span:nth-child(2){ animation-delay: -0.16s; }\n      @keyframes fc-bounce { 0%,80%,100%{ transform: scale(0); } 40%{ transform: scale(1); } }\n\n      .chat-input-container { display:flex; gap:10px; padding:12px; border-top:1px solid var(--chat-border); background: var(--chat-bg); }\n      #${IDs.input} {\n        flex:1; padding:10px 12px; font-size:14px; line-height:1.45;\n        border: 1px solid var(--chat-border-strong);\n        border-radius: 8px; outline: none; resize: none; min-height: 40px; max-height: 120px;\n        background: #fff; color: var(--chat-text);\n      }\n      #${IDs.input}:focus { border-color: var(--chat-accent); box-shadow: 0 0 0 3px color-mix(in oklab, var(--chat-accent) 30%, #fff); }\n      @media (prefers-color-scheme: dark) {\n        #${IDs.input} { background:#0f0f0f; }\n      }\n      #${IDs.sendBtn} {\n        padding: 0 16px; min-width: 92px; height: 40px;\n        background: var(--chat-accent); color:#fff; border:none; border-radius: 8px;\n        cursor: pointer; font-weight: 700; font-size: 13px; letter-spacing:.02em; text-transform: uppercase;\n        transition: background .12s ease, transform .05s ease;\n        box-shadow: 0 6px 18px rgba(0,0,0,.08);\n      }\n      #${IDs.sendBtn}:hover { background: var(--chat-accent-hover); }\n      #${IDs.sendBtn}:active { transform: translateY(1px); }\n      #${IDs.sendBtn}:disabled { opacity:.6; cursor:not-allowed; }\n\n      @media (max-width: 600px) {\n        #${IDs.button} { width: 56px; height: 56px; bottom:16px; ${side}: 16px; }\n        #${IDs.window} { width: calc(100% - 32px); height: min(75vh, 560px); ${side}: 16px; bottom: 82px; }\n      }\n      @media (prefers-reduced-motion: reduce) {\n        #${IDs.button}, #${IDs.sendBtn}, .typing-indicator span { transition: none !important; animation: none !important; }\n      }\n    `;\n    document.head.appendChild(style);\n\n    \/\/ --- Button ---\n    const btn = document.createElement('button');\n    btn.id = IDs.button;\n    btn.type = 'button';\n    btn.setAttribute('aria-label', 'Abrir chat');\n    btn.innerHTML = `\n      <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n        <path d=\"M20 2H4a2 2 0 0 0-2 2v18l4-4h14a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2zm-2 9H6v-2h12v2zm0-4H6V5h12v2zm-6 8H6v-2h6v2z\"\/>\n      <\/svg>`;\n    document.body.appendChild(btn);\n\n    \/\/ --- Window ---\n    const win = document.createElement('div');\n    win.id = IDs.window;\n    win.setAttribute('role', 'log');\n    win.setAttribute('aria-live', 'polite');\n    win.innerHTML = `\n      <header>\n        <span>Contacta con nosotros<\/span>\n        <button id=\"${IDs.headerClose}\" aria-label=\"Cerrar chat\" title=\"Cerrar\">\n          <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n            <path d=\"M18 6L6 18M6 6l12 12\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\/>\n          <\/svg>\n        <\/button>\n      <\/header>\n      <div id=\"${IDs.body}\"><\/div>\n      <div class=\"chat-input-container\">\n        <textarea id=\"${IDs.input}\" rows=\"1\" placeholder=\"Escribe tu mensaje\u2026\" autocomplete=\"off\" aria-label=\"Mensaje a enviar\"><\/textarea>\n        <button id=\"${IDs.sendBtn}\" type=\"button\" aria-label=\"Enviar mensaje\">Enviar<\/button>\n      <\/div>\n    `;\n    document.body.appendChild(win);\n\n    chatBodyEl = document.getElementById(IDs.body);\n    const inputEl = document.getElementById(IDs.input);\n    const sendBtn = document.getElementById(IDs.sendBtn);\n    const closeBtn = document.getElementById(IDs.headerClose);\n    if (!chatBodyEl || !inputEl || !sendBtn || !btn) return;\n\n    \/\/ Persistencia abierto\/cerrado\n    const persistedOpen = localStorage.getItem(CHAT_OPEN_KEY) === '1';\n    if (persistedOpen) win.setAttribute('data-open', 'true');\n\n    loadChatHistory();\n\n    function openWin() {\n      win.setAttribute('data-open', 'true');\n      btn.setAttribute('aria-label', 'Cerrar chat');\n      localStorage.setItem(CHAT_OPEN_KEY, '1');\n      inputEl.focus();\n      chatBodyEl.scrollTop = chatBodyEl.scrollHeight;\n    }\n    function closeWin() {\n      win.removeAttribute('data-open');\n      btn.setAttribute('aria-label', 'Abrir chat');\n      localStorage.setItem(CHAT_OPEN_KEY, '0');\n    }\n\n    btn.addEventListener('click', () => {\n      const isOpen = win.getAttribute('data-open') === 'true';\n      isOpen ? closeWin() : openWin();\n    });\n    closeBtn.addEventListener('click', closeWin);\n\n    document.addEventListener('keydown', (e) => {\n      if (e.key === 'Escape' && win.getAttribute('data-open') === 'true') closeWin();\n    });\n\n    \/\/ Auto-resize textarea\n    function autoresize() {\n      inputEl.style.height = 'auto';\n      inputEl.style.height = Math.min(inputEl.scrollHeight, 120) + 'px';\n    }\n    inputEl.addEventListener('input', autoresize); autoresize();\n\n    async function sendMessage() {\n      const msg = inputEl.value.trim();\n      if (!msg) return;\n\n      addMessageToUI('user', msg);\n      saveMessageToHistory('user', msg);\n      inputEl.value = ''; autoresize(); inputEl.focus();\n\n      showTypingIndicator();\n\n      try {\n        const payload = { message: msg, timestamp: new Date().toISOString(), url: window.location.href };\n        const response = await fetch(WEBHOOK_URL, {\n          method: 'POST',\n          headers: { 'Content-Type': 'application\/json' },\n          body: JSON.stringify(payload),\n          credentials: 'omit',\n          cache: 'no-store'\n        });\n\n        hideTypingIndicator();\n\n        if (!response.ok) {\n          const errorText = await response.text().catch(() => '');\n          throw new Error(`Error del servidor: ${response.status}. ${errorText}`);\n        }\n\n        const ct = response.headers.get('content-type') || '';\n        if (ct.includes('application\/json')) {\n          const data = await response.json();\n          const serverMsg = data && data.responseMessage ? data.responseMessage : 'Respuesta inesperada del servidor.';\n          addMessageToUI('server', serverMsg, true);\n          saveMessageToHistory('server', serverMsg, true);\n        } else {\n          const textData = await response.text();\n          addMessageToUI('server', textData);\n          saveMessageToHistory('server', textData);\n        }\n      } catch (err) {\n        hideTypingIndicator();\n        const errorMsg = String(err && err.message || '').toLowerCase().includes('failed to fetch')\n          ? 'Error de red. No se pudo conectar con el servidor.'\n          : 'Error al enviar mensaje. Intenta de nuevo.';\n        addMessageToUI('server', errorMsg);\n        saveMessageToHistory('server', errorMsg);\n      }\n    }\n\n    sendBtn.addEventListener('click', sendMessage);\n    inputEl.addEventListener('keydown', (e) => {\n      if (e.key === 'Enter' && !e.shiftKey) { e.preventDefault(); sendMessage(); }\n    });\n  }\n\n  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', init);\n  else init();\n})();\n<\/script>\n\n\n<!-- Fuente open parecida a Sofia Pro -->\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Nunito:wght@400;600;700&display=swap\" rel=\"stylesheet\">\n\n<style>\n  \/* === Tema RS Thomas (ajusta el HEX si quieres el oro exacto) === *\/\n  :root{\n    --chat-accent: #C9A257;              \/* oro sobrio; cambia aqu\u00ed si tienes el exacto *\/\n    --chat-accent-hover: #b08c3f;        \/* hover m\u00e1s oscuro *\/\n    --chat-accent-soft: #e8d7a5;         \/* tono suave para detalles *\/\n    --chat-font: \"Nunito\", -apple-system, BlinkMacSystemFont, \"Segoe UI\",\n                 Roboto, \"Helvetica Neue\", Arial, sans-serif;\n\n    \/* Forzar look blanco siempre *\/\n    --chat-bg: #ffffff;\n    --chat-text: #1a1a1a;\n    --chat-muted: #6b6b6b;\n    --chat-border: #e9e9e9;\n    --chat-border-strong: #dddddd;\n  }\n  @media (prefers-color-scheme: dark){\n    :root{\n      --chat-bg: #ffffff !important;\n      --chat-text: #1a1a1a !important;\n      --chat-muted: #6b6b6b !important;\n      --chat-border: #e9e9e9 !important;\n      --chat-border-strong: #dddddd !important;\n    }\n  }\n\n  \/* === Fondo SIEMPRE blanco en contenedores clave === *\/\n  #floating-chat-window,\n  #floating-chat-body,\n  .chat-input-container{\n    background: #ffffff !important;\n    color: var(--chat-text) !important;\n  }\n\n  \/* === Header limpio, sin degradados, con l\u00ednea dorada elegante === *\/\n  #floating-chat-window header{\n    background: #ffffff !important;\n    color: var(--chat-text) !important;\n    border: 0 !important;\n    border-bottom: 2px solid var(--chat-accent) !important;\n    font-weight: 700 !important;\n    font-size: 16px !important;\n    letter-spacing: .01em;\n  }\n  #floating-chat-window header button{\n    color: var(--chat-muted) !important;\n  }\n  #floating-chat-window header button:hover{\n    background: rgba(0,0,0,.04) !important;\n    color: var(--chat-text) !important;\n  }\n\n  \/* === Burbujas: bot blanco con borde fino; usuario oro s\u00f3lido === *\/\n  #floating-chat-body .server-bubble{\n    background: #ffffff !important;\n    color: var(--chat-text) !important;\n    border: 1px solid var(--chat-border-strong) !important;\n    border-radius: 16px !important;\n    box-shadow: 0 6px 16px rgba(0,0,0,.05) !important;\n    line-height: 1.55 !important;\n  }\n  #floating-chat-body .server-bubble a{\n    color: var(--chat-accent) !important;\n    text-decoration: underline;\n    font-weight: 600;\n  }\n  #floating-chat-body .user-bubble{\n    background: var(--chat-accent) !important;\n    color: #ffffff !important;\n    border-radius: 16px !important;\n    box-shadow: 0 8px 20px rgba(0,0,0,.10) !important;\n    font-weight: 600;\n  }\n\n  \/* === Input y bot\u00f3n enviar como CTA dorado de la web === *\/\n  #floating-chat-input{\n    background: #ffffff !important;\n    color: var(--chat-text) !important;\n    border: 1px solid var(--chat-border-strong) !important;\n    border-radius: 10px !important;\n    font-size: 14px !important;\n  }\n  #floating-chat-input:focus{\n    border-color: var(--chat-accent) !important;\n    box-shadow: 0 0 0 3px rgba(201,162,87,.25) !important; \/* halo dorado suave *\/\n  }\n  #floating-chat-send{\n    background: var(--chat-accent) !important;\n    color: #fff !important;\n    border: none !important;\n    border-radius: 10px !important;\n    font-weight: 800 !important;\n    letter-spacing: .02em !important;\n    text-transform: uppercase !important;\n  }\n  #floating-chat-send:hover{ background: var(--chat-accent-hover) !important; }\n\n  \/* === Bot\u00f3n flotante en dorado === *\/\n  #floating-chat-button{\n    background: var(--chat-accent) !important;\n    color: #fff !important;\n    box-shadow: 0 8px 24px rgba(0,0,0,.12) !important;\n  }\n  #floating-chat-button:hover{ background: var(--chat-accent-hover) !important; }\n\n  \/* === Indicador de escritura acorde al tema claro === *\/\n  .typing-indicator{\n    background: #ffffff !important;\n    border: 1px solid var(--chat-border) !important;\n    border-radius: 12px !important;\n  }\n<\/style>\n\n<style>\n  \/* === Esquinas 100% puntiagudas en toda la UI === *\/\n  :root{ --chat-radius: 0px !important; }\n\n  #floating-chat-window,\n  #floating-chat-window header,\n  #floating-chat-body,\n  #floating-chat-body .user-bubble,\n  #floating-chat-body .server-bubble,\n  .chat-input-container,\n  #floating-chat-input,\n  #floating-chat-send,\n  #floating-chat-button,\n  .typing-indicator{\n    border-radius: 0 !important;\n  }\n\n  \/* === ENVIAR en negro (hover ligeramente m\u00e1s claro) === *\/\n  #floating-chat-send{\n    background: #000 !important;\n    color: #fff !important;\n    border: 1px solid #000 !important;\n    box-shadow: none !important;\n  }\n  #floating-chat-send:hover{\n    background: #111 !important;\n    border-color: #111 !important;\n  }\n<\/style>\n\n<style>\n  \/* --- Sin sombras en globos y botones --- *\/\n  #floating-chat-body .user-bubble,\n  #floating-chat-body .server-bubble,\n  #floating-chat-send,\n  #floating-chat-button{\n    box-shadow: none !important;\n  }\n\n  \/* --- Burbujas con redondeo leve --- *\/\n  #floating-chat-body .user-bubble,\n  #floating-chat-body .server-bubble{\n    border-radius: 6px !important;   \/* ajusta 4\u20138px a tu gusto *\/\n  }\n\n  \/* --- Bot\u00f3n ENVIAR: negro, sin negrita --- *\/\n  #floating-chat-send{\n    background: #000 !important;\n    color: #fff !important;\n    border: 1px solid #000 !important;\n    font-weight: 400 !important;     \/* sin negrita *\/\n  }\n  #floating-chat-send:hover{\n    background: #111 !important;\n    border-color: #111 !important;\n  }\n\n  \/* --- Colocar ENVIAR centrado debajo del input --- *\/\n  .chat-input-container{\n    display: flex !important;\n    flex-direction: row !important;\n    align-items: center !important;\n    gap: 10px !important;\n  }\n  #floating-chat-input{\n    width: 100% !important;\n  }\n  #floating-chat-send{\n    align-self: center !important;\n    margin: 0 auto !important;\n    padding-inline: 24px !important;\n    height: 42px !important;\n  }\n<\/style>\n\n\n\n\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t\t\t\t<\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":[],"_links":{"self":[{"href":"https:\/\/strattonapps.com\/es\/wp-json\/wp\/v2\/pages\/3849"}],"collection":[{"href":"https:\/\/strattonapps.com\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/strattonapps.com\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/strattonapps.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/strattonapps.com\/es\/wp-json\/wp\/v2\/comments?post=3849"}],"version-history":[{"count":49,"href":"https:\/\/strattonapps.com\/es\/wp-json\/wp\/v2\/pages\/3849\/revisions"}],"predecessor-version":[{"id":3899,"href":"https:\/\/strattonapps.com\/es\/wp-json\/wp\/v2\/pages\/3849\/revisions\/3899"}],"wp:attachment":[{"href":"https:\/\/strattonapps.com\/es\/wp-json\/wp\/v2\/media?parent=3849"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}