/* Spacious conversation drawer and a small, living desk companion. */
.assistant-panel{width:min(490px,calc(100vw - 32px));height:min(790px,calc(var(--assistant-viewport,100dvh) - 104px));max-height:none;bottom:68px;background:color-mix(in srgb,var(--paper) 90%,transparent);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-radius:26px;box-shadow:0 24px 95px #182b4930;transform-origin:bottom right}.assistant-header{padding:16px 20px;align-items:center;background:transparent;gap:10px}.assistant-header>div{flex:1}.assistant-header strong{font-size:16px}.assistant-header p{font-size:11px}.assistant-close{border-radius:50%;background:var(--panel)}.assistant-character{height:156px;flex-shrink:0;display:flex;align-items:center;justify-content:center;gap:4px;background:linear-gradient(110deg,color-mix(in srgb,var(--blue) 60%,transparent),transparent);overflow:hidden;transition:height .3s ease}.desk-android{height:152px;width:237px;flex-shrink:0;color:var(--ink);overflow:visible}.assistant-character-caption{font-size:12px;color:var(--muted);max-width:160px;line-height:1.5}.assistant-character-caption small{display:block;font-size:10px;margin-top:7px}.assistant-character-dot{display:inline-block;height:5px;width:5px;margin-right:6px;border-radius:50%;background:#86a47b;box-shadow:0 0 0 3px #86a47b16}.assistant-messages{max-height:none;min-height:60px;padding:18px 20px;scrollbar-width:thin;scrollbar-color:var(--line) transparent;scroll-behavior:smooth}.assistant-message{font-size:14px;line-height:1.75;max-width:94%;border:0;padding:13px 16px;border-radius:18px 18px 18px 5px}.assistant-message.user{border-radius:18px 18px 5px 18px}.assistant-message.loading{display:flex;align-items:center;gap:8px;align-self:flex-start;background:var(--panel);font-size:11px;min-height:42px}.assistant-loading-dots{display:inline-flex;gap:3px}.assistant-loading-dots i{width:4px;height:4px;border-radius:50%;background:var(--accent);animation:assistant-dot .85s ease-in-out infinite}.assistant-loading-dots i:nth-child(2){animation-delay:.12s}.assistant-loading-dots i:nth-child(3){animation-delay:.24s}.assistant-suggestions{padding:0 20px 16px;gap:6px}.assistant-suggestions button{font-size:12px;border-radius:14px;padding:8px 10px;min-height:38px}.assistant-form{padding:14px 20px 18px;background:var(--paper);grid-template-columns:1fr 45px}.assistant-form textarea{min-height:48px;max-height:120px;border-radius:15px;background:var(--bg);padding:12px;line-height:1.5;font-size:16px;overflow-y:auto}.assistant-form button{font-size:0;border-radius:50%;width:44px;height:44px;padding:0}.assistant-form button:after{content:'↑';font-size:23px;line-height:1}.assistant-direct{font-size:11px;text-align:center;background:var(--paper)}.assistant-contact{background:transparent;color:var(--accent);border:1px solid var(--line);border-radius:12px;padding:8px;font-size:10px;min-height:36px;max-width:95px;line-height:1.4}.assistant-contact:hover{border-color:var(--accent)}.assistant-widget.is-chatting .assistant-header p,.assistant-widget.is-chatting .assistant-suggestions,.assistant-widget.is-chatting .assistant-direct,.assistant-widget.is-chatting .assistant-intro{display:none}.assistant-widget.is-chatting .assistant-character{height:105px}.assistant-widget.is-chatting .desk-android{width:175px;height:113px}.assistant-widget.is-chatting .assistant-character-caption small{display:none}.assistant-widget.is-chatting .assistant-header{padding-block:12px}.assistant-panel:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.assistant-form button:focus-visible,.assistant-contact:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.bot-head{transform-origin:145px 80px}.bot-body{transform-origin:145px 125px}.bot-arm-left{transform-origin:116px 91px}.bot-arm-right{transform-origin:174px 91px}.bot-eyes{transform-origin:145px 58px;animation:bot-blink 5.4s infinite}.bot-mouth{transform-origin:146px 67px}.bot-cactus{transform-origin:35px 145px}.bot-steam{animation:bot-steam 3s ease-in-out infinite}.assistant-character[data-state=reading] .bot-head{animation:bot-read .65s ease-in-out infinite}.assistant-character[data-state=reading] .bot-eyes{animation:bot-read-eyes .65s ease-in-out infinite}.assistant-character[data-state=typing] .bot-head{animation:var(--head-gesture,bot-focus) 2.3s ease-in-out infinite}.assistant-character[data-state=typing] .bot-arm-left{animation:var(--left-gesture,bot-tap-left) var(--tap-speed,.35s) ease-in-out infinite}.assistant-character[data-state=typing] .bot-arm-right{animation:var(--right-gesture,bot-tap-right) var(--tap-speed,.35s) ease-in-out infinite;animation-delay:-.15s}.assistant-character[data-state=typing] .bot-screen-code{animation:bot-screen .6s infinite}.assistant-character[data-state=listening] .bot-head{animation:bot-listen 4.2s ease-in-out infinite}.assistant-character[data-state=speaking] .bot-head{animation:bot-happy 2s ease-in-out infinite}.assistant-character[data-state=speaking] .bot-mouth{animation:bot-talk .35s ease-in-out infinite}
.assistant-character[data-motion=focused]{--head-gesture:bot-focus;--tap-speed:.38s}.assistant-character[data-motion=quick]{--head-gesture:bot-quick;--tap-speed:.20s}.assistant-character[data-motion=right-hand]{--head-gesture:bot-right;--left-gesture:bot-rest;--tap-speed:.28s}.assistant-character[data-motion=left-hand]{--head-gesture:bot-left;--right-gesture:bot-rest;--tap-speed:.31s}.assistant-character[data-motion=nod]{--head-gesture:bot-nod;--tap-speed:.4s}.assistant-character[data-motion=screen-glance]{--head-gesture:bot-glance;--tap-speed:.46s}.assistant-character[data-motion=happy]{--head-gesture:bot-happy;--tap-speed:.32s}.assistant-character[data-motion=shoulders]{--head-gesture:bot-shoulders;--tap-speed:.38s}.assistant-character[data-motion=shoulders] .bot-body{animation:bot-body-bounce .7s ease-in-out infinite}.assistant-character[data-motion=thinking]{--head-gesture:bot-think;--tap-speed:.65s}.assistant-character[data-motion=wrists]{--head-gesture:bot-wrists;--left-gesture:bot-wrist-left;--right-gesture:bot-wrist-right;--tap-speed:.8s}.assistant-character[data-motion=lean-in]{--head-gesture:bot-lean;--tap-speed:.3s}.assistant-character[data-motion=tilt]{--head-gesture:bot-tilt;--tap-speed:.38s}.assistant-character[data-motion=enter-key]{--head-gesture:bot-enter;--right-gesture:bot-enter-hand;--tap-speed:.85s}.assistant-character[data-motion=two-hands]{--head-gesture:bot-two;--left-gesture:bot-both;--right-gesture:bot-both;--tap-speed:.45s}.assistant-character[data-motion=scan-type]{--head-gesture:bot-scan;--tap-speed:.33s}
.assistant-character[data-motion=recline] .bot-head{animation:bot-recline 4.2s ease-in-out infinite}.assistant-character[data-motion=recline] .bot-body{animation:bot-recline-body 4.2s ease-in-out infinite}.assistant-character[data-motion=stretch] .bot-arm-left{animation:bot-stretch-left 4.2s ease-in-out infinite}.assistant-character[data-motion=stretch] .bot-arm-right{animation:bot-stretch-right 4.2s ease-in-out infinite}.assistant-character[data-motion=cactus] .bot-arm-left{animation:bot-touch-cactus 4.2s ease-in-out infinite}.assistant-character[data-motion=cactus] .bot-cactus{animation:bot-cactus-wiggle 4.2s ease-in-out infinite}.assistant-character[data-motion=cactus] .bot-head{animation:bot-cactus-look 4.2s ease-in-out infinite}.assistant-character[data-motion=cactus] .bot-surprise{animation:bot-ouch 4.2s ease-in-out infinite}.assistant-character[data-motion=look-around] .bot-head{animation:bot-look-around 4.2s ease-in-out infinite}.assistant-character[data-motion=sway] .bot-head{animation:bot-sway 4.2s ease-in-out infinite}
@keyframes bot-focus{50%{transform:translateY(2px) rotate(-2deg)}}@keyframes bot-quick{25%,75%{transform:translateY(1px)}50%{transform:translateY(3px) rotate(2deg)}}@keyframes bot-right{50%{transform:rotate(5deg) translateX(2px)}}@keyframes bot-left{50%{transform:rotate(-5deg) translateX(-2px)}}@keyframes bot-nod{25%,65%{transform:translateY(4px)}45%,85%{transform:translateY(-1px)}}@keyframes bot-glance{20%,40%{transform:translateY(-4px) rotate(3deg)}70%{transform:translateY(2px)}}@keyframes bot-happy{25%{transform:rotate(-4deg)}75%{transform:rotate(4deg) translateY(-2px)}}@keyframes bot-shoulders{50%{transform:translateY(-3px)}}@keyframes bot-think{30%,60%{transform:rotate(7deg) translateY(-3px)}80%{transform:rotate(0) translateY(2px)}}@keyframes bot-wrists{50%{transform:translateY(-2px) rotate(-3deg)}}@keyframes bot-lean{40%,70%{transform:translateY(5px) scale(1.025)}}@keyframes bot-tilt{30%,65%{transform:rotate(-8deg)}85%{transform:rotate(3deg)}}@keyframes bot-enter{40%{transform:rotate(2deg)}65%{transform:translateY(4px)}85%{transform:translateY(-2px)}}@keyframes bot-two{35%{transform:translateY(2px) rotate(2deg)}70%{transform:translateY(2px) rotate(-2deg)}}@keyframes bot-scan{25%{transform:translateX(-3px)}60%{transform:translateX(3px)}85%{transform:translateY(3px)}}
@keyframes bot-tap-left{50%{transform:rotate(-4deg) translateY(-3px)}}@keyframes bot-tap-right{50%{transform:rotate(4deg) translateY(-3px)}}@keyframes bot-rest{50%{transform:rotate(1deg)}}@keyframes bot-wrist-left{50%{transform:rotate(-10deg)}}@keyframes bot-wrist-right{50%{transform:rotate(10deg)}}@keyframes bot-enter-hand{35%{transform:rotate(8deg) translateY(-5px)}65%{transform:rotate(-2deg) translateY(2px)}}@keyframes bot-both{50%{transform:translateY(-4px)}}@keyframes bot-body-bounce{50%{transform:translateY(-2px)}}@keyframes bot-blink{0%,45%,49%,100%{transform:scaleY(1)}47%{transform:scaleY(.1)}}@keyframes bot-steam{50%{transform:translateY(-3px);opacity:.2}}@keyframes bot-screen{50%{opacity:.45}}@keyframes bot-read{25%{transform:rotate(-3deg) translateX(-2px)}75%{transform:rotate(3deg) translateX(2px)}}@keyframes bot-read-eyes{25%{transform:translateX(-2px)}75%{transform:translateX(2px)}}@keyframes bot-talk{50%{transform:scaleY(.3)}}@keyframes bot-listen{50%{transform:rotate(-3deg)}}@keyframes bot-recline{30%,65%{transform:translateY(-6px) rotate(-7deg)}}@keyframes bot-recline-body{30%,65%{transform:translateY(-3px) rotate(-5deg)}}@keyframes bot-stretch-left{30%,60%{transform:rotate(70deg)}}@keyframes bot-stretch-right{30%,60%{transform:rotate(-70deg)}}@keyframes bot-touch-cactus{30%,48%{transform:translate(-67px,-9px) rotate(15deg)}57%{transform:translate(-25px,-20px) rotate(5deg)}}@keyframes bot-cactus-wiggle{40%{transform:rotate(-5deg)}47%{transform:rotate(5deg)}55%{transform:none}}@keyframes bot-cactus-look{25%,55%{transform:rotate(-10deg) translateX(-4px)}}@keyframes bot-ouch{0%,49%,80%,100%{opacity:0}55%,70%{opacity:1}}@keyframes bot-look-around{25%{transform:rotate(-8deg) translateX(-3px)}65%{transform:rotate(8deg) translateX(3px)}}@keyframes bot-sway{30%{transform:translateX(-3px) rotate(-4deg)}70%{transform:translateX(3px) rotate(4deg)}}@keyframes assistant-dot{50%{transform:translateY(-3px);opacity:.35}}
.character-still *{animation-play-state:paused!important}
@media(max-width:760px){.assistant-panel{position:fixed;right:12px;bottom:12px;width:calc(100vw - 24px);height:calc(var(--assistant-viewport,100dvh) - 24px);max-height:820px;border-radius:24px}.assistant-widget.is-open .assistant-toggle{visibility:hidden;pointer-events:none}.assistant-header{padding:14px 16px}.assistant-messages{padding:16px}.assistant-form{padding:12px 14px 16px}.assistant-character{height:140px}.desk-android{width:200px;height:129px}.assistant-character-caption{font-size:11px;max-width:125px}.assistant-character-caption small{font-size:9px}.assistant-suggestions{padding-inline:16px}.assistant-widget.is-chatting .assistant-character{height:100px}}
@media(max-height:600px){.assistant-character{height:100px}.desk-android{width:155px;height:100px}.assistant-widget.is-chatting .assistant-character{height:78px}.assistant-widget.is-chatting .desk-android{width:125px;height:81px}.assistant-suggestions{display:flex;padding-bottom:10px}.assistant-suggestions button{font-size:10px;padding:5px 7px;min-height:28px}.assistant-header{padding:10px 14px}.assistant-header p{display:none}.assistant-messages{padding:12px}.assistant-form{padding:10px 12px}.assistant-direct{padding-bottom:9px}}
@media(prefers-reduced-motion:reduce){.assistant-character,.assistant-panel{transition:none}.desk-android *,.assistant-loading-dots i{animation:none!important}.bot-screen-code{opacity:1}}
.assistant-message a{color:var(--accent);text-decoration:underline;display:inline-block}.assistant-widget.is-chatting .assistant-character-status{font-size:11px}.assistant-widget.is-chatting .assistant-handoff>p{display:none}@media(max-width:760px){.assistant-panel{bottom:calc(12px + var(--assistant-keyboard-offset,0px))}}
.assistant-header>div{min-width:0}.assistant-form textarea{height:50px}@media(max-width:390px){.assistant-contact{font-size:9px;max-width:74px;padding:6px}.assistant-header strong{font-size:15px}.assistant-character-caption{max-width:100px}}
@media(max-height:520px){.assistant-character,.assistant-widget.is-chatting .assistant-character{height:70px}.desk-android,.assistant-widget.is-chatting .desk-android{width:105px;height:68px}.assistant-direct{display:none}.assistant-suggestions{max-height:58px;overflow-y:auto;flex-shrink:0}.assistant-messages{min-height:38px}.assistant-header{padding:8px 12px}.assistant-form{padding:10px 12px}}

/* Visible keyboard fingers and an attached arm reaching toward the cactus. */
.bot-key-fingers-left{transform-origin:127px 140px}.bot-key-fingers-right{transform-origin:163px 140px}.assistant-character[data-state=typing] .bot-key-fingers-left{animation:var(--left-gesture,bot-tap-left) var(--tap-speed,.35s) ease-in-out infinite}.assistant-character[data-state=typing] .bot-key-fingers-right{animation:var(--right-gesture,bot-tap-right) var(--tap-speed,.35s) ease-in-out infinite;animation-delay:-.15s}.assistant-character[data-motion=cactus] .bot-arm-left{animation:bot-cactus-fold 4.2s ease-in-out infinite}.assistant-character[data-motion=cactus] .bot-reach-arm{transform-origin:116px 91px;animation:bot-cactus-reach 4.2s ease-in-out infinite}@keyframes bot-cactus-fold{0%,20%,75%,100%{opacity:1}30%,65%{opacity:0}}@keyframes bot-cactus-reach{0%,20%,75%,100%{opacity:0;transform:scaleX(.2)}32%,50%{opacity:1;transform:scaleX(1)}60%{opacity:1;transform:scaleX(.65)}}
.assistant-messages{scroll-behavior:auto}
/* White polymer casing and a pixel OLED face. The cactus remains a plant. */
.bot-display-pixels{pointer-events:none}.face-pixel{transition:opacity .12s linear}.assistant-character-dot{background:#7cc9f3;box-shadow:0 0 0 3px #7cc9f316}.assistant-character[data-state=reading] .bot-display-pixels{animation:visor-read .65s ease-in-out infinite}@keyframes visor-read{25%{transform:translateX(-1px)}75%{transform:translateX(1px)}}@media(prefers-reduced-motion:reduce){.face-pixel{transition:none}}
