/* ╔══════════════════════════════════════════════════════════╗
   ║          OBSIDIAN AURORA — Custom Theme for Butterfly    ║
   ║          Dark Elegance · Glass Morphism · Neon Glow     ║
   ╚══════════════════════════════════════════════════════════╝ */

/* ────────────────────────────────────────────────────────────
   § 0  GOOGLE FONTS
──────────────────────────────────────────────────────────── */
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&family=Noto+Serif+SC:wght@400;600;700&family=JetBrains+Mono:wght@400;500&display=swap');

/* ────────────────────────────────────────────────────────────
   § 1  DESIGN TOKENS
──────────────────────────────────────────────────────────── */
:root {
    --c-primary:       #7c3aed;
    --c-primary-light: #a78bfa;
    --c-secondary:     #3b82f6;
    --c-accent:        #06b6d4;
    --c-success:       #34d399;

    --g-brand: linear-gradient(135deg, #7c3aed 0%, #3b82f6 100%);
    --g-text:  linear-gradient(135deg, #a78bfa 0%, #60a5fa 50%, #34d399 100%);

    --bg-body:   #08081a;
    --bg-card:   rgba(255 255 255 / 0.042);
    --bg-card-h: rgba(255 255 255 / 0.075);
    --bg-nav:    rgba(8 8 26 / 0.82);

    --t-high: #e2e8f0;
    --t-mid:  #94a3b8;
    --t-low:  #475569;

    --b-line: rgba(255 255 255 / 0.08);
    --b-glow: rgba(124 58 237 / 0.45);

    --s-card: 0 4px 24px rgba(0 0 0 / .35);
    --s-lift: 0 20px 48px rgba(124 58 237 / .22);
    --s-glow: 0 0 28px rgba(124 58 237 / .45);

    --r-lg:   18px;
    --r-md:   12px;
    --r-sm:   8px;
    --r-pill: 999px;

    --ease: cubic-bezier(.4, 0, .2, 1);
    --dur:  .3s;
}

/* ────────────────────────────────────────────────────────────
   § 2  GLOBAL BASE
──────────────────────────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; }

html { scroll-behavior: smooth; }

body {
    font-family: 'Inter', 'Noto Serif SC', system-ui, sans-serif !important;
    background-color: var(--bg-body) !important;
    background-image:
            radial-gradient(ellipse 60% 50% at 15% 15%, rgba(124,58,237,.13) 0%, transparent 100%),
            radial-gradient(ellipse 50% 40% at 85% 80%, rgba(59,130,246,.10) 0%, transparent 100%),
            radial-gradient(ellipse 40% 60% at 50% 50%, rgba(6,182,212,.06)  0%, transparent 100%) !important;
    background-attachment: fixed !important;
    color: var(--t-high) !important;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    line-height: 1.75;
}

::selection {
    background: rgba(124,58,237,.4);
    color: #fff;
}

/* ────────────────────────────────────────────────────────────
   § 3  SCROLLBAR
──────────────────────────────────────────────────────────── */
::-webkit-scrollbar { width: 5px; height: 5px; }
::-webkit-scrollbar-track { background: var(--bg-body); }
::-webkit-scrollbar-thumb { background: var(--c-primary); border-radius: 3px; }
::-webkit-scrollbar-thumb:hover { background: var(--c-primary-light); }

/* ────────────────────────────────────────────────────────────
   § 4  NAVIGATION BAR
──────────────────────────────────────────────────────────── */
#nav {
    background: var(--bg-nav) !important;
    backdrop-filter: blur(24px) saturate(160%) !important;
    -webkit-backdrop-filter: blur(24px) saturate(160%) !important;
    border-bottom: 1px solid var(--b-line) !important;
    box-shadow: 0 4px 32px rgba(0,0,0,.3) !important;
    transition:
            background var(--dur) var(--ease),
            border-color var(--dur) var(--ease),
            box-shadow var(--dur) var(--ease) !important;
}

#nav.hide-menu {
    background: transparent !important;
    border-bottom-color: transparent !important;
    box-shadow: none !important;
}

#nav #blog-info a,
#nav .blog-info-container a {
    font-size: 1.15rem !important;
    font-weight: 800 !important;
    background: var(--g-text);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
    letter-spacing: -.01em;
}

#nav .menus_item a {
    color: var(--t-mid) !important;
    font-size: .88rem !important;
    font-weight: 500 !important;
    letter-spacing: .03em;
    transition: color var(--dur) var(--ease) !important;
    position: relative;
}

#nav .menus_item a::after {
    content: '';
    position: absolute;
    left: 0; bottom: -4px;
    width: 0; height: 2px;
    background: var(--g-brand);
    border-radius: 2px;
    transition: width var(--dur) var(--ease);
}

#nav .menus_item a:hover { color: var(--c-primary-light) !important; }
#nav .menus_item a:hover::after { width: 100%; }

#nav #nav-right i,
#nav .nav-button i {
    color: var(--t-mid) !important;
    transition: color var(--dur) var(--ease), transform var(--dur) var(--ease);
}
#nav #nav-right i:hover,
#nav .nav-button i:hover {
    color: var(--c-primary-light) !important;
    transform: scale(1.15);
}

/* ────────────────────────────────────────────────────────────
   § 5  HEADER / BANNER
──────────────────────────────────────────────────────────── */
#page-header { position: relative; overflow: hidden; }

#page-header.full_page::before {
    content: '';
    position: absolute;
    inset: 0;
    background:
            radial-gradient(ellipse 55% 60% at 25% 40%, rgba(124,58,237,.4)  0%, transparent 65%),
            radial-gradient(ellipse 45% 50% at 75% 60%, rgba(59,130,246,.28) 0%, transparent 65%),
            radial-gradient(ellipse 30% 40% at 55% 20%, rgba(6,182,212,.18)  0%, transparent 60%);
    z-index: 1;
    pointer-events: none;
}

#page-header #site-info { position: relative; z-index: 2; }

#page-header #site-info .site-title {
    font-size: clamp(2.2rem, 6vw, 4.8rem) !important;
    font-weight: 800 !important;
    background: linear-gradient(135deg, #ffffff 0%, #c4b5fd 45%, #93c5fd 100%);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
    letter-spacing: -.02em !important;
    text-shadow: none !important;
    animation: fadeSlideUp .9s var(--ease) both;
}

#page-header #site-info .site-subtitle,
#page-header #site-info .typed-text {
    color: rgba(255,255,255,.72) !important;
    font-size: 1.05rem !important;
    font-weight: 300 !important;
    letter-spacing: .12em !important;
    animation: fadeSlideUp 1.1s var(--ease) .15s both;
}

/* ────────────────────────────────────────────────────────────
   § 6  POST CARDS
   ⚠️ animation 不带 both/forwards，避免 forwards fill
      锁定末态导致 Butterfly JS 控制显隐失效
──────────────────────────────────────────────────────────── */
#recent-posts .recent-post-item {
    background: var(--bg-card) !important;
    backdrop-filter: blur(20px) !important;
    -webkit-backdrop-filter: blur(20px) !important;
    border: 1px solid var(--b-line) !important;
    border-radius: var(--r-lg) !important;
    box-shadow: var(--s-card) !important;
    overflow: hidden !important;
    transition:
            transform var(--dur) var(--ease),
            border-color var(--dur) var(--ease),
            box-shadow var(--dur) var(--ease) !important;
    /* 不加 both/forwards */
    animation: cardIn .6s var(--ease) !important;
}

#recent-posts .recent-post-item:nth-child(1){ animation-delay:.05s !important }
#recent-posts .recent-post-item:nth-child(2){ animation-delay:.12s !important }
#recent-posts .recent-post-item:nth-child(3){ animation-delay:.19s !important }
#recent-posts .recent-post-item:nth-child(4){ animation-delay:.26s !important }
#recent-posts .recent-post-item:nth-child(5){ animation-delay:.33s !important }
#recent-posts .recent-post-item:nth-child(6){ animation-delay:.40s !important }
#recent-posts .recent-post-item:nth-child(7){ animation-delay:.47s !important }
#recent-posts .recent-post-item:nth-child(8){ animation-delay:.54s !important }

#recent-posts .recent-post-item:hover {
    background: var(--bg-card-h) !important;
    border-color: var(--b-glow) !important;
    transform: translateY(-6px) !important;
    box-shadow: var(--s-lift) !important;
}

#recent-posts .recent-post-item .post_cover img {
    transition: transform .55s var(--ease) !important;
}
#recent-posts .recent-post-item:hover .post_cover img {
    transform: scale(1.06) !important;
}

#recent-posts .recent-post-item .content .article-title {
    color: var(--t-high) !important;
    font-size: 1.18rem !important;
    font-weight: 700 !important;
    line-height: 1.45;
    transition: color var(--dur) var(--ease);
}
#recent-posts .recent-post-item:hover .content .article-title {
    color: var(--c-primary-light) !important;
}

#recent-posts .recent-post-item .content .article-summary {
    color: var(--t-mid) !important;
    font-size: .88rem !important;
    line-height: 1.85;
}

#recent-posts .recent-post-item .content .article-meta-wrap,
#recent-posts .recent-post-item .content .article-meta {
    color: var(--t-low) !important;
    font-size: .78rem !important;
}

/* ────────────────────────────────────────────────────────────
   § 7  SIDEBAR CARDS
   ⚠️ animation 不带 both/forwards
──────────────────────────────────────────────────────────── */
.card-widget {
    background: var(--bg-card) !important;
    backdrop-filter: blur(20px) !important;
    -webkit-backdrop-filter: blur(20px) !important;
    border: 1px solid var(--b-line) !important;
    border-radius: var(--r-lg) !important;
    box-shadow: var(--s-card) !important;
    overflow: hidden !important;
    transition:
            border-color var(--dur) var(--ease),
            box-shadow var(--dur) var(--ease) !important;
    /* 不加 both/forwards */
    animation: cardIn .6s var(--ease) .1s !important;
}

.card-widget:hover {
    border-color: var(--b-glow) !important;
    box-shadow: 0 8px 36px rgba(124,58,237,.18) !important;
}

.item-headline {
    color: var(--c-primary-light) !important;
    font-size: .78rem !important;
    font-weight: 700 !important;
    text-transform: uppercase !important;
    letter-spacing: .12em !important;
    border-bottom: 1px solid var(--b-line) !important;
    padding-bottom: .75rem !important;
    margin-bottom: 1rem !important;
}
.item-headline i { color: var(--c-primary-light) !important; }

/* ────────────────────────────────────────────────────────────
   § 8  AUTHOR CARD
──────────────────────────────────────────────────────────── */
#card-info .author-avatar img {
    border: 3px solid var(--c-primary) !important;
    border-radius: 50% !important;
    box-shadow: 0 0 22px rgba(124,58,237,.5) !important;
    transition: transform var(--dur) var(--ease), box-shadow var(--dur) var(--ease) !important;
}
#card-info .author-avatar img:hover {
    transform: scale(1.07) rotate(4deg) !important;
    box-shadow: 0 0 38px rgba(124,58,237,.75) !important;
}

#card-info .author-name,
#card-info .card-name {
    font-size: 1.2rem !important;
    font-weight: 800 !important;
    background: var(--g-text);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
    letter-spacing: -.01em;
}

#card-info .author-description,
#card-info .card-description {
    color: var(--t-mid) !important;
    font-size: .83rem !important;
    line-height: 1.7;
}

#card-info .blog-info-data {
    border-top: 1px solid var(--b-line) !important;
    padding-top: .75rem !important;
}

#card-info .blog-info-data a {
    display: flex;
    flex-direction: column;
    align-items: center;
    flex: 1;
    padding: .4rem .25rem;
    border-radius: var(--r-sm);
    transition: background var(--dur) var(--ease);
    text-decoration: none !important;
}
#card-info .blog-info-data a:hover {
    background: rgba(124,58,237,.12);
}

#card-info .blog-info-data .count,
#card-info .blog-info-data span:first-child {
    font-size: 1.25rem !important;
    font-weight: 800 !important;
    color: var(--c-primary-light) !important;
    line-height: 1.2;
}
#card-info .blog-info-data .data-label,
#card-info .blog-info-data span:last-child {
    font-size: .7rem !important;
    color: var(--t-low) !important;
    margin-top: 2px;
}

#card-info .card-info-separator {
    border-color: var(--b-line) !important;
}

/* ────────────────────────────────────────────────────────────
   § 9  SOCIAL ICONS (哔哩哔哩 & 知乎)
──────────────────────────────────────────────────────────── */
#card-info .card-social {
    display: flex !important;
    justify-content: center !important;
    align-items: center !important;
    gap: .65rem !important;
    margin: .5rem 0 !important;
}

#card-info .card-social a {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 44px !important;
    height: 44px !important;
    border-radius: 13px !important;
    font-size: 1.25rem !important;
    text-decoration: none !important;
    transition:
            transform var(--dur) var(--ease),
            box-shadow var(--dur) var(--ease) !important;
    position: relative;
    overflow: hidden;
}

#card-info .card-social a::after {
    content: '';
    position: absolute;
    inset: 0;
    background: rgba(255,255,255,0);
    transition: background var(--dur) var(--ease);
    border-radius: inherit;
}
#card-info .card-social a:hover::after {
    background: rgba(255,255,255,.12);
}

/* 哔哩哔哩 */
#card-info .card-social a[href*="bilibili"],
#card-info .card-social a[title="bilibili"],
#card-info .card-social a[title="哔哩哔哩"] {
    background: linear-gradient(135deg, #23ade5 0%, #0078a8 100%) !important;
    color: #ffffff !important;
    box-shadow: 0 4px 18px rgba(0,160,220,.45) !important;
}
#card-info .card-social a[href*="bilibili"]:hover,
#card-info .card-social a[title="bilibili"]:hover,
#card-info .card-social a[title="哔哩哔哩"]:hover {
    transform: translateY(-4px) scale(1.08) !important;
    box-shadow: 0 10px 28px rgba(0,160,220,.65) !important;
}

/* 知乎 */
#card-info .card-social a[href*="zhihu"],
#card-info .card-social a[title="知乎"],
#card-info .card-social a[title="Zhihu"] {
    background: linear-gradient(135deg, #0f88eb 0%, #004aad 100%) !important;
    color: #ffffff !important;
    box-shadow: 0 4px 18px rgba(15,136,235,.45) !important;
}
#card-info .card-social a[href*="zhihu"]:hover,
#card-info .card-social a[title="知乎"]:hover,
#card-info .card-social a[title="Zhihu"]:hover {
    transform: translateY(-4px) scale(1.08) !important;
    box-shadow: 0 10px 28px rgba(15,136,235,.65) !important;
}

#card-info .card-social a i { color: inherit !important; }

/* ────────────────────────────────────────────────────────────
   § 10  TAG CLOUD
──────────────────────────────────────────────────────────── */
.card-tag-cloud a {
    display: inline-block !important;
    background: rgba(124,58,237,.09) !important;
    color: var(--c-primary-light) !important;
    border: 1px solid rgba(124,58,237,.22) !important;
    border-radius: var(--r-pill) !important;
    padding: .28rem .85rem !important;
    font-size: .78rem !important;
    font-weight: 500;
    margin: 3px !important;
    text-decoration: none !important;
    transition:
            background var(--dur) var(--ease),
            border-color var(--dur) var(--ease),
            color var(--dur) var(--ease),
            transform var(--dur) var(--ease),
            box-shadow var(--dur) var(--ease) !important;
}
.card-tag-cloud a:hover {
    background: var(--c-primary) !important;
    border-color: var(--c-primary) !important;
    color: #fff !important;
    transform: translateY(-2px) !important;
    box-shadow: 0 4px 14px rgba(124,58,237,.45) !important;
}

/* ────────────────────────────────────────────────────────────
   § 11  CATEGORIES
──────────────────────────────────────────────────────────── */
.card-categories .category-list-item a {
    color: var(--t-mid) !important;
    font-size: .88rem;
    transition: color var(--dur) var(--ease), padding-left var(--dur) var(--ease) !important;
}
.card-categories .category-list-item a:hover {
    color: var(--c-primary-light) !important;
    padding-left: 5px;
}
.card-categories .category-list-count {
    background: rgba(124,58,237,.15) !important;
    color: var(--c-primary-light) !important;
    border-radius: var(--r-pill) !important;
    padding: 1px 7px !important;
    font-size: .72rem !important;
}

/* ────────────────────────────────────────────────────────────
   § 12  ARTICLE CONTAINER
──────────────────────────────────────────────────────────── */
#article-container {
    background: var(--bg-card) !important;
    backdrop-filter: blur(20px) !important;
    -webkit-backdrop-filter: blur(20px) !important;
    border: 1px solid var(--b-line) !important;
    border-radius: var(--r-lg) !important;
    padding: clamp(1.5rem, 4vw, 3rem) !important;
    box-shadow: var(--s-card) !important;
    color: var(--t-mid) !important;
}

#article-container h1,
#article-container h2,
#article-container h3,
#article-container h4 {
    color: var(--t-high) !important;
    font-weight: 700;
    line-height: 1.35;
}

#article-container h2 {
    font-size: 1.4rem;
    padding-left: 1rem;
    border-left: 3px solid var(--c-primary);
    margin: 2.5rem 0 1rem;
}

#article-container h3 {
    font-size: 1.12rem;
    color: var(--c-primary-light) !important;
    margin: 2rem 0 .75rem;
}

#article-container h4 {
    font-size: 1rem;
    color: var(--c-accent) !important;
}

#article-container p {
    color: var(--t-mid) !important;
    line-height: 1.9;
    margin-bottom: 1.1rem;
}

#article-container a {
    color: var(--c-primary-light) !important;
    text-decoration: none;
    border-bottom: 1px solid rgba(167,139,250,.3);
    transition: color var(--dur) var(--ease), border-color var(--dur) var(--ease) !important;
}
#article-container a:hover {
    color: var(--c-accent) !important;
    border-bottom-color: var(--c-accent);
}

#article-container blockquote {
    background: rgba(124,58,237,.07) !important;
    border-left: 4px solid var(--c-primary) !important;
    border-radius: 0 var(--r-sm) var(--r-sm) 0 !important;
    padding: 1.1rem 1.5rem 1.1rem 1.75rem !important;
    margin: 1.75rem 0 !important;
    color: var(--t-mid) !important;
    font-style: italic;
    position: relative;
}
#article-container blockquote::before {
    content: '\201C';
    position: absolute;
    left: .8rem; top: -.4rem;
    font-size: 3.5rem;
    color: var(--c-primary);
    opacity: .25;
    font-family: Georgia, serif;
    line-height: 1;
}

#article-container code:not([class*='language']) {
    background: rgba(124,58,237,.14) !important;
    color: var(--c-primary-light) !important;
    border: 1px solid rgba(124,58,237,.25) !important;
    border-radius: 4px !important;
    padding: .12rem .4rem !important;
    font-size: .84em !important;
    font-family: 'JetBrains Mono', 'Fira Code', monospace !important;
}

.highlight, figure.highlight {
    background: rgba(0,0,0,.45) !important;
    border: 1px solid var(--b-line) !important;
    border-radius: var(--r-md) !important;
    overflow: hidden !important;
    margin: 1.5rem 0 !important;
}

.highlight .gutter, figure.highlight .gutter {
    background: rgba(0,0,0,.25) !important;
    border-right: 1px solid var(--b-line) !important;
    color: var(--t-low) !important;
}

.highlight-tools {
    background: rgba(124,58,237,.09) !important;
    border-bottom: 1px solid var(--b-line) !important;
    padding: .3rem .75rem !important;
}
.highlight-tools .code-lang {
    color: var(--c-primary-light) !important;
    font-size: .72rem !important;
    font-weight: 700 !important;
    text-transform: uppercase;
    letter-spacing: .08em;
}

#article-container table {
    border-collapse: collapse !important;
    width: 100% !important;
    border-radius: var(--r-md) !important;
    overflow: hidden !important;
    margin: 1.5rem 0 !important;
}
#article-container thead { background: rgba(124,58,237,.18) !important; }
#article-container th {
    color: var(--c-primary-light) !important;
    font-weight: 700 !important;
    font-size: .8rem !important;
    text-transform: uppercase;
    letter-spacing: .07em;
    padding: .75rem 1rem !important;
    text-align: left !important;
}
#article-container td {
    color: var(--t-mid) !important;
    padding: .7rem 1rem !important;
    border-bottom: 1px solid var(--b-line) !important;
    font-size: .88rem;
}
#article-container tr:hover td {
    background: rgba(124,58,237,.05) !important;
}

#article-container img {
    border-radius: var(--r-md) !important;
    border: 1px solid var(--b-line) !important;
    transition: border-color var(--dur) var(--ease), box-shadow var(--dur) var(--ease) !important;
}
#article-container img:hover {
    border-color: var(--b-glow) !important;
    box-shadow: 0 8px 32px rgba(124,58,237,.2) !important;
}

#article-container hr {
    border: none !important;
    height: 1px !important;
    background: linear-gradient(to right, transparent, var(--c-primary), transparent) !important;
    margin: 2.5rem 0 !important;
    opacity: .6;
}

#article-container ul li::marker { color: var(--c-primary); }
#article-container ol li::marker { color: var(--c-primary-light); font-weight: 600; }

/* ────────────────────────────────────────────────────────────
   § 13  TOC
   ⚠️ 移动端不加 overflow:hidden / backdrop-filter
      否则会导致 TOC 自动弹出且无法关闭
──────────────────────────────────────────────────────────── */
#toc-div {
    background: var(--bg-card) !important;
    border: 1px solid var(--b-line) !important;
    border-radius: var(--r-lg) !important;
}

/* 移动端：去除会阻断点击/显隐的属性 */
@media (max-width: 900px) {
    #toc-div {
        backdrop-filter: none !important;
        -webkit-backdrop-filter: none !important;
        overflow: visible !important;
        animation: none !important;
    }
    /* 关闭按钮确保可点击 */
    #toc-div .toc-close,
    #toc-div .close-btn,
    #toc-div #close-toc {
        pointer-events: auto !important;
        cursor: pointer !important;
        position: relative !important;
        z-index: 1 !important;
    }
}

#toc .toc-list { border-left: 2px solid var(--b-line) !important; }

#toc .toc-list .toc-item a {
    color: var(--t-low) !important;
    font-size: .82rem !important;
    transition: color var(--dur) var(--ease), padding-left var(--dur) var(--ease) !important;
    text-decoration: none !important;
    display: block;
    padding: 3px 0;
}

#toc .toc-list .toc-item a:hover,
#toc .toc-list .toc-item.active > a {
    color: var(--c-primary-light) !important;
    padding-left: 4px;
}

#toc .toc-list .toc-item.active {
    border-left: 2px solid var(--c-primary) !important;
    margin-left: -2px;
}

/* ────────────────────────────────────────────────────────────
   § 14  POST META
──────────────────────────────────────────────────────────── */
#post-info .post-meta,
.post-meta-label { color: var(--t-low) !important; font-size: .8rem !important; }

.post-tags a {
    display: inline-block !important;
    background: rgba(124,58,237,.1) !important;
    color: var(--c-primary-light) !important;
    border: 1px solid rgba(124,58,237,.24) !important;
    border-radius: var(--r-pill) !important;
    padding: .28rem .9rem !important;
    font-size: .78rem !important;
    font-weight: 500;
    margin: 3px !important;
    text-decoration: none !important;
    transition:
            background var(--dur) var(--ease),
            color var(--dur) var(--ease),
            transform var(--dur) var(--ease),
            box-shadow var(--dur) var(--ease) !important;
}
.post-tags a:hover {
    background: var(--c-primary) !important;
    color: #fff !important;
    border-color: var(--c-primary) !important;
    transform: translateY(-2px) !important;
    box-shadow: 0 4px 14px rgba(124,58,237,.45) !important;
}

/* ────────────────────────────────────────────────────────────
   § 15  POST COPYRIGHT
──────────────────────────────────────────────────────────── */
#post-copyright {
    background: rgba(124,58,237,.06) !important;
    border: 1px solid rgba(124,58,237,.18) !important;
    border-radius: var(--r-md) !important;
    padding: 1.25rem 1.5rem !important;
}
#post-copyright .post-copyright-info a { color: var(--c-primary-light) !important; }
#post-copyright .post-copyright-info span { color: var(--t-mid) !important; }

/* ────────────────────────────────────────────────────────────
   § 16  POST NAVIGATION (文章底部上/下篇)
──────────────────────────────────────────────────────────── */
#pagination:not(.pagination-pager) {
    display: grid !important;
    grid-template-columns: 1fr 1fr !important;
    gap: 1rem !important;
    margin: 2rem 0 !important;
    background: transparent !important;
    box-shadow: none !important;
    justify-content: unset !important;
    align-items: unset !important;
}

#pagination:not(.pagination-pager) .prev-post,
#pagination:not(.pagination-pager) .next-post {
    background: var(--bg-card) !important;
    backdrop-filter: blur(20px) !important;
    -webkit-backdrop-filter: blur(20px) !important;
    border: 1px solid var(--b-line) !important;
    border-radius: var(--r-lg) !important;
    overflow: hidden !important;
    transition:
            border-color var(--dur) var(--ease),
            transform    var(--dur) var(--ease),
            box-shadow   var(--dur) var(--ease) !important;
}

#pagination:not(.pagination-pager) .prev-post:hover,
#pagination:not(.pagination-pager) .next-post:hover {
    border-color: var(--b-glow) !important;
    transform: translateY(-4px) !important;
    box-shadow: var(--s-lift) !important;
}

#pagination:not(.pagination-pager) .prev-post a,
#pagination:not(.pagination-pager) .next-post a {
    display: flex !important;
    flex-direction: column !important;
    justify-content: center !important;
    padding: 1.4rem 1.6rem !important;
    text-decoration: none !important;
    color: var(--t-high) !important;
    min-width: unset !important;
    width: 100% !important;
    height: auto !important;
    background: transparent !important;
    border: none !important;
    border-radius: 0 !important;
    box-shadow: none !important;
}

#pagination:not(.pagination-pager) .pagination-info {
    display: flex !important;
    align-items: center !important;
    gap: .35rem !important;
    color: var(--t-low) !important;
    font-size: .72rem !important;
    font-weight: 700 !important;
    text-transform: uppercase !important;
    letter-spacing: .1em !important;
    margin-bottom: .55rem !important;
}

#pagination:not(.pagination-pager) .pagination-info i {
    color: var(--c-primary-light) !important;
    font-size: .85rem !important;
}

#pagination:not(.pagination-pager) .post-title {
    color: var(--t-high) !important;
    font-size: .95rem !important;
    font-weight: 700 !important;
    line-height: 1.55 !important;
    display: block !important;
    transition: color var(--dur) var(--ease) !important;
}

#pagination:not(.pagination-pager) .prev-post a:hover .post-title,
#pagination:not(.pagination-pager) .next-post a:hover .post-title {
    color: var(--c-primary-light) !important;
}

@media (max-width: 600px) {
    #pagination:not(.pagination-pager) {
        grid-template-columns: 1fr !important;
    }
}

/* ────────────────────────────────────────────────────────────
   § 17  BUTTONS
──────────────────────────────────────────────────────────── */
.btn,
.read-more-btn {
    display: inline-block;
    background: transparent !important;
    border: 1px solid var(--b-glow) !important;
    color: var(--c-primary-light) !important;
    border-radius: var(--r-pill) !important;
    padding: .48rem 1.5rem !important;
    font-size: .83rem !important;
    font-weight: 600 !important;
    letter-spacing: .04em;
    text-decoration: none !important;
    transition:
            background var(--dur) var(--ease),
            color var(--dur) var(--ease),
            transform var(--dur) var(--ease),
            box-shadow var(--dur) var(--ease) !important;
    cursor: pointer;
}
.btn:hover,
.read-more-btn:hover {
    background: var(--c-primary) !important;
    border-color: var(--c-primary) !important;
    color: #fff !important;
    transform: translateY(-2px) !important;
    box-shadow: 0 6px 20px rgba(124,58,237,.45) !important;
}

#card-info .card-info-btn a {
    display: inline-block !important;
    background: var(--g-brand) !important;
    border: none !important;
    color: #fff !important;
    border-radius: var(--r-pill) !important;
    padding: .48rem 2rem !important;
    font-size: .83rem !important;
    font-weight: 700 !important;
    letter-spacing: .05em;
    text-decoration: none !important;
    box-shadow: 0 4px 18px rgba(124,58,237,.45) !important;
    transition: transform var(--dur) var(--ease), box-shadow var(--dur) var(--ease) !important;
}
#card-info .card-info-btn a:hover {
    transform: translateY(-3px) !important;
    box-shadow: 0 8px 28px rgba(124,58,237,.65) !important;
}

#reward-btn {
    background: var(--g-brand) !important;
    border: none !important;
    color: #fff !important;
    border-radius: var(--r-pill) !important;
    font-weight: 700 !important;
    box-shadow: 0 4px 18px rgba(124,58,237,.45) !important;
    transition: transform var(--dur) var(--ease), box-shadow var(--dur) var(--ease) !important;
}
#reward-btn:hover {
    transform: translateY(-3px) !important;
    box-shadow: 0 8px 28px rgba(124,58,237,.65) !important;
}

/* ────────────────────────────────────────────────────────────
   § 18  PAGINATION (首页/归档 页码)
──────────────────────────────────────────────────────────── */
#pagination.pagination-pager {
    display: flex !important;
    justify-content: center !important;
    align-items: center !important;
    gap: .5rem !important;
    margin: 2.5rem 0 1rem !important;
    background: transparent !important;
    box-shadow: none !important;
}

#pagination.pagination-pager .page-number,
#pagination.pagination-pager .prev,
#pagination.pagination-pager .next {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    min-width: 40px !important;
    height: 40px !important;
    padding: 0 .85rem !important;
    border-radius: var(--r-md) !important;
    background: var(--bg-card) !important;
    border: 1px solid var(--b-line) !important;
    color: var(--t-mid) !important;
    font-size: .88rem !important;
    font-weight: 600 !important;
    text-decoration: none !important;
    transition:
            background    var(--dur) var(--ease),
            border-color  var(--dur) var(--ease),
            color         var(--dur) var(--ease),
            box-shadow    var(--dur) var(--ease),
            transform     var(--dur) var(--ease) !important;
}

#pagination.pagination-pager .page-number.current,
#pagination.pagination-pager .page-number:hover,
#pagination.pagination-pager .prev:hover,
#pagination.pagination-pager .next:hover {
    background: var(--c-primary) !important;
    border-color: var(--c-primary) !important;
    color: #fff !important;
    box-shadow: 0 4px 18px rgba(124,58,237,.48) !important;
    transform: translateY(-2px) !important;
}

/* ────────────────────────────────────────────────────────────
   § 19  ARCHIVES / TAG / CATEGORY PAGE
──────────────────────────────────────────────────────────── */
.archive-posts .archive-post-item {
    border-left: 2px solid var(--b-line) !important;
    padding: .3rem 0 .3rem 1.5rem !important;
    position: relative;
    transition: border-color var(--dur) var(--ease) !important;
}
.archive-posts .archive-post-item::before {
    content: '';
    position: absolute;
    left: -5px; top: 50%;
    transform: translateY(-50%);
    width: 8px; height: 8px;
    border-radius: 50%;
    background: var(--c-primary);
    box-shadow: 0 0 8px rgba(124,58,237,.5);
    transition: box-shadow var(--dur) var(--ease);
}
.archive-posts .archive-post-item:hover {
    border-left-color: var(--c-primary) !important;
}
.archive-posts .archive-post-item:hover::before {
    box-shadow: 0 0 18px rgba(124,58,237,.8) !important;
}
.archive-posts .archive-post-item a {
    color: var(--t-mid) !important;
    font-size: .9rem;
    text-decoration: none !important;
    transition: color var(--dur) var(--ease) !important;
}
.archive-posts .archive-post-item a:hover {
    color: var(--c-primary-light) !important;
}

#tag-cloud-list a {
    display: inline-block !important;
    background: var(--bg-card) !important;
    border: 1px solid var(--b-line) !important;
    border-radius: var(--r-pill) !important;
    padding: .38rem 1.1rem !important;
    margin: 4px !important;
    font-size: .85rem !important;
    color: var(--t-mid) !important;
    text-decoration: none !important;
    transition:
            background var(--dur) var(--ease),
            border-color var(--dur) var(--ease),
            color var(--dur) var(--ease),
            transform var(--dur) var(--ease),
            box-shadow var(--dur) var(--ease) !important;
}
#tag-cloud-list a:hover {
    background: var(--c-primary) !important;
    border-color: var(--c-primary) !important;
    color: #fff !important;
    transform: translateY(-2px) !important;
    box-shadow: 0 4px 16px rgba(124,58,237,.45) !important;
}

/* ────────────────────────────────────────────────────────────
   § 20  BACK TO TOP
──────────────────────────────────────────────────────────── */
#back-to-top {
    background: var(--g-brand) !important;
    border: none !important;
    border-radius: 50% !important;
    width: 48px !important;
    height: 48px !important;
    display: flex !important;
    align-items: center;
    justify-content: center;
    box-shadow: 0 4px 22px rgba(124,58,237,.48) !important;
    transition: transform var(--dur) var(--ease), box-shadow var(--dur) var(--ease) !important;
    cursor: pointer;
}
#back-to-top:hover {
    transform: translateY(-4px) !important;
    box-shadow: 0 10px 32px rgba(124,58,237,.7) !important;
}
#back-to-top i { color: #fff !important; }

/* ────────────────────────────────────────────────────────────
   § 21  FOOTER
──────────────────────────────────────────────────────────── */
#footer {
    background: rgba(8,8,26,.92) !important;
    backdrop-filter: blur(20px) !important;
    border-top: 1px solid var(--b-line) !important;
    padding: 2.5rem 1rem !important;
    margin-top: 3rem;
}
#footer-wrap {
    color: var(--t-low) !important;
    font-size: .82rem !important;
    text-align: center;
    line-height: 2.1;
}
#footer-wrap a {
    color: var(--c-primary-light) !important;
    text-decoration: none;
    transition: color var(--dur) var(--ease) !important;
}
#footer-wrap a:hover { color: var(--c-accent) !important; }

/* ────────────────────────────────────────────────────────────
   § 22  PROGRESS BAR
──────────────────────────────────────────────────────────── */
#nprogress .bar { background: var(--c-primary-light) !important; height: 3px !important; }
#nprogress .peg { box-shadow: 0 0 10px var(--c-primary), 0 0 5px var(--c-primary) !important; }
#nprogress .spinner-icon {
    border-top-color: var(--c-primary-light) !important;
    border-left-color: var(--c-primary-light) !important;
}

/* ────────────────────────────────────────────────────────────
   § 23  KEYFRAME ANIMATIONS
──────────────────────────────────────────────────────────── */
@keyframes fadeSlideUp {
    from { opacity: 0; transform: translateY(22px); }
    to   { opacity: 1; transform: translateY(0); }
}

@keyframes cardIn {
    from { opacity: 0; transform: translateY(18px) scale(.98); }
    to   { opacity: 1; transform: translateY(0)    scale(1); }
}

/* ────────────────────────────────────────────────────────────
   § 24  RESPONSIVE
──────────────────────────────────────────────────────────── */
@media (max-width: 768px) {
    #article-container {
        padding: 1.35rem !important;
        border-radius: var(--r-md) !important;
    }
    .card-widget { border-radius: var(--r-md) !important; }
}

/* ────────────────────────────────────────────────────────────
   § 25  FRIEND LINKS PAGE
──────────────────────────────────────────────────────────── */
#links, .flink { padding: .5rem 0; }

.flink-list-title,
.flink .flink-title,
.flink-group-title {
    position: relative;
    display: inline-flex;
    align-items: center;
    gap: .6rem;
    font-size: 1.05rem !important;
    font-weight: 800 !important;
    color: var(--t-high) !important;
    margin: 2rem 0 1.2rem !important;
    padding: .35rem 1.1rem .35rem .9rem;
    background: rgba(124,58,237,.08);
    border-left: 3px solid var(--c-primary);
    border-radius: 0 var(--r-sm) var(--r-sm) 0;
    letter-spacing: .04em;
}

.flink-list {
    display: grid !important;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)) !important;
    gap: 1rem !important;
    margin: 1.2rem 0 2rem !important;
}

.flink-list-item {
    position: relative;
    background: var(--bg-card) !important;
    backdrop-filter: blur(20px) !important;
    -webkit-backdrop-filter: blur(20px) !important;
    border: 1px solid var(--b-line) !important;
    border-radius: var(--r-lg) !important;
    overflow: hidden !important;
    box-shadow: var(--s-card) !important;
    transition:
            transform     var(--dur) var(--ease),
            border-color  var(--dur) var(--ease),
            box-shadow    var(--dur) var(--ease) !important;
    /* 不加 both/forwards */
    animation: cardIn .55s var(--ease);
}

.flink-list-item:hover {
    transform: translateY(-7px) !important;
    border-color: var(--b-glow) !important;
    box-shadow: var(--s-lift) !important;
}

.flink-list-item::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 2px;
    background: var(--g-brand);
    opacity: 0;
    transition: opacity var(--dur) var(--ease);
    pointer-events: none;
}
.flink-list-item:hover::before { opacity: 1; }

.flink-list-item::after {
    content: none !important;
    display: none !important;
}

.flink-list-item a,
.flink-list-item > a {
    display: flex !important;
    align-items: center !important;
    gap: 1rem !important;
    padding: 1.2rem 1.1rem !important;
    text-decoration: none !important;
    color: inherit !important;
    height: 100%;
}

.flink-item-icon,
.flink-list-item .flink-item-icon {
    flex-shrink: 0 !important;
    width: 52px !important;
    height: 52px !important;
    border-radius: 50% !important;
    overflow: hidden !important;
    border: 2px solid var(--b-line) !important;
    background: rgba(124,58,237,.1) !important;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: border-color var(--dur) var(--ease), box-shadow var(--dur) var(--ease) !important;
}

.flink-list-item:hover .flink-item-icon {
    border-color: var(--c-primary) !important;
    box-shadow: 0 0 16px rgba(124,58,237,.45) !important;
}

.flink-item-icon img,
.flink-list-item .flink-item-icon img {
    width: 100% !important;
    height: 100% !important;
    object-fit: cover !important;
    border-radius: 50% !important;
    border: none !important;
    box-shadow: none !important;
    transition: transform .45s var(--ease) !important;
}

.flink-list-item:hover .flink-item-icon img {
    transform: scale(1.1) rotate(4deg) !important;
}

.flink-info,
.flink-list-item .flink-info {
    display: flex !important;
    flex-direction: column !important;
    gap: .3rem !important;
    min-width: 0;
}

.flink-item-name,
.flink-list-item .flink-item-name {
    color: var(--t-high) !important;
    font-size: .92rem !important;
    font-weight: 700 !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    transition: color var(--dur) var(--ease) !important;
}
.flink-list-item:hover .flink-item-name {
    color: var(--c-primary-light) !important;
}

.flink-item-desc,
.flink-list-item .flink-item-desc {
    color: var(--t-low) !important;
    font-size: .75rem !important;
    line-height: 1.5 !important;
    display: -webkit-box !important;
    -webkit-line-clamp: 2 !important;
    -webkit-box-orient: vertical !important;
    overflow: hidden !important;
}

.flink-list-item:nth-child(1)  { animation-delay: .04s }
.flink-list-item:nth-child(2)  { animation-delay: .09s }
.flink-list-item:nth-child(3)  { animation-delay: .14s }
.flink-list-item:nth-child(4)  { animation-delay: .19s }
.flink-list-item:nth-child(5)  { animation-delay: .24s }
.flink-list-item:nth-child(6)  { animation-delay: .29s }
.flink-list-item:nth-child(n+7){ animation-delay: .34s }

@media (max-width: 600px) {
    .flink-list { grid-template-columns: repeat(2, 1fr) !important; }
}

/* ────────────────────────────────────────────────────────────
   § 26  模式切换过渡
──────────────────────────────────────────────────────────── */
body,
#nav,
.card-widget,
#article-container,
.flink-list-item,
#recent-posts .recent-post-item,
#footer {
    transition:
            background-color .4s var(--ease),
            border-color     .4s var(--ease),
            color            .4s var(--ease),
            box-shadow       .4s var(--ease) !important;
}

/* ────────────────────────────────────────────────────────────
   § 27  LIGHT MODE
──────────────────────────────────────────────────────────── */
html:not([data-theme="dark"]) {
    --c-primary:       #7c3aed;
    --c-primary-light: #6d28d9;
    --c-secondary:     #3b82f6;
    --c-accent:        #0891b2;
    --g-brand: linear-gradient(135deg, #7c3aed 0%, #3b82f6 100%);
    --g-text:  linear-gradient(135deg, #7c3aed 0%, #3b82f6 60%, #0891b2 100%);
    --bg-body:   #f5f3ff;
    --bg-card:   rgba(255 255 255 / 0.82);
    --bg-card-h: rgba(255 255 255 / 0.97);
    --bg-nav:    rgba(245 243 255 / 0.90);
    --t-high: #1e1b4b;
    --t-mid:  #44475a;
    --t-low:  #9198b5;
    --b-line: rgba(124 58 237 / 0.12);
    --b-glow: rgba(124 58 237 / 0.30);
    --s-card: 0 4px 24px rgba(100 80 180 / .10);
    --s-lift: 0 20px 48px rgba(124 58 237 / .18);
}

html:not([data-theme="dark"]) body {
    background-color: #f5f3ff !important;
    background-image:
            radial-gradient(ellipse 60% 50% at 15% 15%, rgba(124,58,237,.07) 0%, transparent 100%),
            radial-gradient(ellipse 50% 40% at 85% 80%, rgba(59,130,246,.05) 0%, transparent 100%),
            radial-gradient(ellipse 40% 60% at 50% 50%, rgba(6,182,212,.03)  0%, transparent 100%) !important;
    color: #1e1b4b !important;
}

html:not([data-theme="dark"]) #nav {
    background: rgba(245,243,255,.90) !important;
    border-bottom-color: rgba(124,58,237,.12) !important;
    box-shadow: 0 4px 24px rgba(100,80,180,.10) !important;
}
html:not([data-theme="dark"]) #nav .menus_item a { color: #44475a !important; }
html:not([data-theme="dark"]) #nav .menus_item a:hover { color: var(--c-primary) !important; }
html:not([data-theme="dark"]) #nav #nav-right i { color: #9198b5 !important; }
html:not([data-theme="dark"]) #nav #nav-right i:hover { color: var(--c-primary) !important; }

html:not([data-theme="dark"]) .card-widget {
    background: rgba(255,255,255,.88) !important;
    border-color: rgba(124,58,237,.10) !important;
    box-shadow: 0 4px 24px rgba(100,80,180,.10) !important;
}
html:not([data-theme="dark"]) .card-widget:hover {
    border-color: rgba(124,58,237,.28) !important;
    box-shadow: 0 8px 36px rgba(124,58,237,.13) !important;
}

html:not([data-theme="dark"]) #card-info .author-avatar img {
    box-shadow: 0 0 22px rgba(124,58,237,.30) !important;
}
html:not([data-theme="dark"]) #card-info .author-description,
html:not([data-theme="dark"]) #card-info .card-description {
    color: #44475a !important;
}
html:not([data-theme="dark"]) #card-info .blog-info-data .count,
html:not([data-theme="dark"]) #card-info .blog-info-data span:first-child {
    color: var(--c-primary) !important;
}

html:not([data-theme="dark"]) #recent-posts .recent-post-item {
    background: rgba(255,255,255,.88) !important;
    border-color: rgba(124,58,237,.10) !important;
    box-shadow: 0 4px 20px rgba(100,80,180,.10) !important;
}
html:not([data-theme="dark"]) #recent-posts .recent-post-item:hover {
    background: #ffffff !important;
    border-color: rgba(124,58,237,.28) !important;
    box-shadow: 0 20px 48px rgba(124,58,237,.15) !important;
}
html:not([data-theme="dark"]) #recent-posts .content .article-title { color: #1e1b4b !important; }
html:not([data-theme="dark"]) #recent-posts .content .article-summary { color: #44475a !important; }

html:not([data-theme="dark"]) #article-container {
    background: rgba(255,255,255,.92) !important;
    border-color: rgba(124,58,237,.10) !important;
    box-shadow: 0 4px 24px rgba(100,80,180,.10) !important;
    color: #44475a !important;
}
html:not([data-theme="dark"]) #article-container h1,
html:not([data-theme="dark"]) #article-container h2,
html:not([data-theme="dark"]) #article-container h4 { color: #1e1b4b !important; }
html:not([data-theme="dark"]) #article-container h3 { color: var(--c-primary) !important; }
html:not([data-theme="dark"]) #article-container p  { color: #44475a !important; }
html:not([data-theme="dark"]) #article-container blockquote {
    background: rgba(124,58,237,.05) !important;
    color: #44475a !important;
}
html:not([data-theme="dark"]) #article-container code:not([class*='language']) {
    background: rgba(124,58,237,.08) !important;
    border-color: rgba(124,58,237,.18) !important;
    color: var(--c-primary) !important;
}
html:not([data-theme="dark"]) .highlight,
html:not([data-theme="dark"]) figure.highlight {
    background: #f0eeff !important;
    border-color: rgba(124,58,237,.14) !important;
}
html:not([data-theme="dark"]) .highlight .gutter,
html:not([data-theme="dark"]) figure.highlight .gutter {
    background: rgba(124,58,237,.06) !important;
    border-right-color: rgba(124,58,237,.12) !important;
    color: #9198b5 !important;
}
html:not([data-theme="dark"]) .highlight-tools {
    background: rgba(124,58,237,.06) !important;
    border-bottom-color: rgba(124,58,237,.12) !important;
}

html:not([data-theme="dark"]) #toc-div {
    background: rgba(255,255,255,.88) !important;
    border-color: rgba(124,58,237,.12) !important;
}

html:not([data-theme="dark"]) .flink-list-item {
    background: rgba(255,255,255,.88) !important;
    border-color: rgba(124,58,237,.10) !important;
    box-shadow: 0 4px 20px rgba(100,80,180,.10) !important;
}
html:not([data-theme="dark"]) .flink-list-item:hover {
    background: #ffffff !important;
    border-color: rgba(124,58,237,.28) !important;
    box-shadow: 0 20px 48px rgba(124,58,237,.16) !important;
}
html:not([data-theme="dark"]) .flink-item-name { color: #1e1b4b !important; }
html:not([data-theme="dark"]) .flink-item-desc  { color: #9198b5 !important; }

html:not([data-theme="dark"]) #pagination.pagination-pager .page-number,
html:not([data-theme="dark"]) #pagination.pagination-pager .prev,
html:not([data-theme="dark"]) #pagination.pagination-pager .next {
    background: rgba(255,255,255,.88) !important;
    border-color: rgba(124,58,237,.14) !important;
    color: #44475a !important;
}

html:not([data-theme="dark"]) #footer {
    background: rgba(245,243,255,.95) !important;
    border-top-color: rgba(124,58,237,.12) !important;
}
html:not([data-theme="dark"]) #footer-wrap { color: #9198b5 !important; }

html:not([data-theme="dark"]) ::-webkit-scrollbar-track { background: #f5f3ff; }

html:not([data-theme="dark"]) #page-header.full_page::before {
    background:
            radial-gradient(ellipse 55% 60% at 25% 40%, rgba(124,58,237,.28) 0%, transparent 65%),
            radial-gradient(ellipse 45% 50% at 75% 60%, rgba(59,130,246,.18) 0%, transparent 65%),
            radial-gradient(ellipse 30% 40% at 55% 20%, rgba(6,182,212,.12)  0%, transparent 60%);
}

/* ────────────────────────────────────────────────────────────
   § 28  DARK MODE 显式声明
──────────────────────────────────────────────────────────── */
[data-theme="dark"] {
    --bg-body:         #08081a;
    --bg-card:         rgba(255 255 255 / 0.042);
    --bg-card-h:       rgba(255 255 255 / 0.075);
    --bg-nav:          rgba(8 8 26 / 0.82);
    --t-high:          #e2e8f0;
    --t-mid:           #94a3b8;
    --t-low:           #475569;
    --b-line:          rgba(255 255 255 / 0.08);
    --b-glow:          rgba(124 58 237 / 0.45);
    --s-card:          0 4px 24px rgba(0 0 0 / .35);
    --s-lift:          0 20px 48px rgba(124 58 237 / .22);
    --c-primary-light: #a78bfa;
    --g-text: linear-gradient(135deg, #a78bfa 0%, #60a5fa 50%, #34d399 100%);
}

[data-theme="dark"] body {
    background-color: #08081a !important;
    background-image:
            radial-gradient(ellipse 60% 50% at 15% 15%, rgba(124,58,237,.13) 0%, transparent 100%),
            radial-gradient(ellipse 50% 40% at 85% 80%, rgba(59,130,246,.10) 0%, transparent 100%),
            radial-gradient(ellipse 40% 60% at 50% 50%, rgba(6,182,212,.06)  0%, transparent 100%) !important;
}

/* ────────────────────────────────────────────────────────────
   § 29  移动端全局 card-widget animation 保护
   ⚠️ 移动端彻底去掉 animation，防止 Butterfly JS 控制失效
──────────────────────────────────────────────────────────── */
@media (max-width: 900px) {
    .card-widget,
    #toc-div,
    .aside-content .card-widget {
        animation: none !important;
        animation-fill-mode: none !important;
    }
}

/* ────────────────────────────────────────────────────────────
   § 30  SEARCH — Butterfly Local Search
   ⚠️ 核心原则：
      · 不动 display/position/z-index/inset/visibility
      · 不动 .search-input-wrap 任何布局属性
      · .search-dialog 不加任何 animation
        （animation forwards fill 会压制 Butterfly 的关闭机制）
      · 所有伪元素 content:none + pointer-events:none
──────────────────────────────────────────────────────────── */

/* 30-A 遮罩 */
#search-mask {
    background: rgba(8, 8, 26, 0.80) !important;
    backdrop-filter: blur(14px) saturate(140%) !important;
    -webkit-backdrop-filter: blur(14px) saturate(140%) !important;
}

html:not([data-theme="dark"]) #search-mask {
    background: rgba(220, 214, 255, 0.75) !important;
}

/* 30-B 弹框主体（不加任何 animation） */
.search-dialog {
    width: min(660px, 92vw) !important;
    max-height: 76vh !important;
    background: rgba(12, 10, 32, 0.96) !important;
    border: 1px solid rgba(124, 58, 237, 0.28) !important;
    border-radius: 20px !important;
    box-shadow:
            0 0 0 1px rgba(124, 58, 237, 0.10),
            0 32px 80px rgba(0, 0, 0, 0.65),
            0 0 55px rgba(124, 58, 237, 0.15) !important;
}

.search-dialog::before,
.search-dialog::after {
    content: none !important;
    display: none !important;
    pointer-events: none !important;
}

html:not([data-theme="dark"]) .search-dialog {
    background: rgba(252, 250, 255, 0.98) !important;
    border-color: rgba(124, 58, 237, 0.18) !important;
    box-shadow:
            0 0 0 1px rgba(124, 58, 237, 0.08),
            0 32px 80px rgba(100, 80, 180, 0.18),
            0 0 55px rgba(124, 58, 237, 0.07) !important;
}

/* 30-C 输入框区域（只改边框颜色，不动布局） */
.search-dialog .search-input-wrap {
    border-bottom: 1px solid rgba(255, 255, 255, 0.07) !important;
}

html:not([data-theme="dark"]) .search-dialog .search-input-wrap {
    border-bottom-color: rgba(124, 58, 237, 0.10) !important;
}

.search-dialog .search-input-wrap::before,
.search-dialog .search-input-wrap::after {
    content: none !important;
    display: none !important;
    pointer-events: none !important;
}

.search-dialog .search-input-wrap .fa-search {
    color: var(--c-primary-light) !important;
    opacity: .75 !important;
}
html:not([data-theme="dark"]) .search-dialog .search-input-wrap .fa-search {
    color: var(--c-primary) !important;
}

/* 30-D 输入框本体 */
#local-search-input {
    background: transparent !important;
    border: none !important;
    outline: none !important;
    box-shadow: none !important;
    font-family: 'Inter', system-ui, sans-serif !important;
    font-size: 1.05rem !important;
    font-weight: 500 !important;
    color: #e2e8f0 !important;
    caret-color: var(--c-primary-light) !important;
}
#local-search-input::placeholder {
    color: #475569 !important;
    font-weight: 400 !important;
}
html:not([data-theme="dark"]) #local-search-input { color: #1e1b4b !important; }
html:not([data-theme="dark"]) #local-search-input::placeholder { color: #9198b5 !important; }

/* 30-E 关闭按钮（只改颜色，不动盒模型） */
#search-close-button {
    cursor: pointer !important;
    color: #64748b !important;
    border-radius: 7px !important;
    transition: color .2s ease, background .2s ease !important;
}
#search-close-button:hover {
    color: var(--c-primary-light) !important;
    background: rgba(124, 58, 237, .15) !important;
}
html:not([data-theme="dark"]) #search-close-button { color: #9198b5 !important; }
html:not([data-theme="dark"]) #search-close-button:hover {
    color: var(--c-primary) !important;
    background: rgba(124, 58, 237, .10) !important;
}

/* 30-F 结果滚动区 */
#local-search-results {
    overflow-y: auto !important;
    max-height: calc(76vh - 68px) !important;
    padding: .6rem .8rem .9rem !important;
    scrollbar-width: thin !important;
    scrollbar-color: rgba(124,58,237,.35) transparent !important;
}
#local-search-results::-webkit-scrollbar { width: 4px; }
#local-search-results::-webkit-scrollbar-track { background: transparent; }
#local-search-results::-webkit-scrollbar-thumb {
    background: rgba(124,58,237,.35);
    border-radius: 2px;
}

/* 30-G 隐藏剪刀虚线 */
#local-search-results hr,
.search-dialog hr { display: none !important; }

#local-search-results .local-search-result-item::before,
#local-search-results .local-search-result-item::after {
    content: none !important;
    display: none !important;
}

/* 30-H 单条结果卡片 */
#local-search-results .local-search-result-item {
    background: rgba(255, 255, 255, 0.035) !important;
    border: 1px solid rgba(255, 255, 255, 0.06) !important;
    border-radius: 12px !important;
    padding: .95rem 1.15rem !important;
    margin: .4rem 0 !important;
    cursor: pointer !important;
    transition:
            background   .2s ease,
            border-color .2s ease,
            transform    .2s ease,
            box-shadow   .2s ease !important;
    animation: resultIn .25s ease both;
}

@keyframes resultIn {
    from { opacity: 0; transform: translateX(-8px); }
    to   { opacity: 1; transform: translateX(0); }
}

#local-search-results .local-search-result-item:nth-child(1) { animation-delay: .03s }
#local-search-results .local-search-result-item:nth-child(2) { animation-delay: .07s }
#local-search-results .local-search-result-item:nth-child(3) { animation-delay: .11s }
#local-search-results .local-search-result-item:nth-child(4) { animation-delay: .15s }
#local-search-results .local-search-result-item:nth-child(5) { animation-delay: .19s }
#local-search-results .local-search-result-item:nth-child(n+6) { animation-delay: .22s }

#local-search-results .local-search-result-item:hover {
    background: rgba(124, 58, 237, 0.10) !important;
    border-color: rgba(124, 58, 237, 0.30) !important;
    transform: translateX(5px) !important;
    box-shadow: 0 4px 20px rgba(124, 58, 237, .12) !important;
}

html:not([data-theme="dark"]) #local-search-results .local-search-result-item {
    background: rgba(124, 58, 237, 0.025) !important;
    border-color: rgba(124, 58, 237, 0.08) !important;
}
html:not([data-theme="dark"]) #local-search-results .local-search-result-item:hover {
    background: rgba(124, 58, 237, 0.07) !important;
    border-color: rgba(124, 58, 237, 0.22) !important;
    box-shadow: 0 4px 20px rgba(124, 58, 237, .08) !important;
}

/* 30-I 结果标题 */
#local-search-results .local-search-result-item .search-result-title {
    font-size: .94rem !important;
    font-weight: 700 !important;
    color: #e2e8f0 !important;
    margin-bottom: .4rem !important;
    line-height: 1.45 !important;
    text-decoration: none !important;
    transition: color .2s ease !important;
}
#local-search-results .local-search-result-item:hover .search-result-title {
    color: var(--c-primary-light) !important;
}
html:not([data-theme="dark"]) #local-search-results .local-search-result-item .search-result-title {
    color: #1e1b4b !important;
}
html:not([data-theme="dark"]) #local-search-results .local-search-result-item:hover .search-result-title {
    color: var(--c-primary) !important;
}

/* 30-J 结果摘要 */
#local-search-results .local-search-result-item .search-result-abstract {
    font-size: .80rem !important;
    color: #475569 !important;
    line-height: 1.75 !important;
    margin: 0 !important;
    display: -webkit-box !important;
    -webkit-line-clamp: 2 !important;
    -webkit-box-orient: vertical !important;
    overflow: hidden !important;
}
html:not([data-theme="dark"]) #local-search-results .local-search-result-item .search-result-abstract {
    color: #9198b5 !important;
}

/* 30-K 关键词高亮 */
#local-search-results em {
    color: var(--c-primary-light) !important;
    background: rgba(124, 58, 237, .16) !important;
    border-radius: 3px !important;
    padding: 0 3px !important;
    font-style: normal !important;
    font-weight: 600 !important;
}
html:not([data-theme="dark"]) #local-search-results em {
    color: var(--c-primary) !important;
    background: rgba(124, 58, 237, .10) !important;
}

/* 30-L 加载中 / 无结果 */
#local-search-results .search-no-result,
#loading-database {
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
    justify-content: center !important;
    padding: 2.5rem 1rem !important;
    color: #475569 !important;
    font-size: .85rem !important;
    gap: .65rem !important;
    text-align: center !important;
}
#loading-database::before {
    content: '' !important;
    width: 22px !important;
    height: 22px !important;
    border: 2px solid rgba(124, 58, 237, .18) !important;
    border-top-color: var(--c-primary-light) !important;
    border-radius: 50% !important;
    animation: spin .7s linear infinite !important;
    display: block !important;
}
@keyframes spin { to { transform: rotate(360deg); } }

/* 30-M 移动端 */
@media (max-width: 600px) {
    .search-dialog {
        width: 100% !important;
        max-height: 85vh !important;
        border-radius: 20px 20px 0 0 !important;
    }
    #local-search-results {
        max-height: calc(85vh - 68px) !important;
    }
}