:root{
  --bg:#0e1621; --bar:#17212b; --line:#101921;
  --ke:#182533; --me:#5d7c44; --text:#eef2f6; --sub:#7a8a99;
  --time:rgba(255,255,255,.45); --think:#141e29; --thinkbd:#2a3a49; --thinktx:#9db0c2;
  --accent:#64a6e8;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%;background:var(--bg);color:var(--text);
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;
  font-size:16px;-webkit-font-smoothing:antialiased;overscroll-behavior:none}
#app{display:flex;flex-direction:column;height:100dvh;position:relative}

/* 顶栏 */
#bar{display:flex;align-items:center;padding:env(safe-area-inset-top) 8px 0;
  height:calc(52px + env(safe-area-inset-top));background:var(--bar);
  border-bottom:1px solid #0a0f14;flex:0 0 auto;z-index:5}
#bar .icon{width:40px;height:40px;border:none;background:none;color:#aebccb;font-size:22px;
  display:flex;align-items:center;justify-content:center;cursor:pointer;border-radius:50%}
#bar .icon:active{background:#22303c}
#bar .title{flex:1;text-align:center;font-size:17px;font-weight:600}
#bar .model{font-size:11px;color:#fff;background:#2b3a47;border:none;padding:5px 10px;
  border-radius:12px;cursor:pointer;font-weight:600}

/* 消息区 */
#log{flex:1 1 auto;overflow-y:auto;padding:10px 10px 6px;
  background-image:url(/static/pattern.svg);background-size:380px;background-repeat:repeat;
  display:flex;flex-direction:column;gap:3px}
.daysep{align-self:center;background:rgba(24,37,51,.85);color:#c4d2df;font-size:12px;
  padding:4px 12px;border-radius:12px;margin:8px 0}
.row{display:flex;width:100%;margin-top:5px}
.row.me{justify-content:flex-end}
.row.ke{justify-content:flex-start}
.bubble{position:relative;max-width:80%;padding:7px 11px 7px;border-radius:14px;line-height:1.42;
  word-break:break-word;white-space:pre-wrap;font-size:16px;box-shadow:0 1px 1px rgba(0,0,0,.18)}
.me .bubble{background:var(--me);color:#fff;border-bottom-right-radius:5px}
.ke .bubble{background:var(--ke);color:var(--text);border-bottom-left-radius:5px}
.bubble .meta{float:right;margin:6px 0 -2px 10px;font-size:11px;color:var(--time);
  display:inline-flex;align-items:center;gap:3px;user-select:none}
.me .bubble .meta{color:rgba(255,255,255,.6)}
.bubble .tick{font-size:12px}
.bubble img.att{max-width:220px;max-height:280px;border-radius:9px;display:block;margin:2px 0}
.bubble .file{display:flex;align-items:center;gap:8px;background:rgba(0,0,0,.18);
  padding:8px 10px;border-radius:9px;margin:3px 0;font-size:14px}
.bubble .file .fi{font-size:20px}

/* reaction 小气泡 */
.reacts{display:flex;gap:4px;flex-wrap:wrap;margin-top:3px}
.row.me .reacts{justify-content:flex-end}
.react{background:rgba(20,30,41,.9);border:1px solid #2a3a49;border-radius:11px;
  padding:1px 7px;font-size:13px;line-height:1.5}
.react.ke{border-color:#3a5a3f}

/* 思考块 */
.think{align-self:flex-start;max-width:82%;margin:5px 0 1px;background:var(--think);
  border-left:3px solid var(--accent);border-radius:8px;color:var(--thinktx);
  font-size:13px;line-height:1.5;overflow:hidden}
.think .thead{display:flex;align-items:center;gap:6px;padding:6px 11px;cursor:pointer;
  user-select:none;color:#9fc0e0;font-weight:500}
.think .dot{width:6px;height:6px;border-radius:50%;background:var(--accent);animation:pulse 1.4s infinite}
.think .tbody{padding:0 11px 8px;white-space:pre-wrap}
.think.collapsed .tbody{display:none}
.think .chev{margin-left:auto;font-size:10px;transition:transform .2s}
.think.collapsed .chev{transform:rotate(-90deg)}
@keyframes pulse{0%{opacity:1}50%{opacity:.3}100%{opacity:1}}

/* 输入区 */
#inputbar{flex:0 0 auto;display:flex;align-items:flex-end;gap:6px;
  padding:7px 8px calc(7px + env(safe-area-inset-bottom));background:var(--bar)}
#inputbar .icon{width:40px;height:40px;flex:0 0 auto;border:none;background:none;color:#7d8e9e;
  font-size:23px;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:50%}
#inputbar .icon:active{background:#22303c}
#box{flex:1;resize:none;max-height:120px;padding:9px 14px;border-radius:18px;border:none;
  background:#0e1621;color:var(--text);font-size:16px;line-height:1.4;outline:none;font-family:inherit}
#send{background:var(--accent);color:#fff}
#send.recording{background:#e0564b;animation:rec 1s infinite}
@keyframes rec{50%{opacity:.55}}
.pendtray{display:flex;gap:6px;padding:6px 10px 0;flex-wrap:wrap}
.pendtray .pi{position:relative;width:54px;height:54px;border-radius:8px;background:#0e1621;
  display:flex;align-items:center;justify-content:center;font-size:22px;overflow:hidden}
.pendtray .pi img{width:100%;height:100%;object-fit:cover}
.pendtray .pi .x{position:absolute;top:-6px;right:-6px;background:#e0564b;color:#fff;
  width:18px;height:18px;border-radius:50%;font-size:12px;display:flex;align-items:center;justify-content:center}

/* 窗口抽屉 */
#drawer{position:absolute;inset:0 30% 0 0;max-width:300px;background:var(--bar);z-index:15;
  transform:translateX(-105%);transition:transform .22s;display:flex;flex-direction:column;
  padding-top:env(safe-area-inset-top);box-shadow:2px 0 16px rgba(0,0,0,.5)}
#drawer.open{transform:none}
#scrim{position:absolute;inset:0;background:rgba(0,0,0,.45);z-index:14;opacity:0;pointer-events:none;transition:opacity .22s}
#scrim.open{opacity:1;pointer-events:auto}
#drawer h2{font-size:15px;color:var(--sub);margin:14px 16px 6px;font-weight:600}
#newconv{margin:6px 12px;padding:11px;border-radius:10px;border:none;background:var(--accent);
  color:#fff;font-weight:600;font-size:15px;cursor:pointer}
#convlist{flex:1;overflow-y:auto;padding:4px 8px}
.conv{padding:11px 12px;border-radius:9px;cursor:pointer;color:var(--text);font-size:15px;
  display:flex;justify-content:space-between;align-items:center}
.conv:active{background:#22303c}
.conv.active{background:#2b3a47}
.conv .cdate{font-weight:500}
.conv .cnt{font-size:12px;color:var(--sub)}

/* emoji 选择条 */
#emojibar{position:absolute;background:var(--bar);border:1px solid #2a3a49;border-radius:22px;
  padding:6px 8px;display:none;gap:4px;z-index:18;box-shadow:0 4px 16px rgba(0,0,0,.5)}
#emojibar.show{display:flex}
#emojibar span{font-size:24px;cursor:pointer;padding:2px 4px;border-radius:50%}
#emojibar span:active{background:#2b3a47}

/* 口令门 */
#gate{position:fixed;inset:0;background:var(--bg);display:flex;align-items:center;justify-content:center;z-index:30}
#gate[hidden]{display:none}
.gatebox{display:flex;flex-direction:column;gap:12px;width:240px;text-align:center}
.gtitle{font-size:30px;font-weight:700;letter-spacing:3px;color:#fff;margin-bottom:6px}
#token{padding:11px 14px;border-radius:12px;border:1px solid var(--line);background:#0c1117;color:var(--text);font-size:16px;outline:none}
#enter{padding:11px;border-radius:12px;border:none;background:var(--accent);color:#fff;font-size:16px;font-weight:600;cursor:pointer}
.gerr{color:#ff6b6b;font-size:13px;min-height:16px}
