diff --git a/webui/src/lib/components/ActivitySpine.svelte b/webui/src/lib/components/ActivitySpine.svelte
index 191f10b..41ed2b6 100644
--- a/webui/src/lib/components/ActivitySpine.svelte
+++ b/webui/src/lib/components/ActivitySpine.svelte
@@ -26,14 +26,14 @@
{#if running}
- {turnLabel} · STREAMING
+ {turnLabel} · STREAMING
{#if rate != null}▲ {rate} tok/s{/if}
{#if ctx}ctx {ctx}{/if}
{:else if chat.turn}
- IDLE
+ IDLE
最近 {turnLabel}
{:else}
- READY
+ READY
{/if}
{chat.connected ? "已连接" : "重连中"}
@@ -42,13 +42,13 @@
diff --git a/webui/src/styles.css b/webui/src/styles.css
index 89be664..8f6d56c 100644
--- a/webui/src/styles.css
+++ b/webui/src/styles.css
@@ -59,6 +59,10 @@
--code-bg: #080c12;
--user-bubble: #221d38;
--spine-bg: #0e1520;
+ --spine-text: #b8c4d4;
+ --spine-signal: #2dd4bf;
+ --spine-accent: #ffb454;
+ --spine-faint: #8fa3b8;
--shadow: 0 16px 45px rgb(0 0 0 / 35%);
--radius: 11px;
}
@@ -353,6 +357,8 @@ code { color: var(--accent); }
.cap.info { color: var(--info); background: var(--info-soft); border: 1px solid var(--info-border); }
@keyframes spine-pulse { 0%,100% { opacity: 1; } 50% { opacity: .35; } }
.pulse-dot { width: 7px; height: 7px; border-radius: 50%; display: inline-block; animation: spine-pulse 1.6s ease-in-out infinite; }
+.pulse-dot.active { background: var(--spine-accent); box-shadow: 0 0 10px var(--spine-accent); }
+.pulse-dot.idle { background: var(--spine-signal); animation: none; }
@media (prefers-reduced-motion: reduce) { .pulse-dot { animation: none; } }
@media (max-width: 800px) {