/* ================================================================
   CARM THE BEAVER — ANIMATION SYSTEM
   Applied via .carm--{state} on the root SVG element.
   Re-skin of the elliot-axolotl animation system (same state machine).
   ================================================================ */

.carm { overflow: visible; }

/* Gills base — gentle transitions */
.carm .gills-l, .carm .gills-r { transition: transform 0.3s ease; }

/* Hidden state elements */
.carm .mouth-open { opacity: 0; transition: opacity 0.2s; }
.carm .mouth-laugh { opacity: 0; transition: opacity 0.2s; }
.carm .mouth-frown { opacity: 0; transition: opacity 0.3s; }
.carm .mouth-hmm { opacity: 0; transition: opacity 0.3s; }
.carm .monocle { opacity: 0; transition: opacity 0.3s; }
.carm .x-eye { opacity: 0; transition: opacity 0.3s; }
.carm .think-orbit { opacity: 0; transition: opacity 0.3s; }
.carm .think-orbit-outer { opacity: 0; transition: opacity 0.3s; }
.carm .mouth-yawn { opacity: 0; transition: opacity 0.3s; }
.carm .sweat-drop { opacity: 0; transition: opacity 0.5s; }
.carm .sleep-zzz { opacity: 0; transition: opacity 0.5s; }
.carm .eyebrow-raise { opacity: 0; transition: opacity 0.3s; }
.carm .wave-hand { opacity: 0; transition: opacity 0.3s; }
.carm .cheek-blush { opacity: 0.28; transition: opacity 0.3s; }
.carm .antenna-group { transition: transform 0.3s ease; transform-origin: 256px 155px; }
.carm .antenna-base,
.carm .antenna-cap,
.carm .antenna-stem,
.carm .antenna-ball { transition: fill 0.3s ease, stroke 0.3s ease, transform 0.3s ease; }
.carm .antenna-ball-glow { transition: all 0.3s; transform-origin: 256px 104px; }
.carm .eye-shine { transition: r 0.3s; }

/* ======================== IDLE ======================== */
@keyframes carm-float {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-7px); }
}
@keyframes carm-blink {
  0%, 90%, 100% { transform: scaleY(1); }
  93% { transform: scaleY(0.05); }
}
@keyframes blink-fast {
  0%, 70%, 100% { transform: scaleY(1); }
  78% { transform: scaleY(0.08); }
  86% { transform: scaleY(1); }
  94% { transform: scaleY(0.08); }
}
@keyframes gill-sway-l {
  0%, 100% { transform: rotate(0deg); }
  40% { transform: rotate(-3deg) translateX(-2px); }
  70% { transform: rotate(1.5deg); }
}
@keyframes gill-sway-r {
  0%, 100% { transform: rotate(0deg); }
  40% { transform: rotate(3deg) translateX(2px); }
  70% { transform: rotate(-1.5deg); }
}
@keyframes antenna-pulse {
  0%, 100% { opacity: 0.55; transform: scale(1); }
  50% { opacity: 1; transform: scale(1.12); }
}
@keyframes cheek-light-pulse {
  0%, 100% { opacity: 0.45; }
  50% { opacity: 1; }
}

.carm--idle { animation: carm-float 4s ease-in-out infinite; }
.carm--idle .blink-group { animation: carm-blink 4.5s ease-in-out infinite; transform-origin: 256px 281px; }
.carm--idle .gills-l { animation: gill-sway-l 3.5s ease-in-out infinite; transform-origin: 150px 270px; }
.carm--idle .gills-r { animation: gill-sway-r 3.5s ease-in-out infinite; transform-origin: 362px 270px; }
.carm--idle .antenna-ball-glow { animation: antenna-pulse 3s ease-in-out infinite; }
.carm--idle .cheek-light { animation: cheek-light-pulse 4s ease-in-out infinite; }

/* --- Idle 30s: bored, wandering eyes, half-lidded --- */
@keyframes idle-eye-wander {
  0%, 100% { transform: translateX(0); }
  25% { transform: translateX(-4px); }
  50% { transform: translateX(0); }
  75% { transform: translateX(4px); }
}
@keyframes blink-bored {
  0%, 80%, 100% { transform: scaleY(0.72); }
  85% { transform: scaleY(0.05); }
}
.carm--idle-bored .pupil-group { animation: idle-eye-wander 3.5s ease-in-out infinite; }
.carm--idle-bored .blink-group { animation: blink-bored 2.5s ease-in-out infinite !important; transform-origin: 256px 281px; }
.carm--idle-bored .mouth-smile { opacity: 0 !important; }
.carm--idle-bored .mouth-hmm { opacity: 1; }
.carm--idle-bored .dimple { opacity: 0; }
.carm--idle-bored .gills-l { animation: gill-droop-l 1s ease-out forwards !important; transform-origin: 150px 270px; }
.carm--idle-bored .gills-r { animation: gill-droop-r 1s ease-out forwards !important; transform-origin: 362px 270px; }
.carm--idle-bored .antenna-ball-glow { opacity: 0.4; }

/* --- Idle 60s: asleep --- */
.carm--idle-asleep { animation: sleep-bob 3s ease-in-out infinite !important; }
.carm--idle-asleep .blink-group { transform: scaleY(0.35) !important; transform-origin: 256px 281px; animation: none !important; }
.carm--idle-asleep .antenna-ball-glow { opacity: 0.2 !important; }
.carm--idle-asleep .sleep-zzz { opacity: 1; }
.carm--idle-asleep .mouth-smile { opacity: 0 !important; }
.carm--idle-asleep .dimple { opacity: 0; }
.carm--idle-asleep .z1 { animation: zzz-float 2.5s ease-out 0s infinite; }
.carm--idle-asleep .z2 { animation: zzz-float 2.5s ease-out 0.8s infinite; }
.carm--idle-asleep .z3 { animation: zzz-float 2.5s ease-out 1.6s infinite; }
.carm--idle-asleep .gills-l { animation: none !important; transform: rotate(4deg) scaleY(0.94) translateY(4px); transform-origin: 150px 270px; }
.carm--idle-asleep .gills-r { animation: none !important; transform: rotate(-4deg) scaleY(0.94) translateY(4px); transform-origin: 362px 270px; }

/* ======================== LISTENING ======================== */
@keyframes carm-listen-tilt {
  0%, 100% { transform: rotate(0deg); }
  50% { transform: rotate(4deg) translateY(-2px); }
}
@keyframes gill-perk-l {
  0%, 100% { transform: rotate(0deg) scale(1); }
  50% { transform: rotate(-6deg) scale(1.04); }
}
@keyframes gill-perk-r {
  0%, 100% { transform: rotate(0deg) scale(1); }
  50% { transform: rotate(6deg) scale(1.04); }
}

.carm--listening { animation: carm-listen-tilt 2.2s ease-in-out infinite; }
.carm--listening .blink-group { animation: carm-blink 4s ease-in-out infinite; transform-origin: 256px 281px; }
.carm--listening .gills-l { animation: gill-perk-l 2.2s ease-in-out infinite; transform-origin: 150px 270px; }
.carm--listening .gills-r { animation: gill-perk-r 2.2s ease-in-out infinite; transform-origin: 362px 270px; }
.carm--listening .antenna-ball-glow { opacity: 1; }
.carm--listening .bot-panel-light { opacity: 1; }

/* --- Listening 15s: raised eyebrow + slightly wider eyes --- */
@keyframes carm-blink-wide {
  0%, 90%, 100% { transform: scale(1.05); }
  93% { transform: scale(1.05) scaleY(0.05); }
}
.carm--listening-long .eyebrow-raise { opacity: 1; }
.carm--listening-long .blink-group { animation: carm-blink-wide 4s ease-in-out infinite; transform-origin: 256px 281px; }
.carm--listening-long .mouth-smile { stroke-width: 7; }

/* --- Listening 30s: wide eyes, super perked --- */
@keyframes carm-blink-wow {
  0%, 90%, 100% { transform: scale(1.12); }
  93% { transform: scale(1.12) scaleY(0.05); }
}
.carm--listening-wow .eyebrow-raise { opacity: 1; }
.carm--listening-wow .blink-group { animation: carm-blink-wow 4s ease-in-out infinite; transform-origin: 256px 281px; }
.carm--listening-wow .pupil-group { transform: translateY(-3px); }
.carm--listening-wow .eye-shine { r: 10; }
.carm--listening-wow .mouth-smile { opacity: 0 !important; }
.carm--listening-wow .mouth-open { opacity: 1; }
.carm--listening-wow .dimple { opacity: 0; }
.carm--listening-wow .cheek-blush { opacity: 0.5; }
@keyframes gill-perk-big-l {
  0%, 100% { transform: rotate(0deg) scale(1); }
  50% { transform: rotate(-9deg) scale(1.08); }
}
@keyframes gill-perk-big-r {
  0%, 100% { transform: rotate(0deg) scale(1); }
  50% { transform: rotate(9deg) scale(1.08); }
}
.carm--listening-wow .gills-l { animation: gill-perk-big-l 1.8s ease-in-out infinite !important; transform-origin: 150px 270px; }
.carm--listening-wow .gills-r { animation: gill-perk-big-r 1.8s ease-in-out infinite !important; transform-origin: 362px 270px; }

/* ======================== THINKING ======================== */
@keyframes carm-think-tilt {
  0%, 100% { transform: rotate(0deg) translateY(0); }
  50% { transform: rotate(-3deg) translateY(-3px); }
}
@keyframes carm-eye-think {
  0%, 100% { transform: translate(0, 0); }
  15% { transform: translate(-5px, -2px); }
  30% { transform: translate(-5px, -2px); }
  40% { transform: translate(5px, -4px); }
  55% { transform: translate(5px, -4px); }
  65% { transform: translate(-3px, 2px); }
  75% { transform: translate(-3px, 2px); }
  85% { transform: translate(2px, 0); }
}
@keyframes gill-breathe-l {
  0%, 100% { transform: rotate(0deg) scale(1); }
  50% { transform: rotate(-4deg) scale(1.06); }
}
@keyframes gill-breathe-r {
  0%, 100% { transform: rotate(0deg) scale(1); }
  50% { transform: rotate(4deg) scale(1.06); }
}
@keyframes think-orbit-spin {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}
@keyframes orb-pulse {
  0%, 100% { opacity: 0.6; r: 4; }
  50% { opacity: 1; r: 6; }
}
@keyframes antenna-think-glow {
  0%, 100% { opacity: 0.6; }
  50% { opacity: 1; }
}

.carm--thinking { animation: carm-think-tilt 3s ease-in-out infinite; }
.carm--thinking .pupil-group { animation: carm-eye-think 2.5s ease-in-out infinite; }
.carm--thinking .blink-group { animation: carm-blink 4s ease-in-out infinite; transform-origin: 256px 281px; }
.carm--thinking .mouth-smile { opacity: 0; }
.carm--thinking .mouth-hmm { opacity: 1; }
.carm--thinking .dimple { opacity: 0; }
/* Monocle only appears after prolonged thinking (JS adds this class after 10s) */
.carm--thinking-deep .monocle { opacity: 1; }
.carm--thinking .gills-l { animation: gill-breathe-l 2.5s ease-in-out infinite; transform-origin: 150px 270px; }
.carm--thinking .gills-r { animation: gill-breathe-r 2.5s ease-in-out infinite; transform-origin: 362px 270px; }
.carm--thinking .think-orbit {
  opacity: 1;
  animation: think-orbit-spin 2s linear infinite;
  transform-origin: 256px 104px;
}
.carm--thinking .orb1 { animation: orb-pulse 1.5s ease-in-out 0s infinite; }
.carm--thinking .orb2 { animation: orb-pulse 1.5s ease-in-out 0.5s infinite; }
.carm--thinking .orb3 { animation: orb-pulse 1.5s ease-in-out 1s infinite; }
.carm--thinking .antenna-ball-glow { animation: antenna-think-glow 2s ease-in-out infinite; }
.carm--thinking .bot-panel-light { animation: antenna-think-glow 2s ease-in-out infinite; }

/* --- Thinking 20s: faster orbs + outer ring --- */
.carm--thinking-fast .think-orbit {
  animation: think-orbit-spin 1s linear infinite !important;
}
.carm--thinking-fast .think-orbit-outer {
  opacity: 1;
  animation: think-orbit-spin-reverse 1.5s linear infinite;
  transform-origin: 256px 104px;
}
@keyframes think-orbit-spin-reverse {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(-360deg); }
}

/* --- Thinking 30s: sweat drop --- */
.carm--thinking-sweat .sweat-drop { opacity: 1; }
@keyframes sweat-drip {
  0% { transform: translateY(0); opacity: 0; }
  15% { opacity: 1; }
  80% { opacity: 1; }
  100% { transform: translateY(18px); opacity: 0; }
}
.carm--thinking-sweat .sweat-drop { animation: sweat-drip 2.5s ease-in infinite; }

/* --- Thinking 45s: tired, droopy gills + yawn --- */
.carm--thinking-tired .blink-group { transform: scaleY(0.4); transform-origin: 256px 281px; animation: none !important; }
.carm--thinking-tired .mouth-hmm { opacity: 0 !important; }
.carm--thinking-tired .mouth-smile { opacity: 0 !important; }
.carm--thinking-tired .dimple { opacity: 0; }
.carm--thinking-tired .antenna-ball-glow { opacity: 0.35 !important; }
.carm--thinking-tired .sweat-drop { opacity: 1; animation: sweat-drip 2.5s ease-in infinite; }
.carm--thinking-tired .mouth-yawn { opacity: 1; }
@keyframes mouth-yawn-anim {
  0%, 100% { transform: scaleY(1); }
  30% { transform: scaleY(1.5); }
  60% { transform: scaleY(1.3); }
}
.carm--thinking-tired .mouth-yawn { animation: mouth-yawn-anim 3s ease-in-out infinite; transform-origin: 256px 356px; }
.carm--thinking-tired .gills-l { animation: gill-droop-l 1s ease-out forwards !important; transform-origin: 150px 270px; }
.carm--thinking-tired .gills-r { animation: gill-droop-r 1s ease-out forwards !important; transform-origin: 362px 270px; }

/* --- Thinking 60s: asleep --- */
@keyframes sleep-bob {
  0%, 100% { transform: rotate(-3deg) translateY(0); }
  50% { transform: rotate(-5deg) translateY(2px); }
}
@keyframes zzz-float {
  0% { transform: translateY(0) scale(0.7); opacity: 0; }
  20% { opacity: 1; }
  100% { transform: translateY(-40px) scale(1.2); opacity: 0; }
}
.carm--thinking-asleep { animation: sleep-bob 3s ease-in-out infinite !important; }
.carm--thinking-asleep .blink-group { animation: none !important; transform: scaleY(0.35) !important; transform-origin: 256px 281px; }
.carm--thinking-asleep .pupil-group { animation: none !important; transform: none !important; }
.carm--thinking-asleep .monocle { opacity: 0 !important; }
.carm--thinking-asleep .antenna-ball-glow { opacity: 0.2 !important; }
.carm--thinking-asleep .think-orbit { opacity: 0.25 !important; animation: think-orbit-spin 6s linear infinite !important; }
.carm--thinking-asleep .think-orbit-outer { opacity: 0 !important; }
.carm--thinking-asleep .mouth-hmm { opacity: 0 !important; }
.carm--thinking-asleep .mouth-yawn { opacity: 0 !important; }
.carm--thinking-asleep .mouth-smile { opacity: 0 !important; }
.carm--thinking-asleep .sleep-zzz { opacity: 1; }
.carm--thinking-asleep .z1 { animation: zzz-float 2.5s ease-out 0s infinite; }
.carm--thinking-asleep .z2 { animation: zzz-float 2.5s ease-out 0.8s infinite; }
.carm--thinking-asleep .z3 { animation: zzz-float 2.5s ease-out 1.6s infinite; }
.carm--thinking-asleep .gills-l { animation: none !important; transform: rotate(4deg) scaleY(0.94) translateY(4px); transform-origin: 150px 270px; }
.carm--thinking-asleep .gills-r { animation: none !important; transform: rotate(-4deg) scaleY(0.94) translateY(4px); transform-origin: 362px 270px; }

/* ======================== TALKING ======================== */
@keyframes carm-talk-bounce {
  0%, 100% { transform: translateY(0) scale(1); }
  30% { transform: translateY(-3px) scale(1.005); }
  60% { transform: translateY(1px) scale(0.998); }
}
@keyframes mouth-talk {
  0%, 100% { opacity: 0.55; transform: scaleY(0.45); }
  25% { opacity: 1; transform: scale(1.12, 1.75); }
  50% { opacity: 0.5; transform: scaleY(0.4); }
  75% { opacity: 1; transform: scale(1.08, 2.05); }
}
@keyframes gill-talk-wave-l {
  0%, 100% { transform: rotate(0deg); }
  33% { transform: rotate(-4deg) scaleY(1.03); }
  66% { transform: rotate(2deg) scaleY(0.97); }
}
@keyframes gill-talk-wave-r {
  0%, 100% { transform: rotate(0deg); }
  33% { transform: rotate(4deg) scaleY(1.03); }
  66% { transform: rotate(-2deg) scaleY(0.97); }
}

.carm--responding { animation: carm-talk-bounce 0.8s ease-in-out infinite; }
.carm--responding .blink-group { animation: carm-blink 3s ease-in-out infinite; transform-origin: 256px 281px; }
.carm--responding .mouth-smile { opacity: 0; }
.carm--responding .mouth-open { opacity: 1; animation: mouth-talk 0.55s ease-in-out infinite; transform-origin: 256px 358px; }
.carm--responding .dimple { opacity: 0; }
.carm--responding .gills-l { animation: gill-talk-wave-l 0.9s ease-in-out infinite; transform-origin: 150px 270px; }
.carm--responding .gills-r { animation: gill-talk-wave-r 0.9s ease-in-out infinite; transform-origin: 362px 270px; }
.carm--responding .cheek-blush { opacity: 0.45; }
.carm--responding .antenna-ball-glow { opacity: 1; }
.carm--responding .bot-panel-light { opacity: 1; }

/* ======================== GREETING ======================== */
@keyframes carm-greet-pop {
  0% { transform: scale(0.3) translateY(25px); opacity: 0; }
  50% { transform: scale(1.08) translateY(-5px); opacity: 1; }
  70% { transform: scale(0.96) translateY(1px); }
  100% { transform: scale(1) translateY(0); }
}
@keyframes gill-greet-wiggle-l {
  0%, 100% { transform: rotate(0deg) scale(1); }
  15% { transform: rotate(-10deg) scale(1.1); }
  30% { transform: rotate(5deg) scale(1.05); }
  45% { transform: rotate(-7deg) scale(1.08); }
  60% { transform: rotate(3deg) scale(1.03); }
  80% { transform: rotate(-2deg) scale(1.02); }
}
@keyframes gill-greet-wiggle-r {
  0%, 100% { transform: rotate(0deg) scale(1); }
  15% { transform: rotate(10deg) scale(1.1); }
  30% { transform: rotate(-5deg) scale(1.05); }
  45% { transform: rotate(7deg) scale(1.08); }
  60% { transform: rotate(-3deg) scale(1.03); }
  80% { transform: rotate(2deg) scale(1.02); }
}
@keyframes antenna-greet-bounce {
  0%, 100% { transform: translateY(0) scale(1); }
  20% { transform: translateY(-6px) scale(1.15); }
  40% { transform: translateY(2px) scale(0.95); }
  60% { transform: translateY(-3px) scale(1.08); }
  80% { transform: translateY(1px) scale(1); }
}

.carm--greeting { animation: carm-greet-pop 0.8s cubic-bezier(0.34, 1.56, 0.64, 1) forwards; }
.carm--greeting .cheek-blush { opacity: 0.5; }
.carm--greeting .blink-group { transform: scaleY(0.8); transform-origin: 256px 281px; }
.carm--greeting .gills-l { animation: gill-greet-wiggle-l 1.2s ease-in-out 0.2s 1; transform-origin: 150px 270px; }
.carm--greeting .gills-r { animation: gill-greet-wiggle-r 1.2s ease-in-out 0.2s 1; transform-origin: 362px 270px; }
.carm--greeting .antenna-group { animation: antenna-greet-bounce 1s ease-in-out 0.2s 1; transform-origin: 256px 155px; }
.carm--greeting .antenna-ball-glow { opacity: 1; }

/* ======================== ERROR ======================== */
@keyframes carm-shake {
  0%, 100% { transform: translateX(0) rotate(0deg); }
  10% { transform: translateX(-6px) rotate(-2deg); }
  20% { transform: translateX(6px) rotate(2deg); }
  30% { transform: translateX(-5px) rotate(-1.5deg); }
  40% { transform: translateX(5px) rotate(1deg); }
  50% { transform: translateX(-2px); }
}
@keyframes gill-droop-l {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(8deg) scaleY(0.88) translateY(8px); }
}
@keyframes gill-droop-r {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(-8deg) scaleY(0.88) translateY(8px); }
}
@keyframes antenna-error-flash {
  0%, 100% { opacity: 0.4; }
  50% { opacity: 1; }
}

.carm--error { animation: carm-shake 0.6s ease-out; }
.carm--error .blink-group { opacity: 0; }
.carm--error .x-eye { opacity: 1; }
.carm--error .mouth-smile { opacity: 0; }
.carm--error .mouth-frown { opacity: 1; }
.carm--error .dimple { opacity: 0; }
.carm--error .gills-l { animation: gill-droop-l 0.4s ease-out forwards; transform-origin: 150px 270px; }
.carm--error .gills-r { animation: gill-droop-r 0.4s ease-out forwards; transform-origin: 362px 270px; }
.carm--error .antenna-error { opacity: 1; animation: antenna-error-flash 0.5s ease-in-out infinite; }
.carm--error .antenna-ball-glow { opacity: 0; }
.carm--error .cheek-light { opacity: 0.3; }

/* ======================== REDUCED MOTION ======================== */
@media (prefers-reduced-motion: reduce) {
  .carm, .carm *,
  .carm--idle, .carm--listening, .carm--thinking,
  .carm--responding, .carm--greeting, .carm--error,
  .carm--idle-bored, .carm--idle-asleep,
  .carm--thinking-fast, .carm--thinking-sweat, .carm--thinking-tired, .carm--thinking-asleep,
  .carm--happy, .carm--sad, .carm--confused, .carm--excited, .carm--love,
  .carm--angry, .carm--shy, .carm--surprised, .carm--proud, .carm--nervous,
  .carm--laughing, .carm--wink, .carm--celebrating, .carm--focused, .carm--mischievous,
  .carm--success, .carm--warning, .carm--loading, .carm--searching, .carm--typing,
  .carm--planning, .carm--reviewing, .carm--debugging, .carm--testing, .carm--deploying,
  .carm--awaiting-input, .carm--reconnecting, .carm--concerned,
  .carm--debugging-stumped, .carm--reviewing-intense, .carm--testing-long,
  .carm--awaiting-input-timeout, .carm--reconnecting-flaky {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}

/* ======================== HIDDEN EMOTION INDICATORS ======================== */
.carm .heart-eyes { opacity: 0; transition: opacity 0.3s; }
.carm .floating-hearts { opacity: 0; transition: opacity 0.3s; }
.carm .tears { opacity: 0; transition: opacity 0.3s; }
.carm .mouth-sad { opacity: 0; transition: opacity 0.3s; }
.carm .question-mark { opacity: 0; transition: opacity 0.3s; }
.carm .exclaim-marks { opacity: 0; transition: opacity 0.3s; }
.carm .star-eyes { opacity: 0; transition: opacity 0.3s; }
.carm .sparkles { opacity: 0; transition: opacity 0.3s; }
.carm .steam-puffs { opacity: 0; transition: opacity 0.3s; }
.carm .angry-brows { opacity: 0; transition: opacity 0.3s; }
.carm .confetti { opacity: 0; transition: opacity 0.3s; }
.carm .checkmark { opacity: 0; transition: opacity 0.3s; }
.carm .warning-indicator { opacity: 0; transition: opacity 0.3s; }
.carm .shy-blush-l, .carm .shy-blush-r { opacity: 0; transition: opacity 0.3s; }
.carm .wink-eye { opacity: 0; transition: opacity 0.3s; }
.carm .laugh-eyes { opacity: 0; transition: opacity 0.3s; }
.carm .laugh-tears { opacity: 0; transition: opacity 0.3s; }
.carm .focus-lines { opacity: 0; transition: opacity 0.3s; }
.carm .mouth-smirk { opacity: 0; transition: opacity 0.3s; }
.carm .planning-dots { opacity: 0; transition: opacity 0.3s; }
.carm .review-scan { opacity: 0; transition: opacity 0.3s; }
.carm .debug-crosshair { opacity: 0; transition: opacity 0.3s; }
.carm .test-checks { opacity: 0; transition: opacity 0.3s; }
.carm .deploy-bar { opacity: 0; transition: opacity 0.3s; }
.carm .await-hand { opacity: 0; transition: opacity 0.3s; }
.carm .reconnect-dots { opacity: 0; transition: opacity 0.3s; }
.carm .concerned-brows { opacity: 0; transition: opacity 0.3s; }

/* ======================== HIDDEN ACCESSORIES ======================== */
.carm .acc-glasses { opacity: 0; transition: opacity 0.3s; }
.carm .acc-sunglasses { opacity: 0; transition: opacity 0.3s; }
.carm .acc-cowboy-hat { opacity: 0; transition: opacity 0.3s; }
.carm .acc-party-hat { opacity: 0; transition: opacity 0.3s; }
.carm .acc-crown { opacity: 0; transition: opacity 0.3s; }
.carm .acc-headphones { opacity: 0; transition: opacity 0.3s; }
.carm .acc-bowtie { opacity: 0; transition: opacity 0.3s; }
.carm .acc-scarf { opacity: 0; transition: opacity 0.3s; }
.carm .acc-chef-hat { opacity: 0; transition: opacity 0.3s; }
.carm .acc-hard-hat { opacity: 0; transition: opacity 0.3s; }
.carm .acc-halo { opacity: 0; transition: opacity 0.3s; }
.carm .acc-horns { opacity: 0; transition: opacity 0.3s; }
.carm .acc-tophat { opacity: 0; transition: opacity 0.3s; }
.carm .acc-monocle { opacity: 0; transition: opacity 0.3s; }
.carm .acc-magnifying-glass { opacity: 0; transition: opacity 0.3s; }
.carm .acc-wrench { opacity: 0; transition: opacity 0.3s; }
.carm .acc-clipboard { opacity: 0; transition: opacity 0.3s; }
.carm .acc-shield { opacity: 0; transition: opacity 0.3s; }
.carm .acc-rocket-pack { opacity: 0; transition: opacity 0.3s; }

/* ======================== ACCESSORY TOGGLE ======================== */
.carm--acc-glasses .acc-glasses { opacity: 1 !important; }
.carm--acc-sunglasses .acc-sunglasses { opacity: 1 !important; }
.carm--acc-cowboy-hat .acc-cowboy-hat { opacity: 1 !important; }
.carm--acc-party-hat .acc-party-hat { opacity: 1 !important; }
.carm--acc-crown .acc-crown { opacity: 1 !important; }
.carm--acc-headphones .acc-headphones { opacity: 1 !important; }
.carm--acc-bowtie .acc-bowtie { opacity: 1 !important; }
.carm--acc-scarf .acc-scarf { opacity: 1 !important; }
.carm--acc-chef-hat .acc-chef-hat { opacity: 1 !important; }
.carm--acc-hard-hat .acc-hard-hat { opacity: 1 !important; }
.carm--acc-halo .acc-halo { opacity: 1 !important; }
.carm--acc-horns .acc-horns { opacity: 1 !important; }
.carm--acc-tophat .acc-tophat { opacity: 1 !important; }
.carm--acc-monocle .acc-monocle { opacity: 1 !important; }
.carm--acc-magnifying-glass .acc-magnifying-glass { opacity: 1 !important; }
.carm--acc-wrench .acc-wrench { opacity: 1 !important; }
.carm--acc-clipboard .acc-clipboard { opacity: 1 !important; }
.carm--acc-shield .acc-shield { opacity: 1 !important; }
.carm--acc-rocket-pack .acc-rocket-pack { opacity: 1 !important; }

/* ======================== MONOCLE GLINT ======================== */
@keyframes monocle-glint {
  0%, 80%, 100% { opacity: 0.25; }
  90% { opacity: 0.6; }
}
.carm--acc-monocle .acc-monocle .monocle-glint { animation: monocle-glint 4s ease-in-out infinite; }

/* ======================== ROCKET FLAMES ======================== */
@keyframes rocket-flame-flicker {
  0%, 100% { transform: scaleY(1) scaleX(1); opacity: 0.7; }
  25% { transform: scaleY(1.15) scaleX(0.9); opacity: 0.85; }
  50% { transform: scaleY(0.85) scaleX(1.1); opacity: 0.6; }
  75% { transform: scaleY(1.2) scaleX(0.85); opacity: 0.8; }
}
@keyframes rocket-flame-inner {
  0%, 100% { transform: scaleY(1); opacity: 0.6; }
  50% { transform: scaleY(1.3); opacity: 0.8; }
}
.carm--acc-rocket-pack .rf-l { animation: rocket-flame-flicker 0.3s ease-in-out infinite; transform-origin: 238px 418px; }
.carm--acc-rocket-pack .rf-r { animation: rocket-flame-flicker 0.3s ease-in-out infinite 0.15s; transform-origin: 274px 418px; }
.carm--acc-rocket-pack .rf-l-inner { animation: rocket-flame-inner 0.2s ease-in-out infinite; transform-origin: 238px 420px; }
.carm--acc-rocket-pack .rf-r-inner { animation: rocket-flame-inner 0.2s ease-in-out infinite 0.1s; transform-origin: 274px 420px; }

/* ======================== SHIELD PULSE ======================== */
@keyframes shield-pulse {
  0%, 100% { opacity: 0.5; }
  50% { opacity: 0.8; }
}
.carm--acc-shield .acc-shield path:nth-child(2) { animation: shield-pulse 2s ease-in-out infinite; }

/* ======================== HAPPY ======================== */
@keyframes carm-happy-bounce {
  0%, 100% { transform: translateY(0) scale(1); }
  25% { transform: translateY(-8px) scale(1.02); }
  50% { transform: translateY(0) scale(1); }
  75% { transform: translateY(-5px) scale(1.01); }
}
.carm--happy { animation: carm-happy-bounce 1.2s ease-in-out infinite; }
.carm--happy .blink-group { transform: scaleY(0.75); transform-origin: 256px 281px; }
.carm--happy .cheek-blush { opacity: 0.55; }
.carm--happy .mouth-smile { stroke-width: 8; }
.carm--happy .gills-l { animation: gill-greet-wiggle-l 2s ease-in-out infinite; transform-origin: 150px 270px; }
.carm--happy .gills-r { animation: gill-greet-wiggle-r 2s ease-in-out infinite; transform-origin: 362px 270px; }
.carm--happy .antenna-ball-glow { opacity: 1; }
.carm--happy .bot-panel-light { opacity: 1; }

/* ======================== SAD ======================== */
@keyframes carm-sad-droop {
  0%, 100% { transform: translateY(0) rotate(0); }
  50% { transform: translateY(3px) rotate(-2deg); }
}
@keyframes tear-fall {
  0% { transform: translateY(0); opacity: 0; }
  15% { opacity: 0.85; }
  100% { transform: translateY(30px); opacity: 0; }
}
.carm--sad { animation: carm-sad-droop 3s ease-in-out infinite; }
.carm--sad .mouth-smile { opacity: 0; }
.carm--sad .mouth-sad { opacity: 1; }
.carm--sad .dimple { opacity: 0; }
.carm--sad .tears { opacity: 1; }
.carm--sad .tear-l { animation: tear-fall 2s ease-in 0s infinite; }
.carm--sad .tear-r { animation: tear-fall 2s ease-in 0.8s infinite; }
.carm--sad .gills-l { animation: gill-droop-l 0.8s ease-out forwards; transform-origin: 150px 270px; }
.carm--sad .gills-r { animation: gill-droop-r 0.8s ease-out forwards; transform-origin: 362px 270px; }
.carm--sad .antenna-ball-glow { opacity: 0.3; }
.carm--sad .cheek-light { opacity: 0.2; }

/* ======================== CONFUSED ======================== */
@keyframes carm-confused-tilt {
  0%, 100% { transform: rotate(0); }
  25% { transform: rotate(5deg); }
  75% { transform: rotate(-5deg); }
}
@keyframes question-bob {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-6px); }
}
.carm--confused { animation: carm-confused-tilt 2s ease-in-out infinite; }
.carm--confused .question-mark { opacity: 1; animation: question-bob 1.5s ease-in-out infinite; }
.carm--confused .mouth-smile { opacity: 0; }
.carm--confused .mouth-hmm { opacity: 1; }
.carm--confused .dimple { opacity: 0; }
.carm--confused .pupil-group { animation: carm-eye-think 3s ease-in-out infinite; }
.carm--confused .eyebrow-raise { opacity: 1; }
.carm--confused .gills-l { animation: gill-sway-l 3s ease-in-out infinite; transform-origin: 150px 270px; }
.carm--confused .gills-r { animation: gill-sway-r 3s ease-in-out infinite; transform-origin: 362px 270px; }

/* ======================== EXCITED ======================== */
@keyframes carm-excited-hop {
  0%, 100% { transform: translateY(0) scale(1); }
  30% { transform: translateY(-10px) scale(1.04); }
  55% { transform: translateY(2px) scale(0.99); }
  78% { transform: translateY(-4px) scale(1.01); }
}
@keyframes excited-smile {
  0%, 100% { transform: translateY(2px) scale(1.08, 1.06); }
  50% { transform: translateY(0) scale(1.18, 1.24); }
}
.carm--excited { animation: carm-excited-hop 0.95s cubic-bezier(0.34, 1.56, 0.64, 1) infinite; }
.carm--excited .star-eyes,
.carm--excited .exclaim-marks,
.carm--excited .mouth-open { opacity: 0; }
.carm--excited .blink-group { opacity: 1; transform: scale(1.18); transform-origin: 256px 281px; }
.carm--excited .pupil-group { transform: translateY(-5px); }
.carm--excited .eye-shine { r: 10; }
.carm--excited .mouth-smile { opacity: 1; stroke-width: 9; animation: excited-smile 0.95s ease-in-out infinite; transform-origin: 256px 354px; }
.carm--excited .cheek-blush { opacity: 0.56; }
.carm--excited .eyebrow-raise { opacity: 1; transform: translateY(-8px); transform-origin: 256px 250px; }
.carm--excited .gills-l { animation: gill-perk-big-l 0.9s ease-in-out infinite; transform-origin: 150px 270px; }
.carm--excited .gills-r { animation: gill-perk-big-r 0.9s ease-in-out infinite; transform-origin: 362px 270px; }
.carm--excited .antenna-group { animation: antenna-greet-bounce 1.1s ease-in-out infinite; transform-origin: 256px 155px; }
.carm--excited .antenna-ball-glow,
.carm--excited .bot-panel-light { opacity: 1; }

/* ======================== LOVE ======================== */
@keyframes carm-love-pulse {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.04); }
}
@keyframes hearts-float {
  0% { transform: translateY(0) scale(0.5); opacity: 0; }
  20% { opacity: 0.8; }
  100% { transform: translateY(-50px) scale(1.2); opacity: 0; }
}
.carm--love { animation: carm-love-pulse 1.5s ease-in-out infinite; }
.carm--love .heart-eyes { opacity: 1; transform: scale(1.06); transform-origin: 256px 281px; }
.carm--love .blink-group { opacity: 0; }
.carm--love .floating-hearts { opacity: 1; }
.carm--love .fh1 { animation: hearts-float 2s ease-out 0s infinite; }
.carm--love .fh2 { animation: hearts-float 2s ease-out 0.7s infinite; }
.carm--love .fh3 { animation: hearts-float 2s ease-out 1.4s infinite; }
.carm--love .cheek-blush { opacity: 0.6; }
.carm--love .mouth-smile { stroke-width: 8; }
.carm--love .gills-l { animation: gill-sway-l 3s ease-in-out infinite; transform-origin: 150px 270px; }
.carm--love .gills-r { animation: gill-sway-r 3s ease-in-out infinite; transform-origin: 362px 270px; }

/* ======================== ANGRY ======================== */
@keyframes carm-angry-shake {
  0%, 100% { transform: translateX(0); }
  25% { transform: translateX(-3px); }
  75% { transform: translateX(3px); }
}
@keyframes steam-rise {
  0% { transform: translateY(0) scale(0.8); opacity: 0; }
  30% { opacity: 0.6; }
  100% { transform: translateY(-20px) scale(1.4); opacity: 0; }
}
.carm--angry { animation: carm-angry-shake 0.3s ease-in-out infinite; }
.carm--angry .angry-brows { opacity: 1; }
.carm--angry .steam-puffs { opacity: 1; }
.carm--angry .st1 { animation: steam-rise 1.5s ease-out 0s infinite; }
.carm--angry .st2 { animation: steam-rise 1.5s ease-out 0.4s infinite; }
.carm--angry .st3 { animation: steam-rise 1.5s ease-out 0.2s infinite; }
.carm--angry .st4 { animation: steam-rise 1.5s ease-out 0.6s infinite; }
.carm--angry .mouth-smile { opacity: 0; }
.carm--angry .mouth-frown { opacity: 1; }
.carm--angry .dimple { opacity: 0; }
.carm--angry .cheek-blush { fill: #FF8080 !important; opacity: 0.4; }
.carm--angry .antenna-error { opacity: 0.6; }
.carm--angry .gills-l { animation: gill-perk-big-l 0.6s ease-in-out infinite; transform-origin: 150px 270px; }
.carm--angry .gills-r { animation: gill-perk-big-r 0.6s ease-in-out infinite; transform-origin: 362px 270px; }

/* ======================== SHY ======================== */
@keyframes carm-shy-shrink {
  0%, 100% { transform: scale(1) translateY(0); }
  50% { transform: scale(0.96) translateY(4px); }
}
.carm--shy { animation: carm-shy-shrink 3s ease-in-out infinite; }
.carm--shy .pupil-group { transform: translate(-6px, 3px); }
.carm--shy .shy-blush-l, .carm--shy .shy-blush-r { opacity: 0.45; }
.carm--shy .cheek-blush { opacity: 0.6; }
.carm--shy .mouth-smile { opacity: 0; }
.carm--shy .mouth-hmm { opacity: 1; }
.carm--shy .dimple { opacity: 0; }
.carm--shy .gills-l { transform: rotate(6deg) scaleY(0.9) translateY(4px); transform-origin: 150px 270px; }
.carm--shy .gills-r { transform: rotate(-6deg) scaleY(0.9) translateY(4px); transform-origin: 362px 270px; }

/* ======================== SURPRISED ======================== */
@keyframes carm-surprise-jump {
  0% { transform: translateY(0) scale(1); }
  30% { transform: translateY(-15px) scale(1.06); }
  50% { transform: translateY(-15px) scale(1.06); }
  80% { transform: translateY(2px) scale(0.98); }
  100% { transform: translateY(0) scale(1); }
}
.carm--surprised { animation: carm-surprise-jump 0.8s cubic-bezier(0.34, 1.56, 0.64, 1) forwards; }
.carm--surprised .blink-group { transform: scale(1.32); transform-origin: 256px 281px; }
.carm--surprised .pupil-group { transform: translateY(-2px); }
.carm--surprised .eye-shine { r: 11; }
.carm--surprised .mouth-smile { opacity: 0; }
.carm--surprised .mouth-open { opacity: 1; transform: translateY(6px) scale(0.68, 1.8); transform-origin: 256px 358px; }
.carm--surprised .dimple { opacity: 0; }
.carm--surprised .eyebrow-raise { opacity: 1; transform: translateY(-10px); transform-origin: 256px 250px; }
.carm--surprised .antenna-group { transform: translateY(-8px) scale(1.04); }
.carm--surprised .antenna-ball-glow { opacity: 1; }
.carm--surprised .gills-l { animation: gill-perk-big-l 0.5s ease-out 1; transform-origin: 150px 270px; }
.carm--surprised .gills-r { animation: gill-perk-big-r 0.5s ease-out 1; transform-origin: 362px 270px; }

/* ======================== PROUD ======================== */
@keyframes carm-proud-rise {
  0%, 100% { transform: translateY(0) scale(1); }
  50% { transform: translateY(-6px) scale(1.03); }
}
@keyframes sparkle-twinkle {
  0%, 100% { opacity: 0; transform: scale(0.5) rotate(0deg); }
  50% { opacity: 1; transform: scale(1.2) rotate(180deg); }
}
.carm--proud { animation: carm-proud-rise 2.5s ease-in-out infinite; }
.carm--proud .sparkles { opacity: 1; }
.carm--proud .sp1 { animation: sparkle-twinkle 1.5s ease-in-out 0s infinite; }
.carm--proud .sp2 { animation: sparkle-twinkle 1.5s ease-in-out 0.4s infinite; }
.carm--proud .sp3 { animation: sparkle-twinkle 1.5s ease-in-out 0.8s infinite; }
.carm--proud .sp4 { animation: sparkle-twinkle 1.5s ease-in-out 1.2s infinite; }
.carm--proud .blink-group { transform: scaleY(0.85); transform-origin: 256px 281px; }
.carm--proud .antenna-ball-glow { opacity: 1; }
.carm--proud .bot-panel-light { opacity: 1; }
.carm--proud .cheek-blush { opacity: 0.4; }
.carm--proud .gills-l { animation: gill-perk-l 2.5s ease-in-out infinite; transform-origin: 150px 270px; }
.carm--proud .gills-r { animation: gill-perk-r 2.5s ease-in-out infinite; transform-origin: 362px 270px; }

/* ======================== NERVOUS ======================== */
@keyframes carm-nervous-tremble {
  0%, 100% { transform: translate(0, 0); }
  20% { transform: translate(-1px, 0.5px); }
  40% { transform: translate(1px, -0.5px); }
  60% { transform: translate(-0.5px, 1px); }
  80% { transform: translate(0.5px, -1px); }
}
@keyframes nervous-eye-dart {
  0%, 100% { transform: translateX(0); }
  15% { transform: translateX(-5px); }
  35% { transform: translateX(-5px); }
  50% { transform: translateX(5px); }
  70% { transform: translateX(5px); }
  85% { transform: translateX(0); }
}
.carm--nervous { animation: carm-nervous-tremble 0.2s linear infinite; }
.carm--nervous .pupil-group { animation: nervous-eye-dart 1.5s ease-in-out infinite; }
.carm--nervous .sweat-drop { opacity: 1; animation: sweat-drip 2s ease-in infinite; }
.carm--nervous .mouth-smile { opacity: 0; }
.carm--nervous .mouth-hmm { opacity: 1; }
.carm--nervous .dimple { opacity: 0; }
.carm--nervous .blink-group { animation: blink-fast 1.5s ease-in-out infinite; transform-origin: 256px 281px; }
.carm--nervous .gills-l { animation: gill-droop-l 0.8s ease-out forwards; transform-origin: 150px 270px; }
.carm--nervous .gills-r { animation: gill-droop-r 0.8s ease-out forwards; transform-origin: 362px 270px; }

/* ======================== LAUGHING ======================== */
@keyframes carm-laugh-shake {
  0%, 100% { transform: translateY(0) rotate(0); }
  15% { transform: translateY(-7px) rotate(3deg); }
  30% { transform: translateY(2px) rotate(-2.5deg); }
  45% { transform: translateY(-9px) rotate(2.5deg); }
  60% { transform: translateY(0) rotate(-3deg); }
  75% { transform: translateY(-5px) rotate(2deg); }
}
@keyframes laugh-mouth-cycle {
  0%, 100% { transform: translateY(3px) scale(1.02, 0.96); }
  35% { transform: translateY(5px) scale(1.08, 1.04); }
  70% { transform: translateY(2px) scale(0.98, 0.92); }
}
.carm--laughing { animation: carm-laugh-shake 0.55s ease-in-out infinite; }
.carm--laughing .blink-group { opacity: 0; }
.carm--laughing .laugh-eyes { opacity: 1; }
.carm--laughing .mouth-smile,
.carm--laughing .mouth-open { opacity: 0; }
.carm--laughing .dimple { opacity: 0; }
.carm--laughing .mouth-laugh {
  opacity: 1;
  stroke-width: 5;
  animation: laugh-mouth-cycle 0.38s ease-in-out infinite;
  transform-origin: 256px 380px;
}
.carm--laughing .laugh-tears { opacity: 1; }
.carm--laughing .lt-l { animation: tear-fall 2.2s ease-in 0s infinite; }
.carm--laughing .lt-r { animation: tear-fall 2.2s ease-in 0.7s infinite; }
.carm--laughing .cheek-blush { opacity: 0.62; }
.carm--laughing .eyebrow-raise { opacity: 0.75; transform: translateY(-2px); transform-origin: 256px 250px; }
.carm--laughing .gills-l { animation: gill-greet-wiggle-l 0.65s ease-in-out infinite; transform-origin: 150px 270px; }
.carm--laughing .gills-r { animation: gill-greet-wiggle-r 0.65s ease-in-out infinite; transform-origin: 362px 270px; }

/* ======================== WINK ======================== */
@keyframes carm-wink-nod {
  0% { transform: rotate(0); }
  40% { transform: rotate(3deg); }
  100% { transform: rotate(0); }
}
.carm--wink { animation: carm-wink-nod 0.6s ease-out forwards; }
.carm--wink .wink-eye { opacity: 1; }
/* Hide left eye whites when winking */
.carm--wink .eye-left { opacity: 0; }
.carm--wink .eye-shine:first-child { opacity: 0; }
.carm--wink .mouth-smile { stroke-width: 8; }
.carm--wink .cheek-blush { opacity: 0.5; }
.carm--wink .gills-l { animation: gill-sway-l 3s ease-in-out infinite; transform-origin: 150px 270px; }
.carm--wink .gills-r { animation: gill-sway-r 3s ease-in-out infinite; transform-origin: 362px 270px; }

/* ======================== CELEBRATING ======================== */
@keyframes carm-celebrate-bounce {
  0% { transform: translateY(0) scale(0.95); }
  20% { transform: translateY(-20px) scale(1.08); }
  40% { transform: translateY(0) scale(0.98); }
  55% { transform: translateY(-12px) scale(1.04); }
  70% { transform: translateY(0) scale(0.99); }
  85% { transform: translateY(-5px) scale(1.01); }
  100% { transform: translateY(0) scale(1); }
}
@keyframes confetti-fall {
  0% { transform: translateY(-20px) rotate(0deg); opacity: 0; }
  10% { opacity: 1; }
  100% { transform: translateY(60px) rotate(360deg); opacity: 0; }
}
.carm--celebrating { animation: carm-celebrate-bounce 1.2s cubic-bezier(0.34, 1.56, 0.64, 1) forwards; }
.carm--celebrating .confetti { opacity: 1; }
.carm--celebrating .c1 { animation: confetti-fall 1.8s ease-out 0s infinite; }
.carm--celebrating .c2 { animation: confetti-fall 1.8s ease-out 0.2s infinite; }
.carm--celebrating .c3 { animation: confetti-fall 1.8s ease-out 0.4s infinite; }
.carm--celebrating .c4 { animation: confetti-fall 1.8s ease-out 0.6s infinite; }
.carm--celebrating .c5 { animation: confetti-fall 1.8s ease-out 0.3s infinite; }
.carm--celebrating .c6 { animation: confetti-fall 1.8s ease-out 0.5s infinite; }
.carm--celebrating .c7 { animation: confetti-fall 1.8s ease-out 0.1s infinite; }
.carm--celebrating .c8 { animation: confetti-fall 1.8s ease-out 0.7s infinite; }
.carm--celebrating .sparkles { opacity: 1; }
.carm--celebrating .sp1 { animation: sparkle-twinkle 1s ease-in-out 0s infinite; }
.carm--celebrating .sp2 { animation: sparkle-twinkle 1s ease-in-out 0.25s infinite; }
.carm--celebrating .sp3 { animation: sparkle-twinkle 1s ease-in-out 0.5s infinite; }
.carm--celebrating .sp4 { animation: sparkle-twinkle 1s ease-in-out 0.75s infinite; }
.carm--celebrating .blink-group { transform: scaleY(0.7); transform-origin: 256px 281px; }
.carm--celebrating .mouth-smile { stroke-width: 8; }
.carm--celebrating .cheek-blush { opacity: 0.55; }
.carm--celebrating .gills-l { animation: gill-greet-wiggle-l 1s ease-in-out infinite; transform-origin: 150px 270px; }
.carm--celebrating .gills-r { animation: gill-greet-wiggle-r 1s ease-in-out infinite; transform-origin: 362px 270px; }
.carm--celebrating .wave-hand { opacity: 1; }

/* ======================== FOCUSED ======================== */
@keyframes carm-focused-lean {
  0%, 100% { transform: rotate(0deg) translateX(0); }
  50% { transform: rotate(2.2deg) translateX(5px); }
}
.carm--focused { animation: carm-focused-lean 4s ease-in-out infinite; }
.carm--focused .blink-group { transform: scaleY(0.82); transform-origin: 256px 281px; }
.carm--focused .focus-lines { opacity: 1; }
.carm--focused .mouth-smile { opacity: 0; }
.carm--focused .mouth-frown { opacity: 1; stroke-width: 4; }
.carm--focused .dimple { opacity: 0; }
.carm--focused .antenna-ball-glow { opacity: 1; }
.carm--focused .bot-panel-light { opacity: 1; animation: antenna-think-glow 1.5s ease-in-out infinite; }
.carm--focused .gills-l { animation: gill-sway-l 5s ease-in-out infinite; transform-origin: 150px 270px; }
.carm--focused .gills-r { animation: gill-sway-r 5s ease-in-out infinite; transform-origin: 362px 270px; }

/* ======================== MISCHIEVOUS ======================== */
@keyframes carm-mischief-lean {
  0%, 100% { transform: rotate(0) translateY(0); }
  50% { transform: rotate(4deg) translateY(-3px); }
}
.carm--mischievous { animation: carm-mischief-lean 2s ease-in-out infinite; }
.carm--mischievous .mouth-smile { opacity: 0; }
.carm--mischievous .mouth-smirk { opacity: 1; }
.carm--mischievous .dimple { opacity: 0; }
.carm--mischievous .eyebrow-raise { opacity: 1; }
.carm--mischievous .pupil-group { transform: translate(3px, -2px); }
.carm--mischievous .blink-group { transform: scaleY(0.85); transform-origin: 256px 281px; }
.carm--mischievous .gills-l { animation: gill-sway-l 2.5s ease-in-out infinite; transform-origin: 150px 270px; }
.carm--mischievous .gills-r { animation: gill-sway-r 2.5s ease-in-out infinite; transform-origin: 362px 270px; }

/* ======================== SUCCESS ======================== */
@keyframes carm-success-pop {
  0% { transform: scale(0.9); }
  40% { transform: scale(1.08); }
  60% { transform: scale(0.98); }
  80% { transform: scale(1.02); }
  100% { transform: scale(1); }
}
@keyframes checkmark-draw {
  0% { opacity: 0; transform: scale(0.5); }
  50% { opacity: 1; transform: scale(1.2); }
  100% { opacity: 1; transform: scale(1); }
}
.carm--success { animation: carm-success-pop 0.8s cubic-bezier(0.34, 1.56, 0.64, 1) forwards; }
.carm--success .checkmark { opacity: 1; animation: checkmark-draw 0.6s ease-out forwards; }
.carm--success .blink-group { transform: scaleY(0.7); transform-origin: 256px 281px; }
.carm--success .mouth-smile { stroke-width: 8; }
.carm--success .cheek-blush { opacity: 0.5; }
.carm--success .antenna-ball-glow { opacity: 1; }
.carm--success .sparkles { opacity: 1; }
.carm--success .gills-l { animation: gill-greet-wiggle-l 1.2s ease-in-out 1; transform-origin: 150px 270px; }
.carm--success .gills-r { animation: gill-greet-wiggle-r 1.2s ease-in-out 1; transform-origin: 362px 270px; }
.carm--success .sp1 { animation: sparkle-twinkle 1.5s ease-in-out 0s infinite; }
.carm--success .sp2 { animation: sparkle-twinkle 1.5s ease-in-out 0.5s infinite; }

/* ======================== WARNING ======================== */
@keyframes carm-warning-pulse {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.02); }
}
@keyframes warning-flash {
  0%, 100% { opacity: 0.5; }
  50% { opacity: 1; }
}
@keyframes warning-beacon {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.16); }
}
.carm--warning { animation: carm-warning-pulse 1.5s ease-in-out infinite; }
.carm--warning .warning-indicator { opacity: 1; animation: warning-flash 1s ease-in-out infinite; transform: translateY(-22px) scale(1.1); transform-origin: 256px 100px; }
.carm--warning .warning-indicator path { fill: rgba(251, 191, 36, 0.15); }
.carm--warning .mouth-smile { opacity: 0; }
.carm--warning .mouth-hmm { opacity: 1; }
.carm--warning .dimple { opacity: 0; }
.carm--warning .eyebrow-raise { opacity: 1; }
.carm--warning .blink-group { animation: carm-blink 3s ease-in-out infinite; transform-origin: 256px 281px; }
.carm--warning .gills-l { animation: gill-sway-l 3s ease-in-out infinite; transform-origin: 150px 270px; }
.carm--warning .gills-r { animation: gill-sway-r 3s ease-in-out infinite; transform-origin: 362px 270px; }
.carm--warning .antenna-group { transform: translateY(-4px); }
.carm--warning .antenna-base { fill: #F6D284; }
.carm--warning .antenna-cap { fill: #FFE39C; }
.carm--warning .antenna-stem { fill: #FFD56E; stroke: #E59B00; }
.carm--warning .antenna-ball { fill: #FBBF24; stroke: #E88D00; animation: warning-beacon 0.9s ease-in-out infinite; }
.carm--warning .antenna-ball-glow { opacity: 1; }

/* ======================== LOADING ======================== */
@keyframes carm-loading-bob {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-4px); }
}
@keyframes loading-orbit {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}
@keyframes loading-orb-pulse {
  0%, 100% { r: 4; opacity: 0.5; }
  50% { r: 7; opacity: 1; }
}
.carm--loading { animation: carm-loading-bob 1.5s ease-in-out infinite; }
.carm--loading .think-orbit {
  opacity: 1;
  animation: loading-orbit 0.8s linear infinite;
  transform-origin: 256px 104px;
}
.carm--loading .think-orbit-outer {
  opacity: 1;
  animation: think-orbit-spin-reverse 1.2s linear infinite;
  transform-origin: 256px 104px;
}
.carm--loading .orb1 { animation: loading-orb-pulse 0.8s ease-in-out 0s infinite; }
.carm--loading .orb2 { animation: loading-orb-pulse 0.8s ease-in-out 0.27s infinite; }
.carm--loading .orb3 { animation: loading-orb-pulse 0.8s ease-in-out 0.54s infinite; }
.carm--loading .blink-group { animation: carm-blink 3s ease-in-out infinite; transform-origin: 256px 281px; }
.carm--loading .mouth-smile { opacity: 0; }
.carm--loading .mouth-hmm { opacity: 1; }
.carm--loading .dimple { opacity: 0; }
.carm--loading .antenna-ball-glow { animation: antenna-think-glow 0.8s ease-in-out infinite; }
.carm--loading .bot-panel-light { animation: antenna-think-glow 0.8s ease-in-out infinite; }
.carm--loading .gills-l { animation: gill-breathe-l 2s ease-in-out infinite; transform-origin: 150px 270px; }
.carm--loading .gills-r { animation: gill-breathe-r 2s ease-in-out infinite; transform-origin: 362px 270px; }

/* ======================== SEARCHING ======================== */
@keyframes search-scan {
  0%, 100% { transform: translate(0, 0); }
  20% { transform: translate(-8px, -3px); }
  40% { transform: translate(8px, -5px); }
  60% { transform: translate(-5px, 3px); }
  80% { transform: translate(6px, 1px); }
}
.carm--searching { animation: carm-listen-tilt 2s ease-in-out infinite; }
.carm--searching .pupil-group { animation: search-scan 2s ease-in-out infinite; transform: translate(8px, -2px); }
.carm--searching .eye-shine { r: 10; }
.carm--searching .mouth-smile { opacity: 0; }
.carm--searching .mouth-hmm { opacity: 1; }
.carm--searching .dimple { opacity: 0; }
.carm--searching .antenna-ball-glow { opacity: 1; animation: antenna-think-glow 1s ease-in-out infinite; }
.carm--searching .bot-panel-light { animation: antenna-think-glow 1s ease-in-out infinite; }
.carm--searching .gills-l { animation: gill-perk-l 1.5s ease-in-out infinite; transform-origin: 150px 270px; }
.carm--searching .gills-r { animation: gill-perk-r 1.5s ease-in-out infinite; transform-origin: 362px 270px; }

/* ======================== TYPING ======================== */
@keyframes carm-typing-nod {
  0%, 100% { transform: translateY(0); }
  30% { transform: translateY(-2px); }
  60% { transform: translateY(1px); }
}
.carm--typing { animation: carm-typing-nod 0.5s ease-in-out infinite; }
.carm--typing .blink-group { transform: scaleY(0.55); transform-origin: 256px 281px; }
.carm--typing .pupil-group { transform: translate(0, 8px); }
.carm--typing .mouth-smile { opacity: 0; }
.carm--typing .mouth-hmm { opacity: 1; }
.carm--typing .dimple { opacity: 0; }
.carm--typing .antenna-ball-glow { opacity: 1; }
.carm--typing .bot-panel-light { opacity: 1; animation: antenna-think-glow 0.5s ease-in-out infinite; }
.carm--typing .focus-lines { opacity: 1; }
.carm--typing .gills-l { animation: gill-sway-l 3s ease-in-out infinite; transform-origin: 150px 270px; }
.carm--typing .gills-r { animation: gill-sway-r 3s ease-in-out infinite; transform-origin: 362px 270px; }

/* ======================== HALO GLOW ======================== */
@keyframes halo-glow {
  0%, 100% { opacity: 0.15; }
  50% { opacity: 0.3; }
}
.carm--acc-halo .acc-halo ellipse:last-child { animation: halo-glow 2s ease-in-out infinite; }

/* ======================== PLANNING ======================== */
@keyframes plan-item-appear {
  0% { transform: translateX(-10px); opacity: 0; }
  30% { opacity: 0.8; }
  100% { transform: translateX(0); opacity: 0.7; }
}
@keyframes plan-line-draw {
  0% { stroke-dashoffset: 30; }
  100% { stroke-dashoffset: 0; }
}
@keyframes carm-plan-tilt {
  0%, 100% { transform: translateY(0) rotate(0); }
  50% { transform: translateY(-4px) rotate(2deg); }
}
.carm--planning { animation: carm-plan-tilt 3s ease-in-out infinite; }
.carm--planning .planning-dots { opacity: 1; }
.carm--planning .pi1 { animation: plan-item-appear 1.2s ease-out 0s infinite; }
.carm--planning .pi2 { animation: plan-item-appear 1.2s ease-out 0.4s infinite; }
.carm--planning .pi3 { animation: plan-item-appear 1.2s ease-out 0.8s infinite; }
.carm--planning .pl1 { stroke-dasharray: 30; animation: plan-line-draw 1.2s ease-out 0.1s infinite; }
.carm--planning .pl2 { stroke-dasharray: 30; animation: plan-line-draw 1.2s ease-out 0.5s infinite; }
.carm--planning .pl3 { stroke-dasharray: 30; animation: plan-line-draw 1.2s ease-out 0.9s infinite; }
.carm--planning .pupil-group { transform: translate(-3px, -4px); }
.carm--planning .mouth-smile { opacity: 0; }
.carm--planning .mouth-hmm { opacity: 1; }
.carm--planning .antenna-ball-glow { opacity: 1; }
.carm--planning .bot-panel-light { opacity: 1; animation: antenna-think-glow 2s ease-in-out infinite; }
.carm--planning .gills-l { animation: gill-breathe-l 3s ease-in-out infinite; transform-origin: 150px 270px; }
.carm--planning .gills-r { animation: gill-breathe-r 3s ease-in-out infinite; transform-origin: 362px 270px; }

/* ======================== REVIEWING ======================== */
@keyframes review-scan-move {
  0% { transform: translateY(-12px); opacity: 0.95; }
  50% { transform: translateY(96px); opacity: 1; }
  100% { transform: translateY(-12px); opacity: 0.95; }
}
@keyframes carm-review-tilt {
  0%, 100% { transform: rotate(0) translateY(0); }
  50% { transform: rotate(3deg) translateY(-2px); }
}
.carm--reviewing { animation: carm-review-tilt 4s ease-in-out infinite; }
.carm--reviewing .review-scan { opacity: 1; }
.carm--reviewing .scan-line { animation: review-scan-move 3s ease-in-out infinite; }
.carm--reviewing .blink-group { transform: scaleY(0.78); transform-origin: 256px 281px; }
.carm--reviewing .pupil-group { transform: translate(0, 2px); }
.carm--reviewing .mouth-smile { opacity: 0; }
.carm--reviewing .mouth-hmm { opacity: 1; }
.carm--reviewing .dimple { opacity: 0; }
.carm--reviewing .antenna-ball-glow { opacity: 1; }
.carm--reviewing .bot-panel-light { opacity: 1; animation: antenna-think-glow 2s ease-in-out infinite; }
.carm--reviewing .gills-l { animation: gill-sway-l 5s ease-in-out infinite; transform-origin: 150px 270px; }
.carm--reviewing .gills-r { animation: gill-sway-r 5s ease-in-out infinite; transform-origin: 362px 270px; }

/* --- Reviewing intense: tighter squint, faster scan --- */
.carm--reviewing-intense .review-scan { opacity: 1; }
.carm--reviewing-intense .scan-line { animation: review-scan-move 1.5s ease-in-out infinite; }
.carm--reviewing-intense .blink-group { transform: scaleY(0.68) !important; transform-origin: 256px 281px; }
.carm--reviewing-intense .focus-lines { opacity: 0.7; }
.carm--reviewing-intense .gills-l { animation: gill-sway-l 5s ease-in-out infinite; transform-origin: 150px 270px; }
.carm--reviewing-intense .gills-r { animation: gill-sway-r 5s ease-in-out infinite; transform-origin: 362px 270px; }

/* ======================== DEBUGGING ======================== */
@keyframes debug-crosshair-scan {
  0%, 100% { transform: translate(0, 0); }
  25% { transform: translate(-20px, 10px); }
  50% { transform: translate(15px, -5px); }
  75% { transform: translate(-10px, -10px); }
}
@keyframes debug-crosshair-pulse {
  0%, 100% { opacity: 0.5; r: 16; }
  50% { opacity: 0.8; r: 18; }
}
@keyframes carm-debug-lean {
  0%, 100% { transform: translateY(0) rotate(0); }
  30% { transform: translateY(-3px) rotate(-2deg); }
  60% { transform: translateY(-1px) rotate(1deg); }
}
.carm--debugging { animation: carm-debug-lean 2s ease-in-out infinite; }
.carm--debugging .debug-crosshair { opacity: 1; animation: debug-crosshair-scan 3s ease-in-out infinite; }
.carm--debugging .debug-crosshair circle:first-child { animation: debug-crosshair-pulse 2s ease-in-out infinite; }
.carm--debugging .blink-group { transform: scaleY(0.82); transform-origin: 256px 281px; }
.carm--debugging .pupil-group { animation: search-scan 2.5s ease-in-out infinite; }
.carm--debugging .mouth-smile { opacity: 0; }
.carm--debugging .mouth-frown { opacity: 1; stroke-width: 4; }
.carm--debugging .dimple { opacity: 0; }
.carm--debugging .antenna-ball-glow { opacity: 1; animation: antenna-think-glow 1s ease-in-out infinite; }
.carm--debugging .gills-l { animation: gill-perk-l 2s ease-in-out infinite; transform-origin: 150px 270px; }
.carm--debugging .gills-r { animation: gill-perk-r 2s ease-in-out infinite; transform-origin: 362px 270px; }

/* --- Debugging stumped: sweat, eye twitch --- */
@keyframes debug-eye-twitch {
  0%, 85%, 100% { transform: scaleY(1); }
  88% { transform: scaleY(0.3); }
  91% { transform: scaleY(1); }
  94% { transform: scaleY(0.4); }
}
.carm--debugging-stumped .debug-crosshair { opacity: 1; animation: debug-crosshair-scan 2s ease-in-out infinite; }
.carm--debugging-stumped .sweat-drop { opacity: 1; animation: sweat-drip 2.5s ease-in infinite; }
.carm--debugging-stumped .blink-group { animation: debug-eye-twitch 3s ease-in-out infinite; transform-origin: 256px 281px; }
.carm--debugging-stumped .mouth-smile { opacity: 0; }
.carm--debugging-stumped .mouth-frown { opacity: 1; stroke-width: 4; }
.carm--debugging-stumped .dimple { opacity: 0; }
.carm--debugging-stumped .gills-l { animation: gill-droop-l 0.8s ease-out forwards; transform-origin: 150px 270px; }
.carm--debugging-stumped .gills-r { animation: gill-droop-r 0.8s ease-out forwards; transform-origin: 362px 270px; }

/* ======================== TESTING ======================== */
@keyframes test-check-pop {
  0% { transform: scale(0) rotate(-10deg); opacity: 0; }
  40% { transform: scale(1.2) rotate(5deg); opacity: 1; }
  60% { transform: scale(0.9) rotate(-2deg); opacity: 0.8; }
  80% { transform: scale(1) rotate(0); opacity: 0.7; }
  100% { transform: scale(0.8); opacity: 0; }
}
@keyframes carm-test-glance {
  0%, 100% { transform: translateY(0); }
  25% { transform: translateY(-3px); }
  50% { transform: translateY(0); }
  75% { transform: translateY(-2px); }
}
@keyframes test-eye-lr {
  0%, 100% { transform: translateX(0); }
  25% { transform: translateX(-6px); }
  50% { transform: translateX(0); }
  75% { transform: translateX(6px); }
}
.carm--testing { animation: carm-test-glance 1.5s ease-in-out infinite; }
.carm--testing .test-checks { opacity: 1; }
.carm--testing .tc1 { animation: test-check-pop 1.8s ease-out 0s infinite; transform-origin: 136px 145px; }
.carm--testing .tc2 { animation: test-check-pop 1.8s ease-out 0.6s infinite; transform-origin: 116px 165px; }
.carm--testing .tc3 { animation: test-check-pop 1.8s ease-out 1.2s infinite; transform-origin: 128px 125px; }
.carm--testing .pupil-group { animation: test-eye-lr 2s ease-in-out infinite; }
.carm--testing .blink-group { animation: blink-fast 2s ease-in-out infinite; transform-origin: 256px 281px; }
.carm--testing .antenna-ball-glow { opacity: 1; animation: antenna-think-glow 0.8s ease-in-out infinite; }
.carm--testing .bot-panel-light { opacity: 1; animation: antenna-think-glow 0.8s ease-in-out infinite; }
.carm--testing .gills-l { animation: gill-perk-l 1.8s ease-in-out infinite; transform-origin: 150px 270px; }
.carm--testing .gills-r { animation: gill-perk-r 1.8s ease-in-out infinite; transform-origin: 362px 270px; }

/* --- Testing long: tired, slower --- */
.carm--testing-long .test-checks { opacity: 1; }
.carm--testing-long .tc1 { animation: test-check-pop 3s ease-out 0s infinite; transform-origin: 136px 145px; }
.carm--testing-long .tc2 { animation: test-check-pop 3s ease-out 1s infinite; transform-origin: 116px 165px; }
.carm--testing-long .tc3 { animation: test-check-pop 3s ease-out 2s infinite; transform-origin: 128px 125px; }
.carm--testing-long .blink-group { animation: blink-fast 1.5s ease-in-out infinite; transform-origin: 256px 281px; }
.carm--testing-long .gills-l { animation: gill-droop-l 1s ease-out forwards; transform-origin: 150px 270px; }
.carm--testing-long .gills-r { animation: gill-droop-r 1s ease-out forwards; transform-origin: 362px 270px; }
.carm--testing-long .mouth-smile { opacity: 0; }
.carm--testing-long .mouth-hmm { opacity: 1; }

/* ======================== DEPLOYING ======================== */
@keyframes deploy-progress {
  0% { transform: scaleX(0); }
  80%, 100% { transform: scaleX(1); }
}
@keyframes deploy-progress-pulse {
  0%, 100% { opacity: 0.6; }
  50% { opacity: 0.9; }
}
@keyframes carm-deploy-lean {
  0%, 100% { transform: translateY(0) scale(1); }
  50% { transform: translateY(-3px) scale(1.01); }
}
.carm--deploying { animation: carm-deploy-lean 2s ease-in-out infinite; }
.carm--deploying .deploy-bar { opacity: 1; }
.carm--deploying .deploy-fill { transform-origin: 200px 101px; animation: deploy-progress 3s ease-in-out infinite, deploy-progress-pulse 1s ease-in-out infinite; }
.carm--deploying .blink-group { transform: scaleY(0.85); transform-origin: 256px 281px; }
.carm--deploying .mouth-smile { stroke-width: 8; }
.carm--deploying .antenna-ball-glow { opacity: 1; animation: antenna-think-glow 1s ease-in-out infinite; }
.carm--deploying .bot-panel-light { opacity: 1; animation: antenna-think-glow 0.6s ease-in-out infinite; }
.carm--deploying .gills-l { animation: gill-perk-l 2s ease-in-out infinite; transform-origin: 150px 270px; }
.carm--deploying .gills-r { animation: gill-perk-r 2s ease-in-out infinite; transform-origin: 362px 270px; }

/* ======================== AWAITING INPUT ======================== */
@keyframes await-hand-wave {
  0%, 100% { transform: rotate(0deg); }
  25% { transform: rotate(-8deg); }
  75% { transform: rotate(8deg); }
}
@keyframes carm-await-idle {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-3px); }
}
@keyframes await-blink-slow {
  0%, 80%, 100% { transform: scaleY(1); }
  85% { transform: scaleY(0.05); }
}
.carm--awaiting-input { animation: carm-await-idle 4s ease-in-out infinite; }
.carm--awaiting-input .await-hand { opacity: 1; animation: await-hand-wave 2s ease-in-out infinite; transform-origin: 135px 290px; }
.carm--awaiting-input .blink-group { animation: await-blink-slow 5s ease-in-out infinite; transform-origin: 256px 281px; }
.carm--awaiting-input .mouth-smile { opacity: 0; }
.carm--awaiting-input .mouth-hmm { opacity: 1; }
.carm--awaiting-input .antenna-ball-glow { animation: antenna-pulse 3s ease-in-out infinite; }
.carm--awaiting-input .gills-l { animation: gill-sway-l 4s ease-in-out infinite; transform-origin: 150px 270px; }
.carm--awaiting-input .gills-r { animation: gill-sway-r 4s ease-in-out infinite; transform-origin: 362px 270px; }

/* --- Awaiting input timeout: sinking, distracted --- */
@keyframes await-eye-wander {
  0%, 100% { transform: translate(0, 0); }
  30% { transform: translate(-4px, 2px); }
  60% { transform: translate(3px, -1px); }
}
@keyframes carm-await-sink {
  0%, 100% { transform: translateY(0) scale(1); }
  50% { transform: translateY(4px) scale(0.98); }
}
.carm--awaiting-input-timeout { animation: carm-await-sink 4s ease-in-out infinite; }
.carm--awaiting-input-timeout .await-hand { opacity: 1; animation: none; transform: rotate(-5deg); transform-origin: 135px 290px; }
.carm--awaiting-input-timeout .pupil-group { animation: await-eye-wander 4s ease-in-out infinite; }
.carm--awaiting-input-timeout .blink-group { animation: await-blink-slow 3s ease-in-out infinite; transform-origin: 256px 281px; }
.carm--awaiting-input-timeout .mouth-smile { opacity: 0; }
.carm--awaiting-input-timeout .mouth-hmm { opacity: 1; }
.carm--awaiting-input-timeout .gills-l { animation: gill-droop-l 1s ease-out forwards; transform-origin: 150px 270px; }
.carm--awaiting-input-timeout .gills-r { animation: gill-droop-r 1s ease-out forwards; transform-origin: 362px 270px; }

/* ======================== RECONNECTING ======================== */
@keyframes reconnect-blink {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.3; }
}
@keyframes signal-dot-pulse {
  0% { opacity: 0.15; r: 3; }
  50% { opacity: 0.9; r: 5; }
  100% { opacity: 0.15; r: 3; }
}
@keyframes carm-reconnect-flicker {
  0%, 100% { opacity: 1; }
  48% { opacity: 1; }
  50% { opacity: 0.4; }
  52% { opacity: 1; }
}
.carm--reconnecting { animation: carm-reconnect-flicker 2s ease-in-out infinite; }
.carm--reconnecting .reconnect-dots { opacity: 1; }
.carm--reconnecting .sd1 { animation: signal-dot-pulse 1.2s ease-in-out 0s infinite; }
.carm--reconnecting .sd2 { animation: signal-dot-pulse 1.2s ease-in-out 0.3s infinite; }
.carm--reconnecting .sd3 { animation: signal-dot-pulse 1.2s ease-in-out 0.6s infinite; }
.carm--reconnecting .antenna-ball-glow { animation: reconnect-blink 1s ease-in-out infinite; }
.carm--reconnecting .bot-panel-light { animation: reconnect-blink 1s ease-in-out infinite; }
.carm--reconnecting .blink-group { animation: blink-fast 2s ease-in-out infinite; transform-origin: 256px 281px; }
.carm--reconnecting .gills-l { animation: gill-sway-l 3s ease-in-out infinite; transform-origin: 150px 270px; }
.carm--reconnecting .gills-r { animation: gill-sway-r 3s ease-in-out infinite; transform-origin: 362px 270px; }
.carm--reconnecting .mouth-smile { opacity: 0; }
.carm--reconnecting .mouth-hmm { opacity: 1; }

/* --- Reconnecting flaky: repeated flicker --- */
@keyframes carm-flaky-flicker {
  0%, 100% { opacity: 1; }
  15% { opacity: 0.3; }
  17% { opacity: 1; }
  30% { opacity: 0.2; }
  32% { opacity: 0.8; }
  34% { opacity: 0.3; }
  36% { opacity: 1; }
  70% { opacity: 1; }
  72% { opacity: 0.4; }
  74% { opacity: 1; }
}
.carm--reconnecting-flaky { animation: carm-flaky-flicker 2s ease-in-out infinite; }
.carm--reconnecting-flaky .reconnect-dots { opacity: 1; }
.carm--reconnecting-flaky .sd1 { animation: signal-dot-pulse 0.6s ease-in-out 0s infinite; }
.carm--reconnecting-flaky .sd2 { animation: signal-dot-pulse 0.6s ease-in-out 0.15s infinite; }
.carm--reconnecting-flaky .sd3 { animation: signal-dot-pulse 0.6s ease-in-out 0.3s infinite; }
.carm--reconnecting-flaky .antenna-ball-glow { animation: reconnect-blink 0.5s ease-in-out infinite; }
.carm--reconnecting-flaky .mouth-smile { opacity: 0; }
.carm--reconnecting-flaky .mouth-hmm { opacity: 1; }
.carm--reconnecting-flaky .gills-l { animation: gill-sway-l 2s ease-in-out infinite; transform-origin: 150px 270px; }
.carm--reconnecting-flaky .gills-r { animation: gill-sway-r 2s ease-in-out infinite; transform-origin: 362px 270px; }

/* ======================== CONCERNED ======================== */
@keyframes carm-concerned-sway {
  0%, 100% { transform: translateY(0) rotate(0); }
  50% { transform: translateY(1px) rotate(-1.5deg); }
}
.carm--concerned { animation: carm-concerned-sway 3s ease-in-out infinite; }
.carm--concerned .concerned-brows { opacity: 1; }
.carm--concerned .mouth-smile { opacity: 0; }
.carm--concerned .mouth-sad { opacity: 1; }
.carm--concerned .dimple { opacity: 0; }
.carm--concerned .cheek-blush { opacity: 0.35; }
.carm--concerned .pupil-group { transform: translate(0, 2px); }
.carm--concerned .blink-group { animation: carm-blink 3s ease-in-out infinite; transform-origin: 256px 281px; }
.carm--concerned .gills-l { animation: gill-sway-l 4s ease-in-out infinite; transform-origin: 150px 270px; }
.carm--concerned .gills-r { animation: gill-sway-r 4s ease-in-out infinite; transform-origin: 362px 270px; }
.carm--concerned .antenna-ball-glow { animation: antenna-pulse 4s ease-in-out infinite; }

/* Carm wears his chef hat by default; hide it when a headwear accessory is worn so hats swap cleanly. */
.carm--acc-cowboy-hat .hat,
.carm--acc-party-hat .hat,
.carm--acc-crown .hat,
.carm--acc-chef-hat .hat,
.carm--acc-hard-hat .hat,
.carm--acc-tophat .hat,
.carm--acc-halo .hat,
.carm--acc-horns .hat { opacity: 0; }

/* Buck teeth belong to Carm's closed/default mouth — hide them when the mouth opens wide
   (talking, yawning, laughing, wow, surprised) so they don't hang below the open mouth. */
.carm--responding .teeth,
.carm--listening-wow .teeth,
.carm--surprised .teeth,
.carm--laughing .teeth,
.carm--thinking-tired .teeth { opacity: 0; transition: opacity 0.2s; }

/* ================= Stringent per-state review refinements (round 1) ================= */
/* Sleep: eyes fully closed, serene */
.carm--thinking-asleep .blink-group { transform: scaleY(0.07) !important; }
.carm--idle-asleep .blink-group { transform: scaleY(0.07) !important; }
/* Clearer happy / positive squints */
.carm--happy .blink-group { transform: scaleY(0.55); transform-origin: 256px 281px; }
.carm--happy .pupil-group { transform: translateY(-2px); }
.carm--success .blink-group { transform: scaleY(0.5); transform-origin: 256px 281px; }
.carm--focused .blink-group { transform: scaleY(0.46); transform-origin: 256px 281px; }
.carm--debugging .blink-group { transform: scaleY(0.55); transform-origin: 256px 281px; }
.carm--reviewing-intense .blink-group { transform: scaleY(0.42) !important; transform-origin: 256px 281px; }
/* Excited: surface the exclaim + sparkle cues (were forced hidden) */
.carm--excited .exclaim-marks { opacity: 1; }
.carm--excited .sparkles { opacity: 1; }
/* Shy: small bashful smile + gaze further away */
.carm--shy .mouth-smile { opacity: 1; stroke-width: 4.5; }
.carm--shy .mouth-hmm { opacity: 0; }
.carm--shy .pupil-group { transform: translate(-9px, 5px); }
/* Celebrating: big grin + happy squint + blush */
.carm--celebrating .mouth-smile { opacity: 1; stroke-width: 9; }
.carm--celebrating .blink-group { transform: scaleY(0.58); transform-origin: 256px 281px; }
.carm--celebrating .cheek-blush { opacity: 0.5; }
/* Mischievous: pronounced side-glance + sly half-lid */
.carm--mischievous .pupil-group { transform: translate(9px, -1px); }
.carm--mischievous .blink-group { transform: scaleY(0.58); transform-origin: 256px 281px; }
/* Listening: attentive — forward alert eyes + subtle raised brow */
.carm--listening .pupil-group { transform: translateY(-2px); }
.carm--listening .eye-shine { r: 9; }
.carm--listening .eyebrow-raise { opacity: 0.55; }
/* Planning: clearer eyes-up (looking at the checklist) */
.carm--planning .pupil-group { transform: translate(-4px, -8px); }
/* Debugging-stumped: frustrated/concerned brows + strained squint */
.carm--debugging-stumped .concerned-brows { opacity: 1; }
.carm--debugging-stumped .blink-group { transform: scaleY(0.55); }
/* Testing-long: patient-weary heavy lids */
.carm--testing-long .blink-group { transform: scaleY(0.5) !important; animation: none !important; transform-origin: 256px 281px; }
/* Awaiting-input-timeout: bored/impatient half-lids */
.carm--awaiting-input-timeout .blink-group { transform: scaleY(0.6) !important; animation: none !important; transform-origin: 256px 281px; }
/* Idle-bored: clear bored half-lids (pupil wander kept) */
.carm--idle-bored .blink-group { transform: scaleY(0.5) !important; animation: none !important; transform-origin: 256px 281px; }

/* ================= Stringent per-state review refinements (round 2) ================= */
.carm .sleep-eyes { opacity: 0; }
/* Asleep: hide the eyeballs entirely, show serene closed lids */
.carm--thinking-asleep .blink-group { opacity: 0 !important; }
.carm--idle-asleep .blink-group { opacity: 0 !important; }
.carm--thinking-asleep .sleep-eyes { opacity: 1; }
.carm--idle-asleep .sleep-eyes { opacity: 1; }
/* Mischievous: push the sly side-glance + half-lid further */
.carm--mischievous .pupil-group { transform: translate(14px, -2px); }
.carm--mischievous .blink-group { transform: scaleY(0.5); transform-origin: 256px 281px; }

/* ================= SECOND-PASS strict refinements (distinctness + craft) ================= */
@keyframes carm-wave { 0%,100%{ transform: rotate(0deg);} 25%{ transform: rotate(-16deg);} 75%{ transform: rotate(16deg);} }
@keyframes eye-dart-fast { 0%,100%{transform:translate(-7px,0);} 25%{transform:translate(7px,-2px);} 50%{transform:translate(-5px,2px);} 75%{transform:translate(6px,0);} }
@keyframes carm-glitch { 0%,100%{transform:translate(0,0);opacity:1;} 47%{transform:translate(0,0);opacity:1;} 50%{transform:translate(-5px,2px);opacity:0.65;} 53%{transform:translate(4px,-1px);opacity:1;} 70%{transform:translate(0,0);} 73%{transform:translate(3px,1px);opacity:0.8;} 76%{transform:translate(0,0);opacity:1;} }
@keyframes carm-proud-puff { 0%,100%{ transform: translateY(0) scale(1);} 50%{ transform: translateY(-5px) scale(1.05);} }
@keyframes eye-scan-wide { 0%,100%{transform:translateX(-11px);} 50%{transform:translateX(11px);} }

/* GREETING: real wave hello */
.carm .wave-hand { opacity: 0; }
.carm--greeting .wave-hand { opacity: 1; animation: carm-wave 0.5s ease-in-out 3; transform-origin: 388px 372px; }

/* LISTENING: clearly leaning in, wide alert eyes, raised brows */
.carm--listening .pupil-group { transform: translateY(-5px); }
.carm--listening .eye-shine { r: 12; }
.carm--listening .eyebrow-raise { opacity: 1; transform: translateY(-4px); }
.carm--listening .blink-group { transform: scale(1.08); transform-origin: 256px 281px; }
/* LISTENING-LONG: patient, slower, calmer than listening (half-relaxed lids, gentle sustained sway) */
.carm--listening-long { animation: carm-listen-tilt 4.5s ease-in-out infinite !important; }
.carm--listening-long .blink-group { transform: scaleY(0.82); transform-origin: 256px 281px; animation: none !important; }
.carm--listening-long .eyebrow-raise { opacity: 0.4; }
.carm--listening-long .pupil-group { transform: translateY(1px); animation: none !important; }

/* THINKING-DEEP: heavier, stiller, furrowed intense brows */
.carm--thinking-deep { animation: carm-think-tilt 6s ease-in-out infinite !important; }
.carm--thinking-deep .concerned-brows { opacity: 1; }
.carm--thinking-deep .blink-group { transform: scaleY(0.7); transform-origin: 256px 281px; }
/* THINKING-FAST: visibly faster orbits + darting eyes */
.carm--thinking-fast .think-orbit { animation: think-orbit-spin 0.9s linear infinite !important; }
.carm--thinking-fast .think-orbit-outer { animation: think-orbit-spin 1.3s linear infinite reverse !important; }
.carm--thinking-fast .pupil-group { animation: eye-dart-fast 0.6s steps(4) infinite !important; }
/* THINKING-SWEAT: strain — furrowed brows + prominent sweat */
.carm--thinking-sweat .concerned-brows { opacity: 1; }
.carm--thinking-sweat .mouth-hmm { opacity: 0; }
.carm--thinking-sweat .mouth-frown { opacity: 1; }

/* LOADING: neutral system wait — spinner orbit, no pondering hmm */
.carm--loading .mouth-hmm { opacity: 0 !important; }
.carm--loading .mouth-smile { opacity: 1 !important; }
.carm--loading .think-orbit { animation: think-orbit-spin 1.1s linear infinite !important; }
.carm--loading .pupil-group { transform: none !important; animation: none !important; }

/* SEARCHING: obvious side-to-side scan */
.carm--searching .pupil-group { animation: eye-scan-wide 1.4s ease-in-out infinite !important; }

/* RECONNECTING-FLAKY: worried + glitchy */
.carm--reconnecting-flaky { animation: carm-glitch 2.2s ease-in-out infinite !important; }
.carm--reconnecting-flaky .concerned-brows { opacity: 1; }

/* SAD: droopy worried brows + downward gaze + slump */
.carm--sad .concerned-brows { opacity: 1; }
.carm--sad .pupil-group { transform: translateY(6px); }
.carm--sad .blink-group { transform: scaleY(0.72); transform-origin: 256px 281px; }
/* CONCERNED: milder — attentive eyes forward, slight frown, NOT droopy/slumped */
.carm--concerned .pupil-group { transform: translateY(0); }
.carm--concerned .blink-group { transform: scaleY(0.92); transform-origin: 256px 281px; }
.carm--concerned .mouth-frown { opacity: 1; stroke-width: 4; }
.carm--concerned .mouth-sad { opacity: 0; }

/* NERVOUS: uneasy mouth (distinct from thinking-sweat which has orbits) */
.carm--nervous .mouth-smile { opacity: 0; }
.carm--nervous .mouth-hmm { opacity: 1; }

/* ANGRY: harder — ensure V brows + steam prominent (steam enlarged in svg) */
.carm--angry .angry-brows { opacity: 1; }

/* FOCUSED: sharp determined — moderate squint, furrow, forward, NOT sleepy */
.carm--focused .blink-group { transform: scaleY(0.6); transform-origin: 256px 281px; }
.carm--focused .concerned-brows { opacity: 0.9; }
.carm--focused .pupil-group { transform: translateY(3px); }

/* PROUD: calm puffed posture + satisfied half-smile + sparkles */
.carm--proud { animation: carm-proud-puff 2.6s ease-in-out infinite !important; }
.carm--proud .sparkles { opacity: 1; }
.carm--proud .blink-group { transform: scaleY(0.7); transform-origin: 256px 281px; }
.carm--proud .mouth-smile { opacity: 1; stroke-width: 7; }

/* TYPING: heads-down working (distinct from focused's forward lean) */
.carm--typing .pupil-group { transform: translateY(10px) !important; }
.carm--typing .focus-lines { opacity: 1; }

/* LISTENING-WOW: wide amazed eyes + O mouth (sustained, not a startle) */
.carm--listening-wow .blink-group { transform: scale(1.24); transform-origin: 256px 281px; }
.carm--listening-wow .mouth-open { opacity: 1; }
.carm--listening-wow .mouth-smile { opacity: 0; }
.carm--listening-wow .eyebrow-raise { opacity: 1; transform: translateY(-6px); }

/* SHY: stronger bashful — bigger shrink + clear small smile + gaze away */
.carm--shy .blink-group { transform: scale(0.9); transform-origin: 256px 300px; }
.carm--shy .cheek-blush { opacity: 0.75; }
/* wink: playful bob so it isn't a static pose */
@keyframes carm-wink-bob { 0%,100%{transform:rotate(0deg) translateY(0);} 30%{transform:rotate(-3deg) translateY(-4px);} 60%{transform:rotate(2deg) translateY(0);} }
.carm--wink { animation: carm-wink-bob 1.4s ease-in-out infinite !important; }
/* thinking-asleep: keep a faint lingering thought cue to separate from idle-asleep */
.carm--thinking-asleep .think-orbit { opacity: 0.5 !important; }

/* ===== second-pass round 2: paws, signal, typing, listening-long ===== */
@keyframes type-bounce { 0%,60%,100%{ transform: translateY(0); opacity:0.5; } 30%{ transform: translateY(-9px); opacity:1; } }
.carm .type-dots { opacity: 0; }
.carm--typing .type-dots { opacity: 1; }
.carm--typing .td1 { animation: type-bounce 0.9s ease-in-out 0s infinite; }
.carm--typing .td2 { animation: type-bounce 0.9s ease-in-out 0.15s infinite; }
.carm--typing .td3 { animation: type-bounce 0.9s ease-in-out 0.3s infinite; }

@keyframes carm-listen-cock { 0%,100%{ transform: rotate(4deg); } 50%{ transform: rotate(6deg) translateY(-2px); } }
.carm--listening-long { animation: carm-listen-cock 4.5s ease-in-out infinite !important; transform-origin: 256px 410px; }
.carm--listening-long .gills-l { animation: none !important; transform: rotate(-12deg) translateY(-6px) scaleY(1.1) !important; transform-origin: 130px 236px; }
.carm--listening-long .pupil-group { transform: translate(3px,-2px) !important; }

.carm--greeting .wave-hand { opacity: 1; animation: carm-wave 0.6s ease-in-out infinite !important; transform-origin: 424px 288px; }

.carm--reconnecting-flaky .mouth-smile { opacity: 0 !important; }
.carm--reconnecting-flaky .mouth-frown { opacity: 1 !important; }
