/* ClawAI 用户端 v3 · 开放式四屏（DESIGN-frontend-v3）
   布局铁律：全站零悬浮覆盖——顶栏/底栏/输入区/展开区全部是文档流内的布局带，
   内容区在自己的滚动盒里滚动，任何元素结构上不可能遮挡正文。
   背景铁律：全站背景只许纯色平涂——无渐变、无光晕、无纹理、无网格、无背景图。
   设计系统（纸与墨）与标签系统（--tag-*）沿 DESIGN-frontend-v2 §2/§11 原样执行。 */
:root{
  --paper:#ffffff; --card:#ffffff; --card-2:#f4f4f1;
  --ink:#211d16; --ink-2:#6f6a5e; --ink-3:#a39a86;
  --brand:#b34a12; --brand-ink:#fff8ec;
  --ok:#2e6b34; --warn:#9a6a12; --err:#a92c1d;
  --line:rgba(33,29,22,.09); --line-2:rgba(33,29,22,.16);
  --shadow:0 1px 2px rgba(33,29,22,.05),0 8px 24px rgba(33,29,22,.06);
  --r-card:20px; --r-input:14px; --r-btn:999px;
  --ease:cubic-bezier(.2,.8,.25,1);
  --font:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
  --mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
  /* §11.1 标签 token（与控制台同名变量组，值一致；密度差异只许 padding/字号） */
  --tag-fs:10.5px; --tag-fw:600; --tag-pad:3px 7px; --tag-radius:6px; --tag-lh:1; --tag-ls:.02em;
  --tag-l1-bg:#b34a12; --tag-l1-ink:#fff8ec;
  --tag-l2-bg:#211d16; --tag-l2-ink:#f2ede1;
  --tag-l3-bg:#efe8d8; --tag-l3-ink:#211d16; --tag-l3-line:rgba(33,29,22,.14);
  --tag-ok-bg:#e3ecdd; --tag-ok-ink:#2e6b34;
  --tag-run-bg:#f7e8d8; --tag-run-ink:#9a5a10;
  --tag-warn-bg:#f3e9c8; --tag-warn-ink:#8a6410;
  --tag-err-bg:#f3dcd4; --tag-err-ink:#a92c1d;
  --tag-mut-bg:#e9e5da; --tag-mut-ink:#6f6a5e;
  color-scheme:light;
}
[data-theme="dark"]{
  --paper:#171410; --card:#201c16; --card-2:#2a251c;
  --ink:#efe9db; --ink-2:#a89f8c; --ink-3:#7d7663;
  --line:rgba(239,233,219,.12); --line-2:rgba(239,233,219,.22);
  --shadow:0 1px 2px rgba(0,0,0,.35),0 8px 24px rgba(0,0,0,.35);
  /* §11.2：深色下 L2/L3 等值反转，L1/L4 色值不变 */
  --tag-l2-bg:#f2ede1; --tag-l2-ink:#211d16;
  --tag-l3-bg:#2a251c; --tag-l3-ink:#efe9db; --tag-l3-line:rgba(239,233,219,.18);
  --tag-mut-bg:#2e2a21; --tag-mut-ink:#a89f8c;
  color-scheme:dark;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0;touch-action:manipulation}
body{background:var(--paper);color:var(--ink);font:400 16px/1.55 var(--font);-webkit-font-smoothing:antialiased;
  display:flex;flex-direction:column;height:100dvh}
button,input,textarea,select{font:inherit;color:inherit;touch-action:manipulation}
a,label,summary{touch-action:manipulation}
button{cursor:pointer}
:focus{outline:none}
:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
.num{font-variant-numeric:tabular-nums}
svg.ic{width:22px;height:22px;flex:none}
svg.ic.sm{width:18px;height:18px}
[hidden]{display:none!important}

/* ---------- 标签（§11 全站唯一一套，与 v2 完全一致） ---------- */
.tag{display:inline-flex;align-items:center;gap:5px;font-size:var(--tag-fs);font-weight:var(--tag-fw);
  padding:var(--tag-pad);border-radius:var(--tag-radius);line-height:var(--tag-lh);letter-spacing:var(--tag-ls);
  white-space:nowrap;border:1px solid transparent}
.tag-l1{background:var(--tag-l1-bg);color:var(--tag-l1-ink)}
.tag-l2{background:var(--tag-l2-bg);color:var(--tag-l2-ink)}
.tag-l3{background:var(--tag-l3-bg);color:var(--tag-l3-ink);border-color:var(--tag-l3-line)}
.tag-ok{background:var(--tag-ok-bg);color:var(--tag-ok-ink)}
.tag-run{background:var(--tag-run-bg);color:var(--tag-run-ink)}
.tag-warn{background:var(--tag-warn-bg);color:var(--tag-warn-ink)}
.tag-err{background:var(--tag-err-bg);color:var(--tag-err-ink)}
.tag-mut{background:var(--tag-mut-bg);color:var(--tag-mut-ink)}
.tag-fin{background:transparent;color:var(--ink);border-color:var(--ink)}
.tag .dot{width:6px;height:6px;border-radius:50%;background:var(--brand);animation:breathe 1.6s ease-in-out infinite}
@keyframes breathe{50%{opacity:.25}}

/* ---------- 按钮（可点区 ≥48px） ---------- */
.btn{min-height:48px;padding:0 20px;border:1px solid var(--line-2);background:var(--card);border-radius:var(--r-btn);
  display:inline-flex;align-items:center;justify-content:center;gap:7px;font-size:15px;
  transition:transform 180ms var(--ease),background 180ms var(--ease),border-color 180ms var(--ease)}
.btn:active{transform:scale(.975)}
.btn[disabled]{opacity:.45;cursor:not-allowed;transform:none}
.btn.primary{background:var(--brand);border-color:var(--brand);color:var(--brand-ink);font-weight:600}
.btn.ink{background:var(--ink);border-color:var(--ink);color:var(--paper);font-weight:600}
.btn.danger{color:var(--err);border-color:var(--err)}
.btn.danger-o{color:var(--err)}
.btn.small{min-height:40px;padding:0 14px;font-size:13.5px}
.btn.ghost{border-color:transparent;background:transparent}
.btn.ghost:hover{background:var(--card-2)}
.btn.block{width:100%}
.icon-btn{width:48px;height:48px;flex:none;border:0;border-radius:12px;background:transparent;color:var(--ink);
  display:inline-flex;align-items:center;justify-content:center;transition:transform 180ms var(--ease),background 180ms var(--ease)}
.icon-btn:active{transform:scale(.94)}
.icon-btn:hover{background:var(--card-2)}

/* ---------- 外壳：顶栏 / 内容 / 底栏，三段布局带互不重叠 ---------- */
.shell{display:flex;flex-direction:column;flex:1;min-height:0}
body.in-chat .shell{display:none}
.topbar{flex:none;min-height:60px;display:flex;align-items:center;gap:16px;padding:6px 20px;
  border-bottom:1px solid var(--line);background:var(--paper)}
.topbar .logo{font-weight:800;font-size:19px;letter-spacing:.01em;color:var(--ink);text-decoration:none}
.topbar .logo b{color:var(--brand)}
.topnav{display:none;margin-left:auto;gap:4px}
.topnav button{min-height:48px;padding:0 18px;border:0;border-radius:var(--r-btn);background:transparent;
  color:var(--ink-2);font-size:15px;transition:background 180ms var(--ease),color 180ms var(--ease)}
.topnav button[aria-selected="true"]{background:var(--card);color:var(--ink);font-weight:600;box-shadow:var(--shadow)}
.stage{flex:1;min-height:0;display:flex;flex-direction:column}
.view{display:none;flex:1;min-height:0;flex-direction:column}
.view.active{display:flex;animation:viewin 220ms var(--ease)}
@keyframes viewin{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.bottomnav{flex:none;display:flex;border-top:1px solid var(--line-2);background:var(--card);
  padding-bottom:env(safe-area-inset-bottom)}
.bottomnav button{flex:1;min-height:58px;border:0;background:transparent;color:var(--ink-2);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:11.5px;
  transition:color 180ms var(--ease),background 180ms var(--ease)}
.bottomnav button:active{background:var(--card-2)}
.bottomnav button[aria-selected="true"]{color:var(--brand);font-weight:700}
/* 桌面：底栏隐藏，导航走顶栏横排（此规则必须排在 .bottomnav 之后才压得住） */
@media (min-width:900px){ .topnav{display:flex} .bottomnav{display:none} }

/* ---------- 页面通用（大留白） ---------- */
.page-scroll{flex:1;min-height:0;overflow-y:auto}
.page-col{width:100%;max-width:780px;margin:0 auto;padding:30px 20px 44px}
.page-title{font-size:30px;line-height:1.25;margin:4px 0 10px;font-weight:700}
.page-sub{color:var(--ink-2);font-size:15.5px;margin:0 0 28px;line-height:1.6}
.page-note{color:var(--ink-2);font-size:13.5px;margin:26px 2px 0;line-height:1.6}
.page-foot{color:var(--ink-3);font-size:12.5px;margin:36px 2px 0}
.sec-title{font-size:20px;font-weight:700;margin:36px 0 14px}
.state-box{border:1px dashed var(--line-2);border-radius:var(--r-card);padding:36px 20px;text-align:center;color:var(--ink-2);background:var(--card);font-size:15px}
.skel{height:120px;border-radius:var(--r-card);background:var(--card-2);animation:breathe 1.5s ease-in-out infinite}

/* ---------- 主页 ---------- */
.brand-block{padding:14px 2px 6px}
.brand-word{font-size:34px;font-weight:800;letter-spacing:.01em;line-height:1.15}
.brand-word b{color:var(--brand)}
.brand-line{font-size:21px;font-weight:600;margin:12px 0 6px}
.brand-sub{color:var(--ink-2);font-size:15px;margin:0;line-height:1.6}
.line-card{display:block;width:100%;text-align:left;margin-top:30px;border:1px solid var(--line-2);background:var(--card);
  border-radius:var(--r-card);padding:22px;box-shadow:var(--shadow);transition:transform 180ms var(--ease)}
.line-card:active{transform:scale(.985)}
.lc-top{display:flex;align-items:center;justify-content:space-between}
.lc-label{font-size:13.5px;color:var(--ink-2);font-weight:600}
.lc-go{font-size:14px;color:var(--brand);font-weight:600}
.lc-name{display:block;font-size:25px;font-weight:700;margin-top:8px}
.lc-sub{display:block;color:var(--ink-2);font-size:14.5px;margin-top:6px;line-height:1.6}
.feat-card{display:block;width:100%;text-align:left;border:1px solid var(--line-2);background:var(--card);
  border-radius:var(--r-card);padding:22px;margin-bottom:16px;box-shadow:var(--shadow);transition:transform 180ms var(--ease)}
.feat-card:active{transform:scale(.985)}
.feat-card .r1{display:flex;align-items:flex-start;gap:10px}
.feat-card .nm{font-size:19px;font-weight:700;line-height:1.35;flex:1;min-width:0}
.feat-card .tg{display:flex;gap:5px;flex:none;flex-wrap:wrap;justify-content:flex-end}
.feat-card .one{display:block;font-size:15px;color:var(--ink-2);margin-top:8px;line-height:1.6}
.feat-card .r3{display:flex;align-items:center;justify-content:space-between;margin-top:16px}
.feat-card .price{font-size:15px;font-weight:600}
.feat-card .go{font-size:14.5px;color:var(--brand);font-weight:600}

/* ---------- 线路页 ---------- */
.route-card{display:block;border:1px solid var(--line-2);background:var(--card);border-radius:var(--r-card);
  padding:22px;margin-bottom:16px;box-shadow:var(--shadow);transition:transform 180ms var(--ease)}
.route-card[data-line-pick]{cursor:pointer}
.route-card[data-line-pick]:active{transform:scale(.985)}
.route-card.off{opacity:.55;box-shadow:none}
.rc-top{display:flex;align-items:baseline;justify-content:space-between;gap:12px}
.rc-name{font-size:20px;font-weight:700}
.rc-price{font-size:29px;font-weight:800;color:var(--brand)}
.route-card.off .rc-price{color:var(--ink-2)}
.rc-fit{display:block;color:var(--ink-2);font-size:15px;margin-top:8px;line-height:1.6}
.rc-row{display:flex;align-items:center;gap:12px;margin-top:18px;flex-wrap:wrap}
.rc-row .route-act{margin-left:auto}
.route-hint{font-size:13.5px;color:var(--ink-2)}

/* ---------- 运营位（沿 v2 §5：内容为空时整套不渲染） ---------- */
.ops-bar{display:flex;align-items:center;gap:12px;width:100%;text-align:left;border:1px solid var(--line-2);
  background:var(--card);border-radius:var(--r-card);padding:18px 20px;margin-top:28px;box-shadow:var(--shadow);
  transition:transform 180ms var(--ease)}
.ops-bar:active{transform:scale(.985)}
.ops-bar .tt{font-weight:600;font-size:16px}
.ops-bar .ts{font-size:13.5px;color:var(--ink-2)}
.back-line{margin-bottom:20px;padding-left:6px}
.ops-card{border:1px solid var(--line-2);background:var(--card);border-radius:var(--r-card);padding:22px;margin-bottom:16px;box-shadow:var(--shadow)}
.ops-card img.cover{width:100%;aspect-ratio:16/9;object-fit:cover;border-radius:12px;display:block;margin-bottom:16px}
.ops-card h3{margin:0 0 8px;font-size:20px}
.ops-card p{margin:0 0 16px;color:var(--ink-2);font-size:15px;line-height:1.6}
.ops-card .tag{margin-bottom:12px}

/* ---------- 个人主页 ---------- */
.me-card{border:1px solid var(--line-2);background:var(--card);border-radius:var(--r-card);padding:22px;box-shadow:var(--shadow);margin-bottom:16px}
.me-card h3{margin:0 0 6px;font-size:17.5px}
.me-card .sub{color:var(--ink-2);font-size:14px;margin:0 0 14px;line-height:1.65}
.me-account{display:flex;align-items:center;gap:16px}
.avatar{width:56px;height:56px;flex:none;border-radius:50%;background:var(--ink);color:var(--paper);
  display:inline-flex;align-items:center;justify-content:center;font-size:24px;font-weight:700}
[data-theme="dark"] .avatar{background:var(--paper);color:var(--ink)}
.avatar{overflow:hidden}
.avatar img{width:100%;height:100%;object-fit:cover;display:block}
.pf-avatar-row{display:flex;align-items:center;gap:14px;margin:2px 0 14px}
.pf-avatar-btns{display:flex;gap:8px;flex-wrap:wrap}
.me-account-in{min-width:0}
.me-email{font-size:18px;font-weight:700;overflow-wrap:anywhere}
.me-status{color:var(--ink-2);font-size:13.5px;margin-top:2px}
.set-row{display:flex;align-items:center;justify-content:space-between;gap:14px;min-height:56px;padding:6px 0;border-top:1px solid var(--line)}
.set-row:first-of-type{border-top:0}
.set-row span{font-size:15.5px}
.key-form{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:16px}
.key-form input{flex:1;min-width:200px;min-height:48px;border:1px solid var(--line-2);border-radius:var(--r-input);background:var(--card);padding:0 14px;font-size:15.5px}
.key-once{border:1px solid var(--warn);border-radius:var(--r-input);padding:14px 16px;font-size:14px;margin-bottom:16px;background:var(--card);overflow-wrap:anywhere;line-height:1.6}
.key-once code{font-family:var(--mono);font-size:13px}
.key-row{padding:16px 0;border-top:1px solid var(--line)}
.key-row:first-child{border-top:0;padding-top:2px}
.kr-main{display:flex;align-items:center;gap:10px}
.kr-name{font-size:16px;font-weight:600;flex:1;min-width:0;overflow-wrap:anywhere}
.kr-meta{color:var(--ink-2);font-size:13.5px;margin-top:5px}
.key-row .btn{margin-top:10px}
.key-row .btn + .btn{margin-left:8px}

/* Key 策略面板（限额与 IP 锁）与账单页预算卡 */
.key-pol-panel{margin:4px 0 14px;padding:14px;border:1px solid var(--line);border-radius:12px;background:var(--card)}
.key-pol-panel .pol-usage{font-size:13.5px;color:var(--ink-2);margin-bottom:8px}
.key-pol-panel .pol-field{display:block;margin-top:10px;font-size:13.5px;color:var(--ink-2)}
.key-pol-panel .pol-field input,.key-pol-panel .pol-field textarea{display:block;width:100%;margin-top:5px;box-sizing:border-box}
.key-pol-panel .pol-actions{margin-top:12px;display:flex;align-items:center;gap:10px}
.key-pol-panel .pol-msg{font-size:13.5px;color:var(--ink-2)}
.budget-bar{height:8px;border-radius:4px;background:var(--line);overflow:hidden;margin:10px 0 4px}
.budget-bar i{display:block;height:100%;background:var(--ink);border-radius:4px}
.budget-status{font-size:15px;margin:2px 0 6px}
.budget-fired{font-size:13.5px;color:var(--ink-2);margin:4px 0}
.budget-form{display:flex;gap:10px;align-items:center;margin-top:12px;flex-wrap:wrap}
.budget-form input{flex:1;min-width:140px}
.budget-msg{font-size:13.5px;color:var(--ink-2)}

/* ---------- 聊天窗（整屏三段式 + in-flow 展开区） ---------- */
.chatview{flex:1;min-height:0;position:relative}
.chat-top{flex:none;min-height:58px;display:flex;align-items:center;gap:6px;padding:5px 10px;
  background:var(--paper);border-bottom:1px solid var(--line)}
.model-capsule{flex:1;min-width:0;display:flex;align-items:center;justify-content:center;gap:7px;min-height:48px;
  border:1px solid var(--line-2);background:var(--card);border-radius:var(--r-btn);padding:0 16px;
  font-size:15.5px;font-weight:600;transition:transform 180ms var(--ease)}
.model-capsule:active{transform:scale(.975)}
.model-capsule .nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chat-panel{flex:none;max-height:48dvh;display:flex;flex-direction:column;background:var(--paper);
  border-bottom:1px solid var(--line-2)}
.panel-tabs{flex:none;display:flex;align-items:center;gap:4px;padding:10px 14px 0}
.panel-tabs [role="tab"]{min-height:44px;padding:0 16px;border:0;border-radius:12px;background:transparent;
  color:var(--ink-2);font-size:15px;font-weight:600}
.panel-tabs [role="tab"][aria-selected="true"]{background:var(--card-2);color:var(--ink)}
.panel-tabs .grow{flex:1}
.panel-pane{overflow-y:auto;padding:16px 16px 20px;min-height:0}
.session-item{display:flex;align-items:center;width:100%;text-align:left;border:0;background:transparent;border-radius:14px;
  min-height:58px;transition:background 180ms var(--ease)}
.session-item:hover{background:var(--card-2)}
.session-item[aria-current="true"]{background:var(--card-2)}
.session-item .t{display:block;font-weight:600;font-size:15.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.session-item .s{display:block;font-size:12.5px;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}
/* 会话资产（第 2 波）：主区按钮 + 行内动作（改名/删除）+ 搜索命中 */
.session-main{flex:1;min-width:0;display:block;text-align:left;border:0;background:transparent;padding:12px 6px 12px 14px;
  font:inherit;color:inherit;cursor:pointer}
.session-acts{display:flex;align-items:center;gap:2px;padding-right:8px;flex:none}
.session-acts .hit{font-size:12px;color:var(--ink-2);white-space:nowrap;margin-right:4px}
.s-act{min-height:36px;padding:0 9px;border:0;border-radius:9px;background:transparent;color:var(--ink-2);
  font-size:12.5px;cursor:pointer}
.s-act:hover{background:var(--card-2);color:var(--ink)}
.session-item mark{background:none;color:inherit;font-weight:700;border-bottom:2px solid var(--ink-3);padding:0}
.session-item.editing,.session-item.confirming{flex-direction:column;align-items:stretch}
.session-rename-input{flex:1;min-width:0;min-height:44px;border:1px solid var(--line-2);border-radius:var(--r-input);
  background:var(--card);padding:0 12px;font-size:15px;margin:10px 14px 0}
.session-edit-row{display:flex;align-items:center;gap:8px;padding:8px 14px 12px}
.session-edit-row .grow{flex:1}
.session-err{color:var(--err);font-size:12.5px}
.session-confirm{padding:12px 14px 4px;font-size:14px;line-height:1.55}
.session-confirm p{margin:0}
.session-confirm .session-edit-row{padding-left:0;padding-right:0}
.btn.danger{color:var(--err)}
.session-search{margin:0 0 12px}
.session-search input{width:100%;min-height:44px;border:1px solid var(--line-2);border-radius:var(--r-input);
  background:var(--card);padding:0 12px;font-size:15px}
/* 加强批·全文搜索内容命中区：组头（会话标题）+ 逐条命中行（角色 +
 * 带 <mark> 的文摘 + 时间），点行直达定位。视觉与 .session-item 同族。 */
.session-hits{margin-top:14px}
.session-hits-head{font-size:13px;color:var(--ink-2);font-weight:600;margin:0 2px 8px}
.session-hits-note{font-size:13px;color:var(--ink-2);margin:0 2px 8px}
.search-hit-group{font-size:13.5px;font-weight:600;margin:12px 2px 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.search-hit-group .hit{font-size:12px;color:var(--ink-2);font-weight:400;margin-left:6px}
.search-hit{display:block;width:100%;text-align:left;border:1px solid var(--line);background:var(--card);
  border-radius:14px;padding:10px 12px;margin-bottom:8px;cursor:pointer}
.search-hit:active{transform:scale(.985)}
.search-hit .sh-role{font-size:12px;color:var(--ink-2);margin-right:8px;white-space:nowrap}
.search-hit .sh-time{font-size:12px;color:var(--ink-2);margin-left:8px;white-space:nowrap}
.search-hit .sh-snip{font-size:14px;line-height:1.5;color:var(--ink);overflow-wrap:anywhere}
.search-hit mark{background:none;color:inherit;font-weight:700;border-bottom:2px solid var(--ink-3);padding:0}
#exportSessionBtn{margin-top:10px}
.panel-pane .grp{font-size:13.5px;color:var(--ink-2);font-weight:600;margin:18px 2px 10px}
.panel-pane .grp:first-child{margin-top:2px}
.pick{display:flex;align-items:center;gap:10px;width:100%;text-align:left;border:1px solid var(--line);background:var(--card);
  border-radius:16px;padding:14px 16px;min-height:58px;margin-bottom:10px;transition:transform 180ms var(--ease)}
.pick:active{transform:scale(.975)}
.pick[aria-current="true"]{border-color:var(--brand)}
.pick .pn{font-weight:600;font-size:16px}
.pick .pt{margin-left:auto;display:flex;gap:5px;flex:none}
.tune{border-top:1px solid var(--line);margin-top:16px;padding-top:8px}
.tune>button{width:100%;min-height:48px;border:0;background:none;text-align:left;font-weight:600;font-size:15.5px;padding:6px 2px}
.tune-body{display:none;padding:6px 2px 10px}
.tune.open .tune-body{display:block}
.tune .row{margin-bottom:16px}
.tune label{display:block;font-size:14px;color:var(--ink-2);margin-bottom:8px}
.chip-row{display:flex;flex-wrap:wrap;gap:8px}
.chip{min-height:40px;padding:0 14px;border-radius:var(--r-btn);border:1px solid var(--line-2);background:var(--card);font-size:14px;transition:transform 180ms var(--ease)}
.chip:active{transform:scale(.95)}
.chip[aria-pressed="true"]{background:var(--ink);color:var(--paper);border-color:var(--ink);font-weight:600}
.tune input[type="range"]{width:100%;accent-color:var(--brand)}
.tune input[type="number"]{width:100%;min-height:48px;border:1px solid var(--line-2);border-radius:var(--r-input);background:var(--card);padding:0 12px}
.hint{font-size:12.5px;color:var(--ink-2)}
.media-ctl{display:flex;flex-wrap:wrap;gap:12px}
.media-ctl .f{min-width:150px;flex:1}
.media-ctl select,.media-ctl input{width:100%;min-height:48px;border:1px solid var(--line-2);border-radius:var(--r-input);background:var(--card);padding:0 12px}
.chat-scroll{flex:1;overflow-y:auto;min-height:0}
.chat-col{max-width:760px;margin:0 auto;padding:24px 18px 30px;width:100%}
.msg{margin:0 0 28px}
.msg.user{display:flex;flex-direction:column;align-items:flex-end}
.msg .bubble-user{background:var(--card-2);border-radius:18px 18px 6px 18px;padding:12px 16px;max-width:88%;
  font-size:16px;line-height:1.6;overflow-wrap:anywhere;white-space:pre-wrap}
.msg .plain{font-size:16.5px;line-height:1.65;overflow-wrap:anywhere}
.msg .plain p{margin:0 0 12px}.msg .plain p:last-child{margin-bottom:0}
.msg .plain ul,.msg .plain ol{margin:0 0 12px;padding-left:22px}
.msg .plain h3,.msg .plain h4{margin:16px 0 8px;font-size:17px}
.msg .plain code{font-family:var(--mono);font-size:.9em;background:var(--card-2);padding:1px 5px;border-radius:6px}
.codeblock{position:relative;margin:10px 0}
.codeblock pre{margin:0;background:#211d16;color:#f0e9d8;border-radius:12px;padding:14px;overflow-x:auto;
  font-family:var(--mono);font-size:13.5px;line-height:1.55}
.codeblock pre code{background:none;padding:0;color:inherit}
.codeblock .copy-code{position:absolute;top:8px;right:8px;min-height:32px;padding:0 10px;border:1px solid var(--line-2);
  border-radius:8px;background:var(--card);color:var(--ink);cursor:pointer;font-size:12px}
.stream-caret{display:inline-block;width:2px;height:1.05em;background:var(--brand);vertical-align:text-bottom;margin-left:2px;animation:breathe 1s ease-in-out infinite}
.msg-files{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px;justify-content:flex-end}
.file-chip{display:inline-flex;align-items:center;gap:7px;background:var(--card);border:1px solid var(--line-2);
  border-radius:10px;padding:6px 10px;font-size:13px;max-width:280px}
.file-chip .fn{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.file-chip img{width:40px;height:40px;object-fit:cover;border-radius:7px}
.file-chip.parsing{opacity:.72}
.file-chip .attach-state{color:var(--ink-2)}
.file-chip.failed .attach-state{color:var(--err)}
.cost-line{font-size:12.5px;color:var(--ink-2);margin-top:8px}
/* 用量收据（先钱档）：展开明细走纸面卡片与既有令牌，无新色 */
.receipt{margin-top:2px}
.receipt-toggle{border:0;background:none;color:var(--ink-2);font-size:12.5px;padding:4px 0;cursor:pointer;
  text-decoration:underline;text-underline-offset:3px}
.receipt-body{border:1px solid var(--line);background:var(--card-2);border-radius:12px;padding:10px 14px;margin-top:4px;font-size:13px}
.receipt-body .rrow{display:flex;justify-content:space-between;gap:16px;padding:3px 0}
.receipt-body .rrow span{color:var(--ink-2)}
.receipt-body .rrow b{font-weight:600;font-variant-numeric:tabular-nums;text-align:right}
.err-line .settle-note{font-weight:600}
/* 选择器价格行（先钱档）：名称列内第二行，克制小字 */
.pick .pmain{display:flex;flex-direction:column;gap:2px;min-width:0}
.pick .pp{font-size:12.5px;color:var(--ink-2)}
.pick .plong{font-size:12.5px;color:var(--ink-3)}
/* 输入区上方信息条（先钱档）：余额常驻 / 上下文用量 / 预估行 */
.composer-meta{max-width:760px;margin:0 auto 8px;padding:0 6px}
.cm-row{display:flex;align-items:center;gap:12px;font-size:12.5px;color:var(--ink-2);min-height:18px}
.cm-bal{font-weight:600;color:var(--ink)}
.cm-ctx{margin-left:auto;display:flex;align-items:center;gap:8px;min-width:0;flex:none}
.ctx-track{width:90px;height:4px;border-radius:2px;background:var(--line);overflow:hidden;flex:none}
.ctx-fill{display:block;height:100%;width:0;background:var(--ink-3);border-radius:2px}
.ctx-fill.warn{background:var(--warn)}
.ctx-label{white-space:nowrap}
.est-line{margin:6px 0 0;font-size:12.5px;color:var(--ink-2);text-align:right}
.est-line.warn{color:var(--warn);font-weight:600}
.ctx-hint{margin:6px 0 0;font-size:12.5px;color:var(--warn);line-height:1.5}
/* 完整 Markdown（第 2 波）：引用/表格/任务列表/分隔线 + 代码高亮。
   表格色与边线全走既有令牌；高亮色只出现在深色代码块内、哑光低饱和。 */
.msg .plain blockquote{border-left:3px solid var(--line-2);margin:0 0 12px;padding:2px 0 2px 14px;color:var(--ink-2)}
.msg .plain hr{border:0;border-top:1px solid var(--line);margin:14px 0}
.msg .plain table{display:block;overflow-x:auto;max-width:100%;border-collapse:collapse;margin:0 0 14px;font-size:14.5px}
.msg .plain th,.msg .plain td{border:1px solid var(--line);padding:6px 10px;text-align:left;vertical-align:top}
.msg .plain th{background:var(--card-2);font-weight:600}
.msg .plain li.task{list-style:none;margin-left:-22px}
.msg .plain li.task input{accent-color:var(--ink);margin-right:7px}
.msg .plain del{color:var(--ink-2)}
.codeblock .tok-c{color:#98917e;font-style:italic}
.codeblock .tok-s{color:#a9bd7a}
.codeblock .tok-n{color:#d19a66}
.codeblock .tok-k{color:#8fb4c9}
/* 编辑重发 / 重新生成确认（第 2 波） */
.msg .edit-box{align-self:stretch;width:100%}
.edit-input{width:100%;min-height:96px;border:1px solid var(--line-2);border-radius:14px;background:var(--card);
  padding:10px 12px;font:inherit;font-size:16px;line-height:1.6;resize:vertical}
.edit-box .hint{margin-top:6px;line-height:1.55}
.edit-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:8px}
.confirm-line{display:flex;flex-wrap:wrap;align-items:center;gap:10px;border:1px solid var(--line);
  background:var(--card-2);border-radius:12px;padding:10px 14px;font-size:14px;margin-top:8px}
.confirm-line .btn{min-height:36px;background:var(--card)}
/* 长会话渐进渲染（第 2 波） */
.load-earlier{display:flex;justify-content:center;margin:0 0 20px}
.load-earlier .btn{background:var(--card)}
.load-later{display:flex;justify-content:center;margin:20px 0 0}
.load-later .btn{background:var(--card)}
/* 拖放提示层（第 2 波）：虚线框 + 清玻璃，只在拖拽悬停时出现 */
.drop-hint{position:absolute;inset:12px;z-index:6;display:flex;align-items:center;justify-content:center;
  border:2px dashed var(--ink-3);border-radius:18px;background:var(--glass-tint-strong);
  font-size:16px;font-weight:600;pointer-events:none}
.drop-hint[hidden]{display:none}
.err-line{display:flex;flex-wrap:wrap;align-items:center;gap:10px;background:var(--tag-err-bg);color:var(--tag-err-ink);
  border-radius:12px;padding:12px 16px;font-size:15px;margin-top:8px}
.err-line .btn{min-height:40px;background:var(--card)}
.msg-actions{display:flex;gap:4px;margin-top:6px}
.msg-actions .btn{min-height:40px;padding:0 12px;font-size:12.5px;border-color:transparent;background:transparent;color:var(--ink-2)}
.msg-actions .btn:hover{background:var(--card-2)}
.think{border:1px solid var(--line);background:var(--card-2);border-radius:12px;margin:0 0 12px}
.think>button{width:100%;min-height:42px;border:0;background:none;text-align:left;padding:9px 14px;font-size:14px;color:var(--ink-2);font-weight:600}
.think .think-body{display:none;padding:0 14px 14px;font-size:14px;line-height:1.6;color:var(--ink-2);white-space:pre-wrap}
.think.open .think-body{display:block}
/* 顶配 B 档：工具调用卡（B3，复用 .think 折叠骨架）/ 来源卡（B1）/ 追问 chips（B2） */
.toolbox:empty{display:none}
.toolcall>button{display:flex;align-items:center;gap:8px}
.toolcall .tool-name{font-weight:600;color:var(--ink)}
.toolcall .tool-status{margin-left:auto;font-size:12.5px;color:var(--ink-2);font-weight:500}
.toolcall .tool-args{margin:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12.5px;line-height:1.55;
  white-space:pre-wrap;word-break:break-word;max-height:260px;overflow:auto}
.sources{margin:2px 0 10px}
.sources-title{font-size:12.5px;color:var(--ink-2);font-weight:600;margin:0 0 6px}
.source-card{display:flex;gap:10px;align-items:flex-start;text-decoration:none;color:inherit;
  border:1px solid var(--line);background:var(--card-2);border-radius:12px;padding:9px 12px;margin:0 0 6px}
.source-card:active{background:var(--card)}
.source-idx{flex:none;width:20px;height:20px;border-radius:50%;background:var(--ink);color:var(--card);
  font-size:12px;font-weight:600;display:flex;align-items:center;justify-content:center;margin-top:1px}
.source-main{display:flex;flex-direction:column;gap:1px;min-width:0}
.source-title{font-size:13.5px;font-weight:600;line-height:1.4;overflow:hidden;text-overflow:ellipsis;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.source-host{font-size:12px;color:var(--ink-2)}
.source-snip{font-size:12.5px;color:var(--ink-2);line-height:1.5;overflow:hidden;text-overflow:ellipsis;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.fu-chips{display:flex;flex-wrap:wrap;gap:8px;padding:2px 2px 10px}
.fu-chips[hidden]{display:none}
/* 发送队列条（加强批）：composer 列内在流呈现（不浮盖正文），
 * 最多 3 条、每条单行省略，整条高度有界。 */
.queue-bar{border:1px solid var(--line);background:var(--card-2);border-radius:14px;padding:8px 10px;margin:0 2px 8px}
.queue-bar[hidden]{display:none}
.queue-head{display:flex;align-items:center;gap:8px;min-height:32px}
.queue-title{font-size:13px;font-weight:600;color:var(--ink)}
.queue-held{font-size:12.5px;color:var(--warn);font-weight:600}
.queue-head .grow{flex:1}
.queue-head .btn{min-height:32px;padding:0 12px;font-size:13px}
.queue-item{display:flex;align-items:center;gap:8px;padding:5px 2px;border-top:1px solid var(--line)}
.queue-idx{flex:none;width:17px;height:17px;border-radius:50%;background:var(--card);border:1px solid var(--line-2);
  font-size:11px;line-height:15px;text-align:center;color:var(--ink-2)}
.queue-text{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:13.5px;color:var(--ink)}
.queue-del{flex:none;width:28px;height:28px;border:0;border-radius:8px;background:transparent;color:var(--ink-2);
  font-size:13px;cursor:pointer;padding:0}
.queue-del:active{background:var(--card)}
/* 抽屉行生成态小点（加强批）：标题行首内联，只带点的行让出位
 * 置（相邻兄弟选择器收窄标题宽），无点的行布局一字不变。 */
.sess-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:7px;vertical-align:middle;flex:none}
.sess-dot + .t{display:inline-block;max-width:calc(100% - 17px);vertical-align:middle}
.sess-dot.run{background:var(--brand);animation:breathe 1.6s ease-in-out infinite}
.sess-dot.done{background:var(--brand)}
.sess-dot.err{background:var(--err)}
@media (prefers-reduced-motion: reduce){.sess-dot.run{animation:none}}
.fu-chip{border:1px solid var(--line);background:var(--card-2);color:var(--ink);border-radius:999px;
  padding:8px 14px;font-size:13.5px;line-height:1.35;cursor:pointer;text-align:left;max-width:100%}
.fu-chip:active{background:var(--card)}
/* 任务状态卡 */
.task-card{border:1px solid var(--line-2);background:var(--card);border-radius:var(--r-card);padding:16px 18px;box-shadow:var(--shadow)}
.task-head{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.task-head .tk{font-weight:600;font-size:15.5px}
.task-head .tm{font-size:13.5px;color:var(--ink-2)}
.task-pulse{height:2px;border-radius:2px;background:var(--brand);margin:12px 0 4px;animation:breathe 1.6s ease-in-out infinite}
.task-note{font-size:14px;color:var(--ink-2);margin:8px 0 0}
.task-result{margin-top:12px}
.task-result img,.task-result video{max-width:100%;height:auto;border-radius:12px;display:block;border:1px solid var(--line)}
.task-result audio{width:100%}
.task-actions{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}
/* 空状态 */
.empty-state{padding:8dvh 4px 0;text-align:left}
.empty-state .hello{font-size:27px;line-height:1.35;font-weight:700;margin:0 0 8px}
.empty-state .sub{color:var(--ink-2);font-size:14px;margin:0 0 24px}
.ex-grid{display:flex;flex-direction:column;gap:12px}
.ex-card{text-align:left;border:1px solid var(--line-2);background:var(--card);border-radius:var(--r-card);
  padding:18px 20px;font-size:16px;box-shadow:var(--shadow);transition:transform 180ms var(--ease)}
.ex-card:active{transform:scale(.975)}
.ex-card small{display:block;color:var(--ink-2);font-size:13.5px;margin-top:4px}
/* 输入区（布局带：聊天列最后一段，不覆盖消息） */
.composer{flex:none;padding:10px 14px calc(12px + env(safe-area-inset-bottom));background:var(--paper)}
.composer-in{max-width:760px;margin:0 auto;background:var(--card);border:1px solid var(--line-2);border-radius:22px;
  box-shadow:var(--shadow);padding:8px}
.attach-row{display:flex;flex-wrap:wrap;gap:8px;padding:2px 4px 8px}
.attach-row:empty{display:none}
.composer-row{display:flex;align-items:flex-end;gap:6px}
.composer-row textarea{flex:1;min-width:0;border:0;background:transparent;resize:none;min-height:28px;max-height:150px;
  padding:10px 6px;font-size:16.5px;line-height:1.5}
.send-btn{width:48px;height:48px;flex:none;border:0;border-radius:50%;background:var(--brand);color:var(--brand-ink);
  display:inline-flex;align-items:center;justify-content:center;transition:transform 180ms var(--ease),opacity 180ms var(--ease)}
.send-btn:active{transform:scale(.92)}
.send-btn[disabled]{opacity:.35}
.send-btn.stop{background:var(--ink);color:var(--paper)}
/* 本地存储已满提示：在流内横幅（消息区与输入区之间），不覆盖正文 */
.storage-note{flex:none;padding:10px 18px;background:var(--tag-err-bg);color:var(--tag-err-ink);
  font-size:14px;line-height:1.5;text-align:center}
/* 回到底部：无色清玻璃圆钮，仅在上翻离开底部时出现（hidden 控制）。
   bottom 由 chat.js 按输入区实际高度写入，CSS 值只是 JS 未跑时的兜底。 */
.to-bottom-btn{position:absolute;right:16px;bottom:110px;z-index:5;width:40px;height:40px;border-radius:50%;
  display:inline-flex;align-items:center;justify-content:center;color:var(--ink);cursor:pointer;
  background:var(--glass-tint);border:1px solid var(--glass-edge);
  box-shadow:inset 0 1px 0 var(--glass-hi),inset 0 -1px 0 rgb(33 29 22/.05),var(--glass-shadow);
  backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-sat));-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-sat));
  transition:transform 180ms var(--ease)}
.to-bottom-btn:active{transform:scale(.92)}
/* 回到顶部与回底部共用玻璃圆钮样式（.to-top-btn 只作识别钩子，
 * 位置 bottom 由 chat.js 按回底部钮的显隐叠加计算）。 */

/* ---------- 顶配 A1/A11/A14 渲染与无障碍补强 ---------- */
.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}
.msg .plain h2{margin:18px 0 8px;font-size:19px;line-height:1.35}
.msg .plain .md-img{display:block;max-width:100%;height:auto;border-radius:12px;margin:10px 0}
/* 代码头：语言名 + 展开/收起 + 复制，一行收齐（原复制钮绝对定位改
 * 进头行，代码区自此零遮挡）。 */
.codeblock .code-head{display:flex;align-items:center;gap:6px;background:#211d16;color:#b8b09a;
  border-radius:12px 12px 0 0;padding:6px 8px 0;font-family:var(--mono);font-size:12px}
.codeblock pre{border-radius:0 0 12px 12px}
.codeblock .code-lang{padding:2px 6px;letter-spacing:.02em;user-select:none;margin-right:auto}
.codeblock .code-fold-btn{min-height:32px;padding:0 10px;border:1px solid var(--line-2);
  border-radius:8px;background:var(--card);color:var(--ink);cursor:pointer;font-size:12px;font-family:inherit}
.codeblock .copy-code{position:static}
.codeblock.folded pre{max-height:260px;overflow-y:hidden}
/* 公式：KaTeX 块级公式横向可滚（390px 不撑破）；库未到/失败时源码兜底 */
.msg .plain .katex-display{overflow-x:auto;overflow-y:hidden;padding:4px 0;margin:8px 0}
.math-src{font-family:var(--mono);font-size:.92em;background:var(--card-2);border-radius:6px;padding:1px 5px;word-break:break-all}
.math-src.math-display{display:block;text-align:center;padding:8px 10px;margin:10px 0;overflow-x:auto}
/* Mermaid 图：容器横滚，SVG 等比缩放不超宽；源码兜底沿代码块面 */
.mermaid-fig{margin:10px 0;overflow-x:auto;background:var(--card);border:1px solid var(--line-2);border-radius:12px;padding:10px}
.mermaid-fig svg{max-width:100%;height:auto;display:block;margin:0 auto}
.mermaid-fig .mermaid-src{margin:0;font-family:var(--mono);font-size:13px;line-height:1.55;white-space:pre;color:var(--ink-2)}
/* 消息尾小字（A11）：时间 + 字数，弱化色不抢正文 */
.msg-meta{font-size:12px;color:var(--ink-3);display:inline-flex;align-items:center;padding:0 8px 0 2px;white-space:nowrap}

/* ---------- 登录页（沿 v2 §6.1：纯色面 + 纸卡，浮动标签，未改动） ---------- */
.login-page{min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:22px 16px calc(22px + env(safe-area-inset-bottom));background:var(--paper)}
.login-card{width:100%;max-width:400px;background:var(--card);border:1px solid var(--line-2);border-radius:var(--r-card);padding:28px 24px;box-shadow:var(--shadow)}
.login-card .wordmark{font-size:24px;font-weight:800;letter-spacing:.01em}
.login-card .wordmark b{color:var(--brand)}
.login-card .tagline{color:var(--ink-2);font-size:14px;margin:6px 0 22px}
.fl{position:relative;margin-bottom:14px}
.fl input{width:100%;height:54px;border:1px solid var(--line-2);border-radius:var(--r-input);background:var(--card);
  padding:20px 44px 4px 14px;font-size:16px;transition:border-color 180ms var(--ease)}
.fl input:focus{border-color:var(--brand);border-width:1.5px}
.fl label{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--ink-2);font-size:15px;pointer-events:none;
  transition:all 160ms var(--ease)}
.fl input:focus+label,.fl input:not(:placeholder-shown)+label{top:15px;font-size:11.5px;color:var(--brand);font-weight:600}
.fl .pw-eye{position:absolute;right:6px;top:50%;transform:translateY(-50%);width:38px;height:38px;border:0;border-radius:10px;background:transparent;color:var(--ink-2);display:inline-flex;align-items:center;justify-content:center}
.fl-row{display:flex;gap:10px}
.fl-row .fl{flex:1}
.fl-row .btn{height:54px;flex:none;border-radius:var(--r-input)}
.code-input{font-family:var(--mono);font-size:20px;letter-spacing:.35em}
.form-err{display:none;border:1px solid var(--err);color:var(--err);border-radius:var(--r-input);padding:11px 13px;margin-bottom:14px;font-size:14px;background:var(--card)}
.form-err.show{display:block}
.form-ok{display:none;border:1px solid var(--ok);color:var(--ok);border-radius:var(--r-input);padding:11px 13px;margin-bottom:14px;font-size:14px;background:var(--card)}
.form-ok.show{display:block}
.login-links{display:flex;gap:18px;margin-top:16px;flex-wrap:wrap}
.login-links button{border:0;background:none;padding:6px 0;color:var(--brand);font-size:14px;font-weight:600}
.login-submit{width:100%;height:52px;font-size:16px}

@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation:none!important;transition:none!important}
}

/* ============================================================
   苹果雕刻（DESIGN-app-form §2，两形态共用）：以 iOS 26 世代 HIG 为工艺标准——
   字号阶梯 / 分组与分段 / 弹簧令牌 / 控件尺寸。品牌锚点（纸与墨）不动；
   玻璃只许控件级实色光影（B1），背景仍纯色平涂（本段零 gradient/零 backdrop-filter）。
   ============================================================ */
:root{
  --ease:cubic-bezier(.32,.72,.24,1);            /* 全站曲线统一为苹果弹簧近似（原 --ease 令牌换值） */
  --spring:cubic-bezier(.32,.72,.24,1);
  --spring-pop:cubic-bezier(.3,1.35,.35,1);
  --dur-instant:90ms; --dur-fast:180ms; --dur-view:320ms; --dur-sheet:380ms;
}
body{font-size:17px;line-height:1.5}             /* Body 17pt 档 */
.page-title{font-size:34px;letter-spacing:-.01em} /* Large Title 34 */
.sec-title{font-size:22px}                        /* Title 2 */
.feat-card .nm,.rc-name{font-size:19px;font-weight:650}
.me-card h3{font-size:19px}
.kr-name{font-size:17px}                          /* Headline 17 */
.page-sub{font-size:16px}                         /* Callout 16 */
.msg .plain{font-size:17px}
.composer-row textarea{font-size:17px}
.key-form input{font-size:16px}
.page-foot,.kr-meta{font-size:13px}               /* Footnote 13 */
/* 顶栏收至导航栏高（54 = 42 钮 + 上下 3+3 内边距） */
.topbar{min-height:54px;padding-top:3px;padding-bottom:3px}
.topnav button{min-height:42px}
/* 底栏 Tab 规范：图标 25、标签 10.5、选中品牌橙（§2.2） */
.bottomnav svg.ic{width:25px;height:25px}
.bottomnav button{font-size:10.5px;letter-spacing:.01em;gap:3px}
/* 视图转场：沿方向滑入（popstate 返回时 data-navback 反向，形态层打标记） */
.view.active{animation:viewin var(--dur-view) var(--spring)}
@keyframes viewin{from{opacity:0;transform:translateX(14px)}to{opacity:1;transform:none}}
html[data-navback] .view.active{animation-name:viewin-back}
@keyframes viewin-back{from{opacity:0;transform:translateX(-14px)}to{opacity:1;transform:none}}
/* 分段控件（聊天面板页签）：轨道浅底 + 选中片实色轻影 */
.seg{display:inline-flex;background:var(--card-2);border-radius:11px;padding:3px;gap:2px}
.panel-tabs .seg [role="tab"]{min-height:36px;padding:0 18px;border-radius:8px;font-size:14px;color:var(--ink-2)}
.panel-tabs .seg [role="tab"][aria-selected="true"]{background:var(--card);color:var(--ink);box-shadow:var(--shadow)}
/* Sheet grabber（展开区顶部小条，仅形态） */
.chat-panel::before{content:"";display:block;width:36px;height:5px;border-radius:3px;background:var(--ink-3);
  opacity:.45;margin:8px auto 0;flex:none}
/* 分组列表分隔线：自文字左缘起（左缩进 16，右满） */
.set-row{border-top:0;position:relative}
.set-row::before{content:"";position:absolute;top:0;left:16px;right:0;height:1px;background:var(--line)}
.set-row:first-of-type::before{display:none}
/* 聚焦环统一：品牌色细环（输入类），按钮保留 outline 口径 */
input:focus,select:focus{border-color:var(--brand);box-shadow:0 0 0 3.5px color-mix(in srgb,var(--brand) 26%,transparent)}
.composer-row textarea:focus{box-shadow:none}
/* 开关（外观行，HIG 51×31 / 钮 27）：#themeBtn 逻辑不变，形态层同步 aria-checked */
.switch{width:51px;height:31px;flex:none;border:0;border-radius:999px;background:var(--card-2);position:relative;
  box-shadow:inset 0 0 0 1px var(--line);transition:background var(--dur-fast) var(--spring)}
.switch .knob{position:absolute;top:2px;left:2px;width:27px;height:27px;border-radius:50%;background:#fffdf8;
  box-shadow:0 1px 3px rgba(33,29,22,.25),0 0 0 1px rgba(33,29,22,.06);
  transition:transform var(--dur-fast) var(--spring-pop),width var(--dur-fast) var(--spring)}
.switch[aria-checked="true"]{background:var(--brand)}
.switch[aria-checked="true"] .knob{transform:translateX(20px)}
.switch:active .knob{width:32px}
.switch[aria-checked="true"]:active .knob{transform:translateX(15px)}
.switch:focus-visible{outline:2px solid var(--brand);outline-offset:2px}
/* 滑杆（HIG：轨 4、钮 28 白圆+影、填充段品牌色由 .range-fill 呈现） */
.range-wrap{position:relative;height:28px;display:flex;align-items:center}
.range-wrap::before{content:"";position:absolute;left:0;right:0;top:50%;transform:translateY(-50%);
  height:4px;border-radius:2px;background:var(--card-2)}
.range-wrap .range-fill{position:absolute;left:0;top:50%;transform:translateY(-50%);height:4px;
  border-radius:2px;background:var(--brand);width:0;pointer-events:none}
.range-wrap input[type="range"]{position:relative;width:100%;appearance:none;-webkit-appearance:none;
  background:transparent;height:28px;margin:0;padding:0;box-shadow:none;border:0}
.range-wrap input[type="range"]:focus{box-shadow:none}
input[type="range"]::-webkit-slider-thumb{-webkit-appearance:none;width:28px;height:28px;border-radius:50%;
  background:#fffdf8;box-shadow:0 1px 4px rgba(33,29,22,.3),0 0 0 1px rgba(33,29,22,.05);cursor:pointer}
input[type="range"]::-moz-range-thumb{width:28px;height:28px;border:0;border-radius:50%;
  background:#fffdf8;box-shadow:0 1px 4px rgba(33,29,22,.3),0 0 0 1px rgba(33,29,22,.05);cursor:pointer}
/* 输入框清除钮（iOS 灰圆 ×，纯 CSS 画）：.field-wrap 包裹，形态层接行为 */
.key-form .field-wrap{flex:1;min-width:200px;position:relative;display:block}
.key-form .field-wrap input{width:100%;padding-right:38px}
.field-clear{position:absolute;right:9px;top:50%;transform:translateY(-50%);width:21px;height:21px;flex:none;
  border:0;border-radius:50%;background:var(--ink-3);cursor:pointer;padding:0}
.field-clear::before,.field-clear::after{content:"";position:absolute;left:50%;top:50%;width:9px;height:1.8px;
  border-radius:2px;background:var(--card)}
.field-clear::before{transform:translate(-50%,-50%) rotate(45deg)}
.field-clear::after{transform:translate(-50%,-50%) rotate(-45deg)}
.field-clear[hidden]{display:none}

/* ============================================================
   APP 形态（DESIGN-app-form §4，html.app-form 前缀收敛）：
   standalone 启动时的原生皮——实色应用栏、大标题折叠、胶囊 Tab（在流内）、
   下拉刷新、启动屏。结构仍是 v3 的布局带，零悬浮覆盖（启动屏为唯一例外，
   load 后即移除，不参与布局量测）。
   ============================================================ */
.app-form .topbar{position:relative;padding-top:calc(3px + env(safe-area-inset-top));
  min-height:calc(54px + env(safe-area-inset-top))}
.app-form .chat-top{padding-top:calc(5px + env(safe-area-inset-top))}
.app-form .topbar.bar-scrolled{border-bottom-color:var(--line-2)}
.app-form .bar-title{position:absolute;left:50%;top:50%;transform:translate(-50%,-42%);
  font-size:17px;font-weight:600;opacity:0;pointer-events:none;white-space:nowrap;
  transition:opacity var(--dur-fast) var(--spring),transform var(--dur-fast) var(--spring)}
.app-form .bar-title.show{opacity:1;transform:translate(-50%,-50%)}
/* 转场幅度加大贴近原生推入 */
.app-form .view.active{animation-name:viewin-app}
@keyframes viewin-app{from{opacity:0;transform:translateX(24px)}to{opacity:1;transform:none}}
html[data-navback].app-form .view.active{animation-name:viewin-app-back}
@keyframes viewin-app-back{from{opacity:0;transform:translateX(-24px)}to{opacity:1;transform:none}}
/* 底部 Tab 胶囊形（B2：只取形不取悬浮——胶囊画在布局带内，带仍计入页面高度） */
.app-form .bottomnav{position:relative;background:var(--paper);border-top:0;
  padding:6px 14px calc(6px + env(safe-area-inset-bottom))}
.app-form .bottomnav::before{content:"";position:absolute;left:14px;right:14px;top:6px;
  bottom:calc(6px + env(safe-area-inset-bottom));background:var(--card);
  border:1px solid var(--line);border-radius:999px;box-shadow:var(--shadow)}
.app-form .bottomnav button{position:relative;z-index:1;border-radius:999px;min-height:52px}
.app-form .bottomnav button[aria-selected="true"]{background:var(--card-2)}
.app-form .page-scroll,.app-form .chat-scroll{overscroll-behavior-y:contain}
/* 下拉刷新指示器（滚动盒内 in-flow 块，展开时把内容往下推，零覆盖） */
.ptr{height:0;overflow:hidden;display:flex;align-items:center;justify-content:center;gap:8px;
  transition:height 260ms var(--spring)}
.ptr-ring{width:18px;height:18px;flex:none;border-radius:50%;border:2px solid var(--line-2);border-top-color:var(--brand)}
.ptr-txt{font-size:13px;color:var(--ink-2)}
.ptr.ptr-on .ptr-ring{animation:ptrspin .7s linear infinite}
@keyframes ptrspin{to{transform:rotate(360deg)}}
/* 启动屏样式已迁至各页内联「首帧关键样式」（server.js INLINE_STYLE_HASH 绑定）：
   结构占位必须在主样式表到达前就能绘制，此处不再重复定义。 */
/* 登录页 APP 形态：去卡片边框，内容上提（原生登录范式） */
.app-form .login-page{align-items:flex-start;padding-top:11dvh}
.app-form .login-card{border:0;box-shadow:none;background:var(--paper)}

/* ============================================================
   公开落地页（DESIGN-app-form §8）：未登录访客首页。
   纸与墨 + 苹果阶梯；内容架构学竞品（主张/公式/信任/装机引导），皮肤零借用。
   ============================================================ */
.ld-top{display:flex;align-items:center;justify-content:space-between;gap:14px;
  min-height:54px;padding:6px 20px;border-bottom:1px solid var(--line)}
a.btn{color:var(--ink);text-decoration:none} /* 锚点按钮压掉 UA 链接蓝/下划线，与 <button> 同貌 */
.ld-word{font-size:21px;font-weight:800;letter-spacing:.01em}
.ld-word b{color:var(--brand)}
.ld-word.small{font-size:17px}
.ld-nav{display:flex;gap:10px;align-items:center}
.ld-nav .btn{min-height:40px}
.ld-main{max-width:760px;margin:0 auto;padding:34px 20px 64px}
.ld-hero{padding:26px 0 8px}
.ld-title{font-size:44px;line-height:1.15;font-weight:800;letter-spacing:-.01em;margin:0 0 14px}
.ld-sub{font-size:17px;line-height:1.65;color:var(--ink-2);margin:0 0 22px;max-width:34em}
.ld-cta{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:22px}
.btn.ld-big{min-height:50px;padding:0 26px;font-size:16px;border-radius:12px}
.ld-lines{display:flex;flex-direction:column;gap:9px;font-size:15px;color:var(--ink-2)}
.ld-line{display:flex;align-items:center;gap:8px}
.ld-sec{margin-top:44px}
.ld-sec .sec-title{margin-bottom:12px}
/* 计费公式组件（§8.2）：因子块横排，× 与 = 分隔；数字等宽对齐 */
.fx-card{padding:18px}
.fx-lines{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:16px}
.seg [role="tab"]{min-height:36px;padding:0 16px;border-radius:8px;font-size:14px;color:var(--ink-2);
  background:transparent;border:0;cursor:pointer;font:inherit}
.seg [role="tab"][aria-selected="true"]{background:var(--card);color:var(--ink);box-shadow:var(--shadow);font-weight:600}
.fx-line-note{font-size:13px;color:var(--ink-2)}
.fx-eq{display:flex;align-items:stretch;gap:10px;flex-wrap:wrap}
.fx-factor{display:flex;flex-direction:column;gap:2px;justify-content:center;
  background:var(--card-2);border-radius:12px;padding:10px 14px;min-width:104px}
.fx-flabel{font-size:12px;color:var(--ink-2);letter-spacing:.04em}
.fx-fval{font-size:24px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.2}
.fx-fnote{font-size:12px;color:var(--ink-2)}
.fx-op{align-self:center;font-size:20px;color:var(--ink-3);font-weight:600}
.fx-factor.fx-result{background:var(--brand);color:#fff8f2}
.fx-factor.fx-result .fx-flabel{color:#ffd9c4}
.fx-caption{font-size:13.5px;line-height:1.6;color:var(--ink-2);margin:14px 0 0}
.fx-note{font-size:13px;color:var(--ink-3);margin:6px 0 0}
/* 信任清单：复用分组行（.set-row 雕刻分隔线），行内标题+说明竖排 */
.ld-trust{padding-top:4px;padding-bottom:4px}
.ld-trust .set-row{flex-direction:column;align-items:flex-start;gap:2px;padding:14px 16px}
.ld-trust-t{font-size:16px;font-weight:600}
.ld-trust-d{font-size:14px;color:var(--ink-2);line-height:1.55}
.ld-trust .set-row[hidden]{display:none}
/* 装机引导 */
.ld-app{padding:18px}
.ld-app-lead{font-size:15.5px;line-height:1.65;margin:0 0 14px}
.ld-app-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.ld-app-cell{background:var(--card-2);border-radius:12px;padding:14px}
.ld-app-cell h3{font-size:16px;margin:0 0 6px}
.ld-app-cell p{font-size:14px;line-height:1.6;color:var(--ink-2);margin:0}
.ld-foot{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:52px;
  padding-top:18px;border-top:1px solid var(--line);font-size:13.5px;color:var(--ink-2)}
.ld-foot-links{margin-left:auto;display:flex;gap:16px;align-items:center;flex-wrap:wrap}
.ld-foot-links a{color:var(--ink);text-decoration:none;font-weight:600}
/* C9 语言切换（落地页/价格页页脚）：与既有控件同语言——玻璃边小号 select */
.ld-lang{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--ink-2)}
.ld-lang select{min-height:32px;border:1px solid var(--glass-edge);border-radius:10px;background:var(--glass-tint-strong);color:var(--ink);padding:0 8px;font:inherit;font-size:13px}
/* C9 登录页语言行（卡片下方居中，与页脚同款控件） */
.lg2-langrow{display:flex;justify-content:center;margin-top:14px}
.app-form .ld-top{padding-top:calc(6px + env(safe-area-inset-top))}
@media (max-width:760px){
  .ld-main{padding:22px 16px 52px}
  .ld-title{font-size:34px}
  .ld-app-grid{grid-template-columns:1fr}
  .fx-fval{font-size:21px}
}

/* ---------- P0 信任层：账单验算 / 模型价格表 / 价格页签 ---------- */
.bill-row{border-top:1px solid var(--line)}
.bill-row:first-child{border-top:0}
.bill-head{display:flex;align-items:center;gap:12px;width:100%;min-height:56px;padding:10px 0;border:0;background:transparent;color:var(--ink);text-align:left;cursor:pointer}
.bill-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.bill-model{font-size:15.5px;font-weight:600;overflow-wrap:anywhere}
.bill-actual{color:var(--ink-2);font-weight:400;font-size:13px}
.bill-meta{color:var(--ink-2);font-size:13px}
.bill-amt{font-size:16px;font-weight:600}
.bill-detail{padding:4px 0 16px;border-top:1px dashed var(--line)}
.bf-row{display:flex;align-items:baseline;gap:10px;padding:6px 0;font-size:14px}
.bf-row>span:first-child{color:var(--ink-2);flex:none;min-width:64px}
.bf-row .bf-calc{flex:1;color:var(--ink-2)}
.bf-row b{margin-left:auto;text-align:right;font-weight:600}
.bf-total{border-top:1px solid var(--line);margin-top:4px;padding-top:10px}
.bf-ok b{color:var(--ok)}
.bf-diff b{color:var(--err)}
.bf-note{color:var(--ink-2);font-size:13px;margin:6px 0 2px;line-height:1.6}
/* 全量运行记录（加强批）：状态筛选 chips + 非结算行的状态呈现。
   无色玻璃口径：chip 未选为透明底细边，选中为墨色实底白字（非玻璃
   小面积实色，与全站选中态同口径），不给玻璃染色。 */
.bill-filter{display:flex;flex-wrap:wrap;gap:6px;margin:2px 0 12px}
.bill-chip{appearance:none;border:1px solid var(--line);background:transparent;color:var(--ink-2);font-size:13px;font-weight:500;padding:6px 12px;border-radius:999px;cursor:pointer;min-height:32px}
.bill-chip.is-on{background:var(--ink);border-color:var(--ink);color:var(--bg)}
.bill-status{display:inline-block;font-size:12px;font-weight:600;padding:1px 8px;border-radius:999px;border:1px solid var(--line);color:var(--ink-2);vertical-align:1px}
.bill-status.st-released{color:var(--err);border-color:var(--err)}
.bill-status.st-pending_reconciliation,.bill-status.st-blocked_model_mismatch{color:var(--warn,#b25e00);border-color:var(--warn,#b25e00)}
.bill-amt.muted{color:var(--ink-2);font-size:14px;font-weight:500}
.ptabs{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 14px}
.ptabs [role="tab"]{min-height:40px;padding:0 16px;border:1px solid var(--line-2);border-radius:var(--r-btn);background:var(--card);color:var(--ink-2);font-size:14px;cursor:pointer}
.ptabs [role="tab"][aria-selected="true"]{background:var(--ink);border-color:var(--ink);color:var(--paper);font-weight:600}
.price-wrap{overflow-x:auto;border:1px solid var(--line-2);border-radius:var(--r-card);background:var(--card)}
.price-table{border-collapse:collapse;width:100%;min-width:560px;font-size:14px}
.price-table th{ text-align:left;color:var(--ink-2);font-weight:600;padding:12px 14px;border-bottom:1px solid var(--line-2);white-space:nowrap}
.price-table td{padding:11px 14px;border-bottom:1px solid var(--line);vertical-align:top}
.price-table tr:last-child td{border-bottom:0}
.price-table .pmut{color:var(--ink-3)}
.p-name{display:block;font-weight:600}
.p-id{display:block;color:var(--ink-2);font-size:12.5px}
.p-alt{display:block;color:var(--ink-2);font-size:12.5px;margin-top:2px}
.p-alt.p-pending{color:var(--warn,#b45309)}
.p-src{font-size:12.5px;color:var(--brand)}

/* 价格历史（平台深审 P1）：一模型一块，块内每行 = 一个生效版本
 * （时间 + 四档价，与主表同格式化函数）。守无色口径，不染色。 */
.phist-model{margin:0 0 18px;padding:14px 16px;border:1px solid var(--line-2);border-radius:16px;background:var(--card-2)}
.phist-head{display:flex;align-items:baseline;gap:10px;margin-bottom:8px}

/* ===== 顶配第三波（A4/A9/A10/A15 + 价格表改卡片） =====
 * 价格表双渲染：桌面表格（.price-wrap）照旧；移动端一模型一卡
 * （.price-cards），同数据同格式化函数，只换布局结构。断点与全站
 * 移动口径一致（760px）。卡面守无色玻璃/实色卡口径，不染色。 */
.price-cards{display:none}
@media (max-width:760px){
  .price-wrap{display:none}
  .price-cards{display:flex;flex-direction:column;gap:10px}
}
.price-card{border:1px solid var(--line-2);border-radius:var(--r-card);background:var(--card);padding:13px 14px}
.price-card .pc-head{display:flex;align-items:flex-start;gap:10px}
.price-card .pc-main{flex:1;min-width:0}
.price-card .pc-rows{margin-top:9px;border-top:1px solid var(--line)}
.price-card .pc-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:7px 0;border-bottom:1px solid var(--line);font-size:13.5px}
.price-card .pc-row:last-child{border-bottom:0}
.price-card .pc-row span{color:var(--ink-2)}
.price-card .pc-row b{font-weight:600}
.price-card .pc-row b.pmut{color:var(--ink-3);font-weight:400}
/* 公开价格页「其他计价」行（既有 ld2-kv-row 结构，非本波所建）：
 * 长价格串+来源链接在窄屏把整页撑出横向滚动（390 实测越界至
 * 411px），本波价格页移动化顺手收口——允许折行、长串可断，
 * 内容放得下时外观与原来逐像素一致。 */
.ld2-kv-row{flex-wrap:wrap}
.ld2-kv-row>span:last-child{overflow-wrap:anywhere;min-width:0}

/* 会话内查找条（A4）：顶栏下方 in-flow 一行；命中高亮用 mark，
 * 当前命中加深。颜色只用墨色系与品牌橙小面积点缀，不动玻璃。 */
.find-bar{display:flex;align-items:center;gap:6px;padding:8px 12px;border-bottom:1px solid var(--line);background:var(--card)}
.find-bar[hidden]{display:none}
.find-bar input{flex:1;min-width:0;min-height:38px;border:1px solid var(--glass-edge);border-radius:12px;background:var(--glass-tint-strong);color:inherit;padding:0 12px;font-size:15px}
.find-count{flex:none;color:var(--ink-2);font-size:13px;min-width:44px;text-align:center}
mark.find-hit{background:rgba(255,176,32,.38);color:inherit;border-radius:3px;padding:0 1px}
mark.find-hit.cur{background:var(--brand);color:#fff}

/* 长文大纲（A15）：消息内 in-flow 折叠块（非浮层，零遮挡） */
.msg-outline{margin:2px 0 8px}
.outline-toggle{min-height:32px;padding:0 12px;border:1px solid var(--line-2);border-radius:999px;background:var(--card);color:var(--ink-2);font-size:13px;cursor:pointer}
.outline-list{display:flex;flex-direction:column;gap:2px;margin-top:8px;border:1px solid var(--line);border-radius:var(--r-card);background:var(--card);padding:8px}
.outline-item{display:block;width:100%;text-align:left;border:0;background:none;color:var(--ink);font-size:13.5px;line-height:1.45;padding:6px 8px;border-radius:8px;cursor:pointer;overflow-wrap:anywhere}
.outline-item:hover{background:var(--card-2)}
.outline-item.lv3{padding-left:22px}
.outline-item.lv4{padding-left:36px}

/* 全屏编辑 / 快捷键一览 sheet（A9/A10）：同公告 sheet 的贴底范式 */
.composer-edit-back{position:fixed;inset:0;z-index:93;background:rgba(23,20,16,.45);display:flex;align-items:flex-end;justify-content:center}
.composer-edit-back[hidden]{display:none}
.composer-edit{width:100%;max-width:640px;max-height:88vh;max-height:88dvh;display:flex;flex-direction:column;
  background:var(--glass-tint-strong);border:1px solid var(--glass-edge);border-bottom:0;border-radius:22px 22px 0 0;
  -webkit-backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-sat));backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-sat));
  box-shadow:inset 0 1px 0 var(--glass-hi),0 -12px 40px rgba(23,20,16,.22);padding:14px 16px calc(16px + env(safe-area-inset-bottom,0px))}
.composer-edit-head{display:flex;align-items:center;gap:10px;font-size:16px;font-weight:700;margin-bottom:10px}
.composer-edit-head .grow{flex:1}
.composer-edit textarea{width:100%;min-height:38vh;max-height:60vh;resize:vertical;border:1px solid var(--glass-edge);border-radius:14px;background:var(--card);color:inherit;padding:12px;font-size:16px;line-height:1.6;font-family:inherit}
.shortcuts-sheet #shortcutsBody{overflow-y:auto;overscroll-behavior:contain}
.scut-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:9px 0;border-top:1px solid var(--line);font-size:14px}
.scut-row:first-child{border-top:0}
.scut-row kbd{flex:none;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;color:var(--ink-2);background:var(--card);border:1px solid var(--line-2);border-bottom-width:2px;border-radius:7px;padding:3px 8px;white-space:nowrap}
.send-mode-row{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-top:16px}
@media (prefers-reduced-transparency:reduce){
  .composer-edit{background:var(--card);backdrop-filter:none;-webkit-backdrop-filter:none}
}

/* ===== 落地页 v2（DESIGN-landing-v2）：原生态苹果风·液态玻璃材质层 =====
   纸色是底、墨色是字、品牌橙是点、玻璃是材质层（只承载结构不承载信息）。
   玻璃四级：G1 导航 / G2 面板 / G3 档卡 / G4 静默（无 blur）/ G0 行动条；
   护栏（面积/块数/半径/降级链）见定稿 §2.1。新样式一律 ld2- 前缀。 */
:root{--glass-tint:rgb(255 255 255/.62);--glass-tint-strong:rgb(255 255 255/.8);
--glass-blur:20px;--glass-sat:1.8;--glass-edge:rgb(255 255 255/.45);--glass-hi:rgb(255 255 255/.55);
--glass-shadow:0 1px 2px rgb(33 29 22/.05),0 12px 32px -12px rgb(33 29 22/.18),0 24px 48px -24px rgb(33 29 22/.12);
--ld2-top-off:10px}
[data-theme="dark"]{--glass-tint:rgb(32 28 22/.55);--glass-tint-strong:rgb(32 28 22/.72);
--glass-edge:rgb(255 255 255/.18);--glass-hi:rgb(255 255 255/.22);
--glass-shadow:0 1px 2px rgb(0 0 0/.25),0 12px 32px -12px rgb(0 0 0/.35),0 24px 48px -24px rgb(0 0 0/.3)}
/* 玻璃三件套：半透明底+折射亮边+镜面高光（::before 只走顶边，光源恒在正上方）+分层阴影 */
.ld2-glass{position:relative;background:var(--glass-tint);border:1px solid var(--glass-edge);
box-shadow:inset 0 1px 0 var(--glass-hi),inset 0 -1px 0 rgb(33 29 22/.05),var(--glass-shadow)}
.ld2-glass::before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;
background:linear-gradient(180deg,rgb(255 255 255/.35),transparent 45%)}
.ld2-g1,.ld2-g0{backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-sat));-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-sat))}
.ld2-g2{backdrop-filter:blur(20px) saturate(1.6);-webkit-backdrop-filter:blur(20px) saturate(1.6)}
.ld2-g3{backdrop-filter:blur(16px) saturate(1.5);-webkit-backdrop-filter:blur(16px) saturate(1.5)}
/* G4 静默玻璃无 backdrop-filter（列表高频件逐条 blur 必掉帧，性能铁律） */
/* 降级链一：低端设备 glass-lite——G2/G3 降 G4，只留 G1/G0 真 blur */
html.glass-lite .ld2-g2,html.glass-lite .ld2-g3{backdrop-filter:none;-webkit-backdrop-filter:none;background:var(--glass-tint-strong)}
/* 降级链二：减透明度偏好——全部玻璃换实色卡口径 */
@media (prefers-reduced-transparency:reduce){
.ld2-glass{background:var(--card);border-color:var(--line-2);box-shadow:var(--shadow);backdrop-filter:none;-webkit-backdrop-filter:none}
.ld2-glass::before{display:none}
.ld2-btn-glass{background:var(--card);border-color:var(--line-2);backdrop-filter:none;-webkit-backdrop-filter:none}}
/* 品牌橙液态玻璃钮（点睛，只给主行动）：橙半透明+同三件套 */
.ld2-btn-brand,.ld2-btn-glass{display:inline-flex;align-items:center;justify-content:center;gap:7px;position:relative;overflow:hidden;
min-height:48px;padding:0 22px;border-radius:999px;text-decoration:none;cursor:pointer;font-size:15px;font-weight:600;
transition:transform 180ms var(--ease)}
.ld2-btn-brand::before,.ld2-btn-glass::before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;
background:linear-gradient(180deg,rgb(255 255 255/.5),rgb(255 255 255/.1) 45%,transparent 62%)}
.ld2-btn-brand:active,.ld2-btn-glass:active{transform:scale(.975)}
.ld2-btn-brand{color:var(--ink);font-weight:700;
background:linear-gradient(180deg,rgb(255 255 255/.78),rgb(255 255 255/.42));
border:1px solid rgb(255 255 255/.9);
backdrop-filter:blur(14px) saturate(1.6);-webkit-backdrop-filter:blur(14px) saturate(1.6);
box-shadow:inset 0 1px 0 rgb(255 255 255/.6),inset 0 -1px 0 rgb(33 29 22/.06),0 1px 2px rgb(33 29 22/.06),0 12px 28px -12px rgb(33 29 22/.28)}
.ld2-btn-glass{color:var(--ink);
background:linear-gradient(180deg,rgb(255 255 255/.72),rgb(255 255 255/.38));
border:1px solid rgb(255 255 255/.9);
backdrop-filter:blur(16px) saturate(1.8);-webkit-backdrop-filter:blur(16px) saturate(1.8);
box-shadow:inset 0 1px 0 rgb(255 255 255/.8),inset 0 -1px 0 rgb(33 29 22/.05),0 1px 3px rgb(33 29 22/.08),0 10px 24px -12px rgb(33 29 22/.22)}
/* B0 顶栏（G1，浮） */
.ld2-top{position:fixed;top:calc(var(--ld2-top-off) + env(safe-area-inset-top));left:50%;transform:translateX(-50%);
z-index:40;width:min(760px,calc(100vw - 24px));height:56px;border-radius:999px;display:flex;align-items:center;gap:14px;padding:6px 8px 6px 20px}
.ld2-top .ld-word{flex:none}
.ld2-anchors{display:none;gap:2px;margin:0 auto}
.ld2-anchors a{color:var(--ink-2);text-decoration:none;font-size:14.5px;padding:8px 10px;border-radius:999px}
.ld2-anchors a:hover{color:var(--ink)}
.ld2-top-cta{display:flex;gap:8px;align-items:center;margin-left:auto}
.ld2-top-cta .ld2-btn-brand,.ld2-top-cta .ld2-btn-glass{min-height:42px;padding:0 18px;font-size:14.5px}
@media (min-width:900px){.ld2-anchors{display:flex}.ld2-top-cta{margin-left:0}}
/* 顶部留白 = 距顶 + 条高 56 + 净距 12（量测口径 §2.1） */
.ld2-main{padding-top:calc(var(--ld2-top-off) + 56px + 12px + env(safe-area-inset-top))}
.ld2-main section{scroll-margin-top:calc(var(--ld2-top-off) + 56px + 16px + env(safe-area-inset-top))}
.ld2-sec{margin-top:44px}
.ld2-sec-title{font-size:22px;font-weight:700;margin:0 0 6px;line-height:1.3}
.ld2-sec-sub{font-size:15px;color:var(--ink-2);line-height:1.6;margin:0 0 14px;max-width:36em}
.ld2-reveal-init .ld2-reveal{opacity:0;transform:translateY(8px)}
.ld2-reveal-init .ld2-reveal.in{opacity:1;transform:none;transition:opacity 240ms ease-out,transform 240ms ease-out}
@media (prefers-reduced-motion:reduce){.ld2-reveal-init .ld2-reveal{opacity:1;transform:none}.ld2-expand{transition:none}}
.ld2-hero-lines{margin-top:4px}
/* B2 试算器（G2） */
.ld2-panel{border-radius:28px;padding:20px}
.ld2-field-label{display:block;font-size:13px;color:var(--ink-2);letter-spacing:.03em;margin:0 0 6px}
.ld2-select{width:100%;min-height:48px;padding:0 12px;font-size:16px;color:var(--ink);
background:var(--glass-tint-strong);border:1px solid var(--glass-edge);border-radius:14px}
.ld2-sliders{display:flex;flex-direction:column;gap:6px;margin-top:14px}
.ld2-slider-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px}
.ld2-slider-head label{font-size:14.5px;font-weight:600}
.ld2-slider-val{font-size:14.5px;color:var(--ink-2);font-variant-numeric:tabular-nums}
.ld2-slider-off{opacity:.45}
.ld2-slider-note{font-size:12.5px;color:var(--ink-2);margin:0}
.ld2-calc-seg{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:16px}
.ld2-seg{background:var(--glass-tint-strong);border:1px solid var(--glass-edge);box-shadow:inset 0 1px 0 var(--glass-hi)}
.ld2-fx{margin-top:18px}
.ld2-fx-break{font-size:13px;color:var(--ink-2);line-height:1.6;margin:10px 0 0}
.ld2-concl{font-size:16.5px;font-weight:600;line-height:1.55;margin:14px 0 0}
.ld2-foot-note{font-size:13px;color:var(--ink-2);line-height:1.6;margin:8px 0 0}
.ld2-fallback{font-size:15px;color:var(--ink-2);line-height:1.65;padding:8px 0}
/* 公式结果块：清玻璃强调（玻璃无色铁律 2026-10-10 18:15） */
.ld2-fx-result{background:linear-gradient(180deg,rgb(255 255 255/.75),rgb(255 255 255/.45));border:1px solid rgb(255 255 255/.9);color:var(--ink);
box-shadow:inset 0 1px 0 rgb(255 255 255/.6),0 10px 24px -12px rgb(33 29 22/.22)}
.ld2-fx-result .fx-flabel{color:var(--ink-2)}
/* B3 目录（G4 静默玻璃） */
.ld2-chips{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 14px}
.ld2-chip{min-height:38px;padding:0 15px;border-radius:999px;border:1px solid var(--line-2);
background:var(--glass-tint);color:var(--ink-2);font-size:14px;cursor:pointer}
.ld2-chip[aria-pressed="true"]{border-color:var(--brand);color:var(--brand);font-weight:600;background:var(--glass-tint-strong)}
.ld2-mcard{border-radius:20px;padding:16px;margin-bottom:10px;background:var(--glass-tint);border:1px solid var(--glass-edge);
box-shadow:inset 0 1px 0 var(--glass-hi),0 1px 2px rgb(33 29 22/.05),0 10px 24px -14px rgb(33 29 22/.16)}
.ld2-mcard-head{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.ld2-mname{font-size:17px;font-weight:600}
.ld2-mprov{font-size:13px;color:var(--ink-2)}
.ld2-pgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:12px}
.ld2-pcell{background:rgb(255 255 255/.35);border-radius:12px;padding:8px 10px}
[data-theme="dark"] .ld2-pcell{background:rgb(255 255 255/.06)}
.ld2-pcell .ld2-pv{display:block;font-size:16.5px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.25}
.ld2-pcell .ld2-pl{display:block;font-size:11.5px;color:var(--ink-2);margin-top:2px}
.ld2-mfoot{display:flex;gap:6px;flex-wrap:wrap;font-size:13px;color:var(--ink-2);margin-top:12px;line-height:1.55}
.ld2-mfoot a{color:var(--brand);text-decoration:none;font-weight:600}
.ld2-kv{margin-top:10px;border-top:1px solid var(--line)}
.ld2-kv-row{display:flex;align-items:baseline;gap:10px;padding:7px 0;border-bottom:1px solid var(--line);font-size:14px}
.ld2-kv-row:last-child{border-bottom:0}
.ld2-kv-row .ld2-kv-k{color:var(--ink-2);flex:none}
.ld2-kv-row .ld2-kv-v{margin-left:auto;font-weight:600;font-variant-numeric:tabular-nums}
.ld2-munit{font-size:12.5px;color:var(--ink-3);margin-top:8px}
.ld2-more{width:100%;margin-top:4px}
.ld2-group-title{font-size:17px;font-weight:700;margin:26px 0 4px}
.ld2-group-sub{font-size:13.5px;color:var(--ink-2);margin:0 0 12px;line-height:1.6}
/* B4 示范账（G2） */
.ld2-bill-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.ld2-bill-model{font-size:17px;font-weight:600}
.ld2-bill-line{font-size:13.5px;color:var(--ink-2)}
.ld2-bill-total{margin-left:auto;font-size:21px;font-weight:700;font-variant-numeric:tabular-nums}
.ld2-bill-toggle{margin-top:12px;min-height:44px;padding:0 18px;font-size:14px}
.ld2-expand{display:grid;grid-template-rows:0fr;transition:grid-template-rows 200ms ease-out}
.ld2-expand.open{grid-template-rows:1fr}
.ld2-expand>div{overflow:hidden;min-height:0}
.ld2-brow{display:flex;align-items:baseline;gap:10px;padding:7px 0;font-size:14px;border-top:1px solid var(--line)}
.ld2-brow:first-child{border-top:0}
.ld2-brow .ld2-brow-t{color:var(--ink-2);flex:none;min-width:64px}
.ld2-brow .ld2-brow-c{flex:1;color:var(--ink-2)}
.ld2-brow b{margin-left:auto;text-align:right;font-weight:600;font-variant-numeric:tabular-nums}
.ld2-brow.ld2-brow-total{border-top:1px solid var(--line-2);margin-top:4px;padding-top:10px}
.ld2-brow.ld2-brow-final b{color:var(--brand);font-size:16px}
/* B5 线路档卡（G3） */
.ld2-lines3{display:flex;flex-direction:column;gap:10px}
.ld2-linecard{border-radius:24px;padding:18px}
.ld2-linecard-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ld2-linename{font-size:17px;font-weight:700}
.ld2-linedisc{font-size:24px;font-weight:800;font-variant-numeric:tabular-nums;margin:8px 0 4px}
.ld2-linedisc small{font-size:13px;font-weight:600;color:var(--ink-2)}
.ld2-linenote{font-size:14px;color:var(--ink-2);line-height:1.6;margin:0}
@media (min-width:900px){.ld2-lines3{flex-direction:row}.ld2-linecard{flex:1}}
/* B6 信任（G3） */
.ld2-trust{border-radius:24px;padding:4px 0}
.ld2-trust .set-row{flex-direction:column;align-items:flex-start;gap:2px;padding:14px 18px;min-height:0}
/* B7 四步（G3） */
.ld2-steps{display:flex;flex-direction:column;gap:10px}
.ld2-step{border-radius:24px;padding:16px 18px;display:flex;gap:14px;align-items:flex-start}
.ld2-step-num{flex:none;width:30px;height:30px;border-radius:50%;background:var(--ink);color:var(--paper);
display:flex;align-items:center;justify-content:center;font-size:15px;font-weight:700;margin-top:2px}
.ld2-step-t{font-size:16px;font-weight:700;margin:0 0 3px}
.ld2-step-d{font-size:14.5px;color:var(--ink-2);line-height:1.6;margin:0}
@media (min-width:900px){.ld2-steps{display:grid;grid-template-columns:1fr 1fr}}
/* B9 FAQ */
.ld2-faq{border-top:1px solid var(--line)}
.ld2-faq details{border-bottom:1px solid var(--line)}
.ld2-faq summary{min-height:56px;display:flex;align-items:center;gap:10px;cursor:pointer;
font-size:16px;font-weight:600;list-style:none;padding:8px 2px}
.ld2-faq summary::-webkit-details-marker{display:none}
.ld2-faq summary::after{content:"+";margin-left:auto;font-size:20px;color:var(--ink-3);font-weight:400;flex:none}
.ld2-faq details[open ] summary::after{content:"−"}
.ld2-faq .ld2-faq-a{font-size:15px;color:var(--ink-2);line-height:1.65;padding:0 2px 16px;margin:0}
/* B10 收口 + G0 行动条（浮） */
.ld2-endcta-t{font-size:26px;font-weight:800;margin:0 0 14px}
.ld2-foot-v{font-size:13px;color:var(--ink-2)}
.ld2-action{position:fixed;left:50%;transform:translateX(-50%);z-index:40;
bottom:calc(12px + env(safe-area-inset-bottom));width:min(520px,calc(100vw - 24px));height:64px;
border-radius:999px;display:flex;gap:8px;padding:8px}
.ld2-action .ld2-btn-brand,.ld2-action .ld2-btn-glass{flex:1;padding:0 10px}
.ld2-bottom-spacer{height:calc(12px + 64px + 16px + env(safe-area-inset-bottom))}
/* APP 皮差异（§6） */
.app-form{--ld2-top-off:6px}
.app-form .ld2-top{width:calc(100vw - 16px)}
.app-form .ld2-install{display:none}
.app-form .ld2-hero-cta-main{flex:1;min-height:54px;font-size:16.5px}
.app-form .ld2-hero-cta-sub{background:none;border:0;box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none;color:var(--brand);min-height:44px;padding:0 8px}
@media (max-width:760px){.ld2-pgrid{grid-template-columns:repeat(2,1fr)}.ld2-panel{padding:16px}
.ld2-main .ld-hero{padding-top:0} /* 顶部净距只由 .ld2-main 预留带决定（恒 12px），Hero 不再叠内边距 */
.ld2-sliders{gap:2px;margin-top:10px}.ld2-calc-seg{margin-top:12px}.ld2-fx{margin-top:12px}
.ld2-concl{margin-top:10px;font-size:15.5px}.fx-eq{gap:6px}.fx-factor{min-width:86px;padding:8px 10px}}

/* ---------- 接入中心（access.js） ---------- */
.ac-intro{color:var(--ink-2);font-size:14.5px;line-height:1.65;margin:0 0 14px}
.ac-key-row{width:100%;display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;text-align:left;
  border:1px solid var(--line);border-radius:var(--r-input);background:var(--card);
  padding:12px 14px;margin-bottom:8px;cursor:pointer;color:var(--ink);font:inherit}
.ac-key-row .kr-name{flex:1;min-width:140px}
.ac-key-row .kr-meta{width:100%;margin-top:0}
.ac-key-row[aria-selected="true"]{border-color:var(--brand);box-shadow:0 0 0 1px var(--brand)}
.ac-key-row.is-off{cursor:default;opacity:.72}
.ac-block{margin:0 0 18px}
.ac-block-h{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px;
  font-size:14px;color:var(--ink-2);font-weight:600}
.ac-pre{font-family:var(--mono);font-size:13px;line-height:1.65;background:var(--card-2);
  border:1px solid var(--line);border-radius:var(--r-input);padding:14px 16px;margin:0;
  overflow-x:auto;white-space:pre;color:var(--ink)}
.ac-steps{margin:0 0 6px;padding-left:24px;line-height:1.9;font-size:15px}
.ac-steps li{margin-bottom:4px;overflow-wrap:anywhere}
.ac-note{color:var(--ink-2);font-size:13.5px;line-height:1.65;margin:10px 2px}
.ac-dl-row{display:flex;align-items:center;gap:10px;padding:12px 0;border-top:1px solid var(--line);flex-wrap:wrap}
.ac-dl-main{flex:1;min-width:210px;display:flex;flex-direction:column;gap:2px}
.ac-dl-name{font-weight:600;font-size:15px}

/* 落地页纯白背景（2026-10-10 用户定：前置页底色纯白，玻璃在其上折射） */
body.ld2-body{--paper:#ffffff}

/* ============================================================
   登录页 v2（lg2）：与落地页 v2 同一套设计语言——纯白底 + 液态玻璃面板
   （复用 --glass-* 变量与 G2 面板规格）、液态玻璃钮（.ld2-btn-brand /
   .ld2-btn-glass 原类直用）、玻璃输入框。交互反馈（光影跟手 / 聚焦
   高光 / 字段状态 / 提交编排 / 形变切换 / 眼睛形变）全在本段与
   login.js 呈现层，业务逻辑零改动。新样式一律 lg2- 前缀或 .lg2 作用域。
   ============================================================ */
body.lg2-body{--paper:#ffffff}
.login-page.lg2{animation:lg2in 480ms var(--spring)}
@keyframes lg2in{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}

/* —— 玻璃面板（G2 规格）+ 指针跟随高光（::before）+ 成功光晕环（::after） —— */
.lg2-panel{position:relative;border-radius:28px;padding:30px 26px 26px;overflow:hidden;
  background:var(--glass-tint);border:1px solid var(--glass-edge);
  backdrop-filter:blur(20px) saturate(1.6);-webkit-backdrop-filter:blur(20px) saturate(1.6);
  box-shadow:inset 0 1px 0 var(--glass-hi),inset 0 -1px 0 rgb(33 29 22/.05),var(--glass-shadow);
  --lg-mx:50%;--lg-my:-10%;--lg-hl:0}
.lg2-panel::before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;
  opacity:var(--lg-hl);transition:opacity 350ms var(--ease);
  background:radial-gradient(340px circle at var(--lg-mx) var(--lg-my),rgb(255 255 255/.5),rgb(255 255 255/.12) 42%,transparent 68%),
  linear-gradient(180deg,rgb(255 255 255/.35),transparent 45%)}
.lg2-panel::after{content:"";position:absolute;inset:-1px;border-radius:inherit;pointer-events:none;opacity:0;
  box-shadow:0 0 0 0 rgb(46 107 52/0),inset 0 0 0 1.5px rgb(46 107 52/0)}
.lg2-panel.lg2-success::after{animation:lg2halo 700ms var(--spring) forwards}
@keyframes lg2halo{0%{opacity:0;box-shadow:0 0 0 0 rgb(46 107 52/.4),inset 0 0 0 1.5px rgb(46 107 52/.55)}
  35%{opacity:1}100%{opacity:0;box-shadow:0 0 0 16px rgb(46 107 52/0),inset 0 0 0 1.5px rgb(46 107 52/0)}}
.lg2-panel.lg2-nod{animation:lg2nod 480ms var(--spring)}
@keyframes lg2nod{30%{transform:scale(1.012)}60%{transform:scale(.998)}}
.lg2-panel.lg2-shake{animation:lg2shake 520ms var(--spring)}
@keyframes lg2shake{0%{transform:translateX(0)}16%{transform:translateX(-10px)}36%{transform:translateX(8px)}
  56%{transform:translateX(-5px)}76%{transform:translateX(3px)}100%{transform:translateX(0)}}
.lg2-panel.lg2-success form{opacity:.35;transition:opacity 250ms var(--ease)}
.app-form .lg2-panel{border:1px solid var(--glass-edge);background:var(--glass-tint);
  box-shadow:inset 0 1px 0 var(--glass-hi),inset 0 -1px 0 rgb(33 29 22/.05),var(--glass-shadow)}
.lg2-panel .wordmark{font-size:26px}
.lg2-panel .tagline{margin-bottom:20px}

/* —— 成功对勾描画层 —— */
.lg2-fx{position:absolute;left:50%;top:44%;transform:translate(-50%,-50%) scale(.8);width:84px;height:84px;
  opacity:0;pointer-events:none;z-index:5}
.lg2-fx svg{width:100%;height:100%;fill:none;stroke:var(--ok);stroke-width:3;stroke-linecap:round;stroke-linejoin:round;
  filter:drop-shadow(0 6px 16px rgb(46 107 52/.35))}
.lg2-fx .lg2-fx-c{stroke-dasharray:151;stroke-dashoffset:151}
.lg2-fx .lg2-fx-k{stroke-dasharray:32;stroke-dashoffset:32}
.lg2-fx.play{opacity:1;transform:translate(-50%,-50%) scale(1);
  transition:opacity 160ms var(--ease),transform 320ms var(--spring-pop)}
.lg2-fx.play .lg2-fx-c{animation:lg2draw 450ms var(--ease) forwards}
.lg2-fx.play .lg2-fx-k{animation:lg2draw 300ms var(--ease) 320ms forwards}
@keyframes lg2draw{to{stroke-dashoffset:0}}

/* —— 登录方式槽位：页签条（槽位 ≥2 时由 JS 点亮）+ 槽位进场 —— */
.lg2-methodtabs{display:flex;gap:6px;padding:4px;margin-bottom:18px;border-radius:999px;
  background:var(--glass-tint-strong);border:1px solid var(--glass-edge);box-shadow:inset 0 1px 0 var(--glass-hi)}
.lg2-methodtabs[hidden]{display:none}
.lg2-methodtabs button{flex:1;min-height:40px;border:0;border-radius:999px;background:transparent;cursor:pointer;
  color:var(--ink-2);font-size:14.5px;font-weight:600;transition:background 200ms var(--ease),color 200ms var(--ease),transform 180ms var(--ease)}
.lg2-methodtabs button:active{transform:scale(.97)}
.lg2-methodtabs button[aria-selected="true"]{background:var(--card);color:var(--ink);box-shadow:var(--shadow)}
.lg2-slot.is-active{animation:lg2in 380ms var(--spring)}
.lg2 form.lg2-enter{animation:lg2in 380ms var(--spring)}

/* —— 方式圆钮区（表单区下方 #altMethods 居中，表单与语言行之间）：
   一行引导小字 + 一排圆形小按键（邮箱信封 = 登录↔注册切换；谷歌四色
   G = 谷歌登录，点火时由 login.js 动态建）。两钮本体复用 .ld2-btn-glass
   清玻璃（不染色、无渐变、高光层与按下反馈同款），本处只定圆形几何与
   区布局；G 标识用 Google 官方四色规范画法（标识本身即规范要求），
   信封走本站线描图标语言（24 网格、1.7 描边、圆头）。[hidden] 规则须
   压过 .ld2-btn-glass 的 display，否则藏不住未点火的钮。 —— */
.lg2-altmethods{display:flex;flex-direction:column;align-items:center;gap:10px;margin-top:22px}
.lg2-altmethods[hidden]{display:none}
.lg2-altguide{margin:0;font-size:13.5px;color:var(--brand);background:none;border:0;font-family:inherit;cursor:pointer;padding:6px 10px;-webkit-tap-highlight-color:transparent}
.lg2-altguide[hidden]{display:none}
.lg2-altrow{display:flex;justify-content:center;gap:14px}
.lg2-alt-round{width:48px;height:48px;min-height:48px;padding:0;border-radius:50%;flex:none}
.lg2-alt-round[hidden]{display:none}
.lg2-alt-round svg{width:22px;height:22px;flex:none;display:block}

/* —— 记住密码行（登录表单内、密码框与登录钮之间）：左勾选、右忘记密码。
   勾选框走原生控件 + 墨色 accent，不引新颜色；忘记密码沿旧 .login-links
   里该钮的文字规格（品牌橙、14px、600），只是从整行链接区改为同行右置。 —— */
.lg2-remember-row{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:2px 0 14px}
.lg2-remember{display:flex;align-items:center;gap:8px;min-height:32px;font-size:14px;color:var(--ink-2);cursor:pointer;user-select:none;-webkit-user-select:none}
.lg2-remember input{width:17px;height:17px;margin:0;flex:none;accent-color:var(--ink);cursor:pointer}
.lg2-forgot-link{border:0;background:none;padding:6px 0;color:var(--brand);font-size:14px;font-weight:600;cursor:pointer;flex:none}

/* —— 玻璃输入框 + 聚焦高光流动 + 浮动标签（弹簧） —— */
.lg2 .fl input{background:var(--glass-tint-strong);border:1px solid var(--glass-edge);border-radius:16px;
  box-shadow:inset 0 1px 0 var(--glass-hi),inset 0 -1px 0 rgb(33 29 22/.04);
  transition:border-color 200ms var(--ease),box-shadow 260ms var(--ease),background 200ms var(--ease)}
.lg2 .fl.has-eye input{padding-right:78px}
.lg2 .fl input:focus{border-color:rgb(33 29 22/.45);
  box-shadow:inset 0 1px 0 var(--glass-hi),0 0 0 4px rgb(33 29 22/.1),0 6px 18px -8px rgb(33 29 22/.3)}
.lg2 .fl::after{content:"";position:absolute;left:16px;right:16px;bottom:0;height:2px;border-radius:2px;pointer-events:none;
  background:linear-gradient(90deg,transparent,var(--brand),transparent);background-size:200% 100%;background-position:120% 0;
  transform:scaleX(.4);opacity:0;transition:opacity 220ms var(--ease),transform 380ms var(--spring)}
.lg2 .fl:focus-within::after{opacity:1;transform:scaleX(1);animation:lg2flow 1.6s linear infinite}
@keyframes lg2flow{from{background-position:120% 0}to{background-position:-120% 0}}
.lg2 .fl label{transition:top 240ms var(--spring),font-size 240ms var(--spring),color 200ms var(--ease)}

/* —— 字段即时校验状态（字段内图标浮现 + 红玻璃晕） —— */
.lg2-fstat{position:absolute;right:12px;top:50%;width:20px;height:20px;pointer-events:none;
  transform:translateY(-50%) scale(.6);opacity:0;transition:opacity 200ms var(--ease),transform 260ms var(--spring-pop)}
.lg2 .fl.has-eye .lg2-fstat{right:50px}
.lg2-fstat svg{position:absolute;inset:0;width:20px;height:20px;fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;display:none}
.lg2-fstat .ic-ok{stroke:var(--ok)}
.lg2-fstat .ic-bad{stroke:var(--err)}
.lg2 .fl.is-ok .lg2-fstat,.lg2 .fl.is-bad .lg2-fstat{opacity:1;transform:translateY(-50%) scale(1)}
.lg2 .fl.is-ok .lg2-fstat .ic-ok{display:block}
.lg2 .fl.is-bad .lg2-fstat .ic-bad{display:block}
.lg2 .fl.is-ok input{border-color:rgb(46 107 52/.55)}
.lg2 .fl.is-bad input{border-color:rgb(169 44 29/.6);box-shadow:inset 0 1px 0 var(--glass-hi),0 0 0 4px rgb(169 44 29/.12)}

/* —— 密码眼睛：描画形变（斜线收放 + 虹膜缩放） —— */
.lg2-eye svg{width:21px;height:21px;transition:transform 180ms var(--ease)}
.lg2-eye:active svg{transform:scale(.88)}
.lg2-eye .lg2-eye-iris{transition:transform 260ms var(--spring-pop);transform-origin:12px 12px}
.lg2-eye .lg2-eye-slash{stroke-dasharray:24;stroke-dashoffset:0;transition:stroke-dashoffset 280ms var(--ease)}
.lg2-eye[aria-pressed="true"] .lg2-eye-slash{stroke-dashoffset:24}
.lg2-eye[aria-pressed="true"] .lg2-eye-iris{transform:scale(1.18)}

/* —— 消息条：软玻璃浮现（替代旧描边盒） —— */
.lg2 .form-err,.lg2 .form-ok{border-radius:14px;padding:11px 13px}
.lg2 .form-err{background:rgb(169 44 29/.08);border-color:rgb(169 44 29/.25)}
.lg2 .form-ok{background:rgb(46 107 52/.08);border-color:rgb(46 107 52/.25)}
.lg2 .form-err.show,.lg2 .form-ok.show{animation:lg2msgin 300ms var(--spring)}
@keyframes lg2msgin{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}

/* —— 提交钮（复用 .ld2-btn-brand 玻璃规格）+ 进度态收拢/转圈 + 指针高光 —— */
.lg2-submit{width:100%;min-height:52px;font-size:16px}
.ld2-btn-brand.lg2-submit::before{background:radial-gradient(220px circle at var(--mx,50%) var(--my,50%),rgb(255 255 255/.55),transparent 62%),
  linear-gradient(180deg,rgb(255 255 255/.5),rgb(255 255 255/.1) 45%,transparent 62%)}
.lg2-submit::after{content:"";position:absolute;right:16px;top:50%;width:18px;height:18px;margin-top:-9px;border-radius:50%;
  border:2px solid rgb(255 255 255/.35);border-top-color:#fff8ec;opacity:0;transition:opacity 160ms var(--ease)}
.lg2-submit.lg2-busy{transform:scale(.965)}
.lg2-submit.lg2-busy::after{opacity:1;animation:lg2spin .7s linear infinite}
@keyframes lg2spin{to{transform:rotate(360deg)}}
.lg2-submit[disabled]{cursor:not-allowed;filter:saturate(.75)}

/* —— 发送验证码钮（白玻璃）+ 倒计时形变（底部进度线由 --cd 驱动） —— */
.lg2 .fl-row .lg2-sendcode{height:54px;flex:none;border-radius:16px;padding:0 16px;white-space:nowrap;font-size:14.5px}
.lg2-sendcode::after{content:"";position:absolute;left:14px;right:14px;bottom:5px;height:2.5px;border-radius:2px;
  background:rgb(33 29 22/.5);transform-origin:left center;transform:scaleX(var(--cd,0));transition:transform 950ms linear}
.lg2-sendcode.lg2-counting{color:var(--ink-2)}
.lg2-sendcode[disabled]{cursor:not-allowed}

/* —— 态切换链接：玻璃小片 —— */
.lg2 .login-links{gap:10px}
.lg2 .login-links button{padding:8px 14px;border:1px solid var(--glass-edge);border-radius:999px;cursor:pointer;
  background:var(--glass-tint-strong);box-shadow:inset 0 1px 0 var(--glass-hi);color:var(--brand);
  transition:transform 180ms var(--ease),background 200ms var(--ease)}
.lg2 .login-links button:active{transform:scale(.96)}
.lg2 .hint{color:var(--ink-2);font-size:13.5px;line-height:1.6}

/* —— 降级链：低端 glass-lite / 减透明度 —— */
html.glass-lite .lg2-panel{backdrop-filter:none;-webkit-backdrop-filter:none;background:var(--glass-tint-strong)}
@media (prefers-reduced-transparency:reduce){
  .lg2-panel{background:var(--card);border-color:var(--line-2);backdrop-filter:none;-webkit-backdrop-filter:none}
  .lg2-panel::before{display:none}
  .lg2 .fl input{background:var(--card)}
}

/* ============================================================
   工作台四屏换皮（wb2）：纯白底 + 原生态液态玻璃 + 按键化整改。
   浅色底 = 纯白（--paper 已改 #ffffff），深色底保持深色、玻璃等价适配。
   材质分工（沿 §2.1 护栏）：铬层（顶栏/聊天顶栏/底栏/输入框坞）用真 blur；
   内容卡一律 G4 静默玻璃（半透明+亮边+高光+分层阴影、无 backdrop-filter，
   平涂白底上与 blur 玻璃视觉等价、零帧率代价）；按键全员键面化——
   玻璃面 + 镜面高光 ::before + 按压回弹，纯文本链接式入口绝迹。
   类名与 JS 钩子全部沿旧，本段只覆盖呈现（cascade 末位胜出）。
   ============================================================ */
/* —— 玻璃钮（.btn 家族换 .ld2-btn-brand/.ld2-btn-glass 同规格呈现） —— */
.btn{position:relative;overflow:hidden;background:linear-gradient(180deg,rgb(255 255 255/.72),rgb(255 255 255/.38));
  border:1px solid rgb(255 255 255/.9);color:var(--ink);
  backdrop-filter:blur(16px) saturate(1.8);-webkit-backdrop-filter:blur(16px) saturate(1.8);
  box-shadow:inset 0 1px 0 rgb(255 255 255/.8),inset 0 -1px 0 rgb(33 29 22/.05),0 1px 3px rgb(33 29 22/.08),0 10px 24px -12px rgb(33 29 22/.22);
  transition:transform 180ms var(--ease),box-shadow 180ms var(--ease),background 180ms var(--ease)}
.btn::before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;
  background:linear-gradient(180deg,rgb(255 255 255/.5),rgb(255 255 255/.1) 45%,transparent 62%)}
.btn.primary{color:var(--ink);font-weight:700;
  background:linear-gradient(180deg,rgb(255 255 255/.78),rgb(255 255 255/.42));
  border-color:rgb(255 255 255/.9);
  backdrop-filter:blur(14px) saturate(1.6);-webkit-backdrop-filter:blur(14px) saturate(1.6);
  box-shadow:inset 0 1px 0 rgb(255 255 255/.6),inset 0 -1px 0 rgb(33 29 22/.06),0 1px 2px rgb(33 29 22/.06),0 12px 28px -12px rgb(33 29 22/.28)}
.btn.ink{background:linear-gradient(180deg,rgb(70 62 50/.88),rgb(33 29 22/.92));border-color:rgb(255 255 255/.22);color:#fff8ec}
.btn.danger{color:var(--err);border-color:rgb(169 44 29/.45)}
.btn.danger-o{color:var(--err);border-color:rgb(169 44 29/.35)}
.btn.ghost{background:linear-gradient(180deg,rgb(255 255 255/.72),rgb(255 255 255/.38));border-color:rgb(255 255 255/.9)}
.btn.ghost:hover{background:var(--glass-tint-strong)}
.btn[disabled]{filter:saturate(.6)}
[data-theme="dark"] .btn{background:var(--glass-tint-strong);border-color:var(--glass-edge);
  box-shadow:inset 0 1px 0 var(--glass-hi),0 1px 3px rgb(0 0 0/.3),0 10px 24px -12px rgb(0 0 0/.5)}
[data-theme="dark"] .btn::before{opacity:.45}
[data-theme="dark"] .btn.primary{background:linear-gradient(180deg,rgb(255 255 255/.24),rgb(255 255 255/.1));border-color:rgb(255 255 255/.35);color:#fff}
/* 图标钮：玻璃方键 */
.icon-btn{border:1px solid var(--glass-edge);border-radius:14px;background:var(--glass-tint);
  box-shadow:inset 0 1px 0 var(--glass-hi),0 1px 3px rgb(33 29 22/.07)}
.icon-btn:hover{background:var(--glass-tint-strong)}
/* —— 内容卡：G4 静默玻璃 —— */
.line-card,.feat-card,.route-card,.me-card,.ops-card,.task-card,.ex-card,.price-wrap{
  background:var(--glass-tint);border-color:var(--glass-edge);
  box-shadow:inset 0 1px 0 var(--glass-hi),inset 0 -1px 0 rgb(33 29 22/.04),0 1px 2px rgb(33 29 22/.05),0 14px 30px -16px rgb(33 29 22/.18)}
.state-box{background:var(--glass-tint);border-color:var(--glass-edge)}
.ops-bar{background:var(--glass-tint);border-color:var(--glass-edge);
  box-shadow:inset 0 1px 0 var(--glass-hi),inset 0 -1px 0 rgb(33 29 22/.04),0 1px 2px rgb(33 29 22/.05),0 14px 30px -16px rgb(33 29 22/.18)}
/* —— 顶栏：玻璃铬层（仍是 in-flow 布局带，不悬浮） —— */
.topbar{background:var(--glass-tint);border-bottom:1px solid var(--glass-edge);
  backdrop-filter:blur(20px) saturate(1.8);-webkit-backdrop-filter:blur(20px) saturate(1.8)}
.topbar .logo{display:inline-block;transition:transform 180ms var(--ease)}
.topbar .logo:active{transform:scale(.96)}
.topnav button{border:1px solid transparent;transition:transform 180ms var(--ease),background 180ms var(--ease),border-color 180ms var(--ease)}
.topnav button:hover{background:var(--glass-tint);border-color:var(--glass-edge)}
.topnav button:active{transform:scale(.96)}
.topnav button[aria-selected="true"]{background:linear-gradient(180deg,rgb(255 255 255/.8),rgb(255 255 255/.5));
  border-color:rgb(255 255 255/.9);box-shadow:inset 0 1px 0 rgb(255 255 255/.85),0 1px 3px rgb(33 29 22/.1),0 8px 20px -10px rgb(33 29 22/.25)}
[data-theme="dark"] .topnav button[aria-selected="true"]{background:var(--glass-tint-strong);border-color:var(--glass-edge)}
/* —— 底栏：玻璃带 + 可滑动玻璃选中片（片在本带内绝对定位，不覆盖正文） —— */
.bottomnav{position:relative;background:var(--glass-tint);border-top:1px solid var(--glass-edge);
  backdrop-filter:blur(20px) saturate(1.8);-webkit-backdrop-filter:blur(20px) saturate(1.8)}
.bottomnav button{position:relative;z-index:1;transition:transform 180ms var(--ease),color 180ms var(--ease)}
.bottomnav button:active{background:transparent;transform:scale(.94)}
.bottomnav button[aria-selected="true"]{background:var(--glass-tint-strong);border-radius:999px;
  box-shadow:inset 0 1px 0 var(--glass-hi),0 1px 3px rgb(33 29 22/.08)}
.nav-pill{display:none}
.app-form .bottomnav button[aria-selected="true"]{background:var(--glass-tint-strong);border-radius:999px;
  box-shadow:inset 0 1px 0 var(--glass-hi),0 1px 3px rgb(33 29 22/.08)}
@supports selector(:has(*)){
  /* 三段几何（2026-10-13 Muse 式胶囊）：胶囊内边距 5px，滑块宽 =
   * (100% - 10px)/3，三段等分无间隙，位移恰为 0 / 100% / 200%。 */
  .nav-pill{display:block;position:absolute;z-index:0;left:5px;top:5px;bottom:5px;
    width:calc((100% - 10px)/3);border-radius:999px;pointer-events:none;will-change:transform;
    background:linear-gradient(180deg,rgb(255 255 255/.88),rgb(255 255 255/.52));border:1px solid rgb(255 255 255/.92);
    box-shadow:inset 0 1px 0 rgb(255 255 255/.95),inset 0 -1px 0 rgb(33 29 22/.05),0 1px 3px rgb(33 29 22/.09),0 10px 22px -10px rgb(33 29 22/.28);
    transition:transform 340ms var(--spring)}
  /* 镜面高光带（玻璃四原则：顶高光）：透镜上缘一道镜面反光，绽放时随块走 */
  .nav-pill::before{content:"";position:absolute;left:14%;right:14%;top:2px;height:38%;border-radius:999px;
    background:linear-gradient(180deg,rgb(255 255 255/.85),rgb(255 255 255/0));pointer-events:none}
  /* 折射亮边：下缘一道极淡的亮线（无色，只走明度不走色相） */
  .nav-pill::after{content:"";position:absolute;left:18%;right:18%;bottom:2px;height:30%;border-radius:999px;
    background:linear-gradient(0deg,rgb(255 255 255/.5),rgb(255 255 255/0));pointer-events:none}
  [data-theme="dark"] .nav-pill{background:var(--glass-tint-strong);border-color:var(--glass-edge)}
  .bottomnav button[aria-selected="true"]{background:transparent;box-shadow:none}
  .app-form .bottomnav button[aria-selected="true"]{background:transparent;box-shadow:none}
  .bottomnav:has(> button:nth-of-type(1)[aria-selected="true"]) .nav-pill{transform:translateX(0)}
  .bottomnav:has(> button:nth-of-type(2)[aria-selected="true"]) .nav-pill{transform:translateX(100%)}
  .bottomnav:has(> button:nth-of-type(3)[aria-selected="true"]) .nav-pill{transform:translateX(200%)}
}
/* APP 形态胶囊：轨道与选中片都走玻璃（::before 轨道真 blur） */
.app-form .bottomnav{background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none}
.app-form .bottomnav::before{background:var(--glass-tint);border:1px solid var(--glass-edge);
  backdrop-filter:blur(20px) saturate(1.8);-webkit-backdrop-filter:blur(20px) saturate(1.8);
  box-shadow:inset 0 1px 0 var(--glass-hi),var(--glass-shadow)}
/* —— 「我的」入口列：规整玻璃按键（图标 + 标题 + 右箭头 + 按压回弹） —— */
.me-entries{display:flex;flex-direction:column;gap:12px}
.me-entry{display:flex;align-items:center;gap:14px;width:100%;text-align:left;min-height:64px;
  padding:14px 18px;border-radius:20px;cursor:pointer;color:var(--ink);font:inherit;
  background:var(--glass-tint);border:1px solid var(--glass-edge);
  box-shadow:inset 0 1px 0 var(--glass-hi),inset 0 -1px 0 rgb(33 29 22/.04),0 1px 2px rgb(33 29 22/.05),0 14px 30px -16px rgb(33 29 22/.18);
  transition:transform 180ms var(--ease),background 180ms var(--ease)}
.me-entry:active{transform:scale(.985)}
.me-entry-ic{width:40px;height:40px;flex:none;border-radius:12px;display:inline-flex;align-items:center;justify-content:center;
  background:var(--glass-tint-strong);border:1px solid var(--glass-edge);
  box-shadow:inset 0 1px 0 var(--glass-hi);color:var(--brand)}
.me-entry-ic svg.ic{width:22px;height:22px}
.me-entry>.me-entry-t{flex:1;min-width:0}
.me-entry-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.me-entry-t{font-size:16.5px;font-weight:600}
.me-entry-sub{font-size:13.5px;color:var(--ink-2);line-height:1.55}
.me-entry-go{font-size:24px;color:var(--ink-3);flex:none;line-height:1;font-weight:400}

/* —— 表单控件：玻璃面（聚焦环沿全站品牌环） —— */
.key-form input,.tune input[type="number"],.media-ctl select,.media-ctl input{
  background:var(--glass-tint-strong);border:1px solid var(--glass-edge);
  box-shadow:inset 0 1px 0 var(--glass-hi),inset 0 -1px 0 rgb(33 29 22/.04)}
.switch{background:linear-gradient(180deg,rgb(255 255 255/.65),rgb(255 255 255/.32));border:1px solid var(--glass-edge);
  box-shadow:inset 0 1px 0 var(--glass-hi),inset 0 0 0 1px rgb(33 29 22/.03)}
.switch .knob{background:#ffffff}
.switch[aria-checked="true"]{background:linear-gradient(180deg,rgb(70 62 50/.88),rgb(33 29 22/.92));border-color:rgb(255 255 255/.25)}
[data-theme="dark"] .switch{background:rgb(255 255 255/.14);border-color:var(--glass-edge)}
[data-theme="dark"] .switch[aria-checked="true"]{background:linear-gradient(180deg,rgb(255 255 255/.28),rgb(255 255 255/.14))}
/* 分段/页签/筹码：玻璃键 + 选中实色玻璃片 */
.seg{background:var(--glass-tint);border:1px solid var(--glass-edge);box-shadow:inset 0 1px 0 var(--glass-hi)}
.panel-tabs .seg [role="tab"]{transition:transform 180ms var(--ease),background 180ms var(--ease)}
.panel-tabs .seg [role="tab"]:active{transform:scale(.96)}
.panel-tabs .seg [role="tab"][aria-selected="true"]{background:linear-gradient(180deg,rgb(255 255 255/.85),rgb(255 255 255/.55));
  box-shadow:inset 0 1px 0 rgb(255 255 255/.85),0 1px 3px rgb(33 29 22/.12)}
[data-theme="dark"] .panel-tabs .seg [role="tab"][aria-selected="true"]{background:var(--glass-tint-strong)}
.ptabs [role="tab"]{background:var(--glass-tint);border:1px solid var(--glass-edge);color:var(--ink-2);
  box-shadow:inset 0 1px 0 var(--glass-hi);transition:transform 180ms var(--ease),background 180ms var(--ease)}
.ptabs [role="tab"]:active{transform:scale(.96)}
.ptabs [role="tab"][aria-selected="true"]{background:linear-gradient(180deg,rgb(70 62 50/.9),rgb(33 29 22/.94));
  border-color:rgb(33 29 22/.4);color:#fff8ec;font-weight:600}
.chip{background:var(--glass-tint);border:1px solid var(--glass-edge);box-shadow:inset 0 1px 0 var(--glass-hi)}
.chip[aria-pressed="true"]{background:linear-gradient(180deg,rgb(70 62 50/.9),rgb(33 29 22/.94));
  border-color:rgb(33 29 22/.4);color:#fff8ec;
  box-shadow:inset 0 1px 0 rgb(255 255 255/.25)}
/* —— 聊天：顶栏玻璃铬层 / 展开区静默玻璃 / 会话与模型行键面化 —— */
.chat-top{background:var(--glass-tint);border-bottom:1px solid var(--glass-edge);
  backdrop-filter:blur(20px) saturate(1.8);-webkit-backdrop-filter:blur(20px) saturate(1.8)}
.model-capsule{position:relative;overflow:hidden;background:linear-gradient(180deg,rgb(255 255 255/.75),rgb(255 255 255/.42));
  border:1px solid rgb(255 255 255/.9);
  backdrop-filter:blur(16px) saturate(1.8);-webkit-backdrop-filter:blur(16px) saturate(1.8);
  box-shadow:inset 0 1px 0 rgb(255 255 255/.85),0 1px 3px rgb(33 29 22/.08),0 10px 22px -12px rgb(33 29 22/.25)}
.model-capsule::before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;
  background:linear-gradient(180deg,rgb(255 255 255/.5),rgb(255 255 255/.1) 45%,transparent 62%)}
[data-theme="dark"] .model-capsule{background:var(--glass-tint-strong);border-color:var(--glass-edge)}
.chat-panel{background:var(--glass-tint-strong);border-bottom:1px solid var(--glass-edge)}
.session-item{border:1px solid var(--glass-edge);background:var(--glass-tint);border-radius:16px;
  margin-bottom:8px;box-shadow:inset 0 1px 0 var(--glass-hi);
  transition:transform 180ms var(--ease),background 180ms var(--ease)}
.session-item:hover{background:var(--glass-tint-strong)}
.session-item:active{transform:scale(.985)}
.session-item[aria-current="true"]{background:var(--glass-tint-strong);border-color:rgb(33 29 22/.35)}
.pick{background:var(--glass-tint);border-color:var(--glass-edge);
  box-shadow:inset 0 1px 0 var(--glass-hi),0 1px 2px rgb(33 29 22/.05)}
.pick[aria-current="true"]{border-color:rgb(33 29 22/.4);background:var(--glass-tint-strong)}
.tune>button{display:flex;align-items:center;background:var(--glass-tint);border:1px solid var(--glass-edge);
  border-radius:14px;padding:6px 14px;min-height:48px;box-shadow:inset 0 1px 0 var(--glass-hi);
  transition:transform 180ms var(--ease)}
.tune>button:active{transform:scale(.985)}
.tune>button::after{content:"›";margin-left:auto;color:var(--ink-3);font-size:21px;line-height:1;
  transition:transform 200ms var(--spring)}
.tune.open>button::after{transform:rotate(90deg)}
/* —— 消息（2026-10-13 Muse 式收敛，覆盖本段旧玻璃气泡口径）：
 * 助手回复纯文本整宽、不套壳；用户消息中性浅色气泡（实色、非玻璃）。 —— */
.msg .plain{background:transparent;border:0;box-shadow:none;padding:0;border-radius:0}
.msg .bubble-user{background:var(--card-2);border:1px solid var(--line);box-shadow:none;border-radius:18px}
.think{background:var(--glass-tint);border-color:var(--glass-edge);box-shadow:inset 0 1px 0 var(--glass-hi)}
.think>button{transition:background 180ms var(--ease)}
.think>button:active{background:var(--glass-tint-strong)}
.file-chip{background:var(--glass-tint);border-color:var(--glass-edge);box-shadow:inset 0 1px 0 var(--glass-hi)}
.err-line{background:rgb(169 44 29/.08);border:1px solid rgb(169 44 29/.22);box-shadow:inset 0 1px 0 rgb(255 255 255/.5)}
.err-line .btn{background:linear-gradient(180deg,rgb(255 255 255/.8),rgb(255 255 255/.5))}
.msg-actions .btn{background:var(--glass-tint);border:1px solid var(--glass-edge);
  box-shadow:inset 0 1px 0 var(--glass-hi);color:var(--ink-2)}
.msg-actions .btn:hover{background:var(--glass-tint-strong)}
.codeblock .copy-code{background:var(--glass-tint-strong);border:1px solid var(--glass-edge);
  box-shadow:inset 0 1px 0 var(--glass-hi);transition:transform 180ms var(--ease)}
.codeblock .copy-code:active{transform:scale(.94)}
/* —— 输入坞：G2 玻璃 + 清玻璃发送钮 —— */
.composer-in{background:var(--glass-tint);border:1px solid var(--glass-edge);
  backdrop-filter:blur(18px) saturate(1.6);-webkit-backdrop-filter:blur(18px) saturate(1.6);
  box-shadow:inset 0 1px 0 var(--glass-hi),inset 0 -1px 0 rgb(33 29 22/.04),var(--glass-shadow)}
.send-btn{position:relative;overflow:hidden;color:var(--ink);
  background:linear-gradient(180deg,rgb(255 255 255/.82),rgb(255 255 255/.45));border:1px solid rgb(255 255 255/.92);
  backdrop-filter:blur(10px) saturate(1.5);-webkit-backdrop-filter:blur(10px) saturate(1.5);
  box-shadow:inset 0 1px 0 rgb(255 255 255/.6),inset 0 -1px 0 rgb(33 29 22/.05),0 6px 16px -8px rgb(33 29 22/.3)}
.send-btn::before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;
  background:linear-gradient(180deg,rgb(255 255 255/.5),rgb(255 255 255/.1) 45%,transparent 62%)}
.send-btn.stop{background:linear-gradient(180deg,rgb(70 62 50/.9),rgb(33 29 22/.92));border-color:rgb(255 255 255/.25);color:#fff8ec}
/* —— 账单行：整行键面 + 展开箭头；价格表源链接小键 —— */
.bill-row{border-top:0;background:var(--glass-tint);border:1px solid var(--glass-edge);border-radius:16px;
  padding:2px 14px;margin-bottom:10px;box-shadow:inset 0 1px 0 var(--glass-hi)}
.bill-row:first-child{border-top:1px solid var(--glass-edge)}
.bill-head{position:relative;padding-right:28px;border-radius:12px;transition:background 180ms var(--ease)}
.bill-head:active{background:var(--glass-tint-strong)}
.bill-head::after{content:"›";position:absolute;right:4px;top:50%;color:var(--ink-3);font-size:21px;line-height:1;
  transform:translateY(-50%);transition:transform 200ms var(--spring)}
.bill-head[aria-expanded="true"]::after{transform:translateY(-50%) rotate(90deg)}
.p-src{display:inline-block;padding:2px 9px;margin-left:6px;border:1px solid var(--glass-edge);border-radius:999px;
  background:var(--glass-tint-strong);box-shadow:inset 0 1px 0 var(--glass-hi);text-decoration:none;
  transition:transform 180ms var(--ease)}
.p-src:active{transform:scale(.95)}
/* —— 接入中心：Key 选择行键面化 —— */
.ac-key-row{background:var(--glass-tint);border-color:var(--glass-edge);
  box-shadow:inset 0 1px 0 var(--glass-hi);transition:transform 180ms var(--ease),border-color 180ms var(--ease)}
.ac-key-row:active{transform:scale(.99)}
.ac-key-row[aria-selected="true"]{border-color:rgb(33 29 22/.4);box-shadow:0 0 0 1px rgb(33 29 22/.4),inset 0 1px 0 var(--glass-hi)}
.ac-pre{background:var(--glass-tint);border-color:var(--glass-edge)}
.key-once{background:var(--glass-tint);border-color:rgb(154 106 18/.45);box-shadow:inset 0 1px 0 var(--glass-hi)}
/* —— 降级链：glass-lite 去 blur / 减透明度回实色 —— */
html.glass-lite .topbar,html.glass-lite .chat-top,html.glass-lite .bottomnav,
html.glass-lite .composer-in,html.glass-lite .btn,html.glass-lite .model-capsule,
html.glass-lite .send-btn,html.glass-lite .app-form .bottomnav::before,
html.glass-lite .to-bottom-btn{
  backdrop-filter:none;-webkit-backdrop-filter:none}
html.glass-lite .to-bottom-btn{background:var(--glass-tint-strong)}
html.glass-lite .topbar,html.glass-lite .chat-top,html.glass-lite .bottomnav,
html.glass-lite .composer-in{background:var(--glass-tint-strong)}
@media (prefers-reduced-transparency:reduce){
  .line-card,.feat-card,.route-card,.me-card,.ops-card,.task-card,.ex-card,.price-wrap,.ops-bar,
  .me-entry,.session-item,.pick,.think,.file-chip,.bill-row,.ac-key-row,.state-box{
    background:var(--card);border-color:var(--line-2);backdrop-filter:none;-webkit-backdrop-filter:none}
  .topbar,.chat-top,.bottomnav,.composer-in,.chat-panel{background:var(--card);backdrop-filter:none;-webkit-backdrop-filter:none}
  .btn,.icon-btn,.model-capsule,.to-bottom-btn{background:var(--card);backdrop-filter:none;-webkit-backdrop-filter:none}
  .btn.primary{background:var(--brand)}
  .send-btn{background:var(--brand);backdrop-filter:none;-webkit-backdrop-filter:none}
  .nav-pill{display:none}
  .bottomnav button[aria-selected="true"]{background:var(--glass-tint-strong)}
}
/* —— 客服工单（联系客服子页）：沿玻璃卡与键面语言，只做加法 —— */
.sup-field{display:block;margin:0 0 14px}
.sup-field>span{display:block;font-size:14px;color:var(--ink-2);font-weight:600;margin:0 2px 8px}
.sup-field input,.sup-field textarea{width:100%;border:1px solid var(--glass-edge);border-radius:14px;
  background:var(--glass-tint-strong);padding:12px 14px;font-size:15.5px;line-height:1.55;resize:vertical;
  box-shadow:inset 0 1px 0 var(--glass-hi)}
.sup-field textarea:focus,.sup-field input:focus{border-color:color-mix(in srgb,var(--ink) 45%,transparent);box-shadow:0 0 0 3.5px color-mix(in srgb,var(--ink) 14%,transparent)}
.sup-err{color:var(--err);font-size:14px;margin:0 2px 12px}
.sup-row{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:14px 16px;margin:0 0 10px;
  border-radius:16px;cursor:pointer;color:var(--ink);font:inherit;background:var(--glass-tint);
  border:1px solid var(--glass-edge);box-shadow:inset 0 1px 0 var(--glass-hi);
  transition:transform 180ms var(--ease),background 180ms var(--ease)}
.sup-row:active{transform:scale(.99)}
.sup-row-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.sup-row-subject{font-size:15.5px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sup-row-meta{font-size:13px;color:var(--ink-2)}
.sup-row-go{color:var(--ink-2);font-size:18px}
/* 未读小红点（客服回复未读）：工单列表行与「我的」客服入口共用。
 * 红色在此是功能信号（与控制台角标同口径），不是玻璃染色。 */
.unread-dot{flex:none;width:9px;height:9px;border-radius:50%;background:#e5484d}
#supResolvedBox{margin:0 2px 16px}
#supResolvedBox .btn{width:100%}
.sup-detail-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.sup-detail-head h3{margin:0}
.sup-msgs{display:flex;flex-direction:column;gap:14px;margin-bottom:18px}
.sup-msg{display:flex;flex-direction:column;max-width:88%}
.sup-msg.agent{align-self:flex-start;align-items:flex-start}
.sup-msg.mine{align-self:flex-end;align-items:flex-end}
.sup-bubble{padding:11px 14px;font-size:15px;line-height:1.6;overflow-wrap:anywhere;white-space:pre-wrap;
  border:1px solid var(--glass-edge);box-shadow:inset 0 1px 0 var(--glass-hi)}
/* 玻璃无色口径（2026-10-10 用户新令）：双方气泡都是清玻璃，只以
 * 玻璃浓淡（tint / tint-strong，均为无色）+ 对齐方向 + 署名区分，
 * 玻璃面不许染色；主行动钮在本页内覆盖为清玻璃，强调靠墨色与字重。 */
.sup-msg.agent .sup-bubble{background:var(--glass-tint);border-radius:16px 16px 16px 6px}
.sup-msg.mine .sup-bubble{background:var(--glass-tint-strong);border-radius:16px 16px 6px 16px}
#view-support .btn.primary{background:linear-gradient(180deg,rgb(255 255 255/.85),rgb(255 255 255/.5));
  border-color:rgb(255 255 255/.9);color:var(--ink);font-weight:700;
  box-shadow:inset 0 1px 0 rgb(255 255 255/.85),inset 0 -1px 0 rgb(33 29 22/.05),0 1px 3px rgb(33 29 22/.09),0 10px 22px -12px rgb(33 29 22/.3)}
[data-theme="dark"] #view-support .btn.primary{background:var(--glass-tint-strong);border-color:var(--glass-edge);color:var(--ink)}
.sup-msg-meta{font-size:12px;color:var(--ink-2);margin-top:4px}

/* ============ ClawAI 落地页（cx 前缀）：浅色默认，跟随全站 data-theme ============ */
html{background:#000}
body.cx{
  --cx-bg:#000; --cx-ink:#f2f2f2; --cx-ink2:rgba(255,255,255,.62); --cx-ink3:rgba(255,255,255,.45);
  --cx-panel:rgba(12,13,16,.74); --cx-panel2:rgba(12,13,16,.6); --cx-line:rgba(255,255,255,.11);
  --cx-head:rgba(0,0,0,.55); --cx-chip:rgba(10,11,14,.66);
  --cx-btn-bg:#fff; --cx-btn-ink:#0a0a0c; --cx-ghost-line:rgba(255,255,255,.35); --cx-ghost-bg:rgba(255,255,255,.06);
  --cx-accent:#8fe8f7; --cx-accent2:#37c8e8; --cx-shadow:0 30px 80px rgba(0,0,0,.6);
  --cx-input:rgba(255,255,255,.05); --cx-bubble-u:rgba(255,255,255,.1); --cx-bubble-b:rgba(255,255,255,.045);
  background:var(--cx-bg);color:var(--cx-ink);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;margin:0;-webkit-font-smoothing:antialiased;overflow-x:hidden}
body.cx *{box-sizing:border-box}
body.cx a{text-decoration:none}
.cx-head a:not(.cx-cta),.cx-foot a{color:inherit}
.cx-logo{color:var(--cx-ink)}
.cx-logo-img{width:31px;height:31px;border-radius:9px;object-fit:cover;flex:none;display:block}
body.cx button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
.cx-bg{position:fixed;inset:0;z-index:0;overflow:hidden;background:var(--cx-bg);pointer-events:none}
.cx-bg canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
.cx-shade{position:fixed;inset:0;z-index:1;pointer-events:none;background:linear-gradient(180deg,rgba(0,0,0,.46),rgba(0,0,0,.34) 40%,rgba(0,0,0,.46))}
.cx-shade::after{content:"";position:absolute;inset:0;background:radial-gradient(760px 400px at 50% -4%,rgba(56,182,217,.12),transparent 70%);animation:cxbreath 9s ease-in-out infinite alternate}
@keyframes cxbreath{from{opacity:.45}to{opacity:1}}
body.cx main,body.cx .cx-foot{position:relative;z-index:2}
/* header */
.cx-head{position:fixed;top:0;left:0;right:0;z-index:50;display:flex;align-items:center;gap:26px;padding:13px 26px;background:var(--cx-head);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--cx-line)}
.cx-logo{display:flex;align-items:center;gap:10px;font-weight:700;font-size:16.5px;white-space:nowrap}
.cx-logo-tile{width:31px;height:31px;border-radius:9px;background:#f2f2f2;color:#0a0a0c;display:grid;place-items:center;font-size:16px;font-weight:800;flex:none}
.cx-logo-sub{color:var(--cx-ink3);font-weight:600;font-size:13px}
.cx-nav{display:flex;gap:24px;margin-left:10px}
.cx-nav a{font-size:14px;color:var(--cx-ink2)}
.cx-nav a:hover{color:var(--cx-ink)}
.cx-head-r{margin-left:auto;display:flex;align-items:center;gap:14px}
.cx-lang{font-size:13px;color:var(--cx-ink2);border:1px solid var(--cx-line);border-radius:999px;padding:5px 12px}
.cx-login{font-size:14px;color:var(--cx-ink)}
.cx-cta{font-size:14px;font-weight:600;background:var(--cx-btn-bg);color:var(--cx-btn-ink);border-radius:999px;padding:8px 18px}
.cx-burger{display:none;color:var(--cx-ink);padding:4px}
.cx-mnav{display:none;position:absolute;top:100%;left:0;right:0;background:var(--cx-head);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);border-bottom:1px solid var(--cx-line);padding:10px 22px 16px;flex-direction:column}
.cx-mnav.open{display:flex}
.cx-mnav a{padding:11px 0;font-size:15.5px;border-bottom:1px solid var(--cx-line)}
.cx-mnav a:last-child{border-bottom:0}
/* hero */
.cx-hero{min-height:100svh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:120px 24px 60px;position:relative}
.cx-hero h1{margin:0;font-size:clamp(40px,7.2vw,76px);line-height:1.16;font-weight:800;letter-spacing:.01em}
.cx-hero h1 span{display:block}
.cx-shiny{background:linear-gradient(100deg,#37c8e8 15%,#a5f0fd 40%,#eafcff 50%,#37c8e8 68%);background-size:220% 100%;-webkit-background-clip:text;background-clip:text;filter:drop-shadow(0 0 16px rgba(94,209,235,.40))}
@keyframes cxshine{to{background-position:-220% 0}}
.cx-hero-copy{max-width:640px;margin:30px auto 0;font-size:17.5px;line-height:1.85;color:var(--cx-ink2)}
.cx-hero-btns{display:flex;gap:14px;margin-top:38px;flex-wrap:wrap;justify-content:center}
.cx-btn-w{display:inline-flex;align-items:center;gap:9px;background:var(--cx-btn-bg);color:var(--cx-btn-ink);font-weight:600;font-size:16.5px;border-radius:999px;padding:15px 38px;box-shadow:0 10px 30px rgba(0,0,0,.45)}
.cx-btn-g{display:inline-flex;align-items:center;gap:9px;background:var(--cx-ghost-bg);color:var(--cx-ink);font-weight:600;font-size:16.5px;border:1px solid var(--cx-ghost-line);border-radius:999px;padding:15px 38px;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.cx-stats{display:flex;flex-wrap:wrap;gap:8px;align-items:baseline;justify-content:center;margin-top:44px;font-size:14px;color:var(--cx-ink2)}
.cx-stats b{font-size:19px;color:var(--cx-ink);margin-right:5px}
.cx-stats i{font-style:normal}
.cx-dot{opacity:.4}
/* blocks */
.cx-block{max-width:1024px;margin:0 auto;padding:86px 24px 10px;text-align:center;position:relative}
.cx-h2{font-size:clamp(27px,4.4vw,38px);font-weight:800;margin:0 0 14px}
.cx-sub{color:var(--cx-ink2);font-size:16px;line-height:1.8;max-width:640px;margin:0 auto}
.cx-lead{font-size:17px;color:var(--cx-ink);margin:0 0 26px}
/* marquee */
.cx-mqwrap{padding-top:26px}
.cx-mq{overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent);mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent)}
.cx-mq-row{display:flex;gap:20px;width:max-content;padding:9px 0;animation:cxmq 46s linear infinite}
.cx-mq-row.rev{animation:cxmqr 52s linear infinite}
@keyframes cxmq{to{transform:translateX(-50%)}}
@keyframes cxmqr{from{transform:translateX(-50%)}to{transform:translateX(0)}}
.cx-chip{display:inline-flex;align-items:center;gap:10px;border:1px solid var(--cx-line);background:var(--cx-chip);border-radius:999px;padding:10px 18px;white-space:nowrap;box-shadow:0 2px 10px rgba(0,0,0,.25)}
.cx-chip-ic{width:19px;height:19px;border-radius:5px;object-fit:contain;flex:none}
.cx-chip b{font-size:15px;font-weight:650}
.cx-chip i{font-style:normal;font-size:12px;color:var(--cx-accent)}
.cx-mq-fallback a{color:var(--cx-accent);font-size:15px}
/* preview */
.cx-preview{margin:44px auto 0;max-width:1024px;background:var(--cx-panel);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);border:1px solid var(--cx-line);border-radius:24px;overflow:hidden;text-align:left;box-shadow:var(--cx-shadow)}
.cx-pv-top{display:flex;align-items:center;gap:12px;padding:13px 18px;border-bottom:1px solid var(--cx-line)}
.cx-pv-dots{display:inline-flex;gap:6px}
.cx-pv-dots i{width:10px;height:10px;border-radius:50%;background:var(--cx-line)}
.cx-pv-title{font-size:13.5px;color:var(--cx-ink2)}
.cx-pv-model{margin-left:auto;font-size:12px;color:var(--cx-accent);border:1px solid var(--cx-line);border-radius:999px;padding:3px 10px}
.cx-pv-body{display:grid;grid-template-columns:196px 1fr;min-height:330px}
.cx-pv-side{border-right:1px solid var(--cx-line);padding:14px 12px;display:flex;flex-direction:column;gap:5px}
.cx-pv-new{font-size:13.5px;font-weight:650;padding:8px 10px;border-radius:10px;background:var(--cx-bubble-u)}
.cx-pv-sess{font-size:13.5px;color:var(--cx-ink2);padding:8px 10px;border-radius:10px}
.cx-pv-sess.on{background:var(--cx-bubble-u);color:var(--cx-ink)}
.cx-pv-bal{margin-top:auto;border-top:1px solid var(--cx-line);padding-top:12px;font-size:12.5px;color:var(--cx-ink3);display:flex;justify-content:space-between}
.cx-pv-bal b{color:var(--cx-accent);font-weight:600}
.cx-pv-main{display:flex;flex-direction:column}
.cx-pv-msgs{flex:1;padding:20px;display:flex;flex-direction:column;gap:14px;overflow:hidden}
.cx-msg{max-width:78%;font-size:14.5px;line-height:1.7}
.cx-msg p{margin:0}
.cx-msg.user{align-self:flex-end;background:var(--cx-bubble-u);border-radius:16px 16px 4px 16px;padding:10px 14px}
.cx-msg.bot{align-self:flex-start;background:var(--cx-bubble-b);border:1px solid var(--cx-line);border-radius:16px 16px 16px 4px;padding:12px 14px}
.cx-pv-img{margin-top:10px;height:86px;border-radius:12px;background:linear-gradient(120deg,#173a44,#2b5a68 45%,#7a4a2b);display:grid;place-items:center;font-size:12.5px;color:rgba(255,255,255,.85)}
.cx-pv-hint{margin-top:10px;font-size:12.5px;color:var(--cx-ink3)}
.cx-pv-input{display:flex;gap:10px;padding:14px 16px;border-top:1px solid var(--cx-line)}
.cx-pv-input input{flex:1;background:var(--cx-input);border:1px solid var(--cx-line);border-radius:999px;padding:11px 18px;color:var(--cx-ink);font-size:14.5px;outline:none;min-width:0}
.cx-pv-input button{background:var(--cx-btn-bg);color:var(--cx-btn-ink);font-weight:600;border-radius:999px;padding:11px 22px;flex:none}
/* lines */
.cx-formula{font-size:19px;font-weight:700;margin:4px 0 30px}
.cx-formula-note{display:block;font-size:13px;font-weight:400;color:var(--cx-ink3);margin-top:8px}
.cx-lines{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;text-align:left}
.cx-line{border-radius:20px;padding:26px;background:var(--cx-panel);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid var(--cx-line)}
.cx-line.open{border-color:rgba(143,232,247,.45)}
.cx-line h3{margin:0;font-size:19px;display:flex;align-items:center;gap:10px}
.cx-line-tag{font-size:11.5px;font-weight:700;border-radius:999px;padding:3px 10px;background:rgba(11,126,166,.13);color:var(--cx-accent)}
.cx-line-tag.wait{background:var(--cx-bubble-u);color:var(--cx-ink3)}
.cx-line-price{font-size:34px;font-weight:800;margin:14px 0 8px}
.cx-line-price small{font-size:14px;color:var(--cx-ink3);font-weight:500}
.cx-line p{margin:0;font-size:14px;line-height:1.75;color:var(--cx-ink2)}
.cx-bill{margin-top:18px;text-align:left;border-radius:20px;padding:24px 26px;background:var(--cx-panel);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid var(--cx-line)}
.cx-bill-h{display:flex;justify-content:space-between;gap:12px;font-weight:700;font-size:15.5px;margin-bottom:12px;flex-wrap:wrap}
.cx-bill-date{color:var(--cx-ink3);font-weight:400;font-size:13px}
.cx-bill-row{display:flex;justify-content:space-between;gap:14px;padding:8px 0;border-bottom:1px dashed var(--cx-line);font-size:14.5px;color:var(--cx-ink2)}
.cx-bill-row.total{border-bottom:0;font-weight:800;color:var(--cx-ink);font-size:16.5px}
/* calculator */
.cx-calc{margin:40px auto 0;max-width:820px;text-align:left;border-radius:24px;padding:30px;background:var(--cx-panel);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid var(--cx-line)}
.cx-calc-model{display:block;margin-bottom:22px}
.cx-calc-model span{display:block;font-size:13px;color:var(--cx-ink3);margin-bottom:8px}
.cx-calc-model select{width:100%;background:var(--cx-input);border:1px solid var(--cx-line);color:var(--cx-ink);border-radius:12px;padding:12px 14px;font-size:15.5px;outline:none}
.cx-calc-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.cx-calc-grid label span{display:flex;justify-content:space-between;font-size:13px;color:var(--cx-ink3);margin-bottom:9px}
.cx-calc-grid label span i{font-style:normal}
.cx-calc-grid label span b{color:var(--cx-ink);font-size:14px}
.cx-calc-grid input[type=range]{width:100%;accent-color:var(--cx-accent2)}
.cx-calc-note{display:block;font-style:normal;font-size:12px;color:var(--cx-ink3);margin-top:6px}
.cx-calc-results{margin-top:24px;border-top:1px solid var(--cx-line);padding-top:8px}
.cx-calc-row{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:11px 0;border-bottom:1px dashed var(--cx-line)}
.cx-calc-row:last-child{border-bottom:0}
.cx-calc-row .nm{font-size:15px;font-weight:650;display:flex;gap:9px;align-items:center}
.cx-calc-row .pr{font-size:20px;font-weight:800}
.cx-calc-row .pr small{font-size:12px;color:var(--cx-ink3);font-weight:400}
.cx-calc-fine{font-size:12.5px;color:var(--cx-ink3);line-height:1.7;margin:14px 0 0}
.cx-nodata{color:var(--cx-ink2);font-size:14.5px;line-height:1.8;max-width:560px;margin:26px auto 0}
/* trust cards */
.cx-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:42px;text-align:left}
.cx-card{border-radius:20px;padding:26px;background:var(--cx-panel);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid var(--cx-line)}
.cx-card h3{margin:0 0 10px;font-size:17.5px}
.cx-card p{margin:0;font-size:14.5px;line-height:1.8;color:var(--cx-ink2)}
/* steps */
.cx-steps{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-top:42px;text-align:left}
.cx-step{border-radius:20px;padding:24px;background:var(--cx-panel);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid var(--cx-line)}
.cx-step b{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:rgba(11,126,166,.12);color:var(--cx-accent);font-size:15px;margin-bottom:14px}
.cx-step h3{margin:0 0 9px;font-size:16.5px}
.cx-step p{margin:0;font-size:14px;line-height:1.75;color:var(--cx-ink2)}
.cx-pwa{margin-top:18px;text-align:left;border-radius:20px;padding:26px;background:var(--cx-panel);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid var(--cx-line)}
.cx-pwa h3{margin:0 0 8px;font-size:17.5px}
.cx-pwa>p{margin:0 0 16px;font-size:14.5px;color:var(--cx-ink2);line-height:1.75}
.cx-pwa-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.cx-pwa-grid div{background:var(--cx-bubble-b);border-radius:14px;padding:14px 16px;font-size:14px;line-height:1.7;color:var(--cx-ink2)}
.cx-pwa-grid b{display:block;color:var(--cx-ink);margin-bottom:4px}
/* faq */
.cx-faq{max-width:760px;margin:38px auto 0;text-align:left}
.cx-faq-item{border:1px solid var(--cx-line);border-radius:16px;margin-bottom:12px;background:var(--cx-panel2);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);overflow:hidden}
.cx-faq-q{width:100%;display:flex;justify-content:space-between;align-items:center;gap:14px;padding:17px 20px;font-size:15.5px;font-weight:650;text-align:left;color:var(--cx-ink)}
.cx-faq-q i{font-style:normal;color:var(--cx-accent);font-size:19px;flex:none;transition:transform .25s}
.cx-faq-item.open .cx-faq-q i{transform:rotate(45deg)}
.cx-faq-a{display:none;padding:0 20px 18px;font-size:14.5px;line-height:1.85;color:var(--cx-ink2)}
.cx-faq-item.open .cx-faq-a{display:block}
/* cta + footer */
.cx-cta-band{text-align:center;padding:110px 24px 90px;position:relative}
.cx-cta-band h2{font-size:clamp(28px,4.6vw,40px);font-weight:800;margin:0 0 12px}
.cx-cta-band p{color:var(--cx-ink2);margin:0 0 30px;font-size:16px}
.cx-foot{border-top:1px solid var(--cx-line);background:var(--cx-head);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);padding:30px 0 44px;position:relative}
.cx-foot-in{max-width:1024px;margin:0 auto;padding:0 24px;display:flex;justify-content:space-between;gap:18px;flex-wrap:wrap;font-size:13.5px;color:var(--cx-ink3)}
.cx-foot nav{display:flex;gap:20px}
.cx-foot nav a:hover{color:var(--cx-ink)}
/* responsive */
@media(max-width:900px){.cx-lines,.cx-cards{grid-template-columns:1fr 1fr}.cx-steps{grid-template-columns:1fr 1fr}.cx-calc-grid{grid-template-columns:1fr}}
@media(max-width:640px){
  .cx-head{padding:11px 16px;gap:14px}
  .cx-nav{display:none}
  .cx-burger{display:block}
  .cx-login{display:none}
  .cx-cta{padding:7px 14px;font-size:13.5px}
  .cx-logo-sub{display:none}
  .cx-hero{padding:104px 18px 44px}
  .cx-hero-copy{font-size:16.5px}
  .cx-btn-w,.cx-btn-g{padding:14px 28px;font-size:15.5px}
  .cx-pv-body{grid-template-columns:1fr}
  .cx-pv-side{display:none}
  .cx-msg{max-width:92%}
  .cx-lines,.cx-cards,.cx-steps,.cx-pwa-grid{grid-template-columns:1fr}
  .cx-block{padding:64px 16px 6px}
}
@media(prefers-reduced-motion:reduce){.cx-shiny,.cx-mq-row,.cx-ag-row,.cx-shade::after{animation:none}}

/* agent marquee (big icons) */
.cx-agsec{padding:96px 0 6px;text-align:center;position:relative}
.cx-ag-lead{font-size:17px;color:var(--cx-ink);margin:0;padding:0 24px}
.cx-ag-sub{font-size:13.5px;color:var(--cx-ink3);margin:10px 0 0;padding:0 24px}
.cx-ag{margin-top:46px;display:flex;flex-direction:column;gap:44px;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent,#000 10%,#000 90%,transparent);mask-image:linear-gradient(90deg,transparent,#000 10%,#000 90%,transparent)}
.cx-ag-row{display:flex;width:max-content;animation:cxmq 40s linear infinite}
.cx-ag-row.rev{animation:cxmqr 48s linear infinite}
.cx-ag-item{display:flex;align-items:center;gap:17px;padding-right:66px;flex:none}
.cx-ag-ic{width:52px;height:52px;border-radius:13px;object-fit:contain;flex:none}
.cx-ag-ic.cover{object-fit:cover}
.cx-ag-name{font-size:23px;font-weight:500;color:rgba(255,255,255,.85);white-space:nowrap;letter-spacing:-.01em}
@media(max-width:640px){.cx-agsec{padding-top:70px}.cx-ag{gap:36px;margin-top:36px}.cx-ag-ic{width:44px;height:44px}.cx-ag-name{font-size:20px}.cx-ag-item{padding-right:52px;gap:14px}}

/* ===== Wave 1：余额与用量（真数据）+ 安全中心 ===== */
.bal-amount{font-size:34px;font-weight:700;letter-spacing:-.01em;margin:2px 0 6px}
.led-row{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding:13px 0;border-top:1px solid var(--line)}
.led-row:first-child{border-top:0;padding-top:2px}
.led-main{display:flex;flex-direction:column;gap:3px;min-width:0}
.led-type{font-size:15px;font-weight:600}
.led-meta{font-size:12.5px;color:var(--ink-2)}
.led-amt{font-size:15.5px;font-weight:600;white-space:nowrap}
.led-amt.pos{color:var(--ok)}
.sec-sub{font-size:15px;font-weight:700;margin:22px 0 10px}
.sec-sub:first-of-type{margin-top:4px}
.sec-msg{border-radius:var(--r-input);padding:11px 13px;margin:0 0 14px;font-size:14px;border:1px solid}
.sec-msg.err{border-color:var(--err);color:var(--err);background:var(--card)}
.sec-msg.ok{border-color:var(--ok);color:var(--ok);background:var(--card)}

/* ===== 安全中心弹层（Wave 2：两步验证 / sudo 确认）===== */
.sec-modal-back{position:fixed;inset:0;z-index:90;background:rgba(23,20,16,.45);display:flex;align-items:center;justify-content:center;padding:18px}
.sec-modal-back[hidden]{display:none}
.sec-modal-back2{z-index:96}
.sec-modal{background:var(--paper);color:var(--ink);border:1px solid var(--line-2);border-radius:18px;width:100%;max-width:400px;max-height:86vh;max-height:86dvh;overflow:auto;padding:20px;box-shadow:0 18px 50px rgba(23,20,16,.28)}
.sec-modal h3{margin:0 0 10px;font-size:17px;font-weight:700}
.sec-modal .sub{margin:0 0 12px}
.sec-modal canvas{display:block;margin:12px auto;background:#fff;border-radius:8px;max-width:100%;height:auto}
.sec-secret{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:14px;letter-spacing:.05em;word-break:break-all;background:var(--card-2);border:1px solid var(--line-2);border-radius:10px;padding:10px 12px;text-align:center;margin:0 0 12px}
.sec-codes{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0}
.sec-codes code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:14px;letter-spacing:.04em;background:var(--card-2);border:1px solid var(--line-2);border-radius:10px;padding:9px 6px;text-align:center}
.sec-btnrow{display:flex;gap:10px;flex-wrap:wrap;margin-top:12px}
.sec-modal .sec-btnrow{justify-content:flex-end}
.sec-modal .sec-msg{margin-top:12px}

/* ===== Wave 4：充值区（XorPay + USDT，topup.js 动态渲染） ===== */
.tp-check{border:1px solid var(--line-2);border-radius:var(--r-input);padding:12px 14px;margin:0 0 14px;background:var(--card-2)}
.tp-check-row{display:flex;align-items:baseline;gap:10px}
.tp-check-label{font-size:13px;color:var(--ink-2)}
.tp-brand{font-size:22px;font-weight:800;letter-spacing:.01em}
.tp-check-note{font-size:13.5px;color:var(--ink-2);margin:8px 0 0;line-height:1.6}
.tp-check-cs{font-size:13px;margin:6px 0 0}
.tp-chips{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 10px}
.tp-chip{border:1px solid var(--line-2);background:var(--card);border-radius:999px;padding:7px 16px;font-size:14.5px;cursor:pointer}
.tp-chip.is-on{border-color:var(--ink);font-weight:700}
.tp-amtrow{display:flex;gap:10px;flex-wrap:wrap;margin:0 0 12px}
.tp-amtrow input{flex:1;min-width:150px}
.tp-methods{display:flex;gap:8px;margin:0 0 14px}
.tp-method{border:1px solid var(--line-2);background:var(--card);border-radius:var(--r-input);padding:9px 18px;font-size:14.5px;cursor:pointer}
.tp-method.is-on{border-color:var(--ink);font-weight:700}
.tp-pay{width:100%}
.tp-payarea{margin-top:14px}
.tp-cashier{display:block;text-align:center}
.tp-qrbox{display:flex;justify-content:center;margin:10px 0}
.tp-qrbox canvas{background:#fff;border-radius:8px;max-width:100%;height:auto}
.tp-status{font-size:14.5px;font-weight:600;margin:10px 0 0}
.tp-err{color:var(--err);font-size:14px;margin:8px 0 0}
.tp-addr{font-size:16.5px;word-break:break-all;line-height:1.55;border:1px solid var(--line-2);border-radius:var(--r-input);padding:11px 13px;background:var(--card-2)}
.tp-addr strong{font-weight:800}
.tp-addrrow{margin:10px 0 0}
.tp-warn{color:var(--err);font-size:14px;font-weight:600;line-height:1.6;margin:10px 0}
.tp-intent{border-top:1px solid var(--line);padding-top:12px;margin-top:4px}
.tp-due{display:flex;align-items:baseline;justify-content:space-between;gap:12px}
.tp-due strong{font-size:24px}
.tp-claim{border-top:1px solid var(--line);padding-top:14px;margin-top:16px}
.tp-claim h4,.tp-card h4{font-size:15px;margin:16px 0 8px}
.tp-claimmsg{font-size:14px;margin:6px 0 0}
.tp-soon-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 0;border-top:1px solid var(--line);font-size:15px}
.tp-soon-row:first-of-type{padding-top:2px;border-top:none}
.tp-soon-tag{font-size:12.5px;color:var(--ink-2);border:1px solid var(--line-2);background:var(--card-2);border-radius:999px;padding:3px 10px;white-space:nowrap}

/* ===== 法务文档页（/privacy、/terms）：纯白纸底 + 无色清玻璃结构层 + 品牌橙小面积实色点缀 ===== */
.doc-wrap{max-width:860px;margin:0 auto;padding:18px 16px 40px}
.doc-top{display:flex;align-items:center;justify-content:space-between;gap:14px;border-radius:999px;padding:10px 10px 10px 20px;margin-bottom:16px}
.doc-brand{font-size:19px;font-weight:800;letter-spacing:.01em;color:var(--ink);text-decoration:none}
.doc-brand b{color:var(--brand)}
.doc-brand span{font-size:13px;font-weight:600;color:var(--ink-2);margin-left:4px}
.doc-nav{display:flex;gap:4px}
.doc-nav a{font-size:14px;color:var(--ink-2);text-decoration:none;padding:7px 12px;border-radius:999px}
.doc-nav a:hover{color:var(--ink);background:var(--card-2)}
.doc-card{border-radius:22px;padding:34px 38px}
.doc-article h1{font-size:30px;line-height:1.25;font-weight:800;letter-spacing:-.01em;margin:0 0 6px;color:var(--ink)}
.doc-article h2{font-size:19px;line-height:1.4;font-weight:700;margin:28px 0 8px;color:var(--ink)}
.doc-article p,.doc-article li{font-size:15.5px;line-height:1.75;color:var(--ink)}
.doc-article ul{margin:6px 0 6px;padding-left:22px}
.doc-article li{margin:5px 0}
.doc-article a{color:var(--brand);text-decoration:none}
.doc-article a:hover{text-decoration:underline}
.doc-meta{font-size:13.5px;color:var(--ink-2);margin:0 0 8px}
.doc-hr{border:none;border-top:1px solid var(--line-2);margin:40px 0 30px}
.doc-foot{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:18px;padding:0 6px;font-size:13px;color:var(--ink-3)}
.doc-foot a{color:var(--ink-2);text-decoration:none}
.doc-foot a:hover{color:var(--brand)}
@media (max-width:640px){.doc-card{padding:24px 20px}.doc-article h1{font-size:25px}}

/* ===== 聊天第 3 波：双模型对比 / 历史摘要 =====
 * 只用既有令牌（--line/--card-2/--ink-*），零新颜色、零渐变。
 * 对比双栏：桌面左右并排，窄屏（≤760px，与既有断点一致）上下堆叠。 */
.compare-confirm{display:flex;flex-wrap:wrap;align-items:center;gap:10px;border:1px solid var(--line);
  background:var(--card-2);border-radius:12px;padding:10px 14px;font-size:14px;margin:0 0 8px}
.compare-confirm .btn{min-height:36px;background:var(--card)}
.compare-row{display:grid;grid-template-columns:1fr 1fr;gap:12px;align-items:start}
.compare-row .msg{min-width:0}
@media (max-width:760px){.compare-row{grid-template-columns:1fr}}
.cmp-head{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:6px}
.cmp-model{font-weight:600;font-size:13px;color:var(--ink)}
.cm-cmp{font-size:12.5px;color:var(--ink-2);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sum-badge-row{margin-bottom:6px}
.summary-block{border:1px solid var(--line);border-radius:14px;padding:12px 14px;background:var(--card-2)}
.sum-head{margin-bottom:8px}

/* ===== 自动更新完成提示（auto-update.js）：整页重载更新后出一次的轻 toast。
 * 只用既有令牌（--paper/--ink/--line-2），无色玻璃面、无新颜色、无渐变。 */
.au-toast{position:fixed;left:50%;bottom:calc(24px + env(safe-area-inset-bottom));z-index:90;
  transform:translate(-50%,12px);background:var(--paper);color:var(--ink);
  border:1px solid var(--line-2);border-radius:999px;padding:10px 18px;font-size:14px;
  box-shadow:0 8px 28px rgba(33,29,22,.14);opacity:0;pointer-events:none;
  transition:opacity .3s ease,transform .3s ease;max-width:calc(100vw - 48px);text-align:center}
.au-toast.show{opacity:1;transform:translate(-50%,0)}
@media (prefers-reduced-motion:reduce){.au-toast{transition:none}}

/* ================= Muse 式外壳（2026-10-13 机主终版） =================
 * 底栏浮动胶囊 tab（三段图标）/ 聊天会话抽屉 / Muse 式输入盒 /
 * 聊天顶栏极简 / 消息流降噪 / 空状态居中。本节在文件末尾，同名规则
 * 以本节为准。玻璃一律无色清玻璃；选中态靠滑块与墨色，不靠染色。 */

/* —— 底栏：悬浮圆角胶囊（脱离底边、左右留白），网站/APP 两形态一致 —— */
.bottomnav,.app-form .bottomnav{
  margin:2px 12px calc(10px + env(safe-area-inset-bottom));
  height:60px;padding:5px;
  border:1px solid var(--glass-edge);border-radius:999px;
  background:var(--glass-tint);
  backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-sat));
  -webkit-backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-sat));
  box-shadow:var(--glass-shadow),inset 0 1px 0 var(--glass-hi);
  touch-action:none; /* 横拖手势整段归滑块，不让滚动链抢走 */
}
.app-form .bottomnav::before{display:none} /* 轨道即胶囊本体，旧 ::before 轨道退场 */
.bottomnav button{flex-direction:row;gap:0;min-height:0;border-radius:999px;font-size:0;color:var(--ink-2)}
.app-form .bottomnav button{min-height:0}
.app-form .bottomnav button[aria-selected="true"]{color:var(--ink);background:transparent;box-shadow:none}
/* 胶囊为 body 直属持久栏：聊天页也在（壳隐藏时它就是切段入口）；
 * 聊天页输入区不再自带安全区下边距（胶囊的 margin 已含），桌面宽屏
 * 壳内走顶栏、聊天页仍保留胶囊可达。 */
body.in-chat .composer{padding-bottom:12px}
@media (min-width:900px){body.in-chat .bottomnav{display:flex}}
.bottomnav button svg.ic{width:24px;height:24px}
.bottomnav button[aria-selected="true"]{color:var(--ink);background:transparent;box-shadow:none;font-weight:400}
.bottomnav button.lit{color:var(--ink)} /* 拖拽划过段点亮（app.js 打 .lit） */
.nav-pill.drag{transition:none} /* 跟手/滑入期间关过渡，JS 弹簧逐帧驱动 */
.nav-pill.drag{box-shadow:inset 0 1px 0 rgb(255 255 255/.95),inset 0 -1px 0 rgb(33 29 22/.04),0 2px 6px rgb(33 29 22/.10),0 22px 38px -12px rgb(33 29 22/.35)}
.bottomnav button svg.ic{will-change:transform} /* 透镜放大镜效应逐帧写 svg transform */

/* —— 顶栏导航：图标 + 文字（桌面），选中态与底栏同口径（墨字+浅片） —— */
.topnav button{display:inline-flex;align-items:center;gap:7px}

/* —— 聊天顶栏极简：中间只是当前模型名纯展示标签（不可点、无按压感；
 * 切换模型去模型页） —— */
.model-capsule{border-color:transparent;background:transparent;box-shadow:none;cursor:default}
.model-capsule:active{transform:none}
.model-capsule #capsuleTag{display:none}

/* —— 会话分组头（抽屉列表：今天/昨天/更早，照 Muse 会话列表） —— */
.session-group{font-size:12.5px;font-weight:700;color:var(--ink-3);letter-spacing:.04em;padding:14px 6px 6px}
.session-group:first-child{padding-top:2px}

/* —— 会话抽屉：左侧滑入 + 遮罩（清玻璃面，全端一致） —— */
.chat-drawer-back{position:absolute;inset:0;z-index:8;background:rgb(33 29 22/.30);
  opacity:0;transition:opacity 260ms var(--ease)}
.chat-drawer-back.open{opacity:1}
.chat-drawer{position:absolute;top:0;left:0;bottom:0;z-index:9;width:min(324px,85vw);
  display:flex;flex-direction:column;background:var(--glass-tint-strong);
  border-right:1px solid var(--glass-edge);
  backdrop-filter:blur(24px) saturate(1.6);-webkit-backdrop-filter:blur(24px) saturate(1.6);
  box-shadow:0 0 44px rgb(33 29 22/.18);
  transform:translateX(-103%);transition:transform 300ms var(--spring)}
.chat-drawer.open{transform:none}
.drawer-head{flex:none;display:flex;align-items:center;gap:8px;
  padding:12px 8px 12px 18px;border-bottom:1px solid var(--glass-edge)}
.drawer-title{flex:1;font-size:17px;font-weight:700}
.drawer-body{flex:1;min-height:0;overflow-y:auto;
  padding:14px 14px calc(16px + env(safe-area-inset-bottom))}
.drawer-body .btn.block{width:100%;margin-bottom:10px}

/* —— Muse 式输入盒：大圆角 24px、输入整宽、底部行左 + 右圆发送钮 —— */
.composer-in{border-radius:24px;padding:10px 10px 8px}
.composer-in textarea{display:block;width:100%;border:0;background:transparent;resize:none;
  min-height:30px;max-height:150px;padding:5px 8px 3px;
  font-size:17px;line-height:1.5;color:var(--ink)}
.composer-in textarea::placeholder{color:var(--ink-3)}
.composer-row{display:flex;align-items:center;gap:6px}
.composer-row .grow{flex:1}
/* 机主 2026-10-13 口径：输入盒里「+」不带方框，就是一个裸 + 号（照 Muse App）。 */
.composer-row .icon-btn{border:0;background:transparent;box-shadow:none}
.composer-row .icon-btn:hover{background:transparent}

/* —— 聊天加强波（2026-10-14）：联网开关胶囊 + 语音输入录音态 ——
 * 联网钮是带文字的胶囊（与裸图标钮区分：它是开关不是动作）；
 * 未点亮（hidden）时不占位。开启态用品牌色实心，与 .switch 同口径。
 * 语音钮录音中变品牌色并呼吸，提示「正在听」。 */
.websearch-btn{display:inline-flex;align-items:center;gap:5px;flex:none;
  min-height:40px;padding:0 12px;border:1px solid var(--glass-edge);border-radius:999px;
  background:var(--glass-tint);color:var(--ink-2);font-size:13.5px;cursor:pointer}
.websearch-btn[hidden]{display:none}
.websearch-btn[aria-pressed="true"]{background:var(--brand);border-color:transparent;color:var(--brand-ink)}
/* —— 深度研究（C3）：任务卡（进行中）+ 收据行（终态） —— */
.research-card{border:1px solid var(--glass-edge);background:var(--glass-tint);border-radius:14px;padding:12px 14px}
.research-head{display:flex;align-items:center;gap:8px}
.research-title{font-weight:600}
.research-status{margin-left:auto;color:var(--ink-2);font-size:13px}
.research-steps{margin:10px 0 6px;padding-left:18px;color:var(--ink-2);font-size:13.5px;line-height:1.65}
.research-progress{color:var(--ink-2);font-size:13px}
.research-actions{margin-top:8px}
.research-receipt{margin-top:6px;color:var(--ink-2);font-size:12.5px}
.research-capped{font-weight:600}
#voiceBtn.recording{color:var(--brand);animation:voicePulse 1.4s ease-in-out infinite}
@keyframes voicePulse{0%,100%{opacity:1}50%{opacity:.45}}
.msg-actions .btn.speaking{color:var(--brand)}
/* 赞/踩（加强批 S2）：未选态随动作行低对比口径；已选态用品牌实色
 * + 加粗作小点缀（玻璃面本身不染色，与 .speaking 同口径）。踩因
 * chips 行贴在操作行下方，玻璃小钮横排可换行。 */
.msg-actions .btn.fb-on{color:var(--brand);font-weight:600}
.fb-reasons{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-top:6px}
.fb-reason-label{font-size:12.5px;color:var(--ink-2)}
.fb-reasons .fb-chip{min-height:32px;padding:0 10px;font-size:12.5px}

/* —— 模型与设置：小窗（机主 2026-10-13 晚澄清：不要整页，做成小窗
 * 照 GPT）：body 层浮窗卡 + 遮罩，浮在聊天之上、点遮罩或 ✕ 关闭；
 * 内部独立滚动。曾短暂做过整页（同日），按澄清回改为小窗。 —— */
.picker-bk{position:fixed;inset:0;z-index:59;background:rgb(33 29 22/.28)}
.chat-panel{position:fixed;left:12px;right:12px;
  bottom:calc(90px + env(safe-area-inset-bottom));z-index:60;
  max-width:430px;margin:0 auto;max-height:66dvh;
  background:var(--paper);border:1px solid var(--line-2);border-radius:22px;
  box-shadow:var(--shadow);display:flex;flex-direction:column;overflow:hidden;
  animation:popIn 180ms var(--ease)}
.chat-panel .panel-tabs{flex:none;padding:12px 14px 10px;
  border-bottom:1px solid var(--line-2)}
.chat-panel .panel-tabs .seg [role="tab"]{pointer-events:none;background:transparent;
  box-shadow:none;font-size:17px;font-weight:700;color:var(--ink);padding:0 4px}
.chat-panel .panel-pane{flex:1;overflow-y:auto;min-height:0;padding:14px 14px 16px}

/* —— 细调：小卡片展示调节（机主 2026-10-13 令，照 ChatGPT 参数卡放法）：
 * 一张小卡、标题一行、三行紧凑调节常显，不再折叠展开。 —— */
.tune{border:1px solid var(--line-2);border-radius:18px;background:var(--card);
  margin-top:16px;padding:6px 16px 10px;box-shadow:0 1px 3px rgb(33 29 22/.05)}
.tune>button{pointer-events:none;background:transparent;border:0;box-shadow:none;
  min-height:44px;font-size:15px;font-weight:700;color:var(--ink);padding:6px 0 2px}
.tune>button::after{content:none}
.tune-body{display:block;padding:2px 0 4px}
.tune .row{margin-bottom:12px}
.tune .row:last-child{margin-bottom:4px}
.tune label{font-size:13.5px;margin-bottom:6px}
.tune input[type="number"]{min-height:42px}
.tune .row + .row{border-top:1px solid var(--line-2);padding-top:12px}

/* —— 设置小窗美化（机主 2026-10-13 令）：毛玻璃头 + 统一卡片 + 开关行 —— */
.chat-panel .panel-tabs{
  background:color-mix(in srgb, var(--paper) 84%, transparent);
  backdrop-filter:blur(14px) saturate(1.4);-webkit-backdrop-filter:blur(14px) saturate(1.4)}
.chat-panel .panel-pane>*{margin-top:14px}
.chat-panel .panel-pane>*:first-child{margin-top:2px}
#compareBox,#mediaCtlWrap{border:1px solid var(--line-2);border-radius:18px;
  background:var(--card);padding:14px 16px;box-shadow:0 1px 3px rgb(33 29 22/.05)}
#compareBox .cmp-row{display:flex;align-items:center;gap:14px}
#compareBox .cmp-text{flex:1;min-width:0}
#compareBox .card-t{font-size:15px;font-weight:700;color:var(--ink);margin:0 0 4px}
#compareBox .hint{margin:0;font-size:13px;line-height:1.55}
#mediaCtlWrap .grp{font-size:15px;font-weight:700;color:var(--ink);margin:0 2px 10px}
#compareToggle{position:relative;width:52px;height:32px;flex:none;padding:0;font-size:0;
  border-radius:999px;border:1px solid var(--glass-edge);background:var(--card-2);
  transition:background 200ms var(--ease)}
#compareToggle::after{content:"";position:absolute;top:2px;left:2px;width:26px;height:26px;
  border-radius:50%;background:#fff;box-shadow:0 1px 3px rgb(33 29 22/.28);
  transition:left 200ms var(--ease)}
#compareBox[data-on="1"] #compareToggle{background:var(--ink);border-color:var(--ink)}
#compareBox[data-on="1"] #compareToggle::after{left:22px}

/* 小窗入场动画（设置小窗用） */
@keyframes popIn{from{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}


/* —— 消息流降噪：行距放宽；收据/动作行小字低对比、贴消息下方 —— */
.msg{margin-bottom:32px}
.msg .plain{line-height:1.75}
.msg-actions .btn{background:transparent;border-color:transparent;box-shadow:none;color:var(--ink-3)}
.msg-actions .btn:hover{background:var(--card-2);color:var(--ink-2)}
.receipt-toggle{color:var(--ink-3)}

/* —— 空会话（Muse 新对话页式）：品牌标居中 + 问候 + 示例提问列居中 —— */
.empty-state{text-align:center;padding:9dvh 4px 0}
.empty-mark{display:block;width:72px;height:72px;border-radius:20px;margin:0 auto 18px;box-shadow:var(--shadow)}
.empty-state .sub{margin-bottom:28px}
.ex-grid{max-width:460px;margin:0 auto;text-align:left}

/* ===== 公告（波 6）：聊天条 + 公告 sheet =====
   公告条：in-flow 细条无色清玻璃，占布局高度把消息区下推、不浮盖；
   hidden 时整块不占位（零公告页面与现状一致）。sheet：底部贴底，
   内容区独立纵向滚动（单条长正文滑读完、多条滑到最后一条），
   overscroll-behavior 隔离不穿透背景，滑到底留净距。 */
.ann-bar{flex:none;display:flex;align-items:center;gap:6px;margin:8px 12px 0;padding:7px 7px 7px 14px;border-radius:14px;
  background:var(--glass-tint);border:1px solid var(--glass-edge);
  -webkit-backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-sat));backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-sat));
  box-shadow:inset 0 1px 0 var(--glass-hi)}
.ann-bar[hidden]{display:none}
.ann-bar-main{flex:1;min-width:0;background:none;border:0;padding:4px 0;text-align:left;cursor:pointer;color:var(--ink);font:inherit}
.ann-bar-title{display:block;font-size:14.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ann-bar-close{flex:none;width:30px;height:30px}
.ann-sheet-back{position:fixed;inset:0;z-index:92;background:rgba(23,20,16,.45);display:flex;align-items:flex-end;justify-content:center}
.ann-sheet-back[hidden]{display:none}
.ann-sheet{width:100%;max-width:560px;max-height:82vh;max-height:82dvh;display:flex;flex-direction:column;
  background:var(--glass-tint-strong);border:1px solid var(--glass-edge);border-bottom:0;border-radius:22px 22px 0 0;
  -webkit-backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-sat));backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-sat));
  box-shadow:inset 0 1px 0 var(--glass-hi),0 -12px 40px rgba(23,20,16,.22)}
.ann-sheet-head{flex:none;display:flex;align-items:center;justify-content:space-between;padding:16px 18px 8px}
.ann-sheet-title{font-size:16.5px;font-weight:700}
.ann-sheet-body{overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;
  padding:6px 18px calc(20px + env(safe-area-inset-bottom,0px));display:flex;flex-direction:column;gap:20px}
.ann-item-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ann-item-title{font-weight:700;font-size:15.5px;overflow-wrap:anywhere}
.ann-item-time{color:var(--ink-2);font-size:12.5px;margin:4px 0 7px}
.ann-item-body{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.65;font-size:14.5px}
/* 通知中心（加强批）：收件箱列表 + 偏好开关行。卡面守无色玻璃，
 * 未读只靠小圆点与标题字重区分，不给卡片染色。 */
.ntf-actions{display:flex;justify-content:flex-end;margin:2px 0 10px}
.ntf-list{display:flex;flex-direction:column;gap:10px}
.ntf-item{text-align:left;width:100%;cursor:pointer}
.ntf-item .ann-item-title{font-weight:600}
.ntf-item.unread .ann-item-title{font-weight:800}
.ntf-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--brand,#b34a12);flex:none}
.ntf-type{display:flex;flex-direction:column;gap:2px;min-width:0}
.ntf-desc{color:var(--ink-2);font-size:12.5px;line-height:1.5}
.ntf-chans{display:flex;gap:14px;flex:none}
.ntf-chan{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--ink-2)}
.switch.ntf-locked{opacity:.45}
html.glass-lite .ann-bar,html.glass-lite .ann-sheet{backdrop-filter:none;-webkit-backdrop-filter:none;background:var(--glass-tint-strong)}
@media (prefers-reduced-transparency:reduce){
  .ann-bar,.ann-sheet{background:var(--card);backdrop-filter:none;-webkit-backdrop-filter:none}
}

/* ---------- 顶配第二波·数据面（A3/A5/A8/A13，2026-10-14） ---------- */
/* A3 版本翻页行：小字 ‹ n/m ›，与操作行同色系，不抢正文 */
.ver-nav{display:flex;align-items:center;gap:6px;margin-top:6px}
.ver-nav .btn{min-height:32px;padding:0 10px;font-size:13px;border-color:transparent;background:transparent;color:var(--ink-2)}
.ver-nav .btn:hover{background:var(--card-2)}
.ver-label{font-size:12.5px;color:var(--ink-2);min-width:34px;text-align:center}
/* ---------- 内联画布块（C 档）：长代码/长文档原地升格可编辑 ---------- */
.canvas-wrap{margin:10px 0}
.canvas-wrap .codeblock{margin:0}
/* 画布代码头比普通代码头多三个件（块翻页/编辑/让 AI 改）：窄屏
 * 一行塞不下时允许在头内换行，绝不横向撑破（390px 量测实测：
 * 不换行时整页 scrollWidth 406）。只对画布块生效，A1 普通代码头
 * 一行形态不动。 */
.codeblock.canvas-block .code-head{flex-wrap:wrap;row-gap:4px;padding-bottom:6px}
.codeblock .blk-btn,.docblock .blk-btn{min-height:32px;padding:0 10px;border:1px solid var(--line-2);
  border-radius:8px;background:var(--card);color:var(--ink);cursor:pointer;font-size:12px;font-family:inherit;white-space:nowrap}
.docblock .blk-btn{background:var(--glass-tint);color:var(--ink)}
.blk-ver{display:inline-flex;align-items:center;gap:2px;white-space:nowrap}
.blk-nav{min-width:32px;min-height:32px;padding:0 6px;border:1px solid transparent;border-radius:8px;
  background:transparent;color:inherit;cursor:pointer;font-size:15px;line-height:1;font-family:inherit}
.blk-nav:hover{background:var(--card-2)}
.blk-ver-label{font-size:12px;opacity:.85;white-space:nowrap}
.blk-edit-ta{display:block;width:100%;box-sizing:border-box;margin:0;padding:12px 14px;border:0;
  border-radius:0 0 12px 12px;background:#211d16;color:#f0e9d8;font-family:var(--mono);
  font-size:13px;line-height:1.55;resize:vertical;overflow-x:auto;white-space:pre}
.docblock .blk-edit-ta{background:var(--card);color:var(--ink);border:1px solid var(--line-2);border-radius:12px;white-space:pre-wrap;overflow-wrap:anywhere}
.blk-note{font-size:12px;color:var(--ink-3);margin:6px 2px 0}
.codeblock.editing .blk-note{color:#b8b09a;padding:0 10px}
.blk-err{font-size:12.5px;color:var(--danger,#c0392b);margin:6px 2px 0}
.codeblock.editing .blk-err{padding:0 10px}
.blk-bar{display:flex;justify-content:flex-end;gap:8px;padding:8px 2px 2px}
.codeblock.editing .blk-bar{padding:8px 10px 10px}
.blk-ai-panel{margin-top:8px;padding:10px;border:1px solid var(--line-2);border-radius:12px;background:var(--glass-tint)}
.blk-ai-ta{display:block;width:100%;box-sizing:border-box;padding:10px 12px;border:1px solid var(--line-2);
  border-radius:10px;background:var(--card);color:var(--ink);font:inherit;font-size:14px;resize:vertical}
.docblock{margin:10px 0;padding:10px 12px;border:1px solid var(--line-2);border-radius:12px;background:var(--glass-tint)}
.docblock-head{display:flex;align-items:center;gap:6px;margin-bottom:6px;flex-wrap:wrap}
.docblock-title{font-size:12.5px;color:var(--ink-2);letter-spacing:.02em}
.docblock-head .grow{flex:1}
/* A5 抽屉分区与批量 */
.session-arch-head{display:block;width:100%;text-align:left;border:0;background:transparent;cursor:pointer;font:inherit}
.session-batch{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:8px 2px}
.session-batch .sb-count{font-size:12.5px;color:var(--ink-2);margin-right:2px}
.session-check{flex:none;width:22px;height:22px;border:1.5px solid var(--line-2);border-radius:50%;
  display:flex;align-items:center;justify-content:center;font-size:13px;color:var(--ink);margin-left:12px}
.session-item.selected .session-check{background:var(--card-2);border-color:var(--ink-3)}
.session-item.selecting .session-main{padding-left:8px}
/* A13 临时会话横幅：结构层清玻璃，无色 */
.temp-banner{display:flex;align-items:center;gap:10px;max-width:760px;margin:8px auto 0;padding:8px 14px;
  border:1px solid var(--glass-edge);border-radius:14px;background:var(--glass-tint);
  backdrop-filter:blur(14px) saturate(1.4);-webkit-backdrop-filter:blur(14px) saturate(1.4);
  font-size:13px;color:var(--ink-2)}
.temp-banner .grow{flex:1}
/* A8 模板选择器与管理面板 */
.tpl-menu{max-width:760px;margin:0 auto 8px;background:var(--card);border:1px solid var(--line-2);
  border-radius:16px;padding:6px;box-shadow:0 8px 28px rgba(30,25,15,.10)}
.tpl-menu-note{padding:8px 10px;margin:0}
.tpl-item{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%;text-align:left;
  border:0;background:transparent;border-radius:10px;padding:8px 10px;cursor:pointer;font:inherit;color:inherit}
.tpl-item:hover,.tpl-item.active{background:var(--card-2)}
.tpl-item .tpl-name{font-weight:600;font-size:14.5px}
.tpl-item .tpl-snip{font-size:12.5px;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.tpl-menu-foot{display:flex;gap:6px;padding:6px 4px 2px;border-top:1px solid var(--line-2);margin-top:4px}
.tpl-panel-title{font-size:15px;font-weight:700;padding:0 6px}
.tpl-body{overflow-y:auto;padding:14px 16px 20px;min-height:0}
.tpl-row{display:flex;align-items:center;gap:6px;padding:7px 2px;border-bottom:1px solid var(--line-2)}
.tpl-row .tpl-name{font-weight:600;font-size:14.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tpl-row .grow{flex:1}
.tpl-form{margin-top:14px}
.tpl-flabel{display:block;font-size:13.5px;color:var(--ink-2);margin:10px 0 6px}
.tpl-form input[type="text"]{width:100%;min-height:44px;border:1px solid var(--line-2);border-radius:var(--r-input);
  background:var(--card);padding:0 12px;font-size:15px}
.tpl-form textarea{width:100%;border:1px solid var(--line-2);border-radius:var(--r-input);
  background:var(--card);padding:10px 12px;font-size:15px;resize:vertical}
/* C 档·项目空间：抽屉项目头行（比时间分组头略重，项目是容器不是
 * 时间段）+ 移入选择器行 + 管理面板记忆开关行。玻璃纪律同全站：
 * 结构层清玻璃、无色，强调只靠字重与墨色。 */
.session-proj-head{display:flex;align-items:center;gap:6px;padding:16px 6px 6px}
.session-proj-head:first-child{padding-top:2px}
.session-proj-head .proj-toggle{flex:none;border:0;background:transparent;cursor:pointer;font:inherit;
  font-size:12px;color:var(--ink-3);width:20px;height:24px;padding:0}
.session-proj-head .proj-name{font-size:13.5px;font-weight:700;color:var(--ink);letter-spacing:.02em;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.session-proj-head .proj-count{font-size:12px;color:var(--ink-3);flex:none}
.session-proj-head .grow{flex:1}
.session-proj-head .hit{font-size:12px;color:var(--ink-2);white-space:nowrap}
.proj-move-row{display:flex;align-items:center;gap:8px;width:100%;text-align:left;border:0;cursor:pointer;
  background:transparent;border-radius:10px;padding:10px 8px;font:inherit;color:inherit}
.proj-move-row:hover{background:var(--card-2)}
.proj-move-row .proj-name{font-size:14.5px;font-weight:600}
.proj-move-row .hit{font-size:12px;color:var(--ink-2)}
.proj-mem-row{display:flex;align-items:center;gap:10px;margin-top:14px}
.proj-mem-row .grow{flex:1}
.proj-mem-row .proj-mem-label{font-size:14.5px}
#projInstrMeta.proj-over{color:var(--err)}

/* ---------- 会话分享 sheet（顶配 A6）+ B4 沙箱预览 ---------- */
.share-sheet-back{position:fixed;inset:0;z-index:92;background:rgba(23,20,16,.45);display:flex;align-items:flex-end;justify-content:center}
.share-sheet-back[hidden]{display:none}
.share-sheet{width:100%;max-width:560px;max-height:82vh;max-height:82dvh;display:flex;flex-direction:column;
  background:var(--glass-tint-strong);border:1px solid var(--glass-edge);border-bottom:0;border-radius:22px 22px 0 0;
  -webkit-backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-sat));backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-sat));
  box-shadow:inset 0 1px 0 var(--glass-hi),0 -12px 40px rgba(23,20,16,.22)}
.share-sheet-head{flex:none;display:flex;align-items:center;justify-content:space-between;padding:16px 18px 8px}
.share-sheet-title{font-size:16.5px;font-weight:700}
.share-sheet-body{overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;
  padding:6px 18px calc(20px + env(safe-area-inset-bottom,0px));display:flex;flex-direction:column;gap:14px}
.share-note{margin:0;font-size:13.5px;line-height:1.6;color:var(--ink-2)}
.share-create-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.share-ttl-label{font-size:14px;color:var(--ink-2)}
.share-ttl{min-height:40px;border:1px solid var(--glass-edge);border-radius:12px;background:var(--glass-tint-strong);padding:0 10px;font-size:14px;color:var(--ink)}
.share-created{display:flex;gap:8px;align-items:center}
.share-url{flex:1;min-width:0;min-height:40px;border:1px solid var(--line-2);border-radius:12px;background:var(--card);padding:0 12px;font-size:13px;color:var(--ink)}
.share-once{margin:0;font-size:12.5px;color:var(--ink-2)}
.share-err{margin:0;font-size:13.5px;color:var(--err,#b3261e)}
.share-list{display:flex;flex-direction:column;gap:8px}
.share-empty{margin:0;font-size:13.5px;color:var(--ink-2)}
.share-item{display:flex;align-items:center;gap:10px;border:1px solid var(--line-2);border-radius:12px;padding:9px 12px;background:var(--card)}
.share-item-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.share-item-state{font-size:13.5px;font-weight:600}
.share-item-time{font-size:12px;color:var(--ink-2)}
html.glass-lite .share-sheet{backdrop-filter:none;-webkit-backdrop-filter:none;background:var(--glass-tint-strong)}
@media (prefers-reduced-transparency:reduce){
  .share-sheet{background:var(--card);backdrop-filter:none;-webkit-backdrop-filter:none}
}
.codeblock .preview-code{position:absolute;top:8px;right:8px;min-height:32px;padding:0 10px;border:1px solid var(--line-2);
  border-radius:8px;background:var(--card);color:var(--ink);cursor:pointer;font-size:12px}
.codeblock:has(.preview-code) .copy-code{right:76px}
.codewrap{margin:10px 0}
.codewrap .codeblock{margin:0}
.pv-slot{margin-top:8px}
.pv-slot[hidden]{display:none}
.pv-frame{width:100%;height:340px;border:1px solid var(--line-2);border-radius:12px;background:#fff;display:block}
.pv-err{margin:0;font-size:13px;color:var(--err,#b3261e)}
/* C 档代码沙箱运行卡（休眠建成，随 sandboxRun 总闸点火） */
.run-slot{margin-top:8px}
.run-slot[hidden]{display:none}
.msg-runs{margin-top:8px;display:flex;flex-direction:column;gap:8px}
.run-card{border:1px solid var(--line-2);border-radius:12px;padding:10px 12px;background:var(--glass-2,rgba(255,255,255,.5))}
.run-head{display:flex;justify-content:space-between;gap:12px;align-items:baseline;margin-bottom:6px}
.run-title{font-size:13px;font-weight:600}
.run-meta{font-size:12px;color:var(--ink-2)}
.run-sec{margin-top:6px}
.run-sec-t{font-size:12px;color:var(--ink-2)}
.run-out{margin:4px 0 0;padding:8px 10px;border-radius:8px;background:rgba(0,0,0,.05);font-size:12px;line-height:1.5;white-space:pre-wrap;word-break:break-word;max-height:260px;overflow:auto}
.run-err{color:var(--err,#b3261e)}
.run-img{max-width:100%;border-radius:8px;margin-top:6px;display:block}
.run-file{margin:4px 0 0;font-size:12px;color:var(--ink-2)}
/* 定时任务 sheet（C 档·C7）：外壳复用 share-sheet 玻璃弹层，这里只
 * 补表单件：提示词框/节奏行/星期筹码/通知勾选/任务行提示词截断。
 * 玻璃无色口径与全站一致，不给控件染色。 */
.sched-form{display:flex;flex-direction:column;gap:10px}
.sched-prompt{width:100%;box-sizing:border-box;border:1px solid var(--glass-edge);border-radius:12px;background:var(--glass-tint-strong);padding:10px 12px;font-size:14px;color:var(--ink);resize:vertical;font-family:inherit}
.sched-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.sched-wds{display:flex;gap:6px;flex-wrap:wrap}
.sched-wd{min-height:34px;padding:0 10px;border:1px solid var(--line-2);border-radius:999px;background:var(--card);color:var(--ink-2);font-size:13px;cursor:pointer}
.sched-wd.on{color:var(--ink);font-weight:700;border-color:var(--glass-edge);background:var(--glass-tint-strong)}
.sched-notify{display:flex;align-items:center;gap:8px;font-size:13.5px;color:var(--ink-2)}
.sched-item-prompt{font-size:13.5px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* ===== 实时语音通话（C 档骨架）：通话浮层 + 通话记录卡 =====
 * 无色清玻璃浮层（站内设计铁律：玻璃不染色），呼吸球是唯一动
 * 效，减动效时静态。字幕区只滚动自身，不顶动整页。 */
.call-overlay{position:fixed;inset:0;z-index:200;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:24px;background:rgba(250,250,248,.72);backdrop-filter:blur(22px) saturate(1.4);-webkit-backdrop-filter:blur(22px) saturate(1.4)}
.call-overlay[hidden]{display:none}
.call-orb{width:104px;height:104px;border-radius:50%;background:radial-gradient(circle at 34% 30%,rgba(255,255,255,.95),rgba(255,255,255,.35) 58%,rgba(210,214,220,.5));box-shadow:inset 0 1px 1px rgba(255,255,255,.9),inset 0 -10px 22px rgba(140,148,160,.28),0 18px 42px rgba(60,66,76,.18);animation:callBreathe 2.6s ease-in-out infinite}
@keyframes callBreathe{0%,100%{transform:scale(1)}50%{transform:scale(1.09)}}
@media (prefers-reduced-motion: reduce){.call-orb{animation:none}}
.call-state{margin:0;font-size:17px;font-weight:600;color:var(--ink,#1d1d1f)}
.call-timer{margin:0;font-size:15px;color:var(--ink-2,#6e6e73);font-variant-numeric:tabular-nums}
.call-warn{margin:0;padding:8px 14px;border-radius:999px;background:rgba(179,38,30,.1);color:var(--err,#b3261e);font-size:13.5px;font-weight:600}
.call-warn[hidden]{display:none}
.call-captions{width:min(560px,92vw);max-height:32vh;overflow-y:auto;display:flex;flex-direction:column;gap:6px;padding:4px 2px}
.call-caption{margin:0;font-size:14.5px;line-height:1.55;color:var(--ink,#1d1d1f)}
.call-caption.live{color:var(--ink-2,#6e6e73)}
.call-end-btn{margin-top:6px;padding:12px 34px;border:0;border-radius:999px;background:#d63a2f;color:#fff;font-size:15.5px;font-weight:600;cursor:pointer;box-shadow:0 10px 24px rgba(214,58,47,.32)}
.call-end-btn:active{transform:scale(.97)}
.call-card{border:1px solid var(--line-2,rgba(60,60,67,.14));border-radius:16px;padding:12px 14px;background:rgba(255,255,255,.55)}
.call-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px}
.call-title{font-weight:600;font-size:14.5px}
.call-meta{font-size:13px;color:var(--ink-2,#6e6e73);font-variant-numeric:tabular-nums}
.call-transcript{margin-top:8px}
.call-transcript summary{cursor:pointer;font-size:13.5px;color:var(--ink-2,#6e6e73)}
.call-transcript .plain{margin-top:6px;white-space:pre-wrap;font-size:14px;line-height:1.6}

/* 聊天加载失败卡（白屏根治）：加载链失败时的可见出口，无色清玻璃 */
.chat-load-error{margin:18px 16px;padding:18px;border-radius:18px;background:var(--card);border:1px solid var(--line-2);backdrop-filter:blur(18px) saturate(1.4);-webkit-backdrop-filter:blur(18px) saturate(1.4);display:flex;flex-direction:column;gap:10px;align-items:stretch}
.chat-load-error p{margin:0;font-size:14.5px;line-height:1.65;color:var(--ink)}
.chat-load-error .chat-load-error-hint{font-size:12.5px;color:var(--ink-2,#6e6e73)}

/* 用量分析 / 期间对账单（加强批）：纯 CSS 柱状（无图表库），
 * 控件行与 chip/date 输入横排可换行，窄屏不挤压。 */
.usage-controls{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:12px}
.usage-controls input[type="date"],.usage-controls input[type="month"]{min-height:40px;padding:0 10px;border-radius:var(--r-btn);border:1px solid var(--line-2);background:var(--card);font-size:14px;color:var(--ink)}
.usage-custom{display:inline-flex;align-items:center;gap:8px}
.usage-custom[hidden]{display:none}
.usage-sum{font-size:14px;font-weight:600;margin:2px 0 10px}
.usage-chart{display:flex;align-items:flex-end;gap:2px;height:120px;padding-top:6px;border-bottom:1px solid var(--line)}
.usage-col{flex:1 1 0;min-width:0;height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:stretch}
.usage-bar{background:var(--ink);border-radius:3px 3px 0 0;min-height:0;opacity:.85}
.usage-day{font-size:10px;color:var(--ink-2);text-align:center;height:16px;line-height:16px;white-space:nowrap;overflow:hidden}
.usage-h{font-size:14px;font-weight:600;margin:16px 0 4px}
