/* ── 全局设计令牌 ── */ page { --pink: #ff4f91; --pink-light: #ffe5f0; --orange: #ff9f1c; --yellow: #ffe15a; --green: #2fd37a; --mint: #67e8c9; --blue: #4d8dff; --violet: #8c5cff; --ink: #272235; --bg-primary: #fff9fb; --bg-page: linear-gradient(180deg, #fff8f2 0%, #fff4fb 50%, #f5f0ff 100%); --text-primary: #272235; --text-secondary: #6a6178; --text-tertiary: #9b8fa8; --border-card: rgba(255, 255, 255, 0.72); --border-subtle: rgba(43, 37, 61, 0.08); --shadow-soft: 0 18rpx 40rpx rgba(95, 49, 104, 0.12); --shadow-card: 0 10rpx 28rpx rgba(78, 56, 96, 0.10); --shadow-pop: 0 10rpx 22rpx rgba(255, 79, 145, 0.28); --radius-sm: 16rpx; --radius-md: 28rpx; --radius-lg: 44rpx; --radius-full: 9999rpx; --tab-h: 112rpx; font-family: "PingFang SC", "Helvetica Neue", Arial, sans-serif; background: var(--bg-primary); color: var(--text-primary); font-size: 28rpx; line-height: 1.5; box-sizing: border-box; } /* ── 重置 ── */ view, text, image, button, input, textarea { box-sizing: border-box; } button { padding: 0; margin: 0; border: none; background: none; line-height: 1; font-family: inherit; } button::after { border: none; } /* ── 通用卡片 ── */ .card { background: rgba(255, 255, 255, 0.86); border: 1rpx solid var(--border-card); border-radius: var(--radius-lg); box-shadow: var(--shadow-soft); overflow: hidden; } /* ── 渐变按钮 ── */ .btn-primary { display: flex; align-items: center; justify-content: center; background: linear-gradient(135deg, var(--pink), var(--orange)); color: #fff; border-radius: var(--radius-full); font-size: 28rpx; font-weight: 800; box-shadow: var(--shadow-pop); } /* ── 页面顶部状态栏占位 ── */ .status-placeholder { height: env(safe-area-inset-top, 44rpx); } /* ── 滚动区通用 ── */ .scroll-view { width: 100%; } /* ── Hashtag 标签 ── */ .hashtag { display: inline-flex; align-items: center; font-size: 22rpx; font-weight: 800; color: #8b3cff; background: #f0e8ff; border-radius: var(--radius-full); padding: 6rpx 14rpx; } /* ── 在线绿点 ── */ .online-dot { width: 14rpx; height: 14rpx; border-radius: 50%; background: var(--green); flex-shrink: 0; box-shadow: 0 0 0 5rpx rgba(47, 211, 122, 0.18); } /* ── 骨架屏占位 ── */ .skeleton { background: linear-gradient(90deg, #f0eef5 25%, #e8e4f0 50%, #f0eef5 75%); background-size: 200% 100%; animation: skeleton-shine 1.4s infinite; border-radius: 8rpx; } @keyframes skeleton-shine { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } } /* ── 安全区 ── */ .safe-top { background: transparent; } .safe-bottom { height: env(safe-area-inset-bottom, 0rpx); }