@charset "utf-8";
/**
 * 吾爱资源子主题 - 主样式表
 * 站点：https://52ziyuan.com/
 * 作者：资源客 https://ziyuanke.com/
 */

/* ==================================================================
   【子主题】AI导航搜索模块  .zy-ai-search
   UI 参考 https://maomu.com/ 首页（数值取自其线上编译样式）
   变量：--zy-ai-main / --zy-ai-bg / --zy-ai-height 由小工具行内注入
        --zy-ai-logo 由每行图标行注入，--zy-ai-dur 由 JS 按速度算出
   ================================================================== */

.zy-ai-search-widget {
    margin: 0 !important;
}

.zy-ai-search {
    --zy-ai-main: #3f66ff;
    --zy-ai-bg: #f8fafc;
    --zy-ai-height: 380px;
    --zy-ai-title: 44px;
    --zy-ai-logo: 40px;
    --zy-ai-border: #d9d9d9;
    --zy-ai-box: #fff;
    position: relative;
    background-color: var(--zy-ai-bg);
}

.zy-ai-search .zy-hl {
    color: var(--zy-ai-main);
}

/* ---------------- 外层 ---------------- */
/* 不能裁切：搜索引擎下拉列表是 header 的后代，横向溢出已由每个图标行自己裁掉 */
.zy-ai-search .zy-ai-header {
    position: relative;
    z-index: 1;
    height: var(--zy-ai-height);
}

/* ---------------- 图标墙：三行横向滚动 ---------------- */
/* 原版 .marquee-wrapper 是普通流元素、高度由三行内容决定，紧贴 header 顶部 */
.zy-ai-search .zy-ai-marquee {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-start;
    width: 100%;
}

.zy-ai-search.has-gradient .zy-ai-marquee {
    background-image: linear-gradient(-45deg, #6864f733, #3f66ff33, #369eff33, #95f3d933);
    background-size: 400% 400%;
    animation: zy-ai-banner 5s ease 5s infinite;
}

.zy-ai-search .zy-ai-row {
    position: relative;
    display: flex;
    width: 100%;
    overflow: hidden;
}

/* 每行左右各 200px 渐变淡出（原版 marquee gradientWidth: 200） */
.zy-ai-search .zy-ai-row::before,
.zy-ai-search .zy-ai-row::after {
    content: "";
    position: absolute;
    top: 0;
    bottom: 0;
    z-index: 2;
    width: 200px;
    pointer-events: none;
}

.zy-ai-search .zy-ai-row::before {
    left: 0;
    background: linear-gradient(to right, var(--zy-ai-bg), rgba(255, 255, 255, 0));
}

.zy-ai-search .zy-ai-row::after {
    right: 0;
    background: linear-gradient(to left, var(--zy-ai-bg), rgba(255, 255, 255, 0));
}

.zy-ai-search .zy-ai-track {
    display: flex;
    flex: none;
    align-items: center;
    width: max-content;
    will-change: transform;
}

/* JS 填满轨道后才开始滚动，避免无 JS 时内容滑走 */
.zy-ai-search .zy-ai-marquee.is-ready .zy-ai-track {
    animation: zy-ai-scroll var(--zy-ai-dur, 240s) linear infinite;
}

.zy-ai-search .zy-ai-row[data-dir="right"] .zy-ai-track {
    animation-direction: reverse;
}

.zy-ai-search.pause-on-hover .zy-ai-row:hover .zy-ai-track {
    animation-play-state: paused;
}

.zy-ai-search .zy-ai-logo-item {
    display: inline-block;
    flex: none;
    margin: 5px 15px;
    padding: 5px;
    background-color: var(--zy-ai-bg);
    border: 1px solid var(--zy-ai-border);
    border-radius: 10px;
    line-height: 0;
}

.zy-ai-search .zy-ai-logo-item img {
    display: block;
    width: var(--zy-ai-logo);
    height: var(--zy-ai-logo);
    object-fit: cover;
    border-radius: 3px;
    transition: all .3s;
}

.zy-ai-search .zy-ai-logo-item img:hover {
    transform: scale(1.2);
}

/* ---------------- 三层遮罩 ---------------- */
.zy-ai-search .zy-ai-mask-left,
.zy-ai-search .zy-ai-mask-right,
.zy-ai-search .zy-ai-mask-top {
    position: absolute;
    z-index: 3;
    pointer-events: none;
}


.zy-ai-search .zy-ai-mask-left {
    top: 0;
    bottom: 0;
    left: 0;
    width: 50%;
    background: linear-gradient(to bottom left, rgba(255, 255, 255, 0) 10%, var(--zy-ai-bg) 75%, var(--zy-ai-bg));
}

.zy-ai-search .zy-ai-mask-right {
    top: 0;
    bottom: 0;
    right: 0;
    width: 50%;
    background: linear-gradient(to bottom right, rgba(255, 255, 255, 0) 10%, var(--zy-ai-bg) 75%, var(--zy-ai-bg));
}

.zy-ai-search .zy-ai-mask-top {
    inset: 0;
    background: linear-gradient(0deg, var(--zy-ai-bg), rgba(255, 255, 255, 0));
}

/* ---------------- 文案 + 搜索框 ---------------- */
.zy-ai-search .zy-ai-banner {
    position: absolute;
    top: 120px;
    width: 100%;
    z-index: 8;
}

.zy-ai-search .zy-ai-banner .container {
    margin-top: 0;
    margin-bottom: 0;
}

.zy-ai-search .zy-ai-slogan {
    display: flex;
    justify-content: center;
    width: 100%;
}

.zy-ai-search .zy-ai-slogan h1 {
    margin: 0;
    font-size: var(--zy-ai-title, 44px);
    font-weight: 800;
    line-height: 1.3;
    text-align: center;
    word-break: break-word;
}

.zy-ai-search .zy-ai-sub-slogan {
    display: flex;
    justify-content: center;
    margin-top: 10px;
    font-size: 20px;
    text-align: center;
}

.zy-ai-search .zy-ai-search-wrap {
    position: relative;
    max-width: 720px;
    margin: 0 auto;
}

.zy-ai-search .zy-ai-search-box {
    display: flex;
    align-items: center;
    margin-top: 30px;
    padding-right: 20px;
    background-color: var(--zy-ai-box);
    border-radius: 10px;
    box-shadow: 0 1px 3px 0 rgba(0, 0, 0, .1), 0 1px 2px -1px rgba(0, 0, 0, .1);
}

/* 左侧选择器 */
.zy-ai-search .zy-ai-se-select {
    position: relative;
    display: flex;
    align-items: center;
    flex: none;
    height: 60px;
    padding-left: 20px;
    background-color: var(--zy-ai-box);
    border-top-left-radius: 10px;
    border-bottom-left-radius: 10px;
    cursor: pointer;
    user-select: none;
}

/* 站点 LOGO 多为横版，按比例缩放而不是裁切 */
.zy-ai-search .zy-ai-se-logo {
    width: auto;
    max-width: 80px;
    height: 20px;
    border-radius: 4px;
    object-fit: contain;
}

.zy-ai-search .zy-ai-se-icon {
    color: #666;
    font-size: 18px;
}

.zy-ai-search .zy-ai-se-text {
    max-width: 90px;
    margin-left: 6px;
    overflow: hidden;
    color: #666;
    font-size: 14px;
    white-space: nowrap;
    text-overflow: ellipsis;
}

.zy-ai-search .zy-ai-se-text:empty {
    display: none;
}

.zy-ai-search .zy-ai-se-caret {
    margin-left: 4px;
    color: #666;
    font-size: 14px;
    transition: transform .2s;
}

.zy-ai-search .zy-ai-se-select.is-open .zy-ai-se-caret {
    transform: rotate(180deg);
}

/* 站内分类模式：原生下拉透明覆盖，保留系统交互 */
.zy-ai-search .zy-ai-se-native {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    padding: 0;
    border: 0;
    opacity: 0;
    cursor: pointer;
    -webkit-appearance: none;
    appearance: none;
}

/* 搜索引擎下拉列表（原版 .downlist-box） */
.zy-ai-search .zy-ai-downlist {
    position: absolute;
    left: 0;
    right: 0;
    z-index: 99;
    margin-top: 10px;
    padding: 10px;
    background-color: var(--zy-ai-box);
    border-radius: 10px;
    box-shadow: 0 4px 16px rgba(0, 0, 0, .1);
}

.zy-ai-search .zy-ai-downlist[hidden] {
    display: none;
}

.zy-ai-search .zy-ai-downlist-item {
    display: flex;
    align-items: center;
    margin-left: 10px;
    padding: 10px;
    border-radius: 6px;
    cursor: pointer;
}

.zy-ai-search .zy-ai-downlist-item:hover,
.zy-ai-search .zy-ai-downlist-item.is-active {
    background-color: rgba(63, 102, 255, .06);
}

.zy-ai-search .zy-ai-downlist-item img {
    width: auto;
    max-width: 60px;
    height: 20px;
    border-radius: 4px;
    object-fit: contain;
}

.zy-ai-search .zy-ai-downlist-item i {
    width: 20px;
    color: #666;
    text-align: center;
}

.zy-ai-search .zy-ai-downlist-title {
    margin-left: 5px;
    color: #666;
    font-size: 14px;
}

/* 输入框 */
.zy-ai-search .zy-ai-search-field {
    flex: 1 1 auto;
    min-width: 0;
}

.zy-ai-search .zy-ai-search-box input[type="text"] {
    width: 100%;
    height: 60px;
    padding: 0 20px 0 5px;
    color: #000;
    font-size: 15px;
    background-color: var(--zy-ai-box);
    border: none;
    border-top-left-radius: 10px;
    border-bottom-left-radius: 10px;
    outline: none;
    box-sizing: border-box;
    transition: all .3s ease;
}

.zy-ai-search .zy-ai-search-box input[type="text"]::placeholder {
    color: #9aa0ab;
}

.zy-ai-search .zy-ai-search-box input[type="text"]:focus {
    border: none;
    color: #000;
    box-shadow: none;
}

/* 搜索按钮 */
.zy-ai-search .zy-ai-search-btn {
    flex: none;
    padding: 0;
    color: #666;
    font-size: 24px;
    line-height: 1;
    background: transparent;
    border: 0;
    border-radius: 10px;
    cursor: pointer;
    transition: color .3s;
}

.zy-ai-search .zy-ai-search-btn:hover {
    color: var(--zy-ai-main);
}

/* 热词 */
.zy-ai-search .zy-ai-search-hots {
    margin-top: 14px;
    color: #8a8f99;
    font-size: 13px;
    text-align: center;
}

.zy-ai-search .zy-ai-search-hots .zy-ai-hot-label {
    margin-right: 6px;
}

.zy-ai-search .zy-ai-search-hots a {
    display: inline-block;
    margin: 0 4px;
    color: #666;
}

.zy-ai-search .zy-ai-search-hots a:hover {
    color: var(--zy-ai-main);
}

/* ---------------- 动画 ---------------- */
@keyframes zy-ai-scroll {
    from { transform: translateX(0); }
    to   { transform: translateX(-50%); }
}

@keyframes zy-ai-banner {
    0%   { background-position: 0 50%; }
    50%  { background-position: 100% 50%; }
    100% { background-position: 0 50%; }
}

@media (prefers-reduced-motion: reduce) {
    .zy-ai-search .zy-ai-marquee.is-ready .zy-ai-track,
    .zy-ai-search.has-gradient .zy-ai-marquee {
        animation: none;
    }
}

/* ---------------- 深色模式 ---------------- */
[data-bs-theme="dark"] .zy-ai-search {
    --zy-ai-border: rgba(255, 255, 255, .12);
    --zy-ai-box: #1e2128;
}

[data-bs-theme="dark"] .zy-ai-search .zy-ai-row::before {
    background: linear-gradient(to right, var(--zy-ai-bg), rgba(0, 0, 0, 0));
}

[data-bs-theme="dark"] .zy-ai-search .zy-ai-row::after {
    background: linear-gradient(to left, var(--zy-ai-bg), rgba(0, 0, 0, 0));
}

[data-bs-theme="dark"] .zy-ai-search .zy-ai-mask-left {
    background: linear-gradient(to bottom left, rgba(0, 0, 0, 0) 10%, var(--zy-ai-bg) 75%, var(--zy-ai-bg));
}

[data-bs-theme="dark"] .zy-ai-search .zy-ai-mask-right {
    background: linear-gradient(to bottom right, rgba(0, 0, 0, 0) 10%, var(--zy-ai-bg) 75%, var(--zy-ai-bg));
}

[data-bs-theme="dark"] .zy-ai-search .zy-ai-mask-top {
    background: linear-gradient(0deg, var(--zy-ai-bg), rgba(0, 0, 0, 0));
}

[data-bs-theme="dark"] .zy-ai-search .zy-ai-search-box input[type="text"] {
    color: #e6e8ec;
}

/* ---------------- 响应式 ---------------- */
@media (max-width: 991px) {
    .zy-ai-search .zy-ai-slogan h1 {
        font-size: min(var(--zy-ai-title, 44px), 38px);
    }
    .zy-ai-search .zy-ai-sub-slogan {
        font-size: 16px;
    }
    .zy-ai-search .zy-ai-banner {
        top: 100px;
    }
}

@media (max-width: 767px) {
    .zy-ai-search .zy-ai-header {
        height: calc(var(--zy-ai-height) * .78);
    }
    .zy-ai-search .zy-ai-banner {
        top: 76px;
    }
    .zy-ai-search .zy-ai-slogan h1 {
        font-size: min(var(--zy-ai-title, 44px), 24px);
    }
    .zy-ai-search .zy-ai-sub-slogan {
        margin-top: 8px;
        font-size: 13px;
    }
    .zy-ai-search .zy-ai-row::before,
    .zy-ai-search .zy-ai-row::after {
        width: 80px;
    }
    .zy-ai-search .zy-ai-logo-item {
        margin: 4px 8px;
        padding: 4px;
        border-radius: 8px;
    }
    .zy-ai-search .zy-ai-logo-item img {
        width: calc(var(--zy-ai-logo) * .72);
        height: calc(var(--zy-ai-logo) * .72);
    }
    .zy-ai-search .zy-ai-search-box {
        margin-top: 20px;
        padding-right: 14px;
    }
    .zy-ai-search .zy-ai-se-select,
    .zy-ai-search .zy-ai-search-box input[type="text"] {
        height: 48px;
    }
    .zy-ai-search .zy-ai-se-select {
        padding-left: 14px;
    }
    .zy-ai-search .zy-ai-se-text {
        display: none;
    }
    .zy-ai-search .zy-ai-search-btn {
        font-size: 18px;
    }
}

/* ==================================================================
   【子主题】公告条模块  .zy-notice
   变量由小工具行内注入：--zy-notice-h / --zy-notice-radius /
                        --zy-notice-bg / --zy-notice-color / --zy-notice-speed
   ================================================================== */

.zy-notice-widget {
    margin-bottom: 0;
}

.zy-notice-outer {
    margin-top: 15px;
    margin-bottom: 15px;
}

.zy-notice {
    --zy-notice-h: 46px;
    --zy-notice-radius: 10px;
    --zy-notice-bg: #fff;
    --zy-notice-color: #333;
    --zy-notice-speed: 500ms;
    display: flex;
    align-items: center;
    height: var(--zy-notice-h);
    padding: 0 16px;
    overflow: hidden;
    color: var(--zy-notice-color);
    background-color: var(--zy-notice-bg);
    border-radius: var(--zy-notice-radius);
}

.zy-notice.has-border {
    border: 1px solid rgba(0, 0, 0, .08);
}

.zy-notice.has-shadow {
    box-shadow: 0 1px 3px 0 rgba(0, 0, 0, .1), 0 1px 2px -1px rgba(0, 0, 0, .1);
}

/* ---------------- 左侧图标 ---------------- */
.zy-notice-icon {
    display: flex;
    align-items: center;
    flex: none;
    margin-right: 10px;
    line-height: 0;
}

.zy-notice-icon img {
    width: 22px;
    height: 22px;
    border-radius: 50%;
    object-fit: cover;
}

.zy-notice-icon-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 22px;
    height: 22px;
    font-size: 11px;
    line-height: 1;
    border-radius: 50%;
}

/* ---------------- 滚动区 ---------------- */
.zy-notice-viewport {
    flex: 1 1 auto;
    height: var(--zy-notice-h);
    min-width: 0;
    overflow: hidden;
}

.zy-notice-list {
    will-change: transform;
}

.zy-notice.is-animating .zy-notice-list {
    transition: transform var(--zy-notice-speed) ease;
}

.zy-notice-item {
    display: flex;
    align-items: center;
    height: var(--zy-notice-h);
    color: inherit;
    font-size: 14px;
    text-decoration: none;
}

a.zy-notice-item:hover {
    color: var(--zy-ai-main, #3f66ff);
}

.zy-notice-badge {
    flex: none;
    margin-right: 8px;
    padding: 1px 6px;
    color: #fff;
    font-size: 12px;
    line-height: 1.5;
    border-radius: 4px;
}

.zy-notice-text {
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
}

/* ---------------- 右侧更多 ---------------- */
.zy-notice-more {
    flex: none;
    margin-left: 12px;
    color: #8a8f99;
    font-size: 13px;
    white-space: nowrap;
    text-decoration: none;
}

.zy-notice-more:hover {
    color: var(--zy-ai-main, #3f66ff);
}

.zy-notice-more i {
    margin-left: 2px;
}

/* ---------------- 深色模式 ---------------- */
[data-bs-theme="dark"] .zy-notice.has-border {
    border-color: rgba(255, 255, 255, .12);
}

/* ---------------- 响应式 ---------------- */
@media (max-width: 767px) {
    .zy-notice {
        padding: 0 12px;
    }
    .zy-notice-item {
        font-size: 13px;
    }
    .zy-notice-more {
        margin-left: 8px;
        font-size: 12px;
    }
}

/* ==================================================================
   首页侧边栏  .zy-home-layout
   开启后首页模块整体进入「主内容 + 侧边栏」两栏栅格
   ================================================================== */

/* 首页模块自带的 .container 在主内容列里不再二次限宽 */
.zy-home-main .container {
    width: 100%;
    max-width: 100%;
    padding-right: 0;
    padding-left: 0;
    margin-right: 0;
    margin-left: 0;
}

/* 小工具之间保持间距 */
.zy-home-main > .home-widget + .home-widget {
    margin-top: 1rem;
}

/* 通栏型小工具（如 AI 导航搜索模块）收进窄列后不撑破布局 */
.zy-home-main .home-widget {
    max-width: 100%;
    overflow-x: hidden;
}

.zy-home-main .zy-ai-search {
    border-radius: 10px;
    overflow: hidden;
}

/* 侧边栏 */
.zy-home-side .sidebar {
    width: 100%;
}

.zy-home-side .widget + .widget {
    margin-top: 1rem;
}

@media (max-width: 991px) {
    .zy-home-side {
        margin-top: 1rem;
    }
}

/* ==================================================================
   文章列表风格：文字卡片  .item-text-card
   在父主题 .post-item 基础卡片样式上扩展，只补差异部分
   ================================================================== */

.post-item.item-text-card {
    display: flex;
    height: 100%;
}

.post-item.item-text-card .entry-wrapper {
    display: flex;
    flex-direction: column;
    width: 100%;
    padding: 14px 16px;
}

/* ---------------- 顶栏：分类 + 角标 + 时间 ---------------- */
.post-item.item-text-card .entry-head {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 6px;
    margin-bottom: 10px;
}

.post-item.item-text-card .entry-head .badge {
    font-size: 12px;
    font-weight: 500;
}

.post-item.item-text-card .entry-cat-dot {
    display: inline-flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-bottom: 0;
}

/* 分类在这个风格里改成标签块，去掉父主题的圆点 */
.post-item.item-text-card .entry-cat-dot > a {
    padding: 2px 8px;
    color: var(--zy-ai-main, #3f66ff);
    font-size: 12px;
    line-height: 1.5;
    background-color: rgba(63, 102, 255, .08);
    border-radius: 4px;
}

.post-item.item-text-card .entry-cat-dot > a::before {
    display: none !important;
}

.post-item.item-text-card .entry-cat-dot > a:not(:first-child) {
    color: #6b7280;
    background-color: rgba(0, 0, 0, .05);
}

.post-item.item-text-card .entry-cat-dot > a:hover {
    color: #fff;
    background-color: var(--zy-ai-main, #3f66ff);
}

.post-item.item-text-card .meta-date {
    margin-left: auto;
    color: #9499a5;
    font-size: .75rem;
    white-space: nowrap;
}

/* ---------------- 标题 ---------------- */
.post-item.item-text-card .entry-title {
    -webkit-line-clamp: 2;
    line-clamp: 2;
    min-height: calc(2 * 1.6em);
    font-size: .95rem;
    line-height: 1.6;
}

.post-item.item-text-card .entry-desc {
    margin-top: 8px;
}

/* ---------------- 底栏：数据 + 查看详情 ---------------- */
.post-item.item-text-card .entry-footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    margin-top: auto;
    padding-top: 12px;
}

.post-item.item-text-card .entry-meta {
    flex-wrap: wrap;
}

.post-item.item-text-card .entry-more {
    flex: none;
    color: var(--zy-ai-main, #3f66ff);
    font-size: .8125rem;
    white-space: nowrap;
}

.post-item.item-text-card .entry-more:hover {
    text-decoration: underline;
}

/* ---------------- 深色模式 ---------------- */
[data-bs-theme="dark"] .post-item.item-text-card .entry-cat-dot > a:not(:first-child) {
    color: #adb3bf;
    background-color: rgba(255, 255, 255, .08);
}

/* ---------------- 响应式 ---------------- */
@media (max-width: 767px) {
    .post-item.item-text-card .entry-wrapper {
        padding: 12px;
    }
    .post-item.item-text-card .entry-title {
        font-size: .875rem;
    }
    .post-item.item-text-card .entry-meta > span {
        margin-right: 8px;
    }
}

/* ==================================================================
   【子主题】广告模块  .zy-ads
   变量由小工具行内注入：--zy-ads-font / --zy-ads-gap / --zy-ads-padding
                        --zy-ads-radius / --zy-ads-cols / --zy-ads-bg
   ================================================================== */

.zy-ads {
    --zy-ads-font: 14px;
    --zy-ads-gap: 12px;
    --zy-ads-padding: 0px;
    --zy-ads-radius: 8px;
    --zy-ads-cols: 4;
    --zy-ads-bg: transparent;
    padding: var(--zy-ads-padding);
    font-size: var(--zy-ads-font);
    background-color: var(--zy-ads-bg);
    border-radius: var(--zy-ads-radius);
}

.zy-ads.has-border {
    border: 1px solid rgba(0, 0, 0, .08);
}

.zy-ads-item {
    color: inherit;
    text-decoration: none;
    transition: opacity .2s, color .2s;
}

a.zy-ads-item:hover {
    opacity: .75;
    text-decoration: underline;
}

.zy-ads-item.is-image img {
    display: block;
    width: 100%;
    height: auto;
    border-radius: var(--zy-ads-radius);
}

.zy-ads-caption {
    display: block;
    margin-top: 6px;
    color: #9499a5;
    font-size: .8125em;
    text-align: center;
}

/* ---------------- 单行文字 ---------------- */
.zy-ads.style-text-line {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: var(--zy-ads-gap);
}

.zy-ads.style-text-line.is-scroll {
    flex-wrap: nowrap;
    overflow-x: auto;
    scrollbar-width: none;
}

.zy-ads.style-text-line.is-scroll::-webkit-scrollbar {
    display: none;
}

.zy-ads.style-text-line.is-scroll .zy-ads-item {
    flex: none;
    white-space: nowrap;
}

/* ---------------- 多列文字 ---------------- */
.zy-ads.style-text-grid {
    display: grid;
    grid-template-columns: repeat(var(--zy-ads-cols), minmax(0, 1fr));
    gap: var(--zy-ads-gap);
    align-items: center;
}

.zy-ads.style-text-grid .zy-ads-item {
    overflow: hidden;
    text-align: center;
    white-space: nowrap;
    text-overflow: ellipsis;
}

/* ---------------- 横幅图片 ---------------- */
.zy-ads.style-banner {
    display: flex;
    flex-direction: column;
    gap: var(--zy-ads-gap);
}

.zy-ads.style-banner .zy-ads-item.is-text {
    text-align: center;
}

/* ---------------- 侧边栏专用 ---------------- */
.zy-ads.style-sidebar {
    display: flex;
    flex-direction: column;
    gap: var(--zy-ads-gap);
}

.zy-ads.style-sidebar .zy-ads-item.is-text {
    position: relative;
    padding-left: 14px;
    overflow: hidden;
    line-height: 1.8;
    white-space: nowrap;
    text-overflow: ellipsis;
}

.zy-ads.style-sidebar .zy-ads-item.is-text::before {
    content: "";
    position: absolute;
    top: 50%;
    left: 2px;
    width: 5px;
    height: 5px;
    background-color: currentColor;
    border-radius: 50%;
    opacity: .5;
    transform: translateY(-50%);
}

/* ---------------- 广告代码 ---------------- */
.zy-ads-code {
    overflow: hidden;
}

.zy-ads-code img,
.zy-ads-code iframe {
    max-width: 100%;
}

/* ---------------- 深色模式 ---------------- */
[data-bs-theme="dark"] .zy-ads.has-border {
    border-color: rgba(255, 255, 255, .12);
}

/* ---------------- 响应式 ---------------- */
@media (max-width: 991px) {
    .zy-ads.style-text-grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

@media (max-width: 767px) {
    .zy-ads.style-text-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
    .zy-ads.style-text-line {
        gap: calc(var(--zy-ads-gap) * .7);
    }
}

/* ==================================================================
   自定义 Tab 条  .zy-tabs
   数值取自 https://maomu.com/ 首页分类条的实测渲染值
   ================================================================== */

.zy-tabs {
    --zy-tab-active: #3f66ff;
    --zy-tab-bg: #f8fafc;
    --zy-tab-border: #e5e7eb;
    --zy-tab-color: rgba(0, 0, 0, .88);
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 10px 15px;
    margin-bottom: 1.5rem;
}

.zy-tabs.is-center {
    justify-content: center;
}

.zy-tabs.is-left {
    justify-content: flex-start;
}

.zy-tabs.is-right {
    justify-content: flex-end;
}

.zy-tab-item {
    display: inline-flex;
    align-items: center;
    height: 36px;
    padding: 0 12px;
    color: var(--zy-tab-color);
    font-size: 16px;
    line-height: 1;
    text-align: center;
    text-decoration: none;
    white-space: nowrap;
    background-color: var(--zy-tab-bg);
    border: 1px solid var(--zy-tab-border);
    border-radius: 10px;
    cursor: pointer;
    transition: color .2s, background-color .2s, border-color .2s;
}

.zy-tab-item i {
    margin-right: 6px;
    font-size: .95em;
}

.zy-tab-item:not(.is-active):hover {
    color: var(--zy-tab-active);
    border-color: var(--zy-tab-active);
}

.zy-tab-item.is-active,
.zy-tab-item.is-active:hover {
    color: #fff;
    background-color: var(--zy-tab-active);
    border-color: var(--zy-tab-active);
}

/* 模块本身不再有标题描述，顶部留出与父主题一致的间距 */
.zy-lastpost-tabs > .container {
    margin-top: 1.5rem;
}

/* ---------------- 深色模式 ---------------- */
[data-bs-theme="dark"] .zy-tabs {
    --zy-tab-bg: rgba(255, 255, 255, .04);
    --zy-tab-border: rgba(255, 255, 255, .12);
    --zy-tab-color: #d5d8de;
}

/* ---------------- 响应式 ---------------- */
@media (max-width: 767px) {
    /* 手机端横向滚动。
       注意 .zy-tabs.is-center 的 justify-content:center 特异性更高，
       溢出时会把两端都裁掉、还滚不到最左边（flex 居中 + overflow 的老问题），
       所以这里要连 .is-center / .is-right 一起压成 flex-start。 */
    .zy-tabs,
    .zy-tabs.is-center,
    .zy-tabs.is-right {
        gap: 8px 10px;
        margin-bottom: 1rem;
        flex-wrap: nowrap;
        justify-content: flex-start;
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
        overscroll-behavior-x: contain;
        scrollbar-width: none;
        /* 左右留出一点，滑到头时不贴边 */
        padding-left: 2px;
        padding-right: 12px;
    }

    .zy-tabs::-webkit-scrollbar {
        display: none;
    }

    .zy-tab-item {
        flex: 0 0 auto;
        height: 32px;
        padding: 0 12px;
        font-size: 14px;
    }
}

/* ==================================================================
   文章详情页
   ================================================================== */

/* ---------------- 内容 Tab：套用与首页一致的 .zy-tabs 样式 ---------------- */
.single-content-nav .nav-pills {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 10px 15px;
}

.single-content-nav .nav-pills .nav-item {
    margin: 0;
}

.single-content-nav .nav-pills .nav-link {
    display: inline-flex;
    align-items: center;
    height: 36px;
    padding: 0 12px;
    color: rgba(0, 0, 0, .88);
    font-size: 16px;
    line-height: 1;
    white-space: nowrap;
    background-color: #f8fafc;
    border: 1px solid #e5e7eb;
    border-radius: 10px;
    transition: color .2s, background-color .2s, border-color .2s;
}

.single-content-nav .nav-pills .nav-link i {
    margin-right: 6px;
    font-size: .95em;
}

.single-content-nav .nav-pills .nav-link:not(.active):hover {
    color: var(--zy-ai-main, #3f66ff);
    border-color: var(--zy-ai-main, #3f66ff);
}

.single-content-nav .nav-pills .nav-link.active,
.single-content-nav .nav-pills .nav-link.active:hover {
    color: #fff;
    background-color: var(--zy-ai-main, #3f66ff);
    border-color: var(--zy-ai-main, #3f66ff);
}

/* ---------------- 未登录购买按钮 ---------------- */
/* 只改配色与圆角，尺寸完全跟随父主题：
   用 inline-flex 而不是 flex，否则按钮会撑满整行；
   侧边栏那个自带 .w-100 仍然是全宽，主区域的保持内容宽度。
   父主题 .btn-info 带 background-color: initial !important，这里必须同样用 !important */
.buy-btns .login-btn,
.buy-btns a.login-btn.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: #fff !important;
    background-color: #3f66ff !important;
    border: 0 !important;
    border-radius: 8px !important;
    box-shadow: none;
}

.buy-btns .login-btn:hover,
.buy-btns a.login-btn.btn:hover {
    color: #fff !important;
    background-color: #2f52e0 !important;
}

/* ---------------- 文章页底部小工具位 ---------------- */
.zy-single-bottom {
    margin-top: 1rem;
}

.zy-single-bottom .widget + .widget {
    margin-top: 1rem;
}

/* ---------------- 相关文章用文字卡片风格时的间距 ---------------- */
.related-posts .post-item.item-text-card .entry-wrapper {
    padding: 12px 14px;
}

/* ---------------- 深色模式 ---------------- */
[data-bs-theme="dark"] .single-content-nav .nav-pills .nav-link {
    color: #d5d8de;
    background-color: rgba(255, 255, 255, .04);
    border-color: rgba(255, 255, 255, .12);
}

[data-bs-theme="dark"] .single-content-nav .nav-pills .nav-link.active {
    color: #fff;
}

/* ---------------- 响应式 ---------------- */
@media (max-width: 767px) {
    .single-content-nav .nav-pills {
        gap: 8px 10px;
        flex-wrap: nowrap;
        overflow-x: auto;
        scrollbar-width: none;
    }
    .single-content-nav .nav-pills::-webkit-scrollbar {
        display: none;
    }
    .single-content-nav .nav-pills .nav-link {
        flex: none;
        height: 32px;
        padding: 0 10px;
        font-size: 14px;
    }
}

/* ==================================================================
   简码组件：全宽按钮  .zy-btn-block
   ================================================================== */

.zy-btn-block {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
}

.zy-btn-block i {
    font-size: .95em;
}

/* ==================================================================
   【子主题】排行榜（新样式）  .zy-rank
   数值取自 https://pan.52wei.cc/ 首页「点击排行榜」的实测渲染值
   ================================================================== */

.zy-rank-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    margin-bottom: 6px;
}

.zy-rank-head .widget-title {
    display: flex;
    align-items: center;
    gap: 6px;
    margin: 0;
    font-size: 16px;
    font-weight: 600;
}

.zy-rank-more {
    flex: none;
    color: var(--zy-ai-main, #3f66ff);
    font-size: 13px;
    white-space: nowrap;
    text-decoration: none;
}

.zy-rank-more i {
    margin-left: 3px;
}

.zy-rank-more:hover {
    text-decoration: underline;
}

/* ---------------- 列表 ---------------- */
.zy-rank-item {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 10px;
    color: inherit;
    text-decoration: none;
    border-radius: 8px;
    transition: background-color .2s;
}

.zy-rank-item:hover {
    background-color: #f9fafb;
}

/* ---------------- 名次徽章 ---------------- */
.zy-rank-num {
    display: flex;
    align-items: center;
    justify-content: center;
    flex: none;
    width: 32px;
    height: 32px;
    color: #4b5563;
    font-size: 14px;
    font-weight: 700;
    background-color: #f3f4f6;
    border-radius: 50%;
}

.zy-rank-num.is-top {
    color: #fff;
    box-shadow: 0 1px 2px rgba(0, 0, 0, .08);
}

.zy-rank-num.is-top-1 {
    background-image: linear-gradient(to right, #facc15, #ca8a04);
}

.zy-rank-num.is-top-2 {
    background-image: linear-gradient(to right, #d1d5db, #9ca3af);
}

.zy-rank-num.is-top-3 {
    background-image: linear-gradient(to right, #fb923c, #ea580c);
}

/* ---------------- 标题与数据行 ---------------- */
.zy-rank-body {
    display: block;
    flex: 1 1 auto;
    min-width: 0;
}

.zy-rank-title {
    display: block;
    overflow: hidden;
    font-size: 14px;
    font-weight: 500;
    line-height: 1.5;
    white-space: nowrap;
    text-overflow: ellipsis;
    transition: color .2s;
}

.zy-rank-item:hover .zy-rank-title {
    color: var(--zy-ai-main, #3f66ff);
}

.zy-rank-meta {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-top: 2px;
    color: #9ca3af;
    font-size: 12px;
}

.zy-rank-meta i {
    margin-right: 4px;
}

.zy-rank-cat {
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
}

.zy-rank-empty {
    margin: 0;
    padding: 10px;
    color: #9ca3af;
    font-size: 13px;
}

/* ---------------- 深色模式 ---------------- */
[data-bs-theme="dark"] .zy-rank-item:hover {
    background-color: rgba(255, 255, 255, .04);
}

[data-bs-theme="dark"] .zy-rank-num {
    color: #d5d8de;
    background-color: rgba(255, 255, 255, .08);
}

/* ==================================================================
   【子主题】作者信息（新样式）  .zy-author
   ================================================================== */

.zy-author {
    --zy-author-from: #3f66ff;
    --zy-author-to: #7c9bff;
    position: relative;
    overflow: hidden;
    border-radius: 10px;
}

.zy-author-cover {
    height: 68px;
    background-image: linear-gradient(135deg, var(--zy-author-from), var(--zy-author-to));
}

.zy-author-head {
    padding: 0 16px 12px;
    text-align: center;
}

.zy-author.has-cover .zy-author-head {
    margin-top: -34px;
}

.zy-author-avatar {
    display: inline-block;
    line-height: 0;
}

.zy-author-avatar img {
    width: 68px;
    height: 68px;
    object-fit: cover;
    background-color: #fff;
    border: 3px solid #fff;
    border-radius: 50%;
    box-shadow: 0 2px 8px rgba(0, 0, 0, .12);
}

.zy-author-name {
    margin-top: 8px;
    font-size: 16px;
    font-weight: 600;
}

.zy-author-name a {
    color: inherit;
    text-decoration: none;
}

.zy-author-name a:hover {
    color: var(--zy-author-from);
}

.zy-author-badge {
    margin-top: 4px;
    color: #9ca3af;
    font-size: 12px;
}

.zy-author-desc {
    margin: 8px 0 0;
    color: #6b7280;
    font-size: 13px;
    line-height: 1.6;
}

/* ---------------- 统计块 ---------------- */
.zy-author-stats {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 8px;
    padding: 0 16px;
}

.zy-author-stat {
    padding: 10px 4px;
    text-align: center;
    background-color: #f9fafb;
    border-radius: 8px;
}

.zy-author-stat-num {
    display: block;
    font-size: 17px;
    font-weight: 700;
    line-height: 1.3;
}

.zy-author-stat-label {
    display: block;
    margin-top: 2px;
    color: #9ca3af;
    font-size: 12px;
}

/* ---------------- 底部按钮 ---------------- */
.zy-author-more {
    display: block;
    margin: 12px 16px 16px;
    padding: 8px 12px;
    color: var(--zy-author-from);
    font-size: 13px;
    text-align: center;
    text-decoration: none;
    border: 1px solid currentColor;
    border-radius: 8px;
    transition: color .2s, background-color .2s;
}

.zy-author-more:hover {
    color: #fff;
    background-color: var(--zy-author-from);
}

/* ---------------- 深色模式 ---------------- */
[data-bs-theme="dark"] .zy-author-avatar img {
    background-color: #1e2128;
    border-color: #1e2128;
}

[data-bs-theme="dark"] .zy-author-stat {
    background-color: rgba(255, 255, 255, .04);
}

[data-bs-theme="dark"] .zy-author-desc {
    color: #adb3bf;
}

/* ---------------- 作者卡片：未登录状态 ---------------- */
.zy-author-avatar.is-placeholder {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 68px;
    height: 68px;
    color: #c3c8d2;
    font-size: 28px;
    background-color: #f3f4f6;
    border: 3px solid #fff;
    border-radius: 50%;
    box-shadow: 0 2px 8px rgba(0, 0, 0, .12);
}

.zy-author-actions {
    display: flex;
    gap: 8px;
    margin: 12px 16px 16px;
}

.zy-author-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 1 1 0;
    padding: 8px 12px;
    color: var(--zy-author-from);
    font-size: 13px;
    text-align: center;
    text-decoration: none;
    background-color: transparent;
    border: 1px solid currentColor;
    border-radius: 8px;
    transition: color .2s, background-color .2s, border-color .2s;
}

.zy-author-btn i {
    margin-right: 5px;
}

.zy-author-btn:hover {
    color: #fff;
    background-color: var(--zy-author-from);
}

.zy-author-btn.is-primary {
    color: #fff;
    background-color: var(--zy-author-from);
    border-color: var(--zy-author-from);
}

.zy-author-btn.is-primary:hover {
    opacity: .9;
}

[data-bs-theme="dark"] .zy-author-avatar.is-placeholder {
    color: #6b7280;
    background-color: rgba(255, 255, 255, .08);
    border-color: #1e2128;
}

/* ==================================================================
   2026-08-22 修改单
   ================================================================== */

/* ---------- 1. 主内容列首个模块与侧边栏顶部对齐 ---------- */
/* 原来公告条自带 15px 上边距，比右侧侧边栏低一截 */
.zy-home-main > .home-widget:first-child > .zy-notice-outer,
.zy-home-main > .home-widget:first-child > .container {
    margin-top: 0;
}

.zy-home-main > .home-widget:first-child {
    margin-top: 0;
}

/* ---------- 2. 头部 LOGO ---------- */
.logo.regular {
    min-width: 80px;
    max-height: 60px;
    width: auto;
}

.navbar .logo {
    margin-right: 0;
}

.navbar .sep {
    margin: 0 10px;
}

/* ---------- 3. 头部导航字体各大一号 ---------- */
/* 父主题是 .navbar .nav-list > .menu-item > a { .95rem }，选择器要同级才压得住 */
.navbar .nav-list > .menu-item > a,
.main-menu .nav-list > .menu-item > a {
    font-size: 1.05rem;
}

.navbar .sub-menu .menu-item > a,
.main-menu .sub-menu .menu-item > a {
    font-size: 1rem;
}

/* ---------- 4. 搜索模块副标题手机端错位 ---------- */
/* 原来用 flex，高亮 span 与文本节点各自成为 flex item，换行时错位 */
.zy-ai-search .zy-ai-slogan,
.zy-ai-search .zy-ai-sub-slogan {
    display: block;
    width: 100%;
}

.zy-ai-search .zy-ai-sub-slogan {
    line-height: 1.7;
}

/* ---------- 5. 最新文章模块上方间距缩小 ---------- */
.zy-lastpost-tabs > .container {
    margin-top: 0;
    padding-top: 1.5rem;
}

/* ---------- 6. 文字卡片：去摘要后标题大一号并垂直居中 ---------- */
.post-item.item-text-card {
    min-height: 150px;
}

.post-item.item-text-card .entry-title {
    display: flex;
    align-items: center;
    flex: 1 1 auto;
    min-height: calc(2 * 1.6em);
    font-size: 1.05rem;
}

.post-item.item-text-card .entry-title a {
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    line-clamp: 2;
    overflow: hidden;
}

/* 相关文章里的卡片矮一些，避免留白过多 */
.related-posts .post-item.item-text-card {
    min-height: 130px;
}

.related-posts .post-item.item-text-card .entry-title {
    font-size: .95rem;
}

/* ---------- 7. 文章页内容 Tab 字体小一号 ---------- */
.single-content-nav .nav-pills .nav-link {
    font-size: 15px;
}

/* ---------- 8. 手机端：文章列表每行 1 篇（所有风格） ---------- */
@media (max-width: 767px) {
    .posts-warp > .col,
    .related-posts .row > .col {
        flex: 0 0 auto;
        width: 100%;
    }

    .post-item.item-text-card {
        min-height: 0;
    }
}

/* ---------- 9. 列表页 / 搜索结果页 / 标签页头部美化 ---------- */
/* 原本是深色背景图 + 黑色遮罩 + 白字，改成上深下白的浅色渐变，与下方内容融为一体 */
.archive-hero {
    background-image: linear-gradient(180deg, #e9eeff 0%, #f2f5ff 45%, #fff 100%);
}

.archive-hero .archive-hero-bg {
    display: none;
}

.archive-hero.text-center {
    text-align: left;
}

.archive-hero > .container {
    padding-top: 1.75rem;
    padding-bottom: 1.75rem;
}

.archive-hero .archive-title {
    margin-bottom: .5rem;
    color: #1a1d24;
    font-size: 1.9rem;
    letter-spacing: 0;
    text-align: left;
    text-shadow: none;
}

.archive-hero .archive-desc {
    max-width: 900px;
    margin-left: 0;
    color: #6b7280;
    font-size: .9rem;
    line-height: 1.8;
    text-align: left;
}

.archive-hero .archive-desc a {
    color: var(--zy-ai-main, #3f66ff);
}

/* 头部下方的筛选条跟着一起过渡，不要再出现色块断层 */
.archive-filter {
    background-color: transparent;
}

[data-bs-theme="dark"] .archive-hero {
    background-image: linear-gradient(180deg, rgba(63, 102, 255, .18) 0%, rgba(63, 102, 255, .06) 45%, transparent 100%);
}

[data-bs-theme="dark"] .archive-hero .archive-title {
    color: #e6e8ec;
}

[data-bs-theme="dark"] .archive-hero .archive-desc {
    color: #adb3bf;
}

@media (max-width: 767px) {
    .archive-hero .archive-title {
        font-size: 1.4rem;
    }
    .archive-hero > .container {
        padding-top: 1.25rem;
        padding-bottom: 1.25rem;
    }
}

/* ---------- 10. 手机端购买按钮排成一行 ---------- */
/* 原本按钮是 inline-block，手机端宽度不够会各占一行 */
@media (max-width: 767px) {
    .buy-btns {
        display: flex;
        align-items: stretch;
        flex-wrap: nowrap;
        gap: 8px;
    }

    .buy-btns > .btn,
    .buy-btns > button.btn,
    .buy-btns > a.btn {
        flex: 1 1 0;
        min-width: 0;
        margin-top: 0 !important;
        padding-left: .6rem !important;
        padding-right: .6rem !important;
        overflow: hidden;
        white-space: nowrap;
        text-overflow: ellipsis;
    }

    .buy-btns > .btn i {
        margin-right: .25rem !important;
    }
}

/* ---------- 分类 Tab 切换后的「查看全部」 ---------- */
.zy-tab-more {
    margin-top: 1.5rem;
    text-align: center;
}
