/* ct.mingmingjieshuo.com.cn — 样式 */
:root{
  --bg:#f5f6fa;
  --panel:#ffffff;
  --ink:#161922;
  --ink-2:#565d70;
  --ink-3:#8c93a6;
  --line:#e8eaf3;
  --line-2:#f0f2f8;
  --brand:#5b6ef5;
  --brand-2:#8b5cf6;
  --brand-soft:#eef0ff;
  --ok:#12a150;
  --err:#dc2626;
  --warn:#d97706;
  --radius:16px;
  --shadow:0 1px 2px rgba(22,25,34,.04),0 8px 24px rgba(22,25,34,.06);
  --font:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei",system-ui,sans-serif;
  --mono:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono",monospace;
}
*{box-sizing:border-box}
/* display:grid 会覆盖 hidden 的默认 display:none，必须显式兜住 */
[hidden]{display:none !important}
html,body{height:100%;margin:0}
body{
  font-family:var(--font);color:var(--ink);background:var(--bg);
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
  font-size:15px;line-height:1.65;overflow:hidden;
}
button{font-family:inherit}
::selection{background:#dfe3ff}

/* ============ 布局 ============ */
.app{display:grid;grid-template-columns:266px 1fr;height:100dvh}

/* ============ 侧栏 ============ */
.sidebar{
  display:flex;flex-direction:column;gap:14px;padding:18px 14px;
  background:var(--panel);border-right:1px solid var(--line);min-height:0;
}
.brand{display:flex;align-items:center;gap:10px;padding:2px 4px 6px}
.brand-logo{
  width:34px;height:34px;border-radius:10px;display:grid;place-items:center;
  background:linear-gradient(135deg,var(--brand),var(--brand-2));color:#fff;
  font-weight:800;font-size:13px;letter-spacing:.5px;
  box-shadow:0 4px 12px rgba(91,110,245,.28)
}
.brand-text{min-width:0}
.brand-name{font-weight:700;font-size:14.5px;letter-spacing:.2px}
.brand-sub{font-size:11.5px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.btn-new{
  display:flex;align-items:center;justify-content:center;gap:7px;
  width:100%;padding:10px 14px;border-radius:12px;cursor:pointer;
  border:1px solid var(--line);background:#fff;color:var(--ink);
  font-size:14px;font-weight:600;transition:.16s;
}
.btn-new:hover{background:var(--brand-soft);border-color:#c9cfff;color:#3d4bd6}
.btn-new:active{transform:scale(.985)}

.conv-list-label{font-size:11.5px;font-weight:600;color:var(--ink-3);letter-spacing:.4px;padding:0 6px;margin-top:2px}
.conv-list{flex:1;overflow-y:auto;min-height:0;display:flex;flex-direction:column;gap:2px;margin:-2px -4px;padding:2px 4px}
.conv-item{
  display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:9px;cursor:pointer;
  font-size:13.5px;color:var(--ink-2);border:1px solid transparent;
}
.conv-item:hover{background:var(--line-2)}
.conv-item.active{background:var(--brand-soft);color:#3d4bd6;font-weight:600;border-color:#dfe3ff}
.conv-item .t{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.conv-item .del{opacity:0;padding:2px;border-radius:6px;color:var(--ink-3);line-height:0}
.conv-item:hover .del{opacity:1}
.conv-item .del:hover{background:#fff;color:var(--err)}
.conv-empty{font-size:12.5px;color:var(--ink-3);padding:10px 8px;line-height:1.6}

.sidebar-foot{border-top:1px solid var(--line-2);padding-top:11px;display:flex;align-items:center;justify-content:space-between}
.status{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--ink-2)}
.status i{width:7px;height:7px;border-radius:50%;background:var(--ink-3);display:block;transition:.2s}
.status.ok i{background:var(--ok);box-shadow:0 0 0 3px rgba(18,161,80,.12)}
.status.busy i{background:var(--warn);box-shadow:0 0 0 3px rgba(217,119,6,.14);animation:pulse 1.1s infinite}
.status.err i{background:var(--err);box-shadow:0 0 0 3px rgba(220,38,38,.12)}
@keyframes pulse{50%{opacity:.35}}
.credit{font-size:11px;color:var(--ink-3);font-family:var(--mono)}
.foot-right{display:flex;align-items:center;gap:6px;min-width:0}
.foot-link{
  font-size:11.5px;color:var(--ink-3);text-decoration:none;padding:2px 7px;
  border-radius:6px;border:1px solid transparent;white-space:nowrap;transition:.14s
}
.foot-link:hover{background:var(--brand-soft);border-color:#dfe3ff;color:#3d4bd6}

/* ============ 主区 ============ */
.main{display:flex;flex-direction:column;min-width:0;min-height:0;background:var(--bg)}
.topbar{
  height:56px;flex:0 0 56px;display:flex;align-items:center;gap:10px;
  padding:0 18px;background:rgba(255,255,255,.82);backdrop-filter:saturate(1.6) blur(10px);
  border-bottom:1px solid var(--line);z-index:5;
}
.topbar-title{font-weight:650;font-size:14.5px;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.topbar-right{display:flex;gap:8px;align-items:center}
.model-badge{
  font-family:var(--mono);font-size:11.5px;font-weight:600;color:#4356e8;
  background:var(--brand-soft);border:1px solid #dfe3ff;border-radius:8px;
  padding:2px 8px;letter-spacing:.2px;cursor:default;user-select:none;white-space:nowrap;
}
/* 模型选择器 */
.model-sel{max-width:240px;padding:3px 4px 3px 8px}
.model-sel select{
  max-width:200px;text-overflow:ellipsis;color:#3d4bd6;font-weight:650;
}
.model-sel select option[data-free="1"]{color:#0f7a3d}
/* 常驻的 token / 耗时行 */
.meta-line{
  display:flex;flex-wrap:wrap;gap:4px 10px;margin-top:7px;
  font-family:var(--mono);font-size:11px;color:var(--ink-3);line-height:1.5;
}
.meta-line b{font-weight:600;color:var(--ink-2)}
.meta-line .tag{
  background:#f1f3fa;border:1px solid #e6e9f4;border-radius:5px;padding:0 5px;color:#5a6280
}
.meta-line .tag.m{background:var(--brand-soft);border-color:#dfe3ff;color:#4356e8}
.sel{display:flex;align-items:center;gap:5px;font-size:12px;color:var(--ink-3);
  background:#fff;border:1px solid var(--line);border-radius:9px;padding:3px 6px 3px 9px}
.sel select{border:0;background:transparent;font-size:12.5px;color:var(--ink);font-weight:600;cursor:pointer;outline:none;padding:2px}
/* 单档模型：思考下拉禁用态 */
.sel select:disabled{color:var(--ink-3);cursor:not-allowed}
.sel:has(select:disabled){background:#f7f8fd;border-color:var(--line-2)}

.scroll{flex:1;overflow-y:auto;overflow-x:hidden;min-height:0;scroll-behavior:smooth}
.messages{max-width:820px;margin:0 auto;padding:26px 22px 20px;display:flex;flex-direction:column;gap:22px}
/* 只有欢迎页时垂直居中 */
.messages:has(.welcome){min-height:100%;justify-content:center;padding-bottom:0}

/* ============ 欢迎页：拖入即开工 ============ */
.welcome{text-align:center;padding:0 10px 2vh;animation:fade .4s ease}
@keyframes fade{from{opacity:0;transform:translateY(8px)}}
.hero{
  width:min(520px,92vw);margin:0 auto 20px;padding:32px 26px 24px;cursor:pointer;
  border:2px dashed #cfd5ef;border-radius:20px;background:#fff;transition:.18s;
  box-shadow:0 1px 2px rgba(20,25,60,.04);
}
.hero:hover{border-color:var(--brand);background:#fbfbff;box-shadow:0 10px 30px rgba(91,110,245,.12)}
.hero-icon{color:var(--brand);display:grid;place-items:center;margin-bottom:8px}
.hero h1{font-size:22px;line-height:1.4;margin:0 0 6px;letter-spacing:-.3px;font-weight:700}
.hero p{color:var(--ink-2);margin:0 0 18px;font-size:13.5px}
.hero p b{color:var(--brand);font-weight:600}
.hero-btn{
  border:0;border-radius:10px;padding:10px 22px;font-size:14px;font-weight:600;color:#fff;cursor:pointer;
  background:linear-gradient(135deg,var(--brand),var(--brand-2));
  box-shadow:0 4px 14px rgba(91,110,245,.34);transition:.15s;
}
.hero-btn:hover{transform:translateY(-1px);box-shadow:0 7px 18px rgba(91,110,245,.42)}
.hero-meta{margin-top:12px;font-size:11.5px;color:var(--ink-3)}
.chips{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}
.chip{
  border:1px solid var(--line);background:#fff;color:var(--ink-2);font-size:13px;
  padding:7px 13px;border-radius:999px;cursor:pointer;transition:.15s;
}
.chip:hover{color:#3d4bd6;border-color:#c9cfff;background:var(--brand-soft);transform:translateY(-1px)}

/* 用户消息里的文件信息卡（文字模式 / 历史消息都靠它） */
.file-chip{
  display:inline-flex;align-items:center;gap:6px;max-width:100%;
  background:#f7f8fd;border:1px solid var(--line);border-radius:9px;
  padding:6px 10px;font-size:12px;color:var(--ink-2);margin-bottom:7px;
}
.file-chip svg{color:var(--brand);flex:0 0 auto}
.file-chip b{font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:230px}
.file-chip span{color:var(--ink-3);font-size:11px;white-space:nowrap}

/* 附件栏里的文字模式图标 */
.att-ico{
  width:34px;height:34px;border-radius:6px;flex:0 0 auto;display:grid;place-items:center;
  background:linear-gradient(135deg,var(--brand),var(--brand-2));color:#fff;
  font-size:9px;font-weight:800;letter-spacing:.4px;
}

@media (max-width:600px){
  .hero{padding:24px 16px 20px;border-radius:16px}
  .hero h1{font-size:19px}
  .hero p{font-size:12.5px;margin-bottom:14px}
}

/* ============ 消息 ============ */
.msg{display:flex;gap:11px;animation:rise .22s ease}
@keyframes rise{from{opacity:0;transform:translateY(5px)}}
.msg .avatar{
  flex:0 0 28px;width:28px;height:28px;border-radius:9px;display:grid;place-items:center;
  font-size:11px;font-weight:800;color:#fff;margin-top:2px;letter-spacing:.3px;
}
.msg.user .avatar{background:#31374a}
.msg.assistant .avatar{background:linear-gradient(135deg,var(--brand),var(--brand-2))}
.msg .body{min-width:0;flex:1}
.msg.user{flex-direction:row-reverse}
.msg.user .body{display:flex;flex-direction:column;align-items:flex-end}

.bubble-user{
  background:linear-gradient(135deg,#5b6ef5,#7b5cf6);color:#fff;
  padding:10px 15px;border-radius:14px 14px 4px 14px;max-width:min(640px,84%);
  white-space:pre-wrap;word-break:break-word;box-shadow:0 2px 10px rgba(91,110,245,.22);
  font-size:14.5px;
}
.bubble-user.imgs-only{padding:6px}

.msg-file{display:flex;gap:7px;flex-wrap:wrap;margin:0 2px 7px 0;justify-content:flex-end}
.msg-file .thumb{
  width:64px;height:64px;border-radius:10px;object-fit:cover;border:1px solid rgba(255,255,255,.45);
  background:#fff;cursor:zoom-in;transition:.15s;
}
.msg-file .thumb:hover{transform:translateY(-1px);box-shadow:0 4px 14px rgba(0,0,0,.16)}

.assistant-card{
  background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);
  padding:14px 17px;box-shadow:var(--shadow);min-width:0;
}
.assistant-card .md{font-size:14.8px;overflow-wrap:break-word}
.assistant-card .md>*:first-child{margin-top:0}
.assistant-card .md>*:last-child{margin-bottom:0}

.assistant-card .md h1,.assistant-card .md h2,.assistant-card .md h3,.assistant-card .md h4{
  margin:16px 0 8px;line-height:1.35;font-weight:700;letter-spacing:-.2px
}
.assistant-card .md h1{font-size:20px}
.assistant-card .md h2{font-size:17.5px}
.assistant-card .md h3{font-size:16px}
.assistant-card .md h4{font-size:15px}
.assistant-card .md p{margin:9px 0}
.assistant-card .md ul,.assistant-card .md ol{margin:9px 0;padding-left:22px}
.assistant-card .md li{margin:3px 0}
.assistant-card .md li::marker{color:var(--brand)}
.assistant-card .md a{color:#4356e8;text-decoration:none;border-bottom:1px solid #c9cfff}
.assistant-card .md a:hover{border-color:#4356e8}
.assistant-card .md strong{font-weight:700}
.assistant-card .md code{
  font-family:var(--mono);font-size:12.8px;background:#f1f3fa;color:#3d4470;
  padding:1.5px 5px;border-radius:5px;border:1px solid #e6e9f4
}
.assistant-card .md pre{
  margin:11px 0;padding:12px 14px;background:#1c2030;color:#e8ebf5;border-radius:11px;
  overflow:auto;font-size:12.8px;line-height:1.6
}
.assistant-card .md pre code{background:transparent;border:0;color:inherit;padding:0;font-size:12.8px}
.assistant-card .md blockquote{
  margin:11px 0;padding:6px 14px;border-left:3px solid #c9cfff;color:var(--ink-2);background:#fafbff
}
.assistant-card .md hr{border:0;border-top:1px solid var(--line);margin:16px 0}
.assistant-card .md table{border-collapse:collapse;margin:11px 0;width:100%;font-size:13.5px;display:block;overflow-x:auto}
.assistant-card .md th,.assistant-card .md td{border:1px solid var(--line);padding:6px 10px;text-align:left}
.assistant-card .md th{background:#f7f8fd;font-weight:650}

/* 思考过程 */
.think{border:1px dashed #dfe3f0;background:#fbfcff;border-radius:10px;margin-bottom:9px;font-size:13px}
.think summary{cursor:pointer;padding:7px 12px;color:var(--ink-3);font-weight:600;list-style:none;display:flex;align-items:center;gap:6px}
.think summary::-webkit-details-marker{display:none}
.think summary::before{content:"▸";transition:.15s;display:inline-block}
.think[open] summary::before{transform:rotate(90deg)}
.think .think-body{padding:0 12px 9px;color:var(--ink-2);white-space:pre-wrap;line-height:1.6;max-height:260px;overflow:auto;border-top:1px solid #eef0f8;padding-top:8px;margin-top:2px}

/* 光标 */
.caret{display:inline-block;width:7px;height:15px;background:var(--brand);border-radius:1.5px;
  vertical-align:-2px;margin-left:2px;animation:blink .95s steps(2) infinite}
@keyframes blink{50%{opacity:0}}
.typing{display:flex;gap:4px;align-items:center;padding:4px 0}
.typing i{width:6px;height:6px;border-radius:50%;background:#b9c0d8;animation:bounce 1.1s infinite}
.typing i:nth-child(2){animation-delay:.15s}
.typing i:nth-child(3){animation-delay:.3s}
@keyframes bounce{0%,60%,100%{transform:translateY(0);opacity:.55}30%{transform:translateY(-4px);opacity:1}}

/* 消息底部工具条 */
.msg-tools{display:flex;gap:4px;align-items:center;margin-top:7px;height:22px;opacity:0;transition:.15s}
.msg:hover .msg-tools{opacity:1}
/* 中断/停止的消息：按钮常显，移动端没有 hover 也能点「续写」 */
.msg-tools.tools-on{opacity:1}
.msg-tools button[data-continue]{
  color:#3d4bd6;font-weight:600;background:var(--brand-soft);
  border:1px solid #dfe3ff;padding:3px 11px;
}
.msg-tools button[data-continue]:hover{background:#e3e7ff;color:#2f3cc7}
.msg-tools button{
  border:0;background:transparent;color:var(--ink-3);font-size:11.5px;cursor:pointer;
  padding:3px 7px;border-radius:6px;display:flex;align-items:center;gap:4px
}
.msg-tools button:hover{background:#eef0f8;color:var(--ink)}
.meta{font-size:11px;color:var(--ink-3);font-family:var(--mono)}
.err-box{
  border:1px solid #fbd5d5;background:#fff5f5;color:#a21717;border-radius:10px;
  padding:9px 13px;font-size:13px;line-height:1.55
}

/* ============ 输入区 ============ */
.composer-wrap{padding:0 22px 14px;max-width:820px;margin:0 auto;width:100%}
.composer{
  position:relative;background:var(--panel);border:1px solid var(--line);border-radius:18px;
  padding:9px 11px 8px;box-shadow:0 2px 8px rgba(22,25,34,.05),0 12px 32px rgba(22,25,34,.05);
  transition:border-color .16s,box-shadow .16s;
}
.composer.focus{border-color:#c3caff;box-shadow:0 2px 10px rgba(91,110,245,.1),0 14px 36px rgba(91,110,245,.1)}
.composer.drag{border-color:var(--brand);background:#fbfbff}
.drop-hint{
  position:absolute;inset:0;border-radius:18px;background:rgba(238,240,255,.94);
  display:grid;place-items:center;font-weight:700;color:#3d4bd6;font-size:14px;
  opacity:0;pointer-events:none;transition:.15s;z-index:3;border:2px dashed var(--brand)
}
.composer.drag .drop-hint{opacity:1}
#input{
  width:100%;border:0;outline:0;resize:none;background:transparent;
  font-family:inherit;font-size:15px;line-height:1.6;color:var(--ink);
  max-height:200px;padding:4px 5px 6px;overflow-y:auto;
}
#input::placeholder{color:#a7adc0}
.composer-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:2px 1px 0}
.composer-left,.composer-right{display:flex;align-items:center;gap:7px}
.hint{font-size:11.5px;color:var(--ink-3);white-space:nowrap}
.icon-btn{
  border:0;background:transparent;color:var(--ink-2);width:32px;height:32px;border-radius:9px;
  display:grid;place-items:center;cursor:pointer;transition:.14s;flex:0 0 auto;
}
.icon-btn:hover{background:var(--line-2);color:var(--ink)}
.meter{font-size:11px;color:var(--ink-3);font-family:var(--mono);white-space:nowrap}
.btn-send,.btn-stop{
  width:32px;height:32px;border-radius:10px;border:0;cursor:pointer;display:grid;place-items:center;
  color:#fff;transition:.15s;flex:0 0 auto;
}
.btn-send{background:linear-gradient(135deg,var(--brand),var(--brand-2));box-shadow:0 3px 10px rgba(91,110,245,.3)}
.btn-send:disabled{background:#d6dae8;box-shadow:none;cursor:not-allowed}
.btn-send:not(:disabled):hover{transform:translateY(-1px);box-shadow:0 5px 14px rgba(91,110,245,.38)}
.btn-stop{background:#31374a}
.legal{text-align:center;font-size:11px;color:var(--ink-3);margin-top:8px}

/* 附件条 */
.attach-bar{display:flex;gap:8px;flex-wrap:wrap;padding:2px 2px 8px}
.att{
  display:flex;align-items:center;gap:8px;background:#f7f8fd;border:1px solid var(--line);
  border-radius:10px;padding:5px 8px 5px 5px;max-width:250px;position:relative
}
.att img{width:34px;height:34px;border-radius:6px;object-fit:cover;background:#fff;flex:0 0 auto}
.att .info{min-width:0}
.att .n{font-size:12px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:150px}
.att .s{font-size:10.5px;color:var(--ink-3);white-space:nowrap}
.att .rm{
  border:0;background:#fff;color:var(--ink-3);width:18px;height:18px;border-radius:50%;
  cursor:pointer;line-height:1;display:grid;place-items:center;font-size:13px;flex:0 0 auto;
  box-shadow:0 1px 3px rgba(0,0,0,.12)
}
.att .rm:hover{color:var(--err)}
.att.loading{border-style:dashed}
.att .spin{
  width:34px;height:34px;border-radius:6px;background:#eef0fa;display:grid;place-items:center;flex:0 0 auto
}
.att .spin::after{
  content:"";width:15px;height:15px;border:2px solid #c9cfff;border-top-color:var(--brand);
  border-radius:50%;animation:spin .7s linear infinite
}
@keyframes spin{to{transform:rotate(360deg)}}

/* ============ 系统提示词抽屉 ============ */
.sys-btn{position:relative}
.sys-dot{
  position:absolute;top:5px;right:6px;width:7px;height:7px;border-radius:50%;
  background:#12a150;border:1.5px solid #fff;box-shadow:0 0 0 2px rgba(18,161,80,.15)
}
.drawer-mask{
  position:fixed;inset:0;background:rgba(20,23,33,.34);z-index:60;
  animation:fade .16s ease;backdrop-filter:blur(1px)
}
.drawer{
  position:fixed;top:0;right:0;bottom:0;width:400px;max-width:92vw;z-index:61;
  background:var(--panel);border-left:1px solid var(--line);
  box-shadow:-12px 0 40px rgba(20,23,33,.16);
  display:flex;flex-direction:column;
  animation:slideIn .2s cubic-bezier(.22,.8,.3,1)
}
@keyframes slideIn{from{transform:translateX(24px);opacity:.6}}
.drawer-head{
  display:flex;align-items:flex-start;gap:10px;padding:18px 16px 14px;
  border-bottom:1px solid var(--line-2)
}
.drawer-head h2{margin:0;font-size:16px;letter-spacing:-.2px}
.drawer-head p{margin:3px 0 0;font-size:12px;color:var(--ink-3);line-height:1.5}
.drawer-head .icon-btn{margin-left:auto}
.drawer-body{flex:1;min-height:0;overflow-y:auto;padding:14px 16px}
#sysText{
  width:100%;min-height:170px;resize:vertical;border:1px solid var(--line);border-radius:12px;
  padding:11px 13px;font-family:inherit;font-size:13.5px;line-height:1.65;color:var(--ink);
  outline:none;background:#fcfcff;transition:.15s
}
#sysText:focus{border-color:#c3caff;background:#fff;box-shadow:0 0 0 3px rgba(91,110,245,.1)}
#sysText::placeholder{color:#a7adc0}
.tpl-label{font-size:11.5px;font-weight:600;color:var(--ink-3);letter-spacing:.3px;margin:16px 0 8px}
.tpl-list{display:flex;flex-wrap:wrap;gap:7px}
.tpl{
  border:1px solid var(--line);background:#fff;color:var(--ink-2);font-size:12.5px;
  padding:6px 12px;border-radius:999px;cursor:pointer;font-family:inherit;transition:.14s
}
.tpl:hover{color:#3d4bd6;border-color:#c9cfff;background:var(--brand-soft)}
.drawer-foot{
  display:flex;align-items:center;gap:8px;padding:12px 16px;
  border-top:1px solid var(--line-2);background:#fcfcfe
}
.drawer-foot .cnt{font-size:11.5px;color:var(--ink-3);font-family:var(--mono);margin-right:auto}
.drawer-btn{
  border:1px solid var(--line);background:#fff;color:var(--ink-2);font-size:13px;
  padding:7px 14px;border-radius:9px;cursor:pointer;font-family:inherit;transition:.14s;font-weight:600
}
.drawer-btn:hover{background:var(--line-2)}
.drawer-btn.primary{
  border:0;color:#fff;background:linear-gradient(135deg,var(--brand),var(--brand-2));
  box-shadow:0 3px 10px rgba(91,110,245,.3)
}
.drawer-btn.primary:hover{transform:translateY(-1px);box-shadow:0 5px 14px rgba(91,110,245,.36)}
.drawer-btn.primary:disabled{background:#d6dae8;box-shadow:none;transform:none;cursor:not-allowed}

/* ============ toast / lightbox ============ */
.toast{
  position:fixed;left:50%;bottom:34px;transform:translateX(-50%);
  background:#222736;color:#fff;font-size:13px;padding:9px 16px;border-radius:10px;
  box-shadow:0 10px 30px rgba(0,0,0,.2);z-index:99;animation:toastIn .2s ease;max-width:88vw
}
.toast.err{background:#b91c1c}
@keyframes toastIn{from{opacity:0;transform:translate(-50%,8px)}}
.lightbox{
  position:fixed;inset:0;background:rgba(14,16,24,.86);z-index:100;display:grid;place-items:center;
  padding:24px;cursor:zoom-out;animation:fade .18s
}
.lightbox img{max-width:100%;max-height:100%;border-radius:8px;box-shadow:0 20px 60px rgba(0,0,0,.5)}

/* 滚动条 */
.scroll::-webkit-scrollbar,.conv-list::-webkit-scrollbar,#input::-webkit-scrollbar{width:9px;height:9px}
.scroll::-webkit-scrollbar-thumb,.conv-list::-webkit-scrollbar-thumb,#input::-webkit-scrollbar-thumb{
  background:#d3d8e6;border-radius:99px;border:2px solid transparent;background-clip:content-box
}
.scroll::-webkit-scrollbar-thumb:hover{background:#b9c0d8;background-clip:content-box;border:2px solid transparent}
.scroll::-webkit-scrollbar-track{background:transparent}

.only-mobile{display:none}

/* ============ 响应式 ============ */
@media (max-width:860px){
  .app{grid-template-columns:1fr}
  .sidebar{
    position:fixed;inset:0 auto 0 0;width:270px;z-index:50;
    transform:translateX(-100%);transition:transform .22s ease;box-shadow:0 0 40px rgba(0,0,0,.16)
  }
  .sidebar.open{transform:none}
  .only-mobile{display:grid}
  .messages{padding:18px 14px 16px;gap:18px}
  .composer-wrap{padding:0 12px 10px}
  .welcome{padding:6vh 6px 3vh}
  .welcome h1{font-size:19px}
  .topbar{padding:0 12px}
  .sel span{display:none}
  .model-sel{max-width:150px}
  .model-sel select{max-width:104px}
  .hint{display:none}
  .bubble-user{max-width:88%}
  .msg .avatar{flex-basis:24px;width:24px;height:24px;font-size:10px}
}
@media (max-width:420px){
  .topbar-right .sel:nth-child(2){display:none}
}
