/*============================================================
  LuckyBBS Design System — Apple-inspired Premium Theme
  v2.0 — Dark Mode • Responsive • GPU-friendly
============================================================*/
@import url('tailwind-compat.css');

/*----- CSS Custom Properties -----*/
:root {
  /* == Typography == */
  --font-heading: -apple-system, BlinkMacSystemFont, "SF Pro Display", "PingFang SC", "Microsoft YaHei", sans-serif;
  --font-body: -apple-system, BlinkMacSystemFont, "SF Pro Text", "PingFang SC", "Microsoft YaHei", sans-serif;
  --font-mono: "SF Mono", "Fira Code", "Cascadia Code", Consolas, monospace;
  
  /* Type scale */
  --text-xs: 0.75rem;
  --text-sm: 0.8125rem;
  --text-base: 0.9375rem;
  --text-lg: 1.0625rem;
  --text-xl: 1.25rem;
  --text-2xl: 1.5rem;
  --text-3xl: 1.875rem;
  --text-4xl: 2.25rem;
  
  /* == Colors: Light == */
  --bg-base: #f5f5f7;
  --bg-elevated: #ffffff;
  --bg-surface: #fafafa;
  --bg-inset: #f0f0f2;
  --bg-hover: rgba(0,0,0,0.04);
  
  --text-primary: #1d1d1f;
  --text-secondary: #515154;
  --text-tertiary: #86868b;
  --text-muted: #aeaeb2;
  --text-link: #0071e3;
  
  --border-light: rgba(0,0,0,0.06);
  --border-medium: rgba(0,0,0,0.10);
  --border-heavy: rgba(0,0,0,0.15);
  
  --accent: #0071e3;
  --accent-hover: #0077ed;
  --accent-light: rgba(0,113,227,0.08);
  --accent-glow: rgba(0,113,227,0.25);
  
  --brand-gradient: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
  --brand-gradient-warm: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);
  
  --success: #34c759;
  --success-light: rgba(52,199,89,0.1);
  --warning: #ff9f0a;
  --warning-light: rgba(255,159,10,0.1);
  --danger: #ff3b30;
  --danger-light: rgba(255,59,48,0.1);
  --info: #5ac8fa;
  --info-light: rgba(90,200,250,0.1);
  
  /* == Spacing (4px grid) == */
  --space-0: 0;
  --space-1: 0.25rem;
  --space-2: 0.5rem;
  --space-3: 0.75rem;
  --space-4: 1rem;
  --space-5: 1.25rem;
  --space-6: 1.5rem;
  --space-8: 2rem;
  --space-10: 2.5rem;
  --space-12: 3rem;
  --space-16: 4rem;
  --space-20: 5rem;
  --space-24: 6rem;
  
  /* == Radius == */
  --radius-sm: 6px;
  --radius-md: 10px;
  --radius-lg: 14px;
  --radius-xl: 18px;
  --radius-2xl: 24px;
  --radius-pill: 980px;
  --radius-full: 9999px;
  
  /* == Shadows == */
  --shadow-sm: 0 1px 2px rgba(0,0,0,0.04), 0 0 0 1px rgba(0,0,0,0.02);
  --shadow-md: 0 4px 12px rgba(0,0,0,0.05), 0 0 0 1px rgba(0,0,0,0.04);
  --shadow-lg: 0 12px 32px rgba(0,0,0,0.06), 0 0 0 1px rgba(0,0,0,0.04);
  --shadow-xl: 0 20px 48px rgba(0,0,0,0.08), 0 0 0 1px rgba(0,0,0,0.04);
  --shadow-button: 0 2px 8px rgba(0,113,227,0.25);
  --shadow-card-hover: 0 16px 40px rgba(0,0,0,0.08), 0 0 0 1px rgba(0,0,0,0.06);
  
  /* == Transitions == */
  --transition-fast: 150ms cubic-bezier(0.4, 0, 0.2, 1);
  --transition-base: 250ms cubic-bezier(0.4, 0, 0.2, 1);
  --transition-slow: 400ms cubic-bezier(0.4, 0, 0.2, 1);
  --spring: cubic-bezier(0.175, 0.885, 0.32, 1.275);
  
  /* == Layout == */
  --max-width: 1400px;
  --navbar-height: 52px;
  --sidebar-width: 200px;
  
  /* == Z-index == */
  --z-dropdown: 50;
  --z-sticky: 100;
  --z-overlay: 200;
  --z-modal: 300;
  --z-toast: 400;
}

/*----- Dark Mode -----*/
[data-theme="dark"] {
  --bg-base: #161618;
  --bg-elevated: #1c1c1e;
  --bg-surface: #222224;
  --bg-inset: #2c2c2e;
  --bg-hover: rgba(255,255,255,0.06);
  
  --text-primary: #f5f5f7;
  --text-secondary: #a1a1a6;
  --text-tertiary: #6e6e73;
  --text-muted: #48484a;
  --text-link: #409cff;
  
  --border-light: rgba(255,255,255,0.06);
  --border-medium: rgba(255,255,255,0.10);
  --border-heavy: rgba(255,255,255,0.15);
  
  --accent: #409cff;
  --accent-hover: #3395ff;
  --accent-light: rgba(64,156,255,0.12);
  --accent-glow: rgba(64,156,255,0.3);
  
  --shadow-sm: 0 1px 2px rgba(0,0,0,0.3);
  --shadow-md: 0 4px 12px rgba(0,0,0,0.3);
  --shadow-lg: 0 12px 32px rgba(0,0,0,0.4);
  --shadow-xl: 0 20px 48px rgba(0,0,0,0.5);
  --shadow-button: 0 2px 12px rgba(64,156,255,0.3);
  --shadow-card-hover: 0 16px 40px rgba(0,0,0,0.5);
}

/*----- Reset & Base -----*/
*,*::before,*::after{box-sizing:border-box}
html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
body{
  margin:0;padding:0;
  font-family:var(--font-body);
  font-size:var(--text-base);
  line-height:1.6;
  color:var(--text-primary);
  background:var(--bg-base);
  min-height:100vh;
  display:flex;flex-direction:column;
  transition: background var(--transition-base), color var(--transition-base);
}
a{color:var(--text-link);text-decoration:none;transition:color var(--transition-fast)}
a:hover{color:var(--accent-hover)}
img{max-width:100%;height:auto}
h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);margin:0;line-height:1.2;font-weight:600}

/*----- Container -----*/
.x-container{
  width:100%;max-width:var(--max-width);
  margin:0 auto;
  padding-left:var(--space-6);padding-right:var(--space-6);
}

/*----- Navbar (Apple-style sticky with backdrop blur) -----*/
.x-navbar{
  position:sticky;top:0;z-index:var(--z-sticky);
  height:var(--navbar-height);
  background:rgba(245,245,247,0.72);
  backdrop-filter:saturate(180%) blur(20px);
  -webkit-backdrop-filter:saturate(180%) blur(20px);
  border-bottom:1px solid var(--border-light);
  transition:background var(--transition-base),border-color var(--transition-base);
}
[data-theme="dark"] .x-navbar{
  background:rgba(22,22,24,0.78);
}
.x-navbar-inner{
  max-width:var(--max-width);margin:0 auto;
  height:100%;display:flex;align-items:center;
  padding:0 var(--space-6);
  gap:var(--space-6);
}
.x-nav-logo{
  font-family:var(--font-heading);font-size:var(--text-xl);font-weight:700;
  color:var(--text-primary);text-decoration:none;
  display:flex;align-items:center;gap:var(--space-2);
  flex-shrink:0;
}
.x-nav-logo-icon{
  width:32px;height:32px;border-radius:var(--radius-md);
  background:var(--brand-gradient);
  display:flex;align-items:center;justify-content:center;
  color:#fff;font-weight:800;font-size:14px;
}
.x-nav-links{display:flex;align-items:center;gap:var(--space-1);list-style:none;margin:0;padding:0}
.x-nav-link{
  display:block;padding:6px 14px;border-radius:var(--radius-md);
  font-size:var(--text-sm);font-weight:500;
  color:var(--text-secondary);
  transition:all var(--transition-fast);
  position:relative;
}
.x-nav-link:hover{color:var(--text-primary);background:var(--bg-hover)}
.x-nav-link.active{color:var(--accent);background:var(--accent-light)}

.x-nav-search{
  flex:1;max-width:320px;position:relative;
}
.x-nav-search input{
  width:100%;height:36px;padding:0 16px 0 36px;
  border:1px solid var(--border-medium);border-radius:var(--radius-pill);
  background:var(--bg-elevated);
  font-size:var(--text-sm);color:var(--text-primary);outline:none;
  transition:all var(--transition-fast);
}
.x-nav-search input:focus{
  border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-light);
  background:var(--bg-elevated);
}
.x-nav-search input::placeholder{color:var(--text-muted)}
.x-nav-search-icon{
  position:absolute;left:12px;top:50%;transform:translateY(-50%);
  color:var(--text-muted);font-size:14px;pointer-events:none;
}
.x-nav-search kbd{
  position:absolute;right:8px;top:50%;transform:translateY(-50%);
  font-size:10px;color:var(--text-muted);
  background:var(--bg-inset);padding:1px 5px;border-radius:4px;
  border:1px solid var(--border-light);line-height:1.4;
}

.x-nav-actions{display:flex;align-items:center;gap:var(--space-2);flex-shrink:0}
.x-nav-avatar{
  width:32px;height:32px;border-radius:var(--radius-full);
  background:var(--brand-gradient);
  display:flex;align-items:center;justify-content:center;
  color:#fff;font-size:12px;font-weight:600;
  cursor:pointer;transition:transform var(--transition-fast);
  position:relative;text-decoration:none;
}
.x-nav-avatar:hover{transform:scale(1.12)}
.x-nav-avatar::after{
  content:attr(title);
  position:absolute;bottom:-28px;left:50%;transform:translateX(-50%);
  background:var(--text-primary);color:var(--bg-elevated);
  font-size:10px;padding:2px 8px;border-radius:4px;
  white-space:nowrap;pointer-events:none;
  opacity:0;transition:opacity 0.2s;
}
.x-nav-avatar:hover::after{opacity:1}
.x-avatar-text{line-height:1}

.x-btn{
  display:inline-flex;align-items:center;justify-content:center;
  gap:6px;padding:8px 18px;
  font-size:var(--text-sm);font-weight:500;line-height:1.4;
  border:none;border-radius:var(--radius-pill);
  cursor:pointer;text-decoration:none;
  transition:all var(--transition-fast);
  white-space:nowrap;
}
.x-btn-primary{background:var(--accent);color:#fff}
.x-btn-primary:hover{background:var(--accent-hover);box-shadow:var(--shadow-button);color:#fff}
.x-btn-outline{background:transparent;color:var(--accent);border:1px solid var(--accent)}
.x-btn-outline:hover{background:var(--accent-light)}
.x-btn-ghost{background:transparent;color:var(--text-secondary)}
.x-btn-ghost:hover{background:var(--bg-hover);color:var(--text-primary)}
.x-btn-sm{padding:5px 12px;font-size:var(--text-xs)}
.x-btn-lg{padding:12px 28px;font-size:var(--text-base)}

/*----- Theme Toggle -----*/
.x-theme-toggle{
  width:36px;height:36px;border-radius:var(--radius-full);
  border:1px solid var(--border-medium);background:var(--bg-elevated);
  cursor:pointer;display:flex;align-items:center;justify-content:center;
  font-size:16px;color:var(--text-secondary);transition:all var(--transition-fast);
}
.x-theme-toggle:hover{background:var(--bg-hover);color:var(--text-primary)}

/*----- Mobile menu -----*/
.x-mobile-toggle{
  display:none;width:36px;height:36px;border-radius:var(--radius-md);
  border:none;background:var(--bg-elevated);cursor:pointer;
  align-items:center;justify-content:center;flex-direction:column;
  gap:4px;padding:8px;transition:all var(--transition-fast);
}
.x-mobile-toggle span{
  display:block;width:18px;height:2px;background:var(--text-primary);
  border-radius:2px;transition:all var(--transition-fast);
}
.x-mobile-toggle.active span:nth-child(1){transform:rotate(45deg) translate(4px,4px)}
.x-mobile-toggle.active span:nth-child(2){opacity:0}
.x-mobile-toggle.active span:nth-child(3){transform:rotate(-45deg) translate(4px,-4px)}

/*----- Page Wrapper -----*/
.x-page{padding:var(--space-6) 0 var(--space-4);flex:1}

/*----- Three-Column Layout -----*/
.x-grid{
  display:grid;grid-template-columns:220px 1fr 260px;
  gap:var(--space-6);align-items:start;
  max-width:var(--max-width);margin:0 auto;
  padding:0 var(--space-6);
}

/*----- Sidebar Cards -----*/
.x-sidebar{display:flex;flex-direction:column;gap:var(--space-4);position:sticky;top:68px}
.x-side-card{
  background:var(--bg-elevated);border-radius:var(--radius-lg);
  padding:var(--space-5);
  border:1px solid var(--border-light);
  transition:all var(--transition-base);
}
.x-side-card:hover{box-shadow:var(--shadow-md)}
.x-side-card-title{
  font-size:var(--text-sm);font-weight:600;color:var(--text-secondary);
  margin-bottom:var(--space-3);padding-bottom:var(--space-3);
  border-bottom:1px solid var(--border-light);
  display:flex;align-items:center;gap:6px;
}
.x-side-card-title i{color:var(--accent)}

.x-stat-list{list-style:none;margin:0;padding:0}
.x-stat-item{display:flex;justify-content:space-between;padding:6px 0;font-size:var(--text-sm);color:var(--text-secondary)}
.x-stat-item strong{color:var(--text-primary);font-weight:600}

.x-side-nav{list-style:none;margin:0;padding:0}
.x-side-nav li{margin:0}
.x-side-nav a{
  display:flex;align-items:center;gap:8px;
  padding:8px 12px;border-radius:var(--radius-md);
  font-size:var(--text-sm);color:var(--text-secondary);
  transition:all var(--transition-fast);
}
.x-side-nav a:hover,.x-side-nav a.active{
  background:var(--accent-light);color:var(--accent);
}
.x-side-nav a .badge{
  margin-left:auto;background:var(--bg-inset);color:var(--text-tertiary);
  font-size:11px;padding:1px 7px;border-radius:var(--radius-pill);font-weight:600;
}

.x-quick-actions{display:flex;flex-direction:column;gap:6px}

/*----- Main Content Cards -----*/
.x-card{
  background:var(--bg-elevated);border-radius:var(--radius-lg);
  border:1px solid var(--border-light);
  transition:all var(--transition-base);
  overflow:hidden;
}
.x-card:hover{box-shadow:var(--shadow-md)}
.x-card-header{
  padding:var(--space-5) var(--space-6);
  border-bottom:1px solid var(--border-light);
  display:flex;align-items:center;justify-content:space-between;
  gap:var(--space-4);
}
.x-card-title{font-size:var(--text-lg);font-weight:600;color:var(--text-primary)}
.x-card-body{padding:var(--space-6)}
.x-card-footer{
  padding:var(--space-4) var(--space-6);
  border-top:1px solid var(--border-light);
  background:var(--bg-surface);
}

/*----- Stats Banner -----*/
.x-stats-grid{
  display:grid;grid-template-columns:repeat(4,1fr);
  gap:var(--space-4);margin-bottom:var(--space-6);
}
.x-stat-card{
  background:var(--bg-elevated);border-radius:var(--radius-lg);
  padding:var(--space-5) var(--space-6);
  border:1px solid var(--border-light);
  display:flex;align-items:center;gap:var(--space-4);
  transition:all var(--transition-base);
}
.x-stat-card:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}
.x-stat-icon{
  width:44px;height:44px;border-radius:var(--radius-md);
  display:flex;align-items:center;justify-content:center;
  font-size:18px;flex-shrink:0;
}
.x-stat-icon.purple{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}
.x-stat-icon.blue{background:linear-gradient(135deg,#4facfe,#00f2fe);color:#fff}
.x-stat-icon.green{background:linear-gradient(135deg,#43e97b,#38f9d7);color:#fff}
.x-stat-icon.orange{background:linear-gradient(135deg,#fa709a,#fee140);color:#fff}
.x-stat-icon.pink{background:linear-gradient(135deg,#f093fb,#f5576c);color:#fff}
.x-stat-icon.indigo{background:linear-gradient(135deg,#6366f1,#8b5cf6);color:#fff}
.x-stat-label{font-size:var(--text-xs);color:var(--text-tertiary);margin-bottom:2px}
.x-stat-value{font-size:var(--text-2xl);font-weight:700;color:var(--text-primary);line-height:1.2}
.x-stat-sub{font-size:var(--text-xs);color:var(--text-muted);margin-top:2px}

/*----- Post List -----*/
.x-post-tabs{
  display:flex;gap:var(--space-1);padding:var(--space-3) var(--space-6);
  border-bottom:1px solid var(--border-light);
  background:var(--bg-surface);
}
.x-post-tab{
  padding:6px 16px;border-radius:var(--radius-pill);
  font-size:var(--text-sm);font-weight:500;
  color:var(--text-secondary);
  background:transparent;border:none;cursor:pointer;
  transition:all var(--transition-fast);
}
.x-post-tab:hover{color:var(--text-primary);background:var(--bg-hover)}
.x-post-tab.active{background:var(--accent);color:#fff}

.x-post-list{list-style:none;margin:0;padding:0}
.x-post-item{
  display:flex;align-items:flex-start;gap:var(--space-4);
  padding:var(--space-4) var(--space-6);
  border-bottom:1px solid var(--border-light);
  transition:background var(--transition-fast);
  text-decoration:none;color:inherit;
}
.x-post-item:hover{background:var(--bg-hover)}
.x-post-item:last-child{border-bottom:none}
.x-post-avatar{
  width:40px;height:40px;border-radius:var(--radius-full);
  background:var(--brand-gradient);
  display:flex;align-items:center;justify-content:center;
  color:#fff;font-size:14px;font-weight:600;flex-shrink:0;
}
.x-post-body{flex:1;min-width:0}
.x-post-title{
  font-size:var(--text-base);font-weight:600;color:var(--text-primary);
  margin-bottom:4px;line-height:1.4;
  display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;
}
a:hover .x-post-title{color:var(--accent)}
.x-post-meta{
  display:flex;align-items:center;gap:var(--space-3);
  font-size:var(--text-xs);color:var(--text-tertiary);
  flex-wrap:wrap;
}
.x-post-meta i{font-size:11px}
.x-post-stats{display:flex;align-items:center;gap:var(--space-4);flex-shrink:0;font-size:var(--text-sm);color:var(--text-tertiary)}
.x-post-stat{display:flex;align-items:center;gap:4px}

.x-tag{
  display:inline-flex;align-items:center;gap:3px;
  padding:2px 10px;border-radius:var(--radius-pill);
  font-size:11px;font-weight:500;line-height:1.6;
}
.x-tag-hot{background:#fee2e2;color:#dc2626}
.x-tag-new{background:#dbeafe;color:#2563eb}
.x-tag-essence{background:#fef3c7;color:#d97706}
.x-tag-top{background:#ede9fe;color:#7c3aed}
[data-theme="dark"] .x-tag-hot{background:rgba(220,38,38,0.2);color:#fca5a5}
[data-theme="dark"] .x-tag-new{background:rgba(37,99,235,0.2);color:#93c5fd}
[data-theme="dark"] .x-tag-essence{background:rgba(217,119,6,0.2);color:#fcd34d}
[data-theme="dark"] .x-tag-top{background:rgba(124,58,237,0.2);color:#c4b5fd}

.x-badge{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;border-radius:var(--radius-pill);font-size:11px;font-weight:600;background:var(--bg-inset);color:var(--text-tertiary);line-height:1}
.x-badge-accent{background:var(--accent-light);color:var(--accent)}
.x-badge-success{background:var(--success-light);color:var(--success)}

/*----- Forum Info Card -----*/
.x-forum-card{position:relative;overflow:hidden;margin-bottom:var(--space-6)}
.x-forum-card .x-card-body{padding:var(--space-8) var(--space-6);position:relative;z-index:1}
.x-forum-card h2{font-size:var(--text-3xl);font-weight:700;color:var(--text-primary);margin-bottom:var(--space-2)}
.x-forum-card p{color:var(--text-secondary);margin:0}
.x-forum-moderators{display:flex;align-items:center;gap:var(--space-2);margin-top:var(--space-4);font-size:var(--text-xs);color:var(--text-tertiary)}

/*----- Pagination -----*/
.x-pagination{
  display:flex;align-items:center;justify-content:center;
  gap:var(--space-1);padding:var(--space-6) 0;
}
.x-page-btn{
  min-width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;
  border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:500;
  color:var(--text-secondary);background:var(--bg-elevated);
  border:1px solid var(--border-light);
  cursor:pointer;text-decoration:none;
  transition:all var(--transition-fast);
}
.x-page-btn:hover{background:var(--bg-hover);color:var(--text-primary)}
.x-page-btn.active{background:var(--accent);color:#fff;border-color:var(--accent)}
.x-page-btn.disabled{opacity:0.4;pointer-events:none}

/*----- Forum List (communities) -----*/
.x-forum-grid{
  display:grid;grid-template-columns:repeat(2,1fr);
  gap:var(--space-4);
}
.x-forum-item{
  background:var(--bg-elevated);border-radius:var(--radius-lg);
  padding:var(--space-4);
  border:1px solid var(--border-light);
  display:flex;align-items:flex-start;gap:var(--space-3);
  text-decoration:none;color:inherit;
  transition:all var(--transition-base);
}
.x-forum-item:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}
.x-forum-item-icon{
  width:40px;height:40px;border-radius:var(--radius-md);
  display:flex;align-items:center;justify-content:center;
  font-size:17px;flex-shrink:0;
}
.x-forum-item-icon.default{background:var(--brand-gradient);color:#fff}
.x-forum-item-body{flex:1;min-width:0}
.x-forum-item-name{font-size:var(--text-base);font-weight:600;color:var(--text-primary);margin-bottom:4px}
.x-forum-item-desc{font-size:var(--text-xs);color:var(--text-tertiary);margin-bottom:4px}
.x-forum-item-last{font-size:11px;color:var(--text-muted)}

/*----- Forum Nav (Left Sidebar) -----*/
.x-forum-nav{list-style:none;margin:0;padding:0}
.x-forum-nav li{margin:0}
.x-forum-nav-item{
  display:flex;align-items:center;gap:10px;
  padding:10px var(--space-5);
  color:var(--text-secondary);text-decoration:none;
  border-left:3px solid transparent;
  transition:all var(--transition-fast);
  font-size:var(--text-sm);
}
.x-forum-nav-item:hover{
  background:var(--bg-hover);color:var(--text-primary);
}
.x-forum-nav-item.active{
  background:var(--accent-light);color:var(--accent);
  border-left-color:var(--accent);font-weight:600;
}
.x-forum-nav-icon{
  width:36px;height:36px;border-radius:var(--radius-md);
  display:flex;align-items:center;justify-content:center;
  font-size:14px;flex-shrink:0;
}
.x-forum-nav-icon.default{background:var(--brand-gradient);color:#fff}
.x-forum-nav-body{flex:1;min-width:0}
.x-forum-nav-name{
  font-size:var(--text-sm);font-weight:500;
  display:block;line-height:1.3;
}
.x-forum-nav-desc{
  font-size:11px;color:var(--text-tertiary);
  display:block;line-height:1.3;margin-top:1px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.x-forum-nav-badge{
  font-size:11px;padding:1px 7px;border-radius:var(--radius-pill);
  background:var(--bg-inset);color:var(--text-tertiary);
  font-weight:600;flex-shrink:0;
}
.x-forum-nav-item.active .x-forum-nav-badge{
  background:rgba(255,255,255,0.6);color:var(--accent);
}

/*----- Post Detail Actions -----*/
.x-post-actions{
  display:flex;align-items:center;justify-content:space-between;
  flex-wrap:wrap;gap:var(--space-2);
  padding:var(--space-3) var(--space-5);
  background:var(--bg-surface);border-top:1px solid var(--border-light);
}
.x-post-actions-group{
  display:flex;align-items:center;gap:var(--space-1);
}
.x-post-act{
  display:inline-flex;align-items:center;gap:5px;
  padding:6px 14px;border-radius:var(--radius-pill);
  font-size:var(--text-sm);font-weight:500;
  background:transparent;color:var(--text-secondary);
  border:1px solid transparent;
  cursor:pointer;text-decoration:none;
  transition:all 0.2s cubic-bezier(0.25,0.8,0.25,1.2);
  -webkit-tap-highlight-color:transparent;
  user-select:none;white-space:nowrap;
}
.x-post-act:active{transform:scale(0.94)}
.x-post-act:hover{
  background:var(--bg-hover);color:var(--text-primary);
  border-color:var(--border-light);
}
/* Variants */
.x-post-act--like{color:var(--text-secondary)}
.x-post-act--like:hover{background:#fef2f2;color:#ef4444;border-color:#fecaca}
.x-post-act--like.active{background:#fef2f2;color:#ef4444;border-color:#fecaca;box-shadow:0 0 0 2px rgba(239,68,68,0.12)}
.x-post-act--collect{color:var(--text-secondary)}
.x-post-act--collect:hover{background:#fffbeb;color:#f59e0b;border-color:#fde68a}
.x-post-act--collect.active{background:#fffbeb;color:#f59e0b;border-color:#fde68a;box-shadow:0 0 0 2px rgba(245,158,11,0.12)}
.x-post-act--follow{color:var(--text-secondary)}
.x-post-act--follow:hover{background:#eff6ff;color:#3b82f6;border-color:#bfdbfe}
.x-post-act--follow.active{background:#eff6ff;color:#3b82f6;border-color:#bfdbfe;box-shadow:0 0 0 2px rgba(59,130,246,0.12)}
.x-post-act--report{color:var(--text-muted);font-size:var(--text-xs)}
.x-post-act--report:hover{background:#fef2f2;color:#ef4444;border-color:#fecaca}
.x-post-act--stat{color:var(--text-tertiary);cursor:default;pointer-events:none;font-size:var(--text-sm)}
.x-post-act--stat:hover{background:transparent;color:var(--text-tertiary);border-color:transparent}
.x-post-act i{font-size:15px;width:15px;text-align:center}
.x-post-act--report i{font-size:12px}
.x-post-act .x-post-act-label{font-size:var(--text-sm)}
.x-post-act .x-post-act-count{font-weight:600;font-variant-numeric:tabular-nums}

/* Like animation */
@keyframes x-like-pop{
  0%{transform:scale(1)}
  30%{transform:scale(1.25)}
  60%{transform:scale(0.9)}
  100%{transform:scale(1)}
}
.x-post-act--like.popping{animation:x-like-pop 0.4s cubic-bezier(0.25,0.8,0.25,1.2)}

/*----- Comment Cards -----*/
.x-comment-list{list-style:none;margin:0;padding:0}
.x-comment-card{
  display:flex;gap:var(--space-3);
  padding:var(--space-4) var(--space-5);
  border-bottom:1px solid var(--border-light);
  transition:background 0.2s;
}
.x-comment-card:hover{background:var(--bg-hover)}
.x-comment-card:last-child{border-bottom:none}
.x-comment-avatar{
  width:36px;height:36px;border-radius:var(--radius-full);
  background:var(--brand-gradient);
  display:flex;align-items:center;justify-content:center;
  color:#fff;font-size:13px;font-weight:600;flex-shrink:0;
  text-decoration:none;transition:transform 0.2s;
}
.x-comment-avatar:hover{transform:scale(1.1)}
.x-comment-body{flex:1;min-width:0}
.x-comment-header{
  display:flex;align-items:center;flex-wrap:wrap;
  gap:6px;margin-bottom:4px;
}
.x-comment-author{
  font-size:var(--text-sm);font-weight:600;color:var(--text-primary);
  text-decoration:none;transition:color 0.15s;
}
.x-comment-author:hover{color:var(--accent)}
.x-comment-badge{
  display:inline-flex;align-items:center;
  padding:0 6px;border-radius:var(--radius-pill);
  font-size:10px;font-weight:600;line-height:18px;
}
.x-comment-badge--author{background:var(--accent-light);color:var(--accent)}
.x-comment-badge--lv{color:#fff;font-size:10px}
.x-comment-time{font-size:11px;color:var(--text-muted)}
.x-comment-text{
  font-size:var(--text-sm);color:var(--text-secondary);
  line-height:1.7;word-break:break-word;
  margin-bottom:6px;
}
.x-comment-text p{margin:0}
.x-comment-footer{
  display:flex;align-items:center;gap:2px;
}
.x-comment-act{
  display:inline-flex;align-items:center;gap:3px;
  padding:3px 8px;border-radius:var(--radius-pill);
  font-size:11px;color:var(--text-muted);
  background:transparent;border:none;cursor:pointer;
  transition:all 0.18s;
}
.x-comment-act:hover{background:var(--bg-hover);color:var(--text-primary)}
.x-comment-act--like:hover{color:#ef4444;background:#fef2f2}
.x-comment-act--like.liked{color:#ef4444}
.x-comment-act--report{color:var(--text-muted)}
.x-comment-act--report:hover{color:#ef4444;background:#fef2f2}
.x-comment-act i{font-size:11px}

/* Comment Editor */
.x-comment-editor{
  display:flex;gap:var(--space-3);padding:var(--space-4) var(--space-5);
  border-bottom:1px solid var(--border-light);
}
.x-comment-input{
  flex:1;border:1px solid var(--border-light);
  border-radius:var(--radius-lg);padding:10px 14px;
  font-size:var(--text-sm);font-family:inherit;
  resize:none;outline:none;background:var(--bg-base);
  color:var(--text-primary);transition:border-color 0.2s,box-shadow 0.2s;
  min-height:40px;line-height:1.5;
}
.x-comment-input:focus{
  border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-light);
}
.x-comment-submit{
  display:inline-flex;align-items:center;gap:6px;
  padding:8px 18px;border-radius:var(--radius-pill);
  font-size:var(--text-sm);font-weight:600;
  background:var(--accent);color:#fff;border:none;cursor:pointer;
  transition:all 0.2s;flex-shrink:0;white-space:nowrap;
}
.x-comment-submit:hover{filter:brightness(1.1);box-shadow:var(--shadow-button)}
.x-comment-submit:active{transform:scale(0.96)}
.x-comment-login-hint{
  text-align:center;padding:var(--space-6);
  border-bottom:1px solid var(--border-light);
}

/*----- Post Page Sticky Footer Fix -----*/
.x-post-page{
  display:flex;flex-direction:column;min-height:100vh;
}
.x-post-main{flex:1}

/* Mobile: action bar compact */
@media(max-width:640px){
  .x-post-actions{padding:var(--space-2) var(--space-3);gap:var(--space-1)}
  .x-post-act{padding:5px 10px;font-size:12px;gap:3px}
  .x-post-act i{font-size:13px}
  .x-post-act .x-post-act-label{font-size:12px}
  .x-comment-card{padding:var(--space-3) var(--space-4);gap:var(--space-2)}
  .x-comment-editor{padding:var(--space-3) var(--space-4);gap:var(--space-2)}
}

/*----- Auth Pages (login / register) -----*/
.x-auth-page{
  min-height:100vh;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(135deg, #f5f5f7 0%, #e8e8ed 50%, #f0f0f5 100%);
  padding:var(--space-6);
}
[data-theme="dark"] .x-auth-page{background:linear-gradient(135deg, #161618 0%, #1c1c1e 50%, #222224 100%)}
.x-auth-card{
  width:100%;max-width:420px;
  background:var(--bg-elevated);
  border-radius:var(--radius-2xl);
  padding:var(--space-10);
  box-shadow:var(--shadow-xl);
  border:1px solid var(--border-light);
}
.x-auth-card h1{font-size:var(--text-3xl);font-weight:700;text-align:center;margin-bottom:var(--space-2)}
.x-auth-card .subtitle{text-align:center;color:var(--text-tertiary);font-size:var(--text-sm);margin-bottom:var(--space-8)}

.x-form-group{margin-bottom:var(--space-5)}
.x-form-label{display:block;font-size:var(--text-sm);font-weight:500;color:var(--text-secondary);margin-bottom:6px}
.x-form-input{
  width:100%;height:44px;padding:0 14px;
  border:1px solid var(--border-medium);border-radius:var(--radius-md);
  background:var(--bg-elevated);font-size:var(--text-base);color:var(--text-primary);
  outline:none;transition:all var(--transition-fast);
}
.x-form-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-light)}
.x-form-input::placeholder{color:var(--text-muted)}
textarea.x-form-input{height:auto;padding:12px 14px;resize:vertical;min-height:100px}
.x-form-hint{font-size:var(--text-xs);color:var(--text-muted);margin-top:4px}

/*----- Post Detail -----*/
.x-post-detail{padding:var(--space-6)}
.x-post-detail h1{font-size:var(--text-3xl);font-weight:700;margin-bottom:var(--space-4)}
.x-post-author-card{
  display:flex;align-items:center;gap:var(--space-3);
  padding:var(--space-4);background:var(--bg-surface);
  border-radius:var(--radius-lg);margin-bottom:var(--space-6);
}
.x-post-content{
  font-size:var(--text-base);line-height:1.8;color:var(--text-primary);
}
.x-post-content p{margin:0 0 var(--space-4)}
.x-post-content img{border-radius:var(--radius-md)}
.x-post-content pre{
  background:var(--bg-inset);padding:var(--space-4);border-radius:var(--radius-md);
  font-family:var(--font-mono);font-size:var(--text-sm);overflow-x:auto;
}
.x-post-content blockquote{
  border-left:3px solid var(--accent);padding-left:var(--space-4);
  color:var(--text-secondary);margin:0 0 var(--space-4);
}

/*----- Comment Area -----*/
.x-comment-list{list-style:none;margin:0;padding:0}
.x-comment-item{
  padding:var(--space-5) 0;
  border-bottom:1px solid var(--border-light);
  display:flex;gap:var(--space-4);
}
.x-comment-reply{margin-left:var(--space-10);padding-left:var(--space-4);border-left:2px solid var(--border-light)}

/*----- Breadcrumb -----*/
.x-breadcrumb{
  display:flex;align-items:center;gap:var(--space-2);
  font-size:var(--text-sm);color:var(--text-tertiary);
  margin-bottom:var(--space-5);
  flex-wrap:wrap;
}
.x-breadcrumb a{color:var(--text-tertiary)}
.x-breadcrumb a:hover{color:var(--accent)}
.x-breadcrumb span{color:var(--text-secondary)}

/*----- Empty State -----*/
.x-empty{
  text-align:center;padding:var(--space-16) var(--space-6);
  color:var(--text-tertiary);
}
.x-empty i{font-size:48px;color:var(--text-muted);margin-bottom:var(--space-4);display:block}
.x-empty h3{font-size:var(--text-lg);color:var(--text-secondary);margin-bottom:var(--space-2)}
.x-empty p{font-size:var(--text-sm);margin-bottom:var(--space-6)}

/*----- Toast Notifications -----*/
.x-toast-container{
  position:fixed;bottom:var(--space-6);right:var(--space-6);
  z-index:var(--z-toast);display:flex;flex-direction:column;gap:var(--space-3);
  pointer-events:none;
}
.x-toast{
  padding:12px 20px;border-radius:var(--radius-md);
  background:var(--bg-elevated);box-shadow:var(--shadow-lg);
  border:1px solid var(--border-light);
  font-size:var(--text-sm);color:var(--text-primary);
  display:flex;align-items:center;gap:var(--space-3);
  pointer-events:auto;
  animation:x-toast-in var(--transition-slow) var(--spring);
  max-width:360px;
}
.x-toast.success{border-left:3px solid var(--success)}
.x-toast.error{border-left:3px solid var(--danger)}
.x-toast.info{border-left:3px solid var(--info)}
@keyframes x-toast-in{from{opacity:0;transform:translateY(12px) scale(0.96)}to{opacity:1;transform:translateY(0) scale(1)}}

/*----- Back to Top -----*/
.x-back-top{
  position:fixed;bottom:var(--space-6);right:var(--space-6);
  width:44px;height:44px;border-radius:var(--radius-full);
  background:var(--bg-elevated);border:1px solid var(--border-medium);
  box-shadow:var(--shadow-md);color:var(--text-secondary);
  display:flex;align-items:center;justify-content:center;
  cursor:pointer;opacity:0;transform:translateY(16px);
  transition:all var(--transition-base);
  z-index:var(--z-sticky);font-size:18px;
}
.x-back-top.visible{opacity:1;transform:translateY(0)}
.x-back-top:hover{background:var(--accent);color:#fff;border-color:var(--accent);box-shadow:var(--shadow-button)}

/*----- Skeleton Loading -----*/
.x-skeleton{
  background:linear-gradient(90deg,var(--bg-inset) 25%,var(--bg-hover) 50%,var(--bg-inset) 75%);
  background-size:200% 100%;animation:skeleton-shimmer 1.5s infinite;
  border-radius:var(--radius-md);
}
@keyframes skeleton-shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}

/*----- Footer -----*/
.x-footer{
  margin-top:var(--space-6);padding:var(--space-4) 0;
  background:var(--bg-elevated);border-top:1px solid var(--border-light);
}
.x-footer-grid{
  display:grid;grid-template-columns:2fr 1fr 1fr 1fr;
  gap:var(--space-8);max-width:var(--max-width);
  margin:0 auto;padding:0 var(--space-6);
}
.x-footer h4{font-size:var(--text-sm);font-weight:600;color:var(--text-secondary);margin-bottom:var(--space-4)}
.x-footer p,.x-footer a{font-size:var(--text-sm);color:var(--text-tertiary);line-height:1.8}
.x-footer a:hover{color:var(--accent)}
.x-footer-links{list-style:none;margin:0;padding:0}
.x-footer-links li{margin-bottom:4px}
.x-footer-bottom{
  max-width:var(--max-width);margin:0 auto;
  padding:0 var(--space-6);
  border-top:none;
  text-align:center;font-size:var(--text-xs);color:var(--text-muted);
  display:flex;align-items:center;justify-content:center;
  min-height:28px;
}

/*----- Responsive -----*/
@media(max-width:1024px){
  .x-grid{grid-template-columns:180px 1fr}
  .x-grid .x-sidebar:last-child{display:none}
  .x-forum-grid{grid-template-columns:1fr}
  .x-stats-grid{grid-template-columns:repeat(2,1fr)}
  .x-footer-grid{grid-template-columns:1fr 1fr}
}
@media(max-width:768px){
  :root{--navbar-height:48px}
  .x-grid{grid-template-columns:1fr}
  .x-grid .x-sidebar:first-child{display:none}
  .x-stats-grid{grid-template-columns:1fr 1fr}
  .x-container{padding:0 var(--space-4)}
  .x-page{padding:var(--space-4) 0 var(--space-3)}
  .x-nav-links{display:none}
  .x-nav-search{display:none}
  .x-mobile-toggle{display:flex}
  .x-nav-actions{gap:var(--space-1)}
  .x-footer-grid{grid-template-columns:1fr;gap:var(--space-6)}
  .x-card-body{padding:var(--space-4)}
  .x-card-header{padding:var(--space-4)}
  .x-post-item{padding:var(--space-3) var(--space-4)}
  .x-post-stats{display:none}
  .x-auth-card{padding:var(--space-8) var(--space-6)}
  .x-comment-reply{margin-left:var(--space-4)}
  .x-forum-card .x-card-body{padding:var(--space-6) var(--space-4)}

  /* Mobile: show forum nav as horizontal scroll */
  .x-mobile-forum-bar{display:flex}
}

/*----- Mobile Nav Drawer -----*/
.x-mobile-nav{
  position:fixed;top:0;left:0;right:0;bottom:0;
  background:rgba(0,0,0,0.4);z-index:var(--z-overlay);
  opacity:0;pointer-events:none;transition:opacity var(--transition-base);
}
.x-mobile-nav.open{opacity:1;pointer-events:auto}
.x-mobile-nav-panel{
  position:absolute;top:0;left:0;bottom:0;width:280px;
  background:var(--bg-elevated);padding:var(--space-6);
  transform:translateX(-100%);transition:transform var(--transition-base);
}
.x-mobile-nav.open .x-mobile-nav-panel{transform:translateX(0)}
.x-mobile-nav-links{list-style:none;margin:0;padding:0;margin-top:var(--space-8)}
.x-mobile-nav-links a{
  display:block;padding:10px 12px;border-radius:var(--radius-md);
  font-size:var(--text-base);color:var(--text-primary);font-weight:500;
  transition:background var(--transition-fast);
}
.x-mobile-nav-links a:hover{background:var(--bg-hover)}

/*----- Scrollbar -----*/
::-webkit-scrollbar{width:6px;height:6px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--border-medium);border-radius:3px}
::-webkit-scrollbar-thumb:hover{background:var(--border-heavy)}

/*----- Reduced Motion -----*/
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:0.01ms !important;transition-duration:0.01ms !important}
}

/*----- Utility: Tailwind compat helpers -----*/
.flex{display:flex}.grid{display:grid}.hidden{display:none}.block{display:block}.inline-flex{display:inline-flex}
.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}
.gap-1{gap:4px}.gap-2{gap:8px}.gap-3{gap:12px}.gap-4{gap:16px}.gap-6{gap:24px}
.text-center{text-align:center}.text-sm{font-size:var(--text-sm)}.text-xs{font-size:var(--text-xs)}
.font-bold{font-weight:700}.font-medium{font-weight:500}
.rounded{border-radius:var(--radius-md)}.rounded-lg{border-radius:var(--radius-lg)}.rounded-full{border-radius:var(--radius-full)}
.shadow{box-shadow:var(--shadow-md)}.shadow-lg{box-shadow:var(--shadow-lg)}
.p-4{padding:16px}.py-2{padding-top:8px;padding-bottom:8px}.px-4{padding-left:16px;padding-right:16px}
.mb-4{margin-bottom:16px}.mt-4{margin-top:16px}.mt-8{margin-top:32px}
.w-full{width:100%}.h-8{height:32px}
.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.relative{position:relative}.absolute{position:absolute}.fixed{position:fixed}
.transition{transition:all var(--transition-fast)}
.bg-gray-100{background:var(--bg-base)}