/* 果果AI助手 —— DeepSeek 风格视觉 */
:root {
  /* 旧变量保留给既有规则，但取值统一来自 0.3.0 共享 token：
     否则生产页会出现蓝色旧主题与橙色品牌并存、暗色也只覆盖一半。 */
  --bg: var(--ui-bg);
  --panel: var(--ui-panel);
  --line: var(--ui-border);
  --text: var(--ui-text);
  --muted: var(--ui-muted);
  --brand: var(--ui-accent);
  --brand-dark: color-mix(in srgb, var(--ui-accent) 82%, #000);
  --user-bubble: var(--ui-accent-soft);
  --code-bg: var(--ui-subtle);
}
* { box-sizing: border-box; }
html, body { height: 100%; }
body { margin: 0; font-family: "PingFang SC", "Microsoft YaHei", "Segoe UI", sans-serif; color: var(--text); background: var(--bg); font-size:var(--ui-font-body); }
.hidden { display: none !important; }
.muted { color: var(--muted); }
.small { font-size:var(--ui-font-caption); }
button { font-family: inherit; }

/* ---------- 登录 ---------- */
.login-wrap { display: flex; align-items: center; justify-content: center; height: 100vh;
  background: var(--ui-bg); }
.login-card { background: var(--ui-panel); padding: 40px 44px; border-radius: var(--ui-radius-lg); width: 360px; text-align: center;
  border: 1px solid var(--ui-border); box-shadow: var(--ui-shadow); }
.login-logo { height: 64px; margin: 0 auto 14px; display: block; object-fit: contain; }
.login-card h1 { font-size:var(--ui-font-title); margin: 0 0 6px; }
.login-card .sub { color: var(--muted); font-size:var(--ui-font-ui); margin: 0 0 22px; }
.login-card input { width: 100%; padding: 11px 14px; margin-bottom: 12px; border: 1px solid var(--line);
  border-radius: 10px; font-size:var(--ui-font-body); outline: none; transition: border .15s; }
.login-card input:focus { border-color: var(--brand); box-shadow: 0 0 0 3px color-mix(in srgb, var(--ui-accent) 14%, transparent); }
.login-card input { background: var(--ui-panel); color: var(--ui-text); }
.login-card button { width: 100%; padding: 12px; border: 0; border-radius: var(--ui-radius); color: var(--ui-on-accent); font-size: var(--ui-font-ui);
  background: var(--ui-accent); cursor: pointer; }
.login-card button:hover { filter: brightness(1.05); }
.error { color: var(--ui-danger); min-height: 18px; font-size: var(--ui-font-ui); margin: 8px 0 0; }

/* ---------- 整体布局 ---------- */
.chat { display: flex; height: 100vh; }
.sidebar { width: var(--ui-layout-sidebar); background: var(--ui-panel); border-right: 1px solid var(--line); display: flex;
  flex-direction: column; padding: 14px 12px; flex-shrink: 0; }
.brand { font-size: var(--ui-font-heading); font-weight: 600; display: flex; align-items: center; gap: 8px; padding: 4px 4px 14px; color: var(--ui-text); }
.brand-logo { height: 30px; width: auto; object-fit: contain; }
/* 主按钮：图标与文字用 flex 居中。
   之前图标是行内 svg，靠基线对齐，看起来比文字低一截、整组偏下。 */
#new-conv { padding: 0 12px; border: 0; border-radius: var(--ui-radius); color: var(--ui-on-accent); font-size: var(--ui-font-ui); cursor: pointer;
  background: var(--ui-accent);
  display: flex; align-items: center; justify-content: center; gap: 8px; line-height: 1; min-height: 40px; }
/* icon() 会给 svg 写内联 vertical-align:-2px，按钮里必须压掉，
   否则图标比文字低 1–2px。 */
#new-conv svg { display: block; flex: 0 0 auto; align-self: center; vertical-align: 0 !important; }
#new-conv:hover { filter: brightness(1.05); }
.conv-search { margin-top: 10px; padding: 8px 12px; border: 1px solid var(--line); border-radius: var(--ui-radius);
  font-size: var(--ui-font-ui); outline: none; background: var(--ui-panel); color: var(--ui-text); }
.conv-search:focus { border-color: var(--brand); }
.conv-list { flex: 1; overflow-y: auto; margin-top: 8px; }
.conv-group { font-size:var(--ui-font-micro); color: var(--muted); margin: 12px 6px 4px; }
.conv-item { padding: 9px 10px; border-radius: var(--ui-radius); cursor: pointer; font-size: var(--ui-font-ui); color: var(--ui-text);
  display: flex; justify-content: space-between; align-items: center; gap: 6px; }
.conv-item:hover { background: var(--ui-hover); }
.conv-item.active { background: var(--ui-accent-soft); color: var(--brand-dark); font-weight: 600; }
.conv-item .del { color: transparent; font-size:var(--ui-font-caption); padding: 0 4px; }
.conv-item:hover .del { color: var(--muted); }
.conv-item .del:hover { color: var(--ui-danger); }
.sidebar-foot { border-top: 1px solid var(--line); padding-top: 10px; font-size:var(--ui-font-ui);
  display: flex; gap: 12px; align-items: center; }
.sidebar-foot a { color: var(--muted); text-decoration: none; }
.sidebar-foot a:hover { color: var(--brand); }

.main { flex: 1; display: flex; flex-direction: column; min-width: 0; }
.chat-head { display: flex; justify-content: space-between; align-items: center; padding: 12px 22px;
  border-bottom: 1px solid var(--line); background: var(--panel); }
.head-title .title { font-size:var(--ui-font-heading); font-weight: 600; }
.ghost-btn { border: 1px solid var(--ui-border); background: var(--ui-panel); width: 32px; height: 32px; border-radius: 9px;
  cursor: pointer; color: var(--ui-accent); font-size:var(--ui-font-heading); }
.ghost-btn:hover { background: var(--ui-hover); }

/* ---------- 消息区 ---------- */
.messages-wrap { position: relative; flex: 1; overflow: hidden; }
.messages { position: relative; height: 100%; overflow-y: auto; scroll-behavior: smooth; }
.msg-row { display: flex; gap: 10px; padding: 12px 22px; max-width: 860px; margin: 0 auto; }
.msg-row.user { justify-content: flex-end; }
/* 回复行不再使用角色头像：角色已常驻在输入框上沿，避免同一形象重复出现 */
.msg { max-width: 100%; }
.msg.user { background: var(--user-bubble); border-radius: 14px 4px 14px 14px; padding: 10px 14px;
  max-width: 78%; white-space: pre-wrap; word-break: break-word; }
.msg.assistant { flex: 1; min-width: 0; line-height: 1.75; }
.msg.assistant .md { word-break: break-word; }
.msg .tool-line { font-size:var(--ui-font-caption); color: var(--muted); margin-top: 6px; }
.meta { font-size:var(--ui-font-caption); color: var(--muted); margin-top: 8px; }
.usage-line { font-size:var(--ui-font-caption); color: var(--muted); margin-top: 6px; }

/* 执行过程（可折叠） */
.tool-wrap { margin-top: 8px; border: 1px solid var(--line); border-radius: 10px; background: var(--ui-subtle); overflow: hidden; }
.tool-toggle { width: 100%; text-align: left; border: 0; background: transparent; padding: 7px 12px;
  font-size:var(--ui-font-caption); color: var(--muted); cursor: pointer; display: flex; align-items: center; gap: 6px; }
.tool-toggle:hover { background: var(--ui-hover); }
.tool-toggle .chev { transition: transform .15s; display: inline-block; }
.tool-wrap.collapsed .tool-body { display: none; }
.tool-wrap.collapsed .chev { transform: rotate(-90deg); }
.tool-body { padding: 2px 12px 8px; border-top: 1px dashed var(--line); }
.tool-wrap.is-failed { border-color: var(--ui-danger); background: var(--ui-danger-soft); }
.tool-wrap.is-failed .tool-toggle { color: var(--ui-danger); }
.tool-wrap.is-cancelled { border-color: var(--ui-border-strong); background: var(--ui-subtle); }
.tool-wrap.is-disconnected { border-color: var(--ui-warning); background: var(--ui-warning-soft); }
.tool-wrap.is-disconnected .tool-toggle { color: var(--ui-warning); }
.run-cutoff { margin: 10px 0 0; padding-top: 8px; border-top: 1px dashed var(--line);
  font-size:var(--ui-font-caption); color: var(--muted); }

/* 答案操作栏 */
.ans-actions { display: flex; gap: 6px; margin-top: 6px; }

/* 结果固定状态区：零记录 / 截断 / 缓存快照 */
.result-status { display: flex; align-items: flex-start; gap: 8px; margin: 10px 0;
  padding: 8px 10px; border: 1px solid var(--line); border-radius: 8px;
  background: var(--ui-subtle); font-size:var(--ui-font-caption); line-height: 1.7; }
.result-status .rs-label { flex: 0 0 auto; font-weight: 600; }
.result-status[data-kind="empty"] { border-color: var(--ui-warning); background: var(--ui-warning-soft); }
.result-status[data-kind="truncated"] { border-color: var(--ui-warning); background: var(--ui-warning-soft); }
.result-status[data-kind="cached"] { border-color: var(--ui-border-strong); background: var(--ui-subtle); }

/* 查询明细（可追溯）：等宽小字，横向滚动，避免撑破移动端 */
.query-detail {
  margin-top: 8px; border: 1px solid var(--line); border-radius: 10px;
  background: var(--ui-accent-soft); padding: 8px 10px; font-size:var(--ui-font-caption); color: var(--muted);
}
.qd-item + .qd-item { margin-top: 10px; padding-top: 10px; border-top: 1px dashed var(--line); }
.qd-head { font-weight: 600; color: var(--ui-text); margin-bottom: 4px; }
.qd-sql {
  margin: 0; white-space: pre-wrap; word-break: break-word; line-height: 1.5;
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size:var(--ui-font-micro);
  color: var(--ui-text); max-height: 220px; overflow: auto;
}
.icon-btn { border: 1px solid transparent; background: transparent; border-radius: 8px; padding: 4px 8px;
  font-size:var(--ui-font-caption); color: var(--muted); cursor: pointer; }
.icon-btn:hover { background: var(--ui-hover); color: var(--brand); }

/* 打字动画 */
.typing { display: inline-flex; gap: 4px; padding: 6px 0; }
.typing span { width: 6px; height: 6px; border-radius: 50%; background: var(--brand); opacity: .4;
  animation: blink 1.2s infinite; }
.typing span:nth-child(2) { animation-delay: .2s; }
.typing span:nth-child(3) { animation-delay: .4s; }
@keyframes blink { 0%, 80%, 100% { opacity: .25; } 40% { opacity: 1; } }

/* 欢迎页 */
/* 空对话：内容在消息区内真正的垂直居中。
   消息区本身是“固定高度 + 内部滚动”，欢迎区不能参与滚动高度计算，
   所以用绝对定位铺满它，再在内部 flex 居中。 */
.welcome { max-width: 720px; margin: 0 auto; text-align: center; padding: 0 20px; }
.messages > .welcome {
  position: absolute; inset: 0; max-width: none; margin: 0; padding: 24px 20px;
  display: flex; flex-direction: column; justify-content: center; align-items: center;
  box-sizing: border-box; overflow: auto;
}
.messages > .welcome > * { width: 100%; max-width: 720px; }
.messages > .welcome .gg-mascot { width: max-content; max-width: 100%; }
.welcome-logo { height: 72px; margin: 0 auto 16px; display: block; object-fit: contain; }
.welcome h2 { font-size:var(--ui-font-display); margin: 0 0 8px; }
.welcome .muted { margin: 0 0 28px; }
.suggest-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.suggest { display: flex; align-items: center; gap: 10px; padding: 14px 16px; border: 1px solid var(--line);
  border-radius: var(--ui-radius-lg); background: var(--ui-panel); font-size: var(--ui-font-ui); color: var(--text); cursor: pointer; text-align: left;
  min-height: 58px; box-sizing: border-box;
  transition: transform .12s, box-shadow .12s; }
.suggest:hover { transform: translateY(-2px); box-shadow: 0 6px 18px color-mix(in srgb, var(--ui-accent) 14%, transparent); border-color: var(--ui-border-strong); }
.s-ico { display: grid; place-items: center; width: 26px; height: 26px; flex: none;
  border-radius: 7px; background: var(--ui-subtle); color: var(--ui-accent); font-size:var(--ui-font-subtitle); }
.s-ico svg { display: block; }

/* 滚动到底部 */
.scroll-bottom { position: absolute; right: 24px; bottom: 16px; width: 34px; height: 34px; border-radius: 50%;
  border: 1px solid var(--line); background: var(--ui-panel); color: var(--muted); cursor: pointer;
  box-shadow: 0 4px 12px rgba(0,0,0,.08); }
.scroll-bottom:hover { color: var(--brand); }

/* ---------- 输入区 ---------- */
.composer-wrap { padding: 8px 22px 14px; background: linear-gradient(to top, var(--bg) 70%, transparent); }
.composer { max-width: 860px; margin: 0 auto; display: flex; align-items: flex-end; gap: 8px;
  background: var(--ui-panel); border: 1px solid var(--line); border-radius: var(--ui-radius-lg); padding: 10px 12px;
  box-shadow: 0 4px 18px rgba(31, 35, 41, .06); transition: box-shadow .15s, border-color .15s; }
.composer:focus-within { border-color: var(--brand); box-shadow: 0 4px 22px color-mix(in srgb, var(--ui-accent) 16%, transparent); }
.composer.dragover { border-color: var(--brand); background: var(--ui-accent-soft); }
#ask-input { flex: 1; border: 0; outline: none; resize: none; font-size:var(--ui-font-body); font-family: inherit;
  line-height: 1.6; max-height: 160px; background: transparent; padding: 6px 2px; }
#attach-btn { border: 0; background: transparent; font-size:var(--ui-font-subtitle); cursor: pointer; padding: 6px 8px;
  border-radius: 8px; }
#attach-btn:hover { background: var(--ui-hover); }
.send-btn { width: 36px; height: 36px; border: 0; border-radius: 11px; color: var(--ui-on-accent); font-size: var(--ui-font-heading);
  cursor: pointer; background: linear-gradient(135deg, var(--brand), var(--brand-dark)); flex-shrink: 0; }
.send-btn:disabled { background: var(--ui-subtle); color: var(--ui-muted); cursor: not-allowed; }
.send-btn.stop { background: var(--ui-text); color: var(--ui-panel); }
.composer-hint { max-width: 860px; margin: 6px auto 0; text-align: center; }

.attach-zone { max-width: 860px; margin: 0 auto 6px; display: flex; flex-wrap: wrap; gap: 6px; }
.attach-chip { display: inline-flex; align-items: center; gap: 4px; padding: 4px 10px; background: var(--ui-accent-soft);
  border: 1px solid var(--ui-border-strong); border-radius: 8px; font-size:var(--ui-font-caption); }
.attach-chip.uploading { opacity: .6; }
.attach-chip.error { background: var(--ui-danger-soft); border-color: var(--ui-danger); color: var(--ui-danger); }
.attach-remove { margin-left: 2px; color: var(--muted); text-decoration: none; }
.attach-chip.has-error { flex-wrap: wrap; max-width: 420px; align-items: flex-start; }
.attach-main { display: inline-flex; align-items: center; gap: 4px; }
.attach-foot { display: flex; align-items: baseline; gap: 8px; flex: 1 1 100%; flex-wrap: wrap; }
.attach-error { font-size:var(--ui-font-micro); line-height: 1.6; }
.attach-retry { border: 0; background: none; padding: 0; color: var(--brand-dark);
  font-size:var(--ui-font-micro); text-decoration: underline; cursor: pointer; flex: 0 0 auto; }

/* ---------- Markdown ---------- */
.msg.assistant h1, .msg.assistant h2, .msg.assistant h3, .msg.assistant h4 { font-size:var(--ui-font-heading); margin: 14px 0 6px; }
.msg.assistant p { margin: 8px 0; }
.msg.assistant ul, .msg.assistant ol { margin: 8px 0 8px 20px; }
.msg.assistant li { margin: 3px 0; }
.msg.assistant blockquote { border-left: 3px solid var(--ui-border-strong); padding-left: 12px; color: var(--muted); margin: 8px 0; }
.msg.assistant code { background: var(--code-bg); border-radius: 5px; padding: 2px 6px; font-size:var(--ui-font-caption);
  font-family: Consolas, Menlo, monospace; }
.msg.assistant hr { border: 0; border-top: 1px solid var(--line); margin: 12px 0; }
.msg.assistant table { border-collapse: separate; border-spacing: 0; table-layout: auto; margin: 10px 0; font-size:var(--ui-font-ui); width: 100%;
  border: 1px solid var(--line); border-radius: 10px; overflow: hidden; }
.msg.assistant th, .msg.assistant td { border-bottom: 1px solid var(--line); padding: 8px 12px; text-align: left; white-space: normal; overflow-wrap: anywhere; }
.msg.assistant th:not(:last-child), .msg.assistant td:not(:last-child) { border-right: 1px solid var(--line); }
.msg.assistant thead th:first-child { border-top-left-radius: 9px; }
.msg.assistant thead th:last-child { border-top-right-radius: 9px; }
.msg.assistant tbody tr:last-child td { border-bottom: 0; }
.msg.assistant tbody tr:last-child td:first-child { border-bottom-left-radius: 9px; }
.msg.assistant tbody tr:last-child td:last-child { border-bottom-right-radius: 9px; }
.msg.assistant th { background: var(--ui-subtle); font-weight: 600; }
.msg.assistant tr:last-child td { border-bottom: 0; }
.msg.assistant tr:nth-child(even) td { background: var(--ui-subtle); }

.artifacts { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.artifact-chip { display: inline-flex; align-items: center; gap: 4px; padding: 7px 14px; background: var(--ui-accent-soft);
  color: var(--brand-dark); border: 1px solid var(--ui-border-strong); border-radius: 10px; font-size:var(--ui-font-ui);
  text-decoration: none; }
.artifact-chip:hover { background: var(--ui-hover); }
.artifact-chip.unavailable { cursor: default; opacity: .62; border-style: dashed; color: var(--ui-muted); }
.artifact-chip.unavailable:hover { background: var(--ui-accent-soft); }

/* ---------- 用量面板 ---------- */
.modal { position: fixed; inset: 0; background: rgba(15, 23, 42, .45); display: flex; align-items: center;
  justify-content: center; z-index: 50; }
.modal-card { background: var(--ui-panel); color: var(--ui-text); border-radius: var(--ui-radius-lg); width: min(720px, 92vw); max-height: 86vh; overflow: auto;
  padding: 18px 20px; }
.modal-head { display: flex; justify-content: space-between; align-items: center; font-size:var(--ui-font-heading);
  font-weight: 600; margin-bottom: 12px; }
.usage-cards { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; }
.usage-card { border: 1px solid var(--line); border-radius: 12px; padding: 10px 12px; }
.usage-label { font-size:var(--ui-font-caption); color: var(--muted); }
.usage-num { font-size:var(--ui-font-title); font-weight: 700; color: var(--brand-dark); margin: 2px 0; }
.usage-sub { font-size:var(--ui-font-micro); color: var(--muted); line-height: 1.5; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.usage-split { color: var(--ui-muted); letter-spacing: .2px; }
.usage-section { font-weight: 600; font-size:var(--ui-font-ui); margin: 16px 0 8px; }
/* 图表峰值标注：右对齐小字，避免柱子没有刻度参照 */
.usage-peak { float: right; font-weight: 400; font-size:var(--ui-font-micro); color: var(--muted); }
/* 登录页的第一期范围提示 */
.login-scope { font-size:var(--ui-font-caption); color: var(--muted); margin: -6px 0 12px; line-height: 1.6; }
.login-scope b { color: var(--brand-dark); }
.usage-bars { display: flex; align-items: flex-end; gap: 6px; height: 120px; padding-top: 4px; }
.bar-col { display: flex; flex-direction: column; align-items: center; gap: 4px; flex: 1; }
.bar { width: 70%; background: linear-gradient(to top, var(--brand), color-mix(in srgb, var(--ui-accent) 60%, white)); border-radius: 4px 4px 0 0; min-height: 2px; }
.bar-day { font-size:var(--ui-font-micro); color: var(--muted); }
.usage-table { width: 100%; border-collapse: collapse; font-size:var(--ui-font-ui); }
.usage-table th, .usage-table td { border-bottom: 1px solid var(--line); padding: 6px 8px; text-align: left; }
.usage-table th { color: var(--muted); font-weight: 500; font-size:var(--ui-font-caption); }
.usage-table .num { text-align: right; font-variant-numeric: tabular-nums; }
.tag { font-size:var(--ui-font-caption); padding: 1px 8px; border-radius: 999px; background: var(--ui-accent-soft); color: var(--brand-dark); }
.tag.failed { background: var(--ui-danger-soft); color: var(--ui-danger); }
.tag.cancelled { background: var(--ui-subtle); color: var(--ui-muted); }
.usage-note { margin-top: 12px; font-size:var(--ui-font-caption); }

/* ============================================================
   响应式与多端适配层（桌面端 / 平板 / 手机共用同一份样式）
   原则：只加断点与安全区，不改视觉 token —— 保证三端"看起来是同一个产品"
   ============================================================ */

/* 移动端抽屉：默认隐藏，桌面端永不显示 */
.sidebar-scrim { display: none; }
#sidebar-toggle { display: none; }
#sidebar-close { display: none; }

/* 桌面端外壳（Electron）适配：自绘标题栏拖拽区 + macOS 红绿灯留白 */
body.is-desktop .chat-head { -webkit-app-region: drag; }
body.is-desktop .chat-head button,
body.is-desktop .chat-head a { -webkit-app-region: no-drag; }
body.is-desktop.platform-darwin .sidebar { padding-top: 30px; }
body.is-desktop.platform-darwin .chat-head { padding-left: 78px; }

/* ---------- 平板 / 窄窗口：侧栏改为抽屉 ---------- */
@media (max-width: 960px) {
  #sidebar-toggle {
    display: inline-flex; align-items: center; justify-content: center;
    border: 1px solid var(--line); background: var(--ui-panel); width: 34px; height: 34px;
    border-radius: 9px; cursor: pointer; color: var(--text); flex-shrink: 0;
  }
  #sidebar-toggle:hover { background: var(--ui-hover); color: var(--brand); }

  .sidebar {
    position: fixed; left: 0; top: 0; bottom: 0; z-index: 41;
    width: min(280px, 82vw); transform: translateX(-100%);
    transition: transform .22s ease;
    box-shadow: 0 12px 40px rgba(15, 23, 42, .18);
  }
  .chat.sidebar-open .sidebar { transform: none; }
  .chat.sidebar-open .sidebar-scrim {
    display: block; position: fixed; inset: 0; z-index: 40;
    background: rgba(15, 23, 42, .38);
  }
  #sidebar-close {
    display: inline-flex; align-items: center; justify-content: center;
    margin-left: auto; border: 0; background: transparent; color: var(--muted);
    width: 28px; height: 28px; border-radius: 8px; cursor: pointer; flex-shrink: 0;
  }
  #sidebar-close:hover { background: var(--ui-hover); color: var(--text); }
  .brand { padding-bottom: 12px; }

  .chat-head { padding: 10px 16px; gap: 10px; }
  .head-title { min-width: 0; }
  .head-title .title { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .msg-row { padding: 10px 16px; }
  .composer-wrap { padding: 6px 14px calc(16px + env(safe-area-inset-bottom, 0px)); }
  .messages-wrap { min-height: 0; }
  .usage-cards { grid-template-columns: repeat(2, 1fr); }
}

/* ---------- 手机：单列 + 更大触摸目标 + 表格可横向滚动 ---------- */
@media (max-width: 560px) {
  body { font-size:var(--ui-font-heading); }
  .chat-head { padding: 9px 12px; }
  .chat-head .ghost-btn { width: 34px; height: 34px; }
  .head-title .title { font-size:var(--ui-font-body); }
  #scope-line { display: none; }

  .msg-row { padding: 8px 12px; gap: 8px; }
  .msg.user { max-width: 90%; font-size:var(--ui-font-heading); }
  .msg.assistant { line-height: 1.7; }
  .msg.assistant h1, .msg.assistant h2, .msg.assistant h3, .msg.assistant h4 { font-size:var(--ui-font-heading); }
  .msg.assistant table { font-size:var(--ui-font-caption); }
  .msg.assistant .table-scroll { margin: 10px 0; overflow-x: auto; -webkit-overflow-scrolling: touch; }
  .msg.assistant .table-scroll table { min-width: 100%; margin: 0; }

  .welcome { padding: 0 14px; }
  .welcome-logo { height: 52px; }
  .welcome h2 { font-size:var(--ui-font-title); }
  .suggest-grid { grid-template-columns: 1fr; gap: 10px; }
  .suggest { padding: 13px 14px; font-size:var(--ui-font-body); }

  .composer-wrap { padding: 6px 10px calc(10px + env(safe-area-inset-bottom, 0px)); }
  .composer { border-radius: 14px; padding: 8px 10px; gap: 6px; }
  #ask-input { font-size:16px; } /* 必须真的 16px：低于 16px 时 iOS 聚焦会自动放大页面 */
  .send-btn { width: 38px; height: 38px; }
  .composer-hint { font-size:var(--ui-font-micro); }
  .scroll-bottom { right: 14px; bottom: 12px; }
  /* 操作栏在窄屏不换行、不挤压 */
  .ans-actions { flex-wrap: wrap; gap: 4px; }
  .icon-btn { white-space: nowrap; }
  .meta { display: flex; flex-wrap: wrap; gap: 2px 8px; }

  .modal-card { width: 100%; max-height: 100dvh; height: 100dvh; border-radius: 0; padding: 16px 14px; }
  .usage-cards { grid-template-columns: repeat(2, 1fr); gap: 8px; }
  .usage-num { font-size:var(--ui-font-subtitle); }
  .usage-bars { height: 96px; }
  .usage-table { font-size:var(--ui-font-caption); }
  .login-card { width: 100%; max-width: 360px; padding: 30px 22px; border-radius: 0;
    height: 100dvh; display: flex; flex-direction: column; justify-content: center; }
  .login-wrap { background: var(--ui-panel); }
  .login-logo { height: 54px; }
}

/* 触摸设备统一放大可点区域（不影响桌面鼠标体验） */
@media (hover: none) and (pointer: coarse) {
  .icon-btn, .tool-toggle { min-height: 40px; }
  .conv-item { padding: 12px 10px; }
  .sidebar-foot a { padding: 8px 4px; }
}

@media (prefers-reduced-motion: reduce) {
  * { transition: none !important; animation-duration: .001ms !important; }
  .messages { scroll-behavior: auto; }
}

/* 0.2.0: existing mascot asset and recoverable conversation archiving. */
.brand-logo{width:34px;height:34px;object-fit:contain;flex-shrink:0}
.welcome-logo{width:76px;height:76px;object-fit:contain}
.login-logo{width:68px;height:68px;object-fit:contain;margin-left:auto;margin-right:auto}
/* 登录卡角色：与品牌页共用同一套分层素材，64px 小尺寸，眨眼更快 */
.login-mascot{position:relative;display:block;width:64px;height:64px}
.gg-login-figure{position:relative;display:block;width:100%;height:100%}
.gg-login-figure img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;display:block}
.gg-login-figure img.gg-login-face,
.gg-login-figure img.gg-login-mouth{inset:auto;left:24.7%;top:33.3%;width:43.4%;height:27.3%;object-fit:fill}
.gg-login-eyes{position:absolute;inset:auto;left:24.7%;top:33.3%;width:43.4%;height:27.3%}
.gg-login-eyes > img,.gg-login-eyes > span > img{position:absolute;inset:0;width:100%;height:100%;object-fit:fill}
/* 眼皮必须压在眼睛与眼型之上，否则闭眼帧会被下面的眼层盖住 */
.gg-login-lids{position:absolute;inset:0;pointer-events:none;z-index:3}
.gg-login-lids > img{opacity:0;transition:none}
.gg-login-lids > img.on{opacity:1}
@media(max-width:560px){.login-mascot{width:54px;height:54px}}
.sidebar{min-height:0}.brand{gap:10px}.head-title{flex:1;min-width:0}
.conv-item{padding:3px 4px 3px 10px;cursor:default}
.conv-open{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left;color:inherit;border:0;background:none;padding:9px 0;font:inherit;cursor:pointer}
.archive-conv{display:grid;place-items:center;flex-shrink:0;width:30px;height:30px;padding:5px;border:0;border-radius:6px;color:var(--muted);background:transparent;cursor:pointer}
.archive-conv:hover{background:var(--user-bubble);color:var(--brand-dark)}
.archive-conv:disabled{opacity:.35;cursor:not-allowed}
.sidebar-foot{display:flex;flex-direction:column;align-items:stretch;gap:3px;padding-top:14px;margin-top:8px;flex-shrink:0}
.account-row{display:flex;align-items:center;gap:10px;padding:0 8px 12px;min-width:0}
.account-avatar{display:grid;place-items:center;width:33px;height:33px;flex-shrink:0;border-radius:50%;font-size:var(--ui-font-ui);color:var(--brand-dark);background:var(--user-bubble)}
.account-text{display:flex;flex-direction:column;min-width:0;gap:4px}
#whoami{font-size:var(--ui-font-caption);font-weight:600;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.account-text small{font-size:var(--ui-font-micro);color:var(--muted)}
.sidebar-foot .sidebar-action{display:flex;align-items:center;gap:11px;padding:10px;border:0;border-radius:8px;background:transparent;color:var(--muted);font-size:var(--ui-font-caption);text-align:left;cursor:pointer;text-decoration:none;min-height:38px}
.sidebar-foot .sidebar-action:hover{background:var(--user-bubble);color:var(--brand-dark)}
.archive-count{margin-left:auto;font-size:var(--ui-font-micro);border-radius:5px;padding:1px 6px;background:var(--user-bubble);color:var(--brand-dark)}
.archive-toast{position:fixed;z-index:60;left:50%;bottom:28px;transform:translateX(-50%);width:max-content;max-width:calc(100vw - 32px);display:flex;gap:14px;align-items:center;padding:13px 16px;background:var(--panel);color:var(--text);border:1px solid var(--line);border-radius:10px;box-shadow:0 6px 30px color-mix(in srgb, var(--ui-text) 18%, transparent);font-size:var(--ui-font-caption);line-height:1.6}
.archive-toast[hidden],#archive-undo[hidden]{display:none}
#archive-undo{border:0;color:var(--brand-dark);background:none;font-size:var(--ui-font-caption);white-space:nowrap;cursor:pointer;padding:0}
button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid var(--brand);outline-offset:3px}
/* Icon inputs draw focus on the wrapper (components/topic.css .input-with-icon), so the
   inner input must not add a second ring. */
.conv-search-wrap:focus-within{outline:0}
.conv-search:focus,.conv-search:focus-visible,.archive-search:focus,.archive-search:focus-visible{outline:0;box-shadow:none}
@media(max-width:960px){.sidebar{overflow-y:auto}.conv-list{min-height:80px}.account-row{padding-bottom:8px}}
@media(max-width:560px){
 #archive-dialog{width:calc(100vw - 24px);padding:20px 16px;border-radius:12px}
 .archive-row{align-items:flex-start;flex-direction:column;gap:12px}.archive-restore{align-self:flex-end;min-height:40px}
 .archive-toast{flex-wrap:wrap;bottom:18px}.welcome-logo{width:60px;height:60px}
 .conv-item{padding:3px 4px 3px 10px}.archive-conv{width:36px;height:36px}
}

/* 0.2.0 continuation: configurable folder hierarchy and full archive workspace. */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.folder-toolbar{display:flex;align-items:center;justify-content:space-between;gap:8px;color:var(--muted);font-size:var(--ui-font-micro);margin:17px 5px 3px}
.folder-toolbar button{border:0;background:transparent;border-radius:6px;color:var(--muted);font-size:var(--ui-font-subtitle);width:26px;height:26px;cursor:pointer}
.folder-toolbar button:hover{background:var(--user-bubble);color:var(--brand)}
.new-conv-folder{font-size:var(--ui-font-micro);color:var(--muted);padding:0 5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.folder-row{display:flex;align-items:center;min-height:33px;border-radius:7px;gap:4px;color:var(--text);margin-top:5px;padding:0 4px}
.folder-row.selected{background:var(--user-bubble);color:var(--brand-dark)}
.folder-label{flex:1;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;background:none;border:0;color:inherit;font-size:var(--ui-font-caption);text-align:left;padding:8px 2px;cursor:pointer}
.folder-count{font-size:var(--ui-font-micro);color:var(--muted);margin-left:auto;padding:0 3px}
.folder-toggle,.folder-icon{flex-shrink:0;width:23px;height:26px;border:0;background:none;border-radius:4px;color:var(--muted);cursor:pointer;font-size:var(--ui-font-body);padding:0}
.folder-toggle:hover,.folder-icon:hover{color:var(--brand);background:var(--user-bubble)}
.folder-icon:disabled{opacity:.3;cursor:not-allowed}
.folder-contents{padding-left:12px;border-left:1px solid var(--line);margin-left:11px}
.conv-item{padding-left:5px;gap:1px}.conv-open{font-size:var(--ui-font-caption)}
.archive-conv{width:24px}.conversation-move{font-size:var(--ui-font-body);width:23px}
.folder-empty{font-size:var(--ui-font-caption);color:var(--muted);padding:10px}
.archive-workspace{height:100dvh;display:flex;flex-direction:column;color:var(--text);background:var(--panel)}
.archive-page-header{display:flex;align-items:center;justify-content:space-between;padding:22px 28px;gap:20px;border-bottom:1px solid var(--line);flex-shrink:0}
.archive-page-brand{display:flex;align-items:center;gap:12px}/* 归档页角色：与欢迎区同一套分层素材，30px 只动叶子与眨眼 */
.archive-page-brand .gg-archive-mascot{position:relative;display:block;width:34px;height:34px;flex-shrink:0}
.gg-archive-mascot img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;display:block}
.gg-archive-mascot img.gg-archive-face,.gg-archive-mascot img.gg-archive-eye,
.gg-archive-mascot img.gg-archive-lid,.gg-archive-mascot img.gg-archive-mouth{inset:auto;left:24.7%;top:33.3%;width:43.4%;height:27.3%;object-fit:fill}
.gg-archive-mascot img.gg-archive-lid{opacity:0}
.gg-archive-mascot img.gg-archive-lid.on{opacity:1}
.archive-page-header h1{font-size:var(--ui-font-title);font-weight:600;margin:0 0 5px}.archive-page-header p{font-size:var(--ui-font-caption);margin:0;color:var(--muted)}
.back-chat{background:var(--panel);color:var(--text);border:1px solid var(--line);padding:9px 13px;border-radius:7px;white-space:nowrap;font-size:var(--ui-font-caption);cursor:pointer}
.archive-layout{display:grid;grid-template-columns:220px minmax(0,1fr);flex:1;min-height:0}
.archive-folder-panel{border-right:1px solid var(--line);padding:12px;background:var(--bg);overflow:auto}
.archive-folder-panel .folder-toolbar{margin:0 6px 15px}
.archive-tree-row{display:flex;align-items:center;gap:4px;padding-top:4px;padding-bottom:4px;padding-right:7px;border-radius:7px;margin-bottom:3px;color:var(--muted)}
.archive-tree-row.selected{background:var(--user-bubble);color:var(--brand-dark)}
.archive-tree-label{border:0;background:none;font-size:var(--ui-font-caption);text-align:left;padding:7px 0;flex:1;color:inherit;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}
.archive-content{padding:28px;min-width:0;overflow:auto}

.archive-content-header{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:24px}
.folder-breadcrumb{font-size:var(--ui-font-micro);color:var(--muted);margin-bottom:10px;overflow-wrap:anywhere}
.archive-content-header h2{font-size:var(--ui-font-display);margin:0 0 8px;font-weight:600}.archive-content-header p{font-size:var(--ui-font-micro);color:var(--muted);margin:0}
.archive-query{width:230px;max-width:45%}.archive-search{width:100%;padding:10px 12px;font-size:var(--ui-font-caption);border:1px solid var(--line);border-radius:7px;color:var(--text);background:var(--panel);box-sizing:border-box}
.archive-bulk{display:flex;align-items:center;gap:14px;padding:12px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);font-size:var(--ui-font-micro);color:var(--muted)}
.archive-bulk label{display:flex;gap:7px;align-items:center;white-space:nowrap}.archive-bulk input,.archive-name input{accent-color:var(--brand)}
.archive-bulk-actions{display:flex;gap:8px;margin-left:auto}
.archive-bulk-actions button{font-size:var(--ui-font-micro);padding:7px 9px;background:var(--panel);border:1px solid var(--line);border-radius:6px;color:var(--text);cursor:pointer}
.archive-bulk-actions button:disabled{opacity:.4;cursor:not-allowed}
.archive-feedback{font-size:var(--ui-font-caption);color:var(--brand-dark);min-height:19px;line-height:1.6;margin:13px 0}
.archive-table-head,.archive-row{display:grid;grid-template-columns:minmax(160px,1.2fr) minmax(130px,1fr) auto;gap:16px;align-items:center}
.archive-table-head{font-size:var(--ui-font-micro);color:var(--muted);padding:0 10px 12px;border-bottom:1px solid var(--line)}
.archive-row{padding:18px 10px;border-bottom:1px solid var(--line)}.archive-row.is-selected{background:var(--user-bubble)}
.archive-name{display:flex;align-items:flex-start;gap:10px;min-width:0;cursor:pointer}.archive-name input{margin-top:3px;flex-shrink:0}
.archive-name strong{font-size:var(--ui-font-caption);font-weight:500;line-height:1.7;overflow-wrap:anywhere}
.archive-row-text{display:flex;flex-direction:column;gap:6px;min-width:0}.archive-row-text span{font-size:var(--ui-font-micro);color:var(--muted);line-height:1.7;overflow-wrap:anywhere}
.archive-row-text .archive-folder-path{color:var(--text)}
.archive-row-actions{display:flex;gap:4px;flex-wrap:wrap;align-items:center;justify-content:flex-end}
.archive-row-actions button{font-size:var(--ui-font-micro);background:none;border:0;padding:7px 5px;border-radius:5px;cursor:pointer;color:var(--brand-dark)}
.archive-row-actions button:hover{background:var(--user-bubble)}
.danger-text,.archive-row-actions .danger-text,.archive-bulk-actions .danger-text{color:var(--ui-danger)}
.archive-hint{font-size:var(--ui-font-micro);line-height:1.7;color:var(--muted);margin-top:24px}
.archive-empty{padding:65px 12px;text-align:center}.archive-empty strong{font-size:var(--ui-font-body);font-weight:500}.archive-empty p{font-size:var(--ui-font-caption);color:var(--muted);line-height:1.8}
.management-dialog{width:min(440px,calc(100vw - 32px));max-height:90dvh;overflow:auto;padding:25px;border:1px solid var(--line);border-radius:14px;background:var(--panel);color:var(--text);box-shadow:0 20px 60px color-mix(in srgb, var(--ui-text) 22%, transparent)}
.management-dialog::backdrop{background:color-mix(in srgb, #000 40%, transparent)}
.management-heading{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:24px}
.management-heading h2{font-size:var(--ui-font-subtitle);margin:0;font-weight:600}.management-heading button{font-size:var(--ui-font-display);background:none;border:0;cursor:pointer;color:var(--muted)}
.management-dialog label{display:block;font-size:var(--ui-font-caption);margin-bottom:8px;margin-top:18px}
.management-dialog input,.management-dialog select{box-sizing:border-box;width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:7px;background:var(--panel);color:var(--text);font-size:var(--ui-font-ui)}
.field-hint{font-size:var(--ui-font-caption);color:var(--muted);line-height:1.8}.form-error{color:var(--ui-danger);font-size:var(--ui-font-caption);min-height:18px;line-height:1.7}
.folder-secondary{display:flex;justify-content:space-between;gap:15px}.folder-secondary button{font-size:var(--ui-font-micro);padding:6px 0;border:0;background:none;color:var(--muted);cursor:pointer}.folder-secondary button.danger-text{color:var(--ui-danger)}.folder-secondary button:disabled{opacity:.4;cursor:not-allowed}
.dialog-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:25px}.dialog-actions button{padding:9px 15px;border-radius:7px;background:var(--panel);color:var(--text);border:1px solid var(--line);font-size:var(--ui-font-caption);cursor:pointer}
.dialog-actions .primary-action{background:var(--brand);color:var(--ui-on-accent);border-color:var(--brand)}.dialog-actions .danger-action{background:var(--ui-danger-soft);border-color:var(--ui-danger);color:var(--ui-text)}
.dialog-actions button:disabled{opacity:.5;cursor:not-allowed}
#delete-summary{font-size:var(--ui-font-body);line-height:1.8;overflow-wrap:anywhere}
@media(max-width:1050px){.archive-layout{grid-template-columns:190px minmax(0,1fr)}.archive-content{padding:24px 20px}.archive-table-head,.archive-row{grid-template-columns:minmax(140px,1fr) minmax(110px,1fr)}.archive-table-head span:last-child{display:none}.archive-row-actions{grid-column:1/-1;justify-content:flex-end}.archive-content-header{align-items:flex-start;flex-wrap:wrap}.archive-query{max-width:100%;width:100%}}
@media(max-width:600px){
 .archive-page-header{padding:16px;gap:10px}.archive-page-brand img{display:none}.archive-page-header h1{font-size:var(--ui-font-subtitle)}.archive-page-header p{max-width:200px;font-size:var(--ui-font-micro)}.back-chat{padding:8px;font-size:var(--ui-font-micro)}
 .archive-layout{display:flex;flex-direction:column}.archive-folder-panel{max-height:180px;flex-shrink:0;border-right:0;border-bottom:1px solid var(--line);padding:9px 14px}.archive-folder-panel .folder-toolbar{margin:0 0 5px}
 #archive-folder-tree{display:block}.archive-content{padding:18px 14px;flex:1;min-height:0}.archive-content-header{gap:12px;margin-bottom:16px}
 .archive-bulk{flex-wrap:wrap;gap:10px}.archive-bulk-actions{margin-left:auto}.archive-bulk-actions button{padding:7px}.archive-table-head{display:none}
 .archive-row{grid-template-columns:minmax(0,1fr);align-items:start;gap:9px;padding:16px 3px}.archive-row-text{padding-left:25px}.archive-row-actions{grid-column:1;justify-content:flex-start;padding-left:20px;gap:10px}.archive-row-actions button{min-height:36px}
 .management-dialog{padding:20px}.archive-toast{bottom:18px}.archive-content-header h2{font-size:var(--ui-font-title)}
}

/* 0.2.0: tree manipulation, hover titles and a resizable conversation sidebar. */
.chat{position:relative}
@media(min-width:961px){.sidebar{width:var(--sidebar-width,268px)}}
#sidebar-resizer{position:absolute;left:var(--sidebar-width,268px);top:0;bottom:0;width:8px;margin-left:-4px;z-index:12;cursor:col-resize;touch-action:none;background:transparent}
#sidebar-resizer:hover,#sidebar-resizer:focus-visible,.sidebar-resizing #sidebar-resizer{background:color-mix(in srgb,var(--brand) 22%,transparent)}
.sidebar-resizing,.sidebar-resizing *{cursor:col-resize!important;user-select:none}
.folder-row,.conv-item{position:relative;scroll-margin:30px}
.tree-grip{display:grid;place-items:center;border:0;background:none;color:var(--muted);font-size:var(--ui-font-body);width:16px;min-width:16px;height:28px;padding:0;cursor:grab;opacity:.35;touch-action:none;flex-shrink:0}
.folder-row:hover .tree-grip,.conv-item:hover .tree-grip,.tree-grip:focus-visible{opacity:1}
.tree-grip:disabled{opacity:.15;cursor:not-allowed}
.tree-dragging,.tree-dragging *{cursor:grabbing!important;user-select:none}
[data-drop=inside]{box-shadow:inset 0 0 0 2px var(--brand);background:var(--user-bubble)!important}
[data-drop=before]::before,[data-drop=after]::after{content:"";position:absolute;left:0;right:0;height:3px;background:var(--brand);z-index:5;pointer-events:none}
[data-drop=before]::before{top:-2px}[data-drop=after]::after{bottom:-2px}
[data-drop=invalid]{box-shadow:inset 0 0 0 2px var(--ui-danger)}
.tree-drag-feedback{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);max-width:calc(100vw - 32px);padding:12px 17px;border:1px solid var(--brand);border-radius:9px;z-index:80;background:var(--panel);color:var(--brand-dark);font-size:var(--ui-font-caption);line-height:1.7;box-shadow:0 4px 25px color-mix(in srgb, var(--ui-text) 14%, transparent);pointer-events:none}
.tree-drag-feedback[hidden]{display:none}.tree-drag-feedback.is-invalid{color:var(--ui-danger);border-color:var(--ui-danger)}
.title-viewport{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;width:100%}
.title-content{display:inline-block;white-space:nowrap;min-width:100%}
.title-scrolling .title-viewport{text-overflow:clip}
.title-scrolling .title-content{animation:title-pan var(--title-duration,5s) 700ms linear infinite alternate}
@keyframes title-pan{0%,12%{transform:translateX(0)}88%,100%{transform:translateX(var(--title-distance,0px))}}
.order-controls{display:flex;gap:10px;margin:12px 0}.order-controls button{border:1px solid var(--line);color:var(--text);background:var(--panel);font-size:var(--ui-font-caption);padding:7px 13px;border-radius:6px;cursor:pointer}.order-controls button:disabled{opacity:.4;cursor:not-allowed}
.conv-open,.folder-label,.archive-tree-label{min-width:0;display:block}
.conv-item{gap:0}.folder-row{gap:2px}.folder-toggle{width:17px}.archive-count{flex-shrink:0}
.tree-section-label{font-size:var(--ui-font-micro);color:var(--muted);padding:7px 4px 3px;letter-spacing:.03em}
#conversation-archive{margin-right:auto;color:var(--brand-dark)}
@media(max-width:960px){#sidebar-resizer{display:none}.tree-grip{width:23px;min-width:23px;height:32px}.folder-icon{min-width:25px}}
@media(prefers-reduced-motion:reduce){.title-scrolling .title-content{animation:none}.title-scrolling .title-viewport{overflow:auto;text-overflow:clip}}

/* 0.2.0: a small greeting from the existing mascot on the welcome surface. */
.gg-mascot{display:flex;justify-content:center;width:max-content;max-width:100%;margin:0 auto 16px;position:relative}
.gg-mascot-trigger{display:block;width:76px;height:76px;padding:0;border:0;border-radius:22px;background:transparent;cursor:pointer;-webkit-tap-highlight-color:transparent}
.gg-mascot-motion{display:block;width:100%;height:100%;transform-origin:50% 88%;animation:gg-breathe 4.8s ease-in-out infinite}
.gg-mascot-figure{position:relative;display:block;width:100%;height:100%}
.gg-mascot-figure img{position:absolute;inset:0;display:block;width:100%;height:100%;margin:0;object-fit:contain}
.gg-mascot-blink-frame{opacity:0;animation:gg-blink 8.4s infinite}
.gg-mascot-trigger:hover .gg-mascot-figure{filter:drop-shadow(0 7px 11px rgba(237,140,59,.2))}
.gg-mascot-trigger:focus-visible{outline:2px solid var(--brand);outline-offset:5px}
.gg-mascot-trigger:active .gg-mascot-motion{animation:gg-press .18s ease-out}
.gg-mascot.is-hello .gg-mascot-motion{animation:gg-hello .62s cubic-bezier(.22,.9,.3,1)}
.gg-mascot-reply{position:absolute;z-index:4;top:50%;left:calc(100% + 12px);width:max-content;max-width:280px;padding:9px 12px;transform:translateY(-50%);border:1px solid color-mix(in srgb,var(--brand) 20%,var(--line));border-radius:11px;background:var(--ui-panel);color:var(--text);font-size:var(--ui-font-caption);line-height:1.65;text-align:left;cursor:pointer;box-shadow:0 8px 24px color-mix(in srgb, var(--ui-brand-logo) 14%, transparent);animation:gg-reply-in .18s ease-out}
.gg-mascot-reply[hidden]{display:none}
.gg-mascot-reply::before{content:"";position:absolute;top:50%;left:-5px;width:8px;height:8px;background:var(--ui-panel);border-left:1px solid color-mix(in srgb,var(--brand) 20%,var(--line));border-bottom:1px solid color-mix(in srgb,var(--brand) 20%,var(--line));transform:translateY(-50%) rotate(45deg)}
.gg-mascot-reply small{display:block;margin-top:2px;color:var(--muted);font-size:var(--ui-font-micro)}
.gg-mascot-reply:hover{border-color:var(--brand);background:var(--ui-accent-soft)}
.gg-mascot-reply:focus-visible{outline:2px solid var(--brand);outline-offset:3px}
.gg-mascot-status{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@keyframes gg-breathe{0%,100%{transform:translateY(1px) scale(.99,.985)}50%{transform:translateY(-2px) scale(1.005,1.01)}}
@keyframes gg-blink{0%,91.4%,94.2%,100%{opacity:0}92.1%,93.5%{opacity:1}}

@keyframes gg-hello{0%{transform:scale(1)}28%{transform:translateY(-5px) scale(1.04,1.025) rotate(-2deg)}55%{transform:translateY(1px) scale(.985,1)}78%{transform:translateY(-2px) scale(1.015,1.02) rotate(1deg)}100%{transform:scale(1)}}
@keyframes gg-press{0%{transform:scale(1)}100%{transform:scale(.95)}}
@keyframes gg-reply-in{0%{opacity:0;transform:translate(4px,-50%)}100%{opacity:1;transform:translate(0,-50%)}}
@media(max-width:760px){.gg-mascot-trigger{width:64px;height:64px}}@media(max-width:560px){.gg-mascot{flex-direction:column}.gg-mascot-reply{position:relative;top:auto;left:auto;transform:none;margin-top:10px;max-width:min(280px,calc(100vw - 52px));animation:gg-reply-in-mobile .18s ease-out}.gg-mascot-reply::before{top:-5px;left:50%;border-left:1px solid color-mix(in srgb,var(--brand) 20%,var(--line));border-bottom:0;border-top:1px solid color-mix(in srgb,var(--brand) 20%,var(--line));transform:translateX(-50%) rotate(45deg)}}
@keyframes gg-reply-in-mobile{0%{opacity:0;transform:translateY(-4px)}100%{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.gg-mascot-motion,.gg-mascot-trigger:hover .gg-mascot-motion,.gg-mascot-trigger:focus-visible .gg-mascot-motion,.gg-mascot.is-hello .gg-mascot-motion,.gg-mascot-trigger:active .gg-mascot-motion,.gg-mascot-reply{animation:none!important}.gg-mascot-blink-frame{display:none}}
/* 气泡在手机上位于角色下方，沿用桌面动画会把 translateY(-50%) 带进来，
   导致打开后停在 opacity:0 的半途状态。这里只做淡入。 */
@media(max-width:560px){.gg-mascot-reply:not([hidden]){animation:gg-reply-fade .16s ease-out}}
@keyframes gg-reply-fade{0%{opacity:0}100%{opacity:1}}

/* ---------- 0.3.0 角色动效：登录卡、侧栏品牌、欢迎区共用分层素材 ----------
   整帧素材（idle / walk）+ 独立眼型、眼皮与嘴型，尺寸变化时比例不变。
   静态回退：首帧即为完整角色，脚本未运行或减少动态时仍有画面。 */
.login-mascot{position:relative;display:block;width:64px;height:64px;margin:0 auto 14px}
.brand-mascot{position:relative;display:block;width:34px;height:34px;flex-shrink:0}
.gg-figure{position:relative;display:block;width:100%;height:100%}
.gg-figure img{position:absolute;inset:0;display:block;width:100%;height:100%;margin:0;object-fit:contain}
.gg-figure .gg-face,.gg-figure .gg-eye,.gg-figure .gg-expr,.gg-figure .gg-mouth,
.gg-mascot-figure .gg-face,.gg-mascot-figure .gg-eye,.gg-mascot-figure .gg-mouth{inset:auto;left:24.7%;top:33.3%;width:43.4%;height:27.3%;object-fit:fill}
.gg-figure .gg-expr[hidden]{display:none}
.gg-lids{position:absolute;inset:auto;left:24.7%;top:33.3%;width:43.4%;height:27.3%;z-index:3;pointer-events:none}
.gg-lids img{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;opacity:0;transition:none}
.gg-lids img.on{opacity:1}
/* 原型规定待机“轻微呼吸 + 间歇眨眼”。整帧 idle 在 34px／64px 下只有叶尖在变，
   肉眼几乎看不出在动；这里给整只角色补 4.8s 呼吸，与品牌页规范一致。 */
.brand-mascot .gg-figure,.login-mascot .gg-figure{transform-origin:50% 92%;animation:gg-idle-breathe 4.8s ease-in-out infinite}
@keyframes gg-idle-breathe{0%,100%{transform:translateY(0) scale(1)}50%{transform:translateY(-1px) scale(1.02,1.035)}}
@media(prefers-reduced-motion:reduce){.brand-mascot .gg-figure,.login-mascot .gg-figure{animation:none}}
.login-card.is-shake{animation:gg-login-shake .42s cubic-bezier(.36,.07,.19,.97) 1}
@keyframes gg-login-shake{0%,100%{transform:translateX(0)}20%{transform:translateX(-5px)}40%{transform:translateX(4px)}60%{transform:translateX(-3px)}80%{transform:translateX(2px)}}
/* 欢迎区：图与气泡共用 76px 角色，避免旧 logo 规则把整组撑成方块 */
.gg-mascot-figure.welcome-logo{width:76px;height:76px;margin:0;padding:0}
@media(max-width:560px){.login-mascot{width:54px;height:54px}.gg-mascot-figure.welcome-logo{width:64px;height:64px}}
@media(prefers-reduced-motion:reduce){.login-card.is-shake{animation:none}}

/* 0.2.0 conversational generation feedback (active product only). */
.conv-item { position:relative; }
.conv-item .conv-generation-status { position:absolute; right:5px; top:50%; display:grid; place-items:center; width:22px; height:22px; transform:translateY(-50%); color:var(--brand); z-index:1; pointer-events:none; }
.conv-item .conv-actions { position:absolute; right:3px; top:50%; z-index:2; display:flex; align-items:center; gap:1px; transform:translateY(-50%); padding-left:5px; background:linear-gradient(90deg,transparent,var(--ui-accent-soft) 12px); }
.conv-item .conv-generation-status .gg-icon { width:13px; height:13px; stroke-dasharray:28 28; animation:gg-spin .95s linear infinite; }

.conv-item .conv-actions .folder-icon { color: var(--ui-text); opacity: 1; }
.conv-item .conv-actions .folder-icon .gg-icon { stroke: currentColor; stroke-width: 2; }
.conv-generating .title-content { background:linear-gradient(90deg,color-mix(in srgb,var(--text) 35%,var(--panel)) 0%,var(--text) 32%,color-mix(in srgb,var(--text) 35%,var(--panel)) 64%); background-size:220% 100%; -webkit-background-clip:text; background-clip:text; color:transparent; animation:gg-generation-sweep 1.6s ease-in-out infinite; }
.conv-generating.title-content { will-change: background-position; }
.conv-generating.title-scrolling .title-content { animation:gg-generation-sweep 1.6s ease-in-out infinite, title-pan var(--title-duration,5s) 700ms linear infinite alternate; will-change: background-position, transform; }
@keyframes gg-spin { to { transform:rotate(360deg); } }
@keyframes gg-generation-sweep { 0% { background-position:100% 0; } 100% { background-position:-60% 0; } }
.conv-item .conv-actions { opacity:0; pointer-events:none; transition:opacity .14s ease; }
.conv-item:hover .conv-actions, .conv-item:focus-within .conv-actions { opacity:1; pointer-events:auto; }
.conv-item:hover .conv-generation-status, .conv-item:focus-within .conv-generation-status { opacity:0; visibility:hidden; }
/* 加载态右对齐：转圈固定在标题右侧，与悬浮操作分属两层；hover/focus 时
   操作层优先遮住转圈，避免两个图标叠在一起。 */
.conv-item .conv-generation-status{transition:opacity .12s ease}
.conv-item.conv-generating .conv-open{color:var(--brand-dark)}
.conv-item.conv-generating .title-content{background:linear-gradient(90deg,color-mix(in srgb,var(--text) 34%,var(--panel)) 0%,var(--text) 34%,color-mix(in srgb,var(--text) 34%,var(--panel)) 68%);background-size:220% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:gg-generation-sweep 1.6s ease-in-out infinite}
.conv-item:not(.active):hover .conv-actions { background:linear-gradient(90deg,transparent,var(--ui-subtle) 12px); }
@media (hover:none),(pointer:coarse) { .conv-item .conv-actions { opacity:1; pointer-events:auto; visibility:visible; } }
@media (prefers-reduced-motion:reduce) { .conv-generating .title-content { animation:none; background:none; color:var(--text); } .conv-item .conv-generation-status .gg-icon { animation-duration:1.6s; } }

.generation-strip { display:flex; align-items:center; gap:9px; min-height:34px; padding:5px 22px; border-bottom:1px solid color-mix(in srgb,var(--brand) 22%,var(--line)); background:color-mix(in srgb,var(--user-bubble) 55%,var(--panel)); color:var(--text); font-size:var(--ui-font-micro); }
.generation-strip strong { font-size:var(--ui-font-micro); font-weight:500; }
.generation-strip small { margin-left:7px; color:var(--muted); font-size:var(--ui-font-micro); }
.generation-spinner { display:block; width:13px; height:13px; flex-shrink:0; border:1.5px solid var(--brand); border-right-color:transparent; border-radius:50%; animation:gg-spin .95s linear infinite; }

/* 角色常驻在输入框上沿：只在有消息时出现，下半身被输入框裁掉 */
/* 角色常驻输入框上沿：层级低于输入框，下半身被输入框真实遮挡 */
.composer-wrap{position:relative}
.composer{position:relative;z-index:2}
.gg-perch{position:absolute;left:50%;top:-42px;width:82px;height:82px;transform:translateX(-50%);
  z-index:1;pointer-events:none;opacity:0;transition:opacity .3s ease, top .5s cubic-bezier(.22,.9,.25,1);
  /* 触屏拖动要自己接管手势，否则浏览器会判成页面滚动并取消 pointer */
  touch-action:none}
/* 常驻角色站在输入框上沿：上半身露出，下半身落进输入框并被其背景挡住。
   用相对容器顶边的固定偏移（而不是底边），输入框变高或下方提示行增减都不会
   让整只角色浮到输入框上方。 */
/* 输入框上方露出上半身；顶部偏移按本产品输入框高度实测调整，
   保证嘴型完整可见、下半身仍落在输入框内被遮住。 */
.chat.has-messages .gg-perch{opacity:1;top:-40px}
.gg-perch-figure{position:relative;display:block;width:82px;height:82px;margin-top:0;transform-origin:50% 92%;
  transition:transform .5s cubic-bezier(.22,.9,.25,1)}
.gg-perch-figure img.gg-perch-base{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
.gg-perch .gg-perch-figure .gg-perch-face,
.gg-perch .gg-perch-figure .gg-perch-mouth{position:absolute;inset:auto;left:24.7%;top:33.3%;width:43.4%;height:27.3%;object-fit:fill}
/* 眼区：眼白固定，虹膜在眼眶内小幅位移（与品牌页同一套） */
.gg-perch-eyes{position:absolute;inset:auto;left:24.7%;top:33.3%;width:43.4%;height:27.3%;pointer-events:none}
.gg-perch-eyes > img,.gg-perch-eyes > span > img{position:absolute;inset:0;width:100%;height:100%;object-fit:fill}
.gg-perch-iris-clip{position:absolute;inset:0;pointer-events:none;
  -webkit-mask-image:url("data:image/webp;base64,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");
  mask-image:url("data:image/webp;base64,UklGRvAqAABXRUJQVlA4WAoAAAAQAAAAuwEAFwEAQUxQSI8JAAABDLVt2zDW/687PUNErIQ8MEkCwGiW3iigyLatOnpDiWdGG0UTjY7kRDJOpb/8vnmpGxFq3LaN1KlfuBx5tUZrmyHJ1hcRiWqMbVvHtm3z2ji2bVuDax7btt1n3TO81rArMzLie9fqyqPKiKh1/kWEQ0myomYXfWgSj8kFT/yBRLfCf1QRQqo4SdKSkyRWUojwcmrNz1VJrZYm6ouYy7hxNLEUAZKM0h5MsaIvsIqTnsOJZEt9LErTmMquDRozba31N954w3VmjhvS+dm3Ik1jFZTH4jSJqOz2wWOnr7PBxhtvsM70sYPbqewoSWPZEiWj8tdDDZ2z9X4/POPqO35376NPPfvc048/8Mf515/380N2WG90rfzBipQIglRc5hSPWGe7A39y9rVzf3//Y08/++zTj93/+7nXnv2TA7dbZ0Rc5hmrVvd6WeJfGzln12NvePyT1fgSLpa8MO/0AzcY37v0PkgZCE4dY9bd+6TbnllYx5dwfeEzt52097pjOsqcRCtrEjWQtg/Z5Oe/6ULDttA6q9ezkuv1LNeFQcP/eOjMnUf2lo03Tfhf6xy2zQl3Lv4cTvnnccq1LiwaXnznCdsM62xpFaGIZPtGZz2fA2DbAM7M+Fwzc+NtMZYBvH/drgMjQUr4zUn13vqS123juearcQJgX79k696NI21JRSSKaOTPnlipG4CtZXwFs+2ZA7r73QvXJZJJ5Gl7IJFEU055eU2JE391TgD0mpdPmVI64FajqBYRbXztu8tL35LS9+armbn8oVqz6Hf7xSRrsYecUkW04x1dK8sfia/MqXFcJU4ru+7YkUilUUtp0yYR0Q63vpcDbIxlNMfWlH4DF/75Gx0kfHuCSiTJfX/ZZQEujEXTOBUM2K5f7itJJqplbCdOiLa47G0AWhtGM20LzcDS+ft3kEyET/8qEYldb+wqcbJoLietAXTduKugKBEtQSoimn7MK4DJCkbzbTINLLlss4ik8oaTIlr3jA9LnFCBi8wAH56xbuP4W0FPkqj/Pg8Aum5QkTmrA+//dLQvTUehiIYe+TxQzywqsm1wev7IoS2gqSsEibGXZchyRpUu6sDdG6QkhBecoulzgbqulBPrOjB3ekQi8EVStMs74IJRsbmw+PdRfXz4BilqO2yRG5wYiw5rIxX0Wkrt568CW7hgi+xPU6imHK+lNPjmbliGA2aL7psHU6oC3pmk6XeuBiy7IQv72n4Ux45z2vLJ3JGPeAl2/uSWVIsCrSSiXZ4HDMMRcwEsPEpSLN3tkkg64l2gcIrTu0eQDHMnJRZ05HsoNBxyofH/i3pT5GgREcXHLYF2ipPWWHJcTJEIccI7+u7f0V3AKdsMuGIQKSeLVNRxcrdznIpudJ/cQUqGtzuZ/mAl6hauWRtcNayn6uTU5zRwxnDLpRM5rU9PCW09/VFhc7hnNhrXD6NYuJcupD5nwBTsIKfC4Iw+FAf1wYiS71g2DBdtNW4cSIlzbQLqOB3WOsmJrcXpHRSHdGuKjlwDy3DTxuobOlXsGqf4lAwWjtoiOyVW4Swqof3/iZ66qy7QfTklSriVCjhqOQo4zGn5UeFMDogabdOFjOGuc6w6jmLpFKdD/44MDjvD3w+lmgijUprzdGNHDos1/rEXSeXQFrb4AJl1WTbDB1sEcgNSDfo1MgOnbQt8MMWZ/QlJI5+CdpyT0XhqJEkRxKtNZ60ocjhuY/DHgRQJVzrAN2VFAcddFNlNaQCLFLTtPzkDnC8WR8VutPgV0UEFazhvzcVBRCp8eZyBb8Fa98WWV21DiXAiezp1GZg94MRYNjV4GdVIdFxqYOCDNe6fJlMHrrHIofO9+IijcW7zh8okbD1KSVushGUvxJk+QUSRA+OZDqobPzCBTf2gwI17Smn4Q7AWfjjDX7ajWtWq0exXUcATF3h1NtVCFuP0m9AMwJOAuf0TVXXiqfMsZD5xOqszUUHLBrxoC3jjvFh8BEVVc9rh/SL3idP7O1Aarl3EycnI2R9xjgc7paiWU9vNpehRuLktXPflJrTZizaHR875b9+nSktM+3xkM3jkzH60D8XBujuMLkRufZIt8FxKFUoo+o1vnHL8JliDtBO5/vOowytr/OcgSaq6SW7fhZ7oVUDX9jJQJaYL6kb7JWPtY20UVZjwXVBY4xunYgGJEEkoOfzpxrM9exOwfGMpVGU33U/6BBqeWeOTSSJERUj69j9ZwzuZK9qranYoIU5ehcI3FVh1shAqQCJ1N1vjm5j503FVLUrqfIXZ+ibL/EonyRBdc5r6qX/LgAX2U0JVE+Xmq2G848QGqzeX4QmK5PHLoeGfLN8xtJqRhhF1Xqxh4J0N9MWdFIXnBr/0EbDxT2yxaO2qNOwNNJb9W8Qbw4IjKWjKv2EYPhY+lJSspEW3pYGFh7YwWwZn0EVE8ZE5DHx0gSsGVBFi6ji+FL0MxwdneHZMfW4znirH02tXcTkupTF3smX4+ft05xhKQ6Ph78BaP2f2f3tWoUSsuwzGTxksW1ckgRkLSuuuhp8TWOOoCgYPyYj2YuvrzPJeFMnAbPUweKucr6sglxoJdSI3op+BT1QiCswj54M9Feq4d2rzn5jQiFuh4ak1bh1BQVlMafSfYdlTZXhnx+Y3Omq09tMeq9SoC4tmvO2vNP59ZBXabiEKX1Vg4XZBkUhoo/+wtyqMPZ4S0XROB+TW+Cpj8wMoESEZ3ES7Gm8nWI3Lm34XoEzox9Dsq1jjx5TIgLxS0bfhrzjDglg1W0qewz6Lz5EqJCJ1gt+6ayCpZmcO26/1e3ZtO0Uh2Vav86DhrTM8Mp6iZnMaNBeZz5zmDgpJJjWhQdcg91cf+aGa4mZzKszz7OeS5fNCSkKyrVF3+DzL8uPw8ykufjaL4u/CuN/4rdsoJc3mVF/+7M2yntKQaNKf/F79HH8+nd3PZtf5XZhyl996zz6f/uFnc+jbobf5eveUr3cbsjsTsDuLszsDt7t7srvztXtrQffGye5tod2bXru39HZ/WOj+jtn92bT7K22XUUCXDWKXyWOXhUWXQWeX/WiXuUqXdWyXMU6X7U83U8Nulg3dDCm72W10MxPtZpXSzQi2m81NNxPfzkWBzgGDzr2EznmGzjWIzvGJzq3LzmmNziWPzuGQzp2SzllUzhWWztFXzo3ZzkmbzgVdzsGervuAXOcIua4fch1b5Lrt0HVKkutyBdehDK67nFtnQLeujnQr/Cf8J/wn/Cf8J/wn/Cf8J/wn/Cf8J/wn/Cf8J86AAABWUDggOiEAALB5AJ0BKrwBGAE+DQSCQQEvAAAYlnbvx8mYvAH8AGmnzn+N/J3w2qSdm/KD80vlypn9J/Av9s/ZT4Pf3fpd6D8w3xH8q/sf9t/cb/C///68f2n1I/lf+7+4B/FP47/bf7N/eP+N/fP///5/qA9QH8+/wH/G/Wb4Af0H+of6X/E+7l/cf9h/c/cJ/Yf83+uH9y+QD+af1H/e+1n/ofYD/tH+E9gD+bf0n1bP8d/2P9Z+8P0J/sL/3f898BH8v/qP+u/N/9//sA9AD1M/4B6q/S/+VfjH3/f038qv7D6S/i/zD9O/Hv97v9DzQnnvtD96/r37Ifl18o/8DwR+O39p6gv4n/If7h/U/2K/t3/d/4PuX7I7Rv8t6AXsN9K/zP92/a7/O/th0p/Yz/Z+4D/If6r/pP7d+53+E+R/9B4G/1X/V/9b/R/ir9gX8m/tf+x/zH5G/ST/Jf8H/IfuJ/jv//7yvyz+9/8f/Jf5P/vf37///gN/Hf6L/o/7r/mP+l/h////2vun9i37Pexh+uX/CDnptpgTPRLBEyQ/b4Gd2Aqptu+R5n3SHoBPRfYkxC+Rkh42R4L9/1kt0MP+SOw2zbWiabSRxXOh0Iklr8focrUsvB8u2k9ASj6i8S9P5vr1Vyb/gwY2dCsJCVvcjFWjf7+59x9dJMJgJDyeT67BcZ8EIrdon/QqxNjhyGYIm4EV/vgsdg7XVHhPQMHRZixB2HyItExezVazLjlOgptvljT0wbiDG5FzezcgZW2asejwZ+acIceuzvhqZstUGru4WcSaJYZQzvQoknAu1zzvvFyUwDoAgyts1RZdrfaEGK0KwkOK4VNDicZ8vsvE/4hP3saJ8PLq3uc6V+ghM6Y5+mS0Zp11NpmXZqwdUexexKp95kuEjU6j3KWrOnasb9RaOH4ZZrg/bWifm2OIzhQUYh8c1VgfqXVHwbHGSjr3cCPIIzJySFb9bJ/YL8Jdpz7sFoVlpt0oQ+ybJVN5mKLNe/a1w9HTp3xD4QcNZi/SgU0JJHmnSn7loptj/JKD6kazBFQy2z021oytDXtZ+6vg9zfLXNUqVlCGpBPpHKl9D/wE3tg48DVDZIw5Wd5Z4y54sVs9f4Bns7+voib6SnLgpAHGNyOcEhLNw7/8lk4Ns21oz3m9VqsdALraWlb0ApuhWWoBTdCstQCm6FZagFN0Ky1AKboVlqAU3QrLUApuhWWoBTdCstQCm6FZagFN0Ky1AKboVlqAU3QrLUApuhWWoBTdCstQCm6FZagFN0Ky1AKboVlqAU3QrLUApuhWWoBTdCstQCm6EsAA/vvSnLmHnsE4D9kfm1czT6/2JK/5Ysf94HFK7VK05G8EpnztCQolgmQaczkjdosEZ3oCQQaHbmvf6eZjM/d9hE5erbF5/RkgzdmQ1r2ALyYjSHf/yGgl+8qhaKkI84ZVcu3OkkojHoT29IIHikZLZYLBPnJ4OFimkZLeQFKb2bkXcDvAKh90pja4Qi/C43KOIz21tAi+Y88eH68dS67wpDQ9MJbi2phrDZbMbb6wieSAp0i9Buu4nZOWXiwXRC9W4zGQDjabwTnbwDTe9O1febqh7wflnuGDdbepX3a0uOVdOO78pLpyNmSjKyA3cbN4nUyry049TwpwJGTh+tGISiExePfYfHe6wf+WLH/eBxSu1SrGbA6UcN5FqCafqSYuWaz8x8jw3lyat6hc4gyHKZPE1JFpUHoIm/pZoQ09+8I3Y3AoFo08RxQ77YrNzAdFz4mC+wmJl6PMsqhtS3UX4I9Eb/NnNDGcfEFiYYsMNvkgd4e+s1n0B8XqqGo/lmnKtpFFTP95wp6ugCoFOb5wO5TZvCGBM1UOnSdzhP+S9QCa5NUbZJJQf5ZZphGYhf3T/xwkeyX4j3R7G46kWJbGv4/XMre8vSND0INmkigXm8xs4MzPihupTpr5qiSezXS7UdhAEiTzX1aYCEjk/HwgTl6k1Sp4mWJqNpdGCIy4qCb6QMNIqh5mLbSWg/BbV6Qh6WOCc9RdA8Imt3DW99K9Mify9EvdftlhgVRZElv57/tmko1ExUkdnS6Ze3BiXkPC5vx6lFdV2DkaJBagxuGZTs/R9Ns+ARxUhI3FbcmSLsFXtS8Lx0N/plCx3a5QfOOAM/JwKdY2cFb1bejVpgf4PYzG9SHhoy/XuAvsVPZC7+pEaKIQtQgBKaWfkwDe6lx3dFrMjM8KMkG9QgxTeqJICvDgmn5NCFpJaIMx3nfeQGpoZlO/UcQ9N3YLZp5+kTyazi6at5+HQ5qrnlJsWPmByFPBfb9qnA2EFQk7CbLMiYInCiIJ1XufbM1l6S66B0h/mYGdhMKMgQGLCaTJlYn9xHKAmgRcRfb9S+gtmTQMgCAlxRMXadH2BKUopIehsnsC2/0sIHtO1/yJNh/k2hSZqbJ6eopAMAYtoJR3gN8ZY23vyJRFRdwnpekPwr6IGGC/7zLghnhmm3You/F0ItkSbXwZW5VPl2ucchzHMUe/fIupQ+pkVL4MajTqwo0JrBUZOdulrgV73F6caTtuwyiUqvwMFy5M1Wo5gMcDsl44jaqa3yT9hBRCMGN2zuQ+BHYKBcCDMYuTMpoznh3/G8AIAwxnQMRY3UjZeTmzGd0EIsBH3ASRgSTM8C62DF9P4Y3X968iDB1BtFt7AKg6MJaRB3wo32UvrAe4e8Dbw3PJuutTvF6TatZI5jgN3kWgl609NemJ/Volcp88pv/cofVlwFoNS0YZrnkc7IdKoPBDYwC/VEuir4Q0ADv5vCwrb2iQbRVNrHMDJVjklemVz0NpGFVKEh56FLIB3n91uYCa/SFK1r2jx3kt+SjLHudUu6aq+8Kfy8ewQHg7YVeU1jz3x8oYJAOv/muNksXG8qnTMd3uZTSBqnIGIbHkgctTo6Y7n2hPT0DYfevP0b7PGXCMd2wKO3OsJ7aYT+aZLhuCpQGjktkvEyGszRrVM09OIqwMTbYy/70Wr0odHNhUc6T3auyIWjGIJCMVT/HBX8bcxqw4Bbu08zFEoAHVEEGXi/AkUqM7JIBjSf4HaHctXcdMW/4rlsnztyVN8Ri9KDZMiXsVnFi3P5vZiNyjDpCYvqYGPf7+uO1wS98uFpIIC1IAsNBfD3lGMV2bm1tt1uazkyVmvaJSyuTS92OafDEKs7l4/9c7GzfbiJddF2nmY5o2Q2AgziCfvzNJYAV7sd10qt5zwZ/rx+WB47MV6/uJQkyXoAhDQtQLxvNfwqTFmgARCPQBsjfyRUadkvIwYse6dxokoJyuCkk2yN8kgyWxzS+WYRZC4TrrduzDMJXTgSqNFuiyyoLlXCTJeYfRYDFtBKCO0z+4XZ29kj6vGZW/JeBaoQCMzrZLAlzJ8j29zvVMdqDYDUp1Xos9P2PR9Uyyk0096Wnx7e0P8Hwcdpw2DtEnvGfLme1YfSgVkBip8cHkFBz9lUMAEFawi22rxmRgDxPfW4XlWzBdWhMvCnCqe/MCvPuWkIuUNLM+BMqn2L1NdfQFxAq/RSfZY75TjZDyJGeYxlcxsG+20jb2UXd1rKQYGX0fgaIL02jMHf39QK1ehHmJCfr3GVGp5mPGYEVObiRah9Dit26cDrBkYHqWHSnoIRgdPalm28D5+gHGFSPTIQeOwKJ3RoimjtRmNF+yRkvxo8f9bvtn80SExd6BX7rff/6I7AwGVF/99o9nZKIgcvE+PWJ59kfiTCTItjuEZBEwX1yD4+C7x1FJIo4XrC8opjVT/P6RTg0kViFFbwitS7RNt9i2VOAdpqJK96MhCCSKo1m2Gi1SnEzWhhGBOszLJVTpsancFcwpLmAuBwyWoZTi7YSacstQFZmJR3hTFDpIoNUzEm1Pj/lXWnBvNXoQ0PWhMPEWCNxX+I/JPcJT6dPJlQ3Nn+akxL4JWCRW0MMn50mhUwDcDFp3xquu+Lk0xmz8zKKjUHVNFIC1OP7l9u+i7eLZFpMKcnKfHhZ3f+fQNzK8dLCnLzaQaFsu9aApyndkyoSEhMGmVgdk4MzyFwxSWwE5qhmVBFuyAlBDkA/hEYxYlY5K4JvvVVgAy7Es8JEnvmMiB3C+FSDwWDNkQqbZY3kYu3AnjnA8aLP5rENqYwmYGaD9bBOq5t7wlmlRrzp1XKDeiNxzH0iH8jEUkBuk4amBN5wUWpb0ah2o7m5PfKzZs6Jy5keNlKv2H1AQgMvjvzkrd0O4FTimbRHKi5MYf0xx/tBsw8z9vZhW5IwSTZ+oB2wcCQgPbNRJsWgp8EwApgwQ5pTKVPuvxJKBo0+5t7YdWtbRzRFK+ju8iw4eNjqXYjf7XRZrG0v4sXOJ8zKpCAIuIhvammkem0g6RXelWLKUdpwuRwbYRyWK7FbAFNL8jntOnZhYvn1hAtlQZgsUkWYs2x9vKoy86pzSoPqXMhhbePD1KwkgVY0ci6Wmu4l6/w7HHp/9jn84+FxQlyWH8SV4mXpEnqtfrF3IXYi4xklyF9YQjTSltVXjlYStZv0lXHdHSANUB43zisTDwCRmjmXvgSmohLMbD/dQS0GjIT+VFeaTSYMYcdp1P716lOCFPCutScSiuA0LntTxiWFdw286fL+7N1fpHNd4IrjtGHZa5ghAE94uR0xLag7p/VERAAYGfXOfvgOwRokOiq0hzIpmd4bxriphIC19OeZaX4FtwZ5fu4vt0vvYbybIh7WKw2b7B2imrHVutclTLMK2EzmpUamE14KoxPfGpMrlFDgCi3WVFFkq2ohAZ5Pzw1KacYYKSdM4R+ccMsvJTwpbcwKwgE/G/H1r2dW5zqCczpAOydSQxqNXMwZn/OoZhn6bko6NyjKtN9QZROtgdE8P6zEw8lQ3wh52WBvHwXBoXmw0iHQjj76xe9Ch/VvlhI/XB/3EsMFN1s5QY6vqYHr+3WYlfcs/L5i9093MDgaOwgUuDUBTZoG2/KrndHSS5kGdbpTHIZqirq7CYIhWwlIS7tFvB3bw0x0WhUWvZxLx6EVsR9KJpt3aWMUPKvLB55+e4NGI1ZrCC1+PR6z82d9/IoYgQ7OFN3Z0rOsyaSPzw3TDdNo5X9B8UfHttywPDbTPzZ6E+vT37CuVsllHLc4jbOjHX1tK1MIlt//ZwE+pYg8Hsa8JNa63BfHlhraIU13ACH8AmIKktGC8pneYJ4p6KxNoASosZPsWR946nZBSsWr5JNEWyry6dKWUnLY0JB2W2o/xdNYQmINGoY6L2aXvJZ0ZM/DwMOMjInUB9en0ITD7IrgzLOg3fOiSAZ3LVDguWswvx+KgqdZtyHO8p4a+10l7dx0Ua80nMDXDxmg3kg7OsMD5dHJIXJLdklh/cRaTCU+0KDgRs9lL0sUxf/Bx5U+HRHA3si3xI/opfKQN/73RCdjdS0U3pwKyjkmLyk2Rijq0X4nUiSLPa2jeTmvOJW6At2mCa1hR9jnmUU9LiJghQntJ5DCWCPKtrFz/ftWJCt1k+jrOKeRb16+zQKDHd1udLP2Ycxti0yIu67wR69uMe7VW4u5VM+FuUnX5QaqMy8xlP5wdP1jjLIaXS3RUBmTGow/tWo2DkJafpqYRY4bo+V7JaN5N+GJZcflddETQXvJ3V/njxYrxZQ1hrT4FMxI5Z3yawmGYnCWwPTHZwP27STxoBugA+nxRQapbzEAN/e+xgqQL5RIaXSr4xHKDYwvTusSo8/JQgxvY/cmhv4v2NpiqN2UIlEcAiF7EJeQDuWMhRngPjfsm98wQNMs1QH+JfxNLh4UEW2VP6aPdW6DNNYOtpxvyMkefpoJTsO0LsxRcyWF9mOj/4W77fCOZFMCT+Lmb4tGvsMOlhvioX2wcgc2eqIKkV3Ban1jQAyyYlqA2ixciyJvCHa289yNJgMdVgN7/eGu/LUy5v3k39/8Og0lN6ZA5e5hXqdpIQ5bMDpsIDQNWm2Sa6YIKKe9bsjY90qvL+MhjOuSIHYsdnnCnL++pxpIXqTwdxWI4TtiavUxt780sRH5yk4ALJ2tZlSNZgTcnF3kAfYqL19ztL1fcfE9nqc/hw4dfMjdMPa65ohkuGPHHq9p1ElQQQR4mbt/ZToH0OaEsOJmPIQreQ7snTM/iV+2qdjWNXZbpnmPygrKrqtysIgSX1c6iBt5NYzP6ftvxASGmwePp0MFiu3a51q8Gng+araHGVTETLr7FVA+23IxLiDaxzn1oqIfq3m7ZMQ+KCUqM/Bql+CGJRkcT/ZFh2B0z2qIF1dl3rVrV0wjBLT9gpxFHZQyZr6nwpDmAvy/JC0g7A55dFQPiyzqPUMdFYPnduyBR7PokDL+6rNHLNt3srMvhFa1AMvAFAO6wAB2GBwnoscB41tBREzul8BEodSqUhrSjzQU9k03ioK8o+a2SlNyAe+f2ilVkU2Bl/S3KLTg+dUoNomSMtvUHhU72Rd1tGy3/G9XZm/LpW4wYf5+0g5n8lzKzo5uXMC9HgtozZVVFdabX4snVe70rEL6NLscpErW6rkfpRnmfbcAs5RM0UHfEoNB63C0swcAi/2CCPpiEFVt+VIEMmvThV6MO+I7qQxXUk8du8QgmB2QEKFJCcwSb9gdbBH49DxnvuSrm3p2nKMWMJ2zn7xH+Wnqj+AKGtl3L//2vggxwmJkaoLJ6zs0RojIfZvDGk/HrnwZpvzHYG5ny15TCzYWUl2LhANkiPADb/rB2GUCnIhM1oAHnLQIlDwit7uAccH9KY4uXzPiWWSngKKNfzKlfAjhrDakQ9LMjQPQqgUWKMi33s03TIQzSM1m3WWts7mPrN7c51jf24/b35iv9t2hmBZMtbFf66f8FWnIrBJ1pkZV53h3ciq3JPK8UBJr60ZzcPOFH7cVo7U10rpAGa7vwh993+AN9T7BGEPDBbCgcewHjfzRmTCPQjeMvuBoF0Agt/OOMeuU1B9mvz/muwJrETOdXQCgVAU8QGDwgdPjRBzX3G8f0tRURw1VI6ANgM0fXsnywPk2mDceV0NqnDbjb6Qd6ledI99gTMscCuSswbdwYUSUoHtYwo8sz0l9CizMbEsApuWuD87RO7lLpN8ApbNVE2ssgDK98KP1f34INANQEjKlFVM/cbI+rnEMefhppg9uJwiQeuAd+8IpxNobNagPjxyWqYVZuHe64mQBssKfQSSM4nsXCu3DwOek2sergx1NrFRRZWOxkzPp4bFnVwhAi4oJweHwJ94dW6BbSxyh+eKf1PeBGSuI9QTl7L70x+a7lluYR8nfezeY9Duf8BYU1xkfy0nHJqk7X78j3HKDj05ggtqrpKeTjxmCV8wGAyJ0kvEqbgFMpjooXP53cBO+NMtWSeRsBnSBUJMYaI/e633JNy1PIAOV5uauZjFXg5M/e2ZpDhFQd/xrn150kQwfa0q1f2KDtSE5oX4uivLws+fLJgzx2S/h09O56RkBTZOFSvr990vuaEEsYA5uWQm97WApqW6InQpByMxbT1XopkaCwC4GRXFk+WSg4hOx5jaTg3mIhS3NToTw2+ItZDmcrJLPvSZu+bgNP0+KXZeHbUTJYq86Kk4kI3Z299nn30TgUkUa2VkekNEyMxNg2KdVNz5eeuyQ8lm2PVFTtJ3wtAvfrLBz5mU0uozrnx5vzCF2vkJ1//Ta4wxwLs4OZOxdtBLR9R/FEI7VafYeSkncxwftL4FsvnwMm6epJRe6bdNJXvKJFoVrFYAV2+iOpvaTGzTO8codjzkQ1AbeX4+KpjJadUn4SdbxZB1iF6hJIHvsjg6IFgiekYhAqk4H39Cg7BxYg5iLKxxGSqepg8bX0cse9Ci0hzPvtKQUVjncGEna/0ICmQJoVwE7M0ke/dcxNb64GOPmpPQMR3r9U/8wqMd4xBNbr6tD/awPgwY5dM9r5hs/Zr9TfRRYR4KkIs6uQb/8DaCVYfrtkDXlVacNMhlyvzBUTjoTlE6oUFk6jDNSrUc1R5oCqV2arr2QX9xkr9S++5hS2FPcvZO9LsqCDs0MkFa/wYpDBTqozddESdLrYQrsfV13D6r3ylXS1KO8r9kR5q/VMq+NX2Vii3BeYkgGawOVCJFSCDMCl0gdI8v65L0M/kA2nJDlwgo2iEgHYMH2ie7M0+ni0PPBqJrQvRHIO8iqORbxAxfhW3E2N1ObvqoJe7reL0ikCDmVa/kJT7DaX9oqCerEhgalT5Ai/Y7X7brKJEUEFE+6d7exCz8SgD3/mZfQZHl2CFKKiIoG5hPuTtv1VtANzSHRS1CzvAZCjbfR59FPox4JuTMDP2Y1Lu/N9lwfKHPVgc9vAbLvo+9AP5ifnqzrtjRWUV9+CmIsoLbM4O2LkbgWqxojdArA45Pe1dg2IDO9H9mmeNViugfQzFqgBXNxLICPdJ90g8QzedacAdPyL1IGLgkeOmO3zPiPCfyVDXK1v05gTwtB7boXpBp8OdmheJDsUNp4O594AR2T7dVgT+Xg61m3f+1sdq/A5YE3e4VuRili8UWkP3yRnKq2yFYfiKRWF5Ljv4795K8XraoAczMeCBbVzkM2oCJx6iB7fni5JGtPK644OeaaQtcld37VIyEo4pMS/cv9+1EAVpDQhF4ofUm9cYMZn9NXkoz0HqPua8FPNLj4u7klr5R0gSqol2mENmMdFe056mnLURoMrVbZQQTQ17qMD3p4RgU6+HT5Fxkkfd+iq0bGA8di28VnUSPiUw0AuiNasuYs3JqmwZfgSKTat0Bd6heG7zOxdLQah5zaAI79cO2iQCZ8/Uh5bJk2NojZUe9CymcPC7UZDSrFNovWauQK2uf3opbceUcfc6NgftpiT8sQEPXDlnEY+ezciCYz9qnc3nWHb7nkuRAXg7nkjgUy+2MUJC5L1CDksRxNSoJCJci4QKT+DGU5SgN13yZJ8eRWinihFT1Y2lVYD13//JjHoNbMbd7KDG7zpobW29cSgwthb800AFlMacUTLybT2uap96ts942fvE4fb8Zi0ovGqUr9Y3oJ4rg73QXjQe1g+FqAl/DO6koFMY0zrlLw0o7kVDZveLd85NQEjc0UeLp8/2+YXw8YtE+FQlvjcMXbP5z8LrKHnmad1bjai0b2QsUFfYpp8Aksx4VslT/QQH5smYj+jXTyqLcR8W6GdiDq0vJrm3NQ5bipEZJWeYR7H6CncayMeNlX+x9sZbMLLgzI68M0GMm2oyg+zN9yo4EmmeJHPQz2m3C5lNITmpSQ11EIssGbgRphQqbkHPVAYACwXUE65v3hyX6cQyIcXeQYejCgAV8X63pXLqtorIxf8aZnBlpiaCkPAcp//SX5hJ3nFkRt167PNnhoc4nNY73OGB9Zc0xxBFfUKgQNDtPtqMpXQo8p/lH0JcB3WFXc4TNGktAl6TeDBAmL1tmVoQ4N8rajjQtUDN5E/iNXHDvUsGyH01qdWIsBriJ6rXXn4thmBq8HLbr/rchDXq1J1MDZPmdzVeZrgfS+5J/0aeIs3x0z2ihhZeoiIvXYj5sanfF0OJanezgVyopBv8lECzrLFVyzHBwhqV8ycfUakI5bro3/yX+7dl3fXDrCP4kx467pWPPUFjx95KACFVSAB0fNq4+39ObtzSUJqymZeIjfzcLzLWTUUw5aSYOaYzNShj+1vrCPs9N67AscV1qe6ewIvPwpIOyMTK+fdfNEoK4hydMkskNNYGHhhdd8RittIi/IAmzSZ2L1WrnUoVeMnDCOgy84EHT/0QQfQasspE7kYfAhPI52rAXNVa1QTt3ETDVomdz/R5HC8e7V6TUD77rrHkJmd3tzunbp1uAChWqQ1nLw2F+hqUibzHFlVlsQ2bRaL0Tql02POLICgSIpsKpI+cGtCtOlZmWwrKVHXXbt8SK2qj6iEUG1ynPy1Tqq6FtwGguc+RPM9UyedNkUjTImEiDTTSEklUa4V8NhLvz7SgJOvQH348k2qDLAIj7zNdCiIYLxD2QXLMjoFCkojcsHlcn9DW+Zdr4Jmicj5zbBEEZnoCNNFqeYtSF4/EcDtFtwSQ4bQQYDX9YTIme/eRdEFQR3woM8i+KFHJm2ugNqaKcTM2LSJ4DvqOQA3W7MgXQsd6SxoW9wnnH2P2GrcuTAwb2JpGTU1QETE0L1Uff9IIygVFaY2bUXGXMeuDlDB6W4Al9dAhubEqLXwshN3wZ7RxSZByHLUFe0Ts1JT1+86gCAaznwKgU+bXU3H/plyfK/zzMoedWTkR+2pPU69Q79BnBXYvpSW9sr4SoGzPvBx+ToufEObb1wprdQtnlS8QjPpUmoX4Kau5uxh87yxVao/GtUEkDx55NMiZSSkhw/VE3nTFWuki/4oYDE97ihNNdPg4sGGtPn4b0gvk+PrUQJC6SVu+9vH4K0R/iUn4TNj3LiEQvkYNZbMSvC22ZB6EDkKowueh4byYz/UkaM3agno35RRgXrz6UiNAPvlvxaEUqv7k+hKck4uZEhAIbay9TCW+4jRrvVVjDPQO3p4vjCTQIrouLIX+CBPEfUZ3J/jg2mqliuAyLCIbSgVEvWKAqYokjoFVhXZt68UbuuDsuknivnE1h38lCJF0dZ1AcMrRYvBQDfc3vWvUqAB1OKsBCB0CAJoSr2kK5rWuar6eycTuVKLStHriTqLjPmzBdQ0y03DekIkamuJlH49dPnK2Fhr0gBZKbrB7WXtPndEe+ID+VebKpqpVPL0FJcHD8OBnFdt7UX+ZZ9xKl5UTbBys/eaWPvdjR4JefvjPzr3+ob8rQOrBx0T9/GaiXmmQ+rBHWuXDskQlR8v0OmKzy4GOhB91MZdYtnud1TSPTvIlFpnomlUo4wmVv6y8dU7DTM1R2aQu7/lOjkMUEN0cPWZd0lWif59MK0feAH+EEkHh5AOz1hsuDOERDJ0z9fMYeVXCv8zJwLW7TL/tt7/pKyPp9jwb87FM8qM51p1dg/PXC5WeanEjQsCfB2LveYoS5T7LMCVWj9IMGmFBJVRFe7MzLm1Gex/6bvssaetuB/HCcCNEtygwe5gpjn8fL8x/G2gAUlWu/OVScZdzE8heVcbPRFWLKe0KfyrGsVTa6zmneP9cBor5/2j4DvNjp4FCekI5fKipiOn4nxLRWBzaSlhN6l7uAN2Chp0hdg1lQl/T9ytdC0QREua45a6OfUg3gvqXOj4Sj/EF6DASCCB9WrgwaiCBi6+EMP5xNuhZu1HdRBPTRqPqZLhsmkmT7GmvaVG4RU71mN+PaS9sd4RJDY3pw/VKvaOXJXlIZUB9WOJ5Yi/GEgFlXGRczHUE+wRL0Aqw2GBjfvIQj2LjNVHPeaFDww6KhB+5/bRz6GUiB6A19MlXGMFLhYSXmvolv3P35z84G9Qv3KGVJ6ZiHTlNUvcu3dS0Ow/p06bQAAAAAAAAAAAAAAAAAAAAAAAAAA=");
  -webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}
.gg-perch-iris{transform:translate(var(--gx,0px),var(--gy,0px));will-change:transform}
/* 非默认眼型覆盖层，默认透明 */
.gg-perch-expr{opacity:0}
.gg-perch-eyes.is-expr .gg-perch-sclera,
.gg-perch-eyes.is-expr .gg-perch-iris-clip{opacity:0}
.gg-perch-eyes.is-expr .gg-perch-expr{opacity:1}
/* 眼皮 6 层常驻，只切显隐：逐帧换 src 会因解码顿一下 */
/* 眼皮层在眼区内部：必须与眼区同尺寸。
   之前写成 inset:0 会撑满整只角色，闭眼帧被放大成两个大圆。 */
.gg-perch-lids{position:absolute;inset:0;width:100%;height:100%;
  object-fit:fill;pointer-events:none;z-index:2}
.gg-perch-lids > img{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;opacity:0;transition:none}
.gg-perch-lids > img.on{opacity:1}
.gg-perch-eyes.is-expr .gg-perch-lids{opacity:0}
.chat.has-messages .gg-perch-figure{transform:translateY(0)}
@media(prefers-reduced-motion:reduce){.gg-perch-figure{animation:none!important}}
@media(max-width:560px){.gg-perch{width:68px;height:68px}.gg-perch-figure{width:68px;height:68px}}

/* 常驻角色交互反馈 */
.gg-perch.is-near:not(.is-dragging) .gg-perch-figure{transform:translateY(-4px) scale(1.03)}
.gg-perch{pointer-events:auto;cursor:pointer;touch-action:none}
.gg-perch .gg-perch-sclera{transition:transform .18s ease}
.gg-perch.is-poke .gg-perch-figure{animation:gg-poke .4s ease}
@keyframes gg-poke{0%,100%{transform:none}35%{transform:scale(1.07,.93)}70%{transform:scale(.97,1.03)}}
.gg-perch.is-hold .gg-perch-figure{animation:gg-hold 1.2s ease-in-out infinite}
@keyframes gg-hold{0%,100%{transform:scale(1)}50%{transform:scale(1.04,.96) translateY(2px)}}
/* 让位：沉进输入框后完全消失，不保留叶尖 */
.gg-perch.is-away{opacity:0!important;top:26px!important;transition:opacity .32s ease,top .42s cubic-bezier(.4,0,.6,1);pointer-events:none}
/* 输出中：口型在 open/smile 之间切换，身体保持叶子常态 */
/* 输出中抬高身子：常态只露上半身，说话时把嘴露出来。抬高要快，别等半秒才露嘴 */
.chat.has-messages .gg-perch.is-talking{top:-34px;transition:opacity .2s ease,top .24s cubic-bezier(.22,.9,.25,1)}
.gg-perch.is-talking .gg-perch-figure{animation:gg-talk .9s ease-in-out infinite}
@keyframes gg-talk{0%,100%{transform:translateY(0)}50%{transform:translateY(-2px)}}
/* 报告交付：烘焙帧自带表情，隐藏叠加层避免双脸 */
.gg-perch.is-jumping .gg-perch-face,
.gg-perch.is-jumping .gg-perch-eyes,
.gg-perch.is-jumping .gg-perch-lids,
.gg-perch.is-jumping .gg-perch-mouth{display:none}
@media(prefers-reduced-motion:reduce){.gg-perch.is-talking .gg-perch-figure{animation:none}}
.gg-perch{pointer-events:auto;cursor:pointer}
/* 加载时整体上下浮动（加速度），失败时整体横抖一次，都是位移而非换帧 */
.gg-perch.is-loading .gg-perch-figure{animation:gg-float 2.4s cubic-bezier(.45,0,.55,1) infinite}
@keyframes gg-float{0%{transform:translateY(0)}30%{transform:translateY(-6px)}55%{transform:translateY(-8px)}80%{transform:translateY(-3px)}100%{transform:translateY(0)}}
.gg-perch.is-quake .gg-perch-figure{animation:gg-quake .62s cubic-bezier(.36,.07,.19,.97) 1}
@keyframes gg-quake{0%{transform:translateX(0)}12%{transform:translateX(-6px) rotate(-2deg)}26%{transform:translateX(5px) rotate(1.6deg)}40%{transform:translateX(-4px) rotate(-1.2deg)}54%{transform:translateX(3px) rotate(.9deg)}68%{transform:translateX(-2px) rotate(-.6deg)}82%{transform:translateX(1px)}100%{transform:translateX(0)}}
@media(prefers-reduced-motion:reduce){.gg-perch.is-loading .gg-perch-figure,.gg-perch.is-quake .gg-perch-figure{animation:none!important}}
@media(prefers-reduced-motion:reduce){.gg-perch.is-poke .gg-perch-figure,.gg-perch.is-hold .gg-perch-figure{animation:none}}

/* 欢迎区角色（空对话）：分层素材 + 原地踏步，整只可见 */
.welcome .gg-mascot-motion{animation:none}
/* 原地踏步的身体起伏：整组图层一起位移，脸不会和身体错位 */
.welcome .gg-mascot-figure{animation:gg-step-bob .6s ease-in-out infinite}
@keyframes gg-step-bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-2px)}}
@media(prefers-reduced-motion:reduce){.welcome .gg-mascot-figure{animation:none}}
.gg-mascot-figure .gg-hero-base{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;display:block}
.gg-mascot-figure .gg-hero-face,
.gg-mascot-figure .gg-hero-eye,
.gg-mascot-figure .gg-hero-lid,
.gg-mascot-figure .gg-hero-mouth{position:absolute;inset:auto;left:24.7%;top:33.3%;width:43.4%;height:27.3%;object-fit:fill;display:block}
.gg-mascot-figure .gg-hero-lid{opacity:0}
.gg-mascot-figure .gg-hero-lid.on{opacity:1}

/* ---------- 眼皮：6 层常驻，只切显隐 ----------
   逐帧改 src 会因解码顿一下，所以三处角色统一改成叠层。 */
.gg-login-lids,.gg-hero-lids,.gg-archive-lids{position:absolute;inset:auto;pointer-events:none}
.gg-login-lids > img,.gg-hero-lids > img,.gg-archive-lids > img{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;opacity:0;transition:none}
.gg-login-lids > img.on,.gg-hero-lids > img.on,.gg-archive-lids > img.on{opacity:1}
.gg-login-lids{left:24.7%;top:33.3%;width:43.4%;height:27.3%}
.gg-hero-lids{left:24.7%;top:33.3%;width:43.4%;height:27.3%}
.gg-archive-lids{left:24.7%;top:33.3%;width:43.4%;height:27.3%}
/* 原有单张眼皮隐藏 */
.gg-hero-lid,.gg-archive-lid{display:none!important}

/* ---------- 登录页：可交互的多状态演示 ---------- */
/* ---------- 输入框组件 ui-field ----------
   结构：.ui-field > input + .ui-field-actions > .ui-field-btn
   右侧操作吸附在输入框内部，按钮 24×24、右内边距 8px。
   之前密码框的操作按钮是逐页临时定位，才会高出边框。 */
.ui-field{position:relative;display:block;margin-bottom:12px;border-radius:10px}
/* 聚焦反馈统一由组件外层表达，输入框自身不再叠加 outline */
.ui-field > input:focus,
.ui-field > input:focus-visible{outline:none;border-color:var(--brand);
  box-shadow:0 0 0 3px color-mix(in srgb, var(--ui-accent) 14%, transparent)}
/* 登录卡的 input 自带 margin-bottom:12px，会把容器撑高、
   让绝对居中的按钮偏离中心 5px，这里必须清零 */
.login-card .ui-field > input,
.ui-field > input{width:100%;margin:0;display:block}
.ui-field.no-clear > input{padding-right:40px}
.ui-field.has-clear > input{padding-right:72px}
.ui-field-actions{position:absolute;right:8px;top:0;bottom:0;
  display:flex;align-items:center;gap:2px}
/* 提高选择器特异性：登录卡里有 .login-card button 的主按钮样式（width:100%、padding:12px），
   低于它会把手动尺寸撑成 40px 高、压出输入框。 */
.login-card .ui-field .ui-field-btn,
.ui-field .ui-field-btn{display:grid;place-items:center;width:24px;height:24px;min-width:0;
  padding:0;border:0;border-radius:6px;background:transparent;color:var(--muted);
  font-size:var(--ui-font-caption);line-height:1;cursor:pointer;box-shadow:none;
  flex:0 0 auto;box-sizing:border-box}
.ui-field .ui-field-btn:hover{background:var(--ui-subtle);color:var(--text)}
/* 触摸设备上有 .icon-btn{min-height:40px} 的通用规则，
   输入框内按钮必须更小才装得进去，这里显式压掉。 */
.ui-field .ui-field-btn{min-height:0;height:24px}
.ui-field .ui-field-btn:focus-visible{outline:2px solid var(--brand);outline-offset:1px}
.ui-field .ui-field-btn svg{width:14px;height:14px;display:block}
.ui-field .ui-field-btn[hidden]{display:none}
@media(max-width:560px){
  .login-card .ui-field .ui-field-btn,
  .ui-field .ui-field-btn{width:26px;height:26px}
}
.login-card .error{min-height:18px;margin:2px 0 0;color:var(--ui-danger);font-size:var(--ui-font-caption);line-height:1.6;text-align:left}
.login-card .error:empty{min-height:0;margin:0}
.login-demo{margin-top:14px;border-top:1px solid var(--line);padding-top:10px;text-align:left;
  color:var(--muted);font-size:var(--ui-font-micro);line-height:1.7}
.login-demo summary{cursor:pointer;color:var(--brand-dark);font-size:var(--ui-font-micro);outline:none}
.login-demo ul{margin:6px 0;padding-left:18px}
.login-demo code{padding:1px 5px;border-radius:4px;background:var(--ui-subtle);
  color:var(--text);font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:var(--ui-font-micro)}
.login-demo-note{margin:4px 0 0;color:var(--muted)}
.login-card.is-busy #login-btn{opacity:.7;cursor:progress}
.login-card.is-shake{animation:login-shake .38s cubic-bezier(.36,.07,.19,.97) 1}
@keyframes login-shake{
  0%,100%{transform:translateX(0)}
  20%{transform:translateX(-6px)}
  45%{transform:translateX(5px)}
  70%{transform:translateX(-3px)}
}
/* 登录角色：非默认眼型覆盖层与密码输入时的遮挡表现 */
.gg-login-expr{opacity:0;z-index:1}
.login-mascot.is-expr .gg-login-eye,
.login-mascot.is-expr .gg-login-lids{opacity:0}
.login-mascot.is-expr .gg-login-expr{opacity:1}
.login-mascot.is-error{animation:login-mascot-shake .42s ease}
@keyframes login-mascot-shake{
  0%,100%{transform:translateX(0)}
  25%{transform:translateX(-2px) rotate(-1deg)}
  60%{transform:translateX(2px) rotate(1deg)}
}
@media(prefers-reduced-motion:reduce){
  .login-card.is-shake,.login-mascot.is-error{animation:none!important}
}

/* ---------- 会话行更多操作 ---------- */
.conv-menu{position:fixed;z-index:80;min-width:176px;padding:5px;border:1px solid var(--ui-border);border-radius:8px;background:var(--ui-panel);box-shadow:0 12px 32px rgba(20,33,59,.18)}
.conv-menu-item{display:block;width:100%;padding:8px 10px;border:0;border-radius:6px;background:transparent;color:var(--ui-text);font-size:var(--ui-font-caption);text-align:left;cursor:pointer}
.conv-menu-item:hover,.conv-menu-item:focus-visible{background:var(--ui-hover);outline:0}
.conv-menu-item:disabled{color:var(--ui-muted);cursor:not-allowed;background:transparent;opacity:.6}
.conv-menu-sep{height:1px;margin:4px 2px;background:var(--ui-border)}
.folder-row.drop-target{box-shadow:inset 0 0 0 2px var(--ui-accent);background:var(--ui-accent-soft)}
.conv-rename-modal .modal-card{width:min(380px,calc(100vw - 32px))}
.condition-fields{display:flex;flex-direction:column;gap:10px;margin:10px 0 6px}
.template-list{display:flex;flex-direction:column;gap:8px;max-height:220px;overflow:auto;margin:6px 0 12px}
.template-row{display:flex;align-items:center;gap:8px;padding:8px 10px;border:1px solid var(--ui-border);border-radius:7px}
.template-row div{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.template-row small{color:var(--ui-muted);font-size:var(--ui-font-micro)}
.template-modal textarea{width:100%;min-height:56px;padding:8px 11px;border:1px solid var(--ui-border);border-radius:6px;background:var(--ui-panel);color:var(--ui-text);font:inherit;resize:vertical}
.qd-meta{margin:3px 0 4px;color:var(--ui-muted);font-size:var(--ui-font-micro);line-height:1.6}
.usage-quality{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px;margin:8px 0 18px}
.usage-quality > div{display:flex;flex-direction:column;gap:4px;padding:10px 12px;border:1px solid var(--ui-border);border-radius:var(--ui-radius);background:var(--ui-panel)}
.usage-quality-label{color:var(--ui-muted);font-size:var(--ui-font-micro)}
.usage-quality strong{color:var(--ui-text);font-size:var(--ui-font-heading)}
.attach-reason{display:block;margin-top:2px;color:var(--ui-danger);font-size:var(--ui-font-micro);font-style:normal;line-height:1.5;white-space:normal}
.attach-status{margin-left:2px;color:var(--ui-muted);font-size:var(--ui-font-micro)}
.attach-sheet{margin-left:6px;padding:0 6px;border:1px solid var(--ui-border);border-radius:999px;color:var(--ui-muted);font-size:var(--ui-font-micro);line-height:1.6;white-space:nowrap;max-width:14em;overflow:hidden;text-overflow:ellipsis}
.run-sources{display:flex;flex-direction:column;gap:4px;margin:6px 0;padding:8px 10px;border:1px solid var(--ui-border);border-radius:var(--ui-radius);background:var(--ui-subtle);font-size:var(--ui-font-caption)}
.source-link{padding:5px 6px;border:0;border-radius:5px;background:transparent;color:var(--ui-accent);font:inherit;text-align:left;cursor:pointer}
.source-link:hover:not(:disabled){background:var(--ui-hover)}
.source-link:disabled{color:var(--ui-muted);cursor:default}
.tool-line.is-failed{color:var(--ui-danger)}
.condition-zone{display:flex;flex-wrap:wrap;gap:6px;max-width:var(--ui-layout-content);margin:0 auto 6px}
.condition-chip{border:1px solid var(--ui-border);background:var(--ui-subtle);color:var(--ui-text);font-size:var(--ui-font-micro)}
.result-badges{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0}
.result-badge{padding:2px 8px;border:1px solid var(--ui-border);border-radius:10px;font-size:var(--ui-font-micro);line-height:1.6}
.result-badge.warning{border-color:var(--ui-warning);background:var(--ui-warning-soft);color:var(--ui-text)}
.result-badge.info{border-color:var(--ui-border-strong);background:var(--ui-subtle);color:var(--ui-muted)}
