/* Hero-only port of garden-hero/web's spoken dispatch pill. */
.hero-voice-row{display:flex;justify-content:center;position:relative;z-index:2;margin:4px 16px -14px;min-height:46px}
.hero-voice-pill{--pill:#14132b;display:flex;align-items:center;gap:12px;min-height:46px;width:max-content;max-width:100%;padding:7px 18px 7px 8px;border-radius:28px;background:var(--pill);color:#f3f2ff;font-size:15px;box-shadow:0 10px 30px -12px #14132b80}
.hero-voice-pill .key{font:11px ui-monospace,SFMono-Regular,Menlo,monospace;color:#c9c7f5;border:1px solid #3a3870;border-radius:15px;padding:6px 9px;white-space:nowrap;flex:none;transition:background 200ms ease,color 200ms ease}
.hero-voice-pill.listening .key{background:#f3f2ff;color:var(--pill)}
.hero-voice-pill .wave{display:flex;gap:2.5px;align-items:center;height:18px;width:26px;flex:none}
.hero-voice-pill .wave b{width:3px;height:17px;border-radius:2px;background:#8f8cf0;transform:scaleY(.24)}
.hero-voice-pill.listening .wave b{animation:hero-voice-talk 900ms var(--ease-out) infinite alternate}
.hero-voice-pill .wave b:nth-child(2){animation-delay:-600ms}.hero-voice-pill .wave b:nth-child(3){animation-delay:-300ms}.hero-voice-pill .wave b:nth-child(4){animation-delay:-750ms}.hero-voice-pill .wave b:nth-child(5){animation-delay:-450ms}
@keyframes hero-voice-talk{to{transform:scaleY(1)}}
.hero-voice-pill .said{line-height:1.4;min-width:0}.hero-voice-pill .said.idle{color:#aaa8c3}
.hero-voice-pill .caret{display:inline-block;width:1.5px;height:1em;background:#f3f2ff;vertical-align:-2px;margin-left:2px;animation:hero-voice-blink 1s steps(1) infinite}
@keyframes hero-voice-blink{50%{opacity:0}}
.hero-voice-pill .to{font:12px ui-monospace,SFMono-Regular,Menlo,monospace;color:#ff956e;white-space:nowrap;opacity:0;transform:translateX(-4px);transition:opacity 200ms var(--ease-out),transform 200ms var(--ease-out)}
.hero-voice-pill .to:empty{display:none}.hero-voice-pill .to.on{opacity:1;transform:none}
.hero-voice-pill .said.reply::before{content:'[✓] ';color:#ff956e;font:13px ui-monospace,SFMono-Regular,Menlo,monospace}
.hero .garden-frame{overflow:visible}
.hero #signals .signal{fill:none;stroke:var(--flag);stroke-width:1;stroke-dasharray:3 4;vector-effect:non-scaling-stroke;background:none}
.hero-voice-description{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
@media(max-width:680px){
 .hero .garden{width:100%;max-width:1600px;left:auto;margin-inline:auto}
 .hero-voice-row{min-height:100px;margin-top:0;margin-bottom:-4px;align-items:center}
 .hero-voice-pill{width:100%;min-height:90px;border-radius:26px;display:grid;grid-template-columns:auto 1fr auto;gap:8px 12px;padding:12px 16px;font-size:14px}
 .hero-voice-pill .key{grid-column:1;grid-row:1;justify-self:start}
 .hero-voice-pill .wave{grid-column:2;grid-row:1}
 .hero-voice-pill .to{grid-column:3;grid-row:1}
 .hero-voice-pill .said{grid-column:1/-1;grid-row:2;min-height:40px}
}
@media(prefers-reduced-motion:reduce){.hero-voice-pill *{animation:none!important;transition:none!important}}
.hero-voice-pill[data-seek=true] *{animation:none!important;transition:none!important}
.hero-voice-pill[data-seek=true].listening .wave b:nth-child(2n){transform:scaleY(.85)}

/* A quiet tether keeps the voice interface attached to the garden between commands. */
.hero #signals .voice-tether{fill:none;stroke:var(--ink);stroke-width:1;stroke-dasharray:3 5;vector-effect:non-scaling-stroke;opacity:.2;pointer-events:none}

/* Handoffs run directly from the finishing plot to the next agent. */
.hero #signals .handoff-signal{stroke-width:1.6;stroke-dasharray:4 4}
.hero-voice-pill.handoff .wave b{animation:hero-voice-talk 700ms var(--ease-out) infinite alternate}
