/* Receive (jade) then confirm (amber). Only the active assistant identity or switchboard route animates. */
@keyframes wt-receive { 0% { opacity: .25 } 40% { opacity: 1 } 100% { opacity: .25 } }
@keyframes wt-confirm { 0% { opacity: .25 } 60% { opacity: 1 } 100% { opacity: .25 } }
.lamp { width: 10px; height: 10px; border-radius: 50%; background: var(--line); display: inline-block; }
.lamp[data-state="receive"] { background: var(--signal-receive); animation: wt-receive 1.6s ease-in-out infinite; }
.lamp[data-state="confirm"] { background: var(--signal-confirm); animation: wt-confirm 1.6s ease-in-out infinite; }
.lamp[data-state="on"] { background: var(--signal-receive); }
.lamp[data-state="degraded"] { background: var(--signal-confirm); }
@media (prefers-reduced-motion: reduce) {
  .lamp[data-state="receive"], .lamp[data-state="confirm"] { animation: none; opacity: 1; }
}

/* Lamp cadences. Ring is the North American 2 s on / 4 s off; busy is 0.5 s on / 0.5 s off. Both are
   hard-edged on purpose: a cadence is a signal, not a fade. */
@keyframes wt-ring { 0% { opacity: 1 } 33.33% { opacity: 1 } 33.34% { opacity: .2 } 100% { opacity: .2 } }
@keyframes wt-busy { 0% { opacity: 1 } 49.99% { opacity: 1 } 50% { opacity: .2 } 100% { opacity: .2 } }
@keyframes wt-sit { 0% { opacity: .2 } 8% { opacity: 1 } 24% { opacity: 1 } 32% { opacity: .2 } 100% { opacity: .2 } }
.lamp[data-state="ring"] { background: var(--signal-receive); animation: wt-ring 6s linear infinite; }
.lamp[data-state="busy"] { background: var(--signal-confirm); animation: wt-busy 1s linear infinite; }
.lamp[data-state="sit"] { background: var(--signal-confirm); animation: wt-sit 1.8s linear infinite; }
.sit-lamps { display: flex; gap: 8px; margin-bottom: 14px; }
.sit-lamps .lamp:nth-child(2) { animation-delay: .3s; }
.sit-lamps .lamp:nth-child(3) { animation-delay: .6s; }
@media (prefers-reduced-motion: reduce) {
  .lamp[data-state="ring"], .lamp[data-state="busy"], .lamp[data-state="sit"] { animation: none; opacity: 1; }
}

/* Toast: transient, non-blocking, and never focused. */
.wt-toast { position: fixed; left: 50%; bottom: 24px; transform: translateX(-50%); z-index: 40; pointer-events: none;
  background: var(--surface-raised); color: var(--text-primary); border: 1px solid var(--line);
  border-radius: 10px; padding: 10px 16px; font-family: var(--font-mono); font-size: 13px;
  box-shadow: 0 12px 32px #17252226; animation: wt-toast-in .18s ease-out; }
@keyframes wt-toast-in { from { opacity: 0; transform: translate(-50%, 6px) } to { opacity: 1; transform: translate(-50%, 0) } }
@media (prefers-reduced-motion: reduce) { .wt-toast { animation: none; } }
