
* { margin:0; padding:0; box-sizing:border-box; -webkit-tap-highlight-color:transparent; }
html, body {
  font-family:'Noto Sans SC',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'PingFang SC','Microsoft YaHei','Hiragino Sans GB',sans-serif;
  background:linear-gradient(145deg,#FFF0F5,#FFE4ED);
  min-height:100vh;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:20px;
}
/* 小屏设备自动全屏 */
@media (max-width:768px) {
  html, body { padding:0; background:#FFF5F8; height:100vh; height:100dvh; overflow:hidden; }
  .phone-frame {
    position:fixed !important;
    top:0 !important;
    left:0 !important;
    width:100vw !important;
    height:100vh !important;
    height:100dvh !important;
    max-width:100vw !important;
    max-height:100dvh !important;
    border-radius:0 !important;
    padding:0 !important;
    box-shadow:none !important;
    z-index:9998 !important;
  }
  .phone-screen { border-radius:0 !important; }
  .fs-toggle-btn { display:none !important; }
  .modal-overlay { border-radius:0 !important; }
  /* 覆盖层和弹窗全屏适配，消除边缘空隙 */
  .ws-overlay, .rc-overlay, .pw-overlay, .pw-action-sheet,
  .sf-overlay, .sf-detail-overlay, .sf-dm-detail-overlay, .sf-trend-detail-overlay, .sf-char-profile-overlay,
  .df-overlay, .df-detail-overlay
  { max-width:100vw !important; width:100% !important; }
}
/* 触摸设备自动全屏（无悬停、粗指针 = 手机/平板） */
@media (hover:none) and (pointer:coarse) {
  html, body { padding:0; background:#FFF5F8; height:100vh; height:100dvh; overflow:hidden; }
  .phone-frame {
    position:fixed !important;
    top:0 !important;
    left:0 !important;
    width:100vw !important;
    height:100vh !important;
    height:100dvh !important;
    max-width:100vw !important;
    max-height:100dvh !important;
    border-radius:0 !important;
    padding:0 !important;
    box-shadow:none !important;
    z-index:9998 !important;
  }
  .phone-screen { border-radius:0 !important; }
  .fs-toggle-btn { display:none !important; }
  .modal-overlay { border-radius:0 !important; }
  .ws-overlay, .rc-overlay, .pw-overlay, .pw-action-sheet,
  .sf-overlay, .sf-detail-overlay, .sf-dm-detail-overlay, .sf-trend-detail-overlay, .sf-char-profile-overlay,
  .df-overlay, .df-detail-overlay
  { max-width:100vw !important; width:100% !important; }
}
/* 手动全屏模式 */
.phone-frame.fullscreen {
  position:fixed;
  top:0;
  left:0;
  width:100vw;
  height:100vh;
  height:100dvh;
  max-width:100vw;
  max-height:100dvh;
  border-radius:0;
  padding:0;
  box-shadow:none;
  z-index:9998;
}
.phone-frame.fullscreen .phone-screen { border-radius:0; }
body:has(.phone-frame.fullscreen) { padding:0; background:#FFF5F8; height:100vh; height:100dvh; overflow:hidden; }
/* 全屏切换按钮 */
.fs-toggle-btn {
  position:fixed;
  top:50%;
  right:-20px;
  transform:translateY(-50%);
  width:40px;
  height:40px;
  border-radius:50%;
  background:rgba(255,255,255,0.85);
  backdrop-filter:blur(8px);
  border:1px solid rgba(220,180,200,0.3);
  box-shadow:0 2px 12px rgba(180,150,170,0.15);
  display:flex;
  align-items:center;
  justify-content:center;
  cursor:pointer;
  z-index:9999;
  transition:all 0.2s ease;
  font-size:16px;
  color:#9A8E95;
}
.fs-toggle-btn:hover { right:-16px; background:rgba(255,255,255,0.95); }
.fs-toggle-btn svg { width:18px; height:18px; }

/* ===== 手机外壳 ===== */
.phone-frame {
  width:375px;
  height:700px;
  border-radius:48px;
  background:linear-gradient(160deg,#F5E0E8,#EBD5E0);
  padding:8px;
  box-shadow:0 20px 60px rgba(220,180,200,0.18), 0 0 0 1px rgba(255,255,255,0.35) inset;
  position:relative;
}
.phone-screen {
  width:100%; height:100%;
  border-radius:42px;
  overflow:hidden;
  position:relative;
  /* 让 position:fixed 的后代以本元素为包含块：覆盖层收进手机框并被圆角裁剪 */
  transform:translateZ(0);
  background:
    radial-gradient(ellipse 80% 60% at 15% 5%, rgba(255,218,228,0.35) 0%, transparent 60%),
    radial-gradient(ellipse 70% 50% at 85% 95%, rgba(255,200,215,0.25) 0%, transparent 55%),
    radial-gradient(ellipse 60% 80% at 90% 20%, rgba(240,210,225,0.13) 0%, transparent 50%),
    radial-gradient(ellipse 100% 100% at 50% 50%, rgba(255,250,248,0.9) 0%, transparent 80%),
    linear-gradient(175deg,#FFF5F8 0%,#FFF0F5 35%,#FDF0F5 70%,#FFF5F8 100%);
}

/* ===== 雾气层 ===== */
.mist-layer { position:absolute; inset:0; pointer-events:none; z-index:1; overflow:hidden; }
.mist-blob { position:absolute; border-radius:50%; filter:blur(40px); opacity:0.13; /* v109(A性能)：去掉无限漂浮动画，静态化降温 */ }
.mist-blob.b1 { width:180px; height:180px; background:#FFC0D0; top:10%; left:-30px; }
.mist-blob.b2 { width:140px; height:140px; background:#FFD4E0; top:45%; right:-20px; animation-delay:-6s; }
.mist-blob.b3 { width:120px; height:120px; background:#F0C8D8; bottom:20%; left:20%; animation-delay:-12s; }
@keyframes mistFloat {
  0%,100%{transform:translate(0,0) scale(1)}
  33%{transform:translate(20px,-15px) scale(1.1)}
  66%{transform:translate(-15px,10px) scale(0.95)}
}

/* ===== 状态栏 ===== */
.status-bar { display:flex; justify-content:space-between; align-items:center; padding:max(14px, env(safe-area-inset-top)) 28px 4px; font-size:13px; font-weight:600; color:#8A7E85; position:relative; z-index:25; flex-shrink:0; pointer-events:none; }
.status-icons { display:flex; align-items:center; gap:5px; }
.status-icons svg { width:15px; height:15px; fill:#8A7E85; }
.battery { display:flex; align-items:center; gap:3px; }
.battery-body { width:22px; height:11px; border:1.2px solid #B0A4AE; border-radius:3px; padding:1px; }
.battery-fill { width:75%; height:100%; background:#9EC4B0; border-radius:1px; }
.battery-cap { width:2px; height:5px; background:#B0A4AE; border-radius:0 2px 2px 0; }
.status-lock-btn { cursor:pointer; display:flex; align-items:center; margin-left:4px; opacity:0.6; pointer-events:auto; }
.status-lock-btn:active { opacity:1; }
.dynamic-island { position:absolute; top:max(10px, calc(env(safe-area-inset-top) - 4px)); left:50%; transform:translateX(-50%); width:110px; height:32px; background:rgba(58,53,64,0.85); backdrop-filter:blur(8px); border-radius:20px; z-index:20; pointer-events:none; }
/* 灵动岛显示开关：关闭后完全隐藏 */
.phone-screen.hide-dynamic-island .dynamic-island { display:none !important; }

/* ===== 页面视图容器 ===== */
.view-container { position:absolute; top:0; left:0; right:0; bottom:0; z-index:5; overflow:hidden; }
/* APP 激活时隐藏灵动岛和状态栏（不影响 view-container 自身层级，兼容外部视图） */
.phone-screen.app-active .dynamic-island,
.phone-screen.app-active .status-bar,
.phone-screen.app-active .status-lock-btn,
.phone-screen.app-active .status-icons,
.phone-screen.app-active .status-time,
.phone-screen.app-active .status-icons * { opacity:0; pointer-events:none; transition:opacity 0.2s; }
.view { position:absolute; inset:0; display:flex; flex-direction:column; transform:translateX(100%); transition:transform 0.38s cubic-bezier(0.32,0.72,0.35,1), filter 0.38s ease; pointer-events:none; }
.view.active { transform:translateX(0); z-index:6; box-shadow:-18px 0 44px rgba(90,70,85,0.22); filter:brightness(1); will-change:transform; pointer-events:auto; }
.view.prev { transform:translateX(-28%); z-index:5; filter:brightness(0.93); box-shadow:none; will-change:transform; pointer-events:none; }
.view.next { transform:translateX(100%); z-index:5; filter:brightness(1); pointer-events:none; }
.view.gesture-driven { transition:none !important; }

/* ===== 主屏幕 ===== */
.home-screen { overflow-y:auto; overflow-x:hidden; padding:6px 18px 160px; }
.home-screen::-webkit-scrollbar { display:none; }

/* ===== 桌面分页容器 ===== */
.home-pages-wrap {
  position:absolute; top:max(52px, env(safe-area-inset-top)); left:0; right:0; bottom:100px;
  overflow:hidden;
}
.home-pages-track {
  display:flex; width:200%; height:100%;
  transition:transform 0.35s cubic-bezier(0.25,0.46,0.45,0.94);
}
.home-page {
  width:50%; height:100%;
  overflow:hidden;
  position:relative;
  padding:8px 16px 8px;
  -webkit-overflow-scrolling:touch;
}
.home-page::-webkit-scrollbar { display:none; }

/* 页面指示器 */
.page-dots {
  position:absolute; bottom:78px; left:50%; transform:translateX(-50%);
  display:flex; gap:6px; z-index:14;
}
.page-dot {
  width:6px; height:6px; border-radius:50%;
  background:rgba(190,170,180,0.3);
  transition:all 0.3s ease;
}
.page-dot.active {
  background:#E8A0B8;
  width:18px; border-radius:3px;
}

/* ===== 大时钟 Widget ===== */
.clock-widget {
  background:rgba(255,255,255,0.25);
  backdrop-filter:blur(28px) saturate(1.3);
  -webkit-backdrop-filter:blur(28px) saturate(1.3);
  border-radius:24px;
  padding:14px 18px 12px;
  border:1px solid rgba(255,255,255,0.4);
  box-shadow:0 6px 24px rgba(180,160,170,0.05), inset 0 1px 0 rgba(255,255,255,0.5);
  position:relative; overflow:hidden;
  margin-bottom:12px;
}
/* 在网格内：清除外边距；时钟内容垂直居中 */
.home-widget-area .clock-widget,
.home-widget-area .weather-widget,
.home-widget-area .photo-widget { margin-bottom:0; }
.home-widget-area .clock-widget { display:flex; flex-direction:column; justify-content:center; }
.clock-widget::after { content:''; position:absolute; top:-20px; right:-20px; width:80px; height:80px; border-radius:50%; background:radial-gradient(circle,rgba(232,197,208,0.15),transparent 70%); pointer-events:none; }
.clock-time { font-size:36px; font-weight:200; color:#7E728A; letter-spacing:2px; line-height:1; display:flex; align-items:baseline; gap:4px; }
.clock-time .colon { opacity:0.35; animation:blink 2s ease-in-out infinite; }
@keyframes blink { 0%,100%{opacity:0.35} 50%{opacity:0.12} }
.clock-date { font-size:11px; color:#A0949E; margin-top:6px; font-weight:400; display:flex; align-items:center; gap:8px; }
.clock-date .dot { width:3px; height:3px; border-radius:50%; background:#C8B5C5; }
.clock-greeting { font-size:12px; color:#9EC4B0; font-weight:500; margin-top:3px; }

/* ===== Widget 卡片 ===== */
.widget-row { display:flex; gap:10px; margin-bottom:12px; }
.widget-card {
  flex:1;
  background:rgba(255,255,255,0.27);
  backdrop-filter:blur(24px) saturate(1.25);
  -webkit-backdrop-filter:blur(24px) saturate(1.25);
  border-radius:20px;
  padding:13px 15px;
  border:1px solid rgba(255,255,255,0.4);
  box-shadow:0 4px 16px rgba(180,160,170,0.04), inset 0 1px 0 rgba(255,255,255,0.35);
}

/* ===== 天气 Widget ===== */
.weather-widget {
  background:linear-gradient(135deg,rgba(255,255,255,0.3),rgba(255,255,255,0.15));
  backdrop-filter:blur(24px) saturate(1.25);
  -webkit-backdrop-filter:blur(24px) saturate(1.25);
  border-radius:20px;
  padding:5px 14px;
  border:1px solid rgba(255,255,255,0.4);
  box-shadow:0 4px 16px rgba(180,160,170,0.04), inset 0 1px 0 rgba(255,255,255,0.35);
  margin-bottom:12px;
  display:flex;
  align-items:center;
  gap:10px;
  cursor:pointer;
  overflow:hidden;
}
.weather-widget:active { transform:scale(0.98); }
.weather-icon { font-size:22px; line-height:1; }
.weather-info { flex:1; }
.weather-temp { font-size:18px; font-weight:300; color:#7E728A; line-height:1.1; }
.weather-desc { font-size:10px; color:#A0949E; margin-top:2px; line-height:1.15; }
.weather-city { font-size:9px; color:#B0A4AE; margin-top:1px; line-height:1.15; }

/* ===== 照片 Widget ===== */
.photo-widget {
  background:rgba(255,255,255,0.3);
  backdrop-filter:blur(24px) saturate(1.25);
  -webkit-backdrop-filter:blur(24px) saturate(1.25);
  border-radius:20px;
  padding:10px 12px;
  border:1px solid rgba(255,255,255,0.4);
  box-shadow:0 4px 16px rgba(180,160,170,0.04), inset 0 1px 0 rgba(255,255,255,0.35);
  margin-bottom:12px;
  overflow:hidden;
}
.photo-widget-header {
  display:flex; align-items:center; justify-content:space-between;
  margin-bottom:6px;
}
.photo-widget-title {
  font-size:12px; font-weight:500; color:#9E8A92;
  display:flex; align-items:center; gap:4px;
}
.photo-widget-more {
  font-size:11px; color:#C8A0B0; cursor:pointer;
}
.photo-widget-grid {
  display:grid; grid-template-columns:repeat(3,1fr); gap:6px;
  border-radius:14px; overflow:hidden;
}
.photo-widget-grid img {
  width:100%; height:80px; object-fit:cover;
  border-radius:8px;
  cursor:pointer;
  transition:transform 0.2s;
}
/* 照片小组件：1×1 / 2×2 / 2×3 全幅照片格 */
.photo-cell-widget { border-radius:20px; overflow:hidden; position:relative; cursor:pointer; background:transparent; border:none; box-shadow:none; }
.photo-cell-body { position:absolute; inset:0; }
.photo-cell-body img { width:100%; height:100%; object-fit:cover; display:block; cursor:pointer; transition:transform 0.2s; }
.photo-cell-body img:active { transform:scale(0.96); }
.photo-cell-empty { width:100%; height:100%; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:4px; color:#C8A0B0; font-size:11px; cursor:pointer; }
.photo-cell-empty .photo-cell-empty-icon { font-size:22px; opacity:0.45; }
.home-widget.w1 .photo-cell-empty .photo-cell-empty-icon { font-size:18px; }
.home-widget.w1 .photo-cell-empty span { display:none; }
.photo-widget-grid img:active { transform:scale(0.95); }
.photo-widget-empty {
  text-align:center; padding:24px 0;
  color:#C8B5C5; font-size:12px;
}
.photo-widget-empty-icon { font-size:32px; margin-bottom:6px; opacity:0.4; }

/* ===== 新照片小组件风格 ===== */
/* 拍立得风格 */
.polaroid-widget { border-radius:16px; overflow:hidden; position:relative; cursor:pointer; background:transparent; border:none; box-shadow:none; }
.polaroid-frame { position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:flex-start; padding:6px 6px 0; }
.polaroid-img-wrap { flex:1; width:100%; border-radius:10px; overflow:hidden; background:rgba(200,180,190,0.1); display:flex; align-items:center; justify-content:center; position:relative; }
.polaroid-img-wrap img { width:100%; height:100%; object-fit:cover; display:block; }
.polaroid-caption { height:28px; display:flex; align-items:center; justify-content:center; font-size:11px; color:#9E8A92; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; width:100%; }
.polaroid-empty { width:100%; height:100%; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:4px; color:#C8B5C5; font-size:11px; }
.polaroid-empty-icon { font-size:22px; opacity:0.45; }

/* 胶片风 */
.filmstrip-widget { border-radius:16px; overflow:hidden; position:relative; cursor:pointer; background:transparent; border:none; box-shadow:none; }
.filmstrip-body { position:absolute; inset:0; display:flex; flex-direction:column; background:#1a1a1a; border-radius:16px; }
.filmstrip-perf { height:14px; background:#1a1a1a; display:flex; align-items:center; justify-content:space-around; flex-shrink:0; }
.filmstrip-perf-hole { width:10px; height:6px; background:rgba(255,255,255,0.15); border-radius:2px; }
.filmstrip-photos { flex:1; display:flex; gap:3px; padding:2px; overflow:hidden; }
.filmstrip-photo { flex:1; border-radius:4px; overflow:hidden; background:rgba(255,255,255,0.05); display:flex; align-items:center; justify-content:center; position:relative; }
.filmstrip-photo img { width:100%; height:100%; object-fit:cover; display:block; }
.filmstrip-photo-empty { font-size:14px; opacity:0.3; color:#fff; }
.filmstrip-empty { flex:1; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:4px; color:rgba(255,255,255,0.4); font-size:11px; }
.filmstrip-empty-icon { font-size:22px; opacity:0.45; }

/* 圆形照片风 */
.photo-round-widget { border-radius:20px; overflow:hidden; position:relative; cursor:pointer; background:transparent; border:none; box-shadow:none; }
.photo-round-body { position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:8px; padding:10px; }
.photo-round-circle { width:100%; flex:1; max-height:100%; border-radius:50%; overflow:hidden; border:3px solid rgba(255,255,255,0.6); box-shadow:0 2px 12px rgba(180,160,170,0.15); display:flex; align-items:center; justify-content:center; position:relative; }
.photo-round-circle img { width:100%; height:100%; object-fit:cover; display:block; }
.photo-round-empty { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:4px; color:#C8B5C5; font-size:11px; height:100%; }
.photo-round-empty-icon { font-size:22px; opacity:0.45; }
.photo-round-label { font-size:10px; color:#C8A0B0; text-align:center; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:100%; }

/* 灰粉照片风 */
.photo-graypink-widget { border-radius:20px; overflow:hidden; position:relative; cursor:pointer; background:transparent; border:none; box-shadow:none; }
.photo-graypink-body { position:absolute; inset:0; padding:8px; display:flex; flex-direction:column; gap:4px; }
.photo-graypink-img { flex:1; border-radius:14px; overflow:hidden; position:relative; background:rgba(200,190,200,0.1); display:flex; align-items:center; justify-content:center; }
.photo-graypink-img img { width:100%; height:100%; object-fit:cover; display:block; }
.photo-graypink-heart { position:absolute; top:6px; right:6px; font-size:12px; color:rgba(245,160,184,0.7); text-shadow:0 1px 2px rgba(0,0,0,0.1); }
.photo-graypink-caption { display:flex; align-items:center; gap:4px; padding:0 4px 2px; }
.photo-graypink-caption-text { font-size:10px; color:#B0A0A8; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; flex:1; }
.photo-graypink-empty { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:4px; color:#D5C5D0; font-size:11px; height:100%; }
.photo-graypink-empty-icon { font-size:22px; opacity:0.45; }

.widget-role { display:flex; align-items:center; gap:8px; }
.role-avatar { width:30px; height:30px; border-radius:10px; background:linear-gradient(135deg,rgba(212,181,197,0.55),rgba(200,165,184,0.35)); display:grid; place-items:center; font-size:14px; color:#fff; flex-shrink:0; border:1px solid rgba(255,255,255,0.3); }
.role-info { flex:1; min-width:0; }
.role-name { font-size:12px; font-weight:600; color:#7E728A; }
.role-status { font-size:9px; color:#A0949E; margin-top:1px; }
.role-pulse { width:6px; height:6px; border-radius:50%; background:#9EC4B0; flex-shrink:0; animation:pulse 2s ease-out infinite; }
@keyframes pulse { 0%{box-shadow:0 0 0 0 rgba(158,196,176,0.4)} 100%{box-shadow:0 0 0 8px rgba(158,196,176,0)} }

/* ===== APP 网格 ===== */
.app-section-title { font-size:10px; color:#B0A4AE; font-weight:500; letter-spacing:0.5px; margin-bottom:6px; margin-top:2px; }
.app-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:10px 10px; margin-bottom:8px; }
.app-item { display:flex; flex-direction:column; align-items:center; gap:3px; cursor:pointer; transition:transform 0.2s; position:relative; }
.app-item:active { transform:scale(0.88); }
.app-icon { width:52px; height:52px; border-radius:12px; display:grid; place-items:center; font-size:22px; font-weight:700; color:#888; position:relative; border:1px solid rgba(0,0,0,0.06); box-shadow:0 2px 8px rgba(0,0,0,0.06); overflow:hidden; }
.app-icon span { color:#888; }
.app-icon img { width:100%; height:100%; object-fit:cover; border-radius:12px; }
.app-icon.green { background:linear-gradient(135deg,#C8E6D5,#A8D8C0); }
.app-icon.glass { background:rgba(255,255,255,0.3); backdrop-filter:blur(16px); -webkit-backdrop-filter:blur(16px); }
.app-name { font-size:10px; color:#8A7E85; font-weight:400; }
.app-badge { position:absolute; top:-2px; right:-2px; min-width:16px; height:16px; background:#D4A0B0; color:#fff; font-size:9px; font-weight:600; border-radius:10px; display:grid; place-items:center; padding:0 4px; border:2px solid rgba(250,245,243,0.8); }
/* 生成完毕小红点（定位在 app-item 上，避免被 app-icon 的 overflow:hidden 裁剪） */
.app-icon-red-dot { position:absolute; top:0px; right:8px; width:10px; height:10px; background:#FA5151; border-radius:50%; border:2px solid rgba(250,245,243,0.85); z-index:5; animation:appRedDotPulse 1.5s ease infinite; }
.app-icon-gen-indicator { position:absolute; top:0px; right:8px; width:10px; height:10px; background:#F5A0B8; border-radius:50%; border:2px solid rgba(250,245,243,0.85); z-index:5; animation:appRedDotPulse 0.8s ease infinite; }
@keyframes appRedDotPulse { 0%,100%{transform:scale(1);opacity:1} 50%{transform:scale(1.3);opacity:0.7} }
/* 长按拖拽排序 */
.app-grid.editing { user-select:none; -webkit-user-select:none; }
.app-grid.editing .app-item { animation:appWiggle 0.4s ease-in-out infinite; }
.app-grid.editing .app-item:active { transform:none; }
.home-widget-area.editing .app-item { animation:appWiggle 0.4s ease-in-out infinite; touch-action:none; }
.home-widget-area.editing .app-item:active { transform:none; }
.app-item.dragging { opacity:0.3; }
.app-empty-slot { cursor:default; opacity:0; transition:opacity 0.2s; }
.app-grid.editing .app-empty-slot { border-radius:16px; opacity:0.15; }
.app-item.drag-clone { position:fixed; z-index:99999; pointer-events:none; opacity:0.85; transform:scale(1.15); transition:none; }
.app-item.drag-clone .app-icon { box-shadow:0 8px 24px rgba(0,0,0,0.25); }
@keyframes appWiggle { 0%,100% { transform:rotate(-1.5deg); } 50% { transform:rotate(1.5deg); } }

/* ===== 桌面小组件系统（4列网格，与应用图标对齐）===== */
.home-widget-area { position:relative; display:grid; grid-template-columns:repeat(4,1fr); grid-auto-rows:60px; gap:8px; grid-auto-flow:dense; margin-bottom:6px; }
.home-widget { position:relative; }
.home-widget-area .home-widget { margin-bottom:0; }
/* app-item 不被拉伸到行高，保持图标正方形 */
.home-widget-area .app-item { align-self:start; }
/* 尺寸跨度：w=列(1/2/4)，h=行(1/2/3) */
.home-widget.w1 { grid-column:span 1; }
.home-widget.w2 { grid-column:span 2; }
.home-widget.w4 { grid-column:span 4; }
.home-widget.h1 { grid-row:span 1; }
.home-widget.h2 { grid-row:span 2; }
.home-widget.h3 { grid-row:span 3; }
.home-widget-area.editing .home-widget { animation:appWiggle 0.4s ease-in-out infinite; touch-action:none; -webkit-user-select:none; user-select:none; }
.home-widget.dragging { opacity:0.25; }
.home-widget.drag-clone { position:fixed; z-index:99999; pointer-events:none; opacity:0.92; margin-bottom:0; box-shadow:0 14px 36px rgba(90,70,85,0.28); }
.widget-remove-btn { position:absolute; top:-10px; left:-10px; width:32px; height:32px; border-radius:50%; background:linear-gradient(135deg,#EBB3C2,#D4809A); color:#fff; display:none; place-items:center; font-size:22px; font-weight:500; z-index:7; box-shadow:0 2px 10px rgba(180,120,140,0.5); cursor:pointer; line-height:1; font-family:-apple-system,sans-serif; }
.home-widget-area.editing .widget-remove-btn { display:grid; }
.widget-changeimg-btn { position:absolute; top:-7px; right:-7px; width:22px; height:22px; border-radius:50%; background:linear-gradient(135deg,#A8C8E8,#7BA8D8); color:#fff; display:none; place-items:center; font-size:12px; z-index:7; box-shadow:0 2px 8px rgba(100,140,180,0.45); cursor:pointer; line-height:1; }
.home-widget-area.editing .widget-changeimg-btn { display:grid; }
/* 长按进入编辑模式后，操作按钮以浮动条形式出现在 Dock 上方，不占用网格行 */
.widget-add-bar { position:absolute; left:16px; right:16px; bottom:8px; z-index:16; display:none; gap:8px; }
.home-page.editing .widget-add-bar { display:flex; animation:wgSlideUp 0.25s cubic-bezier(0.32,0.72,0.35,1); }
.widget-add-tile { flex:1; border:1.5px dashed rgba(200,160,180,0.55); border-radius:16px; padding:10px 8px; text-align:center; color:#B08CA0; font-size:12px; font-weight:500; cursor:pointer; background:rgba(255,255,255,0.55); backdrop-filter:blur(16px); -webkit-backdrop-filter:blur(16px); transition:transform 0.15s; box-shadow:0 4px 14px rgba(180,160,170,0.12); }
.widget-add-tile:active { transform:scale(0.97); }
.wallpaper-tile { border-style:solid; border-color:rgba(168,200,232,0.55); color:#8A9CB8; }
/* 壁纸预设选择 */
.wallpaper-preset-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:10px; }
.wallpaper-preset { position:relative; height:84px; border-radius:14px; cursor:pointer; overflow:hidden; border:2px solid rgba(255,255,255,0.5); box-shadow:0 2px 8px rgba(180,160,170,0.1); transition:transform 0.15s; }
.wallpaper-preset:active { transform:scale(0.95); }
.wallpaper-preset .wp-name { position:absolute; left:0; right:0; bottom:0; font-size:10px; text-align:center; padding:3px 0; background:rgba(255,255,255,0.55); backdrop-filter:blur(6px); color:#7E728A; }
.wallpaper-preset.active { border-color:#E8A0B8; box-shadow:0 0 0 2px rgba(232,160,184,0.35); }
.wallpaper-preset.active::after { content:'✓'; position:absolute; top:5px; right:6px; width:17px; height:17px; border-radius:50%; background:#E8A0B8; color:#fff; font-size:11px; display:grid; place-items:center; }
/* 角色速联 widget 行 */
.widget-role { padding:2px 5px; border-radius:10px; cursor:pointer; transition:background 0.15s; }
.widget-role:active { background:rgba(255,255,255,0.35); }
.widget-role-list { display:flex; flex-direction:column; gap:1px; }
/* 小组件画廊 */
.widget-gallery-overlay { position:absolute; inset:0; background:rgba(60,50,60,0.4); backdrop-filter:blur(6px); -webkit-backdrop-filter:blur(6px); z-index:99990; display:flex; align-items:flex-end; animation:fadeIn 0.2s ease; border-radius:42px; overflow:hidden; }
.widget-gallery { width:100%; max-height:64%; background:rgba(250,246,248,0.97); border-radius:26px 26px 42px 42px; padding:14px 18px 30px; animation:wgSlideUp 0.32s cubic-bezier(0.32,0.72,0.35,1); overflow-y:auto; }
@keyframes wgSlideUp { from { transform:translateY(60%); opacity:0.5; } to { transform:translateY(0); opacity:1; } }
.widget-gallery-handle { width:38px; height:4px; border-radius:2px; background:#DCC9D3; margin:2px auto 14px; }
.widget-gallery-title { font-size:15px; font-weight:600; color:#7E728A; text-align:center; margin-bottom:4px; }
.widget-gallery-sub { font-size:11px; color:#B0A4AE; text-align:center; margin-bottom:14px; }
.widget-gallery-item { display:flex; align-items:center; gap:12px; padding:11px 12px; border-radius:16px; background:rgba(255,255,255,0.65); border:1px solid rgba(255,255,255,0.75); margin-bottom:9px; box-shadow:0 2px 8px rgba(180,160,170,0.06); }
.widget-gallery-icon { width:42px; height:42px; border-radius:13px; display:grid; place-items:center; font-size:20px; flex-shrink:0; border:1px solid rgba(255,255,255,0.5); }
.widget-gallery-name { font-size:13px; font-weight:600; color:#7E728A; }
.widget-gallery-desc { font-size:11px; color:#A0949E; margin-top:2px; }
.widget-gallery-add { margin-left:auto; padding:5px 15px; border-radius:14px; font-size:12px; font-weight:500; background:linear-gradient(135deg,#A8D8C0,#8FBFA6); color:#fff; cursor:pointer; flex-shrink:0; transition:transform 0.15s; }
.widget-gallery-add:active { transform:scale(0.94); }
.widget-gallery-add.disabled { background:#E4DAE1; color:#B4A8B2; cursor:default; }
/* 用户自定义小组件 */
.custom-widget { border-radius:20px; overflow:hidden; background:transparent; backdrop-filter:none; -webkit-backdrop-filter:none; border:none; box-shadow:none; }
/* 毛玻璃可选项：编辑器勾选「毛玻璃效果」后启用，加边框/阴影/模糊；不勾选则透明透出壁纸、无任何边框 */
.custom-widget.cw-glass { border:1px solid rgba(255,255,255,0.4); box-shadow:0 4px 16px rgba(180,160,170,0.06), inset 0 1px 0 rgba(255,255,255,0.35); backdrop-filter:blur(24px) saturate(1.25); -webkit-backdrop-filter:blur(24px) saturate(1.25); }
.custom-widget-body { position:absolute; inset:0; overflow:hidden; }
.cw-photo-zone { overflow:hidden; }
.cw-photo-zone.has-photo { background:transparent; }
.cw-photo-zone img { display:block; }

/* ===== 锁屏 ===== */
.wp-tab { flex:1;text-align:center;padding:8px;font-size:14px;color:#8A7E85;cursor:pointer;font-weight:500 }
.wp-tab.active { color:#E8A0B8;background:#fff }
.lockscreen { position:absolute; inset:0; z-index:9999; display:none; flex-direction:column; align-items:center; justify-content:space-between; padding:60px 20px 40px; transition:transform 0.4s ease, opacity 0.4s ease; }
.lockscreen.show { display:flex; }
.lockscreen.unlocking { transform:translateY(-100%); opacity:0; pointer-events:none; }
.lockscreen-clock { font-size:72px; font-weight:200; color:#fff; text-shadow:0 2px 10px rgba(0,0,0,0.3); letter-spacing:2px; margin-top:20px; }
.lockscreen-date { font-size:16px; color:rgba(255,255,255,0.85); margin-top:4px; text-shadow:0 1px 6px rgba(0,0,0,0.3); }
.lockscreen-notifications { flex:1; width:100%; max-width:340px; overflow-y:auto; padding:16px 0; display:flex; flex-direction:column; gap:8px; }
.lockscreen-unlock-area { width:100%; display:flex; flex-direction:column; align-items:center; gap:16px; padding-bottom:10px; }
.lockscreen-slide-text { font-size:15px; color:rgba(255,255,255,0.7); text-shadow:0 1px 6px rgba(0,0,0,0.3); animation:lockSlidePulse 2s ease infinite; }
@keyframes lockSlidePulse { 0%,100% { opacity:0.5; } 50% { opacity:1; } }
.lockscreen-password-pad { display:flex; flex-direction:column; align-items:center; gap:12px; }
.lock-password-input { display:none; }
.lock-password-dots { display:flex; gap:12px; height:16px; }
.lock-password-dot { width:12px; height:12px; border-radius:50%; border:1.5px solid rgba(255,255,255,0.5); transition:background 0.2s; }
.lock-password-dot.filled { background:#fff; border-color:#fff; }
.lock-keypad { display:grid; grid-template-columns:repeat(3,70px); gap:14px; margin-top:8px; }
.lock-key { width:70px; height:70px; border-radius:35px; background:rgba(255,255,255,0.12); backdrop-filter:blur(10px); -webkit-backdrop-filter:blur(10px); display:flex; align-items:center; justify-content:center; font-size:28px; color:#fff; cursor:pointer; user-select:none; -webkit-user-select:none; transition:background 0.15s; }
.lock-key:active { background:rgba(255,255,255,0.25); }
.lock-key-blank { visibility:hidden; }
.lock-key-del { font-size:24px; }

/* ===== 通知弹窗 (iPhone风格) ===== */
.notification-stack { position:absolute; top:0; left:0; right:0; z-index:10000; display:flex; flex-direction:column; align-items:center; padding:50px 8px 0; gap:8px; pointer-events:none; }
.notification-card { width:100%; max-width:360px; background:rgba(255,255,255,0.85); backdrop-filter:blur(24px); -webkit-backdrop-filter:blur(24px); border-radius:18px; padding:12px 14px; display:flex; gap:10px; box-shadow:0 4px 20px rgba(0,0,0,0.12); pointer-events:auto; animation:notifSlideIn 0.4s ease; overflow:hidden; cursor:pointer; }
.notification-card.lockscreen-notif { background:rgba(255,255,255,0.18); color:#fff; }
.notification-card.removing { animation:notifSlideOut 0.3s ease forwards; }
@keyframes notifSlideIn { from { transform:translateY(-100%) scale(0.95); opacity:0; } to { transform:translateY(0) scale(1); opacity:1; } }
@keyframes notifSlideOut { to { transform:translateY(-100%) scale(0.95); opacity:0; } }
.notification-icon { width:36px; height:36px; border-radius:8px; display:flex; align-items:center; justify-content:center; font-size:18px; flex-shrink:0; color:#fff; }
.notification-content { flex:1; min-width:0; }
.notification-title { font-size:13px; font-weight:600; margin-bottom:2px; }
.notification-body { font-size:13px; opacity:0.85; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.notification-time { font-size:11px; opacity:0.5; flex-shrink:0; }

/* ===== 电话APP ===== */
#view-phone .phone-tab { flex:1;text-align:center;padding:8px;font-size:14px;color:#8E8E93;cursor:pointer;font-weight:500 }
#view-phone .phone-tab.active { color:#30D158;background:#2C2C2E }
.phone-panel { padding-top:4px }
.phone-dial-display { text-align:center;font-size:32px;font-weight:300;color:#fff;min-height:42px;padding:12px 0;letter-spacing:2px }
.phone-keypad { display:grid;grid-template-columns:repeat(3,1fr);gap:14px;max-width:280px;margin:0 auto;padding:8px 0 16px }
.phone-key { width:72px;height:72px;border-radius:36px;background:#1C1C1E;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;margin:0 auto;transition:background 0.15s;user-select:none;-webkit-user-select:none }
.phone-key:active { background:#3A3A3C }
.phone-key-num { font-size:30px;font-weight:400;color:#fff;line-height:1 }
.phone-key-letters { font-size:10px;color:#8E8E93;letter-spacing:1px;margin-top:2px;min-height:12px }
.phone-dial-actions { display:flex;align-items:center;justify-content:center;gap:32px;max-width:280px;margin:0 auto;padding:4px 0 }
.phone-call-btn { width:64px;height:64px;border-radius:32px;background:#30D158;display:flex;align-items:center;justify-content:center;cursor:pointer }
.phone-call-btn:active { transform:scale(0.9) }
.phone-delete-btn { width:40px;height:40px;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:0.6 }
.phone-num-chip { flex:1;text-align:center;padding:8px 12px;border-radius:8px;background:#2C2C2E;font-size:13px;color:#8E8E93;cursor:pointer }
.phone-num-chip.active { background:rgba(48,209,88,0.15);color:#30D158 }
.phone-recents-empty,.phone-contacts-empty { text-align:center;padding:60px 20px;color:#8E8E93;font-size:14px }
.phone-recent-item { display:flex;align-items:center;gap:10px;padding:12px 0;border-bottom:0.5px solid rgba(255,255,255,0.06);position:relative;touch-action:pan-y; }
.phone-recent-item.swiping { transition:transform 0.2s ease; }
.phone-recent-item .del-layer { position:absolute;right:0;top:0;bottom:0;width:80px;background:#FF453A;display:flex;align-items:center;justify-content:center;color:#fff;font-size:20px; }
.phone-recent-item .del-layer.confirm { width:100%;font-size:16px; }
.phone-recent-delete-confirm { position:absolute;inset:0;background:rgba(255,69,58,0.95);display:flex;align-items:center;justify-content:center;gap:16px;z-index:10;border-radius:0; }
.phone-recent-delete-confirm span { color:#fff;font-size:15px;font-weight:500; }
.phone-recent-delete-confirm .confirm-del { background:#fff;color:#FF453A;padding:6px 20px;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer; }
.phone-recent-delete-confirm .cancel-del { color:#fff;font-size:14px;opacity:0.8;cursor:pointer; }
.phone-recent-avatar { width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:18px;color:#fff;flex-shrink:0;overflow:hidden }
.phone-recent-info { flex:1;min-width:0 }
.phone-recent-name { font-size:15px;color:#fff;font-weight:500 }
.phone-recent-detail { font-size:12px;color:#8E8E93;margin-top:2px }
.phone-recent-calltype { font-size:14px;margin-right:6px }
.phone-calltype-incoming { color:#30D158 }
.phone-calltype-outgoing { color:#30D158 }
.phone-calltype-missed { color:#FF453A }
.phone-recent-time { font-size:12px;color:#8E8E93;flex-shrink:0 }
.phone-recent-callbtn { width:32px;height:32px;display:flex;align-items:center;justify-content:center;flex-shrink:0;cursor:pointer;margin-left:8px; }
.phone-recent-callbtn svg { width:20px;height:20px;fill:#30D158; }
.phone-recent-item { flex-wrap:wrap; }
.phone-recent-transcript { display:none;width:100%;margin-top:6px;padding:10px 12px;background:#1C1C1E;border-radius:10px;font-size:13px;line-height:1.6;color:#AEAEB2;max-height:240px;overflow-y:auto; }
.phone-recent-item.expanded .phone-recent-transcript { display:block; }
.phone-recent-transcript .ts-line { margin-bottom:4px; }
.phone-recent-transcript .ts-line.me { color:#07C160; }
.phone-recent-transcript .ts-line.ai { color:#AEAEB2; }
.phone-recent-transcript .ts-empty { color:#6B6B70;font-style:italic; }
.phone-recent-expand-hint { font-size:10px;color:#6B6B70;margin-top:2px; }
.phone-contact-item { display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:0.5px solid rgba(255,255,255,0.06);cursor:pointer }
.phone-contact-item:active { opacity:0.6 }
.phone-contact-avatar { width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:18px;color:#fff;flex-shrink:0;overflow:hidden }
.phone-contact-info { flex:1;min-width:0 }
.phone-contact-name { font-size:15px;color:#fff;font-weight:500 }
.phone-contact-num { font-size:12px;color:#8E8E93;margin-top:1px }
.phone-contact-callbtn { width:36px;height:36px;display:flex;align-items:center;justify-content:center;flex-shrink:0;cursor:pointer }

/* ===== 网易云音乐APP ===== */
#view-netease { background:#0D0D0D; }
.ne-header { display:flex;align-items:center;gap:8px;padding:12px 16px 8px;background:#0D0D0D;flex-shrink:0; }
.ne-back-btn { width:32px;height:32px;display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0; }
.ne-back-btn svg { width:18px;height:18px;fill:#E8E8E8; }
.ne-search-box { flex:1;background:#1A1A1A;border:none;border-radius:18px;padding:8px 16px 8px 36px;color:#E8E8E8;font-size:14px;outline:none;font-family:inherit;position:relative; }
.ne-search-wrap { position:relative;flex:1; }
.ne-search-wrap .ne-search-icon { position:absolute;left:12px;top:50%;transform:translateY(-50%);font-size:14px;opacity:0.4;pointer-events:none; }
.ne-search-box::placeholder { color:#555; }
.ne-scroll { flex:1;overflow-y:auto;padding:0 0 140px;-webkit-overflow-scrolling:touch; }
.ne-scroll::-webkit-scrollbar { display:none; }

/* 排行榜入口 */
.ne-charts-section { padding:0 16px; }
.ne-section-title { font-size:16px;font-weight:700;color:#E8E8E8;margin:16px 0 12px; }
.ne-chart-grid { display:grid;grid-template-columns:repeat(3,1fr);gap:10px; }
.ne-chart-card { border-radius:10px;overflow:hidden;cursor:pointer;position:relative;aspect-ratio:1; }
.ne-chart-card img { width:100%;height:100%;object-fit:cover; }
.ne-chart-card .ne-chart-name { position:absolute;bottom:0;left:0;right:0;background:linear-gradient(transparent,rgba(0,0,0,0.7));color:#fff;font-size:11px;font-weight:600;padding:16px 8px 6px; }
.ne-chart-card:active { opacity:0.8; }

/* 歌曲列表 */
.ne-song-list { padding:0 16px; }
.ne-song-item { display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:0.5px solid rgba(255,255,255,0.06);cursor:pointer; }
.ne-song-item:active { background:rgba(255,255,255,0.04); }
.ne-song-item.playing { background:rgba(194,12,12,0.08); }
.ne-song-item.current { background:rgba(255,255,255,0.03); }
.ne-song-cover { width:44px;height:44px;border-radius:8px;flex-shrink:0;object-fit:cover;background:#333; }
.ne-song-info { flex:1;min-width:0; }
.ne-song-title { font-size:14px;color:#E8E8E8;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
.ne-song-title.playing { color:#C20C0C; }
.ne-song-title.current { color:#999; }
.ne-song-artist { font-size:12px;color:#888;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
.ne-song-rank { width:28px;text-align:center;font-size:15px;font-weight:700;color:#888;flex-shrink:0; }
.ne-song-rank.top3 { color:#C20C0C; }
.ne-song-play { width:32px;height:32px;display:flex;align-items:center;justify-content:center;flex-shrink:0; }
.ne-song-play svg { width:18px;height:18px;fill:#E8E8E8; }

/* 播放栏 */
.ne-player-bar { position:absolute;bottom:0;left:0;right:0;background:#1A1A1A;border-top:0.5px solid rgba(255,255,255,0.1);padding:10px 16px;display:flex;align-items:center;gap:10px;z-index:10; }
.ne-player-bar.hidden { display:none; }
.ne-player-cover { width:40px;height:40px;border-radius:8px;flex-shrink:0;object-fit:cover;background:#333; }
.ne-player-info { flex:1;min-width:0; }
.ne-player-title { font-size:13px;color:#E8E8E8;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
.ne-player-artist { font-size:11px;color:#888;margin-top:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
.ne-player-controls { display:flex;align-items:center;gap:4px;flex-shrink:0; }
.ne-ctrl-btn { width:36px;height:36px;display:flex;align-items:center;justify-content:center;cursor:pointer;border-radius:50%; }
.ne-ctrl-btn:active { background:rgba(255,255,255,0.08); }
.ne-ctrl-btn svg { width:20px;height:20px;fill:#E8E8E8; }
.ne-ctrl-play svg { width:24px;height:24px; }
.ne-ctrl-share { position:relative; }
.ne-ctrl-share svg { fill:none; }
.ne-ctrl-share::after { content:'🎧'; position:absolute; top:-2px; right:-2px; font-size:10px; }

/* ===== 网易云同款「一起听」全屏覆盖层 ===== */
.ne-together-overlay { position:absolute; inset:0; z-index:30; background:#0A0A0A; display:none; flex-direction:column; overflow:hidden; }
.ne-together-overlay.show { display:flex; animation:neTogetherFadeIn 0.4s ease; }
@keyframes neTogetherFadeIn { from{opacity:0} to{opacity:1} }
@keyframes neTgPulse { 0%,100%{transform:scale(1);opacity:1} 50%{transform:scale(1.1);opacity:0.7} }

/* 星空背景 */
.ne-together-stars { position:absolute; inset:0; overflow:hidden; pointer-events:none; z-index:0; }
.ne-together-star { position:absolute; background:#fff; border-radius:50%; animation:neStarTwinkle 3s ease-in-out infinite; }
@keyframes neStarTwinkle { 0%,100%{opacity:0.2;transform:scale(0.8)} 50%{opacity:0.9;transform:scale(1.2)} }
.ne-together-bokeh { position:absolute; border-radius:50%; filter:blur(40px); opacity:0.15; animation:neBokehFloat 8s ease-in-out infinite; }
@keyframes neBokehFloat { 0%,100%{transform:translate(0,0) scale(1)} 50%{transform:translate(20px,-15px) scale(1.1)} }

/* 顶部导航 */
.ne-tg-nav { display:flex; align-items:center; justify-content:space-between; padding:12px 16px; position:relative; z-index:5; flex-shrink:0; }
.ne-tg-nav-btn { width:32px; height:32px; display:flex; align-items:center; justify-content:center; cursor:pointer; }
.ne-tg-nav-btn svg { width:20px; height:20px; fill:#E8E8E8; }
.ne-tg-song-info { text-align:center; }
.ne-tg-song-title { font-size:16px; font-weight:600; color:#fff; line-height:1.3; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; max-width:200px; }
.ne-tg-song-artist { font-size:12px; color:rgba(255,255,255,0.5); margin-top:2px; }

/* 双头像区域 */
.ne-tg-avatars-wrap { display:flex; align-items:center; justify-content:center; position:relative; z-index:5; padding:8px 0 4px; cursor:pointer; }
.ne-tg-avatar-pair { position:relative; display:flex; align-items:center; }
.ne-tg-avatar { width:56px; height:56px; border-radius:50%; overflow:hidden; flex-shrink:0; background:#2C2C2E; display:flex; align-items:center; justify-content:center; font-size:22px; color:#fff; }
.ne-tg-avatar img { width:100%; height:100%; object-fit:cover; }
.ne-tg-avatar.user { margin-right:-4px; z-index:1; }
.ne-tg-avatar.char { margin-left:-4px; z-index:2; }
.ne-tg-heart { position:absolute; top:-6px; left:50%; transform:translateX(-50%); width:24px; height:24px; display:flex; align-items:center; justify-content:center; z-index:3; }
.ne-tg-heart svg { width:16px; height:16px; fill:#FF4D6D; filter:drop-shadow(0 0 4px rgba(255,77,109,0.6)); animation:neHeartPulse 1.5s ease-in-out infinite; }
@keyframes neHeartPulse { 0%,100%{transform:scale(1)} 50%{transform:scale(1.2)} }

/* 连接信息 */
.ne-tg-connect-info { text-align:center; font-size:11px; color:rgba(255,255,255,0.4); margin-top:6px; position:relative; z-index:5; }

/* 连线 */
.ne-tg-connect-line { position:absolute; left:50%; transform:translateX(-50%); width:1px; background:linear-gradient(to bottom, rgba(255,255,255,0.3), rgba(255,255,255,0.05)); z-index:1; }

/* 对话气泡区 - 单气泡模式：只显示一条消息，居中 */
.ne-tg-bubbles { flex:0 0 auto; display:flex; justify-content:center; align-items:center; padding:0 20px; position:relative; z-index:5; min-height:48px; }
.ne-tg-bubble { max-width:85%; padding:10px 16px; border-radius:16px; font-size:14px; line-height:1.5; word-break:break-word; animation:neBubblePop 0.3s ease; text-align:center; }
.ne-tg-bubble.char { background:rgba(255,255,255,0.1); color:rgba(255,255,255,0.95); }
.ne-tg-bubble.user { background:rgba(194,12,12,0.25); color:rgba(255,255,255,0.95); }
.ne-tg-bubble.fading { animation:neBubbleFade 0.3s ease forwards; }
@keyframes neBubbleFade { to{opacity:0; transform:scale(0.8)} }
@keyframes neBubblePop { from{opacity:0; transform:translateY(8px) scale(0.9)} to{opacity:1; transform:translateY(0) scale(1)} }
.ne-tg-bubble-typing { display:flex; gap:4px; padding:12px 16px; justify-content:center; }
.ne-tg-bubble-typing span { width:7px; height:7px; border-radius:50%; background:rgba(255,255,255,0.4); animation:neTypingDot 1.4s ease-in-out infinite; }
.ne-tg-bubble-typing span:nth-child(2) { animation-delay:0.2s; }
.ne-tg-bubble-typing span:nth-child(3) { animation-delay:0.4s; }
@keyframes neTypingDot { 0%,60%,100%{transform:translateY(0);opacity:0.4} 30%{transform:translateY(-4px);opacity:1} }

/* 黑胶唱片 */
.ne-tg-vinyl-wrap { flex:1; display:flex; align-items:center; justify-content:center; position:relative; z-index:2; min-height:0; }
.ne-tg-vinyl { width:220px; height:220px; border-radius:50%; background:radial-gradient(circle at 50% 50%, #1a1a1a 30%, #0D0D0D 31%, #1a1a1a 35%, #0D0D0D 36%, #1a1a1a 40%, #111 41%, #1a1a1a 45%, #0D0D0D 46%, #111 50%); position:relative; display:flex; align-items:center; justify-content:center; box-shadow:0 8px 32px rgba(0,0,0,0.6), inset 0 0 0 1px rgba(255,255,255,0.05); }
.ne-tg-vinyl.spinning { animation:neVinylSpin 8s linear infinite; }
@keyframes neVinylSpin { from{transform:rotate(0deg)} to{transform:rotate(360deg)} }
.ne-tg-vinyl::before { content:''; position:absolute; inset:0; border-radius:50%; background:repeating-conic-gradient(from 0deg, rgba(255,255,255,0.02) 0deg 1deg, transparent 1deg 2deg); }
.ne-tg-vinyl-center { width:90px; height:90px; border-radius:50%; overflow:hidden; background:#333; flex-shrink:0; position:relative; z-index:1; box-shadow:0 0 0 3px #0D0D0D, 0 0 0 4px rgba(255,255,255,0.08); }
.ne-tg-vinyl-center img { width:100%; height:100%; object-fit:cover; }
.ne-tg-vinyl-center::after { content:''; position:absolute; top:50%; left:50%; width:10px; height:10px; border-radius:50%; background:#0A0A0A; transform:translate(-50%,-50%); z-index:2; box-shadow:0 0 0 1px rgba(255,255,255,0.1); }

/* 歌词/字幕模式（点击切换） */
.ne-tg-lyrics-mode { display:none; flex:1; flex-direction:column; align-items:center; justify-content:flex-start; position:relative; z-index:2; min-height:0; padding:16px 20px 8px; overflow:hidden; }
.ne-tg-lyrics-mode.show { display:flex; }
.ne-tg-lyric-line { font-size:16px; color:rgba(255,255,255,0.35); line-height:2.4; text-align:center; transition:all 0.4s ease; padding:2px 0; }
.ne-tg-lyric-line.active { color:#fff; font-size:18px; font-weight:600; }
.ne-tg-lyric-line.empty { color:rgba(255,255,255,0.25); font-size:14px; padding:40px 20px; }
.ne-tg-lyric-cover { width:56px; height:56px; border-radius:50%; overflow:hidden; margin-bottom:12px; box-shadow:0 2px 12px rgba(0,0,0,0.3); flex-shrink:0; opacity:0.7; }
.ne-tg-lyric-cover img { width:100%; height:100%; object-fit:cover; }
.ne-tg-lyric-cover.spinning { animation:neVinylSpin 12s linear infinite; }
.ne-tg-lyrics-scroll { flex:1; width:100%; overflow-y:auto; -webkit-overflow-scrolling:touch; min-height:0; padding:8px 0; }
.ne-tg-lyrics-scroll::-webkit-scrollbar { display:none; }

/* 历史记录面板 */
.ne-tg-history-panel { position:absolute; inset:0; background:rgba(13,13,13,0.97); z-index:40; display:none; flex-direction:column; }
.ne-tg-history-panel.show { display:flex; }
.ne-tg-history-header { display:flex; align-items:center; gap:8px; padding:12px 16px; flex-shrink:0; border-bottom:0.5px solid rgba(255,255,255,0.08); }
.ne-tg-history-title { flex:1; font-size:15px; font-weight:600; color:#E8E8E8; }
.ne-tg-history-scroll { flex:1; overflow-y:auto; padding:16px; -webkit-overflow-scrolling:touch; }
.ne-tg-history-scroll::-webkit-scrollbar { display:none; }
.ne-tg-history-item { display:flex; gap:10px; margin-bottom:16px; }
.ne-tg-history-item.user { flex-direction:row-reverse; }
.ne-tg-history-avatar { width:32px; height:32px; border-radius:50%; flex-shrink:0; overflow:hidden; display:flex; align-items:center; justify-content:center; font-size:14px; color:#fff; background:#2C2C2E; }
.ne-tg-history-avatar img { width:100%; height:100%; object-fit:cover; }
.ne-tg-history-bubble { max-width:72%; padding:8px 12px; border-radius:12px; font-size:14px; line-height:1.5; word-break:break-word; }
.ne-tg-history-bubble.char { background:rgba(255,255,255,0.08); color:rgba(255,255,255,0.9); }
.ne-tg-history-bubble.user { background:rgba(194,12,12,0.2); color:rgba(255,255,255,0.9); }
.ne-tg-history-song { font-size:11px; color:rgba(255,255,255,0.3); margin-top:3px; }
.ne-tg-history-empty { text-align:center; color:rgba(255,255,255,0.3); font-size:14px; padding:60px 20px; }

/* 角色选择面板 */
.ne-together-select { position:absolute; inset:0; z-index:28; background:#0D0D0D; display:none; flex-direction:column; }
.ne-together-select.show { display:flex; animation:neTogetherFadeIn 0.3s ease; }
.ne-ts-header { display:flex; align-items:center; justify-content:space-between; padding:12px 16px; flex-shrink:0; }
.ne-ts-back { width:32px; height:32px; display:flex; align-items:center; justify-content:center; cursor:pointer; }
.ne-ts-title { font-size:16px; font-weight:600; color:#E8E8E8; }
.ne-ts-scroll { flex:1; overflow-y:auto; padding:8px 16px 16px; -webkit-overflow-scrolling:touch; }
.ne-ts-scroll::-webkit-scrollbar { display:none; }
.ne-ts-section-title { font-size:14px; color:#666; margin:8px 0 12px; }
.ne-ts-char-grid { display:flex; flex-wrap:wrap; gap:16px; }
.ne-ts-char-item { display:flex; flex-direction:column; align-items:center; gap:6px; cursor:pointer; width:72px; }
.ne-ts-char-item:active { opacity:0.7; }
.ne-ts-char-avatar { width:56px; height:56px; border-radius:50%; overflow:hidden; border:2px solid rgba(255,255,255,0.1); background:#2C2C2E; display:flex; align-items:center; justify-content:center; font-size:22px; color:#fff; }
.ne-ts-char-avatar img { width:100%; height:100%; object-fit:cover; }
.ne-ts-char-name { font-size:12px; color:#999; text-align:center; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; max-width:72px; }
.ne-ts-solo { display:flex; flex-direction:column; align-items:center; gap:6px; padding:16px 0 24px; cursor:pointer; flex-shrink:0; }
.ne-ts-solo:active { opacity:0.7; }
.ne-ts-solo-icon { width:56px; height:56px; border-radius:50%; background:#1A1A1A; display:flex; align-items:center; justify-content:center; font-size:24px; border:2px solid rgba(255,255,255,0.1); }
.ne-ts-solo-text { font-size:13px; color:#666; }

/* 底部播放控制 + 回复输入 */
.ne-tg-bottom { flex-shrink:0; padding:8px 16px 16px; position:relative; z-index:5; }
.ne-tg-progress { display:flex; align-items:center; gap:8px; margin-bottom:10px; }
.ne-tg-progress-bar { flex:1; height:3px; background:rgba(255,255,255,0.1); border-radius:2px; cursor:pointer; position:relative; }
.ne-tg-progress-fill { height:100%; background:#C20C0C; border-radius:2px; width:0%; transition:width 0.3s linear; }
.ne-tg-time { font-size:10px; color:rgba(255,255,255,0.3); flex-shrink:0; }
.ne-tg-controls { display:flex; align-items:center; justify-content:center; gap:20px; margin-bottom:10px; }
.ne-tg-ctrl { width:44px; height:44px; display:flex; align-items:center; justify-content:center; cursor:pointer; border-radius:50%; }
.ne-tg-ctrl:active { background:rgba(255,255,255,0.08); }
.ne-tg-ctrl svg { width:28px; height:28px; fill:rgba(255,255,255,0.8); }
.ne-tg-ctrl.play svg { width:36px; height:36px; }
.ne-tg-reply-row { display:flex; align-items:center; gap:8px; background:rgba(255,255,255,0.06); border-radius:20px; padding:4px 4px 4px 16px; }
.ne-tg-reply-input { flex:1; background:transparent; border:none; outline:none; color:#fff; font-size:14px; font-family:inherit; resize:none; line-height:1.4; max-height:60px; }
.ne-tg-reply-input::placeholder { color:rgba(255,255,255,0.25); }
.ne-tg-reply-send { width:36px; height:36px; border-radius:50%; background:#C20C0C; border:none; display:flex; align-items:center; justify-content:center; cursor:pointer; flex-shrink:0; }
.ne-tg-reply-send:active { opacity:0.7; }
.ne-tg-reply-send svg { width:18px; height:18px; fill:#fff; }
.ne-tg-reply-send:disabled { opacity:0.3; }
.ne-progress-wrap { padding:2px 16px 0;display:flex;align-items:center;gap:8px;background:#1A1A1A; }
.ne-progress-wrap.hidden { display:none; }
.ne-progress-bar { flex:1;height:3px;background:#333;border-radius:2px;cursor:pointer;position:relative; }
.ne-progress-fill { height:100%;background:#C20C0C;border-radius:2px;width:0%;transition:width 0.2s linear; }
.ne-time { font-size:10px;color:#666;flex-shrink:0; }

/* 歌词/热评面板 */
.ne-detail-overlay { position:absolute;inset:0;background:#0D0D0D;z-index:20;display:flex;flex-direction:column;transform:translateY(100%);transition:transform 0.3s ease;overflow:hidden; }
.ne-detail-overlay.show { transform:translateY(0); }
.ne-detail-header { display:flex;align-items:center;gap:8px;padding:12px 16px;flex-shrink:0;background:#1A1A1A;border-bottom:0.5px solid rgba(255,255,255,0.06); }
.ne-detail-back { width:32px;height:32px;display:flex;align-items:center;justify-content:center;cursor:pointer; }
.ne-detail-back svg { width:18px;height:18px;fill:#E8E8E8; }
.ne-detail-title { font-size:15px;font-weight:600;color:#E8E8E8;overflow:hidden;text-overflow:ellipsis;white-space:nowrap; }
.ne-detail-scroll { flex:1;overflow-y:auto;padding:16px;-webkit-overflow-scrolling:touch; }
.ne-detail-scroll::-webkit-scrollbar { display:none; }

/* 歌词 */
.ne-lyrics { text-align:center; }
.ne-lyric-line { font-size:15px;color:#666;line-height:2.4;transition:all 0.3s; }
.ne-lyric-line.active { color:#E8E8E8;font-size:17px;font-weight:600; }
.ne-lyric-empty { text-align:center;color:#555;font-size:14px;padding:60px 20px; }

/* 热评 */
.ne-comment-item { padding:14px 0;border-bottom:0.5px solid rgba(255,255,255,0.06); }
.ne-comment-user { display:flex;align-items:center;gap:8px;margin-bottom:8px; }
.ne-comment-avatar { width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:13px;color:#fff;flex-shrink:0; }
.ne-comment-name { font-size:13px;color:#888; }
.ne-comment-content { font-size:14px;color:#E8E8E8;line-height:1.6; }
.ne-comment-meta { display:flex;gap:16px;margin-top:8px; }
.ne-comment-meta span { font-size:12px;color:#666;display:flex;align-items:center;gap:3px; }
.ne-comment-empty { text-align:center;color:#555;font-size:14px;padding:40px 20px; }

/* 加载/空状态 */
.ne-loading { text-align:center;padding:40px 20px;color:#666;font-size:13px; }
.ne-empty { text-align:center;padding:60px 20px;color:#555; }
.ne-empty-icon { font-size:48px;opacity:0.2;margin-bottom:12px; }
.ne-empty-text { font-size:14px;color:#666; }
.ne-tab-bar { display:flex;background:#1A1A1A;margin:0 16px;border-radius:10px;overflow:hidden; }
.ne-tab { flex:1;text-align:center;padding:8px;font-size:13px;color:#888;cursor:pointer;font-weight:500; }
.ne-tab.active { color:#C20C0C;background:rgba(194,12,12,0.1); }
.ne-panel { display:none; }
.ne-panel.active { display:block; }

/* 自定义小组件管理列表 */
.cw-list-item { display:flex; align-items:center; gap:12px; padding:11px 12px; border-radius:16px; background:rgba(255,255,255,0.65); border:1px solid rgba(255,255,255,0.75); margin-bottom:9px; box-shadow:0 2px 8px rgba(180,160,170,0.06); }
.cw-list-icon { width:42px; height:42px; border-radius:13px; display:grid; place-items:center; font-size:20px; flex-shrink:0; border:1px solid rgba(255,255,255,0.5); }
.cw-list-name { font-size:13px; font-weight:600; color:#7E728A; }
.cw-list-desc { font-size:11px; color:#A0949E; margin-top:2px; }
.cw-mini-btn { padding:5px 12px; border-radius:12px; font-size:11px; font-weight:500; cursor:pointer; flex-shrink:0; transition:transform 0.15s; }
.cw-mini-btn:active { transform:scale(0.94); }
.cw-edit-btn { background:linear-gradient(135deg,#A8C8E8,#8FB8D8); color:#fff; }
.cw-del-btn { background:#F3E3E9; color:#C97E96; }
.cw-empty { text-align:center; padding:20px 0; color:#C8B5C5; font-size:12px; }
.cw-size-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:8px; }
.cw-size-opt { padding:9px 4px; border-radius:12px; text-align:center; font-size:12px; font-weight:500; color:#A0949E; background:rgba(255,255,255,0.5); border:1.5px solid rgba(220,200,212,0.5); cursor:pointer; transition:all 0.15s; }
.cw-size-opt.active { border-color:#E8A0B8; color:#D4809A; background:rgba(232,160,184,0.12); box-shadow:0 0 0 2px rgba(232,160,184,0.18); }
.cw-tab-btn.active { background:rgba(232,160,184,0.15) !important; color:#D4809A !important; }
#cwPreviewBox .home-widget { margin:0 auto; }
/* Dock 栏设置 */
.dock-tile { border-style:solid; border-color:rgba(168,216,192,0.55); color:#8FBFA6; }
.dock-app-item { display:flex; align-items:center; gap:12px; padding:10px 12px; border-radius:16px; background:rgba(255,255,255,0.65); border:1.5px solid rgba(255,255,255,0.75); margin-bottom:8px; cursor:pointer; transition:all 0.15s; }
.dock-app-item.selected { border-color:#A8D8C0; background:rgba(168,216,192,0.14); }
.dock-app-item-icon { width:38px; height:38px; border-radius:12px; display:grid; place-items:center; font-size:18px; flex-shrink:0; border:1px solid rgba(255,255,255,0.5); position:relative; }
.dock-app-item-name { font-size:13px; font-weight:500; color:#7E728A; }
.dock-order-badge { position:absolute; top:-6px; right:-6px; width:17px; height:17px; border-radius:50%; background:linear-gradient(135deg,#A8D8C0,#8FBFA6); color:#fff; font-size:10px; font-weight:600; display:grid; place-items:center; box-shadow:0 2px 6px rgba(140,180,160,0.4); }
.dock-app-check { margin-left:auto; width:20px; height:20px; border-radius:50%; border:1.5px solid rgba(200,180,195,0.5); flex-shrink:0; display:grid; place-items:center; font-size:11px; color:transparent; }
.dock-app-item.selected .dock-app-check { background:linear-gradient(135deg,#A8D8C0,#8FBFA6); border-color:transparent; color:#fff; }

/* ===== Dock 栏 ===== */
.dock { margin:0 14px 4px; background:rgba(255,255,255,0.28); backdrop-filter:blur(32px) saturate(1.4); -webkit-backdrop-filter:blur(32px) saturate(1.4); border-radius:28px; padding:9px 10px; border:1px solid rgba(255,255,255,0.38); box-shadow:0 8px 28px rgba(180,160,170,0.05), inset 0 1px 0 rgba(255,255,255,0.35); display:flex; justify-content:space-evenly; align-items:center; position:absolute; bottom:0; left:0; right:0; z-index:15; }

.dock .dock-item { flex:1; max-width:76px; }
.dock-item { display:flex; flex-direction:column; align-items:center; gap:3px; cursor:pointer; transition:transform 0.2s; position:relative; }
.dock-item:active { transform:scale(0.88); }
.dock-icon { width:54px; height:54px; border-radius:12px; display:grid; place-items:center; font-size:23px; border:1px solid rgba(0,0,0,0.06); box-shadow:0 2px 8px rgba(0,0,0,0.06); position:relative; color:#888; overflow:hidden; }
.dock-icon img { width:100%; height:100%; object-fit:cover; border-radius:12px; }
.dock-name { font-size:9px; color:#A0949E; font-weight:400; }

/* ===== 通用 APP 头部 ===== */
.app-header {
  display:flex; align-items:center; padding:max(8px, env(safe-area-inset-top)) 16px 10px;
  background:rgba(255,255,255,0.22);
  backdrop-filter:blur(24px) saturate(1.2);
  -webkit-backdrop-filter:blur(24px) saturate(1.2);
  border-bottom:1px solid rgba(255,255,255,0.3);
  flex-shrink:0; z-index:5;
}
/* 深色背景页面：app-header 实心化，壁纸不透出 */
#view-charmanager, #view-memory, #view-map { background:#000; }
#view-charmanager .app-header, #view-memory .app-header { background:rgba(20,18,22,0.95); backdrop-filter:blur(20px); -webkit-backdrop-filter:blur(20px); border-bottom:1px solid rgba(255,255,255,0.06); }
#view-charmanager .app-title, #view-memory .app-title { color:#fff; }
#view-charmanager .back-btn svg, #view-memory .back-btn svg { fill:#fff; }
.back-btn { width:32px; height:32px; display:grid; place-items:center; cursor:pointer; border-radius:10px; transition:background 0.2s; flex-shrink:0; }
.back-btn:active { background:rgba(232,197,208,0.15); }
.back-btn svg { width:20px; height:20px; fill:#7E728A; }
.app-title { font-size:16px; font-weight:600; color:#7E728A; flex:1; text-align:center; }

/* ===== 微信深色模式基础 ===== */
.wx-page { display:flex; flex-direction:column; height:100%; background:#000; overflow:hidden; }
.wx-page-scroll { flex:1; overflow-y:auto; }
.wx-page-scroll::-webkit-scrollbar { display:none; }
#view-wechat, #view-contacts, #view-discover, #view-me, #view-moments, #view-chat, #view-create-character, #view-chat-info, #view-redpacket, #view-wallet, #view-friend-settings, #view-new-friends, #view-offline { background:#000; }

/* ===== 微信导航栏（深色） ===== */
.wx-nav { display:flex; align-items:center; justify-content:space-between; padding:max(4px, env(safe-area-inset-top)) 16px 8px; background:#000; flex-shrink:0; z-index:5; }
.wx-nav-back { width:28px; height:28px; display:grid; place-items:center; cursor:pointer; flex-shrink:0; }
.wx-nav-back:active { opacity:0.6; }
.wx-nav-title { font-size:17px; font-weight:600; color:#fff; letter-spacing:0.5px; flex:1; padding-left:4px; }
.wx-nav-actions { display:flex; align-items:center; gap:20px; }
.wx-nav-btn { width:28px; height:28px; display:grid; place-items:center; cursor:pointer; }
.wx-nav-btn svg { width:22px; height:22px; fill:#fff; }

/* ===== 微信+号菜单 ===== */
.wx-plus-menu { position:absolute; top:44px; right:12px; background:#3C3C3C; border-radius:8px; padding:4px 0; min-width:150px; box-shadow:0 4px 20px rgba(0,0,0,0.5); z-index:100; display:none; }
.wx-plus-menu.show { display:block; }
.wx-plus-menu-item { display:flex; align-items:center; gap:10px; padding:10px 14px; cursor:pointer; }
.wx-plus-menu-item:hover { background:rgba(255,255,255,0.1); }
.wx-plus-menu-item span { color:#fff; font-size:14px; }

/* ===== 创造角色页面 ===== */
.wx-create-nav { display:flex; align-items:center; justify-content:space-between; padding:0 12px; padding-top:max(8px, env(safe-area-inset-top)); height:calc(44px + max(8px, env(safe-area-inset-top))); background:#1C1C1E; border-bottom:0.5px solid rgba(255,255,255,0.1); flex-shrink:0; }
.wx-create-nav .cancel-btn { color:#07C160; font-size:16px; cursor:pointer; }
.wx-create-nav .nav-title { font-size:17px; font-weight:600; color:#fff; }
.wx-create-nav .save-btn { color:#07C160; font-size:16px; font-weight:600; cursor:pointer; }
.wx-create-nav .save-btn.disabled { color:#8E8E93; pointer-events:none; }
.wx-create-scroll { flex:1; overflow-y:auto; }
.wx-create-section { margin:8px 0; }
.wx-create-row { display:flex; align-items:center; background:#1C1C1E; padding:12px 16px; min-height:50px; }
.wx-create-row label { color:#fff; font-size:16px; width:80px; flex-shrink:0; }
.wx-create-row input, .wx-create-row select, .wx-create-row textarea { flex:1; background:transparent; border:none; color:#fff; font-size:16px; outline:none; font-family:inherit; resize:none; }
.wx-create-row textarea { min-height:100px; line-height:1.5; }
.wx-create-avatar-row { display:flex; align-items:center; justify-content:center; padding:20px; background:#1C1C1E; }
.wx-create-avatar-picker { width:70px; height:70px; border-radius:12px; background:#2C2C2E; display:grid; place-items:center; font-size:28px; color:#8E8E93; cursor:pointer; border:2px dashed rgba(255,255,255,0.2); }
.wx-gender-options { display:flex; gap:0; flex:1; }
.wx-gender-options label { display:flex; align-items:center; gap:6px; cursor:pointer; width:auto; flex:1; }
.wx-gender-options input[type="radio"] { accent-color:#07C160; }

/* ===== 聊天信息页面 ===== */
.wx-info-nav { display:flex; align-items:center; height:44px; padding-top:max(8px, env(safe-area-inset-top)); background:#1C1C1E; border-bottom:0.5px solid rgba(255,255,255,0.06); position:relative; flex-shrink:0; }
.wx-info-nav .back { position:absolute; left:12px; width:24px; height:24px; display:grid; place-items:center; cursor:pointer; }
.wx-info-nav .back svg { width:12px; height:20px; fill:none; stroke:#fff; stroke-width:2; }
.wx-info-nav .title { font-size:17px; font-weight:600; color:#fff; text-align:center; flex:1; }
.wx-info-scroll { flex:1; overflow-y:auto; background:#000; }
.wx-info-members { display:flex; gap:16px; padding:16px; background:#1C1C1E; margin-bottom:8px; }
.wx-info-member { display:flex; flex-direction:column; align-items:center; gap:4px; }
.wx-info-member-avatar { width:56px; height:56px; border-radius:8px; display:grid; place-items:center; font-size:22px; color:#fff; overflow:hidden; }
.wx-info-member-name { font-size:11px; color:#8E8E93; max-width:56px; text-align:center; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.wx-info-add-member { width:56px; height:56px; border-radius:8px; border:2px dashed #8E8E93; display:grid; place-items:center; cursor:pointer; }
.wx-info-add-member svg { width:24px; height:24px; stroke:#8E8E93; stroke-width:2; fill:none; }
.wx-info-group { background:#1C1C1E; margin-bottom:8px; }
.wx-info-item { display:flex; align-items:center; justify-content:space-between; padding:12px 16px; min-height:50px; cursor:pointer; border-bottom:0.5px solid rgba(255,255,255,0.04); }
.wx-info-item:last-child { border-bottom:none; }
.wx-info-item-label { font-size:16px; color:#fff; }
.wx-info-item-arrow { width:7px; height:12px; opacity:0.4; }
.wx-info-item-arrow::after { content:''; display:block; width:7px; height:7px; border-right:2px solid #8E8E93; border-bottom:2px solid #8E8E93; transform:rotate(-45deg); }
.wx-info-toggle { width:51px; height:31px; border-radius:16px; background:#39393D; position:relative; cursor:pointer; transition:background 0.2s; }
.wx-info-toggle.on { background:#34C759; }
.wx-info-toggle::after { content:''; position:absolute; top:2px; left:2px; width:27px; height:27px; border-radius:50%; background:#fff; transition:transform 0.2s; }
.wx-info-toggle.on::after { transform:translateX(20px); }

/* ===== 回复按钮 ===== */
.chat-reply-bar { display:flex; align-items:center; justify-content:center; padding:8px 12px; background:#000; border-top:0.5px solid rgba(255,255,255,0.06); }
.chat-reply-btn { width:100%; height:36px; background:#1C1C1E; border:0.5px solid rgba(255,255,255,0.1); border-radius:4px; color:#8E8E93; font-size:15px; display:flex; align-items:center; justify-content:center; gap:6px; cursor:pointer; }
.chat-reply-btn:active { background:#2C2C2E; }
.chat-reply-btn svg { width:16px; height:16px; fill:#8E8E93; }

/* ===== 心声按钮 ===== */
.wx-heart-btn { width:20px; height:20px; display:grid; place-items:center; cursor:pointer; margin-left:6px; }
.wx-heart-btn svg { width:16px; height:16px; fill:#8E8E93; transition:fill 0.2s; }
.wx-heart-btn:active svg { fill:#FF3B30; }
.wx-heart-btn.has-voice svg { fill:#FF6B6B; }

/* ===== 心声弹窗 ===== */
.voice-popup { position:fixed; top:50%; left:50%; transform:translate(-50%,-50%); background:#1C1C1E; border-radius:16px; padding:20px 24px; min-width:240px; max-width:300px; z-index:200; display:none; box-shadow:0 8px 32px rgba(0,0,0,0.6); }
.voice-popup.show { display:block; }
.voice-popup-title { font-size:13px; color:#8E8E93; text-align:center; margin-bottom:12px; }
.voice-popup-row { display:flex; justify-content:space-between; padding:6px 0; font-size:14px; border-bottom:0.5px solid rgba(255,255,255,0.06); }
.voice-popup-row:last-child { border-bottom:none; }
.voice-popup-label { color:#8E8E93; }
.voice-popup-value { color:#fff; text-align:right; max-width:180px; }
.voice-popup-close { position:absolute; top:8px; right:12px; color:#8E8E93; font-size:20px; cursor:pointer; line-height:1; }

/* ===== 聊天头部新布局 ===== */
.wx-chat-left { display:flex; align-items:center; gap:2px; flex-shrink:0; }
.wx-chat-center { flex:1; display:flex; align-items:center; justify-content:center; }
.wx-chat-right { display:flex; align-items:center; gap:4px; flex-shrink:0; }
.wx-reply-icon { width:28px; height:28px; display:grid; place-items:center; cursor:pointer; }
/* 手动回复模式：发出消息(含表情包/图片/红包等任意类型)后，回复键轻微脉冲提示“点我回复” */
.wx-reply-icon.reply-pending { animation: replyPendingPulse 1.1s ease-in-out infinite; border-radius:8px; }
@keyframes replyPendingPulse { 0%,100% { opacity:1; transform:scale(1); } 50% { opacity:0.45; transform:scale(0.88); } }
.wx-reply-icon svg { width:20px; height:20px; fill:#fff; }

/* ===== 聊天加号面板 ===== */
.chat-plus-panel { background:#1C1C1E; border-top:0.5px solid rgba(255,255,255,0.06); display:none; flex-shrink:0; }
.chat-plus-panel.show { display:block; animation:plusSlideUp 0.25s ease; }
@keyframes plusSlideUp { from{opacity:0; transform:translateY(20px)} to{opacity:1; transform:translateY(0)} }
.chat-plus-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:12px; padding:20px 16px; }
.chat-plus-item { display:flex; flex-direction:column; align-items:center; gap:6px; cursor:pointer; }
.chat-plus-icon { width:56px; height:56px; border-radius:12px; display:grid; place-items:center; }
.chat-plus-item span { color:#fff; font-size:12px; }

/* ===== 表情包面板（WeChat-style sticker panel） ===== */
.mc-sticker-panel {
  position: absolute;
  left: 0; right: 0;
  width: 100%; height: 240px;
  background: #1C1C1E;
  display: none;
  flex-direction: column;
  z-index: 200;
  overflow: hidden;
  animation: stickerSlideUp .25s ease;
}
.mc-sticker-panel.open { display: flex; }
@keyframes stickerSlideUp { from{opacity:0} to{opacity:1} }
.mc-sticker-tabs { display:flex; gap:0; padding:0 8px; background:#2C2C2E; border-bottom:0.5px solid #3A3A3C; overflow-x:auto; flex-shrink:0; height:40px; align-items:center; }
.mc-sticker-tabs::-webkit-scrollbar { display:none; }
.mc-sticker-tab { padding:0 14px; border:none; background:transparent; font-size:14px; color:#8E8E93; cursor:pointer; white-space:nowrap; display:flex; align-items:center; border-bottom:2px solid transparent; transition:all .2s; height:40px; }
.mc-sticker-tab.active { color:#07C160; border-bottom-color:#07C160; }
.mc-sticker-tab-mgmt { margin-left:auto; padding:0 12px; font-size:20px; color:#8E8E93; cursor:pointer; display:flex; align-items:center; }
.mc-sticker-tab-mgmt:active { opacity:.6; }
.mc-sticker-grid { flex:1; overflow-y:auto; overflow-x:hidden; padding:10px; display:grid; grid-template-columns:repeat(4,1fr); gap:6px; align-content:start; }
.mc-sticker-grid::-webkit-scrollbar { width:3px; }
.mc-sticker-grid::-webkit-scrollbar-thumb { background:#3A3A3C; border-radius:2px; }
.mc-sticker-item { display:flex; flex-direction:column; align-items:center; cursor:pointer; padding:6px 4px; border-radius:10px; transition:background .15s; }
.mc-sticker-item:active { background:rgba(255,255,255,.05); }
.mc-sticker-item img { width:60px; height:60px; object-fit:contain; border-radius:8px; }
.mc-sticker-item .mc-sticker-item-name { font-size:10px; color:#8E8E93; margin-top:3px; max-width:68px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.mc-sticker-add-item { display:flex; flex-direction:column; align-items:center; justify-content:center; cursor:pointer; padding:6px 4px; }
.mc-sticker-add-box { width:60px; height:60px; border:1.5px dashed #3A3A3C; border-radius:10px; display:flex; align-items:center; justify-content:center; font-size:28px; color:#8E8E93; }
.mc-sticker-add-item:active .mc-sticker-add-box { border-color:#07C160; color:#07C160; }
.mc-sticker-item-emoji { width:60px; height:60px; display:flex; align-items:center; justify-content:center; font-size:36px; }
.mc-sticker-emoji { font-size:48px; line-height:1; }
/* 表情包在聊天气泡中的展示 */
.mc-sticker-card { display:flex; flex-direction:column; align-items:center; max-width:120px; }
.mc-sticker-card img { width:96px; height:96px; object-fit:contain; border-radius:8px; }
.mc-sticker-card .mc-sticker-label { font-size:11px; color:#999; margin-top:4px; }
/* 表情包管理界面 */
.mc-sticker-mgmt-view { flex:1; overflow-y:auto; padding:12px 14px; display:flex; flex-direction:column; gap:8px; background:#1C1C1E; }
.mc-sticker-mgmt-view::-webkit-scrollbar { width:3px; }
.mc-sticker-mgmt-view::-webkit-scrollbar-thumb { background:#3A3A3C; border-radius:2px; }
.mc-sticker-mgmt-title { font-size:14px; font-weight:600; margin-bottom:4px; color:#fff; }
.mc-sticker-mgmt-desc { font-size:12px; color:#8E8E93; margin-bottom:6px; }
.mc-sticker-mgmt-input { width:100%; border:0.5px solid #3A3A3C; border-radius:8px; padding:8px 10px; font-size:13px; margin-bottom:4px; background:#2C2C2E; color:#fff; box-sizing:border-box; }
.mc-sticker-mgmt-input:focus { outline:none; border-color:#07C160; }
.mc-sticker-mgmt-input::placeholder { color:#8E8E93; }
.mc-sticker-mgmt-btn { padding:8px 16px; border:none; border-radius:8px; background:#07C160; color:#fff; font-size:13px; cursor:pointer; align-self:flex-start; }
.mc-sticker-mgmt-btn:active { opacity:.8; }
.mc-sticker-mgmt-list { margin-top:10px; display:grid; grid-template-columns:repeat(auto-fill, minmax(72px, 1fr)); gap:8px; }
.mc-sticker-mgmt-item { position:relative; text-align:center; }
.mc-sticker-mgmt-item img { width:56px; height:56px; object-fit:contain; border-radius:6px; }
.mc-sticker-mgmt-item .mc-mgmt-name { font-size:10px; color:#8E8E93; display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.mc-sticker-mgmt-item .mc-mgmt-del { position:absolute; top:-4px; right:-4px; width:18px; height:18px; border:none; border-radius:50%; background:#FA5151; color:#fff; font-size:11px; cursor:pointer; display:flex; align-items:center; justify-content:center; line-height:1; }
.mc-sticker-back { padding:0 14px; height:40px; display:flex; align-items:center; gap:4px; cursor:pointer; font-size:14px; color:#07C160; flex-shrink:0; }
.mc-sticker-back:active { opacity:.7; }
.mc-sticker-back-bar { display:flex; align-items:center; justify-content:space-between; background:#2C2C2E; border-bottom:0.5px solid #3A3A3C; height:40px; flex-shrink:0; padding-right:10px; }
.mc-sticker-tab-close { padding:0 6px; font-size:16px; color:#8E8E93; cursor:pointer; display:flex; align-items:center; }
.mc-sticker-tab-close:active { opacity:.6; }
.mc-sticker-empty-mgmt { text-align:center; padding:20px 0; font-size:13px; color:#8E8E93; }
.redpacket-send-btn { width:100%; height:46px; background:#FA5151; color:#fff; font-size:17px; border:none; border-radius:10px; cursor:pointer; }
.redpacket-send-btn:active { opacity:0.8; }
.redpacket-send-btn:disabled { background:#3C3C3C; color:#8E8E93; }

/* ===== 转账按钮 ===== */
.transfer-send-btn { width:100%; height:46px; background:#07C160; color:#fff; font-size:17px; border:none; border-radius:10px; cursor:pointer; }
.transfer-send-btn:active { opacity:0.8; }
.transfer-send-btn:disabled { background:#3C3C3C; color:#8E8E93; }
/* 用户发出的转账消息 */
.msg-transfer { background:#07C160 !important; color:#fff !important; padding:12px 16px; min-width:200px; cursor:pointer; }
.msg-transfer::before { display:none !important; }
.msg-transfer-title { font-size:15px; font-weight:600; margin-bottom:4px; }
.msg-transfer-desc { font-size:13px; opacity:0.8; }
/* AI发来的转账（可领取） */
.msg-ai-transfer { min-width:200px; max-width:240px; background:#fff; border-radius:8px; overflow:hidden; cursor:pointer; transition:opacity .2s; }
.msg-ai-transfer:active { opacity:0.85; }
.msg-ai-transfer.opened { opacity:0.65; cursor:default; }
.msg-ai-transfer-top { display:flex; align-items:center; gap:8px; padding:12px 14px; background:#07C160; }
.msg-ai-transfer-icon { font-size:22px; flex-shrink:0; }
.msg-ai-transfer-info { flex:1; min-width:0; }
.msg-ai-transfer-amount { font-size:18px; font-weight:600; color:#fff; }
.msg-ai-transfer-note { font-size:12px; color:rgba(255,255,255,0.75); margin-top:2px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.msg-ai-transfer-bottom { padding:8px 14px; font-size:13px; color:#333; text-align:center; }
.msg-ai-transfer.opened .msg-ai-transfer-bottom { color:#999; }

/* ===== 钱包按钮 ===== */
.wallet-btn { width:85%; height:46px; border:none; border-radius:8px; font-size:17px; margin-bottom:10px; cursor:pointer; }
.wallet-btn-primary { background:#07C160; color:#fff; }
.wallet-btn-secondary { background:#2C2C2E; color:#fff; }

/* ===== 图片消息 ===== */
.msg-image { max-width:180px; max-height:240px; border-radius:4px; cursor:pointer; }
/* 假照片卡片 */
.fake-photo-frame { width:180px; height:220px; border-radius:8px; overflow:hidden; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:10px; position:relative; }
.fake-photo-camera { font-size:32px; opacity:0.7; filter:drop-shadow(0 2px 4px rgba(0,0,0,0.3)); }
.fake-photo-desc { font-size:12px; color:rgba(255,255,255,0.85); text-align:center; padding:0 14px; line-height:1.5; text-shadow:0 1px 3px rgba(0,0,0,0.4); word-break:break-word; }
/* 订单卡片 */
.msg-order-card { min-width:200px; max-width:240px; padding:0; overflow:hidden; border-radius:10px; }
.order-card-top { display:flex; align-items:center; gap:10px; padding:10px 12px; background:linear-gradient(135deg,#1a1a2e 0%,#16213e 100%); }
.order-card-icon { font-size:22px; flex-shrink:0; }
.order-card-info { flex:1; min-width:0; }
.order-card-label { font-size:13px; font-weight:600; color:#fff; }
.order-card-source { font-size:11px; color:rgba(255,255,255,0.6); margin-top:2px; }
.order-card-product { padding:10px 12px; font-size:14px; color:#fff; line-height:1.4; word-break:break-word; }
.order-card-footer { display:flex; justify-content:space-between; align-items:center; padding:8px 12px; background:rgba(0,0,0,0.15); }
.order-card-price { font-size:16px; font-weight:700; color:#FFD700; }
.order-card-no { font-size:10px; color:rgba(255,255,255,0.5); }
.msg-redpacket { background:#FA5151 !important; color:#fff !important; padding:12px 16px; min-width:200px; cursor:pointer; }
.msg-redpacket::before { display:none !important; }
.msg-redpacket-title { font-size:15px; font-weight:600; margin-bottom:4px; }
.msg-redpacket-desc { font-size:13px; opacity:0.8; }

/* ===== AI发来的红包（可领取） ===== */
.msg-ai-redpacket { min-width:200px; max-width:240px; background:#FA9D3B; border-radius:8px; overflow:hidden; cursor:pointer; transition:opacity .2s; }
.msg-ai-redpacket:active { opacity:0.85; }
.msg-ai-redpacket.opened { opacity:0.65; cursor:default; }
.msg-ai-rp-top { display:flex; align-items:center; gap:10px; padding:12px 14px; }
.msg-ai-rp-icon { font-size:26px; flex-shrink:0; }
.msg-ai-rp-note { font-size:14px; color:#fff; line-height:1.4; word-break:break-word; }
.msg-ai-rp-bottom { padding:6px 14px; background:rgba(0,0,0,0.12); font-size:11px; color:rgba(255,255,255,0.9); }

/* ===== AI语音消息条 ===== */
.msg-voice-bar { min-width:90px; max-width:230px; cursor:pointer; }
.msg-voice-row { display:flex; align-items:center; gap:8px; }
.msg-voice-icon { font-size:14px; }
.msg-voice-dur { font-size:14px; color:inherit; }
.msg-voice-waves { display:flex; align-items:center; gap:2px; }
.msg-voice-waves i { display:block; width:3px; border-radius:2px; background:currentColor; opacity:0.7; }
.msg-voice-waves i:nth-child(1) { height:6px; }
.msg-voice-waves i:nth-child(2) { height:11px; }
.msg-voice-waves i:nth-child(3) { height:8px; }
.msg-voice-text { display:none; margin-top:6px; padding-top:6px; border-top:0.5px dashed rgba(128,128,128,0.4); font-size:13px; line-height:1.5; opacity:0.85; }

/* ===== 录音浮层 ===== */
.voice-record-overlay { position:fixed; inset:0; z-index:9999; background:rgba(0,0,0,0.45); display:none; align-items:center; justify-content:center; }
.voice-record-overlay.active { display:flex; }
.voice-record-panel { background:rgba(30,30,32,0.92); backdrop-filter:blur(20px); border-radius:20px; padding:28px 32px; display:flex; flex-direction:column; align-items:center; gap:12px; min-width:180px; }
.voice-record-mic { width:64px; height:64px; border-radius:50%; background:rgba(255,255,255,0.1); display:flex; align-items:center; justify-content:center; font-size:28px; animation:voiceRecordPulse 1.2s ease infinite; }
@keyframes voiceRecordPulse { 0%,100% { box-shadow:0 0 0 0 rgba(255,255,255,0.15); } 50% { box-shadow:0 0 0 12px rgba(255,255,255,0.05); } }
.voice-record-text { color:#fff; font-size:15px; font-weight:500; }
.voice-record-hint { color:rgba(255,255,255,0.5); font-size:12px; }
.voice-record-wave { display:flex; align-items:flex-end; gap:3px; height:24px; }
.voice-record-wave i { width:4px; border-radius:2px; background:#07C160; animation:voiceWaveAnim 0.6s ease infinite alternate; }
.voice-record-wave i:nth-child(1) { height:8px; animation-delay:0s; }
.voice-record-wave i:nth-child(2) { height:16px; animation-delay:0.1s; }
.voice-record-wave i:nth-child(3) { height:12px; animation-delay:0.2s; }
.voice-record-wave i:nth-child(4) { height:20px; animation-delay:0.3s; }
.voice-record-wave i:nth-child(5) { height:10px; animation-delay:0.4s; }
.voice-record-wave i:nth-child(6) { height:18px; animation-delay:0.5s; }
.voice-record-wave i:nth-child(7) { height:14px; animation-delay:0.6s; }
@keyframes voiceWaveAnim { from { transform:scaleY(0.5); opacity:0.6; } to { transform:scaleY(1.3); opacity:1; } }
.voice-record-cancel { color:rgba(255,255,255,0.6); font-size:12px; margin-top:4px; }
.voice-record-overlay.cancel-mode .voice-record-panel { background:rgba(200,50,50,0.85); }
.voice-record-overlay.cancel-mode .voice-record-mic { background:rgba(255,255,255,0.2); animation:none; font-size:24px; }
.voice-record-overlay.cancel-mode .voice-record-text { color:#fff; }

/* ===== 按住说话按钮 ===== */
.voice-hold-btn { flex:1; height:38px; border-radius:8px; background:rgba(255,255,255,0.08); border:1px solid rgba(255,255,255,0.12); color:#fff; font-size:15px; display:flex; align-items:center; justify-content:center; cursor:pointer; user-select:none; -webkit-user-select:none; touch-action:none; }
.voice-hold-btn:active, .voice-hold-btn.recording { background:rgba(255,255,255,0.15); }
#view-chat.offline-mode .voice-hold-btn { background:rgba(139,111,71,0.08); border-color:rgba(139,111,71,0.2); color:#8B6F47; }

/* ===== 用户语音气泡 ===== */
.msg-voice-user { min-width:70px; max-width:220px; cursor:pointer; }
.msg-voice-user .msg-voice-row { justify-content:flex-end; }
.msg-voice-playing .msg-voice-waves i { animation:voiceWaveAnim 0.6s ease infinite alternate; }
.msg-voice-playing .msg-voice-waves i:nth-child(1) { animation-delay:0s; }
.msg-voice-playing .msg-voice-waves i:nth-child(2) { animation-delay:0.1s; }
.msg-voice-playing .msg-voice-waves i:nth-child(3) { animation-delay:0.2s; }

/* ===== AI语音气泡（真实语音，非TTS文字） ===== */
.msg-voice-ai { min-width:80px; max-width:240px; cursor:pointer; position:relative; }
.msg-voice-ai .msg-voice-row { justify-content:flex-start; }
.msg-voice-transcribed { margin-top:8px; padding-top:8px; border-top:0.5px dashed rgba(128,128,128,0.4); font-size:13px; line-height:1.6; color:inherit; opacity:0.85; }
.msg-voice-transcribed .msg-voice-transcribe-label { font-size:11px; color:#07C160; margin-bottom:2px; font-weight:500; }
.msg-translated { margin-top:8px; padding-top:8px; border-top:0.5px dashed rgba(128,128,128,0.4); font-size:13px; line-height:1.6; color:inherit; opacity:0.85; }
.msg-translated .msg-translate-label { font-size:11px; color:#07C160; margin-bottom:2px; font-weight:500; }
.msg-translated .msg-translate-label.error { color:#FF3B30; }
.msg-translated.loading { opacity:0.6; }

/* ===== 模拟录音输入弹窗 ===== */
.voice-sim-modal { position:fixed; inset:0; z-index:9999; background:rgba(0,0,0,0.5); display:none; align-items:center; justify-content:center; }
.voice-sim-modal.active { display:flex; }
.voice-sim-panel { background:#2C2C2E; border-radius:16px; padding:20px; width:85%; max-width:340px; }
.voice-sim-title { color:#fff; font-size:15px; font-weight:600; margin-bottom:12px; text-align:center; }
.voice-sim-input { width:100%; padding:10px 12px; border-radius:10px; border:1px solid #48484A; background:#1C1C1E; color:#fff; font-size:14px; font-family:inherit; resize:none; box-sizing:border-box; min-height:60px; }
.voice-sim-input:focus { outline:none; border-color:#07C160; }
.voice-sim-btns { display:flex; gap:10px; margin-top:14px; }
.voice-sim-btn { flex:1; padding:10px; border-radius:10px; border:0; font-size:14px; font-weight:500; cursor:pointer; font-family:inherit; }
.voice-sim-btn.cancel { background:#48484A; color:#fff; }
.voice-sim-btn.confirm { background:#07C160; color:#fff; }

/* ===== 角色声音设置滑块 ===== */
.voice-setting-row { display:flex; align-items:center; gap:10px; margin-bottom:8px; }
.voice-setting-label { font-size:13px; color:#8E8E93; min-width:48px; }
.voice-setting-slider { flex:1; -webkit-appearance:none; height:4px; border-radius:2px; background:#48484A; outline:none; }
.voice-setting-slider::-webkit-slider-thumb { -webkit-appearance:none; width:20px; height:20px; border-radius:50%; background:#fff; cursor:pointer; }
.voice-setting-value { font-size:13px; color:#fff; min-width:36px; text-align:right; }
.voice-preview-btn { padding:6px 14px; border-radius:8px; border:0; background:#07C160; color:#fff; font-size:13px; cursor:pointer; margin-top:8px; }

/* ===== 音色预设卡片 ===== */
.voice-preset-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:8px; margin-bottom:12px; }
.voice-preset-card { background:#1C1C1E; border:1.5px solid #48484A; border-radius:10px; padding:10px 6px; text-align:center; cursor:pointer; transition:all 0.2s; }
.voice-preset-card.active { border-color:#07C160; background:rgba(7,193,96,0.12); }
.voice-preset-icon { font-size:22px; margin-bottom:4px; }
.voice-preset-name { font-size:12px; color:#fff; font-weight:500; }
.voice-preset-desc { font-size:10px; color:#8E8E93; margin-top:2px; }

/* ===== 情感风格按钮 ===== */
.voice-emotion-row { display:flex; gap:6px; flex-wrap:wrap; margin-bottom:10px; }
.voice-emotion-btn { padding:5px 12px; border-radius:16px; border:1px solid #48484A; background:#1C1C1E; color:#8E8E93; font-size:12px; cursor:pointer; transition:all 0.2s; }
.voice-emotion-btn.active { border-color:#07C160; color:#07C160; background:rgba(7,193,96,0.12); }

/* ===== 真人感开关 ===== */
.voice-toggle-row { display:flex; align-items:center; justify-content:space-between; padding:8px 0; border-bottom:0.5px solid rgba(255,255,255,0.06); }
.voice-toggle-row:last-child { border-bottom:none; }
.voice-toggle-label { font-size:13px; color:#fff; }
.voice-toggle-desc { font-size:11px; color:#8E8E93; margin-top:2px; }
.voice-toggle { width:44px; height:26px; border-radius:13px; background:#48484A; position:relative; cursor:pointer; transition:background 0.2s; flex-shrink:0; }
.voice-toggle.on { background:#07C160; }
.voice-toggle::after { content:''; position:absolute; top:3px; left:3px; width:20px; height:20px; border-radius:50%; background:#fff; transition:transform 0.2s; }
.voice-toggle.on::after { transform:translateX(18px); }

/* ===== 语音指令输入 ===== */
.voice-instruction-input { width:100%; padding:10px 12px; border-radius:10px; border:1px solid #48484A; background:#1C1C1E; color:#fff; font-size:13px; font-family:inherit; resize:none; box-sizing:border-box; min-height:56px; margin-top:8px; }
.voice-instruction-input:focus { outline:none; border-color:#07C160; }
.voice-instruction-hint { font-size:11px; color:#8E8E93; margin-top:6px; line-height:1.4; }

/* ===== 已读回执 ===== */
.msg-read-receipt { text-align:right; font-size:11px; color:#8E8E93; margin:-8px 4px 12px 0; }

/* ===== 通话记录（居中微信风格） ===== */
.msg-call-record { align-self:center; background:transparent!important; padding:6px 14px; font-size:12px; color:#8E8E93; display:flex; align-items:center; gap:5px; box-shadow:none!important; max-width:none!important; border-radius:6px; cursor:pointer; }
.msg-call-record::before { display:none!important; }
.msg-call-record:active { background:rgba(255,255,255,0.06)!important; }

/* ===== 通话覆盖层 ===== */
.call-overlay { position:absolute; top:0; left:0; right:0; bottom:0; background:linear-gradient(180deg,#1a2a3a 0%,#0d1620 100%); z-index:200; display:none; flex-direction:column; }
.call-overlay.show { display:flex; }
.call-top { display:flex; flex-direction:column; align-items:center; padding-top:70px; flex-shrink:0; }
.call-type-label { font-size:13px; color:rgba(255,255,255,0.6); margin-bottom:24px; letter-spacing:1px; }
.call-avatar { width:96px; height:96px; border-radius:50%; background:#2C2C2E; display:grid; place-items:center; font-size:36px; color:#fff; overflow:hidden; margin-bottom:16px; box-shadow:0 0 0 4px rgba(255,255,255,0.08); }
.call-name { font-size:22px; font-weight:600; color:#fff; margin-bottom:8px; }
.call-status { font-size:14px; color:rgba(255,255,255,0.7); }
.call-timer { font-size:15px; color:rgba(255,255,255,0.85); margin-top:4px; font-variant-numeric:tabular-nums; }
.call-subtitles { flex:1; overflow-y:auto; padding:20px 20px 10px; display:flex; flex-direction:column; gap:10px; }
.call-sub { max-width:85%; padding:8px 12px; border-radius:12px; font-size:14px; line-height:1.5; animation:callSubIn .25s ease; }
.call-sub.ai { align-self:flex-start; background:rgba(255,255,255,0.12); color:#fff; border-bottom-left-radius:4px; }
.call-sub.me { align-self:flex-end; background:rgba(255,255,255,0.12); color:#fff; border-bottom-right-radius:4px; }
.call-sub .call-sub-name { font-size:11px; opacity:0.6; margin-bottom:2px; }
@keyframes callSubIn { from { opacity:0; transform:translateY(6px); } to { opacity:1; transform:none; } }
.call-input-row { display:flex; gap:8px; padding:10px 16px; flex-shrink:0; }
.call-input { flex:1; background:rgba(255,255,255,0.12); border:none; border-radius:20px; padding:10px 16px; color:#fff; font-size:15px; outline:none; font-family:inherit; }
.call-input::placeholder { color:rgba(255,255,255,0.4); }
.call-send { background:#07C160; color:#fff; border-radius:20px; padding:0 18px; display:grid; place-items:center; font-size:14px; cursor:pointer; flex-shrink:0; }
.call-bottom { display:flex; justify-content:center; padding:20px 0 44px; flex-shrink:0; }
.call-btn { width:64px; height:64px; border-radius:50%; display:grid; place-items:center; cursor:pointer; }
.call-btn svg { width:30px; height:30px; fill:#fff; }
.call-hangup { background:#FA5151; }
.call-hangup svg { transform:rotate(135deg); }
.call-reject { background:#FA5151; }
.call-reject svg { transform:rotate(135deg); }
.call-accept { background:#07C160; }
.call-incoming-btns { display:flex; justify-content:space-around; padding:20px 40px 44px; flex-shrink:0; }
.call-incoming-item { display:flex; flex-direction:column; align-items:center; gap:8px; color:#fff; font-size:13px; }
.call-avatar-pulse { animation:callPulse 1.6s ease-in-out infinite; }
@keyframes callPulse { 0%,100% { box-shadow:0 0 0 4px rgba(255,255,255,0.08); } 50% { box-shadow:0 0 0 12px rgba(255,255,255,0.04); } }
.call-ambient-panel { position:absolute; bottom:130px; left:50%; transform:translateX(-50%); background:rgba(28,28,30,0.95); border:0.5px solid rgba(255,255,255,0.15); border-radius:14px; padding:10px; display:none; z-index:201; max-width:300px; }
.call-ambient-panel.show { display:block; }
.call-ambient-title { font-size:12px; color:rgba(255,255,255,0.5); text-align:center; margin-bottom:8px; }
.call-ambient-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:6px; }
.call-ambient-item { display:flex; flex-direction:column; align-items:center; gap:4px; padding:8px 4px; border-radius:10px; cursor:pointer; background:rgba(255,255,255,0.06); transition:background .2s; }
.call-ambient-item:hover { background:rgba(255,255,255,0.12); }
.call-ambient-item.active { background:rgba(7,193,96,0.25); border:0.5px solid #07C160; }
.call-ambient-icon { font-size:20px; line-height:1; }
.call-ambient-label { font-size:10px; color:rgba(255,255,255,0.7); }
.call-ambient-item.active .call-ambient-label { color:#07C160; }
.call-ambient-bar { display:flex; align-items:center; gap:8px; margin-top:8px; padding:0 4px; }
.call-ambient-bar input[type=range] { flex:1; }
.call-ambient-bar span { font-size:11px; color:rgba(255,255,255,0.5); min-width:28px; text-align:right; }
.call-ambient-btn { position:absolute; top:16px; right:16px; width:36px; height:36px; border-radius:50%; background:rgba(255,255,255,0.1); display:grid; place-items:center; cursor:pointer; z-index:201; font-size:18px; }
.call-ambient-btn.active { background:rgba(7,193,96,0.3); }
.call-bg-btn { position:absolute; top:16px; left:60px; width:36px; height:36px; border-radius:50%; background:rgba(255,255,255,0.1); display:grid; place-items:center; cursor:pointer; z-index:201; font-size:16px; }
.call-cam-btn { position:absolute; top:16px; left:16px; width:36px; height:36px; border-radius:50%; background:rgba(255,255,255,0.1); display:grid; place-items:center; cursor:pointer; z-index:201; font-size:16px; }
.call-cam-btn.active { background:rgba(7,193,96,0.35); box-shadow:0 0 0 2px rgba(7,193,96,0.5); }
.call-ai-speaking { animation:callAiSpeaking 1s ease-in-out infinite; }
@keyframes callAiSpeaking { 0%,100% { box-shadow:0 0 0 4px rgba(7,193,96,0.15); } 50% { box-shadow:0 0 0 10px rgba(7,193,96,0.08); } }

/* ===== 视频通话：画中画（一大一小两个画面，仿微信） ===== */
.call-overlay.video { background:#0a0a0a; }
.call-video-main, .call-video-pip { display:none; }
.call-overlay.video .call-video-main { display:block; position:absolute; inset:0; z-index:2; overflow:hidden; }
.call-overlay.video .call-video-pip { display:none; position:absolute; top:14px; right:14px; width:92px; height:132px; border-radius:14px; overflow:hidden; z-index:50; background:#1C1C1E; box-shadow:0 6px 18px rgba(0,0,0,0.5); border:1px solid rgba(255,255,255,0.2); cursor:pointer; touch-action:none; }
.call-overlay.video.connected .call-video-pip { display:block; }
.call-overlay.video .call-video-pip:active { transform:scale(0.97); }
/* 提升原有控件层级到画面之上 */
.call-overlay.video .call-top,
.call-overlay.video .call-subtitles,
.call-overlay.video .call-input-row,
.call-overlay.video .call-bottom,
.call-overlay.video .call-incoming-btns,
.call-overlay.video .call-ambient-panel { position:relative; z-index:10; }
.call-overlay.video .call-ambient-btn { position:absolute; top:16px; right:16px; z-index:210; }
.call-overlay.video .call-bg-btn { position:absolute; top:16px; left:60px; z-index:210; }
.call-overlay.video .call-cam-btn { position:absolute; top:16px; left:16px; z-index:210; }
.call-overlay.video .call-flip-btn { position:absolute; top:16px; left:104px; z-index:210; display:grid; place-items:center; width:44px; height:44px; cursor:pointer; font-size:20px; background:rgba(0,0,0,0.4); border-radius:50%; color:#fff; transition:background .2s; }
.call-overlay.video .call-flip-btn:active { background:rgba(0,0,0,0.6); }
.call-overlay.video .call-top { padding-top:54px; }
.call-overlay.video .call-avatar { display:none; }
.call-overlay.video .call-name,
.call-overlay.video .call-status,
.call-overlay.video .call-timer,
.call-overlay.video .call-type-label { text-shadow:0 1px 6px rgba(0,0,0,0.75); }
/* 画面内部结构 */
.cv-blur { position:absolute; inset:-30px; background-size:cover; background-position:center; filter:blur(28px) brightness(0.55); transform:scale(1.3); }
.cv-tint { position:absolute; inset:0; background:rgba(0,0,0,0.28); }
.cv-avatar { position:absolute; inset:0; display:grid; place-items:center; }
.call-video-main .cv-avatar .cv-img { width:130px; height:130px; border-radius:50%; object-fit:cover; background:#2C2C2E; display:grid; place-items:center; overflow:hidden; font-size:52px; color:#fff; box-shadow:0 0 0 5px rgba(255,255,255,0.12), 0 8px 30px rgba(0,0,0,0.5); }
.call-video-pip .cv-avatar .cv-img { width:46px; height:46px; font-size:20px; box-shadow:none; }
.cv-img img { width:100%; height:100%; object-fit:cover; border-radius:50%; }
.cv-camoff { position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:6px; background:#1C1C1E; color:rgba(255,255,255,0.6); }
.cv-camoff svg { width:30px; height:30px; fill:rgba(255,255,255,0.45); }
.call-video-main .cv-camoff svg { width:46px; height:46px; }
.call-video-pip .cv-camoff svg { width:24px; height:24px; }
.cv-label { display:none; }
.call-video-pip .cv-label { display:block; position:absolute; bottom:4px; left:0; right:0; text-align:center; font-size:9px; color:rgba(255,255,255,0.85); text-shadow:0 1px 3px rgba(0,0,0,0.8); }
.cv-camera { position:absolute; inset:0; overflow:hidden; }
.cv-camera video { width:100%; height:100%; object-fit:cover; display:block; }
/* 视频通话默认背景 + 大小画面互换 */
.call-overlay.video .call-video-main { background:linear-gradient(160deg,#2b2b4a 0%,#14141f 100%); }
.call-overlay.video.swapped .call-video-main { inset:auto; top:14px; right:14px; left:auto; bottom:auto; width:92px; height:132px; border-radius:14px; }
.call-overlay.video.swapped .call-video-pip { top:0; right:0; left:0; bottom:0; width:auto; height:auto; border-radius:0; border:none; box-shadow:none; }
.call-figure { width:100%; height:100%; border:0; display:block; background:transparent; }
/* 换装 APP：角色选择栏 */
.dressup-charbar { display:flex; gap:8px; padding:8px 10px; overflow-x:auto; background:linear-gradient(135deg,#667eea,#764ba2); border-bottom:1px solid rgba(0,0,0,0.15); flex:0 0 auto; }
.dressup-charbar::-webkit-scrollbar { height:4px; }
.dressup-charbar::-webkit-scrollbar-thumb { background:rgba(255,255,255,0.4); border-radius:2px; }
.du-chip { flex:0 0 auto; width:42px; height:42px; border-radius:50%; border:2px solid rgba(255,255,255,0.5); overflow:hidden; cursor:pointer; display:grid; place-items:center; background:rgba(0,0,0,0.25); transition:transform .12s; }
.du-chip img { width:100%; height:100%; object-fit:cover; }
.du-chip.active { border-color:#fff; box-shadow:0 0 0 2px rgba(255,255,255,0.6); transform:scale(1.06); }

/* ===== 引用回复 ===== */
.msg-quote-block { border-left:3px solid rgba(128,128,128,0.5); background:rgba(128,128,128,0.12); border-radius:4px; padding:5px 8px; margin-bottom:6px; font-size:12px; line-height:1.4; opacity:0.85; }
.msg-quote-name { font-weight:600; margin-right:4px; }
#quotePreviewBar { display:none; padding:8px 12px; background:#1C1C1E; border-top:0.5px solid rgba(255,255,255,0.08); align-items:center; gap:8px; }
#quotePreviewBar .qp-text { flex:1; font-size:12px; color:#8E8E93; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; border-left:3px solid #07C160; padding-left:8px; }
#quotePreviewBar .qp-close { color:#8E8E93; font-size:16px; cursor:pointer; padding:0 4px; }

/* ===== 一起听歌/看书分享卡片 ===== */
.msg-share-card { background:#2C2C2E; border-radius:10px; overflow:hidden; min-width:200px; max-width:240px; margin:4px 0; }
.msg-share-card.clickable { cursor:pointer; transition:opacity 0.2s; }
.msg-share-card.clickable:active { opacity:0.7; }
.msg-share-card .msc-top { display:flex; align-items:center; gap:10px; padding:10px 12px; }
.msg-share-card .msc-icon { width:40px; height:40px; border-radius:8px; display:grid; place-items:center; font-size:20px; flex-shrink:0; background:#3A3A3C; }
.msg-share-card .msc-title { font-size:14px; font-weight:600; color:#fff; line-height:1.3; word-break:break-word; }
.msg-share-card .msc-sub { font-size:11px; color:#8E8E93; margin-top:2px; word-break:break-word; }
.msg-share-card .msc-footer { padding:6px 12px; background:rgba(255,255,255,0.04); border-top:0.5px solid rgba(255,255,255,0.06); font-size:10px; color:#8E8E93; }

/* ===== 转发卡片消息 ===== */
.msg-repost-card { background:#2C2C2E !important; color:#fff !important; padding:0 !important; min-width:220px; max-width:260px; border-radius:8px; overflow:hidden; cursor:pointer; }
.msg-repost-card::before { display:none !important; }
.msg-repost-card::after { display:none !important; }
.msg.self .msg-repost-card { background:#2C2C2E !important; }
.msg-repost-card .repost-card-inner { padding:10px 12px; }
.msg-repost-card .repost-card-source { font-size:11px; color:#8E8E93; margin-bottom:6px; display:flex; align-items:center; gap:4px; }
.msg-repost-card .repost-card-source-icon { width:14px; height:14px; border-radius:3px; display:grid; place-items:center; font-size:8px; background:#576B95; color:#fff; flex-shrink:0; }
.msg-repost-card .repost-card-title { font-size:14px; font-weight:600; color:#fff; line-height:1.4; margin-bottom:4px; word-break:break-word; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.msg-repost-card .repost-card-content { font-size:12px; color:#AEAEB2; line-height:1.5; word-break:break-word; display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden; }
.msg-repost-card .repost-card-footer { padding:8px 12px; background:rgba(255,255,255,0.04); border-top:0.5px solid rgba(255,255,255,0.06); font-size:11px; color:#8E8E93; display:flex; align-items:center; gap:4px; }
.msg-repost-card .repost-card-footer-icon { font-size:10px; }
.msg-repost-card .repost-card-comment { padding:8px 12px 0; font-size:13px; color:#fff; line-height:1.5; word-break:break-word; }
.msg-repost-card .repost-card-comment .repost-comment-label { font-size:11px; color:#8E8E93; margin-bottom:2px; }

/* ===== 转发选择对话框 ===== */
.sf-repost-overlay { position:fixed; top:0; left:0; right:0; bottom:0; background:rgba(0,0,0,0.6); z-index:9999; display:flex; align-items:flex-end; justify-content:center; }
.sf-repost-sheet { background:#1C1C1E; width:100%; max-width:100vw; border-radius:16px 16px 0 0; max-height:80vh; display:flex; flex-direction:column; overflow:hidden; }
.sf-repost-sheet-header { padding:16px 20px; display:flex; align-items:center; justify-content:space-between; border-bottom:0.5px solid rgba(255,255,255,0.08); }
.sf-repost-sheet-title { font-size:17px; font-weight:600; color:#fff; }
.sf-repost-sheet-close { width:28px; height:28px; display:grid; place-items:center; color:#8E8E93; font-size:20px; cursor:pointer; }
.sf-repost-sheet-body { flex:1; overflow-y:auto; padding:8px 0; }
.sf-repost-char-item { display:flex; align-items:center; gap:12px; padding:12px 20px; cursor:pointer; }
.sf-repost-char-item:active { background:rgba(255,255,255,0.04); }
.sf-repost-char-avatar { width:40px; height:40px; border-radius:8px; display:grid; place-items:center; font-size:18px; color:#fff; flex-shrink:0; overflow:hidden; }
.sf-repost-char-avatar img { width:100%; height:100%; object-fit:cover; }
.sf-repost-char-info { flex:1; min-width:0; }
.sf-repost-char-name { font-size:15px; color:#fff; font-weight:500; }
.sf-repost-char-desc { font-size:12px; color:#8E8E93; margin-top:2px; }
.sf-repost-comment-area { padding:12px 20px; border-top:0.5px solid rgba(255,255,255,0.08); }
.sf-repost-comment-area textarea { width:100%; min-height:60px; max-height:100px; background:#2C2C2E; border:none; border-radius:8px; padding:10px 12px; color:#fff; font-size:14px; font-family:inherit; resize:none; }
.sf-repost-comment-area textarea::placeholder { color:#8E8E93; }
.sf-repost-send-btn { margin:12px 20px; height:44px; background:#07C160; color:#fff; border:none; border-radius:10px; font-size:16px; font-weight:500; cursor:pointer; }
.sf-repost-send-btn:active { opacity:0.8; }
.sf-repost-send-btn:disabled { background:#3C3C3C; color:#8E8E93; }

/* ===== 记忆APP ===== */
.memory-action-btn { flex:1; height:48px; border:none; border-radius:12px; background:#07C160; color:#fff; font-size:15px; display:flex; align-items:center; justify-content:center; gap:6px; cursor:pointer; font-family:inherit; }
.memory-action-btn:active { opacity:0.8; }
.memory-action-btn.secondary { background:#2C2C2E; }
/* 记忆角色分区标签栏 */
.memory-tabs { display:flex; gap:8px; overflow-x:auto; padding-bottom:4px; margin-bottom:12px; -webkit-overflow-scrolling:touch; scrollbar-width:none; }
.memory-tabs::-webkit-scrollbar { display:none; }
.memory-tab { flex-shrink:0; padding:6px 14px; border-radius:16px; background:#2C2C2E; color:#8E8E93; font-size:13px; cursor:pointer; white-space:nowrap; border:1px solid transparent; }
.memory-tab.active { background:rgba(7,193,96,0.15); color:#07C160; border-color:rgba(7,193,96,0.4); font-weight:600; }
.memory-tab .memory-tab-count { font-size:10px; opacity:0.7; margin-left:2px; }
.memory-card { background:#1C1C1E; border-radius:12px; padding:16px; margin-bottom:10px; position:relative; }
.memory-card-text { color:#fff; font-size:14px; line-height:1.6; white-space:pre-wrap; word-break:break-word; }
.memory-card-meta { display:flex; align-items:center; justify-content:space-between; margin-top:10px; padding-top:10px; border-top:0.5px solid rgba(255,255,255,0.06); }
.memory-card-time { font-size:11px; color:#8E8E93; }
.memory-card-actions { display:flex; gap:16px; }
.memory-card-action { font-size:13px; color:#07C160; cursor:pointer; }
.memory-card-action.delete { color:#FF3B30; }
.memory-loading { text-align:center; padding:40px 20px; color:#8E8E93; }
.memory-loading .spinner { width:28px; height:28px; border:3px solid rgba(255,255,255,0.1); border-top-color:#07C160; border-radius:50%; animation:spin 0.8s linear infinite; margin:0 auto 12px; }
@keyframes spin { to{transform:rotate(360deg)} }

/* ===== 消息长按菜单 ===== */
.msg-action-menu { position:absolute; background:#3C3C3C; border-radius:8px; padding:4px 0; min-width:120px; box-shadow:0 4px 20px rgba(0,0,0,0.5); z-index:250; display:none; }
.msg-action-menu.show { display:block; animation:fadeIn 0.15s ease; }
.msg-action-item { padding:10px 16px; color:#fff; font-size:15px; cursor:pointer; text-align:center; }
.msg-action-item:active { background:rgba(255,255,255,0.1); }
.msg-action-item.delete { color:#FF3B30; }

/* ===== 记忆弹窗居中 ===== */
#memoryEditModal.show, #manualMemoryModal.show, #memorySummaryModal.show { align-items:center; justify-content:center; }

/* ===== 大头像选择器 ===== */
.wx-create-avatar-picker img { width:100%; height:100%; border-radius:12px; object-fit:cover; }
.wx-create-avatar-picker.has-image { border:none; }

/* ===== 微信搜索栏（深色） ===== */
.wx-search { display:flex; align-items:center; justify-content:center; gap:5px; background:#1C1C1E; border-radius:8px; padding:8px 12px; margin:8px 12px; flex-shrink:0; cursor:pointer; }
.wx-search svg { width:14px; height:14px; fill:#8E8E93; }
.wx-search span { font-size:14px; color:#8E8E93; }

/* ===== 微信聊天列表（深色） ===== */
.chat-list { flex:1; overflow-y:auto; background:#000; }
.chat-list::-webkit-scrollbar { display:none; }
.chat-item { display:flex; align-items:center; gap:12px; padding:10px 12px; cursor:pointer; background:#000; border-bottom:0.5px solid #1C1C1E; transition:background 0.15s; }
.chat-item:active { background:#1C1C1E; }
/* 置顶会话：整格加深一档，与普通会话区分（深色主列表） */
.chat-item-pinned { background:#1C1C1E; }
.chat-item-pinned:active { background:#2C2C2E; }
.chat-avatar { width:48px; height:48px; border-radius:6px; flex-shrink:0; display:grid; place-items:center; font-size:18px; color:#fff; overflow:hidden; background:#2C2C2E; position:relative; }
.chat-info { flex:1; min-width:0; }
.chat-info-row { display:flex; justify-content:space-between; align-items:center; }
.chat-name { font-size:17px; font-weight:400; color:#fff; }
.chat-preview { font-size:14px; color:#8E8E93; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; flex:1; margin-right:8px; }
.chat-time { font-size:12px; color:#8E8E93; flex-shrink:0; margin-left:8px; }
.chat-badge { min-width:18px; height:18px; background:#FA5151; color:#fff; font-size:11px; border-radius:9px; display:grid; place-items:center; padding:0 5px; flex-shrink:0; font-weight:500; }
.chat-dot { width:8px; height:8px; background:#FA5151; border-radius:50%; flex-shrink:0; }
.chat-muted-icon { flex-shrink:0; display:grid; place-items:center; }

/* ===== 微信底部Tab栏（深色） ===== */
.wx-tabbar { display:flex; background:#000; border-top:0.5px solid #1C1C1E; padding:6px 0 22px; flex-shrink:0; }
.wx-tab { flex:1; display:flex; flex-direction:column; align-items:center; gap:2px; cursor:pointer; position:relative; }
.wx-tab svg { width:25px; height:25px; fill:none; stroke:#8E8E93; stroke-width:1.5; }
.wx-tab.active svg { stroke:#07C160; }
.wx-tab span { font-size:10px; color:#8E8E93; }
.wx-tab.active span { color:#07C160; }
.wx-tab .tab-badge { position:absolute; top:-2px; right:50%; transform:translateX(20px); min-width:16px; height:16px; background:#FA5151; color:#fff; font-size:10px; border-radius:8px; display:grid; place-items:center; padding:0 4px; font-weight:500; }
.wx-tab .tab-dot { position:absolute; top:0; right:50%; transform:translateX(18px); width:6px; height:6px; background:#FA5151; border-radius:50%; }

/* ===== 微信聊天对话（深色） ===== */
.wx-chat-header { display:flex; align-items:center; padding:4px 12px 8px; padding-top:max(4px, env(safe-area-inset-top)); background:#000; flex-shrink:0; z-index:5; }
.wx-back { width:32px; height:32px; display:grid; place-items:center; cursor:pointer; }
.wx-back svg { width:12px; height:20px; }
.wx-back polyline { fill:none; stroke:#fff; stroke-width:2.5; stroke-linecap:round; stroke-linejoin:round; }
.wx-chat-title { flex:1; text-align:center; font-size:17px; font-weight:600; color:#fff; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; padding:0 8px; }
.wx-more { width:32px; height:32px; display:grid; place-items:center; cursor:pointer; }
.wx-more svg { width:22px; height:22px; fill:#fff; }

.chat-view { flex:1; display:flex; flex-direction:column; overflow:hidden; background:#000; position:relative; }
.chat-messages { flex:1; overflow-y:auto; padding:12px 12px 20px; display:flex; flex-direction:column; gap:16px; }
.chat-messages::-webkit-scrollbar { display:none; }
.msg { display:flex; gap:10px; max-width:75%; animation:msgIn 0.3s ease; }
/* 群聊消息列：名字行占列宽左对齐，但气泡按内容自适应宽度（像私信一样长短不一），不再被 flex 列拉成统一等宽；表情包外框也贴合贴纸本身 */
.gc-msg-col { display:flex; flex-direction:column; align-items:flex-start; }
.gc-msg-col > .msg-bubble { width:fit-content; width:-moz-fit-content; max-width:100%; box-sizing:border-box; }
@keyframes msgIn { from{opacity:0; transform:translateY(6px)} to{opacity:1; transform:translateY(0)} }
.msg.self { align-self:flex-end; flex-direction:row-reverse; }
.msg-avatar { width:40px; height:40px; border-radius:6px; flex-shrink:0; display:grid; place-items:center; font-size:16px; color:#fff; overflow:hidden; background:#2C2C2E; }
.msg.self .msg-avatar { background:#3A3A3C; }
.msg-bubble { padding:9px 12px; border-radius:4px; font-size:16px; line-height:1.35; word-break:break-word; position:relative; }
.msg:not(.self) .msg-bubble { background:#2C2C2E; color:#fff; }
.msg:not(.self) .msg-bubble::before { content:''; position:absolute; left:-6px; top:12px; border-width:6px 6px 6px 0; border-style:solid; border-color:transparent #2C2C2E transparent transparent; }
.msg.self .msg-bubble { background:#95EC69; color:#111; }
.msg.self .msg-bubble::after { content:''; position:absolute; right:-6px; top:12px; border-width:6px 0 6px 6px; border-style:solid; border-color:transparent transparent transparent #95EC69; }
.msg-sticker { background:transparent !important; font-size:40px; padding:4px; }
.msg-sticker::before { display:none !important; }
/* 行为对象卡片 */
.msg-photo-card { display:flex; align-items:center; gap:8px; background:rgba(255,255,255,0.08); border-radius:12px; padding:10px 14px; margin:2px 0; min-width:160px; }
.msg-photo-icon { font-size:24px; flex-shrink:0; }
.msg-photo-desc { font-size:13px; color:#5E526A; line-height:1.4; }
/* 收款确认卡片（居中灰色小卡片） */
.msg-receipt { text-align:center; margin:4px auto; padding:6px 16px; font-size:12px; color:#999; background:rgba(0,0,0,0.05); border-radius:8px; max-width:260px; line-height:1.5; }
.msg-receipt .receipt-icon { font-size:14px; margin-right:4px; }
.msg-receipt .receipt-amount { font-weight:600; color:#666; }
.msg-transfer-card { display:flex; align-items:center; gap:8px; background:rgba(158,196,176,0.12); border-radius:12px; padding:10px 14px; margin:2px 0; border:1px solid rgba(158,196,176,0.2); }
.msg-transfer-icon { font-size:20px; flex-shrink:0; }
.msg-transfer-amount { font-size:16px; font-weight:600; color:#9EC4B0; }
.msg-transfer-note { font-size:11px; color:#B0A4AE; margin-left:auto; }
.msg-location-card { display:flex; align-items:center; gap:8px; background:rgba(212,160,176,0.1); border-radius:12px; padding:10px 14px; margin:2px 0; border:1px solid rgba(212,160,176,0.15); }
.msg-location-icon { font-size:20px; flex-shrink:0; }
.msg-location-name { font-size:13px; font-weight:500; color:#5E526A; }
.msg-location-addr { font-size:11px; color:#B0A4AE; margin-top:2px; }
/* 地图位置分享卡片 */
.msg-location-share { padding:0 !important; overflow:hidden; border-radius:12px; cursor:pointer; min-width:200px; }
.msg-loc-share-preview { display:flex; align-items:center; gap:10px; padding:12px 14px; background:linear-gradient(135deg,rgba(10,132,255,0.08),rgba(52,199,89,0.06)); }
.msg-loc-share-icon { font-size:24px; flex-shrink:0; }
.msg-loc-share-info { flex:1; min-width:0; }
.msg-loc-share-name { font-size:14px; font-weight:500; color:#fff; margin-bottom:2px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.msg-loc-share-coord { font-size:11px; color:#8E8E93; }
.msg-loc-share-footer { font-size:11px; color:#8E8E93; padding:6px 14px; background:rgba(255,255,255,0.03); border-top:0.5px solid rgba(255,255,255,0.06); }
.msg-narrative { line-height:1.6; font-size:15px; }
.sticker-emoji { font-size:1.3em; }
.msg-time { font-size:11px; color:#8E8E93; text-align:center; margin:4px 0; }
.msg-load-more { font-size:13px; color:#5B6B8A; text-align:center; padding:10px 16px; margin:8px 0; background:rgba(91,107,138,0.08); border-radius:12px; cursor:pointer; transition:background 0.2s; }
.msg-load-more:active { background:rgba(91,107,138,0.16); }
.typing-indicator { display:flex; gap:4px; padding:12px; }
.typing-indicator span { width:7px; height:7px; border-radius:50%; background:#8E8E93; animation:typingBounce 1.4s infinite; }
.typing-indicator span:nth-child(2){animation-delay:0.2s}
.typing-indicator span:nth-child(3){animation-delay:0.4s}
@keyframes typingBounce { 0%,60%,100%{transform:translateY(0)} 30%{transform:translateY(-5px)} }

/* ===== 微信输入栏（深色） ===== */
.chat-input-bar { display:flex; align-items:flex-end; gap:7px; padding:6px 8px 8px; background:#000; border-top:0.5px solid #1C1C1E; flex-shrink:0; }
.wx-ic-btn { width:32px; height:32px; display:grid; place-items:center; cursor:pointer; flex-shrink:0; }
.wx-ic-btn svg { width:22px; height:22px; fill:none; stroke:#fff; stroke-width:1.5; }
.chat-input { flex:1; min-height:36px; max-height:100px; padding:8px 10px; border-radius:4px; border:0.5px solid #2C2C2E; background:#1C1C1E; font-size:16px; color:#fff; outline:none; resize:none; font-family:inherit; line-height:1.3; }
.chat-input::placeholder { color:#8E8E93; }
.chat-input:focus { border-color:#3A3A3C; }
.chat-send-btn { padding:6px 14px; border-radius:4px; border:none; background:#07C160; font-size:15px; color:#fff; cursor:pointer; flex-shrink:0; display:none; font-family:inherit; }
.chat-send-btn:active { opacity:0.85; }
.chat-send-btn.show { display:block; }
.wx-plus-btn { width:32px; height:32px; display:grid; place-items:center; cursor:pointer; flex-shrink:0; }
.wx-plus-btn svg { width:24px; height:24px; fill:none; stroke:#fff; stroke-width:1.5; }
.wx-plus-btn.hide { display:none; }

/* ===== 线下模式·小熊奶油风 ===== */
#view-chat.offline-mode { background:#FAF3E8 !important; }
/* 线下聊天区：默认淡黄用 !important 压过日间 .theme-light 的近白底；自定义壁纸走 --offline-wp-img 变量 */
#view-chat.offline-mode .chat-view { background-color:#FAF3E8 !important; background-image:var(--offline-wp-img, none) !important; background-size:cover !important; background-position:center center !important; background-repeat:no-repeat !important; }
#view-chat.offline-mode .wx-chat-header {
  background:linear-gradient(180deg, #F5E6D3 0%, #FAF3E8 100%);
  border-bottom:1px solid rgba(180,160,130,0.12);
  padding:6px 12px 8px;
}
#view-chat.offline-mode .wx-chat-header .wx-back polyline { stroke:#8B6F47; }
#view-chat.offline-mode .wx-chat-title {
  color:#6B4F2E; font-family:'Georgia','Noto Serif SC',serif;
  font-size:16px; font-weight:600; letter-spacing:0.5px;
}
#view-chat.offline-mode .wx-reply-icon svg { fill:#C49A6C; }
#view-chat.offline-mode .wx-reply-icon { opacity:0.8; }
#view-chat.offline-mode .wx-heart-btn svg { fill:#D4A09A; }
#view-chat.offline-mode .wx-more svg { fill:#8B6F47; }
/* 线下设置齿轮按钮 */
.offline-settings-btn {
  width:32px; height:32px; display:grid; place-items:center; cursor:pointer;
}
.offline-settings-btn svg { width:20px; height:20px; fill:#8B6F47; transition:transform 0.3s; }
.offline-settings-btn:active svg { transform:rotate(90deg); }

/* 线下模式聊天区域（默认淡黄与壁纸兜底规则见上） */
#view-chat.offline-mode .chat-messages {
  background:transparent; padding:20px 18px 40px;
  gap:0; max-width:420px; margin:0 auto;
}
/* 小说段落样式 */
.novel-paragraph {
  font-family:'Georgia','Noto Serif SC',serif;
  font-size:15.5px; line-height:2.0; color:#5D4E3A;
  margin-bottom:16px; text-indent:2em; word-break:break-word;
}
.novel-paragraph.user-para { color:#7A6048; }
.novel-paragraph .dialogue { color:#6B4F2E; }
.novel-chapter-title {
  font-family:'Georgia','Noto Serif SC',serif;
  font-size:13px; color:#B09880; text-align:center;
  margin:20px 0 14px; letter-spacing:1px; font-weight:400;
}
.novel-divider {
  text-align:center; color:#D4BC9E; font-size:12px;
  margin:18px 0; letter-spacing:3px;
}
/* 线下输入栏 */
#view-chat.offline-mode .chat-input-bar {
  background:#F5EDE0; border-top:1px solid rgba(180,160,130,0.15);
  padding:8px 12px 10px;
}
/* 线下模式仅隐藏语音按钮，保留表情包按钮 */
#view-chat.offline-mode .chat-input-bar .wx-voice-btn { display:none; }
/* 线下模式隐藏右上角三个点 */
#view-chat.offline-mode .wx-more { display:none; }
#view-chat.offline-mode .wx-ic-btn svg { stroke:#8B6F47; }
#view-chat.offline-mode .chat-input {
  background:#FFFCF7; border:1px solid rgba(180,160,130,0.2);
  color:#5D4E3A; font-family:'Georgia','Noto Serif SC',serif;
  border-radius:20px;
}
#view-chat.offline-mode .chat-input::placeholder { color:#C4B49A; }
#view-chat.offline-mode .chat-input:focus { border-color:#D4A574; }
#view-chat.offline-mode .chat-send-btn {
  background:#D4A574; border-radius:20px; color:#fff;
}
#view-chat.offline-mode .wx-plus-btn svg { stroke:#8B6F47; }
/* 打字指示器 */
#view-chat.offline-mode .typing-indicator span { background:#D4A574; }
/* 线下角色列表 - 奶油风 */
#view-offline { background:#FAF3E8 !important; }
#view-offline .wx-nav {
  background:linear-gradient(180deg, #F5E6D3 0%, #FAF3E8 100%);
  border-bottom:1px solid rgba(180,160,130,0.12);
}
#view-offline .wx-nav-title {
  color:#6B4F2E; font-family:'Georgia','Noto Serif SC',serif;
  font-size:17px; font-weight:600;
}
#view-offline .wx-back polyline { stroke:#8B6F47; }
#view-offline .wx-nav-btn svg { fill:#8B6F47; }
#view-offline .chat-list { background:#FAF3E8; }
#view-offline .chat-item {
  background:#FFFCF7; border-bottom:1px solid rgba(180,160,130,0.08);
  margin:0 12px; border-radius:0; padding:12px 8px;
}
#view-offline .chat-item:active { background:#F5EDE0; }
#view-offline .chat-item-pinned { background:#F1E6D2; }
#view-offline .chat-item-pinned:active { background:#EADCC4; }
#view-offline .chat-name { color:#6B4F2E; font-family:'Georgia','Noto Serif SC',serif; }
#view-offline .chat-time { color:#C4B49A; }
#view-offline .chat-preview { color:#B09880; font-size:13px; }
#view-offline .chat-avatar { border-radius:16px; }

/* 线下设置弹窗 - 小熊奶油风 */
.offline-settings-overlay {
  position:fixed; inset:0; background:rgba(93,78,58,0.3);
  z-index:200; display:none; align-items:flex-end; justify-content:center;
}
.offline-settings-overlay.show { display:flex; }
.offline-settings-panel {
  width:100%; max-width:400px; max-height:75vh; overflow-y:auto;
  background:#FFFCF7; border-radius:24px 24px 0 0;
  padding:20px 18px calc(20px + env(safe-area-inset-bottom));
  animation:slideUp 0.3s ease;
}
@keyframes slideUp { from{transform:translateY(100%)} to{transform:translateY(0)} }
.offline-settings-handle {
  width:36px; height:4px; border-radius:2px; background:#E0D0BC;
  margin:0 auto 16px;
}
.offline-settings-title {
  font-family:'Georgia','Noto Serif SC',serif; font-size:17px;
  color:#6B4F2E; text-align:center; margin-bottom:16px; font-weight:600;
}
.offline-setting-group { margin-bottom:18px; }
.offline-setting-label {
  font-size:13px; color:#8B6F47; margin-bottom:8px;
  display:flex; align-items:center; gap:6px;
}
.offline-setting-input {
  width:100%; padding:10px 14px; border-radius:14px;
  border:1px solid rgba(180,160,130,0.2); background:#FAF3E8;
  font-size:14px; color:#5D4E3A; outline:none;
  font-family:'Georgia','Noto Serif SC',serif;
}
.offline-setting-input:focus { border-color:#D4A574; }
.offline-word-range {
  display:flex; gap:8px; align-items:center;
}
.offline-word-range input {
  flex:1; text-align:center; border-radius:14px;
  border:1px solid rgba(180,160,130,0.2); background:#FAF3E8;
  padding:10px 8px; font-size:14px; color:#5D4E3A; outline:none;
  font-family:'Georgia','Noto Serif SC',serif;
}
.offline-word-range input:focus { border-color:#D4A574; }
.offline-word-range span { color:#C4B49A; font-size:13px; }
.offline-style-tags {
  display:flex; flex-wrap:wrap; gap:8px;
}
.offline-style-tag {
  padding:7px 14px; border-radius:18px; font-size:13px;
  border:1px solid rgba(180,160,130,0.2); background:#FAF3E8;
  color:#8B6F47; cursor:pointer; transition:all 0.2s;
  font-family:'Georgia','Noto Serif SC',serif;
}
.offline-style-tag:active { transform:scale(0.95); }
.offline-style-tag.active {
  background:#D4A574; color:#fff; border-color:#D4A574;
}
.offline-settings-close {
  width:100%; padding:12px; border-radius:16px; border:none;
  background:#D4A574; color:#fff; font-size:15px; cursor:pointer;
  font-family:'Georgia','Noto Serif SC',serif; margin-top:8px;
}
.offline-settings-close:active { opacity:0.85; }
.offline-style-add-btn {
  padding:7px 14px; border-radius:18px; font-size:13px;
  border:1px dashed #D4A574; background:transparent;
  color:#D4A574; cursor:pointer; transition:all 0.2s;
  font-family:'Georgia','Noto Serif SC',serif;
}
.offline-style-add-btn:active { transform:scale(0.95); }
/* 线下模式：心理活动样式 */
.novel-paragraph .offline-psychology {
  color:#A89B85; font-style:italic;
  border-bottom:1px dotted rgba(180,160,130,0.25);
  padding-bottom:1px;
}
/* 线下模式：对话引号样式 */
.novel-paragraph .offline-quote-box {
  display:inline;
  background:rgba(180,160,130,0.1);
  padding:2px 6px;
  border-radius:6px;
  margin:0 1px;
}
/* 自定义文风列表项 */
.custom-style-item {
  display:flex; align-items:center; justify-content:space-between;
  padding:8px 12px; border-radius:12px; margin-bottom:6px;
  background:rgba(180,160,130,0.08); border:1px solid rgba(180,160,130,0.12);
  font-size:13px; color:#5D4E3A;
  font-family:'Georgia','Noto Serif SC',serif;
}
.custom-style-item.active {
  background:rgba(212,165,116,0.15); border-color:#D4A574;
}
.custom-style-item-actions {
  display:flex; gap:6px;
}
.custom-style-item-actions span {
  cursor:pointer; font-size:14px; padding:2px 6px;
  border-radius:8px; transition:background 0.2s;
}
.custom-style-item-actions span:active { background:rgba(0,0,0,0.05); }

/* ===== 通讯录页面（深色） ===== */
.wx-contacts-list { background:#000; }
.wx-contact-section { margin-bottom:8px; background:#000; }
.wx-contact-item { display:flex; align-items:center; gap:12px; padding:10px 16px; cursor:pointer; border-bottom:0.5px solid #1C1C1E; }
.wx-contact-item:active { background:#1C1C1E; }
.wx-contact-item .chat-avatar { width:40px; height:40px; border-radius:6px; font-size:16px; }
.wx-contact-name { font-size:16px; color:#fff; }
.wx-contact-header { padding:4px 16px; font-size:13px; color:#8E8E93; background:#000; }
.wx-letter-index { position:absolute; right:2px; top:50%; transform:translateY(-50%); display:flex; flex-direction:column; align-items:center; gap:1px; z-index:10; }
.wx-letter-index span { font-size:9px; color:#8E8E93; line-height:1.2; cursor:pointer; }
.wx-letter-index span.active { color:#07C160; font-weight:600; }

/* ===== 发现页面（深色） ===== */
.wx-discover-group { margin:8px 0; background:#1C1C1E; border-radius:0; overflow:hidden; }
.wx-discover-group:first-child { margin-top:0; }
.wx-discover-item { display:flex; align-items:center; gap:12px; padding:12px 16px; cursor:pointer; border-bottom:0.5px solid #2C2C2E; }
.wx-discover-item:last-child { border-bottom:none; }
.wx-discover-item:active { background:#2C2C2E; }
.wx-d-icon { width:28px; height:28px; border-radius:7px; display:grid; place-items:center; flex-shrink:0; font-size:16px; }
.wx-d-label { flex:1; font-size:16px; color:#fff; }
.wx-d-extra { font-size:13px; color:#8E8E93; max-width:140px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.wx-d-arrow { width:8px; height:8px; border-right:1.5px solid #48484A; border-bottom:1.5px solid #48484A; transform:rotate(-45deg); flex-shrink:0; }
.wx-d-red-dot { width:7px; height:7px; background:#FA5151; border-radius:50%; flex-shrink:0; }
.wx-d-avatar-sm { width:20px; height:20px; border-radius:4px; overflow:hidden; flex-shrink:0; }

/* ===== 我页面（深色） ===== */
.wx-me-header { display:flex; align-items:center; gap:16px; padding:20px 16px; padding-top:max(20px, env(safe-area-inset-top)); background:#000; cursor:pointer; border-bottom:0.5px solid #1C1C1E; }
.wx-me-avatar { width:60px; height:60px; border-radius:7px; overflow:hidden; flex-shrink:0; background:#2C2C2E; display:grid; place-items:center; font-size:28px; }
.wx-me-info { flex:1; min-width:0; }
.wx-me-name { font-size:20px; font-weight:600; color:#fff; }
.wx-me-id { font-size:13px; color:#8E8E93; margin-top:2px; }
.wx-me-qr { width:24px; height:24px; flex-shrink:0; }
.wx-me-qr svg { width:20px; height:20px; fill:#8E8E93; }
.wx-me-status-row { display:flex; align-items:center; gap:12px; padding:12px 16px; background:#000; border-bottom:0.5px solid #1C1C1E; }
.wx-me-status-btn { padding:4px 12px; border-radius:16px; border:1px solid #3A3A3C; font-size:13px; color:#8E8E93; cursor:pointer; }
.wx-me-friends { display:flex; align-items:center; gap:6px; margin-left:auto; }
.wx-me-friends-avatars { display:flex; }
.wx-me-friends-avatars .av { width:22px; height:22px; border-radius:50%; border:1.5px solid #000; margin-left:-6px; background:#3A3A3C; }
.wx-me-friends-avatars .av:first-child { margin-left:0; }
.wx-me-friends-text { font-size:13px; color:#8E8E93; }
.wx-me-menu-group { margin:8px 0; background:#1C1C1E; }
.wx-me-menu-item { display:flex; align-items:center; gap:12px; padding:13px 16px; cursor:pointer; border-bottom:0.5px solid #2C2C2E; }
.wx-me-menu-item:last-child { border-bottom:none; }
.wx-me-menu-item:active { background:#2C2C2E; }
.wx-m-icon { width:28px; height:28px; border-radius:7px; display:grid; place-items:center; flex-shrink:0; font-size:15px; }
.wx-m-label { flex:1; font-size:16px; color:#fff; }
.wx-m-extra { font-size:13px; color:#8E8E93; max-width:160px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }

/* ===== 朋友圈页面 ===== */
.wx-moments-cover { position:relative; width:100%; height:240px; background:#1C1C1E; overflow:visible; flex-shrink:0; }
.wx-moments-cover img { width:100%; height:100%; object-fit:cover; }
.wx-moments-cover .wx-back-white { position:absolute; top:max(4px, env(safe-area-inset-top)); left:12px; width:32px; height:32px; display:grid; place-items:center; z-index:20; }
.wx-moments-cover .wx-back-white svg { width:12px; height:20px; }
.wx-moments-cover .wx-back-white polyline { fill:none; stroke:#fff; stroke-width:2.5; stroke-linecap:round; stroke-linejoin:round; }
.wx-moments-cover .camera-btn { position:absolute; top:max(4px, env(safe-area-inset-top)); right:12px; width:44px; height:44px; display:grid; place-items:center; z-index:20; cursor:pointer; }
.wx-moments-cover .camera-btn svg { width:24px; height:24px; fill:#fff; }
.wx-moments-avatar { position:absolute; right:16px; bottom:-24px; width:68px; height:68px; border-radius:7px; border:2px solid #000; overflow:hidden; background:#2C2C2E; z-index:15; }
.wx-moments-name { position:absolute; right:92px; bottom:0; font-size:16px; font-weight:600; color:#fff; text-shadow:0 1px 3px rgba(0,0,0,0.5); z-index:15; }
.wx-moments-list { flex:1; overflow-y:auto; background:#000; padding-top:36px; }
.wx-moments-list::-webkit-scrollbar { display:none; }
.wx-moment { display:flex; gap:12px; padding:12px 16px 16px; border-bottom:0.5px solid #1C1C1E; }
.wx-moment-avatar { width:42px; height:42px; border-radius:6px; overflow:hidden; flex-shrink:0; background:#2C2C2E; }
.wx-moment-body { flex:1; min-width:0; }
.wx-moment-name { font-size:15px; font-weight:600; color:#fff; margin-bottom:4px; }
.wx-moment-text { font-size:15px; color:#fff; line-height:1.4; word-break:break-word; }
.wx-moment-img { margin-top:8px; width:100%; max-height:300px; object-fit:cover; border-radius:4px; }
.wx-moment-meta { display:flex; align-items:center; justify-content:space-between; margin-top:8px; }
.wx-moment-time { font-size:12px; color:#fff; opacity:0.6; }
.wx-moment-actions { padding:2px 8px; border-radius:4px; background:#2C2C2E; cursor:pointer; }
.wx-moment-actions span { font-size:16px; color:#8E8E93; letter-spacing:1px; }
.wx-moment-comments { margin-top:8px; background:#1C1C1E; border-radius:4px; padding:8px 12px; }
.wx-moment-comment { font-size:14px; color:#fff; line-height:1.5; display:flex; align-items:flex-start; justify-content:space-between; gap:4px; }
.wx-moment-comment .cname { color:#7A6FE0; font-weight:500; cursor:pointer; }
.wx-moment-comment .creply { color:#fff; }
.wx-moment-comment .c-text { flex:1; }
.wx-moment-comment .c-actions { display:flex; gap:8px; flex-shrink:0; opacity:0.6; }
.wx-moment-comment .c-actions span { font-size:12px; cursor:pointer; color:#8E8E93; }
.wx-moment-comment .c-actions span:hover { opacity:1; color:#7A6FE0; }
.wx-moment-comment .c-tag { font-size:10px; color:#FF9500; margin-left:4px; }
.wx-moment-likes { display:flex; align-items:center; gap:4px; padding:6px 12px; margin-bottom:2px; }
.wx-moment-likes .like-icon { font-size:14px; color:#FF3B30; }
.wx-moment-likes .like-names { font-size:13px; color:#fff; }
.wx-moment-like-btn { display:flex; align-items:center; gap:3px; cursor:pointer; }
.wx-moment-like-btn .heart { font-size:16px; color:#FF3B30; }
.wx-moment-like-btn.liked .heart { color:#FF3B30; }
.wx-moment-action-menu { position:absolute; background:#3C3C3C; border-radius:8px; padding:4px 0; min-width:90px; box-shadow:0 4px 20px rgba(0,0,0,0.5); z-index:250; display:none; }
.wx-moment-action-menu.show { display:block; }
.wx-moment-action-menu .item { padding:8px 16px; color:#fff; font-size:14px; cursor:pointer; text-align:center; }
.wx-moment-action-menu .item:active { background:rgba(255,255,255,0.1); }
.wx-moment-comment-input-bar { position:absolute; bottom:0; left:0; right:0; background:#2C2C2E; border-top:0.5px solid #3A3A3C; padding:8px 12px; display:flex; gap:8px; align-items:center; z-index:200; }
.wx-moment-comment-input-bar input { flex:1; background:#1C1C1E; border:none; border-radius:6px; padding:8px 12px; color:#fff; font-size:14px; outline:none; }
.wx-moment-comment-input-bar button { background:#07C160; color:#fff; border:none; border-radius:6px; padding:6px 14px; font-size:14px; cursor:pointer; white-space:nowrap; }
.wx-moment-comment-input-bar .cancel-btn { background:#3C3C3C; }
.wx-moment-role-picker { position:absolute; bottom:0; left:0; right:0; background:#1C1C1E; border-radius:12px 12px 0 0; padding:16px; z-index:300; max-height:60%; overflow-y:auto; }
.wx-moment-role-picker-title { font-size:16px; color:#fff; font-weight:600; margin-bottom:12px; text-align:center; }
.wx-moment-role-picker-item { display:flex; align-items:center; gap:10px; padding:10px 12px; border-radius:8px; cursor:pointer; }
.wx-moment-role-picker-item:active { background:rgba(255,255,255,0.1); }
.wx-moment-role-picker-item .rp-avatar { width:36px; height:36px; border-radius:6px; display:grid; place-items:center; font-size:18px; color:#fff; flex-shrink:0; }
.wx-moment-role-picker-item .rp-name { font-size:15px; color:#fff; }
.wx-moment-role-picker-item .rp-type { font-size:11px; color:#8E8E93; }
.wx-moment-role-picker-close { text-align:center; padding:12px; color:#8E8E93; font-size:14px; cursor:pointer; border-top:0.5px solid #3A3A3C; margin-top:8px; }

/* ===== Home Indicator ===== */
.home-indicator { position:absolute; bottom:2px; left:50%; transform:translateX(-50%); width:134px; height:5px; border-radius:3px; background:rgba(255,255,255,0.3); z-index:50; cursor:pointer; }

/* ===== 设置页面 ===== */
.settings-view { flex:1; overflow-y:auto; }
.settings-view::-webkit-scrollbar { display:none; }
/* 设置页不透明：实心背景，壁纸不透出 */
#view-settings { background:#FAF3EE; }
#view-settings .app-header { background:#FAF3EE; backdrop-filter:none; -webkit-backdrop-filter:none; border-bottom:1px solid rgba(180,160,170,0.12); }
#view-settings .settings-group, #view-settings .api-status-bar { background:#FFFFFF; backdrop-filter:none; -webkit-backdrop-filter:none; border:1px solid rgba(180,160,170,0.12); }
.settings-group { margin:12px 14px; background:rgba(255,255,255,0.88); backdrop-filter:blur(24px) saturate(1.2); -webkit-backdrop-filter:blur(24px) saturate(1.2); border-radius:20px; border:1px solid rgba(255,255,255,0.6); overflow:hidden; }
.settings-group-title { font-size:11px; color:#B0A4AE; font-weight:500; padding:0 18px; margin-top:16px; margin-bottom:6px; }
.settings-item { display:flex; align-items:center; padding:14px 18px; cursor:pointer; border-bottom:1px solid rgba(180,160,170,0.06); transition:background 0.2s; }
.settings-item:last-child { border-bottom:none; }
.settings-item:active { background:rgba(232,197,208,0.06); }
.settings-icon { width:32px; height:32px; border-radius:10px; display:grid; place-items:center; font-size:16px; margin-right:12px; flex-shrink:0; }
.settings-label { flex:1; font-size:13px; color:#7E728A; font-weight:400; }
.settings-value { font-size:12px; color:#B0A4AE; margin-right:6px; max-width:120px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.settings-arrow { width:8px; height:8px; border-right:2px solid #C0B4BE; border-bottom:2px solid #C0B4BE; transform:rotate(-45deg); flex-shrink:0; }
.settings-toggle { width:44px; height:26px; border-radius:13px; background:rgba(180,160,170,0.2); position:relative; cursor:pointer; transition:background 0.3s; flex-shrink:0; }
.settings-toggle.on { background:rgba(158,196,176,0.5); }
.settings-toggle::after { content:''; position:absolute; top:2px; left:2px; width:22px; height:22px; border-radius:50%; background:#fff; box-shadow:0 1px 4px rgba(0,0,0,0.1); transition:transform 0.3s; }
.settings-toggle.on::after { transform:translateX(18px); }

/* ===== 模式选择器 ===== */
.mode-select { display:flex; align-items:center; gap:12px; padding:14px; border-radius:16px; background:rgba(255,255,255,0.4); border:1.5px solid rgba(180,160,170,0.12); cursor:pointer; margin-bottom:8px; transition:border 0.2s; }
.mode-select:active { background:rgba(255,255,255,0.5); }
.mode-select.selected { border-color:rgba(158,196,176,0.5); background:rgba(200,230,213,0.15); }
.mode-radio { width:22px; height:22px; border-radius:50%; border:2px solid #C0B4BE; display:grid; place-items:center; flex-shrink:0; transition:border 0.2s; }
.mode-select.selected .mode-radio { border-color:#9EC4B0; }
.mode-radio-dot { width:12px; height:12px; border-radius:50%; background:#9EC4B0; transform:scale(0); transition:transform 0.2s; }
.mode-select.selected .mode-radio-dot { transform:scale(1); }

/* ===== API状态 ===== */
.api-status-bar { display:flex; align-items:center; gap:8px; background:rgba(255,255,255,0.88); backdrop-filter:blur(20px) saturate(1.2); -webkit-backdrop-filter:blur(20px) saturate(1.2); border-radius:14px; padding:6px 12px; border:1px solid rgba(255,255,255,0.6); margin:0 2px 6px; }
.api-dot { width:7px; height:7px; border-radius:50%; background:#D4A0B0; box-shadow:0 0 0 3px rgba(212,160,176,0.12); transition:all 0.3s; }
.api-dot.connected { background:#9EC4B0; box-shadow:0 0 0 3px rgba(158,196,176,0.12); }
.api-dot.loading { background:#E8C55D; animation:pulse 1s infinite; }

/* ===== 弹窗 ===== */
.modal-overlay { position:absolute; inset:0; background:rgba(60,50,60,0.35); backdrop-filter:blur(8px); z-index:100; display:none; align-items:flex-end; border-radius:42px; }
.modal-overlay.show { display:flex; animation:fadeIn 0.2s ease; }
.modal-overlay.closing { animation:fadeOut 0.2s ease forwards; }
@keyframes fadeIn { from{opacity:0} to{opacity:1} }
@keyframes fadeOut { from{opacity:1} to{opacity:0} }
.modal-sheet { width:100%; background:rgba(255,255,255,0.95); backdrop-filter:blur(32px) saturate(1.3); -webkit-backdrop-filter:blur(32px) saturate(1.3); border-radius:28px 28px 42px 42px; padding:20px 18px 24px; border:1px solid rgba(255,255,255,0.7); animation:slideUp 0.3s cubic-bezier(0.25,0.46,0.45,0.94); max-height:88%; overflow-y:auto; position:relative; }
.modal-overlay.closing .modal-sheet { animation:slideDown 0.2s ease forwards; }
.modal-sheet::-webkit-scrollbar { display:none; }
@keyframes slideUp { from{transform:translateY(100%)} to{transform:translateY(0)} }
@keyframes slideDown { from{transform:translateY(0)} to{transform:translateY(100%)} }
.modal-handle { width:36px; height:4px; border-radius:2px; background:rgba(180,160,170,0.25); margin:0 auto 16px; }
.modal-title { font-size:17px; font-weight:600; color:#7E728A; margin-bottom:16px; text-align:center; }
.modal-close { position:absolute; top:16px; right:18px; width:28px; height:28px; border-radius:50%; background:rgba(180,160,170,0.1); display:grid; place-items:center; cursor:pointer; font-size:14px; color:#B0A4AE; z-index:10; }

/* ===== 深色弹窗（微信风格） ===== */
.modal-content { width:100%; background:#1C1C1E; border-radius:16px; padding:16px; animation:slideUp 0.3s cubic-bezier(0.25,0.46,0.45,0.94); max-width:320px; margin:0 auto; position:relative; z-index:1; }
.modal-overlay.closing .modal-content { animation:slideDown 0.2s ease forwards; }
.modal-header { display:flex; align-items:center; justify-content:space-between; padding-bottom:12px; margin-bottom:4px; border-bottom:0.5px solid rgba(255,255,255,0.1); }
.modal-header span { font-size:17px; font-weight:600; color:#fff; }
.modal-header .modal-close { position:static; background:transparent; color:#8E8E93; font-size:22px; }
#editProfileModal.show, #walletEditModal.show { align-items:center; justify-content:center; }

/* ===== 表单 ===== */
.form-group { margin-bottom:14px; }
.form-label { font-size:11px; color:#A0949E; font-weight:500; margin-bottom:5px; display:flex; align-items:center; justify-content:space-between; }
.form-input { width:100%; padding:10px 14px; border-radius:14px; border:1px solid rgba(180,160,170,0.15); background:rgba(255,255,255,0.5); font-size:13px; color:#5E526A; outline:none; font-family:inherit; transition:border 0.2s; }
.form-input:focus { border-color:rgba(232,197,208,0.4); background:rgba(255,255,255,0.6); }
.form-input::placeholder { color:#C0B4BE; }
.form-textarea { min-height:80px; resize:vertical; line-height:1.5; }
.form-code { font-family:'SF Mono','Monaco','Menlo',monospace; font-size:11px; min-height:160px; line-height:1.6; tab-size:2; }
.form-hint { font-size:10px; color:#C0B4BE; margin-top:4px; line-height:1.5; }
.form-select { width:100%; padding:10px 14px; border-radius:14px; border:1px solid rgba(180,160,170,0.15); background:rgba(255,255,255,0.5); font-size:13px; color:#5E526A; outline:none; font-family:inherit; cursor:pointer; appearance:none; -webkit-appearance:none; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='%23B0A4AE'%3E%3Cpath d='M7 10l5 5 5-5z'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-position:right 12px center; padding-right:36px; }

.btn-primary { width:100%; padding:12px; border-radius:16px; border:none; background:linear-gradient(135deg,rgba(232,197,208,0.4),rgba(212,181,197,0.3)); font-size:14px; font-weight:500; color:#A07E92; cursor:pointer; font-family:inherit; transition:transform 0.2s; margin-top:8px; border:1px solid rgba(255,255,255,0.3); }
.btn-primary:active { transform:scale(0.97); }
.btn-primary:disabled { opacity:0.5; }
.btn-secondary { width:100%; padding:12px; border-radius:16px; border:1px solid rgba(180,160,170,0.15); background:rgba(255,255,255,0.4); font-size:14px; color:#8A7E85; cursor:pointer; font-family:inherit; margin-top:8px; }
.btn-mint { background:linear-gradient(135deg,rgba(200,230,213,0.4),rgba(190,225,205,0.3)); color:#7AAA92; }
.btn-danger { background:linear-gradient(135deg,rgba(220,160,170,0.3),rgba(210,150,165,0.2)); color:#C08090; }
.btn-sm { padding:7px 14px; font-size:12px; width:auto; margin:0; border-radius:12px; }

/* ===== 温度滑块 ===== */
.slider-container { padding:4px 0; }
.slider-row { display:flex; align-items:center; gap:12px; }
.slider { flex:1; -webkit-appearance:none; appearance:none; height:6px; border-radius:3px; background:rgba(180,160,170,0.2); outline:none; }
.slider::-webkit-slider-thumb { -webkit-appearance:none; appearance:none; width:22px; height:22px; border-radius:50%; background:linear-gradient(135deg,rgba(232,197,208,0.6),rgba(212,181,197,0.4)); cursor:pointer; border:2px solid #fff; box-shadow:0 2px 6px rgba(180,160,170,0.2); }
.slider::-moz-range-thumb { width:22px; height:22px; border-radius:50%; background:linear-gradient(135deg,rgba(232,197,208,0.6),rgba(212,181,197,0.4)); cursor:pointer; border:2px solid #fff; box-shadow:0 2px 6px rgba(180,160,170,0.2); }
.slider-value { font-size:14px; font-weight:600; color:#7E728A; min-width:36px; text-align:center; font-family:monospace; }
.slider-marks { display:flex; justify-content:space-between; font-size:9px; color:#C0B4BE; margin-top:6px; padding:0 2px; }

/* ===== 预设标签 ===== */
.preset-tabs { display:flex; gap:6px; overflow-x:auto; padding-bottom:8px; margin-bottom:10px; }
.preset-tabs::-webkit-scrollbar { display:none; }
.preset-tab { padding:6px 14px; border-radius:14px; font-size:12px; color:#8A7E85; background:rgba(255,255,255,0.4); border:1px solid rgba(180,160,170,0.1); cursor:pointer; white-space:nowrap; flex-shrink:0; transition:all 0.2s; display:flex; align-items:center; gap:4px; }
.preset-tab.active { background:linear-gradient(135deg,rgba(232,197,208,0.35),rgba(212,181,197,0.2)); color:#A07E92; border-color:rgba(232,197,208,0.4); }
.preset-tab .del { width:16px; height:16px; border-radius:50%; display:grid; place-items:center; font-size:10px; color:#C0B4BE; margin-left:2px; }
.preset-tab .del:active { background:rgba(220,160,170,0.2); color:#C08090; }
.preset-add { padding:6px 12px; border-radius:14px; font-size:12px; color:#7AAA92; background:rgba(200,230,213,0.2); border:1px dashed rgba(200,230,213,0.4); cursor:pointer; white-space:nowrap; flex-shrink:0; }

/* ===== 模型列表 ===== */
.model-list { max-height:180px; overflow-y:auto; border-radius:14px; border:1px solid rgba(180,160,170,0.1); background:rgba(255,255,255,0.3); }
.model-list::-webkit-scrollbar { width:4px; }
.model-list::-webkit-scrollbar-thumb { background:rgba(180,160,170,0.2); border-radius:2px; }
.model-item { padding:10px 14px; font-size:12px; color:#5E526A; cursor:pointer; border-bottom:1px solid rgba(180,160,170,0.06); display:flex; align-items:center; justify-content:space-between; transition:background 0.2s; }
.model-item:last-child { border-bottom:none; }
.model-item:active { background:rgba(232,197,208,0.08); }
.model-item.selected { background:rgba(232,197,208,0.12); color:#A07E92; font-weight:500; }
.model-item .check { color:#9EC4B0; font-size:14px; }
.model-empty { padding:20px; text-align:center; font-size:11px; color:#C0B4BE; }

/* ===== CSS预览 ===== */
.css-preview { border-radius:14px; border:1px solid rgba(180,160,170,0.1); background:rgba(255,255,255,0.3); padding:12px; margin-top:8px; }
.css-preview-label { font-size:10px; color:#B0A4AE; margin-bottom:8px; }
.bubble-preview { display:flex; flex-direction:column; gap:8px; }
.bubble-preview .msg { max-width:100%; }

/* ===== Toast ===== */
.toast { position:absolute; bottom:100px; left:50%; transform:translateX(-50%); background:rgba(60,50,60,0.8); backdrop-filter:blur(12px); color:#fff; padding:10px 20px; border-radius:16px; font-size:12px; z-index:200; opacity:0; pointer-events:none; transition:opacity 0.3s, transform 0.3s; white-space:nowrap; max-width:300px; overflow:hidden; text-overflow:ellipsis; }
.toast.show { opacity:1; transform:translateX(-50%) translateY(-8px); }

/* ===== 地图APP ===== */
#view-map { background:#1a1a2e; }
.map-header {
  position:absolute; top:0; left:0; right:0; z-index:1000;
  background:rgba(20,18,22,0.92); backdrop-filter:blur(20px);
  padding:10px 12px; padding-top:max(10px, env(safe-area-inset-top)); display:flex; align-items:center; gap:8px;
  border-bottom:0.5px solid rgba(255,255,255,0.08);
}
.map-search-box {
  flex:1; background:rgba(255,255,255,0.08); border:0.5px solid rgba(255,255,255,0.1);
  border-radius:10px; padding:8px 12px; color:#fff; font-size:14px; outline:none;
  font-family:inherit;
}
.map-search-box::placeholder { color:#666; }
.map-search-btn {
  width:36px; height:36px; border-radius:10px; border:none;
  background:#0A84FF; color:#fff; font-size:16px; cursor:pointer;
  display:grid; place-items:center; flex-shrink:0;
}
.map-back-btn {
  width:32px; height:32px; border-radius:8px; border:none;
  background:rgba(255,255,255,0.08); color:#fff; cursor:pointer;
  display:grid; place-items:center; flex-shrink:0;
}
#mapContainer {
  position:absolute; top:52px; left:0; right:0; bottom:0;
  background:#1a1a2e;
}
#mapContainer .leaflet-map { width:100%; height:100%; background:#1a1a2e; }
.map-locate-btn {
  position:absolute; bottom:24px; right:16px; z-index:999;
  width:44px; height:44px; border-radius:50%; border:none;
  background:rgba(20,18,22,0.9); color:#0A84FF; font-size:20px;
  cursor:pointer; display:grid; place-items:center;
  box-shadow:0 2px 12px rgba(0,0,0,0.3); backdrop-filter:blur(10px);
}
.map-search-results {
  position:absolute; top:52px; left:0; right:0; z-index:1001;
  background:rgba(20,18,22,0.95); backdrop-filter:blur(20px);
  max-height:60vh; overflow-y:auto; display:none;
}
.map-search-results.active { display:block; }
.map-search-item {
  padding:12px 16px; border-bottom:0.5px solid rgba(255,255,255,0.06);
  cursor:pointer; display:flex; align-items:flex-start; gap:10px;
}
.map-search-item:active { background:rgba(255,255,255,0.05); }
.map-search-item-icon { font-size:18px; flex-shrink:0; margin-top:2px; }
.map-search-item-info { flex:1; min-width:0; }
.map-search-item-name { color:#fff; font-size:14px; font-weight:500; margin-bottom:2px; }
.map-search-item-addr { color:#8E8E93; font-size:12px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.map-popup-title { font-size:14px; font-weight:600; color:#1a1a2e; margin-bottom:4px; }
.map-popup-addr { font-size:12px; color:#666; margin-bottom:8px; }
.map-popup-btn {
  padding:6px 14px; border:none; border-radius:8px;
  background:#0A84FF; color:#fff; font-size:12px; cursor:pointer;
}
.map-route-info {
  position:absolute; bottom:0; left:0; right:0; z-index:999;
  background:rgba(20,18,22,0.95); backdrop-filter:blur(20px);
  padding:12px 16px; border-top:0.5px solid rgba(255,255,255,0.08);
  display:none;
}
.map-route-info.active { display:block; }
.map-route-title { color:#fff; font-size:14px; font-weight:500; margin-bottom:4px; }
.map-route-detail { color:#8E8E93; font-size:12px; }
.map-route-close {
  position:absolute; top:8px; right:12px; color:#8E8E93;
  font-size:18px; cursor:pointer; background:none; border:none;
}
.leaflet-control-attribution { font-size:8px !important; background:rgba(255,255,255,0.6) !important; }
.leaflet-control-zoom a { background:rgba(20,18,22,0.9) !important; color:#fff !important; border:0.5px solid rgba(255,255,255,0.1) !important; }
.leaflet-bar { border:none !important; }

/* 导航面板 */
.map-nav-btn {
  position:absolute; bottom:80px; right:16px; z-index:999;
  width:44px; height:44px; border-radius:50%; border:none;
  background:#34C759; color:#fff; font-size:20px;
  cursor:pointer; display:grid; place-items:center;
  box-shadow:0 2px 12px rgba(0,0,0,0.3); backdrop-filter:blur(10px);
}
.map-nav-panel {
  position:absolute; top:52px; left:0; right:0; z-index:1003;
  background:rgba(20,18,22,0.97); backdrop-filter:blur(20px);
  padding:12px 16px; border-bottom:0.5px solid rgba(255,255,255,0.08);
  display:none;
}
.map-nav-panel.active { display:block; animation:navSlideDown 0.25s ease; }
@keyframes navSlideDown { from{transform:translateY(-100%);opacity:0} to{transform:translateY(0);opacity:1} }
.map-nav-row { display:flex; align-items:center; gap:8px; margin-bottom:8px; }
.map-nav-label { font-size:13px; color:#8E8E93; width:36px; flex-shrink:0; text-align:center; }
.map-nav-input {
  flex:1; background:rgba(255,255,255,0.08); border:0.5px solid rgba(255,255,255,0.1);
  border-radius:8px; padding:8px 10px; color:#fff; font-size:13px; outline:none; font-family:inherit;
}
.map-nav-input::placeholder { color:#555; }
.map-nav-modes { display:flex; gap:8px; margin-bottom:8px; justify-content:center; }
.map-nav-mode {
  padding:6px 16px; border-radius:20px; border:0.5px solid rgba(255,255,255,0.1);
  background:rgba(255,255,255,0.05); color:#8E8E93; font-size:12px; cursor:pointer;
  display:flex; align-items:center; gap:4px;
}
.map-nav-mode.active { background:#0A84FF; color:#fff; border-color:#0A84FF; }
.map-nav-actions { display:flex; gap:8px; }
.map-nav-action { flex:1; padding:10px; border-radius:10px; border:none; font-size:14px; cursor:pointer; font-weight:500; }
.map-nav-start { background:#34C759; color:#fff; }
.map-nav-cancel { background:rgba(255,255,255,0.08); color:#8E8E93; }
/* 导航中状态栏 */
.map-nav-status {
  position:absolute; top:52px; left:0; right:0; z-index:1003;
  background:rgba(10,132,255,0.95); backdrop-filter:blur(20px);
  padding:10px 16px; display:none; color:#fff;
}
.map-nav-status.active { display:block; }
.map-nav-status-top { display:flex; align-items:center; justify-content:space-between; margin-bottom:4px; }
.map-nav-status-icon { font-size:18px; }
.map-nav-status-text { flex:1; margin-left:8px; font-size:13px; font-weight:500; }
.map-nav-status-close { background:rgba(255,255,255,0.2); border:none; color:#fff; width:28px; height:28px; border-radius:50%; cursor:pointer; font-size:16px; }
.map-nav-status-meta { font-size:12px; opacity:0.8; margin-left:26px; }
/* 导航步骤列表 */
.map-nav-steps {
  position:absolute; bottom:0; left:0; right:0; z-index:1002;
  background:rgba(20,18,22,0.97); backdrop-filter:blur(20px);
  max-height:40vh; overflow-y:auto; display:none;
  border-top:0.5px solid rgba(255,255,255,0.08); border-radius:16px 16px 0 0;
}
.map-nav-steps.active { display:block; }
.map-nav-steps-header { padding:12px 16px 8px; font-size:13px; color:#8E8E93; border-bottom:0.5px solid rgba(255,255,255,0.06); position:sticky; top:0; background:rgba(20,18,22,0.97); }
.map-nav-step { display:flex; gap:10px; padding:12px 16px; border-bottom:0.5px solid rgba(255,255,255,0.04); }
.map-nav-step:active { background:rgba(255,255,255,0.03); }
.map-nav-step-icon { font-size:18px; flex-shrink:0; width:24px; text-align:center; }
.map-nav-step-text { flex:1; font-size:13px; color:#fff; line-height:1.4; }
.map-nav-step-dist { font-size:11px; color:#8E8E93; margin-top:2px; }
.map-nav-step.current { background:rgba(10,132,255,0.12); }


/* ===== v109 A性能：降温/顺滑（不改功能与布局） ===== */
/* 任意内部列表滚动期间临时关闭毛玻璃，停止滚动约160ms后自动恢复，显著降低滚动时GPU合成/发热 */
.wa-scrolling, .wa-scrolling * { backdrop-filter:none !important; -webkit-backdrop-filter:none !important; }
/* 切后台/锁屏期间暂停全部CSS动画，回到前台自动恢复 */
.wa-bg-paused, .wa-bg-paused * { animation-play-state:paused !important; }
/* 系统开启“减少动态效果”时一并静态化背景光斑 */
@media (prefers-reduced-motion: reduce) { .mist-blob { animation:none !important; } }
