/* ========================================
   此生似梦 — 梦幻美学 WordPress 博客主题
   ======================================== */

/* === CSS 变量 === */
:root {
  --dream-purple: #9B7ED8;
  --dream-violet: #7C5CBF;
  --dream-deep: #4A2D7A;
  --dream-rose: #E8A0BF;
  --dream-pink: #F2B5D4;
  --dream-lavender: #D4C5F0;
  --dream-mint: #A8E6CF;
  --dream-gold: #D4A574;
  --dream-peach: #FADADD;

  --gradient-hero: linear-gradient(135deg, #667eea 0%, #764ba2 50%, #f093fb 100%);
  --gradient-hero-dark: linear-gradient(135deg, #1a1a2e 0%, #16213e 40%, #0f3460 100%);
  --gradient-card: linear-gradient(135deg, rgba(255,255,255,0.9) 0%, rgba(255,255,255,0.7) 100%);
  --gradient-card-dark: linear-gradient(135deg, rgba(30,30,50,0.9) 0%, rgba(20,20,40,0.7) 100%);
  --gradient-sidebar: linear-gradient(180deg, rgba(155,126,216,0.08) 0%, rgba(232,160,191,0.05) 100%);
  --gradient-tag: linear-gradient(135deg, rgba(155,126,216,0.15) 0%, rgba(232,160,191,0.12) 100%);

  --glass-bg: rgba(255, 255, 255, 0.72);
  --glass-bg-dark: rgba(20, 20, 40, 0.75);
  --glass-border: rgba(255, 255, 255, 0.3);
  --glass-border-dark: rgba(255, 255, 255, 0.08);
  --glass-shadow: 0 8px 32px rgba(74, 45, 122, 0.1);
  --glass-shadow-hover: 0 12px 48px rgba(74, 45, 122, 0.18);

  --color-primary: #9B7ED8;
  --color-primary-light: #B8A4E8;
  --color-primary-dark: #6B4FB8;
  --color-accent: #E8A0BF;
  --color-accent-light: #F5D5E6;
  --color-surface: #F8F6FC;
  --color-bg: #F8F6FC;
  --color-paper: #FFFFFF;
  --color-text: #2D1B4E;
  --color-text-secondary: #6B5B8A;
  --color-text-muted: #9B8DB8;
  --color-border: #E8E0F2;
  --color-border-light: #F2ECF8;
  --color-shadow: rgba(74, 45, 122, 0.06);
  --color-shadow-hover: rgba(74, 45, 122, 0.12);
  --color-bg-soft: #F1EDF8;

  --tab-color: #9B7ED8;
  --tab-glow: rgba(155, 126, 216, 0.5);

  --font-serif: 'Noto Serif SC', 'Source Han Serif SC', Georgia, serif;
  --font-sans: 'Noto Sans SC', 'PingFang SC', 'Microsoft YaHei', sans-serif;
  --font-mono: 'JetBrains Mono', 'Fira Code', monospace;

  --radius-sm: 10px;
  --radius-md: 16px;
  --radius: 16px;
  --radius-lg: 24px;
  --radius-xl: 32px;
  --radius-full: 9999px;
  --transition: 0.25s cubic-bezier(0.4, 0, 0.2, 1);
  --transition-slow: 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

/* === 深色模式 === */
.dark {
  --gradient-card: var(--gradient-card-dark);
  --glass-bg: var(--glass-bg-dark);
  --glass-border: var(--glass-border-dark);
  --glass-shadow: 0 8px 32px rgba(0, 0, 0, 0.4);
  --glass-shadow-hover: 0 12px 48px rgba(0, 0, 0, 0.55);

  --color-primary: #B8A4E8;
  --color-primary-light: #D4C5F0;
  --color-primary-dark: #9B7ED8;
  --color-accent: #F2B5D4;
  --color-accent-light: #3D2A40;
  --color-surface: #0D0B1A;
  --color-bg: #0D0B1A;
  --color-paper: #16132B;
  --color-text: #E8E0F2;
  --color-text-secondary: #B0A0D0;
  --color-text-muted: #7060A0;
  --color-border: #2A2050;
  --color-border-light: #1E1840;
  --color-bg-soft: #1A1630;
  --color-shadow: rgba(0, 0, 0, 0.4);
  --color-shadow-hover: rgba(0, 0, 0, 0.6);
}

/* === 基础重置 === */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }

body {
  font-family: var(--font-sans);
  font-size: 16px;
  line-height: 1.75;
  color: var(--color-text);
  background: var(--color-surface);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  overflow-x: hidden;
  display: flex; flex-direction: column; min-height: 100vh;
}

img { max-width: 100%; height: auto; display: block; }

pre, table, iframe, video, canvas, embed, object { max-width: 100%; }

a { color: var(--color-primary); text-decoration: none; transition: color var(--transition); }
a:hover { color: var(--color-primary-dark); }

::selection { background: rgba(155, 126, 216, 0.25); color: var(--color-primary-dark); }

/* === 可访问焦点指示 === */
:focus-visible {
  outline: 2px solid var(--color-primary);
  outline-offset: 2px;
  border-radius: 2px;
}
button:focus:not(:focus-visible),
a:focus:not(:focus-visible) { outline: none; }

/* === 梦幻背景粒子画布 === */
#particles-canvas {
  position: fixed;
  top: 0; left: 0;
  width: 100%; height: 100%;
  z-index: 0;
  pointer-events: none;
}

/* === 全局装饰光斑 === */
.bg-orb {
  position: fixed;
  border-radius: 50%;
  filter: blur(90px);
  opacity: 0.16;
  z-index: 0;
  pointer-events: none;
  animation: orbFloat 20s ease-in-out infinite;
}

.bg-orb-1 {
  width: 600px; height: 600px;
  background: radial-gradient(circle, #9B7ED8, transparent 70%);
  top: -200px; left: -200px;
  animation-delay: 0s;
}

.bg-orb-2 {
  width: 500px; height: 500px;
  background: radial-gradient(circle, #E8A0BF, transparent 70%);
  bottom: -150px; right: -150px;
  animation-delay: -7s;
}

.bg-orb-3 {
  width: 400px; height: 400px;
  background: radial-gradient(circle, #A9D8F0, transparent 70%);
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  animation-delay: -14s;
}

.dark .bg-orb { opacity: 0.08; }

/* === 晨光紫霞背景氛围（body 固定层，白天） === */
body::before {
  content: '';
  position: fixed;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  background:
    radial-gradient(100% 60% at 85% -10%, rgba(232,160,191,0.22) 0%, rgba(232,160,191,0) 55%),
    radial-gradient(90% 50% at 15% -10%, rgba(155,126,216,0.20) 0%, rgba(155,126,216,0) 55%),
    linear-gradient(180deg, #F2EDFB 0%, #F8F6FC 45%, #EFF4FB 100%);
}
.dark body::before {
  background:
    radial-gradient(100% 60% at 85% -10%, rgba(232,160,191,0.10) 0%, rgba(232,160,191,0) 55%),
    radial-gradient(90% 50% at 15% -10%, rgba(155,126,216,0.14) 0%, rgba(155,126,216,0) 55%);
}

/* 暗色模式 Hero 微调 */
.dark .hero-title {
  background: linear-gradient(135deg, #A8C0E8 0%, #B8A4E8 40%, #E8C8A0 70%, #F2B5D4 100%);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}
.dark .hero-cta { box-shadow: 0 4px 24px rgba(155, 126, 216, 0.2); }
.dark .hero-cta:hover { box-shadow: 0 8px 36px rgba(155, 126, 216, 0.35); }
.dark .hero-bg { opacity: 0.25; }

@keyframes orbFloat {
  0%, 100% { transform: translate(0, 0) scale(1); }
  25% { transform: translate(50px, -30px) scale(1.05); }
  50% { transform: translate(-20px, 40px) scale(0.95); }
  75% { transform: translate(-40px, -20px) scale(1.03); }
}

/* === 容器 === */
.container { width: 100%; max-width: 1280px; margin: 0 auto; padding: 0 24px; position: relative; z-index: 1; }

/* === 头部导航 === */
.site-header {
  position: fixed; top: 0; left: 0; right: 0; z-index: 1000;
  background: rgba(248, 246, 252, 0.78);
  backdrop-filter: blur(20px) saturate(180%);
  -webkit-backdrop-filter: blur(20px) saturate(180%);
  border-bottom: 1px solid rgba(200, 180, 230, 0.25);
  transition: all var(--transition);
}

.dark .site-header { background: rgba(13, 11, 26, 0.78); border-bottom-color: rgba(100, 80, 160, 0.2); }

.site-header.scrolled {
  background: rgba(255, 255, 255, 0.85);
  backdrop-filter: blur(24px) saturate(180%);
  box-shadow: 0 2px 20px rgba(74, 45, 122, 0.08);
  border-bottom-color: rgba(200, 180, 230, 0.4);
}

.dark .site-header.scrolled { background: rgba(20, 16, 40, 0.85); box-shadow: 0 2px 20px rgba(0, 0, 0, 0.3); }

.header-inner {
  max-width: 1280px; margin: 0 auto; padding: 0 24px;
  height: 72px; display: flex; align-items: center; justify-content: space-between;
}

.header-logo {
  font-family: var(--font-serif); font-size: 22px; font-weight: 700;
  background: linear-gradient(135deg, var(--dream-violet) 0%, var(--dream-rose) 50%, var(--dream-purple) 100%);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  letter-spacing: 0.06em;
}

.header-logo:hover {
  background: linear-gradient(135deg, var(--dream-rose) 0%, var(--dream-violet) 50%, var(--dream-pink) 100%);
  -webkit-background-clip: text;
  background-clip: text;
}

.header-nav ul { display: flex; list-style: none; gap: 4px; }

.header-nav a {
  display: inline-block; padding: 8px 18px;
  font-size: 15px; font-weight: 500;
  color: var(--color-text-secondary);
  border-radius: var(--radius-full);
  transition: all var(--transition);
}

.header-nav a:hover,
.header-nav .current-menu-item a {
  color: var(--color-primary);
  background: linear-gradient(135deg, rgba(155,126,216,0.1) 0%, rgba(232,160,191,0.08) 100%);
}

.header-actions { display: flex; align-items: center; gap: 8px; }

.theme-toggle {
  width: 42px; height: 42px;
  display: flex; align-items: center; justify-content: center;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-full);
  background: var(--glass-bg);
  backdrop-filter: blur(8px);
  color: var(--color-text-secondary);
  cursor: pointer; transition: all var(--transition);
  position: relative;
}

.theme-toggle:hover {
  border-color: var(--color-primary);
  color: var(--color-primary);
  box-shadow: 0 0 20px rgba(155, 126, 216, 0.2);
}

.theme-toggle svg { position: absolute; transition: all 0.3s ease; }
.theme-toggle .icon-sun { opacity: 1; transform: rotate(0); }
.dark .theme-toggle .icon-sun { opacity: 0; transform: rotate(90deg); }
.theme-toggle .icon-moon { opacity: 0; transform: rotate(-90deg); }
.dark .theme-toggle .icon-moon { opacity: 1; transform: rotate(0); }

/* 头部搜索 */
.search-toggle {
  width: 42px; height: 42px;
  display: flex; align-items: center; justify-content: center;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-full);
  background: var(--glass-bg);
  backdrop-filter: blur(8px);
  color: var(--color-text-secondary);
  cursor: pointer; transition: all var(--transition);
}

.search-toggle:hover {
  border-color: var(--color-primary);
  color: var(--color-primary);
  box-shadow: 0 0 20px rgba(155, 126, 216, 0.2);
}

.header-search-bar {
  position: fixed; top: 72px; left: 0; right: 0; z-index: 1000;
  padding: 0 24px;
  opacity: 0; visibility: hidden;
  transform: translateY(-16px);
  transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  pointer-events: none;
}

.header-search-bar.open {
  opacity: 1; visibility: visible;
  transform: translateY(0);
  pointer-events: auto;
}

.header-search-inner {
  max-width: 640px; margin: 0 auto;
  background: var(--glass-bg);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  border: 1px solid var(--glass-border);
  border-radius: var(--radius-lg);
  box-shadow: 0 8px 40px rgba(74, 45, 122, 0.12), 0 0 0 1px rgba(155, 126, 216, 0.08);
  padding: 6px;
  transition: box-shadow var(--transition);
}

.header-search-inner:focus-within {
  box-shadow: 0 12px 48px rgba(74, 45, 122, 0.18), 0 0 0 2px rgba(155, 126, 216, 0.15);
}

.header-search-inner .search-form {
  border: none; border-radius: calc(var(--radius-lg) - 6px);
  background: transparent;
}

.header-search-inner .search-input {
  padding: 14px 20px; font-size: 16px;
  font-family: var(--font-sans);
  flex: 1;
}

.header-search-inner .search-input::placeholder {
  color: var(--color-text-muted);
  font-style: italic;
}

.header-search-inner .search-button {
  margin: 4px;
  padding: 0 20px;
  background: linear-gradient(135deg, var(--color-primary), var(--color-accent));
  border-radius: var(--radius-md);
  color: #fff;
  font-weight: 500;
  transition: all var(--transition);
}

.header-search-inner .search-button:hover {
  opacity: 0.9;
  transform: scale(1.02);
  box-shadow: 0 4px 16px rgba(155, 126, 216, 0.3);
}

/* 搜索遮罩 */
.search-overlay {
  position: fixed; inset: 0; z-index: 999;
  background: rgba(10, 5, 20, 0.3);
  backdrop-filter: blur(2px);
  -webkit-backdrop-filter: blur(2px);
  opacity: 0; visibility: hidden;
  transition: all 0.3s ease;
  pointer-events: none;
}

.search-overlay.open {
  opacity: 1; visibility: visible;
  pointer-events: auto;
}

/* 移动端菜单 */
.mobile-menu-toggle {
  display: flex; width: 42px; height: 42px;
  flex-direction: column; align-items: center; justify-content: center; gap: 5px;
  border: 1px solid var(--color-border); border-radius: var(--radius-full);
  background: var(--glass-bg); cursor: pointer; padding: 8px;
}

.mobile-menu-toggle span {
  display: block; width: 18px; height: 2px;
  background: var(--color-text-secondary); border-radius: 2px;
  transition: all var(--transition);
}

.mobile-menu-toggle.active span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.mobile-menu-toggle.active span:nth-child(2) { opacity: 0; }
.mobile-menu-toggle.active span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

.mobile-menu {
  display: none; position: fixed; top: 72px; left: 0; right: 0; bottom: 0; z-index: 999;
  background: var(--color-surface);
  transform: translateX(100%); transition: transform var(--transition-slow);
}

.mobile-menu.open { transform: translateX(0); }
.mobile-menu-inner { padding: 32px 24px; }

.mobile-menu ul { list-style: none; }
.mobile-menu a {
  display: block; padding: 18px 0; font-size: 18px; font-weight: 500;
  color: var(--color-text); border-bottom: 1px solid var(--color-border-light);
  transition: color var(--transition);
}
.mobile-menu a:hover { color: var(--color-primary); }

/* === 主体布局（极简无侧边栏） === */
.site-main { flex: 1 0 auto; padding-top: 72px; position: relative; z-index: 1; }

.main-content { max-width: 760px; margin: 0 auto; padding: 80px 0 96px; }

/* === Hero 区域 === */
.hero-section {
  padding: 80px 24px;
  text-align: center;
  position: relative;
  min-height: 380px;
  display: flex; align-items: center; justify-content: center;
  background-color: #1a1a2e;
  overflow: hidden;
}

.hero-bg {
  position: absolute; inset: 0; z-index: 0;
  background-size: cover; background-position: center;
  opacity: 0.35;
}

.hero-overlay {
  position: absolute; inset: 0; z-index: 1;
  opacity: 0.55;
}

.hero-inner {
  position: relative; z-index: 2;
  max-width: 640px; width: 100%;
  padding: 16px 0;
}

/* 光斑装饰 */
.hero-section::before {
  content: '';
  position: absolute; z-index: 2;
  top: -50%; left: -50%;
  width: 200%; height: 200%;
  background: radial-gradient(ellipse at 30% 20%, rgba(155, 126, 216, 0.08) 0%, transparent 50%),
              radial-gradient(ellipse at 70% 60%, rgba(232, 160, 191, 0.06) 0%, transparent 50%),
              radial-gradient(ellipse at 50% 80%, rgba(168, 230, 207, 0.04) 0%, transparent 40%);
  pointer-events: none;
}

.hero-title {
  font-family: var(--font-serif);
  font-size: clamp(32px, 6vw, 56px);
  font-weight: 900;
  background: linear-gradient(135deg, #7B8FAA 0%, #9B8EC4 40%, #D4A574 70%, #E8A0BF 100%);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  letter-spacing: 0.04em;
  line-height: 1.25;
  position: relative;
  margin-bottom: 16px;
}

.hero-subtitle {
  margin-top: 16px; font-size: 17px; color: var(--color-text-secondary);
  line-height: 1.8; max-width: 520px; margin-left: auto; margin-right: auto;
}

.hero-cta {
  display: inline-block; margin-top: 28px;
  padding: 12px 36px; font-size: 15px; font-weight: 600; font-family: var(--font-sans);
  color: #fff; text-decoration: none;
  background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-accent) 100%);
  border-radius: var(--radius-full);
  transition: all var(--transition);
  box-shadow: 0 4px 20px rgba(155, 126, 216, 0.3);
}
.hero-cta:hover { transform: translateY(-2px); box-shadow: 0 8px 32px rgba(155, 126, 216, 0.45); }

.hero-decorations {
  display: flex; justify-content: center; gap: 16px; margin-top: 48px;
}

.hero-deco-dot {
  width: 8px; height: 8px; border-radius: 50%;
  background: linear-gradient(135deg, var(--dream-purple), var(--dream-rose));
  animation: heroDotPulse 2s ease-in-out infinite;
}

.hero-deco-dot:nth-child(2) { animation-delay: 0.3s; width: 12px; height: 12px; }
.hero-deco-dot:nth-child(3) { animation-delay: 0.6s; }
.hero-deco-dot:nth-child(4) { animation-delay: 0.9s; width: 14px; height: 14px; }
.hero-deco-dot:nth-child(5) { animation-delay: 1.2s; }

@keyframes heroDotPulse {
  0%, 100% { opacity: 0.4; transform: scale(1); }
  50% { opacity: 1; transform: scale(1.6); }
}

/* === Hero 轮播 === */
.hero-slide {
  position: absolute; inset: 0; z-index: 1;
  display: flex; align-items: center; justify-content: center;
  opacity: 0; visibility: hidden;
  transition: opacity 0.6s ease, visibility 0.6s ease;
}
.hero-slide.is-active { opacity: 1; visibility: visible; }

.hero-slide .hero-bg {
  opacity: 0.35;
  transition: transform 0.8s ease;
}
.hero-slide.has-link:hover .hero-bg { transform: scale(1.03); }

.hero-slide-link {
  position: absolute; inset: 0; z-index: 4;
  cursor: pointer;
}

/* hover 反馈：极淡提亮 */
.hero-slide.has-link::after {
  content: '';
  position: absolute; inset: 0; z-index: 5;
  pointer-events: none;
  background: linear-gradient(180deg, rgba(255,255,255,0.03) 0%, rgba(255,255,255,0.10) 100%);
  opacity: 0;
  transition: opacity 0.5s ease;
}
.hero-slide.has-link:hover::after { opacity: 1; }

/* 圆点指示器 */
.hero-indicators {
  position: absolute; bottom: 20px; left: 50%; transform: translateX(-50%);
  z-index: 6; display: flex; gap: 10px; align-items: center;
}
.hero-dot {
  width: 9px; height: 9px; padding: 0; border: none; border-radius: 50%;
  background: rgba(255,255,255,0.4);
  cursor: pointer;
  transition: all 0.3s ease;
}
.hero-dot:hover { background: rgba(255,255,255,0.8); }
.hero-dot.is-active {
  width: 22px; border-radius: 6px;
  background: linear-gradient(135deg, var(--dream-purple), var(--dream-rose));
}

/* === 页面标题 === */
.posts-header { margin-bottom: 48px; }

.page-title {
  font-family: var(--font-serif);
  font-size: 32px; font-weight: 700; color: var(--color-text);
  letter-spacing: 0.03em;
}

.archive-description { margin-top: 8px; color: var(--color-text-secondary); font-size: 15px; }

/* === 特色文章(首篇大卡片) === */
.post-card.featured {
  border: none;
  background: var(--gradient-card);
  backdrop-filter: blur(16px);
  box-shadow: var(--glass-shadow);
  border: 1px solid var(--glass-border);
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0;
  overflow: hidden;
}

.post-card.featured .post-card-image {
  aspect-ratio: auto;
  height: 100%;
  min-height: 280px;
}

.post-card.featured .post-card-body {
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 40px 36px;
}

.post-card.featured .post-card-title {
  font-size: 28px;
}

/* === 文章卡片 (玻璃拟态) === */
/* === 作者页 === */
.author-header { margin-bottom: 48px; }
.author-card {
  display: flex; align-items: center; gap: 28px;
  padding: 36px; background: var(--glass-bg);
  backdrop-filter: blur(12px);
  border: 1px solid var(--color-border-light);
  border-radius: var(--radius);
}
.author-avatar { flex-shrink: 0; }
.author-avatar img {
  width: 120px; height: 120px; border-radius: 50%;
  border: 3px solid rgba(139,92,246,0.2);
  object-fit: cover;
}
.author-info { flex: 1; min-width: 0; }
.author-name {
  font-family: var(--font-serif); font-size: 26px; font-weight: 700;
  color: var(--color-text); margin-bottom: 8px;
}
.author-stats { font-size: 14px; color: var(--color-text-muted); margin-bottom: 10px; }
.author-bio {
  font-size: 15px; line-height: 1.8; color: var(--color-text-secondary);
  margin-top: 12px; padding-top: 12px;
  border-top: 1px solid var(--color-border-light);
}

@media (max-width: 480px) {
  .author-card { flex-direction: column; text-align: center; padding: 24px; }
  .author-avatar img { width: 96px; height: 96px; }
  .author-name { font-size: 22px; }
}

.posts-grid { display: flex; flex-direction: column; gap: 36px; }

.post-card {
  background: var(--glass-bg);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border-radius: var(--radius-lg);
  overflow: hidden;
  border: 1px solid var(--glass-border);
  box-shadow: var(--glass-shadow);
  transition: all var(--transition-slow);
  position: relative;
}

.post-card::before {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: var(--radius-lg);
  padding: 1px;
  background: linear-gradient(135deg, rgba(155,126,216,0.3), rgba(232,160,191,0.2), rgba(155,126,216,0.05));
  -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
  -webkit-mask-composite: xor;
  mask-composite: exclude;
  opacity: 0;
  transition: opacity var(--transition-slow);
  pointer-events: none;
}

.post-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--glass-shadow-hover);
}

.post-card:hover::before {
  opacity: 1;
}

.post-card-image {
  display: block; overflow: hidden; aspect-ratio: 16 / 9;
  position: relative;
}

.post-card-image::after {
  content: '';
  position: absolute; inset: 0;
  background: linear-gradient(180deg, transparent 60%, rgba(74,45,122,0.03) 100%);
}

.post-card-image img {
  width: 100%; height: 100%; object-fit: cover;
  transition: transform 0.6s cubic-bezier(0.16, 1, 0.3, 1);
}

.post-card:hover .post-card-image img {
  transform: scale(1.05);
}

.post-card-body { padding: 36px 40px; position: relative; }

.post-card-meta {
  display: flex; align-items: center; gap: 16px;
  margin-bottom: 14px;
}

.post-date {
  font-size: 13px; color: var(--color-text-muted);
  font-family: var(--font-mono); letter-spacing: 0.04em;
}

.post-reading-time {
  font-size: 13px; color: var(--color-text-muted);
  display: flex; align-items: center; gap: 4px;
}

.post-reading-time::before {
  content: '';
  display: inline-block; width: 4px; height: 4px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--dream-purple), var(--dream-rose));
}

.post-card-title {
  font-family: var(--font-serif);
  font-size: 24px; font-weight: 700; line-height: 1.4;
  margin-bottom: 12px;
}

.post-card-title a {
  color: var(--color-text);
  transition: color var(--transition);
  background: linear-gradient(to right, var(--color-text), var(--color-text));
  background-size: 0% 2px;
  background-repeat: no-repeat;
  background-position: 0 100%;
  transition: background-size 0.3s ease, color var(--transition);
}

.post-card-title a:hover {
  color: var(--color-primary);
  background-image: linear-gradient(to right, var(--color-primary), var(--color-accent));
  background-size: 100% 2px;
}

.post-card-excerpt {
  font-size: 15px; color: var(--color-text-secondary); line-height: 1.8;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}

.post-card-footer {
  display: flex; align-items: center; justify-content: space-between;
  margin-top: 20px; padding-top: 16px;
  border-top: 1px solid var(--color-border-light);
}

.post-card-author {
  display: flex; align-items: center; gap: 8px; min-width: 0;
}

.post-card-author-avatar {
  flex-shrink: 0; border-radius: 50%; overflow: hidden; line-height: 0;
}

.post-card-author-avatar img { display: block; border-radius: 50%; }

.post-card-author-name {
  font-size: 14px; font-weight: 500; color: var(--color-text-secondary);
  transition: color var(--transition);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}

.post-card-author-name:hover { color: var(--color-primary); }

.post-card-replies, .post-card-likes {
  font-size: 13px; color: var(--color-text-muted);
  display: inline-flex; align-items: center; gap: 4px; white-space: nowrap;
}

.post-card-count {
  font-size: 13px; color: var(--color-text-secondary);
  padding: 4px 12px; flex-shrink: 0;
  border: 1px solid var(--color-border-light);
  border-radius: var(--radius-full);
  transition: all var(--transition);
}

.post-card-count:hover {
  color: var(--color-primary);
  border-color: var(--color-primary);
}

/* === 标签 === */
.post-tags, .tag-cloud { display: flex; flex-wrap: wrap; gap: 8px; }

.tag-badge {
  display: inline-block; padding: 5px 14px;
  font-size: 12px; font-weight: 500;
  color: var(--color-primary);
  background: linear-gradient(135deg, rgba(155,126,216,0.1) 0%, rgba(232,160,191,0.08) 100%);
  border: 1px solid rgba(155,126,216,0.15);
  border-radius: var(--radius-full);
  transition: all var(--transition);
}

.tag-badge:hover {
  background: linear-gradient(135deg, rgba(155,126,216,0.2) 0%, rgba(232,160,191,0.15) 100%);
  border-color: var(--color-primary);
  color: var(--color-primary-dark);
  transform: translateY(-1px);
}

.tag-badge-outline {
  background: transparent;
  color: var(--color-text-secondary);
  border: 1px solid var(--color-border);
}

.tag-badge-outline:hover {
  border-color: var(--color-primary);
  color: var(--color-primary);
  background: rgba(155,126,216,0.05);
}

.read-more {
  font-size: 14px; font-weight: 500;
  background: linear-gradient(135deg, var(--color-primary), var(--color-accent));
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  transition: all var(--transition);
  display: flex; align-items: center; gap: 4px;
}

.read-more::after {
  content: '→';
  transition: transform var(--transition);
}

.read-more:hover::after { transform: translateX(3px); }

/* === 分页 === */
.pagination { margin-top: 48px; }

.pagination-inner { display: flex; justify-content: center; gap: 6px; }

.pagination .page-numbers {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 42px; height: 42px; padding: 0 12px;
  font-size: 14px; font-weight: 500;
  color: var(--color-text-secondary);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  background: var(--glass-bg);
  backdrop-filter: blur(8px);
  transition: all var(--transition);
}

.pagination .page-numbers:hover {
  border-color: var(--color-primary);
  color: var(--color-primary);
  box-shadow: 0 0 16px rgba(155, 126, 216, 0.15);
}

.pagination .current {
  background: linear-gradient(135deg, var(--color-primary), var(--color-accent));
  border-color: transparent;
  color: #fff;
  box-shadow: 0 4px 16px rgba(155, 126, 216, 0.3);
}

.pagination .dots { border-color: transparent; background: transparent; }

/* === 单篇文章 === */
.single-post {
  margin-bottom: 24px;
}

.single-post-header { padding: 0; }

.single-post-meta {
  display: flex; align-items: center; gap: 20px; margin-bottom: 20px;
}

.post-views {
  display: inline-flex; align-items: center; gap: 4px; white-space: nowrap;
  font-size: 13px; color: var(--color-text-muted);
}
.views-icon { width: 1.2em; height: 1.2em; }

.single-post-title {
  font-family: var(--font-serif);
  font-size: 36px; font-weight: 900; line-height: 1.3;
  color: var(--color-text); letter-spacing: 0.03em;
  margin-bottom: 12px;
}

.single-post-author {
  display: flex; align-items: center; gap: 14px; margin-top: 28px;
}

.author-avatar {
  width: 48px; height: 48px; border-radius: var(--radius-full);
  border: 2px solid transparent;
  background: linear-gradient(var(--color-surface, #fff), var(--color-surface, #fff)) padding-box,
              linear-gradient(135deg, var(--color-primary), var(--color-accent)) border-box;
  box-shadow: 0 0 0 4px rgba(155,126,216,0.08);
}

.author-name { font-size: 16px; font-weight: 600; color: var(--color-text); }
.author-avatar-link { display: inline-flex; flex-shrink: 0; }
.author-name-link {
  display: inline-flex; align-items: baseline; gap: 2px;
  color: var(--color-text); text-decoration: none;
}
.author-name-link:hover .author-name { color: var(--color-primary); }

.single-post-thumbnail { margin: 36px 0 0; }

.single-post-thumbnail .featured-image {
  width: 100%; max-height: 480px; object-fit: cover;
}

.single-post-content {
  padding: 32px;
  background: var(--color-surface, rgba(255,255,255,0.7));
  border-radius: var(--radius-lg, 16px);
  border: 1px solid var(--color-border-light);
  max-width: 100%;
  overflow-x: hidden;
  overflow-wrap: break-word;
  word-break: break-word;
}

/* === 文章排版 (prose) === */
.prose { font-size: 17px; line-height: 2.1; color: var(--color-text); }

.prose h1 { font-family: var(--font-serif); font-size: 32px; font-weight: 700; margin: 56px 0 28px; line-height: 1.3; }

.prose h2 {
  font-family: var(--font-serif); font-size: 26px; font-weight: 700;
  margin: 48px 0 20px; padding-bottom: 12px;
  border-bottom: 2px solid var(--color-border-light);
  line-height: 1.3;
  position: relative;
}

.prose h2::after {
  content: '';
  position: absolute; bottom: -2px; left: 0; width: 60px; height: 2px;
  background: linear-gradient(90deg, var(--color-primary), var(--color-accent));
}

.prose h3 {
  font-family: var(--font-serif); font-size: 22px; font-weight: 600;
  margin: 36px 0 16px; padding-left: 14px; line-height: 1.4;
  border-left: 3px solid var(--color-primary);
}

.prose h4 {
  font-family: var(--font-serif); font-size: 18px; font-weight: 600;
  margin: 28px 0 12px; color: var(--color-text-secondary);
}

.prose p { margin: 18px 0; }

.prose a {
  color: var(--color-primary); text-decoration: underline;
  text-decoration-color: rgba(155,126,216,0.3); text-underline-offset: 4px;
  transition: text-decoration-color var(--transition);
}
.prose a:hover { text-decoration-color: var(--color-primary); }

.prose strong { font-weight: 600; }

.prose blockquote {
  margin: 32px 0; padding: 28px 32px;
  border-left: 4px solid var(--color-primary);
  background: linear-gradient(90deg, rgba(155,126,216,0.06) 0%, rgba(232,160,191,0.03) 100%);
  border-radius: 0 var(--radius-md) var(--radius-md) 0;
  font-style: italic; color: var(--color-text-secondary);
}
.prose blockquote p { margin: 0; }
.prose blockquote p + p { margin-top: 14px; }

.prose ul, .prose ol { margin: 24px 0; padding-left: 28px; }
.prose ul li, .prose ol li { margin: 10px 0; line-height: 2; }
.prose ul { list-style-type: disc; }
.prose ol { list-style-type: decimal; }
.prose li::marker { color: var(--color-primary); }

.prose code {
  font-family: var(--font-mono); font-size: 0.9em;
  padding: 3px 8px; border-radius: var(--radius-sm);
  background: linear-gradient(135deg, rgba(155,126,216,0.08), rgba(232,160,191,0.06));
  color: var(--color-primary-dark); font-weight: 500;
}

.dark .prose code { background: rgba(255,255,255,0.06); color: var(--color-primary-light); }

.prose pre {
  margin: 32px 0; padding: 28px;
  background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%);
  border-radius: var(--radius-md);
  border: 1px solid rgba(255,255,255,0.06);
  overflow-x: auto; font-size: 14px; line-height: 1.8;
}

.prose pre code { background: none; padding: 0; color: #e0d8f0; font-weight: 400; }

.prose img {
  border-radius: var(--radius-md); margin: 32px 0;
  box-shadow: 0 8px 32px var(--color-shadow);
}

.prose hr { margin: 56px 0; border: none; height: 1px; background: linear-gradient(90deg, transparent, var(--color-border), transparent); }

.prose table { width: 100%; margin: 32px 0; border-collapse: collapse; font-size: 15px; }
.prose th { padding: 14px 18px; background: var(--color-border-light); border: 1px solid var(--color-border); font-weight: 600; text-align: left; }
.prose td { padding: 14px 18px; border: 1px solid var(--color-border); }

.prose figure { margin: 32px 0; }
.prose figcaption { margin-top: 10px; font-size: 14px; color: var(--color-text-muted); text-align: center; }

/* === 文章底部 === */
.single-post-footer { padding: 0; }

.post-tags-section {
  display: flex; flex-wrap: wrap; align-items: center; gap: 10px;
  padding: 28px 0; border-top: 1px solid var(--color-border-light);
}

.tags-label { font-size: 14px; font-weight: 500; color: var(--color-text-muted); }

.post-share {
  display: flex; align-items: center; gap: 10px; padding-bottom: 28px;
}

.share-label { font-size: 14px; color: var(--color-text-muted); }
.share-btn {
  width: 38px; height: 38px;
  display: flex; align-items: center; justify-content: center;
  border: 1px solid var(--color-border); border-radius: var(--radius-full);
  background: var(--glass-bg); color: var(--color-text-secondary);
  cursor: pointer; transition: all var(--transition);
}
.share-btn:hover {
  border-color: var(--color-primary); color: var(--color-primary);
  background: rgba(155,126,216,0.06); box-shadow: 0 0 16px rgba(155,126,216,0.15);
}

/* === 上一篇/下一篇 === */
.post-navigation {
  display: flex; gap: 20px; padding: 36px 0;
  border-top: 1px solid var(--color-border-light);
}

.prev-post, .next-post {
  flex: 1; display: block; padding: 24px;
  border-radius: var(--radius-md);
  background: var(--gradient-sidebar);
  border: 1px solid var(--color-border-light);
  transition: all var(--transition);
}

.prev-post:hover, .next-post:hover {
  border-color: var(--color-primary);
  background: linear-gradient(135deg, rgba(155,126,216,0.08), rgba(232,160,191,0.05));
  transform: translateY(-2px);
}

.next-post { text-align: right; margin-left: auto; }

.nav-label { display: block; font-size: 13px; color: var(--color-text-muted); margin-bottom: 8px; }
.nav-title { font-size: 15px; font-weight: 500; color: var(--color-text); display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; overflow: hidden; }

/* === 侧边栏 === */
.sidebar { position: sticky; top: 96px; align-self: flex-start; }

.sidebar-widget {
  background: var(--glass-bg);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border-radius: var(--radius-lg);
  border: 1px solid var(--glass-border);
  box-shadow: var(--glass-shadow);
  padding: 28px; margin-bottom: 20px;
}

.sidebar-widget-title {
  font-family: var(--font-serif); font-size: 18px; font-weight: 700;
  color: var(--color-text); margin-bottom: 20px; padding-bottom: 14px;
  position: relative;
  display: inline-block;
  background: linear-gradient(135deg, var(--color-text), var(--color-primary));
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}

.sidebar-widget-title::after {
  content: '';
  position: absolute; bottom: 0; left: 0; right: 0; height: 2px;
  background: linear-gradient(90deg, var(--color-primary), var(--color-accent), transparent);
  border-radius: 1px;
}

/* 搜索表单 — 玻璃态重设计 */
.search-form {
  display: flex; gap: 0;
  border-radius: var(--radius-lg);
  overflow: hidden;
  background: var(--glass-bg);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  border: 1px solid var(--glass-border);
  box-shadow: 0 2px 8px rgba(74, 45, 122, 0.04);
  transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}
.search-form:focus-within {
  border-color: var(--color-primary);
  box-shadow: 0 0 0 3px rgba(155, 126, 216, 0.12), 0 4px 16px rgba(155, 126, 216, 0.08);
  transform: translateY(-1px);
}
.search-input {
  flex: 1; border: none;
  padding: 13px 18px;
  font-size: 14px; font-family: var(--font-sans);
  background: transparent; color: var(--color-text);
  outline: none;
}
.search-input::placeholder { color: var(--color-text-muted); font-style: italic; }
.search-button {
  display: flex; align-items: center; justify-content: center;
  padding: 9px 18px; border: none;
  background: linear-gradient(135deg, var(--color-primary), var(--color-accent));
  color: #fff; cursor: pointer;
  margin: 4px; border-radius: var(--radius-md);
  transition: all var(--transition);
  font-weight: 500;
}
.search-button:hover {
  opacity: 0.9;
  box-shadow: 0 4px 12px rgba(155, 126, 216, 0.25);
}
.search-button svg { width: 18px; height: 18px; }

/* 近期文章 */
.recent-posts { list-style: none; }
.recent-posts li { display: flex; align-items: baseline; justify-content: space-between; padding: 12px 0; border-bottom: 1px solid var(--color-border-light); }
.recent-posts li:last-child { border-bottom: none; }
.recent-posts a { font-size: 14px; font-weight: 500; color: var(--color-text); flex: 1; display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; overflow: hidden; transition: color var(--transition); }
.recent-posts a:hover { color: var(--color-primary); }
.recent-post-date { font-size: 12px; color: var(--color-text-muted); font-family: var(--font-mono); margin-left: 12px; flex-shrink: 0; }

/* 分类列表 */
.category-list { list-style: none; }
.category-list li { border-bottom: 1px solid var(--color-border-light); }
.category-list li:last-child { border-bottom: none; }
.category-list a { display: flex; align-items: center; justify-content: space-between; padding: 12px 0; font-size: 14px; color: var(--color-text); transition: all var(--transition); }
.category-list a:hover { color: var(--color-primary); padding-left: 4px; }
.cat-count { font-size: 12px; color: var(--color-text-muted); background: var(--color-border-light); padding: 3px 10px; border-radius: var(--radius-full); }

/* === 评论 === */
.comments-section { padding: 56px 0; border-top: 1px solid var(--color-border-light); }
.comments-title { font-family: var(--font-serif); font-size: 22px; font-weight: 700; margin-bottom: 28px; }

/* 左竖线时间线 */
.comment-list { list-style: none; padding-left: 80px; position: relative; }
.comment-list::before {
  content: '';
  position: absolute; left: 27px; top: 12px; bottom: 12px; width: 2px;
  background: linear-gradient(to bottom,
    transparent,
    rgba(155,126,216,0.15) 5%,
    var(--color-border-light) 30%,
    var(--color-border-light) 70%,
    rgba(155,126,216,0.15) 95%,
    transparent
  );
}

.comment-list .comment { position: relative; margin-bottom: 30px; padding-bottom: 0; border-bottom: none; }
.comment-list .comment-body { display: block; position: relative; }
.comment-list .comment-meta { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }

/* 头像 — 挂在竖线上 */
.comment-list .comment-author img {
  position: absolute; left: -53px; top: 0; transform: translateX(-50%);
  width: 48px; height: 48px; z-index: 2;
  border-radius: 50%; border: 3px solid var(--color-surface);
  box-shadow: 0 0 0 2px var(--color-border-light);
}
.comment-list .comment-author cite { font-style: normal; font-weight: 600; font-size: 15px; }
.comment-list .comment-metadata a { font-size: 13px; color: var(--color-text-muted); }

/* 回复按钮 — 右上角 */
.comment-list .reply { position: absolute; top: 0; right: 0; }
.comment-list .reply a { font-size: 13px; color: var(--color-primary); }

/* 评论正文 */
.comment-list .comment-content { margin-top: 10px; font-size: 15px; line-height: 1.9; }

/* 子评论 */
.comment-list .children { list-style: none; margin-top: 24px; padding-left: 48px; }

/* === 评论表单 === */
.comment-respond { margin-top: 48px; }
.comment-reply-title {
  font-family: var(--font-serif); font-size: 20px; font-weight: 700; margin-bottom: 10px;
  padding-left: 14px; border-left: 3px solid var(--color-primary);
}
.comment-notes { font-size: 13px; color: var(--color-text-muted); margin-bottom: 20px; }
.comment-form p { margin-bottom: 16px; }
.comment-form label { display: block; font-size: 14px; font-weight: 500; margin-bottom: 6px; color: var(--color-text-secondary); }
.comment-form input[type="text"],
.comment-form input[type="email"],
.comment-form input[type="url"],
.comment-form textarea {
  width: 100%; padding: 10px 14px; font-size: 15px; font-family: var(--font-sans);
  border: 1px solid var(--color-border); border-radius: var(--radius-md);
  background: var(--color-surface); color: var(--color-text);
  transition: all var(--transition); outline: none;
}
.comment-form input:focus,
.comment-form textarea:focus { border-color: var(--color-primary); box-shadow: 0 0 0 3px rgba(155,126,216,0.1); }
.comment-form textarea { resize: vertical; min-height: 72px; transition: height 0.15s ease; }
.comment-form .submit {
  display: inline-block; padding: 10px 28px; font-size: 14px; font-weight: 600; font-family: var(--font-sans);
  color: #fff; border-radius: var(--radius-full); cursor: pointer;
  background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-accent) 100%);
  border: none; transition: all var(--transition);
  box-shadow: 0 4px 16px rgba(155, 126, 216, 0.2);
}
.comment-form .submit:hover {
  transform: translateY(-1px);
  box-shadow: 0 6px 24px rgba(155, 126, 216, 0.3);
}

/* === 404 页面 === */
.page-404 {
  position: relative; overflow: hidden;
  min-height: calc(100vh - 180px);
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  padding: 60px 20px;
}

.error-cosmos {
  position: relative; display: flex; flex-direction: column; align-items: center;
  max-width: 600px; width: 100%;
}

.error-stars { position: absolute; inset: 0; pointer-events: none; overflow: hidden; }
.star {
  position: absolute;
  width: 3px; height: 3px; border-radius: 50%;
  background: rgba(155,126,216,0.6);
  animation: star-twinkle var(--d, 2s) ease-in-out infinite;
}
.star:nth-child(even) { background: rgba(232,160,191,0.5); width: 2px; height: 2px; }

@keyframes star-twinkle {
  0%, 100% { opacity: 0.2; transform: scale(1); }
  50% { opacity: 1; transform: scale(1.8); }
}

/* 飘浮灯笼 */
.error-lantern {
  position: relative; width: 80px; height: 120px;
  animation: lantern-float 4s ease-in-out infinite;
  filter: drop-shadow(0 0 20px rgba(236,72,153,0.3));
}
.error-lantern svg { width: 100%; height: 100%; }
.lantern-light {
  position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);
  width: 100px; height: 100px; border-radius: 50%;
  background: radial-gradient(circle, rgba(253,224,71,0.2) 0%, transparent 70%);
  animation: lantern-glow 2s ease-in-out infinite;
}

@keyframes lantern-float {
  0%, 100% { transform: translateY(0) rotate(-2deg); }
  50% { transform: translateY(-12px) rotate(2deg); }
}
@keyframes lantern-glow {
  0%, 100% { opacity: 0.5; transform: translate(-50%, -50%) scale(1); }
  50% { opacity: 1; transform: translate(-50%, -50%) scale(1.3); }
}

/* 404 数字 */
.error-digits {
  display: flex; gap: 12px; margin-top: 8px;
}
.digit {
  display: inline-block;
  font-family: var(--font-serif); font-size: clamp(100px, 18vw, 160px); font-weight: 900; line-height: 1;
  background: linear-gradient(135deg, #8B5CF6 0%, #C084FC 30%, #EC4899 70%, #F59E0B 100%);
  -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text;
  filter: drop-shadow(0 0 30px rgba(139,92,246,0.35)) drop-shadow(0 0 60px rgba(236,72,153,0.2));
  animation: digit-bob 3s ease-in-out infinite;
  animation-delay: calc(var(--i, 0) * 0.3s);
}

@keyframes digit-bob {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-8px); }
}

.error-heading {
  font-family: var(--font-serif); font-size: 26px; font-weight: 700;
  margin-top: 4px; color: var(--color-text);
}
.error-quote {
  font-size: 15px; color: var(--color-text-muted);
  margin-top: 10px; line-height: 1.8; text-align: center;
}

/* 搜索框 */
.error-search-wrap { width: 100%; max-width: 420px; margin-top: 32px; }
.error-search {
  position: relative; display: flex; align-items: center;
}
.error-search-icon {
  position: absolute; left: 18px; pointer-events: none;
  color: var(--color-text-muted);
}
.error-search-input {
  width: 100%; height: 52px; padding: 0 48px 0 46px;
  border: 1px solid var(--color-border-light); border-radius: 32px;
  background: var(--color-surface); color: var(--color-text);
  font-size: 15px; outline: none;
  transition: all 0.3s ease;
  box-shadow: 0 2px 12px rgba(139,92,246,0.04);
}
.error-search-input::placeholder { color: var(--color-text-muted); }
.error-search-input:focus {
  border-color: var(--color-primary);
  box-shadow: 0 0 0 4px rgba(139,92,246,0.1), 0 4px 20px rgba(139,92,246,0.1);
}

/* 返回按钮 */
.error-home-btn {
  display: inline-flex; align-items: center; gap: 6px;
  margin-top: 16px; padding: 12px 36px;
  background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-accent) 100%);
  color: #fff; font-size: 15px; font-weight: 600;
  border-radius: 32px; text-decoration: none;
  transition: all 0.3s ease;
  box-shadow: 0 4px 20px rgba(155,126,216,0.3);
}
.error-home-btn:hover {
  color: #fff; transform: translateY(-2px);
  box-shadow: 0 8px 32px rgba(155,126,216,0.5);
}

/* 推荐文章 */
.error-posts { width: 100%; max-width: 860px; margin-top: 56px; padding: 0 20px; }
.error-posts-heading {
  font-family: var(--font-serif); font-size: 20px; font-weight: 700;
  text-align: center; margin-bottom: 28px;
  color: var(--color-text);
  position: relative;
}
.error-posts-heading::after {
  content: ''; display: block; width: 40px; height: 2px;
  margin: 12px auto 0;
  background: linear-gradient(to right, var(--color-primary), var(--color-accent));
  border-radius: 1px;
}
.error-posts-grid {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px;
}
.error-post-card {
  display: block; text-decoration: none; border-radius: var(--radius);
  overflow: hidden; background: var(--color-surface);
  border: 1px solid var(--color-border-light);
  transition: all 0.3s ease;
}
.error-post-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 8px 30px rgba(139,92,246,0.12);
  border-color: var(--color-primary);
}
.error-post-thumb {
  width: 100%; aspect-ratio: 16/10; overflow: hidden; background: var(--color-bg);
}
.error-post-thumb img {
  width: 100%; height: 100%; object-fit: cover;
  transition: transform 0.4s ease;
}
.error-post-card:hover .error-post-thumb img { transform: scale(1.05); }
.error-post-body { padding: 14px; }
.error-post-title {
  font-size: 14px; font-weight: 600; color: var(--color-text);
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
  overflow: hidden; line-height: 1.5; margin-bottom: 6px;
}
.error-post-date { font-size: 12px; color: var(--color-text-muted); }

/* 暗色模式 */
.dark .star { background: rgba(192,132,252,0.5); }
.dark .star:nth-child(even) { background: rgba(244,114,182,0.4); }
.dark .error-search-input {
  background: rgba(255,255,255,0.04);
  border-color: rgba(255,255,255,0.08);
}
.dark .error-post-card { background: rgba(255,255,255,0.03); border-color: rgba(255,255,255,0.06); }
.dark .error-post-card:hover { border-color: var(--color-primary); }

@media (max-width: 768px) {
  .error-posts-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 480px) {
  .error-posts-grid { grid-template-columns: 1fr; }
  .error-lantern { width: 64px; height: 96px; }
}

/* === 页脚（极简一行居中） === */
.site-footer {
  flex-shrink: 0;
  margin-top: auto; padding: 48px 0;
  border-top: 1px solid var(--color-border-light);
  text-align: center; position: relative; z-index: 1;
  width: 100%;
}

.footer-copy {
  font-size: 13px; color: var(--color-text-muted);
  letter-spacing: 0.03em;
}

/* 个人中心页：页脚最底层，渐变细线分隔，版权更淡 */
body.page-profile-dl .site-footer {
  border-top: none;
}
body.page-profile-dl .site-footer::before {
  content: ""; display: block; width: min(560px, 72%); height: 1px;
  margin: 0 auto 36px;
  background: linear-gradient(90deg, transparent, rgba(155,126,216,.35), rgba(232,160,191,.35), transparent);
}
body.page-profile-dl .footer-copy {
  color: rgba(150,145,175,.8);
}
body.page-profile-dl .footer-online {
  opacity: .75;
}

/* === 页脚在线人数（版权信息下方） === */
.footer-online {
  display: flex; align-items: center; justify-content: center; gap: 6px;
  margin-top: 8px; font-size: 12px; color: var(--color-text-muted);
}

.footer-online-dot {
  width: 6px; height: 6px; border-radius: 50%;
  background: #10B981; display: inline-block;
  animation: dreamlife-pulse 2s infinite;
}

/* === 代码块复制 === */
.code-block-wrapper { position: relative; }
.code-block-wrapper .copy-code-btn {
  position: absolute; top: 14px; right: 14px;
  padding: 5px 14px; font-size: 12px; font-family: var(--font-sans);
  color: rgba(255,255,255,0.5); background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.1); border-radius: var(--radius-sm);
  cursor: pointer; transition: all var(--transition);
}
.code-block-wrapper .copy-code-btn:hover { color: #fff; background: rgba(255,255,255,0.12); border-color: rgba(255,255,255,0.25); }

/* === 阅读进度条 === */
.reading-progress {
  position: fixed; top: 72px; left: 0; right: 0; height: 3px;
  background: transparent; z-index: 1001; pointer-events: none;
}

.reading-progress-bar {
  height: 100%; width: 0;
  background: linear-gradient(90deg, var(--color-primary), var(--color-accent), var(--dream-rose));
  transition: width 0.1s linear;
  border-radius: 0 2px 2px 0;
}

/* === 回到顶部 === */
.back-to-top {
  position: fixed; bottom: 32px; right: 32px; z-index: 998;
  width: 48px; height: 48px;
  display: flex; align-items: center; justify-content: center;
  border: 1px solid var(--glass-border);
  border-radius: var(--radius-full);
  background: var(--glass-bg);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  color: var(--color-text-secondary);
  cursor: pointer;
  opacity: 0; visibility: hidden; transform: translateY(16px);
  transition: all var(--transition-slow);
  box-shadow: var(--glass-shadow);
}

.back-to-top.visible {
  opacity: 1; visibility: visible; transform: translateY(0);
}

.back-to-top:hover {
  border-color: var(--color-primary);
  color: var(--color-primary);
  box-shadow: 0 0 24px rgba(155,126,216,0.2);
  transform: translateY(-4px);
}

/* === 文章目录 TOC === */
.toc-inline {
  background: var(--glass-bg);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border-radius: var(--radius-lg);
  border: 1px solid var(--glass-border);
  box-shadow: var(--glass-shadow);
  padding: 28px 32px;
  margin-bottom: 36px;
}

.toc-widget {
  background: var(--glass-bg);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border-radius: var(--radius-lg);
  border: 1px solid var(--glass-border);
  box-shadow: var(--glass-shadow);
  padding: 28px;
  margin-bottom: 20px;
}

.toc { }

.toc-title {
  font-family: var(--font-serif); font-size: 16px; font-weight: 700;
  margin-bottom: 16px; padding-bottom: 12px;
  background: linear-gradient(135deg, var(--color-text), var(--color-primary));
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  display: inline-block;
  position: relative;
}

.toc-title::after {
  content: '';
  position: absolute; bottom: 0; left: 0; right: 0; height: 2px;
  background: linear-gradient(90deg, var(--color-primary), var(--color-accent), transparent);
}

.toc-list { list-style: none; counter-reset: toc-counter; }

.toc-list li {
  padding: 6px 0; font-size: 14px; line-height: 1.5;
  counter-increment: toc-counter;
}

.toc-list li a {
  display: block; color: var(--color-text-secondary);
  padding: 6px 12px; border-radius: var(--radius-sm);
  transition: all var(--transition);
  position: relative;
  padding-left: 26px;
}

.toc-list li a::before {
  content: counter(toc-counter);
  position: absolute; left: 0; top: 50%; transform: translateY(-50%);
  font-size: 11px; font-weight: 600; color: var(--color-primary);
  font-family: var(--font-mono);
}

.toc-list li a:hover,
.toc-list li a.active {
  color: var(--color-primary);
  background: linear-gradient(90deg, rgba(155,126,216,0.08), transparent);
}

.toc-list .toc-h3 a { padding-left: 40px; font-size: 13px; }
.toc-list .toc-h3 a::before { content: '—'; font-size: 10px; }

/* === 相关文章 === */
.related-posts { padding: 32px 0; border-top: 1px solid var(--color-border-light); }

.related-title {
  font-family: var(--font-serif); font-size: 20px; font-weight: 700;
  margin-bottom: 20px;
  background: linear-gradient(135deg, var(--color-text), var(--color-primary));
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  display: inline-block;
}

.related-grid {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px;
}

.related-card {
  background: var(--gradient-sidebar);
  border-radius: var(--radius-md);
  border: 1px solid var(--color-border-light);
  overflow: hidden;
  transition: all var(--transition);
}

.related-card:hover {
  transform: translateY(-3px);
  border-color: var(--color-primary);
  box-shadow: 0 8px 24px rgba(155,126,216,0.1);
}

.related-thumb {
  display: block; aspect-ratio: 16/9; overflow: hidden;
}

.related-thumb img {
  width: 100%; height: 100%; object-fit: cover;
  transition: transform 0.5s ease;
}

.related-card:hover .related-thumb img { transform: scale(1.05); }

.related-body { padding: 14px 16px; }

.related-date {
  font-size: 12px; color: var(--color-text-muted);
  font-family: var(--font-mono);
}

.related-card-title {
  margin-top: 6px; font-size: 14px; font-weight: 600; line-height: 1.5;
}

.related-card-title a {
  color: var(--color-text); transition: color var(--transition);
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}

.related-card-title a:hover { color: var(--color-primary); }

/* === 搜索页面 === */
.search-info { margin-top: 12px; }

.search-query {
  font-size: 16px; color: var(--color-text-secondary);
}

.search-query strong {
  color: var(--color-primary); font-weight: 700;
}

.search-count {
  margin-top: 4px; font-size: 14px; color: var(--color-text-muted);
}

.search-highlight {
  background: linear-gradient(135deg, rgba(155,126,216,0.2), rgba(232,160,191,0.15));
  color: var(--color-primary-dark);
  padding: 1px 4px; border-radius: 3px;
  font-weight: 600;
}

.no-posts { text-align: center; padding: 60px 20px; }

.no-posts h2 {
  font-family: var(--font-serif); font-size: 24px; font-weight: 700;
  color: var(--color-text); margin-bottom: 12px;
}

.no-posts p {
  font-size: 15px; color: var(--color-text-secondary); margin-bottom: 24px;
}

.search-form-big { max-width: 480px; margin: 0 auto; }
.search-form-big .search-input { padding: 16px 20px; font-size: 16px; }
.search-form-big .search-button { padding: 11px 24px; }

/* === 动画 === */
.animate-fade-in { animation: fadeInUp 0.7s cubic-bezier(0.16, 1, 0.3, 1) forwards; opacity: 0; }
.posts-grid .post-card:nth-child(1) { animation-delay: 0s; }
.posts-grid .post-card:nth-child(2) { animation-delay: 0.1s; }
.posts-grid .post-card:nth-child(3) { animation-delay: 0.2s; }
.posts-grid .post-card:nth-child(4) { animation-delay: 0.3s; }
.posts-grid .post-card:nth-child(5) { animation-delay: 0.4s; }

@keyframes fadeInUp {
  from { opacity: 0; transform: translateY(32px); }
  to { opacity: 1; transform: translateY(0); }
}

/* === 底部标签栏 === */
.has-tab-bar { padding-bottom: calc(100px + env(safe-area-inset-bottom, 0px)); }

.bottom-tab-bar {
  position: fixed;
  bottom: calc(16px + env(safe-area-inset-bottom, 0px));
  left: 50%; transform: translateX(-50%);
  width: calc(100% - 32px); max-width: 480px; height: 66px;
  display: flex; flex-direction: row; align-items: center; justify-content: space-evenly;
  background: linear-gradient(135deg, rgba(255,255,255,0.55) 0%, rgba(247,243,255,0.48) 100%);
  backdrop-filter: blur(28px) saturate(160%);
  -webkit-backdrop-filter: blur(28px) saturate(160%);
  border-radius: 33px;
  border: none;
  box-shadow: 0 10px 34px rgba(90,60,160,0.16), 0 3px 10px rgba(90,60,160,0.06);
  z-index: 1000;
  padding: 0 8px;
  box-sizing: border-box;
}
.bottom-tab-bar::before {
  content: '';
  position: absolute;
  top: 0; left: 14px; right: 14px;
  height: 1px;
  border-radius: 33px;
  background: linear-gradient(90deg, rgba(255,255,255,0) 0%, rgba(255,255,255,0.95) 50%, rgba(255,255,255,0) 100%);
  pointer-events: none;
}

.dark .bottom-tab-bar {
  background: linear-gradient(135deg, rgba(30,28,54,0.62) 0%, rgba(21,19,42,0.58) 100%);
  border: none;
  box-shadow: 0 10px 34px rgba(0,0,0,0.38), 0 3px 10px rgba(0,0,0,0.2);
}
.dark .bottom-tab-bar::before {
  background: linear-gradient(90deg, rgba(255,255,255,0) 0%, rgba(255,255,255,0.14) 50%, rgba(255,255,255,0) 100%);
}

.tab-item {
  flex: 1 0 0%; min-width: 0;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 3px; height: 100%;
  color: #A8A8A8; text-decoration: none; position: relative;
  transition: color 0.3s ease;
  box-sizing: border-box;
  padding: 4px 2px;
}

.tab-item svg {
  width: 26px; height: 26px; flex-shrink: 0;
  display: block;
}

.tab-item .tab-label {
  font-size: 10px; font-weight: 500; letter-spacing: 0.3px;
}

.tab-badge {
  position: absolute; top: 1px; right: calc(50% - 22px);
  min-width: 16px; height: 16px; padding: 0 4px;
  border-radius: 8px; background: #ef4444; color: #fff;
  font-size: 10px; font-weight: 600; line-height: 16px; text-align: center;
  box-sizing: border-box;
  box-shadow: 0 0 0 2px var(--color-bg);
}

/* 激活态 — 彩色 + 底部柔光 */
.tab-item.active { color: var(--tab-color); }
.tab-item.active.tab-home { --tab-color: #9B7ED8; --tab-glow: rgba(155,126,216,.5); }
.tab-item.active.tab-forum { --tab-color: #5B8DEF; --tab-glow: rgba(91,141,239,.5); }
.tab-item.active.tab-messages { --tab-color: #E56C9A; --tab-glow: rgba(229,108,154,.5); }
.tab-item.active.tab-profile { --tab-color: #4CB8A8; --tab-glow: rgba(76,184,168,.5); }
.tab-item.active::before {
  content: ''; position: absolute; top: 8px; left: 50%;
  transform: translateX(-50%);
  width: 44px; height: 44px; border-radius: 50%;
  background: radial-gradient(circle, var(--tab-glow) 0%, transparent 70%);
  opacity: 0.45; z-index: -1; pointer-events: none;
}

/* 激活态底部指示条（可选） */
.tab-item.active::after {
  content: ''; position: absolute; bottom: 6px; left: 50%;
  transform: translateX(-50%);
  width: 18px; height: 3px; border-radius: 3px;
  background: var(--tab-color);
  opacity: 0.7;
}

/* 移动端微调 */
@media (max-width: 480px) {
  .bottom-tab-bar {
    height: 60px; border-radius: 30px;
    bottom: calc(12px + env(safe-area-inset-bottom, 0px));
    width: calc(100% - 24px);
  }
  .tab-item svg { width: 24px; height: 24px; }
  .tab-item .tab-label { font-size: 9px; }
  .has-tab-bar { padding-bottom: calc(90px + env(safe-area-inset-bottom, 0px)); }
}

/* === 发布按钮（底部导航栏中间） === */
.tab-publish {
  width: 48px; height: 48px;
  flex: 0 0 auto;
  display: flex; align-items: center; justify-content: center;
  background: linear-gradient(135deg, var(--color-primary), #c084fc);
  border: 3px solid rgba(255,255,255,0.65); border-radius: 50%;
  cursor: pointer; color: #fff;
  box-shadow: 0 4px 20px rgba(139, 92, 246, 0.4);
  transition: transform 0.2s ease, box-shadow 0.2s ease;
  margin: 0 4px;
  position: relative;
}
.tab-publish::before {
  content: ''; position: absolute; inset: -6px; border-radius: 50%;
  background: linear-gradient(135deg, var(--color-primary), #c084fc);
  opacity: 0.15; z-index: -1;
}
.tab-publish:hover {
  transform: scale(1.1);
  box-shadow: 0 6px 28px rgba(139, 92, 246, 0.55);
}
.dark .tab-publish { border-color: rgba(20,18,42,0.8); }
.tab-publish svg { width: 22px; height: 22px; }

/* === 论坛面板 === */
.forum-head {
  display: flex; justify-content: space-between; align-items: center;
  margin-bottom: 20px;
}
.forum-head .page-title { margin-bottom: 0; }

.forum-class-toggle {
  width: 40px; height: 40px; border: none; border-radius: 12px; cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  color: var(--color-primary);
  background: linear-gradient(135deg, rgba(155, 126, 216, 0.12), rgba(232, 160, 191, 0.1));
  transition: all var(--transition);
}
.forum-class-toggle:hover { transform: translateY(-1px); box-shadow: 0 4px 14px rgba(155, 126, 216, 0.2); }
.forum-class-toggle svg { width: 20px; height: 20px; }
.forum-class-toggle.active {
  color: #fff;
  background: linear-gradient(135deg, var(--color-primary), var(--color-accent));
  box-shadow: 0 4px 14px rgba(155, 126, 216, 0.3);
}

.forum-categories { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; margin-bottom: 40px; }
body.forum-class-list .forum-categories { grid-template-columns: 1fr; }
body.forum-class-list .forum-cat-card { flex-direction: row; align-items: center; gap: 14px; padding: 12px 16px; text-align: left; }
body.forum-class-list .forum-cat-icon { margin: 0; flex-shrink: 0; }
body.forum-class-list .forum-cat-info h3,
body.forum-class-list .forum-cat-info p { text-align: left; }
body.forum-class-list .forum-cat-desc { margin: 0; max-width: none; }

.forum-cat-card {
  position: relative; display: flex; flex-direction: column; align-items: center;
  background: var(--color-surface); border: 1px solid var(--color-border-light);
  border-radius: var(--radius-lg); padding: 16px 12px 14px; text-align: center;
  transition: all var(--transition); text-decoration: none; color: inherit;
  overflow: hidden;
}
.forum-cat-card::before {
  content: ""; position: absolute; top: 0; left: 0; right: 0; height: 3px;
  background: linear-gradient(135deg, var(--color-primary), var(--color-accent));
  opacity: 0; transition: opacity var(--transition);
}
.forum-cat-card:hover {
  border-color: var(--color-primary-light); transform: translateY(-3px);
  box-shadow: 0 10px 30px rgba(155, 126, 216, 0.14);
}
.forum-cat-card:hover::before { opacity: 1; }

.forum-cat-icon {
  width: 52px; height: 52px; margin: 0 auto 8px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  color: var(--color-primary); overflow: hidden;
  background: linear-gradient(135deg, rgba(155, 126, 216, 0.12), rgba(232, 160, 191, 0.1));
}
.forum-cat-icon svg { width: 40%; height: 40%; }
.section-avatar-img { width: 100%; height: 100%; object-fit: cover; }
.forum-cat-info h3 { font-size: 15px; font-weight: 600; margin-bottom: 3px; }
.forum-cat-info p { font-size: 12px; color: var(--color-text-muted); margin-bottom: 3px; }
.forum-cat-desc {
  display: block; font-size: 11px; color: var(--color-text-muted); line-height: 1.5;
  max-width: 180px; margin: 0 auto;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}

.forum-topics { margin-top: 40px; }
.section-title { font-family: var(--font-serif); font-size: 20px; font-weight: 700; margin-bottom: 20px; }

/* 话题列表（卡片式） */
.topic-list-cards { display: flex; flex-direction: column; gap: 14px; }

.topic-card {
  display: flex; flex-direction: column; gap: 12px; padding: 18px 20px;
  background: var(--color-surface); border: 1px solid var(--color-border-light);
  border-radius: var(--radius-lg); transition: all var(--transition);
}
.topic-card:hover {
  border-color: var(--color-primary-light); transform: translateY(-2px);
  box-shadow: 0 8px 24px rgba(155, 126, 216, 0.1);
}
.topic-card-title-row { display: flex; align-items: center; gap: 10px; }
.topic-title {
  flex: 1; min-width: 0; font-size: 15px; font-weight: 600; margin: 0;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: var(--color-text);
}
.topic-title a { color: inherit; text-decoration: none; }
.topic-title a:hover { color: var(--color-primary); }
.topic-replies {
  flex-shrink: 0; font-size: 11px; font-weight: 500; color: var(--color-primary);
  background: rgba(155, 126, 216, 0.1); border-radius: 12px; padding: 3px 10px;
  white-space: nowrap;
}
.topic-excerpt {
  margin: 0; font-size: 13px; color: var(--color-text-muted); line-height: 1.7;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.topic-card-foot {
  display: flex; justify-content: space-between; align-items: center;
  padding-top: 12px; border-top: 1px dashed var(--color-border-light);
}
.topic-card-author { display: flex; align-items: center; gap: 8px; min-width: 0; }
.topic-card-avatar-link { flex-shrink: 0; border-radius: 50%; overflow: hidden; }
.topic-card-avatar-link img { display: block; border-radius: 50%; }
.topic-card-meta { display: flex; align-items: center; gap: 12px; flex-shrink: 0; }
.topic-time { font-size: 12px; color: var(--color-text-muted); }
.topic-likes { font-size: 12px; color: var(--color-accent); }
.topic-empty { padding: 48px 16px; text-align: center; color: var(--color-text-muted); font-size: 14px; }

.topic-author { color: var(--color-text); text-decoration: none; font-size: 13px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.topic-author:hover { color: var(--color-primary); }
.topic-avatar { width: 40px; height: 40px; border-radius: 50%; background: var(--color-border-light); flex-shrink: 0; overflow: hidden; }
.topic-avatar img { width: 100%; height: 100%; object-fit: cover; }
.topic-body { flex: 1; min-width: 0; }
.topic-meta { font-size: 12px; color: var(--color-text-muted); }
.topic-avatar a { display: block; width: 100%; height: 100%; }
.topic-avatar-ph { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; font-size: 16px; color: var(--color-text-muted); }

/* 版块独立页头部 */
.section-hero {
  position: relative; display: flex; align-items: center; gap: 22px;
  padding: 32px 30px; margin-bottom: 36px; overflow: hidden;
  border-radius: var(--radius-lg);
  background: linear-gradient(135deg, rgba(155, 126, 216, 0.12), rgba(232, 160, 191, 0.1));
  border: 1px solid var(--color-border-light);
}
.section-hero::after {
  content: ""; position: absolute; right: -60px; top: -60px; width: 220px; height: 220px;
  border-radius: 50%; background: radial-gradient(circle, rgba(155, 126, 216, 0.14), transparent 70%);
}
.section-hero-avatar {
  flex-shrink: 0; width: 96px; height: 96px; border-radius: 50%; overflow: hidden;
  display: flex; align-items: center; justify-content: center;
  color: var(--color-primary);
  background: linear-gradient(135deg, rgba(155, 126, 216, 0.18), rgba(232, 160, 191, 0.14));
  box-shadow: 0 6px 20px rgba(155, 126, 216, 0.2);
}
.section-hero-avatar svg { width: 46%; height: 46%; }
.section-hero-info { flex: 1; min-width: 0; position: relative; z-index: 1; }
.section-hero-title { font-family: var(--font-serif); font-size: 26px; font-weight: 700; margin: 0 0 8px; }
.section-hero-desc { margin: 0 0 10px; font-size: 13px; color: var(--color-text-muted); line-height: 1.6; }
.section-hero-stat {
  display: inline-block; font-size: 11px; color: var(--color-primary);
  background: rgba(155, 126, 216, 0.1); border-radius: 12px; padding: 3px 12px;
}
.section-hero-actions { display: flex; flex-direction: column; align-items: flex-end; gap: 10px; position: relative; z-index: 1; }
.section-back-link { font-size: 12px; color: var(--color-text-muted); text-decoration: none; }
.section-back-link:hover { color: var(--color-primary); }
.section-post-btn {
  border: none; border-radius: 20px; padding: 10px 22px; cursor: pointer;
  font-size: 13px; font-weight: 500; color: #fff; white-space: nowrap;
  background: linear-gradient(135deg, var(--color-primary), var(--color-accent));
  box-shadow: 0 4px 14px rgba(155, 126, 216, 0.3);
  transition: transform var(--transition), box-shadow var(--transition);
}
.section-post-btn:hover { transform: translateY(-1px); box-shadow: 0 6px 20px rgba(155, 126, 216, 0.4); }

/* 话题详情页 */
.topic-single {
  background: var(--color-surface); border: 1px solid var(--color-border-light);
  border-radius: var(--radius-lg); padding: 34px 36px;
}
.topic-single-meta-top {
  display: flex; align-items: center; gap: 12px; margin-bottom: 18px;
  font-size: 12px; color: var(--color-text-muted);
}
.topic-single-back { color: var(--color-text-muted); text-decoration: none; }
.topic-single-back:hover { color: var(--color-primary); }
.topic-section-tag {
  font-size: 11px; font-weight: 500; color: var(--color-primary);
  background: rgba(155, 126, 216, 0.1); border-radius: 12px; padding: 3px 12px;
  text-decoration: none;
}
.topic-section-tag:hover { background: rgba(155, 126, 216, 0.18); }
.topic-single-title { font-family: var(--font-serif); font-size: 26px; font-weight: 700; margin: 0 0 20px; line-height: 1.45; }
.topic-single-author { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding-bottom: 22px; border-bottom: 1px solid var(--color-border-light); }
.topic-single-author-main { display: flex; align-items: center; gap: 12px; min-width: 0; }
.topic-single-avatar-link { flex-shrink: 0; border-radius: 50%; overflow: hidden; }
.topic-single-avatar { display: block; border-radius: 50%; }
.topic-single-author-info { min-width: 0; }
.topic-single-author-name { font-size: 14px; font-weight: 600; color: var(--color-text); text-decoration: none; }
.topic-single-author-name:hover { color: var(--color-primary); }
.topic-single-author-meta { margin-top: 3px; font-size: 12px; color: var(--color-text-muted); }
.topic-author-more-wrap { position: relative; flex-shrink: 0; }
.topic-author-more {
  display: inline-flex; align-items: center; justify-content: center;
  width: 32px; height: 32px; padding: 0;
  border: 1px solid var(--color-border-light); background: var(--color-bg);
  border-radius: 50%; cursor: pointer;
  color: var(--color-text-muted); transition: all var(--transition);
}
.topic-author-more:hover { color: var(--color-primary); border-color: var(--color-primary-light); }
.topic-author-menu {
  position: absolute; top: calc(100% + 6px); right: 0; z-index: 50;
  min-width: 148px; padding: 6px;
  background: var(--color-bg); border: 1px solid var(--color-border-light);
  border-radius: 10px; box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
}
.topic-author-menu[hidden] { display: none; }
.topic-author-menu-item {
  display: block; width: 100%; padding: 8px 12px;
  border: 0; background: transparent; cursor: pointer;
  text-align: left; font-size: 13px; color: var(--color-text);
  border-radius: 6px; transition: background var(--transition);
}
.topic-author-menu-item:hover { background: rgba(155, 126, 216, 0.1); color: var(--color-primary); }
.topic-author-menu-item[data-mod="close"] { color: #ef4444; }
.topic-author-menu-item[data-mod="close"]:hover { background: rgba(239, 68, 68, 0.08); color: #ef4444; }
.topic-author-menu-item[data-mod="open"] { color: var(--color-primary); }
.topic-author-menu-item[data-mod="open"]:hover { background: rgba(155, 126, 216, 0.1); color: var(--color-primary); }
.topic-single-content { padding: 26px 0; font-size: 15px; line-height: 1.9; }
.topic-single-footer {
  display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center;
  padding-top: 22px; border-top: 1px solid var(--color-border-light);
  max-width: 100%;
}
.topic-single-actions {
  flex: 1; min-width: 0;
  display: flex; align-items: center; justify-content: space-between; gap: 16px;
}
.topic-single-footer .post-like-btn,
.topic-single-footer .post-fav-btn,
.topic-single-footer .post-tip-btn,
.topic-single-footer .post-share-btn {
  margin: 0; padding: 4px 6px;
  border: 0; background: transparent;
  border-radius: 8px; cursor: pointer;
  font-size: 12px; color: var(--color-text-muted);
  display: inline-flex; align-items: center; justify-content: center; gap: 4px;
  white-space: nowrap; min-width: 0;
  transition: all var(--transition);
}
.topic-single-footer .post-like-btn svg,
.topic-single-footer .post-fav-btn svg,
.topic-single-footer .post-tip-btn svg,
.topic-single-footer .post-share-btn svg { width: 16px; height: 16px; }
.topic-single-footer .post-like-btn:hover { color: var(--color-accent); background: rgba(232, 160, 191, 0.1); }
.topic-single-footer .post-like-btn.liked { color: var(--color-accent); }
.topic-single-footer .post-fav-btn:hover { color: var(--color-primary); background: rgba(155, 126, 216, 0.1); }
.topic-single-footer .post-fav-btn.faved { color: var(--color-primary); }
.topic-single-footer .post-tip-btn:hover { color: #e56c9a; background: rgba(232, 160, 191, 0.1); }
.topic-single-footer .post-share-btn:hover { color: var(--color-primary); background: rgba(155, 126, 216, 0.1); }
.topic-single-footer .post-delete-btn { color: #ef4444; }
.topic-single-footer .post-delete-btn:hover { border-color: rgba(239, 68, 68, 0.4); }

/* 论坛回复区 */
.topic-comments { margin-top: 34px; }
.topic-comments-title { font-family: var(--font-serif); font-size: 18px; font-weight: 700; margin-bottom: 20px; }
.topic-comment-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 16px; }
.topic-comment-body { display: flex; gap: 12px; padding: 16px 18px; background: var(--color-bg); border-radius: var(--radius); }
.topic-comment-avatar { flex-shrink: 0; }
.topic-comment-avatar img { border-radius: 50%; }
.topic-comment-main { flex: 1; min-width: 0; }
.topic-comment-head { display: flex; align-items: center; gap: 10px; margin-bottom: 8px; }
.topic-comment-author { font-size: 13px; font-weight: 600; color: var(--color-text); text-decoration: none; }
.topic-comment-author:hover { color: var(--color-primary); }
.topic-comment-time { font-size: 11px; color: var(--color-text-muted); }
.topic-comment-text { font-size: 14px; line-height: 1.8; color: var(--color-text); word-break: break-word; }
.topic-comment-text p { margin: 0 0 8px; }
.topic-comment-text p:last-child { margin-bottom: 0; }
.topic-comment-reply { margin-top: 8px; font-size: 12px; }
.topic-comment-reply a { color: var(--color-text-muted); text-decoration: none; }
.topic-comment-reply a:hover { color: var(--color-primary); }
.topic-comments .children { list-style: none; margin: 14px 0 0 44px; padding: 0; }
.topic-comment-form-title { font-family: var(--font-serif); font-size: 16px; font-weight: 700; margin: 28px 0 14px; }
.topic-comment-form textarea {
  width: 100%; box-sizing: border-box; padding: 14px 16px;
  border: 1px solid var(--color-border-light); border-radius: var(--radius);
  background: var(--color-bg); font-size: 14px; color: var(--color-text);
  resize: vertical; outline: none; font-family: inherit;
}
.topic-comment-form textarea:focus { border-color: var(--color-primary); }
.topic-comment-form .submit {
  border: none; border-radius: 20px; padding: 10px 24px; cursor: pointer;
  font-size: 13px; font-weight: 500; color: #fff;
  background: linear-gradient(135deg, var(--color-primary), var(--color-accent));
}
.publish-manage-avatar {
  border: none; border-radius: 12px; font-size: 11px; padding: 4px 10px;
  cursor: pointer; white-space: nowrap;
  background: rgba(59, 130, 246, 0.1); color: #3b82f6;
}
.publish-manage-avatar:disabled { opacity: 0.5; cursor: wait; }

@media (max-width: 768px) {
  .section-hero { flex-direction: column; align-items: flex-start; }
  .section-hero-actions { flex-direction: row; align-items: center; }
  .topic-single { padding: 22px 18px; }
  .topic-card-foot { flex-direction: column; align-items: flex-start; gap: 8px; }
  .topic-card-meta { gap: 8px; }
}

/* 用户主页列表：保留横条卡片结构 */
.user-profile-list .topic-list {
  display: flex; flex-direction: column; gap: 1px;
  background: var(--color-border-light); border-radius: var(--radius-lg); overflow: hidden;
}
.user-profile-list .topic-card {
  display: flex; align-items: center; gap: 14px; padding: 16px;
  background: var(--color-surface); text-decoration: none; color: inherit;
  transition: background var(--transition);
}
.user-profile-list .topic-card:hover { background: var(--color-bg); transform: none; box-shadow: none; border-color: transparent; }

/* === 消息面板 === */
.message-list { display: flex; flex-direction: column; gap: 1px; background: var(--color-border-light); border-radius: var(--radius-lg); overflow: hidden; }

.message-item {
  display: flex; align-items: center; gap: 14px; padding: 16px;
  background: var(--color-surface); position: relative; transition: background var(--transition);
}
.message-item:hover { background: var(--color-bg); }
.message-item.unread { background: rgba(155,126,216,0.03); }

.message-avatar { width: 44px; height: 44px; border-radius: 50%; background: var(--color-border-light); flex-shrink: 0; }
.message-body { flex: 1; min-width: 0; }
.message-header { display: flex; align-items: baseline; justify-content: space-between; margin-bottom: 4px; }
.message-name { font-size: 15px; font-weight: 600; }
.message-time { font-size: 12px; color: var(--color-text-muted); }
.message-preview { font-size: 13px; color: var(--color-text-secondary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

.message-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--color-primary); flex-shrink: 0; }

.message-avatar {
  display: flex; align-items: center; justify-content: center;
  color: var(--color-primary);
}
.message-avatar-comment { background: rgba(155, 126, 216, 0.14); color: var(--color-primary); }
.message-avatar-shop { background: rgba(212, 175, 55, 0.14); color: #d4af37; }
.message-avatar-interact { background: rgba(239, 68, 68, 0.12); color: #ef4444; }
.message-avatar-levelup { background: rgba(245, 158, 11, 0.14); color: #f59e0b; }
.message-avatar-system { background: rgba(155, 126, 216, 0.14); color: var(--color-primary); }
.message-notification-toggle {
  display: block; width: 100%; padding: 0; margin: 0;
  background: none; border: none; cursor: pointer; text-align: left;
  font: inherit; color: var(--color-text-secondary);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  transition: color var(--transition);
}
.message-notification-toggle:hover { color: var(--color-primary); }
.notice-preview-title { font-weight: 600; color: var(--color-text); }
.message-notification-body {
  display: none; margin-top: 10px; padding-top: 10px;
  border-top: 1px dashed var(--color-border-light);
  font-size: 13px; line-height: 1.7; color: var(--color-text);
}
.message-notification-body p { margin: 0 0 8px; }
.notice-link {
  display: inline-block; font-size: 13px; color: var(--color-primary);
  text-decoration: none; font-weight: 500;
}
.notice-link:hover { text-decoration: underline; }
a.message-preview { text-decoration: none; transition: color var(--transition); }
a.message-preview:hover { color: var(--color-primary); }

.message-empty {
  text-align: center; padding: 48px 20px; background: var(--color-surface);
}
.message-empty p { font-size: 15px; color: var(--color-text-muted); margin: 0 0 16px; }
.message-empty a {
  display: inline-block; padding: 10px 26px; border-radius: 999px;
  background: linear-gradient(135deg, #A989E6 0%, #E56C9A 100%);
  color: #fff; text-decoration: none; font-size: 14px; font-weight: 600;
  box-shadow: 0 8px 26px rgba(155,126,216,0.45), 0 4px 12px rgba(229,108,154,0.30),
              inset 0 1px 0 rgba(255,255,255,0.35);
  transition: all var(--transition);
}
.message-empty a:hover {
  transform: translateY(-2px);
  box-shadow: 0 12px 32px rgba(155,126,216,0.55), 0 6px 16px rgba(229,108,154,0.40),
              inset 0 1px 0 rgba(255,255,255,0.35);
}

/* === 个人中心面板 === */
body.page-profile-dl {
  background:
    radial-gradient(1200px 500px at 85% -5%, rgba(232,160,191,.14) 0%, rgba(232,160,191,0) 60%),
    radial-gradient(1000px 460px at -10% 12%, rgba(155,126,216,.13) 0%, rgba(155,126,216,0) 55%),
    linear-gradient(170deg, #F5F0FB 0%, #FBF7FA 50%, #F4EFF8 100%);
}
.dark body.page-profile-dl,
body.page-profile-dl.dark {
  background:
    radial-gradient(1200px 500px at 85% -5%, rgba(155,126,216,.18) 0%, rgba(155,126,216,0) 60%),
    radial-gradient(1000px 460px at -10% 12%, rgba(232,160,191,.14) 0%, rgba(232,160,191,0) 55%),
    linear-gradient(170deg, #100D20 0%, #151127 50%, #0F0C1E 100%);
}

.profile-card {
  display: flex; align-items: center; gap: 20px; padding: 26px 28px;
  background: rgba(255,255,255,.62);
  -webkit-backdrop-filter: blur(14px); backdrop-filter: blur(14px);
  border: 1px solid rgba(155,126,216,.18);
  border-radius: 20px; margin-bottom: 22px;
  box-shadow: 0 14px 36px rgba(120,90,190,.13), 0 2px 8px rgba(120,90,190,.06);
  position: relative;
}

/* 1.7.48 — 小黑屋快捷入口（仅管理员可见） */
.dl-blacklist-btn {
  position: absolute; top: 18px; right: 18px;
  display: inline-flex; align-items: center; gap: 5px;
  padding: 6px 12px; border-radius: 999px;
  font-size: 12px; font-weight: 600; color: #fff; text-decoration: none;
  background: linear-gradient(135deg, #9B7ED8 0%, #E8A0BF 100%);
  box-shadow: 0 4px 14px rgba(155,126,216,.35);
  transition: transform .15s ease, box-shadow .15s ease, filter .15s ease;
}
.dl-blacklist-btn svg { width: 14px; height: 14px; flex-shrink: 0; }
.dl-blacklist-btn:hover {
  filter: brightness(1.08); transform: translateY(-1px);
  box-shadow: 0 6px 18px rgba(155,126,216,.45);
}
.dl-blacklist-btn.is-penalized {
  background: linear-gradient(135deg, #E56C9A 0%, #9B7ED8 100%);
  box-shadow: 0 4px 14px rgba(229,108,154,.4);
}
.user-profile-card .profile-card-info { padding-right: 84px; }
@media (max-width: 600px) {
  .dl-blacklist-btn { top: 12px; right: 12px; padding: 5px 9px; font-size: 11px; }
  .dl-blacklist-btn svg { width: 12px; height: 12px; }
  .user-profile-card .profile-card-info { padding-right: 74px; }
}

.dark .profile-card {
  background: rgba(22,18,42,.62);
  border-color: rgba(155,126,216,.25);
  box-shadow: 0 14px 36px rgba(0,0,0,.35);
}

.profile-card-avatar { flex-shrink: 0; }
.profile-card-avatar a {
  display: inline-flex;
  padding: 4px; border-radius: 50%;
  background: linear-gradient(135deg, #9B7ED8 0%, #E8A0BF 100%);
  box-shadow: 0 0 0 3px rgba(155,126,216,.16), 0 0 26px rgba(155,126,216,.5);
}
.profile-avatar { width: 92px; height: 92px; border-radius: 50%; object-fit: cover; display: block; border: 3px solid #fff; }
.profile-avatar-img { width: 92px; height: 92px; border-radius: 50%; object-fit: cover; border: 3px solid #fff; }
.dark .profile-avatar, .dark .profile-avatar-img { border-color: #17132B; }
.profile-avatar-placeholder {
  width: 92px; height: 92px; border-radius: 50%;
  background: linear-gradient(135deg, var(--color-primary-light), var(--color-accent-light));
  display: flex; align-items: center; justify-content: center;
  font-size: 40px; color: #fff; font-weight: 700; border: 3px solid #fff;
}
.dark .profile-avatar-placeholder { border-color: #17132B; }
.profile-card-info { flex: 1; min-width: 0; }
.profile-name {
  font-size: 26px; font-weight: 800; margin-bottom: 6px; display: flex;
  align-items: center; flex-wrap: wrap; gap: 8px; line-height: 1.3;
}
.profile-name-text {
  background: linear-gradient(135deg, #8F6FD0 0%, #E8A0BF 100%);
  -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text;
}
.profile-id {
  display: inline-block; padding: 1px 8px;
  font-size: 11px; font-weight: 400;
  color: var(--color-text-muted); background: rgba(155,126,216,.08);
  border-radius: 10px; -webkit-text-fill-color: var(--color-text-muted);
}
.profile-bio { font-size: 13px; color: var(--color-text-muted); line-height: 1.6; margin: 0; }
.profile-card-stats {
  display: flex; flex-wrap: wrap; align-items: center; gap: 8px 18px;
  margin: 10px 0 0; padding: 0; font-size: 12px; color: var(--color-text-muted);
}
.profile-card-stats .profile-stat {
  display: inline-flex; align-items: center; gap: 4px; line-height: 1;
}
.profile-card-stats .views-icon { width: 15px; height: 15px; flex-shrink: 0; }
.profile-card-stats .profile-stat:first-child { padding-right: 18px; border-right: 1px solid rgba(155,126,216,.16); }
.dark .profile-card-stats { color: rgba(226,218,246,.72); }
.dark .profile-card-stats .profile-stat:first-child { border-right-color: rgba(155,126,216,.22); }

/* 1.7.28 — 我的页头像/昵称/签名 → 编辑资料对应字段 */
.profile-name-text-link { text-decoration: none; }
.profile-name-text-link:hover .profile-name-text {
  filter: brightness(1.15);
}
.profile-bio-link { text-decoration: none; color: inherit; border-bottom: 1px dashed transparent; }
.profile-bio-link:hover { border-bottom-color: rgba(155,126,216,.4); color: var(--color-primary); }
.profile-card-avatar a:hover {
  box-shadow: 0 0 0 3px rgba(155,126,216,.24), 0 0 32px rgba(155,126,216,.65);
}
/* 编辑资料页锚点不被固定头部遮挡 */
.edit-profile-form .edit-field,
.edit-profile-form input,
.edit-profile-form textarea { scroll-margin-top: 96px; }

.profile-stats {
  display: flex; gap: 8px; margin-bottom: 18px;
  background: transparent;
  border-radius: 0;
}

.stat-item {
  flex: 1; display: flex; flex-direction: column; align-items: center; gap: 3px;
  padding: 11px 6px;
  background: rgba(155,126,216,0.03);
  border: none;
  border-radius: 14px;
  text-decoration: none;
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.12);
  transition: all .25s ease;
}
.stat-num { font-size: 17px; font-weight: 700; color: var(--color-primary); line-height: 1.2; }
.stat-label { font-size: 10px; color: var(--color-text-muted); font-weight: 500; }
.stat-item:hover {
  background: rgba(155,126,216,0.08);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.16);
}
.dark .stat-item {
  background: rgba(155,126,216,0.07);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.06);
}
.dark .stat-item:hover { background: rgba(155,126,216,0.13); }

/* 登录/注册按钮 */
.profile-auth {
  display: flex; gap: 12px; margin-bottom: 20px;
}
.profile-auth-btn {
  flex: 1; display: flex; align-items: center; justify-content: center;
  padding: 14px 0; border-radius: var(--radius-lg); font-size: 16px; font-weight: 600;
  text-decoration: none; transition: all var(--transition);
}
.profile-login-btn {
  background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-accent) 100%);
  color: #fff; box-shadow: 0 4px 16px rgba(155, 126, 216, 0.25);
}
.profile-login-btn:hover { transform: translateY(-1px); box-shadow: 0 6px 24px rgba(155, 126, 216, 0.4); }
.profile-register-btn {
  background: var(--color-surface); color: var(--color-primary);
  border: 1.5px solid var(--color-primary);
}
.profile-register-btn:hover { background: var(--color-primary); color: #fff; }

.profile-links {
  display: flex; flex-direction: column;
  background: rgba(255,255,255,.55);
  -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);
  border: 1px solid rgba(155,126,216,.14);
  border-radius: 16px; overflow: hidden;
  box-shadow: 0 6px 20px rgba(120,90,190,.08);
  margin-bottom: 18px;
}
.dark .profile-links {
  background: rgba(22,18,42,.5);
  border-color: rgba(155,126,216,.2);
  box-shadow: 0 6px 20px rgba(0,0,0,.28);
}

.profile-link-item {
  display: flex; align-items: center; justify-content: space-between; padding: 16px 20px;
  background: transparent; text-decoration: none; color: var(--color-text);
  transition: background var(--transition); font-size: 15px; font-weight: 500;
}
.profile-link-item + .profile-link-item {
  border-top: 1px solid rgba(155,126,216,.12);
}
.profile-link-item:hover { background: rgba(155,126,216,.08); }
.profile-link-item .arr { width: 16px; height: 16px; color: var(--color-text-muted); flex-shrink: 0; }

/* 成长入口 */
.profile-growth-entry { margin-bottom: 12px; }
.profile-growth-entry .profile-link-left {
  display: flex; align-items: center; gap: 10px;
}
.profile-link-points { font-size: 13px; color: var(--color-text-muted); }

/* 退出登录：描边按钮，与菜单拉开距离 */
.profile-logout { margin-top: 26px; }
.profile-logout-btn {
  display: flex; align-items: center; justify-content: center; width: 100%;
  padding: 12px 0; border-radius: 999px;
  background: transparent; color: var(--color-primary);
  border: 1.5px solid rgba(155,126,216,.55);
  font-size: 14px; font-weight: 600; text-decoration: none;
  letter-spacing: 0.04em;
  transition: all var(--transition);
}
.profile-logout-btn:hover {
  color: #fff; border-color: transparent;
  background: linear-gradient(135deg, #7E5FBF 0%, #E08AB0 100%);
  box-shadow: 0 6px 20px rgba(126,95,191,.4);
}

/* === 成长体系 — 签到卡 === */
.growth-sign-card {
  position: relative;
  background: linear-gradient(135deg, rgba(155,126,216,0.08) 0%, rgba(232,160,191,0.06) 100%);
  border: 1px solid var(--color-border-light);
  border-radius: var(--radius-lg);
  padding: 22px 24px;
  margin-bottom: 20px;
  overflow: hidden;
}

/* 顶部：当前积分 + 等级徽章 横向并排 */
.growth-sign-hero {
  display: flex; align-items: center; justify-content: space-between; gap: 14px; flex-wrap: wrap;
}
.growth-points { display: flex; align-items: baseline; gap: 6px; }
.growth-hero-num {
  font-size: 42px; font-weight: 900; line-height: 1;
  background: linear-gradient(135deg, #8F6FD0 0%, #E8A0BF 100%);
  -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text;
  filter: drop-shadow(0 1px 6px rgba(155,126,216,.25));
}
.growth-points-label { font-size: 12px; color: var(--color-text-muted); font-weight: 500; }
.growth-level-badge {
  display: inline-block;
  padding: 6px 14px; border-radius: 999px; font-size: 13px; font-weight: 700;
  background: rgba(155,126,216,.12);
  border: 1px solid rgba(155,126,216,.3);
  -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
}
.growth-level-badge .growth-level-name {
  background: linear-gradient(135deg, #8F6FD0 0%, #E8A0BF 100%);
  -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text;
}

/* 签到按钮（全卡片视觉焦点） */
.growth-sign-action { display: flex; justify-content: center; margin: 18px 0 8px; }
.growth-sign-btn {
  position: relative; overflow: hidden;
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  width: 78%; max-width: 340px; padding: 14px 0;
  border: none; border-radius: 999px; cursor: pointer;
  background: linear-gradient(135deg, #7E5FBF 0%, #E08AB0 100%);
  color: #fff; font-size: 16px; font-weight: 700; font-family: var(--font-sans);
  box-shadow:
    inset 0 0 0 1px rgba(255,255,255,.3),
    inset 0 1px 0 rgba(255,255,255,.35),
    0 8px 26px rgba(126,95,191,.55);
  transition: transform var(--transition), box-shadow var(--transition), filter var(--transition);
  animation: dlBtnBreath 2.6s ease-in-out infinite;
}
.growth-sign-btn:hover {
  transform: translateY(-2px);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.35), inset 0 1px 0 rgba(255,255,255,.4), 0 12px 32px rgba(126,95,191,.65);
}
.growth-sign-btn:active { transform: scale(.96); }
.growth-sign-btn:disabled { cursor: not-allowed; filter: saturate(.55) brightness(.92); animation: none; transform: none; }
.growth-sign-btn .sign-btn-star { color: #F5C76B; flex-shrink: 0; }
@keyframes dlBtnBreath {
  0%, 100% { filter: brightness(1); box-shadow: inset 0 0 0 1px rgba(255,255,255,.3), inset 0 1px 0 rgba(255,255,255,.35), 0 8px 26px rgba(126,95,191,.55); }
  50% { filter: brightness(1.14); box-shadow: inset 0 0 0 1px rgba(255,255,255,.35), inset 0 1px 0 rgba(255,255,255,.4), 0 10px 32px rgba(126,95,191,.7); }
}
.growth-sign-btn .ripple {
  position: absolute; border-radius: 50%; pointer-events: none;
  background: rgba(255,255,255,.5); transform: scale(0); animation: dlRipple .6s ease-out forwards;
}
@keyframes dlRipple { to { transform: scale(1); opacity: 0; } }

.growth-sign-done {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  width: 78%; max-width: 340px; padding: 14px 0; border-radius: 999px;
  background: linear-gradient(135deg, #7E5FBF 0%, #E08AB0 100%);
  color: #fff; border: 1px solid rgba(255,255,255,.4);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.35), 0 4px 16px rgba(126,95,191,.4);
  font-size: 15px; font-weight: 700; font-family: var(--font-sans);
}
.growth-sign-done svg { color: #fff; }

/* 主进度条：一条线 = 填充长度（连签推进）+ 里程碑节点（亮灭） */
.galaxy-track { position: relative; height: 90px; margin-top: 6px; }
.galaxy-line {
  position: absolute; top: 22px; left: 0; right: 0; height: 6px; border-radius: 3px;
  background: var(--color-border-light);
  overflow: hidden;
}
.galaxy-fill {
  height: 100%; border-radius: 3px;
  background: linear-gradient(90deg, #9B7ED8, #E8A0BF);
  box-shadow: 0 0 10px rgba(155,126,216,.5);
  transition: width .6s ease;
}
.galaxy-node { position: absolute; top: 18px; transform: translateX(-50%); text-align: center; }
.galaxy-node-dot {
  display: block; width: 13px; height: 13px; margin: 0 auto; border-radius: 50%;
  background: #E3DFEC;
  border: 1.5px solid rgba(155,126,216,.5);
  transition: all .4s ease;
}
.galaxy-node-days { display: block; margin-top: 6px; font-size: 10px; color: var(--color-text-muted); white-space: nowrap; }
.galaxy-node-bonus { display: block; font-size: 10px; color: var(--color-text-muted); opacity: .7; white-space: nowrap; }
.galaxy-node-done .galaxy-node-dot {
  background: radial-gradient(circle, #F5C76B 0%, #F5C76B 16%, #B58FE8 34%, #8F6FD0 100%);
  border-color: transparent;
  box-shadow: 0 0 0 2px rgba(155,126,216,.75), 0 0 10px rgba(155,126,216,.6);
}
.galaxy-node-done .galaxy-node-days { color: var(--color-text-secondary); font-weight: 600; }
.galaxy-node-done .galaxy-node-bonus { color: #8F6FD0; opacity: 1; font-weight: 600; }

/* 进度说明：最淡灰小字 */
.galaxy-meta {
  display: flex; justify-content: space-between; gap: 10px; margin-top: 10px;
}
.galaxy-meta span { font-size: 11px; color: var(--color-text-muted); opacity: .8; }

.growth-sign-msg {
  padding: 10px 14px; border-radius: var(--radius); margin: 14px 0 0;
  font-size: 13px; font-weight: 600; text-align: center;
}
.growth-msg-success {
  background: linear-gradient(135deg, rgba(155,126,216,.12), rgba(232,160,191,.08));
  color: var(--color-primary); border: 1px solid var(--color-border);
}
.growth-msg-error { background: rgba(233,30,99,.08); color: #d81b60; }

/* 签到成功动效 — 星光粒子 */
.sign-spark {
  position: fixed; pointer-events: none; z-index: 9999; color: #F5C76B;
  animation: dlSparkFly linear forwards;
}
.sign-spark svg { width: 13px; height: 13px; filter: drop-shadow(0 0 6px rgba(245,199,107,.85)); }
@keyframes dlSparkFly {
  0% { transform: translate(0, 0) scale(.3) rotate(0deg); opacity: 0; }
  15% { opacity: 1; }
  100% { transform: translate(var(--sx, 0), var(--sy, -120px)) scale(1.15) rotate(160deg); opacity: 0; }
}

/* 签到成功动效 — 里程碑弹窗 */
.milestone-overlay {
  position: fixed; inset: 0; z-index: 10000;
  display: flex; align-items: center; justify-content: center;
  background: rgba(20,10,40,.35); backdrop-filter: blur(4px);
  animation: dlFadeIn .3s ease;
  cursor: pointer;
}
.milestone-pop {
  text-align: center; padding: 28px 42px; border-radius: 22px;
  background: linear-gradient(160deg, #FFF9EC, #FFF0D0);
  border: 1px solid rgba(245,199,107,.65);
  box-shadow: 0 14px 44px rgba(224,169,68,.4);
  animation: dlPopIn .5s cubic-bezier(.34,1.56,.64,1);
}
.dark .milestone-pop { background: linear-gradient(160deg, #2A2110, #1C170A); }
.milestone-star {
  display: inline-block; color: #E0A944; animation: dlStarSpin 1.2s ease-in-out infinite;
  filter: drop-shadow(0 0 8px rgba(245,199,107,.7));
}
@keyframes dlStarSpin { 0%, 100% { transform: scale(1) rotate(0deg); } 50% { transform: scale(1.18) rotate(18deg); } }
.milestone-title { margin: 10px 0 4px; font-size: 20px; font-weight: 800; color: #B8860B; }
.milestone-sub { font-size: 13px; color: #8A6D2F; }
.dark .milestone-title { color: #F0C76B; }
.dark .milestone-sub { color: #C9A85A; }
@keyframes dlFadeIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes dlPopIn { from { transform: scale(.6); opacity: 0; } to { transform: scale(1); opacity: 1; } }

/* === 成长中心 — 连签奖励 / 积分记录 === */
.growth-back-link {
  display: inline-flex; align-items: center; gap: 4px;
  color: var(--color-text-muted); text-decoration: none;
  font-size: 14px; font-weight: 500; margin-bottom: 16px;
  transition: color var(--transition);
}
.growth-back-link:hover { color: var(--color-primary); }

.growth-log-card {
  background: var(--color-surface);
  border: 1px solid var(--color-border-light);
  border-radius: var(--radius-lg);
  padding: 18px 20px;
  margin-bottom: 16px;
}

.growth-section-title {
  font-size: 14px; font-weight: 600; color: var(--color-text-secondary);
  margin: 0 0 14px; padding: 0;
}

/* === 成长中心 — 徽章墙 === */
.growth-badges-card {
  background: var(--color-surface);
  border: 1px solid var(--color-border-light);
  border-radius: var(--radius-lg);
  padding: 18px 20px;
  margin-bottom: 16px;
}
.growth-badge-count {
  margin-left: 6px; font-size: 12px; font-weight: 600;
  color: #D81B60; background: rgba(233,30,99,.08);
  padding: 1px 10px; border-radius: 12px; vertical-align: 1px;
}
.growth-badge-grid {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(96px, 1fr)); gap: 10px;
}
.growth-badge-item {
  text-align: center; padding: 12px 6px 10px; border-radius: var(--radius);
  background: var(--color-bg); border: 1px solid var(--color-border-light);
  transition: transform var(--transition), opacity var(--transition), border-color var(--transition);
}
.growth-badge-item .growth-badge-icon img {
  width: 56px; height: 56px; border-radius: 50%;
  transition: filter var(--transition), box-shadow var(--transition);
}
.growth-badge-owned .growth-badge-icon img {
  filter: none; box-shadow: 0 0 14px rgba(233,30,99,.35);
}
.growth-badge-locked { opacity: .6; }
.growth-badge-locked .growth-badge-icon img { filter: grayscale(1); opacity: .7; }
.growth-badge-flash { animation: dlBadgeFlash .8s cubic-bezier(.4,0,.2,1); border-color: rgba(233,30,99,.5); }
@keyframes dlBadgeFlash {
  0% { transform: scale(.7); opacity: .2; }
  60% { transform: scale(1.12); }
  100% { transform: scale(1); opacity: 1; }
}
.growth-badge-name { display: block; font-size: 12px; font-weight: 600; margin-top: 6px; color: var(--color-text-secondary); }
.growth-badge-desc { display: block; font-size: 11px; color: var(--color-text-muted); margin-top: 2px; line-height: 1.4; }
.dark .growth-badge-owned .growth-badge-icon img { box-shadow: 0 0 16px rgba(233,30,99,.45); }

/* === 昵称伴随标识（等级小字 + 佩戴徽章图片） === */
.dl-user-level {
  display: inline-block; vertical-align: middle; margin-left: 6px;
  font-size: 11px; font-weight: 500; color: var(--color-text-muted);
  line-height: 1; white-space: nowrap;
}
.dark .dl-user-level { color: rgba(255,255,255,.55); }

/* 佩戴徽章：仅图片 */
.dl-user-wearing {
  display: inline-flex; align-items: center;
  vertical-align: middle; margin-left: 4px;
  line-height: 0;
}
.dl-user-wearing-icon img {
  width: 18px; height: 18px; border-radius: 50%; display: block;
  box-shadow: 0 0 8px rgba(233,30,99,.35);
}

/* === 会员徽章（浮生 / 若梦 / 曜辰 三款形制皇冠） === */
.dl-member-badge {
  display: inline-block; vertical-align: middle; margin-left: 4px;
  line-height: 0;
}

/* === 会员皇冠图标（通用容器 + 动态效果） === */
.dl-crown {
  display: inline-block; line-height: 0; vertical-align: middle;
}
.dl-crown svg { display: block; overflow: visible; }
.dl-crown .dl-crown-gem {
  transform-box: fill-box; transform-origin: center;
  animation: dlCrownGem 2.6s ease-in-out infinite;
}
.dl-crown .dl-crown-sheen {
  transform-box: view-box;
  animation: dlCrownSheen 3.4s ease-in-out infinite;
}
.dl-crown .dl-crown-star {
  transform-box: fill-box; transform-origin: center;
  animation: dlCrownSpin 8s linear infinite;
}
.dl-crown .dl-crown-star-r { animation-duration: 9.5s; animation-direction: reverse; }

@keyframes dlCrownGem {
  0%, 100% { opacity: 1; }
  50% { opacity: .4; }
}
@keyframes dlCrownSheen {
  0% { opacity: 0; transform: translateX(-16px); }
  30% { opacity: .75; }
  55% { opacity: .75; }
  85%, 100% { opacity: 0; transform: translateX(16px); }
}
@keyframes dlCrownSpin {
  to { transform: rotate(360deg); }
}

.dl-crown-glow1 {
  filter: drop-shadow(0 3px 6px rgba(125,143,165,.35));
  animation: dlCrownGlow1 3.8s ease-in-out infinite;
}
.dl-crown-glow2 {
  filter: drop-shadow(0 3px 6px rgba(226,170,62,.4));
  animation: dlCrownGlow2 3.8s ease-in-out infinite;
}
.dl-crown-glow3 {
  filter: drop-shadow(0 3px 8px rgba(169,134,230,.5));
  animation: dlCrownGlow3 3.6s ease-in-out infinite;
}
@keyframes dlCrownGlow1 {
  0%, 100% { filter: drop-shadow(0 3px 6px rgba(125,143,165,.35)); }
  50% { filter: drop-shadow(0 3px 14px rgba(125,143,165,.7)); }
}
@keyframes dlCrownGlow2 {
  0%, 100% { filter: drop-shadow(0 3px 6px rgba(226,170,62,.4)); }
  50% { filter: drop-shadow(0 3px 14px rgba(226,170,62,.75)); }
}
@keyframes dlCrownGlow3 {
  0%, 100% { filter: drop-shadow(0 3px 8px rgba(169,134,230,.5)); }
  50% { filter: drop-shadow(0 3px 16px rgba(169,134,230,.85)); }
}

/* 昵称旁小皇冠：取消冠面流光，保留宝石脉冲与光晕，避免小尺寸晃动 */
.dl-member-badge .dl-crown .dl-crown-sheen { animation: none; }

/* === 徽章墙 — 佩戴按钮 === */
.growth-badge-wear-btn {
  display: block; margin: 8px auto 0; padding: 3px 12px;
  font-size: 12px; font-weight: 600; cursor: pointer;
  color: #D81B60; background: rgba(233,30,99,.08);
  border: 1px solid rgba(233,30,99,.2); border-radius: 12px;
  transition: all var(--transition);
}
.growth-badge-wear-btn:hover { background: rgba(233,30,99,.16); }
.growth-badge-wear-btn.wearing {
  color: #fff; background: linear-gradient(135deg, #E91E63, #C2185B);
  border-color: transparent;
}
.growth-badge-wearing {
  border-color: rgba(233,30,99,.45);
  box-shadow: 0 0 14px rgba(233,30,99,.18);
}

/* === 个人中心 — 徽章计数 === */
.profile-badge-count {
  font-size: 12px; font-weight: 600; letter-spacing: 0.02em;
  color: #8F6FD0; background: rgba(155,126,216,.1);
  border: 1px solid rgba(155,126,216,.25);
  border-radius: 10px; padding: 1px 9px; white-space: nowrap;
}
.dark .profile-badge-count { color: #C9B1F0; background: rgba(155,126,216,.16); border-color: rgba(155,126,216,.35); }

.growth-log-list { display: flex; flex-direction: column; gap: 2px; }

.growth-log-item {
  display: flex; align-items: center; gap: 12px;
  padding: 12px 0; font-size: 13px;
  border-bottom: 1px solid var(--color-border-light);
}

.growth-log-item:last-child { border-bottom: none; }

.growth-log-main { flex: 1; display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; min-width: 0; }

.growth-log-type {
  font-size: 11px; color: #e56c9a; font-weight: 600;
  background: rgba(229, 108, 154, 0.1); border: 1px solid rgba(229, 108, 154, 0.28);
  border-radius: 999px; padding: 1px 8px; white-space: nowrap;
}

.growth-log-reason { color: var(--color-text); }

.growth-log-ref-wrap { min-width: 0; }
.growth-log-ref {
  color: var(--color-primary); text-decoration: none; font-size: 12px;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 180px; display: inline-block;
  vertical-align: bottom;
}
.growth-log-ref:hover { text-decoration: underline; }

.growth-log-date { color: var(--color-text-muted); font-size: 12px; margin-left: auto; }

.growth-log-side { text-align: right; display: flex; flex-direction: column; gap: 2px; align-items: flex-end; flex-shrink: 0; }

.growth-log-amount { font-weight: 600; font-size: 13px; }
.growth-log-amount-positive { color: #34c759; }
.growth-log-amount-negative { color: #ff3b30; }

.growth-log-balance { color: var(--color-text-muted); font-size: 11px; }

.growth-log-pagination { display: flex; gap: 6px; justify-content: center; margin-top: 14px; flex-wrap: wrap; }
.growth-log-page {
  min-width: 28px; height: 28px; line-height: 28px; text-align: center;
  border-radius: 8px; font-size: 13px; color: var(--color-text-muted);
  background: rgba(255, 255, 255, 0.06); text-decoration: none;
}
.growth-log-page.current { background: var(--color-primary); color: #fff; }
.growth-log-page:hover { text-decoration: none; opacity: 0.85; }

/* 积分记录：防横向溢出 + 长文本合理折行（不挤压成竖排） */
.growth-log-card { min-width: 0; overflow-wrap: anywhere; }
.growth-log-item { min-width: 0; }
.growth-log-main { min-width: 0; }
.growth-log-reason { overflow-wrap: anywhere; word-break: break-word; min-width: 0; }
.growth-log-side { flex-shrink: 0; }

/* === 编辑资料页 === */
.edit-profile-header {
  display: flex; align-items: center; justify-content: space-between;
  margin-bottom: 24px; flex-wrap: wrap; gap: 8px;
}
.edit-profile-title { font-size: 22px; font-weight: 700; color: var(--color-text); margin: 0; }
.edit-profile-back {
  font-size: 14px; color: var(--color-primary); text-decoration: none; font-weight: 500;
}
.edit-profile-back:hover { text-decoration: underline; }

.edit-profile-msg {
  padding: 12px 16px; border-radius: var(--radius); margin-bottom: 16px; font-size: 14px;
}
.edit-success { background: rgba(233, 30, 99, 0.1); color: #d81b60; border: 1px solid rgba(233, 30, 99, 0.2); }
.edit-error { background: rgba(233, 30, 99, 0.08); color: #d81b60; border: 1px solid rgba(233, 30, 99, 0.15); }

.edit-profile-form {
  background: var(--color-surface); border-radius: var(--radius-lg); padding: 24px;
  border: 1px solid var(--color-border-light);
}
.edit-field { margin-bottom: 18px; }
.edit-field label {
  display: block; font-size: 13px; font-weight: 600; color: var(--color-text-muted);
  margin-bottom: 6px; text-transform: uppercase; letter-spacing: 0.5px;
}
.edit-field input[type="text"],
.edit-field input[type="email"],
.edit-field input[type="password"],
.edit-field textarea {
  width: 100%; padding: 12px 14px; border: 1.5px solid var(--color-border);
  border-radius: var(--radius); background: var(--color-bg); color: var(--color-text);
  font-size: 15px; font-family: inherit; outline: none; transition: border-color var(--transition);
  box-sizing: border-box;
}
.edit-field input:focus,
.edit-field textarea:focus { border-color: var(--color-primary); }
.edit-field input:disabled {
  opacity: 0.5; cursor: not-allowed;
}
.edit-field textarea { resize: vertical; min-height: 80px; }

.edit-divider {
  border: none; border-top: 1px solid var(--color-border-light); margin: 24px 0;
}
.edit-password-hint {
  font-size: 13px; color: var(--color-text-muted); margin-bottom: 18px;
}

.edit-profile-submit {
  width: 100%; padding: 14px 0; border: none; border-radius: var(--radius);
  background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-accent) 100%);
  color: #fff; font-size: 16px; font-weight: 600; cursor: pointer;
  transition: all var(--transition);
  box-shadow: 0 4px 16px rgba(155, 126, 216, 0.25);
}
.edit-profile-submit:hover {
  transform: translateY(-1px); box-shadow: 0 6px 24px rgba(155, 126, 216, 0.4);
}

/* === 编辑资料 — 头像 === */
.edit-avatar-preview { margin-bottom: 14px; }
.edit-avatar-preview img {
  width: 96px; height: 96px; border-radius: 50%; object-fit: cover;
  border: 3px solid #fff; box-shadow: 0 0 0 3px rgba(155,126,216,.3), 0 6px 18px rgba(120,90,190,.18);
}
.edit-avatar-tabs { display: flex; gap: 8px; margin-bottom: 14px; }
.edit-avatar-tab {
  padding: 7px 16px; border-radius: 999px; cursor: pointer;
  border: 1.5px solid var(--color-border); background: transparent;
  color: var(--color-text-muted); font-size: 13px; font-weight: 600; font-family: inherit;
  transition: all var(--transition);
}
.edit-avatar-tab.active {
  background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-accent) 100%);
  color: #fff; border-color: transparent; box-shadow: 0 4px 14px rgba(155,126,216,.3);
}
.edit-avatar-grid { display: grid; grid-template-columns: repeat(6, 1fr); gap: 10px; margin-bottom: 10px; }
.avatar-option { position: relative; cursor: pointer; }
.avatar-option input { position: absolute; opacity: 0; pointer-events: none; }
.avatar-option img {
  width: 100%; aspect-ratio: 1; border-radius: 14px; object-fit: cover;
  border: 2px solid transparent; transition: all var(--transition);
}
.avatar-option input:checked + img {
  border-color: #8F6FD0;
  box-shadow: 0 0 0 2px rgba(155,126,216,.3), 0 6px 16px rgba(120,90,190,.25);
  transform: translateY(-2px);
}
.edit-avatar-hint { font-size: 12px; color: var(--color-text-muted); margin: 6px 0 0; }
.edit-avatar-field input[type="file"] {
  width: 100%; padding: 12px 14px; border: 1.5px dashed var(--color-border);
  border-radius: var(--radius); background: var(--color-bg); font-size: 13px;
}
.edit-avatar-clear {
  display: inline-flex; align-items: center; gap: 6px; margin-top: 12px;
  font-size: 13px; color: var(--color-text-muted); cursor: pointer;
}
.edit-avatar-clear input { accent-color: #8F6FD0; }

/* === 我的评论页 === */
.comments-page-header,
.favorites-page-header {
  display: flex; align-items: center; justify-content: space-between;
  margin-bottom: 24px; flex-wrap: wrap; gap: 8px;
}
.comments-page-title,
.favorites-page-title { font-size: 22px; font-weight: 700; color: var(--color-text); margin: 0; }
.comments-page-back,
.favorites-page-back {
  font-size: 14px; color: var(--color-primary); text-decoration: none; font-weight: 500;
}
.comments-page-back:hover,
.favorites-page-back:hover { text-decoration: underline; }

.comments-empty,
.favorites-empty {
  text-align: center; padding: 48px 20px;
}
.comments-empty p,
.favorites-empty p {
  font-size: 15px; color: var(--color-text-muted); margin: 0 0 16px;
}
.comments-browse-btn,
.favorites-browse-btn {
  display: inline-block; padding: 10px 28px; border-radius: var(--radius);
  background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-accent) 100%);
  color: #fff; text-decoration: none; font-size: 14px; font-weight: 500;
  transition: all var(--transition);
}
.comments-browse-btn:hover,
.favorites-browse-btn:hover { transform: translateY(-1px); opacity: 0.92; }

.favorites-list { display: flex; flex-direction: column; gap: 12px; }
.favorite-item {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  background: var(--color-surface); padding: 16px 20px;
  border: 1px solid var(--color-border-light); border-radius: var(--radius);
  transition: box-shadow var(--transition);
}
.favorite-item:hover { box-shadow: 0 4px 16px rgba(0, 0, 0, 0.06); }
.favorite-item-main { flex: 1; min-width: 0; text-decoration: none; }
.favorite-item-title {
  font-size: 16px; font-weight: 600; color: var(--color-text);
  display: flex; align-items: center; gap: 8px; margin: 0 0 6px;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.favorite-item-type {
  flex-shrink: 0; font-size: 11px; font-weight: 500; color: var(--color-primary);
  border: 1px solid currentColor; border-radius: 4px; padding: 1px 6px;
}
.favorite-item-meta { font-size: 12px; color: var(--color-text-muted); margin: 0; }
.favorite-remove {
  flex-shrink: 0; display: inline-flex; align-items: center; gap: 6px;
  padding: 6px 12px; background: transparent; border: 1px solid var(--color-border-light);
  border-radius: 16px; color: var(--color-text-muted); font-size: 13px; cursor: pointer;
  transition: all var(--transition);
}
.favorite-remove:hover { border-color: #fca5a5; color: #ef4444; }
.favorite-remove:disabled { opacity: 0.6; cursor: default; }

.user-comments-list { display: flex; flex-direction: column; gap: 1px; }
.user-comment-item {
  background: var(--color-surface); padding: 16px 20px;
  border: 1px solid var(--color-border-light); border-radius: var(--radius);
}
.user-comment-meta { margin-bottom: 8px; }
.comment-date { font-size: 12px; color: var(--color-text-muted); }
.user-comment-body {
  font-size: 14px; color: var(--color-text); line-height: 1.6;
  margin-bottom: 10px; word-break: break-word;
}
.user-comment-source {
  font-size: 13px; color: var(--color-primary); text-decoration: none;
}
.user-comment-source:hover { text-decoration: underline; }

.user-comments-pagination { margin-top: 24px; display: flex; justify-content: center; }
.user-comments-pagination .page-numbers {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 36px; height: 36px; padding: 0 10px;
  border-radius: var(--radius); background: var(--color-surface);
  border: 1px solid var(--color-border-light); color: var(--color-text);
  text-decoration: none; font-size: 14px; margin: 0 3px;
  transition: all var(--transition);
}
.user-comments-pagination .page-numbers.current {
  background: var(--color-primary); color: #fff; border-color: var(--color-primary);
}
.user-comments-pagination .page-numbers:hover:not(.current):not(.dots) {
  background: var(--color-bg); border-color: var(--color-primary);
}

/* === 认证弹窗 === */

/* 遮罩 */
.auth-overlay {
  display: none; position: fixed; inset: 0; z-index: 9999;
  background: rgba(0, 0, 0, 0.5);
  backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px);
  align-items: center; justify-content: center; padding: 20px;
}
.auth-overlay.open { display: flex; }

/* 卡片 */
.auth-modal-card {
  position: relative; width: 100%; max-width: 400px; max-height: 90vh;
  overflow-y: auto; background: var(--color-surface, #fff);
  border-radius: 16px; padding: 40px 32px 32px;
  box-shadow: 0 24px 64px rgba(0, 0, 0, 0.25);
  animation: authFadeIn 0.25s ease-out;
}
@keyframes authFadeIn {
  from { opacity: 0; transform: translateY(16px) scale(0.97); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}

/* 关闭按钮 */
.auth-modal-close {
  position: absolute; top: 16px; right: 16px;
  width: 32px; height: 32px; border: none; background: none;
  font-size: 22px; line-height: 1; color: var(--color-text-muted);
  cursor: pointer; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  transition: background var(--transition), color var(--transition);
}
.auth-modal-close:hover { background: rgba(0, 0, 0, 0.06); color: var(--color-text); }
.dark .auth-modal-close:hover { background: rgba(255, 255, 255, 0.08); }

/* 品牌名 */
.auth-modal-brand {
  text-align: center; font-size: 16px; font-weight: 700;
  letter-spacing: 0.05em; margin-bottom: 32px;
  background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-accent) 100%);
  -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text;
}

/* 标题 + 切换链接 */
.auth-modal-title { font-size: 22px; font-weight: 700; text-align: center; margin-bottom: 4px; }
.auth-modal-switch { font-size: 13px; color: var(--color-text-muted); text-align: center; margin-bottom: 28px; }
.auth-modal-switch a { color: var(--color-primary); text-decoration: none; }
.auth-modal-switch a:hover { text-decoration: underline; }

/* 输入框 */
.auth-input {
  display: block; width: 100%; margin-bottom: 14px; padding: 12px 16px;
  font-size: 15px; box-sizing: border-box; outline: none;
  border: 1.5px solid var(--color-border); border-radius: var(--radius-md);
  background: rgba(155, 126, 216, 0.04); color: var(--color-text);
  transition: border-color var(--transition), box-shadow var(--transition), background var(--transition);
}
.auth-input::placeholder { color: var(--color-text-muted); }
.auth-input:focus {
  border-color: var(--color-primary);
  background: rgba(155, 126, 216, 0.06);
  box-shadow: 0 0 0 4px rgba(155, 126, 216, 0.12);
}

/* 密码 + 眼睛图标 */
.auth-pass-group { position: relative; margin-bottom: 14px; }
.auth-pass-group .auth-input { margin-bottom: 0; padding-right: 44px; }
.auth-eye {
  position: absolute; right: 12px; top: 50%; transform: translateY(-50%);
  width: 20px; height: 20px; border: none; background: none; cursor: pointer;
  color: var(--color-text-muted); padding: 0; line-height: 1;
  display: flex; align-items: center; justify-content: center;
}
.auth-eye svg { width: 20px; height: 20px; }
.auth-eye .auth-eye-off { display: none; }
.auth-eye.active .auth-eye-off { display: block; }
.auth-eye.active svg:first-child { display: none; }
.auth-eye:hover { color: var(--color-text); }

/* 记住 + 忘记密码 */
.auth-modal-actions {
  display: flex; align-items: center; justify-content: space-between;
  margin-bottom: 22px;
}

/* 复选框 */
.auth-checkbox { display: flex; align-items: center; gap: 6px; cursor: pointer; }
.auth-checkbox input { position: absolute; opacity: 0; width: 0; height: 0; }
.auth-checkbox-mark {
  width: 16px; height: 16px; flex-shrink: 0;
  border: 2px solid var(--color-border); border-radius: 3px;
  transition: all var(--transition); position: relative;
}
.auth-checkbox input:checked + .auth-checkbox-mark {
  background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-accent) 100%);
  border-color: transparent;
}
.auth-checkbox input:checked + .auth-checkbox-mark::after {
  content: ''; position: absolute; left: 4px; top: 1px;
  width: 5px; height: 9px; border: solid #fff; border-width: 0 2px 2px 0;
  transform: rotate(45deg);
}
.auth-checkbox-label { font-size: 13px; color: var(--color-text-secondary); }

/* 忘记密码 */
.auth-forget { font-size: 13px; color: var(--color-text-muted); text-decoration: none; }
.auth-forget:hover { color: var(--color-primary); }

/* 主按钮 */
.auth-btn {
  width: 100%; padding: 13px 0; font-size: 16px; font-weight: 600; border: none;
  border-radius: var(--radius-md); cursor: pointer;
  background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-accent) 100%);
  color: #fff;
  transition: transform var(--transition), box-shadow var(--transition), opacity var(--transition);
  box-shadow: 0 4px 20px rgba(155, 126, 216, 0.3);
}
.auth-btn:hover { transform: translateY(-2px); box-shadow: 0 8px 30px rgba(155, 126, 216, 0.45); }
.auth-btn:active { transform: translateY(0); }
.auth-btn:disabled { opacity: 0.7; cursor: not-allowed; transform: none; }

/* 提示消息 */
.auth-modal-msg {
  padding: 10px 14px; border-radius: var(--radius-sm); font-size: 13px;
  margin-bottom: 14px;
}
.auth-modal-msg.auth-msg-error { background: #FFF0F6; color: #D81B60; }
.auth-modal-msg.auth-msg-success { background: #FFF0F6; color: #D81B60; }

/* 底部条款 */
.auth-modal-terms {
  text-align: center; margin-top: 22px; font-size: 12px; color: var(--color-text-muted);
}
.auth-modal-terms a { color: var(--color-text-muted); text-decoration: underline; }

/* 认证 tabs */
.auth-tabs { display: flex; gap: 8px; margin-bottom: 20px; border-bottom: 1px solid var(--color-border-light); padding-bottom: 0; }
.auth-tab {
  flex: 1; padding: 8px 0; border: none; background: none;
  font-size: 14px; font-weight: 500; color: var(--color-text-muted);
  cursor: pointer; border-bottom: 2px solid transparent;
  transition: all 0.2s ease;
}
.auth-tab.active { color: var(--color-primary); border-bottom-color: var(--color-primary); }
.auth-tab:hover { color: var(--color-text); }

/* 验证码输入行 */
.auth-code-row { display: flex; gap: 10px; margin-bottom: 16px; align-items: center; }
.auth-code-input {
  flex: 1; min-width: 0;
  font-size: 22px; font-weight: 700; letter-spacing: 8px; text-align: center;
  padding: 11px 12px; margin-bottom: 0;
}
.auth-code-input::placeholder {
  font-size: 14px; font-weight: 400; letter-spacing: 1px; color: var(--color-text-muted);
}
.auth-send-code-btn {
  width: auto; flex: 0 0 auto; flex-shrink: 0; padding: 0 12px; height: 40px;
  font-size: 12px; font-weight: 600;
  white-space: nowrap; border-radius: var(--radius-md); cursor: pointer;
  background: transparent; color: var(--color-primary); border: 1.5px solid var(--color-primary);
  transition: all 0.2s ease;
}
.auth-send-code-btn:hover { background: rgba(139,92,246,0.08); }
.auth-send-code-btn:disabled { opacity: 0.6; cursor: not-allowed; }

/* 暗色模式 */
.dark .auth-modal-card { background: var(--color-surface, #1a1a2e); }
.dark .auth-input { background: rgba(255, 255, 255, 0.04); }
.dark .auth-input:focus { background: rgba(255, 255, 255, 0.06); box-shadow: 0 0 0 4px rgba(184, 164, 232, 0.15); }
.dark .auth-modal-msg.auth-msg-error { background: rgba(233, 30, 99, 0.12); color: #F8A5C2; }
.dark .auth-modal-msg.auth-msg-success { background: rgba(233, 30, 99, 0.12); color: #F8A5C2; }

/* 保留页面模板兼容（直接访问 /login /register 时的独立样式） */
.auth-page {
  padding: 64px 20px 48px;
}
.auth-card { width: 100%; max-width: 380px; margin: 0 auto; }
.auth-title {
  font-size: 28px; font-weight: 700; text-align: center; margin-bottom: 6px;
  background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-accent) 100%);
  -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text;
}
.auth-sub { font-size: 14px; color: var(--color-text-muted); text-align: center; margin-bottom: 36px; }
.auth-footer { text-align: center; margin-top: 24px; }
.auth-footer a { font-size: 13px; color: var(--color-text-muted); text-decoration: none; }
.auth-footer a:hover { color: var(--color-primary); }
.auth-icon {
  display: flex; justify-content: center; margin-bottom: 24px;
}
.auth-icon svg {
  width: 28px; height: 28px; opacity: 0.35;
  color: var(--color-primary);
}
.auth-msg { padding: 12px 16px; border-radius: var(--radius-sm); font-size: 13px; margin-bottom: 20px; }


/* === 响应式 === */
@media (max-width: 1024px) {
  .main-content { max-width: none; padding: 56px 0 72px; }
  .related-grid { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 768px) {
  .container { padding: 0 20px; }
  .header-inner { padding: 0 20px; }
  .site-header { height: auto; }

  /* 导航 */
  .header-nav { display: none; }
  .mobile-menu { display: block; }
  .mobile-menu a { padding: 16px 0; font-size: 17px; }

  /* 搜索栏 */
  .header-search-bar { padding: 0 16px; top: 64px; }
  .header-search-inner { border-radius: var(--radius-md); }
  .header-search-inner .search-input { padding: 12px 16px; font-size: 15px; }

  /* 标题 */
  .page-title { font-size: 26px; }
  .single-post-title { font-size: 28px; }
  .hero-title { font-size: 32px; }
  .hero-section { padding: 64px 20px; min-height: 280px; }
  .hero-subtitle { font-size: 15px; }
  .hero-cta { padding: 10px 28px; font-size: 14px; }

  /* 卡片 */
  .main-content { padding: 40px 0 56px; }
  .posts-grid { gap: 24px; }
  .post-card-body { padding: 24px 28px; }
  .post-card-title { font-size: 20px; }
  .post-card-image { aspect-ratio: 2 / 1; }

  /* 单篇文章 */
  .post-navigation { flex-direction: column; }
  .post-navigation .prev-post,
  .post-navigation .next-post { max-width: none; }

  /* 评论 */
  .comments-section { padding: 32px 0; }
  .comment-list .children { padding-left: 28px; }
  .comment-form textarea { min-height: 120px; }

  /* 搜索 */
  .search-form-big { max-width: 100%; }
  .no-posts { padding: 48px 16px; }

  /* 文章排版（移动端收紧） */
  .single-post-title { font-size: 30px; font-weight: 900; }
  .single-post-meta { gap: 14px; margin-bottom: 14px; }
  .single-post-meta .post-date { font-size: 13px; color: var(--color-text-muted); }
  .single-post-meta .post-views { font-size: 12px; }
  .single-post-author { margin-top: 16px; }
  .single-post-author .author-avatar { width: 32px; height: 32px; }
  .single-post-author .author-name { font-size: 13px; color: var(--color-text-muted); }
  .prose h1 { font-size: 24px; margin: 40px 0 20px; }
  .prose h2 { font-size: 20px; margin: 32px 0 14px; padding-bottom: 8px; border-bottom: 1px solid var(--color-border-light); }
  .prose h2::after { display: none; }
  .prose h3 { font-size: 17px; margin: 24px 0 10px; }
  .prose p { margin: 12px 0; }
  .prose { font-size: 15px; line-height: 1.8; }
  .post-tags-section { padding: 20px 0; gap: 6px; }
  .post-tags-section .tags-label { font-size: 12px; }
  .post-tags-section .tag-badge { font-size: 12px; padding: 3px 10px; }

  /* 评论区 — 移动端紧凑时间线 */
  .comments-title { font-size: 18px; margin-bottom: 20px; }
  .comment-list { padding-left: 52px; }
  .comment-list::before { left: 16px; }
  .comment-list .comment { margin-bottom: 24px; }
  .comment-list .comment-author img { left: -36px; width: 32px; height: 32px; border-width: 2px; }
  .comment-list .comment-author cite { font-size: 14px; }
  .comment-list .comment-meta { gap: 6px; }
  .comment-list .comment-metadata a { font-size: 12px; }
  .comment-list .comment-content { font-size: 14px; line-height: 1.8; margin-top: 8px; }
  .comment-list .reply a { font-size: 12px; }
  .comment-list .children { padding-left: 32px; }
  .comment-respond { margin-top: 36px; }
  .comment-reply-title { font-size: 17px; border-left-width: 2px; padding-left: 10px; }
  .comment-notes { font-size: 12px; margin-bottom: 14px; }
  .comment-form p { margin-bottom: 12px; }
  .comment-form label { font-size: 13px; margin-bottom: 4px; }
  .comment-form input[type="text"],
  .comment-form input[type="email"],
  .comment-form input[type="url"] { padding: 10px 14px; font-size: 14px; }
  .comment-form textarea { min-height: 64px; padding: 10px 14px; font-size: 14px; }
  .comment-form .submit { padding: 10px 24px; font-size: 13px; }

  /* 页脚 */
  .site-footer { padding: 32px 0 20px; }

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

  /* 回到顶部 / 阅读模式 */
  .back-to-top { bottom: 20px; right: 20px; width: 42px; height: 42px; }
  .reading-mode-toggle { right: 16px; bottom: 76px; }

  /* 论坛/消息/个人中心 — 移动端 */
  .forum-categories { grid-template-columns: repeat(2, 1fr); gap: 10px; }
  .forum-cat-card { padding: 14px 10px; }
  .forum-cat-icon { width: 32px; height: 32px; }
  .forum-cat-info h3 { font-size: 13px; }
  .profile-card { padding: 18px; }
  .profile-avatar, .profile-avatar-img { width: 64px; height: 64px; }
  .profile-avatar-placeholder { width: 64px; height: 64px; font-size: 30px; }
  .profile-name { font-size: 19px; }
}

@media (max-width: 480px) {
  .container { padding: 0 14px; }
  .header-inner { padding: 0 14px; height: 60px; }
  .site-main { padding-top: 60px; }
  .site-header { height: 60px; }

  .header-logo { font-size: 19px; }
  .header-actions { gap: 4px; }
  .theme-toggle,
  .search-toggle,
  .mobile-menu-toggle { width: 38px; height: 38px; }
  .header-search-bar { top: 56px; }

  .mobile-menu { top: 60px; }
  .mobile-menu a { padding: 14px 0; font-size: 16px; }

  .main-content { padding: 28px 0 40px; }
  .posts-grid { gap: 18px; }

  .post-card-title { font-size: 18px; }
  .post-card-body { padding: 20px 22px; }
  .post-card-image { aspect-ratio: 16 / 9; }
  .page-title { font-size: 22px; }
  .hero-title { font-size: 26px; }
  .hero-section { padding: 48px 16px; min-height: 240px; }
  .hero-subtitle { font-size: 14px; margin-top: 12px; }
  .hero-cta { padding: 10px 24px; font-size: 13px; margin-top: 20px; }
  /* 评论区 — 极小屏进一步收紧 */
  .comments-title { font-size: 17px; }
  .comment-list { padding-left: 44px; }
  .comment-list::before { left: 12px; }
  .comment-list .comment { margin-bottom: 20px; }
  .comment-list .comment-author img { left: -32px; width: 28px; height: 28px; }
  .comment-list .comment-author cite { font-size: 13px; }
  .comment-list .comment-metadata a { font-size: 11px; }
  .comment-list .comment-content { font-size: 14px; }
  .comment-list .children { padding-left: 24px; }
  .comment-list .reply a { font-size: 11px; }
  .comment-form textarea { min-height: 56px; }
  .comment-form input[type="text"],
  .comment-form input[type="email"],
  .comment-form input[type="url"] { padding: 10px 14px; font-size: 14px; }
  .comment-form .submit { width: 100%; text-align: center; padding: 10px 0; font-size: 13px; }
  .comment-reply-title { font-size: 16px; }

  .single-post-title { font-size: 22px; line-height: 1.3; }
  .single-post-meta .post-date { font-size: 12px; }
  .single-post-author .author-name { font-size: 12px; }
  .single-post-content { padding: 20px 16px; border-radius: var(--radius-md); }
  .prose { font-size: 15px; line-height: 1.75; }
  .prose p { margin: 10px 0; }
  .prose h2 { font-size: 19px; margin: 28px 0 12px; }

  .search-input { padding: 11px 14px; font-size: 13px; }
  .search-button { padding: 8px 14px; }
  .search-form-big .search-input { padding: 14px 16px; font-size: 15px; }
  .no-posts h2 { font-size: 20px; }

  .site-footer { padding: 24px 0 16px; }
  .footer-copy { font-size: 12px; }

  /* 论坛/消息/个人中心 — 小屏 */
  .forum-categories { grid-template-columns: repeat(2, 1fr); gap: 8px; }
  body.forum-class-list .forum-categories { grid-template-columns: 1fr; }
  .forum-cat-card { padding: 12px 8px; }
  .forum-cat-icon { width: 40px; height: 40px; margin: 0 auto 6px; }
  .forum-cat-info h3 { font-size: 13px; }
  .profile-card { padding: 16px; gap: 14px; }
  .profile-avatar, .profile-avatar-img { width: 56px; height: 56px; }
  .profile-avatar-placeholder { width: 56px; height: 56px; font-size: 28px; }
  .profile-name { font-size: 17px; }
  .profile-link-item { padding: 14px 16px; font-size: 14px; }
  .growth-sign-card { padding: 16px; }
  .growth-points-num { font-size: 18px; }
  .stat-item { padding: 11px 6px; }
  .stat-num { font-size: 16px; }

  /* 编辑资料/评论/收藏 — 小屏 */
  .edit-profile-form { padding: 16px; }
  .edit-profile-title, .comments-page-title, .favorites-page-title { font-size: 18px; }
  .user-comment-item { padding: 14px 16px; }
  .edit-field input[type="text"],
  .edit-field input[type="email"],
  .edit-field input[type="password"],
  .edit-field textarea { padding: 10px 12px; font-size: 14px; }
}

/* === 面包屑导航 === */
.breadcrumb { margin-bottom: 28px; }
.breadcrumb ol {
  list-style: none; display: flex; flex-wrap: wrap; gap: 6px;
  align-items: center; font-size: 13px;
}
.breadcrumb li { display: flex; align-items: center; color: var(--color-text-muted); }
.breadcrumb li:not(:last-child)::after {
  content: '/'; margin-left: 6px; color: var(--color-border);
}
.breadcrumb a {
  color: var(--color-text-secondary); transition: color var(--transition);
}
.breadcrumb a:hover { color: var(--color-primary); }
.breadcrumb .current { color: var(--color-primary); font-weight: 500; }

/* === 沉浸式阅读模式 === */
body.reading-mode .single-post { max-width: 760px; margin: 0 auto; }
body.reading-mode .single-post-content { font-size: 18px; line-height: 2; }
body.reading-mode .breadcrumb { text-align: center; }
body.reading-mode .breadcrumb ol { justify-content: center; }
body.reading-mode .post-navigation { max-width: 760px; margin: 0 auto 32px; }
body.reading-mode .related-posts { max-width: 760px; margin: 0 auto; }
body.reading-mode .comments-section { max-width: 760px; margin: 0 auto; }

.reading-mode-toggle {
  position: fixed; right: 24px; bottom: 96px; z-index: 99;
  width: 44px; height: 44px;
  display: flex; align-items: center; justify-content: center;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-full);
  background: var(--glass-bg);
  backdrop-filter: blur(8px);
  color: var(--color-text-secondary);
  cursor: pointer;
  transition: all var(--transition);
  opacity: 0; visibility: hidden;
  transform: translateY(10px);
}
.reading-mode-toggle.visible { opacity: 1; visibility: visible; transform: translateY(0); }
.reading-mode-toggle:hover {
  border-color: var(--color-primary);
  color: var(--color-primary);
  box-shadow: 0 0 20px rgba(155,126,216,0.2);
}
.reading-mode-toggle .icon-exit { display: none; }
body.reading-mode .reading-mode-toggle .icon-enter { display: none; }
body.reading-mode .reading-mode-toggle .icon-exit { display: inline; }

/* === 图片灯箱 === */
.lightbox-overlay {
  position: fixed; inset: 0; z-index: 9999;
  display: flex; align-items: center; justify-content: center;
  background: rgba(10, 5, 25, 0.92);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  animation: lightboxFadeIn 0.25s ease;
  cursor: zoom-out;
}
@keyframes lightboxFadeIn { from { opacity: 0; } to { opacity: 1; } }
.lightbox-image {
  max-width: 92vw; max-height: 90vh;
  border-radius: 12px;
  box-shadow: 0 20px 60px rgba(0,0,0,0.5);
  animation: lightboxZoomIn 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  cursor: default;
}
@keyframes lightboxZoomIn {
  from { transform: scale(0.9); opacity: 0; }
  to { transform: scale(1); opacity: 1; }
}
.lightbox-close {
  position: fixed; top: 24px; right: 24px; z-index: 10000;
  width: 44px; height: 44px;
  display: flex; align-items: center; justify-content: center;
  border: 1px solid rgba(255,255,255,0.2);
  border-radius: var(--radius-full);
  background: rgba(255,255,255,0.08);
  backdrop-filter: blur(8px);
  color: rgba(255,255,255,0.7);
  cursor: pointer;
  font-size: 20px;
  transition: all var(--transition);
}
.lightbox-close:hover {
  background: rgba(255,255,255,0.15);
  color: #fff;
}
.single-post-content img { cursor: zoom-in; border-radius: 10px; }

/* === 侧边栏导航抽屉 === */
.sidebar-overlay {
  position: fixed; inset: 0; z-index: 2000;
  background: rgba(0,0,0,0.4);
  opacity: 0; pointer-events: none;
  transition: opacity 0.3s ease;
}
.sidebar-open .sidebar-overlay { opacity: 1; pointer-events: auto; }

.sidebar-drawer {
  position: fixed; top: 0; left: 0; bottom: 0; z-index: 3000;
  width: 280px; max-width: 80vw;
  background: var(--color-surface);
  box-shadow: 4px 0 32px rgba(0,0,0,0.15);
  transform: translateX(-100%);
  transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}
.sidebar-open .sidebar-drawer { transform: translateX(0); }

.sidebar-drawer-inner { padding: 60px 20px 40px; }

.sidebar-section { margin-bottom: 28px; }
.sidebar-section-title {
  font-size: 12px; font-weight: 600; text-transform: uppercase;
  letter-spacing: 0.08em; color: var(--color-text-muted);
  margin: 0 0 12px; padding: 0;
}

.sidebar-cats { display: flex; flex-direction: column; gap: 2px; }
.sidebar-cat-head { display: flex; align-items: center; gap: 4px; }
.sidebar-cat-link {
  flex: 1; min-width: 0;
  display: flex; align-items: center; gap: 8px;
  padding: 11px 12px; border-radius: var(--radius);
  text-decoration: none; color: var(--color-text);
  font-size: 14px; font-weight: 600;
  transition: background var(--transition);
}
.sidebar-cat-link:hover { background: var(--color-bg); }
.sidebar-cat-name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; transition: color .2s ease; }
.sidebar-cat-link:hover .sidebar-cat-name { filter: brightness(1.15); }
.sidebar-cat-count {
  font-size: 11px; color: var(--color-text-muted);
  background: var(--color-bg); padding: 2px 8px; border-radius: 10px;
  flex-shrink: 0;
}
.sidebar-cat-toggle {
  flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  width: 30px; height: 30px; border: none; border-radius: 50%;
  background: transparent; color: var(--color-text-muted);
  cursor: pointer; transition: all .2s ease;
}
.sidebar-cat-toggle svg { width: 16px; height: 16px; transition: transform .25s ease; }
.sidebar-cat-toggle:hover { background: var(--color-bg); color: var(--color-primary); }
.sidebar-cat.open .sidebar-cat-toggle svg { transform: rotate(180deg); }
.sidebar-cat-sub {
  margin: 2px 0 8px 20px; padding-left: 10px;
  border-left: 2px solid rgba(155,126,216,.18);
  display: flex; flex-direction: column; gap: 2px;
}
.sidebar-cat-sub-link {
  display: flex; align-items: center; justify-content: space-between; gap: 8px;
  padding: 9px 12px; border-radius: var(--radius);
  text-decoration: none; color: var(--color-text-muted);
  font-size: 13px; font-weight: 500;
  transition: all var(--transition);
}
.sidebar-cat-sub-link:hover { color: var(--color-primary); background: var(--color-bg); }
.sidebar-cat-sub-name { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.sidebar-links { display: flex; flex-direction: column; gap: 2px; }
.sidebar-link-item {
  display: flex; align-items: center; gap: 8px;
  padding: 11px 12px; border-radius: var(--radius);
  text-decoration: none; color: var(--color-text);
  font-size: 14px; font-weight: 500;
  transition: background var(--transition);
}
.sidebar-link-item-name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; transition: color .2s ease; }
.sidebar-link-item:hover .sidebar-link-item-name { filter: brightness(1.15); }
.sidebar-link-item:hover { background: var(--color-bg); }

/* 1.7.31 — 侧边栏底部「我的」 */
.sidebar-profile {
  margin-top: 24px; padding-top: 20px;
  border-top: 1px solid rgba(155,126,216,.14);
}
.sidebar-profile-card {
  display: flex; align-items: center; gap: 12px;
  padding: 12px 14px; border-radius: 16px;
  text-decoration: none;
  background: linear-gradient(135deg, rgba(155,126,216,.10), rgba(232,160,191,.08));
  box-shadow: inset 0 1px 0 rgba(255,255,255,.15);
  transition: all .25s ease;
}
.sidebar-profile-card:hover {
  background: linear-gradient(135deg, rgba(155,126,216,.16), rgba(232,160,191,.12));
  box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 4px 18px rgba(155,126,216,.18);
}
.sidebar-profile-avatar {
  width: 48px; height: 48px; border-radius: 50%;
  object-fit: cover; flex-shrink: 0;
  border: 2px solid rgba(155,126,216,.35);
  background: #fff;
}
.sidebar-profile-info { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.sidebar-profile-name { display: flex; align-items: center; gap: 5px; flex-wrap: wrap; min-width: 0; }
.sidebar-profile-nickname {
  font-size: 15px; font-weight: 700; color: var(--color-text);
  max-width: 130px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.sidebar-profile-bio {
  font-size: 12px; color: var(--color-text-muted);
  max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.sidebar-profile-bell {
  position: relative; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  width: 40px; height: 40px; border-radius: 50%;
  color: var(--color-text-muted); text-decoration: none;
  background: rgba(155,126,216,.08);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.12);
  transition: all .25s ease;
}
.sidebar-profile-bell svg { width: 20px; height: 20px; }
.sidebar-profile-bell:hover { color: var(--color-primary); background: rgba(155,126,216,.16); }
.sidebar-profile-badge {
  position: absolute; top: -3px; right: -3px;
  min-width: 17px; height: 17px; padding: 0 4px;
  display: flex; align-items: center; justify-content: center;
  font-size: 11px; font-weight: 700; line-height: 1;
  color: #fff; border-radius: 9px;
  background: linear-gradient(135deg, #E56C9A, #C95B8F);
  box-shadow: 0 2px 8px rgba(229,108,154,.5);
}
.sidebar-profile-badge[hidden] { display: none; }
.sidebar-profile-card {
  display: flex; align-items: center; gap: 10px;
  padding: 12px 14px; border-radius: 16px;
  background: linear-gradient(135deg, rgba(155,126,216,.10), rgba(232,160,191,.08));
  box-shadow: inset 0 1px 0 rgba(255,255,255,.15);
  transition: all .25s ease;
}
.sidebar-profile-card:hover {
  background: linear-gradient(135deg, rgba(155,126,216,.16), rgba(232,160,191,.12));
  box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 4px 18px rgba(155,126,216,.18);
}
.sidebar-profile-main {
  flex: 1; min-width: 0;
  display: flex; align-items: center; gap: 12px;
  text-decoration: none;
}
.sidebar-profile-avatar {
  width: 48px; height: 48px; border-radius: 50%;
  object-fit: cover; flex-shrink: 0;
  border: 2px solid rgba(155,126,216,.35);
  background: #fff;
}
.sidebar-sign-btn {
  position: relative;
  display: flex; align-items: center; justify-content: center; gap: 8px;
  width: 100%; padding: 12px 0; border: none; border-radius: 14px;
  font-size: 14px; font-weight: 700; color: #fff;
  background: linear-gradient(135deg, #9B7ED8, #E56C9A);
  box-shadow: 0 4px 14px rgba(155,126,216,.35), inset 0 1px 0 rgba(255,255,255,.25);
  cursor: pointer; overflow: hidden;
  transition: all .25s ease;
}
.sidebar-sign-btn:hover {
  background: linear-gradient(135deg, #A98CE8, #EF7AA9);
  box-shadow: 0 6px 22px rgba(155,126,216,.5), inset 0 1px 0 rgba(255,255,255,.3);
  transform: translateY(-1px);
}
.sidebar-sign-btn .sign-btn-star { color: #F5C76B; flex-shrink: 0; }
.sidebar-sign-btn .ripple {
  position: absolute; border-radius: 50%; pointer-events: none;
  background: rgba(255,255,255,.45); transform: scale(0);
  animation: dlRipple .6s ease-out forwards;
}
.sidebar-sign-btn > * { position: relative; z-index: 1; }
.sidebar-sign-btn:active { transform: scale(.98); }
.sidebar-sign-btn:disabled { cursor: default; }
.sidebar-sign-done {
  display: flex; align-items: center; justify-content: center; gap: 7px;
  width: 100%; padding: 12px 0; border-radius: 14px;
  font-size: 14px; font-weight: 700;
  color: var(--color-primary);
  background: rgba(155,126,216,.08);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.12);
}
.sidebar-sign-meta {
  margin: 8px 0 0; text-align: center;
  font-size: 12px; color: var(--color-text-muted);
}
.dark .sidebar-sign-btn { box-shadow: 0 6px 18px rgba(155,126,216,.35); }
.dark .sidebar-sign-done { background: rgba(155,126,216,.16); }
.sidebar-profile-logout {
  display: block; margin-top: 12px; padding: 8px;
  text-align: center; text-decoration: none;
  font-size: 12px; color: var(--color-text-muted);
  border-radius: 10px; transition: all .25s ease;
}
.sidebar-profile-logout:hover { color: #E56C9A; background: rgba(229,108,154,.08); }
.sidebar-profile-auth { display: flex; gap: 10px; }
.sidebar-profile-auth-btn {
  flex: 1; padding: 11px 0; border-radius: 14px;
  text-align: center; text-decoration: none;
  font-size: 14px; font-weight: 600; transition: all .25s ease;
}
.sidebar-profile-login {
  color: #fff;
  background: linear-gradient(135deg, #9B7ED8, #E56C9A);
  box-shadow: 0 6px 18px rgba(155,126,216,.4);
}
.sidebar-profile-register {
  color: var(--color-primary);
  background: rgba(155,126,216,.08);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.12);
}
.sidebar-profile-register:hover { background: rgba(155,126,216,.16); }
.sidebar-profile-auth-hint {
  margin: 10px 0 0; text-align: center;
  font-size: 12px; color: var(--color-text-muted);
}
.dark .sidebar-profile-card {
  background: linear-gradient(135deg, rgba(155,126,216,.16), rgba(232,160,191,.12));
  box-shadow: inset 0 1px 0 rgba(255,255,255,.06);
}
.dark .sidebar-profile-avatar { border-color: rgba(155,126,216,.5); }
.dark .sidebar-profile-bell { background: rgba(155,126,216,.14); }
.dark .sidebar-profile-register { background: rgba(155,126,216,.16); }
.dark .sidebar-profile-register:hover { background: rgba(155,126,216,.24); }

/* === 发布面板 === */
.publish-overlay {
  position: fixed; inset: 0; z-index: 4000;
  background: rgba(0,0,0,0.5);
  opacity: 0; pointer-events: none;
  transition: opacity 0.3s ease;
}
.publish-open .publish-overlay { opacity: 1; pointer-events: auto; }

.publish-panel {
  position: fixed; inset: 0; z-index: 5000;
  background: var(--color-surface);
  display: flex; flex-direction: column;
  transform: translateY(100%);
  transition: transform 0.35s cubic-bezier(0.4, 0, 0.2, 1);
}
.publish-open .publish-panel { transform: translateY(0); }

/* 顶部 tab */
.publish-tabs {
  display: flex; align-items: center; gap: 0;
  padding: 0 12px; border-bottom: 1px solid var(--color-border-light);
  flex-shrink: 0;
}
.publish-tab {
  flex: 1; padding: 14px 0; border: none; background: none;
  font-size: 15px; font-weight: 500; color: var(--color-text-muted);
  cursor: pointer; position: relative; transition: color var(--transition);
}
.publish-tab.active { color: var(--color-primary); font-weight: 600; }
.publish-tab.active::after {
  content: ''; position: absolute; bottom: 0; left: 50%; transform: translateX(-50%);
  width: 28px; height: 3px; background: var(--color-primary); border-radius: 2px;
}
.publish-close-btn {
  background: none; border: none; font-size: 24px;
  color: var(--color-text-muted); cursor: pointer; padding: 8px; line-height: 1;
}

/* tab 内容 */
.publish-tab-content { display: none; flex: 1; flex-direction: column; overflow: hidden; }
.publish-tab-content.active { display: flex; }
.publish-body {
  flex: 1; overflow-y: auto; padding: 16px;
  display: flex; flex-direction: column; gap: 12px;
}
.publish-footer {
  flex-shrink: 0; padding: 12px 16px calc(12px + env(safe-area-inset-bottom, 0px));
  border-top: 1px solid var(--color-border-light);
  display: flex; align-items: center; gap: 12px;
}
.publish-msg { font-size: 12px; padding: 4px 10px; border-radius: 6px; flex: 1; }
.publish-msg-success { background: #FFF0F6; color: #D81B60; }
.publish-msg-error { background: #FFF0F6; color: #D81B60; }
.publish-submit-btn {
  padding: 10px 24px; border: none; border-radius: var(--radius);
  background: var(--color-primary); color: #fff;
  font-size: 15px; font-weight: 600; cursor: pointer; white-space: nowrap;
  transition: opacity var(--transition);
}
.publish-submit-btn:disabled { opacity: 0.6; cursor: not-allowed; }

.publish-title-input {
  width: 100%; padding: 14px 0; border: none; border-bottom: 1px solid var(--color-border-light);
  font-size: 18px; font-weight: 600; background: transparent; color: var(--color-text);
  outline: none; box-sizing: border-box;
}
.publish-title-input::placeholder { color: var(--color-text-muted); }
.publish-meta-row { display: flex; gap: 10px; }
.publish-select {
  flex: 2; padding: 10px 12px; border: 1px solid var(--color-border-light);
  border-radius: var(--radius); background: var(--color-bg);
  font-size: 13px; color: var(--color-text); outline: none;
}

/* 新建分类/版块按钮 */
.publish-new-btn {
  display: inline-block; border: none; border-radius: 20px;
  background: rgba(139, 92, 246, 0.08); color: var(--color-primary);
  font-size: 12px; font-weight: 500; padding: 7px 16px;
  cursor: pointer; white-space: nowrap;
  transition: background 0.2s ease, color 0.2s ease;
}
.publish-new-btn:hover { background: rgba(139, 92, 246, 0.15); }
.publish-tags-input {
  flex: 1; padding: 10px 12px; border: 1px solid var(--color-border-light);
  border-radius: var(--radius); background: var(--color-bg);
  font-size: 13px; color: var(--color-text); outline: none;
}

/* 内联新建分类/版块输入 */
.publish-new-row {
  margin-top: 4px;
}
.publish-new-inner {
  display: flex; gap: 8px; align-items: center;
}
.publish-new-input {
  flex: 1; padding: 10px 12px; box-sizing: border-box;
  border: 1px solid var(--color-primary); border-radius: var(--radius);
  background: var(--color-bg); font-size: 13px; color: var(--color-text);
  outline: none;
}
.publish-new-input::placeholder { color: var(--color-text-muted); }
.publish-new-cancel {
  background: none; border: none; font-size: 20px; color: var(--color-text-muted);
  cursor: pointer; padding: 4px; line-height: 1;
}

/* 分类/版块管理面板 */
.publish-manage-btn {
  display: inline-block; border: none; border-radius: 20px;
  background: rgba(139, 92, 246, 0.08); color: var(--color-primary);
  font-size: 12px; font-weight: 500; padding: 7px 16px;
  cursor: pointer; white-space: nowrap;
  transition: background 0.2s ease, color 0.2s ease;
}
.publish-manage-btn:hover { background: rgba(139, 92, 246, 0.15); }
.publish-manage-panel {
  margin-top: 10px; padding: 12px;
  border: 1px solid var(--color-border-light); border-radius: var(--radius);
  background: var(--color-bg-soft);
}
.publish-manage-add {
  display: flex; gap: 8px; align-items: center; margin-bottom: 10px;
}
.publish-manage-input {
  flex: 1; padding: 8px 10px; box-sizing: border-box;
  border: 1px solid var(--color-border-light); border-radius: var(--radius);
  background: var(--color-bg); font-size: 13px; color: var(--color-text);
  outline: none;
}
.publish-manage-input:focus { border-color: var(--color-primary); }
.publish-manage-add-btn {
  border: none; border-radius: 16px; background: var(--color-primary);
  color: #fff; font-size: 12px; font-weight: 500; padding: 8px 16px;
  cursor: pointer; white-space: nowrap;
}
.publish-manage-list {
  display: flex; flex-direction: column; gap: 6px;
  max-height: 220px; overflow-y: auto;
}
.publish-manage-item {
  display: flex; justify-content: space-between; align-items: center;
  padding: 7px 10px; border-radius: var(--radius);
  background: var(--color-bg);
}
.publish-manage-name { flex: 1; min-width: 0; font-size: 13px; color: var(--color-text); word-break: break-all; }
.publish-manage-color {
  flex-shrink: 0; width: 26px; height: 26px; padding: 0; margin-left: 8px;
  border: 1px solid var(--color-border-light); border-radius: 50%;
  background: transparent; cursor: pointer;
}
.publish-manage-color::-webkit-color-swatch-wrapper { padding: 2px; }
.publish-manage-color::-webkit-color-swatch { border: none; border-radius: 50%; }
.publish-manage-color::-moz-color-swatch { border: none; border-radius: 50%; }
.publish-manage-actions { display: flex; gap: 6px; flex-shrink: 0; }
.publish-manage-rename,
.publish-manage-delete {
  border: none; border-radius: 12px; font-size: 11px; padding: 4px 10px;
  cursor: pointer; white-space: nowrap;
}
.publish-manage-rename { background: rgba(139, 92, 246, 0.1); color: var(--color-primary); }
.publish-manage-delete { background: rgba(239, 68, 68, 0.1); color: #ef4444; }
.publish-manage-delete:disabled { opacity: 0.4; cursor: not-allowed; }
.publish-manage-rename-input {
  width: 120px; padding: 3px 6px; box-sizing: border-box;
  border: 1px solid var(--color-primary); border-radius: 6px;
  background: var(--color-bg); font-size: 13px; color: var(--color-text);
  outline: none;
}

/* 待审核申请区块 */
.publish-pending {
  margin-bottom: 10px; padding: 10px;
  border: 1px dashed var(--color-primary); border-radius: var(--radius);
  background: rgba(139, 92, 246, 0.05);
}
.publish-pending-title {
  font-size: 12px; font-weight: 500; color: var(--color-primary);
  margin-bottom: 8px;
}
.publish-pending-item {
  display: flex; justify-content: space-between; align-items: center;
  gap: 8px; padding: 7px 10px; margin-bottom: 6px;
  border-radius: var(--radius); background: var(--color-bg);
}
.publish-pending-item:last-child { margin-bottom: 0; }
.publish-pending-info { min-width: 0; }
.publish-pending-name { font-size: 13px; color: var(--color-text); word-break: break-all; }
.publish-pending-meta {
  font-size: 11px; color: var(--color-text-muted); margin-top: 2px;
}
.publish-pending-approve,
.publish-pending-reject {
  border: none; border-radius: 12px; font-size: 11px; padding: 4px 10px;
  cursor: pointer; white-space: nowrap;
}
.publish-pending-approve { background: rgba(34, 197, 94, 0.12); color: #16a34a; }
.publish-pending-reject { background: rgba(239, 68, 68, 0.1); color: #ef4444; }
.publish-manage-hint {
  margin-top: 8px; font-size: 11px; color: var(--color-text-muted); line-height: 1.5;
}

/* 富文本工具栏 */
.publish-toolbar {
  display: flex; gap: 4px; padding: 8px 0;
  border-bottom: 1px solid var(--color-border-light);
}
.publish-toolbar button {
  width: 32px; height: 32px; display: flex; align-items: center; justify-content: center;
  background: transparent; border: 1px solid var(--color-border-light);
  border-radius: 6px; cursor: pointer; font-size: 13px; color: var(--color-text-secondary);
  transition: background var(--transition);
}
.publish-toolbar button:hover { background: var(--color-bg); }

/* 内容编辑器 */
.publish-editor {
  flex: 1; min-height: 200px; padding: 12px 0;
  font-size: 15px; line-height: 1.8; color: var(--color-text);
  outline: none; overflow-y: auto; word-break: break-word;
}
.publish-editor:empty::before {
  content: attr(placeholder); color: var(--color-text-muted); pointer-events: none;
}
.publish-editor img { max-width: 100%; border-radius: 8px; margin: 8px 0; }
.publish-editor h2 { font-size: 20px; font-weight: 700; margin: 16px 0 8px; }
.publish-editor a { color: var(--color-primary); }

/* 文章删除按钮 */
.post-delete-btn {
  display: inline-block; margin-top: 16px; padding: 8px 16px;
  background: transparent; border: 1px solid #fca5a5;
  border-radius: var(--radius); color: #dc2626;
  font-size: 13px; cursor: pointer;
  transition: all var(--transition);
}
.post-delete-btn:hover { background: #fef2f2; }

/* 文章点赞按钮 */
.post-like-btn {
  display: inline-flex; align-items: center; gap: 6px;
  margin-top: 16px; padding: 8px 18px;
  background: transparent; border: 1px solid var(--color-border-light);
  border-radius: 24px; color: var(--color-text-muted);
  font-size: 14px; cursor: pointer;
  transition: all 0.25s ease;
}
.post-like-btn:hover { border-color: #fca5a5; color: #ef4444; }
.post-like-btn.liked { background: rgba(239, 68, 68, 0.08); border-color: #fca5a5; color: #ef4444; }
.post-like-btn.liked .like-icon { fill: #ef4444; stroke: #ef4444; animation: like-pop 0.35s ease; }
.post-like-btn:active { transform: scale(0.95); }
.like-count { font-weight: 500; min-width: 18px; text-align: center; }

/* 文章收藏按钮 */
.post-fav-btn {
  display: inline-flex; align-items: center; gap: 6px;
  margin-top: 16px; margin-left: 10px; padding: 8px 18px;
  background: transparent; border: 1px solid var(--color-border-light);
  border-radius: 24px; color: var(--color-text-muted);
  font-size: 14px; cursor: pointer;
  transition: all 0.25s ease;
}
.post-fav-btn:hover { border-color: #fcd34d; color: #f59e0b; }
.post-fav-btn.faved { background: rgba(245, 158, 11, 0.1); border-color: #fcd34d; color: #f59e0b; }
.post-fav-btn.faved .fav-icon { fill: #f59e0b; stroke: #f59e0b; animation: like-pop 0.35s ease; }
.post-fav-btn:active { transform: scale(0.95); }
.fav-count { font-weight: 500; min-width: 18px; text-align: center; }

/* 文章打赏按钮 */
.post-tip-btn {
  display: inline-flex; align-items: center; gap: 6px;
  margin-top: 16px; margin-left: 10px; padding: 8px 18px;
  background: transparent; border: 1px solid var(--color-border-light);
  border-radius: 24px; color: var(--color-text-muted);
  font-size: 14px; cursor: pointer;
  transition: all 0.25s ease;
}
.post-tip-btn:hover { border-color: #f0a9c8; color: #e56c9a; }
.post-tip-btn:active { transform: scale(0.95); }
.post-actions .post-tip-btn { margin-top: 16px; }

@keyframes like-pop {
  0% { transform: scale(1); }
  50% { transform: scale(1.3); }
  100% { transform: scale(1); }
}

/* === 归档时间轴 === */
.archive-header { text-align: center; margin-bottom: 48px; }
.archive-header .page-title { font-size: 28px; font-weight: 700; }
.archive-header .archive-description { color: var(--color-text-muted); margin-top: 8px; }

.timeline { padding: 0 0 40px; }
.timeline-year { position: relative; margin-bottom: 32px; padding-left: 36px; }
.timeline-year:last-child { margin-bottom: 0; }
.timeline-year-dot {
  position: absolute; left: 0; top: 4px;
  width: 20px; height: 20px; border-radius: 50%;
  background: linear-gradient(135deg, var(--color-primary), #c084fc);
  display: flex; align-items: center; justify-content: center;
  z-index: 2;
}
.year-inner {
  width: 8px; height: 8px; border-radius: 50%;
  background: #fff;
}
.timeline-year::before {
  content: ''; position: absolute; left: 9px; top: 28px; bottom: -4px;
  width: 2px; background: linear-gradient(to bottom, var(--color-primary), var(--color-border-light));
}
.timeline-year:last-child::before { display: none; }
.timeline-year-label {
  font-size: 22px; font-weight: 700; color: var(--color-primary);
  margin: 0 0 16px;
}
.timeline-month { margin-bottom: 16px; }
.timeline-month:last-child { margin-bottom: 0; }
.timeline-month-line {
  height: 1px; background: linear-gradient(to right, rgba(139,92,246,0.3), transparent);
  margin-bottom: 10px;
}
.timeline-month-label {
  font-size: 14px; font-weight: 600; color: var(--color-text-muted);
  margin: 0 0 6px; text-transform: uppercase; letter-spacing: 0.05em;
}
.timeline-posts { list-style: none; margin: 0; padding: 0; }
.timeline-post {
  display: flex; align-items: center; gap: 12px;
  padding: 10px 14px; border-radius: var(--radius);
  transition: background 0.2s ease;
}
.timeline-post:hover { background: var(--color-bg); }
.timeline-day {
  font-size: 12px; font-weight: 600; color: var(--color-text-muted);
  min-width: 24px; text-align: center;
}
.timeline-post-title {
  flex: 1; font-size: 15px; font-weight: 500; color: var(--color-text);
  text-decoration: none; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.timeline-post-title:hover { color: var(--color-primary); }
.timeline-views {
  display: inline-flex; align-items: center; gap: 4px;
  font-size: 12px; color: var(--color-text-muted); white-space: nowrap;
}

/* === 评论增强 === */
.comments-title { font-size: 20px; font-weight: 700; margin-bottom: 24px; }

/* 评论列表 */
.comment-list { list-style: none; margin: 0; padding: 0; }
.comment-list .comment { margin-bottom: 0; }
.comment-body {
  display: flex; gap: 14px; padding: 16px 0;
  border-bottom: 1px solid var(--color-border-light);
}
.comment-list > .comment > .comment-body { padding-left: 0; }

/* 嵌套评论渐变左边框 */
.comment-list .children { list-style: none; margin: 0; padding: 0 0 0 28px; }
.comment-list .children .comment-body {
  position: relative;
}
.comment-list .children .comment-body::before {
  content: ''; position: absolute; left: -14px; top: 0; bottom: 0;
  width: 3px; border-radius: 2px;
  background: linear-gradient(to bottom, var(--color-primary), transparent);
}
.comment-list .children .children .comment-body::before {
  background: linear-gradient(to bottom, #c084fc, transparent);
}

.comment-avatar { flex-shrink: 0; }
.comment-avatar-img {
  border-radius: 50%; width: 44px; height: 44px;
  border: 2px solid var(--color-border-light);
}
.comment-content { flex: 1; min-width: 0; }
.comment-header {
  display: flex; align-items: baseline; gap: 10px; margin-bottom: 4px;
}
.comment-author { font-weight: 600; font-size: 14px; color: var(--color-text); }
.comment-author-link { color: var(--color-text); text-decoration: none; }
.comment-author-link:hover { color: var(--color-primary); }
.comment-time { font-size: 12px; color: var(--color-text-muted); }
.comment-text { font-size: 14px; line-height: 1.7; color: var(--color-text); }
.comment-text p { margin: 0 0 8px; }
.comment-text p:last-child { margin-bottom: 0; }
.comment-awaiting { font-size: 13px; color: #f59e0b; margin: 4px 0; }
.comment-footer { margin-top: 8px; }
.comment-reply-link {
  font-size: 12px; color: var(--color-text-muted); text-decoration: none;
  padding: 2px 10px; border: 1px solid var(--color-border-light);
  border-radius: 12px; transition: all 0.2s ease;
}
.comment-reply-link:hover { border-color: var(--color-primary); color: var(--color-primary); }

/* emoji 快捷栏 */
.comment-emoji-bar {
  display: flex; align-items: center; gap: 4px; flex-wrap: wrap;
  padding: 6px 0 2px;
}
.emoji-hint { font-size: 12px; color: var(--color-text-muted); margin-right: 4px; }
.emoji-btn {
  background: transparent; border: none; font-size: 18px;
  cursor: pointer; padding: 2px 4px; border-radius: 4px;
  transition: background 0.15s ease; line-height: 1;
}
.emoji-btn:hover { background: var(--color-bg); }

/* 暗色模式评论框发光 */
.dark .comment-form-comment textarea {
  box-shadow: 0 0 20px rgba(139, 92, 246, 0.08);
  transition: box-shadow 0.3s ease;
}
.dark .comment-form-comment textarea:focus {
  box-shadow: 0 0 30px rgba(139, 92, 246, 0.2);
}

/* === 用户公开主页 === */
.user-profile-card { margin-top: 32px; }
.user-profile-list { margin-top: 36px; }
.user-profile-pagination { margin-top: 16px; }

/* 用户公开主页：用户卡片紧贴顶部标题栏 */
.user-page-content { padding-top: 0; }
.user-page-content .user-profile-card { margin-top: 0; }

/* === 文章页整改覆盖区 === */

/* 面包屑：弱化 + 底部淡紫细分割线 */
.post-breadcrumb { margin-bottom: 22px; padding-bottom: 18px; border-bottom: 1px solid rgba(155,126,216,0.14); }
.post-breadcrumb .breadcrumb { margin-bottom: 0; }
.post-breadcrumb .breadcrumb ol { font-size: 12px; gap: 4px; }
.post-breadcrumb .breadcrumb a { color: var(--color-text-muted); }
.post-breadcrumb .breadcrumb .current { color: #9B8DB8; font-weight: 500; }

/* 文章头：标题 → 作者 → 数据 */
.single-post-header { position: relative; padding: 0; }
.single-post-title {
  font-size: clamp(26px, 4.5vw, 38px);
  color: var(--color-primary-dark);
  margin: 6px 0 18px;
  line-height: 1.35;
  letter-spacing: 0.02em;
}

.post-author-bar {
  display: flex; align-items: center; gap: 14px;
  width: 100%; box-sizing: border-box; max-width: 100%;
  padding: 14px 18px 14px 14px;
  background: linear-gradient(135deg, rgba(155,126,216,0.10) 0%, rgba(232,160,191,0.08) 100%);
  border: 1px solid rgba(155,126,216,0.16);
  border-radius: 20px;
  margin-bottom: 22px;
}
.post-author-bar .author-avatar { width: 48px; height: 48px; box-shadow: 0 0 0 3px rgba(155,126,216,0.10); }
.post-author-bar .author-name { font-size: 16px; font-weight: 600; color: var(--color-text-secondary); }
.post-author-bar .author-name-link { align-items: center; }
.post-author-meta {
  display: flex; flex-direction: column; justify-content: center;
  gap: 5px; min-width: 0; flex: 1;
}
.post-author-bar .post-pubdata {
  display: flex; align-items: center;
  gap: 14px; margin: 0; padding: 0;
  font-size: 12px; color: var(--color-text-muted);
}
.post-author-bar .post-pubdata .post-views { font-size: 12px; }

.post-pubdata {
  display: flex; align-items: center; justify-content: flex-end;
  gap: 18px; margin-bottom: 26px;
  font-size: 13px; color: var(--color-text-muted);
}
.post-pubdata .post-views { font-size: 13px; color: var(--color-text-muted); }

/* 正文卡片 */
.single-post-content {
  border-radius: 12px;
  background: rgba(255,255,255,0.82);
  border-color: rgba(155,126,216,0.12);
  box-shadow: 0 10px 40px rgba(124,92,191,0.10);
  padding: 32px;
}
.dark .single-post-content { background: rgba(24,19,46,0.82); box-shadow: 0 10px 40px rgba(0,0,0,0.25); }

/* 文章底部互动卡片 */
.single-post-footer {
  margin-top: 16px;
  padding: 22px 24px;
  background: rgba(255,255,255,0.60);
  border: 1px solid rgba(155,126,216,0.10);
  border-radius: 12px;
  box-shadow: 0 8px 30px rgba(124,92,191,0.07);
}
.dark .single-post-footer { background: rgba(20,16,40,0.60); }

.post-actions { display: flex; align-items: center; justify-content: center; gap: 16px; }

/* 点赞/收藏：统一浅紫底圆角，hover 加深 */
.post-actions .post-like-btn,
.post-actions .post-fav-btn,
.post-actions .post-tip-btn {
  margin: 0; padding: 10px 28px;
  border-radius: 12px;
  background: linear-gradient(135deg, rgba(155,126,216,0.12) 0%, rgba(232,160,191,0.10) 100%);
  border: 1px solid rgba(155,126,216,0.22);
  color: var(--color-text-secondary);
  font-size: 14px;
  transition: all 0.25s ease;
}
.post-actions .post-like-btn:hover,
.post-actions .post-fav-btn:hover,
.post-actions .post-tip-btn:hover {
  border-color: var(--color-primary);
  color: var(--color-primary);
  background: linear-gradient(135deg, rgba(155,126,216,0.22) 0%, rgba(232,160,191,0.16) 100%);
  box-shadow: 0 6px 20px rgba(155,126,216,0.18);
}
.post-actions .post-like-btn.liked,
.post-actions .post-fav-btn.faved {
  background: linear-gradient(135deg, rgba(155,126,216,0.24) 0%, rgba(232,160,191,0.18) 100%);
  border-color: var(--color-primary);
  color: var(--color-primary-dark);
}
.post-actions .post-like-btn.liked .like-icon,
.post-actions .post-fav-btn.faved .fav-icon { fill: var(--color-primary); stroke: var(--color-primary); }
.post-actions .post-like-btn:active,
.post-actions .post-fav-btn:active { transform: scale(0.96); }

/* 分类/标签：下沉到按钮下方，浅紫圆角小标签 */
.post-tags-section {
  border-top: 1px solid rgba(155,126,216,0.12);
  margin-top: 22px; padding: 18px 0 0;
}
.post-tags-section .tag-badge { border-radius: 6px; }

/* 评论与正文分隔线 */
.single-post .comments-section {
  border-top: 1px solid rgba(155,126,216,0.14);
  margin-top: 22px; padding-top: 28px;
}
.single-post .comments-title {
  color: var(--color-primary-dark);
  font-size: 20px; font-weight: 700; margin-bottom: 22px;
}

/* 评论卡片化（仅文章页） */
body.single-post .comment-list { list-style: none; padding-left: 0; }
body.single-post .comment-list::before { display: none; }
body.single-post .comment-list .comment {
  margin-bottom: 16px;
  padding: 16px;
  background: rgba(255,255,255,0.72);
  border: 1px solid rgba(155,126,216,0.10);
  border-radius: 12px;
  box-shadow: 0 6px 24px rgba(124,92,191,0.06);
}
.dark body.single-post .comment-list .comment { background: rgba(24,19,46,0.72); }
body.single-post .comment-list .comment-body { display: flex; gap: 14px; }
body.single-post .comment-list .comment-avatar { flex-shrink: 0; }
body.single-post .comment-list .comment-avatar img {
  position: static; transform: none;
  width: 44px; height: 44px;
  border: 2px solid rgba(155,126,216,0.18);
  box-shadow: none;
}
body.single-post .comment-list .comment-content { flex: 1; min-width: 0; }
body.single-post .comment-list .comment-header {
  display: flex; align-items: baseline; justify-content: space-between;
  gap: 10px; flex-wrap: wrap;
}
body.single-post .comment-list .comment-author cite { font-size: 15px; }
body.single-post .comment-list .comment-time { font-size: 12px; color: var(--color-text-muted); white-space: nowrap; }
body.single-post .comment-list .comment-text { margin-top: 8px; font-size: 15px; line-height: 1.85; }
body.single-post .comment-list .comment-footer { margin-top: 10px; }
body.single-post .comment-list .reply { position: static; }
body.single-post .comment-list .reply a { color: var(--color-primary); font-size: 13px; }
body.single-post .comment-list .children { margin-top: 16px; padding-left: 0; }

/* 三点菜单（右上角） */
.post-more-wrap { position: absolute; top: 0; right: 0; z-index: 20; }
.post-more-btn {
  width: 36px; height: 36px;
  display: flex; align-items: center; justify-content: center;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-full);
  background: var(--glass-bg);
  backdrop-filter: blur(8px);
  color: var(--color-text-secondary);
  cursor: pointer; transition: all var(--transition);
}
.post-more-btn:hover {
  border-color: var(--color-primary); color: var(--color-primary);
  box-shadow: 0 0 16px rgba(155,126,216,0.20);
}
.post-more-menu {
  position: absolute; top: 44px; right: 0;
  min-width: 150px; padding: 8px;
  background: rgba(255,255,255,0.90);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border: 1px solid rgba(155,126,216,0.18);
  border-radius: 12px;
  box-shadow: 0 12px 32px rgba(124,92,191,0.16);
  opacity: 0; transform: translateY(-6px);
  transition: opacity 0.2s ease, transform 0.2s ease;
  pointer-events: none;
}
.post-more-menu.is-open { opacity: 1; transform: translateY(0); pointer-events: auto; }
.dark .post-more-menu { background: rgba(26,20,48,0.92); }
.post-more-item {
  display: block; width: 100%; text-align: left;
  padding: 9px 12px; font-size: 14px;
  color: var(--color-text-secondary);
  background: transparent; border: none; border-radius: 8px;
  cursor: pointer; transition: all var(--transition);
  text-decoration: none;
}
.post-more-item:hover {
  background: linear-gradient(135deg, rgba(155,126,216,0.12), rgba(232,160,191,0.08));
  color: var(--color-primary);
}
.post-more-delete { color: #C26A8E; }
.post-more-delete:hover { color: #9C4A66; background: rgba(232,160,191,0.14); }
.post-more-pin { color: var(--color-primary, #7c5cc4); font-weight: 600; }
.post-more-pin:hover { background: linear-gradient(135deg, rgba(155,126,216,0.16), rgba(232,160,191,0.1)); }

/* 删除二次确认弹窗 */
.dl-confirm-overlay {
  position: fixed; inset: 0; z-index: 2000;
  display: flex; align-items: center; justify-content: center;
  background: rgba(30,20,50,0.35);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  opacity: 0; pointer-events: none;
  transition: opacity 0.25s ease;
}
.dl-confirm-overlay.is-open { opacity: 1; pointer-events: auto; }
.dl-confirm-box {
  width: 320px; max-width: calc(100vw - 40px);
  padding: 28px 24px 22px;
  background: rgba(255,255,255,0.95);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border: 1px solid rgba(155,126,216,0.20);
  border-radius: 12px;
  box-shadow: 0 20px 60px rgba(124,92,191,0.25);
  text-align: center;
  transform: translateY(10px) scale(0.98);
  transition: transform 0.25s ease;
}
.dl-confirm-overlay.is-open .dl-confirm-box { transform: translateY(0) scale(1); }
.dark .dl-confirm-box { background: rgba(24,19,46,0.96); }
.dl-confirm-title { font-size: 17px; font-weight: 700; color: var(--color-text); margin-bottom: 10px; }
.dl-confirm-msg { font-size: 14px; color: var(--color-text-muted); line-height: 1.7; margin-bottom: 22px; }
.dl-confirm-actions { display: flex; gap: 12px; justify-content: center; }
.dl-confirm-btn {
  flex: 1; padding: 10px 0; font-size: 14px; font-weight: 600;
  border-radius: 10px; cursor: pointer;
  border: 1px solid var(--color-border);
  background: transparent; color: var(--color-text-secondary);
  transition: all var(--transition);
}
.dl-confirm-btn:hover { border-color: var(--color-primary); color: var(--color-primary); }
.dl-confirm-btn-danger {
  border-color: transparent;
  background: linear-gradient(135deg, #C26A8E, #9C4A66);
  color: #fff;
  box-shadow: 0 6px 18px rgba(156,74,102,0.30);
}
.dl-confirm-btn-danger:hover { opacity: 0.9; border-color: transparent; color: #fff; }

/* 文章页整改响应式 */
@media (max-width: 768px) {
  .single-post-title { font-size: 26px; }
  .post-pubdata { margin-bottom: 22px; }
  .single-post-content { padding: 24px 20px; }
  .single-post-footer { padding: 20px 16px; }
  .post-more-wrap { top: -4px; }
}
@media (max-width: 576px) {
  .post-actions { gap: 12px; }
  .post-actions .post-like-btn,
  .post-actions .post-fav-btn,
  .post-actions .post-tip-btn { padding: 9px 18px; font-size: 13px; }
  .single-post-footer { padding: 18px 14px; }
  body.single-post .comment-list .comment-body { gap: 12px; }
  body.single-post .comment-list .comment-avatar img { width: 38px; height: 38px; }
}

/* === 文章页通透化覆盖（v1.5） === */

/* 正文：去白卡，改上下淡紫分割线，直接浮在淡紫背景上 */
.single-post-content {
  background: transparent;
  border: none;
  border-radius: 0;
  border-top: 1px solid rgba(155,126,216,0.14);
  border-bottom: 1px solid rgba(155,126,216,0.14);
  box-shadow: none;
  padding: 30px 0;
}
.dark .single-post-content { background: transparent; box-shadow: none; }

/* 文章编辑面板 */
.post-edit-overlay {
  position: fixed; inset: 0; z-index: 200;
  display: flex; align-items: center; justify-content: center;
  padding: 24px;
  background: rgba(30,22,58,0.45);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  opacity: 0; pointer-events: none;
  transition: opacity 0.25s ease;
}
.post-edit-overlay.is-open { opacity: 1; pointer-events: auto; }
.post-edit-panel {
  width: min(720px, 100%);
  max-height: min(84vh, 720px);
  display: flex; flex-direction: column;
  background: linear-gradient(160deg, #FAF7FE 0%, #F2ECF8 100%);
  border: 1px solid rgba(155,126,216,0.28);
  border-radius: 16px;
  box-shadow: 0 24px 60px rgba(60,40,110,0.28);
  overflow: hidden;
  transform: translateY(12px) scale(0.98);
  transition: transform 0.25s ease;
}
.post-edit-overlay.is-open .post-edit-panel { transform: translateY(0) scale(1); }
.dark .post-edit-panel { background: rgba(24,19,46,0.94); }
.post-edit-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 16px 20px;
  border-bottom: 1px solid rgba(155,126,216,0.16);
}
.post-edit-head-title {
  font-size: 15px; font-weight: 600; color: var(--color-text);
}
.post-edit-close {
  width: 32px; height: 32px;
  display: inline-flex; align-items: center; justify-content: center;
  background: transparent; border: none; border-radius: 8px;
  font-size: 22px; line-height: 1; color: var(--color-text-secondary);
  cursor: pointer; transition: all var(--transition);
}
.post-edit-close:hover { background: rgba(155,126,216,0.12); color: var(--color-primary); }
.post-edit-body { flex: 1; overflow-y: auto; padding: 18px 20px; }
.post-edit-title-input {
  width: 100%; padding: 10px 12px; margin-bottom: 14px;
  background: rgba(155,126,216,0.06);
  border: 1px solid rgba(155,126,216,0.22);
  border-radius: 10px; color: var(--color-text);
  font-size: 15px; font-weight: 600; outline: none;
  transition: all var(--transition);
}
.post-edit-title-input:focus { border-color: var(--color-primary); box-shadow: 0 0 0 3px rgba(155,126,216,0.12); }
.post-edit-toolbar {
  display: flex; align-items: center; gap: 6px;
  padding: 8px; margin-bottom: 12px;
  background: rgba(155,126,216,0.06);
  border: 1px solid rgba(155,126,216,0.16);
  border-radius: 10px;
}
.post-edit-toolbar button {
  min-width: 34px; height: 34px;
  display: inline-flex; align-items: center; justify-content: center;
  background: transparent; border: 1px solid var(--color-border);
  border-radius: 8px; color: var(--color-text-secondary);
  font-size: 14px; cursor: pointer; transition: all var(--transition);
}
.post-edit-toolbar button:hover { border-color: var(--color-primary); color: var(--color-primary); }
.post-edit-editor {
  min-height: 260px; max-height: 46vh; overflow-y: auto;
  padding: 14px 16px;
  background: rgba(248,246,252,0.85);
  border: 1px solid rgba(155,126,216,0.22);
  border-radius: 12px; color: var(--color-text);
  font-size: 15px; line-height: 1.8; outline: none;
  transition: all var(--transition);
}
.dark .post-edit-editor { background: rgba(38,30,72,0.6); }
.post-edit-editor:focus { border-color: var(--color-primary); box-shadow: 0 0 0 3px rgba(155,126,216,0.12); }
.post-edit-editor:empty::before {
  content: attr(placeholder); color: var(--color-text-secondary); opacity: 0.7;
}
.post-edit-editor img { max-width: 100%; border-radius: 8px; }
.post-edit-foot {
  display: flex; justify-content: flex-end; gap: 10px;
  padding: 14px 20px;
  border-top: 1px solid rgba(155,126,216,0.16);
}
.post-edit-cancel {
  padding: 8px 20px; font-size: 13px; font-weight: 500;
  background: transparent; border: 1px solid var(--color-border);
  border-radius: 10px; color: var(--color-text-secondary); cursor: pointer;
  transition: all var(--transition);
}
.post-edit-cancel:hover { border-color: var(--color-primary); color: var(--color-primary); }
.post-edit-save {
  padding: 8px 20px; font-size: 13px; font-weight: 600;
  background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-accent) 100%);
  border: none; border-radius: 10px; color: #fff; cursor: pointer;
  transition: all var(--transition);
  box-shadow: 0 4px 14px rgba(155,126,216,0.25);
}
.post-edit-save:hover { opacity: 0.9; }
.post-edit-save:disabled { opacity: 0.6; cursor: default; }

/* 底部互动区：去白卡 */
.single-post-footer {
  background: transparent;
  border: none;
  border-radius: 0;
  box-shadow: none;
  margin-top: 22px;
  padding: 0;
}
.dark .single-post-footer { background: transparent; box-shadow: none; }

/* 点赞/收藏/分享：统一浅紫描边透明按钮 */
.post-actions .post-like-btn,
.post-actions .post-fav-btn,
.post-actions .post-tip-btn,
.post-share-btn {
  margin: 0; padding: 10px 24px;
  display: inline-flex; align-items: center; gap: 6px;
  border-radius: 12px;
  background: transparent;
  border: 1px solid rgba(155,126,216,0.30);
  color: var(--color-text-secondary);
  font-size: 14px; cursor: pointer;
  transition: all 0.25s ease;
}
.post-actions .post-like-btn:hover,
.post-actions .post-fav-btn:hover,
.post-actions .post-tip-btn:hover,
.post-share-btn:hover {
  border-color: var(--color-primary);
  color: var(--color-primary);
  background: rgba(155,126,216,0.10);
  box-shadow: 0 6px 20px rgba(155,126,216,0.14);
}
.post-actions .post-like-btn:active,
.post-actions .post-fav-btn:active,
.post-actions .post-tip-btn:active,
.post-share-btn:active { transform: scale(0.96); }

/* 评论：去白卡，改淡紫细线分隔 */
body.single-post .comment-list .comment {
  background: transparent;
  border: none;
  border-radius: 0;
  box-shadow: none;
  margin-bottom: 0;
  padding: 18px 0;
  border-bottom: 1px solid rgba(155,126,216,0.12);
}
body.single-post .comment-list .comment:last-child { border-bottom: none; }
body.single-post .comment-list .comment-avatar img { border-color: rgba(155,126,216,0.22); }

/* 分享提示 toast */
.dl-toast {
  position: fixed; left: 50%; bottom: 110px;
  transform: translate(-50%, 12px);
  padding: 11px 22px;
  background: rgba(255,255,255,0.92);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(155,126,216,0.20);
  border-radius: var(--radius-full);
  color: var(--color-text-secondary);
  font-size: 13px;
  box-shadow: 0 10px 30px rgba(124,92,191,0.18);
  opacity: 0; pointer-events: none;
  transition: opacity 0.25s ease, transform 0.25s ease;
  z-index: 3000;
}
.dl-toast.is-show { opacity: 1; transform: translate(-50%, 0); }
.dark .dl-toast { background: rgba(24,19,46,0.92); }

/* === 打赏弹层 === */
.dl-modal { position: fixed; inset: 0; z-index: 2600; display: flex; align-items: center; justify-content: center; padding: 20px; }
.dl-modal[hidden] { display: none; }
.dl-modal-mask { position: absolute; inset: 0; background: rgba(10, 8, 22, 0.55); backdrop-filter: blur(3px); -webkit-backdrop-filter: blur(3px); }
.dl-modal-panel {
  position: relative; width: 100%; max-width: 340px;
  background: var(--color-card-bg, #fff); border: 1px solid var(--color-border-light);
  border-radius: var(--radius); box-shadow: 0 20px 50px rgba(30, 20, 60, 0.35);
  overflow: hidden;
}
.dark .dl-modal-panel { background: rgba(26, 21, 48, 0.98); }
.dl-modal-head { display: flex; align-items: center; justify-content: space-between; padding: 16px 18px 0; }
.dl-modal-title { font-size: 16px; font-weight: 700; color: var(--color-text); }
.dl-modal-close { background: none; border: none; font-size: 22px; line-height: 1; color: var(--color-text-muted); cursor: pointer; padding: 2px 6px; }
.dl-modal-close:hover { color: var(--color-text); }
.dl-modal-foot { display: flex; gap: 10px; padding: 14px 18px 18px; }
.dl-modal-foot button { flex: 1; }

.tip-modal-body { padding: 14px 18px 4px; }
.tip-modal-balance { font-size: 13px; color: var(--color-text-muted); margin: 0 0 12px; }
.tip-modal-balance strong { color: var(--color-primary); font-size: 15px; }
.tip-modal-amounts { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; }
.tip-amount-btn {
  padding: 9px 0; border: 1px solid var(--color-border-light); background: rgba(255,255,255,0.04);
  border-radius: 10px; font-size: 15px; font-weight: 600; color: var(--color-text-secondary);
  cursor: pointer; transition: all 0.15s ease;
}
.tip-amount-btn:hover { border-color: var(--color-primary); color: var(--color-primary); }
.tip-amount-btn.active { background: var(--color-primary); border-color: var(--color-primary); color: #fff; }
.tip-modal-custom { display: flex; gap: 8px; margin-top: 10px; }
.tip-modal-custom input {
  flex: 1; min-width: 0; padding: 8px 12px; font-size: 14px; color: var(--color-text);
  background: rgba(255,255,255,0.04); border: 1px solid var(--color-border-light); border-radius: 10px;
}
.tip-modal-custom input:focus { outline: none; border-color: var(--color-primary); }
.tip-custom-btn { padding: 0 14px; border: 1px solid var(--color-border-light); background: rgba(255,255,255,0.04); border-radius: 10px; font-size: 13px; color: var(--color-text-secondary); cursor: pointer; }
.tip-custom-btn.active { background: var(--color-primary); border-color: var(--color-primary); color: #fff; }
.tip-modal-tip { font-size: 12px; color: var(--color-text-muted); margin: 10px 0 0; }
.tip-modal-cancel, .tip-modal-submit { padding: 9px 0; border-radius: 10px; font-size: 14px; font-weight: 600; cursor: pointer; }
.tip-modal-cancel { border: 1px solid var(--color-border-light); background: none; color: var(--color-text-secondary); }
.tip-modal-submit { border: none; background: var(--color-primary); color: #fff; }
.tip-modal-submit:disabled { opacity: 0.6; cursor: default; }
body.dl-modal-open { overflow: hidden; }

/* === 打赏榜 === */
.post-tip-board {
  margin-top: 28px; padding: 18px 20px;
  background: rgba(255,255,255,0.04); border: 1px solid var(--color-border-light);
  border-radius: var(--radius);
}
.post-tip-board-title { font-size: 15px; font-weight: 700; color: var(--color-text); margin: 0 0 12px; }
.post-tip-board-count { font-size: 12px; font-weight: 500; color: var(--color-text-muted); margin-left: 6px; }
.post-tip-list { display: flex; flex-wrap: wrap; gap: 8px; }
.post-tip-item {
  display: flex; align-items: center; gap: 7px;
  padding: 5px 10px 5px 5px; border-radius: 999px;
  background: rgba(155,126,216,0.10); border: 1px solid rgba(155,126,216,0.18);
  font-size: 12px;
}
.post-tip-avatar img { border-radius: 50%; display: block; }
.post-tip-name { color: var(--color-text); font-weight: 500; max-width: 96px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.post-tip-amount { color: #e56c9a; font-weight: 600; }

/* 文章页通透化响应式 */
@media (max-width: 768px) {
  .single-post-content { padding: 26px 0; }
  .single-post-footer { padding: 0; }
  .post-edit-overlay { padding: 16px; }
}
@media (max-width: 576px) {
  .post-actions .post-like-btn,
  .post-actions .post-fav-btn,
  .post-actions .post-tip-btn,
  .post-share-btn { padding: 9px 16px; font-size: 13px; }
  .single-post-footer { padding: 0; }
  .post-edit-editor { min-height: 200px; max-height: 40vh; }
}

/* ===== 文章页梦境重设计 v2：通透 / 柔和 / 浮起 ===== */

/* 面包屑：小星号分隔符，更弱化 */
.post-breadcrumb { padding-bottom: 16px; border-bottom: 1px solid rgba(155,126,216,0.10); }
.post-breadcrumb .breadcrumb ol { font-size: 12px; }
.post-breadcrumb .breadcrumb li:not(:last-child)::after {
  content: '✦';
  margin-left: 7px; margin-right: 2px;
  font-size: 9px; line-height: 1;
  color: rgba(155,126,216,0.38);
}
.post-breadcrumb .breadcrumb a { color: rgba(155,126,216,0.80); }
.post-breadcrumb .breadcrumb a:hover { color: var(--color-primary); }

/* 作者卡：通透渐变 + 内高光 + 去边框 + 流光 */
.post-author-bar {
  position: relative;
  gap: 14px;
  padding: 14px 18px 14px 14px;
  background: linear-gradient(135deg, rgba(155,126,216,0.08) 0%, rgba(232,160,191,0.06) 100%);
  border: none;
  border-radius: 20px;
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.40), 0 6px 22px rgba(124,92,191,0.10);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  overflow: hidden;
  transition: box-shadow 0.3s ease, transform 0.3s ease;
}
.post-author-bar:hover {
  transform: translateY(-1px);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.55), 0 10px 28px rgba(124,92,191,0.16);
}
/* 顶部流光带 */
.post-author-bar::before {
  content: '';
  position: absolute; top: 0; left: -40%;
  width: 35%; height: 1px;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,0.90), transparent);
  animation: author-shine 7s ease-in-out infinite;
  pointer-events: none;
}
@keyframes author-shine {
  0%   { left: -40%; }
  55%  { left: 115%; }
  100% { left: 115%; }
}
/* 头像：白环 + 右下角佩戴徽章 */
.post-author-bar .author-avatar-link { position: relative; display: inline-flex; }
.post-author-bar .author-avatar {
  border-radius: 50%;
  box-shadow: 0 0 0 3px rgba(255,255,255,0.55);
}
.post-author-bar .dl-user-wearing {
  position: absolute; right: -4px; bottom: -4px;
  margin: 0; z-index: 2;
  filter: drop-shadow(0 1px 3px rgba(155,126,216,0.55));
}
.post-author-bar .dl-user-wearing-icon img { width: 18px; height: 18px; border-radius: 50%; }
.post-author-bar .author-name { color: var(--color-text); }
.post-author-bar .dl-user-level { font-size: 12px; color: rgba(155,126,216,0.90); }

/* 论坛话题页作者头像：同样右下角佩戴徽章 */
.topic-single-avatar-link { position: relative; display: inline-flex; overflow: visible; }
.topic-single-avatar-wrap { display: inline-flex; position: relative; }
.topic-single-avatar-wrap .dl-user-wearing {
  position: absolute; right: -4px; bottom: -4px;
  margin: 0; z-index: 2;
  filter: drop-shadow(0 1px 3px rgba(155,126,216,0.55));
}
.topic-single-avatar-wrap .dl-user-wearing-icon img { width: 14px; height: 14px; border-radius: 50%; }
.topic-single-author-name .dl-user-level { font-size: 10px; color: rgba(155,126,216,0.90); }

/* 话题页互动按钮：与文章页统一的半透明药丸 */
.topic-single-footer .post-like-btn,
.topic-single-footer .post-fav-btn,
.topic-single-footer .post-tip-btn,
.topic-single-footer .post-delete-btn {
  border-radius: 999px;
  background: rgba(255,255,255,0.28);
  border-color: rgba(155,126,216,0.20);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.45);
  white-space: nowrap;
}
.dark .topic-single-footer .post-like-btn,
.dark .topic-single-footer .post-fav-btn,
.dark .topic-single-footer .post-tip-btn,
.dark .topic-single-footer .post-delete-btn {
  background: rgba(255,255,255,0.05);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.08);
}
.topic-single-footer .post-like-btn:hover,
.topic-single-footer .post-fav-btn:hover,
.topic-single-footer .post-tip-btn:hover {
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.50), 0 6px 20px rgba(155,126,216,0.18);
}
.topic-single-actions button svg { stroke-width: 1.5; }
.dark .post-author-bar {
  background: linear-gradient(135deg, rgba(139,92,246,0.13) 0%, rgba(232,160,191,0.09) 100%);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.07), 0 6px 22px rgba(0,0,0,0.22);
}
.dark .post-author-bar::before {
  background: linear-gradient(90deg, transparent, rgba(255,255,255,0.18), transparent);
}
.dark .post-author-bar .author-avatar { box-shadow: 0 0 0 3px rgba(255,255,255,0.10); }

/* 正文卡：更通透的玻璃，大圆角，去边框（长文卡不做 backdrop blur，避免滚动卡顿） */
.single-post-content {
  border-radius: 20px;
  border: none;
  background: rgba(255,255,255,0.70);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.60), 0 14px 44px rgba(124,92,191,0.12);
}
.dark .single-post-content {
  background: rgba(22,17,44,0.70);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.05), 0 14px 44px rgba(0,0,0,0.30);
}

/* 底部互动区：半透明浮光卡（覆盖"去白卡"） */
.single-post-footer {
  margin-top: 22px;
  padding: 22px 24px;
  background: linear-gradient(135deg, rgba(155,126,216,0.10) 0%, rgba(232,160,191,0.07) 100%);
  border: none;
  border-radius: 20px;
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.40), 0 10px 32px rgba(124,92,191,0.10);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}
.dark .single-post-footer {
  background: rgba(26,20,48,0.55);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.05), 0 10px 32px rgba(0,0,0,0.25);
}

/* 互动按钮：半透明淡紫药丸 + 细线条图标 */
.post-actions .post-like-btn,
.post-actions .post-fav-btn,
.post-actions .post-tip-btn,
.post-share-btn {
  padding: 10px 24px;
  border-radius: 999px;
  background: rgba(255,255,255,0.28);
  border: 1px solid rgba(155,126,216,0.20);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.45);
  white-space: nowrap;
  font-size: 13px;
}
.dark .post-actions .post-like-btn,
.dark .post-actions .post-fav-btn,
.dark .post-actions .post-tip-btn,
.dark .post-share-btn {
  background: rgba(255,255,255,0.05);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.08);
}
.post-actions .post-like-btn:hover,
.post-actions .post-fav-btn:hover,
.post-actions .post-tip-btn:hover,
.post-share-btn:hover {
  border-color: rgba(155,126,216,0.55);
  color: var(--color-primary-dark);
  background: linear-gradient(135deg, rgba(155,126,216,0.24) 0%, rgba(232,160,191,0.16) 100%);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.50), 0 6px 20px rgba(155,126,216,0.20);
}
.post-actions .post-like-btn.liked,
.post-actions .post-fav-btn.faved {
  background: linear-gradient(135deg, rgba(155,126,216,0.30) 0%, rgba(232,160,191,0.20) 100%);
  border-color: rgba(155,126,216,0.55);
  color: var(--color-primary-dark);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.50), 0 4px 16px rgba(155,126,216,0.22);
}
.post-actions button svg,
.post-share-btn svg,
.post-more-btn svg { stroke-width: 1.5; }

/* 三点菜单按钮：半透明圆 */
.post-more-btn {
  background: rgba(155,126,216,0.10);
  border-color: rgba(155,126,216,0.18);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.35);
}
.post-more-btn:hover {
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.40), 0 0 16px rgba(155,126,216,0.22);
}
.dark .post-more-btn { background: rgba(255,255,255,0.06); box-shadow: inset 0 1px 0 rgba(255,255,255,0.08); }

/* 标签：淡紫实心半透明胶囊、深紫文字、更大圆角 */
.post-tags-section { border-top-color: rgba(155,126,216,0.10); }
.post-tags-section .tag-badge,
.post-tags-section .tag-badge.tag-badge-outline {
  border-radius: 14px;
  background: rgba(155,126,216,0.14);
  border: 1px solid rgba(155,126,216,0.22);
  color: var(--color-primary-dark);
  font-weight: 600;
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.40);
}
.post-tags-section .tag-badge:hover,
.post-tags-section .tag-badge.tag-badge-outline:hover {
  background: rgba(155,126,216,0.24);
  border-color: rgba(155,126,216,0.45);
  color: var(--color-primary-dark);
  transform: translateY(-1px);
}

/* 评论区卡片：呼应新圆角 */
body.single-post .comment-list .comment {
  border-radius: 18px;
  background: rgba(255,255,255,0.55);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.40), 0 6px 20px rgba(124,92,191,0.06);
}
.dark body.single-post .comment-list .comment {
  background: rgba(22,17,44,0.55);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.04), 0 6px 20px rgba(0,0,0,0.20);
}

/* 小屏：保持卡内边距不被旧规则清空 */
@media (max-width: 768px) {
  .single-post-footer { padding: 18px 18px; }
}
@media (max-width: 576px) {
  .single-post-footer { padding: 16px 16px; }
  .single-post-content { padding: 22px 20px; }
  .post-actions { gap: 10px; }
  .post-actions .post-like-btn,
  .post-actions .post-fav-btn,
  .post-actions .post-tip-btn,
  .post-share-btn { padding: 9px 16px; font-size: 12px; }
}

/* === 评论表单梦境美化（1.7.9）=== */
.comment-respond {
  margin: 0 0 44px;
  padding: 26px 28px 28px;
  border: none;
  border-radius: 24px;
  position: relative;
  overflow: hidden;
  background: linear-gradient(160deg, rgba(255,255,255,0.88), rgba(246,240,255,0.70));
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.85), 0 14px 40px rgba(124,92,191,0.10);
}
.comment-respond::before {
  content: '';
  position: absolute; left: 28px; right: 28px; top: 0; height: 1px;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,0.95), transparent);
}
.comment-reply-title,
.topic-comment-form-title {
  margin: 0 0 8px;
  padding: 0;
  border-left: none;
  display: flex;
  align-items: center;
  gap: 9px;
  font-size: 19px;
  color: var(--color-text);
}
.comment-reply-title::before,
.topic-comment-form-title::before {
  content: '';
  width: 4px; height: 18px; border-radius: 999px;
  background: linear-gradient(180deg, var(--color-primary), var(--color-accent));
}
.comment-notes,
.comment-logged-in {
  margin: 4px 0 18px;
  font-size: 13px;
  line-height: 1.8;
  color: rgba(108,96,140,0.82);
}
.comment-logged-in strong { color: var(--color-primary); font-weight: 600; }
.comment-form p { margin-bottom: 14px; }
.comment-form label { color: var(--color-text-secondary); }
.comment-form textarea,
.topic-comment-form textarea {
  width: 100%;
  min-height: 96px;
  resize: vertical;
  border: none;
  border-radius: 16px;
  padding: 14px 16px;
  font-size: 15px;
  font-family: var(--font-sans);
  color: var(--color-text);
  background: rgba(255,255,255,0.74);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.72), inset 0 0 0 1px rgba(155,126,216,0.16);
  transition: box-shadow 0.25s ease, background 0.25s ease;
  outline: none;
}
.comment-form textarea::placeholder,
.topic-comment-form textarea::placeholder { color: rgba(124,110,160,0.55); }
.comment-form textarea:focus,
.topic-comment-form textarea:focus {
  background: rgba(255,255,255,0.92);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.72), 0 0 0 3px rgba(155,126,216,0.18), inset 0 0 0 1px rgba(155,126,216,0.35);
}
.comment-form input[type="text"],
.comment-form input[type="email"],
.comment-form input[type="url"] {
  border: none;
  border-radius: 14px;
  padding: 12px 14px;
  font-size: 15px;
  font-family: var(--font-sans);
  color: var(--color-text);
  background: rgba(255,255,255,0.74);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.72), inset 0 0 0 1px rgba(155,126,216,0.16);
  transition: box-shadow 0.25s ease;
  outline: none;
}
.comment-form input[type="text"]:focus,
.comment-form input[type="email"]:focus,
.comment-form input[type="url"]:focus {
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.72), 0 0 0 3px rgba(155,126,216,0.18), inset 0 0 0 1px rgba(155,126,216,0.35);
}
.comment-emoji-bar {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
  margin-top: 12px;
}
.emoji-hint { font-size: 12px; color: rgba(124,110,160,0.70); }
.form-submit { display: flex; justify-content: flex-end; margin: 20px 0 0 !important; }
.dl-comment-submit,
.comment-form input[type="submit"],
.comment-form .submit {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 11px 32px;
  font-size: 14px;
  font-weight: 600;
  font-family: var(--font-sans);
  color: #fff;
  border: none;
  border-radius: 999px;
  cursor: pointer;
  background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-accent) 100%);
  box-shadow: 0 6px 20px rgba(155,126,216,0.28), inset 0 1px 0 rgba(255,255,255,0.35);
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.dl-comment-submit:hover,
.comment-form input[type="submit"]:hover,
.comment-form .submit:hover {
  transform: translateY(-1px);
  box-shadow: 0 8px 26px rgba(155,126,216,0.40), inset 0 1px 0 rgba(255,255,255,0.35);
}
.dark .comment-respond {
  background: linear-gradient(160deg, rgba(42,32,62,0.92), rgba(33,25,52,0.88));
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.08), 0 14px 40px rgba(0,0,0,0.35);
}
.dark .comment-respond::before { background: linear-gradient(90deg, transparent, rgba(255,255,255,0.22), transparent); }
.dark .comment-form textarea,
.dark .topic-comment-form textarea,
.dark .comment-form input[type="text"],
.dark .comment-form input[type="email"],
.dark .comment-form input[type="url"] {
  background: rgba(20,15,32,0.55);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,0.08);
}
.dark .comment-form textarea:focus,
.dark .topic-comment-form textarea:focus {
  background: rgba(20,15,32,0.75);
  box-shadow: 0 0 0 3px rgba(155,126,216,0.22), inset 0 0 0 1px rgba(155,126,216,0.35);
}
.dark .comment-form textarea::placeholder,
.dark .topic-comment-form textarea::placeholder { color: rgba(200,190,230,0.45); }
.dark .comment-notes,
.dark .comment-logged-in { color: rgba(206,196,232,0.62); }
.dark .comment-logged-in strong { color: #b9a1ea; }

/* 小屏：表单卡铺满 + 按钮通栏 */
@media (max-width: 576px) {
  .comment-respond { padding: 20px 18px 22px; border-radius: 20px; margin-bottom: 32px; }
  .comment-reply-title,
  .topic-comment-form-title { font-size: 17px; }
  .comment-form textarea,
  .topic-comment-form textarea { min-height: 88px; }
  .form-submit { justify-content: stretch; }
  .form-submit .dl-comment-submit,
  .form-submit input[type="submit"],
  .form-submit .submit { width: 100%; padding: 12px 0; }
}

/* === 作者奖励评论者（1.7.10）=== */
.comment-footer {
  display: flex;
  align-items: center;
  gap: 12px;
}
.comment-reward-btn {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 4px 12px;
  font-size: 12px;
  font-weight: 600;
  font-family: var(--font-sans);
  color: #fff;
  border: none;
  border-radius: 999px;
  cursor: pointer;
  background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-accent) 100%);
  box-shadow: 0 4px 12px rgba(155,126,216,0.22), inset 0 1px 0 rgba(255,255,255,0.30);
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.comment-reward-btn::before {
  content: '★';
  font-size: 11px;
  line-height: 1;
}
.comment-reward-btn:hover {
  transform: translateY(-1px);
  box-shadow: 0 6px 18px rgba(155,126,216,0.35), inset 0 1px 0 rgba(255,255,255,0.30);
}
.topic-comment-reply {
  display: flex;
  align-items: center;
  gap: 12px;
}
.reward-target-tip {
  font-size: 13px;
  color: var(--color-text-muted);
  margin: 0 0 8px;
}
.reward-target-tip strong { color: var(--color-accent); font-weight: 600; }

/* 小屏：奖励按钮不换行挤爆 */
@media (max-width: 576px) {
  .comment-footer,
  .topic-comment-reply { flex-wrap: wrap; gap: 8px; }
}

/* === 评论奖励标签（1.7.10）=== */
.comment-reward-badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  margin-top: 8px;
  padding: 3px 10px;
  font-size: 11px;
  font-weight: 600;
  color: #fff;
  border-radius: 999px;
  background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-accent) 100%);
  box-shadow: 0 3px 10px rgba(229,108,154,0.25), inset 0 1px 0 rgba(255,255,255,0.28);
}

/* === 1.7.17 评论框淡紫半透明 + 回复目标标签 === */

.comment-reply-to {
  margin-left: 6px; font-size: 12px; font-weight: 500;
  color: var(--color-primary); text-decoration: none;
  vertical-align: middle;
}
.comment-reply-to:hover { text-decoration: underline; color: var(--color-accent); }
.dark .comment-reply-to { color: #B79CF0; }

.comment-form input[type="text"],
.comment-form input[type="email"],
.comment-form input[type="url"],
.comment-form textarea,
.topic-comment-form input[type="text"],
.topic-comment-form input[type="email"],
.topic-comment-form input[type="url"],
.topic-comment-form textarea {
  background: rgba(155,126,216,0.10);
  border-color: rgba(155,126,216,0.30);
}
.comment-form input:focus,
.comment-form textarea:focus,
.topic-comment-form input:focus,
.topic-comment-form textarea:focus {
  background: rgba(155,126,216,0.14);
  border-color: var(--color-primary);
  box-shadow: 0 0 0 3px rgba(155,126,216,0.12);
}
.comment-form textarea::placeholder,
.comment-form input::placeholder,
.topic-comment-form textarea::placeholder,
.topic-comment-form input::placeholder { color: rgba(120,105,160,0.55); }
.dark .comment-form input[type="text"],
.dark .comment-form input[type="email"],
.dark .comment-form input[type="url"],
.dark .comment-form textarea,
.dark .topic-comment-form input[type="text"],
.dark .topic-comment-form input[type="email"],
.dark .topic-comment-form input[type="url"],
.dark .topic-comment-form textarea {
  background: rgba(155,126,216,0.14);
  border-color: rgba(155,126,216,0.35);
}
.dark .comment-form input:focus,
.dark .comment-form textarea:focus,
.dark .topic-comment-form input:focus,
.dark .topic-comment-form textarea:focus {
  background: rgba(155,126,216,0.20);
  border-color: #9B7ED8;
}
.dark .comment-form textarea::placeholder,
.dark .comment-form input::placeholder,
.dark .topic-comment-form textarea::placeholder,
.dark .topic-comment-form input::placeholder { color: rgba(220,210,255,0.40); }

/* === 1.7.18 底栏滚动显隐 === */

.bottom-tab-bar {
  transition: transform .32s cubic-bezier(.4,0,.2,1), opacity .28s ease;
}
.bottom-tab-bar.tab-hidden {
  transform: translate(-50%, calc(100% + 28px));
  opacity: 0;
  pointer-events: none;
}

/* === 1.7.20 消息中心分类 Tab — 紫水晶发光 === */

.message-tabs {
  display: flex; gap: 8px; margin-bottom: 10px;
  justify-content: center;
}
.message-tab {
  flex: 0 1 auto; min-width: 0; position: relative;
  display: flex; flex-direction: column; align-items: center; gap: 2px;
  padding: 6px 12px 5px;
  background: rgba(155,126,216,0.03);
  border: none;
  border-radius: 12px;
  color: rgba(90,80,130,0.45);
  font-size: 10px; font-weight: 500;
  cursor: pointer;
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.12);
  transition: all .25s ease;
}
.message-tab-icon svg { width: 15px; height: 15px; display: block; opacity: .65; }
.message-tab:hover {
  color: var(--color-primary);
  background: rgba(155,126,216,0.08);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.16);
}
.message-tab.active {
  color: #fff;
  background: linear-gradient(135deg, #B08BE8 0%, #E8A0BF 100%);
  box-shadow: 0 4px 16px rgba(155,126,216,0.38), 0 2px 8px rgba(229,108,154,0.30),
              inset 0 1px 0 rgba(255,255,255,0.30);
  transform: translateY(-1px);
}
.message-tab.active .message-tab-icon svg { opacity: 1; }
.message-tab-badge {
  position: absolute; top: 1px; right: 1px;
  min-width: 14px; height: 14px; line-height: 14px; padding: 0 4px;
  border-radius: 999px; background: #E56C9A; color: #fff;
  font-size: 9px; font-weight: 700; text-align: center;
  box-shadow: 0 0 8px rgba(229,108,154,0.60);
}
.dark .message-tab {
  background: rgba(155,126,216,0.07);
  color: rgba(220,210,255,0.45);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.06);
}
.dark .message-tab:hover { color: #fff; background: rgba(155,126,216,0.13); }
.dark .message-tab.active {
  background: linear-gradient(135deg, #B08BE8 0%, #E8A0BF 100%);
  box-shadow: 0 5px 18px rgba(155,126,216,0.45), 0 2px 8px rgba(229,108,154,0.35),
              inset 0 1px 0 rgba(255,255,255,0.30);
}

/* 全部标为已读：次要按钮，最淡最沉 */
.message-actions {
  display: flex; justify-content: flex-end; margin-bottom: 10px;
}
.message-mark-all {
  padding: 5px 12px; font-size: 11px; font-weight: 500;
  color: rgba(120,105,160,0.60);
  background: transparent;
  border: none;
  border-radius: 999px;
  cursor: pointer;
  transition: all .25s ease;
}
.message-mark-all:hover { color: var(--color-primary); background: rgba(155,126,216,0.08); }
.message-mark-all:disabled { opacity: .4; cursor: default; }
.dark .message-mark-all { color: rgba(200,190,235,0.55); }
.dark .message-mark-all:hover { color: #fff; background: rgba(155,126,216,0.16); }

/* === 1.7.19 个人主页 tab 入口 === */

.user-tab-nav {
  display: flex; gap: 8px; margin: 14px 0;
}
.user-tab-btn {
  flex: 1 1 0%; min-width: 0;
  display: flex; flex-direction: column; align-items: center; gap: 2px;
  padding: 9px 4px 8px;
  background: rgba(155,126,216,0.03);
  border: none;
  border-radius: 14px;
  color: var(--color-text-secondary);
  text-decoration: none;
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.12);
  transition: all .25s ease;
}
.user-tab-num { font-size: 15px; font-weight: 700; color: var(--color-primary); line-height: 1.2; }
.user-tab-label { font-size: 10px; color: var(--color-text-muted); font-weight: 500; }
.user-tab-btn:hover {
  background: rgba(155,126,216,0.08);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.16);
}
.user-tab-btn.active {
  background: linear-gradient(135deg, #B08BE8 0%, #E8A0BF 100%);
  box-shadow: 0 4px 16px rgba(155,126,216,0.38), 0 2px 8px rgba(229,108,154,0.30),
              inset 0 1px 0 rgba(255,255,255,0.30);
  transform: translateY(-1px);
}
.user-tab-btn.active .user-tab-num { color: #fff; }
.user-tab-btn.active .user-tab-label { color: rgba(255,255,255,0.85); }
.dark .user-tab-btn {
  background: rgba(155,126,216,0.07);
  color: rgba(255,255,255,0.60);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.06);
}
.dark .user-tab-btn .user-tab-num { color: #B79CF0; }
.dark .user-tab-btn:hover { background: rgba(155,126,216,0.13); color: #fff; }
.dark .user-tab-btn.active {
  background: linear-gradient(135deg, #B08BE8 0%, #E8A0BF 100%);
  box-shadow: 0 5px 18px rgba(155,126,216,0.45), 0 2px 8px rgba(229,108,154,0.35),
              inset 0 1px 0 rgba(255,255,255,0.30);
}
.dark .user-tab-btn.active .user-tab-num { color: #fff; }

/* 个人主页内列表分区标题稍缩小 */
.user-profile-list .section-title { font-size: 17px; margin-bottom: 14px; }

.user-comment-list { display: flex; flex-direction: column; gap: 10px; }
.user-comment-item {
  display: block; padding: 14px 16px;
  background: rgba(155,126,216,0.06);
  border: 1px solid rgba(155,126,216,0.12);
  border-radius: 16px;
  text-decoration: none; transition: all var(--transition);
}
.user-comment-item:hover { background: rgba(155,126,216,0.11); transform: translateY(-1px); }
.user-comment-text { margin: 0 0 6px; font-size: 14px; color: var(--color-text); line-height: 1.6; }
.user-comment-meta { margin: 0; font-size: 12px; color: var(--color-text-muted); }

/* 消息头像图标尺寸兜底 */
.message-avatar svg { width: 20px; height: 20px; display: block; margin: auto; }

/* === 全局 Toast（1.7.32） === */
#dl-toast {
  position: fixed; top: 0; left: 50%;
  transform: translate(-50%, -120%);
  z-index: 99999;
  min-width: 240px; max-width: 86vw;
  padding: 12px 18px;
  border-radius: 16px;
  background: rgba(255,255,255,.82);
  backdrop-filter: blur(20px) saturate(160%);
  -webkit-backdrop-filter: blur(20px) saturate(160%);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.6), 0 10px 34px rgba(90,60,160,.22);
  transition: transform .32s cubic-bezier(0.4, 0, 0.2, 1);
  pointer-events: none;
  text-align: center;
}
#dl-toast.show { transform: translate(-50%, 14px); }
.dl-toast-title {
  font-size: 14px; font-weight: 700;
  background: linear-gradient(135deg, #8F6FD0 0%, #E56C9A 100%);
  -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text;
}
.dl-toast-sub { margin-top: 3px; font-size: 12px; color: var(--color-text-muted); }
.dark #dl-toast {
  background: rgba(28,24,52,.82);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.08), 0 10px 34px rgba(0,0,0,.4);
}

/* === 隐藏内容（付费 / 登录 / 评论可见） === */
.publish-toolbar, .post-edit-toolbar { position: relative; }

.publish-lock-toggle svg { display: block; }

.publish-lock-menu {
  position: absolute; top: calc(100% - 2px); left: 0; z-index: 40;
  display: flex; flex-direction: column; gap: 2px; min-width: 128px;
  padding: 6px; background: var(--color-bg-soft);
  border: 1px solid var(--color-border-light); border-radius: 10px;
  box-shadow: 0 10px 30px rgba(90, 60, 160, .18);
}
.publish-lock-opt {
  width: 100% !important; height: 32px !important; justify-content: flex-start !important;
  border: none !important; border-radius: 7px !important;
  font-size: 13px !important; color: var(--color-text) !important; padding: 0 10px !important;
}
.publish-lock-opt:hover { background: rgba(155, 126, 216, .12) !important; }

/* 编辑器内的隐藏块（编辑态，紫色虚线 + 标签） */
.dl-lock {
  position: relative; margin: 10px 0; padding: 26px 12px 12px;
  border: 1px dashed var(--color-primary); border-radius: 10px;
  background: rgba(155, 126, 216, .05);
}
.dl-lock-label {
  position: absolute; top: 6px; right: 8px;
  display: inline-flex; align-items: center; gap: 8px;
  opacity: 0; pointer-events: none;
  transition: opacity .2s ease;
}
.dl-lock:hover .dl-lock-label,
.dl-lock:focus-within .dl-lock-label {
  opacity: 1; pointer-events: auto;
}
.dl-lock-remove {
  border: none; background: transparent; color: var(--color-text-muted);
  font-size: 11px; cursor: pointer; padding: 0; flex-shrink: 0;
}
.dl-lock-remove:hover { color: #e56c9a; }

/* 读者端折叠遮罩（横排矮卡片） */
.dl-lock-mask {
  position: relative; margin: 18px 0; padding: 13px 16px;
  display: flex; align-items: center; gap: 12px; flex-wrap: wrap; text-align: left;
  border: 1px dashed rgba(155, 126, 216, .45); border-radius: 14px;
  background: linear-gradient(135deg, rgba(155, 126, 216, .07), rgba(232, 160, 191, .10));
  overflow: hidden;
}
.dl-lock-mask::before {
  content: ''; position: absolute; inset: 0;
  background: radial-gradient(120px 60px at 50% 0%, rgba(232, 160, 191, .22), transparent 70%);
  pointer-events: none;
}
.dl-lock-mask-icon {
  display: inline-flex; align-items: center; justify-content: center;
  width: 40px; height: 40px; flex-shrink: 0;
  border-radius: 12px; color: var(--color-primary);
  background: linear-gradient(135deg, rgba(155, 126, 216, .16), rgba(232, 160, 191, .18));
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .5), 0 6px 16px rgba(90, 60, 160, .12);
}
.dl-lock-mask-info { flex: 1; min-width: 140px; }
.dl-lock-mask-title { font-size: 14px; font-weight: 700; color: var(--color-text); }
.dl-lock-mask-desc { margin-top: 2px; font-size: 12px; color: var(--color-text-muted); }
.dl-lock-btn {
  margin-top: 0; padding: 8px 18px; flex-shrink: 0;
  border: none; border-radius: 999px; cursor: pointer;
  font-size: 13px; font-weight: 600; color: #fff;
  background: linear-gradient(135deg, #9B7ED8 0%, #E56C9A 100%);
  box-shadow: 0 6px 18px rgba(155, 126, 216, .35);
  transition: transform var(--transition), box-shadow var(--transition);
}
.dl-lock-btn:hover { transform: translateY(-1px); box-shadow: 0 8px 22px rgba(155, 126, 216, .45); }

/* 解锁后的"隐藏内容"小卡片 */
.dl-lock-open {
  position: relative; margin: 16px 0; padding: 12px 16px 14px;
  border: 1px solid rgba(155, 126, 216, .28);
  border-left: none;
  border-radius: 12px;
  background: linear-gradient(135deg, rgba(155, 126, 216, .06), rgba(232, 160, 191, .08));
}
.dl-lock-open::before {
  content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 3px;
  border-radius: 3px 0 0 3px;
  background: linear-gradient(180deg, #9B7ED8, #E56C9A, #E8A0BF, #B8A4E8, #9B7ED8);
  background-size: 100% 240%;
  background-position: 0 0;
  animation: dl-lock-flow 4.5s linear infinite;
}
@keyframes dl-lock-flow {
  0% { background-position: 0 0; }
  100% { background-position: 0 240%; }
}
.dl-lock-open-label {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 2px 10px; margin-bottom: 8px;
  border-radius: 999px; font-size: 12px; font-weight: 600;
  color: #fff;
  background: linear-gradient(135deg, #9B7ED8 0%, #E56C9A 100%);
  box-shadow: 0 2px 8px rgba(155, 126, 216, .35);
}
.dl-lock-open-body > :first-child { margin-top: 0; }
.dl-lock-open-body > :last-child { margin-bottom: 0; }
.dark .dl-lock-open {
  background: linear-gradient(135deg, rgba(155, 126, 216, .13), rgba(232, 160, 191, .16));
  border-color: rgba(184, 164, 232, .4);
}
.dark .dl-lock-open::before {
  background: linear-gradient(180deg, #B8A4E8, #E8A0BF, #F5D5E6, #B8A4E8);
  background-size: 100% 240%;
}
.publish-lock-menu[hidden] { display: none; }

/* 隐藏内容输入弹窗（移动端友好） */
.dl-lock-modal-mask[hidden] { display: none !important; }
.dl-lock-modal-mask {
  position: fixed; inset: 0; z-index: 9999;
  display: flex; align-items: center; justify-content: center;
  padding: 24px;
  background: rgba(30, 24, 48, .45);
  backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px);
}
.dl-lock-modal {
  width: 100%; max-width: 420px;
  padding: 22px 20px 18px;
  border-radius: 18px;
  background: rgba(255, 255, 255, .92);
  border: 1px solid rgba(155, 126, 216, .25);
  box-shadow: 0 18px 44px rgba(60, 40, 110, .28);
  backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px);
}
.dark .dl-lock-modal {
  background: rgba(34, 28, 52, .94);
  border-color: rgba(155, 126, 216, .3);
}
.dl-lock-modal-title {
  font-size: 16px; font-weight: 700; color: var(--color-text);
  padding-bottom: 12px; margin-bottom: 12px;
  border-bottom: 1px solid rgba(155, 126, 216, .18);
}
.dl-lock-modal-price-wrap,
.dl-lock-modal-content-wrap { margin-bottom: 12px; }
.dl-lock-modal-price-wrap label,
.dl-lock-modal-content-wrap label {
  display: block; margin-bottom: 6px;
  font-size: 12px; color: var(--color-text-muted);
}
.dl-lock-modal-price {
  width: 100%; padding: 9px 12px;
  border-radius: 10px; border: 1px solid rgba(155, 126, 216, .35);
  background: rgba(255, 255, 255, .6);
  font-size: 14px; color: var(--color-text);
  outline: none;
}
.dl-lock-modal-content {
  width: 100%; min-height: 110px; resize: vertical;
  padding: 10px 12px;
  border-radius: 10px; border: 1px solid rgba(155, 126, 216, .35);
  background: rgba(255, 255, 255, .6);
  font-size: 14px; line-height: 1.6; color: var(--color-text);
  font-family: inherit; outline: none;
}
.dark .dl-lock-modal-price,
.dark .dl-lock-modal-content {
  background: rgba(255, 255, 255, .08);
  border-color: rgba(155, 126, 216, .4);
  color: var(--color-text);
}
.dl-lock-modal-price:focus,
.dl-lock-modal-content:focus {
  border-color: var(--color-primary);
  box-shadow: 0 0 0 3px rgba(155, 126, 216, .18);
}
.dl-lock-modal-actions {
  display: flex; gap: 10px; justify-content: flex-end; margin-top: 16px;
}
.dl-lock-modal-btn {
  padding: 8px 20px;
  border: none; border-radius: 999px; cursor: pointer;
  font-size: 13px; font-weight: 600;
}
.dl-lock-modal-cancel {
  background: rgba(155, 126, 216, .12); color: var(--color-text);
}
.dl-lock-modal-ok {
  color: #fff;
  background: linear-gradient(135deg, #9B7ED8 0%, #E56C9A 100%);
  box-shadow: 0 6px 16px rgba(155, 126, 216, .35);
}
.dl-lock-modal-ok:hover { transform: translateY(-1px); box-shadow: 0 8px 20px rgba(155, 126, 216, .45); }

/* === 话题角标（置顶 / 加精 / 已解决 / 已关闭） === */
.post-card-flags { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 8px; }

.topic-flag {
  display: inline-flex; align-items: center;
  font-size: 11px; font-weight: 600; line-height: 1;
  padding: 4px 8px; border-radius: var(--radius-full);
  letter-spacing: 0.04em;
}

.flag-pinned {
  color: #fff;
  background: linear-gradient(135deg, #E56C9A, #C43D8F);
  box-shadow: 0 2px 8px rgba(228, 108, 154, .35);
}

.flag-featured {
  color: #7A4A00;
  background: linear-gradient(135deg, #FDE68A, #F59E0B);
  border: 1px solid rgba(245, 158, 11, .4);
}

.flag-solved {
  color: #047857;
  background: linear-gradient(135deg, #D1FAE5, #A7F3D0);
  border: 1px solid rgba(16, 185, 129, .35);
}

.flag-closed {
  color: #6B7280;
  background: linear-gradient(135deg, #F3F4F6, #E5E7EB);
  border: 1px solid rgba(107, 114, 128, .25);
}

/* === 版块页筛选 tab === */
.topic-filter-tabs {
  display: flex; flex-wrap: wrap; gap: 8px;
  margin-bottom: 20px; padding-bottom: 18px;
  border-bottom: 1px solid var(--color-border-light);
}

.topic-filter-tab {
  font-size: 13px; font-weight: 500;
  color: var(--color-text-secondary);
  padding: 7px 16px;
  border: 1px solid var(--color-border-light);
  border-radius: var(--radius-full);
  background: var(--glass-bg);
  transition: all var(--transition);
}

.topic-filter-tab:hover {
  color: var(--color-primary);
  border-color: var(--color-primary);
}

.topic-filter-tab.is-active {
  color: #fff;
  border-color: transparent;
  background: linear-gradient(135deg, var(--color-primary), var(--color-accent));
  box-shadow: 0 4px 12px rgba(155, 126, 216, .3);
}

/* === 回复排序 / 只看楼主 tab === */
.topic-reply-tabs {
  display: flex; align-items: center; flex-wrap: wrap; gap: 8px;
  margin: 18px 0 8px;
}

.topic-reply-tab {
  font-size: 13px; font-weight: 500;
  color: var(--color-text-secondary);
  padding: 6px 14px;
  border: 1px solid var(--color-border-light);
  border-radius: var(--radius-full);
  background: transparent;
  cursor: pointer;
  transition: all var(--transition);
  font-family: inherit;
}

.topic-reply-tab:hover {
  color: var(--color-primary);
  border-color: var(--color-primary);
}

.topic-reply-tab.is-active {
  color: #fff;
  border-color: transparent;
  background: linear-gradient(135deg, var(--color-primary), var(--color-accent));
}

.topic-reply-tab-divider {
  width: 1px; height: 18px;
  background: var(--color-border-light);
  margin: 0 4px;
}

/* === 话题状态提示条 === */
.topic-status-bar {
  padding: 12px 18px; margin-bottom: 24px;
  border-radius: var(--radius-md);
  font-size: 14px; line-height: 1.6;
}

.topic-status-closed {
  color: #4B5563;
  background: linear-gradient(135deg, rgba(107,114,128,.1), rgba(107,114,128,.05));
  border: 1px solid rgba(107, 114, 128, .2);
}

.topic-status-solved {
  color: #047857;
  background: linear-gradient(135deg, rgba(16,185,129,.1), rgba(16,185,129,.04));
  border: 1px solid rgba(16, 185, 129, .25);
}

/* === 话题作者操作（编辑 / 删除） === */
.topic-single-owner {
  display: flex; align-items: center; gap: 8px;
  flex-shrink: 0; min-width: 0;
}

.topic-owner-btn {
  width: auto; height: auto;
  display: inline-flex; align-items: center; justify-content: center;
  padding: 8px 14px;
  border: 1px solid var(--color-border-light); background: var(--color-bg);
  border-radius: 20px;
  font-size: 12px; color: var(--color-text-secondary);
  cursor: pointer; white-space: nowrap;
  transition: all var(--transition);
  font-family: inherit;
}

.topic-owner-btn:hover { color: var(--color-primary); border-color: var(--color-primary); }
.topic-owner-delete { color: #ef4444; }
.topic-owner-delete:hover { color: #dc2626; border-color: rgba(239, 68, 68, 0.4); }

/* === 话题页按钮移动端统一（不溢出） === */
.topic-reply-tab,
.topic-filter-tab,
.topic-filter-tab.is-active { white-space: nowrap; }

@media (max-width: 768px) {
  .topic-single-footer { flex-direction: column; align-items: stretch; gap: 14px; }
  .topic-single-actions { width: 100%; }
  .topic-single-owner { justify-content: flex-start; }
}

@media (max-width: 400px) {
  .topic-single-actions { gap: 8px; }
  .topic-single-footer .post-like-btn,
  .topic-single-footer .post-fav-btn,
  .topic-single-footer .post-tip-btn,
  .topic-single-footer .post-share-btn { padding: 4px 4px; font-size: 11px; gap: 3px; }
  .topic-single-footer .post-like-btn svg,
  .topic-single-footer .post-fav-btn svg,
  .topic-single-footer .post-tip-btn svg,
  .topic-single-footer .post-share-btn svg { width: 14px; height: 14px; }
  .topic-owner-btn { padding: 8px 10px; font-size: 11px; }
}

/* === 评论框紧凑化（文章 / 论坛统一） === */
.comment-reply-title,
.topic-comment-form-title { display: none; }
.comment-respond {
  overflow: visible;
  background: transparent;
  box-shadow: none;
  border-radius: 0;
  padding: 0;
}
.dark .comment-respond {
  background: transparent;
  box-shadow: none;
}
.comment-respond::before { display: none; }
.comment-form textarea,
.topic-comment-form textarea {
  min-height: 40px;
  padding-right: 44px;
  transition: min-height 0.2s ease, box-shadow 0.25s ease, background 0.25s ease;
}
.comment-form textarea:focus,
.topic-comment-form textarea:focus { min-height: 128px; }
.comment-form .form-submit,
.topic-comment-form .form-submit { display: none !important; }
.comment-field-wrap { display: flex; align-items: flex-end; gap: 10px; }
.comment-field-box { position: relative; flex: 1; min-width: 0; }
.comment-emoji-inner {
  position: absolute; right: 8px; bottom: 8px; z-index: 60;
  display: flex; align-items: center; gap: 6px;
}
.comment-field-wrap .dl-comment-submit {
  width: auto; height: 40px; padding: 0 18px; flex-shrink: 0;
  font-size: 13px; border-radius: 12px;
}
.comment-emoji-toggle {
  display: inline-flex; align-items: center; justify-content: center;
  width: 28px; height: 28px; padding: 0;
  border: 1px solid var(--color-border-light); background: var(--color-bg);
  border-radius: 50%; cursor: pointer;
  color: var(--color-text-muted); transition: all var(--transition);
}
.comment-emoji-toggle:hover { color: var(--color-primary); border-color: var(--color-primary-light); }
.comment-emoji-panel {
  position: absolute; right: 0; bottom: calc(100% + 8px); z-index: 90;
  width: 248px; padding: 8px;
  display: flex; flex-wrap: wrap; gap: 2px;
  background: var(--color-bg); border: 1px solid var(--color-border-light);
  border-radius: 12px; box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12);
}
.comment-emoji-panel[hidden] { display: none; }
.comment-emoji-panel .emoji-btn { font-size: 20px; padding: 4px 6px; }

/* === 首页文章双列网格整改（1.7.59） === */
body.home .posts-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 16px;
}

body.home .post-card-image { aspect-ratio: 4 / 3; }

body.home .post-card-body { padding: 14px 16px 16px; }

body.home .post-card-meta {
  gap: 12px;
  margin-bottom: 8px;
}
body.home .post-date,
body.home .post-views { font-size: 12px; }

body.home .post-card-title {
  font-size: 16px;
  line-height: 1.45;
  margin-bottom: 8px;
}
body.home .post-card-title a {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
/* 整卡可点：标题链接拉伸覆盖整张卡片 */
body.home .post-card-title a::after {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 1;
}
/* 卡内二级链接（作者头像等）保持可点 */
body.home .post-card-footer a,
body.home .post-card-image a { position: relative; z-index: 2; }

body.home .post-card-excerpt {
  font-size: 13px;
  -webkit-line-clamp: 2;
}

/* 作者信息轻量化：只留小头像，隐藏昵称大字 */
body.home .post-card-author-avatar,
body.home .post-card-author-avatar img { width: 22px; height: 22px; }
body.home .post-card-author-name { display: none; }

body.home .post-card-footer {
  margin-top: 12px;
  padding-top: 10px;
}

@media (max-width: 576px) {
  body.home .posts-grid { gap: 12px; }
  body.home .post-card-body { padding: 12px 14px 14px; }
  body.home .post-card-title { font-size: 15px; }
}

@media (max-width: 400px) {
  body.home .post-card-title { font-size: 14px; }
  body.home .post-card-excerpt { display: none; }
}

/* === 首页分类 Tab + 置顶角标（1.7.60） === */
body.home .posts-header { margin-bottom: 20px; }

body.home .home-cat-tabs {
  display: flex;
  align-items: center;
  gap: 8px;
  overflow-x: auto;
  padding-bottom: 4px;
  scrollbar-width: none;
}
body.home .home-cat-tabs::-webkit-scrollbar { display: none; }

body.home .home-cat-tab {
  flex-shrink: 0;
  padding: 7px 16px;
  font-size: 13px;
  font-weight: 600;
  color: var(--color-text-secondary, #6b7280);
  background: rgba(155, 126, 216, 0.08);
  border: 1px solid rgba(155, 126, 216, 0.18);
  border-radius: 999px;
  transition: all 0.25s ease;
}
body.home .home-cat-tab:hover {
  color: var(--color-primary, #7c5cc4);
  border-color: rgba(155, 126, 216, 0.5);
  transform: translateY(-1px);
}
body.home .home-cat-tab.is-active {
  color: #fff;
  background: var(--gradient-primary, linear-gradient(135deg, #9B7ED8, #E8A0BF));
  border-color: transparent;
  box-shadow: 0 4px 14px rgba(155, 126, 216, 0.35);
}
body.home .home-cat-tab.is-active[style*="--tab-color"] {
  background: linear-gradient(135deg, var(--tab-color, #9B7ED8), #b98cc0);
}

/* 置顶角标 */
.post-card-pin {
  display: inline-block;
  padding: 2px 8px;
  font-size: 11px;
  font-weight: 700;
  line-height: 1.6;
  color: #fff;
  background: linear-gradient(135deg, #9B7ED8, #E8A0BF);
  border-radius: 999px;
  vertical-align: middle;
}
body.home .post-card-pin { font-size: 11px; }

/* === 会员商城 === */
.shop-head {
  position: relative; padding: 24px 24px 22px; margin: 8px 0 4px;
  text-align: center; overflow: hidden; border-radius: 20px;
  background: linear-gradient(135deg, rgba(155,126,216,.18), rgba(232,160,191,.16) 55%, rgba(244,181,212,.22));
  border: 1px solid rgba(155,126,216,.3);
  box-shadow: 0 10px 34px rgba(74,45,122,.14), inset 0 1px 0 rgba(255,255,255,.5);
}
.shop-head-bg {
  position: absolute; inset: 0; pointer-events: none;
  background:
    radial-gradient(240px 130px at 10% 18%, rgba(255,255,255,.6), transparent 70%),
    radial-gradient(220px 130px at 90% 22%, rgba(244,181,212,.5), transparent 70%),
    radial-gradient(180px 100px at 50% 120%, rgba(155,126,216,.35), transparent 70%);
}
.shop-star {
  position: absolute; z-index: 1; font-size: 13px; line-height: 1;
  color: #fff; text-shadow: 0 0 10px rgba(155,126,216,.9);
  animation: shopStarFloat 4.5s ease-in-out infinite;
}
.shop-star.s1 { top: 20%; left: 7%; }
.shop-star.s2 { top: 14%; right: 9%; animation-delay: 1.2s; font-size: 11px; }
.shop-star.s3 { bottom: 22%; left: 12%; animation-delay: 2.1s; font-size: 10px; }
.shop-star.s4 { bottom: 18%; right: 14%; animation-delay: 3s; font-size: 12px; }
@keyframes shopStarFloat {
  0%, 100% { transform: translateY(0) scale(1); opacity: .5; }
  50% { transform: translateY(-9px) scale(1.2); opacity: 1; }
}
.shop-title {
  position: relative; z-index: 1; margin: 0; font-size: 27px; font-weight: 900;
  letter-spacing: 3px;
  background: linear-gradient(120deg, #7C5CBF, #C86FA8 45%, #D4A574 75%, #7C5CBF);
  background-size: 200% auto;
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
  animation: shopTitleShine 6s linear infinite;
}
@keyframes shopTitleShine { to { background-position: 200% center; } }
.shop-sub { position: relative; z-index: 1; margin: 8px 0 0; color: var(--color-text-secondary); font-size: 13px; }

/* 会员状态横幅 */
.shop-status {
  position: relative; display: flex; align-items: center; flex-wrap: wrap; gap: 12px;
  margin: 18px 0; padding: 14px 18px; overflow: hidden; border-radius: 16px;
  background: linear-gradient(135deg, rgba(155,126,216,.14), rgba(232,160,191,.12));
  border: 1px solid rgba(155,126,216,.28);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.35);
}
.shop-status-active {
  background: linear-gradient(135deg, rgba(212,175,55,.16), rgba(155,126,216,.16));
  border-color: rgba(212,175,55,.4);
}
.shop-status-crown { display: inline-flex; filter: drop-shadow(0 2px 5px rgba(74,45,122,.35)); }
.shop-status-flag {
  font-size: 12px; font-weight: 700; color: #fff; letter-spacing: 1px;
  padding: 4px 12px; border-radius: 999px;
  background: linear-gradient(135deg, #9B7ED8, #E8A0BF);
  box-shadow: 0 3px 10px rgba(155,126,216,.45), inset 0 1px 0 rgba(255,255,255,.4);
}
.shop-status-active .shop-status-flag {
  background: linear-gradient(135deg, #d4af37, #9B7ED8);
  box-shadow: 0 3px 10px rgba(212,175,55,.45), inset 0 1px 0 rgba(255,255,255,.4);
}
.shop-status-info { font-size: 13px; color: var(--color-text-secondary); }
.shop-status-info strong { color: var(--color-text); font-weight: 800; }
.shop-status-points { margin-left: auto; font-size: 13px; color: var(--color-text-secondary); }
.shop-point-coin {
  display: inline-block; width: 10px; height: 10px; border-radius: 50%; margin-right: 6px;
  background: radial-gradient(circle at 32% 30%, #ffe9b8, #d4af37 70%);
  box-shadow: 0 0 6px rgba(212,175,55,.7);
}
.shop-status-points strong { color: #D4AF37; font-size: 16px; text-shadow: 0 0 8px rgba(212,175,55,.35); }

/* 三档会员面板（每档独立容器，档内商品横滑） */
.shop-tier {
  position: relative; margin: 14px 0; padding: 16px 18px 14px; border-radius: 20px;
  background: var(--color-surface);
  border: 1px solid var(--tier-border);
  box-shadow: 0 8px 30px rgba(74,45,122,.09);
}
.shop-tier-dots { display: flex; justify-content: center; gap: 8px; margin: 10px 0 2px; }
.shop-tier-dot {
  width: 7px; height: 7px; border-radius: 999px; padding: 0; border: none; cursor: pointer;
  background: rgba(155,126,216,.3);
  transition: width .25s, background .25s;
}
.shop-tier-dot.is-active {
  width: 22px;
  background: linear-gradient(90deg, #9B7ED8, #E8A0BF);
}
.shop-tier::before {
  content: ""; position: absolute; top: 0; left: 0; right: 0; height: 3px;
  border-radius: 20px 20px 0 0;
  background: linear-gradient(90deg, transparent, var(--tier-accent) 30%, var(--tier-accent2) 70%, transparent);
}
.tier-fusheng {
  --tier-accent: #8fa3ba; --tier-accent2: #d6e4f2;
  --tier-border: rgba(143,163,186,.35); --tier-shadow: rgba(125,143,165,.35);
}
.tier-ruomeng {
  --tier-accent: #d9a13d; --tier-accent2: #ffe9b8;
  --tier-border: rgba(217,161,61,.42); --tier-shadow: rgba(217,161,61,.4);
}
.tier-yaochen {
  --tier-accent: #a986e6; --tier-accent2: #cdb8f7;
  --tier-border: rgba(169,134,230,.45); --tier-shadow: rgba(169,134,230,.45);
}
.shop-tier-head { display: flex; align-items: center; gap: 12px; margin-bottom: 12px; }
.shop-tier-icon {
  width: 46px; height: 46px; flex: 0 0 auto;
  display: inline-flex; align-items: center; justify-content: center; border-radius: 50%;
  background: radial-gradient(circle at 32% 26%, var(--tier-accent2), var(--tier-accent) 75%);
  box-shadow: 0 5px 16px var(--tier-shadow), inset 0 1px 0 rgba(255,255,255,.65);
}
.shop-tier-title { flex: 1; min-width: 0; }
.shop-tier-name {
  display: block; font-size: 17px; font-weight: 900; letter-spacing: 2px;
  background: linear-gradient(120deg, var(--tier-accent), var(--tier-accent2));
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
}
.shop-tier-privs { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 5px; }
.shop-tier-priv {
  font-size: 10px; font-weight: 700; letter-spacing: .5px; padding: 2px 9px; border-radius: 999px;
  color: var(--tier-accent);
  background: rgba(155,126,216,.09);
  border: 1px solid var(--tier-border);
}
.shop-tier-nav { flex: 0 0 auto; display: flex; gap: 8px; }
.shop-tier-arrow {
  width: 30px; height: 30px;
  display: inline-flex; align-items: center; justify-content: center;
  border: none; border-radius: 50%; cursor: pointer;
  color: #fff; font-size: 14px; line-height: 1; padding: 0;
  background: linear-gradient(135deg, var(--tier-accent), var(--tier-accent2) 130%);
  box-shadow: 0 4px 12px var(--tier-shadow), inset 0 1px 0 rgba(255,255,255,.4);
  transition: transform .18s, box-shadow .18s, opacity .18s;
}
.shop-tier-arrow:hover { box-shadow: 0 6px 18px var(--tier-shadow); transform: scale(1.08); }
.shop-tier-arrow:active { transform: scale(.94); }
.shop-tier-arrow.is-disabled { opacity: .35; pointer-events: none; }
.shop-tier-goods {
  display: flex; gap: 16px; overflow-x: auto;
  scroll-snap-type: x mandatory;
  scrollbar-width: none; scroll-behavior: smooth;
  padding: 4px 2px 6px;
}
.shop-tier-goods::-webkit-scrollbar { display: none; }
.shop-card {
  --card-face: #fff;
  flex: 0 0 calc(100% - 4px);
  scroll-snap-align: start;
  position: relative; padding: 16px 20px 14px; border-radius: 18px; text-align: center;
  border: 1px solid transparent;
  background:
    linear-gradient(var(--card-face), var(--card-face)) padding-box,
    linear-gradient(150deg, var(--tier-accent2) 0%, var(--tier-accent) 55%, var(--tier-accent2) 110%) border-box;
  box-shadow: 0 6px 22px rgba(31,18,56,.08), inset 0 1px 0 rgba(255,255,255,.55);
  transition: transform .22s, box-shadow .22s;
}
.shop-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 12px 30px var(--tier-shadow), inset 0 1px 0 rgba(255,255,255,.6);
}
.shop-card-crown { display: inline-flex; margin-bottom: 8px; filter: drop-shadow(0 2px 4px rgba(31,18,56,.22)); }
.shop-card-days { font-size: 26px; font-weight: 900; line-height: 1; color: var(--color-text); }
.shop-card-days em { font-style: normal; font-size: 13px; font-weight: 600; color: var(--color-text-muted); margin-left: 4px; }
.shop-card-price { margin: 8px 0 12px; }
.shop-price-now { display: flex; align-items: baseline; justify-content: center; gap: 6px; }
.shop-price-now em {
  font-style: normal; font-size: 28px; font-weight: 900; line-height: 1;
  background: linear-gradient(150deg, #E8A0BF 0%, #D4A574 100%);
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
  filter: drop-shadow(0 2px 4px rgba(212,120,90,.28));
}
.shop-price-now i { font-style: normal; font-size: 12px; color: var(--color-text-muted); }
.shop-price-orig {
  display: block; margin-top: 3px; font-size: 11px;
  color: var(--color-text-muted); text-decoration: line-through;
}
.shop-buy-btn {
  position: relative; display: block; width: 100%; max-width: 220px; margin: 0 auto;
  padding: 9px 0; border: none; border-radius: 999px; overflow: hidden;
  font-size: 14px; font-weight: 800; letter-spacing: 3px; cursor: pointer; color: #fff;
  background: linear-gradient(135deg, var(--tier-accent) 0%, var(--tier-accent2) 130%);
  box-shadow: 0 4px 14px var(--tier-shadow), inset 0 1px 0 rgba(255,255,255,.4);
  transition: transform .18s, box-shadow .18s, filter .18s;
}
.shop-buy-btn::after {
  content: ""; position: absolute; top: 0; left: -80%; width: 45%; height: 100%;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,.55), transparent);
  transform: skewX(-20deg); transition: left .5s ease;
}
.shop-buy-btn:hover { transform: translateY(-1px); filter: brightness(1.1); box-shadow: 0 7px 22px var(--tier-shadow); }
.shop-buy-btn:hover::after { left: 135%; }
.shop-buy-btn:active { transform: translateY(1px); }
.shop-buy-btn:disabled { opacity: .5; cursor: not-allowed; filter: none; }
.shop-buy-btn:disabled::after { display: none; }

/* 未来扩展占位 */
.shop-more { display: flex; gap: 14px; margin: 28px 0 10px; flex-wrap: wrap; }
.shop-more-item {
  flex: 1; min-width: 150px; padding: 18px 16px; text-align: center;
  border: 1px dashed rgba(155,126,216,.4); border-radius: 16px;
  color: var(--color-text-muted); font-size: 14px; font-weight: 700; letter-spacing: 1px;
  background: linear-gradient(135deg, rgba(155,126,216,.06), rgba(232,160,191,.06));
  transition: border-color .2s, transform .2s, box-shadow .2s;
}
.shop-more-item:hover {
  border-color: rgba(155,126,216,.65); transform: translateY(-2px);
  box-shadow: 0 6px 18px rgba(155,126,216,.18);
}
.shop-more-icon { margin-right: 6px; color: #9B7ED8; }
.shop-more-item em { display: block; font-style: normal; font-size: 11px; font-weight: 400; margin-top: 5px; opacity: .75; }

/* 购买确认弹窗 */
.shop-buy-overlay { display: flex; }
.shop-buy-box {
  width: 340px; max-width: 92vw; border-radius: 20px; overflow: hidden;
  background: linear-gradient(180deg, #fff 0%, rgba(248,246,252,.98) 100%);
}
.dark .shop-buy-box {
  background: linear-gradient(180deg, rgba(27,23,50,.98) 0%, rgba(22,19,43,.98) 100%);
}
.shop-buy-head { display: flex; align-items: center; gap: 9px; margin-bottom: 8px; }
.shop-buy-crown { display: inline-flex; filter: drop-shadow(0 2px 5px rgba(155,126,216,.5)); }
.shop-buy-box .dl-confirm-title { margin-bottom: 0; font-size: 18px; letter-spacing: 1px; }
.shop-buy-info { margin: 6px 0 16px; padding: 14px; border-radius: 14px;
  background: linear-gradient(135deg, rgba(155,126,216,.08), rgba(232,160,191,.08));
  border: 1px solid rgba(155,126,216,.18);
}
.shop-buy-name { margin: 0 0 8px; font-size: 15px; font-weight: 800; color: var(--color-text); }
.shop-buy-cost { margin: 0; font-size: 14px; color: var(--color-text-secondary); }
.shop-buy-cost strong { color: #D4AF37; font-size: 18px; text-shadow: 0 0 8px rgba(212,175,55,.3); }
.shop-buy-balance { margin: 6px 0 0; font-size: 12px; color: var(--color-text-muted); }
.shop-buy-balance strong { color: var(--color-text-secondary); }
.shop-buy-box .dl-confirm-btn-danger {
  background: linear-gradient(135deg, #9B7ED8, #E8A0BF);
  box-shadow: 0 4px 14px rgba(155,126,216,.4);
}
.shop-buy-result { margin: 0 0 10px; padding: 10px; border-radius: 10px; font-size: 13px; font-weight: 600; text-align: center; }
.shop-buy-result-ok { background: rgba(76,175,80,.1); color: #2e7d32; }
.shop-buy-result-err { background: rgba(216,27,96,.1); color: #D81B60; }

/* 暗色模式适配 */
.dark .shop-head {
  background: linear-gradient(135deg, rgba(155,126,216,.22), rgba(232,160,191,.16) 55%, rgba(122,80,180,.22));
  border-color: rgba(169,134,230,.35);
  box-shadow: 0 10px 34px rgba(0,0,0,.35), inset 0 1px 0 rgba(255,255,255,.06);
}
.dark .shop-head-bg { opacity: .3; }
.dark .shop-star { color: rgba(240,224,255,.85); text-shadow: 0 0 10px rgba(169,134,230,.9); }
.dark .shop-tier { background: rgba(22,19,43,.75); box-shadow: 0 8px 30px rgba(0,0,0,.35); }
.dark .shop-tier-icon { box-shadow: 0 5px 16px var(--tier-shadow), inset 0 1px 0 rgba(255,255,255,.25); }
.dark .shop-tier-priv { background: rgba(155,126,216,.18); }
.dark .shop-card {
  --card-face: #1B1732;
  box-shadow: 0 6px 22px rgba(0,0,0,.4), inset 0 1px 0 rgba(255,255,255,.07);
}
.dark .shop-card:hover { box-shadow: 0 12px 30px var(--tier-shadow); }
.dark .shop-more-item { background: rgba(155,126,216,.08); }

/* 幸运抽奖 */
.lottery-open { cursor: pointer; }
.lottery-box {
  width: 360px;
  max-height: calc(100vh - 40px);
  overflow-y: auto;
  overscroll-behavior: contain;
}
.lottery-head-star { display: inline-flex; color: #D4AF37; text-shadow: 0 0 10px rgba(212,175,55,.6); }

/* 大转盘 */
.lottery-wheel-wrap {
  position: relative;
  width: clamp(220px, 62vw, 280px);
  margin: 6px auto 16px;
}
.lottery-wheel {
  width: 100%; aspect-ratio: 1; border-radius: 50%;
  border: 4px solid #D4AF37;
  box-shadow: 0 4px 22px rgba(212,175,55,.28), inset 0 0 18px rgba(0,0,0,.25);
  background: #241b38;
  will-change: transform;
  transition: none;
}
.lottery-wheel-svg { display: block; width: 100%; height: 100%; border-radius: 50%; }
.lottery-wheel foreignObject { overflow: visible; }
.lottery-slot-icon-box { display: flex; align-items: center; justify-content: center; width: 100%; height: 100%; }
.lottery-slot-name {
  font-size: 12px; font-weight: 700; fill: #fff;
  paint-order: stroke;
  stroke: rgba(30,20,50,.55); stroke-width: 3px; stroke-linejoin: round;
}
.lottery-icon-q3 { filter: drop-shadow(0 0 6px rgba(255,215,120,.95)); }
.lottery-slot-q3 { animation: dlWheelGlow 1.6s ease-in-out infinite; }
@keyframes dlWheelGlow {
  0%, 100% { filter: drop-shadow(0 0 4px rgba(255,215,120,.55)); }
  50% { filter: drop-shadow(0 0 13px rgba(255,215,120,.95)); }
}
.lottery-pointer {
  position: absolute; top: -9px; left: 50%; transform: translateX(-50%);
  width: 0; height: 0; z-index: 5;
  border-left: 9px solid transparent; border-right: 9px solid transparent;
  border-top: 16px solid #D4AF37;
  filter: drop-shadow(0 2px 3px rgba(0,0,0,.4));
}
.lottery-wheel-empty {
  display: flex; align-items: center; justify-content: center;
  height: clamp(220px, 62vw, 280px); color: var(--color-text-muted);
  font-size: 13px;
}
.lottery-meta { margin: 0 0 12px; text-align: center; font-size: 12px; color: var(--color-text-muted); }
.lottery-meta strong { color: #D4AF37; }
.lottery-result { margin: 0 0 10px; padding: 14px; border-radius: 12px; text-align: center; transition: box-shadow .3s; }
.lottery-result-icon { display: inline-flex; margin-bottom: 8px; }
.lottery-result-name { display: block; font-size: 15px; font-weight: 800; color: var(--color-text); margin-bottom: 3px; }
.lottery-result-msg { display: block; font-size: 12px; color: var(--color-text-muted); }
.lottery-result-ok { background: rgba(76,175,80,.1); }
.lottery-result-err { background: rgba(216,27,96,.1); }
.lottery-result.q2 {
  background: linear-gradient(135deg, rgba(212,175,55,.16), rgba(255,255,255,.05));
  border: 1px solid rgba(212,175,55,.5);
}
.lottery-result.q3 {
  background: radial-gradient(circle at 50% 0%, rgba(255,215,120,.24), rgba(212,175,55,.08));
  border: 1px solid rgba(255,215,120,.65);
  animation: dlResultGlow 1.8s ease-in-out infinite;
}
@keyframes dlResultGlow {
  0%, 100% { box-shadow: 0 0 8px rgba(255,215,120,.25); }
  50% { box-shadow: 0 0 20px rgba(255,215,120,.6); }
}
.lottery-again {
  display: block; margin: 10px auto 0; padding: 6px 18px;
  border: 1px solid rgba(212,175,55,.5); border-radius: 999px;
  background: linear-gradient(135deg, #f4e3a8, #d4af37);
  color: #4a3500; font-size: 12px; font-weight: 700; cursor: pointer;
  transition: filter .2s;
}
.lottery-again:hover { filter: brightness(1.06); }
.lottery-spin { animation: dlLotterySpin .55s ease; }
@keyframes dlLotterySpin {
  0% { transform: rotate(0) scale(.85); }
  60% { transform: rotate(180deg) scale(1.08); }
  100% { transform: rotate(360deg) scale(1); }
}

/* 我的抽奖记录 */
.lottery-record-list { display: flex; flex-direction: column; gap: 10px; }
.lottery-record {
  display: flex; align-items: center; gap: 12px; padding: 12px 14px;
  border-radius: 14px; background: rgba(255,255,255,.6);
  border: 1px solid rgba(155,126,216,.15);
}
.dark .lottery-record { background: rgba(22,19,43,.75); }
.lottery-record-icon { display: inline-flex; filter: drop-shadow(0 2px 5px rgba(155,126,216,.45)); }
.lottery-record-main { flex: 1; min-width: 0; }
.lottery-record-name { display: block; font-size: 14px; font-weight: 700; color: var(--color-text); }
.lottery-record-meta { display: block; font-size: 12px; color: var(--color-text-muted); margin-top: 2px; }
.lottery-record-cost { font-size: 12px; font-weight: 600; color: var(--color-text-muted); white-space: nowrap; }
.lottery-record-del {
  padding: 5px 12px; border: 1px solid rgba(216,27,96,.35); border-radius: 8px;
  font-size: 12px; color: #D81B60; background: transparent; cursor: pointer; white-space: nowrap;
}
.lottery-record-del:hover { background: rgba(216,27,96,.08); }
.lottery-pager { display: flex; align-items: center; justify-content: center; gap: 14px; margin-top: 20px; font-size: 13px; }
.lottery-pager a { color: var(--color-primary); }
.lottery-pager-now { color: var(--color-text-muted); }
