@keyframes avatar-spin{to{transform:rotate(1turn)}}.avatar-spin{animation:avatar-spin 1s linear infinite}@keyframes voice-coach-countdown{0%{transform:scaleX(1)}to{transform:scaleX(0)}}@media (prefers-reduced-motion:reduce){.avatar-spin{animation:none}}.avatar-stage{position:relative;width:100%;height:100%;overflow:hidden}.avatar-bg{position:absolute;inset:0;background:radial-gradient(ellipse at 50% 80%,#1a1530 0,#0a0a0f 55%,#050508 100%);overflow:hidden;z-index:0}.avatar-bg__orb{position:absolute;border-radius:50%;filter:blur(90px);opacity:.55;will-change:transform}.avatar-bg__orb--1{width:55vw;height:55vw;max-width:520px;max-height:520px;background:radial-gradient(circle,rgba(99,102,241,.85) 0,transparent 70%);top:-10%;left:-8%;animation:orb-drift-1 14s ease-in-out infinite}.avatar-bg__orb--2{width:45vw;height:45vw;max-width:420px;max-height:420px;background:radial-gradient(circle,rgba(139,92,246,.7) 0,transparent 70%);bottom:5%;right:-5%;animation:orb-drift-2 18s ease-in-out infinite}.avatar-bg__orb--3{width:35vw;height:35vw;max-width:320px;max-height:320px;background:radial-gradient(circle,rgba(59,130,246,.5) 0,transparent 70%);top:40%;left:35%;animation:orb-drift-3 11s ease-in-out infinite}.avatar-bg__grid{position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.03) 1px,transparent 0),linear-gradient(90deg,rgba(255,255,255,.03) 1px,transparent 0);background-size:48px 48px;mask-image:radial-gradient(ellipse at 50% 45%,black 20%,transparent 75%);animation:grid-pulse 8s ease-in-out infinite}@keyframes orb-drift-1{0%,to{transform:translate(0) scale(1)}50%{transform:translate(8%,12%) scale(1.08)}}@keyframes orb-drift-2{0%,to{transform:translate(0) scale(1)}50%{transform:translate(-10%,-8%) scale(1.12)}}@keyframes orb-drift-3{0%,to{transform:translate(0) scale(1);opacity:.45}50%{transform:translate(6%,-6%) scale(1.15);opacity:.65}}@keyframes grid-pulse{0%,to{opacity:.4}50%{opacity:.75}}.avatar-canvas{position:absolute!important;inset:0;z-index:1;display:block;pointer-events:auto}.avatar-loading{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:rgba(255,255,255,.7);font-size:.9rem;z-index:2;pointer-events:none}.avatar-loading.avatar-error{color:#f87171;padding:1rem;text-align:center}.floating-chat{position:absolute;inset:0;z-index:2;pointer-events:none;display:flex;flex-direction:column;justify-content:flex-end;padding:1rem 1.25rem 7.5rem}.floating-chat__scroll{display:flex;flex-direction:column;gap:.85rem;max-height:55%;overflow-y:auto;pointer-events:auto;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.15) transparent;mask-image:linear-gradient(180deg,transparent,black 12%,black)}.floating-message{display:flex;max-width:min(420px,88%)}.floating-message.assistant{align-self:flex-start}.floating-message.user{align-self:flex-end}.floating-message.interim{opacity:.75}.floating-bubble-wrap{animation:bubble-float 4.5s ease-in-out infinite}.floating-message:nth-child(odd) .floating-bubble-wrap{animation-duration:5s;animation-delay:.3s}.floating-message:nth-child(2n) .floating-bubble-wrap{animation-duration:4.2s;animation-delay:.8s}.floating-bubble{padding:.65rem .9rem;border-radius:16px;font-size:.88rem;line-height:1.45;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:0 8px 32px rgba(0,0,0,.35);word-wrap:break-word;animation:bubble-enter .55s cubic-bezier(.22,1,.36,1) both}.floating-message.assistant .floating-bubble{background:rgba(20,28,24,.9);border:1px solid rgba(52,211,153,.35);border-bottom-left-radius:4px;color:#ffffff}.floating-message.assistant .floating-label{color:#6ee7b7;opacity:1}.floating-message.user .floating-bubble{background:linear-gradient(135deg,#5a7a61,#7d9b76 52%,#9db396);color:#fff;border-bottom-right-radius:4px}.floating-label{display:block;font-size:.65rem;text-transform:uppercase;letter-spacing:.06em;opacity:.65;margin-bottom:.25rem}.floating-message.user .floating-label{opacity:.85}.floating-bubble.loading{display:flex;align-items:center;padding:.55rem .85rem}.floating-bubble p{margin:0;color:inherit}@keyframes bubble-enter{0%{opacity:0;transform:translateY(18px) scale(.94)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes bubble-float{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@media (max-width:900px){.floating-chat{padding-bottom:8rem}.floating-message{max-width:92%}}