.office-companion.companion-bubble-below .companion-bubble{bottom:auto;top:91px}
.office-companion.companion-bubble-below .companion-bubble:after{bottom:auto;top:-8px;border-top:0;border-bottom:8px solid #fffbd4}
.companion-grip,.companion-rope,.companion-wormhole,.companion-stars{display:none;position:absolute;pointer-events:none}
.companion-grip{left:-13px;top:-12px;width:78px;height:13px;border:2px outset #d8d8ce;background:linear-gradient(90deg,#000080,#3b80c5);box-shadow:2px 3px 0 #0005;z-index:2}
.companion-grip:before,.companion-grip:after{content:'';position:absolute;top:5px;width:13px;height:11px;border:2px solid #4a555b;border-radius:5px;background:repeating-linear-gradient(90deg,#e2e8dd 0 3px,#8a9591 3px 4px);box-shadow:0 1px white}
.companion-grip:before{left:12px}.companion-grip:after{right:12px}
.companion-rope{left:20px;top:-5px;width:16px;height:34px;border-left:3px solid #9caaac;border-right:3px solid #9caaac;transform-origin:top;transform:scaleY(var(--companion-stretch,1));filter:drop-shadow(1px 0 0 white)}
.office-companion[data-companion-state=clinging] .companion-grip,.office-companion[data-companion-state=clinging] .companion-rope{display:block}
.office-companion[data-companion-state=clinging] .paperclip-drawing{transform-origin:50% 0;animation:companion-cling .24s ease-in-out infinite alternate}
.office-companion[data-companion-state=dragged] .paperclip-drawing{transform:rotate(var(--companion-turn,0deg)) scale(var(--companion-scale,1));transition:transform .24s linear}
.office-companion[data-companion-state=clinging] .paperclip-mouth,.office-companion[data-companion-state=dragged] .paperclip-mouth,.office-companion[data-companion-state=hacked] .paperclip-mouth{width:13px;height:16px;border:2px solid #253237;background:#445053}
.office-companion[data-companion-state=clinging] .paperclip-eye:after{top:1px}
.office-companion[data-companion-state=dragged] .companion-bubble{opacity:var(--companion-scale,1)}
.companion-wormhole{left:-29px;top:-84px;width:106px;height:45px;border:3px solid #e5e8ff;border-radius:50%;background:radial-gradient(ellipse,#030719 25%,#201658 49%,#9c70ee 65%,#b8dfff 71%,transparent 75%);box-shadow:0 0 9px #dfc4ff,0 0 26px #9164cf,inset 0 0 13px #82c6ec;transform:rotate(-9deg);z-index:-1}
.companion-wormhole:after{content:'';position:absolute;inset:-7px;border:1px dashed #c3c5ff;border-radius:50%}
.office-companion[data-companion-state=returning] .companion-wormhole{display:block;animation:companion-portal 1.8s ease both}
.office-companion[data-companion-state=returning] .paperclip-drawing{animation:companion-drop 1.8s ease both}
.office-companion[data-companion-state=returning] .companion-bubble{animation:companion-bubble-in 1.3s both}
.companion-stars{left:-10px;top:-18px;width:70px;text-align:center;font:19px monospace;color:#ffd86b;text-shadow:0 0 5px #fff}
.companion-stars:after{content:'✧ · ★ · ✧'}
.office-companion[data-companion-state=dazed] .companion-stars{display:block;animation:companion-stars 1.8s ease-in-out infinite alternate}
.office-companion[data-companion-state=dazed] .paperclip-eye:after{transform:rotate(35deg);border-radius:0;background:repeating-linear-gradient(45deg,#333 0 2px,#fff 2px 3px)}
.office-companion[data-companion-state=hacked] .paperclip-drawing{animation:companion-hack-panic .7s steps(2,end) infinite;filter:drop-shadow(-2px 0 #53fc8b) drop-shadow(2px 0 #d664a6)}
.office-companion[data-companion-state=hacked] .companion-bubble{border-color:#507b4e;box-shadow:-3px 0 #61c98855,3px 1px #e869af44}
.office-companion[data-companion-state=recovered] .paperclip-drawing{animation:companion-reconnect 1.4s ease both}
.desktop[data-singularity=collapse] .office-companion{opacity:1;z-index:26}
.desktop[data-singularity=void] .office-companion[data-companion-returned]{visibility:visible;z-index:26}
@keyframes companion-cling{from{transform:rotate(-15deg) translateY(4px) scaleY(1.08)}to{transform:rotate(18deg) translateY(8px) scaleY(1.18)}}
@keyframes companion-portal{0%{opacity:0;scale:.1}20%,70%{opacity:1;scale:1}100%{opacity:0;scale:.05}}
@keyframes companion-drop{0%,15%{opacity:0;transform:translateY(-96px) scale(.15) rotate(-45deg)}25%{opacity:1}65%{transform:translateY(6px) scale(1.12,.8) rotate(12deg)}82%{transform:translateY(-15px) scale(.94,1.04) rotate(-9deg)}100%{transform:none}}
@keyframes companion-bubble-in{0%,65%{opacity:0}100%{opacity:1}}
@keyframes companion-stars{to{transform:translateX(7px) rotate(8deg)}}
@keyframes companion-hack-panic{0%,100%{transform:translate(-5px,0) rotate(-12deg)}35%{transform:translate(5px,-7px) rotate(17deg)}70%{transform:translate(0,-3px) skewX(-10deg)}}
@keyframes companion-reconnect{0%{opacity:0;transform:scaleY(.05)}30%{opacity:.4;transform:scaleY(.6) skewX(9deg)}60%{opacity:.8;transform:scaleY(1.08) skewX(-5deg)}100%{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.office-companion .companion-wormhole,.office-companion .companion-stars,.office-companion .companion-bubble{animation:none!important}.office-companion[data-companion-state=returning] .companion-wormhole{opacity:.7}.office-companion[data-companion-state=dragged] .paperclip-drawing{transition:none}.office-companion[data-companion-state=hacked] .paperclip-drawing{filter:none}}
