/* ── Composer ── */
.composer{
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 100;
  width: min(100vw, var(--ref-width));
  margin: 0 auto;
  display:flex; align-items:center; gap: clamp(6px, 1vw, 12px);
  background: transparent; border:none;
  padding: 0 var(--side-pad) clamp(10px, 1.6vw, 18px);
  padding-bottom: calc(clamp(10px, 1.6vw, 18px) + env(safe-area-inset-bottom));
}
.app.kb .composer{
  padding-bottom: 0;
}
.floatbtn{
  flex:none; width: clamp(36px, 5vw, 48px); height: clamp(36px, 5vw, 48px); border-radius:50%;
  border: none; background: transparent;
  color: var(--accent); display:grid; place-items:center; cursor:pointer; padding:0;
  transition: transform .15s ease, color .2s ease;
}
.floatbtn:active{ transform: scale(.9); color: var(--text); }
.floatbtn:hover{ color: var(--text); }
.floatbtn svg{ width: clamp(20px, 2.8vw, 28px); height: clamp(20px, 2.8vw, 28px); display:block; }
.floatbtn.send{
  background: var(--send-bg);
  color:#ffffff;
  box-shadow: 0 16px 32px rgba(41, 60, 78, 0.22);
}
.floatbtn.send:hover{ color:#ffffff; }
.floatbtn.send:active{ transform: scale(.97); }      /* 发送键按压:轻收 3%(比通用 .floatbtn 的 .9 克制) */
.floatbtn.ys-turn-stop{ background:var(--field-bg); border:1px solid var(--field-line); box-shadow:var(--card-shadow); }
.floatbtn.ys-turn-stop span{ width:11px; height:11px; border-radius:3px; background:var(--accent); }
.floatbtn.ys-turn-stop:disabled{ opacity:.55; cursor:default; }
.composer.turn-running .floatbtn.send{ background:var(--accent); }
.composer.turn-running .field{ border-color:color-mix(in srgb,var(--accent) 42%,var(--field-line)); }
@keyframes send-go{ from{ transform: scale(.96); } to{ transform: scale(1); } }
.floatbtn.send.send-go{ animation: send-go .22s cubic-bezier(.2,.8,.2,1); }
@media (prefers-reduced-motion: reduce){ .floatbtn.send.send-go{ animation: none; } }
.composer .field{
  flex:1 1 auto; display:flex; align-items:flex-end; gap: clamp(4px, 0.8vw, 10px);
  background: var(--field-bg);
  border: 1px solid var(--field-line);
  border-radius: 999px;
  padding: clamp(4px, 0.6vw, 8px) clamp(8px, 1.2vw, 14px) clamp(4px, 0.6vw, 8px) clamp(10px, 1.5vw, 16px);
  min-height: clamp(42px, 5.5vw, 56px);
  box-shadow: var(--shadow);
  transition: border-color .2s ease;
}
.composer .clip-in-field{ align-self:center; }
.composer .field:focus-within{ border-color: var(--field-line); }
.composer textarea:focus,
.composer textarea:focus-visible,
.composer button:focus-visible{
  outline: none;
}
textarea{
  flex:1 1 auto; border:none; outline:none; resize:none; background:transparent;
  color: var(--text); font-family: var(--font-en), var(--font-cn); font-size: clamp(15px, 2vw, 18px); line-height:1.35;
  min-height: calc(1.35em + 12px); max-height:min(28dvh,156px); overflow-y:hidden; padding: 6px 0; margin:0;
}
textarea::placeholder{ color: var(--text-faint); opacity: 1; }
textarea{ scrollbar-width:none; -ms-overflow-style:none; }
textarea::-webkit-scrollbar{ width:0; height:0; display:none; }
/* ── 回到最新 · 翻历史时来新消息,底部悬浮一枚安静的半透明胶囊 ── */
.newmsg-pill{
  position: fixed; left: 50%; z-index: 90;
  bottom: calc(clamp(78px, 13vw, 96px) + env(safe-area-inset-bottom));
  display: inline-flex; align-items: center; gap: 5px;
  padding: 7px 14px 7px 11px; border: none; border-radius: 999px;
  background: rgba(34, 46, 60, .52); color: #fff;
  font-family: var(--font-en), var(--font-cn); font-size: 13px; line-height: 1; letter-spacing: .01em;
  -webkit-backdrop-filter: blur(10px) saturate(1.2); backdrop-filter: blur(10px) saturate(1.2);
  box-shadow: 0 8px 24px rgba(18, 28, 40, .26);
  cursor: pointer; opacity: 0; pointer-events: none;
  transform: translate3d(-50%, 8px, 0);
  transition: opacity .2s ease, transform .28s cubic-bezier(.2,.8,.2,1);
}
.newmsg-pill.show{ opacity: 1; pointer-events: auto; transform: translate3d(-50%, 0, 0); }
.newmsg-pill svg{ width: 15px; height: 15px; flex: none; }
@media (prefers-reduced-motion: reduce){ .newmsg-pill{ transition: opacity .2s ease; } }
