/* === LiMhy 博客系统 - 前台样式表 === */

/* --- 1. 全局颜色与基础设置 --- */
:root { 
    --bg-color: #fdfdfd; 
    --text-main: #000000; 
    --text-sec: #555555; 
    --accent: #000000; 
    --border-width: 2px; 
    --border-color: #000000; 
    --radius: 12px; 
    --card-shadow: 3px 3px 0px #000000; 
    --font-base: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; 
    --font-serif: Georgia, "Times New Roman", Times, serif; 
    --container-width: 900px; 
}

* { margin: 0; padding: 0; box-sizing: border-box; }
body { font-family: var(--font-base); background-color: var(--bg-color); color: var(--text-main); line-height: 1.5; -webkit-font-smoothing: antialiased; overflow-x: hidden; }
a { text-decoration: none; color: inherit; } 
img { max-width: 100%; display: block; } 
ul { list-style: none; } 
.container { max-width: var(--container-width); margin: 0 auto; padding: 0 16px; }

/* --- 2. 顶部导航栏 --- */
.site-header { padding: 12px 0; margin-bottom: 20px; background: var(--bg-color); position: sticky; top: 0; z-index: 100; border-bottom: 1px solid #eee; }
.header-inner { display: flex; align-items: center; justify-content: space-between; }
.site-logo { display: flex; align-items: center; gap: 10px; } 
.site-logo img { width: 40px; height: 40px; border-radius: 50%; border: var(--border-width) solid var(--border-color); object-fit: cover; } 
.site-logo span { font-weight: 800; font-size: 18px; letter-spacing: -0.5px; white-space: nowrap; }

/* 宽体 Logo 特殊样式 */
.site-logo.is-wide { gap: 0; }
.site-logo.is-wide img { width: auto; max-width: 180px; height: 40px; border-radius: 0; border: none; object-fit: contain; }
.site-logo.is-wide span { display: none; }
@media (max-width: 600px) {
    .site-logo.is-wide img { height: 32px; max-width: 140px; }
}

.site-nav { display: flex; gap: 20px; align-items: center; } 
.nav-link { font-size: 15px; font-weight: 700; position: relative; white-space: nowrap; } 
.nav-link:hover::after { content: ''; position: absolute; bottom: -4px; left: 0; width: 100%; height: 2px; background: var(--text-main); }
.menu-toggle { display: none; font-size: 20px; cursor: pointer; border: var(--border-width) solid var(--border-color); border-radius: 6px; width: 36px; height: 36px; align-items: center; justify-content: center; background: var(--bg-color); transition: all 0.1s; } 
.menu-toggle:active { transform: translate(2px, 2px); box-shadow: none; }

/* --- 3. 轮播图与文章列表 --- */
.banner-section { margin-bottom: 24px; } 
.banner-wrapper { border: var(--border-width) solid var(--border-color); border-radius: var(--radius); height: 240px; overflow: hidden; position: relative; background: var(--bg-color); box-shadow: var(--card-shadow); } 
.banner-slider { display: flex; height: 100%; transition: transform 0.5s cubic-bezier(0.25, 1, 0.5, 1); } 
.banner-item { min-width: 100%; height: 100%; position: relative; } 
.banner-link-block { display: block; width: 100%; height: 100%; position: relative; color: inherit; -webkit-tap-highlight-color: transparent; } 
.banner-bg { position: absolute; inset: 0; z-index: 1; } .banner-bg img { width: 100%; height: 100%; object-fit: cover; } 
.banner-overlay { position: absolute; inset: 0; background: linear-gradient(to top, rgba(0,0,0,0.85) 0%, rgba(0,0,0,0) 50%); z-index: 1; pointer-events: none; } 
.banner-content { position: absolute; bottom: 32px; left: 0; width: 100%; z-index: 2; text-align: center; padding: 0 16px; } 
.banner-title { font-size: 22px; font-weight: 900; margin: 0; color: #fff; text-shadow: 0 2px 4px rgba(0,0,0,0.8); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; line-height: 1.3; } 
.banner-dots { position: absolute; bottom: 12px; left: 50%; transform: translateX(-50%); z-index: 3; display: flex; gap: 6px; } 
.dot { width: 24px; height: 5px; border-radius: 4px; background: rgba(255,255,255,0.4); cursor: pointer; transition: all 0.3s; border: none; box-shadow: 0 1px 2px rgba(0,0,0,0.3); } 
.dot.active { background: #fff; width: 36px; opacity: 1; }

.post-list { display: flex; flex-direction: column; gap: 16px; margin-bottom: 40px; } 
.post-card { display: flex; align-items: stretch; background: var(--bg-color); border: var(--border-width) solid var(--border-color); border-radius: var(--radius); padding: 12px; gap: 16px; position: relative; transition: transform 0.2s, box-shadow 0.2s, opacity 0.3s; overflow: hidden; will-change: transform, opacity; } 
.post-card:hover { transform: translate(-2px, -2px); box-shadow: var(--card-shadow); } 

@keyframes portalShimmer { 0% { background-position: -1000px 0; } 100% { background-position: 1000px 0; } }
.post-card.is-skeleton { pointer-events: none; transform: none !important; box-shadow: none !important; }
.post-card.is-skeleton .post-cover-img-box img { opacity: 0; }
.post-card.is-skeleton .post-cover-img-box { background: #f4f4f5; background-image: linear-gradient(90deg, #f4f4f5 25%, #e4e4e7 50%, #f4f4f5 75%); background-size: 1000px 100%; animation: portalShimmer 2s infinite linear; }
.post-card.is-skeleton .post-title a, .post-card.is-skeleton .post-excerpt, .post-card.is-skeleton .post-meta { color: transparent !important; background: #f4f4f5; background-image: linear-gradient(90deg, #f4f4f5 25%, #e4e4e7 50%, #f4f4f5 75%); background-size: 1000px 100%; animation: portalShimmer 2s infinite linear; border-radius: 4px; user-select: none; text-shadow: none; }
.post-card.is-skeleton .post-title a { display: inline-block; width: 75%; height: 22px; line-height: 22px; }
.post-card.is-skeleton .post-excerpt { display: block; width: 100%; height: 38px; }
.post-card.is-skeleton .post-meta { display: inline-block; width: 40%; height: 16px; margin-top: 4px; }
@keyframes portalSlideInRight { from { transform: translateX(30px); opacity: 0; } to { transform: translateX(0); opacity: 1; } }
@keyframes portalSlideInLeft { from { transform: translateX(-30px); opacity: 0; } to { transform: translateX(0); opacity: 1; } }
.post-card.anim-right { animation: portalSlideInRight 0.4s cubic-bezier(0.2, 0.8, 0.2, 1); }
.post-card.anim-left { animation: portalSlideInLeft 0.4s cubic-bezier(0.2, 0.8, 0.2, 1); }

.post-cover-art { flex-shrink: 0; width: 140px; height: 100px; position: relative; margin-left: 6px; align-self: center; } 
.post-cover-art::before { content: ''; position: absolute; inset: 0; border: var(--border-width) solid var(--border-color); border-radius: 8px; background: var(--bg-color); transform: rotate(-5deg); z-index: 0; } 
.post-cover-img-box { position: absolute; inset: 0; border: var(--border-width) solid var(--border-color); border-radius: 8px; overflow: hidden; background: #eee; z-index: 1; transform: rotate(3deg); transition: transform 0.3s; } 
.post-card:hover .post-cover-img-box { transform: rotate(0deg) scale(1.05); } 
.post-cover-img-box img { width: 100%; height: 100%; object-fit: cover; transition: opacity 0.2s; } 
.post-content { flex: 1; min-width: 0; display: flex; flex-direction: column; justify-content: center; } 
.post-title { font-size: 18px; font-weight: 900; margin-bottom: 6px; line-height: 1.3; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: var(--text-main); } 
.post-excerpt { font-size: 13px; color: var(--text-sec); line-height: 1.5; margin-bottom: 8px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; word-break: break-word; overflow-wrap: break-word; } 
.post-meta { font-size: 11px; font-weight: 700; color: var(--text-main); opacity: 0.6; }

/* --- 4. 文章详情页排版 --- */
.breadcrumb { font-size: 13px; font-weight: 700; margin-bottom: 20px; color: var(--text-sec); display: flex; align-items: center; gap: 6px; } 
.breadcrumb a:hover { color: var(--text-main); text-decoration: underline; } 
.post-detail { max-width: 800px; margin: 0 auto 40px; } 
.post-detail__header { text-align: center; margin-bottom: 20px; padding-bottom: 15px; border-bottom: 1px solid #eee; } 
.post-detail__title { font-size: 26px; font-weight: 900; line-height: 1.3; margin-bottom: 10px; color: var(--text-main); } 
.post-detail__meta { font-size: 13px; font-weight: 600; color: var(--text-sec); } 

.prose { font-size: 16px; line-height: 1.8; color: var(--text-main); overflow-wrap: break-word; }
.prose p { margin-bottom: 1.5em; text-align: justify; }
.prose ul, .prose ol { margin: 16px 0 24px; padding-left: 24px; }
.prose ul { list-style-type: disc; } 
.prose ol { list-style-type: decimal; } 
.prose li { margin-bottom: 8px; padding-left: 4px; }
.prose li::marker { font-weight: 800; color: var(--text-main); } 

.md-table-wrap { display: block; width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; margin: 24px 0; border: 2px solid var(--border-color); border-radius: 8px; box-shadow: 3px 3px 0 rgba(0,0,0,0.1); }
.prose table { width: 100%; border-collapse: collapse; border-spacing: 0; font-size: 14px; min-width: 500px; }
.prose th, .prose td { padding: 12px 16px; border-bottom: 1px solid var(--border-color); text-align: left; vertical-align: top; }
.prose th { background-color: #f4f4f5; font-weight: 900; color: var(--text-main); border-bottom: 2px solid var(--border-color); white-space: nowrap; }
.prose tr:last-child td { border-bottom: none; }
.prose tr:nth-child(even) { background-color: #fafafa; } 
.prose tr:hover { background-color: #fffbeb; } 

.prose h2, .prose h3 { margin-top: 40px; margin-bottom: 20px; font-weight: 900; color: var(--text-main); line-height: 1.3; } 
.prose h2 { font-size: 24px; border-left: 6px solid var(--text-main); padding-left: 12px; } 
.prose h3 { font-size: 20px; display: flex; align-items: center; }
.prose h3::before { content: '#'; color: var(--text-sec); margin-right: 8px; font-weight: 400; }
.prose strong { font-weight: 900; color: var(--text-main); background: linear-gradient(120deg, transparent 60%, #fcd34d 60%); } 
.prose hr { border: 0; border-top: 2px dashed #ccc; margin: 40px 0; }
.prose blockquote { border-left: 4px solid var(--border-color); padding: 16px 20px; margin: 24px 0; font-style: normal; background: var(--bg-color); border-radius: 0 8px 8px 0; font-size: 15px; color: var(--text-sec); box-shadow: 2px 2px 0 #eee; }

.prose img { 
    border: 2px solid var(--border-color); 
    border-radius: 8px; 
    box-shadow: 4px 4px 0 rgba(0,0,0,0.15); 
    margin: 30px auto; 
    max-height: 70vh; 
    object-fit: contain; 
    cursor: zoom-in; 
    transition: transform 0.2s; 
    background: #f0f0f0 url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjY2NjIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHJlY3QgeD0iMyIgeT0iMyIgd2lkdGg9IjE4IiBoZWlnaHQ9IjE4IiByeD0iMiIgcnk9IjIiPjwvcmVjdD48Y2lyY2xlIGN4PSI4LjUiIGN5PSI4LjUiIHI9IjEuNSI+PC9jaXJjbGU+PHBvbHlsaW5lIHBvaW50cz0iMjEgMTUgMTYgMTAgNSAyMSI+PC9wb2x5bGluZT48L3N2Zz4=') no-repeat center center;
}
.prose img:hover { transform: scale(1.01); }

.post-detail__footer { margin-top: 24px; padding-top: 16px; border-top: 1px solid #eee; } 
.tag-list { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 24px; } 
.tag-item { font-size: 12px; font-weight: 700; background: #eee; padding: 3px 8px; border-radius: 4px; transition: all 0.2s; color: var(--text-main); } 
.tag-item:hover { background: var(--text-main); color: var(--bg-color); } 
.post-nav { display: flex; justify-content: space-between; gap: 10px; margin-bottom: 30px; } 
.post-nav__link { flex: 1; min-width: 0; border: 1px solid var(--border-color); border-radius: 8px; padding: 10px 12px; display: flex; flex-direction: column; justify-content: center; background: var(--bg-color); transition: all 0.2s; text-align: left; box-shadow: 2px 2px 0 #eee; overflow: hidden; } 
.post-nav__link:hover { box-shadow: 3px 3px 0 var(--border-color); transform: translate(-1px, -1px); } 
.post-nav__label { font-size: 10px; color: var(--text-sec); font-weight: 800; text-transform: uppercase; margin-bottom: 1px; } 
.post-nav__title { font-size: 13px; font-weight: 700; color: var(--text-main); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; line-height: 1.4; display: block; width: 100%; }
.post-nav__link--next { text-align: right; align-items: flex-end; } .post-nav__placeholder { flex: 1; }

/* --- 5. 友情链接与评论区 --- */
.links-grid { display: grid; grid-template-columns: 1fr; gap: 20px; margin-top: 20px; } @media (min-width: 600px) { .links-grid { grid-template-columns: 1fr 1fr; } } 
.link-card { position: relative; display: flex; align-items: center; gap: 16px; background: var(--bg-color); border: 2px solid var(--border-color); border-radius: 12px; padding: 20px 16px; transition: transform 0.2s, box-shadow 0.2s; overflow: hidden; } 
.link-card:hover { transform: translate(-3px, -3px); box-shadow: 4px 4px 0 var(--border-color); } 
.link-status { position: absolute; top: 0; right: 0; background: #e0e0e0; color: #000; font-size: 11px; font-weight: 800; padding: 3px 10px; border-left: 2px solid var(--border-color); border-bottom: 2px solid var(--border-color); border-bottom-left-radius: 8px; z-index: 2; transition: background 0.3s; } 
.link-status.is-online { background: #ecfdf5; color: #166534; } .link-status.is-offline { background: #fef2f2; color: #991b1b; } 
.link-avatar { width: 64px; height: 64px; flex-shrink: 0; border-radius: 50%; border: 2px solid var(--border-color); object-fit: cover; background: #eee; } 
.link-info { flex: 1; min-width: 0; display: flex; flex-direction: column; justify-content: center; } 
.link-name { font-size: 18px; font-weight: 900; color: var(--text-main); margin-bottom: 4px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } 
.link-desc { font-size: 13px; color: var(--text-sec); line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }

.comments-section { margin-top: 30px; padding-top: 20px; border-top: none; } 
.comments-title { font-size: 22px; font-weight: 900; margin-bottom: 16px; color: var(--text-main); } 
.comment-form { margin-bottom: 0; } 
.comment-form-grid { display: grid; grid-template-columns: 1fr 1fr !important; gap: 8px; margin-bottom: 12px; } 
.comment-input-group { position: relative; } 
.sketch-input { width: 100%; padding: 10px 12px; font-size: 14px; font-weight: 700; color: var(--text-main); background: var(--bg-color); border: 2px solid var(--border-color); border-radius: 4px; outline: none; transition: box-shadow 0.2s; } 
.sketch-input:focus { box-shadow: 3px 3px 0 rgba(0,0,0,0.2); position: relative; z-index: 2; } 
.sketch-input::placeholder { color: #999; font-weight: 500; } 
.sketch-textarea { min-height: 120px; resize: vertical; } 
.comment-form-actions-bar { display: flex; justify-content: space-between; align-items: center; margin-top: 12px; gap: 10px; flex-wrap: wrap; } 
.captcha-area { display: flex; align-items: center; gap: 8px; } 
.captcha-group { display: flex; align-items: stretch; } 
.captcha-img { height: 42px; width: auto; border: 2px solid var(--border-color); border-right: none; border-radius: 4px 0 0 4px; cursor: pointer; background: var(--bg-color); flex-shrink: 0; } 
.captcha-img:hover { opacity: 0.8; } 
.captcha-input { width: 100px; height: 42px; text-align: center; letter-spacing: 1px; border-radius: 0 4px 4px 0; border: 2px solid var(--border-color); } 
.disclaimer-icon { position: relative; cursor: pointer; display: flex; align-items: center; } 
.disclaimer-symbol { width: 24px; height: 24px; border: 2px solid var(--border-color); border-radius: 50%; display: flex; align-items: center; justify-content: center; font-weight: 900; font-family: serif; font-size: 14px; background: var(--bg-color); color: var(--text-main); transition: background 0.2s; } 
.disclaimer-icon:hover .disclaimer-symbol { background: var(--text-main); color: var(--bg-color); } 
.disclaimer-popup { display: none; position: absolute; bottom: 34px; left: 50%; transform: translateX(-50%); width: 260px; background: var(--bg-color); border: 2px solid var(--border-color); border-radius: 8px; padding: 12px; font-size: 12px; line-height: 1.5; color: var(--text-main); box-shadow: 4px 4px 0 rgba(0,0,0,0.15); z-index: 10; text-align: center; font-weight: 700; } 
.disclaimer-popup::after { content: ''; position: absolute; bottom: -8px; left: 50%; transform: translateX(-50%); border-width: 8px 8px 0; border-style: solid; border-color: var(--border-color) transparent transparent transparent; } 
.disclaimer-popup::before { content: ''; position: absolute; bottom: -5px; left: 50%; transform: translateX(-50%); border-width: 6px 6px 0; border-style: solid; border-color: var(--bg-color) transparent transparent transparent; z-index: 1; } 
.disclaimer-icon:hover .disclaimer-popup, .disclaimer-icon:active .disclaimer-popup, .disclaimer-icon:focus-within .disclaimer-popup { display: block; animation: popIn 0.2s ease-out; } 
@keyframes popIn { from { opacity: 0; transform: translate(-50%, 10px); } to { opacity: 1; transform: translate(-50%, 0); } } 
.sketch-btn { display: inline-block; background: var(--bg-color); color: var(--text-main); font-size: 14px; font-weight: 900; padding: 10px 24px; border: 2px solid var(--border-color); border-radius: 4px; cursor: pointer; box-shadow: 3px 3px 0 var(--border-color); transition: transform 0.1s, box-shadow 0.1s; } 
.sketch-btn:active { transform: translate(2px, 2px); box-shadow: 1px 1px 0 var(--border-color); } 
.sketch-btn:hover { background: var(--text-main); color: var(--bg-color); } 
.comment-list { margin-top: 40px; padding-top: 24px; border-top: 2px dashed #eee; } 
.comment-item { margin-bottom: 24px; } .comment-body { display: flex; gap: 12px; position: relative; } 
.comment-avatar img { width: 40px; height: 40px; border-radius: 50%; border: 2px solid var(--border-color); object-fit: cover; } 
.comment-content-area { flex: 1; } .comment-meta { display: flex; justify-content: space-between; align-items: center; margin-bottom: 4px; } 
.comment-author { font-size: 15px; font-weight: 900; color: var(--text-main); } 
.admin-badge--author { background: var(--text-main); color: var(--bg-color); border: 1px solid var(--border-color); font-size: 10px; padding: 0 4px; border-radius: 3px; vertical-align: middle; margin-left: 4px; } 
.comment-time { font-size: 11px; font-weight: 700; color: var(--text-sec); } 
.comment-reply-link { font-size: 11px; font-weight: 700; color: var(--text-main); border: 1px solid var(--border-color); padding: 1px 8px; border-radius: 3px; background: var(--bg-color); cursor: pointer; } 
.comment-reply-link:hover { background: var(--text-main); color: var(--bg-color); } 
.comment-text { font-size: 14px; line-height: 1.5; color: var(--text-main); font-weight: 500; } 
.comment-children { margin-top: 16px; margin-left: 20px; padding-left: 16px; border-left: 2px dotted var(--border-color); } 
.comment-children .comment-avatar img { width: 32px; height: 32px; } 
.reply-hint { background: #f0f0f0; border: 2px solid var(--border-color); padding: 8px 12px; margin-bottom: 12px; display: flex; justify-content: space-between; align-items: center; font-weight: 700; border-radius: 4px; font-size: 13px; } 
.reply-hint-cancel { cursor: pointer; color: #ff0000; } 
@media (max-width: 600px) { .sketch-input { padding: 8px; font-size: 13px; } .comment-form-actions-bar { justify-content: space-between; } .captcha-area { flex: 1; } .sketch-btn { padding: 10px 20px; margin-left: 10px; flex-shrink: 0; } }

/* --- 6. 归档页面与小徽章 --- */
.archive-page-v2 { max-width: 680px; margin: 40px auto; padding: 0 16px; } 
.archive-main-title { text-align: center; font-size: 32px; font-weight: 900; margin-bottom: 60px; letter-spacing: 1px; color: var(--text-main); } 
.archive-year-group { margin-bottom: 0; } 
.archive-year-separator { margin: 40px 0; border-top: 2px dotted #ffe4e6; height: 1px; width: 100%; } 
.archive-year-header { margin-bottom: 30px; display: flex; align-items: baseline; gap: 12px; line-height: 1; } 
.archive-year-num { font-family: var(--font-serif); font-size: 28px; font-weight: 700; color: var(--text-main); } 
.archive-year-count { font-family: var(--font-base); font-size: 16px; font-weight: 800; color: var(--text-main); letter-spacing: 0.5px; } 
.archive-list { display: flex; flex-direction: column; gap: 32px; } 
.archive-item { display: flex; align-items: baseline; gap: 20px; } 
.archive-item__date { font-family: var(--font-serif); font-size: 18px; color: var(--text-sec); width: 70px; flex-shrink: 0; text-align: left; } 
.archive-item__title { font-size: 17px; font-weight: 400; color: var(--text-main); line-height: 1.4; transition: color 0.2s; } 
.archive-item__title:hover { color: var(--text-main); text-decoration: underline; } 
@media (max-width: 600px) { .archive-main-title { font-size: 28px; margin-bottom: 40px; } .archive-item { gap: 16px; } .archive-item__date { font-size: 16px; width: 60px; } .archive-item__title { font-size: 16px; } }
.signature-wrap { position: relative; display: inline-block; vertical-align: middle; margin: 0 4px; overflow: hidden; } 
.signature-img { height: 24px; width: auto; display: block; opacity: 0.9; } 
.signature-wrap::after { content: ''; position: absolute; top: 0; left: -150%; width: 100%; height: 100%; background: linear-gradient(to right, rgba(255,255,255,0) 0%, rgba(255,255,255,0.6) 50%, rgba(255,255,255,0) 100%); transform: skewX(-25deg); animation: signature-shine 5s infinite; pointer-events: none; } 
@keyframes signature-shine { 0% { left: -150%; } 20% { left: 150%; } 100% { left: 150%; } }
.post-copyright-card { margin: 40px 0 20px; padding: 16px 20px; background: #f9f9faf0; border: 1px dashed #bbb; border-radius: 8px; font-size: 13px; color: var(--text-sec); line-height: 1.6; display: flex; flex-direction: column; gap: 4px; position: relative; } .post-copyright-card::before { content: ''; position: absolute; left: 0; top: 10px; bottom: 10px; width: 4px; background: #000; border-radius: 0 2px 2px 0; } .copyright-item { display: block; width: 100%; margin-bottom: 4px; } 
.copyright-label { font-weight: 800; color: var(--text-main); white-space: nowrap; margin-right: 6px; display: inline; } 
.copyright-value { color: var(--text-sec); font-weight: 500; word-break: break-all; display: inline; } 
.copyright-value a { border-bottom: 1px solid #ccc; transition: all 0.2s; } .copyright-value a:hover { border-bottom-color: #000; color: var(--text-main); }
.featured-badge { display: inline-flex; align-items: center; background-color: #fcd34d; color: #000; font-size: 10px; font-weight: 800; padding: 1px 6px; border-radius: 12px; border: 1px solid #000; margin-left: 6px; vertical-align: middle; box-shadow: 1px 1px 0 rgba(0,0,0,0.15); line-height: 1.2; cursor: default; } .comment-item.is-featured { position: relative; background-color: #fffbeb; border: 2px solid #fcd34d; border-radius: 8px; padding: 12px; margin-left: -12px; margin-right: -12px; margin-bottom: 24px; box-shadow: 4px 4px 0 rgba(252, 211, 77, 0.4); transition: transform 0.2s; } @media (max-width: 600px) { .comment-item.is-featured { margin-left: 0; margin-right: 0; padding: 10px; } }

/* --- 网站底部 --- */
.site-footer { border-top: var(--border-width) solid var(--border-color); padding: 24px 0; margin-top: auto; background: var(--bg-color); font-size: 12px; font-weight: 700; line-height: 1.4; }
.footer-inner { display: flex; flex-direction: column; gap: 10px; }
.footer-primary { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 10px; padding-bottom: 10px; border-bottom: 1px dashed #eee; }
.footer-info-group { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; }
.footer-defense, .footer-online-badge, .footer-town-badge { display: inline-flex; align-items: center; gap: 4px; background: transparent; padding: 2px 6px; border-radius: 4px; font-size: 11px; color: var(--text-sec); border: 1px solid var(--border-color); line-height: 1.3; white-space: nowrap; cursor: default; }
.footer-town-badge { cursor: pointer; transition: all 0.2s; text-decoration: none; }
.footer-town-badge:hover { border-color: var(--border-color); background: #e4e4e7; box-shadow: 2px 2px 0 rgba(0,0,0,0.1); transform: translateY(-1px); }
.footer-town-badge img { height: 12px; width: auto; display: block; opacity: 0.9; }
.footer-town-badge:hover img { opacity: 1; }
.footer-ver { background: var(--text-main); color: var(--bg-color); padding: 0 3px; border-radius: 2px; font-size: 10px; line-height: 1.2; display: inline-block; }
.online-dot { width: 6px; height: 6px; background-color: #10b981; border-radius: 50%; position: relative; display: inline-block; } .online-dot::after { content: ''; position: absolute; top: 50%; left: 50%; width: 100%; height: 100%; background-color: #10b981; border-radius: 50%; transform: translate(-50%, -50%); animation: ping 2s cubic-bezier(0, 0, 0.2, 1) infinite; opacity: 0.7; } @keyframes ping { 75%, 100% { transform: translate(-50%, -50%) scale(2.5); opacity: 0; } }
.footer-rss-icon { display: flex; align-items: center; justify-content: center; width: 24px; height: 24px; border: 2px solid var(--border-color); border-radius: 4px; color: var(--text-main); transition: all 0.2s cubic-bezier(0.25, 1, 0.5, 1); background: var(--bg-color); } .footer-rss-icon svg { width: 14px; height: 14px; fill: currentColor; } .footer-rss-icon:hover { background: #f26522; border-color: #f26522; color: #fff; transform: translateY(-2px); box-shadow: 2px 2px 0 rgba(242, 101, 34, 0.3); }
.footer-secondary { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 10px; color: var(--text-sec); } .footer-copyright { opacity: 0.8; } .footer-links { display: flex; gap: 12px; } .footer-legal-link { color: var(--text-sec); position: relative; transition: color 0.2s; } .footer-legal-link:hover { color: var(--text-main); text-decoration: underline; }
.footer-no-f12 { display: inline-block; vertical-align: middle; margin-left: 10px; opacity: 0.85; transition: transform 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275), opacity 0.2s; position: relative; top: -1px; }
.footer-no-f12 img { height: 20px; width: auto; display: block; filter: drop-shadow(1px 1px 2px rgba(0,0,0,0.1)); }
.footer-no-f12:hover { opacity: 1; transform: scale(1.15) rotate(5deg); }
@media (max-width: 600px) { 
    .site-footer { padding: 20px 0 30px; } 
    .footer-primary, .footer-secondary { flex-direction: column; align-items: flex-start; gap: 8px; } 
    .footer-rss-icon { position: absolute; right: 16px; top: 24px; } 
    .footer-info-group { width: 100%; padding-right: 30px; gap: 6px; flex-wrap: wrap; } 
    .footer-author { font-size: 11px; width: 100%; flex-basis: 100%; display: block; margin-bottom: 2px; } 
    .signature-img { height: 20px; } 
    .footer-defense, .footer-online-badge, .footer-town-badge { padding: 1px 5px; font-size: 10px; } 
    .footer-town-badge img { height: 10px; } 
    .footer-links { font-size: 11px; gap: 10px; width: 100%; padding-top: 4px; } 
}

/* --- 弹窗与组件 --- */
.sketch-modal { position: fixed; inset: 0; z-index: 9999; display: flex; align-items: center; justify-content: center; visibility: hidden; pointer-events: none; } 
.sketch-modal.is-open { visibility: visible; pointer-events: auto; } 
.sketch-modal-overlay { position: absolute; inset: 0; background: rgba(0,0,0,0.4); backdrop-filter: blur(2px); opacity: 0; transition: opacity 0.2s; } 
.sketch-modal.is-open .sketch-modal-overlay { opacity: 1; } 
.sketch-modal-content { position: relative; width: 90%; max-width: 320px; background: #fff; border: 2px solid #000; border-radius: 8px; box-shadow: 4px 4px 0 rgba(0,0,0,0.15); opacity: 0; transform: translateY(10px); transition: all 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275); display: flex; flex-direction: column; max-height: 80vh; } 
.sketch-modal.is-open .sketch-modal-content { opacity: 1; transform: translateY(0); } 
.sketch-modal-header { display: flex; justify-content: space-between; align-items: center; padding: 12px 16px; border-bottom: 2px dashed #eee; } 
.sketch-modal-header h3 { font-size: 15px; font-weight: 800; color: #000; display: flex; align-items: center; gap: 6px; margin: 0; } 
.sketch-modal-header h3::before { content: ''; display: block; width: 8px; height: 8px; background: #10b981; border-radius: 50%; box-shadow: 0 0 4px #10b981; } 
.sketch-modal-close { background: none; border: none; font-size: 16px; font-weight: 900; color: #000; cursor: pointer; transition: transform 0.2s; padding: 0; } 
.sketch-modal-close:hover { transform: scale(1.1) rotate(90deg); color: #f53f3f; } 
.sketch-modal-body { padding: 12px; overflow-y: auto; } 
.online-user-list { display: flex; flex-direction: column; gap: 8px; margin: 0; padding: 0; } 
.online-user-item { display: flex; align-items: center; gap: 12px; padding: 10px; background: #f9f9faf0; border: 1px solid #ddd; border-radius: 6px; transition: border-color 0.2s; } 
.online-user-item:hover { border-color: #000; background: #fff; } 
.online-user-icon { width: 32px; height: 32px; border-radius: 50%; background: #eee; display: flex; align-items: center; justify-content: center; color: #333; flex-shrink: 0; border: 1px solid #ddd; } 
.online-user-info { flex: 1; min-width: 0; } 
.online-user-loc { font-size: 13px; font-weight: 800; color: #000; margin-bottom: 2px; } 
.online-user-meta { font-size: 11px; font-weight: 600; color: #888; }

.sketch-gallery { display: grid; gap: 12px; margin: 24px 0; width: 100%; }
.sketch-gallery img { margin: 0 !important; width: 100%; height: 100%; aspect-ratio: 1 / 1; object-fit: cover; border-radius: 8px; border: var(--border-width) solid var(--border-color); box-shadow: 2px 2px 0 rgba(0,0,0,0.1); cursor: zoom-in; transition: transform 0.2s, box-shadow 0.2s; }
.sketch-gallery img:hover { transform: translate(-2px, -2px); box-shadow: 4px 4px 0 rgba(0,0,0,0.15); }
.sketch-gallery[data-count="2"], .sketch-gallery[data-count="4"] { grid-template-columns: repeat(2, 1fr); }
.sketch-gallery:not([data-count="2"]):not([data-count="4"]) { grid-template-columns: repeat(3, 1fr); }
@media (max-width: 600px) { .sketch-gallery { gap: 6px; margin: 16px 0; } .sketch-gallery img { border-radius: 4px; border-width: 1px; } }

/* =========================================================
   全能画廊灯箱引擎 (Pro Lightbox)
   ========================================================= */
.sketch-lightbox { position: fixed; inset: 0; z-index: 100000; display: flex; align-items: center; justify-content: center; visibility: hidden; pointer-events: none; }
.sketch-lightbox.is-active { visibility: visible; pointer-events: auto; }
.lb-overlay { position: absolute; inset: 0; background: rgba(255,255,255,0.95); backdrop-filter: blur(5px); opacity: 0; transition: opacity 0.3s ease; }
.sketch-lightbox.is-active .lb-overlay { opacity: 1; }

.lb-topbar { position: absolute; top: 20px; left: 20px; right: 20px; display: flex; justify-content: space-between; align-items: flex-start; z-index: 2; pointer-events: none; }
.lb-counter { background: #000; color: #fff; font-size: 14px; font-weight: 900; font-family: monospace; padding: 6px 16px; border-radius: 30px; border: 2px solid #000; box-shadow: 3px 3px 0 rgba(0,0,0,0.2); opacity: 0; transform: translateY(-20px); transition: all 0.4s cubic-bezier(0.18, 0.89, 0.32, 1.28); pointer-events: auto; }
.lb-tools { display: flex; gap: 8px; opacity: 0; transform: translateY(-20px); transition: all 0.4s cubic-bezier(0.18, 0.89, 0.32, 1.28) 0.1s; pointer-events: auto; }
.lb-btn { background: #fff; border: 2px solid #000; color: #000; font-size: 18px; font-weight: 900; width: 40px; height: 40px; border-radius: 8px; cursor: pointer; box-shadow: 3px 3px 0 #000; display: flex; align-items: center; justify-content: center; transition: all 0.1s; }
.lb-btn#lb-zoom-reset { width: auto; padding: 0 12px; font-size: 14px; font-family: monospace; }
.lb-btn:active { transform: translate(2px, 2px); box-shadow: 1px 1px 0 #000; }
.lb-btn#lb-close { background: #f53f3f; color: #fff; }

.sketch-lightbox.is-active .lb-counter, .sketch-lightbox.is-active .lb-tools { opacity: 1; transform: translateY(0); }

.lb-nav { position: absolute; top: 50%; transform: translateY(-50%); background: #fff; border: 3px solid #000; color: #000; font-size: 32px; font-weight: 900; width: 50px; height: 50px; border-radius: 50%; cursor: pointer; box-shadow: 4px 4px 0 #000; display: flex; align-items: center; justify-content: center; transition: all 0.1s; z-index: 2; user-select: none; opacity: 0; }
.lb-nav:active { box-shadow: 1px 1px 0 #000; }
.sketch-lightbox.is-active .lb-nav { opacity: 1; }
.lb-prev { left: 30px; padding-right: 4px; padding-bottom: 4px; } .lb-prev:active { transform: translateY(-50%) translate(2px, 2px); }
.lb-next { right: 30px; padding-left: 4px; padding-bottom: 4px; } .lb-next:active { transform: translateY(-50%) translate(2px, 2px); }

.lb-img-container { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; z-index: 1; overflow: hidden; }
.lb-img-container img { max-width: 90vw; max-height: 85vh; border-radius: 8px; border: 3px solid #000; box-shadow: 10px 10px 0 rgba(0,0,0,0.15); transform-origin: center center; transition: transform 0.2s ease, opacity 0.2s ease; cursor: grab; opacity: 0; background: #fff; margin: 0; padding: 0; }
.lb-img-container img:active { cursor: grabbing; }

@media (max-width: 600px) {
    .lb-topbar { top: 10px; left: 10px; right: 10px; }
    .lb-tools { gap: 4px; }
    .lb-btn { width: 32px; height: 32px; font-size: 16px; border-width: 1px; box-shadow: 2px 2px 0 #000; }
    .lb-btn#lb-zoom-reset { padding: 0 8px; font-size: 12px; }
    .lb-nav { display: none !important; /* 手机端隐藏箭头，用滑动 */ }
    .lb-counter { padding: 4px 12px; font-size: 12px; border-width: 1px; box-shadow: 2px 2px 0 rgba(0,0,0,0.2); }
    .lb-img-container img { max-width: 95vw; max-height: 80vh; border-width: 2px; }
}


/* --- 博客小镇 --- */
.town-container { width: 100%; height: 65vh; min-height: 400px; overflow: hidden; position: relative; background: #e2f2e5; border: var(--border-width) solid var(--border-color); border-radius: var(--radius); box-shadow: var(--card-shadow); margin-bottom: 20px; }
.town-scroll-area { width: 100%; height: 100%; overflow: auto; -webkit-overflow-scrolling: touch; cursor: grab; user-select: none; }
.town-scroll-area:active { cursor: grabbing; }
.town-map { width: 1200px; height: 800px; background-image: url('/assets/town/town-bg.jpg'); background-size: cover; background-position: center; position: relative; margin: 0 auto; }
@media (min-width: 1250px) { .town-map { width: 100%; height: 100%; } }
.town-npc { position: absolute; width: 48px; height: 72px; transform: translate(-50%, -100%); transition: left 2s linear, top 2s linear; cursor: pointer; }
.town-npc img { width: 100%; height: 100%; object-fit: contain; animation: npc-breathe 1.5s infinite alternate ease-in-out; transform-origin: bottom center; filter: drop-shadow(2px 4px 0px rgba(0,0,0,0.25)); transition: transform 0.2s; }
.town-npc.is-mayor img { filter: drop-shadow(2px 5px 0px rgba(0,0,0,0.35)) contrast(1.1); animation: npc-breathe 1.2s infinite alternate ease-in-out; }
.town-npc.is-mayor .town-bubble { background: #dbeafe; border-color: #2563eb; color: #1e40af; z-index: 2; }
.town-npc.is-mayor .town-bubble::after { border-top-color: #2563eb; }
.town-npc.is-moving img { animation: npc-walk 0.35s infinite alternate ease-in-out; }
.town-npc.flip-x img { transform: scaleX(-1); }
@keyframes npc-breathe { 0% { transform: scaleY(1); } 100% { transform: scaleY(0.95); } }
@keyframes npc-walk { 0% { transform: rotate(-8deg) translateY(0); } 100% { transform: rotate(8deg) translateY(-6px); } }
.town-bubble { position: absolute; bottom: calc(100% + 5px); left: 50%; transform: translateX(-50%) scale(1); background: #fff; border: 2px solid #000; border-radius: 8px; padding: 3px 8px; font-size: 11px; font-weight: 800; color: #000; white-space: nowrap; box-shadow: 2px 2px 0 rgba(0,0,0,0.15); opacity: 0.9; pointer-events: none; z-index: 1; transition: transform 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275), color 0.2s; }
.town-bubble::after { content: ''; position: absolute; top: 100%; left: 50%; transform: translateX(-50%); border-width: 5px 5px 0; border-style: solid; border-color: #000 transparent transparent transparent; }
.town-npc.is-self .town-bubble { background: #fcd34d; }
.town-container[data-night="1"] .town-map { filter: brightness(0.6) saturate(1.2) hue-rotate(-10deg); }
.town-container[data-night="1"] .town-map::after { content: ''; position: absolute; inset: 0; background: rgba(20, 20, 80, 0.2); pointer-events: none; z-index: 50; }
.town-light { position: absolute; width: 250px; height: 250px; background: radial-gradient(circle, rgba(255,255,150,0.4) 0%, transparent 70%); border-radius: 50%; pointer-events: none; opacity: 0; transition: opacity 2s; z-index: 49; transform: translate(-50%, -50%); }
.town-container[data-night="1"] .town-light { opacity: 1; }
.emote-menu { position: absolute; background: #fff; border: 2px solid #000; padding: 5px; border-radius: 8px; display: none; gap: 5px; z-index: 10000; box-shadow: 4px 4px 0 #000; max-width: 90vw; flex-wrap: wrap; justify-content: center; }
.emote-menu.is-active { display: flex; animation: popIn 0.2s ease-out; }
.emote-btn { border: 1px solid #eee; background: none; padding: 6px 10px; cursor: pointer; border-radius: 4px; font-size: 14px; font-weight: bold; transition: all 0.1s; color: #333; white-space: nowrap; }
.emote-btn:hover { background: #000; color: #fff; border-color: #000; transform: scale(1.1); }
.town-billboard { position: absolute; width: 40px; height: 40px; font-size: 32px; line-height: 40px; text-align: center; cursor: pointer; z-index: 55; filter: drop-shadow(2px 4px 0px rgba(0,0,0,0.25)); transition: transform 0.2s; }
.town-billboard:hover { transform: scale(1.1); }
.town-modal { position: fixed; inset: 0; z-index: 11000; display: flex; align-items: center; justify-content: center; background: rgba(0,0,0,0.5); visibility: hidden; opacity: 0; transition: all 0.3s; backdrop-filter: blur(2px); }
.town-modal.is-active { visibility: visible; opacity: 1; }
.town-scroll-paper { background: #fdf6e3; border: 2px solid #5d4037; padding: 30px; max-width: 320px; width: 90%; position: relative; box-shadow: 10px 10px 0 rgba(0,0,0,0.2); font-family: var(--font-serif); color: #4e342e; text-align: center; transform: translateY(20px); transition: transform 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275); }
.town-modal.is-active .town-scroll-paper { transform: translateY(0); }
.town-scroll-paper h3 { margin-bottom: 20px; font-size: 22px; font-weight: bold; border-bottom: 1px dashed #795548; padding-bottom: 10px; color: #3e2723; }
.town-scroll-paper p { font-size: 16px; line-height: 1.6; margin-bottom: 15px; font-weight: 500;}
.town-scroll-paper .sketch-btn { margin-top: 10px; background: #5d4037; color: #fff; border-color: #3e2723; }
.town-scroll-paper .sketch-btn:hover { background: #000; }

/* --- 扫雷游戏 --- */
.ms-container { font-family: var(--font-base) !important; background: #c0c0c0 !important; border: 3px solid #000 !important; box-shadow: inset 2px 2px 0 #fff, inset -2px -2px 0 #808080, 8px 8px 0 rgba(0,0,0,0.5) !important; color: #000 !important; }
.ms-header { display: flex; justify-content: space-between; align-items: center; background: #fff; border: 2px solid #000; padding: 6px 12px; margin-bottom: 15px; border-radius: 4px; box-shadow: inset 2px 2px 0 #808080; }
.ms-counter { font-size: 22px; font-family: monospace; font-weight: 900; color: #dc2626; background: #000; padding: 2px 6px; border-radius: 2px; line-height: 1; letter-spacing: 2px; }
.ms-btn-face { font-size: 24px; border: 2px solid #000; background: #fff; cursor: pointer; padding: 0 4px; line-height: 1; box-shadow: 2px 2px 0 #000; transition: transform 0.1s; }
.ms-btn-face:active { transform: translate(2px, 2px); box-shadow: none; }
.ms-grid { display: grid; gap: 1px; background: #000; border: 2px solid #000; padding: 1px; user-select: none; }
.ms-cell { width: 100%; aspect-ratio: 1/1; background: #d4d4d8; display: flex; align-items: center; justify-content: center; font-weight: 900; font-size: 14px; cursor: pointer; box-shadow: inset 2px 2px 0 #fff, inset -2px -2px 0 #808080; }
.ms-cell:active:not(.is-revealed) { background: #e4e4e7; box-shadow: inset 2px 2px 0 #808080; }
.ms-cell.is-revealed { background: #fff; box-shadow: inset 1px 1px 3px rgba(0,0,0,0.1); cursor: default; }
.ms-cell[data-num="1"] { color: #2563eb; } .ms-cell[data-num="2"] { color: #16a34a; }
.ms-cell[data-num="3"] { color: #dc2626; } .ms-cell[data-num="4"] { color: #1e3a8a; }
.ms-cell[data-num="5"] { color: #7f1d1d; } .ms-cell[data-num="6"] { color: #0d9488; }
.ms-cell[data-num="7"] { color: #000000; } .ms-cell[data-num="8"] { color: #52525b; }

/* --- 更新日志与反馈 --- */
.logs-page-container { max-width: 700px; margin: 0 auto; padding: 20px 16px; }
.logs-hero-banner { width: 100%; border: var(--border-width) solid var(--border-color); border-radius: var(--radius); overflow: hidden; background: #eefdf2; margin-bottom: 20px; }
.logs-hero-banner img { width: 100%; display: block; }
.logs-action-bar { display: flex; gap: 12px; margin-bottom: 40px; align-items: stretch; }
.logs-announcement { flex: 1; display: flex; align-items: center; background: #fffaf0; border: var(--border-width) solid var(--border-color); border-radius: 8px; padding: 0 12px; gap: 10px; overflow: hidden; }
.gg-icon { width: 20px; height: 20px; flex-shrink: 0; }
.ticker-wrap { flex: 1; height: 24px; overflow: hidden; position: relative; }
.ticker-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }
.ticker-item { height: 24px; line-height: 24px; font-size: 14px; font-weight: 800; white-space: nowrap; display: flex; align-items: center; }
.ticker-item span { display: inline-block; }
.ticker-item b { color: #d97706; margin: 0 4px; }
.logs-feedback-btn { background: #000; color: #fff; font-weight: 900; font-size: 14px; border: var(--border-width) solid var(--border-color); border-radius: 8px; padding: 0 20px; cursor: pointer; transition: transform 0.1s, box-shadow 0.1s; white-space: nowrap; }
.logs-feedback-btn:hover { background: #222; transform: translateY(-2px); box-shadow: 2px 2px 0 rgba(0,0,0,0.2); }
.logs-feedback-btn:active { transform: translateY(0); box-shadow: none; }
.logs-timeline { padding-left: 10px; }
.log-item { display: flex; margin-bottom: 20px; }
.log-axis { width: 24px; border-left: 2px dashed #000; position: relative; margin-left: 8px; flex-shrink: 0; }
.log-axis::before { content: ''; position: absolute; top: 0; left: -8px; width: 14px; height: 14px; border: 2px solid #000; border-radius: 50%; background: #fff; }
.log-content-wrapper { flex: 1; padding-bottom: 20px; margin-top: -4px; }
.log-date-title { font-size: 18px; font-weight: 900; color: #000; margin-bottom: 12px; display: flex; align-items: center; }
.log-box { background: #ffeded; border: 2px solid #000; border-radius: 12px; padding: 16px; font-size: 14px; font-weight: 700; color: #000; line-height: 1.8; margin-bottom: 12px; }
.log-like-btn { display: inline-flex; align-items: center; gap: 6px; font-size: 16px; font-weight: 900; color: #000; cursor: pointer; user-select: none; transition: transform 0.2s; }
.log-like-btn img { width: 24px; height: 24px; transition: transform 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275); }
.log-like-btn:hover { transform: translateX(2px); }
.log-like-btn.is-liked img { transform: scale(1.2) rotate(-15deg); filter: invert(40%) sepia(90%) saturate(1500%) hue-rotate(340deg); }
.log-like-btn.is-animating img { animation: popBounce 0.4s ease-out; }
@keyframes popBounce { 0% { transform: scale(1); } 50% { transform: scale(1.5) rotate(-20deg); } 100% { transform: scale(1.2) rotate(-15deg); } }
.feedback-modal-content { max-width: 360px !important; padding: 0 !important; background: #fff2f2 !important; overflow: hidden; }
.feedback-modal-banner { position: relative; border-bottom: 2px solid #000; background: #fff; }
.feedback-modal-banner img { width: 100%; display: block; }
.feedback-modal-banner .sketch-modal-close { position: absolute; top: 10px; right: 10px; background: #fff; width: 28px; height: 28px; border: 2px solid #000; border-radius: 50%; display: flex; align-items: center; justify-content: center; box-shadow: 2px 2px 0 #000; z-index: 10; }
.feedback-modal-body { padding: 20px; display: flex; flex-direction: column; gap: 15px; }
.feedback-action-row { display: flex; justify-content: space-between; gap: 10px; align-items: stretch; }
.feedback-action-row .captcha-group { flex: 1; display: flex; align-items: stretch; border: 2px solid #000; border-radius: 4px; overflow: hidden; background: #fff; box-sizing: border-box; }
.feedback-action-row .captcha-img { border: none; border-right: 2px solid #000; border-radius: 0; height: 100%; object-fit: cover; flex-shrink: 0; cursor: pointer; }
.feedback-action-row .captcha-input { border: none; border-radius: 0; height: 40px; flex: 1; width: 100%; box-shadow: none !important; margin: 0; text-align: center; font-weight: 700; letter-spacing: 1px; outline: none; }
.feedback-action-row .captcha-input:focus { box-shadow: none !important; z-index: 1; }
.feedback-action-row .sketch-btn { width: 100px; text-align: center; padding: 0; flex-shrink: 0; }
@media (max-width: 600px) { .logs-action-bar { flex-direction: column; } .logs-feedback-btn { padding: 10px; } }
.admin-logs-panel { background: #fff; border: 2px dashed #10b981; border-radius: 8px; padding: 15px; margin-bottom: 24px; box-shadow: 4px 4px 0 rgba(16, 185, 129, 0.15); }
.admin-logs-panel h3 { margin-bottom: 15px; font-size: 16px; font-weight: 900; color: #047857; display: flex; align-items: center; gap: 6px; }
.admin-logs-grid { display: grid; grid-template-columns: 1fr; gap: 15px; }
@media(min-width: 768px) { .admin-logs-grid { grid-template-columns: 1fr 1fr; } }
.admin-logs-card { border: var(--border-width) solid var(--border-color); padding: 12px; border-radius: 8px; background: #fdfdfd; display: flex; flex-direction: column; box-sizing: border-box; overflow: hidden; }
.admin-logs-card h4 { margin-bottom: 10px; font-size: 14px; font-weight: 800; border-bottom: 1px dashed #ddd; padding-bottom: 5px; }
.admin-logs-card form { display: flex; flex-direction: column; width: 100%; box-sizing: border-box; }
.admin-logs-card .sketch-input, .admin-logs-card .sketch-btn { max-width: 100%; width: 100% !important; box-sizing: border-box; display: block; margin-left: 0; margin-right: 0; }
.admin-fb-list { list-style: none; padding: 0; margin: 0; max-height: 180px; overflow-y: auto; display: flex; flex-direction: column; gap: 8px; }
.admin-fb-list li { display: flex; justify-content: space-between; align-items: center; gap: 10px; background: #fffaf0; border: 1px solid #fde68a; padding: 6px 8px; border-radius: 4px; font-size: 12px; transition: transform 0.1s; }
.admin-fb-list li:hover { transform: translateX(2px); }
.fb-info { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: #333; }
.fb-info b { color: #000; }
.fb-actions { display: flex; gap: 6px; flex-shrink: 0; }
.btn-approve { background: #10b981; border: 2px solid #000; border-radius: 4px; cursor: pointer; width: 24px; height: 24px; display: flex; align-items: center; justify-content: center; font-size: 12px; transition: transform 0.1s; color: #fff; }
.btn-approve:active { transform: translateY(2px); }
.btn-reject { background: #fff; border: 2px solid #000; border-radius: 4px; cursor: pointer; width: 24px; height: 24px; display: flex; align-items: center; justify-content: center; font-size: 12px; transition: transform 0.1s; }
.btn-reject:active { transform: translateY(2px); }

/* --- 个人信息名片 --- */
.profile-card-modal { position: fixed; inset: 0; z-index: 10001; display: flex; align-items: center; justify-content: center; visibility: hidden; opacity: 0; transition: all 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.28); }
.profile-card-modal.is-open { visibility: visible; opacity: 1; }
.profile-card-overlay { position: absolute; inset: 0; background: rgba(0,0,0,0.5); backdrop-filter: blur(4px); }
.profile-card-content { position: relative; width: 90%; max-width: 340px; background: #FFFDF2; border: 3px solid #000; border-radius: 24px; padding: 24px; box-shadow: 12px 12px 0 rgba(0,0,0,0.2); transform: translateY(20px); transition: transform 0.3s; z-index: 2; }
.profile-card-modal.is-open .profile-card-content { transform: translateY(0); }
.profile-card-banner { position: absolute; top: -70px; right: -10px; width: 140px; height: 140px; z-index: 3; pointer-events: none; transform: rotate(12deg); }
.profile-card-banner img { width: 100%; height: 100%; object-fit: contain; }
.profile-id-badge { font-size: 12px; font-weight: 800; color: #BBB; margin-bottom: 15px; }
.profile-avatar-row { display: flex; align-items: center; justify-content: space-between; margin-bottom: 15px; position: relative; z-index: 10; }
.profile-avatar-wrap { position: relative; width: 80px; height: 80px; display: flex; align-items: center; justify-content: center; }
.profile-avatar-bg { position: absolute; inset: 0; background: #FFD2A0; clip-path: polygon(50% 0%, 61% 35%, 98% 35%, 68% 57%, 79% 91%, 50% 70%, 21% 91%, 32% 57%, 2% 35%, 39% 35%); animation: p-spin 10s linear infinite; opacity: 0.6; }
.profile-avatar-img { position: relative; width: 64px; height: 64px; border-radius: 50%; border: 3px solid #000; overflow: hidden; background: #fff; z-index: 1; }
.profile-like-box { display: flex; align-items: center; gap: 8px; font-size: 20px; font-weight: 900; color: #000; cursor: pointer; user-select: none; transition: transform 0.1s; -webkit-tap-highlight-color: transparent; }
.profile-like-box:active { transform: scale(0.95); }
.profile-like-icon { width: 28px; height: 28px; transition: transform 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275); }
.profile-like-icon.is-animating { animation: p-like-pop 0.4s ease-out; }
@keyframes p-like-pop { 0% { transform: scale(1); } 50% { transform: scale(1.4) rotate(-15deg); } 100% { transform: scale(1) rotate(0deg); } }
.profile-name-row { display: flex; align-items: baseline; gap: 8px; margin-bottom: 4px; }
.profile-name { font-size: 24px; font-weight: 900; color: #000; }
.profile-ip { font-size: 12px; color: #FF6B00; font-weight: 800; display: flex; align-items: center; gap: 4px; }
.profile-ip::before { content: ''; width: 6px; height: 6px; background: #FF6B00; border-radius: 50%; }
.profile-url { font-size: 13px; font-weight: 700; color: #000; margin-bottom: 15px; word-break: break-all; }
.profile-url a { transition: color 0.2s; } .profile-url a:hover { color: #FF6B00; }
.profile-tags { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 20px; }
.profile-tag { background: #F4F4F4; border-radius: 4px; padding: 4px 10px; font-size: 12px; font-weight: 800; color: #444; }
.profile-recent-label { font-size: 12px; font-weight: 800; color: #888; margin-bottom: 10px; }
.profile-recent-list { display: flex; flex-direction: column; gap: 8px; }
.profile-recent-item { background: #F9F9F9; border-radius: 8px; padding: 8px 12px; font-size: 13px; font-weight: 700; color: #333; line-height: 1.4; border: 1px solid transparent; word-break: break-word; }
@keyframes p-spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }
#js-p-likes { position: relative; top: 4px; }

/* --- 顶部提示框 --- */
.sketch-toast { position: fixed; top: 20px; left: 50%; transform: translateX(-50%) translateY(-20px) scale(0.95); background: #fff; border: 2px solid #000; color: #000; padding: 10px 24px; border-radius: 30px; font-size: 14px; font-weight: 800; box-shadow: 4px 4px 0 rgba(0,0,0,0.15); z-index: 100005; opacity: 0; pointer-events: none; transition: all 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.28); display: flex; align-items: center; gap: 8px; white-space: nowrap; }
.sketch-toast.is-visible { opacity: 1; transform: translateX(-50%) translateY(0) scale(1); }
.sketch-toast.is-error { background: #FEF2F2; border-color: #DC2626; color: #DC2626; box-shadow: 4px 4px 0 rgba(220, 38, 38, 0.15); }
.sketch-toast.is-success { background: #F0FDF4; border-color: #059669; color: #059669; box-shadow: 4px 4px 0 rgba(5, 150, 105, 0.15); }
.sketch-toast svg { flex-shrink: 0; }

/* === 动态、分页与其他组件 === */

/* --- 动态与推荐阅读 --- */
.moments-container { max-width: 600px; margin: 0 auto; padding: 45px 16px 20px; } 
.m-title-row { display: flex; align-items: baseline; gap: 10px; margin-bottom: 10px; } 
.m-main-title { font-size: 24px; font-weight: 900; color: var(--text-main); letter-spacing: 1px; }
.agg-card-wrapper { position: relative; margin-bottom: 50px; z-index: 1; margin-top: 15px; }
.agg-banner-img { position: absolute; right: 0px; top: -71px; width: 140px; z-index: 2; pointer-events: none; transform-origin: bottom right; transform: rotate(8deg); filter: drop-shadow(2px 4px 6px rgba(0,0,0,0.08)); }
.agg-card { background: var(--bg-color); border: 3px solid var(--border-color); border-radius: 16px; box-shadow: none; padding: 24px 20px 30px; position: relative; overflow: hidden; }
.agg-list { display: flex; flex-wrap: wrap; gap: 12px 20px; }
.agg-item { display: inline-flex; align-items: center; font-size: 15px; font-weight: 800; color: var(--text-main); text-decoration: none; transition: transform 0.2s; white-space: nowrap; max-width: 100%; overflow: hidden; }
.agg-item:hover { transform: translateX(2px); text-decoration: underline; }
.agg-item-prefix { font-weight: 900; margin-right: 6px; }
.agg-item-title { overflow: hidden; text-overflow: ellipsis; }
.agg-new-tag { background: #ff9a9e; color: #fff; font-size: 10px; font-weight: 900; padding: 1px 5px; border-radius: 4px; margin-left: 6px; transform: skewX(-5deg); box-shadow: 1px 1px 0 var(--border-color); border: 1px solid var(--border-color);}
.agg-refresh-btn { position: absolute; bottom: 0; right: 0; background: #fad0c4; color: #000; border-top-left-radius: 12px; border-bottom-right-radius: 10px; padding: 6px 16px; font-size: 12px; font-weight: 900; cursor: pointer; border-left: 3px solid var(--border-color); border-top: 3px solid var(--border-color); border-bottom: none; border-right: none; transition: background 0.2s; }
.agg-refresh-btn:hover { background: #ffb3b3; } .agg-refresh-btn:active { background: #ff9a9e; }
.moment-item { margin-bottom: 30px; padding-bottom: 30px; border-bottom: 1px dashed #ccc; }
.moment-item:last-child { border-bottom: none; }
.moment-header { display: flex; align-items: center; gap: 12px; margin-bottom: 12px; }
.moment-avatar { width: 36px; height: 36px; border-radius: 50%; border: 2px solid var(--border-color); object-fit: cover; }
.moment-meta { display: flex; flex-direction: column; }
.moment-author { font-size: 16px; font-weight: 900; color: var(--text-main); }
.moment-time { font-size: 12px; font-weight: 700; color: var(--text-sec); margin-top: 2px; }
.moment-content { font-size: 15px; font-weight: 800; color: var(--text-main); line-height: 1.6; margin-bottom: 12px; word-break: break-word;}
.m-publish-box { background: #f9f9faf0; border: 2px dashed var(--border-color); border-radius: 12px; padding: 16px; margin-bottom: 40px; }
.m-pub-textarea { width: 100%; min-height: 80px; resize: none; border: 2px solid var(--border-color); border-radius: 8px; padding: 10px; font-weight: 700; font-size: 14px; outline: none; margin-bottom: 10px; background: var(--bg-color); color: var(--text-main); }
.m-pub-tools { display: flex; justify-content: space-between; align-items: flex-end; }
.m-img-preview { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 10px; }
.m-img-thumb { width: 60px; height: 60px; border-radius: 6px; border: 2px solid var(--border-color); object-fit: cover; }

/* --- 翻页与特殊链接卡片 --- */
.pagination { display: flex; justify-content: center; align-items: center; gap: 16px; margin: 40px 0; font-family: var(--font-base); }
.pagination__link { font-size: 14px; font-weight: 800; color: var(--text-main); border: 2px solid var(--border-color); padding: 6px 16px; border-radius: 6px; box-shadow: 3px 3px 0 var(--border-color); transition: all 0.1s; background: var(--bg-color); text-decoration: none !important; }
.pagination__link:hover { background: var(--text-main); color: var(--bg-color); transform: translate(-1px, -1px); box-shadow: 4px 4px 0 rgba(0,0,0,0.5); }
.pagination__link:active { transform: translate(3px, 3px); box-shadow: 0 0 0 var(--border-color); }
.pagination__info { font-weight: 900; font-size: 15px; color: var(--text-sec); background: #f4f4f5; padding: 6px 12px; border-radius: 6px; border: 2px dashed #ccc; }

.sketch-link-card { display: flex; align-items: center; gap: 14px; padding: 12px 16px; margin: 24px 0; border: 2px solid var(--border-color); border-radius: 12px; background: #fffaf0; box-shadow: 4px 4px 0 rgba(0,0,0,0.1); transition: transform 0.2s, box-shadow 0.2s; text-decoration: none !important; color: var(--text-main) !important; }
.sketch-link-card:hover { transform: translate(-2px, -2px); box-shadow: 6px 6px 0 rgba(0,0,0,0.2); background: var(--bg-color); }
.slc-logo { width: 48px !important; height: 48px !important; border-radius: 50% !important; border: 2px solid var(--border-color) !important; object-fit: cover; flex-shrink: 0; margin: 0 !important; box-shadow: none !important; }
.slc-info { flex: 1; min-width: 0; display: flex; flex-direction: column; justify-content: center; }
.slc-title { font-size: 15px; font-weight: 900; margin-bottom: 2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; line-height: 1.2; }
.slc-desc { font-size: 12px; color: var(--text-sec); font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; line-height: 1.2; }
@media (max-width: 600px) { .sketch-link-card { padding: 10px 12px; gap: 10px; } .slc-logo { width: 40px !important; height: 40px !important; } .slc-title { font-size: 14px; } }

/* --- 开发者工具警告弹窗 --- */
.f12-warning-modal { position: fixed; inset: 0; z-index: 99999; display: flex; align-items: center; justify-content: center; background: rgba(0, 0, 0, 0.65); backdrop-filter: blur(5px); visibility: hidden; opacity: 0; transition: all 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.28); }
.f12-warning-modal.is-active { visibility: visible; opacity: 1; }
.f12-warning-content { position: relative; width: 360px; max-width: 90%; background: #FFFDF5; border: 4px solid var(--border-color); border-radius: 24px; padding: 40px 30px 140px; box-shadow: 12px 12px 0 rgba(0, 0, 0, 0.25); text-align: center; transform: translateY(30px) scale(0.95); transition: transform 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275); display: flex; flex-direction: column; overflow: visible !important; }
.f12-warning-modal.is-active .f12-warning-content { transform: translateY(0) scale(1); }
.f12-warning-title { font-size: 28px; font-weight: 900; color: var(--text-main); margin-bottom: 24px; letter-spacing: 1px; line-height: 1.2; }
.f12-warning-desc { font-size: 16px; font-weight: 700; color: var(--text-sec); line-height: 1.8; text-align: justify; margin-bottom: 0; z-index: 2; position: relative; }
.f12-warning-bottom { position: static; }
.f12-warning-sign { position: absolute; bottom: 30px; left: 30px; display: flex; flex-direction: column; align-items: flex-start; z-index: 5; text-align: left; }
.f12-warning-brand { font-size: 20px; font-weight: 900; color: var(--text-main); margin-bottom: 4px; letter-spacing: -0.5px; }
.f12-warning-signature { height: 40px; width: auto; display: block; }
.f12-warning-banner { position: absolute; bottom: -15px; right: -25px; width: 180px; height: auto; z-index: 10; transform-origin: bottom right; transition: transform 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275); }
.f12-warning-content:hover .f12-warning-banner { transform: scale(1.05) rotate(2deg); }
.f12-warning-close { position: absolute; top: 16px; right: 16px; width: 36px; height: 36px; background: var(--bg-color); border: 3px solid var(--border-color); border-radius: 50%; font-size: 20px; font-weight: 900; cursor: pointer; display: flex; align-items: center; justify-content: center; box-shadow: 2px 2px 0 var(--border-color); transition: all 0.2s; padding: 0; z-index: 20; color: var(--text-main); }
.f12-warning-close:hover { background: var(--text-main); color: var(--bg-color); transform: rotate(90deg); border-color: var(--border-color); }
@media (max-width: 480px) { .f12-warning-content { width: 85%; padding: 30px 20px 120px; border-width: 3px; } .f12-warning-title { font-size: 24px; } .f12-warning-desc { font-size: 14px; } .f12-warning-banner { width: 140px; bottom: -15px; right: -15px; } .f12-warning-sign { left: 20px; bottom: 25px; } }

/* --- 音乐播放器 --- */
.music-page-container { max-width: 600px; margin: 60px auto 140px; padding: 0 16px; }
.music-search-card { background: #FFFDF5; border: 3px solid var(--border-color); border-radius: 12px; height: 48px; display: flex; align-items: center; padding: 0 16px; position: relative; box-shadow: 4px 4px 0 rgba(0,0,0,0.15); margin-bottom: 20px; z-index: 10; }
.music-search-card input { border: none; background: transparent; font-size: 15px; font-weight: 800; width: 65%; outline: none; color: var(--text-main); }
.music-search-card input::placeholder { color: #aaa; }
.music-banner-ss { position: absolute; right: -5px; bottom: -3px; width: 110px; height: auto; cursor: pointer; z-index: 5; transition: transform 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275); filter: drop-shadow(2px 4px 0 rgba(0,0,0,0.1)); }
.music-banner-ss:hover { transform: scale(1.05) rotate(3deg); }
.music-history-box { margin-bottom: 10px; }
.music-history-box h3 { font-size: 18px; font-weight: 900; margin-bottom: 12px; color: var(--text-main); }
.music-history-tags { display: flex; flex-wrap: wrap; gap: 10px; }
.music-tag { background: var(--bg-color); border: 2px solid var(--border-color); border-radius: 8px; padding: 6px 14px; font-size: 13px; font-weight: 800; color: var(--text-main); cursor: pointer; transition: all 0.2s; box-shadow: 2px 2px 0 rgba(0,0,0,0.1); }
.music-tag:hover { background: var(--text-main); color: var(--bg-color); transform: translateY(-2px); }
.music-results-card { background: #FFFDF5; border: 3px solid var(--border-color); border-radius: 16px; padding: 30px 20px 20px; position: relative; box-shadow: 6px 6px 0 rgba(0,0,0,0.15); margin-top: 55px; }
.music-banner-jg1 { position: absolute; left: -5px; top: -28px; width: 70px; height: auto; z-index: 2; pointer-events: none; filter: drop-shadow(2px 4px 0 rgba(0,0,0,0.1)); }
.music-results-header { font-size: 12px; font-weight: 800; color: var(--text-sec); margin-bottom: 24px; padding-bottom: 15px; border-bottom: 2px dashed #ddd; position: relative; z-index: 3; padding-left: 80px; padding-right: 10px; }
.music-results-header-text { display: block; width: 100%; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; text-align: right; }
.music-list { display: flex; flex-direction: column; gap: 12px; position: relative; z-index: 3; }
.music-item { background: #FFEBEB; border: 2px solid var(--border-color); border-radius: 12px; padding: 10px 14px; display: flex; align-items: center; gap: 12px; cursor: pointer; transition: transform 0.2s, box-shadow 0.2s; }
.music-item:hover { transform: translateX(4px); box-shadow: 2px 2px 0 rgba(0,0,0,0.1); }
.music-item-cover { width: 44px; height: 44px; border-radius: 50%; border: 2px solid var(--border-color); object-fit: cover; flex-shrink: 0; background: #222; }
.music-item-info { flex: 1; overflow: hidden; }
.music-item-name { font-size: 15px; font-weight: 900; color: var(--text-main); white-space: nowrap; overflow: hidden; text-overflow: ellipsis;}
.music-item-artist { font-size: 11px; font-weight: 700; color: var(--text-sec); margin-top: 2px; }
.music-item-play-btn { width: 32px; height: 32px; transition: transform 0.1s; flex-shrink: 0; border-radius: 50%; border: 2px solid var(--border-color); background: var(--bg-color); padding: 6px; color: var(--text-main); }
.music-item:active .music-item-play-btn { transform: scale(0.9); }
.music-player-fixed { position: fixed; bottom: 20px; left: 50%; transform: translateX(-50%); width: 90%; max-width: 600px; background: #FFFDF5; border: 3px solid var(--border-color); border-radius: 50px; display: flex; align-items: center; padding: 8px 16px; box-shadow: 4px 4px 0 rgba(0,0,0,0.2); z-index: 9999; }
.music-banner-bftg { position: absolute; right: -12px; bottom: -5px; width: 95px; height: auto; z-index: 2; pointer-events: none; filter: drop-shadow(2px 4px 0 rgba(0,0,0,0.1)); }
.player-avatar { width: 44px; height: 44px; border-radius: 50%; border: 2px solid var(--border-color); object-fit: cover; background: #222; animation: cd-spin 5s linear infinite; animation-play-state: paused; position: relative; z-index: 3; }
.player-avatar.is-playing { animation-play-state: running; }
.player-info-box { flex: 1; margin-left: 12px; margin-right: 5px; overflow: hidden; position: relative; z-index: 3; }
.player-current-name { font-size: 14px; font-weight: 900; color: var(--text-main); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.player-current-artist { font-size: 11px; font-weight: 700; color: var(--text-sec); }
.player-control-btn { width: 40px; height: 40px; cursor: pointer; transition: transform 0.1s; position: relative; z-index: 5; margin-right: 30px; border-radius: 50%; border: 2px solid var(--border-color); background: var(--bg-color); padding: 8px; color: var(--text-main); }
.player-control-btn:active { transform: scale(0.9); }
.music-loading { text-align: center; padding: 30px; font-weight: 800; color: #666; }

/* === 手机端显示适配 === */
.site-logo span, .nav-link { white-space: nowrap; }
@media (max-width: 600px) {
    .site-header { padding: 10px 0; }
    .header-inner { gap: 10px; }
    .site-logo { flex-shrink: 0; gap: 8px; }
    .site-logo img { width: 32px; height: 32px; }
    .site-logo span { font-size: 16px; }
    .site-nav { flex: 1; justify-content: flex-end; gap: 14px; overflow-x: auto; -webkit-overflow-scrolling: touch; padding-bottom: 2px; scrollbar-width: none; }
    .site-nav::-webkit-scrollbar { display: none; }
    .nav-link { font-size: 14px; }
    .banner-wrapper { height: 180px; border-radius: 8px; }
    .banner-title { font-size: 16px; bottom: 24px; padding: 0 10px; }
    .post-card { gap: 12px; padding: 10px; }
    .post-cover-art { width: 100px; height: 75px; margin-left: 2px; }
    .post-title { font-size: 15px; margin-bottom: 4px; }
    .post-excerpt { font-size: 12px; margin-bottom: 6px; }
}
@media (max-width: 360px) {
    .post-cover-art { width: 85px; height: 64px; }
    .site-nav { justify-content: flex-start; gap: 12px; } 
}


/* =========================================================
   ★ 核心：黑夜模式与悬浮按钮全局覆盖
   ========================================================= */

/* --- 1. 黑夜模式颜色配置 --- */
[data-theme="dark"] {
    --bg-color: #1a1b1e;
    --text-main: #d1d5db; /* 柔和的白色，避免夜间刺眼 */
    --text-sec: #9ca3af;
    --border-color: #4a4d50;
    --card-shadow: 3px 3px 0px #0a0a0a;
}

/* --- 2. 强制指定黑色背景的元素 --- */
[data-theme="dark"] .post-card, 
[data-theme="dark"] .banner-wrapper, 
[data-theme="dark"] .sketch-input, 
[data-theme="dark"] .sketch-btn, 
[data-theme="dark"] .link-card, 
[data-theme="dark"] .site-footer, 
[data-theme="dark"] .sketch-modal-content, 
[data-theme="dark"] .music-search-card, 
[data-theme="dark"] .music-results-card, 
[data-theme="dark"] .music-player-fixed, 
[data-theme="dark"] .music-item, 
[data-theme="dark"] .town-panel, 
[data-theme="dark"] .menu-toggle, 
[data-theme="dark"] .card, 
[data-theme="dark"] .town-scroll-paper, 
[data-theme="dark"] .link-drawer, 
[data-theme="dark"] .drawer-input, 
[data-theme="dark"] .sketch-toast, 
[data-theme="dark"] .ms-header, 
[data-theme="dark"] .ms-btn-face, 
[data-theme="dark"] .admin-logs-panel, 
[data-theme="dark"] .admin-logs-card, 
[data-theme="dark"] .profile-card-content, 
[data-theme="dark"] .profile-avatar-img, 
[data-theme="dark"] .disclaimer-symbol, 
[data-theme="dark"] .disclaimer-popup, 
[data-theme="dark"] .captcha-img, 
[data-theme="dark"] .post-nav__link, 
[data-theme="dark"] .f12-warning-close, 
[data-theme="dark"] .f12-warning-content, 
[data-theme="dark"] .drawer-submit-btn,
[data-theme="dark"] .agg-card,
[data-theme="dark"] .m-publish-box,
[data-theme="dark"] .m-pub-textarea,
[data-theme="dark"] .emote-menu,
[data-theme="dark"] .feedback-action-row .captcha-group { 
    background-color: #242629 !important; 
    color: var(--text-main);
}

/* --- 3. 边框与滤镜微调 --- */
[data-theme="dark"] .disclaimer-popup::before, 
[data-theme="dark"] .town-bubble::after { 
    border-top-color: #242629 !important; 
}
[data-theme="dark"] .town-container { background-color: #1a202c; }
[data-theme="dark"] .prose img { background-color: #242629; }
[data-theme="dark"] .lb-overlay { background: rgba(0,0,0,0.95); }

/* 黑夜模式下图标反色 */
[data-theme="dark"] .signature-img,
[data-theme="dark"] .footer-town-badge img,
[data-theme="dark"] .footer-no-f12 img,
[data-theme="dark"] .profile-like-icon,
[data-theme="dark"] .log-like-btn img { 
    filter: invert(1) hue-rotate(180deg); 
    opacity: 0.9;
}

/* --- 4. 文字颜色提亮及模块盲区修补 --- */
[data-theme="dark"] .prose, 
[data-theme="dark"] .post-excerpt,
[data-theme="dark"] .comment-text,
[data-theme="dark"] .archive-item__title,
[data-theme="dark"] .moment-content,
[data-theme="dark"] .agg-item,
[data-theme="dark"] .m-main-title {
    color: var(--text-main) !important;
}

/* 标题级加亮（改用柔和白，拒绝刺眼纯白） */
[data-theme="dark"] .prose strong,
[data-theme="dark"] .prose b,
[data-theme="dark"] .prose h1,
[data-theme="dark"] .prose h2,
[data-theme="dark"] .prose h3,
[data-theme="dark"] .post-title,
[data-theme="dark"] .comment-author {
    color: #e5e5e5 !important; 
}

/* ★ 填补深色模式下所有浅色硬编码的盲区 */
[data-theme="dark"] .prose th { background-color: #2d3035 !important; color: #e5e5e5 !important; border-bottom-color: var(--border-color); }
[data-theme="dark"] .prose tr:nth-child(even) { background-color: #1f2124 !important; }
[data-theme="dark"] .prose tr:hover { background-color: #2a2d32 !important; }
[data-theme="dark"] .prose td { color: var(--text-main) !important; border-bottom-color: var(--border-color); }

[data-theme="dark"] .profile-name, 
[data-theme="dark"] .profile-url, 
[data-theme="dark"] .town-scroll-paper h3, 
[data-theme="dark"] .town-scroll-paper p, 
[data-theme="dark"] .log-date-title, 
[data-theme="dark"] .fb-info b { 
    color: #e5e5e5 !important; 
}

[data-theme="dark"] .profile-recent-item { 
    background-color: #1a1b1e !important; 
    border-color: #4a4d50 !important; 
    color: var(--text-main) !important; 
}

[data-theme="dark"] .profile-tag { 
    background-color: #1a1b1e !important; 
    color: var(--text-sec) !important; 
    border-color: #4a4d50 !important; 
}

[data-theme="dark"] .log-box { 
    background-color: #1a1b1e !important; 
    border-color: var(--border-color) !important; 
    color: var(--text-main) !important; 
}

[data-theme="dark"] .town-scroll-paper { 
    background-color: #242629 !important; 
    border-color: var(--border-color) !important; 
}

[data-theme="dark"] .prose blockquote {
    background-color: #2a2a2a;
    color: #cccccc;
    border-left-color: #666;
}

[data-theme="dark"] .prose strong {
    background: linear-gradient(120deg, transparent 60%, rgba(252, 211, 77, 0.25) 60%);
}

/* 日夜切换时的丝滑过渡动画 */
body, .site-header, .site-footer, .post-card, .banner-wrapper, .sketch-input, .sketch-btn, .link-card, .agg-card, .m-publish-box {
    transition: background-color 0.3s ease, color 0.3s ease, border-color 0.3s ease, box-shadow 0.3s ease;
}

/* --- 5. 右下角悬浮按钮 --- */
.sketch-fab-group { position: fixed; right: 24px; bottom: 40px; display: flex; flex-direction: column; gap: 12px; z-index: 999; }
.sketch-fab-btn { width: 44px; height: 44px; border-radius: 50%; background: var(--bg-color); border: var(--border-width) solid var(--border-color); box-shadow: 2px 2px 0 var(--border-color); display: flex; align-items: center; justify-content: center; color: var(--text-main); cursor: pointer; transition: all 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275); outline: none; }
.sketch-fab-btn:hover { transform: translate(-2px, -2px); box-shadow: 4px 4px 0 var(--border-color); }
.sketch-fab-btn:active { transform: translate(2px, 2px); box-shadow: none; }
#js-back-top { opacity: 0; pointer-events: none; transform: translateY(20px); }
#js-back-top.is-visible { opacity: 1; pointer-events: auto; transform: translateY(0); }

/* 太阳与月亮图标切换 */
[data-theme="dark"] #icon-moon { display: none !important; }
[data-theme="dark"] #icon-sun { display: block !important; }

/* 悬浮按钮在手机上的位置微调 */
@media(max-width: 600px) { 
    .sketch-fab-group { right: 16px; bottom: 20px; } 
    .sketch-fab-btn { width: 38px; height: 38px; } 
}

/* --- 底部备案信息 --- */
.footer-beian { display: flex; align-items: center; flex-wrap: wrap; gap: 16px; margin-bottom: 12px; font-size: 13px; font-weight: 800; }
.beian-link { display: inline-flex; align-items: center; gap: 4px; color: var(--text-main); transition: opacity 0.2s cubic-bezier(0.175, 0.885, 0.32, 1.275); text-decoration: none !important; }
.beian-link:hover { opacity: 0.7; transform: translateY(-1px); }
.beian-icon { height: 16px; width: auto; display: block; object-fit: contain; }
@media (max-width: 600px) {
    .footer-beian { gap: 12px; margin-bottom: 10px; font-size: 12px; }
    .beian-icon { height: 14px; }
}


.album-container { max-width: 800px; margin: 0 auto 60px; padding: 20px 16px; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; }
.album-tabs { display: flex; gap: 24px; margin-bottom: 30px; border-bottom: 2px solid var(--border-color, #eee); padding-bottom: 12px; }
.album-tab { background: transparent; border: none; font-size: 16px; font-weight: 800; color: var(--text-sec, #888); cursor: pointer; transition: all 0.2s; padding: 6px 10px; border-radius: 6px; display: flex; align-items: center; gap: 6px; outline: none; }
.album-tab i { font-size: 20px; font-weight: normal; }
.album-tab:hover { color: var(--text-main, #000); background: rgba(0,0,0,0.03); }
.album-tab.active { color: var(--text-main, #000); }
.cal-year-title { text-align: center; font-size: 28px; font-weight: 900; margin: 40px 0 20px; color: var(--text-main, #333); letter-spacing: 1px;}
.cal-month-title { text-align: center; font-size: 24px; font-weight: 800; margin-bottom: 24px; color: var(--text-main, #000); }
.cal-month-title span { font-size: 13px; color: var(--text-sec, #999); font-weight: 500; margin-left: 8px; }
.gal-month-title { text-align: center; font-size: 20px; font-weight: 800; margin-bottom: 20px; margin-top: 40px; color: var(--text-main, #000); }
.gal-month-title span { font-size: 13px; color: var(--text-sec, #999); font-weight: 500; margin-left: 6px; }
.album-view-section { display: none; animation: fadeIn 0.3s ease-out; }
.album-view-section.active { display: block; }
@keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }
.cal-week-header { display: grid; grid-template-columns: repeat(7, 1fr); text-align: center; font-size: 13px; font-weight: 500; color: var(--text-sec, #888); margin-bottom: 16px; }
.cal-days-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 6px; margin-bottom: 50px; }
.cal-day { aspect-ratio: 1; border-radius: 8px; display: flex; align-items: center; justify-content: center; position: relative; overflow: hidden; }
.cal-day.empty-slot { background: transparent; }
.cal-day.no-pic { background: transparent; color: var(--text-main, #333); font-size: 18px; font-weight: 500; }
.cal-day.has-pic { cursor: pointer; transition: transform 0.2s; box-shadow: 2px 2px 8px rgba(0,0,0,0.05); }
.cal-day.has-pic:hover { transform: translateY(-2px); box-shadow: 2px 4px 12px rgba(0,0,0,0.15); }
.cal-day.has-pic img { width: 100%; height: 100%; object-fit: cover; filter: brightness(0.85); transition: filter 0.2s; }
.cal-day.has-pic:hover img { filter: brightness(1); }
.cal-date-center { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; color: #fff; font-size: 24px; font-weight: 700; text-shadow: 0 1px 4px rgba(0,0,0,0.6); pointer-events: none; z-index: 2; }
.cal-count-badge { position: absolute; bottom: 4px; right: 4px; font-size: 10px; font-weight: 600; color: #fff; background: rgba(0,0,0,0.5); padding: 1px 5px; border-radius: 4px; z-index: 2; pointer-events: none; backdrop-filter: blur(2px); }
.gal-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; margin-bottom: 50px; }
@media (min-width: 600px) { .gal-grid { grid-template-columns: repeat(4, 1fr); gap: 10px; } }
.gal-item { aspect-ratio: 1; border-radius: 8px; overflow: hidden; cursor: pointer; transition: transform 0.2s, opacity 0.2s; background: #eee; }
.gal-item:hover { transform: scale(0.98); opacity: 0.9; }
.gal-item img { width: 100%; height: 100%; object-fit: cover; display: block; }
.hidden-gal-item { display: none; }
.gal-more-cover { position: relative; cursor: pointer; border-radius: 8px; overflow: hidden; aspect-ratio: 1; transition: transform 0.2s; background: #000; }
.gal-more-cover:hover { transform: scale(0.98); }
.gal-more-cover img { width: 100%; height: 100%; object-fit: cover; opacity: 0.5; transition: opacity 0.2s; }
.gal-more-cover:hover img { opacity: 0.3; }
.gal-more-text { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; color: #fff; font-size: 16px; font-weight: 600; pointer-events: none; }
.pv-overlay { position: fixed; inset: 0; background: #111; z-index: 100000; display: flex; flex-direction: column; opacity: 0; visibility: hidden; transition: opacity 0.3s; font-family: -apple-system, sans-serif; box-sizing: border-box; }
.pv-overlay * { box-sizing: border-box; }
.pv-overlay.is-active { opacity: 1; visibility: visible; }
.pv-top { padding: 15px 20px; text-align: center; position: relative; background: #111; flex-shrink: 0; display: flex; flex-direction: column; justify-content: center; align-items: center; min-height: 70px; }
.pv-title { color: #fff; font-size: 18px; font-weight: 800; margin-bottom: 6px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 80%; }
.pv-time { color: #aaa; font-size: 12px; font-weight: 600; }
.pv-close { position: absolute; right: 15px; top: 50%; transform: translateY(-50%); color: #fff; font-size: 28px; cursor: pointer; transition: color 0.2s; opacity: 0.8; }
.pv-close:hover { color: #f53f3f; opacity: 1; }
.pv-center { flex: 1; min-height: 0; position: relative; display: flex; align-items: center; justify-content: center; overflow: hidden; background: #000; }
.pv-img { max-width: 100%; max-height: 100%; object-fit: contain; opacity: 0; transform: scale(0.95); transition: opacity 0.2s, transform 0.2s; }
.pv-img.loaded { opacity: 1; transform: scale(1); }
.pv-nav { position: absolute; top: 0; bottom: 0; width: 60px; display: flex; align-items: center; justify-content: center; color: rgba(255,255,255,0); font-size: 40px; cursor: pointer; transition: background 0.2s; z-index: 10; }
.pv-nav:hover { background: rgba(0,0,0,0.2); color: rgba(255,255,255,0.5); }
.pv-prev { left: 0; } .pv-next { right: 0; }
.pv-bottom { background: #111; display: flex; flex-direction: column; align-items: center; flex-shrink: 0; padding: 20px 0; width: 100%; }
.pv-link-btn { border: 1px solid #ccc; color: #fff; font-size: 13px; font-weight: 500; padding: 8px 24px; border-radius: 6px; margin-bottom: 24px; transition: all 0.2s; text-decoration: none; display: inline-block; }
.pv-link-btn:hover { background: #fff; color: #000; border-color: #fff; }
.pv-thumb-track { display: flex; width: 100%; overflow-x: auto; scroll-behavior: smooth; scrollbar-width: none; padding: 0 calc(50vw - 20px); }
.pv-thumb-track::-webkit-scrollbar { display: none; }
.pv-thumb { width: 40px; height: 40px; object-fit: cover; flex-shrink: 0; filter: brightness(0.3); cursor: pointer; transition: filter 0.2s; margin: 0 1px; border: none; }
.pv-thumb.active { filter: brightness(1); }

/* --- 相册暗黑模式增强适配 --- */
[data-theme="dark"] .cal-year-title, 
[data-theme="dark"] .cal-month-title, 
[data-theme="dark"] .gal-month-title,
[data-theme="dark"] .cal-day.no-pic { color: #e5e5e5; }
[data-theme="dark"] .album-tab { color: #888; }
[data-theme="dark"] .album-tab.active { color: #e5e5e5; }
[data-theme="dark"] .album-tab:hover { background: rgba(255,255,255,0.05); }
[data-theme="dark"] .cal-day.has-pic { box-shadow: 2px 2px 8px rgba(0,0,0,0.4); border-color: #333; }
[data-theme="dark"] .gal-item { border-color: #333; background: #242629; }
[data-theme="dark"] .gal-more-cover { border-color: #333; }
