/* Shared six-pose 3D illustration. One cached atlas serves both pages. */
.character-art{display:none;position:relative;width:100%;aspect-ratio:1;isolation:isolate}
.character-atlas{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.has-character-art .character-art{display:block}
.has-character-art.anime-assistant>svg,.has-character-art .contact-robot{display:none}
.character-pose{position:absolute;inset:0;display:block;opacity:0;background-image:url('/public/images/login-girl-3d-v48.webp');background-repeat:no-repeat;background-size:300% 200%;transition:opacity .18s ease;will-change:auto}
.pose-idle{background-position:0 0}.pose-watch{background-position:50% 0}.pose-private{background-position:100% 0}.pose-peek{background-position:0 100%}.pose-away{background-position:50% 100%}.pose-success{background-position:100% 100%}
.pose-private{clip-path:inset(0 0 4% 0)}
.pose-success{background-position:100% 97.65625%}
[data-state="idle"] .pose-idle,[data-state="watch"] .pose-watch,[data-state="private"] .pose-private,[data-state="peek"] .pose-peek,[data-state="away"] .pose-away,[data-state="sending"] .pose-away,[data-state="success"] .pose-success{opacity:1}
/* Privacy poses switch immediately, without briefly exposing the open-eye pose. */
[data-state="private"] .character-pose,[data-state="away"] .character-pose{transition:none}
.anime-assistant.has-character-art{width:224px;height:224px;margin:4px auto 8px}
.anime-assistant.has-character-art::after{content:"";position:absolute;bottom:5px;left:23%;right:23%;height:8px;background:#04102166;border-radius:50%;filter:blur(5px);z-index:-1}
.anime-assistant.has-character-art[data-state="watch"] .character-art{transform:translateX(calc(var(--eye-x,2px) * .4))}
.character-art{transition:transform .3s ease}
.anime-assistant.has-character-art[data-state="success"] .character-art{animation:characterDepart 1.45s cubic-bezier(.4,0,.7,1) forwards}
.contact-assistant.has-character-art .robot-stage{position:relative}
.contact-assistant.has-character-art[data-state="watch"] .character-art{transform:translateX(calc(var(--gaze-x,0px) * .35)) rotate(1deg)}
.contact-assistant.has-character-art[data-state="success"] .robot-stage{animation:characterDepart 1.4s cubic-bezier(.4,0,.7,1) forwards}
@keyframes characterDepart{0%,48%{opacity:1;transform:translateY(0)}70%{opacity:1;transform:translateY(-9px)}100%{opacity:0;transform:translate(30px,-24px) scale(.95)}}
@media(max-width:480px){.anime-assistant.has-character-art{width:198px;height:198px}.anime-assistant.has-character-art .assistant-bubble{right:-3px;top:12px}}
@media(prefers-reduced-motion:reduce){.character-art,.character-pose{transition:none!important;animation:none!important}.has-character-art .robot-stage{animation:none!important}.has-character-art[data-state="watch"] .character-art{transform:none!important}}
