/* bot.css — АССИСТЕНТ: кнопка-кружок и панель диалога.
   Отдельным файлом, а не куском world.css, потому что ассистент это общий блок
   сайта. Пока его стили лежали в стилях главной, он и был ровно на одной
   странице из девятнадцати: человек, пришедший из поиска сразу на услугу или на
   разбор, спросить не мог ничего — ни кнопки, ни панели там просто не было.

   Подключается после site.css и до world.css: миру нужны свои поправки поверх
   (масштаб интерфейса --k, развёрнутая капсула, приглушение карты сети).
   Разметку кладёт botBlock() из build-node.js, поведение — bot.js. */

/* Кнопка по умолчанию свёрнута в кружок. Развёрнутая капсула с подписью
   «Спросить ассистента» ложится поверх кнопок в правом нижнем углу разделов,
   поэтому её разворачивает только живой мир, где там пусто. */
.bot{position:fixed;right:24px;bottom:22px;z-index:40}
.bot-launcher{position:relative;display:flex;align-items:center;gap:0;padding:9px;border-radius:50%;cursor:pointer;
  background:linear-gradient(150deg,rgba(var(--w1),.9),rgba(243,244,247,.7));
  border:1px solid rgba(var(--k1),.1);box-shadow:0 26px 50px -34px rgba(var(--sh),.7);transition:.35s}
.bot-launcher:hover{transform:translateY(-2px);border-color:rgba(199,154,60,.6)}
.bot-launch-txt{display:none;flex-direction:column;text-align:left;gap:2px}
.bot-launch-txt b{font-size:var(--t-sm);font-weight:500;color:var(--ink)}
.bot-launch-txt em{font-style:normal;font-size:var(--t-cap);letter-spacing:.18em;text-transform:uppercase;color:var(--ink-soft)}
.bot-badge{position:absolute;top:0;right:0;min-width:16px;height:16px;border-radius:100px;background:var(--gold);
  color:#14171C;font-size:var(--t-cap);display:flex;align-items:center;justify-content:center;font-weight:600}

/* аватар-узел */
.bot-node{position:relative;width:42px;height:42px;flex:0 0 42px;display:block}
.bn-core{position:absolute;left:50%;top:50%;width:17px;height:17px;margin:-8.5px 0 0 -8.5px;border-radius:50%;
  background:radial-gradient(120% 120% at 32% 26%,#fff 0%,#DCE1E9 42%,#9BA5B4 100%);
  box-shadow:0 2px 6px rgba(var(--sh),.28)}
.bn-ring{position:absolute;left:50%;top:50%;width:34px;height:34px;margin:-17px 0 0 -17px;border-radius:50%;
  border:1px solid var(--gold);opacity:.75;transform:rotate(28deg) scaleY(.42);animation:botspin 7s linear infinite}
@keyframes botspin{to{transform:rotate(388deg) scaleY(.42)}}
.bn-sat{position:absolute;width:6px;height:6px;border-radius:50%;background:#B9C1CD}
.bn-sat:nth-of-type(3){left:2px;top:9px}
.bn-sat:nth-of-type(4){right:1px;bottom:11px;background:var(--gold-soft)}
.bn-sat:nth-of-type(5){left:14px;bottom:2px;width:5px;height:5px}
.bot-node--sm{width:34px;height:34px;flex:0 0 34px}
.bot-node--sm .bn-core{width:14px;height:14px;margin:-7px 0 0 -7px}
.bot-node--sm .bn-ring{width:28px;height:28px;margin:-14px 0 0 -14px}

/* панель */
.bot-panel{position:absolute;right:0;bottom:0;width:376px;max-height:min(560px,78vh);display:none;flex-direction:column;
  border-radius:20px;overflow:hidden;background:linear-gradient(165deg,rgba(var(--w1),.94),rgba(var(--w2),.88));
  border:1px solid rgba(var(--k1),.1);box-shadow:0 44px 90px -48px rgba(var(--sh),.85)}
body.bot-open .bot-panel{display:flex;animation:botIn .42s cubic-bezier(.2,.8,.3,1)}
body.bot-open .bot-launcher{display:none}
@keyframes botIn{from{opacity:0;transform:translateY(18px) scale(.97)}to{opacity:1;transform:none}}
.bot-head{display:flex;align-items:center;gap:11px;padding:14px 14px 13px;border-bottom:1px solid rgba(var(--k1),.09)}
.bot-who{display:flex;flex-direction:column;gap:2px;flex:1}
.bot-who b{font-size:var(--t-md);font-weight:500}
.bot-who em{font-style:normal;font-size:var(--t-cap);letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft);
  display:flex;align-items:center;gap:6px}
.bot-live{width:6px;height:6px;border-radius:50%;background:#68B37A}
.bot-min{width:26px;height:26px;border-radius:8px;border:1px solid rgba(var(--k1),.12);background:rgba(var(--w1),.6);
  cursor:pointer;color:var(--ink-soft);font-size:var(--t-sm);line-height:1}
.bot-min:hover{border-color:var(--gold);color:var(--gold)}

/* лента сообщений — нанизана на золотую нить */
.bot-thread{position:relative;flex:1;overflow-y:auto;padding:18px 16px 12px 26px;display:flex;flex-direction:column;gap:12px}
.bot-thread::before{content:"";position:absolute;left:14px;top:14px;bottom:10px;width:1px;
  background:linear-gradient(180deg,rgba(199,154,60,.55),rgba(199,154,60,.08))}
.msg{position:relative;max-width:88%}
.msg p{font-size:var(--t-md);line-height:1.5;padding:11px 14px;border-radius:14px;color:var(--ink)}
.msg-dot{position:absolute;left:-16px;top:15px;width:7px;height:7px;border-radius:50%;background:var(--gold);
  box-shadow:0 0 0 3px rgba(199,154,60,.16)}
.msg-bot p{background:rgba(var(--w1),.92);border:1px solid rgba(var(--k1),.09);border-top-left-radius:4px}
.msg-me{align-self:flex-end;max-width:80%}
.msg-me p{background:linear-gradient(140deg,#1B1F26,#2C333D);color:#F3F4F6;border-top-right-radius:4px}
.msg-me .msg-dot{display:none}
.msg-typing p{display:flex;gap:5px;align-items:center}
.msg-typing i{width:5px;height:5px;border-radius:50%;background:var(--ink-soft);opacity:.5;animation:blink 1.1s infinite}
.msg-typing i:nth-child(2){animation-delay:.18s}.msg-typing i:nth-child(3){animation-delay:.36s}
@keyframes blink{0%,100%{opacity:.25;transform:translateY(0)}50%{opacity:.9;transform:translateY(-2px)}}

.bot-chips{display:flex;flex-wrap:wrap;gap:6px;padding:0 14px 12px 26px}
.bot-chips button{font-family:var(--font-t);font-size:var(--t-mini);padding:7px 12px;border-radius:100px;cursor:pointer;
  background:rgba(var(--w1),.75);border:1px solid rgba(var(--k1),.11);color:var(--ink-soft);transition:.3s}
.bot-chips button:hover{border-color:var(--gold);color:var(--gold-ink);background:rgb(var(--w1))}
.bot-input{display:flex;gap:8px;padding:12px 14px;border-top:1px solid rgba(var(--k1),.09)}
.bot-input input{flex:1;padding:11px 15px;border-radius:100px;border:1px solid rgba(var(--k1),.13);
  background:rgba(var(--w1),.8);font-family:var(--font-t);font-size:var(--t-md);color:var(--ink)}
.bot-input input:focus{outline:none;border-color:var(--gold)}
.bot-input button{width:40px;height:40px;border-radius:50%;border:none;cursor:pointer;color:#14171C;font-size:var(--t-base);
  background:linear-gradient(140deg,#B98F35,#E0BC6C);transition:.3s}
.bot-input button:hover{filter:brightness(1.08);transform:translateY(-1px)}
.bot-foot{padding:0 14px 12px;font-size:var(--t-cap);letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft);
  opacity:.7;text-align:center}

/* Ночью «свой» пузырь остаётся тёмным на светлом, а не наоборот: сообщение
   человека и ответ ассистента должны различаться в любой теме. */
html.dark .msg-me p{background:linear-gradient(140deg,#C79A3C,#8F6C24);color:#14171C}
html.dark .bot-chips button:hover{background:rgba(var(--w1),.9)}

/* Без сценария ассистент всё равно не ответит — и кнопку не показываем. */
html:not(.js) .bot{display:none}

@media (max-width:1100px){
  .bot{right:18px;bottom:18px}
  .bot-panel{width:min(360px,88vw)}
}
/* На телефоне панель занимает почти весь экран: в 360 px колонке диалог
   читается лучше, чем в окошке шириной с ладонь. */
@media (max-width:760px){
  .bot{right:12px;bottom:16px}
  .bot-panel{position:fixed;left:8px;right:8px;bottom:78px;width:auto;max-height:min(72vh,540px)}
}
