.post-page { min-height: 100vh; background: #ffffff; display: flex; flex-direction: column; } /* 顶部:高度和右侧 padding 由 JS 动态设置,避让系统胶囊按钮 */ .post-header { display: flex; align-items: center; justify-content: space-between; padding-left: 28rpx; background: var(--glass-strong); backdrop-filter: blur(34rpx) saturate(180%); -webkit-backdrop-filter: blur(34rpx) saturate(180%); border-bottom: 1rpx solid var(--glass-edge); border-radius: 0 0 40rpx 40rpx; flex-shrink: 0; box-sizing: border-box; } .cancel-btn { font-size: 28rpx; font-weight: 700; color: #6e6480; padding: 10rpx; } .header-title { font-size: 32rpx; font-weight: 800; color: #2b2438; } .submit-btn { background: linear-gradient(135deg, #ff2d6e, #ff7a1a); color: #fff; border: 1.5rpx solid rgba(255, 255, 255, 0.7); border-radius: 999rpx; padding: 14rpx 34rpx; font-size: 26rpx; font-weight: 800; box-shadow: 0 14rpx 28rpx rgba(255, 45, 110, 0.32); } .submit-disabled { background: rgba(165, 156, 181, 0.30); color: #a59cb5; border-color: transparent; box-shadow: none; } /* 滚动区 */ .post-scroll { flex: 1; } .post-body { padding: 24rpx 28rpx; } /* 图片上传 */ .upload-section { margin-bottom: 28rpx; } .upload-placeholder { width: 100%; height: 320rpx; background: radial-gradient(60% 80% at 30% 20%, rgba(255, 217, 61, 0.28), transparent 60%), radial-gradient(60% 80% at 80% 80%, rgba(0, 217, 160, 0.22), transparent 60%), rgba(255, 255, 255, 0.34); backdrop-filter: blur(28rpx) saturate(170%); -webkit-backdrop-filter: blur(28rpx) saturate(170%); border: 3rpx dashed rgba(43, 36, 56, 0.20); border-radius: 56rpx; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 18rpx; box-shadow: var(--shadow-soft); } .upload-icon { font-size: 56rpx; color: #ff2d6e; background: rgba(255, 255, 255, 0.6); border-radius: 28rpx; padding: 18rpx; } .upload-hint { font-size: 28rpx; font-weight: 800; color: #2b2438; } .upload-sub { font-size: 22rpx; color: #a59cb5; } /* 图片网格 */ .image-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12rpx; } .image-item { aspect-ratio: 1; border-radius: 20rpx; overflow: hidden; position: relative; } .img-preview { width: 100%; height: 100%; background: #f0eef5; } .img-remove { position: absolute; top: 6rpx; right: 6rpx; width: 44rpx; height: 44rpx; border-radius: 50%; background: rgba(43, 36, 56, 0.65); backdrop-filter: blur(12rpx); -webkit-backdrop-filter: blur(12rpx); color: #fff; font-size: 28rpx; display: flex; align-items: center; justify-content: center; font-weight: 700; } .img-uploading { position: absolute; inset: 0; background: rgba(255, 255, 255, 0.7); display: flex; align-items: center; justify-content: center; } .upload-spinner { width: 40rpx; height: 40rpx; border: 4rpx solid rgba(255, 45, 110, 0.2); border-top-color: #ff2d6e; border-radius: 50%; animation: spin 0.8s linear infinite; } @keyframes spin { to { transform: rotate(360deg); } } .image-add { aspect-ratio: 1; border-radius: 20rpx; background: var(--glass); backdrop-filter: blur(28rpx) saturate(170%); -webkit-backdrop-filter: blur(28rpx) saturate(170%); border: 3rpx dashed rgba(43, 36, 56, 0.20); display: flex; align-items: center; justify-content: center; } .add-plus { font-size: 60rpx; color: #a59cb5; font-weight: 200; } /* 文字输入 */ .content-input { width: 100%; min-height: 160rpx; background: var(--glass); backdrop-filter: blur(28rpx) saturate(170%); -webkit-backdrop-filter: blur(28rpx) saturate(170%); border: 1rpx solid var(--glass-edge); border-radius: 40rpx; padding: 24rpx 28rpx; font-size: 30rpx; color: #2b2438; font-family: "PingFang SC", sans-serif; line-height: 1.6; box-shadow: var(--shadow-soft); margin-bottom: 8rpx; } .input-placeholder { color: #c4b8d0; } .word-count { text-align: right; font-size: 22rpx; color: #a59cb5; margin-bottom: 28rpx; } /* 通用 section */ .section-title { font-size: 22rpx; font-weight: 800; color: #a59cb5; letter-spacing: 0.6rpx; margin-bottom: 16rpx; } .tag-row { display: flex; gap: 16rpx; flex-wrap: wrap; margin-bottom: 28rpx; align-items: center; } .tag-pill { display: flex; align-items: center; gap: 10rpx; background: var(--glass); backdrop-filter: blur(24rpx) saturate(170%); -webkit-backdrop-filter: blur(24rpx) saturate(170%); border: 1rpx solid var(--glass-edge); border-radius: 999rpx; padding: 16rpx 26rpx; font-size: 24rpx; font-weight: 800; color: #6e6480; } .tag-selected { background: #ff2d6e; border-color: #ff2d6e; color: #fff; box-shadow: 0 14rpx 30rpx rgba(255, 45, 110, 0.32); } .tag-remove { width: 44rpx; height: 44rpx; border-radius: 50%; background: rgba(255, 45, 110, 0.14); color: #ff2d6e; display: flex; align-items: center; justify-content: center; font-size: 28rpx; font-weight: 700; } /* 话题 */ .hashtag-wrap { margin-bottom: 28rpx; } .hashtag-input-row { display: flex; gap: 14rpx; align-items: center; } .hashtag-input { flex: 1; height: 72rpx; background: var(--glass); backdrop-filter: blur(24rpx) saturate(170%); -webkit-backdrop-filter: blur(24rpx) saturate(170%); border: 1rpx solid var(--glass-edge); border-radius: 999rpx; padding: 0 24rpx; font-size: 26rpx; color: #2b2438; } .hashtag-add-btn { background: var(--glass); backdrop-filter: blur(24rpx) saturate(170%); -webkit-backdrop-filter: blur(24rpx) saturate(170%); border: 1rpx solid var(--glass-edge); border-radius: 999rpx; padding: 14rpx 28rpx; font-size: 26rpx; font-weight: 800; color: #2b2438; } .hashtag-chip { display: inline-flex; align-items: center; gap: 8rpx; font-size: 24rpx; font-weight: 800; color: #8a3fe0; background: rgba(167, 139, 250, 0.16); border: 1rpx solid rgba(167, 139, 250, 0.28); border-radius: 999rpx; padding: 8rpx 16rpx; } .chip-remove { font-size: 26rpx; color: #8a3fe0; font-weight: 700; } .hot-tags { display: flex; flex-wrap: wrap; gap: 10rpx; align-items: center; margin-top: 14rpx; } .hot-tags-label { font-size: 22rpx; color: #a59cb5; } .hot-tag { font-size: 22rpx; color: #a59cb5; background: rgba(255, 255, 255, 0.5); border: 1rpx solid rgba(43, 36, 56, 0.10); border-radius: 999rpx; padding: 6rpx 16rpx; } /* 心情 */ .mood-row { display: flex; gap: 14rpx; flex-wrap: wrap; margin-bottom: 28rpx; } .mood-pill { background: var(--glass); backdrop-filter: blur(24rpx) saturate(170%); -webkit-backdrop-filter: blur(24rpx) saturate(170%); border: 1rpx solid var(--glass-edge); border-radius: 999rpx; padding: 16rpx 28rpx; font-size: 24rpx; font-weight: 800; color: #6e6480; transition: transform 0.18s ease; } .mood-pill:active { transform: scale(0.95); } .mood-on { background: #ffd400; border-color: #ffd400; color: #5b3d00; box-shadow: 0 14rpx 30rpx rgba(255, 212, 0, 0.36); }