/* flex 列 + 整页 overflow:hidden:页面本身不滚(adjust-position=false 时列表纹丝不动), 列表在内层 scroll-view 里滚,底部输入条 fixed 覆在最下面 */ page{display:flex;flex-direction:column;height:100vh;overflow:hidden;background:var(--bg)} /* 底部留白 = 输入条高度,最后几条评论不被固定输入条盖住 */ .cm-scroll{flex:1;min-height:0;padding:0 var(--sp-5) 200rpx} .cm-count-head{ padding:var(--sp-3) 0;font-size:var(--fs-md);font-weight:var(--fw-b); color:var(--text);border-bottom:1rpx solid var(--line); } /* 空态 */ .cmp-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:160rpx 0;color:var(--muted)} .cmp-empty-ic{ width:140rpx;height:140rpx;border-radius:50%;margin-bottom:var(--sp-4); display:flex;align-items:center;justify-content:center; background:var(--primary-soft);color:var(--primary); } .cmp-empty-t{font-size:var(--fs-lg);font-weight:var(--fw-b);color:var(--text-2)} .cmp-empty-p{margin-top:var(--sp-1);font-size:var(--fs-sm);color:var(--muted2)} /* 评论行 */ .cm{display:flex;gap:var(--sp-3);padding:var(--sp-3) 0} .cm-av{ width:64rpx;height:64rpx;border-radius:50%;flex:none; display:flex;align-items:center;justify-content:center; background:var(--primary-soft);color:var(--primary-ink); font-size:var(--fs-md);font-weight:var(--fw-b); } .cm-av-sm{width:48rpx;height:48rpx;font-size:var(--fs-sm)} .cm-body{flex:1;min-width:0} .cm-name{font-size:var(--fs-sm);color:var(--muted)} .cm-at{color:var(--muted2)} .cm-text{margin-top:6rpx;font-size:var(--fs-md);line-height:1.55;word-break:break-word} .cm-imgs{display:flex;flex-wrap:wrap;gap:var(--sp-1);margin-top:var(--sp-2)} .cm-img{width:150rpx;height:150rpx;border-radius:var(--r-sm)} .cm-meta{display:flex;align-items:center;gap:var(--sp-4);margin-top:var(--sp-2);font-size:var(--fs-cap);color:var(--muted2)} .cm-reply-btn{color:var(--muted)} .cm-del{color:var(--red-ink)} .cm-replies{margin-top:var(--sp-2)} .cm-reply{display:flex;gap:var(--sp-2);padding:var(--sp-2) 0} .cm-more{margin-top:4rpx;font-size:var(--fs-cap);color:var(--muted)} .mine-tag{ margin-left:var(--sp-1);font-size:var(--fs-cap);font-weight:var(--fw-b); color:var(--primary-ink);background:var(--primary-soft);padding:2rpx var(--sp-1);border-radius:var(--r-full); } /* 底部输入条:固定在底部,键盘弹起时 inline 的 bottom 会被抬到键盘上方(列表不动) */ .cm-bar{ position:fixed;left:0;right:0;bottom:0;z-index:50; background:#fff;border-top:1rpx solid var(--line); padding:var(--sp-3) var(--sp-5) calc(16rpx + env(safe-area-inset-bottom)); transition:bottom .15s ease; } .cm-replying{ display:inline-flex;align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-2); padding:4rpx var(--sp-3);border-radius:var(--r-full); background:var(--primary-soft);color:var(--primary-ink);font-size:var(--fs-cap); } .cm-cancel{display:flex;align-items:center} .cm-bar-row{display:flex;align-items:flex-end;gap:var(--sp-3)} /* 起始就是单行高度(显式 height 盖掉全局 textarea 的 88rpx,避免「先高一下再缩成单行」的抖动), auto-height 只在文字换行时把它顶高;超过 max 就内部滚动 */ .cm-ta{ flex:1;min-width:0;box-sizing:border-box; height:72rpx;min-height:72rpx;max-height:280rpx; padding:16rpx var(--sp-4);background:var(--surface-2);border-radius:var(--r-md); font-size:var(--fs-md);line-height:1.4; } .cm-pic{flex:none;display:flex;align-items:center;color:var(--muted);height:72rpx} .cm-pic.disabled{opacity:.35} .cm-send{ flex:none;height:72rpx;padding:0 var(--sp-6);border-radius:var(--r-full); display:flex;align-items:center;justify-content:center; background:var(--line);color:#fff;font-size:var(--fs-md);font-weight:var(--fw-b);transition:.16s ease; } .cm-send.on{background:var(--cta)} .cm-tip{margin-top:var(--sp-2);color:var(--muted2);font-size:var(--fs-cap);line-height:1.5} /* 配图预览 */ .img-picker{display:flex;flex-wrap:wrap;gap:var(--sp-3);margin-bottom:var(--sp-2)} .img-thumb{position:relative;width:160rpx;height:160rpx;border-radius:var(--r-sm);overflow:hidden} .img-thumb image{width:100%;height:100%} .img-del{ position:absolute;top:0;right:0;width:44rpx;height:44rpx; display:flex;align-items:center;justify-content:center; background:rgba(0,0,0,.55);color:#fff;border-radius:0 var(--r-sm) 0 var(--r-sm); }