/* Vie 固定页面接入：抖音只保留应用自身的黑色内容层，全局状态栏由 core 唯一提供。 */
#douyin-app { background: #000; color: #fff; transition: none; }
#douyin-app.is-open { transition: none; }
.vie-viewport.douyin-active { background: #000; }
.vie-viewport.douyin-active::before { background-color: #000; background-image: none; }
.vie-viewport.douyin-active .star-field { opacity: 0; visibility: hidden; }
@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }

/* ================= 抖音 APP 专有样式 ================= */
/* 状态栏在抖音打开时强制变白 */
.dy-tab-layer {
  display: none;
  width: 100%;
  height: 100%;
  position: relative;
  animation: fadeIn 0.3s ease;
}
.dy-tab-layer.active {
  display: block;
}
.dy-scroll-content {
  height: 100%;
  overflow-y: auto;
  scrollbar-width: none;
  padding-bottom: calc(var(--vie-safe-bottom) + 54px);
}
.dy-scroll-content::-webkit-scrollbar {
  display: none;
}
.dy-pt-header {
  padding-top: 54px;
}

.dy-home-feed {
  position: absolute;
  inset: 0;
  z-index: 1;
  overflow-y: auto;
  overscroll-behavior-y: contain;
  scroll-snap-type: y mandatory;
  scrollbar-width: none;
  background: #000;
}
.dy-home-feed::-webkit-scrollbar { display: none; }
.dy-feed-post {
  content-visibility: auto;
  contain-intrinsic-size: 100vh;
  position: relative;
  width: 100%;
  height: 100%;
  min-height: 100%;
  overflow: hidden;
  scroll-snap-align: start;
  scroll-snap-stop: always;
  background: #000;
}
.dy-feed-state {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  align-content: center;
  gap: 12px;
  padding: 80px 34px 120px;
  color: rgba(255,255,255,.9);
  background: #000;
  text-align: center;
}
.dy-feed-state > i { font-size: 28px; color: rgba(255,255,255,.76); }
.dy-feed-state strong { font-size:calc(17px * var(--vie-font-scale)); line-height: 1.35; }
.dy-feed-state p { max-width: 280px; margin: 0; color: rgba(255,255,255,.48); font-size:calc(13px * var(--vie-font-scale)); line-height: 1.65; }

.dy-feed-loading-indicator {
  position: absolute;
  left: 50%;
  bottom: calc(var(--vie-safe-bottom) + 76px);
  z-index: 30;
  display: none;
  align-items: center;
  gap: 9px;
  max-width: calc(100% - 40px);
  padding: 10px 15px;
  border: 1px solid rgba(255,255,255,.12);
  border-radius: 999px;
  color: #fff;
  background: rgba(0,0,0,.58);
  box-shadow: 0 8px 30px rgba(0,0,0,.28);
  transform: translateX(-50%);
  backdrop-filter:none;
  -webkit-backdrop-filter:none;
  pointer-events: none;
}
.dy-feed-loading-indicator.active { display: flex; }
.dy-feed-loading-spinner {
  width: 15px;
  height: 15px;
  flex: 0 0 auto;
  border: 2px solid rgba(255,255,255,.28);
  border-top-color: #fff;
  border-radius: 50%;
  animation: dyFeedLoading .75s linear infinite;
}
.dy-feed-loading-indicator span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size:calc(12px * var(--vie-font-scale)); }
@keyframes dyFeedLoading { to { transform: rotate(360deg); } }
.dy-static-placeholder,
.dy-list-placeholder,
.dy-overlay-placeholder {
  display: grid;
  place-items: center;
  align-content: center;
  gap: 10px;
  text-align: center;
}
.dy-static-placeholder {
  min-height: 100%;
  padding: 80px 32px 110px;
  color: rgba(255,255,255,.82);
}
.dy-list-placeholder {
  min-height: 320px;
  padding: 80px 32px 110px;
  color: rgba(255,255,255,.82);
}

.dy-overlay-placeholder {
  min-height: 100%;
  padding: 80px 32px 110px;
  color: rgba(255,255,255,.72);
}

.dy-static-placeholder-icon {
  display: grid;
  place-items: center;
  color: var(--vie-placeholder-glyph);
}
.dy-list-placeholder-avatar,
.dy-avatar-placeholder {
  display: block;
  overflow: hidden;
  border: 1px solid rgba(255,255,255,.12);
  border-radius: 50%;
  color: var(--logo-color);
  background: transparent;
}
.dy-list-placeholder-avatar {
  width: 48px;
  height: 48px;
  font-size: calc(17px * var(--vie-font-scale));
}
.dy-avatar-placeholder {
  width: 80px;
  height: 80px;
}

.dy-static-placeholder strong,
.dy-list-placeholder strong,
.dy-overlay-placeholder strong { font-size:calc(15px * var(--vie-font-scale)); }
.dy-static-placeholder p,
.dy-list-placeholder p,
.dy-overlay-placeholder p { margin: 0; color: rgba(255,255,255,.42); font-size:calc(12px * var(--vie-font-scale)); line-height: 1.6; }
.dy-profile-cover-placeholder {
  overflow: hidden;
  color: var(--logo-color);
  background-color: var(--vie-placeholder-bg);
  background-image: radial-gradient(circle, var(--vie-placeholder-dot) 0 6.5px, transparent 7px);
  background-size: 56px 56px;
  background-position: 18px 18px;
}
.dy-profile-cover-placeholder::after { content: none; }
.dy-profile-cover-placeholder > .dy-image-placeholder-icon { position:absolute; inset:0; z-index:0; display:flex; align-items:center; justify-content:center; color:var(--logo-color); font-size:20px; font-style:normal; line-height:1; }
.dy-profile-cover-placeholder > .dy-profile-nav { z-index:2; }
.dy-list-placeholder-avatar > .dy-avatar-placeholder-svg,
.dy-avatar-placeholder > .dy-avatar-placeholder-svg,
.dy-generated-avatar > .dy-avatar-placeholder-svg,
.dy-comment-avatar-text > .dy-avatar-placeholder-svg,
.dy-settings-choice-avatar > .dy-avatar-placeholder-svg,
.dy-user-card-avatar > .dy-avatar-placeholder-svg {
  width:100%;
  height:100%;
  display:block;
}

.dy-generated-media {
  position: absolute;
  inset: 0;
  overflow: hidden;
  color: #fff;
  background: #000;
}
.dy-generated-media[data-dy-media-type="video"] {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 96px 62px 190px 28px;
}
.dy-generated-media[data-dy-media-type="images"] {
  touch-action: pan-y;
  outline: none;
  cursor: grab;
}
.dy-generated-media[data-dy-media-type="images"]:active { cursor: grabbing; }
.dy-image-carousel {
  width: 100%;
  height: 100%; overflow: hidden; }
.dy-image-track {
  width: 100%;
  height: 100%;
  display: flex;
  transform: translate3d(0,0,0);
  transition: transform .32s cubic-bezier(.22,.61,.36,1);
  will-change: transform; }
.dy-image-slide {
  width: 100%;
  height: 100%;
  position: relative;
  flex: 0 0 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  padding: 96px 62px 190px 28px;
  color: #fff;
  background: #000; }
.dy-image-scene {
  width: min(100%, 310px);
  display: grid;
  gap: 14px;
  text-align: center;
}
.dy-image-visual {
  margin: 0;
  color: rgba(255,255,255,.96);
  font-size: clamp(calc(18px * var(--vie-font-scale)), calc(5vw * var(--vie-font-scale)), calc(23px * var(--vie-font-scale)));
  line-height: 1.74;
  font-weight: 580;
  letter-spacing: .018em;
  text-wrap: balance;
}
.dy-image-subtitle {
  margin: 0;
  color: rgba(255,255,255,.62);
  font-size:calc(14px * var(--vie-font-scale));
  line-height: 1.65;
}
.dy-image-subtitle.is-empty { display: none; }
.dy-image-progress {
  position: absolute;
  left: 0;
  right: 0;
  bottom: calc(var(--vie-safe-bottom) + 54px);
  z-index: 12;
  display: flex;
  gap: 2px;
  padding: 0 2px;
  pointer-events: none;
}
.dy-image-progress span {
  height: 2px;
  flex: 1 1 0;
  min-width: 0;
  overflow: hidden;
  border-radius: 0;
  background: rgba(255,255,255,.28);
  box-shadow: 0 -1px 3px rgba(0,0,0,.22);
  transition: background .18s ease;
}
.dy-image-progress span.active {
  background: rgba(255,255,255,.98);
}
.dy-scene-stage {
  position: relative;
  z-index: 2;
  width: min(100%, 310px);
  display: grid;
  gap: 14px;
  text-align: center;
}
.dy-scene-visual {
  margin: 0;
  color: rgba(255,255,255,.96);
  font-size: clamp(calc(19px * var(--vie-font-scale)), calc(5.4vw * var(--vie-font-scale)), calc(25px * var(--vie-font-scale)));
  line-height: 1.72;
  font-weight: 620;
  letter-spacing: .025em;
  text-wrap: balance;
}
.dy-scene-subtitle {
  margin: 0;
  color: rgba(255,255,255,.68);
  font-size:calc(14px * var(--vie-font-scale));
  line-height: 1.65;
}
.dy-scene-subtitle.is-empty { display: none; }
.dy-feed-post .dy-action-item {
  border: 0;
  padding: 0;
  color: inherit;
  background: transparent;
  font: inherit;
}
.dy-action-item.saved i,
.dy-action-item.recommended i { color: #face15; }
.dy-generated-avatar {
  width: 48px;
  height: 48px;
  display: grid;
  place-items: center;
  border: 1px solid rgba(255,255,255,.9);
  border-radius: 50%;
  overflow: hidden;
  color: var(--logo-color);
  background: transparent;
  background-position:center;
  background-size:cover;
}
.dy-generated-avatar.has-image > * { display:none; }
.dy-published-at {
  margin-left: 5px;
  color: rgba(255,255,255,.48);
  font-size:calc(12px * var(--vie-font-scale));
  white-space: nowrap;
}

/* 沉浸式视频层 (首页 & 朋友) */
.dy-media-layer {
  position: absolute;
  inset: 0;
  z-index: 1;
}
.dy-media-layer img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.dy-overlay {
  position: absolute;
  inset: 0;
  z-index: 2;
  background: linear-gradient(to bottom, rgba(0,0,0,0.4) 0%, transparent 15%, transparent 60%, rgba(0,0,0,0.8) 100%);
  pointer-events: none;
}
.dy-top-nav {
  position: absolute;
  top: 0; left: 0; right: 0;
  z-index: 10;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 8px 16px 12px;
  font-size:calc(17px * var(--vie-font-scale));
  text-shadow: 0 1px 2px rgba(0,0,0,0.3);
}
.dy-top-nav .dy-line-nav-icon,
.dy-top-nav i {
  font-size: 20px;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  padding: 4px;
}
.dy-top-nav .dy-line-nav-icon {
  width: 28px;
  height: 28px;
  flex: 0 0 28px;
  color: #fff;
}

.dy-tabs {
  display: flex;
  gap: 20px;
  font-weight: 500;
  color: rgba(255,255,255,0.7);
}
.dy-tabs span,
.dy-tabs button {
  border: 0;
  padding: 0;
  color: inherit;
  background: transparent;
  font: inherit;
  cursor: pointer;
}
.dy-tabs span.active,
.dy-tabs button.active {
  color: #fff;
  font-weight: 600;
  position: relative;
}
.dy-tabs span.active::after,
.dy-tabs button.active::after {
  content: "";
  position: absolute;
  bottom: -6px; left: 50%;
  transform: translateX(-50%);
  width: 14px;
  height: 2.5px;
  border-radius: 2px;
  background: #fff;
}
.dy-right-actions {
  position: absolute;
  right: 12px;
  bottom: calc(var(--vie-safe-bottom) + 72px);
  z-index: 10;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 20px;
}
.dy-action-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  text-shadow: 0 1px 2px rgba(0,0,0,0.4);
}
.dy-action-item i {
  font-size: 32px;
  filter: drop-shadow(0 1px 2px rgba(0,0,0,0.3));
  transition: transform 0.2s, color 0.2s;
}
.dy-action-item span {
  font-size:calc(12px * var(--vie-font-scale));
  font-weight: 500;
}
/* 点赞特效 */
.dy-action-item.liked i {
  color: #FE2C55;
  animation: dyHeartPop 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}
@keyframes dyHeartPop {
  0% { transform: scale(1); }
  50% { transform: scale(1.3); }
  100% { transform: scale(1); }
}
.dy-avatar-wrap {
  position: relative;
  margin-bottom: 12px;
}
.dy-avatar-wrap .dy-add-follow {
  position: absolute;
  bottom: -8px;
  left: 50%;
  transform: translateX(-50%);
  color: #FE2C55;
  font-size:calc(20px * var(--vie-font-scale));
  background: #fff;
  border-radius: 50%;
  line-height: 1;
}
.dy-record {
  margin-top: 10px;
  width: 48px;
  height: 48px;
  border-radius: 50%;
  background: #2a2a2a;
  display: flex;
  align-items: center;
  justify-content: center;
  animation: dySpin 4s linear infinite;
  box-shadow: 0 0 0 6px rgba(255,255,255,0.1);
}
.dy-record i {
  font-size: 18px;
  color: #fff;
}
@keyframes dySpin {
  100% { transform: rotate(360deg); }
}
.dy-bottom-info {
  position: absolute;
  left: 16px;
  right: 80px;
  bottom: calc(var(--vie-safe-bottom) + 64px);
  z-index: 10;
  display: flex;
  flex-direction: column;
  gap: 8px;
  text-shadow: 0 1px 2px rgba(0,0,0,0.4);
}
.dy-username {
  font-size:calc(17px * var(--vie-font-scale));
  font-weight: 600;
}
.dy-caption {
  font-size:calc(15px * var(--vie-font-scale));
  line-height: 1.4;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.dy-music {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size:calc(14px * var(--vie-font-scale));
  margin-top: 2px;
}
.dy-music i {
  font-size: 13px;
}
.dy-music-scroll {
  width: 140px;
  overflow: hidden;
  white-space: nowrap;
  mask-image: linear-gradient(to right, transparent, black 10%, black 90%, transparent);
  -webkit-mask-image: linear-gradient(to right, transparent, black 10%, black 90%, transparent);
}
.dy-music-scroll span {
  display: inline-block;
  animation: dyMarquee 6s linear infinite;
}
@keyframes dyMarquee {
  0% { transform: translateX(100%); }
  100% { transform: translateX(-100%); }
}

/* 消息 & 我 实体背景头部 */
.dy-header-solid {
  position: absolute;
  top: 0; left: 0; right: 0;
  padding: 8px 16px 12px;
  background: #161823;
  display: flex;
  align-items: center;
  justify-content: space-between;
  z-index: 20;
  border-bottom: 0.5px solid rgba(255,255,255,0.05);
}
.dy-friend-add { font-size:calc(18px * var(--vie-font-scale)); }
.dy-header-solid .dy-title {
  font-size:calc(17px * var(--vie-font-scale));
  font-weight: 600;
}
.dy-header-solid i {
  font-size: 20px;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  color: #fff;
}

/* 消息页内容 */
.dy-msg-shortcuts {
  display: flex;
  justify-content: space-around;
  padding: 20px 10px;
  border-bottom: 0.5px solid rgba(255,255,255,0.05);
}

/* 个人主页内容 */
.dy-profile-cover {
  width: 100%;
  height: 180px;
  position: relative;
}
.dy-profile-cover img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.dy-profile-nav {
  position: absolute;
  top: calc(var(--status-bar-space) + 8px);
  left: 0; right: 0;
  z-index: 2;
  display: flex;
  justify-content: space-between;
  padding: 0 16px;
}

.dy-profile-nav-right {
  display: flex;
  gap: 16px;
}
.dy-profile-nav i {
  font-size: 20px;
  color: #fff;
  text-shadow: 0 1px 2px rgba(0,0,0,0.5);
  cursor: pointer;
}
.dy-profile-main {
  padding: 0 16px;
  margin-top: -24px;
  position: relative;
  z-index: 10;
}

.dy-profile-avatar-img {
  width: 84px;
  height: 84px;
  border-radius: 50%;
  border: 4px solid #161823;
  object-fit: cover;
  background: #333;
}
.dy-profile-actions {
  display: flex;
  gap: 8px;
  margin-bottom: 12px;
}
.dy-btn {
  background: rgba(255,255,255,0.1);
  color: #fff;
  border-radius: 4px;
  padding: 8px 16px;
  font-size:calc(14px * var(--vie-font-scale));
  font-weight: 500;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
}
.dy-btn-icon {
  padding: 8px 12px;
}
.dy-profile-name {
  font-size:calc(22px * var(--vie-font-scale));
  font-weight: 700;
  margin-bottom: 4px;
}
.dy-profile-id {
  font-size:calc(12px * var(--vie-font-scale));
  color: rgba(255,255,255,0.6);
  margin-bottom: 12px;
}
.dy-profile-desc {
  font-size:calc(14px * var(--vie-font-scale));
  line-height: 1.5;
  margin-bottom: 12px;
}
.dy-profile-stats {
  display: flex;
}
.dy-stat {
  font-size:calc(13px * var(--vie-font-scale));
  color: rgba(255,255,255,0.6);
}
.dy-stat-num {
  font-size:calc(16px * var(--vie-font-scale));
  font-weight: 600;
  color: #fff;
  margin-right: 4px;
}
.dy-profile-tabs-wrap {
  display: flex;
  border-bottom: 0.5px solid rgba(255,255,255,0.1);
  margin-bottom: 2px;
}
.dy-p-tab {
  flex: 1;
  text-align: center;
  padding: 12px 0;
  font-size:calc(15px * var(--vie-font-scale));
  color: rgba(255,255,255,0.6);
  font-weight: 500;
  position: relative;
  cursor: pointer;
}
.dy-p-tab.active {
  color: #fff;
  font-weight: 600;
}
.dy-p-tab.active::after {
  content: "";
  position: absolute;
  bottom: 0; left: 50%;
  transform: translateX(-50%);
}

/* 底部导航栏 */
.dy-bottom-tabbar {
  position: absolute;
  bottom: 0; left: 0; right: 0;
  height: calc(var(--vie-safe-bottom) + 54px);
  background: linear-gradient(to top, rgba(0,0,0,0.8) 0%, transparent 100%);
  display: flex;
  align-items: flex-start;
  justify-content: space-around;
  padding-top: 14px;
  z-index: 50;
  transition: background 0.3s;
}
.dy-bottom-tabbar.solid {
  background: #161823;
  border-top: 0.5px solid rgba(255,255,255,0.05);
}
.dy-tab-item {
  border: 0;
  background: transparent;
  appearance: none;
  -webkit-appearance: none;
  color: rgba(255,255,255,0.6);
  font: inherit;
  font-size:calc(15px * var(--vie-font-scale));
  font-weight: 500;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  padding: 4px 8px;
}
.dy-tab-item.active {
  color: #fff;
  font-weight: 600;
}
.dy-create-btn {
  padding: 0;
  margin-top: -2px;
}
.dy-create-inner {
  background: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
}
.dy-create-inner::before,
.dy-create-inner::after {
  content: "";
  position: absolute;
  top: 0;
}
.dy-create-inner::before {
  bottom: 0;
  background: #24F6F0;
}
.dy-create-inner::after {
  bottom: 0;
  background: #FE2C55;
}

.dy-create-inner i {
  color: #000;
  font-size: 16px;
}

/* 评论区面板：按抖音移动端层级重排，顶级评论与楼中楼不再塞进卡片。 */
.dy-mask { position:absolute; inset:0; z-index:100; display:none; opacity:0; background:rgba(0,0,0,.54); transition:opacity .22s ease; }
.dy-mask.active { display:block; opacity:1; }
.dy-comments-sheet {
  position:absolute; left:0; right:0; bottom:0; z-index:101;
  height:min(74%, 690px); display:flex; flex-direction:column;
  color:#f5f5f5; background:#161823; border-radius:12px 12px 0 0;
  visibility:hidden; pointer-events:none; transform:translateY(100%);
  transition:transform .28s cubic-bezier(.22,1,.36,1),visibility 0s linear .28s;
}
.dy-comments-sheet.active { visibility:visible; pointer-events:auto; transform:translateY(0); transition-delay:0s; }
.dy-sheet-header { position:relative; flex:0 0 48px; display:grid; place-items:center; padding:0 52px; border-bottom:.5px solid rgba(255,255,255,.055); font-size:calc(14px * var(--vie-font-scale)); font-weight:600; }
.dy-sheet-header i { position:absolute; top:50%; right:17px; padding:5px; color:rgba(255,255,255,.72); font-size:18px; cursor:pointer; transform:translateY(-50%); }
.dy-sheet-content { flex:1; overflow-y:auto; padding:4px 0 16px; overscroll-behavior:contain; scrollbar-width:none; }
.dy-sheet-content::-webkit-scrollbar { display:none; }
.dy-comment-item { display:grid; grid-template-columns:36px minmax(0,1fr) 34px; gap:10px; align-items:start; padding:12px 12px 4px 16px; margin:0; }
.dy-comment-avatar { width:36px; height:36px; display:grid; place-items:center; overflow:hidden; border-radius:50%; background:#252733; background-position:center; background-size:cover; }
.dy-comment-avatar.has-image > * { display:none; }
.dy-comment-avatar-text { color:var(--logo-color); background:transparent; }
.dy-comment-main { min-width:0; }
.dy-comment-name, .dy-comment-reply-name { display:flex; align-items:center; gap:5px; min-width:0; color:rgba(255,255,255,.46); font-size:calc(12px * var(--vie-font-scale)); line-height:1.35; }
.dy-comment-name span, .dy-comment-reply-name span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.dy-comment-name em, .dy-comment-reply-name em { flex:0 0 auto; padding:1px 3px; border-radius:2px; color:#fe2c55; background:rgba(254,44,85,.11); font-size:calc(9px * var(--vie-font-scale)); font-style:normal; }
.dy-comment-text { margin-top:4px; color:rgba(255,255,255,.94); font-size:calc(14px * var(--vie-font-scale)); line-height:1.52; overflow-wrap:anywhere; }
.dy-comment-meta, .dy-comment-reply-meta { display:flex; align-items:center; gap:10px; margin-top:5px; color:rgba(255,255,255,.32); font-size:calc(11px * var(--vie-font-scale)); line-height:1.3; }
.dy-comment-meta button, .dy-comment-reply-meta button { border:0; padding:0; color:rgba(255,255,255,.5); background:transparent; font:inherit; font-weight:600; }
.dy-comment-like { min-width:30px; display:flex; flex-direction:column; align-items:center; gap:2px; padding:8px 0 0; border:0; color:rgba(255,255,255,.42); background:transparent; cursor:pointer; }
.dy-comment-like i { font-size:15px; }
.dy-comment-like.liked i { color:#fe2c55; }
.dy-comment-like span { min-height:13px; font-size:calc(10px * var(--vie-font-scale)); }
.dy-comment-replies { display:grid; gap:12px; margin-top:12px; padding:0; background:transparent; border-radius:0; }
.dy-comment-reply { display:grid; grid-template-columns:26px minmax(0,1fr) 30px; gap:8px; align-items:start; }
.dy-comment-reply-avatar { width:26px; height:26px; display:grid; place-items:center; overflow:hidden; border-radius:50%; background:#252733; background-position:center; background-size:cover; }
.dy-comment-reply-avatar.has-image > * { display:none; }
.dy-comment-reply-avatar .dy-avatar-placeholder-svg { width:100%; height:100%; }
.dy-comment-reply-main { min-width:0; }
.dy-comment-reply-text { margin-top:3px; color:rgba(255,255,255,.88); font-size:calc(13px * var(--vie-font-scale)); line-height:1.48; overflow-wrap:anywhere; }
.dy-comment-reply-like { display:flex; flex-direction:column; align-items:center; gap:1px; padding-top:5px; color:rgba(255,255,255,.35); font-size:12px; }
.dy-comment-reply-like small { font-size:calc(9px * var(--vie-font-scale)); }
.dy-comments-empty { min-height:210px; display:grid; place-items:center; color:rgba(255,255,255,.38); font-size:calc(13px * var(--vie-font-scale)); text-align:center; }
.dy-sheet-footer { flex:0 0 auto; display:flex; align-items:center; gap:8px; padding:9px 12px calc(var(--vie-safe-bottom) + 10px); border-top:.5px solid rgba(255,255,255,.055); background:#161823; }
.dy-comment-input-shell { min-width:0; flex:1; height:38px; display:flex; align-items:center; gap:4px; padding:0 7px 0 0; border-radius:19px; background:rgba(255,255,255,.08); }
.dy-sheet-footer input { min-width:0; flex:1; height:38px; border:0; padding:0 4px 0 14px; color:#fff; background:transparent; outline:none; font-size:calc(13px * var(--vie-font-scale)); }
.dy-sheet-footer input::placeholder { color:rgba(255,255,255,.38); }
.dy-comment-tool { width:27px; height:27px; border:0; padding:0; display:grid; place-items:center; color:rgba(255,255,255,.72); background:transparent; font:inherit; font-size:calc(17px * var(--vie-font-scale)); }
.dy-comment-tool i { font-size:17px; }
.dy-comment-submit { min-width:48px; height:34px; border:0; border-radius:4px; padding:0 11px; color:#fff; background:#fe2c55; font-size:calc(12px * var(--vie-font-scale)); font-weight:650; cursor:pointer; }
.dy-comment-submit:active { transform:scale(.97); }

/* 抖音设置侧边栏：视觉与控件统一复用 Vie 全局 UI 变量 */
.dy-settings-drawer button {
  border: 0;
  font: inherit;
}
.dy-profile-nav-button {
  border: 0;
  font: inherit;
  width: 28px;
  height: 28px;
  padding: 0;
  background: transparent;
  color: #fff;
  cursor: pointer;
}
.dy-settings-scrim {
  position: absolute;
  inset: 0;
  z-index: 220;
  background: var(--modal-backdrop-color);
  -webkit-backdrop-filter:none;
  backdrop-filter:none;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity .22s ease, visibility 0s linear .22s;
}
.dy-settings-scrim.dy-settings-visible {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transition-delay: 0s;
}
.dy-settings-drawer {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  z-index: 230;
  width: min(92%, 420px);
  display: flex;
  flex-direction: column;
  overflow: hidden;
  color: var(--vie-text-primary);
  background-color: var(--vie-page-background-color);
  background-image: var(--vie-page-wallpaper-image);
  background-position: var(--vie-page-wallpaper-position);
  background-size: var(--vie-page-wallpaper-size);
  background-repeat: var(--vie-page-wallpaper-repeat);
  box-shadow: -16px 0 38px rgba(0,0,0,.17), -2px 0 8px rgba(0,0,0,.06);
  visibility: hidden;
  pointer-events: none;
  transform: translate3d(100%,0,0);
  transition: transform .32s cubic-bezier(.22,.82,.26,1), visibility 0s linear .32s;
}
.dy-settings-drawer.dy-settings-visible {
  visibility: visible;
  pointer-events: auto;
  transform: translate3d(0,0,0);
  transition-delay: 0s;
}
.dy-settings-header.vie-app-navbar,
.dy-settings-detail-header.vie-app-navbar {
  width: 100%;
  margin: 0;
  padding: var(--app-page-top-inset) var(--app-inline-inset) 0;
  border: 0;
  background: transparent;
}
.dy-settings-title-block { min-width: 0; }
.dy-settings-detail-header h3,
.dy-settings-header h2 {
  margin: 0;
  color: var(--vie-text-primary);
  font-size: var(--vie-nav-title-size);
  line-height: var(--vie-nav-title-line-height);
  font-weight: 600;
}
.dy-settings-detail-header h3 {
  min-width: 0;
  flex: 1;
  overflow: hidden;
  text-align: center;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.dy-settings-kicker {
  display: block;
  margin-bottom: 2px;
  color: var(--vie-text-muted);
  font-size:calc(9px * var(--vie-font-scale));
  line-height: 12px;
  font-weight: 650;
  letter-spacing: .13em;
}
.dy-settings-nav-icon svg,
.dy-settings-nav-icon i {
  display: block;
  color: inherit;
  font-size: var(--vie-nav-action-icon-size);
  line-height: 1;
}
.dy-settings-nav-icon svg {
  width: var(--vie-nav-action-icon-size);
  height: var(--vie-nav-action-icon-size);
}

.dy-settings-owner {
  flex: 0 0 auto;
  margin: 4px var(--app-inline-inset) 8px;
  padding: 0;
}
.dy-settings-menu {
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
  overscroll-behavior: contain;
  padding: 0 var(--app-inline-inset) 28px;
  scrollbar-width: none;
}
.dy-settings-menu::-webkit-scrollbar,
.dy-settings-detail-body::-webkit-scrollbar { display: none; }
.dy-settings-menu .settings-group { margin-bottom: 0; }
.dy-settings-row-icon i {
  display: block;
  color: #fff;
  font-size: 17px;
  line-height: 1;
}
.dy-settings-row .vie-global-list-detail {
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.dy-settings-detail {
  position: absolute;
  inset: 0;
  z-index: 5;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  color: var(--vie-text-primary);
  background-color: var(--vie-page-background-color);
  background-image: var(--vie-page-wallpaper-image);
  background-position: var(--vie-page-wallpaper-position);
  background-size: var(--vie-page-wallpaper-size);
  background-repeat: var(--vie-page-wallpaper-repeat);
  visibility: hidden;
  pointer-events: none;
  transform: translate3d(100%,0,0);
  transition: transform .28s cubic-bezier(.22,.82,.26,1), visibility 0s linear .28s;
}
.dy-settings-detail.dy-settings-detail-visible {
  visibility: visible;
  pointer-events: auto;
  transform: translate3d(0,0,0);
  transition-delay: 0s;
}
.dy-settings-save-button { color: var(--vie-nav-icon-color); }
.dy-settings-detail-body {
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
  overflow-x: hidden;
  overscroll-behavior: contain;
  padding: 0 var(--app-inline-inset) calc(30px + var(--vie-safe-bottom));
  scrollbar-width: none;
}
.dy-settings-section-note,
.dy-settings-form > p {
  margin: 0 13px 12px;
  color: var(--vie-text-muted);
  font-size:calc(11px * var(--vie-font-scale));
  line-height: 1.6;
}
.dy-settings-form { display: grid; gap: 0; }
.dy-settings-form-card { margin-bottom: 16px; }
.dy-settings-field {
  position: relative;
  display: grid;
  gap: 8px;
  padding: 12px 14px 13px;
  color: var(--vie-text-secondary);
  font-size:calc(12px * var(--vie-font-scale));
  line-height: 17px;
  font-weight: 550;
}
.dy-settings-field + .dy-settings-field::before,
.dy-settings-inline-actions + .dy-settings-field::before,
.dy-settings-field + .dy-settings-inline-actions::before,
.dy-sound-upload-row::before {
  content: "";
  position: absolute;
  left: 14px;
  right: 14px;
  top: 0;
  height: .5px;
  background: var(--vie-page-divider);
}
.dy-settings-field output {
  float: right;
  color: var(--vie-text-muted);
  font-weight: 500;
}
.dy-generation-count-field small {
  color: var(--vie-text-muted);
  font-size:calc(10px * var(--vie-font-scale));
  line-height: 1.5;
  font-weight: 450;
}
.dy-generation-count-field .vie-global-range { width: 100%; }
.dy-settings-input.global-input-field {
  height: 34px;
  min-height: 34px;
  padding: 0 0 3px;
  color: var(--vie-text-primary);
  font-size:calc(13px * var(--vie-font-scale));
  line-height: 30px;
}
textarea.dy-settings-input.global-input-field {
  min-height: 86px;
  padding: 7px 0 9px;
  line-height: 1.6;
  resize: vertical;
}
select.dy-settings-input.global-input-field {
  appearance: none;
  -webkit-appearance: none;
  padding-right: 16px;
  cursor: pointer;
}
.dy-settings-choice-list { display: grid; gap: 10px; }
.dy-settings-choice {
  width: 100%;
  min-height: 64px;
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 13px;
  border: .5px solid var(--vie-page-divider-soft);
  border-radius: 14px;
  color: var(--vie-text-primary);
  background: var(--vie-page-surface-strong);
  box-shadow: 0 7px 20px rgba(0,0,0,.045), 0 2px 5px rgba(0,0,0,.025);
  text-align: left;
  cursor: pointer;
}
.dy-settings-choice.dy-settings-choice-selected {
  border-color: var(--vie-page-divider-strong);
  box-shadow: inset 0 0 0 1px var(--logo-color), 0 7px 20px rgba(0,0,0,.045);
}
.dy-settings-choice-avatar {
  width: 42px;
  height: 42px;
  flex: 0 0 42px;
  display: grid;
  place-items: center;
  overflow: hidden;
  border-radius: 50%;
  color: var(--logo-color);
  background: transparent;
}
.dy-settings-choice-avatar img,
.dy-user-card-avatar img {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
}
.dy-settings-choice-copy { flex: 1; min-width: 0; }
.dy-settings-choice-copy strong { display: block; font-size:calc(14px * var(--vie-font-scale)); line-height: 19px; font-weight: 600; }
.dy-settings-choice-copy small { display: block;
  margin-top: 3px;
  overflow: hidden;
  color: var(--vie-text-muted);
  font-size:calc(10px * var(--vie-font-scale));
  line-height: 15px;
  text-overflow: ellipsis;
  white-space: nowrap; }
.dy-settings-choice > i { color: var(--vie-text-faint); }
.dy-settings-choice.dy-settings-choice-selected > i { color: var(--logo-color); }
.dy-settings-empty {
  min-height: 160px;
  display: grid;
  place-items: center;
  align-content: center;
  gap: 10px;
  color: var(--vie-text-muted);
  font-size:calc(12px * var(--vie-font-scale));
  text-align: center;
}
.dy-settings-empty > i { font-size: 20px; }
.dy-settings-empty-compact { min-height: 110px; }
.dy-settings-inline-actions,
.dy-settings-button-row {
  display: grid;
  grid-template-columns: repeat(2, minmax(0,1fr));
  gap: 9px;
}
.dy-settings-inline-actions {
  position: relative;
  padding: 12px 14px;
}

.dy-settings-button-row-top { margin: 0 0 14px; }
.dy-sound-upload-row button,
.dy-settings-button-row button,
.dy-settings-inline-actions button,
.dy-user-card-actions button {
  min-height: 40px;
  padding: 0 10px;
  border-radius: 12px;
  color: var(--vie-text-secondary);
  background: var(--vie-page-soft-surface);
  box-shadow: inset 0 0 0 .5px var(--vie-page-divider-strong);
  cursor: pointer;
}
.dy-sound-upload-row button {
  min-width: 82px;
  flex: 0 0 auto;
}

.dy-settings-button-row button i,
.dy-settings-inline-actions button i,
.dy-sound-upload-row button i,
.dy-user-card-actions button i { margin-right: 6px; }
.dy-settings-secret { display: flex; align-items: stretch; gap: 8px; }
.dy-settings-secret input { flex: 1 1 auto; min-width: 0; }
.dy-settings-secret button {
  width: 40px;
  flex: 0 0 40px;
  border-radius: 10px;
  color: var(--vie-text-secondary);
  background: var(--vie-page-soft-surface);
  cursor: pointer;
}
.dy-user-list,
.dy-sound-list { display: grid; gap: 10px; }
.dy-sound-item,
.dy-user-card {
  overflow: hidden;
  border: .5px solid var(--vie-page-divider-soft);
  border-radius: 14px;
  background: var(--vie-page-surface-strong);
  box-shadow: 0 7px 20px rgba(0,0,0,.045), 0 2px 5px rgba(0,0,0,.025);
}
.dy-sound-item {
  min-height: 60px;
  display: flex;
  align-items: center;
  gap: 11px;
  padding: 10px 12px;
}

.dy-user-card-main {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 13px;
}
.dy-user-card-avatar {
  width: 46px;
  height: 46px;
  flex: 0 0 46px;
  display: grid;
  place-items: center;
  overflow: hidden;
  border-radius: 50%;
  color: var(--logo-color);
  background: transparent;
}
.dy-user-card-copy { min-width: 0; flex: 1; }
.dy-user-card-copy strong { display: block; font-size:calc(14px * var(--vie-font-scale)); line-height: 19px; }
.dy-user-card-copy small { display: block; margin-top: 2px; color: var(--vie-text-muted); font-size:calc(10px * var(--vie-font-scale)); line-height: 15px; }
.dy-user-card-copy em { display: block;
  margin-top: 6px;
  overflow: hidden;
  color: var(--vie-text-secondary);
  font-size:calc(11px * var(--vie-font-scale));
  line-height: 16px;
  font-style: normal;
  text-overflow: ellipsis;
  white-space: nowrap; }
.dy-user-card-actions {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
  padding: 10px 12px 12px;
  border-top: .5px solid var(--vie-page-divider);
}
.dy-sound-categories {
  display: flex;
  gap: 7px;
  margin: 0 0 14px;
  padding-bottom: 2px;
  overflow-x: auto;
  scrollbar-width: none;
}
.dy-sound-categories::-webkit-scrollbar { display: none; }
.dy-sound-categories button {
  min-height: 32px;
  flex: 0 0 auto;
  padding: 0 12px;
  border-radius: 10px;
  color: var(--vie-text-muted);
  background: var(--vie-page-soft-surface);
  box-shadow: inset 0 0 0 .5px var(--vie-page-divider-strong);
  font-size:calc(11px * var(--vie-font-scale));
  cursor: pointer;
}
.dy-sound-categories button.is-active {
  color: var(--vie-text-primary);
  background: var(--vie-page-surface-strong);
  box-shadow: inset 0 0 0 1px var(--logo-color), 0 3px 8px rgba(0,0,0,.055);
  font-weight: 600;
}
.dy-sound-upload-row {
  position: relative;
  min-height: 64px;
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 14px;
}
.dy-sound-upload-row > span { min-width: 0; flex: 1; }
.dy-sound-upload-row strong { display: block; font-size:calc(13px * var(--vie-font-scale)); line-height: 18px; }
.dy-sound-upload-row small { display: block; margin-top: 3px; color: var(--vie-text-muted); font-size:calc(10px * var(--vie-font-scale)); line-height: 15px; }
.dy-sound-item-icon {
  width: 36px;
  height: 36px;
  flex: 0 0 36px;
  display: grid;
  place-items: center;
  border-radius: 9px;
  color: #fff;
  background: var(--logo-color);
}
.dy-sound-item-copy { min-width: 0; flex: 1; }
.dy-sound-item-copy strong { display: block; font-size:calc(13px * var(--vie-font-scale)); line-height: 18px; }
.dy-sound-item-copy small { display: block;
  margin-top: 3px;
  overflow: hidden;
  color: var(--vie-text-muted);
  font-size:calc(10px * var(--vie-font-scale));
  line-height: 15px;
  text-overflow: ellipsis;
  white-space: nowrap; }
.dy-sound-item > button {
  width: 36px;
  height: 36px;
  flex: 0 0 36px;
  border-radius: 10px;
  color: #d85d59;
  background: var(--vie-page-soft-surface);
  cursor: pointer;
}
@media (prefers-reduced-motion: reduce) {
  .dy-settings-scrim,
  .dy-settings-drawer,
  .dy-settings-detail { transition: none; }
}

/* 搜索页全屏浮层 */
.dy-overlay-page {
  position: absolute;
  inset: 0;
  background: #161823;
  z-index: 150;
  display: flex;
  flex-direction: column;
  visibility: hidden;
  pointer-events: none;
  transform: translateX(100%);
  transition: transform 0.3s cubic-bezier(0.2, 0.8, 0.2, 1), visibility 0s linear 0.3s;
}
.dy-overlay-page.active {
  visibility: visible;
  pointer-events: auto;
  transform: translateX(0);
  transition-delay: 0s;
}
/* 搜索页 */
.dy-search-header {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 8px 16px 12px;
}
.dy-search-header > .dy-line-nav-icon,
.dy-search-header > i {
  font-size: 20px;
  color: #fff;
  cursor: pointer;
}
.dy-search-header > .dy-line-nav-icon {
  width: 24px;
  height: 24px;
  flex: 0 0 24px;
}

.dy-search-input-box {
  flex: 1;
  background: rgba(255,255,255,0.1);
  border-radius: 4px;
  display: flex;
  align-items: center;
  padding: 6px 12px;
  gap: 8px;
}
.dy-search-input-box i {
  color: rgba(255,255,255,0.5);
  font-size: 14px;
}
.dy-search-input-box input {
  flex: 1;
  background: transparent;
  border: none;
  color: #fff;
  font-size: calc(14px * var(--vie-font-scale));
  outline: none;
}
.dy-search-input-box input::placeholder { color: rgba(255,255,255,0.4); }
.dy-search-btn {
  border: 0;
  background: transparent;
  appearance: none;
  -webkit-appearance: none;
  padding: 0;
  font: inherit;
  font-size:calc(15px * var(--vie-font-scale));
  color: #FE2C55;
  font-weight: 500;
  cursor: pointer;
}

/* 抖音资料、朋友与消息页面。 */
.dy-header-action-button,
.dy-bare-nav-button {
  appearance:none;
  border:0;
  padding:0;
  margin:0;
  color:inherit;
  background:transparent;
  font:inherit;
  line-height:1;
  cursor:pointer;
  -webkit-tap-highlight-color:transparent;
}
.dy-header-action-button {
  width:32px;
  height:32px;
  display:grid;
  place-items:center;
}
.dy-top-nav .dy-bare-nav-button {
  display:grid;
  place-items:center;
  width:32px;
  height:32px;
  color:#fff;
}
.dy-top-nav .dy-bare-nav-button i { font-size:calc(18px * var(--vie-font-scale)); }

/* 消息页三个快捷入口：接近抖音直角小圆角，不做大胶囊/大圆角。 */
.dy-msg-shortcuts { gap:10px; }

/* 空状态图标本身直接展示，不套圆形/卡片外壳。 */
.dy-static-placeholder-icon {
  width:auto;
  height:auto;
  border:0;
  border-radius:0;
  background:none;
  box-shadow:none;
  font-size:26px;
}
.dy-settings-empty > i,
.dy-overlay-placeholder > i,
.dy-feed-state > i {
  border:0;
  background:none;
  box-shadow:none;
}

/* 朋友页 */
.dy-friend-content {
  position:absolute;
  inset:0;
  overflow-y:auto;
  padding:58px 0 calc(var(--vie-safe-bottom) + 68px);
  background:#000;
  scrollbar-width:none;
}
.dy-friend-content::-webkit-scrollbar { display:none; }
.dy-friend-list { display:grid; }
.dy-friend-row {
  appearance:none;
  width:100%;
  border:0;
  border-bottom:.5px solid rgba(255,255,255,.07);
  display:grid;
  grid-template-columns:52px minmax(0,1fr) auto;
  gap:12px;
  align-items:center;
  padding:13px 16px;
  color:#fff;
  background:#000;
  text-align:left;
  font:inherit;
  cursor:pointer;
}
.dy-friend-row:active { background:rgba(255,255,255,.045); }
.dy-friend-row-avatar,
.dy-message-row-avatar,
.dy-picker-avatar {
  display: block;
  overflow: hidden;
  border-radius: 50%;
  background: #252733;
  background-position: center;
  background-size: cover;
  flex: 0 0 auto;
}
.dy-person-avatar {
  display: block;
  background: #252733;
}
.dy-friend-row-avatar { width:52px; height:52px; }
.dy-friend-row-copy,
.dy-message-row-copy { min-width:0; }
.dy-friend-row-copy strong,
.dy-message-row-copy strong { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:calc(15px * var(--vie-font-scale)); font-weight:600; }
.dy-friend-row-copy small,
.dy-message-row-copy small { display:block; margin-top:4px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:rgba(255,255,255,.5); font-size:calc(12px * var(--vie-font-scale)); }
.dy-friend-row-meta { color:rgba(255,255,255,.36); font-size:calc(11px * var(--vie-font-scale)); }

/* 消息联系人 */
.dy-message-list { display:grid; }
.dy-message-row {
  appearance:none;
  width:100%;
  border:0;
  display:grid;
  grid-template-columns:50px minmax(0,1fr) auto;
  gap:12px;
  align-items:center;
  padding:12px 16px;
  color:#fff;
  background:#161823;
  text-align:left;
  font:inherit;
  cursor:pointer;
}
.dy-message-row-avatar { width:50px; height:50px; }
.dy-message-row-time { align-self:start; padding-top:2px; color:rgba(255,255,255,.34); font-size:calc(10px * var(--vie-font-scale)); }

/* 主页更贴近抖音：数据靠前，作品/推荐/喜欢三栏，3 列瀑布式缩略图。 */
.dy-profile-main { padding-bottom:calc(var(--vie-safe-bottom) + 72px); }
.dy-profile-cover.has-image { background-position:center; background-size:cover; }
.dy-profile-cover.has-image > .dy-image-placeholder-icon { display:none; }
.dy-profile-avatar-img.has-image {
  background-position:center;
  background-size:cover;
  border-color:#161823;
}
.dy-profile-avatar-img.has-image > * { display:none; }
.dy-profile-actions .dy-btn {
  appearance:none;
  border:0;
  min-height:34px;
  line-height:18px;
  font:inherit;
}
.dy-profile-stats { gap:18px; margin-bottom:16px; }
.dy-profile-tabs-wrap { position:sticky; top:0; z-index:5; background:#161823; }
.dy-p-tab {
  appearance:none;
  border:0;
  background:transparent;
  font:inherit;
}
.dy-p-tab.active::after { width:24px; height:2px; background:#fff; }
.dy-profile-work-grid {
  display: grid;
  grid-template-columns: repeat(3,minmax(0,1fr));
  gap: 2px;
  margin: 0 -16px;
  background: #000;
}
.dy-person-work-grid {
  display: grid;
  grid-template-columns: repeat(3,minmax(0,1fr));
}
.dy-work-tile {
  appearance:none;
  position:relative;
  aspect-ratio:3/4;
  min-width:0;
  overflow:hidden;
  border:0;
  padding:0;
  color:#fff;
  background:
    linear-gradient(160deg, hsl(var(--dy-work-hue, 210) 35% 24%), hsl(calc(var(--dy-work-hue, 210) + 55) 42% 9%));
  text-align:left;
  cursor:pointer;
}
.dy-work-tile.has-image { background-position:center; background-size:cover; }
.dy-work-media-badge {
  position:absolute; z-index:3; top:7px; right:7px; display:flex; align-items:center; gap:3px;
  color:rgba(255,255,255,.94); font-size:calc(10px * var(--vie-font-scale)); text-shadow:0 1px 3px rgba(0,0,0,.72);
}
.dy-work-tile-scene {
  position:absolute; z-index:1; inset:13% 9px 34%; display:grid; place-items:center; overflow:hidden;
  color:rgba(255,255,255,.82); font-size:calc(10px * var(--vie-font-scale)); line-height:1.55; text-align:center;
  display:-webkit-box; -webkit-line-clamp:5; -webkit-box-orient:vertical;
}
.dy-work-tile::after {
  content:"";
  position:absolute;
  inset:0;
  background:linear-gradient(to top,rgba(0,0,0,.55),transparent 54%);
  pointer-events:none;
}
.dy-work-tile-copy {
  position:absolute;
  z-index:2;
  left:7px;
  right:7px;
  bottom:24px;
  display:-webkit-box;
  overflow:hidden;
  color:rgba(255,255,255,.94);
  font-size:calc(10px * var(--vie-font-scale));
  line-height:1.35;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
  text-shadow:0 1px 2px rgba(0,0,0,.45);
}
.dy-work-tile-stat {
  position:absolute;
  z-index:2;
  left:7px;
  bottom:6px;
  display:flex;
  align-items:center;
  gap:4px;
  font-size:calc(10px * var(--vie-font-scale));
  text-shadow:0 1px 2px rgba(0,0,0,.55);
}
.dy-profile-grid-empty {
  grid-column:1/-1;
  min-height:220px;
  display:grid;
  place-items:center;
  align-content:center;
  gap:8px;
  color:rgba(255,255,255,.42);
  background:#161823;
  font-size:calc(13px * var(--vie-font-scale));
}
.dy-profile-grid-empty i { font-size:24px; }

/* 档案导入与他人主页 */
.dy-social-overlay {
  position:absolute;
  inset:0;
  z-index:120;
  display:flex;
  flex-direction:column;
  color:#fff;
  background:#161823;
  transform:translateX(100%);
  visibility:hidden;
  transition:transform .24s cubic-bezier(.22,1,.36,1),visibility 0s linear .24s;
}
.dy-social-overlay.active {
  transform:translateX(0);
  visibility:visible;
  transition-delay:0s;
}
.dy-social-overlay-header {
  height:52px;
  flex:0 0 52px;
  display:grid;
  grid-template-columns:44px minmax(0,1fr) 44px;
  align-items:center;
  border-bottom:.5px solid rgba(255,255,255,.08);
  padding:0 8px;
  background:#161823;
}
.dy-social-overlay-header strong { text-align:center; font-size:calc(16px * var(--vie-font-scale)); }
.dy-social-overlay-header button {
  appearance:none;
  width:40px;
  height:40px;
  border:0;
  display:grid;
  place-items:center;
  color:#fff;
  background:transparent;
  font-size:18px;
  cursor:pointer;
}
.dy-social-overlay-body { flex:1; overflow-y:auto; scrollbar-width:none; }
.dy-social-overlay-body::-webkit-scrollbar { display:none; }
.dy-picker-note { padding:14px 16px 8px; color:rgba(255,255,255,.48); font-size:calc(12px * var(--vie-font-scale)); line-height:1.55; }
.dy-picker-list { display:grid; }
.dy-picker-row {
  display:grid;
  grid-template-columns:48px minmax(0,1fr) auto;
  gap:12px;
  align-items:center;
  padding:12px 16px;
  border-bottom:.5px solid rgba(255,255,255,.07);
}
.dy-picker-avatar { width:48px; height:48px; }
.dy-picker-copy { min-width:0; }
.dy-picker-copy strong { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:calc(15px * var(--vie-font-scale)); }
.dy-picker-copy small { display:block; margin-top:3px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:rgba(255,255,255,.46); font-size:calc(11px * var(--vie-font-scale)); }
.dy-picker-row button {
  appearance: none;
  border: 0;
  border-radius: 3px;
  padding: 8px 14px;
  color: #fff;
  background: #fe2c55;
  font: inherit;
  font-size: calc(12px * var(--vie-font-scale));
  font-weight: 600;
  cursor: pointer;
}
.dy-person-follow-button {
  appearance: none;
  border: 0;
  font: inherit;
  cursor: pointer;
}
.dy-picker-row button[disabled] { color:rgba(255,255,255,.45); background:rgba(255,255,255,.08); cursor:default; }
.dy-picker-empty { min-height:260px; display:grid; place-items:center; align-content:center; gap:8px; color:rgba(255,255,255,.46); }

.dy-person-cover { background:linear-gradient(145deg,#2b2e39,#111219); }
.dy-person-main { margin-top:-28px; }

.dy-person-stat strong { margin-right:4px; }

/* 编辑资料弹窗 */
.dy-profile-editor-mask {
  position:absolute;
  inset:0;
  z-index:135;
  display:none;
  background:rgba(0,0,0,.62);
}
.dy-profile-editor-mask.active { display:block; }
.dy-profile-editor-sheet {
  position:absolute;
  left:0;
  right:0;
  bottom:0;
  z-index:136;
  max-height:86%;
  display:flex;
  flex-direction:column;
  color:#fff;
  background:#20212b;
  border-radius:10px 10px 0 0;
  transform:translateY(102%);
  transition:transform .26s cubic-bezier(.22,1,.36,1);
}
.dy-profile-editor-sheet.active { transform:translateY(0); }
.dy-profile-editor-header {
  min-height:52px;
  display:grid;
  grid-template-columns:54px minmax(0,1fr) 54px;
  align-items:center;
  border-bottom:.5px solid rgba(255,255,255,.08);
  padding:0 8px;
}
.dy-profile-editor-header strong { text-align:center; font-size:calc(16px * var(--vie-font-scale)); }
.dy-profile-editor-header button {
  appearance:none;
  border:0;
  padding:10px 6px;
  color:#fff;
  background:transparent;
  font:inherit;
  font-size:calc(13px * var(--vie-font-scale));
  cursor:pointer;
}
.dy-profile-editor-header button:last-child { color:#fe2c55; font-weight:650; }
.dy-profile-editor-body { overflow-y:auto; padding:6px 16px calc(var(--vie-safe-bottom) + 18px); }
.dy-profile-editor-media { display:grid; grid-template-columns:1fr 1fr; gap:10px; padding:10px 0 14px; }
.dy-profile-editor-media button {
  appearance:none;
  min-height:86px;
  border:0;
  border-radius:4px;
  display:grid;
  place-items:center;
  gap:5px;
  color:rgba(255,255,255,.9);
  background:rgba(255,255,255,.07);
  background-position:center;
  background-size:cover;
  font:inherit;
  cursor:pointer;
  overflow:hidden;
}
.dy-profile-editor-media button.has-image { text-shadow:0 1px 3px #000; }
.dy-profile-editor-media small { font-size:calc(11px * var(--vie-font-scale)); }
.dy-profile-edit-field {
  display:grid;
  grid-template-columns:74px minmax(0,1fr);
  gap:10px;
  align-items:center;
  min-height:48px;
  border-top:.5px solid rgba(255,255,255,.07);
}
.dy-profile-edit-field span { color:rgba(255,255,255,.62); font-size:calc(13px * var(--vie-font-scale)); }
.dy-profile-edit-field input,
.dy-profile-edit-field textarea {
  width:100%;
  min-width:0;
  border:0;
  outline:0;
  padding:12px 0;
  resize:none;
  color:#fff;
  background:transparent;
  font:inherit;
  font-size:calc(13px * var(--vie-font-scale));
}
.dy-profile-edit-field input::placeholder,
.dy-profile-edit-field textarea::placeholder { color:rgba(255,255,255,.28); }
.dy-profile-edit-field textarea { min-height:70px; line-height:1.5; }

/* 背景音乐可试听；列表操作仍保持紧凑。 */
.dy-sound-item { grid-template-columns:auto minmax(0,1fr) auto auto; }
.dy-sound-item button[data-dy-action="preview-sound"] { color:var(--logo-color); }
.dy-sound-item button.is-playing { color:#fe2c55; }
.dy-sound-strategy-note { margin:0 0 12px; color:var(--vie-text-muted); font-size:calc(11px * var(--vie-font-scale)); line-height:1.6; }
.dy-music {
  appearance:none;
  border:0;
  padding:0;
  color:inherit;
  background:transparent;
  font-family:inherit;
  text-align:left;
  cursor:pointer;
}
.dy-music.is-playing i { color:#fe2c55; }
.dy-sound-upload-row { grid-template-columns:minmax(0,1fr) auto auto; }
@media (max-width:380px) {
  .dy-sound-upload-row { grid-template-columns:1fr auto; }
  .dy-sound-upload-row > span { grid-column:1/-1; }
}

/* 抖音私信与 Char / NPC 资料生成。 */
.vie-viewport.douyin-active.douyin-message .system-status-bar {
  color:#161823;
  background:#fff;
  text-shadow:none;
}
.vie-viewport.douyin-active.douyin-chat .system-status-bar {
  color:#15171c;
  background:#f4f4f5;
  text-shadow:none;
}
#dy-tab-message {
  color:#15171c;
  background:#fff;
}
#dy-tab-message .dy-header-solid {
  height:58px;
  box-sizing:border-box;
  padding:8px 18px 9px;
  color:#15171c;
  background:#fff;
  border-bottom:0;
}
#dy-tab-message .dy-header-solid .dy-title {
  position:absolute;
  left:50%;
  top:50%;
  transform:translate(-50%,-50%);
  font-size:calc(19px * var(--vie-font-scale));
  font-weight:700;
  letter-spacing:.01em;
  color:#15171c;
}
#dy-tab-message .dy-header-action-button {
  width:34px;
  height:34px;
  color:#15171c;
}
#dy-tab-message .dy-header-action-button i {
  color:#15171c;
  font-size:calc(22px * var(--vie-font-scale));
}
.dy-message-header-side {
  display:flex;
  align-items:center;
  gap:13px;
  z-index:2;
}
.dy-message-header-right { margin-left:auto; gap:18px; }
.dy-message-brand {
  width:34px;
  height:34px;
  overflow:hidden;
  display:grid;
  place-items:center;
  border-radius:50%;
  background:#eef1f5;
  background-position:center;
  background-size:cover;
}
.dy-message-brand.has-image > * { display:none; }
.dy-message-scroll {
  box-sizing:border-box;
  padding-top:58px;
  padding-bottom:calc(var(--vie-safe-bottom) + 64px);
  background:#fff;
}
#dy-tab-message .dy-msg-shortcuts {
  min-height:132px;
  box-sizing:border-box;
  display:flex;
  justify-content:flex-start;
  align-items:flex-start;
  gap:18px;
  padding:14px 22px 12px;
  overflow-x:auto;
  border-bottom:0;
  background:#fff;
  scrollbar-width:none;
}
#dy-tab-message .dy-msg-shortcuts::-webkit-scrollbar { display:none; }
.dy-story-item {
  appearance:none;
  width:76px;
  flex:0 0 76px;
  border:0;
  padding:0;
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:8px;
  color:#25272d;
  background:transparent;
  font:inherit;
  cursor:pointer;
  -webkit-tap-highlight-color:transparent;
}
.dy-story-item > span:last-child {
  width:100%;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  text-align:center;
  font-size:calc(13px * var(--vie-font-scale));
}
.dy-story-avatar,
.dy-story-ring {
  width:64px;
  height:64px;
  flex:0 0 64px;
  border-radius:50%;
}
.dy-story-avatar {
  position:relative;
  display:grid;
  place-items:center;
  overflow:visible;
  background:#f0f1f3;
  background-position:center;
  background-size:cover;
}
.dy-story-avatar > .dy-avatar-placeholder-svg { border-radius:50%; overflow:hidden; }
.dy-story-ring {
  box-sizing:border-box;
  padding:3px;
  display:grid;
  place-items:center;
  background:conic-gradient(from 210deg,#22d97f,#04b8f3,#0fa7ff,#22d97f);
}
.dy-story-ring .dy-story-avatar {
  width:58px;
  height:58px;
  border:2px solid #fff;
  box-sizing:border-box;
  overflow:hidden;
}
.dy-story-plus {
  position:absolute;
  right:-1px;
  bottom:1px;
  width:22px;
  height:22px;
  display:grid;
  place-items:center;
  border:2px solid #fff;
  border-radius:50%;
  color:#fff;
  background:#2bd84d;
  font-size:12px;
}
.dy-story-settings {
  overflow:hidden;
  color:#a9acb2;
  background:#f3f3f4;
  font-size:28px;
}
#dy-tab-message .dy-message-list {
  display:grid;
  background:#fff;
}
#dy-tab-message .dy-message-row {
  min-height:74px;
  grid-template-columns:58px minmax(0,1fr) auto;
  gap:14px;
  padding:9px 22px;
  color:#15171c;
  background:#fff;
  border:0;
}
#dy-tab-message .dy-message-row:active { background:#f7f7f8; }
#dy-tab-message .dy-message-row-avatar {
  width:58px;
  height:58px;
  background:#eef0f2;
}
#dy-tab-message .dy-message-row-copy strong {
  color:#15171c;
  font-size:calc(17px * var(--vie-font-scale));
  font-weight:600;
}
#dy-tab-message .dy-message-row-copy small {
  margin-top:6px;
  color:#999ca3;
  font-size:calc(13px * var(--vie-font-scale));
}
#dy-tab-message .dy-message-row-time {
  padding-top:4px;
  color:#c4c6ca;
  font-size:calc(11px * var(--vie-font-scale));
}
.dy-message-system-avatar {
  width:58px;
  height:58px;
  display:grid;
  place-items:center;
  border-radius:50%;
  color:#fff;
  background:#ff397b;
  font-size:25px;
}
.dy-message-empty-note {
  padding:28px 24px;
  color:#999ca3;
  text-align:center;
  font-size:calc(13px * var(--vie-font-scale));
}
#dy-tab-message .dy-list-placeholder { color:#6f737b; background:#fff; }

.vie-viewport.douyin-active.douyin-message #dy-bottom-tabbar.solid .dy-create-inner {
  box-sizing:border-box;
}

.dy-chat-page {
  position:absolute;
  inset:0;
  z-index:180;
  display:grid;
  grid-template-rows:58px minmax(0,1fr) auto;
  color:#15171c;
  background:#f4f4f5;
  transform:translateX(100%);
  visibility:hidden;
  transition:transform .22s cubic-bezier(.22,1,.36,1),visibility 0s linear .22s;
}
.dy-chat-page.active {
  transform:translateX(0);
  visibility:visible;
  transition-delay:0s;
}
.dy-chat-header {
  min-width:0;
  display:grid;
  grid-template-columns:44px minmax(0,1fr) auto;
  align-items:center;
  padding:0 12px 0 8px;
  border-bottom:.5px solid #dedfe2;
  background:#f4f4f5;
}
.dy-chat-header button {
  appearance:none;
  border:0;
  padding:0;
  color:#13161c;
  background:transparent;
  font:inherit;
  cursor:pointer;
}
.dy-chat-back {
  width:42px;
  height:48px;
  display:grid;
  place-items:center;
  font-size:24px;
}
.dy-chat-peer {
  min-width:0;
  display:flex;
  align-items:center;
  gap:10px;
  text-align:left;
}
.dy-chat-peer-avatar {
  width:40px;
  height:40px;
  flex:0 0 40px;
  overflow:hidden;
  border:3px solid transparent;
  border-radius:50%;
  background:#e7e8eb;
  background-position:center;
  background-size:cover;
  outline:2px solid #23d789;
  outline-offset:-1px;
}
.dy-chat-peer-avatar.has-image > * { display:none; }
.dy-chat-peer-copy { min-width:0; display:grid; gap:2px; }
.dy-chat-peer-copy strong {
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  font-size:calc(17px * var(--vie-font-scale));
  line-height:1.1;
}
.dy-chat-peer-copy small {
  color:#92959c;
  font-size:calc(11px * var(--vie-font-scale));
}
.dy-chat-head-actions {
  display:flex;
  align-items:center;
  gap:20px;
  padding-left:12px;
}
.dy-chat-head-actions button {
  width:32px;
  height:42px;
  display:grid;
  place-items:center;
  font-size:22px;
}
.dy-chat-scroll {
  min-height:0;
  overflow-y:auto;
  padding:18px 16px 24px;
  background:#f4f4f5;
  scrollbar-width:none;
}
.dy-chat-scroll::-webkit-scrollbar { display:none; }
.dy-chat-message-stack { display:grid; gap:12px; }
.dy-chat-message-line { display:flex; }
.dy-chat-message-line.is-user { justify-content:flex-end; }
.dy-chat-message-line.is-friend { justify-content:flex-start; }
.dy-chat-bubble {
  max-width:min(74%,520px);
  padding:10px 13px;
  border-radius:14px;
  color:#17191e;
  background:#fff;
  box-shadow:0 1px 0 rgba(0,0,0,.03);
  font-size:calc(14px * var(--vie-font-scale));
  line-height:1.45;
  white-space:pre-wrap;
  word-break:break-word;
  overflow-wrap:anywhere;
}
.dy-chat-message-line.is-user .dy-chat-bubble { color:#fff; background:#161823; }
.dy-chat-empty { min-height:1px; }
.dy-chat-composer {
  min-height:58px;
  box-sizing:border-box;
  display:grid;
  grid-template-columns:36px minmax(0,1fr) 36px 36px 36px;
  align-items:end;
  gap:4px;
  padding:7px 12px calc(7px + var(--vie-safe-bottom));
  background:#f4f4f5;
}
.dy-chat-composer > button {
  appearance:none;
  width:36px;
  height:40px;
  border:0;
  display:grid;
  place-items:center;
  padding:0;
  color:#17191e;
  background:transparent;
  font:inherit;
  font-size:22px;
}
.dy-chat-composer > textarea {
  width:100%;
  min-height:42px;
  max-height:104px;
  box-sizing:border-box;
  border:0;
  border-radius:10px;
  padding:10px 12px;
  overflow-y:hidden;
  resize:none;
  outline:none;
  color:#202228;
  background:#fff;
  font:inherit;
  font-size:calc(15px * var(--vie-font-scale));
  line-height:22px;
  white-space:pre-wrap;
  overflow-wrap:anywhere;
  word-break:break-word;
}
.dy-chat-composer > textarea::placeholder { color:#a6a8ae; }

/* 手动生成页本身保持独立，不再暗示导入即生成。 */
.dy-profile-generator .dy-picker-note { line-height:1.7; }
.dy-generator-row button:disabled { opacity:.55; cursor:wait; }
.dy-profile-generator { color:#17191f; background:#fff; }
.dy-profile-generator .dy-social-overlay-header { color:#17191f; background:#fff; border-bottom:.5px solid #ececef; }
.dy-profile-generator .dy-social-overlay-header button { color:#17191f; }
.dy-profile-generator .dy-picker-note { color:#777b83; }
.dy-profile-generator .dy-picker-row { color:#17191f; background:#fff; border-bottom-color:#f0f0f2; }
.dy-profile-generator .dy-picker-copy small { color:#9b9ea5; }

/* 抖音资料页悬浮控件。 */
.dy-profile-nav.dy-profile-floating-nav,
.dy-person-floating-nav {
  position:absolute;
  left:0;
  right:0;
  display:flex;
  align-items:center;
  justify-content:space-between;
  box-sizing:border-box;
  pointer-events:none;
}
.dy-profile-nav.dy-profile-floating-nav .dy-profile-nav-right,
.dy-person-floating-nav-right {
  display:flex;
  align-items:center;
  gap:10px;
  pointer-events:auto;
}
.dy-profile-float-button,
.dy-profile-nav.dy-profile-floating-nav .dy-profile-nav-button {
  appearance:none;
  flex:0 0 36px;
  border:0;
  border-radius:50%;
  padding:0;
  display:grid;
  place-items:center;
  color:#fff;
  text-shadow:none;
  font:inherit;
  cursor:pointer;
  pointer-events:auto;
  -webkit-tap-highlight-color:transparent;
}
.dy-profile-float-button i,
.dy-profile-nav.dy-profile-floating-nav .dy-profile-nav-button i {
  color:#fff;
  line-height:1;
  text-shadow:none;
}
.dy-profile-float-button:active,
.dy-profile-nav.dy-profile-floating-nav .dy-profile-nav-button:active {
  transform:scale(.94);
  background:rgba(0,0,0,.55);
}
.dy-person-profile-overlay .dy-social-overlay-body {
  position:relative;
  flex:1;
  overflow-y:auto;
}

.dy-person-cover[role="button"] { cursor:pointer; }
/* 主页顶部不再出现硬导航栏；所有返回/搜索/更多按钮直接悬浮在背景图上。 */
#dy-person-profile .dy-social-overlay-header { display:none; }

/* 抖音资料区与悬浮导航。 */
#dy-tab-me {
  color:#161823;
  background:#fff;
}
#dy-tab-me .dy-profile-scroll {
  background:#fff;
  padding-bottom:calc(var(--vie-safe-bottom) + 55px);
}
#dy-tab-me .dy-profile-cover,
.dy-person-cover {
  height:220px;
  min-height:220px;
  position:relative;
  overflow:hidden;
  background-position:center;
  background-size:cover;
}
#dy-tab-me .dy-profile-cover::before,
.dy-person-cover::before {
  content:"";
  position:absolute;
  inset:0;
  z-index:1;
  pointer-events:none;
  background:linear-gradient(to bottom,rgba(0,0,0,.06) 0%,rgba(0,0,0,.06) 48%,rgba(0,0,0,.5) 100%);
}
#dy-tab-me .dy-profile-cover-placeholder {
  background-color:#4a9fcf;
  background-image:linear-gradient(145deg,#a8d8ee 0%,#63b3dd 46%,#1688c7 100%);
}
#dy-tab-me .dy-profile-cover-placeholder > .dy-image-placeholder-icon { opacity:.32; z-index:1; color:#fff; }
.dy-person-cover.is-placeholder {
  background-color:#7aa0b6;
  background-image:linear-gradient(145deg,#abc5d2 0%,#6f9db5 52%,#3f6c86 100%);
}
.dy-profile-nav.dy-profile-floating-nav,
.dy-person-floating-nav {
  top:calc(var(--status-bar-space) + 9px);
  z-index:5;
  padding:0 15px;
}
.dy-profile-float-button,
.dy-profile-nav.dy-profile-floating-nav .dy-profile-nav-button {
  width:38px;
  height:38px;
  flex-basis:38px;
  background:rgba(0,0,0,.38);
  -webkit-backdrop-filter:blur(11px) saturate(120%);
  backdrop-filter:blur(11px) saturate(120%);
  box-shadow:0 1px 4px rgba(0,0,0,.12);
}
.dy-profile-float-button i,
.dy-profile-nav.dy-profile-floating-nav .dy-profile-nav-button i { font-size:17px; }

#dy-tab-me .dy-profile-hero,
.dy-person-hero {
  position:absolute;
  left:16px;
  right:16px;
  bottom:18px;
  z-index:3;
  display:flex;
  align-items:center;
  gap:15px;
  min-width:0;
}
#dy-tab-me .dy-profile-avatar-img,
.dy-person-avatar {
  width:88px;
  height:88px;
  flex:0 0 88px;
  box-sizing:border-box;
  overflow:hidden;
  border:3px solid #fff;
  border-radius:50%;
  background-color:rgba(22,24,35,.75);
  background-position:center;
  background-size:cover;
}
#dy-tab-me .dy-profile-avatar-img.has-image { border-color:#fff; }
#dy-tab-me .dy-profile-hero-copy,
.dy-person-hero-copy { min-width:0; color:#fff; text-shadow:0 1px 3px rgba(0,0,0,.42); }
#dy-tab-me .dy-profile-name,
.dy-person-hero-copy h2 {
  margin:0 0 6px;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  color:#fff;
  font-size:calc(22px * var(--vie-font-scale));
  font-weight:750;
  line-height:1.16;
}
#dy-tab-me .dy-profile-id,
.dy-person-hero-copy .dy-person-handle {
  margin:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  color:rgba(255,255,255,.74);
  font-size:calc(12px * var(--vie-font-scale));
  line-height:1.2;
}

#dy-tab-me .dy-profile-main,
.dy-person-main {
  position:relative;
  z-index:4;
  box-sizing:border-box;
  margin:-1px 0 0;
  padding:16px 16px calc(var(--vie-safe-bottom) + 12px);
  color:#161823;
  background:#fff;
  border-radius:16px 16px 0 0;
}
#dy-tab-me .dy-profile-summary-row {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
}
#dy-tab-me .dy-profile-stats {
  flex:1;
  display:flex;
  align-items:flex-start;
  justify-content:flex-start;
  gap:18px;
  margin:0;
  min-width:0;
}
#dy-tab-me .dy-stat,
.dy-person-stat {
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:2px;
  color:#777b83;
  font-size:calc(11px * var(--vie-font-scale));
  line-height:1.25;
  white-space:nowrap;
}
#dy-tab-me .dy-stat-num,
.dy-person-stat strong {
  margin:0;
  color:#161823;
  font-size:calc(17px * var(--vie-font-scale));
  font-weight:750;
  line-height:1.15;
}
#dy-tab-me .dy-profile-actions {
  display:flex;
  align-items:center;
  gap:7px;
  margin:0;
  flex:0 0 auto;
}
#dy-tab-me .dy-profile-actions .dy-btn {
  min-height:34px;
  border-radius:5px;
  padding:0 13px;
  color:#161823;
  background:#f3f3f4;
  font-size:calc(12px * var(--vie-font-scale));
  font-weight:650;
}
#dy-tab-me .dy-profile-actions .dy-btn-icon { width:36px; padding:0; }
#dy-tab-me .dy-profile-desc {
  margin:12px 0 10px;
  color:#45484f;
  font-size:calc(13px * var(--vie-font-scale));
  line-height:1.5;
}

.dy-person-profile-overlay { color:#161823; background:#fff; }
.dy-person-profile-overlay .dy-social-overlay-body { background:#fff; }
.dy-person-stats {
  display:flex;
  align-items:flex-start;
  gap:28px;
  margin:0 0 13px;
}
.dy-person-bio {
  margin:0 0 14px;
  color:#33363c;
  font-size:calc(13px * var(--vie-font-scale));
  line-height:1.55;
  white-space:pre-wrap;
  word-break:break-word;
}
.dy-person-follow-button {
  width:100%;
  min-height:39px;
  box-sizing:border-box;
  margin:0 0 12px;
  border-radius:5px;
  padding:0 14px;
  color:#fff;
  background:#fe2c55;
  font-size:calc(14px * var(--vie-font-scale));
  font-weight:700;
}
.dy-person-follow-button.is-friend {
  color:#383b42;
  background:#f2f2f3;
}

#dy-tab-me .dy-profile-tabs-wrap,
.dy-person-tabs {
  position:sticky;
  top:0;
  z-index:5;
  margin:0 -16px;
  border-top:.5px solid #f1f1f2;
  border-bottom:.5px solid #ececef;
  background:#fff;
}
#dy-tab-me .dy-p-tab,
.dy-person-tabs .dy-p-tab {
  min-height:45px;
  padding:0;
  display:grid;
  place-items:center;
  grid-auto-flow:column;
  gap:4px;
  color:#8a8d94;
  font-size:calc(14px * var(--vie-font-scale));
  font-weight:550;
}
#dy-tab-me .dy-p-tab.active,
.dy-person-tabs .dy-p-tab.active { color:#161823; font-weight:700; }
#dy-tab-me .dy-p-tab.active::after,
.dy-person-tabs .dy-p-tab.active::after {
  width:34px;
  height:2px;
  background:#161823;
}
#dy-tab-me .dy-profile-work-grid,
.dy-person-work-grid {
  margin:0 -16px;
  gap:1px;
  background:#fff;
}
#dy-tab-me .dy-profile-grid-empty,
.dy-person-work-grid .dy-profile-grid-empty {
  min-height:72px;
  gap:6px;
  color:#a1a3a8;
  background:#fff;
  font-size:calc(12px * var(--vie-font-scale));
}
#dy-tab-me .dy-profile-grid-empty i,
.dy-person-work-grid .dy-profile-grid-empty i { display:none; }
#dy-tab-me .dy-work-tile-copy,
.dy-person-work-grid .dy-work-tile-copy { display:none; }
#dy-tab-me .dy-work-tile-stat,
.dy-person-work-grid .dy-work-tile-stat {
  left:7px;
  bottom:7px;
  gap:4px;
  color:#fff;
  font-size:calc(11px * var(--vie-font-scale));
}

/* 我页底部 Dock 与消息页统一为白底，并让中心加号在所有页面保持同一视觉尺寸。 */
.dy-create-inner {
  box-sizing:border-box;
  width:42px;
  height:31px;
  border-radius:9px;
}
.vie-viewport.douyin-active.douyin-me #dy-bottom-tabbar.solid,
.vie-viewport.douyin-active.douyin-message #dy-bottom-tabbar.solid {
  color:#15171c;
  background:#fff;
  border-top:.5px solid #ececef;
}
.vie-viewport.douyin-active.douyin-me #dy-bottom-tabbar.solid .dy-tab-item,
.vie-viewport.douyin-active.douyin-message #dy-bottom-tabbar.solid .dy-tab-item { color:#666a72; }
.vie-viewport.douyin-active.douyin-me #dy-bottom-tabbar.solid .dy-tab-item.active,
.vie-viewport.douyin-active.douyin-message #dy-bottom-tabbar.solid .dy-tab-item.active { color:#15171c; font-weight:700; }
.vie-viewport.douyin-active.douyin-me #dy-bottom-tabbar.solid .dy-create-inner,
.vie-viewport.douyin-active.douyin-message #dy-bottom-tabbar.solid .dy-create-inner {
  width:42px;
  height:31px;
  border:3px solid #15171c;
  border-radius:10px;
  color:#15171c;
  background:#fff;
}
.vie-viewport.douyin-active.douyin-me #dy-bottom-tabbar.solid .dy-create-inner::before,
.vie-viewport.douyin-active.douyin-me #dy-bottom-tabbar.solid .dy-create-inner::after,
.vie-viewport.douyin-active.douyin-message #dy-bottom-tabbar.solid .dy-create-inner::before,
.vie-viewport.douyin-active.douyin-message #dy-bottom-tabbar.solid .dy-create-inner::after { display:none; }
.vie-viewport.douyin-active.douyin-me #dy-bottom-tabbar.solid .dy-create-inner i,
.vie-viewport.douyin-active.douyin-message #dy-bottom-tabbar.solid .dy-create-inner i { color:#15171c; font-size:16px; }

/* 从消息等白色页面进入 Char/NPC 主页时，状态栏仍悬浮于背景图，不继承硬白导航底。 */
.vie-viewport.douyin-active.douyin-person-profile .system-status-bar {
  color:#fff;
  background:transparent;
  text-shadow:0 1px 2px rgba(0,0,0,.42);
}

/* 中心发布按钮的彩色边沿收进 42×31 外框，避免首页/朋友页看起来比消息/我页更大。 */
.dy-create-inner::before { left:0; width:7px; z-index:0; border-radius:9px 0 0 9px; }
.dy-create-inner::after { right:0; width:7px; z-index:0; border-radius:0 9px 9px 0; }
.dy-create-inner i { position:relative; z-index:1; }
.vie-viewport.douyin-active.douyin-me .system-status-bar {
  color:#fff;
  background:transparent;
  text-shadow:0 1px 2px rgba(0,0,0,.42);
}

/* 抖音私信与一起看页面。 */
.vie-viewport.douyin-active.douyin-watch .system-status-bar {
  color:#fff;
  background:#000;
  text-shadow:none;
}

.dy-chat-more-panel {
  position:absolute;
  left:0;
  right:0;
  bottom:calc(56px + var(--vie-safe-bottom));
  z-index:8;
  box-sizing:border-box;
  min-height:108px;
  padding:14px 18px 16px;
  border-top:.5px solid #e7e7e9;
  background:#f4f4f5;
  opacity:0;
  visibility:hidden;
  pointer-events:none;
  transform:translateY(12px);
  transition:opacity .16s ease,transform .16s ease,visibility 0s linear .16s;
}
.dy-chat-more-panel.active {
  opacity:1;
  visibility:visible;
  pointer-events:auto;
  transform:translateY(0);
  transition-delay:0s;
}
.dy-chat-more-panel > button {
  appearance:none;
  width:66px;
  border:0;
  padding:0;
  display:grid;
  justify-items:center;
  gap:7px;
  color:#202228;
  background:transparent;
  font:inherit;
}
.dy-chat-more-panel > button > span {
  width:52px;
  height:52px;
  display:grid;
  place-items:center;
  border-radius:12px;
  color:#161823;
  background:#fff;
  font-size:20px;
  box-shadow:0 1px 0 rgba(0,0,0,.03);
}
.dy-chat-more-panel > button > small { font-size:calc(11px * var(--vie-font-scale)); color:#686b72; }
.dy-chat-message-line.is-voice .dy-chat-bubble { display:flex; align-items:center; gap:8px; }
.dy-chat-message-line.is-voice .dy-chat-bubble > i { font-size:13px; opacity:.72; }
.dy-chat-message-line.is-typing .dy-chat-bubble { min-width:46px; display:flex; align-items:center; justify-content:center; gap:4px; padding:13px 12px; }
.dy-chat-message-line.is-typing .dy-chat-bubble > i { width:5px; height:5px; border-radius:50%; background:#9699a0; animation:dyTyping 1s ease-in-out infinite; }
.dy-chat-message-line.is-typing .dy-chat-bubble > i:nth-child(2) { animation-delay:.12s; }
.dy-chat-message-line.is-typing .dy-chat-bubble > i:nth-child(3) { animation-delay:.24s; }
@keyframes dyTyping { 0%,70%,100%{ transform:translateY(0); opacity:.45; } 35%{ transform:translateY(-3px); opacity:1; } }

.dy-watch-page {
  position:absolute;
  inset:0;
  z-index:190;
  display:grid;
  grid-template-rows:58px minmax(0,1fr);
  color:#fff;
  background:#000;
  transform:translateX(100%);
  visibility:hidden;
  transition:transform .22s cubic-bezier(.22,1,.36,1),visibility 0s linear .22s;
}
.dy-watch-page.active { transform:translateX(0); visibility:visible; transition-delay:0s; }
.dy-watch-header {
  position:relative;
  z-index:12;
  min-width:0;
  display:grid;
  grid-template-columns:44px minmax(0,1fr) auto;
  align-items:center;
  gap:8px;
  padding:0 10px 0 8px;
  background:#050505;
  border-bottom:.5px solid rgba(255,255,255,.08);
}
.dy-watch-icon-button {
  appearance:none;
  width:40px;
  height:44px;
  border:0;
  padding:0;
  display:grid;
  place-items:center;
  color:#fff;
  background:transparent;
  font:inherit;
  font-size:20px;
}
.dy-watch-participants { min-width:0; height:44px; display:flex; align-items:center; padding-left:3px; }
.dy-watch-avatar {
  width:34px;
  height:34px;
  box-sizing:border-box;
  display:grid;
  place-items:center;
  overflow:hidden;
  border:2px solid #050505;
  border-radius:50%;
  background:#24252b;
  background-size:cover;
  background-position:center;
}
.dy-watch-avatar + .dy-watch-avatar { margin-left:-10px; }
.dy-watch-avatar-user { z-index:2; }
.dy-watch-avatar.has-image > * { display:none; }
.dy-watch-head-actions { display:flex; align-items:center; gap:2px; }
.dy-watch-head-actions .dy-watch-icon-button { width:38px; font-size:19px; }

.dy-watch-feed {
  position:relative;
  min-height:0;
  overflow-y:auto;
  overscroll-behavior-y:contain;
  scroll-snap-type:y mandatory;
  scrollbar-width:none;
  -webkit-overflow-scrolling:touch;
  touch-action:pan-y;
  background:#000;
}
.dy-watch-feed::-webkit-scrollbar { display:none; }
.dy-watch-feed .dy-feed-post { height:100%; min-height:100%; }
.dy-watch-feed .dy-bottom-info { bottom:24px; }
.dy-watch-feed .dy-right-actions { bottom:62px; }
.dy-watch-shared-badge {
  position:absolute;
  top:14px;
  left:14px;
  z-index:8;
  display:inline-flex;
  align-items:center;
  gap:5px;
  padding:6px 9px;
  border-radius:999px;
  color:#fff;
  background:rgba(0,0,0,.45);
  font-size:calc(10px * var(--vie-font-scale));
  pointer-events:none;
}
.dy-watch-empty {
  height:100%;
  display:grid;
  place-items:center;
  align-content:center;
  gap:10px;
  padding:40px;
  color:#fff;
  text-align:center;
}
.dy-watch-empty > i { font-size:26px; opacity:.72; }
.dy-watch-empty strong { font-size:calc(17px * var(--vie-font-scale)); }
.dy-watch-empty span { color:rgba(255,255,255,.5); font-size:calc(12px * var(--vie-font-scale)); line-height:1.6; }

.dy-watch-chat-overlay {
  position:absolute;
  top:86px;
  left:12px;
  right:88px;
  bottom:var(--dy-watch-chat-bottom, 86px);
  z-index:204;
  display:grid;
  align-content:start;
  gap:8px;
  overflow:hidden;
  pointer-events:none;
  mask-image:linear-gradient(to bottom, rgba(0,0,0,1) 0%, rgba(0,0,0,.96) 56%, rgba(0,0,0,.42) 82%, transparent 100%);
  -webkit-mask-image:linear-gradient(to bottom, rgba(0,0,0,1) 0%, rgba(0,0,0,.96) 56%, rgba(0,0,0,.42) 82%, transparent 100%);
}
.dy-watch-chat-overlay.is-active .dy-watch-chat-line:first-child .dy-watch-chat-bubble { transform:translateY(0) scale(1.02); }

.dy-watch-input-panel {
  position:absolute;
  left:0;
  right:0;
  bottom:0;
  z-index:205;
  opacity:0;
  visibility:hidden;
  pointer-events:none;
  transform:translateY(10px);
  transition:.18s ease;
}
.dy-watch-input-panel.active { opacity:1; visibility:visible; pointer-events:auto; transform:translateY(0); }
.dy-watch-chat-line { display:flex; width:100%; font-size:calc(12px * var(--vie-font-scale)); line-height:1.5; opacity:var(--dy-watch-line-opacity, 1); transition:opacity .18s ease, transform .18s ease; }
.dy-watch-chat-line.is-friend { justify-content:flex-start; padding-right:68px; }
.dy-watch-chat-line.is-user { justify-content:flex-end; padding-left:68px; }
.dy-watch-chat-bubble {
  max-width:min(100%, 268px);
  padding:10px 13px;
  border-radius:16px;
  color:#fff;
  white-space:pre-wrap;
  word-break:break-word;
  overflow-wrap:anywhere;
  backdrop-filter:blur(14px);
  -webkit-backdrop-filter:blur(14px);
  box-shadow:0 10px 28px rgba(0,0,0,.24);
  background:rgba(12,12,14,.56);
  transform:translateY(0);
}
.dy-watch-chat-line.is-friend .dy-watch-chat-bubble { border-top-left-radius:9px; background:rgba(16,16,18,.62); }
.dy-watch-chat-line.is-user .dy-watch-chat-bubble { margin-left:auto; margin-right:0; border-top-right-radius:9px; background:rgba(255,255,255,.18); }
.dy-watch-chat-bubble i { margin-right:5px; opacity:.76; }
.dy-watch-chat-empty {
  width:max-content;
  max-width:220px;
  padding:8px 11px;
  border-radius:14px;
  color:rgba(255,255,255,.66);
  font-size:calc(11px * var(--vie-font-scale));
  background:rgba(12,12,14,.42);
  backdrop-filter:blur(12px);
  -webkit-backdrop-filter:blur(12px);
}
.dy-watch-chat-form {
  min-height:58px;
  box-sizing:border-box;
  display:grid;
  grid-template-columns:36px minmax(0,1fr) 36px 36px 36px;
  align-items:end;
  gap:4px;
  padding:7px 12px calc(7px + var(--vie-safe-bottom));
  color:#17191e;
  background:rgba(244,244,245,.96);
  border-top:.5px solid rgba(255,255,255,.5);
  backdrop-filter:blur(18px) saturate(1.08);
  -webkit-backdrop-filter:blur(18px) saturate(1.08);
}
.dy-watch-chat-form > button {
  appearance:none;
  width:36px;
  height:40px;
  border:0;
  padding:0;
  display:grid;
  place-items:center;
  color:#17191e;
  background:transparent;
  font:inherit;
  font-size:21px;
}
.dy-watch-chat-form > .dy-watch-chat-send { font-size:18px; }
.dy-watch-chat-field { min-width:0; display:block; align-self:stretch; }
.dy-watch-chat-field textarea {
  width:100%;
  min-height:42px;
  max-height:104px;
  box-sizing:border-box;
  border:0;
  border-radius:10px;
  padding:10px 12px;
  overflow-y:hidden;
  resize:none;
  outline:0;
  color:#202228;
  background:#fff;
  font:inherit;
  font-size:calc(15px * var(--vie-font-scale));
  line-height:22px;
  white-space:pre-wrap;
  overflow-wrap:anywhere;
  word-break:break-word;
}
.dy-watch-chat-field textarea::placeholder { color:#a6a8ae; }

.dy-watch-dialog-mask {
  position:absolute;
  inset:0;
  z-index:210;
  background:rgba(0,0,0,.58);
  opacity:0;
  visibility:hidden;
  pointer-events:none;
  transition:.18s ease;
}
.dy-watch-dialog-mask.active { opacity:1; visibility:visible; pointer-events:auto; }
.dy-watch-dialog {
  position:absolute;
  left:14px;
  right:14px;
  top:82px;
  z-index:214;
  box-sizing:border-box;
  padding:14px;
  border:1px solid rgba(255,255,255,.1);
  border-radius:16px;
  color:#fff;
  background:#202024;
  box-shadow:0 18px 48px rgba(0,0,0,.36);
  opacity:0;
  visibility:hidden;
  pointer-events:none;
  transform:translateY(-8px);
  transition:.18s ease;
}
.dy-watch-dialog.active { opacity:1; visibility:visible; pointer-events:auto; transform:translateY(0); }
.dy-watch-dialog > header { height:34px; display:flex; align-items:flex-start; justify-content:space-between; gap:14px; }
.dy-watch-dialog > header strong { font-size:calc(16px * var(--vie-font-scale)); }
.dy-watch-dialog > header button { appearance:none; width:30px; height:30px; border:0; display:grid; place-items:center; color:#fff; background:transparent; font-size:18px; }
.dy-watch-dialog textarea {
  width:100%;
  min-height:92px;
  box-sizing:border-box;
  resize:none;
  border:0;
  border-radius:12px;
  padding:11px;
  outline:0;
  color:#fff;
  background:#2c2c31;
  font:inherit;
  font-size:calc(13px * var(--vie-font-scale));
  line-height:1.55;
}
.dy-watch-dialog textarea::placeholder { color:rgba(255,255,255,.34); }
.dy-watch-dialog-note { margin-top:8px; color:rgba(255,255,255,.52); font-size:calc(11px * var(--vie-font-scale)); line-height:1.45; }
.dy-watch-primary-button { appearance:none; width:100%; height:42px; margin-top:10px; border:0; border-radius:11px; color:#fff; background:#fe2c55; font:inherit; font-weight:700; }
.dy-watch-settings-dialog { padding-bottom:8px; }
.dy-watch-setting-row { min-height:58px; display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:12px; border-top:.5px solid rgba(255,255,255,.08); }
.dy-watch-setting-row:first-of-type { border-top:0; }
.dy-watch-setting-row > span { min-width:0; display:grid; gap:3px; }
.dy-watch-setting-row > span strong { font-size:calc(13px * var(--vie-font-scale)); font-weight:600; }
.dy-watch-setting-row > span small { color:rgba(255,255,255,.42); font-size:calc(10px * var(--vie-font-scale)); line-height:1.35; }
.dy-watch-setting-row > input[type="checkbox"] { appearance:none; width:42px; height:24px; border:0; border-radius:999px; padding:2px; background:#44454b; transition:.16s ease; }
.dy-watch-setting-row > input[type="checkbox"]::before { content:""; display:block; width:20px; height:20px; border-radius:50%; background:#fff; transition:.16s ease; }
.dy-watch-setting-row > input[type="checkbox"]:checked { background:#34c759; }
.dy-watch-setting-row > input[type="checkbox"]:checked::before { transform:translateX(18px); }
.dy-watch-setting-number { grid-template-columns:minmax(0,1fr) 64px 14px; }
.dy-watch-setting-number > input { width:64px; height:34px; box-sizing:border-box; border:0; border-radius:8px; padding:0 8px; outline:0; color:#fff; background:#303035; text-align:right; font:inherit; font-size:calc(12px * var(--vie-font-scale)); }
.dy-watch-setting-number > em { color:rgba(255,255,255,.5); font-size:calc(11px * var(--vie-font-scale)); font-style:normal; }
.dy-watch-loading { position:absolute; inset:0; z-index:218; display:grid; place-items:center; align-content:center; gap:10px; color:#fff; background:rgba(0,0,0,.64); opacity:0; visibility:hidden; pointer-events:none; }
.dy-watch-loading.active { opacity:1; visibility:visible; pointer-events:auto; }
.dy-watch-loading i { font-size:25px; }
.dy-watch-loading span { font-size:calc(12px * var(--vie-font-scale)); color:rgba(255,255,255,.72); }

/* 一起看位于私信之上，因此评论层级需要继续覆盖一起看。 */
#douyin-app .dy-mask { z-index:230; }
#douyin-app .dy-comments-sheet { z-index:231; }
