/**
 * 视频详情页样式 - 抖音风格
 * vd- 前缀命名
 */

/* ==================== 主容器 ==================== */
.vd-main {
    position: absolute;
    inset: 0;
    display: flex;
    overflow: hidden;
    z-index: 100;
    background: #000;
}

/* 内联认证标识（用户名旁边） */
.vd-info-name .ls-avatar-verify,
.vd-bottom-info .ls-avatar-verify {
    position: static !important;
    display: inline-flex !important;
    align-items: center;
    vertical-align: middle;
    line-height: 0;
}

.vd-info-name .ls-avatar-verify img,
.vd-bottom-info .ls-avatar-verify img {
    width: 18px !important;
    height: 18px !important;
    display: block !important;
    border: none !important;
    position: static !important;
    border-radius: 0 !important;
}

/* ==================== 左侧视频区 ==================== */
.vd-left {
    flex: 1;
    min-width: 0;
    height: 100vh;
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
}

/* 滚动容器 */
.vd-scroll-wrap {
    position: relative;
    width: 100%;
    height: 100%;
    overflow: hidden;
}

/* 3-slot 滑动器 */
.vd-slider {
    position: absolute;
    top: -100%;
    left: 0;
    width: 100%;
    height: 300%;
    will-change: transform;
}

.vd-slider.vd-animating {
    transition: transform .5s cubic-bezier(0.16, 1, 0.3, 1);
}

.vd-slot {
    width: 100%;
    height: 33.3333%;
    position: relative;
    overflow: hidden;
}

/* ==================== 视频项 ==================== */
.vd-video-item {
    width: 100%;
    height: 100%;
    position: relative;
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
}

/* 模糊背景 */
.vd-bg {
    position: absolute;
    inset: 0;
    pointer-events: none;
    background: #000;
    overflow: hidden;
}

.vd-bg img {
    width: 120%;
    height: 120%;
    position: absolute;
    left: -10%;
    top: -10%;
    filter: blur(40px) brightness(0.4);
    object-fit: cover;
}

/* 播放器 */
.vd-player {
    position: relative;
    height: 100%;
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
}

.vd-player video {
    width: auto;
    height: 100%;
    max-width: 100%;
    max-height: 100%;
    outline: none;
    object-fit: contain;
    display: block;
}

/* 暂停图标 */
.vd-pause-icon {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    pointer-events: none;
    opacity: 0;
    transition: opacity .2s;
    z-index: 5;
}

.vd-pause-icon i {
    font-size: 72px;
    color: rgb(255 255 255 / 85%);
    filter: drop-shadow(0 2px 8px rgba(0,0,0,.4));
}

/* 视频加载中 spinner */
.vd-pause-icon .vd-spinner {
    width: 48px;
    height: 48px;
    border: 2.5px solid rgb(255 255 255 / 25%);
    border-top-color: rgb(255 255 255 / 85%);
    border-radius: 50%;
    animation: vd-spin 0.8s linear infinite;
    filter: drop-shadow(0 2px 8px rgba(0,0,0,.4));
}

@keyframes vd-spin {
    to { transform: rotate(360deg); }
}

.vd-player.vd-paused .vd-pause-icon {
    opacity: 1;
}

/* 加载中强制显示（不受 vd-paused 影响） */
.vd-player.vd-loading .vd-pause-icon {
    opacity: 1;
}

.vd-player.vd-loading .vd-pause-icon i {
    display: none;
}

/* 进度条：用 ::before 伪元素扩大点击热区，避免改动盒模型 */
.vd-progress {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    height: 3px;
    background: rgb(255 255 255 / 20%);
    z-index: 10;
    cursor: pointer;
    transition: height .15s;
}

/* 透明热区层：向上扩展 14px，让鼠标更容易触及 */
.vd-progress::before {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    top: -14px;
    bottom: 0;
}

.vd-progress:hover {
    height: 6px;
}

.vd-progress-bar {
    height: 100%;
    background: #fff;
    width: 0;
    transition: none;
    border-radius: 0 3px 3px 0;
}

.vd-progress-dot {
    position: absolute;
    bottom: 0;
    width: 14px;
    height: 14px;
    background: #fff;
    border-radius: 50%;
    transform: translate(-50%, 0) scale(0);
    transition: transform .15s;
    left: 0;
    box-shadow: 0 0 6px rgba(0,0,0,.4);
}

.vd-progress:hover .vd-progress-dot {
    transform: translate(-50%, 0) scale(1);
}

/* 进度条时间预览气泡 */
.vd-progress-time {
    position: absolute;
    bottom: 100%;
    left: 0;
    transform: translateX(-50%);
    background: rgba(0,0,0,.75);
    color: #fff;
    font-size: 12px;
    line-height: 1;
    padding: 4px 6px;
    border-radius: 4px;
    white-space: nowrap;
    pointer-events: none;
    opacity: 0;
    transition: opacity .15s;
    margin-bottom: 6px;
}

.vd-progress:hover .vd-progress-time {
    opacity: 1;
}

/* 封面/无权限 */
.vd-cover-locked {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 100%;
    width: 100%;
    position: relative;
}

.vd-cover-locked > img {
    height: 100%;
    max-width: 100%;
    filter: brightness(0.3) blur(8px);
    object-fit: cover;
    pointer-events: none;
    transform: scale(1.05);
}

.vd-locked-overlay {
    position: absolute;
    inset: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 12px;
    color: #fff;
    z-index: 5;
}

/* 权限卡片容器 */
.vd-power-mask {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 16px;
    max-width: 400px;
    width: 100%;
    padding: 0 20px;
}

.vd-power-header {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 15px;
    color: rgba(255,255,255,0.9);
}

.vd-power-header > i {
    font-size: 22px;
    opacity: 0.9;
}

.vd-power-cards {
    display: flex;
    flex-direction: column;
    gap: 10px;
    width: 100%;
}

.vd-power-card {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 12px 16px;
    background: rgba(255,255,255,0.12);
    backdrop-filter: blur(10px);
    border-radius: 10px;
    border: 1px solid rgba(255,255,255,0.15);
    transition: background 0.2s;
    flex-wrap: wrap;
}
.vd-power-card-quota {
    width: 100%;
    font-size: 12px;
    color: rgba(255,255,255,0.5);
    text-align: center;
}

.vd-power-card:hover {
    background: rgba(255,255,255,0.18);
}

.vd-power-card-icon {
    width: 32px;
    height: 32px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background: rgba(255,255,255,0.15);
    flex-shrink: 0;
}

.vd-power-card-icon i {
    font-size: 16px;
    color: #fff;
}

.vd-power-card-text {
    flex: 1;
    font-size: 13px;
    color: rgba(255,255,255,0.85);
    line-height: 1.4;
}

.vd-power-card-btn {
    padding: 5px 14px;
    border: none;
    border-radius: 16px;
    background: rgba(255,255,255,0.95);
    color: #333;
    font-size: 12px;
    font-weight: 500;
    cursor: pointer;
    white-space: nowrap;
    transition: background 0.2s, transform 0.15s;
    flex-shrink: 0;
}

.vd-power-card-btn:hover {
    background: #fff;
    transform: scale(1.03);
}

.vd-power-card-btn:active {
    transform: scale(0.97);
}

.vd-power-footer {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 12px;
    color: rgba(255,255,255,0.5);
}

.vd-power-footer i {
    font-size: 14px;
}

/* ==================== 状态提示 ==================== */
.vd-status-tip {
    position: absolute;
    top: 16px;
    left: 50%;
    transform: translateX(-50%);
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 8px 16px;
    border-radius: 8px;
    font-size: 13px;
    color: #fff;
    background: rgba(180, 83, 9, 0.85);
    backdrop-filter: blur(8px);
    z-index: 20;
    pointer-events: none;
    white-space: nowrap;
}

.vd-status-tip i { font-size: 16px; }

/* ==================== 底部信息栏（抖音风格） ==================== */
.vd-bottom-info {
    position: absolute;
    bottom: 64px;
    left: 20px;
    right: 100px;
    color: #fff;
    z-index: 11;
    pointer-events: auto;
    max-width: 50%;
}

.vd-info-name {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-bottom: 10px;
}

.vd-info-name a {
    font-size: 18px;
    font-weight: 700;
    color: #fff;
    text-decoration: none;
    transition: opacity .2s;
}

.vd-info-name a:hover {
    opacity: 0.8;
}

.vd-private-badge {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 2px 8px;
    background: rgba(123, 31, 162, 0.2);
    color: #e1bee7;
    border-radius: 12px;
    font-size: 12px;
    font-weight: 500;
}

.vd-private-badge i {
    font-size: 11px;
}

/* 内容折叠容器 */
.vd-info-body {
    font-size: 14px;
    line-height: 1.6;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    position: relative;
}

.vd-info-body.vd-no-clamp {
    -webkit-line-clamp: unset;
    display: block;
    overflow: visible;
}

.vd-bottom-info.vd-expanded .vd-info-body {
    -webkit-line-clamp: unset;
    display: block;
    overflow: visible;
}

.vd-info-desc {
    font-size: 14px;
    line-height: 1.6;
    color: rgb(255 255 255 / 90%);
    word-break: break-word;
}

.vd-info-content {
    font-size: 14px;
    line-height: 1.6;
    color: rgb(255 255 255 / 70%);
    word-break: break-word;
}

/* @用户链接 */
.vd-at-link {
    color: rgb(255 255 255 / 90%);
    font-weight: 500;
    text-decoration: none;
    transition: color .2s;
}

.vd-at-link:hover {
    color: #fff;
    text-decoration: underline;
}

/* 展开/收起按钮 */
.vd-info-toggle {
    display: inline-flex;
    align-items: center;
    gap: 2px;
    color: rgb(255 255 255 / 60%);
    font-size: 13px;
    cursor: pointer;
    transition: color .2s;
    margin-top: 4px;
}

.vd-info-toggle:hover {
    color: rgb(255 255 255 / 90%);
}

.vd-info-toggle i {
    font-size: 18px;
    transition: transform .2s;
}

.vd-bottom-info.vd-expanded .vd-info-toggle i {
    transform: rotate(180deg);
}

/* 合集入口 */
.vd-collection {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-top: 10px;
    padding: 8px 12px;
    background: rgb(255 255 255 / 10%);
    border-radius: 8px;
    cursor: pointer;
    transition: background .2s;
    max-width: 60%;
}

.vd-collection:hover {
    background: rgb(255 255 255 / 16%);
}

.vd-collection-icon {
    flex-shrink: 0;
    width: 32px;
    height: 32px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgb(255 255 255 / 15%);
    border-radius: 6px;
    font-size: 16px;
    color: #fff;
}

.vd-collection-info {
    flex: 1;
    min-width: 0;
    overflow: hidden;
}

.vd-collection-title {
    font-size: 13px;
    font-weight: 600;
    color: #fff;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.vd-collection-meta {
    font-size: 12px;
    color: rgb(255 255 255 / 50%);
    margin-top: 1px;
}

.vd-collection-nav {
    display: flex;
    flex-direction: column;
    flex-shrink: 0;
    gap: 2px;
}

.vd-collection-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 20px;
    border-radius: 4px;
    color: rgb(255 255 255 / 60%);
    transition: all .2s;
    cursor: pointer;
}

.vd-collection-btn:hover {
    color: #fff;
    background: rgb(255 255 255 / 12%);
}

.vd-collection-btn i {
    font-size: 18px;
}

.vd-collection-btn.vd-disabled {
    opacity: .3;
    cursor: default;
    pointer-events: none;
}

.vd-collection-icon img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: 6px;
}

/* ==================== 合集 Tab 内容（深色面板） ==================== */
#vd-collection-panel {
    display: flex;
    flex-direction: column;
    height: 100%;
    overflow: hidden;
}

.vd-collection-header {
    display: flex;
    gap: 12px;
    padding: 16px 20px;
    border-bottom: 1px solid rgb(255 255 255 / 6%);
    flex-shrink: 0;
}
.vd-collection-cover {
    flex-shrink: 0;
    width: 56px;
    height: 56px;
    border-radius: 8px;
    overflow: hidden;
    background: rgb(255 255 255 / 8%);
}
.vd-collection-cover img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.vd-collection-cover-empty {
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    color: rgb(255 255 255 / 30%);
    font-size: 24px;
    background: rgb(255 255 255 / 8%);
}
.vd-collection-detail {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    justify-content: center;
}
.vd-collection-detail-title {
    font-size: 15px;
    font-weight: 600;
    color: rgb(255 255 255 / 90%);
    margin-bottom: 4px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.vd-collection-detail-desc {
    font-size: 12px;
    color: rgb(255 255 255 / 45%);
    margin-bottom: 4px;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    line-height: 1.5;
}
.vd-collection-detail-meta {
    font-size: 12px;
    color: rgb(255 255 255 / 35%);
}

/* 合集视频列表 */
.vd-collection-list {
    flex: 1;
    min-height: 0;
    overflow-x: hidden;
    overflow-y: auto;
    padding: 4px 0;
}
.vd-collection-list::-webkit-scrollbar {
    width: 4px;
}
.vd-collection-list::-webkit-scrollbar-track {
    background: none;
}
.vd-collection-list::-webkit-scrollbar-thumb {
    background: rgb(255 255 255 / 15%);
    border-radius: 4px;
}

/* 合集视频项 */
.vd-collection-item {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px 20px;
    text-decoration: none;
    color: inherit;
    transition: background .2s;
    position: relative;
    cursor: pointer;
}
.vd-collection-item:hover {
    background: rgb(255 255 255 / 6%);
}

/* 当前播放项 */
.vd-collection-item.ls-on {
    background: rgb(255 255 255 / 10%);
}
.vd-collection-item.ls-on .vd-collection-item-index {
    color: #fe2c55;
    font-weight: 700;
}
.vd-collection-item.ls-on .vd-collection-item-title {
    color: #fff;
    font-weight: 600;
}
.vd-collection-item.ls-on .vd-equalizer {
    display: flex;
}
.vd-collection-item.ls-on .vd-collection-item-cover {
    outline: 2px solid #fe2c55;
    outline-offset: -2px;
}
.vd-collection-item.ls-on .vd-collection-item-dur {
    display: none;
}

/* 序号 */
.vd-collection-item-index {
    flex-shrink: 0;
    width: 24px;
    text-align: center;
    font-size: 13px;
    font-weight: 600;
    color: rgb(255 255 255 / 35%);
}

/* 封面 */
.vd-collection-item-cover {
    flex-shrink: 0;
    width: 96px;
    height: 54px;
    border-radius: 6px;
    overflow: hidden;
    position: relative;
    background: #000;
}
.vd-collection-item-cover img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform .3s;
}
.vd-collection-item:hover .vd-collection-item-cover img {
    transform: scale(1.05);
}
.vd-collection-item-dur {
    position: absolute;
    bottom: 4px;
    right: 4px;
    padding: 1px 5px;
    border-radius: 3px;
    background: rgb(0 0 0 / 70%);
    color: #fff;
    font-size: 10px;
    line-height: 16px;
}

/* 内容 */
.vd-collection-item-body {
    flex: 1;
    min-width: 0;
}
.vd-collection-item-title {
    font-size: 13px;
    color: rgb(255 255 255 / 80%);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    margin-bottom: 4px;
    line-height: 20px;
}
.vd-collection-item-meta {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 11px;
    color: rgb(255 255 255 / 35%);
}
.vd-collection-item-meta i {
    font-size: 12px;
    margin-right: 2px;
}

/* 标签 */
.vd-info-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-top: 10px;
}

.vd-info-tag {
    padding: 3px 10px;
    border-radius: 4px;
    background: rgb(255 255 255 / 12%);
    color: rgb(255 255 255 / 90%);
    font-size: 13px;
    text-decoration: none;
    transition: background .2s;
    font-weight: 500;
}

.vd-info-tag:hover {
    background: rgb(255 255 255 / 22%);
}

/* 位置定位 */
.vd-info-location {
    display: flex;
    align-items: center;
    gap: 4px;
    margin-top: 8px;
    font-size: 13px;
    color: rgb(255 255 255 / 50%);
}

.vd-info-location i {
    font-size: 14px;
}

/* ==================== 右侧互动栏（抖音风格，每个视频独立） ==================== */
.vd-action-bar {
    position: absolute;
    right: 16px;
    bottom: 100px;
    z-index: 12;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 18px;
}

/* 作者头像 */
.vd-action-avatar {
    position: relative;
    margin-bottom: 6px;
}

.vd-action-avatar a {
    display: block;
    width: 48px;
    height: 48px;
    border-radius: 50%;
    overflow: hidden;
    border: 2px solid #fff;
}

.vd-action-avatar img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.vd-avatar-follow-btn {
    position: absolute;
    bottom: -8px;
    left: 50%;
    transform: translateX(-50%);
    width: 22px;
    height: 22px;
    background: #fe2c55;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    border: 2px solid #000;
    transition: transform .2s, opacity .3s;
}

.vd-avatar-follow-btn i {
    font-size: 14px;
    color: #fff;
    line-height: 1;
}

.vd-avatar-follow-btn:hover {
    transform: translateX(-50%) scale(1.15);
}

.vd-avatar-follow-btn.vd-hide {
    display: none;
}

/* 关注成功动画 */
.vd-avatar-follow-btn.vd-followed {
    animation: vd-follow-pop .5s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards;
}

@keyframes vd-follow-pop {
    0% { transform: translateX(-50%) scale(1); opacity: 1; }
    40% { transform: translateX(-50%) scale(1.5); opacity: 1; }
    100% { transform: translateX(-50%) scale(0); opacity: 0; }
}

/* 互动按钮 */
.vd-action-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 2px;
    cursor: pointer;
    transition: transform .15s;
}

.vd-action-item:hover {
    transform: scale(1.08);
}

.vd-action-item:active {
    transform: scale(0.95);
}

.vd-action-icon {
    width: 48px;
    height: 48px;
    border-radius: 50%;
    background: rgb(255 255 255 / 10%);
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background .2s;
}

.vd-action-item:hover .vd-action-icon {
    background: rgb(255 255 255 / 18%);
}

.vd-action-icon i {
    font-size: 24px;
    color: #fff;
    transition: color .15s;
}

.vd-action-num {
    font-size: 12px;
    color: rgb(255 255 255 / 85%);
    font-weight: 500;
    line-height: 16px;
    text-align: center;
}

/* 喜欢激活 */
.vd-action-item.ls-liked .vd-action-icon {
    background: rgb(254 44 85 / 15%);
}

.vd-action-item.ls-liked .vd-action-icon i {
    color: #fe2c55;
}

/* 收藏激活 */
.vd-action-item.ls-collected .vd-action-icon {
    background: rgb(245 158 11 / 15%);
}

.vd-action-item.ls-collected .vd-action-icon i {
    color: #f59e0b;
}

/* 弹跳动画 */
.vd-action-item.vd-bounce {
    animation: vd-bounce .45s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}

@keyframes vd-bounce {
    0% { transform: scale(1); }
    30% { transform: scale(1.35); }
    50% { transform: scale(0.9); }
    70% { transform: scale(1.1); }
    100% { transform: scale(1); }
}

/* 禁止评论状态 */
.vd-action-item.vd-comment-closed {
    cursor: not-allowed;
    opacity: 0.45;
}

.vd-action-item.vd-comment-closed:hover {
    transform: none;
}

.vd-action-item.vd-comment-closed:hover .vd-action-icon {
    background: rgb(255 255 255 / 8%);
}

/* 评论框禁止评论状态 */
.ls-comment-closed .ls-comment-textarea {
    opacity: 0.5;
    cursor: not-allowed;
}

.ls-comment-closed .ls-comment-submit.ls-disabled {
    opacity: 0.4;
    cursor: not-allowed;
    pointer-events: auto;
}

.ls-comment-closed .ls-comment-toolbar .tool-btn.ls-disabled {
    opacity: 0.4;
    cursor: not-allowed;
    pointer-events: none;
}

/* ==================== 左上角工具栏 ==================== */
.vd-toolbar-left {
    position: fixed;
    left: 24px;
    top: 24px;
    display: flex;
    flex-direction: column;
    gap: 18px;
    z-index: 101;
}

.vd-tool-btn {
    width: 48px;
    height: 48px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgb(255 255 255 / 10%);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    border-radius: 50%;
    color: #fff;
    font-size: 20px;
    cursor: pointer;
    transition: background .2s;
}

.vd-tool-btn:hover {
    background: rgb(255 255 255 / 20%);
}

.vd-tool-btn:active {
    transform: scale(0.92);
}

/* 静音按钮（在工具栏内，继承 vd-tool-btn 样式） */
.vd-btn-mute {
    border: none;
    outline: none;
    transition: background .2s, color .2s;
}

.vd-btn-mute.vd-muted {
    color: #fe2c55;
    background: rgb(254 44 85 / 15%);
}

.vd-btn-mute.vd-muted:hover {
    background: rgb(254 44 85 / 25%);
}

/* 权限图标按钮 */
.vd-btn-power {
    color: #ffb74d;
    background: rgb(255 152 0 / 15%);
    font-size: 18px;
    position: relative;
}

.vd-btn-power:hover {
    background: rgb(255 152 0 / 25%);
}

/* 面板切换按钮（视频区域右上角） */
.vd-btn-panel {
    position: absolute;
    right: 16px;
    top: 24px;
    width: 48px;
    height: 48px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgb(255 255 255 / 10%);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    border-radius: 50%;
    color: #fff;
    font-size: 20px;
    cursor: pointer;
    z-index: 101;
    transition: background .2s;
    border: none;
    outline: none;
}

.vd-btn-panel:hover {
    background: rgb(255 255 255 / 20%);
}

.vd-btn-panel:active {
    transform: scale(0.92);
}

/* ==================== 右侧面板（常驻） ==================== */
.vd-right {
    width: 420px;
    min-width: 420px;
    height: 100vh;
    background: #161823;
    display: flex;
    flex-direction: column;
    position: relative;
    z-index: 10;
    border-left: 1px solid rgb(255 255 255 / 8%);
    transition: margin-right .35s cubic-bezier(0.16, 1, 0.3, 1), opacity .35s;
}

.vd-right.vd-panel-hidden {
    margin-right: -420px;
    opacity: 0;
    pointer-events: none;
}

/* Tab 菜单 */
.vd-tabs {
    display: flex;
    align-items: center;
    height: 46px;
    padding: 0 20px;
    gap: 24px;
    flex-shrink: 0;
    border-bottom: 1px solid rgb(255 255 255 / 6%);
}

.vd-tab-item {
    font-size: 15px;
    color: rgb(255 255 255 / 50%);
    cursor: pointer;
    position: relative;
    line-height: 46px;
    transition: color .2s;
    font-weight: 500;
}

.vd-tab-item:hover {
    color: rgb(255 255 255 / 80%);
}

.vd-tab-item.ls-on {
    color: #fff;
    font-weight: 600;
}

.vd-tab-item.ls-on::after {
    content: "";
    position: absolute;
    bottom: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 24px;
    height: 3px;
    background: #fe2c55;
    border-radius: 2px;
}

/* Tab 内容区 */
.vd-tab-body {
    flex: 1;
    min-height: 0;
    position: relative;
    overflow: hidden;
}

.vd-tab-panel {
    display: none;
    height: 100%;
    flex-direction: column;
}

.vd-tab-panel.ls-on {
    display: flex;
}

/* ==================== 推荐列表 ==================== */
.vd-recommend-list {
    height: 100%;
    overflow-x: hidden;
    overflow-y: auto;
    padding: 12px 16px;
}

.vd-recommend-list::-webkit-scrollbar {
    width: 4px;
}

.vd-recommend-list::-webkit-scrollbar-track {
    background: none;
}

.vd-recommend-list::-webkit-scrollbar-thumb {
    background: rgb(255 255 255 / 15%);
    border-radius: 4px;
}

.vd-recommend-item {
    display: flex;
    gap: 12px;
    padding: 10px 8px;
    border-radius: 8px;
    cursor: pointer;
    text-decoration: none;
    color: #fff;
    transition: background .2s;
}

.vd-recommend-item:hover {
    background: rgb(255 255 255 / 6%);
}

.vd-recommend-item.ls-on {
    background: rgb(255 255 255 / 10%);
}

.vd-recommend-cover {
    width: 130px;
    height: 78px;
    border-radius: 8px;
    overflow: hidden;
    flex-shrink: 0;
    position: relative;
}

.vd-recommend-cover img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform .3s;
}

.vd-recommend-item:hover .vd-recommend-cover img {
    transform: scale(1.08);
}

.vd-recommend-dur {
    position: absolute;
    right: 6px;
    bottom: 6px;
    font-size: 11px;
    background: rgb(0 0 0 / 65%);
    color: #fff;
    padding: 1px 5px;
    border-radius: 3px;
    line-height: 16px;
}

.vd-recommend-play {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    transition: opacity .2s;
}

.vd-recommend-item:hover .vd-recommend-play {
    opacity: 1;
    background: rgb(0 0 0 / 30%);
}

.vd-recommend-item.ls-on:hover .vd-recommend-play {
    opacity: 0;
}

.vd-recommend-play i {
    font-size: 28px;
    color: #fff;
    filter: drop-shadow(0 1px 3px rgba(0,0,0,.3));
}

.vd-recommend-body {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 8px;
}

.vd-recommend-title {
    font-size: 14px;
    line-height: 20px;
    color: rgb(255 255 255 / 90%);
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    overflow: hidden;
}

.vd-recommend-meta {
    display: flex;
    align-items: center;
    justify-content: space-between;
    font-size: 12px;
    color: rgb(255 255 255 / 45%);
}

.vd-recommend-views {
    display: flex;
    align-items: center;
    gap: 3px;
}

/* 当前播放项 - 音谱均衡器动画 */
.vd-equalizer {
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    display: none;
    align-items: flex-end;
    gap: 2px;
    height: 16px;
    z-index: 3;
}

.vd-equalizer span {
    display: block;
    width: 3px;
    background: #fe2c55;
    border-radius: 1.5px;
    animation: vd-eq-bar 1s ease-in-out infinite;
}

.vd-equalizer span:nth-child(1) { height: 40%; animation-delay: 0s; }
.vd-equalizer span:nth-child(2) { height: 70%; animation-delay: 0.15s; }
.vd-equalizer span:nth-child(3) { height: 50%; animation-delay: 0.3s; }
.vd-equalizer span:nth-child(4) { height: 80%; animation-delay: 0.45s; }

.vd-recommend-item.ls-on .vd-equalizer {
    display: flex;
}

/* 推荐列表当前播放项红色边框 */
.vd-recommend-item.ls-on .vd-recommend-cover {
    outline: 2px solid #fe2c55;
    outline-offset: -2px;
}

/* 隐藏正在播放项的时长标签，避免和均衡器重叠 */
.vd-recommend-item.ls-on .vd-recommend-dur {
    display: none;
}

@keyframes vd-eq-bar {
    0%, 100% { height: 20%; }
    25% { height: 80%; }
    50% { height: 40%; }
    75% { height: 100%; }
}

/* ==================== 评论区 ==================== */
.vd-comment-wrap {
    height: 100%;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

/* ==================== 评论区深色适配 ==================== */
.vd-comment-wrap .ls-comment-box {
    background: transparent;
    color: rgb(255 255 255 / 90%);
    display: flex;
    flex-direction: column;
    height: 100%;
    border-top: none;
}

/* 评论区深色背景：认证标识边框适配 */
.vd-comment-wrap .ls-avatar .ls-avatar-verify img {
    border-color: rgb(30 30 30);
    background: rgb(30 30 30);
}

/* 菜单栏 */
.vd-comment-wrap .ls-comment-menu {
    border-bottom: 1px solid rgb(255 255 255 / 8%) !important;
    padding: 12px 16px;
    background: transparent;
}

.vd-comment-wrap .ls-comment-count {
    color: rgb(255 255 255 / 80%);
}

.vd-comment-wrap .ls-comment-count em {
    color: #fff;
}

.vd-comment-wrap .ls-comment-tabs {
    background: transparent !important;
}

.vd-comment-wrap .ls-comment-tabs .tab-item {
    color: rgb(255 255 255 / 50%) !important;
    background: transparent !important;
    border-color: transparent !important;
}

.vd-comment-wrap .ls-comment-tabs .tab-item:hover {
    color: rgb(255 255 255 / 75%) !important;
}

.vd-comment-wrap .ls-comment-tabs .tab-item.on {
    color: #fff !important;
}

/* 评论输入框 */
.vd-comment-wrap .ls-comment-form {
    padding: 12px 16px;
}

.vd-comment-wrap .ls-comment-textarea {
    background: rgb(255 255 255 / 8%) !important;
    border: 1px solid rgb(255 255 255 / 10%) !important;
    color: #fff !important;
    border-radius: 8px;
}

.vd-comment-wrap .ls-comment-textarea::placeholder {
    color: rgb(255 255 255 / 35%);
}

.vd-comment-wrap .ls-comment-textarea:focus {
    border-color: rgb(255 255 255 / 20%) !important;
    background: rgb(255 255 255 / 10%) !important;
}

/* LSEditor 深色适配 */
.vd-comment-wrap .ls-comment-form .ls-editor {
    color: #fff;
}

.vd-comment-wrap .ls-comment-form .ls-editor:empty:not(:focus)::before {
    color: rgb(255 255 255 / 35%);
}

.vd-comment-wrap .ls-comment-reply-form .ls-editor {
    color: #fff;
}

.vd-comment-wrap .ls-comment-reply-form .ls-editor:empty:not(:focus)::before {
    color: rgb(255 255 255 / 35%);
}

.vd-comment-wrap .ls-comment-toolbar {
    border-top: 1px solid rgb(255 255 255 / 6%) !important;
    background: transparent;
}

.vd-comment-wrap .ls-comment-toolbar .tool-btn {
    color: rgb(255 255 255 / 50%);
}

.vd-comment-wrap .ls-comment-toolbar .tool-btn:hover {
    color: rgb(255 255 255 / 80%);
}

.vd-comment-wrap .ls-comment-submit {
    background: #fe2c55 !important;
    color: #fff !important;
    border: none !important;
    border-radius: 4px;
}

/* 评论图片上传区 */
.vd-comment-wrap .ls-comment-img-list {
    border-color: rgb(255 255 255 / 8%) !important;
}

/* @用户标签 */
.vd-comment-wrap .ls-at-tags {
    background: transparent;
}

.vd-comment-wrap .ls-at-tags .ls-at-tag {
    background: rgb(255 255 255 / 10%) !important;
    color: rgb(255 255 255 / 80%) !important;
    border-color: rgb(255 255 255 / 15%) !important;
}

/* 评论列表 */
.vd-comment-wrap .ls-comment-list {
    flex: 1;
    overflow-y: auto;
    padding: 0 16px;
}

.vd-comment-wrap .ls-comment-list::-webkit-scrollbar {
    width: 4px;
}

.vd-comment-wrap .ls-comment-list::-webkit-scrollbar-thumb {
    background: rgb(255 255 255 / 15%);
    border-radius: 4px;
}

/* 评论用户名 */
.vd-comment-wrap .ls-ci-header .ls-ci-name,
.vd-comment-wrap .ls-ci-header .ls-ci-name a,
.vd-comment-wrap .ls-ci-user,
.vd-comment-wrap .ls-ci-user a {
    color: rgb(255 255 255 / 85%) !important;
}

.vd-comment-wrap .ls-ci-user:hover,
.vd-comment-wrap .ls-ci-user a:hover {
    color: #4ea4f6 !important;
}

.vd-comment-wrap .ls-ci-nickname {
    color: inherit !important;
}

/* 评论等级/VIP标签 */
.vd-comment-wrap .ls-ci-header .ls-ci-lv,
.vd-comment-wrap .ls-ci-header .ls-ci-vip {
    opacity: 0.85;
}

/* 作者标 */
.vd-comment-wrap .ls-ci-header .ls-ci-author-tag {
    background: rgb(254 44 85 / 15%) !important;
    color: #fe2c55 !important;
    border-color: rgb(254 44 85 / 25%) !important;
}

/* 评论内容 */
.vd-comment-wrap .ls-ci-content {
    color: rgb(255 255 255 / 80%);
}

.vd-comment-wrap .ls-ci-content a {
    color: #4ea4f6 !important;
}

/* 引用回复 */
.vd-comment-wrap .ls-ci-quote {
    background: rgb(255 255 255 / 5%) !important;
    border-color: rgb(255 255 255 / 10%) !important;
    color: rgb(255 255 255 / 60%) !important;
}

/* 评论图片 */
.vd-comment-wrap .ls-ci-images img {
    border-color: rgb(255 255 255 / 10%) !important;
}

/* 操作栏 */
.vd-comment-wrap .ls-ci-bar {
    color: rgb(255 255 255 / 40%);
}

.vd-comment-wrap .ls-ci-bar-left {
    color: rgb(255 255 255 / 35%) !important;
}

.vd-comment-wrap .ls-ci-bar-left span,
.vd-comment-wrap .ls-ci-bar-left .ls-ci-time {
    color: rgb(255 255 255 / 35%) !important;
}

.vd-comment-wrap .ls-ci-bar-right > span {
    color: rgb(255 255 255 / 45%) !important;
}

.vd-comment-wrap .ls-ci-bar-right > span:hover {
    color: rgb(255 255 255 / 75%) !important;
    background: rgb(255 255 255 / 8%) !important;
}

.vd-comment-wrap .ls-ci-bar span,
.vd-comment-wrap .ls-ci-bar .ls-ci-time {
    color: rgb(255 255 255 / 35%) !important;
}

.vd-comment-wrap .ls-ci-bar .ls-ci-action {
    color: rgb(255 255 255 / 45%) !important;
}

.vd-comment-wrap .ls-ci-bar .ls-ci-action:hover {
    color: rgb(255 255 255 / 75%) !important;
}

.vd-comment-wrap .ls-ci-bar .ls-ci-action.ls-liked,
.vd-comment-wrap .ls-ci-bar .ls-ci-action.ls-liked i {
    color: #fe2c55 !important;
}

/* 点赞激活深色适配 */
.vd-comment-wrap .ls-ci-up.is-up {
    color: #fe2c55 !important;
}

.vd-comment-wrap .ls-ci-up.is-up:hover {
    color: #fe2c55 !important;
    background: rgb(254 44 85 / 10%) !important;
}

/* 评论项间距修复 */
.vd-comment-wrap .ls-comment-item {
    border-bottom: 1px solid rgb(255 255 255 / 6%) !important;
    border-top: none !important;
}

.vd-comment-wrap .ls-comment-list > .ls-comment-item + .ls-comment-item {
    border-top: none !important;
}

/* 引用回复深色适配 */
.vd-comment-wrap .ls-ci-reply-ref {
    background: rgb(255 255 255 / 5%) !important;
    border-color: rgb(255 255 255 / 10%) !important;
    color: rgb(255 255 255 / 50%) !important;
}

.vd-comment-wrap .ls-ci-reply-ref:hover {
    background: rgb(255 255 255 / 8%) !important;
}

/* 置顶标签深色适配 */
.vd-comment-wrap .ls-ci-content .comment-sticky {
    color: #fe2c55 !important;
    border-color: rgb(254 44 85 / 30%) !important;
}

/* 子评论 */
.vd-comment-wrap .ls-ci-child-toggle {
    color: #4ea4f6 !important;
}

.vd-comment-wrap .ls-ci-expand {
    color: #4ea4f6 !important;
}

.vd-comment-wrap .ls-ci-expand:hover {
    opacity: 0.8;
}

.vd-comment-wrap .ls-ci-child-list {
    border-left: 2px solid rgb(255 255 255 / 8%) !important;
}

/* 回复框 */
.vd-comment-wrap .ls-comment-reply-form {
    background: rgb(255 255 255 / 3%) !important;
    border-color: rgb(255 255 255 / 8%) !important;
}

.vd-comment-wrap .ls-comment-reply-form .ls-comment-textarea {
    background: rgb(255 255 255 / 6%) !important;
}

/* 评论空状态 */
.vd-comment-wrap .ls-comment-empty {
    color: rgb(255 255 255 / 40%);
}

/* 加载更多 */
.vd-comment-wrap .ls-comment-load-more {
    color: rgb(255 255 255 / 45%) !important;
    border-color: rgb(255 255 255 / 8%) !important;
}

.vd-comment-wrap .ls-comment-load-more:hover {
    color: rgb(255 255 255 / 70%) !important;
}

/* ==================== 作者面板 ==================== */
.vd-author-info {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 16px 20px;
}

/* 作者头像深色背景适配 */
.vd-author-info .ls-avatar .ls-avatar-verify img {
    border-color: rgb(30 30 30);
    background: rgb(30 30 30);
}

.vd-author-body {
    flex: 1;
    min-width: 0;
}

.vd-author-name {
    font-size: 16px;
    line-height: 24px;
    display: flex;
    align-items: center;
    gap: 6px;
}

.vd-author-name a {
    color: #fff;
    text-decoration: none;
}

.vd-author-stats {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 12px;
    color: rgb(255 255 255 / 55%);
    line-height: 18px;
}

.vd-author-stats i {
    width: 1px;
    height: 10px;
    background: rgb(255 255 255 / 20%);
    display: block;
}

.vd-author-follow {
    white-space: nowrap;
    padding: 6px 20px;
    border-radius: 4px;
    border: none;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    background: #fe2c55;
    color: #fff;
    transition: opacity .2s;
}

.vd-author-follow:hover {
    opacity: 0.85;
}

.vd-author-follow.had,
.vd-author-follow.followed {
    background: rgb(255 255 255 / 12%);
    color: rgb(255 255 255 / 70%);
}

/* 作者面板容器 */
#vd-author-panel {
    display: flex;
    flex-direction: column;
    height: 100%;
    overflow: hidden;
}

/* 作者视频网格 */
.vd-author-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 6px;
    padding: 0 16px 20px;
    overflow-x: hidden;
    overflow-y: auto;
    align-items: start;
    grid-auto-rows: min-content;
    flex: 1;
    min-height: 0;
}

.vd-author-grid::-webkit-scrollbar {
    width: 4px;
}

.vd-author-grid::-webkit-scrollbar-track {
    background: none;
}

.vd-author-grid::-webkit-scrollbar-thumb {
    background: rgb(255 255 255 / 15%);
    border-radius: 4px;
}

.vd-author-grid-item {
    position: relative;
    aspect-ratio: 3 / 4;
    border-radius: 6px;
    overflow: hidden;
    cursor: pointer;
}

.vd-author-grid-item img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform .3s;
}

.vd-author-grid-item:hover img {
    transform: scale(1.08);
}

/* 作者网格当前播放项 */
.vd-author-grid-item.ls-on {
    outline: 2px solid #fe2c55;
    outline-offset: -2px;
}

.vd-author-grid-item .vd-equalizer {
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    bottom: auto;
}

.vd-author-grid-item.ls-on .vd-equalizer {
    display: flex;
}

.vd-grid-overlay {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    display: flex;
    align-items: center;
    gap: 3px;
    padding: 2px 6px;
    font-size: 12px;
    color: #fff;
    background: linear-gradient(transparent, rgba(0,0,0,.6));
}

.vd-grid-overlay i {
    font-size: 12px;
}

/* ==================== 空状态 ==================== */
.vd-empty {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 50px 20px;
    color: rgb(255 255 255 / 40%);
    grid-column: 1 / -1;
}

.vd-empty i {
    font-size: 40px;
    margin-bottom: 12px;
    opacity: 0.5;
}

.vd-empty span {
    font-size: 13px;
}

/* ==================== 切换动画入场 ==================== */
/* 默认隐藏，避免在 prev/next slot 中闪现 */
.vd-bottom-info,
.vd-action-bar {
    opacity: 0;
    transform: translateY(20px);
}

.vd-slot[data-slot="current"] .vd-bottom-info,
.vd-slot[data-slot="current"] .vd-action-bar {
    animation: vd-fade-up .4s ease .1s both;
}

@keyframes vd-fade-up {
    from {
        opacity: 0;
        transform: translateY(20px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* ==================== 加载动画 ==================== */
.vd-rec-loading {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px 0;
    color: rgb(255 255 255 / 40%);
    font-size: 13px;
}