:root{--companion-safe-top:env(safe-area-inset-top,0px);--companion-safe-right:env(safe-area-inset-right,0px);--companion-safe-bottom:env(safe-area-inset-bottom,0px);--companion-safe-left:env(safe-area-inset-left,0px)}.companion-root{position:fixed;top:0;left:0;z-index:60;pointer-events:none;will-change:transform;transition:transform .42s cubic-bezier(.22,.61,.36,1)}.companion-root[data-motion=off]{transition:none}.companion-root>*{pointer-events:auto}.companion-character{display:block;padding:0;border:0;background:transparent;cursor:grab;touch-action:none;-webkit-tap-highlight-color:transparent}.companion-character:active{cursor:grabbing}.companion-character:focus-visible{outline:2px solid var(--c-gold,#f0c46e);outline-offset:4px;border-radius:50%}.companion-svg{display:block;overflow:visible}.c-body-group{animation:companion-breathe 4.5s ease-in-out infinite;transform-origin:60px 110px}@keyframes companion-breathe{0%,to{transform:translateY(0) scaleY(1)}50%{transform:translateY(-2.5px) scaleY(1.012)}}.c-eye{transform-origin:center;animation:companion-blink 6s infinite}@keyframes companion-blink{0%,92%,to{transform:scaleY(1)}95%{transform:scaleY(.08)}}.c-star{transform-origin:center;animation:companion-twinkle 3.6s ease-in-out infinite;opacity:0}.c-star-2{animation-delay:1.2s}.c-star-3{animation-delay:2.4s}@keyframes companion-twinkle{0%,to{opacity:0;transform:scale(.6)}50%{opacity:.9;transform:scale(1)}}.c-aura{opacity:.5;animation:companion-aura-pulse 5s ease-in-out infinite}@keyframes companion-aura-pulse{0%,to{opacity:.35}50%{opacity:.7}}.c-eye-closed,.c-mouth-flat,.c-mouth-open{display:none}.c-speech-wave{opacity:0;transition:opacity .2s ease}.companion-svg[data-state=speaking] .c-mouth-smile{display:none}.companion-svg[data-state=speaking] .c-mouth-open{display:block;transform-origin:60px 50px;animation:companion-talk .32s ease-in-out infinite alternate}.companion-svg[data-state=speaking] .c-speech-wave{opacity:1}.companion-svg[data-state=speaking] .c-wave-1{animation:companion-wave 1s ease-in-out infinite}.companion-svg[data-state=speaking] .c-wave-2{animation:companion-wave 1s ease-in-out .2s infinite}.companion-svg[data-state=speaking] .c-body-group{animation:companion-breathe 1.6s ease-in-out infinite}@keyframes companion-talk{0%{transform:scaleY(.45)}to{transform:scaleY(1.15)}}@keyframes companion-wave{0%,to{opacity:.25;transform:translateX(0)}50%{opacity:1;transform:translateX(2px)}}.companion-svg[data-state=sleeping] .c-eye,.companion-svg[data-state=thinking] .c-eye{display:none}.companion-svg[data-state=sleeping] .c-eye-closed,.companion-svg[data-state=thinking] .c-eye-closed{display:block}.companion-svg[data-state=thinking] .c-mouth-smile{display:none}.companion-svg[data-state=thinking] .c-mouth-flat{display:block}.companion-svg[data-state=thinking] .c-scroll{transform-origin:50px 97px;animation:companion-scroll-unroll 2.4s ease-in-out infinite alternate}.companion-svg[data-state=thinking] .c-stars{transform-origin:60px 66px;animation:companion-orbit 9s linear infinite}@keyframes companion-scroll-unroll{0%{transform:scaleX(.82)}to{transform:scaleX(1.08)}}@keyframes companion-orbit{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.companion-svg[data-state=pointing] .c-arm-right{transform-origin:84px 80px;animation:companion-point 1.6s ease-in-out infinite}@keyframes companion-point{0%,to{transform:rotate(-6deg)}50%{transform:rotate(-24deg) translateX(3px)}}.companion-svg[data-state=greeting] .c-arm-right{transform-origin:84px 80px;animation:companion-wave-hand .9s ease-in-out 3}@keyframes companion-wave-hand{0%,to{transform:rotate(-10deg)}50%{transform:rotate(-38deg)}}.companion-svg[data-state=celebrating] .c-body-group,.companion-svg[data-state=success] .c-body-group{animation:companion-hop .7s ease-in-out 2}.companion-svg[data-state=celebrating] .c-star{animation-duration:1.1s}@keyframes companion-hop{0%,to{transform:translateY(0)}40%{transform:translateY(-9px)}}.companion-svg[data-state=error] .c-eyebrow-l,.companion-svg[data-state=warning] .c-eyebrow-l{transform:translateY(-2px) rotate(10deg);transform-origin:51px 31px}.companion-svg[data-state=error] .c-eyebrow-r,.companion-svg[data-state=warning] .c-eyebrow-r{transform:translateY(-2px) rotate(-10deg);transform-origin:69px 31px}.companion-svg[data-state=error] .c-mouth-smile,.companion-svg[data-state=warning] .c-mouth-smile{display:none}.companion-svg[data-state=error] .c-mouth-flat,.companion-svg[data-state=warning] .c-mouth-flat{display:block}.companion-svg[data-state=error] .c-body-group{animation:companion-shake .5s ease-in-out 2}@keyframes companion-shake{0%,to{transform:translateX(0)}25%{transform:translateX(-3px)}75%{transform:translateX(3px)}}.companion-svg[data-state=sleeping] .c-body-group{animation:companion-breathe 7s ease-in-out infinite}.companion-svg[data-state=sleeping] .c-aura,.companion-svg[data-state=sleeping] .c-stars{opacity:.15}.companion-svg[data-state=walking] .c-body-group{animation:companion-walk .6s ease-in-out infinite}@keyframes companion-walk{0%,to{transform:rotate(-2.5deg) translateY(0)}50%{transform:rotate(2.5deg) translateY(-3px)}}.companion-bubble{position:fixed;width:-moz-max-content;width:max-content;max-width:min(320px,86vw);z-index:61;pointer-events:auto;padding:14px 16px;border-radius:14px;border:1px solid hsla(40,81%,69%,.28);background:rgba(9,16,31,.96);color:var(--c-text,#eff4ff);box-shadow:0 18px 40px rgba(0,0,0,.45);font-size:14px;line-height:1.6;word-break:keep-all;animation:companion-bubble-in .22s ease-out}@keyframes companion-bubble-in{0%{opacity:0;transform:translateY(6px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.companion-bubble-title{font-weight:700;font-size:14px;color:var(--c-gold-light,#ffe0a6);margin-bottom:5px}.companion-bubble-text{color:rgba(239,244,255,.88)}.companion-bubble-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}.companion-btn{border:1px solid hsla(40,81%,69%,.32);background:hsla(40,81%,69%,.1);color:var(--c-gold-light,#ffe0a6);border-radius:999px;padding:5px 11px;font-size:12px;font-weight:600;cursor:pointer;transition:background .16s ease}.companion-btn:hover{background:hsla(40,81%,69%,.2)}.companion-btn:focus-visible{outline:2px solid var(--c-gold,#f0c46e);outline-offset:2px}.companion-btn-quiet{border-color:rgba(146,159,191,.28);background:transparent;color:rgba(239,244,255,.6)}.companion-bubble-error{margin-top:8px;font-size:12px;color:var(--c-crimson,#ff8181)}.companion-minimized{width:48px;height:48px;border-radius:50%;border:1px solid hsla(40,81%,69%,.4);background:rgba(9,16,31,.94);color:var(--c-gold-light,#ffe0a6);font-size:20px;cursor:pointer;display:grid;place-items:center;box-shadow:0 10px 24px rgba(0,0,0,.4)}.companion-highlight{position:fixed;border-radius:10px;border:2px solid hsla(40,81%,69%,.75);box-shadow:0 0 0 4px hsla(40,81%,69%,.14);pointer-events:none;z-index:59;transition:all .3s cubic-bezier(.22,.61,.36,1);animation:companion-highlight-pulse 2s ease-in-out infinite}@keyframes companion-highlight-pulse{0%,to{box-shadow:0 0 0 4px hsla(40,81%,69%,.12)}50%{box-shadow:0 0 0 8px hsla(40,81%,69%,.05)}}.companion-panel{position:absolute;right:0;bottom:calc(100% + 12px);width:min(280px,88vw);padding:14px;border-radius:14px;border:1px solid hsla(40,81%,69%,.28);background:rgba(9,16,31,.97);box-shadow:0 18px 40px rgba(0,0,0,.5);color:var(--c-text,#eff4ff);font-size:13px}.companion-panel h3{font-size:13px;font-weight:700;color:var(--c-gold-light,#ffe0a6);margin-bottom:10px}.companion-panel-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:6px 0}.companion-panel-row label{color:rgba(239,244,255,.8)}.companion-panel input[type=range]{width:110px;accent-color:var(--c-gold,#f0c46e)}.companion-panel-menu{display:grid;gap:4px}.companion-menu-item{width:100%;text-align:left;padding:8px 10px;border-radius:8px;border:0;background:transparent;color:rgba(239,244,255,.86);font-size:13px;cursor:pointer}.companion-menu-item:hover{background:hsla(40,81%,69%,.12)}.companion-menu-item:focus-visible{outline:2px solid var(--c-gold,#f0c46e);outline-offset:-2px}.companion-audio{display:flex;align-items:center;gap:6px;margin-top:10px;padding-top:10px;border-top:1px solid rgba(146,159,191,.16)}.companion-audio-time{font-size:11px;color:rgba(239,244,255,.5);font-variant-numeric:tabular-nums;margin-left:auto}@media (max-width:640px){.companion-bubble{max-width:min(300px,84vw);font-size:13px;padding:12px 14px}}@media (prefers-reduced-motion:reduce){.companion-highlight,.companion-root{transition:none}.companion-root *,.companion-svg *{animation:none!important}.companion-bubble{animation:none}}