@charset "UTF-8";
/* The companion lives outside app content; logos, report data and product art remain unchanged. */
body.xb-floating-active :is(#app,#gate) :is(.xb-figure,.xb-face,.xb-presence,[data-xb-figure]){display:none!important;}
body.xb-floating-active .question-box:has(> .xb-presence){margin-top:28px;}
body.xb-floating-active .xb-reader-companion:has(.xb-speech-anchor),body.xb-floating-active .xb-speech--companion{display:none!important;}
body.xb-floating-active .side-note{padding-top:24px;}
body.xb-floating-active .daily-note:has(> .xb-daily-guide){display:block;}
body.xb-floating-active .liuyao-progress-heading:has(> .xb-figure){display:block;}
body.xb-floating-active .orbit .orbit-core{display:block;opacity:.35;}
body.xb-floating-active .mini-symbol>img.xiaobu-logo{display:block;}
.xb-floating{position:fixed;left:var(--xb-floating-x,12px);top:var(--xb-floating-y,12px);width:152px;height:260px;z-index:80;pointer-events:none;isolation:isolate;color:#f4e7d3;font-family:var(--companion-interface,-apple-system,BlinkMacSystemFont,"PingFang SC",sans-serif);user-select:none;-webkit-user-select:none;}
.xb-floating [hidden],.xb-floating[hidden]{display:none!important;}
.xb-floating[data-collapsed="true"]{width:48px;height:48px;}
.xb-floating-panel{position:relative;width:152px;height:260px;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:9px;padding-bottom:12px;}
.xb-floating button{font:inherit;cursor:pointer;pointer-events:auto;touch-action:manipulation;-webkit-tap-highlight-color:transparent;}
.xb-floating-close{position:absolute;right:0;top:0;display:grid;place-items:center;width:44px;height:44px;padding:0;border:1px solid #ddbd7f57;border-radius:50%;background:#20192de8;color:#ecdbbd;font-size:23px!important;box-shadow:0 3px 12px #0003;}
.xb-floating-options-toggle{position:absolute;left:0;top:0;width:44px;height:44px;border:0;border-radius:50%;background:#20192de8;color:#ecdbbd;font-size:22px!important;}
.xb-floating-options{position:absolute;left:var(--xb-menu-x,0px);top:var(--xb-menu-y,0px);width:min(232px,calc(100vw - 24px));max-height:calc(100dvh - 24px);overflow:auto;padding:14px;border:1px solid #d4b77870;border-radius:16px;background:#201b2bf7;box-shadow:0 9px 32px #0005;pointer-events:auto;user-select:text;-webkit-user-select:text;}
.xb-floating-options p{margin:0 0 8px;font-size:13px;line-height:1.6;color:#f4e7d3;}
.xb-floating-options small{display:block;margin-bottom:8px;color:#c3b5d4;font-size:11px;}
.xb-floating-options button{display:block;width:100%;min-height:44px;margin-top:6px;border:1px solid #d4b77860;border-radius:9px;background:#3d3049;color:#f5e3ba;}
.xb-floating-options button:disabled{opacity:.5;cursor:default;}
.xb-floating-options button:focus-visible,.xb-floating-options-toggle:focus-visible{outline:3px solid #f6d998;outline-offset:3px;}
.xb-floating-handle{display:block;flex:none;width:140px;height:210px;border:0;padding:0;background:none;border-radius:8px;touch-action:none;cursor:grab!important;}
.xb-floating[data-dragging="true"] .xb-floating-handle{cursor:grabbing!important;}
.xb-floating-handle:focus-visible,.xb-floating-close:focus-visible,.xb-floating-launcher:focus-visible{outline:3px solid #f6d998;outline-offset:5px;}
.xb-floating .xb-fullbody{width:140px;height:210px;pointer-events:none;background:none;border:0;border-radius:0;box-shadow:none;filter:drop-shadow(0 3px 3px #0003);}
.xb-floating .xb-fullbody-stage{position:absolute;inset:0;width:100%;height:100%;}
.xb-floating .xb-fullbody-stage>img,.xb-floating .xb-fullbody-stage>i,.xb-floating .xb-fullbody-head>img,.xb-floating .xb-fullbody-head>i{position:absolute;inset:0;width:100%;height:100%;max-width:none;display:block;margin:0;border-radius:0;box-shadow:none;pointer-events:none;}
/* The original head is a small registered layer, pivoted at the collar.
   All eyelids, third eye and mouth stay inside it; torso and feet remain fixed. */
.xb-floating .xb-fullbody-base{clip-path:none;}
.xb-floating .xb-fullbody[data-xb-head="ready"] .xb-fullbody-base{clip-path:inset(31.2% 0 0 0);}
.xb-floating .xb-fullbody-head{position:absolute;inset:0;width:100%;height:100%;z-index:3;pointer-events:none;--xb-rest-angle:0deg;transform-origin:50% 31.3%;transition:transform 900ms cubic-bezier(.37,0,.25,1);}
.xb-floating .xb-fullbody-head-base{clip-path:inset(0 0 67.8% 0);visibility:hidden;}
.xb-floating .xb-fullbody[data-xb-head="ready"] .xb-fullbody-head-base{visibility:visible;}
/* Pending / failed decode uses the intact original, with face overlays at rest. */
.xb-floating .xb-fullbody:not([data-xb-head="ready"]) .xb-head-joint{--xb-rest-angle:0deg!important;animation:none!important;transform:none!important;transition:none!important;}
.xb-floating[data-mood="thinking"] .xb-head-joint{--xb-rest-angle:1.2deg;transform:rotate(1.2deg);}
.xb-floating[data-mood="listening"] .xb-head-joint{--xb-rest-angle:-.8deg;transform:rotate(-.8deg);}
/* Registered B pixels cover each eye from the upper lid down: no ghosted
   open/closed crossfade. Each lid has its own mask, with a tiny natural offset.
   The shared figure engine still owns A/B ordering and ordinary blink timing. */
.xb-floating .xb-fullbody-eye{opacity:var(--xb-lids,0);}
@supports ((mask-image:linear-gradient(#000,transparent)) or (-webkit-mask-image:linear-gradient(#000,transparent))){
.xb-floating .xb-fullbody-eye{opacity:1;-webkit-mask-image:linear-gradient(to bottom,#000 calc(20.55% + var(--xb-lid,0) * 4.65%),transparent calc(20.65% + var(--xb-lid,0) * 4.65%));mask-image:linear-gradient(to bottom,#000 calc(20.55% + var(--xb-lid,0) * 4.65%),transparent calc(20.65% + var(--xb-lid,0) * 4.65%));}
}
.xb-floating .xb-fullbody-eye-left{--xb-lid:var(--xb-lids,0);clip-path:ellipse(5.3% 2.15% at 43.95% 22.8%);}
.xb-floating .xb-fullbody-eye-right{--xb-lid:clamp(0,calc(var(--xb-lids,0) * 1.05 - .05),1);clip-path:ellipse(5.3% 2.15% at 56.45% 22.8%);}
.xb-floating .xb-fullbody-third{opacity:calc(var(--xb-third,0) * 6);clip-path:ellipse(calc(var(--xb-third,0) * 1.65%) 2.5% at 50.3% 18.75%);}
/* Blink the vertical eye only after the inward pose has settled. Ordinary
   blinks never open it, and ending thought immediately returns to the engine. */
.xb-floating .xb-fullbody[data-xb-state="B"][data-xb-progress="1.000"] .xb-fullbody-third{animation:xb-third-blink 6.2s cubic-bezier(.4,0,.2,1) infinite;}
@keyframes xb-third-blink{0%,76%,92%,100%{clip-path:ellipse(1.65% 2.5% at 50.3% 18.75%)}82%{clip-path:ellipse(0% 2.5% at 50.3% 18.75%)}}
.xb-floating .xb-fullbody-eye-light{opacity:var(--xb-blink-light,0);background:radial-gradient(ellipse 5.5% .6% at 43.95% 23.3%,#ffe7bd66,transparent),radial-gradient(ellipse 5.5% .6% at 56.45% 23.3%,#ffe7bd66,transparent);}
.xb-floating .xb-fullbody-eye-aura{opacity:var(--xb-eye-aura,0);background:radial-gradient(ellipse 3% 3% at 50.3% 18.75%,transparent 30%,#ffe6b155 60%,transparent 100%);}
.xb-floating .xb-ring{inset:-4%;}
.xb-floating .xb-dust{display:none;}
.xb-floating-state{font-size:11px;line-height:1.4;letter-spacing:.04em;padding:4px 9px;border:1px solid #cdb69d29;border-radius:99px;background:#171223e8;box-shadow:0 2px 8px #0002;white-space:nowrap;pointer-events:none;}
.xb-floating-launcher{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;width:48px;height:48px;padding:0;border-radius:50%;border:1px solid #d9bd83b3;background:#241c36f5;color:#efe4ff;box-shadow:0 4px 16px #0005;font-size:12px!important;line-height:1.1;}
.xb-floating-launcher>span{font-size:12px;color:#e9c87f;}
.xb-floating-help{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);clip-path:inset(50%);white-space:nowrap;border:0;}
/* Body and feet stay fixed. Independent shoulder/elbow/wrist transforms move
   only the original arm pixels; each child inherits its parent's joint motion. */
.xb-floating .xb-limb,.xb-floating .xb-joint{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;}
.xb-floating .xb-limb img{position:absolute;inset:0;width:100%;height:100%;max-width:none;border-radius:0;box-shadow:none;pointer-events:none;}
.xb-floating .xb-limb{z-index:1;}
.xb-floating .xb-fullbody[data-xb-limbs="pending"] .xb-limb{display:none;}
.xb-floating .xb-limb-right .xb-joint-shoulder{transform-origin:63.09% 36.13%;}
.xb-floating .xb-limb-right .xb-joint-elbow{transform-origin:72.46% 48.7%;}
.xb-floating .xb-limb-right .xb-joint-wrist{transform-origin:74.02% 54.3%;}
.xb-floating .xb-limb-left .xb-joint-shoulder{transform-origin:36.82% 36.13%;}
.xb-floating .xb-limb-left .xb-joint-elbow{transform-origin:27.54% 48.7%;}
.xb-floating .xb-limb-left .xb-joint-wrist{transform-origin:26.07% 54.3%;}
.xb-floating .xb-limb-right .xb-arm-upper{clip-path:polygon(60.16% 34.38%,66.7% 35.68%,71.3% 43.82%,76.95% 47.14%,74.61% 50.65%,68.65% 49.8%,63.67% 44.99%,59.96% 40.1%);}
.xb-floating .xb-limb-right .xb-arm-lower{clip-path:polygon(69.14% 45.18%,75.49% 45.9%,82.81% 51.82%,81.45% 55.53%,77.93% 55.53%,76.56% 53.91%,72.17% 54.62%,68.36% 51.5%,67.19% 48.31%);}
.xb-floating .xb-limb-right .xb-arm-hand{clip-path:polygon(71.68% 52.54%,75.98% 52.47%,79.2% 57.49%,78.91% 61.91%,76.37% 63.15%,73.34% 61.13%,71.09% 57.36%);}
.xb-floating .xb-limb-left .xb-arm-upper{clip-path:polygon(39.65% 34.38%,32.71% 35.68%,28.22% 43.82%,23.73% 47.14%,25.68% 50.65%,31.25% 49.8%,36.04% 44.99%,40.14% 40.1%);}
.xb-floating .xb-limb-left .xb-arm-lower{clip-path:polygon(28.32% 45.18%,23.44% 46.03%,18.55% 51.43%,19.63% 55.47%,22.17% 55.47%,23.34% 54.62%,27.93% 54.82%,30.86% 51.63%,32.23% 48.18%);}
.xb-floating .xb-limb-left .xb-arm-hand{clip-path:polygon(23.83% 52.73%,27.93% 52.73%,28.52% 56.38%,26.46% 60.81%,23.54% 63.09%,21.48% 61.85%,21.48% 57.42%);}
/* Each phrase has a preparation, a lead from the shoulder, a delayed wrist
   follow-through and a generous return. Small asymmetric arcs avoid mechanical mirroring. */
.xb-floating .xb-joint{--xb-rest-angle:0deg;transition:transform 1000ms cubic-bezier(.37,0,.25,1);}
.xb-floating .xb-joint-elbow{transition-duration:1050ms;transition-delay:60ms;}
.xb-floating .xb-joint-wrist{transition-duration:1150ms;transition-delay:120ms;}
.xb-floating[data-mood="thinking"] .xb-limb-right .xb-joint-shoulder{--xb-rest-angle:-3deg;transform:rotate(-3deg);}
.xb-floating[data-mood="thinking"] .xb-limb-right .xb-joint-elbow{--xb-rest-angle:-12deg;transform:rotate(-12deg);}
.xb-floating[data-mood="thinking"] .xb-limb-right .xb-joint-wrist{--xb-rest-angle:-3deg;transform:rotate(-3deg);}
.xb-floating[data-mood="listening"] .xb-limb-left .xb-joint-shoulder{--xb-rest-angle:2deg;transform:rotate(2deg);}
.xb-floating[data-mood="listening"] .xb-limb-left .xb-joint-elbow{--xb-rest-angle:7deg;transform:rotate(7deg);}
.xb-floating[data-mood="listening"] .xb-limb-left .xb-joint-wrist{--xb-rest-angle:-3deg;transform:rotate(-3deg);}
.xb-floating[data-mood="listening"][data-attentive="typing"] .xb-limb-left .xb-joint-wrist{--xb-rest-angle:-5deg;transform:rotate(-5deg);}
.xb-floating[data-mood="thinking"] .xb-floating-state{color:#f3dba6;border-color:#d0a86866;}
.xb-floating[data-gesture="wave"] .xb-limb-right .xb-joint-shoulder{animation:xb-arm-lift 3.2s cubic-bezier(.37,0,.25,1);}
.xb-floating[data-gesture="wave"] .xb-limb-right .xb-joint-elbow{animation:xb-elbow-wave 3.2s cubic-bezier(.37,0,.25,1);}
.xb-floating[data-gesture="wave"] .xb-limb-right .xb-joint-wrist{animation:xb-wrist-wave 3.2s cubic-bezier(.37,0,.25,1);}
.xb-floating[data-gesture="wave"] .xb-head-joint{animation:xb-head-greet 3.2s cubic-bezier(.37,0,.25,1);}
.xb-floating[data-gesture="greet"] .xb-limb-left .xb-joint-shoulder{animation:xb-arm-greet 3.2s cubic-bezier(.37,0,.25,1);}
.xb-floating[data-gesture="greet"] .xb-limb-left .xb-joint-elbow{animation:xb-elbow-greet 3.2s cubic-bezier(.37,0,.25,1);}
.xb-floating[data-gesture="greet"] .xb-limb-left .xb-joint-wrist{animation:xb-wrist-greet 3.2s cubic-bezier(.37,0,.25,1);}
.xb-floating[data-gesture="greet"] .xb-head-joint{animation:xb-head-listen 3.2s cubic-bezier(.37,0,.25,1);}
.xb-floating[data-gesture="ack"] .xb-limb-left .xb-joint-shoulder{animation:xb-ack-shoulder 3.2s cubic-bezier(.37,0,.25,1);}
.xb-floating[data-gesture="ack"] .xb-limb-left .xb-joint-elbow{animation:xb-ack-elbow 3.2s cubic-bezier(.37,0,.25,1);}
.xb-floating[data-gesture="ack"] .xb-limb-left .xb-joint-wrist{animation:xb-ack-wrist 3.2s cubic-bezier(.37,0,.25,1);}
.xb-floating[data-gesture="ack"] .xb-head-joint{animation:xb-head-ack 3.2s cubic-bezier(.37,0,.25,1);}
.xb-floating[data-gesture="idle-thought"] .xb-limb-right .xb-joint-shoulder{animation:xb-idle-thought-shoulder 4.2s cubic-bezier(.37,0,.25,1);}
.xb-floating[data-gesture="idle-thought"] .xb-limb-right .xb-joint-elbow{animation:xb-idle-thought-elbow 4.2s cubic-bezier(.37,0,.25,1);}
.xb-floating[data-gesture="idle-thought"] .xb-limb-right .xb-joint-wrist{animation:xb-idle-thought-wrist 4.2s cubic-bezier(.37,0,.25,1);}
.xb-floating[data-gesture="idle-thought"] .xb-head-joint{animation:xb-head-thought 4.2s cubic-bezier(.37,0,.25,1);}
.xb-floating[data-gesture="idle-sleeve"] .xb-limb-left .xb-joint-shoulder{animation:xb-idle-sleeve-shoulder 3.2s cubic-bezier(.37,0,.25,1);}
.xb-floating[data-gesture="idle-sleeve"] .xb-limb-left .xb-joint-elbow{animation:xb-idle-sleeve-elbow 3.2s cubic-bezier(.37,0,.25,1);}
.xb-floating[data-gesture="idle-sleeve"] .xb-limb-left .xb-joint-wrist{animation:xb-idle-sleeve-wrist 3.2s cubic-bezier(.37,0,.25,1);}
.xb-floating[data-gesture="idle-sleeve"] .xb-head-joint{animation:xb-head-listen 3.2s cubic-bezier(.37,0,.25,1);}
.xb-floating[data-gesture="idle-greet"] .xb-limb-right .xb-joint-shoulder{animation:xb-idle-greet-shoulder 3.2s cubic-bezier(.37,0,.25,1);}
.xb-floating[data-gesture="idle-greet"] .xb-limb-right .xb-joint-elbow{animation:xb-idle-greet-elbow 3.2s cubic-bezier(.37,0,.25,1);}
.xb-floating[data-gesture="idle-greet"] .xb-limb-right .xb-joint-wrist{animation:xb-idle-greet-wrist 3.2s cubic-bezier(.37,0,.25,1);}
.xb-floating[data-gesture="idle-greet"] .xb-head-joint{animation:xb-head-greet 3.2s cubic-bezier(.37,0,.25,1);}
.xb-floating[data-gesture="idle-fold"] .xb-limb-left .xb-joint-shoulder{animation:xb-idle-fold-left-shoulder 3.2s cubic-bezier(.37,0,.25,1);}
.xb-floating[data-gesture="idle-fold"] .xb-limb-left .xb-joint-elbow{animation:xb-idle-fold-left-elbow 3.2s cubic-bezier(.37,0,.25,1);}
.xb-floating[data-gesture="idle-fold"] .xb-limb-left .xb-joint-wrist{animation:xb-idle-fold-left-wrist 3.2s cubic-bezier(.37,0,.25,1);}
.xb-floating[data-gesture="idle-fold"] .xb-limb-right .xb-joint-shoulder{animation:xb-idle-fold-right-shoulder 3.2s cubic-bezier(.37,0,.25,1);}
.xb-floating[data-gesture="idle-fold"] .xb-limb-right .xb-joint-elbow{animation:xb-idle-fold-right-elbow 3.2s cubic-bezier(.37,0,.25,1);}
.xb-floating[data-gesture="idle-fold"] .xb-limb-right .xb-joint-wrist{animation:xb-idle-fold-right-wrist 3.2s cubic-bezier(.37,0,.25,1);}
.xb-floating[data-gesture="idle-fold"] .xb-limb-right{z-index:2;}
.xb-floating[data-gesture="idle-fold"] .xb-head-joint{animation:xb-head-listen 3.2s cubic-bezier(.37,0,.25,1);}
.xb-floating[data-gesture="wave"] .xb-limb-left .xb-joint-elbow{animation:xb-support-left 3.2s cubic-bezier(.37,0,.25,1);}
.xb-floating[data-gesture="greet"] .xb-limb-right .xb-joint-elbow{animation:xb-support-right 3.2s cubic-bezier(.37,0,.25,1);}
.xb-floating[data-gesture="idle-greet"] .xb-limb-left .xb-joint-elbow{animation:xb-support-left 3.2s cubic-bezier(.37,0,.25,1);}
.xb-floating[data-gesture="idle-sleeve"] .xb-limb-right .xb-joint-elbow{animation:xb-idle-sleeve-support 3.2s cubic-bezier(.37,0,.25,1);}
.xb-floating[data-gesture="settle"] .xb-limb-left .xb-joint-elbow{animation:xb-settle-left 3.2s cubic-bezier(.37,0,.25,1);}
.xb-floating[data-gesture="settle"] .xb-limb-right .xb-joint-elbow{animation:xb-settle-right 3.2s cubic-bezier(.37,0,.25,1);}
.xb-floating[data-speaking="true"] .xb-limb-right .xb-joint-shoulder{animation:xb-arm-explain 7.2s cubic-bezier(.37,0,.25,1) infinite;}
.xb-floating[data-speaking="true"] .xb-limb-right .xb-joint-elbow{animation:xb-elbow-explain 7.2s cubic-bezier(.37,0,.25,1) infinite;}
.xb-floating[data-speaking="true"] .xb-limb-right .xb-joint-wrist{animation:xb-wrist-explain 7.2s cubic-bezier(.37,0,.25,1) infinite;}
.xb-floating[data-speaking="true"] .xb-limb-left .xb-joint-shoulder{animation:xb-explain-left-shoulder 7.2s cubic-bezier(.37,0,.25,1) infinite;}
.xb-floating[data-speaking="true"] .xb-limb-left .xb-joint-elbow{animation:xb-explain-left-elbow 7.2s cubic-bezier(.37,0,.25,1) infinite;}
.xb-floating[data-speaking="true"] .xb-limb-left .xb-joint-wrist{animation:xb-explain-left-wrist 7.2s cubic-bezier(.37,0,.25,1) infinite;}
.xb-floating[data-speaking="true"] .xb-head-joint{animation:xb-head-explain 7.2s cubic-bezier(.37,0,.25,1) infinite;}
@keyframes xb-arm-lift{0%{transform:rotate(0deg)}8%{transform:rotate(1.2deg)}24%{transform:rotate(-5deg)}40%{transform:rotate(-9deg)}64%{transform:rotate(-8deg)}82%{transform:rotate(-2deg)}94%{transform:rotate(0.4deg)}100%{transform:rotate(0deg)}}
@keyframes xb-elbow-wave{0%{transform:rotate(0deg)}12%{transform:rotate(0deg)}28%{transform:rotate(-12deg)}43%{transform:rotate(-27deg)}62%{transform:rotate(-24deg)}78%{transform:rotate(-10deg)}92%{transform:rotate(-1deg)}100%{transform:rotate(0deg)}}
@keyframes xb-wrist-wave{0%{transform:rotate(0deg)}20%{transform:rotate(0deg)}39%{transform:rotate(-6deg)}51%{transform:rotate(8deg)}62%{transform:rotate(-6deg)}73%{transform:rotate(4deg)}87%{transform:rotate(-1deg)}100%{transform:rotate(0deg)}}
@keyframes xb-arm-greet{0%{transform:rotate(0deg)}9%{transform:rotate(-1deg)}26%{transform:rotate(3deg)}43%{transform:rotate(7deg)}63%{transform:rotate(6deg)}82%{transform:rotate(2deg)}95%{transform:rotate(-0.3deg)}100%{transform:rotate(0deg)}}
@keyframes xb-elbow-greet{0%{transform:rotate(0deg)}15%{transform:rotate(0deg)}32%{transform:rotate(9deg)}48%{transform:rotate(19deg)}65%{transform:rotate(16deg)}82%{transform:rotate(5deg)}94%{transform:rotate(0.5deg)}100%{transform:rotate(0deg)}}
@keyframes xb-wrist-greet{0%{transform:rotate(0deg)}22%{transform:rotate(0deg)}42%{transform:rotate(-3deg)}57%{transform:rotate(-8deg)}70%{transform:rotate(-5deg)}88%{transform:rotate(1deg)}100%{transform:rotate(0deg)}}
@keyframes xb-support-left{0%{transform:rotate(0deg)}18%{transform:rotate(0deg)}38%{transform:rotate(3deg)}65%{transform:rotate(2deg)}86%{transform:rotate(0.5deg)}100%{transform:rotate(0deg)}}
@keyframes xb-support-right{0%{transform:rotate(0deg)}18%{transform:rotate(0deg)}40%{transform:rotate(-3deg)}66%{transform:rotate(-2deg)}86%{transform:rotate(-0.5deg)}100%{transform:rotate(0deg)}}
@keyframes xb-head-greet{0%{transform:rotate(0deg)}10%{transform:rotate(-0.3deg)}30%{transform:rotate(1.5deg)}53%{transform:rotate(1.1deg)}73%{transform:rotate(0.2deg)}88%{transform:rotate(-0.2deg)}100%{transform:rotate(0deg)}}
@keyframes xb-head-listen{0%{transform:rotate(0deg)}15%{transform:rotate(0.3deg)}38%{transform:rotate(-1.4deg)}60%{transform:rotate(-1deg)}80%{transform:rotate(-0.2deg)}100%{transform:rotate(0deg)}}
@keyframes xb-arm-explain{0%{transform:rotate(0deg)}7%{transform:rotate(0.6deg)}19%{transform:rotate(-3deg)}32%{transform:rotate(-5deg)}43%{transform:rotate(-3deg)}56%{transform:rotate(0deg)}100%{transform:rotate(0deg)}}
@keyframes xb-elbow-explain{0%{transform:rotate(0deg)}11%{transform:rotate(0deg)}25%{transform:rotate(-9deg)}37%{transform:rotate(-15deg)}48%{transform:rotate(-9deg)}61%{transform:rotate(0deg)}100%{transform:rotate(0deg)}}
@keyframes xb-wrist-explain{0%{transform:rotate(0deg)}18%{transform:rotate(0deg)}31%{transform:rotate(4deg)}42%{transform:rotate(7deg)}51%{transform:rotate(-1deg)}66%{transform:rotate(0deg)}100%{transform:rotate(0deg)}}
@keyframes xb-explain-left-shoulder{0%{transform:rotate(0deg)}50%{transform:rotate(0deg)}58%{transform:rotate(-0.5deg)}68%{transform:rotate(3deg)}79%{transform:rotate(4deg)}91%{transform:rotate(1deg)}100%{transform:rotate(0deg)}}
@keyframes xb-explain-left-elbow{0%{transform:rotate(0deg)}56%{transform:rotate(0deg)}70%{transform:rotate(8deg)}81%{transform:rotate(11deg)}93%{transform:rotate(2deg)}100%{transform:rotate(0deg)}}
@keyframes xb-explain-left-wrist{0%{transform:rotate(0deg)}61%{transform:rotate(0deg)}76%{transform:rotate(-4deg)}85%{transform:rotate(-6deg)}94%{transform:rotate(-1deg)}100%{transform:rotate(0deg)}}
@keyframes xb-head-explain{0%{transform:rotate(0deg)}12%{transform:rotate(-0.3deg)}30%{transform:rotate(1.1deg)}50%{transform:rotate(0deg)}65%{transform:rotate(-0.8deg)}80%{transform:rotate(-0.5deg)}100%{transform:rotate(0deg)}}
@keyframes xb-ack-shoulder{0%{transform:rotate(0deg)}10%{transform:rotate(-0.5deg)}30%{transform:rotate(3deg)}47%{transform:rotate(4deg)}65%{transform:rotate(2deg)}86%{transform:rotate(0.3deg)}100%{transform:rotate(0deg)}}
@keyframes xb-ack-elbow{0%{transform:rotate(0deg)}16%{transform:rotate(0deg)}36%{transform:rotate(7deg)}54%{transform:rotate(11deg)}70%{transform:rotate(6deg)}90%{transform:rotate(1deg)}100%{transform:rotate(0deg)}}
@keyframes xb-ack-wrist{0%{transform:rotate(0deg)}24%{transform:rotate(0deg)}43%{transform:rotate(-2deg)}58%{transform:rotate(-5deg)}75%{transform:rotate(-1deg)}90%{transform:rotate(0.5deg)}100%{transform:rotate(0deg)}}
@keyframes xb-head-ack{0%{transform:rotate(0deg)}12%{transform:rotate(-0.4deg)}35%{transform:rotate(1.8deg)}55%{transform:rotate(1.1deg)}78%{transform:rotate(0.2deg)}100%{transform:rotate(0deg)}}
@keyframes xb-settle-left{0%{transform:rotate(0deg)}14%{transform:rotate(2deg)}35%{transform:rotate(-1deg)}61%{transform:rotate(0.6deg)}82%{transform:rotate(0.2deg)}100%{transform:rotate(0deg)}}
@keyframes xb-settle-right{0%{transform:rotate(0deg)}17%{transform:rotate(-2deg)}40%{transform:rotate(1deg)}65%{transform:rotate(-0.5deg)}85%{transform:rotate(-0.1deg)}100%{transform:rotate(0deg)}}
@keyframes xb-idle-thought-shoulder{0%{transform:rotate(0deg)}9%{transform:rotate(1deg)}24%{transform:rotate(-4deg)}43%{transform:rotate(-6deg)}58%{transform:rotate(-5deg)}79%{transform:rotate(-1deg)}94%{transform:rotate(0.3deg)}100%{transform:rotate(0deg)}}
@keyframes xb-idle-thought-elbow{0%{transform:rotate(0deg)}13%{transform:rotate(0deg)}32%{transform:rotate(-18deg)}47%{transform:rotate(-22deg)}63%{transform:rotate(-20deg)}82%{transform:rotate(-5deg)}95%{transform:rotate(-0.4deg)}100%{transform:rotate(0deg)}}
@keyframes xb-idle-thought-wrist{0%{transform:rotate(0deg)}21%{transform:rotate(0deg)}39%{transform:rotate(-5deg)}52%{transform:rotate(-7deg)}66%{transform:rotate(-4deg)}86%{transform:rotate(-1deg)}100%{transform:rotate(0deg)}}
@keyframes xb-head-thought{0%{transform:rotate(0deg)}14%{transform:rotate(-0.3deg)}34%{transform:rotate(1.8deg)}58%{transform:rotate(1.5deg)}82%{transform:rotate(0.4deg)}100%{transform:rotate(0deg)}}
@keyframes xb-idle-fold-left-shoulder{0%{transform:rotate(0deg)}8%{transform:rotate(1deg)}27%{transform:rotate(-17deg)}43%{transform:rotate(-24deg)}61%{transform:rotate(-22deg)}80%{transform:rotate(-5deg)}94%{transform:rotate(-0.4deg)}100%{transform:rotate(0deg)}}
@keyframes xb-idle-fold-left-elbow{0%{transform:rotate(0deg)}14%{transform:rotate(0deg)}34%{transform:rotate(-39deg)}49%{transform:rotate(-62deg)}64%{transform:rotate(-59deg)}84%{transform:rotate(-12deg)}96%{transform:rotate(-1deg)}100%{transform:rotate(0deg)}}
@keyframes xb-idle-fold-left-wrist{0%{transform:rotate(0deg)}23%{transform:rotate(0deg)}43%{transform:rotate(4deg)}58%{transform:rotate(7deg)}72%{transform:rotate(4deg)}90%{transform:rotate(0.5deg)}100%{transform:rotate(0deg)}}
@keyframes xb-idle-fold-right-shoulder{0%{transform:rotate(0deg)}13%{transform:rotate(-0.7deg)}34%{transform:rotate(17deg)}49%{transform:rotate(23deg)}65%{transform:rotate(21deg)}83%{transform:rotate(5deg)}95%{transform:rotate(0.4deg)}100%{transform:rotate(0deg)}}
@keyframes xb-idle-fold-right-elbow{0%{transform:rotate(0deg)}19%{transform:rotate(0deg)}40%{transform:rotate(37deg)}55%{transform:rotate(60deg)}70%{transform:rotate(55deg)}86%{transform:rotate(10deg)}97%{transform:rotate(0.5deg)}100%{transform:rotate(0deg)}}
@keyframes xb-idle-fold-right-wrist{0%{transform:rotate(0deg)}29%{transform:rotate(0deg)}49%{transform:rotate(-5deg)}63%{transform:rotate(-7deg)}77%{transform:rotate(-3deg)}92%{transform:rotate(-0.5deg)}100%{transform:rotate(0deg)}}
@keyframes xb-idle-sleeve-shoulder{0%{transform:rotate(0deg)}9%{transform:rotate(0.6deg)}27%{transform:rotate(-9deg)}43%{transform:rotate(-12deg)}61%{transform:rotate(-10deg)}80%{transform:rotate(-2deg)}94%{transform:rotate(-0.2deg)}100%{transform:rotate(0deg)}}
@keyframes xb-idle-sleeve-elbow{0%{transform:rotate(0deg)}15%{transform:rotate(0deg)}34%{transform:rotate(-26deg)}49%{transform:rotate(-35deg)}64%{transform:rotate(-31deg)}83%{transform:rotate(-6deg)}96%{transform:rotate(-0.5deg)}100%{transform:rotate(0deg)}}
@keyframes xb-idle-sleeve-wrist{0%{transform:rotate(0deg)}23%{transform:rotate(0deg)}41%{transform:rotate(5deg)}52%{transform:rotate(-4deg)}63%{transform:rotate(6deg)}73%{transform:rotate(2deg)}89%{transform:rotate(-0.5deg)}100%{transform:rotate(0deg)}}
@keyframes xb-idle-sleeve-support{0%{transform:rotate(0deg)}11%{transform:rotate(0deg)}31%{transform:rotate(9deg)}46%{transform:rotate(14deg)}66%{transform:rotate(12deg)}83%{transform:rotate(2deg)}100%{transform:rotate(0deg)}}
@keyframes xb-idle-greet-shoulder{0%{transform:rotate(0deg)}9%{transform:rotate(0.7deg)}27%{transform:rotate(-3deg)}43%{transform:rotate(-5deg)}63%{transform:rotate(-4deg)}82%{transform:rotate(-1deg)}96%{transform:rotate(0.2deg)}100%{transform:rotate(0deg)}}
@keyframes xb-idle-greet-elbow{0%{transform:rotate(0deg)}15%{transform:rotate(0deg)}34%{transform:rotate(-10deg)}49%{transform:rotate(-18deg)}65%{transform:rotate(-15deg)}84%{transform:rotate(-3deg)}97%{transform:rotate(-0.2deg)}100%{transform:rotate(0deg)}}
@keyframes xb-idle-greet-wrist{0%{transform:rotate(0deg)}23%{transform:rotate(0deg)}43%{transform:rotate(-3deg)}56%{transform:rotate(5deg)}67%{transform:rotate(-3deg)}78%{transform:rotate(1.5deg)}92%{transform:rotate(0.2deg)}100%{transform:rotate(0deg)}}
/* A registered, image-generated closed-lip smile changes only the mouth.
   Keep the original face, eyes and jointed body. Feather the small skin seam. */
.xb-floating .xb-fullbody-head>.xb-smile-mouth{clip-path:ellipse(3.5% 1.4% at 50.3% 27%);-webkit-mask-image:radial-gradient(ellipse 3.5% 1.4% at 50.3% 27%,#000 65%,transparent 100%);mask-image:radial-gradient(ellipse 3.5% 1.4% at 50.3% 27%,#000 65%,transparent 100%);opacity:1;transition:opacity 450ms ease;}
.xb-floating[data-mood="error"] .xb-fullbody-head>.xb-smile-mouth{opacity:0;}
/* Smile pixels gently move only during actual playback; not phoneme synchronization. */
.xb-floating .xb-fullbody-head>.xb-mouth-motion{opacity:0;clip-path:ellipse(2.7% .85% at 50.3% 27%);transform-origin:50.3% 27%;animation:none;}
.xb-floating[data-speaking="true"] .xb-fullbody-head>.xb-mouth-motion{opacity:1;animation:xb-floating-mouth 550ms ease-in-out infinite;}
@keyframes xb-floating-mouth{0%,100%{transform:scaleY(1)}24%{transform:scaleY(1.28)}48%{transform:scaleY(1.04)}72%{transform:scaleY(1.35)}}
.xb-floating[data-paused="true"] *{animation-play-state:paused!important;}
.xb-floating[data-motion="still"] *{animation:none!important;transition:none!important;}
.xb-floating[data-motion="still"] :is(.xb-figure,.xb-joint,.xb-head-joint){transform:none!important;}
.xb-floating[data-motion="still"] :is(.xb-mouth-motion,.xb-fullbody-eye-light,.xb-fullbody-eye-aura){opacity:0!important;}
@media(max-width:650px){.xb-floating{width:120px;height:218px;}.xb-floating-panel{width:120px;height:218px;padding-bottom:8px;gap:5px;}.xb-floating-handle{width:112px;height:168px;}.xb-floating .xb-fullbody{width:112px;height:168px;}.xb-floating-close{right:-2px;top:0;}.xb-floating-state{font-size:10px;padding:3px 7px;}}
@media(prefers-reduced-motion:reduce){.xb-floating *{animation:none!important;transition:none!important;}.xb-floating :is(.xb-figure,.xb-joint,.xb-head-joint){transform:none!important;}.xb-floating :is(.xb-mouth-motion,.xb-fullbody-eye-light,.xb-fullbody-eye-aura){opacity:0!important;}}
@media print{.xb-floating{display:none!important;}}

/* Playback choices stay beside Xiaobu; only a non-sensitive speed preference is saved. */
.xb-floating-rates{min-width:0;margin:12px 0;padding:0;border:0;}
.xb-floating-rates legend{margin-bottom:7px;font-size:12px;color:#cfb9dd;}
.xb-floating-rates>div{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;}
.xb-floating-rates button{min-width:0;margin:0;font-size:12px;}
.xb-floating-rates button[aria-pressed="true"]{background:#bd9be0;color:#201329;border-color:#dbc4f3;font-weight:600;}
.xb-floating-state{max-width:min(224px,calc(100vw - 24px));text-align:center;white-space:normal;transition:background 260ms ease,color 260ms ease,border-color 260ms ease;}
.xb-floating[data-mood="listening"] .xb-fullbody-head>.xb-smile-mouth{opacity:.92;}
.xb-floating[data-mood="thinking"] .xb-fullbody-head>.xb-smile-mouth{opacity:.78;}
.xb-floating-options:not([hidden]){animation:xb-options-in 180ms ease-out;transform-origin:50% 50%;}
@keyframes xb-options-in{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){.xb-floating-options:not([hidden]){animation:none;}.xb-floating-state{transition:none;}}

.xb-floating-original-note{display:block;line-height:1.6;color:#bfb2ce;margin:4px 2px 8px;}
