.bot-avatar{--배지:18px;--얼굴:28px;--말함-주기:.5s;--눈동자:#0b0b0c;flex:none;line-height:0;display:inline-block;position:relative}.bot-avatar svg{display:block;overflow:visible}.bot-avatar .eye>circle{stroke:var(--눈동자)}.bot-avatar .pupil circle:first-child,.bot-avatar .lid rect:last-child{fill:var(--눈동자)}.bot-avatar .mouth{stroke:var(--눈동자)}.bot-avatar .eye:is(path,rect){fill:var(--눈동자);stroke:var(--눈동자)}.bot-avatar .body{transform-origin:50px 50px;transition:transform .3s}.bot-avatar .eye-pos{transform-box:fill-box;transform-origin:50%;transition:transform .28s cubic-bezier(.3,1.2,.4,1)}.bot-avatar .eye{transform-box:fill-box;transform-origin:50%;transition:transform var(--눈-깜빡-길이,.12s) ease-in-out}.bot-avatar.is-blinking .eye{transform:scaleY(.08)}.bot-avatar.wink-left .eye-left,.bot-avatar.wink-right .eye-right{transform:scaleY(.12)scaleX(1.25)}.bot-avatar .lid{transform-box:fill-box;transform-origin:50%;transition:transform .2s;transform:translateY(-100%)}.bot-avatar .pupil{transform-box:fill-box;transform-origin:50%;transition:transform .2s}.bot-avatar.is-drowsy{--눈-깜빡-길이:.3s}.bot-avatar.is-drowsy .lid{transition-duration:60s;transform:translateY(-44%)}.bot-avatar.is-drowsy .pupil{transition-duration:60s;transform:translateY(32%)}.bot-avatar.is-drowsy .mouth{transition:transform 60s;transform:scale(.7)}.bot-avatar .dots circle{fill:var(--os-글-연);opacity:.25}.bot-avatar .dots.work circle{fill:var(--os-포인트)}.bot-avatar .zz{fill:var(--os-글-연);opacity:0;font-family:inherit}.bot-avatar .badge{right:calc(var(--배지) * -.15);top:calc(var(--배지) * -.15);width:var(--배지);height:var(--배지);background:var(--os-승인);color:var(--os-바탕);font-size:calc(var(--배지) * .66);box-shadow:0 0 0 2px var(--os-패널);border-radius:50%;place-items:center;font-weight:800;line-height:1;display:grid;position:absolute}.bot-avatar.has-face .face-border{transform-box:fill-box;transform-origin:50%}.bot-avatar.has-face .badge-x{background:var(--os-글-연);color:var(--os-바탕)}.bot-avatar.has-face[data-state=idle] .body{animation:bot-face-breathe 4s ease-in-out infinite, bot-face-tilt var(--갸웃-주기,7.5s) ease-in-out infinite}.bot-avatar.has-face[data-state=listening] .body{scale:1.04}.bot-avatar.has-face[data-state=listening] .face-border{filter:brightness(1.4)}.bot-avatar.has-face[data-state=thinking] .face-border{stroke-dasharray:6 5;animation:3s linear infinite bot-face-ring-spin}.bot-avatar.has-face[data-state=talking] .face-border{animation:.6s ease-in-out infinite bot-face-border-pulse}.bot-avatar.has-face[data-state=talking] .body{animation:.6s ease-in-out infinite bot-face-talk-breathe}.bot-avatar.has-face[data-state=error] .body{filter:grayscale()brightness(.92)}.bot-avatar.has-face.is-drowsy .body{filter:brightness(.86);transition:filter 60s}@keyframes bot-face-breathe{0%,to{scale:1}50%{scale:1.02}}@keyframes bot-face-tilt{0%,92%,to{rotate:none}96%{rotate:3deg}}@keyframes bot-face-ring-spin{to{rotate:360deg}}@keyframes bot-face-border-pulse{0%,to{stroke-width:8px}50%{stroke-width:4px}}@keyframes bot-face-talk-breathe{0%,to{scale:1}50%{scale:1.03}}@media (prefers-reduced-motion:reduce){.bot-avatar.has-face .body,.bot-avatar.has-face .face-border{animation:none!important}}.bot-avatar[data-state=idle] .body{animation:bot-breathe var(--호흡-주기,5s) ease-in-out infinite}.bot-avatar[data-state=listening] .eye-pos{transform:translateY(6%)scale(1.22)}.bot-avatar[data-state=listening] .body{transform:rotate(-3deg)translateY(1px)}.bot-avatar[data-state=thinking] .eye-pos{transform:scale(1.08)}.bot-avatar[data-state=thinking] .pupil{animation:2.2s ease-in-out infinite bot-scan}.bot-avatar[data-state=thinking] .dots.think circle{animation:1.2s ease-in-out infinite bot-dot}.bot-avatar[data-state=thinking] .dots.think circle:nth-child(2){animation-delay:.2s}.bot-avatar[data-state=thinking] .dots.think circle:nth-child(3){animation-delay:.4s}.bot-avatar[data-state=talking] .body{animation:none}.bot-avatar[data-state=talking] .eye-pos{transform:scale(1.1)}.bot-avatar[data-state=waiting_approval] .body,.bot-avatar[data-state=waiting_approval] .eye-pos{animation:none;transform:none}.bot-avatar[data-state=waiting_approval] .badge{animation:1.3s ease-in-out infinite bot-pulse}.bot-avatar[data-state=working] .eye-pos{transform:scale(1.08)}.bot-avatar[data-state=working] .pupil{animation:3s ease-in-out infinite bot-read}.bot-avatar[data-state=working] .dots.work circle{animation:1s ease-in-out infinite bot-dot}.bot-avatar[data-state=working] .dots.work circle:nth-child(2){animation-delay:.18s}.bot-avatar[data-state=working] .dots.work circle:nth-child(3){animation-delay:.36s}.bot-avatar[data-state=sleeping] .body{animation:bot-breathe var(--호흡-주기,6s) ease-in-out infinite}.bot-avatar[data-state=sleeping] .zz-1{animation:3s ease-out infinite bot-z}.bot-avatar[data-state=sleeping] .zz-2{animation:3s ease-out 1.4s infinite bot-z}.bot-avatar[data-state=error] .body{animation:.5s ease-in-out bot-shake}@keyframes bot-scan{0%,to{transform:translate(-26%)}50%{transform:translate(8%)}}@keyframes bot-read{0%,to{transform:translate(-26%)}45%{transform:translate(8%)}55%{transform:translate(8%)}60%{transform:translate(-26%)}}@keyframes bot-talk{0%,to{transform:scale(1)}50%{transform:scale(1.03,.97)}}@keyframes bot-breathe{0%,to{transform:scale(1)}50%{transform:scale(1.025,1.015)}}@keyframes bot-shake{0%,to{transform:translate(0)}25%{transform:translate(-3px)}75%{transform:translate(3px)}}@keyframes bot-dot{0%,to{opacity:.25;transform:translateY(0)}40%{opacity:1;transform:translateY(-1px)}}@keyframes bot-pulse{0%,to{box-shadow:0 0 0 2px var(--os-패널);transform:scale(1)}50%{box-shadow:0 0 0 2px var(--os-패널), 0 0 0 6px color-mix(in srgb, var(--os-승인) 35%, transparent);transform:scale(1.12)}}@keyframes bot-z{0%{opacity:0;transform:translateY(4px)}20%{opacity:.9}to{opacity:0;transform:translate(6px,-14px)}}@media (prefers-reduced-motion:reduce){.bot-avatar .body,.bot-avatar .eye-pos,.bot-avatar .eye,.bot-avatar .lid,.bot-avatar .pupil,.bot-avatar .mouth,.bot-avatar .dots circle,.bot-avatar .zz,.bot-avatar .badge{transition:none!important;animation:none!important}.bot-avatar .lid{transform:translateY(-100%)!important}.bot-avatar .pupil{transform:none!important}.bot-avatar .dots circle{opacity:.7}.bot-avatar .zz-1{opacity:.8}}.bot-avatar .mouth{transform-box:fill-box;transform-origin:50%}.bot-avatar[data-state=talking] .mouth{animation:.28s ease-in-out infinite alternate bot-mouth}.bot-avatar[data-state=listening] .mouth{transform:scale(1.15,1.25)}@keyframes bot-mouth{0%{transform:scaleY(.55)}to{transform:scale(1.1,1.25)}}
