/* ============================================================
   一诺CMS - 响应式设计 (Responsive)
   PC: >1024px  |  Pad: 768-1024px  |  Mobile: <768px
   ============================================================ */

/* ===== Pad 端 (768px - 1024px) ===== */
@media (max-width: 1024px) {
  :root {
    --sidebar-width: 220px;
    --ad-sidebar-width: 250px;
  }

  /* 右侧广告位隐藏 */
  .sidebar-right {
    display: none;
  }

  /* 改为两栏: 左栏 + 主内容 */
  .main-wrapper {
    grid-template-columns: var(--sidebar-width) 1fr;
    gap: var(--space-4);
  }

  /* 幻灯高度调整（保持 16:9 自适应，避免 aspect-ratio 反推宽度） */
  .slideshow {
    height: auto;
    width: 100%;
  }

  .slideshow-slide .slide-title {
    font-size: var(--font-size-xl);
  }

  /* 推荐卡片改为 2 列 */
  .featured-grid {
    grid-template-columns: repeat(2, 1fr);
  }

  /* 文章缩略图缩小 */
  .article-thumb {
    width: 160px;
    height: 110px;
  }

  .article-info h3 {
    font-size: var(--font-size-base);
  }

  /* 相关文章 */
  .related-list {
    grid-template-columns: 1fr;
  }

  /* 底部调整：Pad 端 2 列（关于 + 快速链接），隐藏联系与服务、友情链接 */
  .footer-inner {
    grid-template-columns: 1fr 1fr;
    gap: var(--space-6);
  }

  .footer-contact,
  .footer-friend {
    display: none;
  }

  /* 快速链接：Pad 端 2 列 */
  .footer-links-grid {
    grid-template-columns: 1fr 1fr;
  }

  /* 用户面板隐藏（放到底部导航） */
  .user-panel {
    display: none;
  }

  /* 音乐播放器：Pad 端侧边栏变窄（220px），控件行放不下 4 按钮 + 音量条 → 允许换行，
     音量条独占一行并撑满整行宽度，避免右端被卡片边界遮挡 */
  .music-controls {
    flex-wrap: wrap;
    /* 换行后音量条落到按钮下方：加大行间距（16px），避免触屏误触相邻的播放/切歌按钮 */
    row-gap: var(--space-4);
  }
  .music-volume {
    flex-basis: 100%;
    min-width: 0;
  }
  /* 音量条换行后，与下方「歌曲选择」行之间的间距：Pad 下加大到 16px（触屏友好），
     覆盖 layout.css 中 .music-controls + .music-controls 的 PC 默认 8px（!important 对齐） */
  .music-controls + .music-controls {
    margin-top: var(--space-4) !important;
  }
}

/* ===== 移动端 (< 768px) ===== */
@keyframes tableHintFadeIn {
  from { opacity: 0; transform: translateY(-4px); }
  to   { opacity: 1; transform: none; }
}

@media (max-width: 767px) {
  :root {
    --header-height: 56px;
    --container-padding: var(--space-4);
  }

  /* 隐藏桌面导航 */
  .header-nav,
  .header-search,
  .header-actions {
    display: none;
  }

  /* 显示汉堡菜单 */
  .mobile-menu-toggle {
    display: block;
  }

  /* 显示移动端搜索按钮（靠右，紧挨菜单按钮） */
  .mobile-search-toggle {
    display: block;
    margin-left: auto;
    margin-right: -6px;
  }

  /* 显示移动端音乐播放按钮（滚动按钮之上，与滚动按钮对齐） */
  .mobile-music-toggle {
    display: flex;
    bottom: calc(136px + env(safe-area-inset-bottom, 0px));
    right: var(--space-4);
    width: 40px;
    height: 40px;
  }

  /* 认证页（登录/注册）隐藏汉堡菜单：沉浸式认证页无需侧边导航，用 Logo 返回首页即可 */
  .auth-page .mobile-menu-toggle {
    display: none;
  }

  /* 左侧栏隐藏 */
  .sidebar-left {
    display: none;
  }

  /* 单栏布局 */
  .main-wrapper {
    grid-template-columns: 1fr;
    padding: var(--space-4) var(--container-padding);
    gap: var(--space-4);
  }

  /* 幻灯自适应（宽度占满，高度按 16:9 自动计算） */
  .slideshow {
    height: auto;
    width: 100%;
  }

  .slideshow-btn {
    width: 32px;
    height: 32px;
    font-size: var(--font-size-base);
  }

  .slideshow-slide .slide-overlay {
    padding: var(--space-4);
  }

  .slideshow-slide .slide-title {
    font-size: var(--font-size-base);
  }

  .slideshow-slide .slide-category {
    font-size: 10px;
  }

  .slideshow-thumbs {
    grid-template-columns: repeat(4, 1fr);
    gap: var(--space-2);
  }

  /* 推荐卡片单列 */
  .featured-grid {
    grid-template-columns: 1fr;
  }

  /* 文章列表项纵向排列 */
  .article-item {
    flex-direction: column;
  }

  .article-thumb {
    width: 100%;
    height: 180px;
  }

  .article-info h3 {
    font-size: var(--font-size-base);
  }

  .article-summary {
    -webkit-line-clamp: 3;
  }

  .article-meta,
  .article-item-meta {
    gap: var(--space-3);
  }

  /* 文章详情 */
  .article-detail-header h1 {
    font-size: var(--font-size-2xl);
  }
  /* 移动端 meta 行优化：5 项总宽 > 390 视口，会裁切。
     ① 收紧间距让 4 项文本（作者/来源/时间/阅读）容得下第一行；
     ② order:99 把字号控件移到视觉末尾 → 借助 flex-wrap 自然换到第二行独占。
     仅在 ≤767px 生效，桌面端 DOM 顺序不变（控件仍紧跟发布时间）。 */
  .article-detail-meta {
    gap: var(--space-3);
  }
  .article-detail-meta .article-font-control {
    order: 99;
  }

  .article-content h2 {
    font-size: var(--font-size-xl);
  }

  .article-content h3 {
    font-size: var(--font-size-lg);
  }

  /* 窄屏下表格横向滚动：滚动容器改为 JS 包裹的 .table-scroll，
     表格自身按内容宽度展开（不再加 max-width 限制，否则无法触发滚动） */
  .table-scroll {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    /* 角部裁剪移到滚动容器：可滚动表格的 overflow 需放开给 sticky 用（见下） */
    border-radius: var(--radius-md);
  }
  .article-content table {
    display: block;
    width: max-content;
  }
  /* 仅当表格真的溢出（JS 加 .is-scrollable）才显示滑动提示 */
  .table-scroll.is-scrollable .table-scroll-hint {
    display: inline-flex;
    animation: tableHintFadeIn .25s ease;
  }

  /* 横向滚动的宽表格：首列固定（吸顶/吸左），横向滑动时行标签始终可见
     —— 对比类/参数类表格在手机上的最佳体验，对所有会滚动的表格通用 */
  .table-scroll.is-scrollable table th:first-child,
  .table-scroll.is-scrollable table td:first-child {
    position: sticky;
    left: 0;
    z-index: 2;
    background: var(--color-bg, #fff);
  }
  /* 左上角表头格层级最高，盖住其余表头 */
  .table-scroll.is-scrollable table thead th:first-child {
    z-index: 3;
    background: var(--color-primary-bg, #f7ebe6);
  }
  /* 固定列右侧加一条渐隐分隔线，暗示可继续横向滑动 */
  .table-scroll.is-scrollable table th:first-child::after,
  .table-scroll.is-scrollable table td:first-child::after {
    content: "";
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    width: 3px;
    background: linear-gradient(to right, rgba(0,0,0,0.10), rgba(0,0,0,0));
    pointer-events: none;
  }

  /* ── sticky 首列兼容性修复（Chromium 已知缺陷）──
     ① border-collapse: collapse 下 sticky 单元格横向滚动时边框会消失/错位
        → 可滚动表格切 separate + border-spacing:0，改单边边框还原「合并边框」观感；
     ② overflow 不能压在表格上（overflow:hidden 使表格成为最近的滚动容器，
         sticky 会锁定在表格自身而永不生效）→ 放开 overflow，角部裁剪已交给 .table-scroll */
  .table-scroll.is-scrollable table {
    border-collapse: separate;
    border-spacing: 0;
    overflow: visible;
  }
  .table-scroll.is-scrollable table th,
  .table-scroll.is-scrollable table td {
    border: none;
    border-right: 1px solid var(--color-border, #e6dfd0);
    border-bottom: 1px solid var(--color-border, #e6dfd0);
  }
  /* 外框：首行顶边、首列左边（每格只画右/下边，避免与相邻格形成双线） */
  .table-scroll.is-scrollable table tr:first-child th,
  .table-scroll.is-scrollable table tr:first-child td {
    border-top: 1px solid var(--color-border, #e6dfd0);
  }
  .table-scroll.is-scrollable table th:first-child,
  .table-scroll.is-scrollable table td:first-child {
    border-left: 1px solid var(--color-border, #e6dfd0);
  }

  /* 显式指定的「对比类」表格：移动端保证足够宽度以触发横向滚动（桌面端不受影响） */
  .article-content table.table-compare {
    min-width: 30rem;
  }

  /* 窄屏下收紧表格单元格内边距，单屏可多显示几列 */
  .article-content th,
  .article-content td {
    padding: var(--space-2) var(--space-3);
  }

  /* 分页缩小 */
  .pagination {
    gap: var(--space-1);
  }

  .pagination a,
  .pagination span {
    min-width: 36px;
    height: 36px;
    font-size: var(--font-size-xs);
  }

  /* 底部 */
  .footer-inner {
    grid-template-columns: 1fr;
    gap: var(--space-4);
  }

  /* 移动端页脚只保留「关于」介绍 + 版权，隐藏其余列以节省空间 */
  .footer-links,
  .footer-contact,
  .footer-friend {
    display: none;
  }

  .footer-about {
    text-align: center;
  }

  .footer-about-body {
    flex-direction: column;
    align-items: center;
  }

  .footer-about-text {
    align-items: center;
    text-align: center;
  }

  .footer-bottom {
    flex-direction: column;
    text-align: center;
    /* 移动端版权文字已隐藏，去掉分隔横线与多余上边距 */
    border-top: none;
    margin-top: 0;
    padding-top: 0;
  }

  /* 移动端隐藏版权声明与备案号，节省底部空间 */
  .footer-copyright,
  .footer-beian {
    display: none;
  }

  /* 显示移动端底部导航：只降低导航栏高度（压缩内边距），不缩小图标/文字大小 */
  .mobile-bottom-nav {
    display: block;
    padding: 2px 0;
    padding-bottom: env(safe-area-inset-bottom, 2px);
  }

  .mobile-bottom-nav a {
    gap: 2px;
    padding: 2px var(--space-2);
  }

  /* 显示移动端侧边抽屉 */
  .sidebar-overlay,
  .mobile-sidebar {
    display: block;
  }

  /* 底部留白给移动导航（含 safe-area，避免底部导航遮挡 footer 内容） */
  .site-footer {
    padding-bottom: calc(60px + env(safe-area-inset-bottom, 0px));
  }

  /* 认证页（登录/注册）无底部导航，footer 底部留白恢复正常 */
  .auth-page .site-footer {
    padding-bottom: var(--space-6);
  }

  /* 返回顶部按钮调整位置（在底部导航之上，含 safe-area） */
  .back-to-top {
    bottom: calc(72px + env(safe-area-inset-bottom, 0px));
    right: var(--space-4);
    width: 40px;
    height: 40px;
  }

  /* 搜索页 */
  .search-input-large {
    max-width: 100%;
  }

  .search-input-large input {
    padding: var(--space-3) var(--space-10) var(--space-3) var(--space-4);
    font-size: var(--font-size-sm);
  }

  .search-input-large button {
    width: 32px;
    height: 32px;
    font-size: var(--font-size-base);
  }

  /* 两栏列表变单栏 */
  .article-grid {
    grid-template-columns: 1fr;
  }

  /* ===== 详情页（文章/图集/视频/下载）移动端适配 ===== */
  /* 图集主图区缩小，避免手机上过高 */
  .gallery-main {
    min-height: 220px;
    max-height: 420px;
  }

  /* 操作栏按钮间距收窄 */
  .article-action-bar {
    gap: var(--space-6);
  }

  /* 付费卡片改为纵向排列，居中 */
  .paywall-box {
    flex-direction: column;
    gap: var(--space-3);
    text-align: center;
    padding: var(--space-4);
  }

  /* 下载按钮缩小 */
  .download-btn {
    padding: 10px 24px;
  }

  /* 文件信息网格单列 */
  .download-info-grid {
    grid-template-columns: 1fr 1fr;
    gap: var(--space-3);
  }
}

/* ===== 小屏手机 (< 480px) ===== */
@media (max-width: 479px) {
  .article-thumb {
    height: 150px;
  }

  .slideshow {
    border-radius: var(--radius-md);
  }

  .card {
    border-radius: var(--radius-md);
  }

  .card-header,
  .card-body,
  .card-footer {
    padding: var(--space-4);
  }

  .article-detail-header h1 {
    font-size: var(--font-size-xl);
  }
}

/* ===== 中小屏底部（640px - 767px）：2 列（关于 + 快速链接）===== */
@media (min-width: 640px) and (max-width: 767px) {
  .footer-inner {
    grid-template-columns: 1fr 1fr;
    gap: var(--space-6);
  }

  .footer-links {
    display: block;
  }

  .footer-contact,
  .footer-friend {
    display: none;
  }

  .footer-links-grid {
    grid-template-columns: 1fr 1fr;
  }

  .footer-about {
    text-align: left;
  }

  .footer-about-body {
    flex-direction: row;
    align-items: flex-start;
  }

  .footer-about-text {
    align-items: flex-start;
    text-align: left;
  }
}
