@import "variables"; .comment { padding: 0rpx $primary-gap; position: fixed; left: 0; right: 0; bottom: 100rpx; z-index: 9; overflow: visible; .top-notice-layer { position: absolute; left: $primary-gap; right: 190rpx; top: -86rpx; height: 64rpx; overflow: hidden; pointer-events: none; } .top-notice-pill { height: 64rpx; width: 100%; padding: 0 20rpx; border-radius: 999rpx; box-sizing: border-box; display: flex; align-items: center; gap: 12rpx; color: #f6fbff; background: linear-gradient( 90deg, rgba(12, 24, 52, 0.92) 0%, rgba(30, 78, 132, 0.78) 100% ); border: 1rpx solid rgba(117, 207, 255, 0.24); box-shadow: 0 14rpx 36rpx rgba(0, 0, 0, 0.22); animation: top-notice-slide 3.4s cubic-bezier(0.2, 0.8, 0.2, 1) forwards; } .top-notice-tag { flex-shrink: 0; height: 36rpx; padding: 0 16rpx; border-radius: 999rpx; display: flex; align-items: center; justify-content: center; background: linear-gradient(135deg, #62f0ff 0%, #3cb6ff 100%); color: #07253d; font-size: 20rpx; font-weight: 700; letter-spacing: 2rpx; } .top-notice-text { flex: 1; min-width: 0; font-size: 24rpx; line-height: 1.3; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .comment-container { width: 470rpx; max-width: calc(100% - 260rpx); overflow: hidden; .list-wrapper { will-change: transform; .msg-item { line-height: 50rpx; border-radius: 30rpx; display: inline-block; max-width: 100%; min-height: 50rpx; margin-top: $primary-gap / 2; font-weight: 700; background: rgba(0, 0, 0, 0.5); word-break: break-all; padding: 0rpx $primary-gap; &.is-system { background: rgba(30, 65, 117, 0.48); border: 1rpx solid rgba(104, 196, 255, 0.18); } .msg-item-name { color: #76dbfd; margin-right: $primary-gap; } .msg-item-text { color: white; } } } } .unread-reminder { position: absolute; left: 50%; bottom: 116rpx; transform: translateX(-50%); min-width: 180rpx; height: 56rpx; padding: 0 22rpx; border-radius: 999rpx; display: flex; align-items: center; justify-content: center; gap: 10rpx; box-sizing: border-box; color: #ffffff; background: rgba(14, 24, 44, 0.9); box-shadow: 0 10rpx 24rpx rgba(0, 0, 0, 0.18); animation: unread-reminder-pop 0.24s ease-out; } .unread-reminder-dot { width: 14rpx; height: 14rpx; border-radius: 50%; background: #ff6a88; box-shadow: 0 0 0 8rpx rgba(255, 106, 136, 0.12); } .unread-reminder-text { font-size: 24rpx; line-height: 1; } .input-shell { margin-top: $primary-gap * 1.5; width: calc(100% - 260rpx); max-width: 470rpx; height: 90rpx; padding: 0rpx $primary-gap; border-radius: 999rpx; box-sizing: border-box; background: rgba(0, 0, 0, 0.56); display: flex; align-items: center; transition: background 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease; &.is-enhanced { padding-left: 18rpx; padding-right: 10rpx; background: linear-gradient( 135deg, rgba(12, 19, 30, 0.88) 0%, rgba(20, 36, 59, 0.84) 100% ); border: 1rpx solid rgba(135, 195, 255, 0.16); box-shadow: 0 18rpx 40rpx rgba(0, 0, 0, 0.18); } &.is-focused { transform: translateY(-2rpx); box-shadow: 0 18rpx 42rpx rgba(48, 137, 255, 0.18); } } .input-leading { width: 28rpx; height: 28rpx; margin-right: 14rpx; display: flex; align-items: center; justify-content: center; flex-shrink: 0; } .input-leading-dot { width: 14rpx; height: 14rpx; border-radius: 50%; background: linear-gradient(135deg, #5dfff0 0%, #4ab7ff 100%); box-shadow: 0 0 0 10rpx rgba(73, 207, 255, 0.1); animation: input-pulse 1.8s ease-in-out infinite; } .msg-input { flex: 1; min-width: 0; height: 100%; line-height: 90rpx; color: white; background: transparent; box-sizing: border-box; } .input-send { min-width: 108rpx; height: 68rpx; padding: 0 24rpx; border-radius: 999rpx; box-sizing: border-box; display: flex; align-items: center; justify-content: center; flex-shrink: 0; background: rgba(255, 255, 255, 0.08); color: rgba(255, 255, 255, 0.64); font-size: 24rpx; font-weight: 600; letter-spacing: 2rpx; transition: background 0.2s ease, color 0.2s ease, transform 0.2s ease; &.is-ready { background: linear-gradient(135deg, #53d6ff 0%, #2f8cff 100%); color: #ffffff; transform: translateY(-1rpx); box-shadow: 0 10rpx 26rpx rgba(47, 140, 255, 0.26); } } .action-bar { position: absolute; right: $primary-gap; bottom: 7rpx; display: flex; align-items: center; gap: 14rpx; } .action-btn { width: 76rpx; height: 76rpx; padding: 0; border-radius: 50%; background: rgba(17, 17, 17, 0.58); display: flex; align-items: center; justify-content: center; box-shadow: 0 12rpx 28rpx rgba(0, 0, 0, 0.14); transition: transform 0.18s ease, box-shadow 0.18s ease, background 0.18s ease; box-sizing: border-box; &.action-btn-hover { transform: scale(0.94); background: rgba(17, 17, 17, 0.7); } } .action-share { border: none; &::after { border: none; } } .action-btn-heart { background: rgba(255, 61, 104, 0.18); border: 2rpx solid rgba(255, 108, 143, 0.45); &.is-active { transform: scale(1.08); box-shadow: 0 12rpx 30rpx rgba(255, 61, 104, 0.24); } } .action-icon { width: 38rpx; height: 38rpx; } .action-icon-heart { width: 40rpx; height: 40rpx; } .heart-layer { position: absolute; right: $primary-gap + 12rpx; bottom: 84rpx; width: 160rpx; height: 340rpx; pointer-events: none; overflow: visible; } .heart-particle { position: absolute; opacity: 0; animation-fill-mode: forwards; animation-timing-function: ease-out; } .heart-glyph { display: none; line-height: 1; text-shadow: 0 8rpx 20rpx rgba(255, 77, 109, 0.2); } .heart-fly-icon { width: 36rpx; height: 36rpx; display: block; } .pulse-small { animation: heart-pop 0.72s ease-out; } .pulse-medium { animation: heart-pop 0.84s ease-out; } .pulse-large { animation: heart-pop 0.96s ease-out; } .path-left { animation-name: float-heart-left; } .path-center { animation-name: float-heart-center; } .path-right { animation-name: float-heart-right; } } @keyframes input-pulse { 0%, 100% { transform: scale(0.9); opacity: 0.82; } 50% { transform: scale(1.08); opacity: 1; } } @keyframes unread-reminder-pop { 0% { opacity: 0; transform: translateX(-50%) translateY(12rpx); } 100% { opacity: 1; transform: translateX(-50%) translateY(0); } } @keyframes top-notice-slide { 0% { opacity: 0; transform: translate3d(120%, 0, 0) scale(0.96); } 12% { opacity: 1; transform: translate3d(0, 0, 0) scale(1); } 86% { opacity: 1; transform: translate3d(0, 0, 0) scale(1); } 100% { opacity: 0; transform: translate3d(-16%, 0, 0) scale(0.98); } } @keyframes heart-pop { 0% { transform: scale(0.6); } 45% { transform: scale(1.18); } 100% { transform: scale(1); } } @keyframes float-heart-left { 0% { opacity: 0; transform: translate3d(0, 0, 0) scale(0.45); } 18% { opacity: 1; } 100% { opacity: 0; transform: translate3d(-48rpx, -240rpx, 0) scale(1.18); } } @keyframes float-heart-center { 0% { opacity: 0; transform: translate3d(0, 0, 0) scale(0.45); } 18% { opacity: 1; } 100% { opacity: 0; transform: translate3d(8rpx, -260rpx, 0) scale(1.24); } } @keyframes float-heart-right { 0% { opacity: 0; transform: translate3d(0, 0, 0) scale(0.45); } 18% { opacity: 1; } 100% { opacity: 0; transform: translate3d(54rpx, -228rpx, 0) scale(1.12); } }