/* Character Animation System — Phase 3 Addendum
   Movement patterns for each agent status */

/* ===== CHARACTER CONTAINER ===== */
.char-container {
  position: absolute;
  left: 4px;
  top: 50%;
  transform: translateY(-50%);
  width: 56px;
  height: 80px;
  z-index: 5;
  transition: all 0.6s ease;
}
.char-svg {
  width: 100%;
  height: 100%;
}

/* ===== ACTIVE — Working, moving, alive ===== */
.station.active .char-container {
  animation: active-shift 4s ease-in-out infinite;
}
@keyframes active-shift {
  0%, 100% { transform: translateY(-50%) translateX(0); }
  25% { transform: translateY(-51%) translateX(2px); }
  50% { transform: translateY(-49%) translateX(-1px); }
  75% { transform: translateY(-50%) translateX(3px); }
}

/* Arms working animation */
.station.active .arm-r {
  animation: work-arm-r 1.8s ease-in-out infinite;
  transform-origin: 30% 30%;
}
.station.active .arm-l {
  animation: work-arm-l 2.2s ease-in-out infinite;
  transform-origin: 70% 30%;
}
@keyframes work-arm-r {
  0%, 100% { transform: rotate(0deg); }
  30% { transform: rotate(-8deg); }
  60% { transform: rotate(5deg); }
}
@keyframes work-arm-l {
  0%, 100% { transform: rotate(0deg); }
  40% { transform: rotate(6deg); }
  70% { transform: rotate(-4deg); }
}

/* Wawa's writing quill moves more */
.station.active .write-arm {
  animation: write-motion 1.2s ease-in-out infinite;
  transform-origin: 0% 0%;
}
.station.active .quill {
  animation: write-motion 1.2s ease-in-out infinite;
}
@keyframes write-motion {
  0%, 100% { transform: translateX(0) translateY(0); }
  25% { transform: translateX(2px) translateY(-1px); }
  50% { transform: translateX(-1px) translateY(1px); }
  75% { transform: translateX(3px) translateY(-1px); }
}

/* Active legs — subtle weight shifting */
.station.active .leg-l {
  animation: shift-weight-l 3s ease-in-out infinite;
  transform-origin: 50% 0%;
}
.station.active .leg-r {
  animation: shift-weight-r 3s ease-in-out infinite 1.5s;
  transform-origin: 50% 0%;
}
@keyframes shift-weight-l {
  0%, 100% { transform: rotate(0deg); }
  50% { transform: rotate(2deg); }
}
@keyframes shift-weight-r {
  0%, 100% { transform: rotate(0deg); }
  50% { transform: rotate(-2deg); }
}

/* Active glow */
.station.active .char-glow {
  animation: active-glow 3s ease-in-out infinite;
}
@keyframes active-glow {
  0%, 100% { opacity: 0.5; }
  50% { opacity: 1; }
}

/* ===== IDLE — Seated, still, breathing ===== */
.station.idle .char-container {
  animation: idle-breathe 5s ease-in-out infinite;
  opacity: 0.6;
}
@keyframes idle-breathe {
  0%, 100% { transform: translateY(-50%) scale(1); }
  50% { transform: translateY(-50%) scale(1.01); }
}

/* Idle — occasional blink */
.station.idle .char-svg {
  animation: idle-blink 6s ease-in-out infinite;
}
@keyframes idle-blink {
  0%, 92%, 96%, 100% { opacity: 1; }
  94% { opacity: 0.7; }
}

/* Body lowers slightly when idle (seated) */
.station.idle .char-body-main {
  transform: scaleY(0.92) translateY(3px);
  transition: transform 0.8s ease;
}

/* ===== WAITING — Standing, hand raised, facing entrance ===== */
.station.waiting .char-container {
  animation: waiting-bob 2s ease-in-out infinite;
}
@keyframes waiting-bob {
  0%, 100% { transform: translateY(-50%) translateX(0); }
  50% { transform: translateY(-52%) translateX(1px); }
}

.station.waiting .arm-r {
  animation: hand-up 1.5s ease-in-out infinite;
  transform-origin: 50% 100%;
}
@keyframes hand-up {
  0%, 100% { transform: rotate(-45deg) translateY(-4px); }
  50% { transform: rotate(-55deg) translateY(-6px); }
}

/* Gold pulse around waiting character */
.station.waiting .char-container::after {
  content: '';
  position: absolute;
  inset: -8px;
  border-radius: 50%;
  border: 1.5px solid var(--gold);
  animation: waiting-pulse-ring 2s ease-in-out infinite;
  pointer-events: none;
}
@keyframes waiting-pulse-ring {
  0%, 100% { opacity: 0.3; transform: scale(1); }
  50% { opacity: 0.7; transform: scale(1.1); }
}

/* ===== ERROR — Hunched, distressed ===== */
.station.error .char-container {
  animation: error-tremble 0.4s ease-in-out infinite;
}
@keyframes error-tremble {
  0%, 100% { transform: translateY(-50%) translateX(0) rotate(0deg); }
  25% { transform: translateY(-50%) translateX(-1px) rotate(-1deg); }
  75% { transform: translateY(-50%) translateX(1px) rotate(1deg); }
}

.station.error .char-body-main {
  transform: scaleY(0.88) rotate(3deg) translateY(2px);
}

.station.error .arm-l, .station.error .arm-r {
  animation: error-clutch 1s ease-in-out infinite;
  transform-origin: 50% 0%;
}
@keyframes error-clutch {
  0%, 100% { transform: rotate(10deg); }
  50% { transform: rotate(15deg); }
}

/* ===== DIAGNOSING — Honayus walking animation ===== */
.station.diagnosing .char-container {
  animation: honayus-stride 0.8s steps(1) infinite;
}

/* Walk cycle — 4 frame leg movement */
.station.diagnosing .leg-l {
  animation: walk-leg-l 0.8s linear infinite;
  transform-origin: 50% 0%;
}
.station.diagnosing .leg-r {
  animation: walk-leg-r 0.8s linear infinite;
  transform-origin: 50% 0%;
}
@keyframes walk-leg-l {
  0% { transform: rotate(15deg); }
  25% { transform: rotate(0deg); }
  50% { transform: rotate(-15deg); }
  75% { transform: rotate(0deg); }
  100% { transform: rotate(15deg); }
}
@keyframes walk-leg-r {
  0% { transform: rotate(-15deg); }
  25% { transform: rotate(0deg); }
  50% { transform: rotate(15deg); }
  75% { transform: rotate(0deg); }
  100% { transform: rotate(-15deg); }
}

/* Arms swinging while walking */
.station.diagnosing .arm-l {
  animation: walk-arm-l 0.8s linear infinite;
  transform-origin: 50% 0%;
}
.station.diagnosing .arm-r {
  animation: walk-arm-r 0.8s linear infinite;
  transform-origin: 50% 0%;
}
@keyframes walk-arm-l {
  0% { transform: rotate(-10deg); }
  50% { transform: rotate(10deg); }
  100% { transform: rotate(-10deg); }
}
@keyframes walk-arm-r {
  0% { transform: rotate(10deg); }
  50% { transform: rotate(-10deg); }
  100% { transform: rotate(10deg); }
}

/* Toolbag bouncing */
.station.diagnosing .toolbag {
  animation: bag-bounce 0.4s ease-in-out infinite;
}
@keyframes bag-bounce {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-2px); }
}

/* Body bob while walking */
@keyframes honayus-stride {
  0%, 100% { transform: translateY(-50%) translateY(0); }
  50% { transform: translateY(-50%) translateY(-3px); }
}

/* ===== HONAYUS ROAM — Physical walk across the house ===== */
.honayus-roaming {
  position: fixed;
  width: 56px;
  height: 80px;
  z-index: 200;
  pointer-events: none;
  transition: none;
}
.honayus-roaming .char-svg {
  width: 100%;
  height: 100%;
}
.honayus-roaming .leg-l { animation: walk-leg-l 0.6s linear infinite; transform-origin: 50% 0%; }
.honayus-roaming .leg-r { animation: walk-leg-r 0.6s linear infinite; transform-origin: 50% 0%; }
.honayus-roaming .arm-l { animation: walk-arm-l 0.6s linear infinite; transform-origin: 50% 0%; }
.honayus-roaming .arm-r { animation: walk-arm-r 0.6s linear infinite; transform-origin: 50% 0%; }

/* ===== COLLABORATION — Agents turning toward each other ===== */
.station.collab-left .char-container {
  animation: turn-left 0.5s ease forwards;
}
.station.collab-right .char-container {
  animation: turn-right 0.5s ease forwards;
}
@keyframes turn-left {
  to { transform: translateY(-50%) scaleX(-1); }
}
@keyframes turn-right {
  to { transform: translateY(-50%) scaleX(1); }
}

/* ===== TASK PULSE — Gold pulse from Siwid to target ===== */
.task-pulse {
  position: fixed;
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background: var(--gold);
  box-shadow: 0 0 10px var(--gold);
  pointer-events: none;
  z-index: 300;
  opacity: 0.8;
  animation: pulse-travel var(--duration, 1s) ease-in-out forwards;
}
@keyframes pulse-travel {
  0% { opacity: 0.9; transform: scale(1); }
  80% { opacity: 0.7; transform: scale(0.8); }
  100% { opacity: 0; transform: scale(0.3); }
}

/* ===== RESPONSIVE ===== */
@media (max-width: 599px) {
  .char-container { width: 46px; height: 66px; left: 2px; }
  .station { padding-left: 52px; }
}
@media (min-width: 900px) {
  .char-container { width: 62px; height: 86px; left: 6px; }
}
