:root{--paper:#f4f8f6;--card:#fff;--ink:#0d1f1a;--muted:#56675f;--emerald:#0a7a56;--emerald-deep:#075c41;--emerald-ink:#063d2c;--mint:#35e3a2;--mint-soft:#dff7ec;--line:#0d1f1a1a;--line-strong:#0d1f1a33;--error:#b3362b;--error-soft:#fbeae8;--warn:#96621b;--warn-soft:#f9f0e1;--r:12px;--mono:"JetBrains Mono",Consolas,monospace}
*{box-sizing:border-box}html,body{height:100%;margin:0}
body{font-family:Manrope,"Segoe UI",sans-serif;background:var(--paper);color:var(--ink);font-size:15px;line-height:1.5}
#app,.shell{height:100%}
.boot{padding:3rem;text-align:center;color:var(--muted)}
.btn{background:var(--emerald);color:#fff;border:0;border-radius:999px;padding:.6rem 1.2rem;font:inherit;font-weight:700;cursor:pointer}
.btn:hover{background:var(--emerald-deep)}.btn:disabled{opacity:.5;cursor:default}
.link{background:0 0;border:0;color:var(--emerald);font:inherit;font-size:.85rem;cursor:pointer;padding:0 .2rem;text-decoration:underline}
.icon{background:0 0;border:0;font-size:1.2rem;cursor:pointer;color:var(--ink);padding:.3rem .5rem;border-radius:8px}
.icon:hover{background:var(--mint-soft)}
.muted{color:var(--muted)}.small{font-size:.85rem}.err{color:var(--error);min-height:1.2em;font-size:.9rem}
/* вход */
.login{min-height:100%;display:grid;place-items:center;padding:1rem;background:linear-gradient(135deg,#0a7a56,#12a374 55%,#35e3a2)}
.login-box{background:var(--card);border-radius:18px;padding:2rem;width:min(400px,100%);box-shadow:0 24px 60px #06301f55;display:flex;flex-direction:column;gap:.8rem}
.brand{display:flex;align-items:center;gap:.6rem;font-weight:800;font-size:1.2rem}.brand b{color:var(--emerald)}
.login-box label{display:flex;flex-direction:column;gap:.3rem;font-size:.85rem;font-weight:700;color:var(--muted)}
.login-box input{font:inherit;padding:.6rem .8rem;border:1.5px solid var(--line-strong);border-radius:10px}
.login-box input:focus{outline:2px solid var(--emerald);border-color:transparent}
/* оформление */
.shell{display:grid;grid-template-columns:290px 1fr;height:100%}
.side{background:linear-gradient(180deg,#063d2c,#0a7a56 140%);color:#eafff5;display:flex;flex-direction:column;min-height:0}
.side-head{display:flex;align-items:center;gap:.6rem;padding:1rem 1rem .6rem;font-weight:800;font-size:1.05rem}.side-head b{color:#aef4d4}.side-head img{border-radius:8px}
#closeSide{display:none;margin-left:auto;color:#fff}
.btn.new{margin:.3rem 1rem .8rem;background:var(--mint);color:var(--emerald-ink);text-align:left}
.threads{flex:1;overflow:auto;padding:0 .6rem}
.th{display:block;padding:.55rem .7rem;border-radius:10px;cursor:pointer;color:#eafff5;text-decoration:none;margin-bottom:2px}
.th:hover{background:#ffffff14}.th.on{background:#ffffff22}
.th .t{display:block;font-weight:700;font-size:.9rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.th .m{display:block;font-size:.72rem;opacity:.7;font-family:var(--mono)}
.th.s-running .t::before{content:"● ";color:var(--mint)}.th.s-queued .t::before{content:"○ ";color:#aef4d4}.th.s-failed .t::before{content:"✖ ";color:#ffb4a8}
.side-foot{padding:.8rem 1rem;border-top:1px solid #ffffff22;font-size:.85rem}
.bridge{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap}.bridge small{width:100%;opacity:.7;font-family:var(--mono);font-size:.7rem;padding-left:1rem}
.dot{width:9px;height:9px;border-radius:50%;background:#ffb4a8;box-shadow:0 0 8px #ffb4a8}.dot.on{background:var(--mint);box-shadow:0 0 10px var(--mint)}
.me{margin-top:.5rem;display:flex;justify-content:space-between;align-items:center}.me .link{color:#aef4d4}
.main{display:flex;flex-direction:column;min-height:0;min-width:0}
.top{display:flex;align-items:center;gap:.6rem;padding:.6rem 1rem;background:var(--card);border-bottom:1px solid var(--line)}
#openSide{display:none}.title{font-weight:800;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chat{flex:1;overflow:auto;padding:1.2rem;display:flex;flex-direction:column;gap:1.1rem}
.empty{margin:auto;max-width:620px;text-align:center}.empty h2{font-size:1.4rem}.empty p{color:var(--ink)}
.msg{display:flex;flex-direction:column;gap:.7rem;max-width:960px;width:100%;margin:0 auto}
.user,.bot{display:flex;gap:.7rem;align-items:flex-start}
.av{width:34px;height:34px;border-radius:50%;background:var(--emerald-ink);color:#fff;display:grid;place-items:center;font-weight:800;flex:0 0 auto}
.av.c{background:var(--mint);color:var(--emerald-ink)}
.bubble{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:.7rem 1rem;flex:1;min-width:0}
.user .bubble{background:var(--mint-soft);border-color:#0a7a5633}
.meta{font-family:var(--mono);font-size:.72rem;color:var(--muted);margin-bottom:.3rem;display:flex;gap:.3rem;align-items:center;flex-wrap:wrap}
.st{font-weight:700;padding:.05rem .45rem;border-radius:999px;background:#eee}.st.r{background:var(--mint-soft);color:var(--emerald-deep)}.st.d{background:#e2f5ec;color:var(--emerald-deep)}.st.f{background:var(--error-soft);color:var(--error)}.st.q{background:var(--warn-soft);color:var(--warn)}.st.c{background:#eee}
.text{white-space:pre-wrap;overflow-wrap:anywhere}
.chip{display:inline-flex;align-items:center;gap:.3rem;background:#fff;border:1px solid var(--line-strong);border-radius:999px;padding:.15rem .6rem;font-size:.8rem;margin:.2rem .2rem 0 0;text-decoration:none;color:var(--ink)}
.chip b{cursor:pointer;color:var(--error)}
.tools{border:1px dashed var(--line-strong);border-radius:10px;margin:.3rem 0 .6rem;font-size:.82rem}
.tools-head{padding:.4rem .7rem;cursor:pointer;color:var(--muted);font-weight:700;display:flex;align-items:center;gap:.4rem}
.tools-body{display:none;max-height:360px;overflow:auto;padding:.2rem .7rem .5rem;border-top:1px dashed var(--line-strong)}
.tools.open .tools-body{display:block}
.ev{padding:.2rem 0;font-family:var(--mono);font-size:.75rem;overflow-wrap:anywhere;border-bottom:1px solid #0d1f1a0a}
.ev.tool b{color:var(--emerald-deep)}.ev.res{color:var(--muted);padding-left:1.4rem;white-space:pre-wrap;max-height:120px;overflow:hidden}
.ev.think{color:#7a6a3a;font-style:italic;padding-left:1.4rem}.ev.err{color:var(--error)}.ev.info{color:var(--muted)}
.spin{display:inline-block;width:12px;height:12px;border:2px solid var(--mint-soft);border-top-color:var(--emerald);border-radius:50%;animation:sp .8s linear infinite}
@keyframes sp{to{transform:rotate(360deg)}}
.md{overflow-wrap:anywhere}.md.live{opacity:.75}.md p{margin:.4rem 0}.md h1,.md h2,.md h3{margin:.9rem 0 .3rem;line-height:1.25}.md h2{font-size:1.15rem}.md h3{font-size:1rem}
.md pre{background:#0d1f1a;color:#eafff5;padding:.7rem .9rem;border-radius:10px;overflow:auto;font-size:.8rem}.md code{font-family:var(--mono);font-size:.85em;background:var(--mint-soft);padding:0 .3em;border-radius:4px}.md pre code{background:0 0;padding:0}
.md table{border-collapse:collapse;font-size:.88rem;margin:.5rem 0}.md th,.md td{border:1px solid var(--line-strong);padding:.3rem .55rem;vertical-align:top}.md th{background:var(--mint-soft)}
.md a{color:var(--emerald)}.md ul,.md ol{padding-left:1.3rem}.md blockquote{border-left:4px solid var(--mint);margin:.5rem 0;padding:.2rem .8rem;color:var(--muted)}
.errbox{background:var(--error-soft);color:var(--error);padding:.5rem .8rem;border-radius:8px;font-family:var(--mono);font-size:.8rem;white-space:pre-wrap;margin-top:.4rem}
.composer{padding:.6rem 1rem calc(.8rem + env(safe-area-inset-bottom));background:var(--card);border-top:1px solid var(--line)}
.composer .row{display:flex;gap:.5rem;align-items:flex-end;max-width:960px;margin:0 auto}
.composer textarea{flex:1;font:inherit;padding:.65rem .9rem;border:1.5px solid var(--line-strong);border-radius:14px;resize:none;min-height:44px;max-height:220px}
.composer textarea:focus{outline:2px solid var(--emerald);border-color:transparent}
.composer select{font:inherit;font-size:.85rem;padding:.55rem .6rem;border:1.5px solid var(--line-strong);border-radius:10px;background:#fff}
.attach{cursor:pointer}.composer .files{max-width:960px;margin:0 auto .3rem}
@media (max-width:900px){.shell{grid-template-columns:1fr}.side{position:fixed;inset:0;z-index:20;width:min(320px,86vw);transform:translateX(-100%);transition:transform .2s}.shell.open .side{transform:none}#openSide,#closeSide{display:inline-block}.chat{padding:.8rem}.composer select{display:none}.meta{font-size:.68rem}}
