/* ============================================
   资源社区 — iOS 液态玻璃设计系统 v3.0
   Frosted Glass · Depth Layers · Fluid Motion
   ============================================ */

:root {
  --primary: #5B5EF7;
  --primary-light: #8B8FFB;
  --primary-dark: #4044D8;
  --primary-glow: rgba(91,94,247,0.35);
  --accent: #00D4AA;
  --accent-light: #5CE6C8;
  --accent-glow: rgba(0,212,170,0.3);
  --bg: #F0EEF8;
  --bg-card: #FFFFFF;
  --bg-secondary: #F5F4FA;
  --text: #1A1A2E;
  --text-secondary: #5A5A7A;
  --text-muted: #9B9BB5;
  --border: rgba(26,26,46,0.06);
  --border-light: rgba(26,26,46,0.03);
  --glass: rgba(255,255,255,0.55);
  --glass-heavy: rgba(255,255,255,0.78);
  --glass-light: rgba(255,255,255,0.35);
  --glass-border: rgba(255,255,255,0.6);
  --glass-shadow: 0 4px 24px rgba(91,94,247,0.06), 0 1px 2px rgba(0,0,0,0.04);
  --red: #FF4757; --orange: #FF6B35; --amber: #FFC107;
  --green: #2ED573; --purple: #A855F7; --pink: #FF6B9D; --teal: #00D4AA;
  --r-sm: 10px; --r: 16px; --r-lg: 22px; --r-xl: 30px;
  --shadow-sm: 0 1px 2px rgba(0,0,0,0.04);
  --shadow: 0 4px 16px rgba(0,0,0,0.05);
  --shadow-md: 0 8px 30px rgba(0,0,0,0.06);
  --shadow-lg: 0 16px 48px rgba(0,0,0,0.08);
  --t: 0.35s cubic-bezier(0.25, 0.1, 0.25, 1);
  --spring: 0.5s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}

:root.dark {
  --bg: #08081A; --bg-card: #14142A;
  --bg-secondary: #1A1A32;
  --text: #EDEDF5; --text-secondary: #9B9BB5; --text-muted: #5A5A7A;
  --border: rgba(255,255,255,0.06); --border-light: rgba(255,255,255,0.03);
  --glass: rgba(20,20,42,0.6); --glass-heavy: rgba(20,20,42,0.82);
  --glass-light: rgba(20,20,42,0.4); --glass-border: rgba(255,255,255,0.06);
  --glass-shadow: 0 4px 24px rgba(0,0,0,0.4), 0 1px 2px rgba(0,0,0,0.2);
  --shadow-sm: 0 1px 2px rgba(0,0,0,0.2); --shadow: 0 4px 16px rgba(0,0,0,0.3);
  --shadow-md: 0 8px 30px rgba(0,0,0,0.4); --shadow-lg: 0 16px 48px rgba(0,0,0,0.5);
}

* { margin: 0; padding: 0; box-sizing: border-box; }

body {
  font-family: -apple-system, BlinkMacSystemFont, "SF Pro Display", "PingFang SC", "Microsoft YaHei", sans-serif;
  background: var(--bg);
  background-image: radial-gradient(ellipse at 20% 0%, rgba(91,94,247,0.04) 0%, transparent 50%),
                    radial-gradient(ellipse at 80% 100%, rgba(0,212,170,0.03) 0%, transparent 50%);
  color: var(--text); -webkit-font-smoothing: antialiased;
  min-height: 100vh; overflow-x: hidden;
  padding-bottom: calc(72px + env(safe-area-inset-bottom, 0px));
}

/* ===== 页面切换淡入动画 ===== */
#page-container {
  animation: pageFadeIn 0.25s ease-out;
}
@keyframes pageFadeIn {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: translateY(0); }
}

/* 确保所有头像图片填满圆形容器 — 绝对定位强制撑满 */
.nav-brand-avatar,
.nav-user-avatar,
.card-avatar,
.detail-card-author-avatar,
.comment-avatar,
.moments-cover-avatar,
.moments-card-avatar,
.moments-publish-avatar,
.profile-avatar,
.user-profile-avatar,
.msg-conv-avatar,
.moment-publisher-avatar,
.moment-header-avatar,
.ios-card-avatar {
  position: relative;
}
.nav-brand-avatar img,
.nav-user-avatar img,
.card-avatar img,
.detail-card-author-avatar img,
.comment-avatar img,
.moments-cover-avatar img,
.moments-card-avatar img,
.moments-publish-avatar img,
.profile-avatar img,
.user-profile-avatar img,
.msg-conv-avatar img,
.moment-publisher-avatar img,
.moment-header-avatar img,
.ios-card-avatar img {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* ===== 顶部导航 ===== */
.top-nav {
  position: sticky; top: 0; z-index: 100;
  display: flex; align-items: center; justify-content: space-between;
  padding: 10px 16px; height: 56px;
  background: var(--glass-heavy);
  backdrop-filter: blur(30px) saturate(180%);
  -webkit-backdrop-filter: blur(30px) saturate(180%);
  border-bottom: 0.5px solid var(--border);
  box-shadow: 0 1px 0 rgba(255,255,255,0.3) inset;
}
:root.dark .top-nav { box-shadow: 0 1px 0 rgba(255,255,255,0.04) inset; }
.nav-brand { display: flex; align-items: center; gap: 8px; cursor: pointer; font-weight: 700; font-size: 17px; letter-spacing: -0.3px; }
.nav-brand-avatar { width: 32px; height: 32px; border-radius: 50%; background: linear-gradient(135deg, var(--primary), var(--purple)); display: flex; align-items: center; justify-content: center; color: #fff; font-size: 14px; font-weight: 700; overflow: hidden; box-shadow: 0 2px 8px var(--primary-glow); }
.nav-brand-avatar img { width: 100%; height: 100%; object-fit: cover; }
.nav-actions { display: flex; align-items: center; gap: 6px; }
.nav-user-btn { display: flex; align-items: center; gap: 6px; padding: 4px 10px 4px 4px; border-radius: 20px; background: var(--glass); border: 0.5px solid var(--border); cursor: pointer; font-size: 13px; font-weight: 500; color: var(--text); font-family: inherit; transition: var(--t); will-change: transform; backface-visibility: hidden; }
.nav-user-btn:hover { background: var(--glass-heavy); }
.nav-user-avatar { width: 26px; height: 26px; border-radius: 50%; background: linear-gradient(135deg, var(--primary-light), var(--accent)); display: flex; align-items: center; justify-content: center; color: #fff; font-size: 12px; font-weight: 700; overflow: hidden; }
.nav-user-avatar img { width: 100%; height: 100%; object-fit: cover; }
.nav-login-btn { padding: 6px 16px; border-radius: 16px; background: linear-gradient(135deg, var(--primary), var(--primary-dark)); color: #fff; border: none; font-size: 13px; font-weight: 600; cursor: pointer; font-family: inherit; box-shadow: 0 2px 10px var(--primary-glow); }
.theme-toggle { width: 34px; height: 34px; border-radius: 50%; border: 0.5px solid var(--border); background: var(--glass); cursor: pointer; font-size: 16px; display: flex; align-items: center; justify-content: center; transition: var(--t); }
.theme-toggle:hover { background: var(--glass-heavy); }

/* ===== 底部导航栏 ===== */
.mobile-tab-bar {
  position: fixed; bottom: 0; left: 0; right: 0; z-index: 100;
  display: flex; justify-content: space-around; align-items: center;
  padding: 8px 12px calc(8px + env(safe-area-inset-bottom, 8px));
  background: rgba(255,255,255,0.72);
  backdrop-filter: blur(40px) saturate(200%);
  -webkit-backdrop-filter: blur(40px) saturate(200%);
  border-top: 0.5px solid rgba(255,255,255,0.5);
  box-shadow: 0 -1px 0 rgba(255,255,255,0.4) inset, 0 -8px 30px rgba(0,0,0,0.04);
  border-radius: 0;
}
:root.dark .mobile-tab-bar {
  background: rgba(22,22,24,0.78);
  border-top: 0.5px solid rgba(255,255,255,0.08);
  box-shadow: 0 -1px 0 rgba(255,255,255,0.04) inset, 0 -8px 30px rgba(0,0,0,0.3);
}
.mobile-tab-item {
  flex: 1; display: flex; flex-direction: column; align-items: center; gap: 3px;
  padding: 6px 0; border: none; background: none; cursor: pointer;
  color: var(--text-muted); font-size: 10px; font-weight: 500; font-family: inherit;
  transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1); border-radius: 12px; position: relative;
  will-change: transform; backface-visibility: hidden;
}
.mobile-tab-item.active { color: var(--primary); }
.mobile-tab-item.active::before {
  content: ''; position: absolute; top: -2px; left: 50%; transform: translateX(-50%);
  width: 22px; height: 3px; background: var(--primary); border-radius: 0 0 3px 3px;
  box-shadow: 0 1px 6px var(--primary-glow);
}
.mobile-tab-badge {
  position: absolute; top: 0; right: 2px; min-width: 16px; height: 16px; padding: 0 4px;
  border-radius: 8px; background: var(--red); color: #fff; font-size: 10px; font-weight: 700;
  display: flex; align-items: center; justify-content: center; line-height: 1;
}
.mobile-tab-item svg { width: 24px; height: 24px; opacity: 0.65; transition: var(--t); }
.mobile-tab-item.active svg { opacity: 1; transform: scale(1.05); }

/* ===== 主容器 ===== */
.main-container { padding: 0 0 100px; max-width: 1200px; margin: 0 auto; }
.home-page { padding-top: 0; }
.home-page > .ios-hero { padding-left: 0; padding-right: 0; }
.home-page > *:not(.ios-hero) { padding-left: 16px; padding-right: 16px; }
@media (min-width: 768px) {
  .home-page > *:not(.ios-hero) { padding-left: 24px; padding-right: 24px; }
}

/* ===== Hero 区域 ===== */
.hero-section {
  position: relative; padding: 28px 20px 24px; margin-bottom: 16px;
  background: var(--glass-heavy);
  backdrop-filter: blur(30px) saturate(180%);
  -webkit-backdrop-filter: blur(30px) saturate(180%);
  border-radius: var(--r-xl); border: 0.5px solid var(--border);
  box-shadow: var(--glass-shadow); overflow: hidden;
  text-align: center;
}
.hero-section::before {
  content: ''; position: absolute; top: -60px; left: -60px;
  width: 160px; height: 160px; border-radius: 50%;
  background: radial-gradient(circle, rgba(91,94,247,0.12) 0%, transparent 70%);
  pointer-events: none;
}
.hero-section::after {
  content: ''; position: absolute; bottom: -40px; right: -40px;
  width: 120px; height: 120px; border-radius: 50%;
  background: radial-gradient(circle, rgba(0,212,170,0.1) 0%, transparent 70%);
  pointer-events: none;
}
.hero-title {
  font-size: 26px; font-weight: 800; letter-spacing: -0.5px; color: var(--text);
  margin-bottom: 6px; position: relative; z-index: 1;
}
.hero-title span { background: linear-gradient(135deg, var(--primary), var(--purple)); -webkit-background-clip: text; -webkit-text-fill-color: transparent; }
.hero-subtitle { font-size: 13px; color: var(--text-muted); font-weight: 400; position: relative; z-index: 1; }
.stats-bar {
  display: flex; justify-content: center; gap: 32px; margin-top: 16px;
  position: relative; z-index: 1;
}
.stat-item { text-align: center; }
.stat-num { font-size: 22px; font-weight: 800; color: var(--text); font-variant-numeric: tabular-nums; }
.stat-num::after { content: '+'; font-size: 14px; color: var(--primary); }
.stat-label { font-size: 11px; color: var(--text-muted); margin-top: 2px; }

/* ===== Hero Video ===== */
.hero-video-wrap { position: relative; width: 100%; height: 220px; border-radius: var(--r-xl); overflow: hidden; margin-bottom: 16px; border: 0.5px solid var(--border); }
.hero-video-wrap video { width: 100%; height: 100%; object-fit: cover; }
.hero-video-overlay {
  position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center;
  background: linear-gradient(180deg, rgba(0,0,0,0.2) 0%, rgba(0,0,0,0.5) 100%);
  color: #fff; padding: 20px;
}
.hero-video-title { font-size: 24px; font-weight: 800; margin-bottom: 4px; text-shadow: 0 2px 8px rgba(0,0,0,0.3); }
.hero-video-title span { color: var(--accent-light); }
.hero-video-subtitle { font-size: 12px; opacity: 0.85; margin-bottom: 12px; }
.hero-video-stats { display: flex; gap: 24px; }
.hero-video-stat { text-align: center; }
.hero-video-stat-num { font-size: 20px; font-weight: 800; }
.hero-video-stat-label { font-size: 10px; opacity: 0.7; }

/* ===== 搜索 ===== */
.search-section { margin-bottom: 14px; }
.search-box {
  display: flex; align-items: center; gap: 8px;
  padding: 6px 6px 6px 14px;
  background: var(--glass);
  backdrop-filter: blur(20px) saturate(180%);
  -webkit-backdrop-filter: blur(20px) saturate(180%);
  border-radius: 24px; border: 0.5px solid var(--border);
  box-shadow: var(--shadow-sm); transition: var(--t);
}
.search-box:focus-within { border-color: var(--primary); box-shadow: 0 0 0 3px rgba(91,94,247,0.1); }
.search-box input { flex: 1; border: none; background: none; font-size: 15px; outline: none; color: var(--text); font-family: inherit; }
.search-box input::placeholder { color: var(--text-muted); }
.search-box svg { flex-shrink: 0; opacity: 0.4; }
.search-btn { padding: 10px 18px; border-radius: 20px; border: none; background: linear-gradient(135deg, var(--primary), var(--primary-dark)); color: #fff; font-size: 13px; font-weight: 600; cursor: pointer; font-family: inherit; box-shadow: 0 2px 10px var(--primary-glow); }

/* ===== 分类标签 ===== */
.category-pills { display: flex; gap: 8px; overflow-x: auto; padding: 0 0 10px; scrollbar-width: none; }
.category-pills::-webkit-scrollbar { display: none; }
.cat-pill, .sub-pill {
  padding: 8px 16px; border-radius: 20px; font-size: 13px; font-weight: 500; cursor: pointer;
  white-space: nowrap; border: 0.5px solid var(--border); background: var(--glass);
  backdrop-filter: blur(10px); color: var(--text-secondary); font-family: inherit;
  transition: var(--t); flex-shrink: 0;
}
.cat-pill.active, .sub-pill.active { background: var(--primary); color: #fff; border-color: var(--primary); box-shadow: 0 4px 12px var(--primary-glow); }
.cat-pill:hover:not(.active), .sub-pill:hover:not(.active) { background: var(--glass-heavy); }

/* ===== 排序 ===== */
.sort-bar { display: flex; align-items: center; gap: 6px; margin-bottom: 14px; }
.sort-label { font-size: 12px; color: var(--text-muted); font-weight: 500; }
.sort-pill {
  padding: 6px 14px; border-radius: 16px; border: 0.5px solid var(--border);
  background: var(--glass); font-size: 12px; font-weight: 500; cursor: pointer;
  color: var(--text-secondary); font-family: inherit; transition: var(--t);
  backdrop-filter: blur(10px);
}
.sort-pill.active { background: rgba(91,94,247,0.1); color: var(--primary); border-color: rgba(91,94,247,0.3); font-weight: 600; }

/* ===== 资源卡片 ===== */
.resource-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; }
@media (min-width: 900px) {
  .resource-grid { grid-template-columns: repeat(3, 1fr); gap: 14px; }
}
@media (min-width: 1200px) {
  .resource-grid { grid-template-columns: repeat(4, 1fr); gap: 16px; }
}
.resource-card {
  background: var(--glass);
  backdrop-filter: blur(20px) saturate(180%);
  -webkit-backdrop-filter: blur(20px) saturate(180%);
  border-radius: var(--r); border: 0.5px solid var(--border);
  overflow: hidden; cursor: pointer; transition: var(--spring);
  box-shadow: var(--shadow-sm);
}
.resource-card:hover { transform: translateY(-2px); box-shadow: var(--glass-shadow); }
.card-img-wrap {
  height: 100px; display: flex; align-items: center; justify-content: center;
  position: relative; overflow: hidden;
}
.card-img-wrap::after {
  content: ''; position: absolute; inset: 0;
  background: radial-gradient(ellipse at center, rgba(255,255,255,0.2) 0%, transparent 70%);
}
.card-cat-badge {
  position: absolute; top: 8px; left: 8px; padding: 2px 8px; border-radius: 10px;
  font-size: 10px; font-weight: 600; background: rgba(255,255,255,0.25); color: #fff;
  backdrop-filter: blur(10px); border: 0.5px solid rgba(255,255,255,0.3);
}
.card-img-emoji { font-size: 40px; filter: drop-shadow(0 2px 6px rgba(0,0,0,0.15)); z-index: 1; }
.card-body { padding: 10px 12px 12px; }
.card-title { font-size: 14px; font-weight: 600; color: var(--text); line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; margin-bottom: 4px; }
.card-desc { font-size: 12px; color: var(--text-secondary); line-height: 1.5; margin-bottom: 8px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.card-footer { display: flex; align-items: center; justify-content: space-between; }
.card-author { display: flex; align-items: center; gap: 6px; font-size: 12px; color: var(--text-secondary); }
.card-avatar { width: 20px; height: 20px; border-radius: 50%; background: linear-gradient(135deg, var(--primary-light), var(--accent)); display: flex; align-items: center; justify-content: center; color: #fff; font-size: 10px; font-weight: 700; overflow: hidden; flex-shrink: 0; }
.card-avatar img { width: 100%; height: 100%; object-fit: cover; }
.card-stats { display: flex; gap: 8px; font-size: 11px; color: var(--text-muted); }
.card-meta { font-size: 10px; color: var(--text-muted); margin-top: 6px; padding-top: 6px; border-top: 0.5px solid var(--border); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* ===== 横向滚动 ===== */
.h-scroll { display: flex; gap: 10px; overflow-x: auto; padding: 0 0 12px; margin-bottom: 8px; scroll-snap-type: x mandatory; scrollbar-width: none; }
.h-scroll::-webkit-scrollbar { display: none; }
.h-card {
  min-width: 130px; max-width: 150px; scroll-snap-align: start; flex-shrink: 0;
  padding: 12px; border-radius: var(--r); background: var(--glass);
  backdrop-filter: blur(20px) saturate(180%); border: 0.5px solid var(--border);
  cursor: pointer; transition: var(--t);
}
.h-card:hover { transform: translateY(-2px); box-shadow: var(--shadow); }
.h-img { font-size: 28px; text-align: center; margin-bottom: 6px; }
.h-title { font-size: 12px; font-weight: 600; color: var(--text); line-height: 1.3; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; margin-bottom: 4px; }
.h-meta { font-size: 10px; color: var(--text-muted); }

/* ===== 区块标题 ===== */
.section-header { display: flex; align-items: center; justify-content: space-between; margin: 14px 0 10px; }
.section-title { font-size: 16px; font-weight: 700; color: var(--text); letter-spacing: -0.2px; }
.section-more { font-size: 12px; color: var(--primary); cursor: pointer; border: none; background: none; font-family: inherit; font-weight: 500; }

/* ===== 广告区 ===== */
.ad-section { background: var(--glass); backdrop-filter: blur(20px); border-radius: var(--r); border: 0.5px solid var(--border); padding: 12px; margin-bottom: 14px; }
.ad-section-title { font-size: 12px; font-weight: 600; color: var(--text-secondary); margin-bottom: 8px; }
.ad-scroll { display: flex; gap: 10px; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; padding-bottom: 2px; }
.ad-scroll::-webkit-scrollbar { display: none; }
.ad-card { min-width: 240px; max-width: 300px; scroll-snap-align: start; border-radius: var(--r-sm); overflow: hidden; background: var(--bg-card); border: 0.5px solid var(--border); cursor: pointer; transition: var(--t); flex-shrink: 0; }
.ad-card:hover { transform: translateY(-1px); box-shadow: var(--shadow); }
.ad-card-media { height: 100px; background: linear-gradient(135deg, rgba(91,94,247,0.06), rgba(0,212,170,0.04)); display: flex; align-items: center; justify-content: center; overflow: hidden; }
.ad-card-media img, .ad-card-media video { width: 100%; height: 100%; object-fit: cover; }
.ad-card-emoji { font-size: 36px; }
.ad-card-body { padding: 8px 10px; }
.ad-card-title { font-size: 12px; font-weight: 600; color: var(--text); }
.ad-card-text { font-size: 10px; color: var(--text-muted); margin-top: 2px; }

/* ===== 签到条 ===== */
.checkin-bar { display: flex; align-items: center; justify-content: space-between; padding: 12px 16px; margin-bottom: 14px; background: linear-gradient(135deg, rgba(255,193,7,0.05), rgba(255,107,53,0.03)); border-radius: var(--r); border: 0.5px solid rgba(255,193,7,0.15); backdrop-filter: blur(10px); }
.checkin-left { display: flex; align-items: center; gap: 8px; }
.checkin-icon { font-size: 20px; }
.checkin-text { font-size: 13px; font-weight: 600; color: var(--text); }
.checkin-streak { font-size: 11px; color: var(--text-muted); }
.checkin-streak strong { color: var(--amber); }
.checkin-btn { width: 30px; height: 30px; border-radius: 50%; border: none; font-size: 14px; cursor: pointer; display: flex; align-items: center; justify-content: center; font-family: inherit; }
.checkin-btn.done { background: linear-gradient(135deg, var(--green), #1DD1A1); color: #fff; }

/* ===== 详情页 ===== */
.detail-card {
  background: var(--glass-heavy);
  backdrop-filter: blur(30px) saturate(180%);
  -webkit-backdrop-filter: blur(30px) saturate(180%);
  border-radius: var(--r-lg); border: 0.5px solid var(--border);
  padding: 24px 20px; margin-bottom: 14px;
  box-shadow: var(--glass-shadow);
}
.detail-card-cover { text-align: center; margin-bottom: 12px; }
.detail-card-cover img { width: 56px; height: 56px; border-radius: 50%; object-fit: cover; opacity: 0.9; box-shadow: 0 2px 8px rgba(0,0,0,0.1); }
.detail-card-title { font-size: 20px; font-weight: 800; color: var(--text); text-align: center; margin-bottom: 8px; line-height: 1.4; letter-spacing: -0.3px; }
.detail-card-tags { display: flex; justify-content: center; gap: 6px; flex-wrap: wrap; margin-bottom: 12px; }
.detail-card-desc { font-size: 15px; line-height: 1.8; color: var(--text); margin-bottom: 16px; text-align: left; padding: 14px 16px; background: var(--glass); border-radius: 12px; border: 0.5px solid var(--border); word-break: break-word; }
.detail-section-header { font-size: 13px; font-weight: 700; color: var(--text); margin-bottom: 8px; padding-left: 2px; }
.detail-card-author { display: flex; align-items: center; gap: 10px; padding-top: 12px; border-top: 0.5px solid var(--border); }
.detail-card-author-avatar { width: 38px; height: 38px; border-radius: 50%; background: linear-gradient(135deg, var(--primary), var(--purple)); display: flex; align-items: center; justify-content: center; font-size: 15px; color: #fff; flex-shrink: 0; overflow: hidden; box-shadow: 0 2px 8px var(--primary-glow); }
.detail-card-author-avatar img { width: 100%; height: 100%; object-fit: cover; border-radius: 50%; }
.detail-card-author-body { display: flex; flex-direction: column; gap: 1px; }
.detail-card-author-name { font-size: 14px; font-weight: 600; color: var(--text); }
.detail-card-author-time { font-size: 11px; color: var(--text-muted); }

.detail-tag { display: inline-block; padding: 4px 12px; background: var(--glass); border-radius: 14px; font-size: 11px; color: var(--text-secondary); font-weight: 500; border: 0.5px solid var(--border); backdrop-filter: blur(10px); }

.detail-stats-row { display: flex; justify-content: space-around; padding: 14px 0; margin-bottom: 12px; background: var(--glass); border-radius: var(--r); border: 0.5px solid var(--border); backdrop-filter: blur(20px); }
.detail-stat { display: flex; flex-direction: column; align-items: center; gap: 3px; color: var(--text-secondary); }
.detail-stat svg { flex-shrink: 0; }
.detail-stat-num { font-size: 17px; font-weight: 700; color: var(--text); }
.detail-stat-label { font-size: 10px; color: var(--text-muted); font-weight: 500; }

.detail-actions { display: flex; gap: 8px; margin-bottom: 8px; }
.detail-btn {
  flex: 1; padding: 11px; border-radius: var(--r-sm); font-size: 13px; font-weight: 600; cursor: pointer;
  border: 0.5px solid var(--border); background: var(--glass);
  backdrop-filter: blur(10px); color: var(--text-secondary); text-align: center;
  text-decoration: none; font-family: inherit; transition: var(--t);
  display: flex; align-items: center; justify-content: center; gap: 3px; white-space: nowrap;
}
.detail-btn:hover { border-color: var(--primary); color: var(--primary); }
.detail-btn.active { color: var(--red); border-color: var(--red); background: rgba(255,71,87,0.06); }
.detail-btn-primary { background: linear-gradient(135deg, var(--primary), var(--primary-dark)); color: #fff !important; border: none; box-shadow: 0 4px 14px var(--primary-glow); }
.detail-btn-primary:hover { transform: translateY(-1px); box-shadow: 0 6px 20px var(--primary-glow); }

.rating-section { display: flex; align-items: center; gap: 10px; padding: 12px 16px; margin-bottom: 8px; background: var(--glass); border-radius: var(--r); border: 0.5px solid var(--border); backdrop-filter: blur(10px); }
.rating-label { font-size: 13px; font-weight: 600; color: var(--text-secondary); white-space: nowrap; }
.rating-stars { display: flex; gap: 3px; }
.rating-star { font-size: 22px; color: var(--border); cursor: pointer; transition: var(--spring); user-select: none; line-height: 1; }
.rating-star:hover { color: var(--amber); transform: scale(1.2); }
.rating-star.active { color: var(--amber); }
.rating-info { font-size: 11px; color: var(--text-muted); white-space: nowrap; }

.section-divider { height: 0.5px; background: var(--border); margin: 8px 0 14px; }

/* ===== 评论 ===== */
.comments-section { margin-top: 4px; }
.comments-header { font-size: 15px; font-weight: 700; color: var(--text); margin-bottom: 10px; }
.comment-item { padding: 12px 0; border-bottom: 0.5px solid var(--border); }
.comment-item:last-child { border-bottom: none; }
.comment-header { display: flex; align-items: center; gap: 8px; margin-bottom: 6px; }
.comment-avatar { width: 28px; height: 28px; border-radius: 50%; background: linear-gradient(135deg, var(--primary-light), var(--accent)); display: flex; align-items: center; justify-content: center; color: #fff; font-size: 12px; font-weight: 700; overflow: hidden; flex-shrink: 0; }
.comment-avatar img { width: 100%; height: 100%; object-fit: cover; }
.comment-user { font-size: 13px; font-weight: 600; color: var(--text); }
.comment-time { font-size: 11px; color: var(--text-muted); margin-left: auto; }
.comment-body { font-size: 14px; color: var(--text-secondary); line-height: 1.5; padding-left: 36px; }
.comment-reply-btn { font-size: 11px; color: var(--primary); cursor: pointer; border: none; background: none; font-family: inherit; margin-left: 36px; margin-top: 4px; }
.comment-input-bar { display: flex; gap: 8px; padding: 10px 14px; margin: 12px 0; background: var(--glass); border-radius: var(--r); border: 0.5px solid var(--border); backdrop-filter: blur(20px); }
.comment-input-bar input { flex: 1; padding: 10px 14px; border-radius: 20px; border: 0.5px solid var(--border); font-size: 14px; font-family: inherit; outline: none; background: var(--bg); color: var(--text); }
.comment-input-bar input:focus { border-color: var(--primary); }
.comment-input-bar button { padding: 10px 20px; border-radius: 20px; border: none; background: linear-gradient(135deg, var(--primary), var(--primary-dark)); color: #fff; font-size: 13px; font-weight: 600; cursor: pointer; font-family: inherit; white-space: nowrap; box-shadow: 0 2px 8px var(--primary-glow); }

/* ===== 朋友圈 ===== */
.moments-cover { position: relative; height: 140px; overflow: hidden; }
.moments-cover-bg {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(91,94,247,0.15) 0%, rgba(0,212,170,0.08) 50%, var(--bg) 100%);
}
.moments-cover-img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.moments-cover-content { position: absolute; bottom: 20px; right: 16px; text-align: right; }
.moments-cover-avatar { width: 40px; height: 40px; border-radius: 50%; background: linear-gradient(135deg, var(--primary), var(--purple)); display: flex; align-items: center; justify-content: center; font-size: 18px; color: #fff; font-weight: 700; overflow: hidden; margin-left: auto; margin-bottom: 4px; box-shadow: 0 2px 8px rgba(0,0,0,0.1); border: 2px solid rgba(255,255,255,0.6); }
.moments-cover-avatar img { width: 100%; height: 100%; object-fit: cover; }
.moments-cover-name { font-size: 18px; font-weight: 700; color: var(--text); }
.moments-cover-signature { font-size: 12px; color: var(--text-muted); margin-top: 2px; }

.moments-card {
  margin: 0 16px 12px; padding: 16px;
  background: var(--glass-heavy);
  backdrop-filter: blur(30px) saturate(180%);
  -webkit-backdrop-filter: blur(30px) saturate(180%);
  border-radius: var(--r); border: 0.5px solid var(--border);
  box-shadow: var(--shadow-sm);
}
.moments-card-hd { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; }
.moments-card-avatar { width: 36px; height: 36px; border-radius: 50%; background: linear-gradient(135deg, var(--primary), var(--purple)); display: flex; align-items: center; justify-content: center; font-size: 14px; color: #fff; flex-shrink: 0; overflow: hidden; }
.moments-card-avatar img { width: 100%; height: 100%; object-fit: cover; border-radius: 50%; }
.moments-card-info { flex: 1; }
.moments-card-name { font-size: 14px; font-weight: 700; color: var(--primary); }
.moments-card-time { font-size: 11px; color: var(--text-muted); }
.moments-card-del { width: 26px; height: 26px; border-radius: 50%; border: none; background: rgba(255,71,87,0.1); color: var(--red); cursor: pointer; font-size: 12px; display: flex; align-items: center; justify-content: center; }
.moments-card-body { font-size: 15px; line-height: 1.6; color: var(--text); margin-bottom: 10px; white-space: pre-wrap; word-break: break-word; }
.moments-card-img { width: 100%; max-height: 300px; object-fit: cover; border-radius: var(--r-sm); margin-bottom: 8px; cursor: pointer; }
.moments-card-img.expanded { max-height: none; }
.moments-card-video { width: 100%; border-radius: var(--r-sm); margin-bottom: 8px; max-height: 400px; background: #000; }
.moments-card-footer { padding-top: 8px; border-top: 0.5px solid var(--border); }
.moments-card-footer-left { display: flex; gap: 20px; }
.moments-card-stat { display: inline-flex; align-items: center; gap: 4px; cursor: pointer; font-size: 13px; color: var(--text-secondary); padding: 4px 0; transition: var(--t); user-select: none; }
.moments-card-stat:hover { color: var(--primary); }
.moments-like-icon { display: inline-block; transition: transform 0.2s ease; }

.moments-comments { background: var(--border-light); border-radius: var(--r-sm); padding: 10px 12px; margin-top: 8px; }
.moments-comments-list { margin-bottom: 6px; }
.moments-comment-item { padding: 5px 0; font-size: 13px; line-height: 1.5; }
.moments-comment-item:not(:last-child) { border-bottom: 0.5px solid var(--border); }
.moments-comment-user { font-weight: 600; color: var(--primary); margin-right: 6px; }
.moments-comment-text { color: var(--text); }
.moments-comment-time { font-size: 10px; color: var(--text-muted); margin-left: 8px; }
.moments-comment-input { display: flex; gap: 6px; margin-top: 6px; }
.moments-comment-input input { flex: 1; padding: 8px 12px; border-radius: 16px; border: 0.5px solid var(--border); font-size: 13px; font-family: inherit; outline: none; background: var(--bg); color: var(--text); }
.moments-comment-input input:focus { border-color: var(--primary); }
.moments-comment-input button { padding: 8px 16px; border-radius: 16px; border: none; background: linear-gradient(135deg, var(--primary), var(--primary-dark)); color: #fff; font-size: 12px; font-weight: 600; cursor: pointer; font-family: inherit; white-space: nowrap; }

/* 朋友圈发布入口栏（微信风格） */
.moments-publish-bar {
  display: flex; align-items: center; gap: 10px;
  padding: 10px 16px; margin: 0 12px 8px;
  background: var(--glass); backdrop-filter: blur(20px);
  border-radius: 12px; border: 0.5px solid var(--border);
  cursor: pointer; transition: var(--t);
}
.moments-publish-bar:hover { box-shadow: var(--shadow); }
.moments-publish-avatar {
  width: 36px; height: 36px; border-radius: 50%; flex-shrink: 0;
  background: linear-gradient(135deg, var(--primary), var(--purple));
  display: flex; align-items: center; justify-content: center;
  font-size: 14px; color: #fff; font-weight: 700; overflow: hidden;
}
.moments-publish-avatar img { width: 100%; height: 100%; object-fit: cover; }
.moments-publish-hint {
  flex: 1; font-size: 13px; color: var(--text-muted);
}
.moments-publish-camera {
  width: 32px; height: 32px; border-radius: 8px;
  display: flex; align-items: center; justify-content: center;
  font-size: 18px; color: var(--primary); transition: var(--t);
}

/* 朋友圈发布框 */
.moments-composer {
  position: fixed; bottom: 0; left: 0; right: 0; z-index: 90;
  padding: 12px 16px calc(12px + env(safe-area-inset-bottom));
  background: var(--glass-heavy);
  backdrop-filter: blur(30px) saturate(180%);
  -webkit-backdrop-filter: blur(30px) saturate(180%);
  border-top: 0.5px solid var(--border);
  box-shadow: 0 -4px 20px rgba(0,0,0,0.06);
}
.moments-composer-row { margin-bottom: 8px; }
.moments-composer-row textarea {
  width: 100%; padding: 10px 14px; border-radius: var(--r-sm); border: 0.5px solid var(--border);
  font-size: 14px; font-family: inherit; resize: none; outline: none;
  background: var(--bg); color: var(--text); line-height: 1.5;
}
.moments-composer-row textarea:focus { border-color: var(--primary); }
.moments-composer-preview { position: relative; display: inline-block; margin-bottom: 8px; }
.moment-preview-remove { position: absolute; top: -6px; right: -6px; width: 22px; height: 22px; border-radius: 50%; background: var(--red); color: #fff; border: none; cursor: pointer; font-size: 12px; display: flex; align-items: center; justify-content: center; }
.moments-composer-actions { display: flex; align-items: center; gap: 10px; }
.moments-upload-btn { cursor: pointer; color: var(--primary); display: flex; align-items: center; padding: 6px; border-radius: 8px; transition: var(--t); }
.moments-upload-btn:hover { background: rgba(91,94,247,0.06); }

/* ===== 发现页 ===== */
.discover-header { text-align: center; padding: 20px 0 16px; }
.discover-title { font-size: 24px; font-weight: 800; letter-spacing: -0.5px; margin-bottom: 4px; }
.discover-subtitle { font-size: 13px; color: var(--text-muted); }
.discover-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; padding: 0 0 20px; }
.discover-card {
  padding: 18px 12px; text-align: center; cursor: pointer;
  background: var(--glass); backdrop-filter: blur(20px); border-radius: var(--r);
  border: 0.5px solid var(--border); transition: var(--spring);
  color: #fff;
}
.discover-card:hover { transform: translateY(-3px); box-shadow: var(--glass-shadow); }
.discover-card-icon { font-size: 32px; margin-bottom: 8px; }
.discover-card-emoji { font-size: 36px; margin-bottom: 8px; filter: drop-shadow(0 2px 4px rgba(0,0,0,0.15)); }
.discover-card .discover-card-label { color: #fff; text-shadow: 0 1px 2px rgba(0,0,0,0.2); font-size: 13px; font-weight: 600; margin-bottom: 2px; }
.discover-card .discover-card-desc { color: rgba(255,255,255,0.85); text-shadow: 0 1px 2px rgba(0,0,0,0.15); font-size: 10px; }

/* ===== 表单 ===== */
.form-group { margin-bottom: 14px; }
.form-label { display: block; font-size: 13px; font-weight: 600; color: var(--text-secondary); margin-bottom: 6px; }
.form-input, .form-select, .form-textarea {
  width: 100%; padding: 12px 14px; border-radius: var(--r-sm); border: 0.5px solid var(--border);
  font-size: 14px; font-family: inherit; outline: none; background: var(--glass);
  color: var(--text); transition: var(--t); backdrop-filter: blur(10px);
}
.form-input:focus, .form-select:focus, .form-textarea:focus { border-color: var(--primary); box-shadow: 0 0 0 3px rgba(91,94,247,0.08); }
.form-textarea { resize: vertical; min-height: 80px; line-height: 1.5; }
.cover-upload-area { border: 2px dashed var(--border); border-radius: var(--r); padding: 20px; text-align: center; cursor: pointer; transition: var(--t); background: var(--glass); }
.cover-upload-area:hover { border-color: var(--primary); background: rgba(91,94,247,0.03); }
.cover-upload-placeholder { display: flex; flex-direction: column; align-items: center; gap: 6px; color: var(--text-muted); font-size: 13px; }
.cover-upload-placeholder svg { opacity: 0.4; }

/* ===== 按钮系统 ===== */
.btn { padding: 10px 20px; border-radius: var(--r-sm); font-size: 14px; font-weight: 600; cursor: pointer; border: none; font-family: inherit; transition: var(--t); display: inline-flex; align-items: center; justify-content: center; gap: 4px; }
.btn-primary { background: linear-gradient(135deg, var(--primary), var(--primary-dark)); color: #fff; box-shadow: 0 4px 14px var(--primary-glow); }
.btn-primary:hover { transform: translateY(-1px); box-shadow: 0 6px 20px var(--primary-glow); }
.btn-ghost { background: var(--glass); border: 0.5px solid var(--border); color: var(--text-secondary); backdrop-filter: blur(10px); }
.btn-ghost:hover { background: var(--glass-heavy); }
.btn-danger { background: rgba(255,71,87,0.1); color: var(--red); border: 0.5px solid rgba(255,71,87,0.2); }
.btn-danger:hover { background: rgba(255,71,87,0.2); }
.btn-sm { padding: 6px 14px; font-size: 12px; }
.btn-lg { padding: 14px 24px; font-size: 16px; }

/* ===== 个人主页 ===== */
.profile-card {
  padding: 0; text-align: center; margin-bottom: 14px;
  background: var(--glass-heavy); backdrop-filter: blur(30px) saturate(180%);
  -webkit-backdrop-filter: blur(30px) saturate(180%);
  border-radius: var(--r-lg); border: 0.5px solid var(--border);
  box-shadow: var(--glass-shadow); overflow: hidden;
}
.profile-card > :not(.profile-cover):not(.profile-banned-banner) { padding-left: 16px; padding-right: 16px; }
.profile-card > :last-child { padding-bottom: 16px; }

/* 封面背景 */
.profile-cover {
  width: 100%; height: 140px; background-size: cover; background-position: center;
  position: relative; cursor: pointer;
}
.profile-cover-empty {
  background: linear-gradient(135deg, #667eea33, #764ba233);
  display: flex; align-items: center; justify-content: center;
  color: var(--text-muted); font-size: 13px;
}
.profile-cover-edit {
  position: absolute; bottom: 8px; right: 8px;
  padding: 4px 10px; border-radius: 12px;
  background: rgba(0,0,0,0.5); color: #fff; font-size: 11px;
  cursor: pointer; backdrop-filter: blur(10px);
}

/* 封禁横幅 */
.profile-banned-banner {
  background: linear-gradient(135deg, #ff4757, #ff6b81);
  padding: 14px 16px; color: #fff; text-align: center;
}
.profile-banned-icon { font-size: 28px; margin-bottom: 4px; }
.profile-banned-text { font-size: 15px; font-weight: 700; }
.profile-banned-reason { font-size: 11px; opacity: 0.8; margin-top: 2px; }

.profile-avatar { width: 64px; height: 64px; border-radius: 50%; background: linear-gradient(135deg, var(--primary), var(--purple)); display: flex; align-items: center; justify-content: center; font-size: 24px; color: #fff; margin: -32px auto 8px; overflow: hidden; box-shadow: 0 4px 20px var(--primary-glow); border: 2px solid rgba(255,255,255,0.4); position: relative; z-index: 1; }
.profile-avatar img { width: 100%; height: 100%; object-fit: cover; }
.profile-name { font-size: 18px; font-weight: 800; color: var(--text); margin-bottom: 2px; }
.profile-role { font-size: 12px; color: var(--text-muted); margin-bottom: 8px; }
.profile-stats { display: flex; justify-content: center; gap: 24px; margin-bottom: 0; }
.profile-stat { text-align: center; }
.profile-stat-num { font-size: 18px; font-weight: 800; color: var(--text); }
.profile-stat-label { font-size: 10px; color: var(--text-muted); }
.profile-menu-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px;
  margin-top: 4px;
}
.profile-menu-card {
  background: var(--card-bg);
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 14px 8px;
  text-align: center;
  cursor: pointer;
  transition: all 0.2s ease;
  -webkit-tap-highlight-color: transparent;
}
.profile-menu-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 4px 16px rgba(0,0,0,0.08);
  border-color: var(--primary);
}
.profile-menu-card:active {
  transform: scale(0.96);
}
.profile-menu-icon {
  font-size: 28px;
  margin-bottom: 6px;
  line-height: 1;
}
.profile-menu-label {
  font-size: 13px;
  font-weight: 600;
  color: var(--text);
  margin-bottom: 2px;
}
.profile-menu-desc {
  font-size: 10px;
  color: var(--text-muted);
}

/* ===== 成就徽章 ===== */
.achievement-scroll { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 8px; }
.achievement-item {
  display: flex; flex-direction: column; align-items: center; gap: 4px;
  padding: 10px 12px; border-radius: var(--r-sm); min-width: 70px;
  background: var(--glass); border: 0.5px solid var(--border);
  cursor: pointer; transition: var(--t); backdrop-filter: blur(10px);
}
.achievement-item:hover { border-color: var(--primary); }
.achievement-item.locked { opacity: 0.4; filter: grayscale(0.6); }
.achievement-icon { font-size: 24px; }
.achievement-name { font-size: 10px; color: var(--text-muted); font-weight: 500; white-space: nowrap; }

/* ===== 通知 ===== */
.notif-item { padding: 12px; border-bottom: 0.5px solid var(--border); cursor: pointer; display: flex; align-items: center; gap: 10px; transition: var(--t); }
.notif-item:hover { background: var(--border-light); }
.notif-item.unread { background: rgba(91,94,247,0.03); }
.notif-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--primary); flex-shrink: 0; }
.notif-content { flex: 1; font-size: 13px; color: var(--text); }
.notif-time { font-size: 11px; color: var(--text-muted); white-space: nowrap; }

/* ===== Toast ===== */
.toast { position: fixed; top: 80px; left: 50%; transform: translateX(-50%); z-index: 9999; padding: 10px 24px; border-radius: 20px; background: var(--glass-heavy); backdrop-filter: blur(30px); border: 0.5px solid var(--border); color: var(--text); font-size: 13px; font-weight: 600; box-shadow: var(--shadow-md); animation: toastIn 0.3s ease; pointer-events: none; }
@keyframes toastIn { from { opacity: 0; transform: translateX(-50%) translateY(-10px); } to { opacity: 1; transform: translateX(-50%) translateY(0); } }

/* ===== 加载动画 ===== */
.loading { width: 28px; height: 28px; margin: 32px auto; border: 3px solid var(--border); border-top-color: var(--primary); border-radius: 50%; animation: spin 0.7s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }

/* ===== 空状态 ===== */
.empty-state { text-align: center; padding: 40px 0; }
.empty-icon { font-size: 48px; margin-bottom: 8px; opacity: 0.6; }
.empty-text { font-size: 14px; color: var(--text-muted); font-weight: 500; margin-bottom: 4px; }
.empty-hint { font-size: 11px; color: var(--text-muted); }

/* ===== 管理面板 ===== */
.admin-nav { display: flex; gap: 6px; overflow-x: auto; padding: 0 0 12px; margin-bottom: 14px; scrollbar-width: none; }
.admin-nav::-webkit-scrollbar { display: none; }
.admin-nav-item { padding: 8px 16px; border-radius: 20px; border: 0.5px solid var(--border); background: var(--glass); font-size: 12px; font-weight: 500; cursor: pointer; color: var(--text-secondary); font-family: inherit; white-space: nowrap; backdrop-filter: blur(10px); transition: var(--t); }
.admin-nav-item.active { background: var(--primary); color: #fff; border-color: var(--primary); }
.admin-section-title { font-size: 18px; font-weight: 800; margin-bottom: 14px; }
.admin-action-bar { margin-bottom: 12px; }
.admin-ad-card { display: flex; align-items: center; justify-content: space-between; padding: 14px 16px; background: var(--glass); border-radius: var(--r-sm); border: 0.5px solid var(--border); margin-bottom: 8px; backdrop-filter: blur(10px); }
.admin-ad-info { flex: 1; }
.admin-ad-title { font-size: 14px; font-weight: 600; color: var(--text); }
.admin-ad-meta { font-size: 11px; color: var(--text-muted); margin-top: 3px; }
.admin-ad-actions { display: flex; gap: 6px; flex-shrink: 0; }

/* ===== Sheet 弹窗 ===== */
.sheet-overlay { position: fixed; inset: 0; z-index: 200; background: rgba(0,0,0,0.3); backdrop-filter: blur(6px); display: flex; align-items: flex-end; justify-content: center; }
.sheet-content { width: 100%; max-width: 500px; max-height: 80vh; overflow-y: auto; background: var(--glass-heavy); backdrop-filter: blur(30px) saturate(180%); -webkit-backdrop-filter: blur(30px) saturate(180%); border-radius: var(--r-xl) var(--r-xl) 0 0; padding: 20px 20px calc(20px + env(safe-area-inset-bottom)); border: 0.5px solid var(--border); box-shadow: 0 -10px 40px rgba(0,0,0,0.15); }
.sheet-handle { width: 36px; height: 4px; border-radius: 2px; background: var(--border); margin: 0 auto 16px; }
.sheet-title { font-size: 18px; font-weight: 800; text-align: center; margin-bottom: 16px; }
.sheet-input { width: 100%; padding: 12px 14px; margin-bottom: 10px; border-radius: var(--r-sm); border: 0.5px solid var(--border); font-size: 14px; font-family: inherit; outline: none; background: var(--bg); color: var(--text); }
.sheet-input:focus { border-color: var(--primary); }

/* ===== Modal 弹窗（居中） ===== */
.modal-overlay { position: fixed; inset: 0; z-index: 210; background: rgba(0,0,0,0.4); backdrop-filter: blur(8px); display: flex; align-items: center; justify-content: center; }
.modal-content { width: 90%; max-width: 420px; max-height: 85vh; overflow-y: auto; background: var(--glass-heavy); backdrop-filter: blur(30px) saturate(180%); -webkit-backdrop-filter: blur(30px) saturate(180%); border-radius: var(--r-xl); padding: 20px; border: 0.5px solid var(--border); box-shadow: 0 20px 60px rgba(0,0,0,0.2); }
.modal-header { font-size: 18px; font-weight: 800; text-align: center; margin-bottom: 16px; }
.sheet-btn { width: 100%; padding: 14px; margin-bottom: 8px; border-radius: var(--r-sm); border: none; font-size: 15px; font-weight: 600; cursor: pointer; font-family: inherit; }
.sheet-btn.primary { background: linear-gradient(135deg, var(--primary), var(--primary-dark)); color: #fff; }
.sheet-btn.secondary { background: var(--glass); border: 0.5px solid var(--border); color: var(--text-secondary); }

/* ===== 视频区 ===== */
.video-section { margin-bottom: 16px; }
.video-section-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px; }
.video-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; }

/* ===== 排行榜 ===== */
.leaderboard { margin-bottom: 16px; }
.leaderboard-item {
  display: flex; align-items: center; gap: 10px; padding: 12px;
  background: var(--glass); border-radius: var(--r); border: 0.5px solid var(--border);
  margin-bottom: 8px; backdrop-filter: blur(10px); cursor: pointer; transition: var(--t);
}
.leaderboard-item:hover { transform: translateX(2px); }
.leaderboard-rank { width: 28px; height: 28px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 800; flex-shrink: 0; }
.leaderboard-rank.gold { background: linear-gradient(135deg, #FFC107, #FF6B35); color: #fff; }
.leaderboard-rank.silver { background: linear-gradient(135deg, #B0BEC5, #78909C); color: #fff; }
.leaderboard-rank.bronze { background: linear-gradient(135deg, #FF8A65, #D84315); color: #fff; }
.leaderboard-rank.normal { background: var(--border-light); color: var(--text-muted); }
.leaderboard-info { flex: 1; }
.leaderboard-title { font-size: 14px; font-weight: 600; color: var(--text); }
.leaderboard-meta { font-size: 11px; color: var(--text-muted); }
.leaderboard-stat { font-size: 14px; font-weight: 700; color: var(--primary); }

/* ===== 热门标签 ===== */
.trending-tags { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 16px; }
.trending-tag {
  padding: 6px 14px; border-radius: 16px; border: 0.5px solid var(--border);
  background: var(--glass); font-size: 12px; font-weight: 500; cursor: pointer;
  color: var(--text-secondary); font-family: inherit; transition: var(--t);
  backdrop-filter: blur(10px);
}
.trending-tag:hover { border-color: var(--primary); color: var(--primary); }
.trending-tag.hot { background: rgba(255,71,87,0.06); border-color: rgba(255,71,87,0.2); color: var(--red); }

/* ===== 认证标签 ===== */
.cert-badge { display: inline-block; font-size: 10px; padding: 1px 5px; border-radius: 6px; margin-right: 4px; font-weight: 600; vertical-align: middle; }
.cert-badge.official { background: rgba(91,94,247,0.1); color: var(--primary); }
.cert-badge.individual { background: rgba(0,212,170,0.1); color: var(--teal); }
.cert-badge.none { display: none; }

/* ===== 角色标签 ===== */
.role-badge { display: inline-block; font-size: 10px; padding: 1px 6px; border-radius: 8px; margin-left: 4px; font-weight: 600; vertical-align: middle; white-space: nowrap; }

/* ===== 管理员设置区 ===== */
.admin-settings-section { margin-bottom: 20px; }
.admin-settings-title { font-size: 15px; font-weight: 700; margin-bottom: 12px; color: var(--text); }
.admin-settings-row { display: flex; gap: 10px; margin-bottom: 10px; align-items: flex-end; flex-wrap: wrap; }
.admin-user-card {
  display: flex; align-items: center; gap: 10px; padding: 12px;
  background: var(--glass); border-radius: var(--r); border: 0.5px solid var(--border);
  margin-bottom: 8px; backdrop-filter: blur(10px);
}
.admin-user-info { flex: 1; }
.admin-user-name { font-size: 14px; font-weight: 600; }
.admin-user-meta { font-size: 11px; color: var(--text-muted); margin-top: 2px; }
.admin-user-actions { display: flex; gap: 6px; flex-shrink: 0; }
.admin-role-select {
  padding: 6px 10px; border-radius: 14px; border: 0.5px solid var(--border);
  font-size: 12px; font-family: inherit; outline: none; background: var(--glass);
  color: var(--text); cursor: pointer;
}
.admin-color-input {
  width: 32px; height: 32px; border-radius: 50%; border: 2px solid var(--border);
  padding: 0; cursor: pointer; background: none;
}
.admin-color-input::-webkit-color-swatch-wrapper { padding: 0; }
.admin-color-input::-webkit-color-swatch { border-radius: 50%; border: none; }
.admin-apply-btn {
  padding: 6px 14px; border-radius: 14px; border: none; font-size: 12px; font-weight: 600;
  cursor: pointer; font-family: inherit; background: linear-gradient(135deg, var(--primary), var(--primary-dark));
  color: #fff;
}
.admin-cover-preview {
  width: 100%; max-height: 160px; object-fit: cover; border-radius: var(--r);
  border: 0.5px solid var(--border); margin-bottom: 10px;
}

/* ===== 用户公开主页 ===== */
.user-profile-card {
  padding: 24px 20px 20px; text-align: center; margin-bottom: 14px;
  background: var(--glass-heavy); backdrop-filter: blur(30px) saturate(180%);
  -webkit-backdrop-filter: blur(30px) saturate(180%);
  border-radius: var(--r-lg); border: 0.5px solid var(--border);
  box-shadow: var(--glass-shadow);
}
.user-profile-avatar { width: 68px; height: 68px; border-radius: 50%; background: linear-gradient(135deg, var(--primary), var(--purple)); display: flex; align-items: center; justify-content: center; font-size: 28px; color: #fff; margin: 0 auto 10px; overflow: hidden; box-shadow: 0 4px 20px var(--primary-glow); border: 2px solid rgba(255,255,255,0.4); }
.user-profile-avatar img { width: 100%; height: 100%; object-fit: cover; }
.user-profile-name { font-size: 20px; font-weight: 800; margin-bottom: 4px; }
.user-profile-role { font-size: 12px; color: var(--text-muted); margin-bottom: 12px; }
.user-profile-stats { display: flex; justify-content: center; gap: 32px; margin-bottom: 14px; }
.user-profile-stat { text-align: center; }
.user-profile-stat-num { font-size: 18px; font-weight: 800; color: var(--text); }
.user-profile-stat-label { font-size: 10px; color: var(--text-muted); }
.user-profile-self-tag { padding: 6px 20px; border-radius: 16px; display: inline-block; background: var(--border-light); color: var(--text-muted); font-size: 12px; font-weight: 500; }
.user-profile-actions { display: flex; gap: 10px; justify-content: center; }
.user-profile-btn {
  padding: 10px 28px; border-radius: 22px; font-size: 14px; font-weight: 600; cursor: pointer;
  border: none; font-family: inherit; transition: var(--t);
}
.user-profile-btn.follow-btn { background: linear-gradient(135deg, var(--primary), var(--primary-dark)); color: #fff; box-shadow: 0 4px 14px var(--primary-glow); }
.user-profile-btn.follow-btn.following { background: var(--glass); color: var(--text-secondary); border: 0.5px solid var(--border); box-shadow: none; }
.user-profile-btn.msg-btn { background: var(--glass); color: var(--text-secondary); border: 0.5px solid var(--border); backdrop-filter: blur(10px); }

/* ===== 消息列表 ===== */
.msg-conv-item {
  display: flex; align-items: center; gap: 12px; padding: 14px;
  cursor: pointer; transition: var(--t);
  background: var(--glass); border-radius: var(--r); border: 0.5px solid var(--border);
  margin-bottom: 8px; backdrop-filter: blur(10px);
}
.msg-conv-item:hover { background: var(--glass-heavy); }
.msg-conv-avatar { width: 44px; height: 44px; border-radius: 50%; background: linear-gradient(135deg, var(--primary-light), var(--accent)); display: flex; align-items: center; justify-content: center; color: #fff; font-size: 16px; font-weight: 700; overflow: hidden; flex-shrink: 0; }
.msg-conv-avatar img { width: 100%; height: 100%; object-fit: cover; }
.msg-conv-info { flex: 1; min-width: 0; }
.msg-conv-name { font-size: 14px; font-weight: 600; margin-bottom: 3px; }
.msg-conv-preview { font-size: 12px; color: var(--text-muted); overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
.msg-conv-time { font-size: 11px; color: var(--text-muted); white-space: nowrap; flex-shrink: 0; }
.msg-unread-badge {
  display: inline-block; margin-left: 6px; padding: 1px 7px; border-radius: 10px;
  background: var(--red); color: #fff; font-size: 10px; font-weight: 700; vertical-align: middle;
}

/* ===== 滚动条 ===== */
::-webkit-scrollbar { width: 4px; height: 4px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: var(--border); border-radius: 2px; }

/* ============================================
   资源社区 — 增强样式 v4.0
   朋友圈 · 管理后台 · 视频上传 · 举报弹窗 · 认证徽章 · 通用优化
   ============================================ */

/* ===== 1. 朋友圈（微信风格）增强 ===== */

/* 发布者入口 — 类似微信朋友圈顶部 */
.moment-publisher {
  display: flex; align-items: center; gap: 10px;
  padding: 12px 16px; margin-bottom: 14px;
  background: var(--bg-card);
  backdrop-filter: blur(30px) saturate(180%);
  -webkit-backdrop-filter: blur(30px) saturate(180%);
  border-radius: var(--r); border: 0.5px solid var(--border);
  box-shadow: var(--shadow-sm); cursor: pointer;
  transition: var(--t);
}
.moment-publisher:hover { box-shadow: var(--shadow); transform: translateY(-1px); }
.moment-publisher-avatar {
  width: 40px; height: 40px; border-radius: 50%;
  background: linear-gradient(135deg, var(--primary), var(--purple));
  display: flex; align-items: center; justify-content: center;
  color: #fff; font-size: 16px; font-weight: 700; flex-shrink: 0; overflow: hidden;
}
.moment-publisher-avatar img { width: 100%; height: 100%; object-fit: cover; }
.moment-publisher-hint {
  flex: 1; padding: 10px 14px; border-radius: 20px;
  background: var(--glass); border: 0.5px solid var(--border);
  font-size: 14px; color: var(--text-muted); font-family: inherit;
}
.moment-publisher-camera {
  width: 36px; height: 36px; border-radius: 50%;
  background: var(--glass); border: 0.5px solid var(--border);
  display: flex; align-items: center; justify-content: center;
  color: var(--primary); cursor: pointer; flex-shrink: 0;
  transition: var(--t);
}
.moment-publisher-camera:hover { background: rgba(91,94,247,0.08); }

/* 朋友圈卡片 */
.moment-card {
  margin: 0 16px 12px; padding: 16px;
  background: var(--bg-card);
  border-radius: var(--r); border: 0.5px solid var(--border);
  box-shadow: var(--shadow-sm);
  transition: var(--t);
}
:root.dark .moment-card { background: var(--bg-card); }
.moment-card:hover { box-shadow: var(--shadow); }

/* 发布者信息头部 */
.moment-header {
  display: flex; align-items: center; gap: 10px; margin-bottom: 10px;
}
.moment-header-avatar {
  width: 36px; height: 36px; border-radius: 50%;
  background: linear-gradient(135deg, var(--primary), var(--purple));
  display: flex; align-items: center; justify-content: center;
  color: #fff; font-size: 14px; font-weight: 700; flex-shrink: 0; overflow: hidden;
}
.moment-header-avatar img { width: 100%; height: 100%; object-fit: cover; border-radius: 50%; }
.moment-header-info { flex: 1; min-width: 0; }
.moment-header-name {
  font-size: 14px; font-weight: 700; color: var(--primary);
  line-height: 1.3; display: flex; align-items: center; gap: 4px;
}
.moment-header-time { font-size: 11px; color: var(--text-muted); margin-top: 2px; }
.moment-header-del {
  width: 26px; height: 26px; border-radius: 50%; border: none;
  background: rgba(255,71,87,0.08); color: var(--red);
  cursor: pointer; font-size: 12px; display: flex; align-items: center;
  justify-content: center; flex-shrink: 0; font-family: inherit;
  transition: var(--t);
}
.moment-header-del:hover { background: rgba(255,71,87,0.2); }

/* 文字内容 */
.moment-content {
  font-size: 15px; line-height: 1.6; color: var(--text);
  margin-bottom: 10px; white-space: pre-wrap; word-break: break-word;
}

/* 图片网格 */
.moment-images {
  display: grid; gap: 4px; margin-bottom: 10px;
}
.moment-images img,
.moment-images video {
  width: 100%; height: 100%; object-fit: cover; border-radius: 8px;
  cursor: pointer; transition: transform 0.2s ease;
  max-width: 100%; vertical-align: middle;
}
.moment-images img:hover { transform: scale(1.02); }
/* 1张图：全宽，限制最大高度 */
.moment-images.count-1 { grid-template-columns: 1fr; }
.moment-images.count-1 img { max-height: 280px; width: 100%; object-fit: contain; }
/* 2-4张图：2列 */
.moment-images.count-2,
.moment-images.count-4 { grid-template-columns: repeat(2, 1fr); }
.moment-images.count-2 img,
.moment-images.count-4 img { height: 150px; object-fit: cover; }
.moment-images.count-3 { grid-template-columns: repeat(2, 1fr); }
.moment-images.count-3 img:first-child { grid-column: 1 / -1; height: 180px; }
.moment-images.count-3 img { height: 150px; object-fit: cover; }
/* 5-9张图：3列 */
.moment-images.count-5,
.moment-images.count-6,
.moment-images.count-7,
.moment-images.count-8,
.moment-images.count-9 { grid-template-columns: repeat(3, 1fr); }
.moment-images.count-5 img,
.moment-images.count-6 img,
.moment-images.count-7 img,
.moment-images.count-8 img,
.moment-images.count-9 img { height: 100px; object-fit: cover; }

/* 底部操作栏 */
.moment-actions {
  display: flex; align-items: center; gap: 24px;
  padding-top: 8px; border-top: 0.5px solid var(--border);
}
.moment-actions-btn {
  display: inline-flex; align-items: center; gap: 4px;
  cursor: pointer; font-size: 13px; color: var(--text-secondary);
  padding: 4px 0; transition: var(--t); user-select: none;
  background: none; border: none; font-family: inherit;
}
.moment-actions-btn:hover { color: var(--primary); }
.moment-actions-btn.liked { color: var(--red); }
.moment-actions-btn svg { flex-shrink: 0; }

/* 朋友圈评论区域 */
.moment-comments {
  background: var(--border-light); border-radius: var(--r-sm);
  padding: 10px 12px; margin-top: 8px;
}
.moment-comments-list { margin-bottom: 6px; }
.moment-comment-item {
  padding: 5px 0; font-size: 13px; line-height: 1.5;
}
.moment-comment-item:not(:last-child) { border-bottom: 0.5px solid var(--border); }
.moment-comment-user { font-weight: 600; color: var(--primary); margin-right: 6px; }
.moment-comment-text { color: var(--text); }
.moment-comment-time { font-size: 10px; color: var(--text-muted); margin-left: 8px; }
.moment-comment-input {
  display: flex; gap: 6px; margin-top: 6px;
}
.moment-comment-input input {
  flex: 1; padding: 8px 12px; border-radius: 16px;
  border: 0.5px solid var(--border); font-size: 13px;
  font-family: inherit; outline: none; background: var(--bg);
  color: var(--text);
}
.moment-comment-input input:focus { border-color: var(--primary); }
.moment-comment-input button {
  padding: 8px 16px; border-radius: 16px; border: none;
  background: linear-gradient(135deg, var(--primary), var(--primary-dark));
  color: #fff; font-size: 12px; font-weight: 600; cursor: pointer;
  font-family: inherit; white-space: nowrap;
}

/* 朋友圈发布框（底部固定） */
.moment-composer {
  position: fixed; bottom: 0; left: 0; right: 0; z-index: 90;
  padding: 12px 16px calc(12px + env(safe-area-inset-bottom, 12px));
  background: var(--glass-heavy);
  backdrop-filter: blur(30px) saturate(180%);
  -webkit-backdrop-filter: blur(30px) saturate(180%);
  border-top: 0.5px solid var(--border);
  box-shadow: 0 -4px 20px rgba(0,0,0,0.06);
}
.moment-composer-row { margin-bottom: 8px; }
.moment-composer-row textarea {
  width: 100%; padding: 10px 14px; border-radius: var(--r-sm);
  border: 0.5px solid var(--border); font-size: 14px;
  font-family: inherit; resize: none; outline: none;
  background: var(--bg); color: var(--text); line-height: 1.5;
}
.moment-composer-row textarea:focus { border-color: var(--primary); }
.moment-composer-preview {
  position: relative; display: inline-block; margin-bottom: 8px;
}
.moment-composer-preview img {
  width: 80px; height: 80px; object-fit: cover; border-radius: 8px;
  border: 0.5px solid var(--border);
}
.moment-preview-remove {
  position: absolute; top: -6px; right: -6px;
  width: 22px; height: 22px; border-radius: 50%;
  background: var(--red); color: #fff; border: none;
  cursor: pointer; font-size: 12px; display: flex;
  align-items: center; justify-content: center;
  font-family: inherit;
}
.moment-composer-actions {
  display: flex; align-items: center; gap: 10px;
}
.moment-upload-btn {
  cursor: pointer; color: var(--primary); display: flex;
  align-items: center; padding: 6px; border-radius: 8px;
  transition: var(--t);
}
.moment-upload-btn:hover { background: rgba(91,94,247,0.06); }

/* ===== 2. 管理后台重新设计 ===== */

/* 整体容器 */
.admin-dashboard {
  padding: 16px; max-width: 900px; margin: 0 auto;
}

/* 统计卡片网格 */
.admin-stats {
  display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px;
  margin-bottom: 20px;
}
.admin-stat-card {
  padding: 16px 14px; border-radius: var(--r); border: 0.5px solid var(--border);
  backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px);
  display: flex; align-items: center; gap: 12px;
  transition: var(--t); cursor: default;
}
.admin-stat-card:hover { transform: translateY(-2px); box-shadow: var(--shadow-md); }
.admin-stat-card.users {
  background: linear-gradient(135deg, rgba(91,94,247,0.08), rgba(168,85,247,0.04));
}
.admin-stat-card.resources {
  background: linear-gradient(135deg, rgba(0,212,170,0.08), rgba(46,213,115,0.04));
}
.admin-stat-card.moments {
  background: linear-gradient(135deg, rgba(255,107,53,0.08), rgba(255,193,7,0.04));
}
.admin-stat-card.reports {
  background: linear-gradient(135deg, rgba(255,71,87,0.08), rgba(255,107,157,0.04));
}
.admin-stat-icon {
  width: 44px; height: 44px; border-radius: 12px;
  display: flex; align-items: center; justify-content: center;
  font-size: 20px; flex-shrink: 0;
}
.admin-stat-card.users .admin-stat-icon { background: rgba(91,94,247,0.15); color: var(--primary); }
.admin-stat-card.resources .admin-stat-icon { background: rgba(0,212,170,0.15); color: var(--teal); }
.admin-stat-card.moments .admin-stat-icon { background: rgba(255,107,53,0.15); color: var(--orange); }
.admin-stat-card.reports .admin-stat-icon { background: rgba(255,71,87,0.15); color: var(--red); }
.admin-stat-body { flex: 1; min-width: 0; }
.admin-stat-num { font-size: 22px; font-weight: 800; color: var(--text); line-height: 1.2; }
.admin-stat-label { font-size: 11px; color: var(--text-muted); font-weight: 500; margin-top: 2px; }

/* 功能菜单 */
.admin-menu {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px;
  margin-bottom: 20px;
}
.admin-menu-item {
  display: flex; flex-direction: column; align-items: center; gap: 8px;
  padding: 16px 10px; border-radius: var(--r); border: 0.5px solid var(--border);
  background: var(--glass); backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px); cursor: pointer;
  transition: var(--t); text-align: center;
}
.admin-menu-item:hover { transform: translateY(-2px); box-shadow: var(--shadow); border-color: var(--primary); }
.admin-menu-item.active { background: rgba(91,94,247,0.06); border-color: var(--primary); }
.admin-menu-icon {
  width: 40px; height: 40px; border-radius: 12px;
  background: rgba(91,94,247,0.08); color: var(--primary);
  display: flex; align-items: center; justify-content: center;
  font-size: 18px; transition: var(--t);
}
.admin-menu-item.active .admin-menu-icon { background: var(--primary); color: #fff; }
.admin-menu-label { font-size: 12px; font-weight: 600; color: var(--text); }
.admin-menu-item.active .admin-menu-label { color: var(--primary); }

/* 用户/举报列表表格 */
.admin-table {
  width: 100%; border-collapse: separate; border-spacing: 0;
  background: var(--glass); border-radius: var(--r); border: 0.5px solid var(--border);
  overflow: hidden; backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px);
  margin-bottom: 16px;
}
.admin-table thead th {
  padding: 12px 14px; font-size: 12px; font-weight: 700; color: var(--text-muted);
  text-align: left; text-transform: uppercase; letter-spacing: 0.5px;
  background: var(--border-light); border-bottom: 0.5px solid var(--border);
}
.admin-table tbody td {
  padding: 12px 14px; font-size: 13px; color: var(--text);
  border-bottom: 0.5px solid var(--border-light); vertical-align: middle;
}
.admin-table tbody tr:last-child td { border-bottom: none; }
.admin-table tbody tr {
  transition: var(--t); cursor: pointer;
}
.admin-table tbody tr:hover { background: var(--border-light); }
.admin-table .table-avatar {
  width: 32px; height: 32px; border-radius: 50%; object-fit: cover;
  background: linear-gradient(135deg, var(--primary-light), var(--accent));
}
.admin-table .table-name { font-weight: 600; color: var(--text); }
.admin-table .table-meta { font-size: 11px; color: var(--text-muted); }
.admin-table .table-status {
  display: inline-block; padding: 2px 10px; border-radius: 10px;
  font-size: 11px; font-weight: 600;
}
.admin-table .table-status.active { background: rgba(46,213,115,0.1); color: var(--green); }
.admin-table .table-status.banned { background: rgba(255,71,87,0.1); color: var(--red); }
.admin-table .table-status.pending { background: rgba(255,193,7,0.1); color: var(--amber); }

/* 操作按钮组 */
.admin-actions {
  display: flex; gap: 6px; flex-wrap: wrap;
}
.admin-btn {
  padding: 5px 12px; border-radius: 14px; font-size: 11px; font-weight: 600;
  cursor: pointer; border: 0.5px solid transparent; font-family: inherit;
  transition: var(--t); white-space: nowrap; display: inline-flex;
  align-items: center; gap: 3px;
}
.admin-btn:hover { transform: translateY(-1px); }
.admin-btn:active { transform: scale(0.96); }
.admin-btn.primary {
  background: rgba(91,94,247,0.1); color: var(--primary);
  border-color: rgba(91,94,247,0.2);
}
.admin-btn.primary:hover { background: rgba(91,94,247,0.2); }
.admin-btn.success {
  background: rgba(46,213,115,0.1); color: var(--green);
  border-color: rgba(46,213,115,0.2);
}
.admin-btn.success:hover { background: rgba(46,213,115,0.2); }
.admin-btn.warning {
  background: rgba(255,193,7,0.1); color: var(--amber);
  border-color: rgba(255,193,7,0.2);
}
.admin-btn.warning:hover { background: rgba(255,193,7,0.2); }
.admin-btn.danger {
  background: rgba(255,71,87,0.1); color: var(--red);
  border-color: rgba(255,71,87,0.2);
}
.admin-btn.danger:hover { background: rgba(255,71,87,0.2); }
.admin-btn.ghost {
  background: transparent; color: var(--text-secondary);
  border-color: var(--border);
}
.admin-btn.ghost:hover { background: var(--glass); }

/* ===== 3. 视频上传 ===== */

/* 拖拽上传区域 */
.video-upload-area {
  border: 2px dashed var(--border); border-radius: var(--r);
  padding: 32px 20px; text-align: center; cursor: pointer;
  transition: var(--t); background: var(--glass);
  margin-bottom: 16px;
}
.video-upload-area:hover,
.video-upload-area.dragover {
  border-color: var(--primary);
  background: rgba(91,94,247,0.04);
  box-shadow: 0 0 0 4px rgba(91,94,247,0.06);
}
.video-upload-area.dragover {
  border-style: solid; border-color: var(--primary);
  background: rgba(91,94,247,0.06);
}
.video-upload-placeholder {
  display: flex; flex-direction: column; align-items: center; gap: 8px;
  color: var(--text-muted); pointer-events: none;
}
.video-upload-icon {
  width: 48px; height: 48px; border-radius: 50%;
  background: rgba(91,94,247,0.08); color: var(--primary);
  display: flex; align-items: center; justify-content: center;
  font-size: 22px;
}
.video-upload-text { font-size: 14px; font-weight: 500; color: var(--text-secondary); }
.video-upload-hint { font-size: 11px; color: var(--text-muted); }
.video-upload-progress {
  width: 100%; height: 4px; border-radius: 2px;
  background: var(--border); margin-top: 12px; overflow: hidden;
}
.video-upload-progress-bar {
  height: 100%; border-radius: 2px;
  background: linear-gradient(90deg, var(--primary), var(--purple));
  transition: width 0.3s ease;
}

/* 视频卡片 */
.video-card {
  background: var(--glass); border-radius: var(--r); overflow: hidden;
  border: 0.5px solid var(--border); backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px); transition: var(--spring);
  cursor: pointer;
}
.video-card:hover { transform: translateY(-2px); box-shadow: var(--shadow-md); }
.video-card-thumb {
  position: relative; width: 100%; height: 140px; overflow: hidden;
  background: #000;
}
.video-card-thumb img,
.video-card-thumb video {
  width: 100%; height: 100%; object-fit: cover;
}
.video-card-play {
  position: absolute; inset: 0; display: flex; align-items: center;
  justify-content: center; background: rgba(0,0,0,0.2);
  transition: var(--t);
}
.video-card:hover .video-card-play { background: rgba(0,0,0,0.35); }
.video-card-play-icon {
  width: 40px; height: 40px; border-radius: 50%;
  background: rgba(255,255,255,0.9); color: var(--primary);
  display: flex; align-items: center; justify-content: center;
  font-size: 16px; box-shadow: 0 4px 16px rgba(0,0,0,0.2);
}
.video-card-duration {
  position: absolute; bottom: 6px; right: 6px; padding: 2px 6px;
  border-radius: 4px; background: rgba(0,0,0,0.65); color: #fff;
  font-size: 10px; font-weight: 600; font-family: monospace;
}
.video-card-body { padding: 10px 12px; }
.video-card-title {
  font-size: 13px; font-weight: 600; color: var(--text);
  line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 2;
  -webkit-box-orient: vertical; overflow: hidden; margin-bottom: 6px;
}
.video-card-author {
  display: flex; align-items: center; gap: 6px; font-size: 11px;
  color: var(--text-muted);
}
.video-card-author-avatar {
  width: 20px; height: 20px; border-radius: 50%; object-fit: cover;
  background: linear-gradient(135deg, var(--primary-light), var(--accent));
}
.video-card-stats { display: flex; gap: 10px; font-size: 11px; color: var(--text-muted); margin-top: 4px; }

/* 视频上传状态标签 */
.video-upload-status {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 3px 10px; border-radius: 10px; font-size: 11px; font-weight: 600;
}
.video-upload-status.uploading { background: rgba(91,94,247,0.1); color: var(--primary); }
.video-upload-status.success { background: rgba(46,213,115,0.1); color: var(--green); }
.video-upload-status.error { background: rgba(255,71,87,0.1); color: var(--red); }

/* ===== 4. 举报弹窗 ===== */

/* 底部弹出表单 */
.report-sheet {
  position: fixed; inset: 0; z-index: 300;
  background: rgba(0,0,0,0.35); backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  display: flex; align-items: flex-end; justify-content: center;
}
.report-sheet-content {
  width: 100%; max-width: 500px; max-height: 85vh; overflow-y: auto;
  background: var(--bg-card);
  border-radius: var(--r-xl) var(--r-xl) 0 0;
  padding: 20px 20px calc(20px + env(safe-area-inset-bottom, 20px));
  border: 0.5px solid var(--border);
  box-shadow: 0 -10px 40px rgba(0,0,0,0.2);
}
.report-sheet-handle {
  width: 36px; height: 4px; border-radius: 2px;
  background: var(--border); margin: 0 auto 16px;
}
.report-sheet-title {
  font-size: 18px; font-weight: 800; text-align: center;
  color: var(--text); margin-bottom: 16px;
}
.report-sheet-reason-list {
  display: flex; flex-direction: column; gap: 8px; margin-bottom: 16px;
}
.report-sheet-reason {
  display: flex; align-items: center; gap: 10px;
  padding: 12px 14px; border-radius: var(--r-sm);
  border: 0.5px solid var(--border); background: var(--glass);
  cursor: pointer; transition: var(--t); font-size: 14px;
  color: var(--text); font-family: inherit;
}
.report-sheet-reason:hover { border-color: var(--primary); background: rgba(91,94,247,0.04); }
.report-sheet-reason.selected {
  border-color: var(--primary); background: rgba(91,94,247,0.06);
  color: var(--primary); font-weight: 600;
}
.report-sheet-reason-radio {
  width: 18px; height: 18px; border-radius: 50%;
  border: 2px solid var(--border); flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  transition: var(--t);
}
.report-sheet-reason.selected .report-sheet-reason-radio {
  border-color: var(--primary); background: var(--primary);
}
.report-sheet-reason.selected .report-sheet-reason-radio::after {
  content: ''; width: 6px; height: 6px; border-radius: 50%; background: #fff;
}
.report-sheet-input {
  width: 100%; padding: 12px 14px; margin-bottom: 16px;
  border-radius: var(--r-sm); border: 0.5px solid var(--border);
  font-size: 14px; font-family: inherit; outline: none;
  background: var(--glass); color: var(--text); resize: vertical;
  min-height: 80px; line-height: 1.5;
}
.report-sheet-input:focus { border-color: var(--primary); }
.report-sheet-input::placeholder { color: var(--text-muted); }
.report-sheet-actions {
  display: flex; gap: 10px;
}
.report-sheet-btn {
  flex: 1; padding: 13px; border-radius: var(--r-sm);
  font-size: 14px; font-weight: 600; cursor: pointer;
  border: none; font-family: inherit; transition: var(--t);
}
.report-sheet-btn.cancel {
  background: var(--glass); border: 0.5px solid var(--border);
  color: var(--text-secondary);
}
.report-sheet-btn.cancel:hover { background: var(--glass-heavy); }
.report-sheet-btn.submit {
  background: linear-gradient(135deg, var(--red), #FF6B81);
  color: #fff; box-shadow: 0 4px 14px rgba(255,71,87,0.3);
}
.report-sheet-btn.submit:hover { transform: translateY(-1px); box-shadow: 0 6px 20px rgba(255,71,87,0.4); }
.report-sheet-btn.submit:active { transform: scale(0.97); }
.report-sheet-btn.submit:disabled {
  opacity: 0.5; cursor: not-allowed; transform: none;
  box-shadow: none;
}

/* ===== 5. 认证徽章增强 ===== */

/* 基础认证徽章已在上方定义，此处增强 */
.cert-badge {
  display: inline-flex; align-items: center; gap: 3px;
  font-size: 10px; padding: 2px 6px; border-radius: 6px;
  margin-right: 4px; font-weight: 600; vertical-align: middle;
  line-height: 1.4; white-space: nowrap;
  transition: var(--t);
}
.cert-badge:hover { transform: scale(1.05); }

/* 官方认证 — 蓝色 */
.cert-badge.official {
  background: rgba(91,94,247,0.1); color: var(--primary);
  border: 0.5px solid rgba(91,94,247,0.2);
}
.cert-badge.official::before {
  content: ''; display: inline-block; width: 12px; height: 12px;
  background: currentColor; mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 2l1.6 5h5.1l-4.1 3 1.6 5-4.2-3-4.2 3 1.6-5-4.1-3h5.1z'/%3E%3C/svg%3E");
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 2l1.6 5h5.1l-4.1 3 1.6 5-4.2-3-4.2 3 1.6-5-4.1-3h5.1z'/%3E%3C/svg%3E");
  mask-size: contain; -webkit-mask-size: contain;
  mask-repeat: no-repeat; -webkit-mask-repeat: no-repeat;
  background-color: var(--primary); flex-shrink: 0;
}

/* VIP 认证 — 金色 */
.cert-badge.vip {
  background: linear-gradient(135deg, rgba(255,193,7,0.12), rgba(255,152,0,0.08));
  color: #D4A017; border: 0.5px solid rgba(255,193,7,0.3);
}
.cert-badge.vip::before {
  content: ''; display: inline-block; width: 12px; height: 12px;
  background: currentColor; mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 6v6l4 2'/%3E%3C/svg%3E");
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 6v6l4 2'/%3E%3C/svg%3E");
  mask-size: contain; -webkit-mask-size: contain;
  mask-repeat: no-repeat; -webkit-mask-repeat: no-repeat;
  background-color: #D4A017; flex-shrink: 0;
}

/* 合作伙伴认证 — 紫色 */
.cert-badge.partner {
  background: rgba(168,85,247,0.1); color: var(--purple);
  border: 0.5px solid rgba(168,85,247,0.2);
}
.cert-badge.partner::before {
  content: ''; display: inline-block; width: 12px; height: 12px;
  background: currentColor; mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2'/%3E%3Ccircle cx='9' cy='7' r='4'/%3E%3Cpath d='M22 21v-2a4 4 0 0 0-3-3.87'/%3E%3Cpath d='M16 3.13a4 4 0 0 1 0 7.75'/%3E%3C/svg%3E");
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2'/%3E%3Ccircle cx='9' cy='7' r='4'/%3E%3Cpath d='M22 21v-2a4 4 0 0 0-3-3.87'/%3E%3Cpath d='M16 3.13a4 4 0 0 1 0 7.75'/%3E%3C/svg%3E");
  mask-size: contain; -webkit-mask-size: contain;
  mask-repeat: no-repeat; -webkit-mask-repeat: no-repeat;
  background-color: var(--purple); flex-shrink: 0;
}

/* 隐藏未认证 */
.cert-badge.none { display: none; }

/* ===== 6. 密码输入框 ===== */

/* 登录弹窗中的密码输入 */
.login-password-field {
  position: relative; margin-bottom: 14px;
}
.login-password-field input {
  width: 100%; padding: 12px 42px 12px 14px; border-radius: var(--r-sm);
  border: 0.5px solid var(--border); font-size: 14px;
  font-family: inherit; outline: none; background: var(--glass);
  color: var(--text); transition: var(--t);
}
.login-password-field input:focus {
  border-color: var(--primary); box-shadow: 0 0 0 3px rgba(91,94,247,0.08);
}
.login-password-field input::placeholder { color: var(--text-muted); }
.login-password-toggle {
  position: absolute; right: 10px; top: 50%; transform: translateY(-50%);
  width: 32px; height: 32px; border-radius: 50%; border: none;
  background: transparent; color: var(--text-muted); cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  font-size: 14px; font-family: inherit; transition: var(--t);
}
.login-password-toggle:hover { color: var(--text-secondary); background: var(--border-light); }

/* 密码强度指示器 */
.password-strength {
  display: flex; gap: 4px; margin-top: 8px;
}
.password-strength-bar {
  flex: 1; height: 3px; border-radius: 2px;
  background: var(--border); transition: var(--t);
}
.password-strength-bar.weak { background: var(--red); }
.password-strength-bar.medium { background: var(--amber); }
.password-strength-bar.strong { background: var(--green); }
.password-strength-text {
  font-size: 11px; margin-top: 4px; font-weight: 500;
}
.password-strength-text.weak { color: var(--red); }
.password-strength-text.medium { color: var(--amber); }
.password-strength-text.strong { color: var(--green); }

/* ===== 7. 通用优化 ===== */

/* 按钮悬停/点击动效 */
.btn,
.mobile-tab-item,
.cat-pill,
.sort-pill,
.trending-tag,
.admin-nav-item,
.h-card,
.resource-card,
.discover-card,
.leaderboard-item {
  transition: transform 0.2s cubic-bezier(0.4, 0, 0.2, 1),
              box-shadow 0.2s cubic-bezier(0.4, 0, 0.2, 1),
              background 0.2s ease,
              border-color 0.2s ease;
}
.btn:active,
.mobile-tab-item:active,
.cat-pill:active,
.sort-pill:active {
  transform: scale(0.95);
}

/* 按钮沉浸式点击反馈 */
.btn:active {
  filter: brightness(0.9); transition: filter 0.05s ease;
}

/* 图片预览网格 */
.image-preview-grid {
  display: grid; gap: 4px; border-radius: var(--r-sm); overflow: hidden;
}
.image-preview-grid img {
  width: 100%; height: 100%; object-fit: cover; cursor: pointer;
  transition: transform 0.25s ease;
}
.image-preview-grid img:hover { transform: scale(1.03); }
/* 响应式列数 */
.image-preview-grid.cols-1 { grid-template-columns: 1fr; }
.image-preview-grid.cols-2 { grid-template-columns: repeat(2, 1fr); }
.image-preview-grid.cols-3 { grid-template-columns: repeat(3, 1fr); }
.image-preview-grid.cols-4 { grid-template-columns: repeat(4, 1fr); }

/* 增强空状态 */
.empty-state {
  text-align: center; padding: 48px 20px; user-select: none;
}
.empty-state-icon {
  width: 72px; height: 72px; border-radius: 50%;
  background: var(--border-light); margin: 0 auto 16px;
  display: flex; align-items: center; justify-content: center;
  font-size: 30px; opacity: 0.5;
}
.empty-state-text {
  font-size: 15px; font-weight: 600; color: var(--text-secondary);
  margin-bottom: 6px;
}
.empty-state-hint {
  font-size: 12px; color: var(--text-muted); max-width: 260px;
  margin: 0 auto; line-height: 1.5;
}
.empty-state-action {
  margin-top: 16px; padding: 10px 24px; border-radius: 20px;
  border: 0.5px solid var(--primary); background: transparent;
  color: var(--primary); font-size: 13px; font-weight: 600;
  cursor: pointer; font-family: inherit; transition: var(--t);
}
.empty-state-action:hover {
  background: var(--primary); color: #fff;
  box-shadow: 0 4px 14px var(--primary-glow);
}

/* 图片预览空状态专用 */
.empty-state.image-empty { padding: 32px 0; }
.empty-state.image-empty .empty-state-icon {
  background: rgba(91,94,247,0.06); color: var(--primary); opacity: 0.8;
}

/* Toast 提示增强 */
.toast {
  position: fixed; top: 80px; left: 50%; transform: translateX(-50%);
  z-index: 9999; padding: 10px 24px; border-radius: 20px;
  background: var(--glass-heavy); backdrop-filter: blur(30px) saturate(180%);
  -webkit-backdrop-filter: blur(30px) saturate(180%);
  border: 0.5px solid var(--border); color: var(--text);
  font-size: 13px; font-weight: 600; box-shadow: var(--shadow-md);
  animation: toastSlideIn 0.35s cubic-bezier(0.175, 0.885, 0.32, 1.275);
  pointer-events: none; white-space: nowrap; display: flex;
  align-items: center; gap: 6px;
}
.toast.success { border-color: rgba(46,213,115,0.3); background: rgba(46,213,115,0.08); color: var(--green); }
.toast.error { border-color: rgba(255,71,87,0.3); background: rgba(255,71,87,0.08); color: var(--red); }
.toast.warning { border-color: rgba(255,193,7,0.3); background: rgba(255,193,7,0.08); color: var(--amber); }
.toast.info { border-color: rgba(91,94,247,0.3); background: rgba(91,94,247,0.08); color: var(--primary); }
.toast-icon { flex-shrink: 0; font-size: 15px; }

@keyframes toastSlideIn {
  from { opacity: 0; transform: translateX(-50%) translateY(-16px) scale(0.9); }
  to { opacity: 1; transform: translateX(-50%) translateY(0) scale(1); }
}
@keyframes toastSlideOut {
  from { opacity: 1; transform: translateX(-50%) translateY(0) scale(1); }
  to { opacity: 0; transform: translateX(-50%) translateY(-16px) scale(0.9); }
}
.toast.leaving { animation: toastSlideOut 0.25s ease forwards; }

/* 底部 Toast 变体 */
.toast-bottom {
  top: auto; bottom: 100px;
  animation: toastBottomIn 0.35s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}
@keyframes toastBottomIn {
  from { opacity: 0; transform: translateX(-50%) translateY(16px) scale(0.9); }
  to { opacity: 1; transform: translateX(-50%) translateY(0) scale(1); }
}

/* 加载骨架屏 */
.skeleton {
  background: linear-gradient(90deg, var(--border-light) 25%, var(--border) 50%, var(--border-light) 75%);
  background-size: 200% 100%; border-radius: 4px;
  animation: skeletonShimmer 1.5s ease-in-out infinite;
}
@keyframes skeletonShimmer {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}
.skeleton-text { height: 14px; margin-bottom: 8px; border-radius: 4px; }
.skeleton-text:last-child { width: 60%; }
.skeleton-avatar { width: 40px; height: 40px; border-radius: 50%; }
.skeleton-card {
  padding: 16px; border-radius: var(--r); border: 0.5px solid var(--border);
  background: var(--glass); margin-bottom: 12px;
}
.skeleton-image { width: 100%; height: 140px; border-radius: var(--r-sm); margin-bottom: 10px; }

/* 内联加载 spinner */
.inline-spinner {
  display: inline-block; width: 16px; height: 16px;
  border: 2px solid var(--border); border-top-color: var(--primary);
  border-radius: 50%; animation: spin 0.6s linear infinite;
  vertical-align: middle; margin-right: 6px;
}

/* ============================================
   首页美化优化 v1.0
   ============================================ */

/* Hero 区域大屏优化 */
@media (min-width: 768px) {
  .hero-section { padding: 40px 32px 32px; }
  .hero-title { font-size: 32px; }
  .hero-subtitle { font-size: 14px; }
  .stats-bar { gap: 48px; margin-top: 24px; }
  .stat-num { font-size: 28px; }
}

/* 区块标题优化 */
.section-header { margin: 20px 0 12px; }
.section-title { font-size: 17px; }

/* 资源卡片图片区域高度优化 */
@media (min-width: 900px) {
  .card-img-wrap { height: 120px; }
  .card-img-emoji { font-size: 48px; }
}
@media (min-width: 1200px) {
  .card-img-wrap { height: 130px; }
}

/* 横向滚动卡片优化 */
.h-card { min-width: 150px; max-width: 170px; padding: 14px; }
.h-img { font-size: 32px; }
.h-title { font-size: 13px; }

/* 搜索框美化增强 */
.search-box { padding: 8px 8px 8px 18px; }
.search-box input { font-size: 15px; }
.search-btn { padding: 11px 20px; font-size: 13px; }

/* 分类标签间距优化 */
.category-pills { gap: 10px; padding-bottom: 12px; }
.cat-pill, .sub-pill { padding: 9px 18px; font-size: 13px; }

/* 卡片悬停效果增强 */
.resource-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 12px 32px rgba(91,94,247,0.1), 0 2px 8px rgba(0,0,0,0.06);
}

/* 区块分隔优化 */
.section-divider { margin: 16px 0 20px; }

/* 排序栏优化 */
.sort-bar { margin-bottom: 16px; }
.sort-pill { padding: 7px 16px; font-size: 12px; }

/* 签到条美化 */
.checkin-bar { padding: 14px 18px; margin-bottom: 16px; }

/* 广告区优化 */
.ad-section { padding: 14px; margin-bottom: 16px; }

/* 发现页网格响应式 */
@media (min-width: 768px) {
  .discover-grid { grid-template-columns: repeat(4, 1fr); gap: 12px; }
}
@media (min-width: 1024px) {
  .discover-grid { grid-template-columns: repeat(6, 1fr); }
}

/* 管理后台大屏优化 */
@media (min-width: 768px) {
  .admin-stats { grid-template-columns: repeat(4, 1fr); }
  .admin-menu { grid-template-columns: repeat(4, 1fr); }
}

/* 视频网格响应式 */
@media (min-width: 900px) {
  .video-grid { grid-template-columns: repeat(3, 1fr); gap: 12px; }
}
@media (min-width: 1200px) {
  .video-grid { grid-template-columns: repeat(4, 1fr); }
}

/* 排行榜大屏优化 */
@media (min-width: 768px) {
  .leaderboard { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; }
  .leaderboard-item { margin-bottom: 0; }
}

/* 热门标签大屏优化 */
@media (min-width: 768px) {
  .trending-tags { gap: 10px; }
  .trending-tag { padding: 8px 16px; font-size: 13px; }
}

/* ============================================
   iOS 风格首页 v4.0
   ============================================ */

/* iOS Hero — 大渐变背景 */
.ios-hero {
  position: relative; padding: 32px 20px 28px; margin-bottom: 12px;
  background: linear-gradient(135deg, #5B5EF7 0%, #8B5CF6 30%, #A855F7 60%, #6366F1 100%);
  border-radius: 0 0 var(--r-xl) var(--r-xl); overflow: hidden;
  color: #fff; text-align: center;
}
.ios-hero::before {
  content: ''; position: absolute; top: -80px; right: -60px;
  width: 200px; height: 200px; border-radius: 50%;
  background: radial-gradient(circle, rgba(255,255,255,0.15) 0%, transparent 70%);
  pointer-events: none;
}
.ios-hero::after {
  content: ''; position: absolute; bottom: -40px; left: -40px;
  width: 140px; height: 140px; border-radius: 50%;
  background: radial-gradient(circle, rgba(0,212,170,0.2) 0%, transparent 70%);
  pointer-events: none;
}
.ios-hero-content { position: relative; z-index: 1; }
.ios-hero-logo {
  width: 56px; height: 56px; margin: 0 auto 12px;
  background: rgba(255,255,255,0.2); border-radius: 16px;
  display: flex; align-items: center; justify-content: center;
  font-size: 28px; backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,0.25);
  box-shadow: 0 4px 16px rgba(0,0,0,0.1);
}
.ios-hero-title {
  font-size: 28px; font-weight: 800; letter-spacing: -0.5px;
  margin-bottom: 4px; text-shadow: 0 2px 8px rgba(0,0,0,0.15);
  line-height: 1.2;
}
.ios-hero-desc {
  font-size: 13px; opacity: 0.85; font-weight: 400;
  margin-bottom: 16px; text-shadow: 0 1px 4px rgba(0,0,0,0.1);
}

/* iOS Search — 嵌入Hero的搜索条 */
.ios-search {
  display: flex; align-items: center; gap: 8px;
  padding: 4px 4px 4px 16px;
  background: rgba(255,255,255,0.2); border-radius: 28px;
  border: 1px solid rgba(255,255,255,0.3);
  backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px);
  box-shadow: 0 2px 12px rgba(0,0,0,0.08); max-width: 480px; margin: 0 auto;
}
.ios-search svg { flex-shrink: 0; opacity: 0.7; }
.ios-search input {
  flex: 1; border: none; background: none; font-size: 15px;
  outline: none; color: #fff; font-family: inherit;
}
.ios-search input::placeholder { color: rgba(255,255,255,0.6); }
.ios-search-btn {
  padding: 10px 20px; border-radius: 24px; border: none;
  background: rgba(255,255,255,0.95); color: var(--primary);
  font-size: 13px; font-weight: 700; cursor: pointer; font-family: inherit;
  box-shadow: 0 2px 8px rgba(0,0,0,0.1); transition: var(--t);
}
.ios-search-btn:active { transform: scale(0.96); }

/* iOS Stats Cards — 悬浮卡片 */
.ios-stats-row {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px;
  margin: -20px 0 14px; padding: 0 8px; position: relative; z-index: 2;
}
.ios-stat-card {
  background: var(--glass-heavy); backdrop-filter: blur(30px) saturate(180%);
  -webkit-backdrop-filter: blur(30px) saturate(180%);
  border-radius: var(--r); border: 0.5px solid var(--border);
  padding: 14px 10px; text-align: center;
  box-shadow: var(--glass-shadow); transition: var(--spring);
}
.ios-stat-card:active { transform: scale(0.96); }
.ios-stat-icon { font-size: 22px; margin-bottom: 4px; }
.ios-stat-num { font-size: 22px; font-weight: 800; color: var(--text); font-variant-numeric: tabular-nums; }
.ios-stat-label { font-size: 11px; color: var(--text-muted); margin-top: 2px; font-weight: 500; }

/* iOS Category Pills — 带图标 */
.ios-cat-pills {
  display: flex; gap: 10px; overflow-x: auto; padding: 0 0 10px;
  scrollbar-width: none; margin-bottom: 6px;
}
.ios-cat-pills::-webkit-scrollbar { display: none; }
.ios-cat-pill {
  display: flex; flex-direction: column; align-items: center; gap: 4px;
  padding: 12px 16px; border-radius: var(--r); cursor: pointer;
  border: 0.5px solid var(--border); background: var(--glass);
  backdrop-filter: blur(10px); transition: var(--spring);
  flex-shrink: 0; min-width: 64px; font-family: inherit;
}
.ios-cat-pill .ios-cat-icon { font-size: 24px; transition: var(--t); }
.ios-cat-pill .ios-cat-name { font-size: 11px; font-weight: 600; color: var(--text-secondary); transition: var(--t); }
.ios-cat-pill.active {
  background: var(--primary); border-color: var(--primary);
  box-shadow: 0 4px 16px var(--primary-glow); transform: translateY(-2px);
}
.ios-cat-pill.active .ios-cat-name { color: #fff; }
.ios-cat-pill:active { transform: scale(0.95); }

/* iOS Sub Pills */
.ios-sub-pills {
  display: flex; gap: 6px; overflow-x: auto; padding: 0 0 8px;
  scrollbar-width: none; margin-bottom: 4px;
}
.ios-sub-pills::-webkit-scrollbar { display: none; }
.ios-sub-pill {
  padding: 6px 14px; border-radius: 16px; font-size: 12px; font-weight: 500;
  cursor: pointer; white-space: nowrap; border: 0.5px solid var(--border);
  background: var(--glass); color: var(--text-secondary);
  font-family: inherit; transition: var(--t); flex-shrink: 0;
}
.ios-sub-pill.active {
  background: rgba(91,94,247,0.1); color: var(--primary);
  border-color: rgba(91,94,247,0.3); font-weight: 600;
}

/* iOS Banner Carousel */
.ios-banner-wrap {
  margin: 0 0 14px; border-radius: var(--r); overflow: hidden;
  position: relative; background: var(--glass);
  border: 0.5px solid var(--border); box-shadow: var(--shadow-sm);
}
.ios-banner-track {
  display: flex; overflow-x: auto; scroll-snap-type: x mandatory;
  scrollbar-width: none; -webkit-overflow-scrolling: touch;
}
.ios-banner-track::-webkit-scrollbar { display: none; }
.ios-banner-slide {
  min-width: 100%; scroll-snap-align: start; position: relative;
  height: 140px; cursor: pointer; flex-shrink: 0;
}
.ios-banner-slide img { width: 100%; height: 100%; object-fit: cover; }
.ios-banner-slide .ios-banner-title {
  position: absolute; bottom: 0; left: 0; right: 0;
  padding: 20px 16px 12px; font-size: 14px; font-weight: 700;
  color: #fff; background: linear-gradient(transparent, rgba(0,0,0,0.5));
}
.ios-banner-dots {
  display: flex; justify-content: center; gap: 6px; padding: 8px;
}
.ios-banner-dot {
  width: 6px; height: 6px; border-radius: 3px; background: var(--border);
  transition: var(--t);
}
.ios-banner-dot.active { width: 18px; background: var(--primary); }
.ios-banner-single {
  height: 120px; border-radius: var(--r); overflow: hidden; position: relative;
  cursor: pointer; margin-bottom: 14px; box-shadow: var(--shadow-sm);
}
.ios-banner-single img { width: 100%; height: 100%; object-fit: cover; }
.ios-banner-single .ios-banner-title {
  position: absolute; bottom: 0; left: 0; right: 0;
  padding: 20px 16px 12px; font-size: 14px; font-weight: 700;
  color: #fff; background: linear-gradient(transparent, rgba(0,0,0,0.5));
}

/* iOS Section Header */
.ios-section-header {
  display: flex; align-items: center; justify-content: space-between;
  margin: 18px 0 10px; padding: 0 2px;
}
.ios-section-title {
  font-size: 17px; font-weight: 700; color: var(--text);
  letter-spacing: -0.2px; display: flex; align-items: center; gap: 6px;
}
.ios-section-more {
  font-size: 13px; color: var(--primary); cursor: pointer; border: none;
  background: none; font-family: inherit; font-weight: 500;
  padding: 4px 8px; border-radius: 12px; transition: var(--t);
}
.ios-section-more:hover { background: rgba(91,94,247,0.06); }

/* iOS Sort Bar */
.ios-sort-bar {
  display: flex; align-items: center; gap: 6px; margin-bottom: 14px;
  padding: 4px; background: var(--glass); border-radius: 20px;
  border: 0.5px solid var(--border); display: inline-flex;
}
.ios-sort-pill {
  padding: 6px 14px; border-radius: 16px; font-size: 12px; font-weight: 500;
  cursor: pointer; border: none; background: none; color: var(--text-secondary);
  font-family: inherit; transition: var(--t); white-space: nowrap;
}
.ios-sort-pill.active {
  background: var(--bg-card); color: var(--text); font-weight: 600;
  box-shadow: var(--shadow-sm);
}

/* iOS Resource Card Enhancements */
.ios-resource-grid {
  display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px;
  padding-bottom: 80px;
}
@media (min-width: 600px) { .ios-resource-grid { grid-template-columns: repeat(3, 1fr); gap: 14px; } }
@media (min-width: 900px) { .ios-resource-grid { grid-template-columns: repeat(4, 1fr); gap: 16px; } }

.ios-resource-card {
  background: var(--bg-card); border-radius: var(--r); overflow: hidden;
  border: 0.5px solid var(--border); cursor: pointer;
  transition: var(--spring); box-shadow: var(--shadow-sm);
  will-change: transform; backface-visibility: hidden;
}
.ios-resource-card:hover { transform: translateY(-3px); box-shadow: var(--shadow-md); }
.ios-resource-card:active { transform: scale(0.97); }
.ios-card-media {
  height: 100px; display: flex; align-items: center; justify-content: center;
  position: relative; overflow: hidden;
}
.ios-card-media::after {
  content: ''; position: absolute; inset: 0;
  background: radial-gradient(ellipse at center, rgba(255,255,255,0.15) 0%, transparent 70%);
}
.ios-card-emoji { font-size: 38px; filter: drop-shadow(0 2px 4px rgba(0,0,0,0.1)); z-index: 1; }
.ios-card-badge {
  position: absolute; top: 8px; left: 8px; padding: 3px 8px; border-radius: 10px;
  font-size: 10px; font-weight: 600; background: rgba(0,0,0,0.2); color: #fff;
  backdrop-filter: blur(10px); border: 0.5px solid rgba(255,255,255,0.2); z-index: 1;
}
.ios-card-body { padding: 10px 12px 12px; }
.ios-card-title {
  font-size: 13px; font-weight: 600; color: var(--text); line-height: 1.4;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
  overflow: hidden; margin-bottom: 8px;
}
.ios-card-footer {
  display: flex; align-items: center; justify-content: space-between;
}
.ios-card-author {
  display: flex; align-items: center; gap: 5px; font-size: 11px; color: var(--text-secondary);
}
.ios-card-avatar {
  width: 18px; height: 18px; border-radius: 50%;
  background: linear-gradient(135deg, var(--primary-light), var(--accent));
  display: flex; align-items: center; justify-content: center;
  color: #fff; font-size: 9px; font-weight: 700; overflow: hidden; flex-shrink: 0;
}
.ios-card-avatar img { width: 100%; height: 100%; object-fit: cover; }
.ios-card-stats {
  display: flex; gap: 6px; font-size: 10px; color: var(--text-muted);
}
.ios-card-meta {
  font-size: 10px; color: var(--text-muted); margin-top: 6px;
  padding-top: 6px; border-top: 0.5px solid var(--border);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}

/* iOS H-Scroll Card Enhancements */
.ios-h-card {
  min-width: 140px; max-width: 160px; scroll-snap-align: start; flex-shrink: 0;
  padding: 14px; border-radius: var(--r); background: var(--glass);
  backdrop-filter: blur(20px) saturate(180%); border: 0.5px solid var(--border);
  cursor: pointer; transition: var(--spring); box-shadow: var(--shadow-sm);
}
.ios-h-card:hover { transform: translateY(-3px); box-shadow: var(--shadow-md); }
.ios-h-card:active { transform: scale(0.96); }
.ios-h-card .ios-h-img { font-size: 30px; text-align: center; margin-bottom: 8px; }
.ios-h-card .ios-h-title {
  font-size: 12px; font-weight: 600; color: var(--text); line-height: 1.3;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
  overflow: hidden; margin-bottom: 4px;
}
.ios-h-card .ios-h-meta { font-size: 10px; color: var(--text-muted); }

/* iOS Ad Section */
.ios-ad-section {
  margin: 0 0 14px; background: var(--glass); border-radius: var(--r);
  border: 0.5px solid var(--border); padding: 12px;
  backdrop-filter: blur(20px);
}
.ios-ad-header { display: flex; align-items: center; gap: 6px; margin-bottom: 10px; }
.ios-ad-header-icon { font-size: 14px; }
.ios-ad-header-text { font-size: 12px; font-weight: 600; color: var(--text-secondary); }
.ios-ad-scroll { display: flex; gap: 10px; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; }
.ios-ad-scroll::-webkit-scrollbar { display: none; }
.ios-ad-card {
  min-width: 250px; max-width: 320px; scroll-snap-align: start; flex-shrink: 0;
  border-radius: var(--r-sm); overflow: hidden; background: var(--bg-card);
  border: 0.5px solid var(--border); cursor: pointer; transition: var(--t);
}
.ios-ad-card:active { transform: scale(0.97); }
.ios-ad-media {
  height: 110px; display: flex; align-items: center; justify-content: center;
  overflow: hidden; background: linear-gradient(135deg, rgba(91,94,247,0.04), rgba(0,212,170,0.03));
}
.ios-ad-media img, .ios-ad-media video { width: 100%; height: 100%; object-fit: cover; }
.ios-ad-emoji { font-size: 40px; }
.ios-ad-body { padding: 10px 12px; }
.ios-ad-title { font-size: 13px; font-weight: 600; color: var(--text); }
.ios-ad-text { font-size: 11px; color: var(--text-muted); margin-top: 2px; }

/* iOS Checkin Bar */
.ios-checkin-bar {
  display: flex; align-items: center; justify-content: space-between;
  padding: 12px 16px; margin-bottom: 14px;
  background: linear-gradient(135deg, rgba(255,193,7,0.06), rgba(255,107,53,0.04));
  border-radius: var(--r); border: 0.5px solid rgba(255,193,7,0.12);
  backdrop-filter: blur(10px);
}
.ios-checkin-left { display: flex; align-items: center; gap: 8px; }
.ios-checkin-icon { font-size: 22px; }
.ios-checkin-info { display: flex; flex-direction: column; }
.ios-checkin-text { font-size: 13px; font-weight: 600; color: var(--text); }
.ios-checkin-streak { font-size: 11px; color: var(--text-muted); }
.ios-checkin-streak strong { color: var(--amber); font-weight: 700; }
.ios-checkin-btn {
  width: 32px; height: 32px; border-radius: 50%; border: none; font-size: 16px;
  cursor: pointer; font-family: inherit; transition: var(--t);
}
.ios-checkin-btn.done { background: linear-gradient(135deg, var(--green), #1DD1A1); color: #fff; }
.ios-checkin-btn.wait { background: linear-gradient(135deg, var(--amber), var(--orange)); color: #fff; }

/* iOS Trending Tags */
.ios-trending-tags {
  display: flex; gap: 8px; overflow-x: auto; padding: 0; margin-bottom: 8px;
  scrollbar-width: none;
}
.ios-trending-tags::-webkit-scrollbar { display: none; }
.ios-trending-tag {
  padding: 6px 14px; border-radius: 16px; font-size: 12px; font-weight: 500;
  cursor: pointer; white-space: nowrap; border: 0.5px solid var(--border);
  background: var(--glass); color: var(--text-secondary);
  font-family: inherit; transition: var(--t); flex-shrink: 0;
}
.ios-trending-tag.hot { background: linear-gradient(135deg, rgba(255,107,53,0.08), rgba(255,193,7,0.06)); border-color: rgba(255,107,53,0.2); color: var(--orange); font-weight: 600; }
.ios-trending-tag:active { transform: scale(0.95); }

/* iOS Recent Views */
.ios-recent-views {
  margin-bottom: 8px; display: flex; gap: 6px; overflow-x: auto;
  scrollbar-width: none; padding: 0 0 4px;
}
.ios-recent-views::-webkit-scrollbar { display: none; }
.ios-recent-item {
  display: flex; align-items: center; gap: 6px; padding: 6px 12px;
  border-radius: 16px; background: var(--glass); border: 0.5px solid var(--border);
  font-size: 11px; color: var(--text-secondary); cursor: pointer;
  white-space: nowrap; flex-shrink: 0; transition: var(--t); font-family: inherit;
}
.ios-recent-item:active { transform: scale(0.95); }
.ios-recent-item .ios-recent-emoji { font-size: 14px; }

/* Empty State */
.ios-empty {
  text-align: center; padding: 40px 20px; color: var(--text-muted);
}
.ios-empty-icon { font-size: 48px; margin-bottom: 8px; opacity: 0.6; }
.ios-empty-text { font-size: 14px; font-weight: 500; }

/* Loading Spinner */
.ios-loading {
  text-align: center; padding: 30px; color: var(--text-muted); font-size: 13px;
}
.ios-spinner {
  width: 24px; height: 24px; margin: 0 auto 8px;
  border: 2.5px solid var(--border); border-top-color: var(--primary);
  border-radius: 50%; animation: ios-spin 0.6s linear infinite;
}
@keyframes ios-spin { to { transform: rotate(360deg); } }

/* Shimmer Skeleton 骨架屏 */
.skeleton-card {
  background: var(--bg-card); border-radius: var(--r); overflow: hidden;
  padding: 16px; margin-bottom: 12px; border: 0.5px solid var(--border);
}
.skeleton-line {
  height: 14px; border-radius: 7px; margin-bottom: 8px;
  background: linear-gradient(90deg, var(--bg-secondary) 25%, var(--border) 50%, var(--bg-secondary) 75%);
  background-size: 200% 100%; animation: shimmer 1.5s ease-in-out infinite;
}
.skeleton-line.short { width: 60%; }
.skeleton-line.medium { width: 80%; }
.skeleton-avatar {
  width: 36px; height: 36px; border-radius: 50%; display: inline-block;
  background: linear-gradient(90deg, var(--bg-secondary) 25%, var(--border) 50%, var(--bg-secondary) 75%);
  background-size: 200% 100%; animation: shimmer 1.5s ease-in-out infinite;
}
@keyframes shimmer {
  0% { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}

/* Toast 改进动画 */
.ios-toast {
  animation: toastSlideUp 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}
@keyframes toastSlideUp {
  from { opacity: 0; transform: translate(-50%, 20px) scale(0.9); }
  to { opacity: 1; transform: translate(-50%, 0) scale(1); }
}

/* 卡片按压反馈 */
.ios-resource-card:active,
.ios-card:active {
  transform: scale(0.97);
  transition: transform 0.1s ease;
}

/* 按钮按压动画 */
.btn:active,
.ios-sort-pill:active,
.nav-user-btn:active,
.nav-login-btn:active {
  transform: scale(0.95);
  transition: transform 0.1s ease;
}

/* 平滑滚动 */
html { scroll-behavior: smooth; }
body { -webkit-overflow-scrolling: touch; }

/* 资源卡片入场动画 */
.ios-resource-card {
  animation: cardSlideIn 0.3s ease-out backwards;
}
.ios-resource-card:nth-child(1) { animation-delay: 0.02s; }
.ios-resource-card:nth-child(2) { animation-delay: 0.04s; }
.ios-resource-card:nth-child(3) { animation-delay: 0.06s; }
.ios-resource-card:nth-child(4) { animation-delay: 0.08s; }
.ios-resource-card:nth-child(5) { animation-delay: 0.10s; }
.ios-resource-card:nth-child(6) { animation-delay: 0.12s; }
.ios-resource-card:nth-child(7) { animation-delay: 0.14s; }
.ios-resource-card:nth-child(8) { animation-delay: 0.16s; }
@keyframes cardSlideIn {
  from { opacity: 0; transform: translateY(16px); }
  to { opacity: 1; transform: translateY(0); }
}

/* 统计数字动画 */
.ios-stat-num {
  transition: color 0.3s ease;
}

/* 暗色模式适配 */
:root.dark .ios-hero {
  background: linear-gradient(135deg, #2D2B55 0%, #1E1B4B 40%, #312E81 70%, #1E1B4B 100%);
}
:root.dark .ios-search { background: rgba(255,255,255,0.1); border-color: rgba(255,255,255,0.1); }
:root.dark .ios-search-btn { background: rgba(255,255,255,0.9); }
:root.dark .ios-sort-pill.active { background: var(--bg-card); }
:root.dark .ios-stat-card { background: var(--glass-heavy); }

/* ============================================
   iOS 全局按钮/组件优化 v5.0
   ============================================ */

/* iOS 全站椭圆按钮 */
button, .btn, .pill, .tag {
  font-family: inherit;
  transition: all 0.2s cubic-bezier(0.25, 0.1, 0.25, 1);
}

/* 导航栏 iOS 风格 */
.mobile-tab-bar {
  border-radius: 28px 28px 0 0 !important;
  padding: 6px 8px calc(env(safe-area-inset-bottom, 0px) + 6px) !important;
}
.mobile-tab-item {
  border-radius: 20px !important;
  padding: 8px 14px !important;
  font-size: 12px !important;
  font-weight: 600 !important;
  transition: all 0.3s cubic-bezier(0.25, 0.1, 0.25, 1) !important;
}
.mobile-tab-item.active {
  background: var(--primary) !important;
  color: #fff !important;
  transform: scale(1.05);
  box-shadow: 0 4px 16px var(--primary-glow);
}

/* iOS 顶部导航 */
.top-nav {
  backdrop-filter: blur(30px) saturate(180%);
  -webkit-backdrop-filter: blur(30px) saturate(180%);
  border-bottom: 0.5px solid var(--border);
  padding: 8px 16px;
}
.top-nav-btn {
  border-radius: 20px;
  padding: 6px 14px;
  font-size: 13px;
  font-weight: 600;
  background: var(--glass);
  border: 0.5px solid var(--border);
  transition: var(--spring);
}
.top-nav-btn:active { transform: scale(0.95); }

/* 通知按钮 */
.notif-btn {
  width: 36px; height: 36px; border-radius: 50%;
  background: var(--glass); border: 0.5px solid var(--border);
  display: flex; align-items: center; justify-content: center;
  font-size: 16px; cursor: pointer; position: relative;
}

/* 主题切换按钮 */
.theme-toggle {
  width: 36px; height: 36px; border-radius: 50%;
  background: var(--glass); border: 0.5px solid var(--border);
  display: flex; align-items: center; justify-content: center;
  font-size: 16px; cursor: pointer;
}

/* 用户头像按钮 */
.user-avatar-btn {
  border-radius: 20px;
  padding: 5px 12px 5px 5px;
  background: var(--glass);
  border: 0.5px solid var(--border);
  display: flex; align-items: center; gap: 6px;
  font-size: 13px; font-weight: 600; cursor: pointer;
  transition: var(--spring);
}
.user-avatar-btn:active { transform: scale(0.95); }
.user-avatar-img {
  width: 28px; height: 28px; border-radius: 50%;
  object-fit: cover; flex-shrink: 0;
}

/* iOS 管理后台面板按钮 */
.admin-tab-btn {
  padding: 8px 16px; border-radius: 20px;
  font-size: 13px; font-weight: 600; cursor: pointer;
  border: 0.5px solid var(--border);
  background: var(--glass);
  color: var(--text-secondary);
  transition: var(--spring); white-space: nowrap;
}
.admin-tab-btn.active {
  background: var(--primary); color: #fff;
  border-color: var(--primary);
  box-shadow: 0 2px 12px var(--primary-glow);
}

/* iOS 操作按钮 */
.btn-ios {
  padding: 10px 20px; border-radius: 22px;
  font-size: 14px; font-weight: 600; cursor: pointer;
  border: none; transition: var(--spring);
  display: inline-flex; align-items: center; gap: 6px;
}
.btn-ios-primary {
  background: var(--primary); color: #fff;
  box-shadow: 0 4px 16px var(--primary-glow);
}
.btn-ios-primary:active { transform: scale(0.95); }
.btn-ios-secondary {
  background: var(--glass); color: var(--text);
  border: 0.5px solid var(--border);
}
.btn-ios-danger {
  background: var(--red); color: #fff;
  box-shadow: 0 4px 12px rgba(239,68,68,0.2);
}

/* iOS 分段控制器 */
.ios-segmented {
  display: inline-flex; background: var(--glass);
  border-radius: 20px; padding: 3px;
  border: 0.5px solid var(--border);
}
.ios-segment {
  padding: 6px 16px; border-radius: 17px;
  font-size: 12px; font-weight: 500; cursor: pointer;
  border: none; background: none; color: var(--text-secondary);
  white-space: nowrap; transition: var(--t);
}
.ios-segment.active {
  background: var(--bg-card); color: var(--text);
  font-weight: 600; box-shadow: var(--shadow-sm);
}

/* iOS 卡片增强 */
.card-ios {
  background: var(--bg-card); border-radius: 16px;
  border: 0.5px solid var(--border);
  box-shadow: var(--shadow-sm); overflow: hidden;
  transition: var(--spring);
}
.card-ios:hover { transform: translateY(-2px); box-shadow: var(--shadow-md); }
.card-ios:active { transform: scale(0.98); }

/* iOS 弹窗 */
.ios-sheet-overlay {
  position: fixed; inset: 0; z-index: 2000;
  background: rgba(0,0,0,0.3);
  backdrop-filter: blur(4px);
  display: flex; align-items: flex-end; justify-content: center;
}
.ios-sheet {
  background: var(--bg-card); border-radius: 20px 20px 0 0;
  padding: 20px 20px calc(env(safe-area-inset-bottom, 0px) + 20px);
  width: 100%; max-width: 500px; max-height: 80vh;
  overflow-y: auto; box-shadow: 0 -4px 24px rgba(0,0,0,0.1);
}
.ios-sheet-handle {
  width: 36px; height: 5px; border-radius: 3px;
  background: var(--border); margin: 0 auto 16px;
}

/* iOS Toast */
.ios-toast {
  position: fixed; top: 60px; left: 50%; transform: translateX(-50%);
  z-index: 3000; padding: 12px 28px; border-radius: 20px;
  background: rgba(0,0,0,0.85); color: #fff;
  backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px);
  font-size: 16px; font-weight: 600;
  box-shadow: 0 4px 20px rgba(0,0,0,0.2);
  animation: ios-toast-in 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);
  pointer-events: none; white-space: nowrap;
}
.ios-toast-large { font-size: 18px; padding: 14px 32px; }
@keyframes ios-toast-in {
  from { opacity: 0; transform: translateX(-50%) translateY(-10px); }
  to { opacity: 1; transform: translateX(-50%) translateY(0); }
}

/* 暗色模式补充 */
:root.dark .ios-sheet { background: var(--bg-card); }
:root.dark .ios-toast { background: rgba(30,30,40,0.95); }
:root.dark .btn-ios-secondary { background: var(--glass); }
:root.dark .ios-segment.active { background: var(--bg-card); }
:root.dark .admin-tab-btn { background: var(--glass); }
:root.dark .top-nav-btn { background: var(--glass); }
:root.dark .user-avatar-btn { background: var(--glass); }

/* ============================================
   iOS 公告栏 + 广告优化 v6.0
   ============================================ */

/* ============================================
   公告系统 — 紧凑跑马灯风格
   ============================================ */

/* iOS 公告跑马灯 */
.ios-announce-ticker {
  margin: 6px 16px 8px;
  background: linear-gradient(135deg, rgba(91,94,247,0.06), rgba(0,212,170,0.04));
  border: 0.5px solid var(--border);
  border-radius: 10px;
  overflow: hidden;
  height: 32px;
}
.ios-announce-ticker-inner {
  display: flex;
  align-items: center;
  height: 100%;
  padding: 0 10px;
  gap: 8px;
}
.ios-announce-ticker-icon {
  flex-shrink: 0;
  font-size: 14px;
  line-height: 1;
}
.ios-announce-ticker-text {
  flex: 1;
  overflow: hidden;
  white-space: nowrap;
  position: relative;
}
.ios-announce-ticker-item {
  display: inline-block;
  padding-right: 40px;
  font-size: 12px;
  color: var(--text-secondary);
  animation: ticker-scroll 10s linear infinite;
}
.ios-announce-ticker-item:nth-child(1) { animation-delay: 0s; }
.ios-announce-ticker-item:nth-child(2) { animation-delay: 5s; }
.ios-announce-ticker-item:nth-child(3) { animation-delay: 10s; }
.ios-announce-ticker-item:nth-child(4) { animation-delay: 15s; }
.ios-announce-ticker-item:nth-child(5) { animation-delay: 20s; }
@keyframes ticker-scroll {
  0% { transform: translateX(0); opacity: 0; }
  5% { opacity: 1; }
  45% { opacity: 1; }
  50% { transform: translateX(-100%); opacity: 0; }
  100% { transform: translateX(-100%); opacity: 0; }
}

/* ============================================
   音乐播放卡片 — 显示在「我的」页面
   ============================================ */
.music-player-card {
  margin: 12px 16px;
  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
  border-radius: 16px;
  overflow: hidden;
  box-shadow: 0 4px 20px rgba(102, 126, 234, 0.25);
}
.music-player-card-inner {
  display: flex;
  align-items: center;
  padding: 14px 16px;
  gap: 12px;
}
.music-player-visual {
  flex-shrink: 0;
  width: 44px;
  height: 44px;
  background: rgba(255,255,255,0.15);
  border-radius: 12px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.music-player-visualizer {
  display: flex;
  align-items: flex-end;
  gap: 2px;
  height: 20px;
}
.music-player-visualizer span {
  width: 3px;
  background: rgba(255,255,255,0.7);
  border-radius: 2px;
  transition: height 0.3s;
}
.music-player-visualizer.playing span {
  animation: visualize 1.2s ease-in-out infinite;
}
.music-player-visualizer.playing span:nth-child(1) { animation-delay: 0s; }
.music-player-visualizer.playing span:nth-child(2) { animation-delay: 0.2s; }
.music-player-visualizer.playing span:nth-child(3) { animation-delay: 0.4s; }
.music-player-visualizer.playing span:nth-child(4) { animation-delay: 0.6s; }
.music-player-visualizer.playing span:nth-child(5) { animation-delay: 0.8s; }
.music-player-visualizer span:nth-child(1) { height: 8px; }
.music-player-visualizer span:nth-child(2) { height: 14px; }
.music-player-visualizer span:nth-child(3) { height: 20px; }
.music-player-visualizer span:nth-child(4) { height: 14px; }
.music-player-visualizer span:nth-child(5) { height: 8px; }
@keyframes visualize {
  0%, 100% { transform: scaleY(1); }
  50% { transform: scaleY(0.3); }
}
.music-player-info {
  flex: 1;
  min-width: 0;
}
.music-player-title {
  font-size: 14px;
  font-weight: 600;
  color: #fff;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.music-player-status {
  font-size: 11px;
  color: rgba(255,255,255,0.7);
  margin-top: 2px;
}
.music-player-actions {
  display: flex;
  gap: 6px;
  flex-shrink: 0;
}
.music-player-btn {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  border: none;
  background: rgba(255,255,255,0.2);
  color: #fff;
  font-size: 16px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all 0.2s;
  backdrop-filter: blur(10px);
}
.music-player-btn:active {
  background: rgba(255,255,255,0.35);
  transform: scale(0.92);
}

/* iOS 广告优化 — 更紧凑、更优雅 */
.ios-ad-section {
  margin: 0 16px 14px;
  background: linear-gradient(135deg, rgba(91,94,247,0.03), rgba(0,212,170,0.02));
  border-radius: 16px;
  border: 0.5px solid var(--border);
  padding: 10px 0 10px 14px;
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
}
.ios-ad-header {
  display: flex; align-items: center; gap: 6px;
  margin-bottom: 8px; padding-right: 14px;
}
.ios-ad-header-icon {
  font-size: 13px; background: linear-gradient(135deg, var(--accent), var(--accent2));
  -webkit-background-clip: text; -webkit-text-fill-color: transparent;
  background-clip: text;
}
.ios-ad-header-text {
  font-size: 11px; font-weight: 600; color: var(--text-muted);
  text-transform: uppercase; letter-spacing: 0.5px;
}
.ios-ad-scroll {
  display: flex; gap: 10px; overflow-x: auto;
  scroll-snap-type: x mandatory; scrollbar-width: none;
  padding-right: 14px;
}
.ios-ad-scroll::-webkit-scrollbar { display: none; }
.ios-ad-card {
  min-width: 240px; max-width: 300px; scroll-snap-align: start; flex-shrink: 0;
  border-radius: 14px; overflow: hidden;
  background: var(--bg-card);
  border: 0.5px solid var(--border);
  cursor: pointer; transition: var(--spring);
  box-shadow: 0 2px 8px rgba(0,0,0,0.04);
}
.ios-ad-card:hover { transform: translateY(-3px); box-shadow: 0 6px 20px rgba(0,0,0,0.08); }
.ios-ad-card:active { transform: scale(0.97); }
.ios-ad-media {
  height: 100px; display: flex; align-items: center; justify-content: center;
  overflow: hidden; position: relative;
}
.ios-ad-media::after {
  content: ''; position: absolute; inset: 0;
  background: linear-gradient(180deg, transparent 60%, rgba(0,0,0,0.03) 100%);
  pointer-events: none;
}
.ios-ad-media img, .ios-ad-media video {
  width: 100%; height: 100%; object-fit: cover;
}
.ios-ad-emoji { font-size: 36px; filter: drop-shadow(0 2px 4px rgba(0,0,0,0.08)); }
.ios-ad-body { padding: 8px 12px 10px; }
.ios-ad-title {
  font-size: 13px; font-weight: 600; color: var(--text);
  display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical;
  overflow: hidden;
}
.ios-ad-text {
  font-size: 11px; color: var(--text-muted); margin-top: 3px;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
  overflow: hidden;
}

/* 暗色模式 */
:root.dark .ios-ad-section {
  background: linear-gradient(135deg, rgba(91,94,247,0.04), rgba(0,212,170,0.02));
}
:root.dark .ios-announce-ticker {
  background: linear-gradient(135deg, rgba(91,94,247,0.06), rgba(139,92,246,0.03)) !important;
}

/* ============================================
   iOS 聊天界面
   ============================================ */
.ios-chat-sheet { border-radius: var(--r-xl) var(--r-xl) 0 0 !important; }
.ios-chat-header {
  display: flex; align-items: center; gap: 12px; padding: 12px 16px;
  border-bottom: 0.5px solid var(--border);
  background: var(--glass-heavy); backdrop-filter: blur(30px);
  -webkit-backdrop-filter: blur(30px);
}
.ios-chat-back {
  font-size: 14px; color: var(--primary); background: none; border: none;
  cursor: pointer; padding: 4px 8px; border-radius: 8px;
  transition: var(--t);
}
.ios-chat-back:active { background: var(--glass); }
.ios-chat-header-info { display: flex; align-items: center; gap: 10px; flex: 1; }
.ios-chat-name { font-size: 15px; font-weight: 700; color: var(--text); }
.ios-chat-status { font-size: 11px; color: var(--green); }
.ios-chat-body { background: var(--bg-secondary); }
.ios-chat-msg { display: flex; flex-direction: column; max-width: 90%; }
.ios-chat-msg.is-me { align-self: flex-end; align-items: flex-end; }
.ios-chat-msg.is-other { align-self: flex-start; align-items: flex-start; }
.ios-chat-msg-sender {
  font-size: 11px; margin-bottom: 3px; font-weight: 600;
  display: flex; align-items: center; gap: 3px;
}
.ios-chat-bubble {
  padding: 10px 16px; border-radius: 20px; font-size: 14px;
  line-height: 1.5; word-break: break-word; white-space: pre-wrap; max-width: 100%;
}
.bubble-me {
  background: linear-gradient(135deg, var(--primary), var(--primary-dark));
  color: #fff; border-bottom-right-radius: 4px;
}
.bubble-other {
  background: var(--glass); border: 0.5px solid var(--border);
  border-bottom-left-radius: 4px; color: var(--text);
}
.ios-chat-msg-time { font-size: 10px; color: var(--text-muted); margin-top: 3px; }
.ios-chat-input-bar {
  display: flex; align-items: center; gap: 8px; padding: 8px 12px;
  border-top: 0.5px solid var(--border);
  background: var(--glass-heavy); backdrop-filter: blur(30px);
}
.ios-chat-input {
  flex: 1; padding: 10px 16px; border-radius: 20px; border: 0.5px solid var(--border);
  font-size: 14px; font-family: inherit; outline: none;
  background: var(--bg); color: var(--text);
}
.ios-chat-input:focus { border-color: var(--primary); }
.ios-chat-send-btn {
  width: 40px; height: 40px; border-radius: 50%; border: none;
  background: linear-gradient(135deg, var(--primary), var(--primary-dark));
  color: #fff; cursor: pointer; display: flex; align-items: center; justify-content: center;
  transition: var(--t); flex-shrink: 0;
}
.ios-chat-send-btn:active { transform: scale(0.92); opacity: 0.8; }

/* 聊天图片按钮 */
.ios-chat-img-btn {
  width: 36px; height: 36px; border-radius: 50%; border: none;
  background: var(--glass); color: var(--text-muted);
  cursor: pointer; display: flex; align-items: center; justify-content: center;
  transition: var(--t); flex-shrink: 0;
}
.ios-chat-img-btn:active { background: var(--primary); color: #fff; }
.chat-image { transition: transform 0.2s; }
.chat-image:active { transform: scale(0.95); }

/* ============================================
   封禁弹窗
   ============================================ */
.ban-day-btn {
  padding: 6px 8px !important; font-size: 12px !important;
  border-radius: 10px !important; border: 0.5px solid var(--border) !important;
  background: var(--bg) !important; color: var(--text) !important;
  cursor: pointer; transition: var(--t);
}
.ban-day-btn.active {
  background: var(--primary) !important; color: #fff !important;
  border-color: var(--primary) !important;
}

/* 认证蓝色名字 */
.cert-name-blue { color: #3b82f6 !important; font-weight: 700 !important; }
.cert-name-gold { color: #f59e0b !important; font-weight: 700 !important; }
.cert-name-red { color: #FF4757 !important; font-weight: 700 !important; }

/* 认证标识 */
.cert-badge-official {
  display: inline-block; background: #3b82f6; color: #fff;
  font-size: 9px; padding: 1px 5px; border-radius: 6px;
  margin-left: 4px; font-weight: 700;
}
.cert-badge-vip {
  display: inline-block; background: #f59e0b; color: #fff;
  font-size: 9px; padding: 1px 5px; border-radius: 6px;
  margin-left: 4px; font-weight: 700;
}
.cert-badge-owner {
  display: inline-block; background: #FF4757; color: #fff;
  font-size: 9px; padding: 1px 5px; border-radius: 6px;
  margin-left: 4px; font-weight: 700;
}

/* 发现页增强 */
.discover-search { transition: all 0.2s; }
.discover-search:active { transform: scale(0.98); background: var(--bg-secondary); }
.discover-section-title { margin-bottom: 12px; }
.discover-circle-item { transition: transform 0.15s; }
.discover-circle-item:active { transform: scale(0.92); }
.discover-card-item { transition: all 0.15s; }
.discover-card-item:active { transform: scale(0.97); background: var(--bg-secondary); }

/* ============================================
   美化优化 v2.0 — 交互动效 & 视觉增强
   ============================================ */

/* 页面过渡动画 */
.page-container { animation: pageFadeIn 0.35s cubic-bezier(0.25, 0.1, 0.25, 1); }
@keyframes pageFadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }

/* 空状态增强 */
.empty-state {
  padding: 48px 20px; text-align: center;
  background: var(--glass); border-radius: var(--r);
  border: 0.5px dashed var(--border); margin: 16px 0;
  transition: var(--t);
}
.empty-state:hover { border-color: var(--primary); border-style: solid; }
.empty-icon { font-size: 52px; opacity: 0.5; animation: emptyFloat 3s ease-in-out infinite; }
@keyframes emptyFloat { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-6px); } }
.empty-text { font-size: 14px; color: var(--text-muted); margin-bottom: 6px; }
.empty-hint { font-size: 12px; color: var(--text-muted); opacity: 0.7; }

/* 卡片悬停效果增强 */
.resource-card, .card-item, .leaderboard-item, .admin-user-card {
  transition: transform 0.2s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.2s ease;
}
.resource-card:hover, .card-item:hover {
  transform: translateY(-3px);
  box-shadow: 0 8px 25px rgba(91,94,247,0.08), 0 2px 8px rgba(0,0,0,0.04);
}

/* 按钮交互反馈增强 */
button:not(.sheet-btn):not(.report-sheet-btn):not(.ios-chat-send-btn):active {
  transform: scale(0.96); transition: transform 0.1s;
}
.btn { transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1); }
.btn:hover { filter: brightness(1.05); }
.btn:active { transform: scale(0.96); filter: brightness(0.95); }

/* 骨架屏加载动画 */
@keyframes skeletonPulse {
  0%, 100% { opacity: 0.4; }
  50% { opacity: 0.7; }
}
.skeleton, .skeleton-text, .skeleton-avatar, .skeleton-card, .skeleton-image {
  animation: skeletonPulse 1.5s ease-in-out infinite;
}

/* 消息列表项增强 */
.msg-conv-item {
  transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
  cursor: pointer;
}
.msg-conv-item:hover { background: var(--glass); transform: translateX(4px); }
.msg-conv-item:active { transform: scale(0.98); }

/* 管理面板卡片增强 */
.admin-menu-item {
  transition: transform 0.2s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.2s ease;
  cursor: pointer;
}
.admin-menu-item:hover {
  transform: translateY(-2px);
  box-shadow: 0 6px 20px rgba(91,94,247,0.08);
}
.admin-menu-item:active { transform: scale(0.97); }

/* 通知项增强 */
.notif-item {
  transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
}
.notif-item:hover { background: var(--glass); border-radius: var(--r-sm); }
.notif-item:active { transform: scale(0.98); }

/* 发现页圈子卡片增强 */
.discover-circle-item {
  transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.25s ease;
}
.discover-circle-item:hover {
  transform: translateY(-3px);
  box-shadow: 0 8px 24px rgba(91,94,247,0.1);
}

/* 底部导航栏激活过渡 */
.mobile-tab-item {
  transition: color 0.25s ease, transform 0.2s cubic-bezier(0.4, 0, 0.2, 1);
}
.mobile-tab-item.active { transform: translateY(-1px); }
.mobile-tab-item:active:not(.active) { transform: scale(0.9); }

/* Toast 动画增强 */
.toast {
  animation: toastSlideIn 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}
@keyframes toastSlideIn {
  from { opacity: 0; transform: translateX(-50%) translateY(-12px) scale(0.9); }
  to { opacity: 1; transform: translateX(-50%) translateY(0) scale(1); }
}

/* 图片加载占位 */
img[src=""] { visibility: hidden; }
img:not([src]), img[src=""] { background: var(--glass); min-height: 100px; }

/* 滚动条美化 */
::-webkit-scrollbar { width: 4px; height: 4px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: var(--border); border-radius: 2px; }
::-webkit-scrollbar-thumb:hover { background: var(--text-muted); }

/* 输入框聚焦效果增强 */
input:focus, textarea:focus, select:focus {
  box-shadow: 0 0 0 3px rgba(91,94,247,0.08);
  outline: none;
}

/* 链接悬停效果 */
a { transition: color 0.2s ease; }
a:hover { color: var(--primary); }

/* 管理后台表格行悬停 */
.audit-card:hover {
  background: var(--glass);
  border-color: var(--primary);
  transition: all 0.2s ease;
}

/* 评论项悬停 */
.comment-item:hover {
  background: var(--glass);
  border-radius: var(--r-sm);
  transition: all 0.2s ease;
}

/* 朋友圈卡片悬停 */
.moments-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 24px rgba(91,94,247,0.06);
  transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
}

/* 响应式微调 */
@media (max-width: 480px) {
  .sheet-content { max-height: 70vh; }
  .section-header { margin: 16px 0 10px; }
  .section-title { font-size: 16px; }
  .empty-state { padding: 36px 16px; }
  .empty-icon { font-size: 42px; }
}

/* ============================================
   增强系统 v3.0 — 全面视觉与交互增强
   Enhanced UI System · Buttons · Cards · Badges · Timeline · Progress
   ============================================ */

/* ============================================
   1. 页面过渡动画系统
   ============================================ */

/* 页面容器淡入 */
.page-container {
  animation: pageFadeIn 0.35s cubic-bezier(0.25, 0.1, 0.25, 1);
}
@keyframes pageFadeIn {
  from { opacity: 0; transform: translateY(10px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* 页面切换滑入变体 */
.page-slide-in {
  animation: pageSlideIn 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}
@keyframes pageSlideIn {
  from { opacity: 0; transform: translateY(20px) scale(0.98); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}

/* 页面离开动画 */
.page-exit {
  animation: pageFadeOut 0.25s ease forwards;
}
@keyframes pageFadeOut {
  from { opacity: 1; transform: translateY(0); }
  to   { opacity: 0; transform: translateY(-10px); }
}

/* 交错入场 — 子元素依次淡入 */
.stagger-in > * {
  opacity: 0;
  animation: staggerItem 0.5s cubic-bezier(0.25, 0.1, 0.25, 1) forwards;
}
.stagger-in > *:nth-child(1)  { animation-delay: 0.05s; }
.stagger-in > *:nth-child(2)  { animation-delay: 0.10s; }
.stagger-in > *:nth-child(3)  { animation-delay: 0.15s; }
.stagger-in > *:nth-child(4)  { animation-delay: 0.20s; }
.stagger-in > *:nth-child(5)  { animation-delay: 0.25s; }
.stagger-in > *:nth-child(6)  { animation-delay: 0.30s; }
.stagger-in > *:nth-child(7)  { animation-delay: 0.35s; }
.stagger-in > *:nth-child(8)  { animation-delay: 0.40s; }
.stagger-in > *:nth-child(9)  { animation-delay: 0.45s; }
.stagger-in > *:nth-child(10) { animation-delay: 0.50s; }
@keyframes staggerItem {
  from { opacity: 0; transform: translateY(12px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* 模态/弹窗入场 */
.modal-enter {
  animation: modalEnter 0.35s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}
@keyframes modalEnter {
  from { opacity: 0; transform: scale(0.92); }
  to   { opacity: 1; transform: scale(1); }
}
.modal-exit {
  animation: modalExit 0.2s ease forwards;
}
@keyframes modalExit {
  from { opacity: 1; transform: scale(1); }
  to   { opacity: 0; transform: scale(0.92); }
}

/* 视图切换过渡组 */
.view-transition {
  transition: opacity 0.3s ease, transform 0.3s cubic-bezier(0.25, 0.1, 0.25, 1);
}
.view-transition.hidden {
  opacity: 0; transform: translateY(8px); pointer-events: none;
}

/* ============================================
   2. 增强按钮系统
   ============================================ */

/* 圆角按钮 */
.btn-rounded {
  padding: 12px 28px;
  border-radius: 50px;
  font-size: 14px; font-weight: 600;
  border: none; cursor: pointer;
  font-family: inherit;
  background: var(--primary);
  color: #fff;
  box-shadow: 0 4px 14px var(--primary-glow);
  transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
}
.btn-rounded:hover {
  transform: translateY(-2px);
  box-shadow: 0 6px 24px var(--primary-glow);
}
.btn-rounded:active { transform: scale(0.96); }

/* 圆角描边按钮 */
.btn-rounded-outline {
  padding: 12px 28px;
  border-radius: 50px;
  font-size: 14px; font-weight: 600;
  border: 1.5px solid var(--primary);
  cursor: pointer; font-family: inherit;
  background: transparent;
  color: var(--primary);
  transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
}
.btn-rounded-outline:hover {
  background: var(--primary);
  color: #fff;
  box-shadow: 0 4px 14px var(--primary-glow);
}
.btn-rounded-outline:active { transform: scale(0.96); }

/* 渐变按钮 */
.btn-gradient {
  padding: 12px 28px;
  border-radius: 50px;
  font-size: 14px; font-weight: 600;
  border: none; cursor: pointer;
  font-family: inherit;
  background: linear-gradient(135deg, var(--primary), var(--purple));
  color: #fff;
  box-shadow: 0 4px 16px rgba(91,94,247,0.35);
  transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
  position: relative;
  overflow: hidden;
}
.btn-gradient::before {
  content: '';
  position: absolute; inset: 0;
  background: linear-gradient(135deg, var(--purple), var(--primary));
  opacity: 0; transition: opacity 0.3s ease;
}
.btn-gradient:hover::before { opacity: 1; }
.btn-gradient:hover {
  transform: translateY(-2px);
  box-shadow: 0 6px 24px rgba(91,94,247,0.45);
}
.btn-gradient:active { transform: scale(0.96); }
.btn-gradient span { position: relative; z-index: 1; }

/* 渐变描边按钮 */
.btn-gradient-outline {
  padding: 12px 28px;
  border-radius: 50px;
  font-size: 14px; font-weight: 600;
  border: none; cursor: pointer;
  font-family: inherit;
  background: var(--bg-card);
  color: var(--primary);
  position: relative;
  z-index: 0;
  transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
}
.btn-gradient-outline::before {
  content: '';
  position: absolute; inset: -2px;
  border-radius: 52px;
  background: linear-gradient(135deg, var(--primary), var(--purple), var(--accent));
  z-index: -1;
  transition: opacity 0.3s ease;
}
.btn-gradient-outline::after {
  content: '';
  position: absolute; inset: 1px;
  border-radius: 51px;
  background: var(--bg-card);
  z-index: -1;
}
.btn-gradient-outline:hover {
  transform: translateY(-2px);
  box-shadow: 0 6px 20px rgba(91,94,247,0.25);
}
.btn-gradient-outline:active { transform: scale(0.96); }

/* 悬浮按钮 (FAB) */
.btn-float {
  position: fixed; bottom: 100px; right: 20px; z-index: 90;
  width: 56px; height: 56px;
  border-radius: 50%;
  border: none; cursor: pointer;
  background: linear-gradient(135deg, var(--primary), var(--primary-dark));
  color: #fff;
  font-size: 24px;
  display: flex; align-items: center; justify-content: center;
  box-shadow: 0 6px 20px var(--primary-glow);
  transition: all 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}
.btn-float:hover {
  transform: translateY(-4px) scale(1.05);
  box-shadow: 0 10px 30px rgba(91,94,247,0.45);
}
.btn-float:active {
  transform: translateY(-1px) scale(0.95);
}

/* 悬浮按钮 - 次要 */
.btn-float-secondary {
  position: fixed; bottom: 170px; right: 20px; z-index: 90;
  width: 48px; height: 48px;
  border-radius: 50%;
  border: 0.5px solid var(--border);
  cursor: pointer;
  background: var(--glass-heavy);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  color: var(--text);
  font-size: 20px;
  display: flex; align-items: center; justify-content: center;
  box-shadow: var(--shadow-md);
  transition: all 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}
.btn-float-secondary:hover {
  transform: translateY(-3px) scale(1.05);
  box-shadow: var(--shadow-lg);
}
.btn-float-secondary:active { transform: scale(0.95); }

/* 脉冲按钮 */
.btn-pulse {
  padding: 12px 28px;
  border-radius: 50px;
  font-size: 14px; font-weight: 600;
  border: none; cursor: pointer;
  font-family: inherit;
  background: var(--primary);
  color: #fff;
  position: relative;
  box-shadow: 0 4px 14px var(--primary-glow);
  transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
}
.btn-pulse::after {
  content: '';
  position: absolute; inset: -4px;
  border-radius: 54px;
  border: 2px solid var(--primary);
  animation: btnPulse 2s ease-out infinite;
  opacity: 0;
}
@keyframes btnPulse {
  0%   { opacity: 0.6; transform: scale(1); }
  100% { opacity: 0; transform: scale(1.3); }
}
.btn-pulse:hover { transform: translateY(-2px); }
.btn-pulse:active { transform: scale(0.96); }

/* 按钮尺寸变体 */
.btn-sm {
  padding: 6px 14px; font-size: 12px; border-radius: 14px;
}
.btn-lg {
  padding: 14px 36px; font-size: 16px; border-radius: 56px;
}

/* 按钮颜色变体 */
.btn-accent {
  background: var(--accent); color: #fff;
  box-shadow: 0 4px 14px var(--accent-glow);
}
.btn-accent:hover { box-shadow: 0 6px 24px var(--accent-glow); }
.btn-red {
  background: var(--red); color: #fff;
  box-shadow: 0 4px 14px rgba(255,71,87,0.3);
}
.btn-red:hover { box-shadow: 0 6px 24px rgba(255,71,87,0.4); }
.btn-green {
  background: var(--green); color: #fff;
  box-shadow: 0 4px 14px rgba(46,213,115,0.3);
}
.btn-green:hover { box-shadow: 0 6px 24px rgba(46,213,115,0.4); }
.btn-orange {
  background: var(--orange); color: #fff;
  box-shadow: 0 4px 14px rgba(255,107,53,0.3);
}
.btn-orange:hover { box-shadow: 0 6px 24px rgba(255,107,53,0.4); }
.btn-purple {
  background: var(--purple); color: #fff;
  box-shadow: 0 4px 14px rgba(168,85,247,0.3);
}
.btn-purple:hover { box-shadow: 0 6px 24px rgba(168,85,247,0.4); }

/* 图标按钮 */
.btn-icon {
  width: 40px; height: 40px;
  border-radius: 50%;
  border: 0.5px solid var(--border);
  background: var(--glass);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  cursor: pointer;
  font-size: 18px;
  display: flex; align-items: center; justify-content: center;
  color: var(--text-secondary);
  transition: all 0.2s ease;
  font-family: inherit;
}
.btn-icon:hover {
  background: var(--glass-heavy);
  color: var(--primary);
  border-color: var(--primary);
}
.btn-icon:active { transform: scale(0.92); }

/* 按钮加载状态 */
.btn-loading {
  position: relative; pointer-events: none; opacity: 0.7;
}
.btn-loading::after {
  content: '';
  width: 16px; height: 16px;
  border: 2px solid transparent;
  border-top-color: currentColor;
  border-radius: 50%;
  animation: spin 0.6s linear infinite;
  display: inline-block;
  margin-left: 8px;
  vertical-align: middle;
}
@keyframes spin {
  to { transform: rotate(360deg); }
}

/* 按钮组 */
.btn-group {
  display: inline-flex; gap: 0;
  border-radius: 50px;
  overflow: hidden;
  border: 0.5px solid var(--border);
}
.btn-group .btn,
.btn-group button {
  border-radius: 0; border: none;
  border-right: 0.5px solid var(--border);
  padding: 10px 20px;
  font-size: 13px; font-weight: 500;
  background: var(--glass);
  color: var(--text-secondary);
  cursor: pointer;
  font-family: inherit;
  transition: all 0.2s ease;
}
.btn-group .btn:last-child,
.btn-group button:last-child {
  border-right: none;
}
.btn-group .btn.active,
.btn-group button.active {
  background: var(--primary);
  color: #fff;
}
.btn-group .btn:hover:not(.active),
.btn-group button:hover:not(.active) {
  background: var(--glass-heavy);
}

/* ============================================
   3. 增强卡片系统
   ============================================ */

/* 卡片悬浮效果增强 */
.card-hover-lift {
  transition: transform 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275),
              box-shadow 0.3s ease;
  cursor: pointer;
}
.card-hover-lift:hover {
  transform: translateY(-6px);
  box-shadow: 0 16px 40px rgba(0,0,0,0.08);
}

/* 卡片边框发光 */
.card-glow {
  border: 0.5px solid var(--border);
  transition: border-color 0.3s ease, box-shadow 0.3s ease;
}
.card-glow:hover {
  border-color: var(--primary);
  box-shadow: 0 0 0 3px rgba(91,94,247,0.08), 0 8px 24px rgba(91,94,247,0.06);
}
.card-glow-accent:hover {
  border-color: var(--accent);
  box-shadow: 0 0 0 3px rgba(0,212,170,0.08), 0 8px 24px rgba(0,212,170,0.06);
}
.card-glow-red:hover {
  border-color: var(--red);
  box-shadow: 0 0 0 3px rgba(255,71,87,0.08), 0 8px 24px rgba(255,71,87,0.06);
}

/* 渐变边框卡片 */
.card-gradient-border {
  position: relative;
  background: var(--bg-card);
  border-radius: var(--r);
  padding: 1px;
  overflow: hidden;
}
.card-gradient-border::before {
  content: '';
  position: absolute; inset: 0;
  border-radius: var(--r);
  background: linear-gradient(135deg, var(--primary), var(--purple), var(--accent));
  -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
  -webkit-mask-composite: xor;
  mask-composite: exclude;
  padding: 1px;
}
.card-gradient-border-inner {
  background: var(--bg-card);
  border-radius: calc(var(--r) - 1px);
  padding: 20px;
  position: relative;
  z-index: 1;
}

/* 卡片闪烁进入 */
.card-shimmer-in {
  animation: cardShimmerIn 0.5s cubic-bezier(0.25, 0.1, 0.25, 1);
}
@keyframes cardShimmerIn {
  from { opacity: 0; transform: translateY(16px) scale(0.96); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}

/* 卡片涟漪效果 */
.card-ripple {
  position: relative; overflow: hidden;
}
.card-ripple .ripple-effect {
  position: absolute;
  border-radius: 50%;
  background: rgba(91,94,247,0.15);
  transform: scale(0);
  animation: cardRipple 0.6s ease-out forwards;
  pointer-events: none;
}
@keyframes cardRipple {
  to { transform: scale(4); opacity: 0; }
}

/* 卡片选中状态 */
.card-selected {
  border-color: var(--primary) !important;
  box-shadow: 0 0 0 3px rgba(91,94,247,0.1);
  background: rgba(91,94,247,0.04);
}
.card-selected::after {
  content: '✓';
  position: absolute; top: 10px; right: 10px;
  width: 24px; height: 24px;
  border-radius: 50%;
  background: var(--primary);
  color: #fff;
  font-size: 12px; font-weight: 700;
  display: flex; align-items: center; justify-content: center;
  z-index: 2;
}

/* 信息卡片组 */
.info-card-group {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: 12px;
}
.info-card {
  padding: 16px;
  border-radius: var(--r);
  background: var(--glass);
  border: 0.5px solid var(--border);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  transition: var(--t);
}
.info-card:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow-md);
}
.info-card-icon {
  width: 40px; height: 40px;
  border-radius: 12px;
  display: flex; align-items: center; justify-content: center;
  font-size: 20px;
  margin-bottom: 10px;
}
.info-card-icon.primary   { background: rgba(91,94,247,0.1); color: var(--primary); }
.info-card-icon.accent    { background: rgba(0,212,170,0.1); color: var(--accent); }
.info-card-icon.warning   { background: rgba(255,193,7,0.1); color: var(--amber); }
.info-card-icon.danger    { background: rgba(255,71,87,0.1); color: var(--red); }
.info-card-icon.purple    { background: rgba(168,85,247,0.1); color: var(--purple); }
.info-card-icon.orange    { background: rgba(255,107,53,0.1); color: var(--orange); }
.info-card-value {
  font-size: 22px; font-weight: 800; color: var(--text);
  line-height: 1.2;
}
.info-card-label {
  font-size: 11px; color: var(--text-muted); font-weight: 500;
  margin-top: 2px;
}

/* ============================================
   4. 排行榜样式 — 金银铜
   ============================================ */

/* 排行榜容器 */
.leaderboard-list {
  display: flex; flex-direction: column; gap: 8px;
}
.leaderboard-item {
  display: flex; align-items: center; gap: 12px;
  padding: 12px 14px;
  border-radius: var(--r);
  background: var(--glass);
  border: 0.5px solid var(--border);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  transition: var(--spring);
  cursor: pointer;
  position: relative; overflow: hidden;
}
.leaderboard-item:hover {
  transform: translateX(4px);
  box-shadow: var(--shadow);
}

/* 排名数字 */
.leaderboard-rank {
  width: 32px; height: 32px;
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 14px; font-weight: 800;
  flex-shrink: 0;
  background: var(--border-light);
  color: var(--text-muted);
}

/* 第一名 — 金牌 */
.leaderboard-item.rank-1 {
  background: linear-gradient(135deg, rgba(255,193,7,0.12), rgba(255,152,0,0.06));
  border-color: rgba(255,193,7,0.25);
  box-shadow: 0 2px 12px rgba(255,193,7,0.1);
}
.leaderboard-item.rank-1 .leaderboard-rank {
  background: linear-gradient(135deg, #FFD700, #FFA000);
  color: #fff;
  box-shadow: 0 3px 12px rgba(255,193,7,0.4);
  font-size: 16px;
}
.leaderboard-item.rank-1::before {
  content: '';
  position: absolute; top: 0; left: 0; right: 0; bottom: 0;
  background: linear-gradient(135deg, transparent 60%, rgba(255,215,0,0.08));
  pointer-events: none;
}

/* 第二名 — 银牌 */
.leaderboard-item.rank-2 {
  background: linear-gradient(135deg, rgba(158,158,158,0.1), rgba(189,189,189,0.05));
  border-color: rgba(158,158,158,0.2);
  box-shadow: 0 2px 10px rgba(158,158,158,0.08);
}
.leaderboard-item.rank-2 .leaderboard-rank {
  background: linear-gradient(135deg, #B0BEC5, #90A4AE);
  color: #fff;
  box-shadow: 0 3px 10px rgba(158,158,158,0.35);
  font-size: 16px;
}

/* 第三名 — 铜牌 */
.leaderboard-item.rank-3 {
  background: linear-gradient(135deg, rgba(205,127,50,0.1), rgba(185,115,45,0.05));
  border-color: rgba(205,127,50,0.2);
  box-shadow: 0 2px 10px rgba(205,127,50,0.08);
}
.leaderboard-item.rank-3 .leaderboard-rank {
  background: linear-gradient(135deg, #CD7F32, #A0522D);
  color: #fff;
  box-shadow: 0 3px 10px rgba(205,127,50,0.35);
  font-size: 16px;
}

/* 排行榜头像 */
.leaderboard-avatar {
  width: 40px; height: 40px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--primary-light), var(--accent));
  display: flex; align-items: center; justify-content: center;
  color: #fff; font-size: 16px; font-weight: 700;
  flex-shrink: 0; overflow: hidden;
}
.leaderboard-avatar img {
  width: 100%; height: 100%; object-fit: cover;
}
.leaderboard-info {
  flex: 1; min-width: 0;
}
.leaderboard-name {
  font-size: 14px; font-weight: 600; color: var(--text);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.leaderboard-meta {
  font-size: 11px; color: var(--text-muted); margin-top: 2px;
}
.leaderboard-score {
  font-size: 16px; font-weight: 800; color: var(--primary);
  flex-shrink: 0;
}

/* 排行榜奖杯图标 */
.leaderboard-trophy {
  font-size: 20px;
}
.rank-1 .leaderboard-trophy { filter: drop-shadow(0 0 4px rgba(255,193,7,0.5)); }
.rank-2 .leaderboard-trophy { filter: drop-shadow(0 0 4px rgba(158,158,158,0.5)); }
.rank-3 .leaderboard-trophy { filter: drop-shadow(0 0 4px rgba(205,127,50,0.5)); }

.leaderboard-avatar-img {
  width: 44px; height: 44px; border-radius: 50%;
  background: linear-gradient(135deg, #667eea, #764ba2);
  display: flex; align-items: center; justify-content: center;
  color: #fff; font-weight: 700; font-size: 16px;
  overflow: hidden; flex-shrink: 0; box-shadow: 0 2px 8px rgba(0,0,0,0.1);
}
.leaderboard-avatar-img img { width: 100%; height: 100%; object-fit: cover; }

/* ============================================
   5. 仪表盘 / 统计面板
   ============================================ */

/* 统计卡片组 */
.dashboard-stats {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 12px;
  margin-bottom: 16px;
}
@media (min-width: 600px) {
  .dashboard-stats { grid-template-columns: repeat(4, 1fr); }
}
.dashboard-stat-card {
  padding: 16px 14px;
  border-radius: var(--r);
  border: 0.5px solid var(--border);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  display: flex; flex-direction: column;
  transition: var(--spring);
  cursor: pointer;
  position: relative; overflow: hidden;
}
.dashboard-stat-card:hover {
  transform: translateY(-3px);
  box-shadow: var(--shadow-md);
}
.dashboard-stat-card::after {
  content: '';
  position: absolute; top: -30px; right: -30px;
  width: 80px; height: 80px;
  border-radius: 50%;
  background: currentColor;
  opacity: 0.04;
  pointer-events: none;
}
.dashboard-stat-card.primary   { background: linear-gradient(135deg, rgba(91,94,247,0.08), rgba(91,94,247,0.02)); color: var(--primary); }
.dashboard-stat-card.accent    { background: linear-gradient(135deg, rgba(0,212,170,0.08), rgba(0,212,170,0.02)); color: var(--accent); }
.dashboard-stat-card.warning   { background: linear-gradient(135deg, rgba(255,193,7,0.08), rgba(255,193,7,0.02)); color: var(--amber); }
.dashboard-stat-card.danger    { background: linear-gradient(135deg, rgba(255,71,87,0.08), rgba(255,71,87,0.02)); color: var(--red); }
.dashboard-stat-card.purple    { background: linear-gradient(135deg, rgba(168,85,247,0.08), rgba(168,85,247,0.02)); color: var(--purple); }
.dashboard-stat-card.orange    { background: linear-gradient(135deg, rgba(255,107,53,0.08), rgba(255,107,53,0.02)); color: var(--orange); }
.dashboard-stat-icon {
  font-size: 24px; margin-bottom: 8px;
}
.dashboard-stat-value {
  font-size: 24px; font-weight: 800; color: var(--text);
  line-height: 1.2;
}
.dashboard-stat-label {
  font-size: 12px; font-weight: 500;
  margin-top: 4px;
  color: var(--text-muted);
}
.dashboard-stat-change {
  font-size: 11px; font-weight: 600;
  margin-top: 4px;
  display: flex; align-items: center; gap: 3px;
}
.dashboard-stat-change.up   { color: var(--green); }
.dashboard-stat-change.down { color: var(--red); }

/* 统计图表容器 */
.chart-container {
  padding: 16px;
  border-radius: var(--r);
  background: var(--glass);
  border: 0.5px solid var(--border);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  margin-bottom: 16px;
}
.chart-header {
  display: flex; align-items: center; justify-content: space-between;
  margin-bottom: 14px;
}
.chart-title {
  font-size: 14px; font-weight: 700; color: var(--text);
}
.chart-legend {
  display: flex; gap: 12px;
}
.chart-legend-item {
  display: flex; align-items: center; gap: 4px;
  font-size: 11px; color: var(--text-muted); font-weight: 500;
}
.chart-legend-dot {
  width: 8px; height: 8px; border-radius: 50%;
}
.chart-legend-dot.primary { background: var(--primary); }
.chart-legend-dot.accent  { background: var(--accent); }
.chart-legend-dot.red     { background: var(--red); }
.chart-legend-dot.green   { background: var(--green); }
.chart-legend-dot.purple  { background: var(--purple); }
.chart-legend-dot.orange  { background: var(--orange); }

/* 简易柱状图 */
.simple-bar-chart {
  display: flex; align-items: flex-end; gap: 8px;
  height: 140px; padding: 0 4px;
}
.simple-bar-chart .bar-item {
  flex: 1; display: flex; flex-direction: column; align-items: center;
  gap: 6px; height: 100%; justify-content: flex-end;
}
.simple-bar-chart .bar {
  width: 100%; max-width: 40px;
  border-radius: 6px 6px 0 0;
  transition: height 0.6s cubic-bezier(0.25, 0.1, 0.25, 1);
  position: relative;
}
.simple-bar-chart .bar.primary { background: linear-gradient(180deg, var(--primary-light), var(--primary)); }
.simple-bar-chart .bar.accent  { background: linear-gradient(180deg, var(--accent-light), var(--accent)); }
.simple-bar-chart .bar-label {
  font-size: 10px; color: var(--text-muted); font-weight: 500;
}
.simple-bar-chart .bar-value {
  font-size: 10px; font-weight: 700; color: var(--text-secondary);
}

/* 统计数字动画 */
.stat-number-animated {
  font-variant-numeric: tabular-nums;
  transition: all 0.3s ease;
}

/* 现代仪表盘卡片 */
.dash-section { margin-bottom: 20px; }
.dash-section-title {
  font-size: 13px; font-weight: 700; color: var(--text);
  margin-bottom: 10px; display: flex; align-items: center; gap: 6px;
}
.dash-card {
  padding: 18px 14px; border-radius: 14px;
  background: var(--card-bg); border: 0.5px solid var(--border);
  display: flex; flex-direction: column; align-items: center;
  transition: all 0.2s ease;
  box-shadow: var(--shadow-sm);
}
.dash-card:hover { transform: translateY(-2px); box-shadow: var(--shadow); }
.dash-card.dash-today { background: linear-gradient(135deg, rgba(0,212,170,0.06), rgba(0,212,170,0.02)); border-color: var(--accent); }
.dash-num { font-size: 26px; font-weight: 800; color: var(--text); line-height: 1.2; }
.dash-label { font-size: 11px; color: var(--text-muted); margin-top: 4px; font-weight: 500; }
.dash-today .dash-num { color: var(--accent); }
/* 柱状图 */
.dash-chart {
  display: flex; align-items: flex-end; gap: 6px;
  height: 120px; padding: 8px; background: var(--card-bg);
  border-radius: 14px; border: 0.5px solid var(--border);
}
.dash-bar-wrap { flex: 1; display: flex; flex-direction: column; align-items: center; gap: 4px; height: 100%; justify-content: flex-end; }
.dash-bar {
  width: 100%; max-width: 32px; border-radius: 6px 6px 0 0;
  background: linear-gradient(180deg, var(--primary-light), var(--primary));
  transition: height 0.5s ease; min-height: 4px;
}
.dash-bar-label { font-size: 10px; color: var(--text-muted); font-weight: 500; margin-top: 4px; white-space: nowrap; }

/* ============================================
   6. 任务系统
   ============================================ */

/* 任务卡片 */
.task-card {
  display: flex; align-items: flex-start; gap: 12px;
  padding: 14px;
  border-radius: var(--r);
  background: var(--glass);
  border: 0.5px solid var(--border);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  transition: var(--spring);
  cursor: pointer;
  margin-bottom: 10px;
}
.task-card:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow);
}
.task-card.completed {
  opacity: 0.6;
}
.task-card.completed .task-title {
  text-decoration: line-through;
}

/* 任务复选框 */
.task-checkbox {
  width: 22px; height: 22px;
  border-radius: 50%;
  border: 2px solid var(--border);
  flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  transition: all 0.2s ease;
  cursor: pointer;
  margin-top: 2px;
}
.task-checkbox:hover { border-color: var(--primary); }
.task-checkbox.checked {
  background: var(--primary);
  border-color: var(--primary);
}
.task-checkbox.checked::after {
  content: '✓';
  color: #fff;
  font-size: 12px;
  font-weight: 700;
}

/* 任务内容 */
.task-body { flex: 1; min-width: 0; }
.task-title {
  font-size: 14px; font-weight: 600; color: var(--text);
  margin-bottom: 4px;
  line-height: 1.4;
}
.task-desc {
  font-size: 12px; color: var(--text-muted);
  line-height: 1.5;
  margin-bottom: 8px;
}
.task-meta {
  display: flex; align-items: center; gap: 12px;
  font-size: 11px; color: var(--text-muted);
}

/* 任务奖励徽章 */
.task-reward {
  flex-shrink: 0;
  padding: 4px 10px;
  border-radius: 12px;
  font-size: 11px; font-weight: 700;
  background: linear-gradient(135deg, rgba(255,193,7,0.15), rgba(255,107,53,0.1));
  color: var(--orange);
  border: 0.5px solid rgba(255,193,7,0.2);
}

/* 任务进度条 */
.task-progress {
  width: 100%; height: 6px;
  border-radius: 3px;
  background: var(--border-light);
  margin-top: 8px;
  overflow: hidden;
}
.task-progress-bar {
  height: 100%;
  border-radius: 3px;
  background: linear-gradient(90deg, var(--primary), var(--purple));
  transition: width 0.6s cubic-bezier(0.25, 0.1, 0.25, 1);
  position: relative;
}
.task-progress-bar::after {
  content: '';
  position: absolute; inset: 0;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,0.3), transparent);
  animation: progressShimmer 2s ease-in-out infinite;
}
@keyframes progressShimmer {
  0%   { transform: translateX(-100%); }
  100% { transform: translateX(100%); }
}

/* 任务进度文字 */
.task-progress-text {
  display: flex; justify-content: space-between;
  font-size: 11px; color: var(--text-muted);
  margin-top: 4px;
}

/* 任务截止日期 */
.task-deadline {
  font-size: 11px; font-weight: 600;
  padding: 2px 8px; border-radius: 10px;
  display: inline-flex; align-items: center; gap: 3px;
}
.task-deadline.urgent { background: rgba(255,71,87,0.1); color: var(--red); }
.task-deadline.warning { background: rgba(255,193,7,0.1); color: var(--amber); }
.task-deadline.normal  { background: rgba(0,212,170,0.1); color: var(--accent); }

/* 任务完成庆祝动画 */
.task-complete-celebrate {
  animation: taskCelebrate 0.6s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}
@keyframes taskCelebrate {
  0%   { transform: scale(1); }
  30%  { transform: scale(1.05); }
  100% { transform: scale(1); }
}

/* ============================================
   7. 徽章 / 成就展示
   ============================================ */

/* 成就网格 */
.achievement-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
}
@media (min-width: 600px) {
  .achievement-grid { grid-template-columns: repeat(4, 1fr); gap: 14px; }
}
@media (min-width: 900px) {
  .achievement-grid { grid-template-columns: repeat(6, 1fr); gap: 16px; }
}

/* 成就项目 */
.achievement-item {
  display: flex; flex-direction: column; align-items: center;
  gap: 8px; padding: 16px 10px;
  border-radius: var(--r);
  background: var(--glass);
  border: 0.5px solid var(--border);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  transition: var(--spring);
  cursor: pointer; text-align: center;
}
.achievement-item:hover {
  transform: translateY(-3px);
  box-shadow: var(--shadow-md);
}
.achievement-item.locked {
  opacity: 0.4; filter: grayscale(1);
}

/* 徽章图标 */
.achievement-icon {
  width: 56px; height: 56px;
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 28px;
  position: relative;
  transition: var(--spring);
}
.achievement-item:hover .achievement-icon {
  transform: scale(1.1);
}

/* 徽章发光效果 */
.achievement-glow {
  box-shadow: 0 0 20px rgba(255,193,7,0.3), 0 0 40px rgba(255,193,7,0.1);
  animation: badgeGlow 2s ease-in-out infinite;
}
@keyframes badgeGlow {
  0%, 100% { box-shadow: 0 0 20px rgba(255,193,7,0.3), 0 0 40px rgba(255,193,7,0.1); }
  50%      { box-shadow: 0 0 30px rgba(255,193,7,0.5), 0 0 60px rgba(255,193,7,0.2); }
}

/* 徽章颜色变体 */
.achievement-gold   { background: linear-gradient(135deg, rgba(255,193,7,0.15), rgba(255,152,0,0.1)); border-color: rgba(255,193,7,0.2); }
.achievement-silver { background: linear-gradient(135deg, rgba(189,189,189,0.15), rgba(158,158,158,0.1)); border-color: rgba(189,189,189,0.2); }
.achievement-bronze { background: linear-gradient(135deg, rgba(205,127,50,0.15), rgba(185,115,45,0.1)); border-color: rgba(205,127,50,0.2); }

/* 徽章文字 */
.achievement-name {
  font-size: 12px; font-weight: 600; color: var(--text);
  line-height: 1.3;
}
.achievement-desc {
  font-size: 10px; color: var(--text-muted);
}

/* 徽章获得动画 */
.achievement-unlocked {
  animation: achievementUnlock 0.6s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}
@keyframes achievementUnlock {
  0%   { transform: scale(0.5); opacity: 0; }
  50%  { transform: scale(1.15); }
  100% { transform: scale(1); opacity: 1; }
}

/* 徽章升级星标 */
.achievement-stars {
  display: flex; gap: 2px;
}
.achievement-star {
  font-size: 10px; color: var(--border);
}
.achievement-star.filled { color: var(--amber); }

/* 成就展柜 */
.achievement-showcase {
  display: flex; flex-wrap: wrap; gap: 8px;
  padding: 14px;
  border-radius: var(--r);
  background: var(--glass);
  border: 0.5px solid var(--border);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
}
.achievement-showcase-item {
  width: 44px; height: 44px;
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 20px;
  background: var(--border-light);
  border: 2px solid var(--border);
  transition: var(--t);
  cursor: pointer;
}
.achievement-showcase-item:hover {
  transform: scale(1.15);
  border-color: var(--amber);
}

/* ============================================
   8. 增强空状态
   ============================================ */

/* 空状态变体 */
.empty-state-compact {
  text-align: center; padding: 32px 16px;
  background: var(--glass);
  border-radius: var(--r);
  border: 0.5px dashed var(--border);
  margin: 12px 0;
}
.empty-state-compact .empty-icon {
  font-size: 40px; opacity: 0.4; margin-bottom: 10px;
}
.empty-state-compact .empty-text {
  font-size: 13px; color: var(--text-muted);
}

/* 带插图的空状态 */
.empty-state-illustrated {
  text-align: center; padding: 48px 20px;
  background: var(--glass);
  border-radius: var(--r-lg);
  border: 0.5px solid var(--border);
  margin: 16px 0;
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
}
.empty-state-illustrated .empty-illustration {
  width: 120px; height: 120px;
  margin: 0 auto 20px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--border-light), var(--glass));
  display: flex; align-items: center; justify-content: center;
  font-size: 56px;
  position: relative;
  animation: emptyFloat 3s ease-in-out infinite;
}
@keyframes emptyFloat {
  0%, 100% { transform: translateY(0); }
  50%      { transform: translateY(-8px); }
}
.empty-state-illustrated .empty-illustration::after {
  content: '';
  position: absolute; bottom: -8px; left: 50%;
  transform: translateX(-50%);
  width: 60px; height: 8px;
  border-radius: 50%;
  background: rgba(0,0,0,0.04);
  animation: emptyShadow 3s ease-in-out infinite;
}
@keyframes emptyShadow {
  0%, 100% { transform: translateX(-50%) scale(1); opacity: 0.5; }
  50%      { transform: translateX(-50%) scale(1.3); opacity: 0.2; }
}
.empty-state-illustrated .empty-title {
  font-size: 16px; font-weight: 700; color: var(--text);
  margin-bottom: 6px;
}
.empty-state-illustrated .empty-subtitle {
  font-size: 13px; color: var(--text-muted);
  max-width: 280px; margin: 0 auto 16px; line-height: 1.5;
}
.empty-state-illustrated .empty-action {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 10px 24px;
  border-radius: 50px;
  background: var(--primary);
  color: #fff;
  font-size: 14px; font-weight: 600;
  border: none; cursor: pointer;
  font-family: inherit;
  box-shadow: 0 4px 14px var(--primary-glow);
  transition: all 0.25s ease;
}
.empty-state-illustrated .empty-action:hover {
  transform: translateY(-2px);
  box-shadow: 0 6px 20px var(--primary-glow);
}

/* 内联空状态 */
.empty-state-inline {
  text-align: center; padding: 20px 12px;
  color: var(--text-muted);
  font-size: 13px;
}
.empty-state-inline .empty-icon {
  font-size: 28px; opacity: 0.3; margin-bottom: 6px;
}

/* 暗色模式空状态 */
:root.dark .empty-state-illustrated .empty-illustration::after {
  background: rgba(255,255,255,0.04);
}

/* ============================================
   9. Toast 通知增强
   ============================================ */

/* Toast 定位变体 */
.toast-top {
  top: 80px; bottom: auto;
}
.toast-bottom {
  top: auto; bottom: 100px;
  animation: toastBottomIn 0.35s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}
@keyframes toastBottomIn {
  from { opacity: 0; transform: translateX(-50%) translateY(16px) scale(0.9); }
  to   { opacity: 1; transform: translateX(-50%) translateY(0) scale(1); }
}

/* Toast 带图标增强 */
.toast-with-icon {
  display: flex; align-items: center; gap: 8px;
  padding: 12px 20px;
}
.toast-with-icon .toast-icon-wrap {
  width: 24px; height: 24px;
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
  font-size: 13px;
}
.toast.success .toast-icon-wrap { background: rgba(46,213,115,0.15); color: var(--green); }
.toast.error .toast-icon-wrap   { background: rgba(255,71,87,0.15); color: var(--red); }
.toast.warning .toast-icon-wrap { background: rgba(255,193,7,0.15); color: var(--amber); }
.toast.info .toast-icon-wrap    { background: rgba(91,94,247,0.15); color: var(--primary); }

/* Toast 行动按钮 */
.toast-action {
  margin-left: 8px; padding: 4px 12px;
  border-radius: 12px;
  border: 0.5px solid currentColor;
  background: transparent;
  color: inherit;
  font-size: 12px; font-weight: 600;
  cursor: pointer; font-family: inherit;
  white-space: nowrap;
  transition: all 0.2s ease;
}
.toast-action:hover {
  background: currentColor;
  color: #fff;
}

/* Toast 堆叠 */
.toast-stack {
  display: flex; flex-direction: column; gap: 8px;
  position: fixed; top: 80px; right: 16px; z-index: 9999;
}
.toast-stack .toast-stacked {
  position: relative; top: auto; left: auto;
  transform: none;
  animation: toastStackIn 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}
@keyframes toastStackIn {
  from { opacity: 0; transform: translateX(20px); }
  to   { opacity: 1; transform: translateX(0); }
}

/* ============================================
   10. 骨架屏加载 — 增强变体
   ============================================ */

/* 骨架屏列表项 */
.skeleton-list-item {
  display: flex; align-items: center; gap: 12px;
  padding: 14px; border-radius: var(--r);
  background: var(--glass);
  border: 0.5px solid var(--border);
  margin-bottom: 10px;
}
.skeleton-list-item .skeleton-avatar {
  width: 44px; height: 44px; border-radius: 50%;
  flex-shrink: 0;
}
.skeleton-list-item .skeleton-content {
  flex: 1; display: flex; flex-direction: column; gap: 8px;
}
.skeleton-list-item .skeleton-line {
  height: 12px; border-radius: 4px;
}
.skeleton-list-item .skeleton-line:last-child { width: 50%; }

/* 骨架屏详情页 */
.skeleton-detail {
  padding: 20px; border-radius: var(--r-lg);
  background: var(--glass);
  border: 0.5px solid var(--border);
}
.skeleton-detail .skeleton-image {
  width: 100%; height: 180px; border-radius: var(--r);
  margin-bottom: 16px;
}
.skeleton-detail .skeleton-title {
  height: 22px; width: 60%; border-radius: 4px;
  margin-bottom: 12px;
}
.skeleton-detail .skeleton-paragraph {
  height: 14px; border-radius: 4px; margin-bottom: 8px;
}
.skeleton-detail .skeleton-paragraph:last-child { width: 80%; }

/* 骨架屏仪表盘 */
.skeleton-dashboard {
  display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px;
}
.skeleton-dashboard .skeleton-stat {
  padding: 16px; border-radius: var(--r);
  background: var(--glass);
  border: 0.5px solid var(--border);
  height: 80px;
}

/* 骨架屏表格 */
.skeleton-table {
  border-radius: var(--r);
  border: 0.5px solid var(--border);
  overflow: hidden;
}
.skeleton-table .skeleton-row {
  display: flex; gap: 16px;
  padding: 12px 16px;
  border-bottom: 0.5px solid var(--border-light);
}
.skeleton-table .skeleton-row:last-child { border-bottom: none; }
.skeleton-table .skeleton-cell {
  height: 14px; border-radius: 4px; flex: 1;
}
.skeleton-table .skeleton-cell:first-child { flex: 0.5; }

/* 骨架屏 pulse 动画 */
.skeleton,
.skeleton-text,
.skeleton-avatar,
.skeleton-card,
.skeleton-image,
.skeleton-line,
.skeleton-title,
.skeleton-paragraph,
.skeleton-cell,
.skeleton-stat {
  background: linear-gradient(90deg, var(--border-light) 25%, var(--border) 50%, var(--border-light) 75%);
  background-size: 200% 100%;
  animation: skeletonShimmerV2 1.5s ease-in-out infinite;
}
@keyframes skeletonShimmerV2 {
  0%   { background-position: 200% 0; }
  100% { background-position: -200% 0; }
}

/* ============================================
   11. 滚动条美化增强
   ============================================ */

/* 全局滚动条 */
@media (min-width: 768px) {
  ::-webkit-scrollbar { width: 6px; height: 6px; }
  ::-webkit-scrollbar-track {
    background: transparent;
    margin: 4px 0;
  }
  ::-webkit-scrollbar-thumb {
    background: var(--border);
    border-radius: 3px;
    border: 2px solid transparent;
    background-clip: content-box;
  }
  ::-webkit-scrollbar-thumb:hover {
    background: var(--text-muted);
    border: 2px solid transparent;
    background-clip: content-box;
  }
  ::-webkit-scrollbar-corner { background: transparent; }
}

/* 自定义滚动条类 */
.custom-scrollbar::-webkit-scrollbar { width: 6px; }
.custom-scrollbar::-webkit-scrollbar-track { background: var(--border-light); border-radius: 3px; }
.custom-scrollbar::-webkit-scrollbar-thumb { background: var(--primary); border-radius: 3px; }
.custom-scrollbar::-webkit-scrollbar-thumb:hover { background: var(--primary-dark); }

/* 隐藏滚动条但可滚动 */
.scrollbar-hidden {
  scrollbar-width: none;
  -ms-overflow-style: none;
}
.scrollbar-hidden::-webkit-scrollbar { display: none; }

/* 滚动条淡入淡出 */
.scrollbar-fade::-webkit-scrollbar-thumb {
  background: transparent;
  transition: background 0.3s ease;
}
.scrollbar-fade:hover::-webkit-scrollbar-thumb {
  background: var(--border);
}

/* Firefox 滚动条 */
* {
  scrollbar-width: thin;
  scrollbar-color: var(--border) transparent;
}

/* ============================================
   12. 粒子 / 光晕背景
   ============================================ */

/* 光晕装饰背景 */
.glow-bg {
  position: relative; overflow: hidden;
}
.glow-bg::before {
  content: '';
  position: absolute; top: -100px; left: 10%;
  width: 300px; height: 300px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(91,94,247,0.08) 0%, transparent 70%);
  animation: glowOrbFloat 8s ease-in-out infinite;
  pointer-events: none;
}
.glow-bg::after {
  content: '';
  position: absolute; bottom: -120px; right: 5%;
  width: 280px; height: 280px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(0,212,170,0.06) 0%, transparent 70%);
  animation: glowOrbFloat 10s ease-in-out infinite reverse;
  pointer-events: none;
}
@keyframes glowOrbFloat {
  0%, 100% { transform: translate(0, 0) scale(1); }
  25%      { transform: translate(30px, -20px) scale(1.1); }
  50%      { transform: translate(-20px, 30px) scale(0.9); }
  75%      { transform: translate(-30px, -10px) scale(1.05); }
}

/* 粒子动画背景 */
.particles-bg {
  position: relative; overflow: hidden;
}
.particles-bg::before {
  content: '';
  position: absolute; inset: 0;
  background-image:
    radial-gradient(2px 2px at 20% 30%, rgba(91,94,247,0.15), transparent),
    radial-gradient(2px 2px at 40% 70%, rgba(0,212,170,0.1), transparent),
    radial-gradient(1px 1px at 60% 20%, rgba(168,85,247,0.12), transparent),
    radial-gradient(2px 2px at 80% 50%, rgba(255,107,53,0.1), transparent),
    radial-gradient(1px 1px at 10% 80%, rgba(255,193,7,0.12), transparent),
    radial-gradient(2px 2px at 70% 90%, rgba(46,213,115,0.1), transparent),
    radial-gradient(1px 1px at 50% 40%, rgba(255,107,157,0.08), transparent);
  animation: particlesDrift 20s linear infinite;
  pointer-events: none;
}
@keyframes particlesDrift {
  0%   { transform: translateY(0); }
  100% { transform: translateY(-20px); }
}

/* 光晕渐变覆盖层 */
.glow-overlay {
  position: absolute; inset: 0;
  background: linear-gradient(
    135deg,
    rgba(91,94,247,0.03) 0%,
    transparent 30%,
    transparent 70%,
    rgba(0,212,170,0.03) 100%
  );
  pointer-events: none;
}

/* 旋转光晕边框 */
.glow-ring {
  position: relative;
}
.glow-ring::before {
  content: '';
  position: absolute; inset: -1px;
  border-radius: inherit;
  background: conic-gradient(
    from 0deg,
    var(--primary), var(--purple), var(--accent), var(--primary)
  );
  -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
  -webkit-mask-composite: xor;
  mask-composite: exclude;
  padding: 1px;
  animation: glowRingRotate 4s linear infinite;
}
@keyframes glowRingRotate {
  to { transform: rotate(360deg); }
}

/* 顶部渐变光线 */
.glow-line-top {
  position: relative;
}
.glow-line-top::before {
  content: '';
  position: absolute; top: 0; left: 20%; right: 20%;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--primary), transparent);
  opacity: 0.3;
}

/* ============================================
   13. 标签 / 徽章
   ============================================ */

/* 基础标签 */
.tag {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 3px 10px;
  border-radius: 12px;
  font-size: 11px; font-weight: 600;
  white-space: nowrap;
  line-height: 1.4;
  transition: var(--t);
}

/* 标签颜色变体 */
.tag-primary   { background: rgba(91,94,247,0.1); color: var(--primary); border: 0.5px solid rgba(91,94,247,0.15); }
.tag-accent    { background: rgba(0,212,170,0.1); color: var(--accent); border: 0.5px solid rgba(0,212,170,0.15); }
.tag-green     { background: rgba(46,213,115,0.1); color: var(--green); border: 0.5px solid rgba(46,213,115,0.15); }
.tag-red       { background: rgba(255,71,87,0.1); color: var(--red); border: 0.5px solid rgba(255,71,87,0.15); }
.tag-orange    { background: rgba(255,107,53,0.1); color: var(--orange); border: 0.5px solid rgba(255,107,53,0.15); }
.tag-amber     { background: rgba(255,193,7,0.1); color: var(--amber); border: 0.5px solid rgba(255,193,7,0.15); }
.tag-purple    { background: rgba(168,85,247,0.1); color: var(--purple); border: 0.5px solid rgba(168,85,247,0.15); }
.tag-pink      { background: rgba(255,107,157,0.1); color: var(--pink); border: 0.5px solid rgba(255,107,157,0.15); }
.tag-teal      { background: rgba(0,212,170,0.1); color: var(--teal); border: 0.5px solid rgba(0,212,170,0.15); }

/* 标签大小 */
.tag-sm { padding: 2px 8px; font-size: 10px; border-radius: 10px; }
.tag-lg { padding: 5px 14px; font-size: 13px; border-radius: 14px; }

/* 填充标签 */
.tag-filled.tag-primary { background: var(--primary); color: #fff; border-color: var(--primary); }
.tag-filled.tag-accent  { background: var(--accent); color: #fff; border-color: var(--accent); }
.tag-filled.tag-green   { background: var(--green); color: #fff; border-color: var(--green); }
.tag-filled.tag-red     { background: var(--red); color: #fff; border-color: var(--red); }
.tag-filled.tag-orange  { background: var(--orange); color: #fff; border-color: var(--orange); }
.tag-filled.tag-amber   { background: var(--amber); color: #fff; border-color: var(--amber); }
.tag-filled.tag-purple  { background: var(--purple); color: #fff; border-color: var(--purple); }
.tag-filled.tag-pink    { background: var(--pink); color: #fff; border-color: var(--pink); }

/* 可关闭标签 */
.tag-dismissible {
  padding-right: 6px;
}
.tag-dismissible .tag-close {
  width: 16px; height: 16px;
  border-radius: 50%;
  border: none; background: transparent;
  cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  font-size: 12px; opacity: 0.5;
  transition: all 0.2s ease;
  margin-left: 2px;
  color: inherit;
}
.tag-dismissible .tag-close:hover {
  opacity: 1; background: rgba(0,0,0,0.1);
}

/* 标签组 */
.tag-group {
  display: flex; flex-wrap: wrap; gap: 6px;
}

/* 状态指示点 */
.status-dot {
  display: inline-block; width: 8px; height: 8px;
  border-radius: 50%;
  flex-shrink: 0;
}
.status-dot.online  { background: var(--green); box-shadow: 0 0 6px rgba(46,213,115,0.4); }
.status-dot.offline { background: var(--text-muted); }
.status-dot.busy    { background: var(--red); box-shadow: 0 0 6px rgba(255,71,87,0.4); }
.status-dot.away    { background: var(--amber); box-shadow: 0 0 6px rgba(255,193,7,0.4); }

/* 状态指示点脉冲 */
.status-dot-pulse {
  animation: statusPulse 2s ease-in-out infinite;
}
@keyframes statusPulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(46,213,115,0.4); }
  50%      { box-shadow: 0 0 0 6px rgba(46,213,115,0); }
}

/* 计数徽章 */
.count-badge {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 20px; height: 20px;
  padding: 0 6px;
  border-radius: 10px;
  font-size: 11px; font-weight: 700;
  background: var(--red);
  color: #fff;
  line-height: 1;
}
.count-badge.primary { background: var(--primary); }
.count-badge.accent  { background: var(--accent); }
.count-badge.orange  { background: var(--orange); }

/* 新内容标记 */
.new-badge {
  display: inline-flex; align-items: center;
  padding: 2px 8px;
  border-radius: 10px;
  font-size: 10px; font-weight: 700;
  background: linear-gradient(135deg, var(--red), var(--orange));
  color: #fff;
  animation: newBadgePulse 2s ease-in-out infinite;
}
@keyframes newBadgePulse {
  0%, 100% { opacity: 1; }
  50%      { opacity: 0.7; }
}

/* ============================================
   14. 进度条
   ============================================ */

/* 基础进度条 */
.progress-bar {
  width: 100%; height: 8px;
  border-radius: 4px;
  background: var(--border-light);
  overflow: hidden;
}
.progress-bar-fill {
  height: 100%;
  border-radius: 4px;
  transition: width 0.6s cubic-bezier(0.25, 0.1, 0.25, 1);
  position: relative;
}

/* 进度条颜色 */
.progress-primary  { background: linear-gradient(90deg, var(--primary), var(--primary-light)); }
.progress-accent   { background: linear-gradient(90deg, var(--accent), var(--accent-light)); }
.progress-green    { background: linear-gradient(90deg, var(--green), #5EEB8B); }
.progress-red      { background: linear-gradient(90deg, var(--red), #FF6B7A); }
.progress-orange   { background: linear-gradient(90deg, var(--orange), #FF8C5A); }
.progress-purple   { background: linear-gradient(90deg, var(--purple), #B87FFF); }
.progress-amber    { background: linear-gradient(90deg, var(--amber), #FFD54F); }

/* 进度条条纹动画 */
.progress-striped {
  background-image: linear-gradient(
    45deg,
    rgba(255,255,255,0.15) 25%,
    transparent 25%,
    transparent 50%,
    rgba(255,255,255,0.15) 50%,
    rgba(255,255,255,0.15) 75%,
    transparent 75%,
    transparent
  );
  background-size: 20px 20px;
  animation: progressStripes 1s linear infinite;
}
@keyframes progressStripes {
  to { background-position: -20px 0; }
}

/* 进度条尺寸 */
.progress-sm { height: 4px; border-radius: 2px; }
.progress-sm .progress-bar-fill { border-radius: 2px; }
.progress-lg { height: 12px; border-radius: 6px; }
.progress-lg .progress-bar-fill { border-radius: 6px; }

/* 进度条含标签 */
.progress-labeled {
  display: flex; flex-direction: column; gap: 4px;
}
.progress-label {
  display: flex; justify-content: space-between;
  font-size: 12px; color: var(--text-secondary); font-weight: 500;
}
.progress-value {
  font-weight: 700; color: var(--text);
}

/* 环形进度 SVG */
.circular-progress {
  display: inline-flex; align-items: center; justify-content: center;
  position: relative;
}
.circular-progress svg {
  transform: rotate(-90deg);
}
.circular-progress .circle-bg {
  fill: none;
  stroke: var(--border-light);
}
.circular-progress .circle-fill {
  fill: none;
  stroke: var(--primary);
  stroke-linecap: round;
  transition: stroke-dashoffset 0.6s cubic-bezier(0.25, 0.1, 0.25, 1);
}
.circular-progress .circle-fill.accent { stroke: var(--accent); }
.circular-progress .circle-fill.green  { stroke: var(--green); }
.circular-progress .circle-fill.red    { stroke: var(--red); }
.circular-progress .circle-fill.purple { stroke: var(--purple); }
.circular-progress .circle-fill.orange { stroke: var(--orange); }
.circular-progress .circle-text {
  position: absolute; inset: 0;
  display: flex; align-items: center; justify-content: center;
  font-size: 14px; font-weight: 800; color: var(--text);
}

/* 环形进度尺寸 */
.circular-progress-sm svg { width: 48px; height: 48px; }
.circular-progress-sm .circle-text { font-size: 12px; }
.circular-progress-md svg { width: 72px; height: 72px; }
.circular-progress-md .circle-text { font-size: 16px; }
.circular-progress-lg svg { width: 100px; height: 100px; }
.circular-progress-lg .circle-text { font-size: 20px; }

/* 步骤进度条 */
.step-progress {
  display: flex; align-items: center; gap: 0;
}
.step-item {
  display: flex; align-items: center; flex: 1;
}
.step-dot {
  width: 28px; height: 28px;
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 12px; font-weight: 700;
  background: var(--border-light);
  color: var(--text-muted);
  flex-shrink: 0;
  transition: all 0.3s ease;
}
.step-item.completed .step-dot {
  background: var(--primary);
  color: #fff;
  box-shadow: 0 2px 8px var(--primary-glow);
}
.step-item.current .step-dot {
  background: var(--bg-card);
  border: 2px solid var(--primary);
  color: var(--primary);
}
.step-line {
  flex: 1; height: 2px;
  background: var(--border-light);
  margin: 0 4px;
  transition: background 0.3s ease;
}
.step-item.completed .step-line {
  background: var(--primary);
}
.step-label {
  font-size: 10px; color: var(--text-muted);
  text-align: center; margin-top: 4px;
  font-weight: 500;
}
.step-item.completed .step-label,
.step-item.current .step-label {
  color: var(--primary); font-weight: 600;
}

/* ============================================
   15. 时间线
   ============================================ */

/* 活动时间线 */
.timeline {
  position: relative;
  padding-left: 28px;
}
.timeline::before {
  content: '';
  position: absolute; left: 11px; top: 0; bottom: 0;
  width: 2px;
  background: var(--border);
  border-radius: 1px;
}

/* 时间线项目 */
.timeline-item {
  position: relative;
  padding-bottom: 24px;
}
.timeline-item:last-child { padding-bottom: 0; }

/* 时间线节点 */
.timeline-dot {
  position: absolute; left: -22px; top: 2px;
  width: 14px; height: 14px;
  border-radius: 50%;
  border: 2px solid var(--primary);
  background: var(--bg-card);
  z-index: 1;
  transition: all 0.3s ease;
}
.timeline-item:hover .timeline-dot {
  transform: scale(1.3);
  box-shadow: 0 0 0 4px rgba(91,94,247,0.15);
}

/* 时间线节点颜色 */
.timeline-dot.primary   { border-color: var(--primary); }
.timeline-dot.accent    { border-color: var(--accent); }
.timeline-dot.green     { border-color: var(--green); }
.timeline-dot.red       { border-color: var(--red); }
.timeline-dot.orange    { border-color: var(--orange); }
.timeline-dot.purple    { border-color: var(--purple); }
.timeline-dot.filled    { background: var(--primary); border-color: var(--primary); }
.timeline-dot.filled.accent  { background: var(--accent); border-color: var(--accent); }
.timeline-dot.filled.green   { background: var(--green); border-color: var(--green); }
.timeline-dot.filled.red     { background: var(--red); border-color: var(--red); }

/* 时间线内容 */
.timeline-content {
  padding: 12px 14px;
  border-radius: var(--r);
  background: var(--glass);
  border: 0.5px solid var(--border);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  transition: var(--t);
}
.timeline-item:hover .timeline-content {
  border-color: var(--primary);
  box-shadow: var(--shadow);
}
.timeline-time {
  font-size: 11px; color: var(--text-muted); font-weight: 500;
  margin-bottom: 4px;
}
.timeline-title {
  font-size: 14px; font-weight: 600; color: var(--text);
  margin-bottom: 2px;
}
.timeline-desc {
  font-size: 12px; color: var(--text-secondary); line-height: 1.5;
}

/* 时间线紧凑变体 */
.timeline-compact .timeline-item { padding-bottom: 16px; }
.timeline-compact .timeline-content { padding: 8px 12px; }
.timeline-compact .timeline-time { font-size: 10px; }

/* 时间线带图标 */
.timeline-icon {
  position: absolute; left: -24px; top: 0;
  width: 20px; height: 20px;
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 10px;
  background: var(--bg-card);
  border: 2px solid var(--border);
  z-index: 1;
  color: var(--text-muted);
}
.timeline-icon.primary   { border-color: var(--primary); color: var(--primary); }
.timeline-icon.accent    { border-color: var(--accent); color: var(--accent); }
.timeline-icon.green     { border-color: var(--green); color: var(--green); }
.timeline-icon.red       { border-color: var(--red); color: var(--red); }

/* 水平时间线 */
.timeline-horizontal {
  display: flex; overflow-x: auto;
  gap: 0; padding: 20px 0;
  scrollbar-width: none;
}
.timeline-horizontal::-webkit-scrollbar { display: none; }
.timeline-horizontal .timeline-h-item {
  flex: 1; min-width: 120px;
  display: flex; flex-direction: column; align-items: center;
  position: relative;
}
.timeline-horizontal .timeline-h-line {
  width: 100%; height: 2px;
  background: var(--border);
  position: absolute; top: 14px; left: 50%;
}
.timeline-horizontal .timeline-h-item:last-child .timeline-h-line { display: none; }
.timeline-horizontal .timeline-h-dot {
  width: 28px; height: 28px;
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 12px; font-weight: 700;
  background: var(--border-light);
  color: var(--text-muted);
  z-index: 1; flex-shrink: 0;
}
.timeline-horizontal .timeline-h-item.completed .timeline-h-dot {
  background: var(--primary); color: #fff;
  box-shadow: 0 2px 8px var(--primary-glow);
}
.timeline-horizontal .timeline-h-item.completed .timeline-h-line {
  background: var(--primary);
}
.timeline-horizontal .timeline-h-label {
  font-size: 11px; color: var(--text-muted);
  margin-top: 8px; text-align: center; font-weight: 500;
}

/* ============================================
   16. 响应式增强
   ============================================ */

/* 小屏手机 (< 375px) */
@media (max-width: 374px) {
  .resource-grid,
  .ios-resource-grid {
    grid-template-columns: 1fr;
    gap: 10px;
  }
  .info-card-group {
    grid-template-columns: 1fr;
  }
  .achievement-grid {
    grid-template-columns: repeat(2, 1fr);
    gap: 8px;
  }
  .dashboard-stats {
    grid-template-columns: 1fr;
    gap: 8px;
  }
  .leaderboard-item {
    padding: 10px 12px;
  }
  .leaderboard-rank {
    width: 28px; height: 28px;
    font-size: 12px;
  }
  .btn-rounded,
  .btn-gradient,
  .btn-pulse {
    padding: 10px 20px;
    font-size: 13px;
  }
}

/* 平板横屏 */
@media (min-width: 768px) and (max-width: 1024px) {
  .dashboard-stats {
    grid-template-columns: repeat(4, 1fr);
  }
  .achievement-grid {
    grid-template-columns: repeat(6, 1fr);
  }
}

/* 大屏优化 */
@media (min-width: 1200px) {
  .main-container {
    max-width: 1200px;
  }
  .resource-grid {
    grid-template-columns: repeat(4, 1fr);
    gap: 18px;
  }
  .dashboard-stats {
    grid-template-columns: repeat(4, 1fr);
    gap: 16px;
  }
  .achievement-grid {
    grid-template-columns: repeat(8, 1fr);
    gap: 16px;
  }
  .info-card-group {
    grid-template-columns: repeat(4, 1fr);
  }
}

/* 移动端底部安全区域 */
@supports (padding-bottom: env(safe-area-inset-bottom)) {
  .btn-float {
    bottom: calc(100px + env(safe-area-inset-bottom));
  }
  .btn-float-secondary {
    bottom: calc(170px + env(safe-area-inset-bottom));
  }
  .toast-bottom {
    bottom: calc(100px + env(safe-area-inset-bottom));
  }
}

/* 触摸设备增强 */
@media (hover: none) and (pointer: coarse) {
  .card-hover-lift:hover {
    transform: none;
    box-shadow: var(--shadow-sm);
  }
  .card-hover-lift:active {
    transform: scale(0.97);
  }
  .btn-float:hover {
    transform: none;
  }
  .btn-float:active {
    transform: scale(0.9);
  }
}

/* 减少动画偏好 */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
  .page-container,
  .page-slide-in,
  .stagger-in > *,
  .card-shimmer-in,
  .task-complete-celebrate,
  .achievement-unlocked,
  .modal-enter {
    animation: none !important;
    opacity: 1 !important;
    transform: none !important;
  }
}

/* 响应式排版 */
@media (max-width: 480px) {
  .dashboard-stat-value { font-size: 20px; }
  .info-card-value { font-size: 18px; }
  .timeline-content { padding: 10px 12px; }
  .timeline { padding-left: 24px; }
  .task-card { padding: 12px; }
  .btn-group .btn,
  .btn-group button {
    padding: 8px 14px;
    font-size: 12px;
  }
}

/* 触屏状态下增大点击区域 */
@media (pointer: coarse) {
  .task-checkbox {
    width: 26px; height: 26px;
  }
  .btn-icon {
    width: 44px; height: 44px;
  }
  .tag-dismissible .tag-close {
    width: 20px; height: 20px;
  }
}

/* ============================================
   3.0 密码强度指示器 (仿易优CMS)
   ============================================ */
.pwd-strength-bar {
  display: flex; gap: 4px; margin-top: 8px; height: 4px;
}
.pwd-strength-segment {
  flex: 1; border-radius: 2px; background: var(--border);
  transition: background 0.3s, box-shadow 0.3s;
}
.pwd-strength-level { font-size: 11px; margin-top: 4px; text-align: right; }
.pwd-strength-text { font-weight: 600; transition: color 0.3s; }
.pwd-strength-desc { color: var(--text-muted); margin-left: 6px; }

/* 管理员快捷导航 (仿易优CMS后台菜单) */
.admin-quick-nav {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px;
  padding: 12px 16px; margin-bottom: 12px;
}
.admin-quick-nav-item {
  display: flex; flex-direction: column; align-items: center; gap: 4px;
  padding: 12px 8px; border-radius: 12px; background: var(--card-bg);
  border: 0.5px solid var(--border); cursor: pointer;
  transition: all 0.2s; text-align: center;
}
.admin-quick-nav-item:hover { transform: translateY(-2px); box-shadow: 0 4px 12px rgba(0,0,0,0.08); }
.admin-quick-nav-item .aqn-icon { font-size: 22px; }
.admin-quick-nav-item .aqn-label { font-size: 11px; color: var(--text); font-weight: 500; }
.admin-quick-nav-item .aqn-badge {
  font-size: 10px; padding: 1px 6px; border-radius: 8px;
  background: var(--red); color: #fff; font-weight: 600;
}

/* 管理后台分区卡片 */
.admin-section-card {
  background: var(--card-bg); border-radius: 14px; padding: 14px 16px;
  margin-bottom: 12px; border: 0.5px solid var(--border);
  box-shadow: 0 1px 3px rgba(0,0,0,0.03);
}
.admin-section-card .asc-title {
  font-size: 14px; font-weight: 700; color: var(--text);
  margin-bottom: 10px; display: flex; align-items: center; gap: 6px;
}
.admin-section-card .asc-title::before {
  content: ''; width: 3px; height: 16px; border-radius: 2px;
  background: var(--primary); display: inline-block;
}
.admin-action-grid {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px;
}
.admin-action-btn {
  display: flex; flex-direction: column; align-items: center; gap: 4px;
  padding: 10px 6px; border-radius: 10px; background: var(--bg-secondary);
  border: none; cursor: pointer; font-size: 12px; color: var(--text);
  transition: all 0.15s;
}
.admin-action-btn:hover { background: var(--primary); color: #fff; }
.admin-action-btn .aab-icon { font-size: 18px; }

/* 登录安全提示 */
.login-security-notice {
  background: linear-gradient(135deg, rgba(245,158,11,0.1), rgba(245,158,11,0.05));
  border: 0.5px solid rgba(245,158,11,0.2); border-radius: 10px;
  padding: 10px 14px; margin-bottom: 12px; font-size: 12px;
  color: var(--amber); display: flex; align-items: center; gap: 8px;
}
.login-security-notice .lsn-icon { font-size: 18px; flex-shrink: 0; }

/* 操作日志 */
.log-list-item {
  display: flex; align-items: center; gap: 10px; padding: 10px 0;
  border-bottom: 0.5px solid var(--border); font-size: 13px;
}
.log-list-item:last-child { border-bottom: none; }
.log-time { color: var(--text-muted); font-size: 11px; white-space: nowrap; }
.log-action { color: var(--text); flex: 1; }
.log-ip { color: var(--text-muted); font-size: 11px; }

@media (max-width: 480px) {
  .admin-quick-nav { grid-template-columns: repeat(4, 1fr); gap: 6px; padding: 8px 12px; }
  .admin-action-grid { grid-template-columns: repeat(3, 1fr); }
}

/* ===== 论坛 BBS 样式 ===== */
.bbs-container { padding: 0 16px; }
.bbs-plate-grid {
  display: flex; flex-direction: column; gap: 10px;
}
.bbs-plate-card {
  display: flex; align-items: center; gap: 12px;
  padding: 14px 16px; border-radius: var(--r); cursor: pointer;
  background: var(--bg-card); border: 0.5px solid var(--border);
  transition: all 0.2s; box-shadow: var(--shadow-sm);
}
.bbs-plate-card:hover { transform: translateY(-1px); box-shadow: var(--shadow); }
.bbs-plate-card:active { transform: scale(0.985); }
.bbs-plate-icon { font-size: 28px; flex-shrink: 0; }
.bbs-plate-info { flex: 1; min-width: 0; }
.bbs-plate-name { font-size: 15px; font-weight: 700; color: var(--text); margin-bottom: 2px; }
.bbs-plate-desc { font-size: 12px; color: var(--text-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.bbs-plate-count { font-size: 12px; color: var(--text-muted); white-space: nowrap; flex-shrink: 0; }

.bbs-sort-row {
  display: flex; gap: 8px; padding: 8px 16px; border-bottom: 0.5px solid var(--border);
}
.bbs-sort-btn {
  padding: 6px 14px; border-radius: 16px; border: 0.5px solid var(--border);
  background: var(--bg-card); color: var(--text-secondary); font-size: 13px;
  cursor: pointer; transition: all 0.15s;
}
.bbs-sort-btn.active { background: var(--primary); color: #fff; border-color: var(--primary); }
.bbs-sort-btn:hover:not(.active) { background: var(--bg-secondary); }

.bbs-post-list { display: flex; flex-direction: column; }
.bbs-post-item {
  padding: 14px 16px; border-bottom: 0.5px solid var(--border);
  cursor: pointer; transition: background 0.15s;
}
.bbs-post-item:hover { background: var(--bg-secondary); }
.bbs-post-item:active { background: var(--border); }
.bbs-post-top {
  display: inline-block; padding: 2px 8px; border-radius: 4px;
  background: var(--red); color: #fff; font-size: 11px; font-weight: 600;
  margin-bottom: 4px;
}
.bbs-post-title { font-size: 15px; font-weight: 600; color: var(--text); margin-bottom: 6px; }
.bbs-post-meta { display: flex; gap: 12px; font-size: 12px; color: var(--text-muted); flex-wrap: wrap; align-items: center; }
.bbs-post-avatar { width: 28px; height: 28px; border-radius: 50%; background: var(--primary); color: #fff; display: flex; align-items: center; justify-content: center; font-size: 12px; font-weight: 700; flex-shrink: 0; overflow: hidden; }
.bbs-post-avatar img { width: 100%; height: 100%; object-fit: cover; border-radius: 50%; }
.bbs-post-stats { font-size: 11px; color: var(--text-muted); }
.bbs-avatar-wrap { width: 40px; height: 40px; border-radius: 50%; background: var(--primary); color: #fff; display: flex; align-items: center; justify-content: center; font-size: 16px; font-weight: 700; flex-shrink: 0; overflow: hidden; }
.bbs-avatar-img { width: 100%; height: 100%; object-fit: cover; }
.bbs-author-info { display: flex; flex-direction: column; gap: 2px; }
.bbs-detail-meta { font-size: 11px; color: var(--text-muted); }
.bbs-detail-author { display: flex; gap: 10px; align-items: center; }
.bbs-comment-avatar { width: 30px; height: 30px; border-radius: 50%; background: var(--primary); color: #fff; display: flex; align-items: center; justify-content: center; font-size: 12px; font-weight: 700; flex-shrink: 0; overflow: hidden; }
.bbs-comment-user { display: flex; gap: 8px; align-items: center; }
.bbs-comment-info { display: flex; flex-direction: column; gap: 1px; }
.bbs-comment-time { font-size: 11px; color: var(--text-muted); }
.bbs-detail-images { display: flex; gap: 8px; flex-wrap: wrap; margin: 10px 0; }
.bbs-detail-img { max-width: 200px; max-height: 200px; border-radius: 8px; object-fit: cover; }

.bbs-form { padding: 16px; display: flex; flex-direction: column; gap: 10px; }
.bbs-input {
  width: 100%; padding: 12px 14px; border-radius: var(--r-sm); border: 0.5px solid var(--border);
  background: var(--bg-card); color: var(--text); font-size: 14px; font-family: inherit;
  outline: none; transition: border-color 0.2s; box-sizing: border-box;
}
.bbs-input:focus { border-color: var(--primary); box-shadow: 0 0 0 3px var(--primary-glow); }
.bbs-textarea {
  width: 100%; padding: 12px 14px; border-radius: var(--r-sm); border: 0.5px solid var(--border);
  background: var(--bg-card); color: var(--text); font-size: 14px; font-family: inherit;
  outline: none; resize: vertical; min-height: 80px; transition: border-color 0.2s; box-sizing: border-box;
}
.bbs-textarea:focus { border-color: var(--primary); box-shadow: 0 0 0 3px var(--primary-glow); }

.bbs-detail-card {
  padding: 16px; background: var(--bg-card); border-radius: var(--r);
  border: 0.5px solid var(--border); margin-bottom: 12px;
}
.bbs-detail-header { margin-bottom: 12px; }
.bbs-detail-title { font-size: 18px; font-weight: 800; color: var(--text); margin-bottom: 8px; line-height: 1.4; }
.bbs-detail-author { display: flex; gap: 10px; font-size: 13px; color: var(--text-muted); align-items: center; }
.bbs-detail-time { color: var(--text-muted); font-size: 12px; }
.bbs-detail-content {
  font-size: 14px; color: var(--text); line-height: 1.7; margin-bottom: 16px;
  white-space: pre-wrap; word-break: break-word;
}
.bbs-detail-actions {
  display: flex; gap: 12px; padding-top: 12px; border-top: 0.5px solid var(--border);
}
.bbs-action-btn {
  padding: 8px 16px; border-radius: 20px; border: 0.5px solid var(--border);
  background: var(--bg-card); color: var(--text-secondary); font-size: 13px;
  cursor: pointer; transition: all 0.15s; display: flex; align-items: center; gap: 4px;
}
.bbs-action-btn:hover { background: var(--bg-secondary); }
.bbs-action-btn.liked { color: var(--red); border-color: var(--red); background: rgba(255,71,87,0.08); }

.bbs-comments-section { padding: 0 16px 16px; }
.bbs-comments-section h3 { font-size: 15px; font-weight: 700; color: var(--text); margin-bottom: 12px; }
.bbs-comment-list { display: flex; flex-direction: column; gap: 0; }
.bbs-comment-item {
  padding: 12px 0; border-bottom: 0.5px solid var(--border);
}
.bbs-comment-item:last-child { border-bottom: none; }
.bbs-comment-user { display: flex; gap: 8px; align-items: center; margin-bottom: 4px; }
.bbs-comment-time { font-size: 11px; color: var(--text-muted); }
.bbs-comment-content { font-size: 14px; color: var(--text); line-height: 1.5; }
.bbs-comment-form {
  display: flex; gap: 8px; padding: 12px 16px; background: var(--bg-card);
  border-top: 0.5px solid var(--border); align-items: flex-end;
}
.bbs-comment-form textarea { flex: 1; min-height: 36px; }

.bbs-post-detail-wrap { padding: 0 16px; }

/* ===== 笔记样式 ===== */
.notes-grid {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 12px;
}
.notes-card {
  padding: 16px; border-radius: var(--r); cursor: pointer;
  background: var(--bg-card); border: 0.5px solid var(--border);
  transition: all 0.2s; box-shadow: var(--shadow-sm);
}
.notes-card:hover { transform: translateY(-2px); box-shadow: var(--shadow-md); }
.notes-card:active { transform: scale(0.985); }
.notes-card-title {
  font-size: 15px; font-weight: 700; color: var(--text); margin-bottom: 6px;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.notes-card-preview {
  font-size: 13px; color: var(--text-secondary); line-height: 1.5;
  margin-bottom: 8px; display: -webkit-box; -webkit-line-clamp: 2;
  -webkit-box-orient: vertical; overflow: hidden;
}
.notes-card-meta {
  display: flex; gap: 10px; font-size: 11px; color: var(--text-muted);
  justify-content: space-between;
}

@media (max-width: 480px) {
  .notes-grid { grid-template-columns: 1fr; }
  .bbs-detail-title { font-size: 16px; }
  .bbs-comment-form { flex-direction: column; }
  .bbs-comment-form button { width: 100%; }
}

/* ===== 签到系统 ===== */
.checkin-container { padding: 0 16px; }
.checkin-card {
  background: var(--bg-card); border-radius: var(--r); border: 0.5px solid var(--border);
  padding: 24px 16px; text-align: center; box-shadow: var(--shadow-sm);
}
.checkin-streak { margin-bottom: 20px; }
.checkin-streak-num {
  font-size: 48px; font-weight: 900; color: var(--primary);
  background: linear-gradient(135deg, #f97316, #ef4444); -webkit-background-clip: text;
  -webkit-text-fill-color: transparent; line-height: 1;
}
.checkin-streak-label { font-size: 13px; color: var(--text-muted); margin-top: 4px; }
.checkin-week {
  display: flex; justify-content: center; gap: 10px; margin-bottom: 20px;
}
.checkin-day {
  display: flex; flex-direction: column; align-items: center; gap: 4px;
  padding: 8px 10px; border-radius: 12px; background: var(--bg-secondary);
  transition: all 0.2s;
}
.checkin-day.checked { background: rgba(249,115,22,0.12); }
.checkin-day.today { border: 2px solid #f97316; }
.checkin-day-name { font-size: 11px; color: var(--text-muted); }
.checkin-day-num { font-size: 16px; font-weight: 700; color: var(--text); }
.checkin-day-dot { font-size: 14px; }
.checkin-btn { width: 100%; padding: 14px; font-size: 16px; border-radius: 16px; }
.checkin-btn.done { background: var(--bg-secondary); color: var(--text-muted); border-color: var(--border); pointer-events: none; }
.checkin-tips { margin-top: 12px; font-size: 13px; color: var(--text-muted); }

/* ===== 积分排行榜 ===== */
.growth-tabs {
  display: flex; gap: 8px; padding: 8px 16px; border-bottom: 0.5px solid var(--border);
}
.growth-tab {
  padding: 6px 16px; border-radius: 16px; border: 0.5px solid var(--border);
  background: var(--bg-card); color: var(--text-secondary); font-size: 13px;
  cursor: pointer; transition: all 0.15s;
}
.growth-tab.active { background: var(--primary); color: #fff; border-color: var(--primary); }
.growth-container { padding: 0 16px; }
.growth-rank-list { display: flex; flex-direction: column; }
.growth-rank-item {
  display: flex; align-items: center; gap: 12px; padding: 12px 0;
  border-bottom: 0.5px solid var(--border);
}
.growth-rank-icon { width: 32px; text-align: center; font-size: 20px; flex-shrink: 0; }
.growth-rank-num { font-size: 14px; font-weight: 700; color: var(--text-muted); }
.growth-rank-avatar { font-size: 28px; flex-shrink: 0; }
.growth-rank-info { flex: 1; min-width: 0; }
.growth-rank-name { display: flex; align-items: center; gap: 6px; font-size: 14px; font-weight: 600; margin-bottom: 2px; }
.growth-rank-level { font-size: 11px; padding: 1px 6px; border-radius: 8px; background: var(--bg-secondary); }
.growth-rank-stats { display: flex; gap: 12px; font-size: 12px; color: var(--text-muted); }

/* ===== VIP 系统（现代版） ===== */
.vip-container { padding: 0 16px; }
.vip-hero-card {
  position: relative; margin-bottom: 20px; border-radius: 20px;
  background: linear-gradient(135deg, #1a1a2e 0%, #16213e 50%, #0f3460 100%);
  padding: 32px 20px; text-align: center; overflow: hidden;
  box-shadow: 0 8px 32px rgba(99,102,241,0.15);
}
.vip-hero-card.vip-active {
  background: linear-gradient(135deg, #1a1a2e 0%, #763900 50%, #b8860b 100%);
  box-shadow: 0 8px 40px rgba(234,179,8,0.25);
}
.vip-hero-glow {
  position: absolute; top: -50%; left: -50%; width: 200%; height: 200%;
  background: radial-gradient(circle at center, var(--primary-glow) 0%, transparent 60%);
  opacity: 0.3; pointer-events: none;
}
.vip-hero-content { position: relative; z-index: 1; }
.vip-hero-crown { font-size: 48px; margin-bottom: 12px; }
.vip-hero-title { font-size: 22px; font-weight: 800; color: #fff; margin-bottom: 6px; }
.vip-hero-subtitle { font-size: 13px; color: rgba(255,255,255,0.7); margin-bottom: 12px; }
.vip-hero-badge {
  display: inline-block; padding: 4px 16px; border-radius: 20px;
  background: rgba(234,179,8,0.2); color: #eab308; font-size: 12px; font-weight: 700;
  border: 1px solid rgba(234,179,8,0.3);
}
.vip-hero-badge-inactive {
  background: rgba(255,255,255,0.1); color: rgba(255,255,255,0.5);
  border: 1px solid rgba(255,255,255,0.15);
}
.vip-hero-sparkle {
  position: absolute; top: 0; left: 0; right: 0; bottom: 0;
  background: radial-gradient(ellipse at 30% 20%, rgba(255,215,0,0.15) 0%, transparent 50%),
              radial-gradient(ellipse at 70% 80%, rgba(255,193,7,0.1) 0%, transparent 50%);
  pointer-events: none; animation: sparkle-shift 3s ease-in-out infinite alternate;
}
@keyframes sparkle-shift {
  0% { opacity: 0.5; }
  100% { opacity: 1; }
}
.vip-section-title {
  font-size: 15px; font-weight: 700; color: var(--text); margin-bottom: 12px;
  padding: 0 4px;
}
/* 特权网格 */
.vip-privileges-section { margin-bottom: 20px; }
.vip-privileges-grid {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px;
}
@media (max-width: 480px) {
  .vip-privileges-grid { grid-template-columns: repeat(2, 1fr); }
}
.vip-privilege-card {
  display: flex; align-items: center; gap: 10px; padding: 12px;
  border-radius: 14px; background: var(--card-bg); border: 0.5px solid var(--border);
  transition: all 0.2s;
  box-shadow: var(--shadow-sm);
}
.vip-privilege-card:hover { transform: translateY(-1px); box-shadow: var(--shadow); }
.vip-priv-card-glow:hover { box-shadow: 0 0 20px var(--glow), var(--shadow-md); }
.vip-privilege-icon {
  width: 40px; height: 40px; border-radius: 12px; display: flex;
  align-items: center; justify-content: center; font-size: 20px; flex-shrink: 0;
}
.vip-privilege-info { flex: 1; min-width: 0; }
.vip-privilege-name { font-size: 13px; font-weight: 700; color: var(--text); margin-bottom: 2px; }
.vip-privilege-desc { font-size: 11px; color: var(--text-muted); line-height: 1.4; }
/* 套餐卡片 */
.vip-packages-section { margin-bottom: 20px; }
.vip-package-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; }
.vip-package-card {
  position: relative; padding: 16px 12px; border-radius: 16px; cursor: pointer;
  background: var(--card-bg); border: 0.5px solid var(--border);
  text-align: center; transition: all 0.2s; overflow: hidden;
  box-shadow: var(--shadow-sm);
}
.vip-package-card:hover { transform: translateY(-3px); box-shadow: var(--shadow-md); }
.vip-package-card:hover { box-shadow: 0 8px 24px var(--card-glow), var(--shadow-md); }
.vip-package-card:active { transform: scale(0.97); }
.vip-package-card.vip-pkg-popular { border-color: #eab308; border-width: 2px; }
.vip-pkg-badge {
  position: absolute; top: 0; left: 0; right: 0; padding: 4px;
  background: linear-gradient(135deg, #eab308, #ca8a04); color: #fff;
  font-size: 11px; font-weight: 700; letter-spacing: 1px;
}
.vip-pkg-save {
  position: absolute; top: 4px; right: 4px; padding: 3px 7px; border-radius: 10px;
  background: rgba(239,68,68,0.15); color: #ef4444; font-size: 10px; font-weight: 700;
}
.vip-pkg-days { font-size: 24px; font-weight: 800; margin: 4px 0; }
.vip-package-card.vip-pkg-popular .vip-pkg-days { margin-top: 20px; }
.vip-pkg-tier {
  font-size: 11px; font-weight: 700; letter-spacing: 1px; margin-bottom: 2px;
  text-transform: uppercase;
}
.vip-package-card.vip-pkg-popular .vip-pkg-tier { margin-top: 18px; }
.vip-pkg-privs { font-size: 11px; color: var(--text-muted); margin: 4px 0; font-weight: 500; }
.vip-tier-notice {
  text-align: center; padding: 8px 12px; margin-bottom: 12px; border-radius: 10px;
  background: rgba(234,179,8,0.08); color: var(--text-secondary); font-size: 12px;
  border: 0.5px solid rgba(234,179,8,0.15);
}
.vip-pkg-desc { font-size: 12px; color: var(--text-muted); margin-bottom: 8px; }
.vip-pkg-cost { font-size: 13px; color: var(--text-secondary); margin-bottom: 10px; }
.vip-pkg-cost-num { font-size: 18px; font-weight: 800; color: var(--text); }
.vip-pkg-btn {
  padding: 8px 0; border-radius: 10px; color: #fff; font-size: 13px;
  font-weight: 700; letter-spacing: 0.5px; transition: opacity 0.2s;
}
.vip-pkg-btn:hover { opacity: 0.9; }
.vip-balance-bar {
  text-align: center; padding: 10px; border-radius: 12px;
  background: var(--bg-secondary); font-size: 13px; color: var(--text-secondary);
  margin-top: 12px;
}
.vip-balance-bar b { color: var(--text); font-size: 16px; }

/* ===== 积分赠送 ===== */
.gift-container { padding: 0 16px; }
.gift-card {
  padding: 20px; border-radius: var(--r); background: var(--card-bg);
  border: 0.5px solid var(--border); margin-bottom: 16px;
  box-shadow: var(--shadow-sm);
}
.gift-info { text-align: center; margin-bottom: 20px; }
.gift-balance-label { font-size: 13px; color: var(--text-muted); margin-bottom: 4px; }
.gift-balance-num { font-size: 36px; font-weight: 800; color: var(--primary); }
.gift-form { display: flex; flex-direction: column; gap: 14px; }
.gift-field { position: relative; }
.gift-field label { display: block; font-size: 13px; font-weight: 600; color: var(--text); margin-bottom: 6px; }
.gift-input {
  width: 100%; padding: 12px 14px; border-radius: 10px; border: 0.5px solid var(--border);
  background: var(--bg-secondary); color: var(--text); font-size: 14px; font-family: inherit;
  outline: none; transition: border-color 0.2s; box-sizing: border-box;
}
.gift-input:focus { border-color: var(--primary); box-shadow: 0 0 0 3px var(--primary-glow); }
.gift-submit-btn { width: 100%; padding: 14px; font-size: 16px; font-weight: 700; margin-top: 4px; }
.gift-search-results {
  position: absolute; top: 100%; left: 0; right: 0; z-index: 10;
  background: var(--card-bg); border: 0.5px solid var(--border);
  border-radius: 10px; max-height: 200px; overflow-y: auto;
  box-shadow: var(--shadow-md); margin-top: 2px;
}
.gift-search-item {
  display: flex; align-items: center; gap: 10px; padding: 10px 14px;
  cursor: pointer; transition: background 0.15s; border-bottom: 0.5px solid var(--border);
}
.gift-search-item:last-child { border-bottom: none; }
.gift-search-item:hover { background: var(--bg-secondary); }
.gift-history { padding: 0; }
.gift-history-title { font-size: 15px; font-weight: 700; color: var(--text); margin-bottom: 12px; }

/* ===== 应用市场 ===== */
.appmarket-container { padding: 0 16px; }
.appmarket-cats {
  display: flex; gap: 8px; padding: 12px 0; overflow-x: auto; flex-wrap: wrap;
}
.appmarket-cat {
  padding: 6px 14px; border-radius: 16px; border: 0.5px solid var(--border);
  background: var(--bg-card); color: var(--text-secondary); font-size: 13px;
  cursor: pointer; white-space: nowrap; transition: all 0.15s;
}
.appmarket-cat.active { background: var(--primary); color: #fff; border-color: var(--primary); }
.appmarket-grid { display: flex; flex-direction: column; gap: 8px; }
.appmarket-item {
  display: flex; align-items: center; gap: 12px; padding: 14px;
  border-radius: var(--r); cursor: pointer; transition: all 0.15s;
  background: var(--bg-card); border: 0.5px solid var(--border);
}
.appmarket-item:hover { background: var(--bg-secondary); }
.appmarket-item:active { transform: scale(0.985); }
.appmarket-icon {
  width: 48px; height: 48px; border-radius: 12px; flex-shrink: 0;
  background: var(--bg-secondary); display: flex; align-items: center; justify-content: center;
  font-size: 24px; overflow: hidden;
}
.appmarket-icon img { width: 100%; height: 100%; object-fit: cover; }
.appmarket-info { flex: 1; min-width: 0; }
.appmarket-title { font-size: 15px; font-weight: 600; color: var(--text); margin-bottom: 2px; }
.appmarket-meta { font-size: 12px; color: var(--text-muted); margin-bottom: 2px; }
.appmarket-stats { font-size: 11px; color: var(--text-muted); }

.appmarket-detail { padding: 16px; }
.appmarket-detail-header { display: flex; gap: 14px; margin-bottom: 16px; }
.appmarket-detail-icon {
  width: 64px; height: 64px; border-radius: 16px; flex-shrink: 0;
  background: var(--bg-secondary); display: flex; align-items: center; justify-content: center;
  font-size: 32px; overflow: hidden;
}
.appmarket-detail-icon img { width: 100%; height: 100%; object-fit: cover; }
.appmarket-detail-info { flex: 1; }
.appmarket-detail-title { font-size: 18px; font-weight: 800; color: var(--text); margin-bottom: 4px; }
.appmarket-detail-meta { display: flex; gap: 10px; font-size: 12px; color: var(--text-muted); flex-wrap: wrap; }
.appmarket-detail-stats { display: flex; gap: 12px; font-size: 12px; color: var(--text-muted); margin-top: 4px; }
.appmarket-detail-desc {
  font-size: 14px; color: var(--text); line-height: 1.6; padding: 14px;
  background: var(--bg-secondary); border-radius: var(--r-sm);
}

/* 应用市场空状态 */
.appmarket-empty {
  text-align: center; padding: 40px 20px; color: var(--text-muted);
}
.appmarket-empty-icon {
  font-size: 48px; margin-bottom: 12px; opacity: 0.5;
}
.appmarket-empty-text {
  font-size: 14px; margin-bottom: 16px; color: var(--text-muted);
}
.appmarket-empty-btn {
  display: inline-block; padding: 10px 24px; border-radius: 20px;
  background: var(--primary); color: #fff; font-size: 14px; font-weight: 600;
  cursor: pointer; transition: all 0.2s; border: none;
}
.appmarket-empty-btn:hover { background: var(--primary-dark); transform: translateY(-1px); box-shadow: var(--shadow); }
.appmarket-empty-btn:active { transform: scale(0.97); }