.ufiyo-companion{position:fixed;z-index:24;inset-inline-end:12px;top:38vh;width:112px;color:var(--ink);text-align:center;pointer-events:none;font-family:var(--font)}.companion-full{position:relative;pointer-events:auto}.companion-help{border:0;background:none;padding:0;color:inherit;display:flex;align-items:center;flex-direction:column;cursor:pointer;width:100%}.companion-figure{width:110px;height:165px;object-fit:contain;transform-origin:50% 70%;transition:transform .25s ease-out;filter:drop-shadow(0 10px 11px #285e4818);user-select:none}.companion-name{display:none}.companion-caption{display:block;background:#fffdf5;border:1px solid #e4e8dc;box-shadow:0 5px 18px #203c3108;border-radius:13px 13px 3px 13px;padding:9px 7px;font-size:11px;line-height:1.5;margin:0 0 0;transform:translateY(8px);pointer-events:none}.companion-minimize{position:absolute;top:-14px;inset-inline-end:0;border:1px solid var(--border);border-radius:50%;width:28px;height:28px;background:var(--surface);color:var(--muted);display:grid;place-items:center;font-size:17px;line-height:1;z-index:1}.companion-mini{display:none;pointer-events:auto;border:1px solid #d4e5d9;box-shadow:0 5px 20px #203c3115;border-radius:50%;width:47px;height:47px;background:#edf5e9;padding:8px}.ufiyo-companion.is-minimized{width:47px;top:auto;bottom:118px}.is-minimized .companion-full{display:none}.is-minimized .companion-mini{display:block}.is-working .companion-caption{background:#e4f3e8}.is-working:not(.is-still) .companion-figure{animation:companion-thinking 2.5s ease-in-out infinite}.ufiyo-companion button:focus-visible{outline:3px solid #d49c55;outline-offset:3px}@keyframes companion-thinking{50%{translate:0 -6px}}@media(min-width:1024px){body{transition:padding-inline-end .2s ease}body.companion-reserved{padding-inline-end:132px}}@media(max-width:1023px){.ufiyo-companion{width:68px;top:auto;bottom:107px;inset-inline-end:12px}.companion-caption{display:none}.companion-figure{width:68px;height:102px}.companion-minimize{top:-4px;inset-inline-end:-2px;width:24px;height:24px}.ufiyo-companion.is-minimized{bottom:113px}body:not(:has(.error-screen)) #app-main{padding-bottom:150px}}@media(prefers-reduced-motion:reduce){.ufiyo-companion *{animation:none!important;transition:none!important}body{transition:none!important}}
.ufiyo-companion .companion-minimize{isolation:isolate;width:44px;height:44px;border:0;background:transparent;top:-22px;inset-inline-end:-8px}.companion-minimize::before{content:"";position:absolute;inset:8px;border:1px solid var(--border);border-radius:50%;background:var(--surface);z-index:-1}.nav-mascot{display:none}@media(max-width:1023px){.ufiyo-companion{display:none}.create-link .nav-mascot{display:block;width:36px;height:39px;object-fit:contain;margin-top:-8px;margin-bottom:-6px}.create-link .create-standard-icon{display:none}}

/* Every state uses the same approved character pixels; the outer pose and
   pointer response are separate so they do not overwrite one another. */
.companion-pose{position:relative;display:block;width:110px;height:165px;transform-origin:50% 88%}
.companion-stars{position:absolute;inset:10px -5px;pointer-events:none;opacity:0}
.companion-stars i{position:absolute;color:#b58a48;font-style:normal;font-size:20px}
.companion-stars i:nth-child(1){left:1px;top:23px}.companion-stars i:nth-child(2){right:0;top:0;font-size:27px}.companion-stars i:nth-child(3){right:3px;bottom:25px;font-size:13px}
.ufiyo-companion.is-working .companion-figure{animation:none}
.ufiyo-companion:not(.is-still)[data-action=idle] .companion-pose{animation:ufiyo-breathe 5.5s ease-in-out infinite}
.ufiyo-companion:not(.is-still)[data-action=welcome] .companion-pose{animation:ufiyo-hello 1.4s ease-in-out 1}
.ufiyo-companion:not(.is-still)[data-action=thinking] .companion-pose{animation:ufiyo-consider 2.8s ease-in-out infinite}
.ufiyo-companion:not(.is-still)[data-action=success] .companion-pose{animation:ufiyo-celebrate 1.35s ease-in-out 1}
.ufiyo-companion:not(.is-still)[data-action=success] .companion-stars{animation:ufiyo-sparkle 1.8s ease-out 1}
.ufiyo-companion:not(.is-still)[data-action=error] .companion-pose{animation:ufiyo-reassure 1.5s ease-in-out 1}
.ufiyo-companion:not(.is-still)[data-action=ready] .companion-pose{animation:ufiyo-listen 1.4s ease-in-out 1}
.ufiyo-companion.is-still .companion-pose,.ufiyo-companion.is-still .companion-stars{animation:none!important}
.ufiyo-companion.is-hidden *{animation-play-state:paused!important}
@keyframes ufiyo-breathe{50%{transform:translateY(-3px) rotate(1deg)}}
@keyframes ufiyo-hello{20%{transform:translateY(-7px) rotate(-7deg)}45%{transform:translateY(-4px) rotate(6deg)}70%{transform:rotate(-3deg)}}
@keyframes ufiyo-consider{35%{transform:translateY(-5px) rotate(-3deg)}70%{transform:translateY(-2px) rotate(3deg)}}
@keyframes ufiyo-celebrate{25%{transform:translateY(-13px) rotate(-6deg)}50%{transform:translateY(0) rotate(3deg)}72%{transform:translateY(-6px) rotate(-2deg)}}
@keyframes ufiyo-sparkle{15%,60%{opacity:1}85%,100%{opacity:0;transform:translateY(-16px) scale(1.12)}}
@keyframes ufiyo-reassure{30%{transform:rotate(-5deg)}65%{transform:rotate(3deg)}}
@keyframes ufiyo-listen{40%,65%{transform:translateY(-3px) rotate(-6deg)}}
@media(max-width:1023px){html[data-ufiyo-action=thinking] .nav-mascot{animation:ufiyo-consider 2.8s ease-in-out infinite}html[data-ufiyo-action=success] .nav-mascot{animation:ufiyo-celebrate 1.35s ease-in-out 1}html[data-ufiyo-action=welcome] .nav-mascot{animation:ufiyo-hello 1.4s ease-in-out 1}}
@media(prefers-reduced-motion:reduce){.companion-pose,.companion-stars,.nav-mascot{animation:none!important}}
