/* 门户频道列表页 v2.0 样式（原 list.htm 内联 <style> 外置，随 $hv_asset_ver 版本化） */
/* ============================================
   频道列表页 v2.0 视觉重构
   深海渐变Hero + 卡片悬浮 + 鎏金光感
   ============================================ */

/* --- Hero 头部：深海渐变 + 鎏金光晕 + 点阵纹理 --- */
.hv-ch-head{
  background:linear-gradient(135deg,var(--hv-primary-dark) 0%,var(--hv-primary) 55%,var(--hv-primary-light) 100%);
  border:none;
  border-radius:var(--hv-radius-xl);
  box-shadow:0 4px 24px rgba(15,42,67,.20);
  padding:36px 32px 30px;
  margin-bottom:20px;
  position:relative;
  overflow:hidden;
}
.hv-ch-head::before{
  content:"";
  position:absolute;
  top:0;left:0;right:0;bottom:0;
  background:radial-gradient(ellipse 500px 300px at 85% 20%,rgba(201,168,76,.22) 0%,transparent 60%),radial-gradient(ellipse 400px 200px at 15% 80%,rgba(59,130,246,.12) 0%,transparent 55%);
  pointer-events:none;
}
.hv-ch-head::after{
  content:"";
  position:absolute;
  top:0;left:0;right:0;bottom:0;
  background-image:radial-gradient(circle,rgba(255,255,255,.05) 1px,transparent 1px);
  background-size:24px 24px;
  pointer-events:none;
}
.hv-ch-head > *{position:relative;z-index:1;}
.hv-ch-title{
  font-size:var(--hv-text-2xl);
  font-weight:var(--hv-weight-extrabold);
  color:#fff;
  display:flex;
  align-items:center;
  gap:12px;
  text-shadow:0 2px 12px rgba(0,0,0,.15);
}
.hv-ch-title::before{
  content:"";
  width:5px;
  height:28px;
  background:linear-gradient(180deg,var(--hv-accent-light),var(--hv-accent));
  border-radius:var(--hv-radius-sm);
  flex-shrink:0;
  box-shadow:0 0 12px rgba(201,168,76,.4);
}
.hv-ch-desc{
  font-size:var(--hv-text-sm);
  color:rgba(255,255,255,.75);
  margin-top:10px;
  line-height:var(--hv-leading-normal);
}
.hv-ch-subs{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  margin-top:16px;
}
.hv-ch-sub-pill{
  padding:6px 18px;
  border-radius:var(--hv-radius-full);
  font-size:13px;
  font-weight:600;
  color:#fff;
  background:rgba(255,255,255,.12);
  border:1px solid rgba(255,255,255,.2);
  backdrop-filter:blur(4px);
  -webkit-backdrop-filter:blur(4px);
  transition:all .25s ease;
}
.hv-ch-sub-pill:hover{
  background:var(--hv-accent);
  border-color:var(--hv-accent);
  color:#fff;
  transform:translateY(-2px);
  box-shadow:0 4px 14px rgba(201,168,76,.3);
}

/* --- 双栏布局 --- */
.hv-ch-layout{
  display:grid;
  grid-template-columns:minmax(0,1fr) 300px;
  gap:20px;
  align-items:start;
}

/* --- 列表容器（透明，由卡片自身提供视觉） --- */
.hv-ch-list{
  min-width:0;
  background:transparent;
  border:none;
  border-radius:0;
  box-shadow:none;
  overflow:visible;
}

/* --- 工具栏：独立悬浮卡片 --- */
.hv-ch-toolbar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:16px 22px;
  margin-bottom:16px;
  background:var(--hv-bg-card);
  border:1px solid var(--hv-border);
  border-radius:var(--hv-radius-lg);
  box-shadow:var(--hv-shadow-sm);
}

/* --- 排序标签：现代胶囊设计 --- */
.hv-ch-sort{
  display:inline-flex;
  gap:2px;
  background:var(--hv-bg-hover);
  border:1px solid var(--hv-border);
  border-radius:var(--hv-radius-full);
  padding:4px;
}
.hv-ch-sort a{
  padding:6px 20px;
  border-radius:var(--hv-radius-full);
  font-size:13px;
  font-weight:600;
  color:var(--hv-text-muted);
  transition:all .25s ease;
}
.hv-ch-sort a:hover{color:var(--hv-primary);}
.hv-ch-sort a.on{
  background:linear-gradient(135deg,var(--hv-primary),var(--hv-primary-light));
  color:#fff;
  box-shadow:0 2px 8px rgba(27,58,95,.25);
}

/* --- 文章计数 --- */
.hv-ch-total{
  font-size:var(--hv-text-xs);
  color:var(--hv-text-muted);
  white-space:nowrap;
  font-weight:600;
}
.hv-ch-total strong{
  color:var(--hv-primary);
  font-size:var(--hv-text-sm);
  font-weight:800;
}

/* --- 文章列表：卡片布局 --- */
.hv-ch-items{
  display:flex;
  flex-direction:column;
  gap:14px;
}

/* --- 文章卡片：阴影 + 悬停上浮 + 渐变光带 --- */
.hv-article-item{
  display:flex;
  gap:18px;
  padding:20px 24px;
  background:var(--hv-bg-card);
  border:1px solid var(--hv-border);
  border-radius:var(--hv-radius-lg);
  box-shadow:var(--hv-shadow-sm);
  transition:all .3s cubic-bezier(.4,0,.2,1);
  position:relative;
  overflow:hidden;
}
.hv-article-item::before{
  content:"";
  position:absolute;
  top:0;left:0;right:0;
  height:3px;
  background:linear-gradient(90deg,var(--hv-primary),var(--hv-primary-light),var(--hv-accent));
  opacity:0;
  transition:opacity .3s;
}
.hv-article-item:hover{
  box-shadow:var(--hv-shadow-hover);
  transform:translateY(-3px);
  border-color:var(--hv-primary-border);
}
.hv-article-item:hover::before{opacity:1;}
.hv-article-item:last-child{border-bottom:1px solid var(--hv-border);}

/* --- 精选首篇：渐变背景 + 鎏金徽章 --- */
.hv-article-item:first-child{
  padding:24px 28px;
  background:linear-gradient(135deg,var(--hv-primary-bg) 0%,rgba(201,168,76,.05) 50%,transparent 100%);
  border:1px solid var(--hv-primary-border);
}
.hv-article-item:first-child::before{opacity:1;}
.hv-article-item:first-child::after{
  content:"精选";
  position:absolute;
  top:12px;
  right:12px;
  padding:3px 14px;
  background:linear-gradient(135deg,var(--hv-accent),var(--hv-accent-dark));
  color:#fff;
  font-size:11px;
  font-weight:700;
  border-radius:var(--hv-radius-full);
  box-shadow:0 2px 8px rgba(201,168,76,.3);
  z-index:2;
  letter-spacing:1px;
}
/* 首篇文章标题与其他保持一致 */

/* --- 缩略图：悬停缩放 + 底部渐变叠层 --- */
.hv-article-thumb-link{
  flex-shrink:0;
  display:block;
  border-radius:var(--hv-radius-md);
  overflow:hidden;
  position:relative;
}
.hv-article-thumb{
  width:200px;
  height:134px;
  object-fit:cover;
  display:block;
  box-shadow:var(--hv-shadow-sm);
  transition:transform .4s cubic-bezier(.4,0,.2,1);
}
.hv-article-item:hover .hv-article-thumb{transform:scale(1.06);}
.hv-article-thumb-link::after{
  content:"";
  position:absolute;
  bottom:0;left:0;right:0;
  height:40%;
  background:linear-gradient(to top,rgba(0,0,0,.3),transparent);
  pointer-events:none;
}

/* --- 文章内容区 --- */
.hv-article-main{
  flex:1;
  min-width:0;
  display:flex;
  flex-direction:column;
}
.hv-article-title{
  font-size:var(--hv-text-md);
  font-weight:var(--hv-weight-bold);
  line-height:var(--hv-leading-snug);
}
.hv-article-title a{
  color:var(--hv-text-title);
  display:-webkit-box;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
  overflow:hidden;
  overflow-wrap:anywhere;
  word-break:break-word;
  transition:color .2s;
}
.hv-article-item:hover .hv-article-title a{color:var(--hv-primary);}
.hv-article-summary{
  font-size:var(--hv-text-sm);
  color:var(--hv-text-muted);
  line-height:var(--hv-leading-normal);
  margin-top:8px;
  display:-webkit-box;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
  overflow:hidden;
  overflow-wrap:anywhere;
  word-break:break-word;
  flex:1;
}
.hv-article-item.no-thumb .hv-article-title{font-size:var(--hv-text-lg);}
.hv-article-item.no-thumb .hv-article-summary{-webkit-line-clamp:3;}

/* --- 文章元信息：分隔线 + 图标着色 --- */
.hv-article-meta{
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:6px 16px;
  margin-top:12px;
  padding-top:10px;
  border-top:1px solid var(--hv-border-light);
  font-size:var(--hv-text-xs);
  color:var(--hv-text-muted);
}
.hv-article-meta-item{
  display:inline-flex;
  align-items:center;
  gap:5px;
}
.hv-article-meta-item svg{
  width:14px;
  height:14px;
  flex-shrink:0;
  opacity:.55;
}
.hv-article-cat{
  display:inline-flex;
  align-items:center;
  padding:2px 12px;
  border-radius:var(--hv-radius-full);
  color:var(--hv-primary);
  font-weight:600;
  font-size:11px;
  background:var(--hv-primary-bg);
  border:1px solid var(--hv-primary-border);
  transition:all .2s;
}
.hv-article-cat:hover{
  background:var(--hv-primary);
  color:#fff;
  border-color:var(--hv-primary);
}

/* --- 加载更多按钮：渐变 + 涟漪效果 --- */
.hv-ch-more-wrap{
  padding:16px 0 0;
  text-align:center;
}
.hv-ch-more-btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:6px;
  min-width:240px;
  padding:12px 32px;
  border:1px solid var(--hv-primary-border);
  border-radius:var(--hv-radius-full);
  background:linear-gradient(135deg,var(--hv-primary-bg),rgba(201,168,76,.06));
  color:var(--hv-primary);
  font-size:var(--hv-text-sm);
  font-weight:600;
  cursor:pointer;
  transition:all .3s ease;
  position:relative;
  overflow:hidden;
}
.hv-ch-more-btn::after{
  content:"";
  position:absolute;
  top:50%;left:50%;
  width:0;height:0;
  border-radius:50%;
  background:rgba(255,255,255,.15);
  transform:translate(-50%,-50%);
  transition:width .5s,height .5s;
}
.hv-ch-more-btn:active::after{width:300px;height:300px;}
.hv-ch-more-btn:hover{
  background:linear-gradient(135deg,var(--hv-primary),var(--hv-primary-light));
  border-color:var(--hv-primary);
  color:#fff;
  box-shadow:0 6px 20px rgba(27,58,95,.25);
  transform:translateY(-2px);
}
.hv-ch-more-btn:disabled{opacity:.6;cursor:not-allowed;transform:none;}
.hv-ch-more-btn.hv-ch-more-end{
  border-color:var(--hv-border);
  background:var(--hv-bg-hover);
  color:var(--hv-text-muted);
  cursor:default;
}
.hv-ch-more-btn.hv-ch-more-end:hover{
  background:var(--hv-bg-hover);
  color:var(--hv-text-muted);
  box-shadow:none;
}
.hv-ch-more-btn.loading{pointer-events:none;opacity:.7;}
.hv-ch-more-btn.loading::before{
  content:"";
  display:inline-block;
  width:14px;
  height:14px;
  border:2px solid var(--hv-primary-border);
  border-top-color:var(--hv-primary);
  border-radius:50%;
  animation:hv-ch-spin .6s linear infinite;
  margin-right:8px;
}
@keyframes hv-ch-spin{to{transform:rotate(360deg);}}

/* --- 分页器：渐变激活态 --- */
.hv-ch-pager{
  padding:16px 0 0;
  border-top:1px solid var(--hv-border-light);
  margin-top:4px;
}
.hv-ch-pager .pg a,.hv-ch-pager .pg strong{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:38px;
  height:38px;
  padding:0 10px;
  margin:0 3px;
  border:1px solid var(--hv-border);
  border-radius:var(--hv-radius-sm);
  font-size:14px;
  color:var(--hv-text-body);
  transition:all .2s;
}
.hv-ch-pager .pg a:hover{
  border-color:var(--hv-primary);
  color:var(--hv-primary);
  background:var(--hv-primary-bg);
  transform:translateY(-1px);
}
.hv-ch-pager .pg strong{
  background:linear-gradient(135deg,var(--hv-primary-light),var(--hv-primary));
  border-color:var(--hv-primary);
  color:#fff;
  box-shadow:0 2px 8px rgba(27,58,95,.20);
}
.hv-ch-pager .pg label{display:none;}

/* --- 侧栏卡片：悬停光带 + 渐变标题条 --- */
.hv-ch-side .hv-sidebar-card{
  background:var(--hv-bg-card);
  border-radius:var(--hv-radius-lg);
  padding:20px;
  border:1px solid var(--hv-border);
  box-shadow:var(--hv-shadow-sm);
  margin-bottom:16px;
  transition:all .25s;
  position:relative;
  overflow:hidden;
}
.hv-ch-side .hv-sidebar-card::before{
  content:"";
  position:absolute;
  top:0;left:0;right:0;
  height:2px;
  background:linear-gradient(90deg,transparent,var(--hv-primary-border) 20%,var(--hv-accent-border) 50%,var(--hv-primary-border) 80%,transparent);
  opacity:0;
  transition:opacity .25s;
}
.hv-ch-side .hv-sidebar-card:hover{
  box-shadow:var(--hv-shadow-hover);
  border-color:var(--hv-primary-border);
}
.hv-ch-side .hv-sidebar-card:hover::before{opacity:1;}
.hv-ch-side .hv-sidebar-card h3{
  font-size:15px;
  font-weight:700;
  color:var(--hv-text-title);
  margin-bottom:14px;
  display:flex;
  align-items:center;
  gap:8px;
}
.hv-ch-side .hv-sidebar-card h3::before{
  content:"";
  width:4px;
  height:18px;
  background:linear-gradient(180deg,var(--hv-primary),var(--hv-accent));
  border-radius:2px;
  box-shadow:0 0 8px rgba(201,168,76,.25);
}
.hv-ch-side .hv-sidebar-card ul li{
  padding:8px 0;
  border-bottom:1px dashed var(--hv-border-light);
  font-size:var(--hv-text-sm);
  display:flex;
  align-items:center;
}
.hv-ch-side .hv-sidebar-card ul li:last-child{border-bottom:none;}
.hv-ch-side .hv-sidebar-card ul li a{
  color:var(--hv-text-body);
  display:block;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  transition:color .2s;
}
.hv-ch-side .hv-sidebar-card ul li a:hover{color:var(--hv-primary);}
.hv-ch-side .hv-side-num{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:20px;
  height:20px;
  border-radius:var(--hv-radius-sm);
  background:var(--hv-bg-hover);
  color:var(--hv-text-muted);
  font-size:11px;
  font-weight:700;
  margin-right:8px;
  flex-shrink:0;
  transition:all .2s;
}
.hv-ch-side .hv-side-num.top{
  background:linear-gradient(135deg,var(--hv-accent),var(--hv-accent-dark));
  color:#fff;
  box-shadow:0 2px 6px rgba(201,168,76,.3);
}

/* --- 右侧栏 --- */
/* 侧栏比视口高（约 1170px），不能再设 sticky + max-height：那会产生内部滚动条，
   且 sticky 会把侧栏钉在视口顶部、底部内容永远滚不到，故随页面正常流动 */
.hv-ch-side{
  align-self:start;
}
.hv-ch-side .hv-sidebar-card:last-child{margin-bottom:0;}

/* --- 空状态：圆形图标背景 --- */
.hv-empty{text-align:center;padding:48px 20px;}
.hv-empty-icon{font-size:0;margin-bottom:16px;}
.hv-empty-icon svg{
  width:72px;
  height:72px;
  opacity:.35;
  background:var(--hv-primary-bg);
  padding:20px;
  border-radius:50%;
}
.hv-empty-text{font-size:var(--hv-text-sm);color:var(--hv-text-muted);}
.hv-empty-text a{color:var(--hv-primary);font-weight:600;}

/* --- 响应式 --- */
@media (max-width:992px){
  .hv-ch-layout{grid-template-columns:minmax(0,1fr) 260px;gap:16px;}
}
@media (max-width:768px){
  .hv-ch-layout{grid-template-columns:minmax(0,1fr);}
  .hv-ch-toolbar{padding:14px 16px;flex-wrap:wrap;gap:8px;}
  .hv-article-thumb{width:130px;height:88px;}
  .hv-article-item{padding:16px 18px;gap:14px;}
  .hv-article-item:first-child{padding:18px 20px;}
  .hv-ch-head{padding:24px 18px;}
  .hv-ch-side{order:2;}
  .hv-ch-more-btn{min-width:0;width:100%;}
  .hv-article-thumb-link::after{display:none;}
}
@media (max-width:480px){
  .hv-article-thumb{width:100px;height:72px;}
  .hv-article-summary{-webkit-line-clamp:1;}
  .hv-article-item.no-thumb .hv-article-summary{-webkit-line-clamp:2;}
  .hv-article-item.no-thumb .hv-article-title{font-size:var(--hv-text-md);}
  .hv-article-item:first-child .hv-article-title{font-size:var(--hv-text-md);}
  .hv-ch-sort a{padding:5px 14px;font-size:12px;}
  .hv-ch-total{font-size:11px;}
  .hv-ch-title{font-size:var(--hv-text-xl);}
}
@media (prefers-reduced-motion:reduce){
  .hv-article-item:hover{transform:none;}
  .hv-article-item:hover .hv-article-thumb{transform:none;}
  .hv-ch-more-btn:hover{transform:none;}
  .hv-ch-sub-pill:hover{transform:none;}
  .hv-animate{animation:none;}
}
