/* ========================================
   17VIS Pic Marquee - 前端公共样式
   ======================================== */

/* --- 跑马灯 --- */
.vis-marquee-container {
    position: relative;
    overflow: hidden;
    width: 100%;
}

.vis-marquee-track {
    position: absolute;
    top: 10px;
    display: flex;
    gap: 0;
    white-space: nowrap;
    will-change: transform;
}

.vis-marquee-card {
    flex-shrink: 0;
    overflow: hidden;
    position: relative;
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-start;
    box-sizing: border-box;
}

.vis-marquee-card img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.vis-marquee-card .vis-card-title {
    font-size: 13px;
    font-weight: 500;
    text-align: center;
    padding: 4px 6px;
    line-height: 1.3;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    max-width: 100%;
    box-sizing: border-box;
}

.vis-marquee-card .vis-card-desc {
    font-size: 11px;
    text-align: center;
    padding: 0 6px 6px;
    line-height: 1.4;
    color: #666;
    white-space: normal;
}

.vis-marquee-card a {
    text-decoration: none;
    color: inherit;
    display: flex;
    flex-direction: column;
    align-items: center;
    width: 100%;
    height: 100%;
}

/* --- 卡片样式主题 --- */
/* 浮影（默认） */
.vis-style-浮影 .vis-marquee-card {
    background: #fff;
    box-shadow: 0 4px 20px rgba(0,0,0,0.1);
    transition: box-shadow 0.3s;
}
.vis-style-浮影 .vis-marquee-card:hover {
    box-shadow: 0 8px 30px rgba(0,0,0,0.18);
}

/* 边框 */
.vis-style-边框 .vis-marquee-card {
    background: #fff;
    border: 2px solid #e0e0e0;
}

/* 扁平 */
.vis-style-扁平 .vis-marquee-card {
    background: #f5f5f5;
}

/* 渐变 */
.vis-style-渐变 .vis-marquee-card {
    background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
    color: #fff;
}
.vis-style-渐变 .vis-marquee-card .vis-card-desc {
    color: rgba(255,255,255,0.85);
}

/* 毛玻璃 */
.vis-style-毛玻璃 .vis-marquee-card {
    background: rgba(255,255,255,0.25);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    border: 1px solid rgba(255,255,255,0.3);
}

/* 暗夜 */
.vis-style-暗夜 .vis-marquee-card {
    background: #1a1a2e;
    color: #e0e0e0;
}
.vis-style-暗夜 .vis-marquee-card .vis-card-desc {
    color: #aaa;
}

/* --- 俄罗斯方块 --- */
.vis-tetris-container {
    position: relative;
    overflow: hidden;
    width: 100%;
}

.vis-tetris-card {
    position: absolute;
    flex-shrink: 0;
    overflow: hidden;
    box-sizing: border-box;
    background: #fff;
    box-shadow: 0 4px 16px rgba(0,0,0,0.12);
    transition: left 0.5s ease-in-out;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-start;
}

.vis-tetris-card img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.vis-tetris-card .vis-card-title {
    font-size: 12px;
    text-align: center;
    padding: 3px 5px;
    line-height: 1.3;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    max-width: 100%;
    box-sizing: border-box;
}

.vis-tetris-card a {
    text-decoration: none;
    color: inherit;
    display: flex;
    flex-direction: column;
    align-items: center;
    width: 100%;
    height: 100%;
}

/* 占位闪烁 */
.vis-tetris-placeholder {
    background: linear-gradient(90deg, #e0e0e0 25%, #f0f0f0 50%, #e0e0e0 75%);
    background-size: 200% 100%;
    animation: vis-shimmer 1.2s infinite;
}

@keyframes vis-shimmer {
    0% { background-position: 200% 0; }
    100% { background-position: -200% 0; }
}