*{box-sizing:border-box;margin:0;padding:0}:root{--verde:#0a8f6b;--verde-osc:#086d52;--gris:#f4f5f7;--texto:#1b2733;--burbuja-bot:#ffffff;--burbuja-user:#d8f3ea}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;color:var(--texto);overflow:hidden}.app,body{background:var(--gris);height:100dvh}.app{display:flex;flex-direction:column;max-width:560px;margin:0 auto}.header{display:flex;align-items:center;gap:12px;padding:14px 18px;background:var(--verde);color:#fff;flex-shrink:0}.avatar{width:42px;height:42px;border-radius:50%;background:#fff;color:var(--verde);display:grid;place-items:center;font-weight:700;font-size:18px}.header h1{font-size:16px;line-height:1.2}.header span{font-size:12px;opacity:.85}.messages{flex:1 1;overflow-y:auto;padding:18px 14px;flex-direction:column;gap:10px}.messages,.row{display:flex}.row.user{justify-content:flex-end}.bubble{max-width:82%;padding:10px 13px;border-radius:16px;font-size:15px;line-height:1.45;white-space:pre-wrap;word-wrap:break-word;box-shadow:0 1px 1px rgba(0,0,0,.06)}.bubble.bot{background:var(--burbuja-bot);border-bottom-left-radius:4px}.bubble.user{background:var(--burbuja-user);border-bottom-right-radius:4px}.typing{display:inline-flex;gap:4px;align-items:center}.typing span{width:7px;height:7px;border-radius:50%;background:#9aa6b2;animation:blink 1.4s infinite both}.typing span:nth-child(2){animation-delay:.2s}.typing span:nth-child(3){animation-delay:.4s}@keyframes blink{0%,80%,to{opacity:.3}40%{opacity:1}}.composer{display:flex;gap:8px;padding:12px;background:#fff;border-top:1px solid #e4e8ec;flex-shrink:0}.composer textarea{flex:1 1;resize:none;border:1px solid #d3d9df;border-radius:22px;padding:10px 16px;font-size:15px;font-family:inherit;max-height:120px;outline:none}.composer textarea:focus{border-color:var(--verde)}.composer button{border:none;background:var(--verde);color:#fff;border-radius:50%;width:44px;height:44px;font-size:18px;cursor:pointer;flex-shrink:0;transition:background .15s}.composer button:hover:not(:disabled){background:var(--verde-osc)}.composer button:disabled{opacity:.5;cursor:not-allowed}.error{text-align:center;font-size:13px;color:#b00020;padding:4px}