/* ───────── 基础与页面 ───────── */
* { box-sizing: border-box; margin: 0; padding: 0; }
:root {
  --bg-0: #f5f7fb;
  --bg-1: #e9eef6;
  --ink: #1f2937;
  --ink-dim: #64748b;
  --line: rgba(15,23,42,.1);
  --flame-a: #ff7a18;
  --flame-b: #ff2d55;
  --flame-c: #ffd23f;
  --accent: #0891b2;
  --ok: #10b981;
  --warn: #f59e0b;
  --err: #ef4444;
}
html, body { height: 100%; }
body {
  font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  color: var(--ink);
  background:
    radial-gradient(1200px 600px at 12% -10%, rgba(255,122,24,.12), transparent 60%),
    radial-gradient(1000px 700px at 100% 0%, rgba(8,145,178,.12), transparent 55%),
    linear-gradient(160deg, var(--bg-0), var(--bg-1) 70%);
  min-height: 100%;
  padding: 22px 26px 40px;
}

/* ───────── 顶栏 ───────── */
.topbar {
  display: flex; align-items: center; justify-content: space-between;
  gap: 24px; flex-wrap: wrap; margin-bottom: 22px;
}
.brand { display: flex; align-items: center; gap: 14px; }
.flame {
  width: 54px; height: 54px; border-radius: 16px; display: grid; place-items: center;
  font-size: 28px;
  background: linear-gradient(145deg, var(--flame-a), var(--flame-b));
  box-shadow: 0 10px 30px rgba(255,45,85,.22), inset 0 1px 0 rgba(255,255,255,.5);
}
.brand-text h1 { font-size: 24px; font-weight: 800; letter-spacing: .5px; }
.brand-text h1 .burn {
  background: linear-gradient(90deg, var(--flame-c), var(--flame-a));
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
}
.brand-text p { color: var(--ink-dim); font-size: 13px; margin-top: 4px; }
.legend { display: flex; gap: 18px; flex-wrap: wrap; font-size: 12.5px; color: var(--ink-dim); }
.legend span { display: inline-flex; align-items: center; gap: 6px; }
.dot { width: 9px; height: 9px; border-radius: 50%; display: inline-block; }
.dot-open { background: var(--accent); }
.dot-10 { background: var(--flame-b); }
.dot-e2ee { background: var(--ok); }
.dot-sync { background: var(--flame-c); }

/* ───────── 布局 ───────── */
.layout { display: grid; grid-template-columns: minmax(0,1fr) 360px; gap: 22px; align-items: start; }
.stage-wrap { min-width: 0; }
.stage {
  display: flex; gap: 26px; justify-content: center; align-items: flex-start;
  flex-wrap: wrap; padding: 8px 0;
}

/* ───────── 侧栏 ───────── */
.side { display: flex; flex-direction: column; gap: 18px; position: sticky; top: 18px; }
.panel {
  background: rgba(255,255,255,.72);
  border: 1px solid var(--line);
  border-radius: 18px; padding: 16px 18px;
  backdrop-filter: blur(8px);
  box-shadow: 0 8px 24px rgba(15,23,42,.06);
}
.panel h2 { font-size: 15px; margin-bottom: 12px; display: flex; align-items: baseline; gap: 8px; }
.log-sub { font-size: 11px; color: var(--ink-dim); font-weight: 400; }

.dock-btns { display: grid; gap: 9px; }
.dock-btn {
  border: 1px solid var(--line); background: rgba(255,255,255,.8); color: var(--ink);
  padding: 11px 12px; border-radius: 12px; font-size: 13.5px; cursor: pointer;
  transition: transform .12s ease, background .2s ease, border-color .2s ease, box-shadow .2s ease;
  box-shadow: 0 1px 2px rgba(15,23,42,.04);
}
.dock-btn:hover { transform: translateY(-1px); background: #fff; border-color: rgba(15,23,42,.18); box-shadow: 0 4px 14px rgba(15,23,42,.08); }
.dock-btn:active { transform: translateY(0); }
.dock-btn.primary {
  background: linear-gradient(135deg, var(--flame-a), var(--flame-b));
  border-color: transparent; font-weight: 700; color: #fff;
  box-shadow: 0 8px 22px rgba(255,45,85,.22);
}
.dock-btn.ghost { background: transparent; color: var(--ink-dim); }
.dock-hint { margin-top: 12px; color: var(--ink-dim); font-size: 12px; line-height: 1.6; }
.dock-hint code { color: #b45309; background: rgba(245,158,11,.14); padding: 1px 6px; border-radius: 6px; }

/* ───────── 日志 ───────── */
.logpanel { flex: 1; min-height: 320px; display: flex; flex-direction: column; }
.log {
  flex: 1; overflow-y: auto; font-family: "SF Mono", ui-monospace, Menlo, Consolas, monospace;
  font-size: 11.5px; line-height: 1.7; background: rgba(15,23,42,.04);
  border-radius: 12px; padding: 10px 12px; max-height: 460px;
  border: 1px solid var(--line);
}
.log-line { display: flex; gap: 8px; white-space: nowrap; }
.log-dir { opacity: .8; width: 12px; }
.log-line.in .log-dir { color: var(--ok); }
.log-line.out .log-dir { color: var(--accent); }
.log-line.sys .log-dir { color: var(--warn); }
.log-ev { color: var(--ink); font-weight: 600; }
.log-detail { color: var(--ink-dim); overflow: hidden; text-overflow: ellipsis; }

@media (max-width: 1100px) {
  .layout { grid-template-columns: 1fr; }
  .side { position: static; }
}
