/* ═══════════════════════════════════════════════════════════════
   ПОМОЩНИК
   ═══════════════════════════════════════════════════════════════ */
.ai-fab{position:fixed;right:24px;bottom:24px;z-index:90;width:54px;height:54px;border:0;border-radius:18px;
  background:linear-gradient(135deg,var(--ai),var(--ai-2));color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;
  box-shadow:0 4px 14px -4px var(--ai-a30),0 12px 30px -12px rgba(0,0,0,.4);
  transition:transform .28s var(--e-spring),filter .2s var(--e),opacity .25s}
.ai-fab:hover{transform:translateY(-2px) scale(1.06);filter:brightness(1.08)}
.ai-fab:active{transform:scale(.94)}
.ai-fab svg{stroke:#fff}
.ai-fab::after{content:"";position:absolute;inset:-4px;border-radius:22px;border:2px solid var(--ai-a30);opacity:0;animation:fabring 3s 1.5s ease-out infinite}
@keyframes fabring{0%{opacity:.7;transform:scale(.9)}70%{opacity:0;transform:scale(1.25)}100%{opacity:0}}
body.drawer-on .ai-fab{transform:scale(0);pointer-events:none;opacity:0}
.main{transition:margin-right .42s var(--e-out)}
body.drawer-on .main{margin-right:420px}
body.drawer-on .col-1{display:none}
body.drawer-on .work{grid-template-columns:minmax(360px,420px) minmax(0,1fr)}
body.drawer-on #frame{zoom:.9}
body.drawer-on .top .sub{display:none}
.scrim{display:none;position:fixed;inset:0;z-index:94;background:rgba(10,14,20,.18);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);
  animation:fade .3s var(--e-out) both}
:root[data-th="night"] .scrim,:root[data-th="violet"] .scrim,:root[data-th="crimson"] .scrim{background:rgba(0,0,0,.45)}
.drawer{position:fixed;top:0;right:0;bottom:0;z-index:95;width:420px;max-width:94vw;display:flex;flex-direction:column;
  background:var(--surface);border-left:.5px solid var(--hair);box-shadow:-24px 0 70px -30px rgba(0,0,0,.5);
  animation:slidein .42s var(--e-out) both}
@keyframes slidein{from{transform:translateX(40px);opacity:0}to{transform:none;opacity:1}}
.drawer.out{animation:slideout .28s var(--e) both}
@keyframes slideout{to{transform:translateX(40px);opacity:0}}
.drawer-h{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:.5px solid var(--hair)}
.drawer-h>b{flex:1;font-size:14px;font-weight:700;letter-spacing:-.02em;display:flex;align-items:center;gap:8px}
.drawer-h>b i{width:26px;height:26px;border-radius:8px;background:linear-gradient(135deg,var(--ai),var(--ai-2));
  display:flex;align-items:center;justify-content:center;font-style:normal}
.drawer-h>b i svg{stroke:#fff}
.pw{flex:0 0 auto}
.pw button{font-size:11.5px;padding:6px 11px}
.drawer-x{width:30px;height:30px;border:0;border-radius:9px;background:var(--fill);color:var(--ink-2);
  cursor:pointer;font-size:18px;line-height:1;transition:background .18s var(--e),transform .18s var(--e-spring)}
.drawer-x:hover{background:var(--fill-2);transform:rotate(90deg)}
.drawer-hint{padding:8px 16px;font-size:11px;color:var(--ink-3);border-bottom:.5px solid var(--hair)}
.drawer-tools{display:flex;align-items:center;gap:10px;padding:9px 16px;border-bottom:.5px solid var(--hair);background:var(--surface);transition:background .3s}
.drawer-tools.on{background:var(--ai-a12)}
.drawer-tools .bt-i{width:28px;height:28px;border-radius:8px;background:var(--fill);color:var(--ink-2);display:flex;align-items:center;justify-content:center;transition:background .3s,color .3s}
.drawer-tools .bt-i svg{stroke:currentColor}
.drawer-tools.on .bt-i{background:linear-gradient(135deg,var(--ai),var(--ai-2));color:#fff}
.drawer-tools .bt-t{flex:1;min-width:0}
.drawer-tools .bt-t b{display:block;font-size:12.5px;font-weight:700}
.drawer-tools .bt-t s{display:block;text-decoration:none;font-size:10.5px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.drawer-tools .sw{width:40px;height:24px;flex:0 0 40px}
.drawer-tools .sw i{width:19px;height:19px;top:2.5px;left:2.5px}
.drawer-tools .sw[aria-checked="true"]{background:var(--ai)}
.drawer-tools .sw[aria-checked="true"] i{transform:translateX(16px)}
.xwrap{position:relative}
.xb-add .chip.rc{margin-left:auto;background:var(--acc-a8);color:var(--acc);box-shadow:none;gap:4px}
.xb-add .chip.rc::before{content:none}
.xb-add .chip.rc svg{stroke:currentColor;transition:transform .3s var(--e)}
.xb-add .chip.rc[aria-expanded="true"] svg{transform:rotate(180deg)}
.xwrap .pop{top:auto;bottom:calc(100% - 0px);left:auto;right:0;width:min(360px,100%)}
.xwrap .pop::before{display:none}
.rc-list{display:flex;flex-direction:column;gap:5px;max-height:320px;overflow-y:auto}
.rc-i{justify-content:flex-start}
.rc-i span{min-width:0;text-align:left}
.rc-i b{display:block;font-size:12.5px}
.rc-i s{display:block;text-decoration:none;font-size:11px;font-weight:500;opacity:.65;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rc-i:hover s{opacity:.85}
.drawer-b{flex:1;min-height:0;display:flex;flex-direction:column}
.chat{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:10px;min-height:0;scroll-behavior:smooth;background:var(--page)}
.chat::-webkit-scrollbar{width:8px}
.chat::-webkit-scrollbar-thumb{background:var(--hair-2);border-radius:8px;border:2px solid transparent;background-clip:content-box}
.msg{max-width:86%;padding:11px 13px;border-radius:15px;font-size:13px;line-height:1.55;animation:msgin .38s var(--e-out) both;
  overflow-wrap:anywhere}
@keyframes msgin{from{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}
.msg.me{align-self:flex-end;background:var(--acc);color:var(--on-acc);border-bottom-right-radius:5px}
.msg.ai{align-self:flex-start;background:var(--surface);color:var(--ink);border-bottom-left-radius:5px;box-shadow:var(--sh-1)}
.msg .ctx{opacity:.7;font-size:11px;margin-bottom:4px;font-weight:600}
.msg .tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:9px;padding-top:9px;border-top:.5px solid var(--hair)}
.msg .tag{font:600 10.5px/1 var(--ui);padding:5px 8px;border-radius:7px;background:var(--ai-a12);color:var(--ai);letter-spacing:-.005em;animation:pop .32s var(--e-out) both}
.msg .tag:nth-child(2){animation-delay:.06s}.msg .tag:nth-child(3){animation-delay:.12s}.msg .tag:nth-child(4){animation-delay:.18s}
.msg .tag:nth-child(5){animation-delay:.24s}.msg .tag:nth-child(n+6){animation-delay:.3s}
.msg .undo.keep{margin-left:6px;color:var(--ai);border-color:var(--ai-a30)}
.msg.sys{align-self:center;background:transparent;color:var(--ink-3);font-size:11.5px;text-align:center;max-width:100%;padding:4px 8px}
.msg.sys b{color:var(--ink-2)}
.msg .chg{margin-top:8px;padding-top:8px;border-top:.5px solid var(--hair-2);font-size:11.5px;color:var(--ink-2)}
.msg .chg b{display:block;color:var(--ink);font-weight:600;margin-bottom:3px}
.msg .mdl{margin-top:7px;font-size:10px;letter-spacing:.03em;color:var(--ink-3);opacity:.6}
.msg .undo{margin-top:8px;border:.5px solid var(--hair-2);background:var(--surface);color:var(--ink-2);font:600 11px/1 var(--ui);
  padding:7px 10px;border-radius:8px;cursor:pointer;transition:color .2s,transform .18s var(--e-spring)}
.msg .undo:hover{color:var(--ink);transform:translateY(-1px)}
.msg .undo:disabled{opacity:.6;transform:none}
.msg.fmt{max-width:100%;align-self:stretch}
.msg.fmt textarea{width:100%;margin-top:9px;resize:vertical;min-height:110px;font:500 12.5px/1.55 var(--ui);
  color:var(--ink);background:var(--surface);border:.5px solid var(--hair-2);border-radius:10px;padding:10px 11px}
.msg.fmt textarea:focus{outline:none;border-color:var(--acc-a40);box-shadow:0 0 0 3px var(--acc-a12)}
.fmt-a{display:flex;gap:7px;margin-top:9px}
.msg.wait{display:flex;align-items:center;gap:9px;color:var(--ink-2)}
.msg.wait .st{font-size:12px;background:linear-gradient(90deg,var(--ink-3) 0%,var(--ai) 50%,var(--ink-3) 100%);background-size:220% 100%;
  -webkit-background-clip:text;background-clip:text;color:transparent;animation:shimmer 1.8s linear infinite}
.msg .w{animation:wordin .32s var(--e-out) both}
@keyframes wordin{from{opacity:0;filter:blur(3px)}to{opacity:1;filter:none}}
.msg .nx{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px}
.msg .nx button{border:0;background:var(--ai-a12);color:var(--ai);font:600 11.5px/1 var(--ui);padding:7px 10px;border-radius:9px;cursor:pointer;
  animation:pop .3s var(--e-out) both;transition:background .18s,color .18s,transform .18s var(--e-spring)}
.msg .nx button:hover{background:var(--ai);color:#fff;transform:translateY(-1px)}
.msg .nx button:active{transform:scale(.95)}
.dots{display:inline-flex;gap:3px;align-items:center}
.dots span{display:inline-block;width:5px;height:5px;border-radius:50%;background:var(--ai);animation:blink 1.2s infinite}
.dots span:nth-child(2){animation-delay:.2s}.dots span:nth-child(3){animation-delay:.4s}
.welcome{align-self:stretch;max-width:100%;padding:14px 15px;border-radius:14px;background:var(--surface);box-shadow:var(--sh-1);animation:msgin .4s var(--e-out) both}
.welcome b{display:block;font-size:13px;margin-bottom:5px}
.welcome p{margin:0 0 10px;font-size:12.5px;line-height:1.55;color:var(--ink-2)}
.welcome .ex{display:flex;flex-wrap:wrap;gap:6px}
.welcome .ex button{border:0;background:var(--ai-a12);color:var(--ai);font:600 12px/1 var(--ui);
  padding:8px 11px;border-radius:9px;cursor:pointer;transition:transform .18s var(--e-spring),background .2s,color .2s}
.welcome .ex button:hover{background:var(--ai);color:#fff;transform:translateY(-1px)}
.chat-q{display:flex;gap:6px;flex-wrap:wrap;padding:10px 16px 0;border-top:.5px solid var(--hair);background:var(--surface)}
.chat-q .chip{font-size:11.5px;padding:7px 10px;background:transparent;box-shadow:inset 0 0 0 .5px var(--hair-2)}
.chat-q .chip:hover{background:var(--ai-a12);color:var(--ai);box-shadow:none}
.selctx{display:flex;align-items:center;gap:7px;margin:10px 16px 0;padding:8px 10px;border-radius:10px;background:var(--ai-a12);color:var(--ai);
  font:600 12px/1.3 var(--ui);animation:pop .22s var(--e-out) both}
.selctx svg{stroke:currentColor;flex:0 0 auto}
.selctx span{flex:0 0 auto}
.selctx i{flex:1;min-width:0;font-style:normal;font-weight:500;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.selctx button{flex:0 0 22px;height:22px;border:0;border-radius:6px;background:transparent;color:var(--ai);cursor:pointer;font-size:15px;line-height:1;transition:background .18s}
.selctx button:hover{background:var(--surface)}
.chat-q+.selctx{margin-top:10px}
.selctx.blk{background:linear-gradient(120deg,var(--ai-a12),var(--ai-a30));box-shadow:inset 0 0 0 1px var(--ai-a30)}
.selbar .lb{font:700 11px/1 var(--ui);color:var(--ai);padding:0 4px 0 6px;white-space:nowrap}
.chat-in{display:flex;gap:9px;align-items:flex-end;padding:10px 16px 14px;background:var(--surface)}
.chat-in textarea{flex:1;resize:none;max-height:140px;font:500 13.5px/1.5 var(--ui);color:var(--ink);
  background:var(--fill);border:.5px solid transparent;border-radius:12px;padding:11px 13px;
  transition:background .2s,border-color .2s,box-shadow .2s}
.chat-in textarea:focus{outline:none;background:var(--raise);border-color:var(--ai-a30);box-shadow:0 0 0 4px var(--ai-a12)}
.chat-in button{flex:0 0 42px;height:42px;border:0;border-radius:12px;background:linear-gradient(135deg,var(--ai),var(--ai-2));color:#fff;
  cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 12px -4px var(--ai-a30);
  transition:transform .2s var(--e-spring),filter .2s var(--e),opacity .2s}
.chat-in button svg{stroke:#fff}
.chat-in button:hover{filter:brightness(1.08);transform:translateY(-1px)}
.chat-in button:active{transform:scale(.93)}
.chat-in button:disabled{opacity:.5;cursor:default;transform:none}
