.mascot-face{display:block;width:100%;height:100%;pointer-events:none}
.mascot-art{display:block;width:100%;height:100%;overflow:visible;fill:none;stroke:none}
.mascot-body{transform-box:view-box;transform-origin:60px 104px}
.mascot-eyes{transform-origin:60px 53px;animation:mascot-blink 7s infinite}
.mascot-think-mouth{display:none}
.mascot-arm{transform-box:view-box;transform-origin:24px 68px;transform:rotate(-105deg);transition:transform .55s ease}
.mascot-arm-left{animation:mascot-arm-rest 6s ease-in-out infinite}
.mascot-arm-right{animation:mascot-arm-rest 7s ease-in-out -2s infinite}
[data-mood=listening] .mascot-arm-right{animation:none;transform:rotate(-35deg)}
[data-mood=thinking] .mascot-arm-right{animation:none;transform:rotate(-55deg)}
[data-mood=curious] .mascot-arm-left{animation:mascot-explain 2.8s ease-in-out}
[data-mood=warm] .mascot-arm-right,[data-mood=pleased] .mascot-arm-right{animation:mascot-wave 2s ease-in-out}
[data-mood=thinking] .mascot-body{transform:rotate(-7deg)}
[data-mood=thinking] .mascot-eyes{transform:translate(3px,-2px);animation:none}
[data-mood=thinking] .mascot-smile{display:none}
[data-mood=thinking] .mascot-think-mouth{display:block}
[data-mood=listening] .mascot-body{transform:rotate(5deg)}
[data-mood=listening] .mascot-ring{opacity:.65;stroke-width:calc(3px + var(--voice-level,0)*5px);transform:scale(calc(1 + var(--voice-level,0)*.07));transform-origin:60px 57px}
[data-mood=happy] .mascot-body{animation:mascot-nod .7s ease 2}
.mascot-wave .mascot-arm-right{animation:mascot-wave 2s ease-in-out}
.mascot-wave .mascot-body,.mascot-dock.is-entering .mascot-body{animation:mascot-arrive .5s ease-out}
#smChatLauncher.mascot-launcher{width:80px!important;min-width:80px!important;height:80px!important;padding:0!important;border:0!important;border-radius:50%;background:transparent!important;box-shadow:none!important;animation:none!important;transform:none!important;filter:none}
#smChatLauncher.mascot-launcher::before{display:none!important}
#smChatLauncher.mascot-launcher .mascot-art{width:100%!important;height:100%!important;fill:none;stroke:none;stroke-width:0;animation:none!important}
#smChatLauncher.mascot-launcher:focus-visible{outline:2px solid #9a783f;outline-offset:3px}
.assistant-greeting.mascot-greeting{z-index:2147483401;width:min(260px,calc(100vw - 120px));padding:15px 33px 15px 16px;border:1px solid #d2bb90;border-radius:19px 19px 5px 19px;background:#fffaf0;box-shadow:0 8px 28px #20342d1c;animation:mascot-bubble .35s ease-out}
.mascot-greeting strong{font-size:11px;color:#68756c;font-weight:600;margin-bottom:5px}
.mascot-greeting .assistant-greeting-open>span{font-size:15px;font-weight:600;line-height:1.45}
.mascot-greeting .assistant-greeting-close{background:transparent;right:3px;top:3px;min-width:30px;min-height:30px;color:#68756c}
.mascot-dock{display:flex;align-items:center;gap:10px;min-height:84px;margin:0 0 6px;padding:0 2px;color:#20342d;font:13px/1.35 Arial,sans-serif;flex-shrink:0}
.mascot-dock[hidden],.mascot-dock [hidden]{display:none!important}
.mascot-dock #chatDictation{position:static;height:auto;display:flex;gap:5px;flex:none}
.mascot-dock #chatDictationButton{order:2;width:80px;height:80px;min-width:80px;border:0;border-radius:50%;padding:0;background:transparent;color:#315847;isolation:isolate;transition:width .2s,height .2s;opacity:1}
.mascot-dock #chatDictationButton:disabled{cursor:wait}
.mascot-dock .mascot-mic-badge{position:absolute;bottom:2px;right:0;width:27px;height:27px;border-radius:50%;background:#315847;color:white;display:grid;place-items:center;border:2px solid #fff;box-shadow:0 2px 6px #20342d20}
.mascot-dock .speech-mic-icon{width:16px;height:16px}
.mascot-dock #chatDictationButton[aria-pressed=true] .mascot-mic-badge{background:#fffaf0;color:#315847;border-color:#315847}
.mascot-dock .speech-stop-icon{width:10px;height:10px}
.mascot-dock #chatDictationTimer{order:1;font-size:13px;font-weight:700}
.mascot-dock #chatDictationCancel{order:0;width:28px;min-width:28px;height:32px}
.mascot-dock-copy{flex:1;min-width:0}
.mascot-dock-title{display:block;font-size:13px;font-weight:700}
.mascot-dock-state{display:block;margin-top:3px;font-size:11px;color:#6c786f}
.mascot-dock-state:empty{display:none}
.mascot-dock .mascot-fold{flex:none;width:30px;height:32px;padding:0;border:1px solid #dce3dc;border-radius:10px;background:#f5f6f1;color:#65796b;font:20px Arial;cursor:pointer}
.mascot-fold:focus-visible{outline:2px solid #9a783f;outline-offset:2px}
.mascot-dock.is-compact{min-height:52px}
.mascot-dock.is-compact #chatDictationButton{width:48px;height:48px;min-width:48px}
.mascot-dock.is-compact .mascot-mic-badge{width:21px;height:21px}
.mascot-dock.is-compact .speech-mic-icon{width:12px;height:12px}
.mascot-dock.is-human:not([data-mood=listening]):not([data-mood=processing]) .mascot-face{filter:saturate(.65)}
body.has-mascot-dictation .speech-input-shell #messageInput,body.has-mascot-dictation .speech-input-shell.speech-active #messageInput{padding-right:12px!important}
.mascot-dock #chatDictationButton::after{left:auto;right:0}
@media(max-width:370px){.mascot-dock{gap:6px}.mascot-dock-state{font-size:10px}.mascot-dock[data-mood=listening] .mascot-dock-state{max-width:105px}}
@media(max-height:540px){.mascot-dock{min-height:46px;margin-bottom:2px}.mascot-dock #chatDictationButton{order:2;width:46px;height:46px;min-width:46px}.mascot-dock-state{display:none}.mascot-dock .mascot-mic-badge{width:22px;height:22px}.mascot-dock .speech-mic-icon{width:13px;height:13px}}
@keyframes mascot-blink{0%,42%,46%,100%{transform:scaleY(1)}44%{transform:scaleY(.12)}}
@keyframes mascot-arm-rest{0%,100%{transform:rotate(-105deg)}50%{transform:rotate(-98deg)}}
@keyframes mascot-wave{0%,100%{transform:rotate(-105deg)}25%,55%{transform:rotate(-12deg)}40%,70%{transform:rotate(8deg)}}
@keyframes mascot-explain{0%,100%{transform:rotate(-105deg)}30%,60%{transform:rotate(-35deg)}45%,75%{transform:rotate(-62deg)}}
@keyframes mascot-nod{0%,100%{transform:rotate(0)}50%{transform:rotate(7deg) translateY(2px)}}
@keyframes mascot-arrive{from{transform:translateY(10px) scale(.92);opacity:0}to{transform:none;opacity:1}}
@keyframes mascot-bubble{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.mascot-art *,.mascot-dock.is-entering .mascot-body,.mascot-wave .mascot-body,.assistant-greeting.mascot-greeting{animation:none!important;transition:none!important}}

.mascot-greeting.is-left{border-radius:19px 19px 19px 5px}

.mascot-concern-mouth{display:none}
[data-mood=idle] .mascot-body,.mascot-launcher .mascot-body{animation:mascot-breathe 5.4s ease-in-out infinite}
.mascot-body,.mascot-brows,.mascot-eyes{transition:transform .45s ease}
[data-mood=listening] .mascot-body{animation:mascot-listen 3.6s ease-in-out infinite}
[data-mood=curious] .mascot-body{transform:rotate(-6deg)}
[data-mood=curious] .mascot-brows{transform:translateY(-3px)}
[data-mood=concerned] .mascot-smile{display:none}
[data-mood=concerned] .mascot-concern-mouth{display:block}
[data-mood=concerned] .mascot-brows{transform:translateY(2px)}
[data-mood=concerned] .mascot-body{transform:rotate(3deg)}
[data-mood=warm] .mascot-smile{stroke-width:3.5px}
[data-mood=pleased] .mascot-body{animation:mascot-nod 1s ease-in-out 2}
.mascot-dock-copy{text-align:left}
@keyframes mascot-breathe{0%,100%{transform:scaleY(1)}50%{transform:scaleY(.986)}}
@keyframes mascot-listen{0%,100%{transform:rotate(4deg)}50%{transform:rotate(0deg) translateY(-1px)}}
@media(prefers-reduced-motion:reduce){.mascot-face,.mascot-art *{animation:none!important;transition:none!important}}

/* Choreography moves the character, never the microphone hit target. */
.mascot-motion{transform-box:view-box;transform-origin:60px 100px}
.mascot-shadow{transform-box:view-box;transform-origin:60px 110px}
.mascot-leg-left{transform-box:view-box;transform-origin:45px 94px}
.mascot-leg-right{transform-box:view-box;transform-origin:75px 94px}
.mascot-yawn-mouth,.mascot-cover-hand,.mascot-point-hand{display:none}
[data-action] .mascot-face{animation:none}
[data-action] .mascot-body{animation:none}
[data-action=wave] .mascot-arm-right{animation:mascot-wave 2.1s ease-in-out}
[data-action=nod] .mascot-motion{animation:mascot-hello-nod 1.3s ease-in-out}
[data-action=explain] .mascot-arm-left{animation:mascot-explain 2.6s ease-in-out}
[data-action=explain] .mascot-arm-right{animation:mascot-explain 2.2s ease-in-out .3s}
[data-action=comfort] .mascot-motion{animation:mascot-hello-nod 2.4s ease-in-out}
[data-action=comfort] .mascot-arm-right{animation:mascot-explain 2.4s ease-in-out}
[data-action=point] .mascot-arm-left{visibility:hidden}
[data-action=point] .mascot-point-hand{display:block;animation:mascot-point 2.5s ease-in-out}
[data-action=point] .mascot-eyes{animation:none;transform:translateX(-3px)}
[data-action=point] .mascot-mic-badge{animation:mascot-button-hint 1.1s ease-in-out 2}
[data-action=hop] .mascot-motion{animation:mascot-hop 1.8s ease-in-out}
[data-action=hop] .mascot-shadow{animation:mascot-hop-shadow 1.8s ease-in-out}
[data-action=hop] .mascot-arm-left,[data-action=hop] .mascot-arm-right{animation:mascot-hop-arms 1.8s ease-in-out}
[data-action=turn] .mascot-motion{animation:mascot-turn 2.3s ease-in-out}
[data-action=crouch] .mascot-motion{animation:mascot-crouch 2.7s ease-in-out}
[data-action=crouch] .mascot-leg-left{animation:mascot-tuck-left 2.7s ease-in-out}
[data-action=crouch] .mascot-leg-right{animation:mascot-tuck-right 2.7s ease-in-out}
[data-action=jog] .mascot-motion{animation:mascot-jog .4s ease-in-out 6}
[data-action=jog] .mascot-leg-left{animation:mascot-step-left .4s ease-in-out 6}
[data-action=jog] .mascot-leg-right{animation:mascot-step-right .4s ease-in-out 6}
[data-action=jog] .mascot-arm-left{animation:mascot-jog-arm-left .4s ease-in-out 6}
[data-action=jog] .mascot-arm-right{animation:mascot-jog-arm-right .4s ease-in-out 6}
[data-action=stretch] .mascot-motion{animation:mascot-stretch 3.2s ease-in-out}
[data-action=stretch] .mascot-arm-left,[data-action=stretch] .mascot-arm-right{animation:mascot-stretch-arm 3.2s ease-in-out}
[data-action=look] .mascot-eyes{animation:mascot-look 2.8s ease-in-out}
[data-action=look] .mascot-motion{animation:mascot-sway 2.8s ease-in-out}
[data-action=yawn] .mascot-smile,[data-action=yawn] .mascot-arm-right{visibility:hidden}
[data-action=yawn] .mascot-yawn-mouth,[data-action=yawn] .mascot-cover-hand{display:block;transform-origin:60px 73px;animation:mascot-yawn 4.2s ease-in-out}
[data-action=yawn] .mascot-eyes{animation:mascot-sleepy-eyes 4.2s ease-in-out}
[data-action=yawn] .mascot-motion{animation:mascot-sleepy-body 4.2s ease-in-out}
[data-mood=thinking] .mascot-leg-left{animation:mascot-foot-tap 2.4s ease-in-out infinite}
.mascot-paused .mascot-face,.mascot-paused .mascot-art *{animation-play-state:paused!important}
.mascot-dock.is-guiding .mascot-dock-copy{background:#fff8e9;border:1px solid #dbc69e;border-radius:14px;padding:9px 10px}
.mascot-dock.is-guiding .mascot-dock-title{color:#315847}
.mascot-dock-title{font-size:14px}
.mascot-dock-state{font-size:12px;line-height:1.4}
.mascot-greeting .mascot-greeting-hint{display:block;font-size:12px;line-height:1.45;color:#315847;margin-top:9px;font-weight:600}
.mascot-type{display:grid!important}
.mascot-type-ghost,.mascot-type-visual{grid-area:1/1;min-width:0}
.mascot-type-ghost{visibility:hidden}
.mascot-sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
@keyframes mascot-hello-nod{0%,100%{transform:none}45%{transform:rotate(5deg) translateY(2px)}}
@keyframes mascot-point{0%,100%{transform:translate(0,0)}30%,65%{transform:translate(-3px,-2px)}}
@keyframes mascot-button-hint{0%,100%{box-shadow:0 0 0 0 #b3945840}50%{box-shadow:0 0 0 7px #b3945820}}
@keyframes mascot-hop{0%,100%{transform:none}20%{transform:translateY(3px) scale(1.04,.94)}45%{transform:translateY(-14px) rotate(-5deg)}65%{transform:translateY(2px) scale(1.04,.95)}82%{transform:translateY(-3px)}}
@keyframes mascot-hop-shadow{0%,100%{transform:scaleX(1);opacity:.12}45%{transform:scaleX(.62);opacity:.06}}
@keyframes mascot-hop-arms{0%,100%{transform:rotate(-105deg)}40%,55%{transform:rotate(-45deg)}}
@keyframes mascot-turn{0%,100%{transform:none}20%{transform:scaleX(.7) rotate(-5deg)}40%{transform:scaleX(-.1) rotate(2deg)}60%{transform:scaleX(-1) rotate(-3deg)}80%{transform:scaleX(.1) rotate(2deg)}}
@keyframes mascot-crouch{0%,100%{transform:none}30%,65%{transform:translateY(8px) scale(1.04,.91)}82%{transform:translateY(-2px)}}
@keyframes mascot-tuck-left{0%,100%{transform:none}30%,65%{transform:rotate(-50deg)}}
@keyframes mascot-tuck-right{0%,100%{transform:none}30%,65%{transform:rotate(50deg)}}
@keyframes mascot-jog{0%,100%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-4px) rotate(2deg)}}
@keyframes mascot-step-left{0%,100%{transform:rotate(-24deg)}50%{transform:rotate(24deg)}}
@keyframes mascot-step-right{0%,100%{transform:rotate(24deg)}50%{transform:rotate(-24deg)}}
@keyframes mascot-jog-arm-left{0%,100%{transform:rotate(-60deg)}50%{transform:rotate(-115deg)}}
@keyframes mascot-jog-arm-right{0%,100%{transform:rotate(-115deg)}50%{transform:rotate(-60deg)}}
@keyframes mascot-stretch{0%,100%{transform:none}35%,65%{transform:rotate(7deg) scaleY(1.025)}}
@keyframes mascot-stretch-arm{0%,100%{transform:rotate(-105deg)}35%,65%{transform:rotate(20deg)}}
@keyframes mascot-look{0%,100%{transform:none}25%,40%{transform:translateX(-4px)}60%,75%{transform:translateX(4px)}}
@keyframes mascot-sway{0%,100%{transform:none}30%{transform:rotate(-3deg)}70%{transform:rotate(3deg)}}
@keyframes mascot-yawn{0%,100%{opacity:0;transform:scale(.6)}25%,75%{opacity:1;transform:scale(1)}}
@keyframes mascot-sleepy-eyes{0%,100%{transform:scaleY(1)}30%,70%{transform:scaleY(.18)}}
@keyframes mascot-sleepy-body{0%,100%{transform:none}35%,70%{transform:translateY(3px) rotate(-3deg)}}
@keyframes mascot-foot-tap{0%,65%,100%{transform:none}75%,90%{transform:rotate(-13deg)}}
@media(max-width:370px){.mascot-dock.is-guiding .mascot-dock-copy{padding:7px}.mascot-dock-title{font-size:12px}.mascot-dock-state{font-size:11px}}
@media(prefers-reduced-motion:reduce){.mascot-face,.mascot-art *,.mascot-mic-badge{animation:none!important;transition:none!important}}
