Pantalla de referencia del chat sin sheet: header (status bar "10:00" + volver y carrito), el mensaje del usuario "Quiero ver vuelos a Madrid" y el input ("Escribe tu consulta..." + TyC). En Figma, a la izquierda de este frame hay una regla de alturas que no forma parte del snippet: una barra vertical (Rectangle 1502, 10×673px, fill #130BFD) que va del borde inferior del header (y=80) al final del chat (y=753), con líneas guía horizontales hasta el borde derecho del CHAT y textos Roboto Mono Medium 16/20: 100% en y=80 (673px de alto), 75% en y=248 (505px), 50% en y≈416.5 (336.5px) y 25% en y=575 (178px). Las posiciones se miden desde el borde superior del CHAT y los altos desde el borde inferior.
Notas de implementación
Shell .sofia-chat: columna flex que ocupa todo el contenedor (width/height 100%), con header (80px) e input (108px) fijos y .sofia-chat__body scrolleable en el medio. El primer turno arranca a 24px del header (--sofia-bs-turn-gap; userDialogue en y=104). Se revisaron las piezas de sofia-components-library (header/index.html, sofia-input/index.html, user-dialog/index.html) y no coinciden con estas instancias: el status bar tiene padding 4/8 e íconos dibujados a mano, el input usa padding 6/12 y TyC 8/16/4, y el user-dialog usa una flecha poligonal propia y un avatar de 30px. Por eso se implementaron desde get_design_context de este archivo, con scope .sofia-chat. Header: .statusBar de 24px con padding 4/16 y hora en Google Sans Flex Regular 12/14 rgba(0,0,0,.54) (como en Figma); los 3 íconos de sistema son assets de Figma (assets/icons/chat-status-*.svg, 14×14) porque EVA no los tiene. App bar con padding 16: volver = eva-3-icon-arrow-bold-left y carrito = eva-3-icon-trolley (Icon container Md, 24px, Neutral-800). Burbuja: Neutral-100, padding 16, radio 16, texto Body M (Rubik 14/20) alineado a la derecha, con la cola de Figma (assets/img/chat-dialog-tail.svg) rotada 90°. Avatar: EVA eva-3-avatar -image -md con ajuste mínimo a 28px (EVA -md mide 30px) y la foto de Figma (assets/img/chat-user-avatar.png). Input: menú 52×52 (borde Neutral-400, radio 24, eva-3-icon-list a 20px), un pill de 52px con <input> y botón de micrófono EVA eva-3-btn -md -link -circle (36×36, eva-3-icon-microphone a 16px). Ajuste mínimo: el ícono va en Neutral-800 como en Figma (EVA -link lo pinta Brand/Primary-500). La sombra sticky (0 −4 8) va en la fila del input, y TyC Rubik 10/12 tiene el link "términos y condiciones." en Medium #4300D2. Figma devuelve como asset del micrófono el placeholder genérico del Icon container; se usa el glifo EVA microphone, que es el que se ve en el render. Los tokens --sofia-bs-header-height (101px) y --sofia-bs-input-area-height (124px) del MD no coinciden con estos frames (80 y 108px) y no se usan. Render: los textos Body M (Rubik 14/20: burbuja y placeholder del input) quedan ~1px más arriba que en Figma con la caja de texto en la misma posición (redondeo del half-leading de Rubik en Chrome); no se compensa con padding.
<div class="sofia-chat">
<header class="sofia-chat__header">
<div class="sofia-chat__status-bar" aria-hidden="true">
<p class="sofia-chat__time">10:00</p>
<div class="sofia-chat__status-icons">
<img src="assets/icons/chat-status-signal.svg" width="14" height="14" alt="">
<span class="sofia-chat__status-group">
<img src="assets/icons/chat-status-wifi.svg" width="14" height="14" alt="">
<img src="assets/icons/chat-status-battery.svg" width="14" height="14" alt="">
</span>
</div>
</div>
<div class="sofia-chat__app-bar">
<div class="sofia-chat__app-bar-start">
<button type="button" class="sofia-chat__icon-btn" aria-label="Volver"><i class="eva-3-icon-arrow-bold-left" aria-hidden="true"></i></button>
</div>
<button type="button" class="sofia-chat__icon-btn" aria-label="Ver carrito"><i class="eva-3-icon-trolley" aria-hidden="true"></i></button>
</div>
</header>
<div class="sofia-chat__body">
<div class="sofia-chat__dialog">
<div class="sofia-chat__dialog-message">
<div class="sofia-chat__bubble">
<p class="sofia-chat__bubble-text">Quiero ver vuelos a Madrid</p>
</div>
<span class="sofia-chat__bubble-tail" aria-hidden="true"><span class="sofia-chat__bubble-tail-box"><span class="sofia-chat__bubble-tail-shape"><img src="assets/img/chat-dialog-tail.svg" width="10.3923" height="8.25" alt=""></span></span></span>
</div>
<div class="sofia-chat__avatar">
<div class="eva-3-avatar -image -md">
<img class="avatar-image" src="assets/img/chat-user-avatar.png" alt="Avatar del usuario">
</div>
</div>
</div>
</div>
<div class="sofia-chat__input">
<div class="sofia-chat__input-row">
<button type="button" class="sofia-chat__menu" aria-label="Abrir menú"><i class="eva-3-icon-list" aria-hidden="true"></i></button>
<div class="sofia-chat__field-wrap">
<input type="text" class="sofia-chat__field" placeholder="Escribe tu consulta..." aria-label="Escribe tu consulta">
<button type="button" class="eva-3-btn -md -link -circle sofia-chat__mic" aria-label="Dictar por voz"><i class="eva-3-icon-microphone btn-icon" aria-hidden="true"></i></button>
</div>
</div>
<div class="sofia-chat__terms">
<p class="sofia-chat__terms-text">Las respuestas del chat son generadas automáticamente y pueden contener errores. Antes de utilizarlo, lee los <a class="sofia-chat__terms-link" href="#">términos y condiciones.</a></p>
</div>
</div>
</div>
CSS requerido
EVA (CDN): eva-core.min.css + eva.min.cssRubik (Google Fonts)css/tokens.csscss/base.csscss/components/bs-chat.css