:root{
  --bg:#222;
  --bg-2:#2a2a2a;
  --bg-3:#1c1c1c;
  --line:#3a3a3a;
  --line-soft:#333;
  --txt:#d6d6d6;
  --txt-strong:#f0f0f0;
  --txt-dim:#8a8a8a;
  --txt-faint:#6f6f6f;
  --accent:#5b9bd5;
  --accent-2:#7fb3e0;
  --panel-bg:#a7a7a7;
  --panel-ink:#1a1a1a;
  --panel-line:#8f8f8f;
  --code:#c8d8ea;
  --radius:10px;
}

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

html{scroll-behavior:smooth}

body{
  background:var(--bg);
  color:var(--txt);
  font-family:"Inter","Helvetica Neue",-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  font-size:15px;
  line-height:1.75;
  -webkit-font-smoothing:antialiased;
  min-height:100vh;
  overflow-x:hidden;
}

.top-progress{
  position:fixed;top:0;left:0;height:2px;width:0;
  background:linear-gradient(90deg,#1b364b,#3d7fb0);
  z-index:50;transition:width .08s linear;
}

/* ---------- top bar ---------- */
.topbar{
  position:relative;
  padding:22px 32px 18px;
  border-bottom:1px solid var(--bg-3);
}
.top-export{
  position:absolute;top:20px;right:18px;
}
.topbar h1{
  font-size:22px;font-weight:600;color:var(--txt-strong);
  letter-spacing:.2px;
}
.tags{
  margin-top:10px;display:flex;gap:8px;align-items:center;
}
.tag{
  display:inline-flex;align-items:center;gap:6px;
  font-size:12px;color:#9d9d9d;
}
.tag.boxed{
  background:#2f2f2f;border:1px solid #3d3d3d;
  padding:2px 8px;border-radius:4px;
}
.dot{width:7px;height:7px;border-radius:50%;display:inline-block}
.dot.green{background:#5cc06a}
.dot.amber{background:#d8a44a}

/* ---------- layout ---------- */
.layout{
  display:grid;
  grid-template-columns:64px minmax(0,1fr) 150px;
  align-items:start;
  padding:0 0 60px;
}

.rail-left{
  position:sticky;top:0;height:100vh;
  padding-top:22px;
  display:flex;justify-content:center;
  align-items:flex-start;
}
.avatar-wrap{position:relative}
.avatar{
  width:44px;height:44px;border-radius:50%;
  display:block;background:#2f3a3f;
}
.presence{
  position:absolute;right:1px;bottom:1px;
  width:9px;height:9px;border-radius:50%;
  background:#5cc06a;border:2px solid var(--bg);
}

.thread{
  max-width:700px;
  padding:26px 26px 0 6px;
  min-width:0;
}

.msg-head{
  display:flex;align-items:baseline;justify-content:space-between;
  margin-bottom:6px;
}
.author{font-size:15px;font-weight:600;color:var(--txt-strong)}
.ts{font-size:13px;color:var(--txt-faint)}

.body p{margin:0 0 14px}
.body p.lead{color:var(--txt-strong);font-weight:500}
.body p.foot{
  margin-top:22px;color:var(--txt-dim);
  border-top:1px solid var(--line-soft);padding-top:16px;font-size:14px;
}

/* ---------- shot images ---------- */
.shot{
  display:block;width:294px;max-width:100%;
  margin:0 0 16px;border-radius:3px;
  border:1px solid var(--line);
}
.shot.wide{width:452px}

/* ---------- light panels (采集结果卡) ---------- */
.panel{
  width:294px;max-width:100%;
  background:var(--panel-bg);
  color:var(--panel-ink);
  border:1px solid var(--panel-line);
  border-radius:3px;
  padding:12px 14px 14px;
  margin:0 0 16px;
  font-size:12.5px;line-height:1.7;
}
.panel-head{display:flex;flex-direction:column;gap:2px;margin-bottom:8px}
.panel-title{font-weight:700;font-size:13px}
.panel-sub{font-size:12px;opacity:.85}
.rule{
  border:0;border-top:1px solid var(--panel-line);
  margin:8px 0 10px;
}
.panel-body .kv{
  display:flex;gap:6px;align-items:baseline;
  margin:3px 0;word-break:break-word;
}
.panel-body .k{flex:0 0 auto}
.panel-body .v{
  font-family:"SF Mono",Menlo,Consolas,"Courier New",monospace;
  color:#1e4b78;font-size:11.5px;word-break:break-all;
}
.panel-body .v.hl{background:#cfe0f0;padding:0 3px;border-radius:2px}
.panel-body .plain{font-family:inherit;color:var(--panel-ink)}
.panel-body .sub{opacity:.85;padding-left:2px}
.panel-body .sep{
  margin:9px 0;height:1px;background:var(--panel-line);
}
.panel-body h4{
  font-size:12.5px;font-weight:700;margin:2px 0 5px;
}
.panel-body .redacted{
  background:#8f8f8f;color:#8f8f8f;
  padding:0 4px;border-radius:2px;letter-spacing:1px;
}
.raw{
  font-family:"SF Mono",Menlo,Consolas,"Courier New",monospace;
  font-size:11px;line-height:1.65;
  white-space:pre-wrap;word-break:break-all;
  color:#262626;margin:0;
}
.skeleton-line{
  height:11px;background:#9a9a9a;border-radius:2px;
  margin:7px 0;width:82%;
  animation:pulse 1.4s ease-in-out infinite;
}
.skeleton-line.short{width:52%}
@keyframes pulse{0%,100%{opacity:.45}50%{opacity:.9}}

/* ---------- big quote ---------- */
.big-quote{
  position:relative;
  width:452px;max-width:100%;
  margin:4px 0 16px;
  padding:14px 16px;
  background:#b4b4b4;
  color:#1c1c1c;
  border-radius:3px;
  font-size:15.5px;line-height:1.72;font-weight:500;
}
.big-quote p{margin:0 0 12px}
.big-quote p:last-of-type{margin-bottom:0}
.big-quote b{font-weight:700}
.stamp{
  position:absolute;right:12px;bottom:8px;
  font-size:11px;color:#5d5d5d;font-weight:400;
}

/* ---------- right rail ---------- */
.rail-right{
  position:sticky;top:0;height:100vh;
  padding:22px 14px 20px;
  display:flex;flex-direction:column;align-items:center;
  gap:14px;
}
.icon-btn{
  width:34px;height:34px;flex:0 0 34px;
  display:grid;place-items:center;
  background:transparent;
  border:1px solid #4a4a4a;
  border-radius:4px;
  color:#b4b4b4;cursor:pointer;
  transition:.16s;
}
.icon-btn:hover{border-color:#7a7a7a;color:#e2e2e2;background:#2b2b2b}
.icon-btn.solo{margin-bottom:2px}
.icon-btn.on{border-color:var(--accent);color:var(--accent)}

.rail-date{font-size:13px;color:var(--txt-dim);margin-top:2px}

.rail-progress{
  position:relative;
  width:100%;
  flex:1;
  display:flex;justify-content:center;
  padding-top:6px;
}
.vtrack{
  position:relative;
  width:3px;height:100%;
  background:#2f2f2f;
  border-radius:2px;
}
.vfill{
  position:absolute;top:0;left:0;width:3px;
  background:#3d7fb0;
  border-radius:2px;
  height:0;
  transition:height .12s linear;
}
.vlabels{
  position:absolute;top:10px;left:14px;
  white-space:nowrap;
}
.vpager{font-size:14px;color:var(--txt-strong);font-weight:600}
.vdate{font-size:13px;color:var(--txt-faint)}
.rail-elapsed{font-size:13px;color:var(--txt-faint)}

.rail-actions{display:flex;gap:8px;margin-top:2px}

/* ---------- watermark ---------- */
.watermark{
  position:fixed;right:14px;bottom:8px;
  font-size:11px;font-weight:700;letter-spacing:.6px;
  color:#3d7fb0;text-decoration:none;opacity:.85;
  font-family:"SF Mono",Menlo,Consolas,monospace;
}
.watermark:hover{opacity:1;text-decoration:underline}

/* ---------- toast ---------- */
.toast{
  position:fixed;left:50%;bottom:34px;transform:translate(-50%,16px);
  background:#303030;border:1px solid #4a4a4a;color:#e4e4e4;
  padding:9px 18px;border-radius:6px;font-size:13px;
  opacity:0;pointer-events:none;transition:.22s;z-index:60;
  max-width:88vw;
}
.toast.show{opacity:1;transform:translate(-50%,0)}

/* ---------- responsive ---------- */
@media (max-width:680px){
  .layout{grid-template-columns:48px minmax(0,1fr)}
  .rail-right{
    position:fixed;right:0;top:0;height:auto;
    width:52px;padding:12px 8px;
    background:rgba(28,28,28,.94);
    border-left:1px solid var(--bg-3);
    backdrop-filter:blur(6px);
  }
  .rail-date,.vlabels,.rail-elapsed{display:none}
  .rail-progress{position:fixed;right:24px;top:64px;height:38vh;width:3px;padding:0}
  .thread{padding-right:56px}
  .topbar{padding:16px 18px}
  .topbar h1{font-size:18px}
  .top-export{top:14px;right:14px}
}
