Files
Cola/style.css
2025-12-31 04:04:45 +08:00

13042 lines
250 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* 可乐不加冰 v1.0.0 样式 */
/* ===== 变量定义 ===== */
:root {
--wechat-green: #07C160;
--wechat-green-dark: #06AD56;
--wechat-bg: #EDEDED;
--wechat-chat-bg: #F5F5F5;
--wechat-white: #FFFFFF;
--wechat-text: #191919;
--wechat-text-secondary: #888888;
--wechat-border: #E5E5E5;
--wechat-bubble-self: #95EC69;
--wechat-bubble-other: #FFFFFF;
--wechat-header-bg: #EDEDED;
--wechat-search-bg: #FFFFFF;
}
/* 暗色主题 - 真实微信深色模式 */
.wechat-dark {
--wechat-bg: #111111;
--wechat-chat-bg: #111111;
--wechat-white: #191919;
--wechat-text: #E9E9E9;
--wechat-text-secondary: #6B6B6B;
--wechat-border: #2C2C2C;
--wechat-bubble-self: #3EB575;
--wechat-bubble-other: #262626;
--wechat-header-bg: #191919;
--wechat-search-bg: #262626;
}
/* ===== 手机外壳 ===== */
.wechat-phone {
width: 375px;
height: 667px;
background: var(--wechat-bg);
border-radius: 40px;
box-shadow: 0 10px 40px rgba(0, 0, 0, 0.3);
overflow: hidden;
position: fixed;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
z-index: 9999;
display: flex;
flex-direction: column;
border: 8px solid #1a1a1a;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
}
.wechat-phone.hidden {
display: none;
}
/* 通用隐藏类 */
.wechat-phone .hidden {
display: none !important;
}
/* 所有页面容器通用样式 */
#wechat-main-content,
#wechat-add-page,
#wechat-chat-page,
#wechat-me-page,
#wechat-settings-page,
#wechat-favorites-page,
#wechat-service-page {
display: flex;
flex-direction: column;
flex: 1;
min-height: 0;
}
/* ===== 状态栏 ===== */
.wechat-statusbar {
height: 44px;
background: var(--wechat-header-bg);
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 24px;
font-size: 15px;
color: var(--wechat-text);
font-weight: 600;
}
.wechat-statusbar-time {
font-weight: 600;
font-size: 15px;
}
.wechat-statusbar-icons {
display: flex;
gap: 4px;
align-items: center;
}
.wechat-statusbar-icons svg {
width: 20px;
height: 20px;
fill: var(--wechat-text);
}
/* ===== 导航栏 ===== */
.wechat-navbar {
height: 44px;
min-height: 44px;
background: var(--wechat-header-bg);
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 15px;
flex-shrink: 0;
position: relative;
}
.wechat-navbar-title {
font-size: 18px;
font-weight: 600;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
color: var(--wechat-text);
position: absolute;
left: 50%;
transform: translateX(-50%);
}
.wechat-navbar-btn {
background: none;
border: none;
padding: 8px;
cursor: pointer;
color: var(--wechat-text);
font-size: 22px;
display: flex;
align-items: center;
justify-content: center;
width: 28px;
height: 28px;
}
.wechat-navbar-btn svg {
width: 24px;
height: 24px;
fill: var(--wechat-text);
}
.wechat-navbar-btn:hover {
opacity: 0.7;
}
.wechat-navbar-back {
font-size: 24px;
}
/* ===== 联系人列表 ===== */
.wechat-contacts {
flex: 1;
overflow-y: auto;
background: var(--wechat-bg);
min-height: 0;
-webkit-overflow-scrolling: touch;
padding: 10px;
}
/* ===== 通讯录网格样式 ===== */
.wechat-contacts-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 10px;
padding: 5px;
}
.wechat-contact-card {
position: relative;
overflow: hidden;
border-radius: 12px;
background: var(--wechat-white);
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}
.wechat-card-swipe-wrapper {
display: flex;
position: relative;
transition: transform 0.3s ease;
}
.wechat-card-content {
flex-shrink: 0;
width: 100%;
display: flex;
flex-direction: column;
align-items: center;
padding: 12px 8px;
cursor: pointer;
transition: background 0.2s;
}
.wechat-card-content:active {
background: var(--wechat-bg);
}
.wechat-card-avatar {
width: 70px;
height: 70px;
border-radius: 10px;
background: #ffffff;
overflow: hidden;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
transition: transform 0.15s, box-shadow 0.15s;
position: relative;
}
.wechat-card-avatar:hover {
transform: scale(1.05);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}
.wechat-card-avatar:active {
transform: scale(0.98);
}
.wechat-card-avatar img {
width: 100%;
height: 100%;
object-fit: cover;
}
.wechat-card-fallback {
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
color: white;
font-size: 28px;
font-weight: 500;
}
.wechat-card-name {
margin-top: 8px;
font-size: 12px;
color: var(--wechat-text);
text-align: center;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
max-width: 90px;
}
/* 删除按钮 */
.wechat-card-delete {
position: absolute;
right: -70px;
top: 0;
bottom: 0;
width: 70px;
background: #ff4d4f;
display: flex;
align-items: center;
justify-content: center;
color: white;
font-size: 13px;
cursor: pointer;
transition: background 0.2s;
}
.wechat-card-delete:hover {
background: #ff7875;
}
.wechat-card-delete:active {
background: #d9363e;
}
/* ===== 搜索框 ===== */
.wechat-search-box {
padding: 8px 12px;
background: var(--wechat-bg);
flex-shrink: 0;
}
.wechat-search-inner {
display: flex;
align-items: center;
background: var(--wechat-search-bg);
border-radius: 6px;
padding: 8px 12px;
color: var(--wechat-text-secondary);
font-size: 14px;
}
.wechat-search-inner svg {
width: 16px;
height: 16px;
fill: var(--wechat-text-secondary);
margin-right: 8px;
flex-shrink: 0;
}
.wechat-search-inner span {
color: var(--wechat-text-secondary);
}
.wechat-contact-item {
display: flex;
align-items: center;
padding: 12px 12px;
background: var(--wechat-white);
cursor: pointer;
transition: background 0.2s;
}
.wechat-contact-item:hover {
background: var(--wechat-bg);
}
.wechat-contact-item:active {
background: #D9D9D9;
}
.wechat-contact-avatar {
width: 50px;
height: 50px;
min-width: 50px;
min-height: 50px;
border-radius: 8px;
background: #ffffff;
margin-right: 12px;
display: flex;
align-items: center;
justify-content: center;
color: #999;
font-size: 20px;
font-weight: 500;
overflow: hidden;
flex-shrink: 0;
line-height: 1;
cursor: pointer;
transition: transform 0.15s, opacity 0.15s;
}
.wechat-contact-avatar:hover {
opacity: 0.85;
}
.wechat-contact-avatar:active {
transform: scale(0.95);
}
.wechat-contact-avatar img {
width: 100%;
height: 100%;
object-fit: cover;
}
.wechat-contact-info {
flex: 1;
overflow: hidden;
min-width: 0;
}
.wechat-contact-name {
font-size: 16px;
color: var(--wechat-text);
margin-bottom: 4px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.wechat-contact-msg {
font-size: 13px;
color: var(--wechat-text-secondary);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
max-width: 180px;
}
.wechat-contact-meta {
display: flex;
flex-direction: column;
align-items: flex-end;
margin-left: 10px;
flex-shrink: 0;
}
.wechat-contact-time {
font-size: 12px;
color: var(--wechat-text-secondary);
margin-bottom: 4px;
}
/* ===== 聊天列表样式(微信主页) ===== */
.wechat-chat-list {
flex: 1;
overflow-y: auto;
background: var(--wechat-bg);
min-height: 0;
-webkit-overflow-scrolling: touch;
}
.wechat-chat-item {
display: flex;
align-items: center;
padding: 12px 15px;
background: var(--wechat-white);
border-bottom: 0.5px solid var(--wechat-border);
cursor: pointer;
transition: background 0.2s;
}
.wechat-chat-item:hover {
background: var(--wechat-bg);
}
.wechat-chat-item:active {
background: #D9D9D9;
}
.wechat-chat-item-avatar {
width: 48px;
height: 48px;
min-width: 48px;
border-radius: 6px;
background: #ffffff;
margin-right: 12px;
display: flex;
align-items: center;
justify-content: center;
color: #999;
position: relative;
font-size: 18px;
font-weight: 500;
overflow: hidden;
flex-shrink: 0;
}
.wechat-chat-item-avatar img {
width: 100%;
height: 100%;
object-fit: cover;
}
.wechat-chat-item-avatar span {
line-height: 1;
}
.wechat-chat-item-info {
flex: 1;
min-width: 0;
overflow: hidden;
}
.wechat-chat-item-name {
font-size: 16px;
color: var(--wechat-text);
margin-bottom: 4px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.wechat-chat-item-preview {
font-size: 13px;
color: var(--wechat-text-secondary);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.wechat-chat-item-meta {
display: flex;
flex-direction: column;
align-items: flex-end;
justify-content: center;
margin-left: 10px;
flex-shrink: 0;
gap: 4px;
}
.wechat-chat-item-time {
font-size: 12px;
color: var(--wechat-text-secondary);
white-space: nowrap;
}
/* 聊天列表未读消息红点 */
.wechat-chat-item-badge {
min-width: 18px;
height: 18px;
background: #F44336;
color: white;
border-radius: 9px;
font-size: 11px;
font-weight: 500;
display: flex;
align-items: center;
justify-content: center;
padding: 0 5px;
}
/* 微信/通讯录标签页内容 */
#wechat-chat-tab-content,
#wechat-contacts-tab-content {
display: flex;
flex-direction: column;
flex: 1;
min-height: 0;
}
#wechat-chat-tab-content.hidden,
#wechat-contacts-tab-content.hidden {
display: none;
}
/* ===== 下拉菜单 ===== */
.wechat-dropdown-menu {
position: absolute;
top: 88px;
right: 10px;
background: #4C4C4C;
border-radius: 6px;
padding: 5px 0;
min-width: 140px;
z-index: 100;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
}
.wechat-dropdown-menu::before {
content: '';
position: absolute;
top: -8px;
right: 14px;
border-left: 8px solid transparent;
border-right: 8px solid transparent;
border-bottom: 8px solid #4C4C4C;
}
/* 聊天页三个点菜单 - 三角形对准按钮 */
#wechat-chat-menu::before {
right: 8px;
}
.wechat-dropdown-menu.hidden {
display: none;
}
.wechat-dropdown-item {
display: flex;
align-items: center;
padding: 12px 16px;
cursor: pointer;
color: white;
font-size: 15px;
transition: background 0.2s;
}
.wechat-dropdown-item:hover {
background: rgba(255, 255, 255, 0.1);
}
.wechat-dropdown-item svg {
width: 20px;
height: 20px;
margin-right: 12px;
stroke: white;
}
.wechat-dropdown-item-danger {
color: #ff4d4f;
border-top: 1px solid rgba(255, 255, 255, 0.1);
margin-top: 4px;
padding-top: 14px;
}
.wechat-dropdown-item-danger svg {
stroke: #ff4d4f;
}
.wechat-dropdown-item-danger:hover {
background: rgba(255, 77, 79, 0.15);
}
/* ===== 添加朋友页面 ===== */
.wechat-add-friend {
flex: 1;
background: var(--wechat-bg);
display: flex;
flex-direction: column;
}
.wechat-add-search-wrapper {
padding: 10px 12px;
background: var(--wechat-bg);
}
.wechat-add-search-box {
display: flex;
align-items: center;
background: var(--wechat-search-bg);
border-radius: 6px;
padding: 10px 15px;
color: var(--wechat-text-secondary);
font-size: 15px;
}
.wechat-add-search-box svg {
width: 18px;
height: 18px;
margin-right: 10px;
stroke: var(--wechat-text-secondary);
}
.wechat-add-desc {
text-align: center;
font-size: 13px;
color: var(--wechat-text-secondary);
padding: 8px 0 15px;
}
.wechat-add-options {
background: var(--wechat-white);
}
.wechat-add-option {
display: flex;
align-items: center;
padding: 14px 15px;
border-bottom: 0.5px solid var(--wechat-border);
cursor: pointer;
transition: background 0.2s;
}
.wechat-add-option:hover {
background: var(--wechat-bg);
}
.wechat-add-option:last-child {
border-bottom: none;
}
.wechat-add-option-icon {
width: 44px;
height: 44px;
border-radius: 8px;
margin-right: 15px;
display: flex;
align-items: center;
justify-content: center;
background: var(--wechat-green);
}
.wechat-add-option-icon svg {
width: 24px;
height: 24px;
stroke: white;
}
.wechat-add-option-text {
flex: 1;
font-size: 16px;
color: var(--wechat-text);
}
.wechat-add-option-arrow {
color: var(--wechat-text-secondary);
font-size: 20px;
font-weight: 300;
}
/* ===== 聊天界面 ===== */
.wechat-chat {
flex: 1;
display: flex;
flex-direction: column;
background: var(--wechat-chat-bg);
min-height: 0;
overflow: hidden;
}
.wechat-chat-messages {
flex: 1;
overflow-y: auto;
padding: 10px 15px;
min-height: 0;
-webkit-overflow-scrolling: touch;
}
.wechat-message {
display: flex;
margin-bottom: 15px;
align-items: flex-start;
}
.wechat-message.self {
flex-direction: row-reverse;
}
.wechat-message-avatar {
width: 40px;
height: 40px;
border-radius: 6px;
background: #ffffff;
flex-shrink: 0;
display: flex;
align-items: center;
justify-content: center;
color: #999;
font-size: 16px;
overflow: hidden;
}
.wechat-message-avatar img {
width: 100%;
height: 100%;
object-fit: cover;
}
.wechat-message-content {
max-width: 70%;
margin: 0 10px;
display: flex;
flex-direction: column;
gap: 6px;
}
.wechat-message-bubble {
padding: 10px 12px;
border-radius: 6px;
font-size: 15px;
line-height: 1.5;
color: var(--wechat-text);
word-wrap: break-word;
position: relative;
width: fit-content;
max-width: 100%;
}
.wechat-message:not(.self) .wechat-message-bubble {
background: var(--wechat-bubble-other);
}
.wechat-message.self .wechat-message-bubble {
background: var(--wechat-bubble-self);
color: #333;
margin-left: auto;
}
/* 消息气泡小三角 - 只在第一个气泡显示 */
.wechat-message:not(.self) .wechat-message-bubble:first-child::before {
content: '';
position: absolute;
left: -8px;
top: 12px;
border: 6px solid transparent;
border-right-color: var(--wechat-bubble-other);
}
.wechat-message.self .wechat-message-bubble:first-child::before {
content: '';
position: absolute;
right: -8px;
top: 12px;
border: 6px solid transparent;
border-left-color: var(--wechat-bubble-self);
}
/* 语音消息 */
.wechat-voice {
display: flex;
align-items: center;
min-width: 80px;
cursor: pointer;
}
.wechat-voice-icon {
margin-right: 8px;
}
.wechat-voice-duration {
font-size: 14px;
color: #fff;
}
/* 图片消息 */
.wechat-message-image {
max-width: 200px;
border-radius: 6px;
cursor: pointer;
}
/* 时间戳 */
.wechat-time-divider {
text-align: center;
margin: 15px 0;
font-size: 12px;
color: var(--wechat-text-secondary);
}
/* 消息时间标签(微信风格) */
.wechat-msg-time {
text-align: center;
margin: 12px 0 8px;
font-size: 12px;
color: var(--wechat-text-secondary);
opacity: 0.8;
}
/* 撤回消息标签 */
.wechat-msg-recalled {
text-align: center;
margin: 12px 0 8px;
font-size: 12px;
color: var(--wechat-text-secondary);
opacity: 0.8;
}
/* 加载更多消息提示 */
.wechat-load-more {
text-align: center;
padding: 12px 0;
font-size: 12px;
color: var(--wechat-text-secondary);
opacity: 0.8;
cursor: pointer;
user-select: none;
}
.wechat-load-more:hover {
opacity: 1;
}
/* 撤回消息区面板 */
#wechat-recalled-panel {
background: var(--wechat-white);
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);
}
.wechat-dark #wechat-recalled-panel {
background: var(--wechat-header-bg);
}
.wechat-recalled-item {
padding: 12px;
border-bottom: 1px solid var(--wechat-border);
font-size: 13px;
}
.wechat-recalled-item:last-child {
border-bottom: none;
}
.wechat-recalled-item-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 6px;
}
.wechat-recalled-item-sender {
font-weight: 500;
color: var(--wechat-text);
}
.wechat-recalled-item-time {
font-size: 11px;
color: var(--wechat-text-secondary);
}
.wechat-recalled-item-content {
color: var(--wechat-text);
line-height: 1.5;
word-break: break-word;
}
.wechat-recalled-empty {
text-align: center;
padding: 30px 20px;
color: var(--wechat-text-secondary);
font-size: 13px;
}
/* ===== 聊天背景设置面板 ===== */
#wechat-chat-bg-panel {
background: var(--wechat-white);
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);
}
.wechat-dark #wechat-chat-bg-panel {
background: var(--wechat-header-bg);
}
.wechat-chat-bg-preview {
width: 100%;
height: 150px;
border-radius: 8px;
background: var(--wechat-bg-secondary);
display: flex;
align-items: center;
justify-content: center;
overflow: hidden;
position: relative;
}
.wechat-chat-bg-preview img {
width: 100%;
height: 100%;
object-fit: cover;
}
.wechat-chat-bg-placeholder {
color: var(--wechat-text-secondary);
font-size: 13px;
}
/* ===== 图片裁剪器 ===== */
.wechat-modal-cropper {
padding: 16px !important;
}
.wechat-cropper-container {
position: relative;
width: 100%;
height: 300px;
background: #000;
border-radius: 8px;
overflow: hidden;
margin-top: 12px;
}
#wechat-cropper-canvas {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
max-width: 100%;
max-height: 100%;
}
.wechat-cropper-overlay {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.5);
pointer-events: none;
}
.wechat-cropper-box {
position: absolute;
border: 2px solid #fff;
box-shadow: 0 0 0 9999px rgba(0, 0, 0, 0.5);
cursor: move;
pointer-events: auto;
background: transparent;
}
.wechat-cropper-handle {
position: absolute;
width: 20px;
height: 20px;
background: #fff;
border-radius: 50%;
pointer-events: auto;
}
.wechat-cropper-handle.nw {
top: -10px;
left: -10px;
cursor: nw-resize;
}
.wechat-cropper-handle.ne {
top: -10px;
right: -10px;
cursor: ne-resize;
}
.wechat-cropper-handle.sw {
bottom: -10px;
left: -10px;
cursor: sw-resize;
}
.wechat-cropper-handle.se {
bottom: -10px;
right: -10px;
cursor: se-resize;
}
/* 聊天消息区域背景 */
.wechat-chat-messages {
background-size: cover;
background-position: center;
background-repeat: no-repeat;
}
/* ===== 打字中动画 ===== */
.wechat-typing {
display: flex;
align-items: center;
gap: 4px;
padding: 12px 15px !important;
}
.wechat-typing-dot {
width: 8px;
height: 8px;
background: var(--wechat-text-secondary);
border-radius: 50%;
animation: wechat-typing-bounce 1.4s infinite ease-in-out both;
}
.wechat-typing-dot:nth-child(1) {
animation-delay: -0.32s;
}
.wechat-typing-dot:nth-child(2) {
animation-delay: -0.16s;
}
.wechat-typing-dot:nth-child(3) {
animation-delay: 0s;
}
@keyframes wechat-typing-bounce {
0%, 80%, 100% {
transform: scale(0.6);
opacity: 0.5;
}
40% {
transform: scale(1);
opacity: 1;
}
}
/* ===== 聊天输入框 ===== */
.wechat-chat-input {
display: flex;
align-items: center;
padding: 8px 12px 24px 12px;
background: var(--wechat-header-bg);
border-top: 1px solid var(--wechat-border);
gap: 6px;
}
.wechat-chat-input-voice {
padding: 8px;
background: none;
border: none;
cursor: pointer;
font-size: 20px;
color: var(--wechat-text);
flex-shrink: 0;
}
.wechat-chat-input-text {
flex: 1;
min-width: 0;
padding: 8px 12px;
border: none;
border-radius: 6px;
background: var(--wechat-white);
font-size: 15px;
color: var(--wechat-text);
}
.wechat-chat-input-text:focus {
outline: none;
}
.wechat-chat-input-emoji,
.wechat-chat-input-more {
padding: 8px;
background: none;
border: none;
cursor: pointer;
font-size: 20px;
color: var(--wechat-text);
flex-shrink: 0;
}
/* ===== 底部标签栏 ===== */
.wechat-tabbar {
display: flex;
background: var(--wechat-header-bg);
border-top: 0.5px solid var(--wechat-border);
padding: 4px 0;
padding-bottom: 8px;
flex-shrink: 0;
}
.wechat-tab {
flex: 1;
display: flex;
flex-direction: column;
align-items: center;
padding: 3px 5px;
cursor: pointer;
color: var(--wechat-text-secondary);
font-size: 10px;
background: none;
border: none;
gap: 2px;
}
.wechat-tab.active {
color: var(--wechat-green);
}
.wechat-tab-icon {
width: 28px;
height: 28px;
display: flex;
align-items: center;
justify-content: center;
position: relative;
}
.wechat-tab-icon svg {
width: 26px;
height: 26px;
fill: currentColor;
}
.wechat-tab-badge {
position: absolute;
top: -2px;
right: -6px;
min-width: 16px;
height: 16px;
background: #F44336;
color: white;
border-radius: 8px;
font-size: 10px;
display: none;
align-items: center;
justify-content: center;
padding: 0 4px;
}
.wechat-tab-badge:not(:empty) {
display: flex;
}
/* ===== 设置面板 ===== */
.wechat-settings {
flex: 1;
background: var(--wechat-bg);
overflow-y: auto;
padding-bottom: 20px;
min-height: 0;
-webkit-overflow-scrolling: touch;
}
.wechat-settings-group {
background: var(--wechat-white);
margin-top: 10px;
}
.wechat-settings-item {
display: flex;
align-items: center;
justify-content: space-between;
padding: 15px;
border-bottom: 1px solid var(--wechat-border);
}
.wechat-settings-item:last-child {
border-bottom: none;
}
.wechat-settings-label {
font-size: 16px;
color: var(--wechat-text);
}
.wechat-settings-value {
font-size: 14px;
color: var(--wechat-text-secondary);
}
/* 开关 */
.wechat-switch {
width: 50px;
height: 30px;
background: #E5E5E5;
border-radius: 15px;
position: relative;
cursor: pointer;
transition: background 0.3s;
}
.wechat-switch.on {
background: var(--wechat-green);
}
.wechat-switch::after {
content: '';
position: absolute;
width: 26px;
height: 26px;
background: white;
border-radius: 50%;
top: 2px;
left: 2px;
transition: transform 0.3s;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
}
.wechat-switch.on::after {
transform: translateX(20px);
}
/* ===== 按钮 ===== */
.wechat-btn {
padding: 12px 20px;
border: none;
border-radius: 6px;
font-size: 15px;
cursor: pointer;
transition: opacity 0.2s;
}
.wechat-btn:hover {
opacity: 0.8;
}
.wechat-btn-primary {
background: var(--wechat-green);
color: white;
}
/* ===== "我"页面 ===== */
.wechat-me-content {
flex: 1;
background: var(--wechat-bg);
overflow-y: auto;
min-height: 0;
-webkit-overflow-scrolling: touch;
}
.wechat-me-profile {
display: flex;
align-items: center;
padding: 20px 15px;
background: var(--wechat-white);
margin-bottom: 10px;
}
.wechat-me-avatar {
width: 64px;
height: 64px;
border-radius: 8px;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
display: flex;
align-items: center;
justify-content: center;
color: white;
font-size: 28px;
font-weight: 500;
margin-right: 15px;
overflow: hidden;
cursor: pointer;
transition: opacity 0.2s, transform 0.2s;
}
.wechat-me-avatar:hover {
opacity: 0.85;
}
.wechat-me-avatar:active {
transform: scale(0.95);
}
.wechat-me-avatar img {
width: 100%;
height: 100%;
object-fit: cover;
}
.wechat-me-info {
flex: 1;
}
.wechat-me-name {
font-size: 18px;
font-weight: 600;
color: var(--wechat-text);
margin-bottom: 4px;
}
.wechat-me-id {
font-size: 14px;
color: var(--wechat-text-secondary);
margin-bottom: 6px;
}
.wechat-me-status {
font-size: 13px;
color: var(--wechat-text-secondary);
}
.wechat-me-qr {
display: flex;
align-items: center;
color: var(--wechat-text-secondary);
}
.wechat-me-qr svg {
fill: var(--wechat-text-secondary);
}
.wechat-me-arrow {
font-size: 20px;
margin-left: 8px;
}
.wechat-me-menu {
background: var(--wechat-white);
margin-bottom: 10px;
}
.wechat-me-menu-item {
display: flex;
align-items: center;
padding: 14px 15px;
border-bottom: 0.5px solid var(--wechat-border);
cursor: pointer;
transition: background 0.2s;
}
.wechat-me-menu-item:last-child {
border-bottom: none;
}
.wechat-me-menu-item:hover {
background: var(--wechat-bg);
}
.wechat-me-menu-icon {
width: 28px;
height: 28px;
border-radius: 6px;
display: flex;
align-items: center;
justify-content: center;
margin-right: 15px;
}
.wechat-me-menu-icon svg {
width: 20px;
height: 20px;
stroke: white;
}
.wechat-me-menu-icon.green { background: var(--wechat-green); }
.wechat-me-menu-icon.orange { background: #F5A623; }
.wechat-me-menu-icon.blue { background: #576B95; }
.wechat-me-menu-icon.yellow { background: #F5C623; }
.wechat-me-menu-icon.gray { background: #8E8E93; }
.wechat-me-menu-text {
flex: 1;
font-size: 16px;
color: var(--wechat-text);
}
.wechat-me-menu-arrow {
color: var(--wechat-text-secondary);
font-size: 18px;
}
/* ===== 收藏页面 ===== */
.wechat-favorites-content {
flex: 1;
background: var(--wechat-bg);
overflow: hidden;
display: flex;
flex-direction: column;
min-height: 0;
}
.wechat-favorites-tabs {
display: flex;
padding: 0 12px;
background: var(--wechat-bg);
border-bottom: 0.5px solid var(--wechat-border);
}
.wechat-favorites-tab {
padding: 10px 15px;
font-size: 13px;
color: var(--wechat-text-secondary);
cursor: pointer;
border-bottom: 2px solid transparent;
transition: all 0.2s;
}
.wechat-favorites-tab.active {
color: var(--wechat-text);
border-bottom-color: var(--wechat-green);
}
.wechat-favorites-list {
flex: 1;
overflow-y: auto;
min-height: 0;
-webkit-overflow-scrolling: touch;
}
.wechat-favorites-item {
background: var(--wechat-white);
padding: 12px 15px;
border-bottom: 0.5px solid var(--wechat-border);
}
.wechat-favorites-item-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 6px;
}
.wechat-favorites-item-title {
font-size: 15px;
color: var(--wechat-text);
font-weight: 500;
}
.wechat-favorites-item-date {
font-size: 12px;
color: var(--wechat-text-secondary);
}
.wechat-favorites-item-content {
font-size: 14px;
color: var(--wechat-text-secondary);
line-height: 1.4;
margin-bottom: 8px;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
}
.wechat-favorites-item-source {
display: flex;
align-items: center;
font-size: 12px;
color: var(--wechat-text-secondary);
}
.wechat-favorites-item-tag {
background: var(--wechat-search-bg);
padding: 2px 6px;
border-radius: 3px;
margin-right: 8px;
font-size: 11px;
}
/* ===== 收藏页面 - 世界书标题行 ===== */
.wechat-favorites-header {
display: flex;
align-items: center;
padding: 12px 15px;
background: var(--wechat-white);
border-bottom: 0.5px solid var(--wechat-border);
}
/* 角色卡世界书头部(可点击折叠) */
.wechat-favorites-character-header {
cursor: pointer;
transition: background 0.2s;
}
.wechat-favorites-character-header:hover {
background: var(--wechat-bg);
}
.wechat-favorites-character-header:active {
background: var(--wechat-border);
}
/* 折叠图标 */
.wechat-favorites-collapse-icon {
width: 16px;
height: 16px;
font-size: 10px;
color: var(--wechat-text-secondary);
display: flex;
align-items: center;
justify-content: center;
margin-right: 6px;
flex-shrink: 0;
transition: transform 0.2s;
}
.wechat-favorites-header-icon {
font-size: 20px;
margin-right: 12px;
}
.wechat-favorites-header-info {
flex: 1;
display: flex;
flex-direction: column;
}
.wechat-favorites-header-title {
font-size: 15px;
font-weight: 500;
color: var(--wechat-text);
}
.wechat-favorites-header-count {
font-size: 12px;
color: var(--wechat-text-secondary);
margin-top: 2px;
}
.wechat-favorites-delete-btn {
width: 24px;
height: 24px;
border: none;
background: none;
color: var(--wechat-text-secondary);
font-size: 18px;
cursor: pointer;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
}
.wechat-favorites-delete-btn:hover {
background: rgba(255, 77, 79, 0.1);
color: #ff4d4f;
}
/* ===== 用户设定样式 ===== */
.wechat-favorites-user {
background: linear-gradient(135deg, rgba(87, 107, 149, 0.1) 0%, rgba(87, 107, 149, 0.05) 100%);
border-left: 3px solid #576B95;
}
.wechat-favorites-user .wechat-favorites-header-icon {
font-size: 22px;
}
.wechat-favorites-user .wechat-favorites-header-count {
font-size: 11px;
color: var(--wechat-text-secondary);
display: -webkit-box;
-webkit-line-clamp: 1;
-webkit-box-orient: vertical;
overflow: hidden;
max-width: 150px;
}
/* 用户设定编辑按钮 */
.wechat-user-edit-btn {
width: 28px;
height: 28px;
border: none;
background: var(--wechat-green);
color: white;
border-radius: 50%;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
margin-right: 10px;
flex-shrink: 0;
transition: all 0.2s;
}
.wechat-user-edit-btn:hover {
background: var(--wechat-green-dark);
transform: scale(1.05);
}
.wechat-user-edit-btn:active {
transform: scale(0.95);
}
.wechat-user-edit-btn svg {
stroke: white;
}
/* ===== 收藏页面 - 条目细条 ===== */
.wechat-favorites-entry {
display: flex;
align-items: center;
padding: 10px 15px;
background: var(--wechat-white);
border-bottom: 0.5px solid var(--wechat-border);
cursor: pointer;
transition: background 0.2s;
}
.wechat-favorites-entry:hover {
background: var(--wechat-bg);
}
.wechat-favorites-entry.disabled {
opacity: 0.5;
}
.wechat-favorites-entry-info {
flex: 1;
min-width: 0;
display: flex;
flex-direction: column;
}
.wechat-favorites-entry-title {
font-size: 14px;
color: var(--wechat-text);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.wechat-favorites-entry-keys {
font-size: 11px;
color: var(--wechat-text-secondary);
margin-top: 2px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.wechat-favorites-entry-tag {
font-size: 10px;
color: var(--wechat-text-secondary);
background: var(--wechat-bg);
padding: 2px 6px;
border-radius: 3px;
margin: 0 8px;
flex-shrink: 0;
}
.wechat-favorites-entry-arrow {
color: var(--wechat-text-secondary);
font-size: 16px;
flex-shrink: 0;
}
/* ===== Toggle 开关 ===== */
.wechat-toggle {
position: relative;
display: inline-block;
width: 44px;
height: 24px;
flex-shrink: 0;
margin-right: 10px;
}
.wechat-toggle input {
opacity: 0;
width: 0;
height: 0;
}
.wechat-toggle-slider {
position: absolute;
cursor: pointer;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: #e0e0e0;
transition: 0.3s;
border-radius: 24px;
}
.wechat-toggle-slider:before {
position: absolute;
content: "";
height: 20px;
width: 20px;
left: 2px;
bottom: 2px;
background-color: white;
transition: 0.3s;
border-radius: 50%;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
}
.wechat-toggle input:checked + .wechat-toggle-slider {
background-color: #07C160;
}
.wechat-toggle input:checked + .wechat-toggle-slider:before {
transform: translateX(20px);
}
/* 小号 toggle用于条目 */
.wechat-toggle.wechat-toggle-small {
width: 36px;
height: 20px;
}
.wechat-toggle.wechat-toggle-small .wechat-toggle-slider:before {
height: 16px;
width: 16px;
}
.wechat-toggle.wechat-toggle-small input:checked + .wechat-toggle-slider:before {
transform: translateX(16px);
}
/* 深色模式 */
.wechat-dark .wechat-toggle-slider {
background-color: #4a4a4a;
}
.wechat-dark .wechat-toggle input:checked + .wechat-toggle-slider {
background-color: #07C160;
}
/* ===== 条目详情弹窗 ===== */
.wechat-entry-detail {
padding: 10px 0;
}
.wechat-entry-detail-row {
display: flex;
align-items: center;
padding: 8px 0;
border-bottom: 0.5px solid var(--wechat-border);
}
.wechat-entry-detail-row:last-child {
border-bottom: none;
}
.wechat-entry-detail-label {
font-size: 13px;
color: var(--wechat-text-secondary);
width: 60px;
flex-shrink: 0;
}
.wechat-entry-detail-value {
font-size: 14px;
color: var(--wechat-text);
flex: 1;
}
.wechat-entry-detail-content {
font-size: 13px;
color: var(--wechat-text);
line-height: 1.6;
margin-top: 8px;
padding: 10px;
background: var(--wechat-bg);
border-radius: 6px;
max-height: 200px;
overflow-y: auto;
white-space: pre-wrap;
word-break: break-word;
-webkit-overflow-scrolling: touch;
}
/* ===== 世界书选择弹窗 ===== */
.wechat-modal-large {
width: 340px;
max-height: 80vh;
display: flex;
flex-direction: column;
}
.wechat-lorebook-list {
flex: 1;
overflow-y: auto;
max-height: 300px;
margin: 10px 0;
-webkit-overflow-scrolling: touch;
}
.wechat-lorebook-item {
display: flex;
align-items: center;
padding: 12px;
border-bottom: 0.5px solid var(--wechat-border);
cursor: pointer;
transition: background 0.2s;
}
.wechat-lorebook-item:hover {
background: var(--wechat-bg);
}
.wechat-lorebook-item-icon {
width: 40px;
height: 40px;
border-radius: 8px;
background: #576B95;
display: flex;
align-items: center;
justify-content: center;
margin-right: 12px;
}
.wechat-lorebook-item-icon svg {
width: 24px;
height: 24px;
stroke: white;
}
.wechat-lorebook-item-name {
flex: 1;
font-size: 15px;
color: var(--wechat-text);
}
.wechat-lorebook-item-arrow {
color: var(--wechat-text-secondary);
font-size: 18px;
}
.wechat-btn-block {
display: block;
width: 100%;
}
.wechat-btn-small {
padding: 8px 16px;
font-size: 14px;
}
.wechat-btn-danger {
background: #ff4d4f;
color: white;
}
.wechat-btn-blue {
background: #576B95;
color: white;
}
/* ===== 设置页面增强 ===== */
.wechat-settings-section-title {
padding: 12px 15px 8px;
font-size: 13px;
color: var(--wechat-text-secondary);
text-transform: uppercase;
letter-spacing: 0.5px;
}
.wechat-settings-item-vertical {
flex-direction: column;
align-items: flex-start;
gap: 8px;
}
.wechat-settings-input {
width: 100%;
padding: 10px 12px;
border: 1px solid var(--wechat-border);
border-radius: 6px;
font-size: 14px;
background: var(--wechat-search-bg);
color: var(--wechat-text);
box-sizing: border-box;
}
.wechat-settings-input:focus {
outline: none;
border-color: var(--wechat-green);
}
.wechat-settings-input::placeholder {
color: var(--wechat-text-secondary);
}
.wechat-settings-select {
appearance: none;
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23888' d='M6 8L1 3h10z'/%3E%3C/svg%3E");
background-repeat: no-repeat;
background-position: right 12px center;
padding-right: 32px;
cursor: pointer;
}
.wechat-settings-input-wrapper {
width: 100%;
position: relative;
display: flex;
align-items: center;
}
.wechat-settings-input-wrapper .wechat-settings-input {
padding-right: 40px;
}
.wechat-settings-eye-btn {
position: absolute;
right: 8px;
background: none;
border: none;
padding: 5px;
cursor: pointer;
color: var(--wechat-text-secondary);
display: flex;
align-items: center;
justify-content: center;
}
.wechat-settings-eye-btn:hover {
color: var(--wechat-text);
}
.wechat-settings-eye-btn svg {
stroke: currentColor;
fill: none;
}
/* ===== 文件导入隐藏 ===== */
.wechat-file-input {
display: none;
}
/* ===== 弹窗 ===== */
.wechat-modal {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.5);
display: flex;
align-items: center;
justify-content: center;
z-index: 10000;
}
.wechat-phone .wechat-modal {
position: absolute;
padding: 12px;
box-sizing: border-box;
overflow: hidden;
}
.wechat-modal.hidden {
display: none;
}
.wechat-modal-content {
background: var(--wechat-white);
border-radius: 12px;
padding: 20px;
width: 300px;
max-width: calc(100% - 24px);
max-height: calc(100% - 24px);
overflow-y: auto;
-webkit-overflow-scrolling: touch;
margin: auto;
}
.wechat-modal-title {
font-size: 17px;
font-weight: 600;
color: var(--wechat-text);
margin-bottom: 15px;
text-align: center;
}
/* 弹窗右上角关闭按钮 */
.wechat-modal-close-x {
position: absolute;
top: 12px;
right: 12px;
width: 28px;
height: 28px;
border: none;
background: rgba(255, 77, 79, 0.1);
color: #ff4d4f;
font-size: 20px;
font-weight: 500;
cursor: pointer;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
line-height: 1;
transition: all 0.2s;
}
.wechat-modal-close-x:hover {
background: #ff4d4f;
color: white;
}
.wechat-modal-close-x:active {
transform: scale(0.95);
}
.wechat-modal-body {
font-size: 14px;
color: var(--wechat-text-secondary);
margin-bottom: 20px;
text-align: center;
}
.wechat-modal-actions {
display: flex;
gap: 10px;
}
.wechat-modal-actions .wechat-btn {
flex: 1;
}
/* ===== 角色卡预览 ===== */
.wechat-card-preview {
display: flex;
flex-direction: column;
align-items: center;
padding: 20px;
}
.wechat-card-preview-avatar {
width: 80px;
height: 80px;
border-radius: 10px;
background: var(--wechat-green);
margin-bottom: 15px;
display: flex;
align-items: center;
justify-content: center;
font-size: 36px;
color: white;
overflow: hidden;
}
.wechat-card-preview-avatar img {
width: 100%;
height: 100%;
object-fit: cover;
}
.wechat-card-preview-name {
font-size: 18px;
font-weight: 600;
color: var(--wechat-text);
margin-bottom: 5px;
}
.wechat-card-preview-desc {
font-size: 13px;
color: var(--wechat-text-secondary);
text-align: center;
max-height: 100px;
overflow-y: auto;
}
/* ===== 空状态 ===== */
.wechat-empty {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 80px 20px;
color: var(--wechat-text-secondary);
height: 100%;
}
.wechat-empty-icon {
font-size: 56px;
margin-bottom: 20px;
opacity: 0.6;
}
.wechat-empty-text {
font-size: 14px;
text-align: center;
line-height: 1.6;
}
/* ===== 滚动条美化 ===== */
.wechat-phone ::-webkit-scrollbar {
width: 4px;
}
.wechat-phone ::-webkit-scrollbar-track {
background: transparent;
}
.wechat-phone ::-webkit-scrollbar-thumb {
background: rgba(0, 0, 0, 0.2);
border-radius: 2px;
}
/* ===== 动画 ===== */
@keyframes wechat-fade-in {
from {
opacity: 0;
transform: translate(-50%, -50%) scale(0.95);
}
to {
opacity: 1;
transform: translate(-50%, -50%) scale(1);
}
}
.wechat-phone:not(.hidden) {
animation: wechat-fade-in 0.3s ease-out;
}
/* ===== 多条消息编辑弹窗 ===== */
.wechat-modal-multi-msg {
width: 340px;
max-width: 92%;
max-height: 80vh;
display: flex;
flex-direction: column;
}
.wechat-multi-msg-list {
max-height: 300px;
overflow-y: auto;
margin: 10px 0;
display: flex;
flex-direction: column;
gap: 10px;
-webkit-overflow-scrolling: touch;
}
.wechat-multi-msg-item {
display: flex;
align-items: flex-start;
gap: 8px;
background: var(--wechat-bg);
padding: 10px;
border-radius: 8px;
}
.wechat-multi-msg-item-num {
width: 24px;
height: 24px;
border-radius: 50%;
background: var(--wechat-green);
color: white;
display: flex;
align-items: center;
justify-content: center;
font-size: 12px;
font-weight: 600;
flex-shrink: 0;
}
.wechat-multi-msg-item-input {
flex: 1;
min-height: 36px;
max-height: 100px;
padding: 8px 10px;
border: 1px solid #ddd;
border-radius: 6px;
font-size: 14px;
resize: none;
background: #fff !important;
color: #333 !important;
line-height: 1.4;
}
.wechat-multi-msg-item-input:focus {
outline: none;
border-color: var(--wechat-green);
}
.wechat-multi-msg-item-input::placeholder {
color: #999 !important;
}
.wechat-multi-msg-item-delete {
width: 24px;
height: 24px;
border: none;
background: none;
color: var(--wechat-text-secondary);
font-size: 18px;
cursor: pointer;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
transition: all 0.2s;
}
.wechat-multi-msg-item-delete:hover {
background: rgba(255, 77, 79, 0.1);
color: #ff4d4f;
}
.wechat-btn-add-msg {
display: flex;
align-items: center;
justify-content: center;
gap: 6px;
width: 100%;
padding: 10px;
margin-bottom: 15px;
background: var(--wechat-bg);
border: 2px dashed var(--wechat-border);
border-radius: 8px;
color: var(--wechat-text-secondary);
font-size: 14px;
cursor: pointer;
transition: all 0.2s;
}
.wechat-btn-add-msg:hover {
border-color: var(--wechat-green);
color: var(--wechat-green);
background: rgba(7, 193, 96, 0.05);
}
.wechat-btn-add-msg span {
font-size: 18px;
font-weight: 500;
}
/* ===== 语音消息样式 ===== */
.wechat-voice-bubble {
background: var(--wechat-bubble-other);
border-radius: 6px;
padding: 10px 14px;
cursor: pointer;
position: relative;
transition: all 0.2s;
min-height: 20px;
display: flex;
align-items: center;
gap: 8px;
}
.wechat-voice-bubble.self {
background: var(--wechat-bubble-self);
}
/* 语音气泡三角 - 接收消息(左侧) */
.wechat-voice-bubble::before {
content: '';
position: absolute;
left: -8px;
top: 12px;
border: 6px solid transparent;
border-right-color: var(--wechat-bubble-other);
}
/* 语音气泡三角 - 发送消息(右侧) */
.wechat-voice-bubble.self::before {
left: auto;
right: -8px;
border-right-color: transparent;
border-left-color: var(--wechat-bubble-self);
}
.wechat-voice-bar {
display: flex;
align-items: center;
gap: 8px;
}
/* 接收消息:图标在左,时长在右 */
.wechat-voice-bubble:not(.self) .wechat-voice-bar {
flex-direction: row-reverse;
justify-content: flex-end;
}
/* 发送消息:时长在左,图标在右 */
.wechat-voice-bubble.self .wechat-voice-bar {
flex-direction: row;
justify-content: flex-end;
}
.wechat-voice-icon {
display: flex;
align-items: center;
justify-content: center;
color: var(--wechat-text);
}
.wechat-voice-icon-svg {
width: 20px;
height: 20px;
color: inherit;
}
/* WiFi信号样式图标 */
.wechat-voice-waves-icon {
width: 18px;
height: 18px;
color: inherit;
}
/* 用户消息的图标朝向左(水平翻转) */
.wechat-voice-bubble.self .wechat-voice-waves-icon {
transform: scaleX(-1);
}
/* 对方消息的图标朝向右(默认方向) */
.wechat-voice-bubble:not(.self) .wechat-voice-waves-icon {
transform: none;
}
/* 三条弧线样式 - 默认全部显示 */
.wechat-voice-arc {
opacity: 1;
transition: opacity 0.15s ease;
}
/* 播放状态:弧线依次出现动画(从小到大) */
.wechat-voice-bubble.playing .wechat-voice-arc {
opacity: 0;
}
.wechat-voice-bubble.playing .wechat-voice-arc.arc1 {
animation: wechat-arc-play 1s ease-in-out infinite;
animation-delay: 0s;
}
.wechat-voice-bubble.playing .wechat-voice-arc.arc2 {
animation: wechat-arc-play 1s ease-in-out infinite;
animation-delay: 0.2s;
}
.wechat-voice-bubble.playing .wechat-voice-arc.arc3 {
animation: wechat-arc-play 1s ease-in-out infinite;
animation-delay: 0.4s;
}
@keyframes wechat-arc-play {
0% {
opacity: 0;
}
20%, 60% {
opacity: 1;
}
80%, 100% {
opacity: 0;
}
}
.wechat-voice-duration {
font-size: 15px;
color: var(--wechat-text);
font-weight: 400;
}
.wechat-voice-waves {
display: flex;
align-items: center;
color: var(--wechat-text);
}
/* 语音转文字区域 - 显示在气泡下方 */
.wechat-voice-text {
display: none;
margin-top: 6px;
padding: 8px 10px;
background: #f5f5f5;
border-radius: 6px;
font-size: 13px;
color: #333;
line-height: 1.5;
word-break: break-word;
max-width: 200px;
position: relative;
}
.wechat-voice-text.visible {
display: block;
}
.wechat-voice-text.hidden {
display: none;
}
/* 用户消息转文字区域右对齐 */
.wechat-message.self .wechat-voice-text {
margin-left: auto;
text-align: left;
}
.wechat-voice-bubble.expanded {
width: auto !important;
max-width: 220px;
}
/* 语音气泡长按菜单容器 */
.wechat-voice-menu {
position: absolute;
top: 50%;
transform: translateY(-50%);
display: none;
flex-direction: row;
background: #4c4c4c;
border-radius: 6px;
padding: 0;
z-index: 100;
box-shadow: 0 2px 12px rgba(0,0,0,0.3);
}
/* 用户消息菜单在左侧 */
.wechat-message.self .wechat-voice-menu {
right: calc(100% + 8px);
left: auto;
}
/* 对方消息菜单在右侧 */
.wechat-message:not(.self) .wechat-voice-menu {
left: calc(100% + 8px);
right: auto;
}
.wechat-voice-menu.visible {
display: flex;
}
.wechat-voice-menu-item {
padding: 10px 14px;
color: #fff;
font-size: 13px;
white-space: nowrap;
cursor: pointer;
border-right: 1px solid rgba(255,255,255,0.1);
}
.wechat-voice-menu-item:last-child {
border-right: none;
}
.wechat-voice-menu-item:hover {
background: rgba(255,255,255,0.1);
}
.wechat-voice-menu-item:first-child {
border-radius: 6px 0 0 6px;
}
.wechat-voice-menu-item:last-child {
border-radius: 0 6px 6px 0;
}
/* 菜单小三角 */
.wechat-voice-menu::before {
content: '';
position: absolute;
top: 50%;
transform: translateY(-50%);
border: 6px solid transparent;
}
.wechat-message.self .wechat-voice-menu::before {
right: -12px;
border-left-color: #4c4c4c;
}
.wechat-message:not(.self) .wechat-voice-menu::before {
left: -12px;
border-right-color: #4c4c4c;
}
/* ===== 语音输入弹窗 ===== */
.wechat-modal-voice {
width: 320px;
max-width: 92%;
}
.wechat-voice-input-hint {
font-size: 13px;
color: var(--wechat-text-secondary);
margin-bottom: 10px;
text-align: center;
}
.wechat-voice-input-text {
width: 100%;
min-height: 80px;
max-height: 150px;
padding: 10px 12px;
border: 1px solid #ddd;
border-radius: 8px;
font-size: 14px;
resize: none;
background: #fff !important;
color: #333 !important;
line-height: 1.5;
box-sizing: border-box;
}
.wechat-voice-input-text:focus {
outline: none;
border-color: var(--wechat-green);
}
.wechat-voice-input-text::placeholder {
color: #999 !important;
}
.wechat-voice-preview {
display: flex;
align-items: center;
justify-content: center;
gap: 8px;
margin: 12px 0;
padding: 10px;
background: var(--wechat-bg);
border-radius: 6px;
}
.wechat-voice-preview-label {
font-size: 13px;
color: var(--wechat-text-secondary);
}
.wechat-voice-preview-duration {
font-size: 18px;
font-weight: 600;
color: var(--wechat-green);
}
/* ===== 展开输入面板 ===== */
.wechat-expand-input {
background: var(--wechat-white);
border-top: 1px solid var(--wechat-border);
padding: 12px;
max-height: 280px;
overflow-y: auto;
-webkit-overflow-scrolling: touch;
}
.wechat-expand-input.hidden {
display: none;
}
/* ===== 功能面板 ===== */
.wechat-func-panel {
background: var(--wechat-header-bg);
border-top: 1px solid var(--wechat-border);
padding: 15px 10px 10px;
overflow: hidden;
}
.wechat-func-panel.hidden {
display: none;
}
.wechat-func-pages {
display: flex;
transition: transform 0.3s ease;
touch-action: pan-x;
cursor: grab;
user-select: none;
}
.wechat-func-pages:active {
cursor: grabbing;
}
.wechat-func-page {
min-width: 100%;
flex-shrink: 0;
}
.wechat-func-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 15px 8px;
}
.wechat-func-item {
display: flex;
flex-direction: column;
align-items: center;
gap: 6px;
cursor: pointer;
transition: opacity 0.2s;
}
.wechat-func-item:active {
opacity: 0.6;
}
.wechat-func-item span {
font-size: 10px;
color: var(--wechat-text-secondary);
text-align: center;
white-space: nowrap;
}
.wechat-func-icon {
width: 50px;
height: 50px;
border-radius: 12px;
background: var(--wechat-white);
display: flex;
align-items: center;
justify-content: center;
color: var(--wechat-text);
}
.wechat-func-icon svg {
width: 26px;
height: 26px;
}
.wechat-func-icon.red {
background: #FA5151;
color: white;
}
.wechat-func-icon.orange {
background: #FF976A;
color: white;
}
.wechat-func-icon.green {
background: var(--wechat-green);
color: white;
}
.wechat-func-icon.blue {
background: #576B95;
color: white;
}
/* 功能面板指示点 */
.wechat-func-dots {
display: flex;
justify-content: center;
gap: 6px;
margin-top: 12px;
}
.wechat-func-dot {
width: 6px;
height: 6px;
border-radius: 50%;
background: var(--wechat-border);
transition: all 0.2s;
}
.wechat-func-dot.active {
background: var(--wechat-text-secondary);
width: 12px;
border-radius: 3px;
}
.wechat-expand-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 10px;
}
.wechat-expand-title {
font-size: 14px;
font-weight: 600;
color: var(--wechat-text);
}
.wechat-expand-close {
width: 28px;
height: 28px;
border: none;
background: var(--wechat-bg);
color: var(--wechat-text-secondary);
border-radius: 50%;
font-size: 14px;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
}
.wechat-expand-close:active {
background: var(--wechat-border);
}
.wechat-expand-body {
margin-bottom: 10px;
}
.wechat-expand-textarea {
width: 100%;
min-height: 60px;
max-height: 120px;
padding: 10px;
border: 1px solid var(--wechat-border);
border-radius: 8px;
font-size: 14px;
resize: none;
background: var(--wechat-search-bg);
color: var(--wechat-text);
box-sizing: border-box;
line-height: 1.4;
}
.wechat-expand-textarea:focus {
outline: none;
border-color: var(--wechat-green);
}
.wechat-expand-textarea::placeholder {
color: var(--wechat-text-secondary);
}
.wechat-expand-hint {
font-size: 12px;
color: var(--wechat-text-secondary);
margin-bottom: 8px;
}
.wechat-expand-preview {
display: flex;
align-items: center;
gap: 8px;
padding: 8px 10px;
background: var(--wechat-bg);
border-radius: 6px;
margin-top: 8px;
}
.wechat-expand-preview-label {
font-size: 12px;
color: var(--wechat-text-secondary);
}
.wechat-expand-preview-value {
font-size: 14px;
font-weight: 600;
color: var(--wechat-green);
}
.wechat-expand-footer {
display: flex;
justify-content: flex-end;
}
.wechat-expand-send {
padding: 8px 24px;
background: var(--wechat-green);
color: white;
border: none;
border-radius: 6px;
font-size: 14px;
cursor: pointer;
}
.wechat-expand-send:active {
background: var(--wechat-green-dark);
}
/* 多条消息列表 */
.wechat-expand-msg-list {
display: flex;
flex-direction: column;
gap: 8px;
max-height: 150px;
overflow-y: auto;
-webkit-overflow-scrolling: touch;
}
.wechat-expand-msg-item {
display: flex;
align-items: center;
gap: 8px;
overflow: hidden;
}
.wechat-expand-msg-num {
width: 20px;
height: 20px;
border-radius: 50%;
background: var(--wechat-green);
color: white;
font-size: 11px;
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
}
.wechat-expand-msg-input {
flex: 1;
min-width: 0;
padding: 8px 10px;
border: 1px solid var(--wechat-border);
border-radius: 6px;
font-size: 14px;
background: var(--wechat-bg);
color: var(--wechat-text);
}
.wechat-expand-msg-input:focus {
outline: none;
border-color: var(--wechat-green);
}
.wechat-expand-msg-del {
width: 24px;
height: 24px;
border: none;
background: none;
color: var(--wechat-text-secondary);
font-size: 16px;
cursor: pointer;
flex-shrink: 0;
}
.wechat-expand-msg-del:active {
color: #ff4d4f;
}
.wechat-expand-add-btn {
display: flex;
align-items: center;
justify-content: center;
gap: 4px;
padding: 8px;
margin-top: 8px;
border: 1px dashed var(--wechat-border);
border-radius: 6px;
background: none;
color: var(--wechat-text-secondary);
font-size: 13px;
cursor: pointer;
width: 100%;
}
.wechat-expand-add-btn:active {
border-color: var(--wechat-green);
color: var(--wechat-green);
}
/* ===== 混合消息类型选择器 ===== */
.wechat-expand-msg-type {
display: flex;
align-items: center;
gap: 4px;
padding: 4px 8px;
border-radius: 4px;
background: var(--wechat-bg);
cursor: pointer;
transition: all 0.2s;
flex-shrink: 0;
}
.wechat-expand-msg-type:hover {
background: var(--wechat-border);
}
.wechat-expand-msg-type:active {
transform: scale(0.95);
}
.wechat-expand-type-icon {
display: flex;
align-items: center;
justify-content: center;
}
.wechat-expand-type-icon svg {
width: 16px;
height: 16px;
color: var(--wechat-text);
}
.wechat-expand-type-label {
font-size: 11px;
color: var(--wechat-text-secondary);
}
/* 语音时长显示 */
.wechat-expand-voice-dur {
font-size: 12px;
color: var(--wechat-green);
font-weight: 600;
flex-shrink: 0;
min-width: 28px;
text-align: right;
}
/* 表情预览 */
.wechat-expand-sticker-preview {
display: flex;
align-items: center;
gap: 8px;
flex: 1;
min-width: 0;
}
.wechat-expand-sticker-preview img {
border-radius: 4px;
object-fit: contain;
}
.wechat-expand-sticker-change {
padding: 4px 10px;
border: none;
border-radius: 4px;
background: var(--wechat-bg);
color: var(--wechat-text-secondary);
font-size: 12px;
cursor: pointer;
transition: all 0.2s;
}
.wechat-expand-sticker-change:hover {
background: var(--wechat-border);
color: var(--wechat-text);
}
/* 表情选择按钮 */
.wechat-expand-sticker-select {
flex: 1;
padding: 8px 12px;
border: 1px dashed var(--wechat-border);
border-radius: 6px;
background: none;
color: var(--wechat-text-secondary);
font-size: 13px;
cursor: pointer;
transition: all 0.2s;
}
.wechat-expand-sticker-select:hover {
border-color: var(--wechat-green);
color: var(--wechat-green);
background: rgba(7, 193, 96, 0.05);
}
.wechat-expand-sticker-select:active {
transform: scale(0.98);
}
/* ===== 用户设定条目样式 ===== */
.wechat-favorites-user-entry {
background: linear-gradient(135deg, rgba(87, 107, 149, 0.08) 0%, rgba(87, 107, 149, 0.03) 100%);
border-left: 3px solid #576B95;
}
.wechat-favorites-user-entry .wechat-favorites-header-icon {
font-size: 18px;
margin-right: 10px;
flex-shrink: 0;
}
.wechat-add-persona-btn {
display: flex;
align-items: center;
justify-content: center;
gap: 6px;
width: calc(100% - 24px);
margin: 12px;
padding: 12px;
background: var(--wechat-white);
border: 2px dashed var(--wechat-border);
border-radius: 8px;
color: var(--wechat-text-secondary);
font-size: 14px;
cursor: pointer;
transition: all 0.2s;
}
.wechat-add-persona-btn:hover {
border-color: var(--wechat-green);
color: var(--wechat-green);
background: rgba(7, 193, 96, 0.05);
}
.wechat-add-persona-btn:active {
transform: scale(0.98);
}
.wechat-add-persona-btn span {
font-size: 18px;
font-weight: 500;
}
/* ===== 服务页面 ===== */
.wechat-service-content {
flex: 1;
background: var(--wechat-bg);
overflow-y: auto;
min-height: 0;
-webkit-overflow-scrolling: touch;
padding-bottom: 40px;
}
/* 顶部绿色卡片 */
.wechat-service-card {
display: flex;
background: linear-gradient(135deg, #2AAF6E 0%, #1D9E5D 100%);
margin: 12px;
border-radius: 12px;
padding: 20px 15px;
box-shadow: 0 4px 12px rgba(42, 175, 110, 0.3);
}
.wechat-service-card-item {
flex: 1;
display: flex;
flex-direction: column;
align-items: center;
cursor: pointer;
transition: opacity 0.2s;
}
.wechat-service-card-item:active {
opacity: 0.7;
}
.wechat-service-card-icon {
width: 44px;
height: 44px;
background: rgba(255, 255, 255, 0.2);
border-radius: 10px;
display: flex;
align-items: center;
justify-content: center;
margin-bottom: 8px;
}
.wechat-service-card-icon svg {
stroke: white;
fill: none;
}
.wechat-service-card-text {
font-size: 14px;
color: white;
font-weight: 500;
}
.wechat-service-card-amount {
font-size: 13px;
color: rgba(255, 255, 255, 0.8);
margin-top: 2px;
}
.wechat-service-card-divider {
width: 1px;
background: rgba(255, 255, 255, 0.3);
margin: 0 10px;
}
/* 服务分组 */
.wechat-service-section {
background: var(--wechat-white);
margin: 12px;
border-radius: 12px;
padding: 15px;
}
.wechat-service-section-title {
font-size: 13px;
color: var(--wechat-text-secondary);
margin-bottom: 15px;
font-weight: 500;
}
.wechat-service-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 18px 8px;
}
.wechat-service-item {
display: flex;
flex-direction: column;
align-items: center;
gap: 8px;
cursor: pointer;
transition: opacity 0.2s;
}
.wechat-service-item:active {
opacity: 0.6;
}
.wechat-service-item span {
font-size: 11px;
color: var(--wechat-text);
text-align: center;
white-space: nowrap;
}
.wechat-service-icon {
width: 44px;
height: 44px;
border-radius: 10px;
display: flex;
align-items: center;
justify-content: center;
}
.wechat-service-icon svg {
width: 24px;
height: 24px;
stroke: currentColor;
fill: none;
}
.wechat-service-icon.green {
background: rgba(7, 193, 96, 0.1);
color: #07C160;
}
.wechat-service-icon.blue {
background: rgba(87, 107, 149, 0.1);
color: #576B95;
}
.wechat-service-icon.orange {
background: rgba(245, 166, 35, 0.1);
color: #F5A623;
}
.wechat-service-icon.red {
background: rgba(250, 81, 81, 0.1);
color: #FA5151;
}
/* 钱包金额编辑弹窗 */
.wechat-wallet-input {
width: 100%;
padding: 12px;
border: 1px solid var(--wechat-border);
border-radius: 8px;
font-size: 18px;
text-align: center;
background: var(--wechat-bg);
color: var(--wechat-text);
margin-bottom: 15px;
}
.wechat-wallet-input:focus {
outline: none;
border-color: var(--wechat-green);
}
/* ===== 滑出面板 ===== */
.wechat-slide-panel {
background: var(--wechat-white);
margin: 0 12px 12px;
border-radius: 12px;
padding: 15px;
overflow: hidden;
transition: all 0.3s ease;
max-height: 280px;
}
.wechat-slide-panel.hidden {
max-height: 0;
padding: 0 15px;
margin-bottom: 0;
opacity: 0;
}
/* 上下文面板需要滚动 */
.wechat-slide-panel#wechat-context-panel {
max-height: 320px;
overflow-y: auto;
-webkit-overflow-scrolling: touch;
}
/* 总结API配置面板 */
.wechat-slide-panel#wechat-summary-panel {
max-height: 320px;
overflow-y: auto;
-webkit-overflow-scrolling: touch;
}
/* Meme表情包面板 */
.wechat-slide-panel#wechat-meme-stickers-panel {
max-height: 400px;
overflow-y: auto;
-webkit-overflow-scrolling: touch;
}
/* 面板隐藏状态需要覆盖ID选择器的max-height */
.wechat-slide-panel#wechat-context-panel.hidden,
.wechat-slide-panel#wechat-summary-panel.hidden,
.wechat-slide-panel#wechat-meme-stickers-panel.hidden {
max-height: 0;
padding: 0 15px;
margin-bottom: 0;
opacity: 0;
overflow: hidden;
}
.wechat-slide-panel-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 12px;
}
.wechat-slide-panel-title {
font-size: 14px;
font-weight: 500;
color: var(--wechat-text);
}
.wechat-slide-panel-value {
font-size: 14px;
font-weight: 600;
color: var(--wechat-green);
}
.wechat-slide-panel-body {
margin-bottom: 8px;
}
.wechat-slide-panel-row {
display: flex;
gap: 10px;
align-items: center;
}
.wechat-slide-panel-hint {
font-size: 11px;
color: var(--wechat-text-secondary);
line-height: 1.4;
}
/* 滑块样式 */
.wechat-slider {
width: 100%;
height: 6px;
-webkit-appearance: none;
appearance: none;
background: var(--wechat-border);
border-radius: 3px;
outline: none;
cursor: pointer;
}
.wechat-slider::-webkit-slider-thumb {
-webkit-appearance: none;
appearance: none;
width: 20px;
height: 20px;
border-radius: 50%;
background: var(--wechat-green);
cursor: pointer;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2);
transition: transform 0.15s;
}
.wechat-slider::-webkit-slider-thumb:hover {
transform: scale(1.1);
}
.wechat-slider::-webkit-slider-thumb:active {
transform: scale(0.95);
}
.wechat-slider::-moz-range-thumb {
width: 20px;
height: 20px;
border-radius: 50%;
background: var(--wechat-green);
cursor: pointer;
border: none;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.2);
}
.wechat-slider-labels {
display: flex;
justify-content: space-between;
margin-top: 6px;
padding: 0 2px;
}
.wechat-slider-labels span {
font-size: 10px;
color: var(--wechat-text-secondary);
}
/* 滑出输入框 */
.wechat-slide-input {
flex: 1;
padding: 10px 12px;
border: 1px solid var(--wechat-border);
border-radius: 8px;
font-size: 16px;
background: var(--wechat-bg);
color: var(--wechat-text);
}
.wechat-slide-input:focus {
outline: none;
border-color: var(--wechat-green);
}
/* 上下文面板扩展样式 */
.wechat-slide-panel-section {
transition: opacity 0.2s;
}
.wechat-slide-panel-row-label {
display: flex;
justify-content: space-between;
align-items: center;
font-size: 13px;
color: var(--wechat-text);
margin-bottom: 8px;
}
.wechat-tag-add-btn {
width: 24px;
height: 24px;
border: none;
background: var(--wechat-green);
color: white;
border-radius: 50%;
font-size: 16px;
font-weight: 500;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
transition: all 0.2s;
}
.wechat-tag-add-btn:hover {
transform: scale(1.1);
}
.wechat-tag-add-btn:active {
transform: scale(0.95);
}
/* 标签列表 */
.wechat-context-tags {
display: flex;
flex-wrap: wrap;
gap: 6px;
margin-bottom: 10px;
min-height: 28px;
}
.wechat-context-tag-item {
display: flex;
align-items: center;
gap: 4px;
padding: 4px 8px;
background: var(--wechat-bg);
border-radius: 4px;
font-size: 12px;
color: var(--wechat-text);
}
.wechat-context-tag-item span {
color: var(--wechat-green);
font-family: monospace;
}
.wechat-tag-del-btn {
width: 16px;
height: 16px;
border: none;
background: none;
color: var(--wechat-text-secondary);
font-size: 14px;
cursor: pointer;
padding: 0;
display: flex;
align-items: center;
justify-content: center;
border-radius: 50%;
transition: all 0.2s;
}
.wechat-tag-del-btn:hover {
background: rgba(255, 77, 79, 0.1);
color: #ff4d4f;
}
.wechat-context-tag-empty {
font-size: 12px;
color: var(--wechat-text-secondary);
font-style: italic;
}
/* ===== 移动端适配 ===== */
@media screen and (max-width: 500px) {
/* 移动端手机界面 - 留白不全屏 */
.wechat-phone {
width: 92vw !important;
height: 85vh !important;
max-width: 360px !important;
max-height: 700px !important;
border-radius: 20px !important;
border: 4px solid #1a1a1a !important;
left: 50% !important;
top: 50% !important;
transform: translate(-50%, -50%) !important;
}
/* 移动端网格适配 */
.wechat-contacts-grid {
grid-template-columns: repeat(3, 1fr);
gap: 8px;
}
.wechat-card-avatar {
width: 60px;
height: 60px;
}
.wechat-card-fallback {
font-size: 24px;
}
.wechat-card-name {
font-size: 11px;
max-width: 70px;
}
/* 移动端弹窗适配 */
.wechat-modal-content {
width: 92% !important;
max-width: 340px;
}
.wechat-modal-multi-msg,
.wechat-modal-voice {
width: 92% !important;
max-width: 340px;
}
}
/* 触摸设备优化 */
@media (hover: none) and (pointer: coarse) {
/* 增大触摸区域 */
.wechat-contact-item,
.wechat-me-menu-item,
.wechat-dropdown-item {
min-height: 48px;
}
}
/* ===== Toast 提示 ===== */
.wechat-toast {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
background: rgba(0, 0, 0, 0.75);
color: white;
padding: 12px 24px;
border-radius: 8px;
font-size: 14px;
z-index: 10001;
pointer-events: none;
animation: wechat-toast-fade 2s ease-in-out forwards;
display: flex;
align-items: center;
gap: 8px;
white-space: nowrap;
}
.wechat-toast-icon {
font-size: 18px;
}
@keyframes wechat-toast-fade {
0% {
opacity: 0;
transform: translate(-50%, -50%) scale(0.8);
}
15% {
opacity: 1;
transform: translate(-50%, -50%) scale(1);
}
70% {
opacity: 1;
transform: translate(-50%, -50%) scale(1);
}
100% {
opacity: 0;
transform: translate(-50%, -50%) scale(0.9);
}
}
/* ===== 手机顶部通知横幅 ===== */
.wechat-notification-banner {
position: absolute;
top: 0;
left: 8px;
right: 8px;
background: rgba(255, 255, 255, 0.95);
backdrop-filter: blur(20px);
-webkit-backdrop-filter: blur(20px);
border-radius: 12px;
padding: 12px 16px;
z-index: 10002;
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);
transform: translateY(-100%);
animation: wechat-banner-slide 3s ease-in-out forwards;
display: flex;
align-items: center;
gap: 10px;
margin-top: 8px;
}
/* 通知横幅图标已移除,保留空样式以兼容 */
.wechat-notification-banner-icon {
display: none;
}
.wechat-notification-banner-content {
flex: 1;
min-width: 0;
}
.wechat-notification-banner-title {
font-size: 13px;
font-weight: 600;
color: #000;
margin-bottom: 2px;
}
.wechat-notification-banner-text {
font-size: 13px;
color: #666;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.wechat-notification-banner-time {
font-size: 11px;
color: #999;
flex-shrink: 0;
}
@keyframes wechat-banner-slide {
0% {
transform: translateY(-100%);
opacity: 0;
}
10% {
transform: translateY(0);
opacity: 1;
}
85% {
transform: translateY(0);
opacity: 1;
}
100% {
transform: translateY(-100%);
opacity: 0;
}
}
/* ===== 长按删除气泡 ===== */
.wechat-delete-bubble {
position: absolute;
left: 50%;
transform: translateX(-50%);
bottom: calc(100% + 8px);
background: #ff4d4f;
color: white;
padding: 8px 16px;
border-radius: 6px;
font-size: 13px;
cursor: pointer;
z-index: 100;
white-space: nowrap;
box-shadow: 0 2px 12px rgba(255, 77, 79, 0.4);
animation: wechat-bubble-pop 0.2s ease-out;
display: flex;
align-items: center;
gap: 4px;
}
.wechat-delete-bubble::after {
content: '';
position: absolute;
left: 50%;
bottom: -6px;
transform: translateX(-50%);
border-left: 6px solid transparent;
border-right: 6px solid transparent;
border-top: 6px solid #ff4d4f;
}
.wechat-delete-bubble:active {
background: #d9363e;
transform: translateX(-50%) scale(0.95);
}
@keyframes wechat-bubble-pop {
0% {
opacity: 0;
transform: translateX(-50%) translateY(10px) scale(0.8);
}
100% {
opacity: 1;
transform: translateX(-50%) translateY(0) scale(1);
}
}
/* 头像有气泡时的样式 */
.wechat-card-avatar.has-bubble {
z-index: 101;
}
/* ===== 世界书展开面板 ===== */
.wechat-favorites-item-expanded {
background: var(--wechat-bg);
border-left: 3px solid #576B95;
}
.wechat-lorebook-expand-panel {
background: var(--wechat-white);
border-top: 1px solid var(--wechat-border);
overflow: hidden;
max-height: 0;
opacity: 0;
transition: max-height 0.3s ease-out, opacity 0.2s ease-out;
}
.wechat-lorebook-expand-panel.wechat-lorebook-panel-show {
max-height: 500px;
opacity: 1;
}
.wechat-lorebook-panel-header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 12px 15px;
background: var(--wechat-bg);
border-bottom: 1px solid var(--wechat-border);
position: sticky;
top: 0;
z-index: 10;
}
.wechat-lorebook-panel-title {
font-size: 14px;
font-weight: 600;
color: var(--wechat-text);
}
.wechat-lorebook-panel-close {
background: none;
border: none;
color: #576B95;
font-size: 12px;
cursor: pointer;
padding: 4px 8px;
border-radius: 4px;
transition: background 0.2s;
}
.wechat-lorebook-panel-close:hover {
background: rgba(87, 107, 149, 0.1);
}
.wechat-lorebook-panel-content {
max-height: 350px;
overflow-y: auto;
-webkit-overflow-scrolling: touch;
scrollbar-width: thin;
scrollbar-color: rgba(0,0,0,0.2) transparent;
}
.wechat-lorebook-panel-content::-webkit-scrollbar {
width: 6px;
}
.wechat-lorebook-panel-content::-webkit-scrollbar-track {
background: transparent;
}
.wechat-lorebook-panel-content::-webkit-scrollbar-thumb {
background: rgba(0,0,0,0.2);
border-radius: 3px;
}
.wechat-lorebook-panel-content::-webkit-scrollbar-thumb:hover {
background: rgba(0,0,0,0.3);
}
.wechat-lorebook-entry-item {
padding: 12px 15px;
border-bottom: 1px solid var(--wechat-border);
transition: background 0.2s;
}
.wechat-lorebook-entry-item:last-child {
border-bottom: none;
}
.wechat-lorebook-entry-item:hover {
background: var(--wechat-bg);
}
.wechat-lorebook-entry-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 6px;
}
.wechat-lorebook-entry-title {
font-size: 14px;
font-weight: 500;
color: var(--wechat-text);
flex: 1;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.wechat-lorebook-entry-actions {
display: flex;
align-items: center;
gap: 8px;
}
.wechat-entry-edit-btn {
background: none;
border: none;
cursor: pointer;
font-size: 14px;
padding: 4px;
border-radius: 4px;
transition: background 0.2s;
}
.wechat-entry-edit-btn:hover {
background: rgba(0,0,0,0.05);
}
.wechat-lorebook-entry-keys {
display: flex;
flex-wrap: wrap;
gap: 4px;
margin-bottom: 6px;
}
.wechat-lorebook-entry-keys.hidden,
.wechat-lorebook-entry-preview.hidden {
display: none;
}
.wechat-lorebook-entry-preview {
font-size: 12px;
color: var(--wechat-text-secondary);
line-height: 1.5;
word-break: break-word;
}
/* 编辑表单 */
.wechat-lorebook-entry-edit-form {
margin-top: 10px;
padding-top: 10px;
border-top: 1px dashed var(--wechat-border);
}
.wechat-lorebook-entry-edit-form.hidden {
display: none;
}
.wechat-edit-field {
margin-bottom: 10px;
}
.wechat-edit-field label {
display: block;
font-size: 12px;
color: var(--wechat-text-secondary);
margin-bottom: 4px;
}
.wechat-edit-field input,
.wechat-edit-field textarea {
width: 100%;
padding: 8px 10px;
border: 1px solid var(--wechat-border);
border-radius: 6px;
font-size: 13px;
background: var(--wechat-search-bg);
color: var(--wechat-text);
box-sizing: border-box;
transition: border-color 0.2s, box-shadow 0.2s;
}
.wechat-edit-field input:focus,
.wechat-edit-field textarea:focus {
outline: none;
border-color: #576B95;
box-shadow: 0 0 0 2px rgba(87, 107, 149, 0.1);
}
.wechat-edit-field textarea {
resize: vertical;
min-height: 80px;
line-height: 1.5;
}
.wechat-edit-actions {
display: flex;
gap: 8px;
justify-content: flex-end;
}
.wechat-lorebook-panel-footer {
display: flex;
justify-content: space-between;
padding: 10px 15px;
background: var(--wechat-bg);
border-top: 1px solid var(--wechat-border);
}
.wechat-btn-small {
padding: 6px 12px;
font-size: 12px;
}
/* 标签样式 */
.wechat-tag {
display: inline-block;
padding: 2px 8px;
background: rgba(87, 107, 149, 0.1);
color: #576B95;
font-size: 11px;
border-radius: 10px;
}
/* ===== 用户设定展开面板 ===== */
.wechat-persona-expand-panel {
background: var(--wechat-white);
border-top: 1px solid var(--wechat-border);
overflow: hidden;
max-height: 0;
opacity: 0;
transition: max-height 0.3s ease-out, opacity 0.2s ease-out;
}
.wechat-persona-expand-panel.wechat-lorebook-panel-show {
max-height: 400px;
opacity: 1;
}
/* 用户设定包装容器 */
.wechat-persona-wrapper {
border-bottom: 1px solid var(--wechat-border);
}
.wechat-persona-wrapper:last-child {
border-bottom: none;
}
.wechat-persona-wrapper .wechat-favorites-user-entry {
border-bottom: none;
}
/* 蓝色按钮 */
.wechat-btn-blue {
background: #576B95 !important;
color: white !important;
}
.wechat-btn-blue:hover {
background: #4a5d82 !important;
}
/* 条目包装容器 */
.wechat-entry-wrapper {
border-bottom: 1px solid var(--wechat-border);
}
.wechat-entry-wrapper:last-child {
border-bottom: none;
}
.wechat-entry-wrapper .wechat-favorites-entry {
border-bottom: none;
}
/* 条目展开面板 */
.wechat-entry-expand-panel {
background: var(--wechat-white);
border-top: 1px solid var(--wechat-border);
overflow: hidden;
max-height: 0;
opacity: 0;
transition: max-height 0.3s ease-out, opacity 0.2s ease-out;
}
.wechat-entry-expand-panel.wechat-lorebook-panel-show {
max-height: 500px;
opacity: 1;
overflow-y: auto;
}
/* 展开时的条目样式 */
.wechat-favorites-item-expanded {
background: var(--wechat-bg-hover);
}
/* ===== 消息操作菜单 ===== */
.wechat-msg-menu {
position: absolute;
z-index: 1000;
animation: wechat-menu-pop 0.15s ease-out;
}
.wechat-msg-menu.hidden {
display: none;
}
.wechat-msg-menu-content {
background: #4C4C4C;
border-radius: 6px;
padding: 6px 4px;
display: flex;
flex-wrap: wrap;
justify-content: center;
gap: 2px;
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.3);
max-width: 200px;
}
.wechat-msg-menu-item {
display: flex;
flex-direction: column;
align-items: center;
gap: 3px;
padding: 6px 10px;
cursor: pointer;
border-radius: 4px;
transition: background 0.15s;
min-width: 36px;
}
.wechat-msg-menu-item:hover {
background: rgba(255, 255, 255, 0.1);
}
.wechat-msg-menu-item:active {
background: rgba(255, 255, 255, 0.2);
transform: scale(0.95);
}
.wechat-msg-menu-icon {
color: #fff;
display: flex;
align-items: center;
justify-content: center;
}
.wechat-msg-menu-icon svg {
width: 18px;
height: 18px;
}
.wechat-msg-menu-text {
font-size: 10px;
color: #fff;
white-space: nowrap;
}
@keyframes wechat-menu-pop {
0% {
opacity: 0;
transform: scale(0.85);
}
100% {
opacity: 1;
transform: scale(1);
}
}
/* 消息气泡可点击效果 */
.wechat-message-bubble,
.wechat-voice-bubble {
cursor: pointer;
transition: filter 0.15s;
}
.wechat-message-bubble:active,
.wechat-voice-bubble:active {
filter: brightness(0.92);
}
/* ===== 引用预览条(输入框下方) ===== */
.wechat-quote-preview {
display: flex;
align-items: center;
justify-content: space-between;
padding: 10px 12px;
background: #2C2C2C;
border-radius: 8px;
margin: 0 12px 8px;
}
.wechat-quote-preview-content {
flex: 1;
min-width: 0;
display: flex;
align-items: center;
gap: 6px;
font-size: 13px;
color: #999;
overflow: hidden;
}
.wechat-quote-preview-sender {
color: #aaa;
white-space: nowrap;
flex-shrink: 0;
}
.wechat-quote-preview-text {
color: #ccc;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.wechat-quote-preview-close {
width: 24px;
height: 24px;
border: none;
background: rgba(255, 255, 255, 0.1);
color: #999;
font-size: 16px;
border-radius: 50%;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
margin-left: 10px;
transition: all 0.15s;
}
.wechat-quote-preview-close:hover {
background: rgba(255, 255, 255, 0.2);
color: #fff;
}
/* ===== 消息引用条(气泡下方) ===== */
.wechat-msg-quote {
display: flex;
align-items: center;
padding: 6px 10px;
background: rgba(0, 0, 0, 0.04);
border-radius: 4px;
margin-top: 6px;
font-size: 12px;
color: #888;
width: fit-content;
max-width: 100%;
cursor: pointer;
transition: background 0.15s;
}
/* 自己发的消息,引用条靠右 */
.wechat-message.self .wechat-msg-quote {
margin-left: auto;
}
.wechat-msg-quote:hover {
background: rgba(0, 0, 0, 0.1);
}
.wechat-msg-quote-sender {
color: #555;
white-space: nowrap;
flex-shrink: 0;
margin-right: 6px;
font-weight: normal;
}
.wechat-msg-quote-text {
color: #777;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
/* 深色模式引用样式 */
.wechat-dark .wechat-msg-quote {
background: rgba(255, 255, 255, 0.12);
}
.wechat-dark .wechat-msg-quote:hover {
background: rgba(255, 255, 255, 0.18);
}
.wechat-dark .wechat-msg-quote-sender {
color: rgba(255, 255, 255, 0.85);
font-weight: normal;
}
.wechat-dark .wechat-msg-quote-text {
color: rgba(255, 255, 255, 0.65);
}
/* 浅色模式引用样式 */
.wechat-phone:not(.wechat-dark) .wechat-quote-preview {
background: #E5E5E5;
}
.wechat-phone:not(.wechat-dark) .wechat-quote-preview-content {
color: #666;
}
.wechat-phone:not(.wechat-dark) .wechat-quote-preview-sender {
color: #555;
}
.wechat-phone:not(.wechat-dark) .wechat-quote-preview-text {
color: #333;
}
.wechat-phone:not(.wechat-dark) .wechat-quote-preview-close {
background: rgba(0, 0, 0, 0.1);
color: #666;
}
.wechat-phone:not(.wechat-dark) .wechat-quote-preview-close:hover {
background: rgba(0, 0, 0, 0.2);
color: #333;
}
.wechat-phone:not(.wechat-dark) .wechat-msg-quote {
background: rgba(0, 0, 0, 0.04);
}
.wechat-phone:not(.wechat-dark) .wechat-msg-quote:hover {
background: rgba(0, 0, 0, 0.08);
}
.wechat-phone:not(.wechat-dark) .wechat-msg-quote-sender {
color: #555;
}
.wechat-phone:not(.wechat-dark) .wechat-msg-quote-text {
color: #666;
}
/* ===== 浅色模式 - 输入框、下拉框、文本域 ===== */
.wechat-phone:not(.wechat-dark) .wechat-settings-input,
.wechat-phone:not(.wechat-dark) .wechat-settings-select,
.wechat-phone:not(.wechat-dark) .wechat-expand-textarea,
.wechat-phone:not(.wechat-dark) .wechat-edit-field textarea,
.wechat-phone:not(.wechat-dark) .wechat-edit-field input,
.wechat-phone:not(.wechat-dark) .wechat-lorebook-entry-edit-form textarea,
.wechat-phone:not(.wechat-dark) .wechat-lorebook-entry-edit-form input {
background: #FFFFFF !important;
color: #191919 !important;
border-color: #E5E5E5 !important;
}
.wechat-phone:not(.wechat-dark) .wechat-settings-input::placeholder,
.wechat-phone:not(.wechat-dark) .wechat-settings-select::placeholder,
.wechat-phone:not(.wechat-dark) .wechat-expand-textarea::placeholder,
.wechat-phone:not(.wechat-dark) .wechat-edit-field textarea::placeholder,
.wechat-phone:not(.wechat-dark) .wechat-edit-field input::placeholder,
.wechat-phone:not(.wechat-dark) .wechat-lorebook-entry-edit-form textarea::placeholder,
.wechat-phone:not(.wechat-dark) .wechat-lorebook-entry-edit-form input::placeholder {
color: #888888 !important;
}
/* 下拉框选项 */
.wechat-phone:not(.wechat-dark) .wechat-settings-select option {
background: #FFFFFF;
color: #191919;
}
/* 模型列表项 */
.wechat-phone:not(.wechat-dark) .wechat-model-list-item {
background: #FFFFFF;
color: #191919;
}
.wechat-phone:not(.wechat-dark) .wechat-model-list-item:hover {
background: #F5F5F5;
}
/* ===== 表情面板 ===== */
.wechat-emoji-panel {
background: var(--wechat-header-bg);
border-top: 1px solid var(--wechat-border);
height: 280px;
display: flex;
flex-direction: column;
flex-shrink: 0;
}
.wechat-emoji-panel.hidden {
display: none;
}
/* 表情面板标签栏 */
.wechat-emoji-tabs {
display: flex;
align-items: center;
padding: 8px 12px;
gap: 8px;
border-bottom: 1px solid var(--wechat-border);
background: var(--wechat-header-bg);
flex-shrink: 0;
}
.wechat-emoji-tab {
width: 36px;
height: 36px;
border: none;
background: transparent;
border-radius: 8px;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
color: var(--wechat-text-secondary);
transition: all 0.2s;
}
.wechat-emoji-tab:hover {
background: var(--wechat-bg);
}
.wechat-emoji-tab.active {
background: var(--wechat-bg);
color: var(--wechat-text);
}
.wechat-emoji-tab svg {
width: 22px;
height: 22px;
}
/* 表情面板内容区域 */
.wechat-emoji-content {
flex: 1;
overflow-y: auto;
padding: 12px;
-webkit-overflow-scrolling: touch;
}
.wechat-emoji-section-title {
font-size: 12px;
color: var(--wechat-text-secondary);
margin-bottom: 10px;
}
/* 表情网格 */
.wechat-emoji-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 10px;
}
/* 表情项 */
.wechat-emoji-item {
width: 100%;
aspect-ratio: 1;
border-radius: 8px;
overflow: hidden;
cursor: pointer;
transition: transform 0.15s, box-shadow 0.15s;
background: var(--wechat-white);
}
.wechat-emoji-item:hover {
transform: scale(1.05);
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
.wechat-emoji-item:active {
transform: scale(0.95);
}
/* 左滑删除容器 */
.wechat-emoji-swipe-container {
position: relative;
width: 100%;
aspect-ratio: 1;
overflow: hidden;
border-radius: 8px;
}
.wechat-emoji-swipe-container .wechat-emoji-user-item {
position: relative;
z-index: 2;
width: 100%;
height: 100%;
will-change: transform;
}
.wechat-emoji-swipe-container .wechat-emoji-user-item:active {
transform: none;
}
/* 删除背景 */
.wechat-emoji-delete-bg {
position: absolute;
top: 0;
right: 0;
width: 50px;
height: 100%;
background: #ff3b30;
color: white;
display: flex;
align-items: center;
justify-content: center;
font-size: 12px;
z-index: 1;
cursor: pointer;
border-radius: 0 8px 8px 0;
}
.wechat-emoji-delete-bg:active {
background: #d32f2f;
}
.wechat-emoji-item img {
width: 100%;
height: 100%;
object-fit: cover;
}
/* 表情加载失败样式 */
.wechat-emoji-item.sticker-error {
background: #f5f5f5;
border: 1px dashed #ccc;
display: flex;
align-items: center;
justify-content: center;
padding: 4px;
}
.sticker-error-text {
font-size: 10px;
color: #999;
text-align: center;
word-break: break-all;
line-height: 1.2;
overflow: hidden;
display: -webkit-box;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
}
/* 添加表情按钮 */
.wechat-emoji-add {
width: 100%;
aspect-ratio: 1;
border: 2px dashed var(--wechat-border);
border-radius: 8px;
background: transparent;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
color: var(--wechat-text-secondary);
font-size: 28px;
transition: all 0.2s;
}
.wechat-emoji-add:hover {
border-color: var(--wechat-green);
color: var(--wechat-green);
background: rgba(7, 193, 96, 0.05);
}
.wechat-emoji-add:active {
transform: scale(0.95);
}
/* 聊天区域在表情面板打开时缩小 */
.wechat-chat.emoji-panel-open {
/* 自动调整 */
}
.wechat-chat.emoji-panel-open .wechat-chat-messages {
/* 高度会自动调整因为flex布局 */
}
/* 表情贴纸气泡 */
.wechat-sticker-bubble {
max-width: 120px;
max-height: 120px;
border-radius: 4px;
overflow: hidden;
background: transparent;
}
.wechat-sticker-img {
display: block;
width: 100%;
height: 100%;
max-width: 120px;
max-height: 120px;
object-fit: contain;
}
/* ===== 照片消息样式 ===== */
.wechat-photo-bubble {
width: 180px;
min-height: 100px;
border-radius: 10px;
overflow: hidden;
cursor: pointer;
position: relative;
background: linear-gradient(135deg, #e8f4fd 0%, #d6ecfc 100%);
border: 1px solid #c5dff7;
display: block;
padding: 8px;
box-sizing: border-box;
}
/* 确保照片气泡不被其他样式折叠,强制垂直排列 */
.wechat-message-content .wechat-photo-bubble {
display: block !important;
flex-shrink: 0;
width: 180px !important;
float: none !important;
}
/* 确保消息内容区域的子元素垂直排列 */
.wechat-message-content {
flex-wrap: nowrap !important;
flex-direction: column !important;
}
.wechat-photo-blur {
position: absolute;
top: 8px;
left: 8px;
right: 8px;
bottom: 8px;
width: auto;
height: auto;
min-height: 84px;
background: #ffffff;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 8px;
transition: opacity 0.2s ease;
z-index: 2;
box-sizing: border-box;
border-radius: 6px;
border: 1px solid #e8e8e8;
}
.wechat-photo-blur:hover {
background: #fafafa;
}
.wechat-photo-blur.hidden {
opacity: 0;
pointer-events: none;
}
.wechat-photo-icon {
color: #5ba3d9;
}
.wechat-photo-icon svg {
width: 36px;
height: 36px;
}
.wechat-photo-hint {
font-size: 12px;
color: #7ab5e0;
}
.wechat-photo-content {
width: 100%;
min-height: 84px;
max-height: 184px;
padding: 10px;
box-sizing: border-box;
overflow-y: auto;
font-size: 13px;
color: #333;
line-height: 1.6;
word-break: break-word;
display: flex;
align-items: center;
justify-content: center;
text-align: center;
background: #ffffff;
border-radius: 6px;
border: 1px solid #e8e8e8;
}
/* 用户发送的照片消息靠右 */
.wechat-message.self .wechat-photo-bubble {
margin-left: auto;
}
.wechat-photo-content::-webkit-scrollbar {
width: 4px;
}
.wechat-photo-content::-webkit-scrollbar-thumb {
background: #ddd;
border-radius: 2px;
}
/* 照片消息输入提示 */
.wechat-expand-photo-hint {
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
}
.wechat-expand-photo-hint svg {
width: 16px;
height: 16px;
color: var(--wechat-text-secondary);
}
/* 照片消息深色模式 */
.wechat-dark .wechat-photo-bubble {
background: linear-gradient(135deg, #1a3a4f 0%, #163347 100%);
border-color: #2a5070;
}
.wechat-dark .wechat-photo-blur {
background: #1e1e1e;
border-color: #333;
}
.wechat-dark .wechat-photo-blur:hover {
background: #252525;
}
.wechat-dark .wechat-photo-icon {
color: #5ba3d9;
}
.wechat-dark .wechat-photo-hint {
color: #5ba3d9;
}
.wechat-dark .wechat-photo-content {
background: #1e1e1e;
color: #e9e9e9;
border-color: #333;
}
/* ===== 语音通话页面 ===== */
.wechat-voice-call-page {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: linear-gradient(180deg, #2c2c2c 0%, #1a1a1a 100%);
display: flex;
flex-direction: column;
z-index: 100;
overflow: hidden;
}
.wechat-voice-call-page.hidden {
display: none;
}
.wechat-voice-call-header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 40px 20px 15px;
flex-shrink: 0;
}
.wechat-voice-call-minimize,
.wechat-voice-call-add {
width: 40px;
height: 40px;
background: none;
border: none;
color: #fff;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
opacity: 0.8;
}
.wechat-voice-call-minimize:hover,
.wechat-voice-call-add:hover {
opacity: 1;
}
.wechat-voice-call-time {
color: #fff;
font-size: 16px;
font-weight: 500;
}
.wechat-voice-call-time.hidden {
visibility: hidden;
}
.wechat-voice-call-content {
flex: 0 0 auto;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 15px 20px;
}
.wechat-voice-call-avatar {
width: 80px;
height: 80px;
border-radius: 8px;
background: #444;
overflow: hidden;
display: flex;
align-items: center;
justify-content: center;
font-size: 32px;
color: #fff;
margin-bottom: 12px;
}
.wechat-voice-call-avatar img {
width: 100%;
height: 100%;
object-fit: cover;
}
.wechat-voice-call-name {
color: #fff;
font-size: 18px;
font-weight: 500;
margin-bottom: 8px;
}
.wechat-voice-call-status {
color: rgba(255, 255, 255, 0.6);
font-size: 14px;
}
.wechat-voice-call-status.connecting::after {
content: '';
animation: dots 1.5s steps(4, end) infinite;
}
@keyframes dots {
0%, 20% { content: ''; }
40% { content: '.'; }
60% { content: '..'; }
80%, 100% { content: '...'; }
}
.wechat-voice-call-actions {
display: flex;
justify-content: center;
gap: 50px;
padding: 20px 20px 30px;
flex-shrink: 0;
margin-top: auto; /* 推到底部 */
}
.wechat-voice-call-action {
display: flex;
flex-direction: column;
align-items: center;
gap: 10px;
cursor: pointer;
}
.wechat-voice-call-action-btn {
width: 60px;
height: 60px;
border-radius: 50%;
background: rgba(255, 255, 255, 0.15);
display: flex;
align-items: center;
justify-content: center;
color: #fff;
transition: all 0.2s ease;
}
.wechat-voice-call-action-btn:hover {
background: rgba(255, 255, 255, 0.25);
}
.wechat-voice-call-action-btn.hangup {
width: 70px;
height: 70px;
background: #ff4d4f;
}
.wechat-voice-call-action-btn.hangup:hover {
background: #ff7875;
}
.wechat-voice-call-action-btn.hangup svg {
width: 32px;
height: 32px;
}
.wechat-voice-call-action-btn.active {
background: #07c160;
}
.wechat-voice-call-action-btn.muted {
background: rgba(255, 77, 79, 0.3);
}
.wechat-voice-call-action-btn.muted svg {
opacity: 0.6;
}
/* 来电接听按钮样式 */
.wechat-voice-call-incoming-actions {
display: flex;
justify-content: center;
gap: 80px;
padding: 40px 0;
margin-top: auto;
}
.wechat-voice-call-incoming-actions.hidden {
display: none;
}
.wechat-voice-call-action-btn.reject {
width: 70px;
height: 70px;
background: #ff4d4f;
}
.wechat-voice-call-action-btn.reject:hover {
background: #ff7875;
}
.wechat-voice-call-action-btn.reject svg {
width: 32px;
height: 32px;
}
.wechat-voice-call-action-btn.accept {
width: 70px;
height: 70px;
background: #07c160;
}
.wechat-voice-call-action-btn.accept:hover {
background: #2adb78;
}
.wechat-voice-call-action-btn.accept svg {
width: 32px;
height: 32px;
transform: rotate(135deg);
}
.wechat-voice-call-action-label {
color: rgba(255, 255, 255, 0.7);
font-size: 12px;
}
/* 通话中对话框 */
.wechat-voice-call-chat {
margin: 0 16px 15px 16px;
background: transparent;
padding: 10px 0;
display: flex;
flex-direction: column;
gap: 10px;
flex: 1;
min-height: 0;
max-height: 220px;
}
.wechat-voice-call-chat.hidden {
display: none;
}
.wechat-voice-call-messages {
flex: 1;
overflow-y: auto;
overflow-x: hidden;
display: flex;
flex-direction: column;
gap: 8px;
min-height: 0;
padding: 0 4px;
scrollbar-width: thin;
scrollbar-color: rgba(255,255,255,0.3) transparent;
}
.wechat-voice-call-messages::-webkit-scrollbar {
width: 4px;
}
.wechat-voice-call-messages::-webkit-scrollbar-track {
background: transparent;
}
.wechat-voice-call-messages::-webkit-scrollbar-thumb {
background: rgba(255,255,255,0.3);
border-radius: 2px;
}
.wechat-voice-call-msg {
max-width: 90%;
padding: 8px 12px;
border-radius: 16px;
font-size: 14px;
word-break: break-word;
line-height: 1.5;
}
.wechat-voice-call-msg.ai {
align-self: flex-start;
background: rgba(0, 0, 0, 0.6);
color: #fff;
}
.wechat-voice-call-msg.user {
align-self: flex-end;
background: #fff;
color: #000;
}
/* 通话消息渐入动画 */
.wechat-voice-call-msg.fade-in {
animation: voiceCallMsgFadeIn 0.3s ease-out forwards;
}
.wechat-voice-call-msg.fade-out {
animation: voiceCallMsgFadeOut 0.2s ease-in forwards;
}
@keyframes voiceCallMsgFadeIn {
from {
opacity: 0;
transform: translateY(10px) scale(0.95);
}
to {
opacity: 1;
transform: translateY(0) scale(1);
}
}
@keyframes voiceCallMsgFadeOut {
from {
opacity: 1;
transform: translateY(0) scale(1);
}
to {
opacity: 0;
transform: translateY(-10px) scale(0.95);
}
}
.wechat-voice-call-input-area {
display: flex;
align-items: center;
background: rgba(50, 50, 50, 0.8);
border-radius: 20px;
padding: 4px 4px 4px 16px;
margin: 0 16px 15px 16px;
}
.wechat-voice-call-input-area.hidden {
display: none;
}
.wechat-voice-call-input {
flex: 1;
background: transparent;
border: none;
padding: 8px 0;
color: #fff;
font-size: 14px;
outline: none;
}
.wechat-voice-call-input::placeholder {
color: rgba(255, 255, 255, 0.5);
}
.wechat-voice-call-send {
width: 32px;
height: 32px;
background: #000;
border: none;
border-radius: 50%;
color: #fff;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
transition: opacity 0.2s;
}
.wechat-voice-call-send:hover {
opacity: 0.8;
}
.wechat-voice-call-send svg {
width: 20px;
height: 20px;
}
/* ===== 通话记录卡片 ===== */
/* AI的通话记录使用白色背景 */
.wechat-call-record-bubble {
background: #fff !important;
padding: 0 !important;
border-radius: 6px !important;
overflow: hidden;
}
/* 用户的通话记录使用绿色背景 */
.wechat-message.self .wechat-call-record-bubble {
background: #95ec69 !important;
}
/* 通话记录消息使用小头像 */
.wechat-message:has(.wechat-call-record-bubble) .wechat-message-avatar {
width: 40px;
height: 40px;
}
.wechat-message:has(.wechat-call-record-bubble) .wechat-message-avatar img {
width: 40px;
height: 40px;
}
.wechat-call-record {
display: flex;
align-items: center;
gap: 8px;
padding: 10px 14px;
color: #000;
}
.wechat-call-record-text {
font-size: 14px;
white-space: nowrap;
}
.wechat-call-record-icon {
width: 18px;
height: 18px;
flex-shrink: 0;
transform: rotate(135deg);
}
/* 视频通话图标不需要旋转 */
.wechat-video-call-icon {
transform: none;
}
/* 深色模式通话记录卡片 */
.wechat-dark .wechat-call-record-bubble {
background: #262626 !important;
}
.wechat-dark .wechat-call-record {
color: #fff;
}
.wechat-dark .wechat-message.self .wechat-call-record-bubble {
background: var(--wechat-bubble-self) !important;
}
.wechat-dark .wechat-message.self .wechat-call-record {
color: #333;
}
/* ===== 视频通话页面 ===== */
.wechat-video-call-page {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: #1a1a1a;
z-index: 1100;
display: flex;
flex-direction: column;
overflow: hidden;
}
.wechat-video-call-page.hidden {
display: none;
}
/* 顶部状态栏 */
.wechat-video-call-header {
position: relative;
z-index: 10;
display: flex;
align-items: center;
justify-content: space-between;
padding: 12px 16px;
background: transparent;
}
.wechat-video-call-minimize,
.wechat-video-call-switch {
background: none;
border: none;
color: rgba(255,255,255,0.8);
cursor: pointer;
padding: 6px;
display: flex;
align-items: center;
justify-content: center;
border-radius: 50%;
}
.wechat-video-call-minimize:hover,
.wechat-video-call-switch:hover {
background: rgba(255,255,255,0.1);
}
/* 隐藏切换摄像头按钮 */
.wechat-video-call-switch {
display: none !important;
}
.wechat-video-call-info {
display: flex;
flex-direction: column;
align-items: center;
gap: 2px;
}
.wechat-video-call-time {
font-size: 14px;
color: rgba(255,255,255,0.9);
}
.wechat-video-call-time.hidden {
visibility: hidden;
}
/* 中间角色头像区域 */
.wechat-video-call-center {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
display: flex;
flex-direction: column;
align-items: center;
gap: 16px;
z-index: 5;
}
.wechat-video-call-center.hidden {
display: none;
}
.wechat-video-call-avatar {
width: 100px;
height: 100px;
border-radius: 50%;
background: rgba(60, 60, 60, 0.8);
display: flex;
align-items: center;
justify-content: center;
font-size: 40px;
color: #fff;
overflow: hidden;
}
.wechat-video-call-avatar img {
width: 100%;
height: 100%;
object-fit: cover;
border-radius: 50%;
}
.wechat-video-call-status {
font-size: 14px;
color: rgba(255,255,255,0.8);
}
.wechat-video-call-status.hidden {
display: none;
}
/* 右上角用户头像小窗(长方形) */
.wechat-video-call-local {
position: absolute;
top: 60px;
right: 12px;
width: 90px;
height: 120px;
border-radius: 8px;
background: #333;
overflow: hidden;
z-index: 15;
box-shadow: 0 2px 12px rgba(0,0,0,0.4);
}
.wechat-video-call-local.camera-off {
background: #222;
}
.wechat-video-call-local.camera-off::after {
content: '摄像头已关';
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
font-size: 10px;
color: rgba(255,255,255,0.5);
white-space: nowrap;
}
.wechat-video-call-local-avatar {
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
font-size: 24px;
color: rgba(255,255,255,0.7);
border-radius: 8px;
overflow: hidden;
}
.wechat-video-call-local-avatar img {
width: 100%;
height: 100%;
object-fit: cover;
border-radius: 8px;
}
.wechat-video-call-local.camera-off .wechat-video-call-local-avatar {
opacity: 0.3;
}
/* 底部操作栏 */
.wechat-video-call-actions {
position: absolute;
bottom: 30px;
left: 0;
right: 0;
display: flex;
justify-content: center;
gap: 20px;
z-index: 20;
padding: 0 20px;
}
.wechat-video-call-action {
display: flex;
flex-direction: column;
align-items: center;
gap: 6px;
}
.wechat-video-call-action-btn {
width: 50px;
height: 50px;
border-radius: 50%;
background: rgba(255,255,255,0.15);
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
transition: all 0.2s;
color: #fff;
}
.wechat-video-call-action-btn:hover {
background: rgba(255,255,255,0.25);
}
.wechat-video-call-action-btn.hangup {
background: #ff4444;
}
.wechat-video-call-action-btn.hangup:hover {
background: #ff3333;
}
.wechat-video-call-action-btn.off,
.wechat-video-call-action-btn.muted {
background: rgba(255,255,255,0.4);
}
.wechat-video-call-action-btn.off svg,
.wechat-video-call-action-btn.muted svg {
opacity: 0.6;
}
.wechat-video-call-action-label {
font-size: 11px;
color: rgba(255,255,255,0.7);
white-space: nowrap;
}
/* 视频通话对话框 */
.wechat-video-call-chat {
position: absolute;
left: 0;
right: 0;
bottom: 120px;
max-height: 250px;
display: flex;
flex-direction: column;
z-index: 15;
padding: 0 12px;
}
.wechat-video-call-chat.hidden {
display: none;
}
.wechat-video-call-messages {
flex: 1;
min-height: 0;
overflow-y: auto;
display: flex;
flex-direction: column;
gap: 6px;
padding: 8px 0;
scrollbar-width: thin;
scrollbar-color: rgba(255,255,255,0.2) transparent;
}
.wechat-video-call-messages::-webkit-scrollbar {
width: 4px;
}
.wechat-video-call-messages::-webkit-scrollbar-thumb {
background: rgba(255,255,255,0.2);
border-radius: 2px;
}
.wechat-video-call-msg {
padding: 8px 12px;
border-radius: 16px;
font-size: 14px;
max-width: 90%;
line-height: 1.5;
word-break: break-word;
}
.wechat-video-call-msg.ai {
align-self: flex-start;
background: rgba(0, 0, 0, 0.6);
color: #fff;
}
.wechat-video-call-msg.user {
align-self: flex-end;
background: #fff;
color: #000;
}
.wechat-video-call-msg.fade-in {
animation: videoCallMsgFadeIn 0.3s ease-out;
}
@keyframes videoCallMsgFadeIn {
from {
opacity: 0;
transform: translateY(10px) scale(0.95);
}
to {
opacity: 1;
transform: translateY(0) scale(1);
}
}
.wechat-video-call-input-area {
display: flex;
gap: 8px;
padding: 8px 0;
margin: 0 16px 10px 16px;
}
.wechat-video-call-input-area.hidden {
display: none;
}
.wechat-video-call-input {
flex: 1;
padding: 10px 14px;
border-radius: 20px;
border: none;
background: rgba(255,255,255,0.1);
color: #fff;
font-size: 14px;
outline: none;
}
.wechat-video-call-input::placeholder {
color: rgba(255,255,255,0.4);
}
.wechat-video-call-send {
width: 40px;
height: 40px;
border-radius: 50%;
background: #000;
border: none;
color: #fff;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
}
.wechat-video-call-send:hover {
opacity: 0.9;
}
.wechat-video-call-send svg {
width: 18px;
height: 18px;
}
/* AI来电界面 */
.wechat-video-call-incoming {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: 100;
display: flex;
flex-direction: column;
}
.wechat-video-call-incoming.hidden {
display: none;
}
.wechat-video-call-incoming-bg {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: linear-gradient(180deg, #1a1a1a 0%, #2d2d2d 50%, #1a1a1a 100%);
filter: blur(0px);
}
.wechat-video-call-incoming-content {
position: relative;
z-index: 1;
flex: 1;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 16px;
}
.wechat-video-call-incoming-avatar {
width: 100px;
height: 100px;
border-radius: 50%;
background: rgba(255,255,255,0.1);
display: flex;
align-items: center;
justify-content: center;
font-size: 40px;
color: #fff;
overflow: hidden;
animation: incomingPulse 2s ease-in-out infinite;
}
@keyframes incomingPulse {
0%, 100% {
box-shadow: 0 0 0 0 rgba(7, 193, 96, 0.4);
}
50% {
box-shadow: 0 0 0 15px rgba(7, 193, 96, 0);
}
}
.wechat-video-call-incoming-avatar img {
width: 100%;
height: 100%;
object-fit: cover;
}
.wechat-video-call-incoming-name {
font-size: 20px;
font-weight: 500;
color: #fff;
}
.wechat-video-call-incoming-hint {
font-size: 14px;
color: rgba(255,255,255,0.6);
}
.wechat-video-call-incoming-actions {
position: relative;
z-index: 1;
display: flex;
justify-content: center;
gap: 40px;
padding: 40px 0;
}
.wechat-video-call-incoming-action {
display: flex;
flex-direction: column;
align-items: center;
gap: 8px;
}
.wechat-video-call-incoming-action span {
font-size: 12px;
color: rgba(255,255,255,0.7);
}
.wechat-video-call-incoming-btn {
width: 60px;
height: 60px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
transition: all 0.2s;
}
.wechat-video-call-incoming-btn.decline {
background: #ff4444;
color: #fff;
}
.wechat-video-call-incoming-btn.camera {
background: rgba(255,255,255,0.15);
color: #fff;
}
.wechat-video-call-incoming-btn.accept {
background: #07c160;
color: #fff;
}
.wechat-video-call-incoming-btn:hover {
transform: scale(1.05);
}
/* ===== 实时语音通话页面 ===== */
.wechat-real-voice-call-page {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: linear-gradient(135deg, #1a1a2e 0%, #16213e 50%, #0f3460 100%);
z-index: 1100;
display: flex;
flex-direction: column;
overflow: hidden;
}
.wechat-real-voice-call-page.hidden {
display: none;
}
.wechat-real-voice-call-header {
display: flex;
align-items: center;
justify-content: space-between;
padding: 16px;
background: transparent;
position: relative;
z-index: 10;
}
.wechat-real-voice-call-minimize {
width: 36px;
height: 36px;
border-radius: 50%;
background: rgba(255,255,255,0.15);
border: none;
color: #fff;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
transition: all 0.2s;
}
.wechat-real-voice-call-minimize:hover {
background: rgba(255,255,255,0.25);
}
.wechat-real-voice-call-time {
font-size: 16px;
color: #fff;
font-weight: 500;
}
.wechat-real-voice-call-time.hidden {
visibility: hidden;
}
.wechat-real-voice-call-content {
flex: 1;
display: flex;
flex-direction: column;
align-items: center;
padding: 20px;
overflow: hidden;
}
.wechat-real-voice-call-avatar {
width: 100px;
height: 100px;
border-radius: 50%;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
display: flex;
align-items: center;
justify-content: center;
font-size: 40px;
color: #fff;
margin-bottom: 16px;
box-shadow: 0 8px 32px rgba(0,0,0,0.3);
overflow: hidden;
}
.wechat-real-voice-call-avatar img {
width: 100%;
height: 100%;
object-fit: cover;
}
.wechat-real-voice-call-name {
font-size: 22px;
color: #fff;
font-weight: 600;
margin-bottom: 8px;
text-shadow: 0 2px 8px rgba(0,0,0,0.3);
}
.wechat-real-voice-call-status {
font-size: 14px;
color: rgba(255,255,255,0.7);
margin-bottom: 20px;
}
.wechat-real-voice-call-status.connecting {
animation: pulse 1.5s ease-in-out infinite;
}
@keyframes pulse {
0%, 100% { opacity: 0.7; }
50% { opacity: 1; }
}
/* 实时语音对话区域 */
.wechat-real-voice-call-chat {
flex: 1;
display: flex;
flex-direction: column;
width: 100%;
max-width: 320px;
margin: 0 auto;
background: rgba(255,255,255,0.05);
border-radius: 16px;
overflow: hidden;
backdrop-filter: blur(10px);
}
.wechat-real-voice-call-chat.hidden {
display: none;
}
.wechat-real-voice-call-messages {
flex: 1;
overflow-y: auto;
padding: 16px;
display: flex;
flex-direction: column;
gap: 12px;
min-height: 120px;
max-height: 200px;
}
.wechat-real-voice-call-messages::-webkit-scrollbar {
width: 4px;
}
.wechat-real-voice-call-messages::-webkit-scrollbar-thumb {
background: rgba(255,255,255,0.2);
border-radius: 2px;
}
.wechat-real-voice-call-msg {
max-width: 85%;
padding: 10px 14px;
border-radius: 12px;
font-size: 14px;
line-height: 1.5;
word-break: break-word;
}
.wechat-real-voice-call-msg.ai {
align-self: flex-start;
background: rgba(255,255,255,0.15);
color: #fff;
border-bottom-left-radius: 4px;
}
.wechat-real-voice-call-msg.user {
align-self: flex-end;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: #fff;
border-bottom-right-radius: 4px;
}
.wechat-real-voice-call-msg.fade-in {
animation: msgFadeIn 0.3s ease-out;
}
@keyframes msgFadeIn {
from { opacity: 0; transform: translateY(10px); }
to { opacity: 1; transform: translateY(0); }
}
/* 按住说话区域 */
.wechat-real-voice-call-talk-area {
padding: 16px;
display: flex;
flex-direction: column;
align-items: center;
gap: 8px;
}
.wechat-real-voice-call-talk-area.hidden {
display: none;
}
.wechat-real-voice-call-talk-btn {
width: 100%;
max-width: 280px;
padding: 16px 24px;
border-radius: 24px;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
border: none;
color: #fff;
font-size: 16px;
font-weight: 500;
cursor: pointer;
transition: all 0.2s;
user-select: none;
-webkit-user-select: none;
touch-action: none;
}
.wechat-real-voice-call-talk-btn:hover {
transform: scale(1.02);
box-shadow: 0 4px 20px rgba(102, 126, 234, 0.4);
}
.wechat-real-voice-call-talk-btn:active,
.wechat-real-voice-call-talk-btn.recording {
background: linear-gradient(135deg, #ff6b6b 0%, #ee5a5a 100%);
transform: scale(0.98);
}
.wechat-real-voice-call-talk-hint {
font-size: 12px;
color: rgba(255,255,255,0.5);
}
/* 文字输入区域(不支持录音时) */
.wechat-real-voice-call-text-input-area {
display: flex;
align-items: center;
gap: 8px;
margin-top: 15px;
padding: 0 20px;
width: 100%;
box-sizing: border-box;
}
.wechat-real-voice-call-text-input {
flex: 1;
height: 40px;
border: none;
border-radius: 20px;
padding: 0 16px;
font-size: 14px;
background: rgba(255,255,255,0.15);
color: #fff;
outline: none;
}
.wechat-real-voice-call-text-input::placeholder {
color: rgba(255,255,255,0.5);
}
.wechat-real-voice-call-text-send {
height: 40px;
padding: 0 20px;
border: none;
border-radius: 20px;
background: #07c160;
color: #fff;
font-size: 14px;
font-weight: 500;
cursor: pointer;
}
.wechat-real-voice-call-text-send:active {
background: #06ad56;
}
/* 操作按钮区域 */
.wechat-real-voice-call-actions {
display: flex;
justify-content: center;
gap: 48px;
padding: 24px;
background: transparent;
}
.wechat-real-voice-call-action {
display: flex;
flex-direction: column;
align-items: center;
gap: 8px;
}
.wechat-real-voice-call-action-btn {
width: 56px;
height: 56px;
border-radius: 50%;
background: rgba(255,255,255,0.15);
border: none;
color: #fff;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
transition: all 0.2s;
}
.wechat-real-voice-call-action-btn:hover {
background: rgba(255,255,255,0.25);
transform: scale(1.05);
}
.wechat-real-voice-call-action-btn.hangup {
background: #ff4444;
}
.wechat-real-voice-call-action-btn.hangup:hover {
background: #ff6666;
}
.wechat-real-voice-call-action-btn.muted {
background: rgba(255,68,68,0.3);
}
.wechat-real-voice-call-action-btn.muted svg {
opacity: 0.7;
}
.wechat-real-voice-call-action-label {
font-size: 12px;
color: rgba(255,255,255,0.7);
}
/* 来电操作按钮 */
.wechat-real-voice-call-incoming-actions {
display: flex;
justify-content: center;
gap: 60px;
padding: 24px;
}
.wechat-real-voice-call-incoming-actions.hidden {
display: none;
}
.wechat-real-voice-call-action-btn.reject {
background: #ff4444;
}
.wechat-real-voice-call-action-btn.reject:hover {
background: #ff6666;
}
.wechat-real-voice-call-action-btn.accept {
background: #07c160;
}
.wechat-real-voice-call-action-btn.accept:hover {
background: #1ed76a;
}
/* 实时语音通话记录样式 */
.wechat-real-voice-record .wechat-call-record-icon {
transform: none;
}
/* ===== 语音 API 设置面板 ===== */
.wechat-voice-api-panel {
position: absolute;
left: 0;
right: 0;
bottom: 0;
background: var(--wechat-bg);
border-radius: 16px 16px 0 0;
box-shadow: 0 -4px 20px rgba(0,0,0,0.15);
z-index: 200;
max-height: 80%;
overflow-y: auto;
animation: slideUp 0.3s ease-out;
}
.wechat-voice-api-panel.hidden {
display: none;
}
@keyframes slideUp {
from { transform: translateY(100%); }
to { transform: translateY(0); }
}
.wechat-voice-api-header {
display: flex;
align-items: center;
justify-content: space-between;
padding: 16px;
border-bottom: 1px solid var(--wechat-border);
position: sticky;
top: 0;
background: var(--wechat-bg);
z-index: 10;
}
.wechat-voice-api-title {
font-size: 16px;
font-weight: 600;
color: var(--wechat-text-primary);
}
.wechat-voice-api-close {
width: 28px;
height: 28px;
border-radius: 50%;
background: var(--wechat-border);
border: none;
color: var(--wechat-text-secondary);
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
font-size: 16px;
}
.wechat-voice-api-close:hover {
background: var(--wechat-hover);
}
.wechat-voice-api-content {
padding: 16px;
display: flex;
flex-direction: column;
gap: 20px;
}
.wechat-voice-api-section {
background: var(--wechat-card-bg, #fff);
border-radius: 12px;
padding: 16px;
box-shadow: 0 1px 3px rgba(0,0,0,0.05);
}
.wechat-dark .wechat-voice-api-section {
background: var(--wechat-card-bg, #1e1e1e);
}
.wechat-voice-api-section-title {
font-size: 14px;
font-weight: 600;
color: var(--wechat-text-primary);
margin-bottom: 12px;
display: flex;
align-items: center;
gap: 8px;
}
.wechat-voice-api-section-title svg {
width: 18px;
height: 18px;
opacity: 0.7;
}
.wechat-voice-api-row {
display: flex;
flex-direction: column;
gap: 6px;
margin-bottom: 12px;
}
.wechat-voice-api-row:last-child {
margin-bottom: 0;
}
.wechat-voice-api-label {
font-size: 12px;
color: var(--wechat-text-secondary);
}
.wechat-voice-api-input-group {
display: flex;
gap: 8px;
}
.wechat-voice-api-input {
flex: 1;
padding: 10px 12px;
border: 1px solid var(--wechat-border);
border-radius: 8px;
font-size: 14px;
background: var(--wechat-bg);
color: var(--wechat-text-primary);
}
.wechat-voice-api-input:focus {
outline: none;
border-color: var(--wechat-primary);
}
.wechat-voice-api-input::placeholder {
color: var(--wechat-text-secondary);
opacity: 0.6;
}
.wechat-voice-api-eye-btn {
width: 40px;
height: 40px;
border: 1px solid var(--wechat-border);
border-radius: 8px;
background: var(--wechat-bg);
color: var(--wechat-text-secondary);
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
}
.wechat-voice-api-eye-btn:hover {
background: var(--wechat-hover);
}
.wechat-voice-api-test-btn {
padding: 10px 16px;
border: 1px solid var(--wechat-primary);
border-radius: 8px;
background: transparent;
color: var(--wechat-primary);
font-size: 14px;
cursor: pointer;
transition: all 0.2s;
}
.wechat-voice-api-test-btn:hover {
background: var(--wechat-primary);
color: #fff;
}
.wechat-voice-api-test-btn:disabled {
opacity: 0.5;
cursor: not-allowed;
}
.wechat-voice-api-row-inline {
display: flex;
gap: 12px;
}
.wechat-voice-api-row-inline .wechat-voice-api-row {
flex: 1;
margin-bottom: 0;
}
.wechat-voice-api-actions {
display: flex;
gap: 12px;
padding: 16px;
border-top: 1px solid var(--wechat-border);
background: var(--wechat-bg);
position: sticky;
bottom: 0;
}
.wechat-voice-api-save-btn {
flex: 1;
padding: 12px;
border: none;
border-radius: 8px;
background: var(--wechat-primary);
color: #fff;
font-size: 15px;
font-weight: 500;
cursor: pointer;
transition: all 0.2s;
}
.wechat-voice-api-save-btn:hover {
opacity: 0.9;
}
/* ===== 音乐搜索面板 ===== */
.wechat-music-panel {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: var(--wechat-bg);
z-index: 1000;
display: flex;
flex-direction: column;
}
.wechat-music-panel.hidden {
display: none;
}
.wechat-music-header {
display: flex;
align-items: center;
justify-content: space-between;
padding: 12px 16px;
background: var(--wechat-navbar);
border-bottom: 1px solid var(--wechat-border);
}
.wechat-music-back {
background: none;
border: none;
color: var(--wechat-text-primary);
cursor: pointer;
padding: 4px;
display: flex;
align-items: center;
justify-content: center;
}
.wechat-music-title {
font-size: 16px;
font-weight: 500;
color: var(--wechat-text-primary);
}
.wechat-music-search {
padding: 12px 16px;
background: var(--wechat-navbar);
}
.wechat-music-search-box {
display: flex;
align-items: center;
gap: 8px;
background: var(--wechat-input-bg);
border-radius: 8px;
padding: 8px 12px;
}
.wechat-music-search-box svg {
color: var(--wechat-text-secondary);
flex-shrink: 0;
}
.wechat-music-search-box input {
flex: 1;
border: none;
background: none;
outline: none;
font-size: 14px;
color: var(--wechat-text-primary);
}
.wechat-music-search-box input::placeholder {
color: var(--wechat-text-secondary);
}
.wechat-music-results {
flex: 1;
overflow-y: auto;
padding: 8px 0;
}
.wechat-music-empty {
display: flex;
align-items: center;
justify-content: center;
height: 200px;
color: var(--wechat-text-secondary);
font-size: 14px;
}
.wechat-music-item {
display: flex;
align-items: center;
padding: 12px 16px;
gap: 12px;
cursor: pointer;
transition: background 0.2s;
}
.wechat-music-item:hover {
background: var(--wechat-hover);
}
.wechat-music-item:active {
background: var(--wechat-active);
}
.wechat-music-item-cover {
width: 48px;
height: 48px;
border-radius: 6px;
background: var(--wechat-input-bg);
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
overflow: hidden;
}
.wechat-music-item-cover img {
width: 100%;
height: 100%;
object-fit: cover;
}
.wechat-music-item-cover svg {
color: var(--wechat-text-secondary);
}
.wechat-music-item-info {
flex: 1;
min-width: 0;
}
.wechat-music-item-name {
font-size: 15px;
color: var(--wechat-text-primary);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.wechat-music-item-artist {
font-size: 13px;
color: var(--wechat-text-secondary);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
margin-top: 2px;
}
.wechat-music-item-duration {
font-size: 12px;
color: var(--wechat-text-secondary);
flex-shrink: 0;
}
.wechat-music-lyrics {
height: 180px;
overflow-y: auto;
padding: 10px 16px;
border-top: 1px solid var(--wechat-border);
background: var(--wechat-bg);
color: var(--wechat-text-secondary);
font-size: 12px;
line-height: 1.6;
white-space: pre-wrap;
}
.wechat-music-lyrics.hidden {
display: none;
}
/* 音乐播放器(底部) */
.wechat-music-player {
display: flex;
align-items: center;
justify-content: space-between;
padding: 10px 16px;
background: var(--wechat-navbar);
border-top: 1px solid var(--wechat-border);
gap: 12px;
}
.wechat-music-player.hidden {
display: none;
}
.wechat-music-player-info {
display: flex;
align-items: center;
gap: 10px;
flex: 1;
min-width: 0;
}
.wechat-music-player-info img {
width: 40px;
height: 40px;
border-radius: 6px;
object-fit: cover;
background: var(--wechat-input-bg);
}
.wechat-music-player-text {
min-width: 0;
}
.wechat-music-player-name {
font-size: 14px;
color: var(--wechat-text-primary);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.wechat-music-player-artist {
font-size: 12px;
color: var(--wechat-text-secondary);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.wechat-music-player-controls {
display: flex;
align-items: center;
gap: 8px;
}
.wechat-music-player-btn {
background: none;
border: none;
color: var(--wechat-text-primary);
cursor: pointer;
padding: 8px;
display: flex;
align-items: center;
justify-content: center;
border-radius: 50%;
transition: background 0.2s;
}
.wechat-music-player-btn:hover {
background: var(--wechat-hover);
}
.wechat-music-share-btn {
background: #07c160;
color: white;
border-radius: 6px;
padding: 6px 16px;
font-size: 13px;
}
.wechat-music-share-btn:hover {
background: #06ad56;
}
/* 音乐加载状态 */
.wechat-music-loading {
display: flex;
align-items: center;
justify-content: center;
padding: 40px;
color: var(--wechat-text-secondary);
}
.wechat-music-loading::after {
content: '';
width: 20px;
height: 20px;
border: 2px solid var(--wechat-border);
border-top-color: #07c160;
border-radius: 50%;
animation: spin 0.8s linear infinite;
margin-left: 8px;
}
@keyframes spin {
to { transform: rotate(360deg); }
}
/* ===== 音乐迷你播放器 ===== */
.wechat-music-mini {
position: absolute;
right: 10px;
bottom: 70px;
z-index: 9000;
transition: opacity 0.3s ease;
}
.wechat-music-mini.hidden {
display: none;
}
.wechat-music-mini-btn {
width: 50px;
height: 50px;
border-radius: 50%;
background: rgba(255, 255, 255, 0.85);
backdrop-filter: blur(20px);
-webkit-backdrop-filter: blur(20px);
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);
color: #333;
transition: transform 0.2s ease, box-shadow 0.2s ease;
border: 1px solid rgba(0, 0, 0, 0.08);
}
.wechat-dark .wechat-music-mini-btn {
background: rgba(40, 40, 40, 0.85);
color: #eee;
border-color: rgba(255, 255, 255, 0.1);
}
.wechat-music-mini-btn:hover {
transform: scale(1.05);
box-shadow: 0 6px 25px rgba(0, 0, 0, 0.2);
}
.wechat-music-mini-btn:active {
transform: scale(0.95);
}
.wechat-music-mini-panel {
position: absolute;
bottom: 60px;
right: 0;
width: 280px;
background: rgba(255, 255, 255, 0.92);
backdrop-filter: blur(30px);
-webkit-backdrop-filter: blur(30px);
border-radius: 16px;
box-shadow: 0 8px 40px rgba(0, 0, 0, 0.15);
overflow: hidden;
animation: miniPanelIn 0.25s ease;
border: 1px solid rgba(0, 0, 0, 0.06);
}
.wechat-dark .wechat-music-mini-panel {
background: rgba(30, 30, 30, 0.92);
border-color: rgba(255, 255, 255, 0.08);
}
@keyframes miniPanelIn {
from {
opacity: 0;
transform: translateY(10px) scale(0.95);
}
to {
opacity: 1;
transform: translateY(0) scale(1);
}
}
.wechat-music-mini-header {
display: flex;
align-items: center;
padding: 12px;
gap: 10px;
border-bottom: 1px solid rgba(0, 0, 0, 0.06);
}
.wechat-dark .wechat-music-mini-header {
border-bottom-color: rgba(255, 255, 255, 0.08);
}
.wechat-music-mini-cover {
width: 45px;
height: 45px;
border-radius: 8px;
object-fit: cover;
background: #f0f0f0;
flex-shrink: 0;
}
.wechat-dark .wechat-music-mini-cover {
background: #333;
}
.wechat-music-mini-info {
flex: 1;
min-width: 0;
overflow: hidden;
}
.wechat-music-mini-name {
font-size: 14px;
font-weight: 500;
color: #333;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.wechat-dark .wechat-music-mini-name {
color: #eee;
}
.wechat-music-mini-artist {
font-size: 12px;
color: #888;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
margin-top: 2px;
}
.wechat-music-mini-controls {
display: flex;
align-items: center;
justify-content: center;
padding: 10px 12px;
gap: 12px;
}
.wechat-music-mini-controls button {
width: 36px;
height: 36px;
border-radius: 50%;
border: none;
background: rgba(0, 0, 0, 0.05);
color: #333;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
transition: background 0.2s, transform 0.15s;
font-size: 13px;
font-weight: 500;
}
.wechat-dark .wechat-music-mini-controls button {
background: rgba(255, 255, 255, 0.1);
color: #eee;
}
.wechat-music-mini-controls button:hover {
background: rgba(0, 0, 0, 0.1);
}
.wechat-dark .wechat-music-mini-controls button:hover {
background: rgba(255, 255, 255, 0.15);
}
.wechat-music-mini-controls button:active {
transform: scale(0.9);
}
.wechat-music-mini-play {
width: 44px !important;
height: 44px !important;
background: rgba(0, 0, 0, 0.08) !important;
color: #333 !important;
border: 1px solid rgba(0, 0, 0, 0.1) !important;
}
.wechat-dark .wechat-music-mini-play {
background: rgba(255, 255, 255, 0.12) !important;
color: #eee !important;
border-color: rgba(255, 255, 255, 0.15) !important;
}
.wechat-music-mini-play:hover {
background: rgba(0, 0, 0, 0.12) !important;
}
.wechat-dark .wechat-music-mini-play:hover {
background: rgba(255, 255, 255, 0.18) !important;
}
.wechat-music-mini-lyrics-btn.active {
background: rgba(0, 0, 0, 0.15) !important;
color: #333 !important;
}
.wechat-dark .wechat-music-mini-lyrics-btn.active {
background: rgba(255, 255, 255, 0.2) !important;
color: #eee !important;
}
.wechat-music-mini-close {
font-size: 16px !important;
}
/* ===== 单行歌词条 ===== */
.wechat-single-lyrics {
position: absolute;
top: 50px;
left: 50%;
transform: translateX(-50%);
max-width: calc(100% - 20px);
background: transparent;
border-radius: 20px;
padding: 8px 16px;
z-index: 8000;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 8px;
transition: opacity 0.3s ease;
cursor: move;
user-select: none;
}
.wechat-single-lyrics.hidden {
display: none;
}
.wechat-single-lyrics.locked {
cursor: default;
}
.wechat-single-lyrics-text {
font-size: 15px;
color: #6b9e78;
text-align: center;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
max-width: 100%;
text-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);
font-weight: 500;
font-family: "华文行楷", "STXingkai", "楷体", "KaiTi", "SimKai", serif;
}
/* 歌词颜色变体 - 低饱和度柔和色 */
.wechat-single-lyrics-text.color-blue {
color: #7a9eb8;
}
.wechat-single-lyrics-text.color-yellow {
color: #c4a35a;
}
.wechat-single-lyrics-text.color-pink {
color: #c48a9f;
}
.wechat-single-lyrics-text.color-green {
color: #6b9e78;
}
.wechat-single-lyrics-text.color-black {
color: #4a4a4a;
text-shadow: 0 1px 2px rgba(255, 255, 255, 0.2);
}
/* 颜色选择按钮容器 - 点击时显示 */
.wechat-single-lyrics-colors {
display: none;
align-items: center;
gap: 8px;
}
.wechat-single-lyrics.show-colors .wechat-single-lyrics-colors {
display: flex;
}
/* 颜色圆圈按钮 */
.wechat-lyrics-color-btn {
width: 18px;
height: 18px;
border-radius: 50%;
border: 2px solid rgba(255, 255, 255, 0.5);
cursor: pointer;
transition: transform 0.15s ease, box-shadow 0.15s ease;
padding: 0;
}
.wechat-lyrics-color-btn:hover {
transform: scale(1.2);
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
}
.wechat-lyrics-color-btn:active {
transform: scale(0.9);
}
.wechat-lyrics-color-btn.active {
border-color: white;
box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.3);
}
.wechat-lyrics-color-btn.color-blue {
background: #7a9eb8;
}
.wechat-lyrics-color-btn.color-yellow {
background: #c4a35a;
}
.wechat-lyrics-color-btn.color-pink {
background: #c48a9f;
}
.wechat-lyrics-color-btn.color-green {
background: #6b9e78;
}
.wechat-lyrics-color-btn.color-black {
background: #4a4a4a;
}
.wechat-single-lyrics-lock {
position: absolute;
right: 8px;
bottom: -28px;
width: 24px;
height: 24px;
border: none;
background: rgba(0, 0, 0, 0.6);
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
color: rgba(255, 255, 255, 0.8);
opacity: 0;
transition: opacity 0.2s ease;
padding: 0;
}
.wechat-single-lyrics-lock.visible {
opacity: 1;
}
.wechat-single-lyrics-lock:hover {
background: rgba(0, 0, 0, 0.8);
color: white;
}
.wechat-single-lyrics.locked .wechat-single-lyrics-lock.visible {
color: #4ade80;
}
/* ===== 播放列表面板 ===== */
.wechat-music-playlist-panel {
position: absolute;
bottom: 0;
left: 0;
right: 0;
max-height: 50%;
background: rgba(255, 255, 255, 0.98);
backdrop-filter: blur(20px);
-webkit-backdrop-filter: blur(20px);
border-radius: 16px 16px 0 0;
box-shadow: 0 -4px 20px rgba(0, 0, 0, 0.15);
z-index: 9500;
display: flex;
flex-direction: column;
animation: playlistSlideUp 0.25s ease;
}
.wechat-dark .wechat-music-playlist-panel {
background: rgba(30, 30, 30, 0.98);
}
@keyframes playlistSlideUp {
from {
transform: translateY(100%);
opacity: 0;
}
to {
transform: translateY(0);
opacity: 1;
}
}
.wechat-music-playlist-panel.hidden {
display: none;
}
.wechat-playlist-header {
display: flex;
align-items: center;
padding: 12px 16px;
border-bottom: 1px solid rgba(0, 0, 0, 0.06);
flex-shrink: 0;
}
.wechat-dark .wechat-playlist-header {
border-bottom-color: rgba(255, 255, 255, 0.08);
}
.wechat-playlist-title {
font-size: 14px;
font-weight: 500;
color: var(--wechat-text);
flex: 1;
}
.wechat-playlist-clear {
font-size: 12px;
color: #999;
background: none;
border: none;
padding: 4px 8px;
cursor: pointer;
margin-right: 8px;
}
.wechat-playlist-clear:hover {
color: #f44336;
}
.wechat-playlist-close {
width: 28px;
height: 28px;
border: none;
background: transparent;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
color: #999;
padding: 0;
}
.wechat-playlist-close:hover {
background: rgba(0, 0, 0, 0.05);
color: #666;
}
.wechat-playlist-content {
flex: 1;
overflow-y: auto;
padding: 8px 0;
}
.wechat-playlist-empty {
text-align: center;
color: #999;
font-size: 13px;
padding: 30px;
}
.wechat-playlist-item {
display: flex;
align-items: center;
padding: 10px 16px;
cursor: pointer;
transition: background 0.15s ease;
}
.wechat-playlist-item:hover {
background: rgba(0, 0, 0, 0.03);
}
.wechat-dark .wechat-playlist-item:hover {
background: rgba(255, 255, 255, 0.05);
}
.wechat-playlist-item.active {
background: rgba(7, 193, 96, 0.08);
}
.wechat-playlist-item.active .wechat-playlist-item-name {
color: #07c160;
}
.wechat-playlist-item-info {
flex: 1;
min-width: 0;
}
.wechat-playlist-item-name {
font-size: 13px;
color: var(--wechat-text);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.wechat-playlist-item-artist {
font-size: 11px;
color: #999;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
margin-top: 2px;
}
.wechat-playlist-item-del {
width: 24px;
height: 24px;
border: none;
background: transparent;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
color: #ccc;
padding: 0;
flex-shrink: 0;
opacity: 0;
transition: opacity 0.15s ease;
}
.wechat-playlist-item:hover .wechat-playlist-item-del {
opacity: 1;
}
.wechat-playlist-item-del:hover {
color: #f44336;
background: rgba(244, 67, 54, 0.1);
}
.wechat-music-mini-lyrics {
max-height: 200px;
overflow-y: auto;
padding: 12px;
font-size: 12px;
line-height: 1.8;
color: #666;
white-space: pre-wrap;
border-top: 1px solid rgba(0, 0, 0, 0.06);
background: rgba(0, 0, 0, 0.02);
}
.wechat-dark .wechat-music-mini-lyrics {
color: #aaa;
border-top-color: rgba(255, 255, 255, 0.08);
background: rgba(255, 255, 255, 0.03);
}
.wechat-music-mini-lyrics.hidden {
display: none;
}
/* ===== 迷你播放器进度条 ===== */
.wechat-music-mini-progress {
display: flex;
align-items: center;
padding: 8px 12px;
gap: 8px;
border-bottom: 1px solid rgba(0, 0, 0, 0.06);
}
.wechat-dark .wechat-music-mini-progress {
border-bottom-color: rgba(255, 255, 255, 0.08);
}
.wechat-music-mini-time {
font-size: 11px;
color: #888;
min-width: 32px;
text-align: center;
font-variant-numeric: tabular-nums;
}
.wechat-music-mini-slider-container {
flex: 1;
display: flex;
align-items: center;
}
.wechat-music-mini-slider {
width: 100%;
height: 4px;
-webkit-appearance: none;
appearance: none;
background: rgba(0, 0, 0, 0.1);
border-radius: 2px;
outline: none;
cursor: pointer;
transition: height 0.15s ease;
}
.wechat-dark .wechat-music-mini-slider {
background: rgba(255, 255, 255, 0.15);
}
.wechat-music-mini-slider:hover {
height: 6px;
}
.wechat-music-mini-slider::-webkit-slider-thumb {
-webkit-appearance: none;
appearance: none;
width: 12px;
height: 12px;
border-radius: 50%;
background: #07c160;
cursor: pointer;
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2);
transition: transform 0.15s ease;
}
.wechat-music-mini-slider::-webkit-slider-thumb:hover {
transform: scale(1.2);
}
.wechat-music-mini-slider::-webkit-slider-thumb:active {
transform: scale(0.9);
}
.wechat-music-mini-slider::-moz-range-thumb {
width: 12px;
height: 12px;
border-radius: 50%;
background: #07c160;
cursor: pointer;
border: none;
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.2);
}
/* ===== 浮动歌词面板 ===== */
.wechat-floating-lyrics {
position: absolute;
top: 60px;
left: 50%;
transform: translateX(-50%);
width: 280px;
max-height: 50%;
background: rgba(0, 0, 0, 0.85);
backdrop-filter: blur(20px);
-webkit-backdrop-filter: blur(20px);
border-radius: 16px;
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3);
z-index: 8500;
overflow: hidden;
display: flex;
flex-direction: column;
}
.wechat-floating-lyrics.hidden {
display: none;
}
.wechat-floating-lyrics-header {
display: flex;
align-items: center;
justify-content: space-between;
padding: 12px 16px;
background: rgba(255, 255, 255, 0.05);
cursor: move;
user-select: none;
flex-shrink: 0;
}
.wechat-floating-lyrics-title {
font-size: 13px;
font-weight: 500;
color: rgba(255, 255, 255, 0.9);
}
.wechat-floating-lyrics-close {
width: 28px;
height: 28px;
border: none;
background: rgba(255, 255, 255, 0.1);
border-radius: 50%;
color: rgba(255, 255, 255, 0.7);
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
transition: background 0.2s;
}
.wechat-floating-lyrics-close:hover {
background: rgba(255, 255, 255, 0.2);
}
.wechat-floating-lyrics-content {
flex: 1;
overflow-y: auto;
padding: 16px;
scroll-behavior: smooth;
}
.wechat-lyrics-line {
font-size: 14px;
line-height: 2.2;
color: rgba(255, 255, 255, 0.5);
text-align: center;
transition: all 0.3s ease;
padding: 4px 0;
}
.wechat-lyrics-line.active {
color: #07c160;
font-size: 16px;
font-weight: 500;
text-shadow: 0 0 10px rgba(7, 193, 96, 0.5);
}
.wechat-floating-lyrics-content::-webkit-scrollbar {
width: 4px;
}
.wechat-floating-lyrics-content::-webkit-scrollbar-track {
background: transparent;
}
.wechat-floating-lyrics-content::-webkit-scrollbar-thumb {
background: rgba(255, 255, 255, 0.2);
border-radius: 2px;
}
.wechat-floating-lyrics-content::-webkit-scrollbar-thumb:hover {
background: rgba(255, 255, 255, 0.3);
}
/* ===== 音乐卡片 ===== */
.wechat-music-card {
display: flex;
align-items: center;
background: var(--wechat-white);
border-radius: 8px;
padding: 10px;
gap: 10px;
min-width: 220px;
max-width: 280px;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
cursor: pointer;
transition: transform 0.15s ease, box-shadow 0.15s ease;
}
.wechat-music-card:hover {
transform: translateY(-2px);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}
.wechat-music-card:active {
transform: scale(0.98);
}
.wechat-music-card-cover {
width: 50px;
height: 50px;
border-radius: 6px;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
flex-shrink: 0;
overflow: hidden;
}
.wechat-music-card-cover img {
width: 100%;
height: 100%;
object-fit: cover;
}
.wechat-music-card-info {
flex: 1;
min-width: 0;
overflow: hidden;
}
.wechat-music-card-name {
font-size: 14px;
font-weight: 500;
color: var(--wechat-text);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.wechat-music-card-artist {
font-size: 12px;
color: var(--wechat-text-secondary);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
margin-top: 2px;
}
.wechat-music-card-play {
width: 36px;
height: 36px;
border-radius: 50%;
background: rgba(0, 0, 0, 0.05);
display: flex;
align-items: center;
justify-content: center;
color: var(--wechat-text-secondary);
flex-shrink: 0;
}
.wechat-music-card-footer {
font-size: 11px;
color: var(--wechat-text-secondary);
margin-top: 4px;
padding-left: 2px;
}
/* ===== 联系人设置弹窗 ===== */
#wechat-contact-settings-modal .wechat-modal-content {
width: 300px !important;
max-width: 85% !important;
max-height: 70vh !important;
padding: 16px !important;
padding-bottom: 24px !important;
-webkit-overflow-scrolling: touch;
scrollbar-width: thin;
scrollbar-color: rgba(0, 0, 0, 0.2) transparent;
}
#wechat-contact-settings-modal .wechat-modal-title {
font-size: 15px;
margin-bottom: 12px;
}
#wechat-contact-settings-modal .wechat-settings-section-title {
font-size: 12px;
padding: 8px 0 6px;
}
#wechat-contact-settings-modal .wechat-settings-group {
padding: 10px;
margin-bottom: 10px;
}
#wechat-contact-settings-modal .wechat-settings-label {
font-size: 13px;
}
#wechat-contact-settings-modal .wechat-settings-input {
padding: 8px 10px;
font-size: 13px;
}
#wechat-contact-settings-modal .wechat-contact-settings-avatar-section {
margin-bottom: 12px !important;
}
#wechat-contact-settings-modal .wechat-contact-settings-avatar-section > div:first-child {
width: 50px !important;
height: 50px !important;
font-size: 20px !important;
}
#wechat-contact-settings-modal .wechat-modal-content::-webkit-scrollbar {
width: 6px;
}
#wechat-contact-settings-modal .wechat-modal-content::-webkit-scrollbar-track {
background: transparent;
}
#wechat-contact-settings-modal .wechat-modal-content::-webkit-scrollbar-thumb {
background: rgba(0, 0, 0, 0.2);
border-radius: 3px;
}
#wechat-contact-settings-modal .wechat-modal-content::-webkit-scrollbar-thumb:hover {
background: rgba(0, 0, 0, 0.3);
}
.wechat-dark #wechat-contact-settings-modal .wechat-modal-content::-webkit-scrollbar-thumb {
background: rgba(255, 255, 255, 0.2);
}
.wechat-dark #wechat-contact-settings-modal .wechat-modal-content::-webkit-scrollbar-thumb:hover {
background: rgba(255, 255, 255, 0.3);
}
/* ===== 发现页面 ===== */
#wechat-discover-page {
display: flex;
flex-direction: column;
flex: 1;
min-height: 0;
}
.wechat-discover-content {
flex: 1;
overflow-y: auto;
background: var(--wechat-bg);
min-height: 0;
-webkit-overflow-scrolling: touch;
padding-bottom: 10px;
}
.wechat-discover-group {
background: var(--wechat-white);
margin: 10px 0;
}
.wechat-discover-group:first-child {
margin-top: 0;
}
.wechat-discover-item {
display: flex;
align-items: center;
padding: 14px 16px;
cursor: pointer;
transition: background 0.2s;
border-bottom: 1px solid var(--wechat-border);
}
.wechat-discover-item:last-child {
border-bottom: none;
}
.wechat-discover-item:active {
background: var(--wechat-bg);
}
.wechat-discover-item-disabled {
opacity: 0.7;
}
.wechat-discover-item-disabled:active {
background: transparent;
}
.wechat-discover-item-icon {
width: 24px;
height: 24px;
margin-right: 16px;
display: flex;
align-items: center;
justify-content: center;
}
.wechat-discover-item-icon svg {
width: 24px;
height: 24px;
}
.wechat-discover-item-text {
flex: 1;
font-size: 16px;
color: var(--wechat-text);
}
.wechat-discover-item-right {
display: flex;
align-items: center;
gap: 8px;
}
.wechat-discover-item-preview {
width: 32px;
height: 32px;
border-radius: 4px;
overflow: hidden;
}
.wechat-discover-item-preview img {
width: 100%;
height: 100%;
object-fit: cover;
}
.wechat-discover-item-badge {
font-size: 11px;
color: var(--wechat-text-secondary);
background: var(--wechat-bg);
padding: 2px 8px;
border-radius: 10px;
}
.wechat-discover-item-arrow {
font-size: 18px;
color: var(--wechat-text-secondary);
}
/* ===== 朋友圈页面 ===== */
.wechat-moments-page {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: var(--wechat-bg);
z-index: 200;
display: flex;
flex-direction: column;
overflow: hidden;
}
.wechat-moments-page.hidden {
display: none;
}
/* 固定导航栏 */
.wechat-moments-navbar {
position: relative;
flex-shrink: 0;
display: flex;
align-items: center;
justify-content: space-between;
padding: 10px 12px;
z-index: 100;
background: rgba(25, 25, 35, 0.95);
backdrop-filter: blur(10px);
-webkit-backdrop-filter: blur(10px);
border-bottom: 1px solid rgba(255, 255, 255, 0.08);
}
.wechat-moments-navbar .wechat-navbar-title {
color: white;
}
.wechat-moments-navbar .wechat-navbar-btn {
background: none;
border: none;
color: white;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
}
/* 返回按钮 - 增大点击区域 */
.wechat-moments-navbar .wechat-navbar-back {
width: 44px;
height: 44px;
margin: -10px;
margin-right: 0;
padding: 10px;
}
.wechat-moments-navbar .wechat-navbar-back svg {
width: 24px;
height: 24px;
}
#wechat-moments-camera-btn {
width: 44px;
height: 44px;
margin: -10px;
margin-left: 0;
padding: 10px;
opacity: 0.9;
}
/* 滚动区域 */
.wechat-moments-scroll {
flex: 1;
overflow-y: auto;
overflow-x: hidden;
-webkit-overflow-scrolling: touch;
}
/* 朋友圈头部区域 */
.wechat-moments-header {
position: relative;
flex-shrink: 0;
}
/* 封面图片 */
.wechat-moments-cover {
width: 100%;
height: 280px;
background: linear-gradient(135deg, #1a1a2e 0%, #16213e 50%, #0f3460 100%);
background-size: cover;
background-position: center;
position: relative;
cursor: pointer;
}
.wechat-moments-cover-placeholder {
position: absolute;
bottom: 60px;
right: 16px;
color: rgba(255, 255, 255, 0.6);
font-size: 12px;
}
/* 用户资料区域 */
.wechat-moments-profile {
position: absolute;
bottom: -30px;
right: 16px;
display: flex;
align-items: flex-end;
gap: 12px;
}
.wechat-moments-username {
color: white;
font-size: 17px;
font-weight: 600;
text-shadow: 0 1px 4px rgba(0, 0, 0, 0.5);
margin-bottom: 8px;
}
.wechat-moments-avatar {
width: 70px;
height: 70px;
border-radius: 10px;
background: var(--wechat-white);
border: 3px solid var(--wechat-bg);
overflow: hidden;
cursor: pointer;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
}
.wechat-moments-avatar img {
width: 100%;
height: 100%;
object-fit: cover;
}
/* 朋友圈内容列表 */
.wechat-moments-list {
padding: 50px 0 20px;
min-height: 200px;
}
/* 朋友圈单条动态 */
.wechat-moment-item {
display: flex;
padding: 16px;
border-bottom: 1px solid var(--wechat-border);
gap: 12px;
overflow: hidden;
}
.wechat-moment-avatar {
width: 44px;
height: 44px;
border-radius: 6px;
flex-shrink: 0;
overflow: hidden;
cursor: pointer;
background: var(--wechat-white);
}
.wechat-moment-avatar img {
width: 100%;
height: 100%;
object-fit: cover;
}
.wechat-moment-content {
flex: 1;
min-width: 0;
overflow: hidden;
}
.wechat-moment-name {
font-size: 15px;
font-weight: 500;
color: #576B95;
margin-bottom: 6px;
cursor: pointer;
}
.wechat-moment-text {
font-size: 15px;
color: var(--wechat-text);
line-height: 1.5;
margin-bottom: 10px;
word-break: break-word;
}
/* 图片网格 */
.wechat-moment-images {
display: grid;
gap: 4px;
margin-bottom: 10px;
max-width: 240px;
}
.wechat-moment-images.grid-1 {
grid-template-columns: 1fr;
max-width: 180px;
}
.wechat-moment-images.grid-2 {
grid-template-columns: repeat(2, 1fr);
max-width: 200px;
}
.wechat-moment-images.grid-3,
.wechat-moment-images.grid-4,
.wechat-moment-images.grid-5,
.wechat-moment-images.grid-6 {
grid-template-columns: repeat(3, 1fr);
}
.wechat-moment-images.grid-7,
.wechat-moment-images.grid-8,
.wechat-moment-images.grid-9 {
grid-template-columns: repeat(3, 1fr);
}
.wechat-moment-img {
width: 100%;
aspect-ratio: 1;
object-fit: cover;
border-radius: 4px;
cursor: pointer;
background: var(--wechat-white);
}
/* 图片描述占位卡片AI生成的图片描述 */
.wechat-moment-img-placeholder {
width: 100%;
aspect-ratio: 1;
border-radius: 4px;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 8px;
box-sizing: border-box;
color: white;
text-align: center;
overflow: hidden;
}
.wechat-moment-img-icon {
opacity: 0.8;
margin-bottom: 6px;
}
.wechat-moment-img-icon svg {
stroke: white;
fill: none;
}
.wechat-moment-img-icon svg circle,
.wechat-moment-img-icon svg rect {
fill: none;
}
.wechat-moment-img-icon svg circle[fill="currentColor"] {
fill: white;
}
.wechat-moment-img-desc {
font-size: 10px;
line-height: 1.3;
opacity: 0.9;
display: -webkit-box;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
overflow: hidden;
text-overflow: ellipsis;
max-height: 3.9em;
}
/* 朋友圈照片卡片(点击查看样式) */
.wechat-moment-images .wechat-moment-photo-card {
width: 150px;
height: auto;
min-height: 80px;
aspect-ratio: unset;
padding: 8px;
margin: 0;
background: linear-gradient(135deg, #e8f4fd 0%, #d6ecfc 100%);
border: 1px solid #b8d4f0;
border-radius: 8px;
}
/* 当朋友圈图片区域只包含照片描述卡片时,使用垂直布局 */
.wechat-moment-images:has(.wechat-moment-photo-card) {
display: flex !important;
flex-direction: column !important;
gap: 8px;
max-width: 180px;
}
.wechat-moment-images:has(.wechat-moment-photo-card) .wechat-moment-photo-card {
width: 100%;
max-width: 180px;
}
.wechat-moment-photo-card .wechat-photo-blur {
position: absolute;
top: 8px;
left: 8px;
right: 8px;
bottom: 8px;
border-radius: 6px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
background: #ffffff;
border: 1px solid #e0e0e0;
}
.wechat-moment-photo-card .wechat-photo-content {
padding: 12px 10px;
font-size: 13px;
line-height: 1.5;
color: #333;
text-align: center;
display: flex;
align-items: center;
justify-content: center;
min-height: 60px;
max-height: 150px;
overflow-y: auto;
background: #ffffff;
border-radius: 6px;
border: 1px solid #e0e0e0;
}
.wechat-moment-photo-card .wechat-photo-icon svg {
width: 32px;
height: 32px;
color: #5ba3d9;
}
.wechat-moment-photo-card .wechat-photo-hint {
font-size: 12px;
color: #5ba3d9;
margin-top: 6px;
}
.wechat-moment-photo-card .wechat-photo-content::-webkit-scrollbar {
width: 4px;
}
.wechat-moment-photo-card .wechat-photo-content::-webkit-scrollbar-thumb {
background: #ccc;
border-radius: 2px;
}
/* 带描述的图片包装器 */
.wechat-moment-img-wrapper {
position: relative;
width: 100%;
aspect-ratio: 1;
border-radius: 4px;
overflow: hidden;
}
.wechat-moment-img-wrapper .wechat-moment-img {
width: 100%;
height: 100%;
object-fit: cover;
}
.wechat-moment-img-caption {
position: absolute;
bottom: 0;
left: 0;
right: 0;
padding: 4px 6px;
background: linear-gradient(transparent, rgba(0, 0, 0, 0.7));
color: #fff;
font-size: 10px;
line-height: 1.3;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
/* 底部操作区 */
.wechat-moment-footer {
display: flex;
align-items: center;
justify-content: space-between;
}
.wechat-moment-time {
font-size: 12px;
color: var(--wechat-text-secondary);
}
.wechat-moment-actions {
display: flex;
align-items: center;
gap: 8px;
}
.wechat-moment-delete-btn {
background: none;
border: none;
padding: 4px;
cursor: pointer;
color: var(--wechat-text-secondary);
display: flex;
align-items: center;
justify-content: center;
opacity: 0.6;
transition: opacity 0.2s;
}
.wechat-moment-delete-btn:hover {
opacity: 1;
color: #ff4d4f;
}
.wechat-moment-action-btn {
width: 28px;
height: 20px;
background: var(--wechat-search-bg);
border: none;
border-radius: 4px;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
position: relative;
}
.wechat-moment-action-btn::before,
.wechat-moment-action-btn::after {
content: '';
width: 4px;
height: 4px;
background: var(--wechat-text-secondary);
border-radius: 50%;
}
.wechat-moment-action-btn::before {
margin-right: 3px;
}
/* 点赞评论弹窗 */
.wechat-moments-action-popup {
position: absolute;
display: flex;
align-items: center;
background: #4C4C4C;
border-radius: 6px;
padding: 0;
z-index: 100;
animation: wechat-menu-pop 0.15s ease-out;
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.3);
}
.wechat-moments-action-popup.hidden {
display: none;
}
.wechat-moments-action-btn {
display: flex;
align-items: center;
gap: 6px;
padding: 10px 16px;
cursor: pointer;
color: white;
font-size: 14px;
transition: background 0.15s;
}
.wechat-moments-action-btn:first-child {
border-radius: 6px 0 0 6px;
}
.wechat-moments-action-btn:last-child {
border-radius: 0 6px 6px 0;
}
.wechat-moments-action-btn:hover {
background: rgba(255, 255, 255, 0.1);
}
.wechat-moments-action-btn:active {
background: rgba(255, 255, 255, 0.2);
}
.wechat-moments-action-btn svg {
stroke: white;
fill: none;
}
.wechat-moments-action-divider {
width: 1px;
height: 24px;
background: rgba(255, 255, 255, 0.2);
}
/* 评论输入框 */
.wechat-moments-comment-input {
position: fixed;
bottom: 0;
left: 0;
right: 0;
display: flex;
align-items: center;
gap: 10px;
padding: 12px 16px;
background: var(--wechat-header-bg);
border-top: 1px solid var(--wechat-border);
z-index: 150;
}
.wechat-moments-comment-input.hidden {
display: none;
}
.wechat-moments-comment-input input {
flex: 1;
padding: 10px 14px;
border: none;
border-radius: 6px;
background: var(--wechat-search-bg);
color: var(--wechat-text);
font-size: 15px;
outline: none;
}
.wechat-moments-comment-input input::placeholder {
color: var(--wechat-text-secondary);
}
.wechat-moments-comment-send {
padding: 10px 18px;
background: var(--wechat-green);
color: white;
border: none;
border-radius: 6px;
font-size: 14px;
cursor: pointer;
flex-shrink: 0;
}
.wechat-moments-comment-send:active {
background: var(--wechat-green-dark);
}
/* 点赞评论区域 */
.wechat-moment-interactions {
background: var(--wechat-search-bg);
border-radius: 4px;
margin-top: 8px;
overflow: hidden;
}
/* 点赞列表 */
.wechat-moment-likes {
display: flex;
flex-wrap: wrap;
align-items: center;
padding: 8px 10px;
gap: 4px;
font-size: 13px;
border-bottom: 1px solid var(--wechat-border);
}
.wechat-moment-likes:empty {
display: none;
}
.wechat-moment-likes:only-child {
border-bottom: none;
}
.wechat-moment-like-icon {
color: #576B95;
margin-right: 4px;
}
.wechat-moment-like-icon svg {
width: 14px;
height: 14px;
fill: #576B95;
}
.wechat-moment-like-name {
color: #576B95;
cursor: pointer;
}
.wechat-moment-like-name:hover {
text-decoration: underline;
}
.wechat-moment-like-separator {
color: var(--wechat-text-secondary);
}
/* 评论列表 */
.wechat-moment-comments {
padding: 6px 10px;
}
.wechat-moment-comments:empty {
display: none;
}
.wechat-moment-comment {
font-size: 13px;
line-height: 1.6;
padding: 2px 0;
}
.wechat-moment-comment-name {
color: #576B95;
cursor: pointer;
}
.wechat-moment-comment-name:hover {
text-decoration: underline;
}
.wechat-moment-comment-reply {
color: var(--wechat-text-secondary);
}
.wechat-moment-comment-text {
color: var(--wechat-text);
}
/* 可点击的评论(点击回复) */
.wechat-moment-comment-clickable {
cursor: pointer;
border-radius: 4px;
margin: 0 -4px;
padding: 2px 4px;
transition: background-color 0.15s;
}
.wechat-moment-comment-clickable:hover {
background: rgba(0, 0, 0, 0.05);
}
.wechat-moment-comment-clickable:active {
background: rgba(0, 0, 0, 0.1);
}
.wechat-dark .wechat-moment-comment-clickable:hover {
background: rgba(255, 255, 255, 0.08);
}
.wechat-dark .wechat-moment-comment-clickable:active {
background: rgba(255, 255, 255, 0.12);
}
/* 深色模式适配 */
.wechat-dark .wechat-moment-interactions {
background: rgba(255, 255, 255, 0.06);
}
.wechat-dark .wechat-moment-likes {
border-bottom-color: rgba(255, 255, 255, 0.08);
}
/* ===== Meme表情包文本框浅色模式 ===== */
.wechat-phone:not(.wechat-dark) #wechat-meme-stickers-list,
.wechat-phone:not(.wechat-dark) #wechat-meme-input {
background: #FFFFFF !important;
color: #191919 !important;
border-color: #E5E5E5 !important;
}
.wechat-phone:not(.wechat-dark) #wechat-meme-stickers-list::placeholder,
.wechat-phone:not(.wechat-dark) #wechat-meme-input::placeholder {
color: #888888 !important;
}
/* ===== 红包功能样式 ===== */
/* 发红包页面 */
.wechat-red-packet-page {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: #111111;
display: flex;
flex-direction: column;
z-index: 100;
}
.wechat-red-packet-page.hidden {
display: none;
}
.wechat-rp-navbar {
background: #111111 !important;
}
.wechat-rp-navbar .wechat-navbar-title {
color: #e9e9e9;
}
.wechat-rp-navbar .wechat-navbar-btn {
color: #e9e9e9;
}
.wechat-rp-content {
flex: 1;
display: flex;
flex-direction: column;
padding: 20px 0;
}
.wechat-rp-form {
background: #1c1c1c;
margin: 0 15px;
border-radius: 8px;
overflow: hidden;
}
.wechat-rp-row {
display: flex;
align-items: center;
justify-content: space-between;
padding: 15px;
border-bottom: 1px solid #2c2c2c;
}
.wechat-rp-row:last-child {
border-bottom: none;
}
.wechat-rp-label {
color: #e9e9e9;
font-size: 16px;
}
.wechat-rp-amount-input {
flex: 1;
background: transparent;
border: none;
color: #000;
font-size: 24px;
font-weight: 500;
text-align: right;
outline: none;
}
.wechat-rp-amount-input::placeholder {
color: #666;
}
.wechat-rp-amount-input::-webkit-outer-spin-button,
.wechat-rp-amount-input::-webkit-inner-spin-button {
-webkit-appearance: none;
margin: 0;
}
.wechat-rp-password-input {
width: 100%;
padding: 12px;
font-size: 18px;
text-align: center;
letter-spacing: 8px;
border: 1px solid #444;
border-radius: 8px;
background: #2c2c2c;
color: #fff;
outline: none;
margin-bottom: 15px;
}
.wechat-rp-password-input::placeholder {
letter-spacing: normal;
color: #666;
}
.wechat-rp-password-confirm-btn {
width: 100%;
padding: 12px;
background: linear-gradient(135deg, #e74c3c, #c0392b);
color: #fff;
border: none;
border-radius: 8px;
font-size: 16px;
font-weight: 500;
cursor: pointer;
}
.wechat-rp-password-confirm-btn:active {
opacity: 0.8;
}
.wechat-rp-value {
color: #e74c3c;
font-size: 16px;
font-weight: 500;
}
.wechat-rp-message-input {
flex: 1;
background: transparent;
border: none;
color: #e9e9e9;
font-size: 16px;
outline: none;
}
.wechat-rp-message-input::placeholder {
color: #666;
}
.wechat-rp-emoji-btn {
font-size: 20px;
cursor: pointer;
}
.wechat-rp-cover-row {
cursor: pointer;
}
.wechat-rp-arrow {
color: #666;
font-size: 18px;
}
.wechat-rp-amount-display {
flex: 1;
display: flex;
align-items: center;
justify-content: center;
color: #e9e9e9;
font-size: 48px;
font-weight: 300;
}
.wechat-rp-submit-btn {
margin: 0 50px;
padding: 14px;
background: linear-gradient(135deg, #e74c3c, #c0392b);
border: none;
border-radius: 8px;
color: #fff;
font-size: 17px;
font-weight: 500;
cursor: pointer;
}
.wechat-rp-submit-btn:active {
opacity: 0.8;
}
.wechat-rp-hint {
text-align: center;
color: #666;
font-size: 12px;
margin-top: 15px;
padding-bottom: 20px;
}
/* 数字键盘 */
.wechat-rp-keyboard {
background: #2c2c2c;
padding: 5px;
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 5px;
}
.wechat-rp-keyboard.hidden {
display: none;
}
.wechat-rp-keyboard-row {
display: contents;
}
.wechat-rp-keyboard-key {
background: #3c3c3c;
border: none;
border-radius: 5px;
color: #e9e9e9;
font-size: 22px;
padding: 15px;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
}
.wechat-rp-keyboard-key:active {
background: #4c4c4c;
}
.wechat-rp-keyboard-key svg {
fill: #e9e9e9;
}
.wechat-rp-key-backspace {
background: #3c3c3c;
}
.wechat-rp-key-confirm {
background: linear-gradient(135deg, #e74c3c, #c0392b);
color: #fff;
grid-row: span 3;
font-size: 18px;
}
.wechat-rp-key-confirm:active {
background: #c0392b;
}
.wechat-rp-key-zero {
grid-column: span 2;
}
/* 密码输入弹窗 */
.wechat-rp-password-modal {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.6);
display: flex;
align-items: flex-end;
z-index: 110;
}
.wechat-rp-password-modal.hidden {
display: none;
}
.wechat-rp-password-content {
width: 100%;
background: #1c1c1c;
border-radius: 16px 16px 0 0;
padding: 20px;
position: relative;
}
.wechat-rp-password-close {
position: absolute;
top: 15px;
right: 15px;
background: none;
border: none;
color: #666;
font-size: 24px;
cursor: pointer;
}
.wechat-rp-password-title {
text-align: center;
color: #e9e9e9;
font-size: 18px;
margin-bottom: 25px;
}
.wechat-rp-password-dots {
display: flex;
justify-content: center;
gap: 15px;
margin-bottom: 15px;
}
.wechat-password-dot {
width: 14px;
height: 14px;
border: 1px solid #666;
border-radius: 50%;
background: transparent;
}
.wechat-password-dot.filled {
background: #e9e9e9;
border-color: #e9e9e9;
}
.wechat-rp-password-hint {
text-align: center;
color: #5b9bd5;
font-size: 14px;
margin-bottom: 20px;
}
.wechat-rp-password-keyboard {
display: flex;
flex-direction: column;
gap: 5px;
}
.wechat-rp-password-row {
display: flex;
gap: 5px;
}
.wechat-password-key {
flex: 1;
background: #3c3c3c;
border: none;
border-radius: 5px;
color: #e9e9e9;
font-size: 22px;
padding: 15px;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
}
.wechat-password-key:active {
background: #4c4c4c;
}
.wechat-password-key svg {
fill: #e9e9e9;
}
.wechat-password-key-empty {
background: transparent;
cursor: default;
}
/* 红包消息气泡 */
.wechat-red-packet-bubble {
background: linear-gradient(180deg, #f97316 0%, #ea580c 100%);
border-radius: 8px;
padding: 12px;
min-width: 200px;
max-width: 240px;
cursor: default;
}
.wechat-red-packet-bubble.claimed {
background: linear-gradient(180deg, #a3a3a3 0%, #737373 100%);
}
/* 红包已过期状态 */
.wechat-red-packet-bubble.expired {
background: linear-gradient(180deg, #a3a3a3 0%, #737373 100%);
}
.wechat-red-packet-bubble .wechat-rp-bubble-icon {
font-size: 36px;
float: left;
margin-right: 10px;
}
.wechat-red-packet-bubble .wechat-rp-bubble-content {
overflow: hidden;
}
.wechat-red-packet-bubble .wechat-rp-bubble-message {
color: #fff;
font-size: 15px;
margin-bottom: 4px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.wechat-red-packet-bubble .wechat-rp-bubble-status {
color: rgba(255, 255, 255, 0.7);
font-size: 12px;
}
.wechat-red-packet-bubble .wechat-rp-bubble-status.hidden {
display: none;
}
.wechat-red-packet-bubble .wechat-rp-bubble-footer {
clear: both;
border-top: 1px solid rgba(255, 255, 255, 0.2);
margin-top: 10px;
padding-top: 6px;
}
.wechat-red-packet-bubble .wechat-rp-bubble-label {
color: rgba(255, 255, 255, 0.8);
font-size: 12px;
}
/* 红包领取提示 */
.wechat-rp-claim-notice {
text-align: center;
padding: 10px 0;
}
.wechat-rp-claim-notice span {
background: rgba(0, 0, 0, 0.1);
color: #888;
font-size: 12px;
padding: 4px 12px;
border-radius: 4px;
}
.wechat-dark .wechat-rp-claim-notice span {
background: rgba(255, 255, 255, 0.1);
color: #999;
}
/* 开红包弹窗 */
.wechat-open-rp-modal {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.85);
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
z-index: 120;
}
.wechat-open-rp-modal.hidden {
display: none;
}
.wechat-open-rp-wrapper {
position: relative;
width: 280px;
display: flex;
flex-direction: column;
align-items: center;
}
.wechat-open-rp-top {
width: 100%;
background: #e4473c;
border-radius: 12px 12px 0 0;
padding: 30px 20px 60px;
text-align: center;
position: relative;
transition: transform 0.5s ease-out, opacity 0.5s ease-out;
}
.wechat-open-rp-top.slide-up {
transform: translateY(-100%);
opacity: 0;
}
.wechat-open-rp-close {
position: absolute;
top: 10px;
right: 10px;
background: none;
border: none;
color: rgba(255, 255, 255, 0.6);
font-size: 24px;
cursor: pointer;
}
.wechat-open-rp-header {
display: flex;
align-items: center;
justify-content: center;
gap: 8px;
margin-bottom: 15px;
}
.wechat-open-rp-icon {
font-size: 24px;
}
.wechat-open-rp-sender {
color: #ffeb99;
font-size: 14px;
}
.wechat-open-rp-message {
color: #fff;
font-size: 22px;
font-weight: 500;
}
.wechat-open-rp-btn-wrapper {
position: relative;
margin-top: -40px;
z-index: 5;
}
.wechat-open-rp-btn {
width: 80px;
height: 80px;
border-radius: 50%;
background: #deb978;
border: none;
color: #b5873a;
font-size: 32px;
font-weight: bold;
cursor: pointer;
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.3);
transition: transform 0.2s;
}
.wechat-open-rp-btn:hover {
transform: scale(1.05);
}
.wechat-open-rp-btn:active {
transform: scale(0.95);
}
.wechat-open-rp-bottom {
width: 100%;
height: 100px;
background: #e4473c;
border-radius: 0 0 12px 12px;
margin-top: -40px;
transition: transform 0.5s ease-out, opacity 0.5s ease-out;
}
.wechat-open-rp-bottom.slide-down {
transform: translateY(100%);
opacity: 0;
}
.wechat-open-rp-preview {
position: absolute;
bottom: 80px;
left: 20px;
right: 20px;
background: #c9a067;
border-radius: 8px;
padding: 10px 15px;
display: flex;
align-items: center;
gap: 10px;
}
.wechat-open-rp-preview-icon {
font-size: 20px;
}
.wechat-open-rp-preview-msg {
flex: 1;
color: #fff;
font-size: 14px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.wechat-open-rp-preview-close {
background: none;
border: none;
color: rgba(255, 255, 255, 0.6);
font-size: 18px;
cursor: pointer;
}
/* 红包详情页 */
.wechat-rp-detail-page {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: #111111;
display: flex;
flex-direction: column;
z-index: 125;
}
.wechat-rp-detail-page.hidden {
display: none;
}
.wechat-rp-detail-header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 40px 15px 10px;
background: #e4473c;
}
.wechat-rp-detail-header .wechat-navbar-btn {
color: #fff;
}
.wechat-rp-detail-top {
background: #e4473c;
padding: 20px;
text-align: center;
}
.wechat-rp-detail-icon {
font-size: 40px;
margin-bottom: 10px;
}
.wechat-rp-detail-sender {
color: #ffeb99;
font-size: 14px;
margin-bottom: 8px;
}
.wechat-rp-detail-message {
color: #fff;
font-size: 16px;
}
.wechat-rp-detail-body {
background: #111111;
padding: 40px 20px;
text-align: center;
}
.wechat-rp-detail-amount {
color: #e4473c;
font-size: 48px;
font-weight: 300;
margin-bottom: 10px;
}
.wechat-rp-detail-unit {
font-size: 20px;
margin-left: 5px;
}
.wechat-rp-detail-tip {
color: #888;
font-size: 14px;
}
.wechat-rp-detail-record {
flex: 1;
background: #1c1c1c;
margin: 0 15px;
border-radius: 8px;
padding: 15px;
}
.wechat-rp-detail-record-item {
display: flex;
align-items: center;
gap: 12px;
}
.wechat-rp-detail-claimer-avatar {
width: 40px;
height: 40px;
border-radius: 4px;
background: #3c3c3c;
display: flex;
align-items: center;
justify-content: center;
overflow: hidden;
}
.wechat-rp-detail-claimer-avatar img {
width: 100%;
height: 100%;
object-fit: cover;
}
.wechat-rp-detail-claimer-info {
flex: 1;
}
.wechat-rp-detail-claimer-name {
color: #e9e9e9;
font-size: 15px;
}
.wechat-rp-detail-claimer-time {
color: #888;
font-size: 12px;
}
.wechat-rp-detail-claimer-amount {
color: #e9e9e9;
font-size: 15px;
}
/* 浅色模式适配 */
.wechat-phone:not(.wechat-dark) .wechat-red-packet-page {
background: #f5f5f5;
}
.wechat-phone:not(.wechat-dark) .wechat-rp-navbar {
background: #f5f5f5 !important;
}
.wechat-phone:not(.wechat-dark) .wechat-rp-navbar .wechat-navbar-title,
.wechat-phone:not(.wechat-dark) .wechat-rp-navbar .wechat-navbar-btn {
color: #191919;
}
.wechat-phone:not(.wechat-dark) .wechat-rp-form {
background: #fff;
}
.wechat-phone:not(.wechat-dark) .wechat-rp-row {
border-bottom-color: #e5e5e5;
}
.wechat-phone:not(.wechat-dark) .wechat-rp-label,
.wechat-phone:not(.wechat-dark) .wechat-rp-amount-display {
color: #191919;
}
.wechat-phone:not(.wechat-dark) .wechat-rp-message-input {
color: #191919;
}
.wechat-phone:not(.wechat-dark) .wechat-rp-keyboard {
background: #d1d5db;
}
.wechat-phone:not(.wechat-dark) .wechat-rp-keyboard-key {
background: #fff;
color: #191919;
}
.wechat-phone:not(.wechat-dark) .wechat-rp-keyboard-key:active {
background: #e5e5e5;
}
.wechat-phone:not(.wechat-dark) .wechat-rp-keyboard-key svg {
fill: #191919;
}
.wechat-phone:not(.wechat-dark) .wechat-rp-password-content {
background: #fff;
}
.wechat-phone:not(.wechat-dark) .wechat-rp-password-title {
color: #191919;
}
.wechat-phone:not(.wechat-dark) .wechat-password-key {
background: #f5f5f5;
color: #191919;
}
.wechat-phone:not(.wechat-dark) .wechat-password-key:active {
background: #e5e5e5;
}
.wechat-phone:not(.wechat-dark) .wechat-password-key svg {
fill: #191919;
}
.wechat-phone:not(.wechat-dark) .wechat-rp-detail-page {
background: #f5f5f5;
}
.wechat-phone:not(.wechat-dark) .wechat-rp-detail-body {
background: #f5f5f5;
}
.wechat-phone:not(.wechat-dark) .wechat-rp-detail-record {
background: #fff;
}
.wechat-phone:not(.wechat-dark) .wechat-rp-detail-claimer-name {
color: #191919;
}
.wechat-phone:not(.wechat-dark) .wechat-rp-detail-claimer-amount {
color: #191919;
}
/* ===== 转账功能样式 ===== */
/* 转账页面 */
.wechat-transfer-page {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: #f5f5f5;
z-index: 100;
display: flex;
flex-direction: column;
}
.wechat-transfer-page.hidden {
display: none;
}
.wechat-phone.wechat-dark .wechat-transfer-page {
background: #111;
}
.wechat-tf-navbar {
background: #f5f5f5 !important;
}
.wechat-phone.wechat-dark .wechat-tf-navbar {
background: #1a1a1a !important;
}
.wechat-tf-content {
flex: 1;
padding: 20px 15px;
display: flex;
flex-direction: column;
}
.wechat-tf-footer {
padding: 20px 15px;
padding-bottom: calc(20px + env(safe-area-inset-bottom, 0px));
background: #f5f5f5;
}
.wechat-phone.wechat-dark .wechat-tf-footer {
background: #111;
}
.wechat-tf-form {
background: #fff;
border-radius: 10px;
overflow: hidden;
margin-bottom: 20px;
}
.wechat-phone.wechat-dark .wechat-tf-form {
background: #1a1a1a;
}
.wechat-tf-row {
display: flex;
align-items: center;
justify-content: space-between;
padding: 15px;
border-bottom: 1px solid var(--wechat-border);
}
.wechat-tf-row:last-child {
border-bottom: none;
}
.wechat-tf-label {
font-size: 15px;
color: var(--wechat-text);
}
.wechat-tf-amount-input {
flex: 1;
background: transparent;
border: none;
color: #000;
font-size: 24px;
font-weight: 500;
text-align: right;
outline: none;
}
.wechat-tf-amount-input::placeholder {
color: var(--wechat-text-secondary);
}
.wechat-tf-amount-input::-webkit-outer-spin-button,
.wechat-tf-amount-input::-webkit-inner-spin-button {
-webkit-appearance: none;
margin: 0;
}
.wechat-tf-password-input {
width: 100%;
padding: 12px;
font-size: 18px;
text-align: center;
letter-spacing: 8px;
border: 1px solid #ddd;
border-radius: 8px;
background: #fff;
color: #000;
outline: none;
margin-bottom: 15px;
box-sizing: border-box;
}
.wechat-phone.wechat-dark .wechat-tf-password-input {
border-color: #444;
background: #2c2c2c;
color: #fff;
}
.wechat-tf-password-input::placeholder {
letter-spacing: normal;
color: #999;
}
.wechat-tf-password-confirm-btn {
width: 100%;
padding: 12px;
background: linear-gradient(135deg, #e74c3c, #c0392b);
color: #fff;
border: none;
border-radius: 8px;
font-size: 16px;
font-weight: 500;
cursor: pointer;
}
.wechat-tf-password-confirm-btn:active {
opacity: 0.8;
}
.wechat-tf-value {
font-size: 16px;
font-weight: 500;
color: var(--wechat-text);
}
.wechat-tf-desc-input {
flex: 1;
border: none;
background: transparent;
font-size: 14px;
color: var(--wechat-text);
outline: none;
}
.wechat-tf-desc-input::placeholder {
color: var(--wechat-text-secondary);
}
.wechat-tf-amount-display {
text-align: center;
font-size: 42px;
font-weight: 300;
color: var(--wechat-text);
padding: 30px 0;
}
.wechat-tf-submit-btn {
width: 100%;
padding: 14px;
background: linear-gradient(135deg, #e74c3c, #c0392b);
color: #fff;
border: none;
border-radius: 8px;
font-size: 16px;
font-weight: 500;
cursor: pointer;
transition: opacity 0.2s;
}
.wechat-tf-submit-btn:active {
opacity: 0.85;
}
.wechat-tf-hint {
text-align: center;
font-size: 12px;
color: var(--wechat-text-secondary);
margin-top: 12px;
}
/* 转账数字键盘 */
.wechat-tf-keyboard {
background: #d1d5db;
padding: 8px;
display: flex;
flex-direction: column;
gap: 1px;
}
.wechat-phone.wechat-dark .wechat-tf-keyboard {
background: #2a2a2a;
}
.wechat-tf-keyboard.hidden {
display: none;
}
.wechat-tf-keyboard-row {
display: flex;
gap: 1px;
}
.wechat-tf-keyboard-key {
flex: 1;
padding: 16px;
background: #fff;
border: none;
font-size: 22px;
font-weight: 400;
color: #191919;
cursor: pointer;
transition: background 0.1s;
display: flex;
align-items: center;
justify-content: center;
}
.wechat-phone.wechat-dark .wechat-tf-keyboard-key {
background: #3a3a3a;
color: #fff;
}
.wechat-tf-keyboard-key:active {
background: #e5e5e5;
}
.wechat-phone.wechat-dark .wechat-tf-keyboard-key:active {
background: #4a4a4a;
}
.wechat-tf-key-backspace {
background: #c5c8ce;
}
.wechat-phone.wechat-dark .wechat-tf-key-backspace {
background: #2a2a2a;
}
.wechat-tf-key-confirm {
background: linear-gradient(135deg, #e74c3c, #c0392b);
color: #fff;
font-size: 16px;
position: absolute;
right: 8px;
top: 8px;
bottom: 8px;
width: 80px;
border-radius: 4px;
}
.wechat-tf-key-zero {
flex: 2;
}
/* 转账密码弹窗 */
.wechat-tf-password-modal {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0,0,0,0.5);
display: flex;
align-items: flex-end;
z-index: 200;
}
.wechat-tf-password-modal.hidden {
display: none;
}
.wechat-tf-password-content {
width: 100%;
background: #fff;
border-radius: 15px 15px 0 0;
padding: 20px;
padding-bottom: 0;
position: relative;
}
.wechat-phone.wechat-dark .wechat-tf-password-content {
background: #1a1a1a;
}
.wechat-tf-password-close {
position: absolute;
top: 15px;
left: 15px;
width: 30px;
height: 30px;
border: none;
background: transparent;
font-size: 24px;
color: var(--wechat-text-secondary);
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
}
.wechat-tf-password-title {
text-align: center;
font-size: 16px;
font-weight: 500;
color: var(--wechat-text);
margin-bottom: 20px;
}
.wechat-tf-password-dots {
display: flex;
justify-content: center;
gap: 12px;
margin-bottom: 15px;
}
.wechat-tf-password-hint {
text-align: center;
font-size: 13px;
color: #1e90ff;
margin-bottom: 20px;
}
.wechat-tf-password-keyboard {
margin: 0 -20px;
background: #d1d5db;
}
.wechat-phone.wechat-dark .wechat-tf-password-keyboard {
background: #2a2a2a;
}
.wechat-tf-password-row {
display: flex;
}
/* 收款页面 */
.wechat-receive-tf-page {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: #f5f5f5;
z-index: 100;
display: flex;
flex-direction: column;
}
.wechat-receive-tf-page.hidden {
display: none;
}
.wechat-phone.wechat-dark .wechat-receive-tf-page {
background: #111;
}
.wechat-receive-tf-content {
flex: 1;
padding: 20px 15px;
display: flex;
flex-direction: column;
align-items: center;
}
.wechat-receive-tf-card {
width: 100%;
background: #fff;
border-radius: 12px;
padding: 30px 20px;
text-align: center;
box-shadow: 0 2px 10px rgba(0,0,0,0.05);
}
.wechat-phone.wechat-dark .wechat-receive-tf-card {
background: #1a1a1a;
box-shadow: none;
}
.wechat-receive-tf-sender {
display: flex;
align-items: center;
justify-content: center;
gap: 10px;
margin-bottom: 25px;
}
.wechat-receive-tf-avatar {
width: 40px;
height: 40px;
border-radius: 6px;
background: var(--wechat-bg-secondary);
display: flex;
align-items: center;
justify-content: center;
font-size: 18px;
overflow: hidden;
}
.wechat-receive-tf-avatar img {
width: 100%;
height: 100%;
object-fit: cover;
}
.wechat-receive-tf-name {
font-size: 15px;
color: var(--wechat-text);
}
.wechat-receive-tf-amount {
font-size: 48px;
font-weight: 300;
color: var(--wechat-text);
margin-bottom: 10px;
}
.wechat-receive-tf-desc {
font-size: 14px;
color: var(--wechat-text-secondary);
margin-bottom: 30px;
}
.wechat-receive-tf-actions {
display: flex;
gap: 15px;
justify-content: center;
}
.wechat-receive-tf-btn {
padding: 12px 40px;
border: none;
border-radius: 8px;
font-size: 15px;
font-weight: 500;
cursor: pointer;
transition: opacity 0.2s;
}
.wechat-receive-tf-btn:active {
opacity: 0.85;
}
.wechat-receive-tf-btn.refund {
background: #f5f5f5;
color: var(--wechat-text);
}
.wechat-phone.wechat-dark .wechat-receive-tf-btn.refund {
background: #2a2a2a;
color: #fff;
}
.wechat-receive-tf-btn.receive {
background: linear-gradient(135deg, #e74c3c, #c0392b);
color: #fff;
}
.wechat-receive-tf-tip {
font-size: 12px;
color: var(--wechat-text-secondary);
margin-top: 20px;
}
/* 退还确认框 */
.wechat-transfer-confirm-modal {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0,0,0,0.5);
display: flex;
align-items: center;
justify-content: center;
z-index: 300;
}
.wechat-transfer-confirm-modal.hidden {
display: none;
}
.wechat-transfer-confirm-content {
background: #fff;
border-radius: 12px;
padding: 25px 20px;
width: 280px;
text-align: center;
}
.wechat-phone.wechat-dark .wechat-transfer-confirm-content {
background: #1a1a1a;
}
.wechat-transfer-confirm-title {
font-size: 16px;
color: var(--wechat-text);
margin-bottom: 25px;
}
.wechat-transfer-confirm-actions {
display: flex;
gap: 15px;
}
.wechat-transfer-confirm-btn {
flex: 1;
padding: 12px;
border: none;
border-radius: 8px;
font-size: 15px;
cursor: pointer;
transition: opacity 0.2s;
}
.wechat-transfer-confirm-btn:active {
opacity: 0.85;
}
.wechat-transfer-confirm-btn.cancel {
background: #f5f5f5;
color: var(--wechat-text);
}
.wechat-phone.wechat-dark .wechat-transfer-confirm-btn.cancel {
background: #2a2a2a;
color: #fff;
}
.wechat-transfer-confirm-btn.confirm {
background: linear-gradient(135deg, #e74c3c, #c0392b);
color: #fff;
}
/* 转账消息气泡 */
.wechat-transfer-bubble {
background: linear-gradient(135deg, #f97316, #ea580c);
border-radius: 6px;
padding: 8px 10px;
min-width: 120px;
max-width: 160px;
cursor: default;
position: relative;
overflow: hidden;
}
.wechat-transfer-bubble::before {
content: '';
position: absolute;
top: 0;
right: 0;
width: 40px;
height: 40px;
background: rgba(255,255,255,0.1);
border-radius: 50%;
transform: translate(30%, -30%);
}
.wechat-tf-bubble-amount {
font-size: 16px;
font-weight: 500;
color: #fff;
margin-bottom: 4px;
}
.wechat-tf-bubble-status {
display: flex;
align-items: center;
gap: 4px;
font-size: 11px;
color: rgba(255,255,255,0.9);
margin-bottom: 6px;
}
.wechat-tf-bubble-status-icon {
display: flex;
align-items: center;
}
.wechat-tf-bubble-status-icon svg {
stroke: rgba(255,255,255,0.9);
width: 12px;
height: 12px;
}
.wechat-tf-bubble-footer {
border-top: 1px solid rgba(255,255,255,0.2);
padding-top: 4px;
}
.wechat-tf-bubble-label {
font-size: 10px;
color: rgba(255,255,255,0.8);
}
/* 转账已收款状态 */
.wechat-transfer-bubble.received {
background: linear-gradient(135deg, #f87171, #ef4444);
}
.wechat-transfer-bubble.received .wechat-tf-bubble-status-icon svg {
stroke: #22c55e;
}
.wechat-transfer-bubble.received .wechat-tf-bubble-status-text {
color: #22c55e;
}
/* 转账已退还状态 */
.wechat-transfer-bubble.refunded {
background: linear-gradient(135deg, #a3a3a3, #737373);
}
.wechat-transfer-bubble.refunded .wechat-tf-bubble-status-icon svg {
stroke: rgba(255,255,255,0.7);
}
.wechat-transfer-bubble.refunded .wechat-tf-bubble-status-text {
color: rgba(255,255,255,0.7);
}
/* 转账已过期状态(与已退还相同) */
.wechat-transfer-bubble.expired {
background: linear-gradient(135deg, #d4a574, #c49464);
}
.wechat-transfer-bubble.expired .wechat-tf-bubble-status-icon svg {
stroke: rgba(255,255,255,0.7);
}
.wechat-transfer-bubble.expired .wechat-tf-bubble-status-text {
color: rgba(255,255,255,0.7);
}
/* ========== 一起听功能样式 ========== */
/* 搜索页面 */
.wechat-listen-search-page {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: var(--wechat-bg);
z-index: 60;
display: flex;
flex-direction: column;
}
.wechat-listen-search-content {
flex: 1;
padding: 12px;
overflow-y: auto;
}
.wechat-listen-search-box {
display: flex;
align-items: center;
gap: 8px;
padding: 10px 14px;
background: var(--wechat-white);
border-radius: 8px;
margin-bottom: 12px;
}
.wechat-listen-search-box svg {
color: var(--wechat-text-secondary);
flex-shrink: 0;
}
.wechat-listen-search-box input {
flex: 1;
border: none;
outline: none;
background: transparent;
font-size: 14px;
color: var(--wechat-text);
}
.wechat-listen-search-results {
display: flex;
flex-direction: column;
gap: 8px;
}
.wechat-listen-search-empty,
.wechat-listen-search-loading {
text-align: center;
color: var(--wechat-text-secondary);
padding: 40px 20px;
font-size: 14px;
}
.wechat-listen-search-item {
display: flex;
align-items: center;
gap: 12px;
padding: 10px 12px;
background: var(--wechat-white);
border-radius: 8px;
cursor: pointer;
transition: background 0.2s;
}
.wechat-listen-search-item:hover {
background: var(--wechat-bg-secondary);
}
.wechat-listen-search-cover {
width: 50px;
height: 50px;
border-radius: 6px;
overflow: hidden;
background: var(--wechat-bg-secondary);
flex-shrink: 0;
}
.wechat-listen-search-cover img {
width: 100%;
height: 100%;
object-fit: cover;
}
.wechat-listen-search-info {
flex: 1;
min-width: 0;
}
.wechat-listen-search-name {
font-size: 14px;
font-weight: 500;
color: var(--wechat-text);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.wechat-listen-search-artist {
font-size: 12px;
color: var(--wechat-text-secondary);
margin-top: 4px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
/* 等待页面 */
.wechat-listen-waiting-page {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: 61;
}
.wechat-listen-waiting-bg {
width: 100%;
height: 100%;
background: linear-gradient(180deg, #1a1a2e 0%, #16213e 50%, #0f3460 100%);
display: flex;
align-items: center;
justify-content: center;
}
.wechat-listen-waiting-content {
display: flex;
flex-direction: column;
align-items: center;
gap: 20px;
}
.wechat-listen-waiting-avatar {
width: 60px;
height: 60px;
border-radius: 50%;
background: rgba(255, 255, 255, 0.1);
display: flex;
align-items: center;
justify-content: center;
font-size: 24px;
color: #fff;
overflow: hidden;
}
.wechat-listen-waiting-avatar img {
width: 100%;
height: 100%;
object-fit: cover;
}
.wechat-listen-waiting-cover-wrapper {
position: relative;
width: 160px;
height: 160px;
}
.wechat-listen-waiting-cover {
width: 100%;
height: 100%;
border-radius: 50%;
object-fit: cover;
position: relative;
z-index: 2;
}
/* 雷达动画 */
.wechat-listen-radar {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 160px;
height: 160px;
z-index: 1;
}
.wechat-listen-radar-ring {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
border: 2px solid rgba(62, 181, 117, 0.5);
border-radius: 50%;
animation: listenRadarPulse 2s ease-out infinite;
}
.wechat-listen-radar-ring:nth-child(1) {
animation-delay: 0s;
}
.wechat-listen-radar-ring:nth-child(2) {
animation-delay: 0.66s;
}
.wechat-listen-radar-ring:nth-child(3) {
animation-delay: 1.33s;
}
@keyframes listenRadarPulse {
0% {
width: 160px;
height: 160px;
opacity: 0.8;
}
100% {
width: 280px;
height: 280px;
opacity: 0;
}
}
.wechat-listen-waiting-text {
color: #fff;
font-size: 16px;
text-align: center;
}
.wechat-listen-waiting-cancel {
padding: 10px 30px;
background: rgba(255, 255, 255, 0.1);
border: 1px solid rgba(255, 255, 255, 0.2);
border-radius: 20px;
color: #fff;
font-size: 14px;
cursor: pointer;
transition: background 0.2s;
}
.wechat-listen-waiting-cancel:hover {
background: rgba(255, 255, 255, 0.2);
}
/* 一起听主页面 */
.wechat-listen-together-page {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: linear-gradient(135deg, #1a1a2e 0%, #16213e 30%, #0f3460 60%, #533483 100%);
z-index: 62;
display: flex;
flex-direction: column;
overflow: hidden;
}
.wechat-listen-header {
display: flex;
align-items: center;
justify-content: space-between;
padding: 12px 16px;
padding-top: calc(12px + env(safe-area-inset-top, 0px));
flex-shrink: 0;
}
.wechat-listen-back-btn {
background: none;
border: none;
color: #fff;
cursor: pointer;
padding: 4px;
}
.wechat-listen-header-title {
color: #fff;
font-size: 16px;
font-weight: 500;
}
.wechat-listen-color-btn {
background: none;
border: none;
color: #fff;
cursor: pointer;
padding: 4px;
opacity: 0.8;
transition: opacity 0.2s;
}
.wechat-listen-color-btn:hover {
opacity: 1;
}
/* 背景颜色选择器 */
.wechat-listen-color-picker {
position: absolute;
top: 50px;
right: 16px;
display: flex;
flex-direction: column;
gap: 10px;
padding: 12px;
background: rgba(0, 0, 0, 0.6);
border-radius: 20px;
z-index: 100;
backdrop-filter: blur(10px);
}
.wechat-listen-color-picker.hidden {
display: none;
}
.wechat-listen-color-option {
width: 32px;
height: 32px;
border-radius: 50%;
cursor: pointer;
border: 2px solid transparent;
transition: transform 0.2s, border-color 0.2s;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
}
.wechat-listen-color-option:hover {
transform: scale(1.1);
}
.wechat-listen-color-option.active {
border-color: #fff;
}
.wechat-listen-color-option[data-bg="starry"] {
background: linear-gradient(135deg, #1a1a2e 0%, #16213e 30%, #0f3460 60%, #533483 100%);
}
.wechat-listen-color-option[data-bg="orange"] {
background: linear-gradient(135deg, #f97316 0%, #ea580c 50%, #c2410c 100%);
}
.wechat-listen-color-option[data-bg="pink"] {
background: linear-gradient(135deg, #ec4899 0%, #f472b6 50%, #f9a8d4 100%);
}
.wechat-listen-color-option[data-bg="white"] {
background: #fff;
}
/* 白色背景时的文字颜色调整 */
.wechat-listen-together-page.light-bg .wechat-listen-header-title,
.wechat-listen-together-page.light-bg .wechat-listen-back-btn,
.wechat-listen-together-page.light-bg .wechat-listen-color-btn,
.wechat-listen-together-page.light-bg .wechat-listen-song-name,
.wechat-listen-together-page.light-bg .wechat-listen-song-artist,
.wechat-listen-together-page.light-bg .wechat-listen-time,
.wechat-listen-together-page.light-bg .wechat-listen-ctrl-btn {
color: #333;
}
.wechat-listen-together-page.light-bg .wechat-listen-avatar-connector {
color: rgba(0, 0, 0, 0.4);
}
.wechat-listen-together-page.light-bg .wechat-listen-progress-bar {
background: rgba(0, 0, 0, 0.1);
}
.wechat-listen-together-page.light-bg .wechat-listen-progress-fill {
background: #333;
}
/* 双头像区域 */
.wechat-listen-avatars {
display: flex;
align-items: center;
justify-content: center;
gap: 16px;
padding: 16px 0 8px;
flex-shrink: 0;
}
.wechat-listen-avatar-item {
width: 50px;
height: 50px;
border-radius: 50%;
background: rgba(255, 255, 255, 0.1);
display: flex;
align-items: center;
justify-content: center;
font-size: 20px;
color: #fff;
overflow: hidden;
}
.wechat-listen-avatar-item img {
width: 100%;
height: 100%;
object-fit: cover;
}
.wechat-listen-avatar-connector {
color: rgba(255, 255, 255, 0.5);
}
/* 唱片区域 */
.wechat-listen-disc-wrapper {
display: flex;
justify-content: center;
padding: 12px 0;
flex-shrink: 0;
}
.wechat-listen-disc {
width: 160px;
height: 160px;
border-radius: 50%;
background: #111;
padding: 25px;
box-sizing: border-box;
position: relative;
}
.wechat-listen-disc::before {
content: '';
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 40px;
height: 40px;
background: #222;
border-radius: 50%;
border: 2px solid #333;
z-index: 2;
}
.wechat-listen-disc.rotating {
animation: discRotate 20s linear infinite;
}
.wechat-listen-disc.paused {
animation-play-state: paused;
}
@keyframes discRotate {
from { transform: rotate(0deg); }
to { transform: rotate(360deg); }
}
.wechat-listen-cover {
width: 100%;
height: 100%;
border-radius: 50%;
object-fit: cover;
}
/* 歌曲信息 */
.wechat-listen-song-info {
text-align: center;
padding: 8px 20px;
flex-shrink: 0;
}
.wechat-listen-song-name {
color: #fff;
font-size: 18px;
font-weight: 500;
margin-bottom: 6px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.wechat-listen-song-artist {
color: rgba(255, 255, 255, 0.6);
font-size: 14px;
}
/* 进度条 */
.wechat-listen-progress {
display: flex;
align-items: center;
gap: 10px;
padding: 8px 20px;
flex-shrink: 0;
}
.wechat-listen-time {
color: rgba(255, 255, 255, 0.6);
font-size: 12px;
min-width: 36px;
text-align: center;
}
.wechat-listen-progress-bar {
flex: 1;
height: 4px;
background: rgba(255, 255, 255, 0.2);
border-radius: 2px;
position: relative;
}
.wechat-listen-progress-fill {
height: 100%;
background: var(--wechat-green);
border-radius: 2px;
width: 0%;
transition: width 0.1s linear;
}
.wechat-listen-slider {
position: absolute;
top: 50%;
left: 0;
transform: translateY(-50%);
width: 100%;
height: 20px;
opacity: 0;
cursor: pointer;
margin: 0;
}
/* 控制按钮 */
.wechat-listen-controls {
display: flex;
align-items: center;
justify-content: center;
gap: 24px;
padding: 16px 20px;
padding-bottom: calc(16px + env(safe-area-inset-bottom, 0px));
flex-shrink: 0;
}
.wechat-listen-ctrl-btn {
background: none;
border: none;
color: #fff;
cursor: pointer;
padding: 12px;
border-radius: 50%;
transition: background 0.2s;
}
.wechat-listen-ctrl-btn:hover {
background: rgba(255, 255, 255, 0.1);
}
.wechat-listen-ctrl-btn.active {
color: #07c160;
background: rgba(7, 193, 96, 0.15);
}
.wechat-listen-ctrl-btn.active:hover {
background: rgba(7, 193, 96, 0.25);
}
.wechat-listen-play-btn {
background: rgba(255, 255, 255, 0.9);
padding: 14px;
color: #333;
}
.wechat-listen-play-btn:hover {
background: #fff;
}
/* 聊天消息区域 */
.wechat-listen-messages {
flex: 1;
padding: 10px 16px;
overflow-y: auto;
display: flex;
flex-direction: column;
gap: 8px;
min-height: 60px;
}
.wechat-listen-msg {
max-width: 90%;
padding: 8px 12px;
border-radius: 16px;
font-size: 14px;
word-break: break-word;
line-height: 1.5;
animation: listenMsgFadeIn 0.3s ease;
}
@keyframes listenMsgFadeIn {
from {
opacity: 0;
transform: translateY(10px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.wechat-listen-msg.user {
background: #fff;
color: #000;
align-self: flex-end;
}
.wechat-listen-msg.ai {
background: rgba(0, 0, 0, 0.6);
color: #fff;
align-self: flex-start;
}
/* Typing 指示器 */
.wechat-listen-typing {
display: flex;
gap: 4px;
padding: 4px 0;
}
.wechat-listen-typing .wechat-typing-dot {
width: 6px;
height: 6px;
background: rgba(255, 255, 255, 0.8);
border-radius: 50%;
animation: listenTypingBounce 1.4s ease-in-out infinite;
}
.wechat-listen-typing .wechat-typing-dot:nth-child(2) {
animation-delay: 0.2s;
}
.wechat-listen-typing .wechat-typing-dot:nth-child(3) {
animation-delay: 0.4s;
}
@keyframes listenTypingBounce {
0%, 60%, 100% {
transform: translateY(0);
}
30% {
transform: translateY(-4px);
}
}
/* 聊天输入框 */
.wechat-listen-chat-input {
display: flex;
align-items: center;
gap: 10px;
padding: 8px 16px;
background: rgba(0, 0, 0, 0.3);
flex-shrink: 0;
}
.wechat-listen-input-text {
flex: 1;
padding: 8px 14px;
background: rgba(255, 255, 255, 0.1);
border: none;
border-radius: 18px;
color: #fff;
font-size: 14px;
outline: none;
}
.wechat-listen-input-text::placeholder {
color: rgba(255, 255, 255, 0.4);
}
.wechat-listen-send-btn {
background: #000;
border: none;
border-radius: 50%;
width: 32px;
height: 32px;
display: flex;
align-items: center;
justify-content: center;
color: #fff;
cursor: pointer;
transition: opacity 0.2s;
}
.wechat-listen-send-btn:hover {
opacity: 0.8;
}
/* 换歌面板 */
.wechat-listen-change-panel {
position: absolute;
bottom: 0;
left: 0;
right: 0;
background: var(--wechat-white);
border-radius: 16px 16px 0 0;
max-height: 60%;
display: flex;
flex-direction: column;
z-index: 10;
animation: listenChangePanelSlideUp 0.3s ease;
}
@keyframes listenChangePanelSlideUp {
from {
transform: translateY(100%);
}
to {
transform: translateY(0);
}
}
.wechat-listen-change-header {
display: flex;
align-items: center;
justify-content: space-between;
padding: 14px 16px;
border-bottom: 1px solid var(--wechat-border);
}
.wechat-listen-change-title {
font-size: 16px;
font-weight: 500;
color: var(--wechat-text);
}
.wechat-listen-change-close {
background: none;
border: none;
color: var(--wechat-text-secondary);
cursor: pointer;
padding: 4px;
}
.wechat-listen-change-search {
display: flex;
align-items: center;
gap: 8px;
margin: 12px 16px;
padding: 8px 12px;
background: var(--wechat-bg);
border-radius: 8px;
}
.wechat-listen-change-search svg {
color: var(--wechat-text-secondary);
}
.wechat-listen-change-search input {
flex: 1;
border: none;
outline: none;
background: transparent;
font-size: 14px;
color: var(--wechat-text);
}
.wechat-listen-change-results {
flex: 1;
overflow-y: auto;
padding: 0 16px 16px;
}
.wechat-listen-change-item {
padding: 12px;
border-bottom: 1px solid var(--wechat-border);
cursor: pointer;
transition: background 0.2s;
}
.wechat-listen-change-item:hover {
background: var(--wechat-bg);
}
.wechat-listen-change-item:last-child {
border-bottom: none;
}
.wechat-listen-change-name {
font-size: 14px;
color: var(--wechat-text);
margin-bottom: 4px;
}
.wechat-listen-change-artist {
font-size: 12px;
color: var(--wechat-text-secondary);
}
.wechat-listen-change-loading,
.wechat-listen-change-empty {
text-align: center;
color: var(--wechat-text-secondary);
padding: 30px;
font-size: 14px;
}
/* 暗色模式一起听样式 */
.wechat-dark .wechat-listen-search-page {
background: var(--wechat-bg);
}
.wechat-dark .wechat-listen-search-box {
background: var(--wechat-bg-secondary);
}
.wechat-dark .wechat-listen-search-item {
background: var(--wechat-bg-secondary);
}
.wechat-dark .wechat-listen-search-item:hover {
background: var(--wechat-bg-hover);
}
.wechat-dark .wechat-listen-change-panel {
background: var(--wechat-bg);
}
.wechat-dark .wechat-listen-change-search {
background: var(--wechat-bg-secondary);
}
/* ========== 群聊红包/转账功能样式 ========== */
/* 群红包类型选择页面 */
.wechat-group-rp-type-page {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: var(--wechat-bg);
z-index: 100;
display: flex;
flex-direction: column;
}
.wechat-group-rp-type-content {
flex: 1;
padding: 15px;
display: flex;
flex-direction: column;
gap: 12px;
}
.wechat-group-rp-type-item {
display: flex;
align-items: center;
gap: 15px;
padding: 18px 15px;
background: var(--wechat-white);
border-radius: 10px;
cursor: pointer;
transition: background 0.2s;
}
.wechat-group-rp-type-item:active {
background: var(--wechat-bg);
}
.wechat-group-rp-type-icon {
width: 50px;
height: 50px;
border-radius: 10px;
display: flex;
align-items: center;
justify-content: center;
}
.wechat-group-rp-type-info {
flex: 1;
}
.wechat-group-rp-type-title {
font-size: 16px;
font-weight: 500;
color: var(--wechat-text);
margin-bottom: 4px;
}
.wechat-group-rp-type-desc {
font-size: 13px;
color: var(--wechat-text-secondary);
}
.wechat-group-rp-type-arrow {
color: var(--wechat-text-secondary);
}
/* 群红包表单页面 */
.wechat-group-random-rp-page,
.wechat-group-designated-rp-page,
.wechat-group-transfer-select-page,
.wechat-group-transfer-amount-page {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: #c5302b;
z-index: 100;
display: flex;
flex-direction: column;
}
.wechat-phone.wechat-dark .wechat-group-random-rp-page,
.wechat-phone.wechat-dark .wechat-group-designated-rp-page {
background: #8b1a17;
}
.wechat-group-transfer-select-page,
.wechat-group-transfer-amount-page {
background: #f5f5f5;
}
.wechat-phone.wechat-dark .wechat-group-transfer-select-page,
.wechat-phone.wechat-dark .wechat-group-transfer-amount-page {
background: #111;
}
.wechat-group-rp-form {
padding: 20px 15px;
flex: 1;
display: flex;
flex-direction: column;
}
.wechat-group-rp-row {
display: flex;
align-items: center;
justify-content: space-between;
padding: 15px;
background: rgba(255, 255, 255, 0.1);
border-radius: 8px;
margin-bottom: 10px;
cursor: pointer;
}
.wechat-group-rp-label {
font-size: 15px;
color: rgba(255, 255, 255, 0.9);
}
.wechat-group-rp-value {
font-size: 16px;
font-weight: 500;
color: #fff;
}
.wechat-group-rp-message-input {
width: 100%;
padding: 12px;
background: rgba(255, 255, 255, 0.1);
border: none;
border-radius: 8px;
color: #fff;
font-size: 14px;
outline: none;
}
.wechat-group-rp-message-input::placeholder {
color: rgba(255, 255, 255, 0.5);
}
.wechat-group-rp-total {
text-align: center;
font-size: 48px;
font-weight: 300;
color: #fff;
padding: 30px 0;
flex: 1;
display: flex;
align-items: center;
justify-content: center;
}
.wechat-group-rp-submit {
width: 100%;
padding: 14px;
background: #f8c84b;
color: #8b3a1d;
border: none;
border-radius: 8px;
font-size: 16px;
font-weight: 600;
cursor: pointer;
transition: opacity 0.2s;
}
.wechat-group-rp-submit:active {
opacity: 0.85;
}
/* 群聊红包/转账数字输入框 */
.wechat-group-rp-number-input {
width: 80px;
background: transparent;
border: none;
border-bottom: 1px solid rgba(255, 255, 255, 0.3);
color: #fff;
font-size: 18px;
font-weight: 600;
text-align: right;
padding: 4px 0;
outline: none;
}
.wechat-group-rp-number-input::placeholder {
color: rgba(255, 255, 255, 0.4);
}
.wechat-group-rp-number-input:focus {
border-bottom-color: #f8c84b;
}
/* 群转账页面样式覆盖 - 白色背景、黑色文字、红色按钮 */
.wechat-group-transfer-amount-page {
background: #ffffff !important;
}
.wechat-group-transfer-amount-page .wechat-page-header {
background: #ffffff !important;
}
.wechat-group-transfer-amount-page .wechat-page-title {
color: #000000 !important;
}
.wechat-group-transfer-amount-page .wechat-back-btn {
color: #000000 !important;
}
.wechat-group-transfer-amount-page .wechat-back-btn svg {
stroke: #000000 !important;
}
.wechat-group-transfer-amount-page .wechat-group-rp-label {
color: #333333 !important;
}
.wechat-group-transfer-amount-page .wechat-group-rp-value {
color: #000000 !important;
}
.wechat-group-transfer-amount-page .wechat-group-rp-number-input {
color: #000000 !important;
border-bottom-color: rgba(0, 0, 0, 0.2);
}
.wechat-group-transfer-amount-page .wechat-group-rp-number-input::placeholder {
color: rgba(0, 0, 0, 0.3);
}
.wechat-group-transfer-amount-page .wechat-group-rp-number-input:focus {
border-bottom-color: #e74c3c;
}
.wechat-group-transfer-amount-page .wechat-group-rp-message-input {
background: #f5f5f5 !important;
color: #000000 !important;
border-color: #e0e0e0 !important;
}
.wechat-group-transfer-amount-page .wechat-group-rp-message-input::placeholder {
color: #999999 !important;
}
.wechat-group-transfer-amount-page .wechat-group-rp-total {
color: #000000 !important;
}
/* 群转账红色提交按钮 */
.wechat-group-transfer-submit-btn {
width: 100%;
padding: 14px;
background: #e74c3c !important;
color: #ffffff !important;
border: none;
border-radius: 8px;
font-size: 16px;
font-weight: 600;
cursor: pointer;
transition: opacity 0.2s;
}
.wechat-group-transfer-submit-btn:active {
opacity: 0.85;
}
/* 指定成员红包页面 */
.wechat-group-designated-content {
flex: 1;
display: flex;
flex-direction: column;
overflow: hidden;
}
.wechat-group-designated-section {
padding: 15px;
background: rgba(255, 255, 255, 0.05);
}
.wechat-group-designated-section-title {
font-size: 13px;
color: rgba(255, 255, 255, 0.7);
margin-bottom: 10px;
}
.wechat-group-designated-member-list {
max-height: 150px;
overflow-y: auto;
}
.wechat-group-designated-member-item {
display: flex;
align-items: center;
gap: 10px;
padding: 10px;
background: rgba(255, 255, 255, 0.08);
border-radius: 8px;
margin-bottom: 8px;
cursor: pointer;
}
.wechat-group-designated-member-check {
width: 20px;
display: flex;
justify-content: center;
}
.wechat-group-designated-member-check input[type="checkbox"] {
width: 18px;
height: 18px;
cursor: pointer;
accent-color: #f8c84b;
}
.wechat-group-designated-member-avatar {
width: 36px;
height: 36px;
border-radius: 6px;
background: rgba(255, 255, 255, 0.15);
display: flex;
align-items: center;
justify-content: center;
font-size: 14px;
color: #fff;
overflow: hidden;
}
.wechat-group-designated-member-avatar img {
width: 100%;
height: 100%;
object-fit: cover;
}
.wechat-group-designated-member-name {
flex: 1;
font-size: 14px;
color: #fff;
}
/* 群转账成员选择列表 */
.wechat-group-transfer-member-list {
flex: 1;
overflow-y: auto;
padding: 15px;
}
.wechat-group-transfer-member-item {
display: flex;
align-items: center;
gap: 12px;
padding: 12px;
background: var(--wechat-white);
border-radius: 8px;
margin-bottom: 8px;
cursor: pointer;
transition: background 0.2s;
}
.wechat-group-transfer-member-item:active {
background: var(--wechat-bg);
}
.wechat-group-transfer-member-avatar {
width: 40px;
height: 40px;
border-radius: 6px;
background: var(--wechat-bg);
display: flex;
align-items: center;
justify-content: center;
font-size: 16px;
color: var(--wechat-text);
overflow: hidden;
}
.wechat-group-transfer-member-avatar img {
width: 100%;
height: 100%;
object-fit: cover;
}
.wechat-group-transfer-member-name {
flex: 1;
font-size: 15px;
color: var(--wechat-text);
}
.wechat-group-transfer-member-arrow {
color: var(--wechat-text-secondary);
}
/* 群红包气泡样式 */
.wechat-group-red-packet-bubble {
background: linear-gradient(135deg, #e74c3c, #c0392b);
border-radius: 8px;
padding: 12px;
min-width: 200px;
max-width: 240px;
cursor: pointer;
position: relative;
overflow: hidden;
display: flex;
gap: 10px;
}
.wechat-group-red-packet-bubble::before {
content: '';
position: absolute;
top: 0;
right: 0;
width: 80px;
height: 80px;
background: rgba(255, 255, 255, 0.08);
border-radius: 50%;
transform: translate(40%, -40%);
}
.wechat-group-red-packet-bubble.claimed {
background: linear-gradient(135deg, #a3a3a3, #737373);
}
.wechat-group-rp-icon {
flex-shrink: 0;
display: flex;
align-items: flex-start;
}
.wechat-group-rp-info {
flex: 1;
min-width: 0;
}
.wechat-group-rp-message {
font-size: 14px;
color: #fff;
line-height: 1.4;
word-break: break-word;
}
.wechat-group-rp-designated-label {
font-size: 12px;
color: rgba(255, 255, 255, 0.7);
margin-top: 4px;
padding: 2px 6px;
background: rgba(0, 0, 0, 0.15);
border-radius: 4px;
display: inline-block;
}
.wechat-group-rp-status {
font-size: 12px;
color: rgba(255, 255, 255, 0.6);
margin-top: 6px;
}
.wechat-group-rp-footer {
font-size: 11px;
color: var(--wechat-text-secondary);
margin-top: 4px;
text-align: left;
}
/* 群转账气泡样式 */
.wechat-group-transfer-bubble {
background: linear-gradient(135deg, #e74c3c, #c0392b);
border-radius: 6px;
padding: 8px 10px;
min-width: 120px;
max-width: 160px;
cursor: default;
position: relative;
overflow: hidden;
display: flex;
gap: 8px;
}
.wechat-group-transfer-bubble::before {
content: '';
position: absolute;
top: 0;
right: 0;
width: 40px;
height: 40px;
background: rgba(255, 255, 255, 0.1);
border-radius: 50%;
transform: translate(30%, -30%);
}
.wechat-group-transfer-bubble.received {
background: linear-gradient(135deg, #f87171, #ef4444);
}
.wechat-group-transfer-bubble.refunded {
background: linear-gradient(135deg, #a3a3a3, #737373);
}
.wechat-group-tf-icon {
flex-shrink: 0;
display: flex;
align-items: flex-start;
}
.wechat-group-tf-info {
flex: 1;
min-width: 0;
}
.wechat-group-tf-amount {
font-size: 20px;
font-weight: 500;
color: #fff;
margin-bottom: 4px;
}
.wechat-group-tf-target {
font-size: 13px;
color: rgba(255, 255, 255, 0.9);
}
.wechat-group-tf-desc {
font-size: 12px;
color: rgba(255, 255, 255, 0.7);
margin-top: 2px;
}
.wechat-group-tf-status {
font-size: 11px;
color: rgba(255, 255, 255, 0.6);
margin-top: 6px;
text-align: right;
}
/* 群红包详情页面 */
.wechat-group-rp-detail-page {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: #c5302b;
z-index: 100;
display: flex;
flex-direction: column;
}
.wechat-phone.wechat-dark .wechat-group-rp-detail-page {
background: #8b1a17;
}
.wechat-group-rp-detail-content {
flex: 1;
padding: 20px;
overflow-y: auto;
}
.wechat-group-rp-detail-header {
text-align: center;
margin-bottom: 25px;
}
.wechat-group-rp-detail-sender {
font-size: 18px;
font-weight: 500;
color: #fff;
margin-bottom: 8px;
}
.wechat-group-rp-detail-message {
font-size: 14px;
color: rgba(255, 255, 255, 0.8);
margin-bottom: 15px;
}
.wechat-group-rp-detail-total {
font-size: 36px;
font-weight: 300;
color: #f8c84b;
margin-bottom: 8px;
}
.wechat-group-rp-detail-count {
font-size: 13px;
color: rgba(255, 255, 255, 0.6);
}
.wechat-group-rp-detail-list {
background: rgba(255, 255, 255, 0.08);
border-radius: 10px;
overflow: hidden;
}
.wechat-group-rp-detail-item {
display: flex;
align-items: center;
gap: 12px;
padding: 14px;
border-bottom: 1px solid rgba(255, 255, 255, 0.08);
}
.wechat-group-rp-detail-item:last-child {
border-bottom: none;
}
.wechat-group-rp-detail-avatar {
width: 40px;
height: 40px;
border-radius: 6px;
background: rgba(255, 255, 255, 0.15);
display: flex;
align-items: center;
justify-content: center;
font-size: 16px;
color: #fff;
overflow: hidden;
}
.wechat-group-rp-detail-avatar img {
width: 100%;
height: 100%;
object-fit: cover;
}
.wechat-group-rp-detail-info {
flex: 1;
}
.wechat-group-rp-detail-name {
font-size: 14px;
color: #fff;
display: flex;
align-items: center;
gap: 6px;
}
.wechat-group-rp-detail-time {
font-size: 12px;
color: rgba(255, 255, 255, 0.5);
margin-top: 2px;
}
.wechat-group-rp-detail-amount {
font-size: 15px;
font-weight: 500;
color: #f8c84b;
}
.wechat-group-rp-detail-empty {
text-align: center;
padding: 30px;
color: rgba(255, 255, 255, 0.5);
font-size: 14px;
}
.wechat-group-rp-best {
font-size: 10px;
color: #f8c84b;
background: rgba(248, 200, 75, 0.15);
padding: 2px 6px;
border-radius: 4px;
}
/* 群消息通知 */
.wechat-msg-notice {
text-align: center;
padding: 8px 0;
}
.wechat-msg-notice span {
font-size: 12px;
color: var(--wechat-text-secondary);
background: var(--wechat-bg);
padding: 4px 10px;
border-radius: 4px;
}
/* 群聊密码弹窗 */
#wechat-group-password-modal {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.5);
display: flex;
align-items: flex-end;
z-index: 200;
}
#wechat-group-password-modal .wechat-modal-content {
width: 100%;
background: var(--wechat-white);
border-radius: 15px 15px 0 0;
padding: 20px;
padding-bottom: 0;
}
.wechat-password-title {
text-align: center;
font-size: 16px;
font-weight: 500;
color: var(--wechat-text);
margin-bottom: 20px;
}
.wechat-password-dots {
display: flex;
justify-content: center;
gap: 12px;
margin-bottom: 15px;
}
.wechat-password-dot {
width: 14px;
height: 14px;
border: 2px solid var(--wechat-border);
border-radius: 50%;
background: transparent;
transition: all 0.15s;
}
.wechat-password-dot.filled {
background: var(--wechat-text);
border-color: var(--wechat-text);
}
.wechat-password-keyboard {
margin: 0 -20px;
background: #d1d5db;
}
.wechat-phone.wechat-dark .wechat-password-keyboard {
background: #2a2a2a;
}
.wechat-password-row {
display: flex;
}
.wechat-password-key {
flex: 1;
padding: 18px;
background: var(--wechat-white);
border: none;
border-right: 1px solid var(--wechat-border);
border-bottom: 1px solid var(--wechat-border);
font-size: 22px;
font-weight: 400;
color: var(--wechat-text);
cursor: pointer;
transition: background 0.1s;
}
.wechat-password-key:active {
background: var(--wechat-bg);
}
.wechat-password-key:last-child {
border-right: none;
}
/* 页面header统一样式 */
.wechat-group-rp-type-page .wechat-page-header,
.wechat-group-random-rp-page .wechat-page-header,
.wechat-group-designated-rp-page .wechat-page-header,
.wechat-group-rp-detail-page .wechat-page-header {
background: transparent;
}
.wechat-group-random-rp-page .wechat-page-header,
.wechat-group-designated-rp-page .wechat-page-header,
.wechat-group-rp-detail-page .wechat-page-header {
color: #fff;
}
.wechat-group-random-rp-page .wechat-page-title,
.wechat-group-designated-rp-page .wechat-page-title,
.wechat-group-rp-detail-page .wechat-page-title,
.wechat-group-random-rp-page .wechat-back-btn,
.wechat-group-designated-rp-page .wechat-back-btn,
.wechat-group-rp-detail-page .wechat-back-btn {
color: #fff;
}
.wechat-group-random-rp-page .wechat-back-btn svg,
.wechat-group-designated-rp-page .wechat-back-btn svg,
.wechat-group-rp-detail-page .wechat-back-btn svg {
stroke: #fff;
}
/* ==================== SVG 图标样式 ==================== */
.wechat-svg-icon {
display: inline-flex;
align-items: center;
justify-content: center;
vertical-align: middle;
}
.wechat-svg-icon svg {
width: 1em;
height: 1em;
vertical-align: -0.125em;
}
.wechat-icon-large svg {
width: 48px;
height: 48px;
}
/* 红包图标特殊样式 */
.wechat-icon-red-packet {
color: #e53935;
}
/* 成功图标样式 */
.wechat-icon-success {
color: #4caf50;
}
/* 退还图标样式 */
.wechat-icon-refund {
color: #1976d2;
}
/* 提示图标样式 */
.wechat-icon-info {
color: #2196f3;
}
/* 用户图标样式 */
.wechat-icon-user {
color: #9e9e9e;
}
/* ========== 礼物页面样式 ========== */
.wechat-gift-page {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: #111111;
display: flex;
flex-direction: column;
z-index: 50;
}
.wechat-gift-navbar {
background: #111111 !important;
position: relative;
}
.wechat-gift-navbar .wechat-navbar-title {
color: #e9e9e9;
}
.wechat-gift-navbar .wechat-navbar-btn {
color: #e9e9e9;
}
.wechat-gift-content {
flex: 1;
display: flex;
flex-direction: column;
padding: 15px;
overflow-y: auto;
}
/* 礼物分类标签 */
.wechat-gift-tabs {
display: flex;
gap: 10px;
margin-bottom: 15px;
}
.wechat-gift-tab {
flex: 1;
padding: 10px 15px;
background: #2c2c2c;
border: none;
border-radius: 8px;
color: #999;
font-size: 14px;
cursor: pointer;
transition: all 0.2s;
}
.wechat-gift-tab.active {
background: linear-gradient(135deg, #ff6b6b, #ee5a5a);
color: #fff;
}
/* 礼物网格 */
.wechat-gift-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 10px;
flex: 1;
}
.wechat-gift-item {
display: flex;
flex-direction: column;
align-items: center;
padding: 12px 8px;
background: #1c1c1c;
border-radius: 10px;
cursor: pointer;
transition: all 0.2s;
border: 2px solid transparent;
}
.wechat-gift-item:hover {
background: #252525;
}
.wechat-gift-item.selected {
border-color: #ff6b6b;
background: #2a1a1a;
}
.wechat-gift-emoji {
font-size: 32px;
margin-bottom: 6px;
}
.wechat-gift-name {
font-size: 12px;
color: #999;
text-align: center;
}
.wechat-gift-item.selected .wechat-gift-name {
color: #ff6b6b;
}
/* 多选按钮 */
.wechat-gift-multi-select-btn {
position: absolute;
right: 15px;
top: 50%;
transform: translateY(-50%);
padding: 6px 14px;
background: linear-gradient(135deg, #ff6b8a, #ff4d6d);
border: none;
border-radius: 16px;
color: #fff;
font-size: 13px;
font-weight: 500;
cursor: pointer;
transition: all 0.2s;
box-shadow: 0 2px 8px rgba(255, 77, 109, 0.3);
}
.wechat-gift-multi-select-btn:hover {
background: linear-gradient(135deg, #ff7a96, #ff5c7a);
box-shadow: 0 3px 12px rgba(255, 77, 109, 0.4);
}
.wechat-gift-multi-select-btn.active {
background: linear-gradient(135deg, #ff8fab, #ff6b8a);
}
/* 多选勾选标记 */
.wechat-gift-check-mark {
position: absolute;
top: 6px;
right: 6px;
width: 20px;
height: 20px;
background: linear-gradient(135deg, #ff6b8a, #ff4d6d);
border-radius: 50%;
color: #fff;
font-size: 12px;
font-weight: bold;
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0 2px 6px rgba(255, 77, 109, 0.4);
animation: checkMarkPop 0.2s ease-out;
}
@keyframes checkMarkPop {
0% {
transform: scale(0);
}
70% {
transform: scale(1.2);
}
100% {
transform: scale(1);
}
}
/* 礼物描述输入 */
.wechat-gift-desc-row {
margin-top: 15px;
}
.wechat-gift-desc-input {
width: 100%;
padding: 12px 15px;
background: #1c1c1c;
border: none;
border-radius: 8px;
color: #e9e9e9;
font-size: 14px;
outline: none;
box-sizing: border-box;
}
.wechat-gift-desc-input::placeholder {
color: #666;
}
/* 底部按钮 */
.wechat-gift-footer {
padding: 15px;
background: #111111;
}
.wechat-gift-send-btn {
width: 100%;
padding: 14px;
background: #3c3c3c;
border: none;
border-radius: 8px;
color: #666;
font-size: 16px;
font-weight: 500;
cursor: not-allowed;
transition: all 0.2s;
}
.wechat-gift-send-btn:not(:disabled) {
background: linear-gradient(135deg, #ff6b6b, #ee5a5a);
color: #fff;
cursor: pointer;
}
.wechat-gift-send-btn:not(:disabled):active {
opacity: 0.8;
}
/* 聊天气泡中的礼物样式 */
.wechat-gift-bubble {
display: flex;
align-items: center;
gap: 10px;
padding: 12px 15px;
background: linear-gradient(135deg, #fff5f5, #ffebeb);
border-radius: 12px;
min-width: 160px;
}
.wechat-gift-bubble-toy {
background: linear-gradient(135deg, #f5f0ff, #ebe0ff);
}
.wechat-gift-bubble-emoji {
font-size: 36px;
}
.wechat-gift-bubble-info {
flex: 1;
}
.wechat-gift-bubble-name {
font-size: 15px;
font-weight: 500;
color: #333;
margin-bottom: 2px;
}
.wechat-gift-bubble-desc {
font-size: 12px;
color: #666;
}
.wechat-gift-bubble-label {
font-size: 11px;
color: #ff6b6b;
padding: 2px 6px;
background: rgba(255, 107, 107, 0.1);
border-radius: 4px;
}
.wechat-gift-bubble-toy .wechat-gift-bubble-label {
color: #9c27b0;
background: rgba(156, 39, 176, 0.1);
}
/* 深色模式礼物气泡 */
.wechat-dark .wechat-gift-bubble {
background: linear-gradient(135deg, #2a1a1a, #251515);
}
.wechat-dark .wechat-gift-bubble-toy {
background: linear-gradient(135deg, #1f1a2a, #1a1525);
}
.wechat-dark .wechat-gift-bubble-name {
color: #e9e9e9;
}
.wechat-dark .wechat-gift-bubble-desc {
color: #999;
}
/* ========== 多选礼物卡片样式 ========== */
.wechat-multi-gift-card {
background: linear-gradient(135deg, #2d1f3d, #1f1a2a);
border-radius: 12px;
padding: 12px;
max-width: 240px;
border: 1px solid rgba(156, 39, 176, 0.3);
}
.wechat-multi-gift-header {
display: flex;
align-items: center;
gap: 6px;
margin-bottom: 10px;
padding-bottom: 8px;
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}
.wechat-multi-gift-icon {
font-size: 16px;
}
.wechat-multi-gift-title {
font-size: 14px;
font-weight: 500;
color: #e9e9e9;
flex: 1;
}
.wechat-multi-gift-target {
font-size: 11px;
color: #ff6b8a;
background: rgba(255, 107, 138, 0.15);
padding: 2px 8px;
border-radius: 10px;
}
.wechat-multi-gift-tags {
display: flex;
flex-wrap: wrap;
gap: 6px;
}
.wechat-multi-gift-tag {
display: flex;
align-items: center;
gap: 4px;
background: rgba(255, 255, 255, 0.08);
padding: 5px 10px;
border-radius: 16px;
transition: background 0.2s;
}
.wechat-multi-gift-tag:hover {
background: rgba(255, 255, 255, 0.12);
}
.wechat-multi-gift-tag-emoji {
font-size: 16px;
}
.wechat-multi-gift-tag-name {
font-size: 12px;
color: #ccc;
}
.wechat-multi-gift-desc {
margin-top: 8px;
padding-top: 8px;
border-top: 1px solid rgba(255, 255, 255, 0.1);
font-size: 12px;
color: #999;
font-style: italic;
}
/* ========== 拉黑样式 ========== */
.wechat-blocked-badge {
font-size: 12px;
margin-left: 4px;
vertical-align: middle;
}
.wechat-chat-item-blocked {
opacity: 0.6;
}
.wechat-chat-item-blocked .wechat-chat-item-preview {
color: #999;
}
/* 被AI拉黑后的消息红色感叹号 */
.wechat-blocked-exclamation {
display: flex;
align-items: center;
justify-content: center;
width: 20px;
height: 20px;
cursor: pointer;
flex-shrink: 0;
align-self: center;
}
.wechat-blocked-exclamation-icon {
display: flex;
align-items: center;
justify-content: center;
width: 18px;
height: 18px;
background: #fa5151;
border-radius: 50%;
color: #fff;
font-size: 12px;
font-weight: bold;
font-style: normal;
}
.wechat-blocked-exclamation.loading .wechat-blocked-exclamation-icon {
animation: blocked-pulse 0.8s ease-in-out infinite;
}
@keyframes blocked-pulse {
0%, 100% { opacity: 1; transform: scale(1); }
50% { opacity: 0.6; transform: scale(0.9); }
}
/* AI被拉黑期间发送的消息右侧感叹号 */
.wechat-blocked-ai-exclamation {
display: flex;
align-items: center;
justify-content: center;
width: 20px;
height: 20px;
flex-shrink: 0;
align-self: center;
}
/* 手机弹窗样式 */
.wechat-phone-popup-overlay {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.5);
display: flex;
align-items: center;
justify-content: center;
z-index: 9999;
}
.wechat-phone-popup {
background: #fff;
border-radius: 12px;
padding: 24px;
width: 280px;
text-align: center;
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);
}
.wechat-phone-popup-icon {
margin-bottom: 16px;
}
.wechat-phone-popup-text {
font-size: 15px;
color: #333;
line-height: 1.5;
margin-bottom: 20px;
}
.wechat-phone-popup-btn {
background: #07c160;
color: #fff;
padding: 10px 24px;
border-radius: 6px;
font-size: 15px;
cursor: pointer;
}
.wechat-phone-popup-btn:hover {
background: #06ae56;
}
.wechat-dark .wechat-phone-popup {
background: #2c2c2c;
}
.wechat-dark .wechat-phone-popup-text {
color: #e0e0e0;
}
/* 被AI拉黑后的消息被拒收提示 */
.wechat-blocked-notice {
display: flex;
justify-content: center;
margin: 8px 0;
}
.wechat-blocked-notice span {
font-size: 12px;
color: #fa5151;
background: rgba(250, 81, 81, 0.1);
padding: 4px 12px;
border-radius: 4px;
}
.wechat-dark .wechat-blocked-notice span {
background: rgba(250, 81, 81, 0.15);
}
/* ========== 历史记录页面样式 ========== */
.wechat-history-page {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: #fff;
z-index: 200;
display: flex;
flex-direction: column;
}
.wechat-history-navbar {
display: flex;
align-items: center;
justify-content: space-between;
padding: 10px 12px;
background: #fff;
border-bottom: 1px solid #e5e5e5;
flex-shrink: 0;
}
.wechat-history-navbar .wechat-navbar-title {
font-size: 17px;
font-weight: 500;
color: #000;
}
.wechat-history-navbar .wechat-navbar-btn {
background: none;
border: none;
padding: 4px;
cursor: pointer;
color: #000;
}
.wechat-history-tabs {
display: flex;
gap: 12px;
padding: 12px 16px;
background: #fff;
flex-shrink: 0;
}
.wechat-history-tab {
flex: 1;
padding: 10px 0;
border: none;
border-radius: 6px;
background: #07c160;
color: #fff;
font-size: 14px;
font-weight: 500;
cursor: pointer;
transition: all 0.2s;
opacity: 0.5;
}
.wechat-history-tab.active {
opacity: 1;
}
.wechat-history-tab:hover {
opacity: 0.85;
}
.wechat-history-content {
flex: 1;
overflow-y: auto;
padding: 0 16px 16px;
background: #fff;
}
/* 历史记录卡片 */
.wechat-history-card {
background: #f7f7f7;
border-radius: 10px;
margin-bottom: 12px;
overflow: hidden;
}
.wechat-history-card-header {
display: flex;
align-items: center;
justify-content: space-between;
padding: 12px 14px;
background: #f0f0f0;
border-bottom: 1px solid #e5e5e5;
}
.wechat-history-card-time {
font-size: 13px;
color: #666;
}
.wechat-history-card-duration {
font-size: 12px;
color: #999;
}
.wechat-history-card-actions {
display: flex;
align-items: center;
gap: 8px;
}
.wechat-history-delete-btn {
background: none;
border: none;
cursor: pointer;
font-size: 18px;
color: #999;
padding: 0 4px;
line-height: 1;
opacity: 0.7;
transition: opacity 0.2s, color 0.2s;
}
.wechat-history-delete-btn:hover {
opacity: 1;
color: #ff4d4f;
}
.wechat-toy-history-card-actions {
display: flex;
align-items: center;
gap: 8px;
}
.wechat-history-card-song {
font-size: 13px;
color: #07c160;
font-weight: 500;
padding: 8px 14px;
background: #e8f8ef;
border-bottom: 1px solid #d0f0dc;
}
.wechat-history-card-messages {
padding: 10px 14px;
max-height: 200px;
overflow-y: auto;
}
.wechat-history-msg {
margin-bottom: 8px;
font-size: 13px;
line-height: 1.5;
}
.wechat-history-msg:last-child {
margin-bottom: 0;
}
.wechat-history-msg-sender {
color: #576b95;
font-weight: 500;
}
.wechat-history-msg-sender.user {
color: #07c160;
}
.wechat-history-msg-content {
color: #333;
}
/* 空状态 */
.wechat-history-empty {
text-align: center;
padding: 60px 20px;
color: #999;
font-size: 14px;
}
.wechat-history-empty-icon {
font-size: 48px;
margin-bottom: 12px;
opacity: 0.5;
}
/* 深色模式 */
.wechat-dark .wechat-history-page {
background: #111;
}
.wechat-dark .wechat-history-navbar {
background: #1a1a1a;
border-bottom-color: #2a2a2a;
}
.wechat-dark .wechat-history-navbar .wechat-navbar-title {
color: #e9e9e9;
}
.wechat-dark .wechat-history-navbar .wechat-navbar-btn {
color: #e9e9e9;
}
.wechat-dark .wechat-history-tabs {
background: #111;
}
.wechat-dark .wechat-history-content {
background: #111;
}
.wechat-dark .wechat-history-card {
background: #1a1a1a;
}
.wechat-dark .wechat-history-card-header {
background: #222;
border-bottom-color: #333;
}
.wechat-dark .wechat-history-card-time {
color: #aaa;
}
.wechat-dark .wechat-history-card-duration {
color: #777;
}
.wechat-dark .wechat-history-card-song {
background: #1a2a1f;
border-bottom-color: #2a3a2f;
}
.wechat-dark .wechat-history-card-messages {
background: #1a1a1a;
}
.wechat-dark .wechat-history-msg-sender {
color: #7a9fd4;
}
.wechat-dark .wechat-history-msg-content {
color: #ddd;
}
.wechat-dark .wechat-history-empty {
color: #666;
}
/* ========== 送礼目标选择样式 ========== */
.wechat-gift-target {
padding: 12px 0;
margin-bottom: 10px;
}
.wechat-gift-target-label {
font-size: 14px;
color: #999;
margin-bottom: 10px;
text-align: center;
}
.wechat-gift-target-options {
display: flex;
gap: 15px;
justify-content: center;
}
.wechat-gift-target-btn {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
width: 100px;
height: 80px;
background: #1c1c1c;
border: 2px solid transparent;
border-radius: 12px;
cursor: pointer;
transition: all 0.2s;
color: #999;
}
.wechat-gift-target-btn svg {
width: 32px;
height: 32px;
margin-bottom: 6px;
}
.wechat-gift-target-btn span {
font-size: 12px;
}
.wechat-gift-target-btn:hover {
background: #252525;
}
.wechat-gift-target-btn.active {
border-color: #ff6b8a;
background: #2a1a20;
color: #ff6b8a;
}
/* 可控制标记 */
.wechat-gift-control-badge {
position: absolute;
top: 4px;
right: 4px;
font-size: 9px;
padding: 2px 4px;
background: #ff6b8a;
color: #fff;
border-radius: 3px;
}
.wechat-gift-item {
position: relative;
}
/* ========== 加急配送弹窗样式 ========== */
.wechat-express-modal-content {
background: #ffffff;
border-radius: 12px;
padding: 24px 20px;
width: 280px;
text-align: center;
}
.wechat-express-text {
color: #000000;
font-size: 16px;
line-height: 1.5;
margin-bottom: 24px;
}
.wechat-express-actions {
display: flex;
gap: 12px;
}
.wechat-express-btn {
flex: 1;
padding: 10px 0;
border: none;
border-radius: 8px;
font-size: 15px;
cursor: pointer;
transition: opacity 0.2s;
}
.wechat-express-btn.confirm {
background: #FFC107;
color: #000000;
font-weight: 500;
}
.wechat-express-btn.cancel {
background: #E5E5E5;
color: #333333;
}
.wechat-express-btn:active {
opacity: 0.8;
}
/* ========== 礼物送达询问弹窗样式 ========== */
.wechat-gift-arrival-content {
background: #fff !important;
border-radius: 12px;
padding: 24px;
text-align: center;
max-width: 280px;
}
.wechat-gift-arrival-content .wechat-modal-title {
font-size: 16px;
font-weight: 600;
color: #333;
margin-bottom: 12px;
}
.wechat-gift-arrival-content .wechat-modal-body {
font-size: 14px;
color: #666;
margin-bottom: 20px;
line-height: 1.5;
}
.wechat-gift-arrival-content .wechat-modal-actions {
display: flex;
gap: 12px;
}
.wechat-gift-arrival-btn-no {
flex: 1;
padding: 10px 0;
background: #f0f0f0 !important;
color: #666 !important;
border: none;
border-radius: 8px;
cursor: pointer;
font-size: 14px;
}
.wechat-gift-arrival-btn-yes {
flex: 1;
padding: 10px 0;
background: linear-gradient(135deg, #ff6b8a, #ff4d6d) !important;
color: #fff !important;
border: none;
border-radius: 8px;
cursor: pointer;
font-size: 14px;
font-weight: 500;
}
.wechat-gift-arrival-btn-yes:hover {
opacity: 0.9;
}
/* ========== 玩具控制页面样式(粉色主题) ========== */
.wechat-toy-control-page {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: linear-gradient(180deg, #fff5f8, #ffe4ec);
z-index: 200;
display: flex;
flex-direction: column;
}
.wechat-toy-control-navbar {
display: flex;
align-items: center;
justify-content: space-between;
padding: 10px 12px;
background: linear-gradient(135deg, #ff6b8a, #ff4d6d);
flex-shrink: 0;
}
.wechat-toy-control-navbar .wechat-navbar-title {
font-size: 16px;
font-weight: 500;
color: #fff;
}
.wechat-toy-control-navbar .wechat-navbar-btn {
background: none;
border: none;
padding: 4px;
cursor: pointer;
color: #fff;
}
/* 控制按钮区域 */
.wechat-toy-control-buttons {
padding: 20px 15px;
flex-shrink: 0;
}
.wechat-toy-btn-row {
display: flex;
justify-content: center;
gap: 15px;
margin-bottom: 15px;
}
.wechat-toy-btn-row:last-child {
margin-bottom: 0;
}
.wechat-toy-btn {
width: 80px;
height: 80px;
border-radius: 50%;
background: linear-gradient(135deg, #ffe4ec, #ffb6c1);
border: 2px solid rgba(255, 107, 138, 0.3);
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
cursor: pointer;
transition: all 0.2s;
box-shadow: 0 4px 12px rgba(255, 107, 138, 0.2);
}
.wechat-toy-btn svg {
color: #ff4d6d;
}
.wechat-toy-btn-label {
font-size: 11px;
margin-top: 4px;
color: #ff4d6d;
}
.wechat-toy-btn:hover {
transform: scale(1.05);
box-shadow: 0 6px 16px rgba(255, 107, 138, 0.3);
}
.wechat-toy-btn.active {
background: linear-gradient(135deg, #ff6b8a, #ff4d6d);
border-color: #ff4d6d;
box-shadow: 0 0 20px rgba(255, 77, 109, 0.5);
}
.wechat-toy-btn.active svg {
color: #fff;
}
.wechat-toy-btn.active .wechat-toy-btn-label {
color: #fff;
}
/* 电击按钮特殊样式 */
.wechat-toy-btn-shock {
background: linear-gradient(135deg, #fff3cd, #ffeeba);
border-color: rgba(255, 193, 7, 0.3);
box-shadow: 0 4px 12px rgba(255, 193, 7, 0.2);
}
.wechat-toy-btn-shock svg {
color: #ff9800;
}
.wechat-toy-btn-shock .wechat-toy-btn-label {
color: #ff9800;
}
.wechat-toy-btn-shock.active {
background: linear-gradient(135deg, #ffc107, #ff9800);
}
/* 媒体按钮(麦克风/摄像头) */
.wechat-toy-btn-media {
width: 60px;
height: 60px;
background: linear-gradient(135deg, #ff6b8a, #ff4d6d);
border-color: rgba(255, 107, 138, 0.3);
box-shadow: 0 4px 12px rgba(255, 77, 109, 0.3);
}
.wechat-toy-btn-media svg {
color: #fff;
}
.wechat-toy-btn-media:hover {
background: linear-gradient(135deg, #ff7a96, #ff5c7a);
}
.wechat-toy-btn-media.active {
background: linear-gradient(135deg, #ff8fab, #ff6b8a);
border-color: #ff8fab;
box-shadow: 0 0 20px rgba(255, 143, 171, 0.5);
}
.wechat-toy-btn-media.active svg {
color: #fff;
}
.wechat-toy-shock-row {
padding-top: 5px;
border-top: 1px dashed rgba(255, 107, 138, 0.3);
margin-top: 10px;
}
/* 聊天区域 */
.wechat-toy-control-chat {
flex: 1;
min-height: 0;
overflow-y: auto;
background: rgba(255, 255, 255, 0.6);
margin: 0 10px;
border-radius: 12px;
box-shadow: inset 0 2px 8px rgba(255, 107, 138, 0.1);
}
/* 聊天区域滚动条样式 */
.wechat-toy-control-chat::-webkit-scrollbar {
width: 6px;
}
.wechat-toy-control-chat::-webkit-scrollbar-track {
background: rgba(255, 107, 138, 0.1);
border-radius: 3px;
}
.wechat-toy-control-chat::-webkit-scrollbar-thumb {
background: rgba(255, 107, 138, 0.4);
border-radius: 3px;
}
.wechat-toy-control-chat::-webkit-scrollbar-thumb:hover {
background: rgba(255, 107, 138, 0.6);
}
.wechat-toy-control-messages {
padding: 15px;
display: flex;
flex-direction: column;
gap: 10px;
}
.wechat-toy-control-msg {
max-width: 85%;
padding: 10px 14px;
border-radius: 12px;
font-size: 14px;
line-height: 1.5;
animation: fadeIn 0.3s ease;
}
.wechat-toy-control-msg.user {
align-self: flex-end;
background: linear-gradient(135deg, #ff6b8a, #ff4d6d);
color: #fff;
border-bottom-right-radius: 4px;
}
.wechat-toy-control-msg.ai {
align-self: flex-start;
background: #fff;
color: #333;
border-bottom-left-radius: 4px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}
/* 系统消息(如切换玩具提示) */
.wechat-toy-control-msg.system {
align-self: center;
background: rgba(255, 107, 138, 0.15);
color: #ff6b8a;
font-size: 12px;
padding: 6px 14px;
border-radius: 16px;
max-width: none;
}
/* 多玩具轮盘选择器 */
.wechat-toy-wheel-container {
position: relative;
display: flex;
justify-content: center;
align-items: center;
height: 180px;
margin: 10px 0;
z-index: 10;
}
.wechat-toy-wheel-heart {
width: 50px;
height: 50px;
background: linear-gradient(135deg, #ff6b8a, #ff4d6d);
border: none;
border-radius: 50%;
color: #fff;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0 4px 15px rgba(255, 77, 109, 0.4);
transition: all 0.3s ease;
z-index: 10;
animation: heartPulse 2s ease-in-out infinite;
}
@keyframes heartPulse {
0%, 100% {
transform: scale(1);
}
50% {
transform: scale(1.05);
}
}
.wechat-toy-wheel-heart:hover {
transform: scale(1.1);
box-shadow: 0 6px 20px rgba(255, 77, 109, 0.5);
}
.wechat-toy-wheel-heart:active {
transform: scale(0.95);
}
.wechat-toy-wheel-heart svg {
width: 24px;
height: 24px;
}
.wechat-toy-wheel-options {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
pointer-events: none;
}
.wechat-toy-wheel-options.open {
pointer-events: auto;
}
.wechat-toy-wheel-option {
position: absolute;
width: 56px;
height: 56px;
background: rgba(255, 255, 255, 0.95);
border: 2px solid rgba(255, 107, 138, 0.3);
border-radius: 50%;
cursor: pointer;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 2px;
opacity: 0;
transform: translate(-50%, -50%) scale(0);
transition: all 0.3s cubic-bezier(0.68, -0.55, 0.265, 1.55);
box-shadow: 0 3px 12px rgba(0, 0, 0, 0.15);
left: 50%;
top: 50%;
}
.wechat-toy-wheel-options.open .wechat-toy-wheel-option {
opacity: 1;
transform: translate(calc(-50% + var(--x)), calc(-50% + var(--y))) scale(1);
pointer-events: auto;
z-index: 10;
}
.wechat-toy-wheel-option:hover {
background: #fff;
border-color: #ff6b8a;
transform: translate(calc(-50% + var(--x)), calc(-50% + var(--y))) scale(1.15);
box-shadow: 0 5px 20px rgba(255, 107, 138, 0.3);
}
.wechat-toy-wheel-option.active {
background: linear-gradient(135deg, #fff0f3, #ffe0e6);
border-color: #ff6b8a;
box-shadow: 0 0 0 3px rgba(255, 107, 138, 0.2);
}
.wechat-toy-wheel-option .emoji {
font-size: 20px;
line-height: 1;
}
.wechat-toy-wheel-option .name {
font-size: 9px;
color: #666;
max-width: 50px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.wechat-toy-wheel-option.active .name {
color: #ff6b8a;
font-weight: 500;
}
/* 轮盘选择器移动端适配 */
@media (max-width: 420px) {
.wechat-toy-wheel-container {
height: 150px;
}
.wechat-toy-wheel-heart {
width: 44px;
height: 44px;
}
.wechat-toy-wheel-heart svg {
width: 20px;
height: 20px;
}
.wechat-toy-wheel-option {
width: 48px;
height: 48px;
}
.wechat-toy-wheel-option .emoji {
font-size: 16px;
}
.wechat-toy-wheel-option .name {
font-size: 8px;
max-width: 44px;
}
}
/* 轮盘背景遮罩(点击关闭) */
.wechat-toy-wheel-overlay {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: transparent;
z-index: 5;
display: none;
pointer-events: none;
}
.wechat-toy-wheel-overlay.active {
display: block;
pointer-events: auto;
}
@keyframes fadeIn {
from {
opacity: 0;
transform: translateY(10px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
/* 输入区域 */
.wechat-toy-control-input-area {
display: flex;
gap: 10px;
padding: 12px 15px;
background: rgba(255, 255, 255, 0.9);
border-top: 1px solid rgba(255, 107, 138, 0.2);
flex-shrink: 0;
}
.wechat-toy-control-input {
flex: 1;
padding: 10px 15px;
background: #fff;
border: 1px solid rgba(255, 107, 138, 0.3);
border-radius: 20px;
font-size: 14px;
outline: none;
color: #333;
}
.wechat-toy-control-input:focus {
border-color: #ff6b8a;
box-shadow: 0 0 0 2px rgba(255, 107, 138, 0.1);
}
.wechat-toy-control-input::placeholder {
color: #bbb;
}
.wechat-toy-control-send {
padding: 10px 20px;
background: linear-gradient(135deg, #ff6b8a, #ff4d6d);
color: #fff;
border: none;
border-radius: 20px;
font-size: 14px;
font-weight: 500;
cursor: pointer;
transition: all 0.2s;
}
.wechat-toy-control-send:hover {
opacity: 0.9;
transform: scale(1.02);
}
/* Typing 指示器 */
.wechat-toy-control-msg .wechat-typing {
background: #fff;
padding: 12px 18px;
}
/* 深色模式玩具控制页面 */
.wechat-dark .wechat-toy-control-page {
background: linear-gradient(180deg, #2a1a20, #1a1015);
}
.wechat-dark .wechat-toy-control-navbar {
background: linear-gradient(135deg, #8b2a4a, #6b1a3a);
}
.wechat-dark .wechat-toy-btn {
background: linear-gradient(135deg, #3a2a30, #2a1a20);
border-color: rgba(255, 107, 138, 0.2);
}
.wechat-dark .wechat-toy-btn svg {
color: #ff6b8a;
}
.wechat-dark .wechat-toy-btn-label {
color: #ff6b8a;
}
.wechat-dark .wechat-toy-btn.active {
background: linear-gradient(135deg, #8b2a4a, #6b1a3a);
}
.wechat-dark .wechat-toy-control-chat {
background: rgba(0, 0, 0, 0.3);
}
.wechat-dark .wechat-toy-control-chat::-webkit-scrollbar-track {
background: rgba(255, 107, 138, 0.05);
}
.wechat-dark .wechat-toy-control-chat::-webkit-scrollbar-thumb {
background: rgba(255, 107, 138, 0.3);
}
.wechat-dark .wechat-toy-control-chat::-webkit-scrollbar-thumb:hover {
background: rgba(255, 107, 138, 0.5);
}
.wechat-dark .wechat-toy-control-msg.ai {
background: #2a2a2a;
color: #e9e9e9;
}
.wechat-dark .wechat-toy-control-input-area {
background: rgba(0, 0, 0, 0.4);
border-top-color: rgba(255, 107, 138, 0.1);
}
.wechat-dark .wechat-toy-control-input {
background: #1a1a1a;
border-color: rgba(255, 107, 138, 0.2);
color: #e9e9e9;
}
.wechat-dark .wechat-toy-control-input::placeholder {
color: #666;
}
/* 深色模式送达弹窗 */
.wechat-dark .wechat-gift-arrival-content {
background: #2a2a2a !important;
}
.wechat-dark .wechat-gift-arrival-content .wechat-modal-title {
color: #e9e9e9;
}
.wechat-dark .wechat-gift-arrival-content .wechat-modal-body {
color: #aaa;
}
.wechat-dark .wechat-gift-arrival-btn-no {
background: #3a3a3a !important;
color: #aaa !important;
}
/* ========== 心动瞬间标签样式 ========== */
.wechat-history-tab-pink {
background: linear-gradient(135deg, #ff6b8a, #ff4d6d) !important;
}
.wechat-history-tab-pink.active {
opacity: 1;
}
/* ========== 语音回放标签样式 ========== */
.wechat-history-tab-green {
background: linear-gradient(135deg, #07c160, #06ad56) !important;
}
.wechat-history-tab-green.active {
opacity: 1;
}
/* 语音回放列表 */
.wechat-voice-playback-list {
display: flex;
flex-direction: column;
gap: 12px;
padding: 12px;
}
.wechat-voice-playback-card {
background: linear-gradient(135deg, #f0fff4, #e6ffed);
border-radius: 12px;
padding: 12px;
box-shadow: 0 2px 8px rgba(7, 193, 96, 0.15);
}
.wechat-dark .wechat-voice-playback-card {
background: linear-gradient(135deg, #1a3025, #0d2818);
}
.wechat-voice-playback-card-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 8px;
}
.wechat-voice-playback-time {
font-size: 12px;
color: var(--wechat-text-secondary);
}
.wechat-voice-playback-actions {
display: flex;
align-items: center;
gap: 8px;
}
.wechat-voice-playback-duration {
font-size: 12px;
color: #07c160;
font-weight: 500;
}
.wechat-voice-playback-delete {
width: 20px;
height: 20px;
border: none;
background: rgba(255, 77, 79, 0.1);
color: #ff4d4f;
border-radius: 50%;
cursor: pointer;
font-size: 14px;
display: flex;
align-items: center;
justify-content: center;
}
.wechat-voice-playback-delete:hover {
background: rgba(255, 77, 79, 0.2);
}
.wechat-voice-playback-content {
display: flex;
align-items: center;
gap: 10px;
}
.wechat-voice-playback-text {
flex: 1;
font-size: 13px;
color: var(--wechat-text-primary);
line-height: 1.5;
word-break: break-word;
}
.wechat-voice-playback-btn {
width: 36px;
height: 36px;
border-radius: 50%;
background: #07c160;
border: none;
color: #fff;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
flex-shrink: 0;
transition: background 0.2s;
}
.wechat-voice-playback-btn:hover {
background: #06ad56;
}
.wechat-voice-playback-btn:disabled {
background: #aaa;
cursor: not-allowed;
}
/* 心动瞬间卡片样式 */
.wechat-toy-history-card {
background: linear-gradient(135deg, #fff5f8, #ffe4ec);
border-radius: 12px;
margin-bottom: 12px;
overflow: hidden;
border: 1px solid rgba(255, 107, 138, 0.2);
}
.wechat-toy-history-card-header {
display: flex;
align-items: center;
justify-content: space-between;
padding: 12px 14px;
background: linear-gradient(135deg, #ff6b8a, #ff4d6d);
color: #fff;
}
.wechat-toy-history-card-gift {
display: flex;
align-items: center;
gap: 8px;
}
.wechat-toy-history-card-gift-emoji {
font-size: 20px;
}
.wechat-toy-history-card-gift-name {
font-weight: 500;
}
.wechat-toy-history-card-target {
font-size: 11px;
padding: 2px 8px;
background: rgba(255, 255, 255, 0.2);
border-radius: 10px;
display: inline-flex;
align-items: center;
gap: 4px;
}
.wechat-toy-target-close-btn {
background: none;
border: none;
cursor: pointer;
font-size: 12px;
color: inherit;
padding: 0;
line-height: 1;
opacity: 0.7;
margin-left: 2px;
}
.wechat-toy-target-close-btn:hover {
opacity: 1;
}
.wechat-toy-history-card-meta {
display: flex;
align-items: center;
justify-content: space-between;
padding: 8px 14px;
background: rgba(255, 107, 138, 0.1);
font-size: 12px;
color: #ff4d6d;
}
.wechat-toy-history-card-messages {
padding: 10px 14px;
max-height: 300px;
overflow-y: auto;
background: rgba(255, 255, 255, 0.5);
}
/* 心动瞬间消息滚动条样式 */
.wechat-toy-history-scrollable::-webkit-scrollbar {
width: 6px;
}
.wechat-toy-history-scrollable::-webkit-scrollbar-track {
background: rgba(255, 107, 138, 0.1);
border-radius: 3px;
}
.wechat-toy-history-scrollable::-webkit-scrollbar-thumb {
background: rgba(255, 107, 138, 0.4);
border-radius: 3px;
}
.wechat-toy-history-scrollable::-webkit-scrollbar-thumb:hover {
background: rgba(255, 107, 138, 0.6);
}
.wechat-toy-history-msg {
margin-bottom: 8px;
font-size: 13px;
line-height: 1.5;
}
.wechat-toy-history-msg:last-child {
margin-bottom: 0;
}
.wechat-toy-history-msg-sender {
font-weight: 500;
}
.wechat-toy-history-msg-sender.user {
color: #ff4d6d;
}
.wechat-toy-history-msg-sender.ai {
color: #9c27b0;
}
.wechat-toy-history-msg-content {
color: #333;
}
/* 深色模式心动瞬间 */
.wechat-dark .wechat-toy-history-card {
background: linear-gradient(135deg, #2a1a20, #1a1015);
border-color: rgba(255, 107, 138, 0.1);
}
.wechat-dark .wechat-toy-history-card-header {
background: linear-gradient(135deg, #8b2a4a, #6b1a3a);
}
.wechat-dark .wechat-toy-history-card-meta {
background: rgba(255, 107, 138, 0.05);
color: #ff6b8a;
}
.wechat-dark .wechat-toy-history-card-messages {
background: rgba(0, 0, 0, 0.2);
}
.wechat-dark .wechat-toy-history-msg-content {
color: #ddd;
}
/* ===== 悬浮球样式 ===== */
.wechat-floating-ball {
position: fixed;
width: 30px;
height: 30px;
z-index: 99999;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
background: transparent;
user-select: none;
-webkit-user-select: none;
touch-action: none;
transition: transform 0.15s ease, opacity 0.15s ease;
}
.wechat-floating-ball:hover {
transform: scale(1.15);
}
.wechat-floating-ball:active,
.wechat-floating-ball.dragging {
transform: scale(0.92);
opacity: 0.9;
}
.wechat-floating-ball .floating-ball-svg {
width: 100%;
height: 100%;
filter: drop-shadow(0 1px 4px rgba(255, 182, 193, 0.5));
transition: filter 0.2s ease;
}
.wechat-floating-ball:hover .floating-ball-svg {
filter: drop-shadow(0 2px 6px rgba(255, 182, 193, 0.7));
}
/* 悬浮球呼吸动画(可选,可删除) */
@keyframes floating-ball-breathe {
0%, 100% {
transform: scale(1);
}
50% {
transform: scale(1.05);
}
}
.wechat-floating-ball:not(:hover):not(.dragging) {
animation: floating-ball-breathe 3s ease-in-out infinite;
}
/* ===== 缩小手机样式 ===== */
#wechat-minimize-btn {
cursor: pointer;
padding: 4px 8px;
margin: -4px -8px;
border-radius: 4px;
transition: background 0.2s ease;
}
#wechat-minimize-btn:hover {
background: rgba(255, 255, 255, 0.1);
}
.wechat-dark #wechat-minimize-btn:hover {
background: rgba(255, 255, 255, 0.05);
}
/* 缩小状态 */
.wechat-phone.minimized {
transform: scale(0.25) !important;
transform-origin: center center;
position: fixed !important;
cursor: pointer;
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4);
transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1),
box-shadow 0.3s ease,
top 0.3s ease,
left 0.3s ease,
right 0.3s ease;
z-index: 99998;
border-radius: 20px;
overflow: hidden;
touch-action: none;
}
.wechat-phone.minimized:hover {
transform: scale(0.27) !important;
box-shadow: 0 12px 48px rgba(0, 0, 0, 0.5);
}
/* 缩小时禁用内部交互,但允许事件冒泡到父元素 */
.wechat-phone.minimized::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: 99999;
cursor: pointer;
}
.wechat-phone.minimized * {
pointer-events: none !important;
}
/* 缩小时的过渡动画 */
.wechat-phone {
transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1),
box-shadow 0.3s ease;
}
/* 语音回放保存弹窗 */
.wechat-voice-save-list {
display: flex;
flex-direction: column;
gap: 8px;
}
.wechat-voice-save-item {
display: flex;
align-items: center;
gap: 10px;
padding: 10px 12px;
background: var(--wechat-bg-light);
border-radius: 8px;
cursor: pointer;
transition: background 0.2s;
}
.wechat-voice-save-item:hover {
background: var(--wechat-bg-hover);
}
.wechat-voice-save-item.selected {
background: rgba(7, 193, 96, 0.15);
border: 1px solid #07c160;
}
.wechat-voice-save-checkbox {
position: relative;
width: 18px;
height: 18px;
flex-shrink: 0;
}
.wechat-voice-save-checkbox input[type="checkbox"] {
position: absolute;
opacity: 0;
width: 100%;
height: 100%;
cursor: pointer;
z-index: 1;
}
.wechat-voice-save-checkbox label {
position: absolute;
top: 0;
left: 0;
width: 18px;
height: 18px;
border: 2px solid var(--wechat-border);
border-radius: 4px;
background: transparent;
transition: all 0.2s;
}
.wechat-voice-save-checkbox input[type="checkbox"]:checked + label {
background: #07c160;
border-color: #07c160;
}
.wechat-voice-save-checkbox label::after {
content: '';
position: absolute;
top: 2px;
left: 5px;
width: 4px;
height: 8px;
border: solid #fff;
border-width: 0 2px 2px 0;
transform: rotate(45deg);
opacity: 0;
transition: opacity 0.2s;
}
.wechat-voice-save-checkbox input[type="checkbox"]:checked + label::after {
opacity: 1;
}
.wechat-voice-save-info {
flex: 1;
min-width: 0;
}
.wechat-voice-save-text {
flex: 1;
font-size: 13px;
color: var(--wechat-text-primary);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.wechat-voice-save-play {
width: 28px;
height: 28px;
border-radius: 50%;
background: #07c160;
border: none;
color: #fff;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
flex-shrink: 0;
}
.wechat-voice-save-play:hover {
background: #06ad56;
}
.wechat-voice-save-play svg {
width: 14px;
height: 14px;
}
.wechat-voice-save-duration {
font-size: 12px;
color: var(--wechat-text-secondary);
flex-shrink: 0;
}
/* 语音回放气泡 */
.wechat-voice-playback {
display: flex;
align-items: center;
gap: 8px;
margin-top: 6px;
padding: 6px 10px;
background: rgba(7, 193, 96, 0.1);
border-radius: 6px;
cursor: pointer;
}
.wechat-voice-playback:hover {
background: rgba(7, 193, 96, 0.2);
}
.wechat-voice-playback-icon {
width: 20px;
height: 20px;
color: #07c160;
}
.wechat-voice-playback-text {
font-size: 12px;
color: #07c160;
}