/* ========== 千万级顶级设计系统 - 赛博朋克高端风格 v20 ========== */
:root{
  --accent:#4f6ef7; --accent-2:#7c3aed;
  --bg-deep:#060a13;
  --bg:#0a1018;
  --bg-elevated:#0d1520;
  --bg-glass:rgba(13,21,32,0.75);
  --panel:#0f1a26;
  --panel-hover:#14202e;
  --panel-glass:rgba(15,26,38,0.6);
  --ink:#e6f4ff;
  --ink-soft:#b8d4e8;
  --muted:#6b8fa8;
  --muted-soft:#4a6b82;
  --neon:#00d4ff;
  --neon-d:#00a8cc;
  --neon-l:rgba(0,212,255,0.12);
  --neon-ll:rgba(0,212,255,0.05);
  --neon-glow:0 0 20px rgba(0,212,255,0.35),0 0 40px rgba(0,212,255,0.15),0 0 80px rgba(0,212,255,0.08);
  --neon-glow-sm:0 0 12px rgba(0,212,255,0.3);
  --cyber-purple:#a855f7;
  --cyber-purple-l:rgba(168,85,247,0.12);
  --cyber-pink:#ec4899;
  --cyber-amber:#f59e0b;
  --cyber-green:#10b981;
  --cyber-red:#ef4444;
  --cyber-blue:#3b82f6;
  --line:rgba(0,212,255,0.12);
  --line-soft:rgba(0,212,255,0.06);
  --shadow:0 4px 24px rgba(0,0,0,0.4),0 1px 3px rgba(0,212,255,0.05);
  --shadow-lg:0 8px 48px rgba(0,0,0,0.5),0 0 30px rgba(0,212,255,0.08);
  --shadow-neon:0 0 30px rgba(0,212,255,0.2),0 8px 32px rgba(0,0,0,0.4);
  --radius:16px;
  --radius-sm:10px;
  --radius-lg:20px;
  --radius-xl:24px;
  --radius-2xl:28px;
  --chip:rgba(0,212,255,0.08);
  --sidebar-w:270px;
  --topbar-h:68px;
  --font:-apple-system,"PingFang SC","Microsoft YaHei","Segoe UI",sans-serif;
  --mono:ui-monospace,"SF Mono","JetBrains Mono",Menlo,Consolas,monospace;
  --transition:all 0.3s cubic-bezier(0.4,0,0.2,1);
  --transition-fast:all 0.15s cubic-bezier(0.4,0,0.2,1);
  --transition-spring:all 0.4s cubic-bezier(0.34,1.56,0.64,1);
}
[data-theme="light"]{
  --bg-deep:#f0f7ff;
  --bg:#f8fbff;
  --bg-elevated:#ffffff;
  --bg-glass:rgba(255,255,255,0.85);
  --panel:#ffffff;
  --panel-hover:#f5faff;
  --panel-glass:rgba(255,255,255,0.7);
  --ink:#0f172a;
  --ink-soft:#334155;
  --muted:#64748b;
  --muted-soft:#94a3b8;
  --neon:#0284c7;
  --neon-d:#0369a1;
  --neon-l:rgba(2,132,199,0.08);
  --neon-ll:rgba(2,132,199,0.03);
  --neon-glow:0 0 20px rgba(2,132,199,0.15);
  --neon-glow-sm:0 0 8px rgba(2,132,199,0.12);
  --cyber-purple:#7c3aed;
  --cyber-purple-l:rgba(124,58,237,0.08);
  --line:rgba(2,132,199,0.12);
  --line-soft:rgba(2,132,199,0.06);
  --chip:rgba(2,132,199,0.06);
  --accent:#4f6ef7;--accent-2:#7c3aed;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%;overflow:hidden}
body{
  font-family:var(--font);background:var(--bg-deep);color:var(--ink);
  font-size:14px;line-height:1.7;-webkit-font-smoothing:antialiased;
  transition:var(--transition);position:relative;
}
body::before{
  content:'';position:fixed;inset:0;
  background:
    radial-gradient(ellipse 80% 50% at 20% 0%,rgba(0,212,255,0.08) 0%,transparent 50%),
    radial-gradient(ellipse 60% 40% at 80% 100%,rgba(168,85,247,0.06) 0%,transparent 50%),
    radial-gradient(ellipse 40% 30% at 50% 50%,rgba(236,72,153,0.03) 0%,transparent 50%);
  pointer-events:none;z-index:0;
  animation:bgPulse 8s ease-in-out infinite;
}
@keyframes bgPulse{0%,100%{opacity:1}50%{opacity:0.7}}
body::after{
  content:'';position:fixed;inset:0;
  background-image:
    linear-gradient(rgba(0,212,255,0.025) 1px,transparent 1px),
    linear-gradient(90deg,rgba(0,212,255,0.025) 1px,transparent 1px);
  background-size:60px 60px;pointer-events:none;z-index:0;opacity:0.5;
}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit;font-size:inherit}
input,textarea{font-family:inherit;color:inherit;font-size:inherit}
a{color:var(--neon);text-decoration:none;transition:var(--transition-fast)}
a:hover{color:var(--neon-d);text-shadow:var(--neon-glow-sm)}
::-webkit-scrollbar{width:6px;height:6px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--line);border-radius:3px;transition:var(--transition-fast)}
::-webkit-scrollbar-thumb:hover{background:var(--neon);box-shadow:var(--neon-glow-sm)}
::selection{background:rgba(0,212,255,0.35);color:#fff}
[data-theme="light"] ::selection{background:rgba(2,132,199,0.22);color:var(--ink)}
kbd{font-family:var(--mono);font-size:10px;background:var(--chip);color:var(--muted);padding:3px 8px;border-radius:6px;border:1px solid var(--line);font-weight:500}

/* ========== 启动画面 ========== */
.splash-screen{
  position:fixed;inset:0;z-index:9999;background:var(--bg-deep);
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  transition:opacity 0.6s ease,visibility 0.6s ease;
}
.splash-screen.hidden{opacity:0;visibility:hidden;pointer-events:none}
.splash-logo{
  width:80px;height:80px;border-radius:24px;
  background:linear-gradient(135deg,var(--neon),var(--cyber-purple));
  display:flex;align-items:center;justify-content:center;
  box-shadow:var(--neon-glow);margin-bottom:24px;
  animation:splashPulse 2s ease-in-out infinite;
  position:relative;
}
.splash-logo::before{
  content:'';position:absolute;inset:-8px;border-radius:32px;
  background:linear-gradient(135deg,var(--neon),var(--cyber-purple));
  opacity:0.2;filter:blur(16px);z-index:-1;animation:splashPulse 2s ease-in-out infinite;
}
.splash-logo svg{z-index:1}
@keyframes splashPulse{0%,100%{transform:scale(1);box-shadow:var(--neon-glow)}50%{transform:scale(1.05);box-shadow:0 0 40px rgba(0,212,255,0.5),0 0 80px rgba(168,85,247,0.3)}}
.splash-title{
  font-size:24px;font-weight:800;margin-bottom:8px;
  background:linear-gradient(135deg,var(--neon),var(--cyber-purple));
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;
  letter-spacing:1px;
}
.splash-sub{font-size:13px;color:var(--muted);margin-bottom:32px;letter-spacing:2px}
.splash-loader{width:200px;height:3px;background:var(--line);border-radius:2px;overflow:hidden;position:relative}
.splash-loader::after{
  content:'';position:absolute;top:0;left:-50%;width:50%;height:100%;
  background:linear-gradient(90deg,transparent,var(--neon),var(--cyber-purple),transparent);
  animation:splashLoad 1.2s ease-in-out infinite;
}
@keyframes splashLoad{0%{left:-50%}100%{left:100%}}

/* ========== 布局 ========== */
#sidebar{
  position:fixed;left:0;top:0;bottom:0;width:var(--sidebar-w);
  background:var(--panel-glass);backdrop-filter:blur(28px) saturate(1.3);
  -webkit-backdrop-filter:blur(28px) saturate(1.3);
  border-right:1px solid var(--line);display:flex;flex-direction:column;
  z-index:30;transition:var(--transition);
}
#sidebar::before{
  content:'';position:absolute;top:0;right:0;bottom:0;width:1px;
  background:linear-gradient(180deg,transparent,var(--neon),var(--cyber-purple),transparent);
  opacity:0.4;
}
#mainContent{margin-left:var(--sidebar-w);min-height:100vh;display:flex;flex-direction:column;position:relative;z-index:1}
#topbar{
  height:var(--topbar-h);background:var(--panel-glass);
  backdrop-filter:blur(24px) saturate(1.3);-webkit-backdrop-filter:blur(24px) saturate(1.3);
  border-bottom:1px solid var(--line);display:flex;align-items:center;
  padding:0 28px;gap:16px;position:sticky;top:0;z-index:20;
}
.view{
  display:none;padding:28px 32px;overflow-y:auto;
  height:calc(100vh - var(--topbar-h));
  animation:viewIn 0.5s cubic-bezier(0.4,0,0.2,1);
}
.view.active{display:block}
@keyframes viewIn{from{opacity:0;transform:translateY(16px) scale(0.99);filter:blur(6px)}to{opacity:1;transform:none;filter:none}}

/* ========== 侧边栏 ========== */
.side-brand{padding:22px 20px 18px;display:flex;align-items:center;gap:14px;border-bottom:1px solid var(--line-soft);position:relative}
.side-brand::after{content:'';position:absolute;bottom:0;left:20px;right:20px;height:1px;background:linear-gradient(90deg,transparent,var(--neon),var(--cyber-purple),transparent);opacity:0.5}
.logo{
  flex-shrink:0;width:44px;height:44px;border-radius:14px;
  background:linear-gradient(135deg,var(--neon),var(--cyber-purple));
  display:flex;align-items:center;justify-content:center;
  box-shadow:var(--neon-glow);position:relative;
}
.logo::before{content:'';position:absolute;inset:-3px;border-radius:17px;background:linear-gradient(135deg,var(--neon),var(--cyber-purple));opacity:0.3;filter:blur(10px);z-index:-1;animation:logoGlow 3s ease-in-out infinite}
@keyframes logoGlow{0%,100%{opacity:0.3}50%{opacity:0.5}}
.logo svg{z-index:1;filter:drop-shadow(0 0 8px rgba(255,255,255,0.3))}
.brand-text{min-width:0}
.brand-title{
  font-size:17px;font-weight:800;
  background:linear-gradient(135deg,var(--neon),var(--cyber-purple));
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;letter-spacing:0.5px;
}
.brand-sub{font-size:11px;color:var(--muted);white-space:nowrap;letter-spacing:0.8px;text-transform:uppercase}
.side-nav{flex:1;overflow-y:auto;padding:14px 12px;display:flex;flex-direction:column;gap:4px}
.nav-item{
  display:flex;align-items:center;gap:12px;padding:12px 16px;
  border-radius:var(--radius-sm);color:var(--muted);font-size:13px;
  transition:var(--transition-fast);width:100%;text-align:left;position:relative;font-weight:500;
}
.nav-item svg{flex-shrink:0;color:var(--muted-soft);transition:var(--transition)}
.nav-item:hover{background:var(--chip);color:var(--ink-soft);transform:translateX(2px)}
.nav-item:hover svg{color:var(--neon);filter:drop-shadow(0 0 4px var(--neon))}
.nav-item.active{
  background:linear-gradient(135deg,var(--neon-l),var(--cyber-purple-l));
  color:var(--neon);font-weight:600;border:1px solid var(--line);box-shadow:var(--neon-glow-sm);
}
.nav-item.active svg{color:var(--neon);filter:drop-shadow(0 0 6px var(--neon))}
.nav-item.active::before{
  content:'';position:absolute;left:0;top:50%;transform:translateY(-50%);
  width:4px;height:24px;background:linear-gradient(180deg,var(--neon),var(--cyber-purple));
  border-radius:0 4px 4px 0;box-shadow:0 0 10px var(--neon);
}
.nav-badge{
  margin-left:auto;background:var(--chip);color:var(--muted);
  font-size:10px;font-weight:700;padding:3px 9px;border-radius:12px;
  min-width:24px;text-align:center;border:1px solid var(--line);
  transition:var(--transition-fast);
}
.nav-badge.warn{background:rgba(239,68,68,0.15);color:var(--cyber-red);border-color:rgba(239,68,68,0.3);animation:pulse 2s infinite}
@keyframes pulse{0%,100%{box-shadow:0 0 0 0 rgba(239,68,68,0.4)}50%{box-shadow:0 0 0 8px rgba(239,68,68,0)}}
.nav-item.active .nav-badge{background:var(--neon);color:#fff;border-color:var(--neon);box-shadow:var(--neon-glow-sm)}
.nav-item .kbd{margin-left:auto}
.side-footer{padding:16px;border-top:1px solid var(--line-soft);display:flex;gap:10px}
.quick-capture{
  flex:1;display:flex;align-items:center;justify-content:center;gap:8px;
  background:linear-gradient(135deg,var(--neon),var(--cyber-purple));
  color:#fff;padding:12px 16px;border-radius:var(--radius-sm);
  font-size:12px;font-weight:600;transition:var(--transition);position:relative;overflow:hidden;
}
.quick-capture::before{content:'';position:absolute;inset:0;background:linear-gradient(135deg,transparent,rgba(255,255,255,0.2),transparent);transform:translateX(-100%);transition:transform 0.6s}
.quick-capture:hover::before{transform:translateX(100%)}
.quick-capture:hover{transform:translateY(-2px);box-shadow:var(--neon-glow),0 10px 30px rgba(168,85,247,0.35)}
.quick-capture:active{transform:translateY(0)}
.theme-switch{
  width:46px;height:46px;border-radius:var(--radius-sm);
  background:var(--chip);border:1px solid var(--line);
  display:flex;align-items:center;justify-content:center;
  cursor:pointer;transition:var(--transition-fast);color:var(--muted);flex-shrink:0;
}
/* v58.42: 安装 APP 方钮（46px 图标钮，与 theme-switch 同视觉语言）——
   270px 侧栏塞不下两个文字按钮，v58.41 复用 .quick-capture(flex:1) 实测挤压闪念速记 */
.install-app{
  width:46px;height:46px;border-radius:var(--radius-sm);
  background:var(--chip);border:1px solid var(--line);
  display:flex;align-items:center;justify-content:center;
  cursor:pointer;transition:var(--transition-fast);color:var(--muted);flex-shrink:0;
}
.install-app:hover{background:var(--neon-l);color:var(--neon);border-color:var(--neon);box-shadow:var(--neon-glow-sm);transform:translateY(-2px)}
.theme-switch:hover{background:var(--neon-l);color:var(--neon);border-color:var(--neon);box-shadow:var(--neon-glow-sm);transform:rotate(15deg)}
.theme-switch .moon{display:none}
[data-theme="dark"] .theme-switch .sun{display:none}
[data-theme="dark"] .theme-switch .moon{display:block}

/* ========== 顶栏 ========== */
.topbar-left{flex:1;display:flex;align-items:center;gap:16px;min-width:0}
.topbar-right{display:flex;align-items:center;gap:12px;flex-shrink:0}
.mobile-menu{display:none}
.search-quick{
  flex:1;max-width:560px;display:flex;align-items:center;gap:12px;
  padding:11px 18px;background:var(--panel);border:1px solid var(--line);
  border-radius:var(--radius-sm);color:var(--muted);cursor:pointer;
  transition:var(--transition);font-size:13px;
}
.search-quick:hover{border-color:var(--neon);background:var(--neon-ll);box-shadow:var(--neon-glow-sm);transform:translateY(-1px)}
.search-quick svg{color:var(--muted-soft);flex-shrink:0}
.search-quick span{flex:1}
.search-quick .kbd{margin-left:0}
.icon-btn{
  width:44px;height:44px;border-radius:var(--radius-sm);
  display:flex;align-items:center;justify-content:center;
  color:var(--muted);transition:var(--transition-fast);
  background:transparent;border:1px solid transparent;
}
.icon-btn:hover{background:var(--chip);color:var(--neon);border-color:var(--line);box-shadow:var(--neon-glow-sm);transform:scale(1.05)}

/* ========== 按钮 ========== */
.btn-primary{
  display:inline-flex;align-items:center;gap:8px;
  background:linear-gradient(135deg,var(--neon),var(--cyber-purple));
  color:#fff;padding:11px 20px;border-radius:var(--radius-sm);
  font-size:13px;font-weight:600;transition:var(--transition-spring);
  white-space:nowrap;position:relative;overflow:hidden;border:1px solid transparent;
}
.btn-primary::before{content:'';position:absolute;inset:0;background:linear-gradient(135deg,transparent,rgba(255,255,255,0.25),transparent);transform:translateX(-100%);transition:transform 0.6s}
.btn-primary:hover::before{transform:translateX(100%)}
.btn-primary:hover{transform:translateY(-2px) scale(1.02);box-shadow:var(--neon-glow),0 10px 30px rgba(168,85,247,0.3)}
.btn-primary:active{transform:translateY(0) scale(0.98)}
.btn-primary.sm{padding:8px 14px;font-size:12px}
.btn-ghost{
  display:inline-flex;align-items:center;gap:8px;
  background:var(--chip);color:var(--neon);padding:11px 18px;
  border-radius:var(--radius-sm);font-size:13px;font-weight:500;
  transition:var(--transition-fast);white-space:nowrap;border:1px solid var(--line);
}
.btn-ghost:hover{background:var(--neon-l);border-color:var(--neon);box-shadow:var(--neon-glow-sm);transform:translateY(-1px)}
.btn-ghost.sm{padding:8px 14px;font-size:12px}
.text-btn{color:var(--neon);font-size:12px;font-weight:500;padding:6px 12px;border-radius:8px;transition:var(--transition-fast)}
.text-btn:hover{background:var(--neon-l);text-shadow:var(--neon-glow-sm)}

/* ========== 仪表盘 ========== */
.dash-welcome{
  display:flex;justify-content:space-between;align-items:center;
  margin-bottom:28px;gap:24px;flex-wrap:wrap;padding:32px 36px;
  background:linear-gradient(135deg,var(--panel),var(--bg-elevated));
  border:1px solid var(--line);border-radius:var(--radius-xl);position:relative;overflow:hidden;
}
.dash-welcome::before{content:'';position:absolute;top:0;right:0;width:500px;height:500px;background:radial-gradient(circle,rgba(0,212,255,0.1) 0%,transparent 60%);pointer-events:none;animation:welcomeGlow 4s ease-in-out infinite}
@keyframes welcomeGlow{0%,100%{opacity:1;transform:scale(1)}50%{opacity:0.7;transform:scale(1.1)}}
.dash-welcome::after{content:'';position:absolute;bottom:0;left:20%;width:400px;height:300px;background:radial-gradient(circle,rgba(168,85,247,0.08) 0%,transparent 60%);pointer-events:none}
.dash-welcome h1{
  font-size:32px;font-weight:800;margin-bottom:8px;
  background:linear-gradient(135deg,var(--ink) 0%,var(--neon) 50%,var(--cyber-purple) 100%);
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;
  position:relative;z-index:1;
}
.dash-sub{color:var(--muted);font-size:15px;position:relative;z-index:1}
.dash-actions{display:flex;gap:12px;flex-shrink:0;position:relative;z-index:1}
.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-bottom:28px}
.stat-card{
  background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);
  padding:22px;display:flex;align-items:center;gap:18px;
  box-shadow:var(--shadow);transition:var(--transition-spring);position:relative;overflow:hidden;
}
.stat-card::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent,var(--neon),var(--cyber-purple),transparent);opacity:0;transition:opacity 0.4s}
.stat-card:hover{box-shadow:var(--shadow-lg);transform:translateY(-4px) scale(1.01);border-color:var(--neon)}
.stat-card:hover::before{opacity:1}
.stat-icon{width:56px;height:56px;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;flex-shrink:0;position:relative;transition:var(--transition)}
.stat-icon::after{content:'';position:absolute;inset:-4px;border-radius:calc(var(--radius-sm) + 4px);opacity:0.2;filter:blur(10px);z-index:-1;transition:var(--transition)}
.stat-card:hover .stat-icon{transform:scale(1.1)}
.stat-card:hover .stat-icon::after{opacity:0.4}
.stat-icon.green{background:rgba(16,185,129,0.12);color:var(--cyber-green)}
.stat-icon.green::after{background:var(--cyber-green)}
.stat-icon.amber{background:rgba(245,158,11,0.12);color:var(--cyber-amber)}
.stat-icon.amber::after{background:var(--cyber-amber)}
.stat-icon.purple{background:rgba(168,85,247,0.12);color:var(--cyber-purple)}
.stat-icon.purple::after{background:var(--cyber-purple)}
.stat-icon.red{background:rgba(239,68,68,0.12);color:var(--cyber-red)}
.stat-icon.red::after{background:var(--cyber-red)}
.stat-num{font-size:32px;font-weight:800;color:var(--ink);line-height:1;font-variant-numeric:tabular-nums}
.stat-label{font-size:12px;color:var(--muted);margin-top:6px;font-weight:500;letter-spacing:0.3px}
.daily-quote-card{
  background:linear-gradient(135deg,rgba(0,212,255,0.08),rgba(168,85,247,0.08));
  border:1px solid rgba(0,212,255,0.2);border-radius:var(--radius);
  padding:20px 28px;margin-bottom:24px;display:flex;align-items:center;gap:20px;
  position:relative;overflow:hidden;transition:var(--transition);
}
.daily-quote-card::before{
  content:'';position:absolute;inset:0;
  background:radial-gradient(circle at 20% 50%,rgba(0,212,255,0.06),transparent 60%);
  pointer-events:none;
}
.daily-quote-card:hover{border-color:rgba(0,212,255,0.4);box-shadow:var(--neon-glow-sm)}
.dq-mark{font-size:60px;line-height:1;color:rgba(0,212,255,0.25);font-family:Georgia,serif;flex-shrink:0;margin-top:-12px}
.dq-content{flex:1;position:relative;z-index:1}
.dq-text{font-size:16px;color:var(--ink);line-height:1.8;font-weight:500;letter-spacing:0.2px}
.dq-source{font-size:12px;color:var(--neon);margin-top:6px;opacity:0.8;font-style:italic}
.dq-refresh{
  flex-shrink:0;width:36px;height:36px;border-radius:50%;border:1px solid var(--line);
  background:var(--panel);color:var(--muted);cursor:pointer;display:flex;align-items:center;
  justify-content:center;transition:var(--transition-spring);
}
.dq-refresh:hover{border-color:var(--neon);color:var(--neon);background:rgba(0,212,255,0.08);transform:rotate(180deg);box-shadow:var(--neon-glow-sm)}
.dash-grid{display:grid;grid-template-columns:2fr 1fr;gap:18px}
.dash-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:22px;box-shadow:var(--shadow);transition:var(--transition)}
.dash-card:hover{box-shadow:var(--shadow-lg);border-color:var(--line)}
.dash-card.span-2{grid-column:span 2}
.card-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px;gap:10px}
.card-head h3{font-size:15px;font-weight:700;color:var(--ink)}
.card-sub{font-size:12px;color:var(--muted)}
.chart-area{position:relative;height:150px}
.tag-cloud{display:flex;gap:8px;flex-wrap:wrap}
.tag-cloud span{
  background:var(--chip);color:var(--ink-soft);border-radius:18px;padding:6px 16px;
  font-size:12px;cursor:pointer;transition:var(--transition-spring);
  font-weight:500;border:1px solid var(--line);
}
.tag-cloud span:hover{background:var(--neon-l);color:var(--neon);border-color:var(--neon);transform:translateY(-3px) scale(1.05);box-shadow:var(--neon-glow-sm)}
.recent-list{display:flex;flex-direction:column;gap:6px}
.recent-item{
  display:flex;align-items:center;gap:14px;padding:12px 14px;
  border-radius:var(--radius-sm);cursor:pointer;transition:var(--transition-fast);border:1px solid transparent;
}
.recent-item:hover{background:var(--neon-ll);border-color:var(--line);transform:translateX(4px)}
.ri-title{flex:1;font-size:13px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ri-time{font-size:11px;color:var(--muted);flex-shrink:0}
.quick-links{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.quick-link{
  display:flex;align-items:center;gap:12px;padding:14px 16px;
  background:var(--bg-elevated);border:1px solid var(--line);
  border-radius:var(--radius-sm);font-size:12px;color:var(--muted);
  transition:var(--transition-spring);text-align:left;font-weight:500;
}
.quick-link:hover{background:linear-gradient(135deg,var(--neon-l),var(--cyber-purple-l));border-color:var(--neon);color:var(--neon);transform:translateY(-3px);box-shadow:var(--neon-glow-sm)}
.ql-icon{font-size:22px}

/* ========== 笔记库 ========== */
.lib-layout{display:grid;grid-template-columns:300px 1fr 0px;gap:16px;height:calc(100vh - var(--topbar-h) - 56px);transition:grid-template-columns 0.35s cubic-bezier(0.4,0,0.2,1)}
.lib-layout.inspector-open{grid-template-columns:300px 1fr 300px}
.lib-sidebar{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);display:flex;flex-direction:column;overflow:hidden}
.lib-search{display:flex;align-items:center;gap:10px;padding:16px 18px;border-bottom:1px solid var(--line-soft);background:var(--bg-elevated)}
.lib-search svg{color:var(--muted-soft);flex-shrink:0}
.lib-search input{flex:1;border:none;outline:none;background:transparent;font-size:13px;color:var(--ink)}
.lib-search input::placeholder{color:var(--muted-soft)}
.filter-chips{display:flex;gap:7px;flex-wrap:wrap;padding:12px 16px;border-bottom:1px solid var(--line-soft);max-height:100px;overflow-y:auto}
.filter-chip{
  background:var(--chip);border:none;border-radius:16px;padding:5px 14px;
  font-size:11px;cursor:pointer;color:var(--muted);transition:var(--transition-fast);
  font-weight:500;border:1px solid var(--line);
}
.filter-chip:hover{background:var(--neon-ll);color:var(--neon);border-color:var(--neon);transform:scale(1.05)}
.filter-chip.active{background:linear-gradient(135deg,var(--neon),var(--cyber-purple));color:#fff;border-color:transparent;box-shadow:var(--neon-glow-sm)}
.note-list{flex:1;overflow-y:auto}
.note-item{padding:14px 18px;border-bottom:1px solid var(--line-soft);cursor:pointer;transition:var(--transition-fast);position:relative}
.note-item:hover{background:var(--panel-hover)}
.note-item.selected{background:var(--neon-l)}
.note-item.selected::before{
  content:'';position:absolute;left:0;top:0;bottom:0;width:4px;
  background:linear-gradient(180deg,var(--neon),var(--cyber-purple));box-shadow:0 0 10px var(--neon);
}
.note-item.selected .note-title{color:var(--neon)}
.note-title{font-weight:600;font-size:13px;margin-bottom:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-right:24px}
.note-meta{font-size:11px;color:var(--muted);display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.note-tag{background:var(--chip);color:var(--muted);border-radius:6px;padding:2px 8px;font-size:10px;border:1px solid var(--line)}
.lib-main{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;display:flex;flex-direction:column}
.editor-area{flex:1;overflow-y:auto;padding:0}
.editor-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;text-align:center;padding:40px;color:var(--muted)}
.editor-empty svg{margin-bottom:24px;opacity:0.4;animation:float 3s ease-in-out infinite}
@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}
.editor-empty h3{font-size:20px;color:var(--ink);margin-bottom:12px;font-weight:700}
.editor-empty p{font-size:13px;margin-bottom:28px;line-height:1.9}
.editor-empty .btn-primary{margin-top:8px}

/* ========== 编辑器 ========== */
.editor-wrap{display:flex;flex-direction:column;height:100%}
.editor-toolbar{display:flex;align-items:center;gap:4px;padding:12px 18px;border-bottom:1px solid var(--line-soft);background:var(--bg-elevated);flex-wrap:wrap}
.tb-btn{width:36px;height:36px;border-radius:10px;display:flex;align-items:center;justify-content:center;color:var(--muted);transition:var(--transition-fast);font-size:14px;font-weight:600}
.tb-btn:hover{background:var(--chip);color:var(--neon);box-shadow:var(--neon-glow-sm);transform:scale(1.1)}
.tb-sep{width:1px;height:24px;background:var(--line);margin:0 8px}
.editor-header{padding:24px 28px 0}
.editor-title{width:100%;font-size:26px;font-weight:800;border:none;outline:none;background:transparent;color:var(--ink);padding:8px 0;margin-bottom:12px}
.editor-title::placeholder{color:var(--muted-soft)}
.editor-meta{display:flex;gap:12px;flex-wrap:wrap;align-items:center;padding-bottom:16px;border-bottom:1px solid var(--line-soft)}
.meta-select,.meta-input{border:1px solid var(--line);border-radius:10px;padding:7px 14px;font-size:12px;background:var(--panel);color:var(--ink);outline:none;transition:var(--transition-fast)}
.meta-select:focus,.meta-input:focus{border-color:var(--neon);box-shadow:var(--neon-glow-sm)}
.editor-body{display:grid;grid-template-columns:1fr 1fr;gap:0;flex:1;min-height:300px}
.editor-content{border:none;outline:none;resize:none;padding:24px 28px;font-size:14px;line-height:2;background:var(--panel);color:var(--ink);font-family:var(--font);border-right:1px solid var(--line-soft)}
.editor-preview{padding:24px 28px;overflow-y:auto;background:var(--bg-elevated);font-size:14px;line-height:1.9}
.editor-preview h1{font-size:26px;color:var(--neon);margin:24px 0 12px;padding-bottom:10px;border-bottom:2px solid var(--line);text-shadow:var(--neon-glow-sm)}
.editor-preview h2{font-size:20px;color:var(--neon);margin:20px 0 10px}
.editor-preview h3{font-size:17px;color:var(--ink);margin:16px 0 8px}
.editor-preview p{margin:12px 0}
.editor-preview ul,.editor-preview ol{padding-left:24px;margin:12px 0}
.editor-preview li{margin:5px 0}
.editor-preview code{background:var(--chip);padding:3px 8px;border-radius:6px;font-family:var(--mono);font-size:12px;border:1px solid var(--line);color:var(--cyber-amber)}
.editor-preview blockquote{border-left:4px solid var(--neon);padding:14px 18px;color:var(--ink-soft);margin:14px 0;background:var(--neon-ll);border-radius:0 var(--radius-sm) var(--radius-sm) 0;box-shadow:var(--neon-glow-sm)}
.editor-footer{padding:14px 28px;border-top:1px solid var(--line-soft);display:flex;justify-content:space-between;align-items:center;background:var(--bg-elevated)}
.editor-tags{display:flex;gap:6px;flex-wrap:wrap;flex:1}
.editor-actions{display:flex;gap:12px;flex-shrink:0}
.tag-input{border:1px dashed var(--line);border-radius:8px;padding:5px 12px;font-size:11px;background:transparent;color:var(--muted);outline:none;width:100px;transition:var(--transition-fast)}
.tag-input:focus{border-color:var(--neon);color:var(--ink)}
.etag{background:var(--neon-l);color:var(--neon);border-radius:8px;padding:4px 12px;font-size:11px;display:inline-flex;align-items:center;gap:6px;font-weight:500;border:1px solid var(--line)}
.etag .remove{cursor:pointer;opacity:0.6;font-size:15px;line-height:1;transition:var(--transition-fast)}
.etag .remove:hover{opacity:1;transform:scale(1.2)}
.char-count{font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums}

/* ========== AI对话 ========== */
.chat-layout{display:grid;grid-template-columns:1fr 320px;gap:18px;height:calc(100vh - var(--topbar-h) - 56px)}
.chat-main{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);display:flex;flex-direction:column;overflow:hidden}
.chat-header{padding:20px 28px;border-bottom:1px solid var(--line-soft);display:flex;justify-content:space-between;align-items:center;flex-shrink:0;background:var(--bg-elevated)}
.chat-header h2{font-size:18px;font-weight:700;background:linear-gradient(135deg,var(--neon),var(--cyber-purple));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.chat-sub{font-size:12px;color:var(--muted);margin-top:4px}
.chat-messages{flex:1;overflow-y:auto;padding:28px;display:flex;flex-direction:column;gap:20px}
.chat-welcome{display:flex;gap:16px;align-items:flex-start;animation:msgIn 0.5s ease}
.cw-avatar{width:48px;height:48px;border-radius:50%;background:linear-gradient(135deg,var(--neon),var(--cyber-purple));display:flex;align-items:center;justify-content:center;font-size:22px;flex-shrink:0;box-shadow:var(--neon-glow);animation:avatarPulse 2s ease-in-out infinite}
@keyframes avatarPulse{0%,100%{box-shadow:var(--neon-glow)}50%{box-shadow:0 0 30px rgba(0,212,255,0.5),0 0 60px rgba(168,85,247,0.3)}}
.cw-bubble{flex:1;background:var(--bg-elevated);border:1px solid var(--line);border-radius:0 var(--radius) var(--radius) var(--radius);padding:18px 22px;font-size:13px;line-height:2}
.cw-bubble p{margin-bottom:12px}
.cw-bubble ul{padding-left:22px;margin:12px 0}
.cw-bubble li{margin:6px 0}
.chat-suggestions{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px}
.suggest-chip{
  background:var(--neon-l);color:var(--neon);border-radius:18px;padding:7px 16px;
  font-size:11px;cursor:pointer;transition:var(--transition-spring);
  font-weight:500;border:1px solid var(--line);
}
.suggest-chip:hover{background:var(--neon);color:#fff;box-shadow:var(--neon-glow-sm);transform:translateY(-2px) scale(1.02)}
.typing-cursor{display:inline-block;color:var(--neon);font-weight:700;animation:blink 0.6s infinite;margin-left:2px}
@keyframes blink{0%,100%{opacity:1}50%{opacity:0}}
.chat-suggestions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.chat-msg{display:flex;gap:16px;align-items:flex-start;animation:msgIn 0.4s cubic-bezier(0.34,1.56,0.64,1)}
@keyframes msgIn{from{opacity:0;transform:translateY(12px) scale(0.95)}to{opacity:1;transform:none}}
.chat-msg.user{flex-direction:row-reverse}
.chat-msg.user .msg-bubble{background:linear-gradient(135deg,var(--neon),var(--cyber-blue));color:#fff;border-radius:var(--radius) 0 var(--radius) var(--radius);box-shadow:var(--neon-glow-sm)}
.chat-msg.user .msg-avatar{background:linear-gradient(135deg,var(--cyber-purple),var(--cyber-pink));color:#fff}
.msg-avatar{width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0}
.msg-bubble{max-width:80%;padding:16px 20px;border-radius:0 var(--radius) var(--radius) var(--radius);font-size:13px;line-height:2;word-break:break-word}
.msg-bubble.ai{background:var(--bg-elevated);border:1px solid var(--line)}
.msg-bubble.thinking{color:var(--muted)}
.msg-bubble.thinking::after{content:'...';animation:thinking 1.2s infinite}
@keyframes thinking{0%,20%{content:'.'}40%{content:'..'}60%,100%{content:'...'}}
.chat-input-area{padding:18px 28px;border-top:1px solid var(--line-soft);flex-shrink:0;background:var(--bg-elevated)}
.chat-input-wrap{display:flex;gap:14px;align-items:flex-end;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-sm);padding:12px 12px 12px 18px;transition:var(--transition)}
.chat-input-wrap:focus-within{border-color:var(--neon);box-shadow:var(--neon-glow)}
#chatInput{flex:1;border:none;outline:none;background:transparent;resize:none;max-height:160px;font-size:13px;line-height:1.8;padding:5px 0}
.send-btn{width:44px;height:44px;border-radius:12px;background:linear-gradient(135deg,var(--neon),var(--cyber-purple));color:#fff;display:flex;align-items:center;justify-content:center;transition:var(--transition-spring);flex-shrink:0}
.send-btn:hover{transform:scale(1.1) rotate(-5deg);box-shadow:var(--neon-glow)}
.chat-hint{font-size:11px;color:var(--muted);margin-top:10px;text-align:right}
.chat-sidebar{display:flex;flex-direction:column}
.sources-list{display:flex;flex-direction:column;gap:10px;margin-top:12px}
.sources-empty{font-size:12px;color:var(--muted);text-align:center;padding:28px 0}
.source-item{padding:14px 16px;background:var(--bg-elevated);border:1px solid var(--line);border-radius:var(--radius-sm);font-size:12px;cursor:pointer;transition:var(--transition-spring)}
.source-item:hover{border-color:var(--neon);background:var(--neon-ll);transform:translateX(6px);box-shadow:var(--neon-glow-sm)}
.source-item .st{font-weight:600;color:var(--ink);margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.source-item .ss{color:var(--muted);font-size:11px}

/* ========== 搜索 ========== */
.search-page{max-width:960px;margin:0 auto}
.search-header{display:flex;gap:16px;margin-bottom:24px;align-items:center}
.search-input-wrap{
  flex:1;display:flex;align-items:center;gap:14px;
  background:var(--panel);border:1px solid var(--line);
  border-radius:var(--radius);padding:16px 22px;
  box-shadow:var(--shadow);transition:var(--transition);
}
.search-input-wrap:focus-within{border-color:var(--neon);box-shadow:var(--neon-glow);transform:scale(1.01)}
.search-input-wrap svg{color:var(--muted-soft);flex-shrink:0}
.search-input-wrap input{flex:1;border:none;outline:none;background:transparent;font-size:16px}
.search-input-wrap input::placeholder{color:var(--muted-soft)}
.search-modes{display:flex;border:1px solid var(--line);border-radius:var(--radius-sm);overflow:hidden;flex-shrink:0;background:var(--panel);box-shadow:var(--shadow)}
.mode-btn{padding:14px 22px;color:var(--muted);font-size:13px;font-weight:500;transition:var(--transition-fast)}
.mode-btn.active{background:linear-gradient(135deg,var(--neon),var(--cyber-purple));color:#fff;box-shadow:var(--neon-glow-sm)}
.mode-btn:hover:not(.active){background:var(--chip)}
.search-meta{font-size:12px;color:var(--muted);margin-bottom:16px;padding:0 8px}
.search-results{display:flex;flex-direction:column;gap:14px}
.search-result{
  background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);
  padding:22px;cursor:pointer;box-shadow:var(--shadow);transition:var(--transition-spring);
}
.search-result:hover{border-color:var(--neon);box-shadow:var(--shadow-neon);transform:translateY(-3px) scale(1.01)}
.search-result.selected{border-color:var(--neon);box-shadow:var(--neon-glow);background:linear-gradient(135deg,rgba(0,212,255,0.06),rgba(0,212,255,0.02));transform:translateY(-2px)}
.sr-title{font-size:17px;font-weight:700;margin-bottom:8px;color:var(--ink)}
.sr-snippet{font-size:13px;color:var(--muted);line-height:1.9;margin-bottom:10px}
.sr-meta{font-size:11px;color:var(--muted-soft);display:flex;gap:14px}
mark{background:linear-gradient(135deg,rgba(245,158,11,0.35),rgba(245,158,11,0.2));color:var(--cyber-amber);padding:1px 6px;border-radius:4px;font-weight:600;text-shadow:0 0 8px rgba(245,158,11,0.3)}

/* ========== 知识图谱 ========== */
.graph-container{
  background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);
  box-shadow:var(--shadow);overflow:hidden;display:flex;flex-direction:column;
  height:calc(100vh - var(--topbar-h) - 56px);
}
.graph-toolbar{padding:14px 20px;border-bottom:1px solid var(--line-soft);display:flex;justify-content:space-between;align-items:center;flex-shrink:0;background:var(--bg-elevated);gap:12px;flex-wrap:wrap}
.graph-toolbar h3{font-size:17px;font-weight:700;background:linear-gradient(135deg,var(--neon),var(--cyber-purple));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.graph-sub{font-size:12px;color:var(--muted);margin-top:4px}
.graph-controls{display:flex;gap:8px;align-items:center}
.graph-search-wrap{display:flex;align-items:center;gap:8px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-sm);padding:6px 12px;transition:var(--transition);min-width:180px}
.graph-search-wrap:focus-within{border-color:var(--neon);box-shadow:var(--neon-glow-sm)}
.graph-search-wrap svg{color:var(--muted);flex-shrink:0}
.graph-search-wrap input{background:none;border:none;outline:none;color:var(--ink);font-size:12px;width:100%;min-width:100px}
.graph-search-wrap input::placeholder{color:var(--muted)}
.graph-wrap{flex:1;position:relative;background:radial-gradient(ellipse at 50% 50%,rgba(0,212,255,0.02) 0%,var(--bg) 70%);overflow:hidden}
#graphSvg{display:block;width:100%;height:100%;cursor:grab}
#graphSvg:active{cursor:grabbing}
.graph-link{fill:none;stroke-opacity:0.15;transition:stroke-opacity 0.3s}
.graph-link.highlighted{stroke-opacity:0.7;filter:drop-shadow(0 0 3px currentColor)}
.graph-link.dimmed{stroke-opacity:0.03}
.graph-node{cursor:pointer;transition:opacity 0.3s}
.graph-node.dimmed{opacity:0.12}
.graph-node.highlighted circle{stroke-width:3px;filter:drop-shadow(0 0 12px currentColor)}
.graph-node circle{transition:r 0.2s,stroke-width 0.2s}
.graph-node:hover circle{stroke-width:3px}
.graph-label{font-size:10px;fill:var(--ink);pointer-events:none;text-anchor:middle;font-weight:500;opacity:0;transition:opacity 0.2s;text-shadow:0 0 4px var(--bg),0 0 8px var(--bg)}
.graph-node.highlighted .graph-label,.graph-label.show{opacity:0.9}
.graph-tooltip{
  position:absolute;pointer-events:none;background:var(--bg-glass);backdrop-filter:blur(20px);
  border:1px solid var(--neon);border-radius:var(--radius-sm);padding:10px 14px;
  font-size:12px;color:var(--ink);box-shadow:var(--neon-glow);z-index:10;
  opacity:0;transition:opacity 0.15s;max-width:280px;line-height:1.6;
}
.graph-tooltip.show{opacity:1}
.graph-tooltip .tt-title{font-weight:700;color:var(--neon);margin-bottom:4px;font-size:13px}
.graph-tooltip .tt-meta{color:var(--muted);font-size:11px}
.graph-stats{
  position:absolute;left:18px;bottom:18px;
  background:var(--bg-glass);backdrop-filter:blur(16px);
  border:1px solid var(--line);border-radius:var(--radius-sm);
  padding:10px 16px;font-size:12px;color:var(--neon);
  box-shadow:var(--neon-glow-sm);font-weight:600;
  display:flex;gap:16px;
}

/* ========== 进化中心 ========== */
.evo-layout{display:grid;grid-template-columns:1fr 380px;gap:18px}
.digest-content{white-space:pre-wrap;line-height:2;font-size:13px;max-height:480px;overflow-y:auto;padding:8px 0}
.sugg-list{display:flex;flex-direction:column;gap:0}
.sugg-item{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:14px 0;border-bottom:1px solid var(--line-soft);font-size:13px;transition:var(--transition-fast)}
.sugg-item:last-child{border-bottom:none}
.sugg-item:hover{padding-left:8px}
.sugg-meta{color:var(--muted);font-size:11px;display:flex;gap:12px;align-items:center;flex-shrink:0}
.sugg-btn{font-size:11px;padding:5px 14px;background:var(--neon-l);color:var(--neon);border-radius:10px;cursor:pointer;transition:var(--transition-spring);font-weight:600;border:1px solid var(--line)}
.sugg-btn:hover{background:var(--neon);color:#fff;box-shadow:var(--neon-glow-sm);transform:scale(1.05)}
.cluster-list{display:flex;flex-direction:column;gap:12px}
.cluster-item{background:var(--bg-elevated);border:1px solid var(--line);border-radius:var(--radius-sm);padding:14px 16px;transition:var(--transition-spring)}
.cluster-item:hover{border-color:var(--neon);box-shadow:var(--neon-glow-sm);transform:translateX(4px)}
.cluster-label{font-weight:700;font-size:13px;margin-bottom:6px}
.cluster-members{font-size:11px;color:var(--muted);line-height:1.8}
.evo-log{display:flex;flex-direction:column;gap:0;max-height:340px;overflow-y:auto}
.log-item{padding:12px 0;border-bottom:1px solid var(--line-soft);font-size:11px;color:var(--muted)}
.log-item:last-child{border-bottom:none}

/* ========== 卡片 ========== */
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:22px;margin-bottom:18px;box-shadow:var(--shadow);transition:var(--transition)}
.card:hover{box-shadow:var(--shadow-lg)}
.card:last-child{margin-bottom:0}
.card-hint{font-size:11px;color:var(--muted);margin-top:14px;line-height:1.7}
.backup-list{margin-top:10px;display:flex;flex-direction:column;gap:8px;max-height:220px;overflow:auto}
.backup-empty{font-size:12px;color:var(--muted);padding:6px 0}
.backup-item{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:var(--bg-soft)}
.backup-meta{display:flex;flex-direction:column;min-width:0}
.backup-file{font-size:12px;color:var(--text);font-family:ui-monospace,Menlo,Consolas,monospace;word-break:break-all}
.backup-time{font-size:10px;color:var(--muted)}
.backup-actions{display:flex;align-items:center;gap:8px;flex:none}
.backup-size{font-size:11px;color:var(--muted)}
.backup-restore{font-size:11px;padding:3px 10px;border-radius:6px;border:1px solid var(--neon);background:transparent;color:var(--neon);cursor:pointer}
.backup-restore:hover{background:var(--neon);color:#fff}
.card h3{font-size:15px;font-weight:700;margin-bottom:16px;color:var(--ink)}

/* ========== 复习 ========== */
.review-stats{display:flex;gap:16px;margin-bottom:24px;flex-wrap:wrap}
.review-stat{
  background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);
  padding:18px 24px;box-shadow:var(--shadow);text-align:center;
  min-width:120px;transition:var(--transition-spring);cursor:default;
}
.review-stat:hover{transform:translateY(-4px) scale(1.03);box-shadow:var(--shadow-lg);border-color:var(--neon)}
.review-stat b{
  display:block;font-size:28px;font-weight:800;
  background:linear-gradient(135deg,var(--neon),var(--cyber-purple));
  -webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;
}
.review-stat span{font-size:11px;color:var(--muted);font-weight:500;margin-top:4px;display:block}
.review-main{display:grid;grid-template-columns:1fr 320px;gap:18px}
.review-card-area{display:flex}
.review-card{flex:1;display:flex;flex-direction:column;min-height:480px;padding:32px}
.review-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;text-align:center;color:var(--muted)}
.review-empty svg{margin-bottom:24px;opacity:0.5}
.review-empty h3{font-size:22px;color:var(--ink);margin-bottom:12px}
.review-empty p{margin-bottom:24px}
.rev-question{font-size:24px;font-weight:700;margin-bottom:10px;background:linear-gradient(135deg,var(--ink),var(--neon));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.rev-source{font-size:12px;color:var(--muted);margin-bottom:20px}
.rev-body{
  white-space:pre-wrap;line-height:2.1;font-size:14px;
  background:var(--bg-elevated);border:1px solid var(--line);
  border-radius:var(--radius-sm);padding:22px;margin-bottom:24px;
  max-height:45vh;overflow-y:auto;box-shadow:var(--neon-glow-sm);
}
.rev-grades{display:flex;gap:12px;flex-wrap:wrap}
.grade-btn{
  flex:1;min-width:100px;border:none;border-radius:var(--radius-sm);
  padding:18px 12px;cursor:pointer;font-size:12px;font-weight:600;
  color:#fff;transition:var(--transition-spring);text-align:center;
}
.grade-btn:hover{transform:translateY(-4px) scale(1.03);filter:brightness(1.2);box-shadow:0 12px 32px rgba(0,0,0,0.4)}
.grade-0{background:linear-gradient(135deg,#ef4444,#dc2626)}
.grade-1{background:linear-gradient(135deg,#f97316,#ea580c)}
.grade-2{background:linear-gradient(135deg,#f59e0b,#d97706)}
.grade-3{background:linear-gradient(135deg,#84cc16,#65a30d)}
.grade-4{background:linear-gradient(135deg,#10b981,#059669)}
.grade-5{background:linear-gradient(135deg,var(--neon),var(--cyber-purple));box-shadow:var(--neon-glow-sm)}
.due-list{display:flex;flex-direction:column;gap:0;max-height:560px;overflow-y:auto}
.due-item{padding:14px 0;border-bottom:1px solid var(--line-soft);font-size:12px;cursor:pointer;display:flex;justify-content:space-between;align-items:center;transition:var(--transition-fast)}
.due-item:last-child{border-bottom:none}
.due-item:hover{color:var(--neon);padding-left:8px}
.due-time{color:var(--cyber-amber);font-weight:700;font-size:11px;flex-shrink:0;margin-left:12px}

/* ========== 设置 ========== */
.settings-layout{display:grid;grid-template-columns:1fr 1fr;gap:18px;max-width:1300px}
.module-list{display:flex;flex-direction:column;gap:0}
.module-row{display:flex;justify-content:space-between;align-items:center;padding:14px 0;border-bottom:1px solid var(--line-soft);font-size:13px;gap:14px;transition:var(--transition-fast)}
.module-row:last-child{border-bottom:none}
.module-row:hover{padding-left:4px}
.module-name{font-weight:700;flex:1}
.module-desc{color:var(--muted);font-size:11px;flex:2}
.pill{padding:5px 14px;border-radius:14px;font-size:11px;font-weight:700;flex-shrink:0;transition:var(--transition-fast)}
.pill.on{background:var(--neon-l);color:var(--neon);border:1px solid var(--line);box-shadow:var(--neon-glow-sm)}
.pill.off{background:var(--chip);color:var(--muted);border:1px solid var(--line)}
.pill.warn{background:rgba(245,158,11,0.15);color:var(--cyber-amber);border:1px solid rgba(245,158,11,0.3)}
.import-form{display:flex;flex-direction:column;gap:14px}
.input-row{display:flex;gap:12px;align-items:center}
.input-row input[type=text]{
  flex:1;border:1px solid var(--line);border-radius:var(--radius-sm);
  padding:11px 16px;font-size:13px;background:var(--bg-elevated);
  color:var(--ink);outline:none;transition:var(--transition-fast);
}
.input-row input[type=text]:focus{border-color:var(--neon);box-shadow:var(--neon-glow-sm)}
.input-row input[type=file]{font-size:12px;color:var(--muted);flex:1}
.divider{height:1px;background:var(--line-soft);margin:4px 0}
.import-result{font-size:13px;color:var(--text);margin-top:12px;line-height:1.8;background:rgba(0,200,255,.06);border:1px solid rgba(0,200,255,.15);border-radius:8px;padding:10px 12px;min-height:20px}
.import-result .progress-bar{height:6px;background:rgba(255,255,255,.08);border-radius:3px;overflow:hidden;margin:6px 0}
.import-result .progress-fill{height:100%;background:linear-gradient(90deg,var(--cyber-cyan),var(--cyber-green));border-radius:3px;transition:width .3s ease}
.import-result .progress-text{font-size:12px;color:var(--muted)}
.import-result .success{color:var(--cyber-green);font-weight:600}
.import-result .fail{color:#f85149;font-weight:600}
.date-group-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px 6px;margin-top:8px;background:linear-gradient(90deg,rgba(0,200,255,.08),transparent);border-left:3px solid var(--cyber-cyan);border-radius:0 6px 6px 0}
.date-group-header .dgh-title{font-size:14px;font-weight:600;color:var(--cyber-cyan)}
.date-group-header .dgh-count{font-size:11px;color:var(--muted);background:rgba(255,255,255,.06);padding:2px 8px;border-radius:10px}
.topic-summary-card{background:rgba(0,200,255,.04);border:1px solid rgba(0,200,255,.12);border-radius:10px;padding:12px;margin-bottom:10px}
.topic-summary-card .ts-header{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.topic-summary-card .ts-tag{font-size:13px;font-weight:600;color:var(--cyber-cyan)}
.topic-summary-card .ts-count{font-size:11px;color:var(--muted);background:rgba(255,255,255,.06);padding:2px 8px;border-radius:10px}
.topic-summary-card .ts-ai{font-size:10px;color:var(--cyber-green);background:rgba(0,255,150,.08);padding:2px 6px;border-radius:4px}
.topic-summary-card .ts-content{font-size:12px;color:var(--text);line-height:1.7;margin-bottom:8px}
.topic-summary-card .ts-notes{display:flex;flex-wrap:wrap;gap:4px}
.watcher-files{max-height:240px;overflow-y:auto;margin-top:12px;display:flex;flex-direction:column;gap:0}
.wf-item{padding:10px 0;border-bottom:1px solid var(--line-soft);font-size:11px;color:var(--muted);display:flex;justify-content:space-between;align-items:center;gap:12px}
.wf-item:last-child{border-bottom:none}
.wf-path{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}
.data-actions{display:flex;gap:12px;flex-wrap:wrap}
.log-box{
  max-height:300px;overflow:auto;background:var(--bg-deep);
  border:1px solid var(--line);border-radius:var(--radius-sm);
  padding:16px;font-size:11px;font-family:var(--mono);
  line-height:2;color:var(--cyber-green);box-shadow:inset 0 0 20px rgba(0,0,0,0.3);
}

/* ========== 命令面板 ========== */
.palette-overlay{position:fixed;inset:0;z-index:100;display:none;align-items:flex-start;justify-content:center;padding-top:10vh}
.palette-overlay.open{display:flex}
.palette-backdrop{position:absolute;inset:0;background:rgba(6,10,19,0.75);backdrop-filter:blur(10px)}
.palette-box{
  position:relative;width:min(680px,94vw);
  background:var(--bg-glass);backdrop-filter:blur(28px) saturate(1.5);
  border-radius:var(--radius-lg);
  box-shadow:0 30px 100px rgba(0,0,0,0.6),0 0 50px rgba(0,212,255,0.12);
  border:1px solid var(--line);overflow:hidden;
  animation:paletteIn 0.4s cubic-bezier(0.34,1.56,0.64,1);
}
@keyframes paletteIn{from{opacity:0;transform:translateY(-24px) scale(0.95);filter:blur(10px)}to{opacity:1;transform:none;filter:none}}
.palette-search{display:flex;align-items:center;gap:14px;padding:20px 22px;border-bottom:1px solid var(--line);background:var(--bg-elevated)}
.palette-search svg{color:var(--muted-soft);flex-shrink:0}
.palette-search input{flex:1;border:none;outline:none;background:transparent;font-size:16px}
.palette-search input::placeholder{color:var(--muted-soft)}
.palette-search .kbd{margin-left:0}
.palette-results{max-height:440px;overflow-y:auto;padding:10px}
.palette-cmd{padding:14px 18px;border-radius:var(--radius-sm);cursor:pointer;display:flex;align-items:center;gap:14px;transition:var(--transition-fast)}
.palette-cmd:hover,.palette-cmd.selected{background:linear-gradient(135deg,var(--neon-l),var(--cyber-purple-l));border:1px solid var(--line)}
.pc-icon{font-size:22px;flex-shrink:0}
.pc-name{flex:1;font-size:13px;font-weight:600}
.pc-desc{font-size:11px;color:var(--muted);margin-top:3px}
.pc-kbd{font-size:10px;color:var(--muted);flex-shrink:0}

/* ========== 闪念速记 ========== */
.quick-capture-modal{position:fixed;inset:0;z-index:110;display:none;align-items:center;justify-content:center}
.quick-capture-modal.open{display:flex}
.qcm-backdrop{position:absolute;inset:0;background:rgba(6,10,19,0.8);backdrop-filter:blur(12px)}
.qcm-box{
  position:relative;width:min(600px,94vw);
  background:var(--bg-glass);backdrop-filter:blur(28px) saturate(1.5);
  border-radius:var(--radius-2xl);
  box-shadow:0 30px 100px rgba(0,0,0,0.6),var(--neon-glow);
  border:1px solid var(--neon);overflow:hidden;
  animation:qcmIn 0.4s cubic-bezier(0.34,1.56,0.64,1);
}
@keyframes qcmIn{from{opacity:0;transform:translateY(40px) scale(0.92);filter:blur(12px)}to{opacity:1;transform:none;filter:none}}
.qcm-head{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;border-bottom:1px solid var(--line-soft);background:var(--bg-elevated)}
.qcm-head h3{font-size:17px;font-weight:700;background:linear-gradient(135deg,var(--neon),var(--cyber-purple));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.qcm-title{width:100%;border:none;outline:none;padding:16px 24px 10px;font-size:18px;font-weight:700;background:transparent}
.qcm-title::placeholder{color:var(--muted-soft)}
.qcm-content{width:100%;border:none;outline:none;padding:10px 24px 16px;font-size:14px;line-height:1.9;resize:none;background:transparent;min-height:160px}
.qcm-content::placeholder{color:var(--muted-soft)}
.qcm-actions{display:flex;justify-content:space-between;align-items:center;padding:16px 24px;border-top:1px solid var(--line-soft);background:var(--bg-elevated)}
.qcm-hint{font-size:11px;color:var(--muted)}

/* ========== Toast ========== */
.toast{
  position:fixed;bottom:36px;left:50%;
  transform:translateX(-50%) translateY(24px);
  background:var(--panel);color:var(--ink);
  padding:14px 28px;border-radius:var(--radius);
  font-size:13px;font-weight:600;opacity:0;
  transition:var(--transition-spring);z-index:200;
  pointer-events:none;box-shadow:var(--shadow-lg);
  border:1px solid var(--line);
}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.toast.success{background:linear-gradient(135deg,var(--cyber-green),#059669);color:#fff;border-color:transparent;box-shadow:0 10px 40px rgba(16,185,129,0.35)}
.toast.error{background:linear-gradient(135deg,var(--cyber-red),#dc2626);color:#fff;border-color:transparent;box-shadow:0 10px 40px rgba(239,68,68,0.35)}

/* ========== 粒子背景 ========== */
.particle-bg{position:fixed;inset:0;z-index:0;pointer-events:none;opacity:0.4}

/* ========== GitHub热力图 ========== */
.heatmap-wrap{padding:8px 0;overflow-x:auto}
.heatmap{display:grid;grid-template-rows:repeat(7,12px);grid-auto-flow:column;grid-auto-columns:12px;gap:3px}
.hm-cell{width:12px;height:12px;border-radius:3px;background:var(--bg-elevated);border:1px solid var(--line-soft);transition:var(--transition-fast);cursor:pointer}
.hm-cell:hover{transform:scale(1.4);z-index:10;box-shadow:var(--neon-glow-sm)}
.hm-cell.l0{background:rgba(0,212,255,0.04);border-color:rgba(0,212,255,0.08)}
.hm-cell.l1{background:rgba(0,212,255,0.2);border-color:rgba(0,212,255,0.3);box-shadow:0 0 6px rgba(0,212,255,0.15)}
.hm-cell.l2{background:rgba(0,212,255,0.4);border-color:rgba(0,212,255,0.5);box-shadow:0 0 10px rgba(0,212,255,0.25)}
.hm-cell.l3{background:rgba(0,212,255,0.65);border-color:rgba(0,212,255,0.8);box-shadow:0 0 14px rgba(0,212,255,0.35)}
.hm-cell.l4{background:linear-gradient(135deg,var(--neon),var(--cyber-purple));border-color:var(--neon);box-shadow:0 0 18px rgba(0,212,255,0.5),0 0 30px rgba(168,85,247,0.25);animation:hmPulse 2s ease-in-out infinite}
@keyframes hmPulse{0%,100%{box-shadow:0 0 18px rgba(0,212,255,0.5),0 0 30px rgba(168,85,247,0.25)}50%{box-shadow:0 0 24px rgba(0,212,255,0.7),0 0 40px rgba(168,85,247,0.4)}}
.heatmap-legend{display:flex;align-items:center;gap:6px;margin-top:12px;font-size:11px;color:var(--muted);justify-content:flex-end}
.heatmap-legend .hm-cell{width:10px;height:10px}

/* ========== SVG霓虹图表通用 ========== */
.neon-line{stroke:url(#neonGrad);stroke-width:2.5;fill:none;filter:drop-shadow(0 0 6px rgba(0,212,255,0.5)) drop-shadow(0 0 12px rgba(168,85,247,0.3));stroke-linecap:round;stroke-linejoin:round}
.neon-area{fill:url(#areaGrad);opacity:0.4}
.neon-dot{fill:#060a13;stroke:var(--neon);stroke-width:2;filter:drop-shadow(0 0 4px var(--neon))}
.neon-dot-inner{fill:var(--neon)}
.grid-line{stroke:var(--line);stroke-width:0.5;stroke-dasharray:4 4}
.axis-text{fill:var(--muted);font-size:10px;font-family:var(--mono)}
.chart-area svg text{user-select:none}

/* ========== 记忆留存率半环仪表盘 ========== */
.gauge-wrap{display:flex;justify-content:center;padding:10px 0;position:relative}
.gauge-bg{stroke:rgba(0,212,255,0.08);stroke-width:16;fill:none;stroke-linecap:round}
.gauge-fill{stroke-width:16;fill:none;stroke-linecap:round;filter:drop-shadow(0 0 10px currentColor);transition:stroke-dashoffset 1s cubic-bezier(0.4,0,0.2,1)}
.gauge-center{font-size:36px;font-weight:800;fill:var(--ink);font-family:var(--mono)}
.gauge-label{font-size:11px;fill:var(--muted);text-anchor:center}
.gauge-card{margin-bottom:18px}

/* ========== 知识雷达图 ========== */
.radar-wrap{display:flex;justify-content:center;padding:10px 0}
.radar-grid{stroke:var(--line);stroke-width:0.5;fill:none}
.radar-axis{stroke:var(--line-soft);stroke-width:0.5}
.radar-area{fill:url(#radarGrad);opacity:0.3;filter:drop-shadow(0 0 8px rgba(0,212,255,0.4))}
.radar-line{stroke:var(--neon);stroke-width:2;fill:none;filter:drop-shadow(0 0 6px var(--neon))}
.radar-dot{fill:var(--neon);filter:drop-shadow(0 0 4px var(--neon))}
.radar-label{fill:var(--ink-soft);font-size:11px;font-weight:500}

/* ========== 思维导图 ========== */
.graph-tabs{display:flex;gap:4px;margin-bottom:4px}
.graph-tab{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;background:transparent;border:none;border-radius:var(--radius-sm) var(--radius-sm) 0 0;color:var(--muted);font-size:12px;font-weight:500;cursor:pointer;transition:var(--transition-fast);border-bottom:2px solid transparent}
.graph-tab:hover{color:var(--neon);background:var(--neon-ll)}
.graph-tab.active{color:var(--neon);border-bottom-color:var(--neon);background:var(--neon-l)}
.mindmap-container{width:100%;height:100%;overflow:auto;background:radial-gradient(ellipse at center,var(--bg-elevated) 0%,var(--bg) 100%)}
.mindmap-container svg{display:block}
.mm-node{cursor:pointer;transition:var(--transition-fast)}
.mm-node:hover .mm-node-circle{filter:drop-shadow(0 0 12px var(--neon)) brightness(1.2)}
.mm-node-circle{fill:var(--panel);stroke:var(--neon);stroke-width:2;filter:drop-shadow(0 0 4px var(--neon));transition:var(--transition)}
.mm-node-collapsed .mm-node-circle{stroke:var(--cyber-purple);filter:drop-shadow(0 0 6px var(--cyber-purple))}
.mm-node-text{fill:var(--ink);font-size:11px;font-weight:500;text-anchor:middle;dominant-baseline:middle;pointer-events:none}
.mm-node-root .mm-node-circle{fill:linear-gradient(135deg,var(--neon),var(--cyber-purple));stroke:var(--neon);filter:drop-shadow(0 0 12px var(--neon)) drop-shadow(0 0 20px var(--cyber-purple))}
.mm-node-root .mm-node-text{fill:#fff;font-weight:700;font-size:13px}
.mm-link{stroke:var(--line);stroke-width:1.5;fill:none;transition:var(--transition-fast)}
.mm-link:hover{stroke:var(--neon);filter:drop-shadow(0 0 4px var(--neon))}
.mm-toggle{fill:var(--cyber-purple);stroke:var(--panel);stroke-width:2;cursor:pointer}
.mm-toggle-text{fill:#fff;font-size:10px;font-weight:700;text-anchor:middle;dominant-baseline:middle;pointer-events:none}

/* ========== 反向链接面板 ========== */
.backlinks-panel{position:absolute;right:18px;top:18px;bottom:18px;width:240px;background:var(--bg-glass);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-lg);display:none;flex-direction:column;z-index:10;overflow:hidden}
.backlinks-panel.open{display:flex;animation:slideInRight 0.3s cubic-bezier(0.4,0,0.2,1)}
@keyframes slideInRight{from{opacity:0;transform:translateX(20px)}to{opacity:1;transform:translateX(0)}}
.bp-head{padding:14px 16px;border-bottom:1px solid var(--line-soft);display:flex;justify-content:space-between;align-items:center;background:var(--bg-elevated)}
.bp-head h4{font-size:13px;font-weight:700;background:linear-gradient(135deg,var(--neon),var(--cyber-purple));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.bp-close{width:28px;height:28px;border-radius:8px;display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:20px;line-height:1;transition:var(--transition-fast)}
.bp-close:hover{background:var(--chip);color:var(--cyber-red)}
.bp-content{flex:1;overflow-y:auto;padding:8px}
.bp-empty{padding:24px 16px;text-align:center;font-size:12px;color:var(--muted)}
.bp-item{padding:10px 12px;border-radius:var(--radius-sm);cursor:pointer;transition:var(--transition-fast);font-size:12px;border:1px solid transparent}
.bp-item:hover{background:var(--neon-ll);border-color:var(--line);transform:translateX(-4px)}
.bp-item-title{font-weight:600;color:var(--ink-soft);margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bp-item-ctx{font-size:11px;color:var(--muted);line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.bp-section{font-size:10px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:1px;padding:8px 12px 4px}

/* ========== 笔记质量徽章 ========== */
.quality-badge{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:6px;font-size:10px;font-weight:800;font-family:var(--mono);flex-shrink:0;margin-left:6px;box-shadow:0 0 8px currentColor}
.quality-a{background:linear-gradient(135deg,#10b981,#059669);color:#fff}
.quality-b{background:linear-gradient(135deg,#00d4ff,#0284c7);color:#fff}
.quality-c{background:linear-gradient(135deg,#f59e0b,#d97706);color:#fff}
.quality-d{background:linear-gradient(135deg,#ef4444,#dc2626);color:#fff}

/* ========== 快捷键帮助面板 ========== */
.help-modal{position:fixed;inset:0;z-index:200;display:none;align-items:center;justify-content:center}
.help-modal.open{display:flex}
.help-backdrop{position:absolute;inset:0;background:rgba(6,10,19,0.8);backdrop-filter:blur(12px)}
.help-box{position:relative;width:min(560px,94vw);max-height:80vh;background:var(--bg-glass);backdrop-filter:blur(28px) saturate(1.5);-webkit-backdrop-filter:blur(28px) saturate(1.5);border-radius:var(--radius-2xl);box-shadow:0 30px 100px rgba(0,0,0,0.6),var(--neon-glow);border:1px solid var(--neon);overflow:hidden;animation:helpIn 0.4s cubic-bezier(0.34,1.56,0.64,1);display:flex;flex-direction:column}
@keyframes helpIn{from{opacity:0;transform:scale(0.9) translateY(20px);filter:blur(12px)}to{opacity:1;transform:none;filter:none}}
.help-head{padding:20px 24px;border-bottom:1px solid var(--line-soft);display:flex;justify-content:space-between;align-items:center;background:var(--bg-elevated)}
.help-head h3{font-size:18px;font-weight:700;background:linear-gradient(135deg,var(--neon),var(--cyber-purple));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.help-content{padding:20px 24px;overflow-y:auto;flex:1}
.help-section{margin-bottom:20px}
.help-section:last-child{margin-bottom:0}
.help-section h4{font-size:12px;font-weight:700;color:var(--neon);text-transform:uppercase;letter-spacing:1px;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid var(--line-soft)}
.help-row{display:flex;align-items:center;gap:12px;padding:8px 0;border-bottom:1px solid var(--line-soft)}
.help-row:last-child{border-bottom:none}
.help-row span{flex:1;font-size:13px;color:var(--ink-soft)}
.help-row .kbd{margin-left:0;min-width:80px;text-align:center}
.help-footer{padding:14px 24px;border-top:1px solid var(--line-soft);background:var(--bg-elevated);display:flex;justify-content:center}
.version-badge{font-size:11px;font-weight:700;font-family:var(--mono);background:linear-gradient(135deg,var(--neon),var(--cyber-purple));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;letter-spacing:1px}

/* ========== Vim导航样式 ========== */
.note-item.vim-selected{background:linear-gradient(135deg,var(--neon-l),var(--cyber-purple-l))!important;border-color:var(--neon)!important;box-shadow:inset 0 0 20px rgba(0,212,255,0.1)}
.note-item.vim-selected::after{content:'';position:absolute;right:12px;top:50%;transform:translateY(-50%);width:6px;height:6px;border-radius:50%;background:var(--neon);box-shadow:0 0 10px var(--neon);animation:vimCursor 1s infinite}
@keyframes vimCursor{0%,100%{opacity:1}50%{opacity:0.3}}
.note-item.vim-selected .note-title{color:var(--neon)!important}

/* ========== 编辑器布局调整（反向链接） ========== */
.lib-layout{position:relative}

/* ========== 响应式增强 ========== */
@media(max-width:1200px){
  .dash-grid{grid-template-columns:1fr}
  .dash-card.span-2{grid-column:span 1}
  .evo-layout{grid-template-columns:1fr}
  .settings-layout{grid-template-columns:1fr}
  .backlinks-panel{display:none!important}
  .gauge-card{width:100%}
}
@media(max-width:1024px){
  .stats-grid{grid-template-columns:repeat(2,1fr)}
  .chat-layout{grid-template-columns:1fr}
  .chat-sidebar{display:none}
  .review-main{grid-template-columns:1fr}
}
@media(max-width:768px){
  #sidebar{transform:translateX(-100%);width:280px}
  #sidebar.open{transform:translateX(0);box-shadow:var(--shadow-lg)}
  #mainContent{margin-left:0}
  .mobile-menu{display:flex}
  .lib-layout{grid-template-columns:1fr!important;height:auto}
  .lib-layout.inspector-open{grid-template-columns:1fr!important}
  .lib-sidebar{max-height:320px}
  .editor-body.grid-mode{grid-template-columns:1fr!important}
  .editor-preview{display:none}
  .lib-inspector{display:none!important}
  .stats-grid{grid-template-columns:1fr 1fr}
  .dash-welcome{flex-direction:column;align-items:flex-start;padding:24px}
  .view{padding:16px}
  .topbar{padding:0 16px}
  .search-quick{display:none}
  .heatmap{gap:2px}
  .hm-cell{width:10px;height:10px}
  .note-reader{padding:24px 20px}
}

/* ========== V30 千万级升级：新检查器面板 ========== */
.lib-inspector{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);display:flex;flex-direction:column;overflow:hidden;opacity:0;transform:translateX(20px);pointer-events:none;transition:opacity 0.3s,transform 0.35s cubic-bezier(0.4,0,0.2,1)}
.lib-layout.inspector-open .lib-inspector{opacity:1;transform:translateX(0);pointer-events:auto}
.insp-tabs{display:flex;align-items:center;gap:2px;padding:10px 12px;border-bottom:1px solid var(--line-soft);background:var(--bg-elevated);flex-shrink:0}
.insp-tab{width:34px;height:34px;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;color:var(--muted);transition:var(--transition-fast);border:1px solid transparent;background:transparent;cursor:pointer}
.insp-tab:hover{color:var(--ink);background:var(--chip)}
.insp-tab.active{color:var(--neon);background:var(--neon-ll);border-color:rgba(0,212,255,0.2);box-shadow:var(--neon-glow-sm)}
.insp-close{margin-left:auto;width:28px;height:28px;border-radius:8px;display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:18px;line-height:1;cursor:pointer;transition:var(--transition-fast);background:transparent;border:none}
.insp-close:hover{background:var(--chip);color:var(--cyber-red)}
.insp-content{flex:1;overflow-y:auto;position:relative}
.insp-pane{display:none;padding:14px;height:100%;overflow-y:auto}
.insp-pane.active{display:block;animation:fadeIn 0.25s ease}
.insp-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;text-align:center;padding:24px 16px;color:var(--muted);font-size:12px;gap:8px}
.insp-empty svg{opacity:0.4;margin-bottom:8px}

/* TOC 目录大纲 */
.toc-list{list-style:none;padding:0;margin:0}
.toc-item{cursor:pointer;padding:6px 10px;border-radius:var(--radius-sm);font-size:12px;color:var(--muted);transition:var(--transition-fast);border-left:2px solid transparent;margin-bottom:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.toc-item:hover{color:var(--ink);background:var(--chip)}
.toc-item.active{color:var(--neon);background:var(--neon-ll);border-left-color:var(--neon);font-weight:600}
.toc-item.h1{font-weight:700;font-size:13px;color:var(--ink);padding-left:8px}
.toc-item.h2{padding-left:20px}
.toc-item.h3{padding-left:32px;font-size:11px}
.toc-item.h4{padding-left:42px;font-size:11px;color:var(--muted-soft)}
.toc-meta{font-size:10px;color:var(--muted-soft);padding:8px 10px 12px;border-bottom:1px solid var(--line-soft);margin-bottom:8px;display:flex;justify-content:space-between}

/* 局部迷你图谱 */
.mini-graph-wrap{height:100%;display:flex;flex-direction:column}
.mini-graph-svg{flex:1;cursor:crosshair;background:radial-gradient(ellipse at 50% 50%,rgba(0,212,255,0.02) 0%,transparent 70%)}
.mini-graph-legend{padding:8px 10px;border-top:1px solid var(--line-soft);font-size:10px;color:var(--muted);display:flex;gap:10px;justify-content:center;flex-shrink:0}
.mini-graph-legend span{display:flex;align-items:center;gap:4px}
.mini-graph-legend i{width:8px;height:8px;border-radius:50%;display:inline-block}

/* AI助手面板 */
.ai-actions{display:flex;flex-direction:column;gap:8px;margin-bottom:14px}
.ai-action-btn{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:var(--radius-sm);background:var(--bg-elevated);border:1px solid var(--line);cursor:pointer;transition:var(--transition-fast);font-size:12px;color:var(--ink-soft);text-align:left;width:100%}
.ai-action-btn:hover{border-color:var(--neon);background:var(--neon-ll);color:var(--neon);box-shadow:var(--neon-glow-sm);transform:translateY(-1px)}
.ai-action-btn .aai-icon{width:28px;height:28px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:14px;flex-shrink:0;background:linear-gradient(135deg,var(--neon-d),var(--purple-d))}
.ai-action-btn .aai-text{flex:1;line-height:1.4}
.ai-action-btn .aai-text strong{display:block;color:var(--ink);font-weight:600;font-size:12px;margin-bottom:2px}
.ai-action-btn .aai-text small{color:var(--muted);font-size:10px}
.ai-action-btn:hover .aai-text strong{color:var(--neon)}
.ai-result{margin-top:12px;padding:12px;border-radius:var(--radius-sm);background:var(--bg-elevated);border:1px solid var(--line);font-size:12px;line-height:1.7;max-height:300px;overflow-y:auto;animation:slideUp 0.3s ease}
.ai-result-label{font-size:10px;font-weight:700;color:var(--neon);text-transform:uppercase;letter-spacing:1px;margin-bottom:8px;display:flex;align-items:center;gap:6px}
.ai-result-label .loading-dots{display:inline-flex;gap:3px}
.ai-result-label .loading-dots span{width:4px;height:4px;border-radius:50%;background:var(--neon);animation:dots 1.4s infinite}
.ai-result-label .loading-dots span:nth-child(2){animation-delay:0.2s}
.ai-result-label .loading-dots span:nth-child(3){animation-delay:0.4s}
@keyframes dots{0%,80%,100%{opacity:0.3;transform:scale(0.8)}40%{opacity:1;transform:scale(1)}}

/* ========== V30 阅读模式（默认美观渲染） ========== */
.editor-area{flex:1;overflow-y:auto;padding:0;position:relative}
.editor-empty{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:40px 32px;color:var(--muted);gap:16px}
.empty-illustration{margin-bottom:8px;animation:float 3s ease-in-out infinite}
@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}
.editor-empty h3{font-size:20px;font-weight:700;color:var(--ink);margin:0}
.editor-empty p{font-size:13px;line-height:1.7;max-width:400px;margin:0}
.empty-shortcuts{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0}
.es-row{display:flex;align-items:center;gap:10px;font-size:11px;color:var(--muted)}
.pulse-btn{animation:pulseGlow 2s infinite}
@keyframes pulseGlow{0%,100%{box-shadow:0 0 0 0 rgba(0,212,255,0.4)}50%{box-shadow:0 0 0 10px rgba(0,212,255,0)}}

/* 笔记阅读模式容器 */
.note-reader{padding:40px 48px;max-width:820px;margin:0 auto;animation:fadeIn 0.3s ease}
.note-reader-header{margin-bottom:28px;padding-bottom:20px;border-bottom:1px solid var(--line-soft)}
.note-reader-title{font-size:28px;font-weight:800;color:var(--ink);line-height:1.3;margin:0 0 12px;background:linear-gradient(135deg,var(--ink) 0%,var(--ink-soft) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.note-reader-meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:12px;color:var(--muted)}
.nr-meta-tag{padding:3px 10px;border-radius:20px;font-size:11px;font-weight:600;display:inline-flex;align-items:center;gap:4px}
.nr-meta-tag.src{background:var(--neon-ll);color:var(--neon);border:1px solid rgba(0,212,255,0.2)}
.nr-meta-tag.quality{font-family:var(--mono);font-weight:700}
.nr-meta-tag.quality-a{background:rgba(16,185,129,0.12);color:#10b981;border-color:rgba(16,185,129,0.2)}
.nr-meta-tag.quality-b{background:rgba(0,212,255,0.1);color:var(--neon);border-color:rgba(0,212,255,0.2)}
.nr-meta-tag.quality-c{background:rgba(245,158,11,0.1);color:#f59e0b;border-color:rgba(245,158,11,0.2)}
.nr-meta-tag.quality-d{background:rgba(239,68,68,0.1);color:#ef4444;border-color:rgba(239,68,68,0.2)}
.nr-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:14px}
.nr-tag{padding:3px 10px;border-radius:20px;background:var(--chip);color:var(--muted);font-size:11px;cursor:pointer;transition:var(--transition-fast);border:1px solid transparent}
.nr-tag:hover{background:var(--neon-ll);color:var(--neon);border-color:rgba(0,212,255,0.2)}
.note-reader-body{font-size:15px;line-height:1.85;color:var(--ink-soft)}
.note-reader-body h1,.note-reader-body h2,.note-reader-body h3,.note-reader-body h4{color:var(--ink);font-weight:700;line-height:1.4;margin:1.6em 0 0.6em;scroll-margin-top:80px}
.note-reader-body h1{font-size:24px;border-bottom:2px solid var(--neon);padding-bottom:8px;margin-top:0}
.note-reader-body h2{font-size:20px;position:relative;padding-left:14px}
.note-reader-body h2::before{content:'';position:absolute;left:0;top:4px;bottom:4px;width:4px;border-radius:2px;background:linear-gradient(180deg,var(--neon),var(--purple))}
.note-reader-body h3{font-size:17px;color:var(--cyber-purple)}
.note-reader-body h4{font-size:15px;color:var(--muted)}
.note-reader-body p{margin:0.8em 0}
.note-reader-body strong{color:var(--ink);font-weight:700;background:linear-gradient(180deg,transparent 65%,rgba(0,212,255,0.15) 65%);padding:0 2px}
.note-reader-body em{color:var(--cyber-purple);font-style:italic}
.note-reader-body code{background:var(--bg-elevated);border:1px solid var(--line);padding:2px 7px;border-radius:5px;font-family:var(--mono);font-size:13px;color:var(--neon)}
.note-reader-body pre{background:var(--bg-deep);border:1px solid var(--line);border-radius:var(--radius-sm);padding:16px 20px;overflow-x:auto;margin:14px 0;position:relative}
.note-reader-body pre code{background:none;border:none;padding:0;color:var(--ink-soft);font-size:12px;line-height:1.7}
.note-reader-body ul,.note-reader-body ol{padding-left:24px;margin:0.8em 0}
.note-reader-body li{margin:0.3em 0}
.note-reader-body li::marker{color:var(--neon)}
.note-reader-body blockquote{border-left:3px solid var(--neon);padding:10px 18px;margin:14px 0;background:var(--neon-ll);border-radius:0 var(--radius-sm) var(--radius-sm) 0;color:var(--muted);font-style:italic}
.note-reader-body blockquote p{margin:0}
.note-reader-body hr{border:none;height:1px;background:linear-gradient(90deg,transparent,var(--line),transparent);margin:24px 0}
.note-reader-body a.wiki-link{color:var(--neon);text-decoration:none;border-bottom:1px dashed var(--neon);padding:0 2px;transition:var(--transition-fast);cursor:pointer}
.note-reader-body a.wiki-link:hover{background:var(--neon-ll);border-bottom-style:solid;text-shadow:0 0 8px rgba(0,212,255,0.3)}
.note-reader-body a.wiki-link.broken{color:var(--muted-soft);border-bottom-color:var(--muted-soft);opacity:0.6}
.note-reader-body table{width:100%;border-collapse:collapse;margin:14px 0;font-size:13px}
.note-reader-body th,.note-reader-body td{padding:8px 14px;text-align:left;border:1px solid var(--line)}
.note-reader-body th{background:var(--bg-elevated);font-weight:700;color:var(--neon)}
.note-reader-body tr:nth-child(even) td{background:var(--bg-elevated)}
.note-reader-body img{max-width:100%;border-radius:var(--radius-sm);box-shadow:var(--shadow);margin:12px 0}
.note-reader-body del{color:var(--muted-soft);text-decoration:line-through}
.note-reader-body mark{background:linear-gradient(180deg,transparent 60%,rgba(245,158,11,0.3) 60%);color:var(--ink);padding:0 2px}
.note-reader-body .task-list-item{list-style:none;display:flex;align-items:flex-start;gap:8px;margin:4px 0}
.note-reader-body .task-list-item input{margin-top:5px;accent-color:var(--neon)}
.note-reader-footer{margin-top:32px;padding-top:20px;border-top:1px solid var(--line-soft)}
.nr-actions{display:flex;gap:8px;flex-wrap:wrap}
.nr-action{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:var(--radius-sm);font-size:12px;cursor:pointer;border:1px solid var(--line);background:var(--bg-elevated);color:var(--muted);transition:var(--transition-fast)}
.nr-action:hover{border-color:var(--neon);color:var(--neon);background:var(--neon-ll)}
.nr-action.primary{background:linear-gradient(135deg,var(--neon-d),var(--purple-d));color:white;border-color:transparent}
.nr-action.primary:hover{box-shadow:var(--neon-glow);transform:translateY(-1px)}
.nr-stats-bar{margin-top:20px;display:flex;gap:16px;font-size:11px;color:var(--muted);padding-top:14px;border-top:1px dashed var(--line-soft)}
.nr-stat{display:flex;align-items:center;gap:5px}
.nr-stat strong{color:var(--ink-soft)}

/* ========== 编辑模式增强 ========== */
.editor-wrap{display:flex;flex-direction:column;height:100%}
.editor-toolbar{display:flex;align-items:center;gap:4px;padding:10px 16px;border-bottom:1px solid var(--line-soft);background:var(--bg-elevated);flex-wrap:wrap;position:sticky;top:0;z-index:5}
.tb-btn{width:34px;height:34px;border-radius:var(--radius-sm);display:inline-flex;align-items:center;justify-content:center;color:var(--muted);transition:var(--transition-fast);font-size:13px;border:1px solid transparent;background:transparent;cursor:pointer;flex-shrink:0}
.tb-btn:hover{color:var(--neon);background:var(--neon-ll);border-color:rgba(0,212,255,0.2)}
.tb-sep{width:1px;height:20px;background:var(--line);margin:0 6px}
.editor-header{padding:24px 32px 0}
.editor-title{width:100%;border:none;outline:none;background:transparent;font-size:28px;font-weight:800;color:var(--ink);padding:0;margin-bottom:10px;font-family:inherit;line-height:1.3}
.editor-title::placeholder{color:var(--muted-soft)}
.editor-meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:12px;color:var(--muted)}
.editor-body.grid-mode{display:grid;grid-template-columns:1fr 1fr;flex:1;overflow:hidden;border-top:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft);min-height:0}
.editor-body.write-mode{flex:1;display:flex;flex-direction:column;border-top:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft)}
.editor-content{width:100%;border:none;outline:none;resize:none;padding:24px 32px;font-family:inherit;font-size:15px;line-height:1.8;color:var(--ink);background:transparent;flex:1;min-height:300px}
.editor-content::placeholder{color:var(--muted-soft)}
.editor-preview{padding:24px 32px;overflow-y:auto;font-size:15px;line-height:1.8;color:var(--ink-soft);border-left:1px solid var(--line-soft);background:var(--bg-soft)}
.write-mode .editor-preview{display:none}
.write-mode .editor-content{border-left:none}
.editor-footer{padding:12px 24px;border-top:1px solid var(--line-soft);display:flex;align-items:center;gap:12px;background:var(--bg-elevated)}
.editor-tags{display:flex;flex-wrap:wrap;gap:6px;flex:1;align-items:center}
.etag{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:20px;background:var(--neon-ll);color:var(--neon);font-size:11px;font-weight:600;border:1px solid rgba(0,212,255,0.2)}
.etag .remove{cursor:pointer;opacity:0.6;transition:var(--transition-fast);margin-left:2px;font-size:13px;line-height:1}
.etag .remove:hover{opacity:1;color:var(--cyber-red)}
.tag-input{border:none;outline:none;background:transparent;font-size:12px;color:var(--ink);min-width:80px;flex:0}
.tag-input::placeholder{color:var(--muted)}
.editor-actions{display:flex;align-items:center;gap:12px;flex-shrink:0}
.char-count{font-size:11px;color:var(--muted);font-family:var(--mono)}

/* 模式切换按钮 */
.mode-switch{display:inline-flex;background:var(--chip);border-radius:var(--radius-sm);padding:3px;gap:2px}
.mode-switch button{padding:5px 12px;border-radius:5px;border:none;background:transparent;color:var(--muted);font-size:11px;font-weight:600;cursor:pointer;transition:var(--transition-fast)}
.mode-switch button.active{background:var(--panel);color:var(--neon);box-shadow:var(--shadow-sm)}
.tb-save-indicator{font-size:11px;color:var(--green);display:flex;align-items:center;gap:4px;margin-left:auto}
.tb-save-indicator.saving{color:var(--amber)}
.tb-save-indicator.saving::before{content:'';width:6px;height:6px;border-radius:50%;background:currentColor;animation:pulse 1s infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:0.3}}

/* ========== 搜索增强 ========== */
.search-result{padding:14px 18px;border-radius:var(--radius-sm);cursor:pointer;transition:var(--transition-fast);border:1px solid transparent;margin-bottom:8px}
.search-result:hover{background:var(--neon-ll);border-color:rgba(0,212,255,0.2);transform:translateX(4px)}
.search-result.active{background:linear-gradient(135deg,var(--neon-l),var(--cyber-purple-l));border-color:var(--neon)}
.sr-title{font-weight:700;font-size:14px;color:var(--ink);margin-bottom:6px;display:flex;align-items:center;gap:8px}
.sr-title mark{background:rgba(0,212,255,0.3);color:var(--neon);padding:0 3px;border-radius:3px}
.sr-snippet{font-size:12px;color:var(--muted);line-height:1.6;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.sr-snippet mark{background:rgba(168,85,247,0.2);color:var(--cyber-purple);padding:0 2px;border-radius:2px}
.sr-meta{display:flex;gap:10px;margin-top:6px;font-size:10px;color:var(--muted-soft)}
.search-highlight{background:linear-gradient(180deg,transparent 60%,rgba(0,212,255,0.3) 60%);font-weight:600;color:var(--neon)}

/* ========== 动画 ========== */
@keyframes fadeIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
@keyframes slideInRight{from{opacity:0;transform:translateX(30px)}to{opacity:1;transform:translateX(0)}}
@keyframes slideUp{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
@keyframes shimmer{0%{background-position:-200% 0}100%{background-position:200% 0}}

/* ========== 骨架屏 ========== */
.skeleton{background:linear-gradient(90deg,var(--bg-elevated) 25%,var(--chip) 50%,var(--bg-elevated) 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:var(--radius-sm)}
.skeleton-line{height:12px;margin-bottom:10px;border-radius:6px}
.skeleton-line.w-80{width:80%}
.skeleton-line.w-60{width:60%}
.skeleton-line.w-40{width:40%}
.skeleton-title{height:28px;width:70%;margin-bottom:20px;border-radius:8px}

/* ========== 关联笔记区 ========== */
.related-section{margin-top:32px;padding-top:24px;border-top:1px solid var(--line-soft)}
.related-section h4{font-size:13px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:1px;margin-bottom:14px;display:flex;align-items:center;gap:8px}
.related-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px}
.related-card{padding:12px 14px;border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--bg-elevated);cursor:pointer;transition:var(--transition-fast)}
.related-card:hover{border-color:var(--neon);background:var(--neon-ll);transform:translateY(-2px);box-shadow:var(--neon-glow-sm)}
.related-card-title{font-weight:600;font-size:12px;color:var(--ink);margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.related-card-meta{font-size:10px;color:var(--muted);display:flex;gap:8px}
.related-card-badge{display:inline-block;padding:1px 6px;border-radius:4px;font-size:9px;font-weight:700;background:var(--neon-ll);color:var(--neon)}
.related-card-badge.in{background:rgba(168,85,247,0.1);color:var(--cyber-purple)}
.related-card-badge.mention{background:rgba(245,158,11,0.1);color:#f59e0b}
.related-card-badge.similar{background:rgba(16,185,129,0.1);color:var(--cyber-green)}

/* ========== V30 新增：时间线视图 ========== */
.timeline-header{margin-bottom:24px}
.timeline-header h2{font-size:22px;font-weight:800;background:linear-gradient(135deg,var(--neon),var(--cyber-purple));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:6px}
.timeline-sub{color:var(--muted);font-size:13px;margin-bottom:16px}
.timeline-filters{display:flex;gap:8px;flex-wrap:wrap}
.timeline-filter{padding:6px 14px;border-radius:20px;background:var(--chip);border:1px solid var(--line);color:var(--muted);font-size:12px;cursor:pointer;transition:var(--transition-fast)}
.timeline-filter:hover{border-color:var(--neon);color:var(--neon)}
.timeline-filter.active{background:linear-gradient(135deg,var(--neon),var(--cyber-purple));color:#fff;border-color:transparent;box-shadow:var(--neon-glow-sm)}
.timeline-container{position:relative;padding-left:40px}
.timeline-container::before{content:'';position:absolute;left:15px;top:0;bottom:0;width:2px;background:linear-gradient(180deg,var(--neon),var(--cyber-purple),transparent);border-radius:1px}
.timeline-group{margin-bottom:32px;position:relative}
.timeline-date{position:absolute;left:-40px;width:32px;height:32px;border-radius:50%;background:var(--panel);border:2px solid var(--neon);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:var(--neon);box-shadow:var(--neon-glow-sm);z-index:1}
.timeline-date-label{margin:0 0 12px 8px;font-size:13px;font-weight:700;color:var(--ink);padding-bottom:8px;border-bottom:1px solid var(--line-soft)}
.timeline-items{display:flex;flex-direction:column;gap:8px;margin-left:8px}
.timeline-item{padding:12px 16px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-sm);cursor:pointer;transition:var(--transition-fast);position:relative}
.timeline-item::before{content:'';position:absolute;left:-22px;top:50%;width:10px;height:10px;border-radius:50%;background:var(--bg);border:2px solid var(--cyber-purple);transform:translateY(-50%)}
.timeline-item:hover{border-color:var(--neon);background:var(--neon-ll);transform:translateX(4px);box-shadow:var(--neon-glow-sm)}
.timeline-item-title{font-weight:600;font-size:13px;color:var(--ink);margin-bottom:4px;display:flex;align-items:center;gap:8px}
.timeline-item-meta{font-size:11px;color:var(--muted);display:flex;gap:10px;align-items:center}
.timeline-item-snippet{font-size:11px;color:var(--muted-soft);margin-top:4px;line-height:1.5;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}

/* ========== V30 新增：标签云容器 ========== */
.tagcloud-container{flex:1;padding:30px;display:flex;align-items:center;justify-content:center;overflow:hidden;background:radial-gradient(ellipse at 50% 50%,rgba(0,212,255,0.03) 0%,var(--bg) 70%)}
.tagcloud-wrap{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:center;max-width:90%;max-height:90%}
.tc-tag{padding:8px 18px;border-radius:24px;cursor:pointer;transition:var(--transition-spring);font-weight:600;border:1px solid var(--line);position:relative}
.tc-tag:hover{transform:translateY(-4px) scale(1.08);box-shadow:var(--neon-glow);z-index:2}

/* ========== V30 新增：搜索历史 ========== */
.search-history{margin-bottom:16px;display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.search-history-label{font-size:11px;color:var(--muted);margin-right:4px}
.search-history-item{padding:4px 10px;border-radius:12px;background:var(--chip);border:1px solid var(--line);font-size:11px;color:var(--muted);cursor:pointer;transition:var(--transition-fast)}
.search-history-item:hover{border-color:var(--neon);color:var(--neon);background:var(--neon-ll)}
.search-history-clear{font-size:11px;color:var(--muted);cursor:pointer;margin-left:auto;transition:var(--transition-fast)}
.search-history-clear:hover{color:var(--cyber-red)}

/* ========== V30 新增：右键菜单 ========== */
.context-menu{position:fixed;z-index:9999;background:var(--panel-glass);backdrop-filter:blur(24px);border:1px solid var(--line);border-radius:var(--radius-sm);padding:6px;min-width:180px;box-shadow:var(--shadow-lg);display:none;animation:cmIn 0.15s ease}
.context-menu.open{display:block}
@keyframes cmIn{from{opacity:0;transform:scale(0.95) translateY(-4px)}to{opacity:1;transform:scale(1) translateY(0)}}
.cm-item{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:8px;font-size:12px;color:var(--ink-soft);cursor:pointer;transition:var(--transition-fast)}
.cm-item:hover{background:var(--neon-ll);color:var(--neon)}
.cm-item.danger{color:var(--cyber-red)}
.cm-item.danger:hover{background:rgba(239,68,68,0.1);color:var(--cyber-red)}
.cm-item svg{flex-shrink:0;opacity:0.7}
.cm-divider{height:1px;background:var(--line-soft);margin:4px 6px}

/* ========== V30 新增：笔记阅读器工具栏改进 ========== */
.editor-toolbar{position:sticky;top:0;z-index:10;background:var(--bg-elevated);backdrop-filter:blur(12px)}
.tb-save-indicator{margin-left:12px;font-size:11px;font-weight:600}
.note-reader{scroll-behavior:smooth}

/* ========== V30 增强：笔记列表项右键菜单支持 ========== */
.note-item{position:relative;user-select:none}
.quality-badge{position:absolute;top:14px;right:14px;font-family:var(--mono);font-size:9px;font-weight:800;width:20px;height:20px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.quality-badge.quality-a{background:rgba(16,185,129,0.15);color:#10b981;border:1px solid rgba(16,185,129,0.3)}
.quality-badge.quality-b{background:rgba(0,212,255,0.15);color:var(--neon);border:1px solid rgba(0,212,255,0.3)}
.quality-badge.quality-c{background:rgba(245,158,11,0.15);color:#f59e0b;border:1px solid rgba(245,158,11,0.3)}
.quality-badge.quality-d{background:rgba(239,68,68,0.15);color:#ef4444;border:1px solid rgba(239,68,68,0.3)}
.pulse-btn{position:relative;overflow:hidden}
.pulse-btn::after{content:'';position:absolute;inset:0;border-radius:inherit;border:2px solid var(--neon);animation:pulseRing 2s infinite;opacity:0}
@keyframes pulseRing{0%{transform:scale(1);opacity:0.8}100%{transform:scale(1.4);opacity:0}}

/* ========== V30 响应式优化 ========== */
@media(max-width:1200px){.lib-layout{grid-template-columns:260px 1fr 0}.lib-layout.inspector-open{grid-template-columns:260px 1fr 260px}}
@media(max-width:900px){.stats-grid{grid-template-columns:repeat(2,1fr)}.dash-grid{grid-template-columns:1fr}.dash-card.span-2{grid-column:span 1}}

/* ========== V30 编辑器专注模式 ========== */
.focus-mode .lib-sidebar,.focus-mode .lib-inspector{display:none!important}
.focus-mode .lib-layout{grid-template-columns:1fr!important}
.focus-mode .note-reader{max-width:720px}
.btn-focus{color:var(--muted)}
.btn-focus.active{color:var(--neon)}

/* ========== V31 千万级旗舰增强 ========== */

/* 阅读进度条 */
.reading-progress{position:fixed;top:var(--topbar-h);left:var(--sidebar-w);right:0;height:3px;background:linear-gradient(90deg,var(--neon),var(--cyber-purple));z-index:25;transform-origin:left;transform:scaleX(0);transition:transform 0.1s ease;box-shadow:0 0 10px var(--neon)}

/* 浮动目录 */
.floating-toc{position:absolute;right:20px;top:20px;width:220px;max-height:calc(100vh - 200px);background:var(--panel-glass);backdrop-filter:blur(20px);border:1px solid var(--line);border-radius:var(--radius-sm);padding:0;z-index:15;overflow:hidden;display:none;transition:var(--transition)}
.floating-toc.show{display:block;animation:slideInRight 0.3s ease}
.ftoc-header{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid var(--line-soft);font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:1px}
.ftoc-header button{width:22px;height:22px;border-radius:4px;display:flex;align-items:center;justify-content:center;color:var(--muted);transition:var(--transition-fast)}
.ftoc-header button:hover{background:var(--chip);color:var(--neon)}
.ftoc-list{max-height:400px;overflow-y:auto;padding:8px 6px}
.ftoc-item{display:block;padding:5px 10px;font-size:11px;color:var(--muted);cursor:pointer;border-radius:6px;transition:var(--transition-fast);border-left:2px solid transparent;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ftoc-item:hover{color:var(--ink);background:var(--neon-ll)}
.ftoc-item.h2{padding-left:18px;font-size:11px}
.ftoc-item.h3{padding-left:28px;font-size:10px}
.ftoc-item.h4{padding-left:38px;font-size:10px}
.ftoc-item.active{color:var(--neon);background:var(--neon-ll);border-left-color:var(--neon);font-weight:600}

/* 图片灯箱 */
.image-lightbox{position:fixed;inset:0;z-index:10000;background:rgba(0,0,0,0.92);display:none;align-items:center;justify-content:center;backdrop-filter:blur(10px)}
.image-lightbox.open{display:flex;animation:fadeIn 0.2s ease}
.lightbox-close{position:absolute;top:24px;right:24px;width:44px;height:44px;border-radius:50%;background:var(--panel);border:1px solid var(--line);color:var(--ink);font-size:24px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:var(--transition-fast);z-index:1}
.lightbox-close:hover{background:var(--cyber-red);border-color:var(--cyber-red);transform:rotate(90deg)}
#lightboxImg{max-width:90vw;max-height:85vh;object-fit:contain;border-radius:var(--radius);box-shadow:0 0 60px rgba(0,212,255,0.2);animation:zoomIn 0.3s ease}
@keyframes zoomIn{from{opacity:0;transform:scale(0.9)}to{opacity:1;transform:scale(1)}}

/* 笔记内搜索 */
.note-search-bar{position:fixed;top:calc(var(--topbar-h) + 12px);right:24px;z-index:50;display:none;animation:slideDown 0.2s ease}
.note-search-bar.open{display:block}
@keyframes slideDown{from{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}
.nsb-inner{display:flex;align-items:center;gap:8px;background:var(--panel-glass);backdrop-filter:blur(24px);border:1px solid var(--neon);border-radius:var(--radius-sm);padding:8px 12px;box-shadow:var(--shadow-neon)}
.nsb-inner svg{color:var(--neon);flex-shrink:0}
.nsb-inner input{border:none;outline:none;background:transparent;color:var(--ink);font-size:13px;min-width:220px;font-family:inherit}
.nsb-inner input::placeholder{color:var(--muted)}
.nsb-count{font-size:11px;color:var(--muted);font-family:var(--mono);min-width:40px;text-align:center}
.nsb-inner button{width:28px;height:28px;border-radius:6px;display:flex;align-items:center;justify-content:center;color:var(--muted);transition:var(--transition-fast);font-size:14px;font-weight:700}
.nsb-inner button:hover{background:var(--chip);color:var(--neon)}
.note-search-highlight{background:linear-gradient(180deg,transparent 50%,rgba(0,212,255,0.4) 50%);color:var(--neon);font-weight:600;border-radius:2px}
.note-search-highlight.current{background:linear-gradient(180deg,transparent 40%,rgba(245,158,11,0.6) 40%);color:var(--cyber-amber);box-shadow:0 0 12px rgba(245,158,11,0.5)}

/* 代码块复制按钮 */
.note-reader-body pre,.editor-preview pre{position:relative}
.code-copy-btn{position:absolute;top:8px;right:8px;padding:4px 10px;border-radius:6px;background:var(--bg-elevated);border:1px solid var(--line);color:var(--muted);font-size:10px;cursor:pointer;transition:var(--transition-fast);opacity:0;font-family:var(--mono);z-index:2}
pre:hover .code-copy-btn{opacity:1}
.code-copy-btn:hover{background:var(--neon);color:#fff;border-color:var(--neon);box-shadow:var(--neon-glow-sm)}
.code-copy-btn.copied{background:var(--cyber-green);color:#fff;border-color:var(--cyber-green)}

/* Markdown 表格增强 */
.note-reader-body table{width:100%;border-collapse:collapse;margin:16px 0;border-radius:var(--radius-sm);overflow:hidden;border:1px solid var(--line)}
.note-reader-body table th{background:linear-gradient(135deg,var(--neon-l),var(--cyber-purple-l));color:var(--neon);font-weight:700;font-size:12px;text-transform:uppercase;letter-spacing:0.5px}
.note-reader-body table td{font-size:13px}
.note-reader-body table tr:hover td{background:var(--neon-ll)}

/* 引用块增强 */
.note-reader-body blockquote{position:relative;padding:16px 20px 16px 24px;margin:16px 0;background:linear-gradient(135deg,var(--neon-ll),var(--cyber-purple-l));border-radius:0 var(--radius-sm) var(--radius-sm) 0;border-left:3px solid var(--neon)}
.note-reader-body blockquote::before{content:'"';position:absolute;top:8px;left:10px;font-size:32px;color:var(--neon);opacity:0.3;font-family:Georgia,serif;line-height:1}

/* 任务列表增强 */
.note-reader-body .task-list-item input{width:16px;height:16px;cursor:pointer;accent-color:var(--neon);border:2px solid var(--line)}
.note-reader-body .task-list-item input:checked + *{text-decoration:line-through;color:var(--muted-soft)}

/* 笔记阅读器顶级抛光 */
.note-reader{max-width:860px;margin:0 auto;padding:0 0 60px;position:relative}
.note-reader-header{padding:28px 0 20px;border-bottom:1px solid var(--line-soft);margin-bottom:28px;position:relative}
.note-reader-header::after{content:'';position:absolute;bottom:-1px;left:0;width:60px;height:2px;background:linear-gradient(90deg,var(--neon),var(--cyber-purple));border-radius:1px}
.note-reader-title{font-size:32px;font-weight:800;line-height:1.3;margin-bottom:14px;background:linear-gradient(135deg,var(--ink) 0%,var(--neon) 50%,var(--cyber-purple) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.note-reader-meta{display:flex;gap:10px;flex-wrap:wrap;align-items:center;font-size:12px;color:var(--muted)}
.nr-meta-tag{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:12px;background:var(--chip);border:1px solid var(--line-soft);font-size:11px;font-weight:500}
.nr-meta-tag.src{background:var(--neon-ll);color:var(--neon);border-color:rgba(0,212,255,0.2)}
.nr-meta-tag.quality{font-weight:700;font-family:var(--mono)}
.nr-meta-tag.quality.quality-a{background:rgba(16,185,129,0.12);color:#10b981;border-color:rgba(16,185,129,0.25)}
.nr-meta-tag.quality.quality-b{background:rgba(0,212,255,0.12);color:var(--neon);border-color:rgba(0,212,255,0.25)}
.nr-meta-tag.quality.quality-c{background:rgba(245,158,11,0.12);color:#f59e0b;border-color:rgba(245,158,11,0.25)}
.nr-meta-tag.quality.quality-d{background:rgba(239,68,68,0.12);color:#ef4444;border-color:rgba(239,68,68,0.25)}
.nr-tags{display:flex;gap:6px;flex-wrap:wrap;margin-top:14px}
.nr-tag{padding:4px 12px;border-radius:14px;background:var(--cyber-purple-l);color:var(--cyber-purple);font-size:11px;font-weight:600;cursor:pointer;border:1px solid rgba(168,85,247,0.2);transition:var(--transition-fast)}
.nr-tag:hover{background:var(--cyber-purple);color:#fff;transform:translateY(-1px);box-shadow:0 4px 12px rgba(168,85,247,0.3)}

/* 正文排版顶级优化 */
.note-reader-body{font-size:15px;line-height:1.9;color:var(--ink-soft)}
.note-reader-body h1{font-size:26px;font-weight:800;margin:36px 0 16px;padding-bottom:10px;border-bottom:2px solid var(--line);color:var(--ink);scroll-margin-top:80px}
.note-reader-body h2{font-size:22px;font-weight:700;margin:32px 0 14px;padding-left:14px;border-left:4px solid var(--neon);color:var(--ink);scroll-margin-top:80px;position:relative}
.note-reader-body h2::before{content:'';position:absolute;left:-4px;top:0;bottom:0;width:4px;background:linear-gradient(180deg,var(--neon),var(--cyber-purple));border-radius:2px;box-shadow:0 0 8px var(--neon)}
.note-reader-body h3{font-size:18px;font-weight:700;margin:24px 0 12px;color:var(--neon);scroll-margin-top:80px}
.note-reader-body h4{font-size:15px;font-weight:700;margin:20px 0 10px;color:var(--cyber-purple);scroll-margin-top:80px}
.note-reader-body p{margin-bottom:14px}
.note-reader-body ul,.note-reader-body ol{margin:12px 0 12px 24px}
.note-reader-body li{margin:6px 0}
.note-reader-body ul li::marker{color:var(--neon)}
.note-reader-body ol li::marker{color:var(--cyber-purple);font-weight:700}
.note-reader-body pre{background:var(--bg-deep);border:1px solid var(--line);border-radius:var(--radius-sm);padding:16px 20px;margin:16px 0;overflow-x:auto;position:relative}
.note-reader-body pre code{font-family:var(--mono);font-size:12px;color:var(--ink-soft);background:none;padding:0;line-height:1.6}
.note-reader-body code{background:var(--chip);padding:2px 7px;border-radius:5px;font-family:var(--mono);font-size:12px;color:var(--cyber-amber);border:1px solid var(--line-soft)}
.note-reader-body pre code{background:none;padding:0;border:none;color:var(--ink-soft)}
.note-reader-body img{cursor:zoom-in;transition:var(--transition);border:1px solid var(--line)}
.note-reader-body img:hover{transform:scale(1.01);box-shadow:var(--shadow-lg);border-color:var(--neon)}
.note-reader-body hr{border:none;height:1px;background:linear-gradient(90deg,transparent,var(--neon),var(--cyber-purple),transparent);margin:28px 0;opacity:0.4}
.wiki-link{color:var(--neon);cursor:pointer;border-bottom:1px dashed var(--neon);padding-bottom:1px;transition:var(--transition-fast);font-weight:500}
.wiki-link:hover{color:var(--cyber-purple);border-bottom-color:var(--cyber-purple);text-shadow:0 0 8px rgba(168,85,247,0.4)}
.wiki-link.broken{color:var(--muted);border-bottom-style:dotted}
.wiki-link.broken:hover{color:var(--cyber-amber)}
.ext-link{color:var(--cyber-blue);border-bottom:1px solid var(--cyber-blue)}
.ext-link::after{content:'↗';font-size:10px;margin-left:2px;opacity:0.6;vertical-align:super}

/* 搜索增强 v31 */
.search-filters{display:flex;gap:8px;margin-bottom:16px;flex-wrap:wrap}
.search-filter-chip{padding:6px 14px;border-radius:16px;background:var(--chip);border:1px solid var(--line);color:var(--muted);font-size:11px;cursor:pointer;transition:var(--transition-fast)}
.search-filter-chip:hover{border-color:var(--neon);color:var(--neon)}
.search-filter-chip.active{background:linear-gradient(135deg,var(--neon),var(--cyber-purple));color:#fff;border-color:transparent;box-shadow:var(--neon-glow-sm)}
.search-suggestions{margin-bottom:16px}
.search-suggestion-item{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;margin:4px 4px 4px 0;border-radius:16px;background:var(--chip);border:1px solid var(--line-soft);color:var(--muted);font-size:12px;cursor:pointer;transition:var(--transition-fast)}
.search-suggestion-item:hover{border-color:var(--neon);color:var(--neon);background:var(--neon-ll);transform:translateY(-1px)}
.search-suggestion-item svg{width:12px;height:12px}

/* ========== V33 千万级旗舰增强样式 ========== */

/* 笔记悬浮预览卡片 */
.note-preview-card{position:fixed;z-index:8000;width:360px;max-height:420px;background:var(--panel-glass);backdrop-filter:blur(28px);border:1px solid var(--neon);border-radius:var(--radius);box-shadow:0 20px 60px rgba(0,0,0,0.5),var(--neon-glow);display:none;overflow:hidden;animation:previewIn 0.2s ease}
.note-preview-card.show{display:block}
@keyframes previewIn{from{opacity:0;transform:translateY(8px) scale(0.97)}to{opacity:1;transform:translateY(0) scale(1)}}
.npc-header{padding:14px 18px;border-bottom:1px solid var(--line);background:linear-gradient(135deg,var(--neon-ll),var(--cyber-purple-l))}
.npc-title{font-weight:700;font-size:14px;color:var(--ink);display:block;margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.npc-meta{font-size:11px;color:var(--muted);padding-right:22px}
.npc-close{position:absolute;top:8px;right:8px;width:22px;height:22px;line-height:20px;text-align:center;font-size:14px;color:rgba(255,255,255,.92);background:rgba(0,0,0,.28);border:none;border-radius:50%;cursor:pointer;z-index:2;transition:background .15s}
.npc-close:hover{background:rgba(0,0,0,.5)}
.npc-content{padding:14px 18px;font-size:12px;line-height:1.7;color:var(--muted);overflow-y:auto;max-height:340px}
.npc-content p{margin-bottom:8px}
.npc-content h1,.npc-content h2,.npc-content h3{font-size:13px;color:var(--ink-soft);margin:10px 0 6px}

/* AI写作助手面板 */
.ai-writer-panel{position:fixed;bottom:24px;right:24px;width:420px;max-height:560px;background:var(--panel-glass);backdrop-filter:blur(28px);border:1px solid var(--neon);border-radius:var(--radius-lg);box-shadow:0 20px 80px rgba(0,0,0,0.5),var(--neon-glow);z-index:9000;display:none;flex-direction:column;overflow:hidden;animation:awpIn 0.25s cubic-bezier(0.34,1.56,0.64,1)}
.ai-writer-panel.open{display:flex}
@keyframes awpIn{from{opacity:0;transform:translateY(20px) scale(0.95)}to{opacity:1;transform:translateY(0) scale(1)}}
.awp-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--line);background:linear-gradient(135deg,var(--neon-l),transparent)}
.awp-header h3{margin:0;font-size:15px;font-weight:700;background:linear-gradient(135deg,var(--neon),var(--cyber-purple));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.awp-close{width:30px;height:30px;border-radius:50%;border:none;background:var(--chip);color:var(--muted);font-size:18px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:var(--transition-fast)}
.awp-close:hover{background:var(--cyber-red);color:#fff;transform:rotate(90deg)}
.awp-actions{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:16px 20px 12px}
.awp-btn{padding:10px 8px;border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--bg-elevated);color:var(--ink-soft);font-size:12px;font-weight:600;cursor:pointer;transition:var(--transition-fast);display:flex;flex-direction:column;align-items:center;gap:4px}
.awp-btn:hover{border-color:var(--neon);background:var(--neon-ll);color:var(--neon);transform:translateY(-2px);box-shadow:var(--neon-glow-sm)}
.awp-custom{display:flex;gap:8px;padding:0 20px 12px}
.awp-custom input{flex:1;padding:10px 14px;border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--bg-elevated);color:var(--ink);font-size:12px;font-family:inherit;outline:none;transition:var(--transition-fast)}
.awp-custom input:focus{border-color:var(--neon);box-shadow:0 0 0 3px rgba(0,212,255,0.1)}
.awp-custom button{padding:10px 18px;border-radius:var(--radius-sm);border:1px solid var(--neon);background:linear-gradient(135deg,var(--neon),var(--cyber-purple));color:#fff;font-size:12px;font-weight:700;cursor:pointer;transition:var(--transition-fast);white-space:nowrap}
.awp-custom button:hover{transform:translateY(-1px);box-shadow:var(--neon-glow)}
.awp-result{flex:1;overflow-y:auto;padding:0 20px 12px;font-size:13px;line-height:1.8;color:var(--ink-soft)}
.awp-hint{padding:20px;text-align:center;color:var(--muted);font-size:12px;line-height:1.6}
.awp-result .awp-loading{display:flex;align-items:center;gap:10px;padding:20px;color:var(--neon)}
.awp-result .awp-loading::before{content:'';width:16px;height:16px;border:2px solid var(--line);border-top-color:var(--neon);border-radius:50%;animation:spin 0.8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.awp-result .awp-content{background:var(--bg-deep);border:1px solid var(--line);border-radius:var(--radius-sm);padding:16px;white-space:pre-wrap}
.awp-footer{display:flex;justify-content:flex-end;gap:10px;padding:12px 20px;border-top:1px solid var(--line);background:var(--bg-elevated)}
/* ---- AI 读书拆解面板 ---- */
.rd-body{padding:16px 20px 12px;display:flex;flex-direction:column;gap:10px}
.rd-row input,.rd-row textarea{width:100%;box-sizing:border-box;padding:10px 14px;border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--bg-elevated);color:var(--ink);font-size:12px;font-family:inherit;outline:none;transition:var(--transition-fast)}
.rd-row input:focus,.rd-row textarea:focus{border-color:var(--neon);box-shadow:0 0 0 3px rgba(0,212,255,0.1)}
.rd-row textarea{height:110px;resize:vertical;line-height:1.6}
.rd-engines{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.rd-label{font-size:12px;color:var(--muted)}
.rd-engines select{padding:8px 10px;border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--bg-elevated);color:var(--ink);font-size:12px;font-family:inherit;outline:none;cursor:pointer}
.rd-save{font-size:12px;color:var(--ink-soft);display:flex;align-items:center;gap:5px;cursor:pointer;user-select:none}
.rd-save input{accent-color:var(--neon)}
.rd-run{padding:12px;border-radius:var(--radius-sm);border:1px solid var(--neon);background:linear-gradient(135deg,var(--neon),var(--cyber-purple));color:#fff;font-size:13px;font-weight:700;cursor:pointer;transition:var(--transition-fast)}
.rd-run:hover{transform:translateY(-1px);box-shadow:var(--neon-glow)}
.rd-run:disabled{opacity:0.6;cursor:not-allowed;transform:none}
.awp-result-meta{font-size:11px;color:var(--muted);padding:10px 20px 0}

/* 版本历史面板 */
.version-history-panel{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:520px;max-height:70vh;background:var(--panel-glass);backdrop-filter:blur(28px);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:0 30px 100px rgba(0,0,0,0.6);z-index:9000;display:none;flex-direction:column;overflow:hidden;animation:vhIn 0.25s ease}
.version-history-panel.open{display:flex}
@keyframes vhIn{from{opacity:0;transform:translate(-50%,-48%) scale(0.97)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}
.vh-header{display:flex;align-items:center;justify-content:space-between;padding:18px 24px;border-bottom:1px solid var(--line);background:linear-gradient(135deg,var(--cyber-purple-l),transparent)}
.vh-header h3{margin:0;font-size:16px;font-weight:700;color:var(--cyber-purple)}
.vh-close{width:32px;height:32px;border-radius:50%;border:none;background:var(--chip);color:var(--muted);font-size:20px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:var(--transition-fast)}
.vh-close:hover{background:var(--cyber-red);color:#fff;transform:rotate(90deg)}
.vh-list{flex:1;overflow-y:auto;padding:12px}
.vh-empty{padding:60px 20px;text-align:center;color:var(--muted);font-size:13px}
.vh-item{padding:14px 16px;border-radius:var(--radius-sm);border:1px solid var(--line);margin-bottom:8px;cursor:pointer;transition:var(--transition-fast);background:var(--bg-elevated)}
.vh-item:hover{border-color:var(--cyber-purple);background:var(--cyber-purple-l)}
.vh-item.current{border-color:var(--neon);background:var(--neon-ll)}
.vh-item-time{font-size:11px;color:var(--muted);font-family:var(--mono);margin-bottom:6px}
.vh-item-preview{font-size:12px;color:var(--ink-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vh-item-actions{display:flex;gap:8px;margin-top:10px}
.vh-item-btn{padding:4px 12px;border-radius:6px;border:1px solid var(--line);background:var(--bg);color:var(--muted);font-size:10px;cursor:pointer;transition:var(--transition-fast)}
.vh-item-btn:hover{border-color:var(--neon);color:var(--neon)}
.vh-item-btn.restore{border-color:var(--cyber-green);color:var(--cyber-green)}
.vh-item-btn.restore:hover{background:var(--cyber-green);color:#fff}

/* 笔记模板选择器 */
.template-picker{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:480px;background:var(--panel-glass);backdrop-filter:blur(28px);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:0 30px 100px rgba(0,0,0,0.6);z-index:9000;display:none;animation:tpIn 0.25s ease}
.template-picker.open{display:block}
@keyframes tpIn{from{opacity:0;transform:translate(-50%,-48%) scale(0.97)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}
.tp-header{display:flex;align-items:center;justify-content:space-between;padding:18px 24px;border-bottom:1px solid var(--line)}
.tp-header h3{margin:0;font-size:16px;font-weight:700}
.tp-header button{width:32px;height:32px;border-radius:50%;border:none;background:var(--chip);color:var(--muted);font-size:20px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:var(--transition-fast)}
.tp-header button:hover{background:var(--cyber-red);color:#fff;transform:rotate(90deg)}
.tpl-item{display:flex;flex-direction:column;gap:4px;text-align:left;padding:12px 14px;border-radius:10px;background:var(--card,#1c2230);border:1px solid var(--border,#2a3242);cursor:pointer;transition:.15s}
.tpl-item:hover{border-color:var(--accent);transform:translateY(-1px)}
.tpl-name{font-size:13px;font-weight:600;color:var(--fg,#e8ecf4)}
.tpl-desc{font-size:11px;color:var(--muted,#8a93a6);line-height:1.4}
.tp-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;padding:20px 24px}
.tp-item{padding:20px;border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--bg-elevated);cursor:pointer;transition:var(--transition-fast);text-align:center;display:flex;flex-direction:column;align-items:center;gap:8px}
.tp-item:hover{border-color:var(--neon);background:var(--neon-ll);transform:translateY(-4px);box-shadow:var(--neon-glow-sm)}
.tp-icon{font-size:32px}
.tp-name{font-size:13px;font-weight:700;color:var(--ink)}
.tp-desc{font-size:10px;color:var(--muted)}

/* 编辑器自动保存指示器 */
.auto-save-indicator{display:inline-flex;align-items:center;gap:6px;font-size:11px;color:var(--cyber-green);margin-left:12px}
.auto-save-indicator.saving{color:var(--cyber-amber)}
.auto-save-indicator.saving::before{content:'';width:6px;height:6px;border-radius:50%;background:currentColor;animation:pulse 1s infinite}

/* 笔记列表多选模式 */
.batch-toggle-btn{width:28px;height:28px;border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--bg-elevated);color:var(--muted);font-size:13px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:var(--transition-fast);flex-shrink:0}
.batch-toggle-btn:hover{border-color:var(--neon);color:var(--neon)}
.batch-toggle-btn.active{background:var(--neon);border-color:var(--neon);color:#fff}
.note-list.multi-select .note-item{padding-left:44px}
.multi-select-checkbox{position:absolute;left:12px;top:50%;transform:translateY(-50%);width:18px;height:18px;border-radius:4px;border:2px solid var(--line);background:var(--bg);cursor:pointer;display:none;align-items:center;justify-content:center;transition:var(--transition-fast);z-index:2}
.note-list.multi-select .multi-select-checkbox{display:flex}
.multi-select-checkbox.checked{background:var(--neon);border-color:var(--neon)}
.multi-select-checkbox.checked::after{content:'✓';color:#fff;font-size:11px;font-weight:700}
.batch-bar{position:sticky;bottom:0;z-index:50;padding:10px 16px;background:var(--panel-glass);backdrop-filter:blur(20px);border-top:1px solid var(--neon);display:none;align-items:center;gap:12px;margin-top:8px;border-radius:var(--radius-md) var(--radius-md) 0 0;box-shadow:0 -4px 20px rgba(0,0,0,0.3)}
.batch-bar.show{display:flex;animation:slideUp 0.2s ease}
.batch-count{font-size:12px;color:var(--neon);font-weight:700;margin-right:auto}
.batch-btn{padding:6px 14px;border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--bg-elevated);color:var(--muted);font-size:11px;cursor:pointer;transition:var(--transition-fast);white-space:nowrap}
.batch-btn:hover{border-color:var(--neon);color:var(--neon)}
.batch-btn-danger{border-color:rgba(239,68,68,0.3);color:var(--cyber-red)}
.batch-btn-danger:hover{border-color:var(--cyber-red);color:var(--cyber-red);background:rgba(239,68,68,0.1)}

/* 性能优化 - 虚拟滚动容器 */
.note-list-scroll{height:100%;overflow-y:auto;scroll-behavior:smooth}
.note-list-scroll::-webkit-scrollbar{width:6px}
.note-list-scroll::-webkit-scrollbar-track{background:transparent}
.note-list-scroll::-webkit-scrollbar-thumb{background:var(--line);border-radius:3px}
.note-list-scroll::-webkit-scrollbar-thumb:hover{background:var(--muted)}

/* 平滑过渡增强 */
*{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}

/* 响应式优化 */
@media (max-width:768px){
  .ai-writer-panel{width:calc(100vw - 32px);right:16px;bottom:16px}
  .version-history-panel,.template-picker{width:calc(100vw - 32px)}
  .note-preview-card{width:300px}
  .tp-grid{grid-template-columns:1fr}
}

/* 图谱聚焦模式 */
.graph-focus-mode .graph-node.dimmed{opacity:0.15}
.graph-focus-mode .graph-link.dimmed{opacity:0.1}
.graph-focus-mode .graph-node.highlighted{opacity:1;filter:drop-shadow(0 0 8px var(--neon))}
.graph-focus-mode .graph-link.highlighted{opacity:0.8;stroke:var(--neon);filter:drop-shadow(0 0 4px var(--neon))}

/* 编辑器顶级抛光 v31 */
.editor-title{font-size:32px;font-weight:800;background:linear-gradient(135deg,var(--ink),var(--neon));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.editor-content{font-size:15px;line-height:1.9}
.editor-preview pre .code-copy-btn{display:none}

/* 滚动条顶级样式 */
::-webkit-scrollbar-thumb{background:linear-gradient(180deg,var(--neon),var(--cyber-purple));border-radius:3px}
::-webkit-scrollbar-thumb:hover{background:var(--neon);box-shadow:var(--neon-glow-sm)}

/* 卡片悬浮动效 */
.stat-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-neon);border-color:var(--neon)}
.dash-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg);border-color:var(--line)}
.card:hover{transform:translateY(-1px)}

/* 文字选中效果：::selection 不支持渐变背景（background-image 会被忽略导致透明底+白字不可见），统一用顶部主题自适应规则 */

/* ========== v34 Ollama 离线告警条 ========== */
.ollama-banner{
  display:none;
  align-items:center;
  justify-content:center;
  gap:14px;
  padding:8px 16px;
  font-size:13px;
  color:#8a6d1a;
  background:linear-gradient(90deg,rgba(255,193,7,.12),rgba(255,152,0,.16),rgba(255,193,7,.12));
  border-bottom:1px solid rgba(255,193,7,.35);
  backdrop-filter:blur(8px);
  position:relative;
  z-index:50;
}
.ollama-banner.show{ display:flex; }
.ollama-banner .banner-btn{
  padding:3px 14px;
  font-size:12px;
  color:#fff;
  background:linear-gradient(135deg,#f59e0b,#f97316);
  border:none;
  border-radius:20px;
  cursor:pointer;
  transition:transform .15s;
}
.ollama-banner .banner-btn:hover{ transform:scale(1.05); }
.ollama-banner .banner-close{
  background:none;border:none;color:#8a6d1a;font-size:16px;cursor:pointer;opacity:.7;
}
.ollama-banner .banner-close:hover{ opacity:1; }

/* ========== v36.1 补齐样式 ========== */
mark.note-search-hit{background:rgba(0,212,255,0.35);color:inherit;border-radius:3px;padding:0 1px;border-bottom:2px solid var(--neon)}
mark.note-search-hit.active{background:rgba(255,179,0,0.55);border-bottom-color:#ffb300}
.nsb-count{color:var(--muted);font-size:12px;min-width:34px;text-align:center}
.note-search-bar.show{transform:translateY(0);opacity:1;pointer-events:auto}

/* ========== v36.2 时间线样式 ========== */
.timeline-wrap{display:flex;flex-direction:column;gap:10px;padding:16px 4px 16px 22px}
.tl-day{font-size:13px;font-weight:700;color:var(--neon);margin:14px 0 4px;letter-spacing:0.5px}
.tl-day:first-child{margin-top:0}
.timeline-item{display:flex;align-items:flex-start;gap:10px;padding:12px 16px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-sm);cursor:pointer;transition:var(--transition-fast);position:relative}
.timeline-item:hover{border-color:var(--neon);box-shadow:var(--neon-glow);transform:translateX(2px)}
.tl-time{font-size:11px;color:var(--muted);white-space:nowrap;padding-top:3px;min-width:52px}
.tl-dot{color:var(--cyber-purple);font-size:12px;padding-top:4px}
.tl-body{flex:1;min-width:0}
.tl-title{font-size:14px;font-weight:600;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tl-meta{font-size:12px;color:var(--muted);margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tl-empty{color:var(--muted);text-align:center;padding:60px 0;font-size:14px}

/* ========== v36.4 标签云 ========== */
.tagcloud-container{padding:28px;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;align-content:center;gap:6px;min-height:300px}
.tc-item{border-radius:8px;line-height:1.2;font-weight:600;text-shadow:0 0 12px rgba(0,212,255,.25);transition:transform .15s ease}
.tc-item:hover{transform:scale(1.12);text-shadow:0 0 18px rgba(0,212,255,.55)}


/* ========== v41 手机端打磨（增强不阉割，追加于全部既有样式之后） ========== */
/* 刘海屏/底部横条安全区适配 */
@supports (padding: max(0px)) {
  #sidebar{padding-top:max(0px, env(safe-area-inset-top))}
  .view,.topbar{padding-left:max(14px, env(safe-area-inset-left));padding-right:max(14px, env(safe-area-inset-right))}
  .mobile-menu,.quick-add-btn,.fabs,.note-reader{padding-left:max(12px, env(safe-area-inset-left));padding-right:max(12px, env(safe-area-inset-right))}
}

/* 小屏手机（<=480px）：触摸目标、字号、卡片紧凑化 */
@media (max-width: 480px){
  .topbar h1{font-size:17px}
  .topbar{padding-top:max(10px, env(safe-area-inset-top));height:auto;min-height:56px}
  .stat-card{padding:12px 14px}
  .stat-value{font-size:24px}
  .stat-label{font-size:11px}
  .stats-grid{gap:10px}
  .note-item{padding:12px 14px}
  .note-title{font-size:15px}
  .note-meta{font-size:11px}
  .dash-welcome{padding:18px;gap:10px}
  .dash-welcome h2{font-size:19px}
  .dash-welcome p{font-size:12px}
  button,.btn,.nav-item,.tool-btn,.quick-add-btn,input[type=text],input[type=password],textarea{
    min-height:44px;touch-action:manipulation;-webkit-tap-highlight-color:transparent}
  .nav-item span{font-size:13px}
  .note-reader{padding:20px 16px;font-size:16px;line-height:1.85}
  .reader-title{font-size:22px}
  .flash-overlay,.ai-writer-panel{width:calc(100vw - 16px)!important;right:8px!important;left:8px!important;bottom:8px!important}
  .graph-canvas-wrap{height:52vh}
  .hm-cell{width:9px;height:9px}
  .heatmap{gap:2px}
  .view{padding:14px}
  .insp-tabs{overflow-x:auto}
  .lib-sidebar{max-height:280px}
  .search-bar input{font-size:15px}
}

/* 小屏安全区底部留白 */
@media (max-width: 480px){
  body{padding-bottom:env(safe-area-inset-bottom)}
  .fabs{bottom:max(16px, env(safe-area-inset-bottom))}
}


/* ========== v41 窄窗口修复：900px 以下检查器浮动，reader 不被挤压 ========== */
@media (max-width: 900px){
  .lib-layout{grid-template-columns:260px minmax(0,1fr);position:relative}
  .lib-layout.inspector-open{grid-template-columns:260px minmax(0,1fr)}
  .lib-main{min-width:0}
  .lib-inspector{position:absolute;right:12px;top:12px;bottom:12px;width:320px;max-width:86vw;z-index:45;box-shadow:var(--shadow-lg)}
  .lib-layout.inspector-open .lib-inspector{display:flex!important}
  .lib-layout:not(.inspector-open) .lib-inspector{display:none!important}
  .editor-area{min-width:0;overflow-x:hidden}
}
/* ========== v41 手机端检查器：全屏抽屉式 ========== */
@media (max-width: 768px){
  .lib-layout.inspector-open .lib-inspector{width:calc(100vw - 20px);max-width:100%;left:10px;right:10px;top:56px;bottom:10px}
}

/* ========== v42 手机端：768px 以下笔记库单列（390px 下 260px 侧栏过挤） ========== */
@media (max-width: 768px){
  .lib-layout{grid-template-columns:minmax(0,1fr)!important}
  /* v63.1: mobile list height fits content; page scrolls, no blank gap */
  .lib-layout{height:auto!important;min-height:calc(100dvh - var(--topbar-h) - 56px)}
  .lib-layout .lib-sidebar{max-height:none!important}
  .lib-layout .lib-sidebar{max-width:100%}
  .lib-layout .lib-main{min-width:0}
  .lib-layout.inspector-open .lib-inspector{width:calc(100vw - 20px);max-width:100%;left:10px;right:10px;top:56px;bottom:10px}
  /* v42.1: 481-767px 区间也保证触控目标与最小字号（真实手机 390px 由 480px 块覆盖） */
  button,.btn,.btn-primary,.nav-item,.tool-btn,.quick-add-btn,.quick-link,.suggest-chip,.mode-btn,.insp-tab{min-height:44px}
  .kbd{font-size:11px;min-width:24px;padding:2px 5px}
  .splash-sub{font-size:11px}
  .version-badge{font-size:11px}
  .shortcut-hint,.kbd-hint{font-size:11px}
}


/* ========== v40.6 iPhone Safari 全面自适应（V40 审查打磨，2026-09-08） ==========
 * 目标：iPhone（375-430px）自用场景
 * 1) iOS 地址栏收缩导致 100vh 布局底部被截 -> 100dvh 兜底（双写，旧浏览器回退 vh）
 * 2) 防 iOS 自动放大文字 / 防横向滚动溢出
 * 3) 窄屏强制单列 + 侧边栏抽屉式隐藏（!important 防旧规则覆盖）
 * 4) 启动屏手机端彻底移除（防 JS 挂起时遮挡）
 */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{overflow-x:hidden}
#mainContent{min-height:100dvh}
.view{height:calc(100dvh - var(--topbar-h))}
.lib-layout{height:calc(100dvh - var(--topbar-h) - 56px)}
.chat-layout{height:calc(100dvh - var(--topbar-h) - 56px)}
.graph-container{height:calc(100dvh - var(--topbar-h) - 56px)}
@media(max-width:768px){
  #sidebar{transform:translateX(-100%)!important}
  #sidebar.open{transform:translateX(0)!important}
  .chat-layout{grid-template-columns:1fr!important}
  .chat-sidebar{display:none!important}
  .evo-layout{grid-template-columns:1fr!important}
  .settings-layout{grid-template-columns:1fr!important}
  .splash-screen.hidden{display:none!important}
}
@media(max-width:480px){
  .view{padding:16px 14px}
  .chat-layout,.lib-layout{margin:0}
  .topbar{padding-left:max(12px, env(safe-area-inset-left));padding-right:max(12px, env(safe-area-inset-right))}
}

/* ========== v41: 编辑器标签推荐按钮 ========== */
.tag-suggest-btn{margin-left:8px;padding:3px 12px;border:1px solid var(--neon);color:var(--neon);background:rgba(45,212,191,.06);border-radius:20px;font-size:11px;cursor:pointer;white-space:nowrap;transition:var(--transition);flex-shrink:0}
.tag-suggest-btn:hover{background:rgba(45,212,191,.15);box-shadow:var(--neon-glow-sm)}
.tag-suggest-btn:active{transform:scale(.95)}

/* ========== v42: 笔记库三视图（列表/表格/看板） ========== */
.view-toggle{display:flex;gap:2px;margin-left:auto;flex-shrink:0}
.vt-btn{width:26px;height:26px;border:1px solid var(--line);background:var(--panel);color:var(--muted);border-radius:6px;font-size:13px;cursor:pointer;line-height:1;display:flex;align-items:center;justify-content:center;transition:var(--transition)}
.vt-btn:hover{color:var(--neon);border-color:var(--neon)}
.vt-btn.active{background:rgba(45,212,191,.12);color:var(--neon);border-color:var(--neon)}
.lib-layout.table-mode{grid-template-columns:1fr!important}
.lib-layout.board-mode{grid-template-columns:1fr!important}
.note-table{width:100%;border-collapse:collapse;font-size:12px}
.note-table th{position:sticky;top:0;background:var(--bg-elevated);color:var(--muted);text-align:left;padding:8px 10px;border-bottom:1px solid var(--line);font-weight:600;white-space:nowrap;z-index:2}
.note-table th.sortable{cursor:pointer;user-select:none}
.note-table th.sortable:hover{color:var(--neon)}
.note-table td{padding:7px 10px;border-bottom:1px solid var(--line-soft);vertical-align:middle}
.note-table .nt-row{cursor:pointer;transition:var(--transition)}
.note-table .nt-row:hover{background:rgba(45,212,191,.05)}
.note-table .nt-row.selected{background:rgba(45,212,191,.1)}
.note-table .nt-title{font-weight:600;max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.note-table .nt-muted{color:var(--muted-soft)}
.board-view{display:flex;gap:12px;align-items:flex-start;padding:4px 2px 24px}
.board-col{flex:1;min-width:0;background:var(--bg-elevated);border:1px solid var(--line-soft);border-radius:var(--radius);padding:8px}
.board-col-head{display:flex;align-items:center;gap:6px;padding:4px 6px 10px;border-bottom:1px solid var(--line-soft);margin-bottom:8px}
.board-col-dot{width:18px;height:18px;border-radius:5px;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;color:#fff}
.board-col-dot.q-a{background:linear-gradient(135deg,#34d399,#059669)}
.board-col-dot.q-b{background:linear-gradient(135deg,#38bdf8,#2563eb)}
.board-col-dot.q-c{background:linear-gradient(135deg,#fbbf24,#d97706)}
.board-col-dot.q-d{background:linear-gradient(135deg,#94a3b8,#475569)}
.board-col-label{font-size:12px;font-weight:600;color:var(--ink)}
.board-col-count{font-size:11px;color:var(--muted);margin-left:auto}
.board-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-sm);padding:8px 10px;margin-bottom:8px;cursor:pointer;transition:var(--transition)}
.board-card:hover{border-color:var(--neon);box-shadow:var(--neon-glow-sm);transform:translateY(-1px)}
.board-card-title{font-size:12px;font-weight:600;margin-bottom:3px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.board-card-meta{font-size:10px;color:var(--muted-soft);margin-bottom:4px}
.board-card-tags{display:flex;gap:4px;flex-wrap:wrap;margin-bottom:4px}
.board-card-excerpt{font-size:11px;color:var(--muted);line-height:1.5;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.board-empty{color:var(--muted-soft);font-size:11px;text-align:center;padding:14px 0;border:1px dashed var(--line);border-radius:var(--radius-sm)}
@media(max-width:768px){
  .board-view{flex-direction:column}
  .note-table{font-size:11px}
  .note-table th,.note-table td{padding:6px 6px}
}

/* ========== v42: 移动端左滑删除 ========== */
.note-item{position:relative;overflow:hidden}
.swipe-del{position:absolute;top:0;right:0;bottom:0;width:88px;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--cyber-red),#dc2626);color:#fff;font-size:12px;font-weight:600;opacity:0;pointer-events:none;transition:opacity .2s;z-index:0}
.swipe-content{position:relative;z-index:1}
.note-item.swipe-open .swipe-del{opacity:1!important;pointer-events:auto}

/* ========== v43: 服务器项目总览 ========== */
.projects-panel{margin:18px 0;background:var(--bg-elevated);border:1px solid var(--line-soft);border-radius:var(--radius);padding:14px 16px}
.panel-head{display:flex;align-items:center;gap:10px;margin-bottom:12px;flex-wrap:wrap}
.panel-head h3{font-size:14px;margin:0;color:var(--ink)}
.panel-sub{font-size:11px;color:var(--muted)}
.projects-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(215px,1fr));gap:8px}
.proj-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-sm);padding:8px 10px;cursor:default;transition:var(--transition)}
.proj-card.p-ok{border-left:3px solid #34d399}
.proj-card.p-degraded{border-left:3px solid #fbbf24}
.proj-card.p-fail{border-left:3px solid var(--cyber-red)}
.proj-card:hover{border-color:var(--line-strong)}
/* v62: 有可访问链接的卡片 cursor 变为 pointer（可点击展开+名称可跳转） */
.proj-card.has-link{cursor:pointer}
.proj-row{display:flex;align-items:center;gap:6px;min-width:0}
.proj-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.p-ok .proj-dot{background:#34d399;box-shadow:0 0 6px rgba(52,211,153,.6)}
.p-degraded .proj-dot{background:#fbbf24;box-shadow:0 0 6px rgba(251,191,36,.5)}
.p-fail .proj-dot{background:var(--cyber-red);box-shadow:0 0 6px rgba(244,63,94,.5)}
.proj-name{font-size:12px;font-weight:600;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* v62: 项目名称作为可点击链接——颜色+hover 效果 */
a.proj-name{text-decoration:none;cursor:pointer;border-bottom:1px dashed transparent;transition:all .15s ease}
a.proj-name:hover{color:var(--neon,#38bdf8);border-bottom-color:var(--neon,#38bdf8)}
.proj-ms{margin-left:auto;font-size:10px;color:#34d399;flex-shrink:0}
.proj-ms.deg{color:#fbbf24}
.proj-ms.fail{color:var(--cyber-red)}
.proj-note{font-size:10px;color:var(--muted);margin-top:3px}
/* v62: 展开区链接样式优化——flex 布局+外部链接图标 */
.proj-link{display:inline-flex;align-items:center;gap:3px;font-size:10px;color:var(--neon,#38bdf8);text-decoration:none;margin-top:3px;overflow:hidden;max-width:100%}
.proj-link:hover{text-decoration:underline}
/* v69: 管理后台入口——醒目主色按钮 */
.proj-admin-link{display:inline-flex;align-items:center;gap:4px;margin-top:6px;padding:3px 10px;border-radius:6px;font-size:11px;font-weight:600;color:#fff !important;background:linear-gradient(135deg,#667eea,#764ba2);text-decoration:none !important;box-shadow:0 2px 8px rgba(102,126,234,.35)}
.proj-admin-link:hover{filter:brightness(1.1);text-decoration:none !important}
.proj-admin-link .proj-link-icon{opacity:1;font-size:11px}
/* v63: 卡片正面常驻 homepage 链接，不用展开也能直接点 */
.proj-home{display:inline-flex;align-items:center;gap:3px;font-size:10px;color:var(--neon,#38bdf8);text-decoration:none;margin-top:2px;overflow:hidden;max-width:100%}
.proj-home:hover{text-decoration:underline}
a.proj-name{border-bottom:1px dashed var(--neon);color:var(--neon)}
.proj-link-icon{font-size:9px;opacity:.7;flex-shrink:0}
.proj-meta{margin-top:8px;display:flex;flex-wrap:wrap;gap:4px}
.proj-meta-item{font-size:11px;color:var(--accent);background:rgba(99,179,237,.1);border:1px solid rgba(99,179,237,.25);border-radius:6px;padding:2px 7px}
.proj-err{font-size:10px;color:var(--cyber-red);margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media(max-width:768px){
  .projects-grid{grid-template-columns:1fr 1fr}
}

/* ========== v44: 项目总览打磨（分组/环境/详情/徽章） ========== */
.proj-group-head{display:flex;align-items:center;gap:8px;grid-column:1/-1;margin:10px 0 4px;padding-top:8px;border-top:1px solid var(--line-soft)}
.proj-group-head:first-child{margin-top:0;border-top:none;padding-top:0}
.proj-group-name{font-size:12px;font-weight:700;color:var(--ink)}
.proj-group-count{font-size:10px;color:var(--muted)}
.pm-hist{background:rgba(80,200,120,.12);border:1px solid rgba(80,200,120,.3);color:var(--ok,#4cd964)}
.pm-badge{display:inline-block;font-size:10px;padding:1px 6px;border-radius:10px;margin-right:4px}
.pm-ok{color:#34d399;background:rgba(52,211,153,.1)}
.pm-deg{color:#fbbf24;background:rgba(251,191,36,.1)}
.pm-fail{color:var(--cyber-red);background:rgba(244,63,94,.1)}
.pm-env{color:var(--muted);background:rgba(148,163,184,.12)}
.pm-src{font-size:10px;color:var(--muted-soft)}
.proj-card.p-local{border-left:3px solid #64748b}
.proj-card.p-local .proj-dot{background:#64748b}
.proj-ms.local{color:#94a3b8}
.proj-visit{font-size:10px;color:#22d3ee;background:rgba(34,211,238,.12);padding:1px 6px;border-radius:8px;flex-shrink:0;margin-left:4px}
.proj-visit-line{color:#22d3ee}
.proj-detail{display:none;margin-top:6px;padding-top:6px;border-top:1px dashed var(--line-soft)}
.proj-card.expanded .proj-detail{display:block}
.proj-info{font-size:10px;color:var(--muted);margin-top:2px}

/* ========== P1 指挥执行面（运维操作） ========== */
.proj-ops{display:flex;align-items:center;gap:4px;margin-top:6px;flex-wrap:wrap}
.proj-ops-label{font-size:10px;color:var(--muted);margin-right:2px}
.proj-op-btn{font-size:10px;padding:2px 7px;border-radius:6px;border:1px solid var(--line-strong);
  background:var(--bg-elevated);color:var(--ink);cursor:pointer;transition:var(--transition)}
.proj-op-btn:hover{background:rgba(52,211,153,.15);border-color:#34d399}
.proj-op-btn.is-write{color:#fbbf24;border-color:rgba(251,191,36,.4)}
.proj-op-btn.is-write:hover{background:rgba(251,191,36,.12);border-color:#fbbf24}
.ops-panel{margin-top:10px;border-top:1px dashed var(--line-soft);padding-top:10px}
.ops-sec{margin-bottom:8px}
.ops-sec-title{display:block;font-size:11px;font-weight:700;color:var(--ink);margin-bottom:4px}
.ops-item{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:11px;
  padding:4px 8px;border-radius:6px;background:var(--panel);border:1px solid var(--line);margin-top:4px}
.ops-item.pending{border-color:rgba(251,191,36,.45);background:rgba(251,191,36,.06)}
.ops-item.ok{border-color:rgba(52,211,153,.35)}
.ops-item.fail{border-color:rgba(244,63,94,.35)}
.ops-main{color:var(--ink)}
.ops-snippet{color:var(--muted);font-family:var(--mono,monospace);font-size:10px;max-width:60%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ops-btn{font-size:10px;padding:2px 10px;border-radius:6px;cursor:pointer;border:1px solid var(--line-strong);transition:var(--transition)}
.ops-btn.ok{color:#34d399;border-color:rgba(52,211,153,.4)}
.ops-btn.ok:hover{background:rgba(52,211,153,.12)}
.ops-btn.no{color:var(--cyber-red);border-color:rgba(244,63,94,.4)}
.ops-btn.no:hover{background:rgba(244,63,94,.12)}

/* ========== v46 移动端底部导航 ========== */
.mobile-tabbar{display:none}
@media(max-width:768px){
  .mobile-tabbar{
    display:flex;position:fixed;left:0;right:0;bottom:0;height:54px;z-index:80;
    background:rgba(16,18,26,.92);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
    border-top:1px solid rgba(255,255,255,.08);
    padding-bottom:env(safe-area-inset-bottom);
  }
  .mt-item{
    flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;
    background:none;border:none;color:var(--muted,#8b949e);font-size:10px;cursor:pointer;
    min-height:44px;padding:4px 0;
  }
  .mt-item .mt-icon{font-size:17px;line-height:1}
  .mt-item.active{color:var(--cyber-green,#00e5a0)}
  .mt-item:active{opacity:.7}
  /* 底部导航不遮挡内容：各视图留出 tabbar 高度 */
  .view{padding-bottom:calc(64px + env(safe-area-inset-bottom))}
  .splash-screen.hidden{display:none!important}
}

/* ========== V57.8 手机端笔记体验优化 ========== */
/* 详情页/编辑页工具栏：手机端横向滚动不换行，按钮不挤压 */
@media(max-width:768px){
  .editor-toolbar{
    flex-wrap:nowrap!important;
    overflow-x:auto!important;
    overflow-y:hidden;
    -webkit-overflow-scrolling:touch;
    scrollbar-width:none;
    padding:8px 12px!important;
    gap:2px!important;
  }
  .editor-toolbar::-webkit-scrollbar{display:none}
  .editor-toolbar .tb-btn{
    flex-shrink:0!important;
    width:38px!important;
    height:38px!important;
    font-size:15px!important;
  }
  .editor-toolbar .tb-sep{flex-shrink:0;margin:0 2px}
  .editor-toolbar .mode-switch{flex-shrink:0}
  /* 标签筛选栏：横向滚动 */
  .lib-filters,.tag-chips{
    overflow-x:auto!important;
    flex-wrap:nowrap!important;
    -webkit-overflow-scrolling:touch;
    scrollbar-width:none;
    padding-bottom:2px;
  }
  .lib-filters::-webkit-scrollbar,.tag-chips::-webkit-scrollbar{display:none}
  .lib-filters .filter-btn,.tag-chips .tag-chip{
    flex-shrink:0!important;
    white-space:nowrap;
  }
  /* 列表收藏标记 */
  .ni-pin{
    color:#fbbf24;
    font-size:13px;
    margin-right:4px;
    flex-shrink:0;
  }
  /* 底部操作栏：保存按钮更突出 */
  .editor-footer{
    position:sticky;
    bottom:0;
    background:var(--bg-elevated);
    backdrop-filter:blur(12px);
    border-top:1px solid var(--line-soft);
    padding:8px 12px!important;
    z-index:10;
  }
  .editor-footer .btn-primary{
    min-height:44px;
    font-size:15px;
    font-weight:700;
  }
  /* 笔记正文手机端行距优化 */
  .note-reader-body{font-size:16px;line-height:1.85}
  .note-reader-body p{margin:0.9em 0}
  /* 关联笔记卡片手机端单列 */
  .related-grid{grid-template-columns:1fr!important}
  /* 阅读页底部操作按钮：可横向滚动 */
  .nr-actions{
    overflow-x:auto;
    flex-wrap:nowrap!important;
    -webkit-overflow-scrolling:touch;
    scrollbar-width:none;
    padding-bottom:4px;
  }
  .nr-actions::-webkit-scrollbar{display:none}
  .nr-action{flex-shrink:0!important;white-space:nowrap}
}
/* 小屏手机进一步紧凑 */
@media(max-width:480px){
  .editor-toolbar .tb-btn{width:36px!important;height:36px!important;font-size:14px!important}
  .note-reader-title{font-size:22px!important}
  .note-reader-meta{font-size:11px;gap:6px}
  .nr-tags .nr-tag{font-size:11px;padding:2px 8px}
}

/* ========== V57.9 全页面手机端综合优化 ========== */
@media(max-width:768px){
  /* ---- AI 对话页 ---- */
  .chat-layout{grid-template-columns:1fr!important;height:calc(100dvh - var(--topbar-h) - 56px - 54px)!important}
  .chat-sidebar{display:none!important}
  .chat-header{padding:12px 14px!important;flex-wrap:wrap;gap:8px}
  .chat-header h2{font-size:17px!important}
  .chat-header .chat-sub{font-size:11px!important}
  .chat-messages{padding:12px 14px!important}
  .chat-suggestions{overflow-x:auto;flex-wrap:nowrap!important;-webkit-overflow-scrolling:touch;scrollbar-width:none;padding-bottom:4px}
  .chat-suggestions::-webkit-scrollbar{display:none}
  .suggest-chip{flex-shrink:0!important;white-space:nowrap;font-size:12px!important}
  .chat-input-area{padding:10px 12px calc(10px + env(safe-area-inset-bottom))!important;position:sticky;bottom:0;background:var(--bg-elevated);border-top:1px solid var(--line-soft);z-index:10}
  .chat-input-wrap textarea{font-size:15px!important;min-height:40px!important}
  .send-btn{width:44px!important;height:44px!important;flex-shrink:0}
  .chat-hint{font-size:10px!important}
  .cw-bubble{font-size:14px!important;padding:12px 14px!important}
  .cw-bubble ul{padding-left:18px!important;font-size:13px!important}

  /* ---- 搜索页 ---- */
  .search-page{padding:12px!important}
  .search-header{flex-direction:column!important;gap:8px!important;align-items:stretch!important}
  .search-input-wrap{width:100%!important}
  .search-input-wrap input{font-size:15px!important;min-height:44px!important}
  .search-modes{justify-content:flex-start!important;gap:4px}
  .mode-btn{min-height:36px!important;font-size:12px!important;padding:6px 14px!important}
  .search-filters{overflow-x:auto;flex-wrap:nowrap!important;-webkit-overflow-scrolling:touch;scrollbar-width:none;padding-bottom:4px}
  .search-filters::-webkit-scrollbar{display:none}
  .search-filters .filter-chip{flex-shrink:0!important;white-space:nowrap}
  .search-result-item{padding:12px 14px!important}
  .search-result-title{font-size:14px!important}
  .search-result-snippet{font-size:12px!important;line-height:1.6!important}
  .search-history{overflow-x:auto;flex-wrap:nowrap!important;-webkit-overflow-scrolling:touch;scrollbar-width:none}
  .search-history::-webkit-scrollbar{display:none}
  .search-history .history-item{flex-shrink:0!important}

  /* ---- 设置页 ---- */
  .settings-layout{grid-template-columns:1fr!important;gap:10px!important}
  .settings-col{gap:10px!important}
  .settings-layout .card{padding:14px!important;border-radius:12px!important}
  .settings-layout .card h3{font-size:14px!important;margin-bottom:8px!important}
  .settings-layout .card-head{margin-bottom:8px!important}
  .import-form .input-row{flex-direction:column!important;gap:6px!important}
  .import-form .input-row input[type=text],.import-form .input-row input[type=password],.import-form .input-row input[type=file]{width:100%!important;min-height:40px!important;font-size:14px!important}
  .import-form .input-row .btn-primary,.import-form .input-row .btn-ghost{width:100%!important;min-height:42px!important;font-size:13px!important}
  .import-form textarea{font-size:13px!important}
  .import-result{font-size:12px!important}
  .backup-list .backup-item{padding:10px 12px!important;flex-direction:column!important;align-items:flex-start!important;gap:6px!important}
  .backup-item .backup-info{font-size:11px!important}
  .backup-item .backup-actions{display:flex;gap:6px;width:100%}
  .backup-item .backup-actions button{flex:1;min-height:36px!important;font-size:11px!important}
  .module-list .module-item{padding:10px 12px!important;font-size:13px!important}
  .data-actions{flex-direction:column!important;gap:6px!important}
  .data-actions button{width:100%!important;min-height:42px!important}
  .log-box{font-size:11px!important;max-height:200px!important}

  /* ---- 仪表盘 ---- */
  .dash-welcome{padding:16px!important;flex-direction:column!important;gap:12px!important;align-items:stretch!important}
  .dash-welcome h1{font-size:20px!important}
  .dash-welcome .dash-sub{font-size:12px!important}
  .dash-actions{flex-direction:row!important;gap:8px}
  .dash-actions .btn-primary,.dash-actions .btn-ghost{flex:1;min-height:44px!important;font-size:13px!important;justify-content:center}
  .stats-grid{grid-template-columns:repeat(2,1fr)!important;gap:8px!important}
  .stat-card{padding:12px!important;gap:8px!important}
  .stat-icon{width:36px!important;height:36px!important}
  .stat-icon svg{width:18px!important;height:18px!important}
  .stat-num{font-size:22px!important}
  .stat-label{font-size:11px!important}
  .dash-grid{gap:10px!important}
  .dash-card{padding:14px!important;border-radius:12px!important}
  .dash-card .card-head{margin-bottom:10px!important}
  .dash-card .card-head h3{font-size:14px!important}
  .chart-area{height:140px!important}
  .heatmap-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
  .heatmap{min-width:500px}
  .quick-links{grid-template-columns:repeat(2,1fr)!important;gap:8px!important}
  .quick-link{min-height:56px!important;font-size:12px!important;padding:10px!important}
  .ql-icon{font-size:20px!important}
  .recent-list .recent-item{padding:10px 0!important}
  .recent-item-title{font-size:13px!important}
  .daily-quote-card{padding:16px!important}
  .dq-text{font-size:15px!important;line-height:1.7!important}
  .dq-source{font-size:11px!important}

  /* ---- 进化页 ---- */
  .evo-layout{grid-template-columns:1fr!important;gap:10px!important}
  .evo-col{gap:10px!important}
  .evo-layout .card{padding:14px!important;border-radius:12px!important}
  .evo-layout .card h3{font-size:14px!important}
  .digest-content{font-size:13px!important;line-height:1.7!important;max-height:300px!important}
  .radar-wrap{height:220px!important}
  .radar-wrap svg{height:220px!important}
  .sugg-list .sugg-item{padding:10px 12px!important;font-size:13px!important}
  .cluster-list .cluster-item{padding:10px 12px!important}
  .cluster-name{font-size:13px!important}
  .evo-log{font-size:11px!important;max-height:200px!important}

  /* ---- 复习页 ---- */
  .review-layout{grid-template-columns:1fr!important;gap:10px!important}
  .review-stats{grid-template-columns:repeat(2,1fr)!important;gap:8px!important}
  .review-stat{padding:12px!important}
  .review-stat .rs-num{font-size:22px!important}
  .review-stat .rs-label{font-size:11px!important}
  .gauge-card{order:-1}
  .gauge-wrap{height:120px!important}
  .gauge-wrap svg{height:120px!important}
  .review-card{padding:20px 16px!important;min-height:280px!important}
  .review-card .rc-front,.review-card .rc-back{font-size:15px!important;line-height:1.8!important}
  .review-actions{gap:8px!important}
  .review-actions button{flex:1;min-height:48px!important;font-size:14px!important}
  .due-list .due-item{padding:10px 12px!important;font-size:13px!important}

  /* ---- 图谱页 ---- */
  .graph-toolbar{padding:8px 12px!important;flex-wrap:wrap!important;gap:6px!important}
  .graph-tab{min-height:36px!important;font-size:12px!important;padding:6px 12px!important}
  .graph-canvas-wrap{height:calc(100dvh - var(--topbar-h) - 56px - 54px - 100px)!important}
  .graph-controls{flex-wrap:wrap!important;gap:6px!important}
  .graph-controls button{min-height:36px!important;font-size:11px!important;padding:4px 10px!important}

  /* ---- 时间线页 ---- */
  .timeline-wrap{padding:12px 4px 12px 18px!important}
  .timeline-item{padding:10px 12px!important}
  .tl-title{font-size:13px!important}
  .tl-meta{font-size:11px!important}
  .tl-time{font-size:10px!important;min-width:44px!important}

  /* ---- 通用弹层/模态框 ---- */
  .qcm-box{width:calc(100vw - 24px)!important;max-width:100%!important;left:12px!important;right:12px!important;top:50%!important;transform:translateY(-50%)!important;max-height:80vh!important;overflow-y:auto}
  .qcm-title,.qcm-content{font-size:15px!important}
  .qcm-actions{padding:12px!important}
  .help-box{width:calc(100vw - 24px)!important;max-height:80vh!important;overflow-y:auto}
  .palette-box{width:calc(100vw - 24px)!important;left:12px!important;right:12px!important}
  .palette-search input{font-size:15px!important;min-height:44px!important}
  .ai-writer-panel{width:calc(100vw - 16px)!important;left:8px!important;right:8px!important;bottom:8px!important;max-height:80vh!important;overflow-y:auto}
  .template-picker{width:calc(100vw - 24px)!important;max-height:80vh!important;overflow-y:auto}
  .version-history-panel{width:calc(100vw - 24px)!important;max-height:80vh!important;overflow-y:auto}

  /* ---- 底部导航不遮挡 ---- */
  .view{padding-bottom:calc(70px + env(safe-area-inset-bottom))!important}
  .chat-messages{padding-bottom:80px!important}
  .editor-area{padding-bottom:70px!important}
}
/* 超小屏（<=380px）进一步紧凑 */
@media(max-width:380px){
  .stat-num{font-size:20px!important}
  .dash-welcome h1{font-size:18px!important}
  .graph-tab{font-size:11px!important;padding:5px 8px!important}
  .mode-btn{font-size:11px!important;padding:5px 10px!important}
}

/* ========== V57.11 阅读进度条 + AI对话增强 ========== */
.reading-progress{position:sticky;top:0;left:0;width:100%;height:3px;background:var(--line-soft);z-index:20;overflow:hidden}
.reading-progress-bar{height:100%;background:linear-gradient(90deg,var(--accent),var(--accent-2));width:0%;transition:width .1s linear;border-radius:0 2px 2px 0}
.reading-progress-text{position:absolute;right:8px;top:-18px;font-size:10px;color:var(--text-dim);background:var(--bg-elevated);padding:1px 6px;border-radius:8px}
/* AI对话思考动画 */
.thinking-dots{display:inline-flex;gap:3px;align-items:center}
.thinking-dots span{width:6px;height:6px;border-radius:50%;background:var(--accent);animation:thinkBounce 1.2s infinite ease-in-out}
.thinking-dots span:nth-child(2){animation-delay:.15s}
.thinking-dots span:nth-child(3){animation-delay:.3s}
@keyframes thinkBounce{0%,60%,100%{transform:translateY(0);opacity:.4}30%{transform:translateY(-5px);opacity:1}}
.chat-stop-btn{background:var(--danger);color:#fff;border:none;border-radius:8px;padding:4px 12px;font-size:12px;cursor:pointer;min-height:32px}
.chat-stop-btn:hover{opacity:.85}
.typing-cursor{color:var(--accent);animation:blink 1s step-end infinite}
@keyframes blink{50%{opacity:0}}

/* V57.12 搜索相似度进度条 */
.sr-score-bar{display:inline-flex;align-items:center;gap:6px;font-size:11px;color:var(--text-dim)}
.sr-score-track{width:48px;height:4px;background:var(--line-soft);border-radius:2px;overflow:hidden}
.sr-score-fill{height:100%;background:linear-gradient(90deg,var(--accent),var(--accent-2));border-radius:2px}
.search-result{transition:background .15s,border-color .15s}
.search-result:hover{background:var(--bg-hover);border-color:var(--accent)}
.search-result.selected{border-color:var(--accent);background:var(--bg-hover)}

/* ========== v57.8 移动端 FAB 新建按钮（右下角拇指热区） ========== */
.fab-new{
  display:none;position:fixed;right:20px;
  bottom:calc(84px + env(safe-area-inset-bottom));
  width:56px;height:56px;border-radius:50%;
  border:none;background:var(--accent,#4f6ef7);color:#fff;
  font-size:26px;line-height:1;cursor:pointer;
  align-items:center;justify-content:center;
  box-shadow:0 6px 20px rgba(0,0,0,.35);
  z-index:900;touch-action:manipulation;
  -webkit-tap-highlight-color:transparent;
  transition:transform .12s ease,box-shadow .12s ease;
}
.fab-new:active{transform:scale(.9);box-shadow:0 3px 10px rgba(0,0,0,.3)}
/* ========== v65 朗读面板（学英语最佳实践） ==========
   v58.35 最佳实践：全宽底部横幅 → 右下角浮动卡（不挡内容）＋迷你条收起（朗读不中断） */
.read-panel{position:fixed;right:12px;bottom:calc(64px + env(safe-area-inset-bottom,0px));width:min(340px,calc(100vw - 24px));max-height:68vh;overflow-y:auto;-webkit-overflow-scrolling:touch;background:var(--panel-glass);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--line);border-radius:16px;padding:14px 16px calc(14px + env(safe-area-inset-bottom,0px));z-index:890;display:none;box-shadow:0 8px 30px rgba(0,0,0,.28)}
.read-panel.open{display:block;animation:rpIn .2s ease}
@keyframes rpIn{from{transform:translateY(12px) scale(.98);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}
.read-panel-head{display:flex;justify-content:space-between;align-items:center;font-weight:700;margin-bottom:10px;font-size:15px}
.read-panel-close{background:none;border:none;color:var(--muted);font-size:16px;cursor:pointer;padding:2px 6px}
.read-row{display:flex;align-items:center;gap:6px;margin-bottom:8px;flex-wrap:wrap}
.read-row>span{width:34px;font-size:12px;color:var(--muted);flex-shrink:0}
.read-opt{padding:4px 12px;border:1px solid var(--line);border-radius:14px;font-size:12px;background:var(--chip);color:var(--ink);cursor:pointer;min-height:30px}
.read-opt.active{background:var(--neon);color:#fff;border-color:transparent}
.read-hint{font-size:10px;color:var(--muted-soft)}
.read-status{font-size:12px;color:var(--neon);min-height:18px;margin:6px 0;padding:6px 10px;background:var(--neon-l);border-radius:8px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.read-actions{display:flex;gap:10px;margin-top:4px}
.read-actions .btn-primary,.read-actions .btn-danger{flex:1;min-height:44px;border-radius:12px;font-size:15px;border:none;cursor:pointer}
.read-actions .btn-danger{background:var(--cyber-red);color:#fff}
/* v58.35 朗读迷你条（面板收起态的最小悬浮胶囊，右下角，不挡内容） */
.read-mini{position:fixed;right:12px;bottom:calc(12px + env(safe-area-inset-bottom,0px));z-index:895;display:none;align-items:center;gap:6px;background:var(--panel-glass);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--line);color:var(--ink);padding:9px 14px;border-radius:999px;font-size:13px;font-weight:600;box-shadow:0 4px 16px rgba(0,0,0,.25);cursor:pointer;max-width:64vw;line-height:1.3}
.read-mini.show{display:flex;animation:rpIn .18s ease}
.read-mini .rm-t{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:40vw;font-weight:500}
.read-mini.playing{border-color:var(--cyber-green,#10b981);animation:readPulse 1.8s ease-in-out infinite}
/* v58.36 迷你条内嵌 ⏯（圆钮，不挡、可点、勿误触正文） */
.read-mini .rm-play{width:28px;height:28px;line-height:26px;text-align:center;border-radius:50%;background:var(--neon);color:#fff;font-size:13px;flex-shrink:0;margin-right:2px}
/* v58.36 正文当前句高亮：明显但不刺眼，仅背景+左侧指示条+圆角，不改 padding/border/字重 → 零布局跳动 */
.note-reader-body .read-hl{background:var(--neon-l,rgba(16,185,129,.10));box-shadow:inset 3px 0 0 var(--neon,#10b981);border-radius:6px;transition:background .25s ease}
/* v58.36 Reading Safe Area：面板展开时正文右侧避让（宽屏 ≥900px），当前句不被控制器遮挡 */
@media (min-width:900px){
  .note-reader-body.read-safe{padding-right:356px}
}

/* ========== v58.29 朗读面板增强（真人发音最佳实践） ========== */
.read-engine{font-size:11px;font-weight:600;padding:2px 10px;border-radius:11px;flex-shrink:0;line-height:1.5}
.read-engine.system{background:var(--neon-l);color:var(--neon);border:1px solid var(--neon)}
.read-engine.cloud{background:var(--cyber-purple-l,rgba(124,58,237,.12));color:var(--accent,#7c3aed);border:1px solid var(--accent,#7c3aed)}
.read-row>.read-lbl{width:34px;font-size:12px;color:var(--muted);flex-shrink:0}
.read-select{flex:1;min-width:0;min-height:34px;padding:4px 8px;border:1px solid var(--line);border-radius:10px;background:var(--chip);color:var(--ink);font-size:12px;appearance:auto;-webkit-appearance:auto}
/* v58.40: 原生下拉弹层是系统渲染（Windows 浅底），option 继承深色主题的浅色文字=看不见；
   强制 option/optgroup 浅底深字，任何系统主题下都可读 */
.read-select option,.read-select optgroup{color:#111827;background:#ffffff}
/* v58.40: 多音色轮换 chips */
.rot-chips{display:flex;flex-wrap:wrap;gap:6px;align-items:center;min-width:0;flex:1}
.rot-chip{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:999px;background:var(--chip);border:1px solid var(--line);color:var(--ink);font-size:11px;max-width:160px;white-space:nowrap}
.rot-chip span{overflow:hidden;text-overflow:ellipsis;max-width:120px}
.rot-chip b{cursor:pointer;opacity:.65;font-weight:400;flex-shrink:0}
.rot-chip b:hover{opacity:1;color:#f87171}
.rot-hint{font-size:10px;color:var(--muted);flex-shrink:0}
.read-cloud{flex:1;border-color:var(--accent,#4f6ef7)!important;color:var(--accent,#4f6ef7)!important}
.read-progress{height:4px;width:100%;background:var(--line);border-radius:3px;overflow:hidden;margin:8px 0 2px}
.read-progress-bar{height:100%;width:0;background:linear-gradient(90deg,var(--neon),var(--accent));border-radius:3px;transition:width .3s ease}
.read-transcript{max-height:76px;overflow-y:auto;font-size:12px;line-height:1.6;margin:2px 0 4px;-webkit-overflow-scrolling:touch}
.rt-line{padding:3px 8px;border-radius:7px;color:var(--muted);margin:1px 0;opacity:.6}
.rt-line.active{background:var(--neon-l);color:var(--ink);opacity:1;font-weight:600;border-left:3px solid var(--neon)}
#readPlayBtn.playing{background:linear-gradient(135deg,var(--cyber-green,#10b981),#059669);animation:readPulse 1.6s ease-in-out infinite}
@keyframes readPulse{0%,100%{box-shadow:0 0 0 0 rgba(16,185,129,.4)}50%{box-shadow:0 0 0 8px rgba(16,185,129,0)}}
.read-cloud-note{font-size:12px;color:var(--accent,#4f6ef7);margin:6px 0 2px}
.read-diag{margin-top:8px;text-align:center}
.read-diag-link{font-size:12px;color:var(--muted-soft);text-decoration:none}
.read-diag-link:hover{color:var(--neon)}
.read-diag-body{margin-top:8px;text-align:left;max-height:180px;overflow-y:auto;-webkit-overflow-scrolling:touch}
.read-diag-table{border:1px solid var(--line);border-radius:9px;overflow:hidden}
.read-diag-row{display:flex;justify-content:space-between;gap:10px;padding:6px 10px;font-size:11px;border-bottom:1px solid var(--line-soft,rgba(0,0,0,.05))}
.read-diag-row:last-child{border-bottom:none}
.read-diag-row span{color:var(--muted)}
.read-diag-row b{color:var(--ink);font-weight:600}
.read-diag-tip{font-size:11px;color:var(--muted-soft);margin-top:8px;line-height:1.6}
.read-diag-load{font-size:12px;color:var(--muted);text-align:center;padding:10px}

@media (max-width:768px){
  .fab-new{display:flex}
  /* 移动端隐藏顶部重复按钮，单入口 */
  #topbar .topbar-right #newNoteBtn{display:none}
}

/* ========== v57.8 移动端新建笔记悬浮按钮（FAB） ==========
   最佳实践：Material Design FAB，固定右下角拇指自然可达区；
   56px 直径 ≥ Apple HIG 44pt 最小触控目标；仅在移动端显示，
   移动端同时隐藏顶部新建按钮（避免双入口）。 */
.fab-new{
  display:none;
  position:fixed;right:18px;bottom:calc(92px + env(safe-area-inset-bottom, 0px));
  width:58px;height:58px;border-radius:50%;
  background:linear-gradient(135deg,#4f6ef7,#7c3aed);
  color:#fff;font-size:34px;font-weight:500;line-height:1;
  border:2px solid rgba(255,255,255,.9);
  box-shadow:0 6px 20px rgba(79,110,247,.5),0 2px 8px rgba(0,0,0,.22);
  z-index:880;cursor:pointer;
  align-items:center;justify-content:center;
  touch-action:manipulation;-webkit-tap-highlight-color:transparent;
  transition:transform .12s ease,box-shadow .12s ease;
  user-select:none;-webkit-user-select:none;
}
.fab-new:active{transform:scale(.9);box-shadow:0 4px 12px rgba(0,0,0,.35)}
@media (max-width:768px){
  .fab-new{display:flex}
  .topbar #newNoteBtn{display:none}
}


/* ========== v57.4 优化：打印样式（2026-09-10） ========== */
@media print {
  #sidebar, #topbar, .fab-new, .floating-toc, #toast, .splash-screen,
  .ollama-banner, .mobile-tabbar, #particleBg, .reading-progress,
  .graph-panel, .projects-panel, .insp-panel, .mini-graph-wrap,
  #aiPanel, .ai-chat, .chat-box, .kbd, .btn-primary { display: none !important; }
  body { background: #fff !important; color: #000 !important; }
  #mainContent { margin: 0 !important; padding: 0 !important; width: 100% !important; max-width: 100% !important; }
  .view { display: none !important; }
  .view.active { display: block !important; }
  .note-reader { padding: 0 !important; max-width: 100% !important; margin: 0 !important; }
  .note-reader-title, .note-reader-body, .note-reader-meta,
  .note-reader-body h1, .note-reader-body h2, .note-reader-body h3,
  .note-reader-body h4, .note-reader-body p, .note-reader-body li,
  .note-reader-body blockquote, .note-reader-body td, .note-reader-body th { color: #000 !important; }
  .note-reader-body { font-size: 12pt !important; line-height: 1.6 !important; }
  .note-reader-title { -webkit-text-fill-color: #000 !important; background: none !important; }
  a { color: #000 !important; text-decoration: underline !important; }
  pre, code { white-space: pre-wrap !important; word-break: break-all !important; }
  canvas { display: none !important; }
}

/* ========== v57.4 优化：减少动态效果（无障碍，2026-09-10） ========== */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}

/* ========== V57.13 移动端阅读器全屏 + 工具栏常驻（修复"打开笔记后无法关闭/放大"） ==========
   根因：移动端阅读时 .editor-toolbar 的 position:sticky 因中间容器
   (.lib-main{overflow:hidden} / .editor-area{overflow-y:auto}) 的存在而失效，
   工具栏（含 ← 返回、A-、A+ 字号）随内容滚出屏幕 → 用户无法关闭笔记、无法调字号。
   修复：打开笔记时（body.reader-open）移动端隐藏列表、阅读器全屏，
   并消除中间 overflow 容器，使工具栏吸附到 .view 滚动容器顶部、滚动阅读时始终可见。 */
@media(max-width:768px){
  body.reader-open .lib-layout .lib-sidebar{display:none!important}
  body.reader-open .lib-layout{grid-template-columns:minmax(0,1fr)!important;height:auto}
  body.reader-open .lib-layout .lib-main{overflow:visible!important}
  body.reader-open .lib-layout .editor-area{overflow:visible!important}
  /* 阅读器顶部留出工具栏呼吸空间 */
  body.reader-open .note-reader{padding-top:16px}
  /* 工具栏吸附到视图顶部（顶栏下方），滚动阅读时始终可见 */
  body.reader-open .editor-toolbar{position:sticky;top:0;z-index:30}
  /* 保证阅读页底部操作不遮挡 */
  body.reader-open .note-reader{padding-bottom:72px}
}
}
/* v63 fix mobile note-lib occluded by blank editor column (2026-09-12) */
@media(max-width:768px){
  body:not(.reader-open) .lib-layout .lib-main{display:none!important}
}

/* 行动计划模块（晨幻 · 集成） */
.plan-wrap{max-width:960px;margin:0 auto;padding:20px 16px}
.plan-head h2{margin:0;font-size:22px}
.plan-sub{color:#8a93a6;font-size:13px;margin:4px 0 0}
.plan-cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px;margin-top:16px}
.plan-card{background:var(--card,#151b28);border:1px solid var(--border,#232b3b);border-radius:14px;padding:16px}
.plan-card-h{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}
.plan-card-h h3{margin:0;font-size:16px}
.plan-week{font-size:12px;color:#8a93a6}
.plan-list{display:flex;flex-direction:column;gap:8px;min-height:60px}
.plan-item{display:flex;align-items:center;gap:8px;padding:10px 12px;border-radius:10px;background:rgba(255,255,255,0.04);border:1px solid rgba(255,255,255,0.06)}
.plan-item.done .plan-title{text-decoration:line-through;opacity:.5}
.plan-check{width:26px;height:26px;border-radius:50%;border:1px solid #3a4560;background:transparent;color:#e8ecf4;font-size:14px;cursor:pointer;flex:none}
.plan-item.done .plan-check{background:#2e7d32;border-color:#2e7d32;color:#fff}
.plan-pri{font-size:10px;font-weight:700;padding:2px 6px;border-radius:6px;flex:none}
.pri-p1{background:#c62828;color:#fff}.pri-p2{background:#e65100;color:#fff}.pri-p3{background:#2e7d32;color:#fff}.pri-p4{background:#37474f;color:#fff}
.plan-title{flex:1;font-size:14px;word-break:break-all}
.plan-del{background:none;border:none;color:#8a93a6;font-size:16px;cursor:pointer;flex:none}
.plan-empty{color:#8a93a6;font-size:13px;padding:12px;text-align:center;border:1px dashed #2a3346;border-radius:10px}
.plan-add{display:flex;gap:8px;margin-top:12px}
.plan-add select{background:#0f1420;border:1px solid #2a3346;border-radius:8px;color:#e8ecf4;padding:6px 4px;font-size:13px;flex:none}
.plan-add input{flex:1;background:#0f1420;border:1px solid #2a3346;border-radius:8px;color:#e8ecf4;padding:8px 10px;font-size:14px;min-width:0}
.plan-btn{flex:none}
@media(max-width:640px){.plan-cols{grid-template-columns:1fr}}

/* 行动计划 AI 规划 */
.plan-ai{margin-top:14px}
.plan-ai-row{display:flex;gap:8px}
.plan-ai-row input{flex:1;background:#0f1420;border:1px solid #2a3346;border-radius:8px;color:#e8ecf4;padding:8px 10px;font-size:14px;min-width:0}
.plan-sugg{margin-top:10px;background:rgba(255,255,255,0.03);border:1px solid #2a3346;border-radius:12px;padding:12px}
.plan-sugg-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;font-size:13px;color:#8a93a6}
.plan-sugg-cols{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.plan-sugg-label{font-size:12px;color:#8a93a6;margin-bottom:8px}
@media(max-width:640px){.plan-sugg-cols{grid-template-columns:1fr}}

/* 行动计划统计/遗留/时间块 */
.plan-stats{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:12px}
.plan-stat{background:rgba(255,255,255,0.03);border:1px solid #232b3b;border-radius:10px;padding:10px 12px}
.plan-stat-h{display:flex;justify-content:space-between;font-size:12px;color:#8a93a6;margin-bottom:6px}
.plan-stat-h b{color:#e8ecf4}
.plan-bar{height:6px;border-radius:3px;background:rgba(255,255,255,0.08);overflow:hidden}
.plan-bar-in{height:100%;border-radius:3px;transition:width .4s}
.plan-carry{margin-top:12px;background:rgba(255,176,32,0.06);border:1px solid rgba(255,176,32,0.35);border-radius:12px;padding:10px 12px}
.plan-carry-h{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;font-size:13px;color:#ffb020}
.plan-carry .plan-item{margin-top:6px}
.plan-slot{font-size:10px;padding:2px 6px;border-radius:6px;background:rgba(91,155,213,0.18);color:#8fc4f0;flex:none}
@media(max-width:640px){.plan-stats{grid-template-columns:1fr}}

/* 北极星环 + 周趋势 */
.plan-ns{display:flex;gap:18px;align-items:center;margin-top:14px;background:rgba(255,255,255,0.03);border:1px solid #232b3b;border-radius:14px;padding:14px 16px}
.ns-left{position:relative;width:110px;height:110px;flex:none}
.ns-num{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
.ns-num b{font-size:22px;color:#e8ecf4}
.ns-num span{font-size:10px;color:#8a93a6}
.ns-num i{font-style:normal;font-size:10px;color:#ffb020}
.ns-right{flex:1;min-width:0}
.ns-right h3{margin:0 0 8px;font-size:15px}
.ns-inputs{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.ns-inputs label{font-size:12px;color:#8a93a6;display:flex;align-items:center;gap:4px}
.ns-inputs input{width:64px;background:#0f1420;border:1px solid #2a3346;border-radius:8px;color:#e8ecf4;padding:6px 8px;font-size:14px}
.ns-hint{font-size:11px;color:#5c6572;margin-top:6px}
.wk-wrap{margin-top:12px}
.wk-bars{display:flex;gap:6px;align-items:flex-end;height:64px}
.wk-col{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px}
.wk-bar{width:100%;max-width:22px;height:40px;background:rgba(255,255,255,0.06);border-radius:4px;display:flex;align-items:flex-end;overflow:hidden}
.wk-bar-in{width:100%;background:#5b9bd5;border-radius:4px;min-height:2px;transition:height .4s}
.wk-day{font-size:10px;color:#8a93a6}
.wk-cnt{font-size:9px;color:#5c6572}
@media(max-width:640px){.plan-ns{flex-direction:column;align-items:flex-start}.ns-right{width:100%}}

/* 北极星 6 月趋势 */
.ns-trend{margin-top:10px}
.ns-trend-h{font-size:11px;color:#5c6572;margin-bottom:4px}
.ns-trend-bars{display:flex;gap:6px;align-items:flex-end;height:56px}
.ns-trend-in{background:#ffb020}

/* v58.43 笔记整理与隔离区（设置页） */
.hyg-row{display:flex;align-items:center;gap:8px;padding:5px 0;border-bottom:1px dashed rgba(255,255,255,.06);font-size:12px}
.hyg-row:last-child{border-bottom:none}
.hyg-name{flex:1;color:var(--text,#e6edf3)}
.hyg-num{font-weight:600;color:var(--muted,#8a93a6);min-width:28px;text-align:right}
.hyg-row.warn .hyg-num{color:#f5a524}
.hyg-sub{font-size:11px;color:#5c6572}
.hyg-detail{margin-top:10px;padding:10px;border:1px solid rgba(255,255,255,.08);border-radius:10px;background:rgba(0,0,0,.18)}
.hyg-detail-h{font-size:12px;font-weight:600;margin-bottom:6px;color:var(--text,#e6edf3)}
.hyg-sum{font-size:12px;color:#8a93a6}
.hyg-item{display:flex;align-items:center;gap:8px;font-size:12px;padding:4px 0;border-bottom:1px dashed rgba(255,255,255,.05)}
.hyg-item .btn-ghost.sm{margin-left:auto;flex:none}
.hyg-old{color:#5c6572;text-decoration:line-through;max-width:130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hyg-tag{font-size:10px;color:#5c6572;border:1px solid rgba(255,255,255,.12);border-radius:20px;padding:1px 6px}

/* ============ v58.44 GPT 协作中枢·报告中心（手机优先） ============ */
.rp-wrap{max-width:960px;margin:0 auto;padding:12px 12px 90px}
.rp-header{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin-bottom:10px}
.rp-h2{font-size:18px;margin:0;color:var(--ink)}
.rp-stats{font-size:12px;color:var(--muted)}
.rp-warn{color:var(--cyber-amber)}
.rp-toolbar{display:flex;flex-direction:column;gap:8px;margin-bottom:10px}
.rp-search{width:100%;padding:10px 12px;border-radius:10px;border:1px solid var(--line);
  background:var(--panel);color:var(--ink);font-size:14px}
.rp-selects{display:flex;gap:8px;flex-wrap:wrap}
.rp-selects select{flex:1 1 120px;min-width:110px;min-height:44px;padding:6px 8px;border-radius:10px;
  border:1px solid var(--line);background:var(--panel);color:var(--ink);font-size:13px}
.rp-selects .rp-btn{flex:0 0 auto}
.rp-pack-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:6px 0 12px}
.rp-muted{font-size:12px;color:var(--muted);line-height:1.5}
.rp-btn{min-height:44px;padding:8px 14px;border-radius:10px;border:1px solid var(--line);
  background:var(--panel);color:var(--ink);font-size:14px;cursor:pointer}
.rp-btn:hover{background:var(--panel-hover)}
.rp-btn:disabled{opacity:.45;cursor:not-allowed}
.rp-btn.pri{background:linear-gradient(135deg,var(--accent),var(--accent-2));color:#fff;border-color:transparent}
.rp-list{display:flex;flex-direction:column;gap:10px}
.rp-card{border:1px solid var(--line);border-radius:12px;padding:12px;background:var(--panel)}
.rp-card.active{border-color:var(--neon);box-shadow:var(--neon-glow-sm)}
.rp-card-head{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:6px}
.rp-check input{width:20px;height:20px}
.rp-title{font-size:15px;font-weight:600;color:var(--ink);margin-bottom:4px;line-height:1.4}
.rp-meta{font-size:12px;color:var(--muted);margin-bottom:6px}
.rp-preview{font-size:12px;color:var(--muted-soft);margin-bottom:8px;line-height:1.5;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.rp-acts{display:flex;gap:8px;flex-wrap:wrap}
.rp-type,.rp-status{font-size:11px;padding:2px 8px;border-radius:999px;border:1px solid var(--line);color:var(--ink-soft)}
.rp-type-AI_REPORT{background:var(--neon-l);color:var(--neon)}
.rp-type-GPT_REVIEW{background:var(--cyber-purple-l);color:var(--cyber-purple)}
.rp-type-EXECUTION_ORDER{background:rgba(245,158,11,.14);color:var(--cyber-amber)}
.rp-type-EXECUTION_RESULT{background:rgba(16,185,129,.14);color:var(--cyber-green)}
.rp-type-EVIDENCE{background:rgba(59,130,246,.14);color:var(--cyber-blue)}
.rp-type-DECISION{background:rgba(236,72,153,.14);color:var(--cyber-pink)}
.rp-st-VERIFIED{background:rgba(16,185,129,.18);color:var(--cyber-green)}
.rp-st-FAILED{background:rgba(239,68,68,.16);color:var(--cyber-red)}
.rp-st-BLOCKED{background:rgba(239,68,68,.12);color:var(--cyber-red)}
.rp-st-WAITING_AUTHORIZATION{background:rgba(245,158,11,.16);color:var(--cyber-amber)}
.rp-st-NEEDS_REVIEW{background:rgba(168,85,247,.14);color:var(--cyber-purple)}
.rp-tag-warn{background:rgba(245,158,11,.16);color:var(--cyber-amber)}
.rp-time{margin-left:auto;font-size:11px;color:var(--muted-soft)}
.rp-empty{padding:24px 12px;text-align:center;color:var(--muted);font-size:14px;line-height:1.8}
.rp-empty.err{color:var(--cyber-red)}
.rp-detail{border:1px solid var(--line);border-radius:14px;padding:12px;margin-top:14px;background:var(--bg-elevated)}
.rp-detail-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px}
.rp-detail-head .rp-btn:last-child{margin-left:auto}
.rp-detail-title{font-size:16px;font-weight:700;color:var(--ink);margin-bottom:8px;line-height:1.4}
.rp-banner.warn{background:rgba(245,158,11,.12);border:1px solid rgba(245,158,11,.4);
  color:var(--cyber-amber);border-radius:10px;padding:8px 10px;font-size:13px;margin-bottom:8px}
.rp-idtable{width:100%;border-collapse:collapse;font-size:12px;margin-bottom:10px}
.rp-idtable th{text-align:left;color:var(--muted);font-weight:500;padding:3px 8px 3px 0;width:78px;vertical-align:top}
.rp-idtable td{color:var(--ink-soft);padding:3px 0;word-break:break-all}
.rp-sec{margin-bottom:10px;font-size:13px;color:var(--ink-soft);line-height:1.6}
.rp-sec>b{display:block;color:var(--ink);font-size:13px;margin-bottom:4px}
.rp-list2{margin:0;padding-left:18px}
.rp-tests{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:12px;color:var(--ink-soft)}
.rp-events{display:flex;flex-direction:column;gap:4px;font-size:12px}
.rp-ev{display:flex;gap:8px;flex-wrap:wrap;color:var(--ink-soft)}
.rp-ev-t{color:var(--muted-soft);min-width:44px}
.rp-body{white-space:pre-wrap;word-break:break-word;font-family:inherit;font-size:13px;line-height:1.7;
  max-height:52vh;overflow:auto;background:var(--panel);border:1px solid var(--line);
  border-radius:10px;padding:10px;margin:0}
.rp-actionbar{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}
.rp-actionbar select,.rp-actionbar input{flex:1 1 130px;min-width:120px;min-height:44px;padding:6px 8px;
  border-radius:10px;border:1px solid var(--line);background:var(--panel);color:var(--ink);font-size:13px}
.rp-paste{display:flex;flex-direction:column;gap:8px;margin-top:10px}
.rp-paste textarea{width:100%;border-radius:10px;border:1px solid var(--line);background:var(--panel);
  color:var(--ink);padding:10px;font-size:14px;line-height:1.6;resize:vertical}
.rp-paste select,.rp-paste input{min-height:44px;padding:6px 8px;border-radius:10px;border:1px solid var(--line);
  background:var(--panel);color:var(--ink);font-size:13px}
@media(max-width:600px){
  .rp-wrap{padding:10px 10px 110px}
  .rp-selects select{flex:1 1 calc(50% - 4px);min-width:0}
  .rp-btn{flex:1 1 calc(50% - 4px);min-width:0}
  .rp-acts .rp-btn{flex:1 1 calc(50% - 4px)}
  .rp-body{max-height:46vh}
  .rp-idtable th{width:70px}
}

/* v58.44: 失败留痕条（提交失败后「有编号可查、有一键重投」） */
.rp-failbar{border:1px solid rgba(239,68,68,.45);background:rgba(239,68,68,.08);
  border-radius:10px;padding:10px;display:flex;flex-direction:column;gap:8px;margin-top:10px}
.rp-fail-msg{font-size:13px;color:var(--cyber-red);line-height:1.6}
.rp-fail-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12px;
  color:var(--ink-soft);border-top:1px solid var(--line);padding-top:6px}
.rp-fail-row .rp-btn{min-height:36px;padding:4px 10px;font-size:12px;flex:0 0 auto}

/* v58.45: 自动复制彻底失败时的人工兜底——把全文摊开给人长按拷贝，
   而不是只甩一句「请长按手动选择」（iPhone 上根本没有可长按的区域） */
.rp-copyfallback{position:fixed;left:0;right:0;bottom:0;z-index:9999;
  background:var(--panel);border-top:2px solid var(--cyber-red);
  padding:12px;display:flex;flex-direction:column;gap:10px;
  max-height:70vh;overflow:auto;box-shadow:0 -6px 24px rgba(0,0,0,.25)}
.rp-copytext{width:100%;min-height:180px;border-radius:10px;border:1px solid var(--line);
  background:var(--bg);color:var(--ink);padding:10px;font-size:13px;line-height:1.6;
  resize:vertical;-webkit-user-select:text;user-select:text}
.rp-copyfallback .rp-fail-row{border-top:none;padding-top:0}

/* v58.48: 协作中枢任务聚合 / Inbox / 续办（执行令 V2.0 §五） */
.rp-inboxbar{display:flex;gap:8px;align-items:center;padding:6px 2px;flex-wrap:wrap}
.rp-subs{margin:6px 0 2px;display:flex;flex-direction:column;gap:4px}
.rp-sub{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:4px 6px;
  border:1px solid rgba(127,127,127,.25);border-radius:8px;cursor:pointer;font-size:.92em}
.rp-anomaly{margin-top:10px;padding:8px;border:1px dashed rgba(200,120,40,.6);
  border-radius:10px;display:flex;flex-direction:column;gap:6px}
.rp-anomaly>b{font-size:.95em}
#rpContinueGoal,#rpContinueAccept{width:100%;margin-top:6px;box-sizing:border-box;
  padding:8px;border:1px solid rgba(127,127,127,.4);border-radius:8px;font:inherit}
