/* 整页聊天:上面滚动区自适应,下面输入区固定,中间不留空 */ .chat-scroll{flex:1;min-height:0} .chat-body{padding:var(--sp-3) var(--pad-x) var(--sp-5)} .chat-bottom{height:1rpx} .row{display:flex;align-items:flex-start;gap:var(--sp-2);margin-bottom:var(--sp-4)} .row-user{justify-content:flex-end} .ai-avatar{ width:60rpx;height:60rpx;border-radius:var(--r-sm);flex:none;margin-top:4rpx; display:flex;align-items:center;justify-content:center; background:var(--cta);color:#fff; } .bubble{ max-width:76%;border-radius:var(--r-md);padding:var(--sp-3) var(--sp-4); font-size:var(--fs-md);line-height:1.62;word-break:break-word; } .bubble-ai{background:#fff;box-shadow:var(--sd-1);border-top-left-radius:var(--r-xs)} .bubble-user{background:var(--primary-soft);color:var(--primary-ink);border-top-right-radius:var(--r-xs)} /* 打字光标 */ .caret{color:var(--primary);animation:blink .9s steps(1) infinite} @keyframes blink{50%{opacity:0}} /* 底部输入区 */ .dock{ flex:none;background:rgba(255,255,255,.94); backdrop-filter:blur(28rpx);-webkit-backdrop-filter:blur(28rpx); border-top:1rpx solid var(--line); padding:var(--sp-3) var(--pad-x) calc(var(--sp-3) + env(safe-area-inset-bottom)); } .presets{white-space:nowrap;margin-bottom:var(--sp-3)} .preset{ display:inline-block;height:var(--h-sm);line-height:var(--h-sm);padding:0 var(--sp-4); margin-right:var(--sp-2);border-radius:var(--r-full);border:1rpx solid var(--line); background:#fff;color:var(--text-2);font-size:var(--fs-sm); } .input-row{display:flex;align-items:center;gap:var(--sp-3)} .input-row .input{flex:1;background:var(--surface-2)} .send{ width:88rpx;height:88rpx;border-radius:var(--r-md);flex:none; display:flex;align-items:center;justify-content:center; background:var(--line);color:#fff;transition:.16s ease; } .send.on{background:var(--cta)}