/* --- [通用布局修正] --- */
*,
*::before,
*::after {
box-sizing: border-box;
}
:root {
--primary-color: #2563eb;
--green-color: #10b981;
--background-color: #f8fafc;
--card-background-color: #FFFFFF;
--text-color: #1e293b;
--text-color-light: #6c757d;
--border-color: #e2e8f0;
--qa-background-color: #f0fdf4;
}
body {
font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif;
background-color: var(--background-color);
color: var(--text-color);
margin: 0;
line-height: 1.6;
/* overflow-x: hidden; 这一行已被删除 会影响侧边栏和底部锚定广告 导致侧边栏和底部广告很少出现 */
}
.container { max-width: 1028px; margin: 0 auto; padding: 0 1rem; }
.main-content { padding: 2rem 0; }
.content-card {
background: var(--card-background-color);
border-radius: 16px;
padding: 2.5rem;
margin-bottom: 2rem;
box-shadow: 0 4px 30px rgba(0,0,0,0.05);
}
/* Header & Nav */
.site-header { background-color: #fff; padding: 0 2rem; position: sticky; top: 0; z-index: 100; box-shadow: 0 1px 4px rgba(0,0,0,0.05); }
.nav-container { display: flex; justify-content: space-between; align-items: center; max-width: 1400px; margin: 0 auto; height: 65px; }
.nav-logo a { font-size: 1.8rem; font-weight: bold; text-decoration: none; color: var(--text-color); }
.main-nav { display: flex; gap: 1.5rem; }
.main-nav a { color: var(--text-color-light); font-weight: 500; text-decoration: none; padding: 22px 0; border-bottom: 3px solid transparent; transition: color 0.2s, border-color 0.2s; }
.main-nav a.active, .main-nav a:hover { color: var(--primary-color); border-bottom-color: var(--primary-color); }
.header-actions { display: flex; align-items: center; gap: 1rem; }
.header-actions .icon-link { color: var(--text-color-light); font-size: 1.3rem; }
/* Language Selector */
.language-selector-wrapper { position: relative; }
.language-selector-button { display: flex; align-items: center; gap: 0.5rem; background-color: transparent; border: 1px solid #ddd; padding: 0.5rem 1rem; border-radius: 6px; cursor: pointer; font-size: 1rem; }
.language-dropdown { display: none; position: absolute; top: calc(100% + 10px); right: 0; background-color: #fff; border-radius: 8px; box-shadow: 0 5px 25px rgba(0,0,0,0.1); padding: 0.8rem; width: 320px; z-index: 101; }
.language-dropdown.active { display: block; }
.language-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 0.2rem 0.8rem; }
.language-link { display: block; padding: 0.4rem 0.6rem; border-radius: 4px; color: var(--text-color); text-decoration: none; font-size: 0.9rem; }
.language-link:hover { background-color: #f0f2f5; }
/* Download Box & Results - 统一整合版本 */
.download-container {
background-color: var(--card-background-color);
border-radius: 12px;
box-shadow: 0 4px 15px rgba(0,0,0,0.08);
text-align: center;
animation: fadeIn 0.5s ease-out;
padding: 2.5rem;
}
/* 首页特定的下载容器 - 解决宽度对齐问题 */
.download-section .download-container {
max-width: 1000px;
margin: 0 auto;
padding: 2rem;
}
@keyframes fadeIn { from { opacity: 0; transform: translateY(-10px); } to { opacity: 1; transform: translateY(0); } }
.download-title { font-size: 2.8rem; font-weight: 700; margin: 0 0 1.5rem 0; }
.download-form { display: flex; gap: 10px; max-width: 900px; margin: 0 auto; } /* 从 700px 增加到 900px，保持视觉比例 */
.input-wrapper { position: relative; flex-grow: 1; }
#video_link { width: 100%; height: 60px; padding: 0 1.5rem; border: 2px solid #ddd; border-radius: 8px; font-size: 1.1rem; box-sizing: border-box; transition: border-color 0.2s; } /* 从 55px 增加到 60px，更有分量 padding: 0 1.5rem; 相应增加内边距 font-size: 1.1rem; 字体稍大一些，更易读 */
#video_link:focus { border-color: var(--primary-color); outline: none; }
.download-btn { height: 60px; border: none; background-color: var(--green-color); color: white; font-weight: bold; font-size: 1.1rem; padding: 0 2.5rem; border-radius: 8px; cursor: pointer; display: flex; align-items: center; gap: 0.5rem; transition: background-color 0.2s; } /* height: 60px;与输入框高度保持一致 font-size: 1.1rem; padding: 0 2.5rem 调大*/
.download-btn:hover { background-color: #059669; }
.download-btn:disabled { background-color: #999; cursor: not-allowed; }
#error_message { color: #e74c3c; margin-top: 1rem; font-weight: 500; }
.results-container { padding: 1rem; }
.video-info { display: flex; align-items: center; margin-bottom: 1.5rem; }
.video-info img { width: 150px; border-radius: 8px; margin-right: 1.5rem; box-shadow: 0 2px 8px rgba(0,0,0,0.1); }
.video-info video { width: 150px; height: 100px; object-fit: cover; display: block; }
.video-title { font-size: 1.4rem; font-weight: 600; }
.video-duration { color: var(--text-color-light); }
.format-tabs { display: flex; border-bottom: 2px solid var(--primary-color); margin-bottom: -1px; }
.format-tab { padding: 0.8rem 1.5rem; cursor: pointer; background-color: #e9ecef; }
.format-tab.active { background-color: var(--primary-color); color: white; font-weight: 600; }
.results-table { table-layout: fixed; width: 100%; border-collapse: collapse; }
.results-table th, .results-table td { border: 1px solid #e9ecef; padding: 1rem; text-align: center; }
.results-table th { background-color: #f8f9fa; font-weight: 600; }
.btn-download { background-color: var(--green-color); color: white !important; text-decoration: none; padding: 0.6rem 2rem; border-radius: 6px; display: inline-block; font-weight: 500; white-space: nowrap; }
.download-more-btn { display: block; width: 100%; margin-top: 2rem; padding: 1rem; background-color: #6c757d; color: white; text-align: center; border-radius: 8px; text-decoration: none; font-weight: bold; }
/* Features & CTA - 统一特性样式 */
.section-title { text-align: center; font-size: 2.2rem; font-weight: 600; margin-bottom: 2.5rem; }
.features-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2rem; text-align: center; }
.feature-icon { font-size: 2.8rem; color: var(--green-color); }
.feature-title { font-weight: 600; }
/* 为service_page.html中的feature样式 */
.feature-item {
background: var(--card-background-color);
padding: 2rem 1.5rem;
border-radius: 12px;
text-align: center;
transition: all 0.3s ease;
border: 1px solid var(--border-color);
box-shadow: 0 4px 15px rgba(0,0,0,0.05);
}
.feature-item:hover {
transform: translateY(-3px);
box-shadow: 0 8px 25px rgba(0,0,0,0.1);
border-color: var(--primary-color);
}
.feature-item .feature-icon {
font-size: 2.5rem;
color: var(--primary-color);
margin-bottom: 1rem;
display: block;
}
.feature-item .feature-title {
font-size: 1.2rem;
font-weight: 600;
margin-bottom: 1rem;
color: var(--text-color);
}
.feature-description {
color: var(--text-color-light);
line-height: 1.6;
font-size: 0.95rem;
margin: 0;
}
.cta-section { text-align: center; padding: 2rem 0; }
.cta-section h3 { font-size: 1.8rem; font-weight: 600; margin: 0 0 0.25rem 0; }
.cta-section p { font-size: 1rem; color: var(--text-color-light); margin: 0; }
/* Q&A Section */
.qa-item {
background-color: var(--qa-background-color);
border: 1px solid #d9f3e4;
border-radius: 12px;
margin-bottom: 1rem;
overflow: hidden;
}
.qa-question {
padding: 1rem 1.5rem;
display: flex;
justify-content: space-between;
align-items: center;
cursor: pointer;
font-weight: 500;
font-size: 1.05rem;
color: #333;
}
.qa-question .fa-chevron-down { transition: transform 0.3s ease; }
.qa-item.active .qa-question .fa-chevron-down { transform: rotate(180deg); }
.qa-answer {
max-height: 0;
overflow: hidden;
transition: max-height 0.4s ease-in-out, padding 0.4s ease-in-out;
color: var(--text-color-light);
padding: 0 1.5rem;
}
.qa-item.active .qa-answer {
max-height: 200px;
padding: 0 1.5rem 1.5rem 1.5rem;
}
.qa-answer p { margin-top: 0; border-top: 1px solid var(--border-color); padding-top: 1.5rem; }
/* ==========================================================
AdSense & Sidebar Optimization
========================================================== */
.sidebar {
position: relative;
}
/* 让侧边栏内部的广告块在滚动时“粘”在顶部 */
.sidebar > div:first-child,
.sidebar .ad-unit-side {
position: -webkit-sticky;
position: sticky;
top: 20px; /* 距离顶部留出 20px 间距，避免太死板 */
z-index: 10;
}
/* 响应式适配：在移动端关闭吸顶效果，避免遮挡内容 */
@media (max-width: 768px) {
.sidebar > div:first-child,
.sidebar .ad-unit-side {
position: static;
margin-bottom: 20px;
}
}
/* Footer */
.site-footer {
background-color: #fff;
color: var(--text-color-light);
padding: 1rem 1rem;
border-top: 1px solid #eee;
/* [核心修改] 强制页脚容器隐藏任何水平方向的溢出内容 */
/* overflow-x: hidden; 这一行已被删除 会影响侧边栏和底部锚定广告 导致侧边栏和底部广告很少出现 */
}
.footer-links-container {
display: flex;
justify-content: space-around;
gap: 4rem;
padding-bottom: 2rem;
border-bottom: 1px solid var(--border-color);
}
.footer-column { flex: 1;
/* overflow: hidden; 这一行可能会影响ads */ }
.footer-column-articles {
/*
* flex-basis 定义了在分配多余空间之前，项目占据的主轴空间（可以理解为基础宽度）。
* 其他列的 flex: 1; 相当于 flex-basis: 0;
* 所以这一列会比其他列多出 58px 的基础宽度，
* 然后大家再一起均分剩下的空间，最终结果就是它会比其他列宽 58px。
*/
flex-basis: 58px;
}
.footer-column h4 {
color: var(--text-color);
font-size: 0.9rem;
text-transform: uppercase;
margin-bottom: 1rem;
}
.footer-column ul {
list-style: none;
padding: 0;
margin: 0;
}
/*
.footer-column ul li a {
color: var(--text-color-light);
text-decoration: none;
line-height: 2.2;
font-size: 0.9rem;
white-space: nowrap;
}
*/
.footer-column ul li a {
color: var(--text-color-light);
text-decoration: none;
line-height: 1.6; /* 调整行高以适应多行 */
font-size: 0.9rem;
/* --- [核心修改] 开始 --- */
/* 1. 允许文本正常换行 */
white-space: normal;
word-break: break-word; /* 允许在单词内换行，防止长英文单词溢出 */
/* 2. 使用 line-clamp 技巧，将文本限制在最多2行 */
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2; /* 限制为2行 */
-webkit-box-orient: vertical;
/* --- [核心修改] 结束 --- */
}
.footer-column ul li a:hover {
color: var(--primary-color);
text-decoration: none;
}
.footer-bottom-bar {
display: flex;
justify-content: space-between;
align-items: center;
padding-top: 1rem;
font-size: 0.85rem;
color: #999;
}
.footer-bottom-bar a {
color: #999;
margin-left: 1.5rem;
}
/* === Landing Hub Page: Visual Upgrade === */
/* Hero Section */
.landing-hub .hero-section {
padding: 1rem 1rem;
border-radius: 16px;
margin-bottom: 2rem;
position: relative;
overflow: hidden;
background: linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%);
border: none;
}
.hero-content {
position: relative;
max-width: 1000px;
margin: 0 auto;
text-align: center;
}
.hero-title {
font-size: clamp(2.5rem, 5vw, 2.5rem);
font-weight: 800;
color: white;
margin-bottom: 1rem;
line-height: 1.2;
}
.hero-subtitle {
font-size: clamp(1rem, 2vw, 1.15rem);
color: rgba(255, 255, 255, 0.9);
max-width: 650px;
margin: 0 auto 2rem auto;
}
.btn-hero {
background: var(--primary-color);
color: white;
padding: 0.9rem 2.2rem;
border-radius: 50px;
text-decoration: none;
font-weight: 600;
font-size: 1.1rem;
transition: all 0.3s ease;
box-shadow: 0 4px 15px rgba(13, 110, 253, 0.2);
}
.btn-hero:hover {
transform: translateY(-4px);
box-shadow: 0 10px 25px rgba(13, 110, 253, 0.3);
}
.btn-hero.secondary {
background: white;
color: #667eea;
border: 2px solid white;
}
/* General Section Styling */
.content-section { margin-bottom: 3rem; }
.section-title-landing {
font-size: clamp(2rem, 4vw, 2.8rem);
font-weight: 700;
text-align: center;
margin-bottom: 30px;
display: flex;
align-items: center;
justify-content: center;
gap: 1rem;
color: #2c3e50;
}
.section-title-landing.small-title {
font-size: clamp(1.8rem, 3vw, 2.2rem);
text-align: left;
justify-content: flex-start;
margin-bottom: 2rem;
}
/* 首页特有的样式 */
.key-features {
display: flex;
flex-wrap: wrap;
gap: 0.8rem;
justify-content: center;
margin-bottom: 1.5rem;
}
.feature-badge {
background: rgba(255, 255, 255, 0.2);
color: white;
padding: 0.5rem 1rem;
border-radius: 20px;
font-size: 0.9rem;
font-weight: 500;
}
.cta-buttons {
display: flex;
gap: 1rem;
justify-content: center;
flex-wrap: wrap;
}
.platforms-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
gap: 1.2rem;
margin-top: 1.5rem;
}
.platform-card {
background: var(--card-background-color);
border-radius: 12px;
padding: 1.2rem;
text-align: center;
transition: all 0.3s ease;
border: 1px solid var(--border-color);
box-shadow: 0 2px 10px rgba(0,0,0,0.05);
}
.platform-card:hover {
transform: translateY(-5px);
box-shadow: 0 8px 25px rgba(0,0,0,0.1);
}
.platform-link { text-decoration: none; color: inherit; }
.platform-icon {
font-size: 2.5rem;
color: var(--primary-color);
margin-bottom: 1rem;
}
.platform-name {
font-size: 1.1rem;
font-weight: 600;
margin-bottom: 0.5rem;
color: var(--text-color);
}
.platform-desc {
color: var(--text-color-light);
font-size: 0.9rem;
margin: 0;
}
.steps-container {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
gap: 1.5rem;
margin-top: 1.5rem;
}
.step-item { text-align: center; padding: 1.5rem 1rem; }
.step-number {
width: 50px;
height: 50px;
background: var(--primary-color);
color: white;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-size: 1.3rem;
font-weight: bold;
margin: 0 auto 1rem auto;
}
.step-title {
font-size: 1.2rem;
font-weight: 600;
margin-bottom: 1rem;
color: var(--text-color);
}
.step-desc {
color: var(--text-color-light);
line-height: 1.6;
margin: 0;
}
.features-section .features-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 2rem;
}
.feature-card {
background: var(--card-background-color);
border-radius: 12px;
padding: 2rem;
text-align: center;
transition: all 0.3s ease;
border: 1px solid var(--border-color);
box-shadow: 0 4px 15px rgba(0,0,0,0.05);
}
.feature-card:hover {
transform: translateY(-5px);
box-shadow: 0 8px 25px rgba(0,0,0,0.1);
}
.feature-card .feature-icon {
font-size: 3rem;
color: var(--primary-color);
margin-bottom: 1.5rem;
}
.feature-card .feature-title {
font-size: 1.3rem;
font-weight: 600;
margin-bottom: 1rem;
color: var(--text-color);
}
.feature-card .feature-desc {
color: var(--text-color-light);
line-height: 1.6;
margin: 0;
}
.faq-container { max-width: 800px; margin: 0 auto; }
.faq-item {
background: var(--card-background-color);
border-radius: 12px;
margin-bottom: 1rem;
border: 1px solid var(--border-color);
overflow: hidden;
}
.faq-question {
padding: 1.5rem;
font-size: 1.1rem;
font-weight: 600;
cursor: pointer;
color: var(--text-color);
margin: 0;
display: flex;
justify-content: space-between;
align-items: center;
background-color: #f0fdf4;
transition: background-color 0.3s ease;
}
.faq-question::after {
content: '+';
font-size: 1.5rem;
transition: transform 0.3s ease;
}
.faq-question:hover {
background-color: #ecfdf5;
}
.faq-item.active .faq-question::after { transform: rotate(45deg); }
.faq-answer {
padding: 0 1.5rem 1.5rem 1.5rem;
color: var(--text-color-light);
line-height: 1.6;
display: none;
}
.faq-item.active .faq-answer { display: block; }
/* Section Headers */
.section-header { margin-bottom: 3rem; }
.section-subtitle {
color: var(--text-color-light);
font-size: 1.1rem;
margin-top: 1rem;
max-width: 600px;
margin-left: auto;
margin-right: auto;
}
/* Breadcrumb */
.breadcrumb-nav {
background: var(--card-background-color);
padding: 1rem 0;
border-bottom: 1px solid var(--border-color);
}
.breadcrumb { list-style: none; padding: 0; margin: 0; display: flex; align-items: center; }
.breadcrumb-item { display: flex; align-items: center; }
.breadcrumb-item + .breadcrumb-item::before { content: '/'; margin: 0 0.5rem; color: var(--text-color-light); }
.breadcrumb-item a { color: var(--primary-color); text-decoration: none; }
.breadcrumb-item.active { color: var(--text-color-light); }
/* Article Page Styles */
.article-wrapper { background-color: var(--background-color); padding-bottom: 4rem; }
.article-header { padding: 4rem 1rem 3rem 1rem; text-align: center; background-color: #ffffff; border-bottom: 1px solid var(--border-color); margin-bottom: -6px; position: relative; z-index: 10; }
.article-container { position: relative; z-index: 20; }
.article-page { padding: 3rem clamp(1.5rem, 5vw, 4rem); box-shadow: 0 15px 40px rgba(0, 0, 0, 0.08); }
.article-page h1 { font-size: clamp(2rem, 5vw, 3.2rem); margin-bottom: 0.75rem; line-height: 1.25; color: #1a202c; }
.article-meta { color: var(--text-color-light); margin-bottom: 0; font-size: 0.9rem; text-transform: uppercase; letter-spacing: 0.5px; }
.article-body { max-width: 720px; margin: 0 auto; }
.article-body h2 { font-size: 1.8rem; margin: 3rem 0 1.5rem 0; padding-bottom: 0.75rem; border-bottom: 2px solid var(--primary-color); color: #2d3748; }
.article-body h3 { font-size: 1.4rem; margin: 2.5rem 0 1rem 0; color: #4a5568; }
.article-body p, .article-body li { line-height: 1.8; margin-bottom: 1.5rem; font-size: 1.05rem; color: #333; }
.article-body a { color: var(--primary-color); text-decoration: none; border-bottom: 1px solid rgba(13, 110, 253, 0.3); transition: all 0.2s ease; font-weight: 500; }
.article-body a:hover { background-color: rgba(13, 110, 253, 0.1); border-bottom-color: var(--primary-color); }
.article-body ul, .article-body ol { padding-left: 1.5rem; margin-bottom: 1.5rem; }
.article-body li { margin-bottom: 0.75rem; }
.article-body blockquote { border-left: 4px solid #a0aec0; padding: 1rem 1.5rem; margin: 2.5rem 0; color: #4a5568; background-color: #f7fafc; border-radius: 8px; font-style: italic; }
.article-body blockquote p:last-child { margin-bottom: 0; }
.article-body strong { color: #000; }
.article-body pre { background-color: #f7fafc; border: 1px solid #e2e8f0; padding: 1.5rem; border-radius: 8px; overflow-x: auto; font-size: 0.9rem; line-height: 1.6; }
/* Responsive Design */
@media (max-width: 768px) {
.main-content { padding-top: 1rem; padding-bottom: 1rem; }
.content-card { padding: 1.5rem; }
.nav-container { padding: 0 1rem; }
.main-nav, .header-actions .icon-link { display: none; }
.download-title { font-size: 1.8rem; }
.download-form { flex-direction: column; }
.features-grid { grid-template-columns: 1fr; gap: 2rem; }
.section-title, .cta-section h3 { font-size: 1.6rem; }
.footer-links-container { flex-direction: column; text-align: center; }
.footer-bottom-bar { flex-direction: column; gap: 1rem; }
.results-table { display: block; width: 100%; }
.results-table thead { display: none; }
.results-table tbody, .results-table tr { display: block; }
.results-table tr { border: 1px solid #ddd; margin-bottom: 1rem; display: block; }
.results-table td { display: flex; justify-content: space-between; align-items: center; text-align: right; border: none; border-bottom: 1px solid #eee; padding: 0.8rem; }
.results-table td:before { content: attr(data-label); font-weight: bold; text-align: left; margin-right: 1rem; }
.language-dropdown { width: 90vw; right: 50%; transform: translateX(50%); max-height: 70vh; overflow-y: auto; }
.cta-buttons { flex-direction: column; align-items: center; }
.key-features { justify-content: center; }
.steps-container { grid-template-columns: 1fr; }
.platforms-grid { grid-template-columns: 1fr; }
.feature-item .feature-icon { font-size: 2rem; }
/* --- [核心修改] 在这里添加新规则 --- */
.footer-column-articles {
/* 在移动端（列布局），将基础尺寸重置为自动，使其高度由内容决定 */
flex-basis: auto;
}
}
/* 平台特定品牌颜色 */
.platform-card[data-platform="twitter"] .platform-icon { color: #1da1f2; }
.platform-card[data-platform="tiktok"] .platform-icon { color: #ffc107; }
.platform-card[data-platform="douyin"] .platform-icon { color: #000000; }
.platform-card[data-platform="youtube"] .platform-icon { color: #ff0000; }
.platform-card[data-platform="bilibili"] .platform-icon { color: #00a1d6; }
.platform-card[data-platform="facebook"] .platform-icon { color: #1877f2; }
.platform-card[data-platform="pinterest"] .platform-icon { color: #bd081c; }
.platform-card[data-platform="vk"] .platform-icon { color: #4c75a3; }
.platform-card[data-platform="instagram"] .platform-icon { color: #e4405f; }
/* Feature badges 特定颜色 */
.key-features .feature-badge:nth-child(1) { background: rgba(59, 130, 246, 0.9); } /* HD Quality - 蓝色 */
.key-features .feature-badge:nth-child(2) { background: rgba(16, 185, 129, 0.9); } /* No Watermark - 绿色 */
.key-features .feature-badge:nth-child(3) { background: rgba(245, 158, 11, 0.9); } /* All Devices - 橙色 */
.key-features .feature-badge:nth-child(4) { background: rgba(239, 68, 68, 0.9); } /* Free Forever - 红色 */
/* Why Choose Our Video Downloader 图标颜色优化 */
.feature-card:nth-child(1) .feature-icon { color: #3b82f6; } /* Lightning Fast - 蓝色 */
.feature-card:nth-child(2) .feature-icon { color: #10b981; } /* 100% Secure - 绿色 */
.feature-card:nth-child(3) .feature-icon { color: #f59e0b; } /* HD Quality - 橙色 */
.feature-card:nth-child(4) .feature-icon { color: #8b5cf6; } /* All Devices - 紫色 */
.feature-card:nth-child(5) .feature-icon { color: #ef4444; } /* 10+ Platforms - 红色 */
.feature-card:nth-child(6) .feature-icon { color: #06b6d4; } /* Free Forever - 青色 */
/* --- [V10 最终方案] 弹窗广告样式 (显隐模式) --- */
/* 遮罩层 */
.ad-modal-overlay {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.75);
display: none;
/* [核心修改] 重新改回垂直居中 */
align-items: center;
justify-content: center;
z-index: 1000;
overflow-y: auto;
}
/* 弹窗内容：移除 margin-top 和 margin-bottom */
.ad-modal-content {
background-color: #fff;
padding: 10px; /*25px */
border-radius: 12px;
text-align: center;
width: 1000px; /*800px */
max-width: 95%;
box-shadow: 0 5px 20px rgba(0,0,0,0.3);
/* margin-top: 10vh; -- 移除此行 */
/* margin-bottom: 5vh; -- 移除此行 */
}
/* 广告容器 */
.modal-ad-container {
margin: 20px 0;
min-height: 268px;
background-color: #f0f2f5;
border-radius: 6px;
}
/* 消息文本 */
.modal-message {
font-size: 1.2rem;
color: #1e293b;
font-weight: 600;
}
/* 关闭按钮 */
.modal-close-btn {
position: relative;
left: 230px;
/* --- 原有的样式保持不变 --- */
margin-top: 15px;
padding: 10px 25px;
border: 1px solid #fff;
background-color: #f8f8f8;
cursor: pointer;
border-radius: 5px;
}
/* --- [新增] 解析后结果的“三明治”卡片布局样式 --- */
/* 这是总的包裹容器，我们让它看起来像一个独立的卡片 */
.results-wrapper {
background-color: #fff; /* 背景设为白色 */
border: 1px solid var(--border-color); /* 添加一个细边框 */
border-radius: 12px; /* 圆角 */
padding: 1.5rem; /* 内边距 */
box-shadow: 0 4px 15px rgba(0,0,0,0.08); /* 添加阴影，更有立体感 */
}
/* 这是广告位的容器，用来控制广告的上下间距，让布局紧凑 */
.ad-slot-container {
margin: 1rem 0;
min-height: 50px;
display: flex;
justify-content: center;
align-items: center;
background-color: #f8fafc;
width: 100%; /* [安全加固] 明确告诉它宽度为父容器的100% */
}
/* 微调一下原有组件在新布局下的边距，让整体更协调 */
.results-wrapper .video-info {
margin-bottom: 1rem;
}
.results-wrapper .results-table {
margin-bottom: 0; /* 移除表格原有的下边距，由广告容器的边距控制 */
}
.results-wrapper .download-more-btn {
margin-top: 1.5rem;
}
/* 隐藏所有未成功填充广告的AdSense广告位
.adsbygoogle[data-ad-status="unfilled"] {
display: none !important;
}*/
/* （可选但推荐）如果广告位的父容器除了广告外没其他内容，也可以一并隐藏
.ad-slot-container:has(.adsbygoogle[data-ad-status="unfilled"]) {
display: none !important;
}*/
/* ==========================================================
挑战系统样式
========================================================== */
.challenge-overlay {
animation: fadeIn 0.3s ease-out;
}
@keyframes fadeIn {
from { opacity: 0; }
to { opacity: 1; }
}
@keyframes slideIn {
from {
transform: translateX(100%);
opacity: 0;
}
to {
transform: translateX(0);
opacity: 1;
}
}
.challenge-container {
background: white;
border-radius: 12px;
padding: 30px;
max-width: 500px;
width: 90%;
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3);
animation: scaleIn 0.3s ease-out;
}
@keyframes scaleIn {
from {
transform: scale(0.9);
opacity: 0;
}
to {
transform: scale(1);
opacity: 1;
}
}
.challenge-header {
text-align: center;
margin-bottom: 25px;
}
.challenge-header h3 {
margin: 0 0 10px 0;
color: #333;
font-size: 24px;
}
.challenge-header p {
margin: 0;
color: #666;
font-size: 14px;
}
.challenge-body {
text-align: center;
}
.verify-btn {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
border: none;
padding: 15px 40px;
font-size: 16px;
border-radius: 8px;
cursor: pointer;
transition: all 0.3s ease;
display: inline-flex;
align-items: center;
gap: 10px;
}
.verify-btn:hover {
transform: translateY(-2px);
box-shadow: 0 6px 20px rgba(102, 126, 234, 0.4);
}
.verify-btn:active {
transform: translateY(0);
}
.challenge-timer {
margin-top: 20px;
color: #999;
font-size: 14px;
}
#timer-display {
font-weight: bold;
color: #667eea;
}
/* 滑块挑战样式 */
.slider-track {
position: relative;
width: 100%;
height: 50px;
background: #f0f0f0;
border-radius: 25px;
margin: 20px 0;
overflow: hidden;
}
.slider-thumb {
position: absolute;
left: 0;
top: 0;
width: 50px;
height: 50px;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
border-radius: 25px;
cursor: grab;
display: flex;
align-items: center;
justify-content: center;
color: white;
font-size: 20px;
transition: background-color 0.3s ease;
user-select: none;
}
.slider-thumb:active {
cursor: grabbing;
}
.slider-instruction {
color: #666;
font-size: 14px;
margin: 10px 0;
}
/* 图片验证码样式 */
.challenge-instruction {
margin-bottom: 20px;
color: #333;
font-size: 16px;
}
.challenge-instruction strong {
color: #667eea;
}
.image-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 10px;
margin-bottom: 20px;
}
.captcha-image {
position: relative;
aspect-ratio: 1;
cursor: pointer;
border: 3px solid transparent;
border-radius: 8px;
overflow: hidden;
transition: all 0.3s ease;
}
.captcha-image:hover {
transform: scale(1.05);
}
.captcha-image.selected {
border-color: #667eea;
box-shadow: 0 0 0 2px rgba(102, 126, 234, 0.3);
}
.captcha-image img {
width: 100%;
height: 100%;
object-fit: cover;
display: block;
}
.captcha-image.selected::after {
content: '✓';
position: absolute;
top: 5px;
right: 5px;
background: #667eea;
color: white;
width: 24px;
height: 24px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-weight: bold;
}
/* 通知样式 */
.challenge-notification {
display: flex;
align-items: center;
gap: 10px;
font-size: 14px;
}
.challenge-notification i {
font-size: 20px;
}
/* 响应式设计 */
@media (max-width: 768px) {
.challenge-container {
padding: 20px;
max-width: 95%;
}
.challenge-header h3 {
font-size: 20px;
}
.verify-btn {
padding: 12px 30px;
font-size: 14px;
}
.image-grid {
grid-template-columns: repeat(2, 1fr);
}
}
/* --- [新版垂直下载列表样式] --- */
.new-results-container {
max-width: 800px;
margin: 0 auto;
animation: vFadeIn 0.5s ease;
}
@keyframes vFadeIn {
from { opacity: 0; transform: translateY(10px); }
to { opacity: 1; transform: translateY(0); }
}
/* 视频头部卡片 */
.v-header-card {
display: flex;
gap: 20px;
background: #fff;
padding: 20px;
border-radius: 12px;
border: 1px solid #eee;
margin-bottom: 25px;
box-shadow: 0 4px 15px rgba(0,0,0,0.03);
text-align: left;
}
.v-thumb-box {
width: 180px;
height: 100px;
border-radius: 8px;
overflow: hidden;
background: #f0f0f0;
flex-shrink: 0;
}
.v-thumb-box img, .v-thumb-box video {
width: 100%;
height: 100%;
object-fit: cover;
}
.v-text-box { flex: 1; min-width: 0; }
.v-main-title {
font-size: 1.25rem;
font-weight: 700;
color: #1e293b;
margin: 0 0 12px 0;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
line-height: 1.4;
}
.v-meta-tags { display: flex; gap: 8px; flex-wrap: wrap; }
.v-tag {
font-size: 0.7rem;
background: #f1f5f9;
color: #64748b;
padding: 4px 10px;
border-radius: 6px;
display: flex;
align-items: center;
gap: 5px;
}
.v-tag.secure { background: #ecfdf5; color: #10b981; }
.v-tag.speed { background: #eff6ff; color: #3b82f6; }
/* 列表区块 */
.v-section-block { margin-bottom: 30px; text-align: left; }
.v-section-title {
font-size: 1rem;
font-weight: 700;
color: #334155;
padding-left: 12px;
margin-bottom: 15px;
display: flex;
align-items: center;
gap: 10px;
}
/* 下载卡片条目 */
.v-dl-card {
display: flex;
justify-content: space-between;
align-items: center;
background: #fff;
padding: 15px 20px;
border-radius: 10px;
border: 1px solid #e2e8f0;
margin-bottom: 10px;
transition: all 0.2s ease;
}
.v-dl-card:hover {
border-color: #10b981;
transform: translateX(5px);
box-shadow: 0 4px 12px rgba(16, 185, 129, 0.08);
}
.v-dl-info { flex: 1; text-align: left; }
.v-res-line { display: flex; align-items: center; gap: 10px; margin-bottom: 4px; }
.v-res-txt { font-size: 1rem; font-weight: 700; color: #1e293b; }
.v-ext-label {
font-size: 0.7rem;
background: #8c9be7;
color: #fff;
padding: 2px 6px;
border-radius: 4px;
font-weight: bold;
}
.v-note-badge {
font-size: 0.7rem;
background: #fff1f2;
color: #e11d48;
padding: 2px 6px;
border-radius: 4px;
font-weight: bold;
}
.v-detail-line { display: flex; gap: 15px; color: #94a3b8; font-size: 0.8rem; }
/* 下载按钮 */
.v-btn-download {
background: #10b981;
color: #fff !important;
text-decoration: none;
padding: 10px 24px;
border-radius: 8px;
font-weight: 700;
font-size: 0.9rem;
display: flex;
align-items: center;
gap: 8px;
transition: background 0.2s;
box-shadow: 0 2px 6px rgba(16, 185, 129, 0.2);
}
.v-btn-download:hover { background: #059669; }
/* 广告位 */
.v-ad-strip { margin-bottom: 25px; min-height: 100px; }
.v-ad-block {
background: #f8fafc;
border: 1px dashed #cbd5e1;
border-radius: 12px;
padding: 15px;
margin: 20px 0;
text-align: center;
}
.v-ad-label {
font-size: 10px;
color: #94a3b8;
margin-bottom: 10px;
letter-spacing: 1px;
}
/* 底部操作 */
.v-footer-actions { text-align: center; margin-top: 40px; padding-top: 20px; border-top: 1px solid #e2e8f0; }
.v-btn-more {
display: inline-flex;
align-items: center;
gap: 8px;
color: #64748b;
text-decoration: none;
font-size: 0.9rem;
}
.v-btn-more:hover { color: #1e293b; }
/* 响应式适配 */
@media (max-width: 640px) {
.v-header-card { flex-direction: column; text-align: center; }
.v-thumb-box { width: 100%; height: 180px; }
.v-dl-card { flex-direction: column; gap: 15px; text-align: center; }
.v-res-line { justify-content: center; }
.v-detail-line { justify-content: center; }
.v-btn-download { width: 100%; justify-content: center; }
}
/* ========== 服务提示信息卡片样式 ========== */
.service-notice-card {
background: var(--qa-background-color);
border: 1px solid #d9f3e4;
border-radius: 12px;
padding: 1rem 1.5rem;
}
.notice-content {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 8px 20px;
font-size: 0.9rem;
color: #4a5568;
line-height: 1.6;
}
.notice-content span {
display: inline-flex;
align-items: center;
gap: 6px;
}
.notice-content i {
color: #10b981;
font-size: 0.85rem;
}
.notice-content a {
color: #10b981;
text-decoration: none;
font-weight: 500;
}
.notice-content a:hover {
text-decoration: underline;
}
/* ========== 示例URL卡片样式 ========== */
.url-example-card {
background: var(--qa-background-color);
border: 1px solid #d9f3e4;
border-radius: 12px;
padding: 1rem 1.2rem;
margin-bottom: 1rem;
}
.example-header {
display: flex;
align-items: center;
gap: 8px;
font-size: 1rem;
font-weight: 600;
color: #333;
margin-bottom: 8px;
}
.example-header i {
color: #10b981;
}
.example-url {
display: flex;
align-items: center;
gap: 8px;
background: #fff;
border: 1px solid #d9f3e4;
border-radius: 6px;
padding: 8px 12px;
margin-bottom: 8px;
}
.example-url code {
flex: 1;
font-family: 'Consolas', 'Monaco', monospace;
font-size: 0.85rem;
color: #047857;
word-break: break-all;
background: transparent;
}
.copy-btn {
background: #10b981;
color: #fff;
border: none;
padding: 6px 10px;
border-radius: 5px;
cursor: pointer;
transition: all 0.2s;
flex-shrink: 0;
font-size: 0.8rem;
}
.copy-btn:hover {
background: #059669;
}
.copy-btn.copied {
background: #065f46;
}
.alt-formats {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 6px;
margin-bottom: 8px;
}
.alt-label {
font-size: 0.8rem;
color: #666;
}
.alt-url {
font-family: 'Consolas', 'Monaco', monospace;
font-size: 0.75rem;
color: #047857;
background: #fff;
padding: 3px 8px;
border-radius: 4px;
border: 1px solid #d9f3e4;
}
.how-to-get {
display: flex;
align-items: center;
gap: 6px;
margin: 0;
font-size: 0.85rem;
color: #666;
}
.how-to-get i {
color: #10b981;
flex-shrink: 0;
}
/* 响应式适配 */
@media (max-width: 768px) {
.service-notice-card {
padding: 1rem;
}
.notice-content {
flex-direction: column;
align-items: flex-start;
gap: 6px;
}
.example-url {
flex-direction: column;
align-items: stretch;
gap: 8px;
}
.copy-btn {
width: 100%;
}
}
/* ========== Popular Tags 样式 ========== */
.popular-tags-section {
margin-top: 25px;
background: #f8fafc;
padding: 25px;
border-radius: 12px;
border: 1px solid #e2e8f0;
}
.popular-tags-section .section-title {
margin: 0 0 15px 0;
font-size: 1rem;
text-align: left;
}
.tags-container {
display: flex;
flex-wrap: wrap;
gap: 8px;
}
.tag-item {
display: inline-flex;
align-items: center;
gap: 4px;
padding: 5px 12px;
background: #fff;
border: 1px solid #e2e8f0;
border-radius: 15px;
color: #64748b;
text-decoration: none;
font-size: 0.75rem;
transition: all 0.2s ease;
}
.tag-item:hover {
background: var(--primary-color);
color: #fff;
border-color: var(--primary-color);
}
.tag-item .tag-count {
color: #94a3b8;
}
.tag-item:hover .tag-count {
color: rgba(255,255,255,0.8);
}
@media (max-width: 768px) {
.popular-tags-section {
padding: 20px;
}
.tags-container {
gap: 6px;
}
.tag-item {
padding: 4px 10px;
font-size: 0.7rem;
}
}
/* ========== 直接下载模式 - 新增样式 ========== */
/* 下载按钮 - 按钮样式（改为 button 元素） */
.v-btn-download {
border: none;
cursor: pointer;
white-space: nowrap;
}
.v-btn-download.btn-processing {
background: #6b7280 !important;
cursor: wait;
pointer-events: none;
}
/* 下载状态提示条 */
.download-status-bar {
padding: 12px 16px;
border-radius: 8px;
font-size: 0.85rem;
margin: 15px 0;
text-align: center;
}
.download-status-bar.status-loading {
background: #fef3c7;
color: #92400e;
border: 1px solid #fde68a;
}
.download-status-bar.status-success {
background: #dcfce7;
color: #166534;
border: 1px solid #bbf7d0;
}
.download-status-bar.status-error {
background: #fee2e2;
color: #dc2626;
border: 1px solid #fecaca;
}
.download-status-bar.status-bilibili {
background: #fff3cd;
color: #856404;
border: 1px solid #ffeeba;
text-align: left;
}
.download-status-bar.status-bilibili p {
margin: 0 0 8px 0;
}
.download-status-bar.status-bilibili a {
color: #0d6efd;
text-decoration: underline;
font-weight: 500;
}
/* Bilibili 专用提示框 */
.bilibili-tip-box {
padding: 10px 14px;
background: #fff3cd;
color: #856404;
border: 1px solid #ffeeba;
border-radius: 8px;
font-size: 0.8rem;
margin: 15px 0;
}
/* 视频详情增强 - 作者/时长/描述 */
.v-meta-detail {
display: flex;
flex-wrap: wrap;
gap: 12px;
margin-bottom: 8px;
}
.v-meta-item {
display: inline-flex;
align-items: center;
gap: 5px;
font-size: 0.85rem;
color: #64748b;
}
.v-meta-item i {
color: #10b981;
}
.v-description {
font-size: 0.8rem;
color: #64748b;
line-height: 1.5;
margin: 8px 0;
padding: 10px;
background: #f8fafc;
border-radius: 6px;
}
/* 响应式适配 */
@media (max-width: 640px) {
.download-status-bar {
font-size: 0.8rem;
padding: 10px 12px;
}
.v-meta-detail {
justify-content: center;
}
}
