*{box-sizing:border-box}html,body,#root{color:#222;height:100%;margin:0;padding:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.app{background:linear-gradient(135deg,#f7f5f0,#e8efe5);justify-content:center;align-items:center;min-height:100vh;padding:16px;display:flex}.card{background:#fff;border-radius:16px;flex-direction:column;width:100%;max-width:720px;height:min(90vh,900px);display:flex;overflow:hidden;box-shadow:0 10px 40px #00000014}.header{color:#fff;background:#2c5f4e;border-bottom:1px solid #eee;padding:20px 24px}.header h1{margin:0;font-size:1.25rem;font-weight:700}.header p{opacity:.85;margin:4px 0 0;font-size:.85rem}.chat{flex-direction:column;flex:1;min-height:0;display:flex}.messages{background:#fafafa;flex-direction:column;flex:1;gap:12px;padding:20px;display:flex;overflow-y:auto}.empty{color:#888;text-align:center;margin:auto;font-size:.95rem}.bubble-row{display:flex}.bubble-row.user{justify-content:flex-end}.bubble-row.bot{justify-content:flex-start}.bubble{word-wrap:break-word;border-radius:14px;max-width:80%;padding:10px 14px;font-size:.95rem;line-height:1.5}.bubble.user{color:#fff;background:#2c5f4e;border-bottom-right-radius:4px}.bubble.bot{color:#222;background:#fff;border:1px solid #e5e5e5;border-bottom-left-radius:4px}.bubble.bot p{margin:0 0 8px}.bubble.bot p:last-child{margin-bottom:0}.bubble.bot ol,.bubble.bot ul{margin:4px 0;padding-left:20px}.bubble.bot a{color:#2c5f4e}.bubble.bot table{border-collapse:collapse;width:100%;margin:8px 0;font-size:.85rem}.bubble.bot th,.bubble.bot td{text-align:left;border:1px solid #e0e0e0;padding:6px 10px}.bubble.bot th{background:#f5f5f5;font-weight:600}.bubble.bot tr:nth-child(2n){background:#fafafa}.composer{background:#fff;border-top:1px solid #eee;gap:8px;padding:12px;display:flex}.composer input{border:1px solid #ddd;border-radius:20px;outline:none;flex:1;padding:10px 14px;font-size:.95rem}.composer input:focus{border-color:#2c5f4e}.composer button{color:#fff;cursor:pointer;background:#2c5f4e;border:none;border-radius:20px;padding:10px 20px;font-weight:600}.composer button:disabled{cursor:not-allowed;background:#aaa}.typing{gap:4px;padding:4px 2px;display:inline-flex}.typing .dot{background:#888;border-radius:50%;width:6px;height:6px;animation:1.2s ease-in-out infinite bounce}.typing .dot:nth-child(2){animation-delay:.15s}.typing .dot:nth-child(3){animation-delay:.3s}@keyframes bounce{0%,80%,to{opacity:.4;transform:translateY(0)}40%{opacity:1;transform:translateY(-4px)}}
