/* Живые реплики кота в кабинете и на /chat. Пузырь накладывается поверх
   раскладки и ничего не двигает: растёт вверх от того места, где кот говорит. */
.say-host{position:relative}
.say.say-live{
  position:absolute;z-index:6;display:block;width:max-content;max-width:220px;
  font-size:16px;line-height:1.1;text-align:left;
  transition:opacity .45s ease, transform .3s cubic-bezier(.3,1.5,.5,1);
}
/* на /chat у .say своего хвостика нет */
.say.say-live::after{
  content:"";position:absolute;left:22px;bottom:-9px;width:12px;height:12px;
  background:#fff;border-right:2px solid #0B0B0E;border-bottom:2px solid #0B0B0E;transform:rotate(45deg);
}
.say.say-live.fixed{position:fixed;z-index:60}
.say.say-live.out{opacity:0;transform:translateY(6px) scale(.94);pointer-events:none}
.say.say-live.act{cursor:pointer}
.say.say-live.act:hover{box-shadow:3px 3px 0 var(--lime,#A8FB05),0 0 0 3px rgba(168,251,5,.35)}
.say.say-live .go{font-weight:900;white-space:nowrap}
.say.say-live.tail-r::after{left:auto;right:22px}
.say.say-live.tail-c::after{left:50%;margin-left:-6px}
/* хвостик в точке --tx от левого края: пузырь сдвинули внутрь карточки, а
   хвостик остался над котом (cat-say.js, K.sayPos) */
.say.say-live.tail-x::after{left:var(--tx,22px);right:auto;margin-left:-7px}
.say.say-live{overflow-wrap:break-word}
/* пузырь под строкой: хвостик сверху */
.say.say-live.tail-up::after{bottom:auto;top:-9px;transform:rotate(225deg)}
/* место под реплику прямо в разметке (приветствие /chat): пустое — невидимое, но место держит */
.say.say-slot{transition:opacity .45s ease, transform .3s cubic-bezier(.3,1.5,.5,1);max-width:min(280px,100%)}
.say.say-slot.out{opacity:0;transform:translateY(4px);pointer-events:none}
.say.say-slot:empty{min-height:1.1em;min-width:40px}
.say.say-slot.act{cursor:pointer}
.say.say-slot .go{font-weight:900;white-space:nowrap}
/* свой текст кота прячем, пока поверх говорит живая реплика */
.say.say-hush{opacity:0;transition:opacity .3s}
.say-poke{cursor:pointer}

@media (max-width:600px){
  .say.say-live{font-size:13.5px;max-width:150px;padding:5px 9px 6px}
}
@media (prefers-reduced-motion: reduce){
  .say.say-live,.say.say-hush,.say.say-slot{transition:none}
  .say.say-slot.out{transform:none}
  .say.say-live.out{transform:none}
}
