
:root{
  --red:#C9202E;--red-hover:#B01A26;--red-soft:#FCEEEF;--red-line:#EFC9CD;
  --paper:#FFFFFF;--paper-2:#FBF9F8;--ink:#191517;--text:#211D1F;
  --muted:#585154;--muted-2:#8B8487;--line:#EDE9E7;
  --mono:ui-monospace,"SF Mono",SFMono-Regular,Menlo,Consolas,monospace;
  --sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Inter,"PingFang SC","HarmonyOS Sans SC","Hiragino Sans","Microsoft YaHei","Noto Sans CJK SC",sans-serif;
  --bar:64px;
}
*,*::before,*::after{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{height:100%}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--text);font-family:var(--sans);
  font-size:16px;line-height:1.7;-webkit-font-smoothing:antialiased;overflow:hidden}
button,input,textarea{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--red);outline-offset:2px;border-radius:6px}
svg{display:block}
a{color:var(--red);text-decoration:none}

.aurora{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden}
.aurora::before,.aurora::after{content:"";position:absolute;border-radius:50%;filter:blur(70px)}
.aurora::before{width:58vw;height:58vw;top:-22vw;inset-inline-start:-16vw;
  background:radial-gradient(circle,rgba(201,32,46,.13),transparent 68%);
  animation:drift1 26s ease-in-out infinite}
.aurora::after{width:46vw;height:46vw;bottom:-20vw;inset-inline-end:-14vw;
  background:radial-gradient(circle,rgba(201,32,46,.09),transparent 68%);
  animation:drift2 32s ease-in-out infinite}
@keyframes drift1{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(7vw,5vw) scale(1.14)}}
@keyframes drift2{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(-6vw,-4vw) scale(1.1)}}

#lnkConsole{grid-column:auto;justify-self:auto}
.hback{grid-column:1;justify-self:start;font-size:13.5px;color:var(--muted);
  text-decoration:none;position:relative;padding-bottom:3px;white-space:nowrap}
.hback::before{content:"← ";font-weight:600}
.hback::after{content:"";position:absolute;left:0;right:0;bottom:0;height:2px;background:var(--red);
  transform:scaleX(0);transform-origin:left;transition:transform .2s ease}
.hback:hover{color:var(--red)}
.hback:hover::after{transform:scaleX(1)}
.hlink{background:none;border:0;font-size:13.5px;color:var(--muted);cursor:pointer;
  text-decoration:none;position:relative;padding:4px 2px;white-space:nowrap}
.hlink::after{content:"";position:absolute;left:50%;bottom:-4px;width:5px;height:5px;margin-left:-2.5px;
  border-radius:50%;background:var(--red);opacity:0;transform:translateY(-3px);
  transition:opacity .16s ease,transform .16s ease}
.hlink:hover{color:var(--red)}
.hlink:hover::after{opacity:1;transform:none}
.hbtn{display:inline-flex;align-items:center;height:32px;padding:0 13px;border-radius:8px;
  background:var(--red);color:#fff;font-size:13.5px;font-weight:700;text-decoration:none;
  white-space:nowrap;transition:.15s}
.hbtn:hover{background:var(--red-hover)}
.brand{grid-column:2;justify-self:center;display:flex;align-items:center;gap:10px;
  user-select:none;pointer-events:none}
.logo{pointer-events:none;user-select:none;height:30px;width:auto;color:var(--red);flex:none;overflow:visible}
.bt{font-size:13px;font-weight:800;letter-spacing:.12em;text-transform:uppercase}

.hleft{grid-column:1;justify-self:start;display:flex;align-items:center;gap:18px;min-width:0}
.hright{grid-column:3;justify-self:end;display:flex;align-items:center;gap:18px;min-width:0}

.hitem{display:inline-flex;align-items:center;height:34px;padding:0;margin:0;flex:none;
  font-size:13.5px;line-height:1;color:var(--muted);text-decoration:none;
  background:none;border:0;cursor:pointer;white-space:nowrap;font-family:inherit}
.hitem:hover{color:var(--red)}
.langsel{max-height:none;height:34px;line-height:1;border:1px solid var(--line);border-radius:9px;background:#fff;padding:0 6px;
  font-size:13px;color:var(--muted);cursor:pointer}
.langsel:hover{border-color:var(--red);color:var(--red)}
#i18nNotice{display:none;position:fixed;top:var(--bar);left:0;right:0;z-index:29;background:#FDF8EC;
  border-bottom:1px solid #E8D5A8;padding:8px 16px;font-size:12.5px;color:#8A6414;text-align:center}
#i18nNotice.show{display:block}
.icb{width:38px;height:38px;border-radius:10px;border:1px solid var(--line);background:#fff;
  display:grid;place-items:center;cursor:pointer;transition:.15s}
.icb:hover{border-color:var(--red);color:var(--red)}
.icb svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round}
@keyframes sixIn{to{opacity:1;transform:translateY(0)}}
@keyframes sixFlow{0%,70%,100%{transform:translateY(0);filter:none}
  80%{transform:translateY(-3px);filter:brightness(1.16) drop-shadow(0 3px 8px rgba(201,32,46,.38))}}
.logo .g6, .n666-logo .g6{opacity:0;transform:translateY(6px);animation-name:sixIn,sixFlow;
  animation-duration:.5s,3.4s;animation-timing-function:cubic-bezier(.2,.85,.25,1),ease-in-out;
  animation-fill-mode:forwards,none;animation-iteration-count:1,infinite;
  animation-delay:calc(var(--i) * .1s),calc(1s + var(--i) * .17s)}

main{position:relative;z-index:1;height:100%;padding-top:var(--bar);
  display:flex;flex-direction:column}
.scroll{flex:1;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.inner{max-width:760px;margin:0 auto;padding:22px 18px 8px}

.hi{text-align:center;padding:min(9vh,70px) 0 26px}
.hi h1{font-size:clamp(27px,6.4vw,40px);font-weight:800;letter-spacing:-.035em;margin:0;line-height:1.18}
.hi h1 em{font-style:normal;color:var(--red)}
.hi p{color:var(--muted);margin:14px auto 0;max-width:30em;font-size:16px}
.seeds{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-top:26px}
.seed{border:1px solid var(--line);background:rgba(255,255,255,.72);backdrop-filter:blur(6px);
  border-radius:13px;padding:14px 15px;text-align:start;cursor:pointer;transition:.16s ease}
.seed:hover{border-color:var(--red);transform:translateY(-3px);
  box-shadow:0 16px 32px -22px rgba(201,32,46,.55)}
.seed b{display:block;font-size:15px;font-weight:750;margin-top:2px}
.seed .ico{display:grid;place-items:center;width:40px;height:40px;border-radius:12px;margin-bottom:10px;
  color:var(--red);background:linear-gradient(150deg,var(--red-soft),rgba(252,238,239,.3));
  border:1px solid var(--red-line);transition:transform .2s cubic-bezier(.2,.8,.3,1)}
.seed .ico svg{width:28px;height:28px}
.seed:hover .ico{transform:translateY(-2px) rotate(-3deg)}
.seed .sub{display:block;font-size:12.5px;color:var(--muted-2);margin-top:3px;line-height:1.55}
.s-lead{border-color:var(--red-line);background:linear-gradient(180deg,var(--red-soft),rgba(255,255,255,.75))}
.s-lead b{color:var(--red)}
.seed[data-soon]{opacity:.62;cursor:default}
.seed[data-soon]:hover{transform:none;border-color:var(--red-line);box-shadow:none}

.msg{margin-bottom:22px;animation:rise .34s cubic-bezier(.2,.8,.25,1)}
@keyframes rise{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.me{display:flex;justify-content:flex-end}
.me .bub{background:var(--red);color:#fff;border-radius:16px 16px 4px 16px;
  padding:11px 15px;max-width:82%;white-space:pre-wrap;word-break:break-word;
  box-shadow:0 10px 24px -14px rgba(201,32,46,.6)}
.ai .top{display:flex;align-items:center;gap:8px;margin-bottom:7px}
/* 🔴 2026-09-08：原来这里是一个孤零零的「6」，看着像个序号或者页码。
   他要的是「要么 666、要么删掉、要么换成和数字无关的装饰」。
   改成 666 —— 那是我们自己的标识，不会被读成数字。
   宽度跟着放开，三个字符不能挤成一坨。 */
.ai .mark{height:22px;padding:0 7px;border-radius:7px;background:var(--red-soft);
  border:1px solid var(--red-line);display:grid;place-items:center;
  font-size:10px;font-weight:800;color:var(--red);flex:none;
  letter-spacing:.04em;font-family:var(--mono)}
.tier{font-size:11px;font-weight:800;letter-spacing:.05em;padding:2px 8px;border-radius:5px;
  background:var(--red-soft);color:var(--red);border:1px solid var(--red-line)}
.ai .body{white-space:pre-wrap;word-break:break-word;padding-inline-start:30px}
.ai .body code{font-family:var(--mono);font-size:13.5px;background:var(--paper-2);
  border:1px solid var(--line);border-radius:4px;padding:1px 5px}
.acts{display:flex;gap:6px;margin-top:9px;padding-inline-start:30px;opacity:0;transition:opacity .2s}
.msg:hover .acts,.acts.on{opacity:1}
.act{border:1px solid var(--line);background:#fff;border-radius:7px;height:28px;padding:0 11px;
  font-size:12px;color:var(--muted);cursor:pointer;transition:.14s}
.act:hover{border-color:var(--red);color:var(--red)}
.dots{display:inline-flex;gap:4px;padding-inline-start:30px}
.dots i{width:6px;height:6px;border-radius:50%;background:var(--red);opacity:.35;
  animation:blink 1.2s ease-in-out infinite}
.dots i:nth-child(2){animation-delay:.15s}.dots i:nth-child(3){animation-delay:.3s}
@keyframes blink{0%,100%{opacity:.25;transform:scale(.8)}50%{opacity:1;transform:scale(1)}}

.dock{position:sticky;bottom:0;z-index:20;padding:10px 18px calc(14px + env(safe-area-inset-bottom));
  background:linear-gradient(to top,var(--paper) 62%,transparent)}
.dock-in{max-width:760px;margin:0 auto}
.tiers{display:flex;gap:7px;margin-bottom:9px;overflow-x:auto;scrollbar-width:none}
.tiers::-webkit-scrollbar{display:none}
.tb{border:1.5px solid var(--line);background:rgba(255,255,255,.85);border-radius:999px;
  height:34px;padding:0 14px;font-size:13.5px;font-weight:650;cursor:pointer;white-space:nowrap;
  transition:.15s ease;flex:none}
.tb:hover{border-color:var(--red);color:var(--red)}
.tb[aria-pressed="true"]{background:var(--red);border-color:var(--red);color:#fff;
  box-shadow:0 8px 18px -9px rgba(201,32,46,.6)}

.tb-pick{border-style:dashed}
.tb-pick[aria-pressed="true"]{border-style:solid;background:var(--ink);border-color:var(--ink)}
.modelbar{display:flex;align-items:center;gap:10px;margin-bottom:9px;padding:9px 12px;
  border:1.5px solid var(--line);border-radius:12px;background:var(--paper-2);flex-wrap:wrap}
.modelbar[hidden]{display:none}
#modelsel{flex:1;min-width:170px;height:36px;border:1.5px solid var(--line);border-radius:9px;
  background:#fff;padding:0 10px;font-size:14.5px;cursor:pointer}
#modelsel:focus{border-color:var(--red);outline:none}
.thk{display:inline-flex;align-items:center;gap:5px;flex-wrap:wrap;margin-left:10px}
.thk[hidden]{display:none}
.thk-l{font-size:12.5px;color:var(--muted);margin-right:2px}
.thk-b{height:26px;padding:0 10px;border:1px solid var(--line);border-radius:7px;
  background:var(--paper);color:var(--muted);font-size:12.5px;cursor:pointer;
  font-family:inherit}
.thk-b:hover{border-color:var(--red-line)}
.thk-b.on{border-color:var(--red);background:var(--red-soft);color:var(--red);font-weight:600}
.thk-n{font-size:11.5px;color:var(--muted-2);margin-left:4px}
/* 🔴 2026-09-08 他定的：「一定不要影响用户使用，放在一个绝对不怎么碍事的
   地方，只是一个小标签，让他能注意到、能看到就好，千万不要搞成特别大的警告。」
   → 不加底色、不加边框，就是余额旁边一行小灰字。
     只有剩 3% 以内才把颜色调成红字（还是不加底色）—— 那时候确实该看见。 */
#ctxTag{font-size:11.5px;color:var(--muted-2);white-space:nowrap;margin-left:10px}
#ctxTag[hidden]{display:none}
#ctxTag.low{color:var(--red)}
/* 报错的技术细节：小、灰、等宽、可选中复制。和上面那句话明显分开。 */
.errdet{margin-top:8px;padding:8px 10px;border-radius:8px;background:var(--paper-2);
  border:1px solid var(--line);font-family:var(--mono);font-size:11.5px;
  line-height:1.55;color:var(--muted-2);white-space:pre-wrap;word-break:break-word;
  user-select:text;direction:ltr;text-align:left}
@media (max-width:520px){ .thk{margin-left:0;margin-top:6px} .thk-n{width:100%} }

.newbtn{flex:none;width:34px;height:34px;align-self:flex-end;margin-bottom:5px;border-radius:9px;
  border:1.5px solid var(--line);background:#fff;cursor:pointer;display:grid;place-items:center;
  transition:.15s}
.newbtn svg{width:17px;height:17px;stroke:var(--muted);fill:none;stroke-width:2;stroke-linecap:round}
.newbtn:hover{border-color:var(--red)}
.newbtn:hover svg{stroke:var(--red)}
.box{display:flex;align-items:flex-end;gap:9px;border:2px solid var(--line);border-radius:18px;
  background:rgba(255,255,255,.94);backdrop-filter:blur(10px);padding:8px 8px 8px 16px;
  transition:border-color .16s ease,box-shadow .16s ease;
  box-shadow:0 18px 40px -30px rgba(26,21,23,.5)}
.box:focus-within{border-color:var(--red);box-shadow:0 0 0 4px var(--red-soft),0 18px 40px -30px rgba(201,32,46,.5)}
#ta{flex:1;border:0;background:transparent;resize:none;outline:none;font-size:16px;
  line-height:1.6;max-height:180px;padding:7px 0}
#ta::placeholder{color:var(--muted-2)}
.send{width:40px;height:40px;border-radius:12px;border:0;background:var(--red);color:#fff;
  display:grid;place-items:center;cursor:pointer;flex:none;transition:.15s}
.send:hover{background:var(--red-hover);transform:scale(1.05)}
.send:disabled{background:#D9D4D2;cursor:not-allowed;transform:none}
.send svg{width:19px;height:19px;stroke:currentColor;fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.foot{display:flex;align-items:center;justify-content:space-between;gap:10px;
  margin-top:8px;font-size:11.5px;color:var(--muted-2)}
.foot b{color:var(--red);font-weight:800}
.foot #tierNote{line-height:1.65;flex:1;min-width:0}
.foot #bal{flex:none;white-space:nowrap;font-variant-numeric:tabular-nums;
  transition:color .2s ease}
.foot #bal.low{color:var(--red);font-weight:750}

/* 🔴 2026-08-24：那一栏整个不显示了。
   [stated] 他：「如果没有用的必要，那就只把那个去充值按钮
   拎出来放到左上角返回键的后面。」
   → 去充值已经做进顶栏（nav.js 的 .n666-topay），这一栏不再需要。
   ⚠️ HTML 和 paintLow() 都留着，将来想开回来把这条改掉即可。 */
#lowbal{display:none!important}
#lowbal.show{display:flex}
#lowbal .pct{font-weight:850;color:var(--red);font-variant-numeric:tabular-nums;
  animation:lbBlink 1.6s ease-in-out infinite}
#lowbal.urgent .pct{animation-duration:.6s}
#lowbal.urgent{border-width:2px}
@keyframes lbBlink{0%,100%{opacity:.25}50%{opacity:1}}
#lowbal .txt{color:var(--muted);white-space:nowrap}
#lowbal .go{border:0;background:var(--red);color:#fff;font-size:12.5px;font-weight:750;
  padding:6px 12px;border-radius:8px;cursor:pointer;white-space:nowrap;transition:.15s}
#lowbal .go:hover{background:var(--red-hover)}
@media (max-width:560px){#lowbal{left:8px;right:8px;font-size:12.5px}#lowbal .txt{white-space:normal}}

















/* 🔴 2026-08-27：门默认【藏着】，等验证明确说没登录才显示。
   原来默认可见、验证通过才加 .off 收起 —— 顺序是
   「先当你没登录 → 画出门 → 验证回来 → 收门」，
   所以第一次进（没缓存、还要解析 ?model=）会闪一秒「登录后开始对话」。
   反过来之后：已登录的人永远看不到它，没登录的人晚零点几秒看到。
   代价落在该看到门的人身上，不落在正常用户身上。 */
.gate{position:fixed;inset:0;z-index:60;display:none;place-items:center;padding:22px;
  background:rgba(255,255,255,.9);backdrop-filter:blur(16px)}
.gate.off{display:none}
.gate.on{display:grid}
.card{width:100%;max-width:420px;border:1px solid var(--line);border-top:3px solid var(--red);
  border-radius:16px;background:#fff;padding:30px 26px;
  box-shadow:0 40px 90px -50px rgba(26,21,23,.55);animation:rise .4s cubic-bezier(.2,.8,.25,1)}
.card .lg{display:flex;justify-content:center;margin-bottom:16px}
.card .lg .logo{height:44px}
.card h2{font-size:21px;font-weight:800;letter-spacing:-.02em;margin:0;text-align:center}
.card p{color:var(--muted);font-size:14.5px;margin:10px 0 0;text-align:center;line-height:1.7}
.card input{width:100%;height:48px;border:2px solid var(--line);border-radius:11px;
  padding:0 14px;font-family:var(--mono);font-size:14px;margin-top:18px}
.card input:focus{border-color:var(--red);outline:none;box-shadow:0 0 0 3px var(--red-soft)}
.card .btns{display:flex;gap:10px;margin-top:22px}
.card .go,.card .ghost{flex:1;height:50px;display:flex;align-items:center;justify-content:center;
  border-radius:12px;font-size:16px;font-weight:700;cursor:pointer;text-decoration:none;
  transition:.16s ease;letter-spacing:.01em;white-space:nowrap}
.card .go{border:0;background:var(--red);color:#fff;
  box-shadow:0 10px 24px -12px rgba(201,32,46,.75)}
.card .go:hover{background:var(--red-hover);transform:translateY(-1px);
  box-shadow:0 14px 30px -12px rgba(201,32,46,.85)}
.card .ghost{border:1.5px solid var(--line);background:#fff;color:var(--ink)}
.card .ghost:hover{border-color:var(--red);color:var(--red)}
.card .tip{font-size:12.5px;color:var(--muted-2);margin-top:14px;line-height:1.7}
.err{display:none;margin-top:11px;background:var(--red-soft);border:1px solid var(--red-line);
  border-radius:9px;padding:10px 13px;font-size:13.5px;color:#8E2027;line-height:1.6}
.err.on{display:block}

#lowbal{position:fixed;top:calc(var(--bar) + 10px);inset-inline-start:14px;z-index:28;
  display:flex;align-items:center;gap:8px;padding:7px 8px 7px 11px;border-radius:10px;
  background:#fff;border:1.5px solid var(--red);color:var(--red);font-size:12.5px;font-weight:750;
  box-shadow:0 10px 26px -14px rgba(201,32,46,.7);user-select:none}
#lowbal[hidden]{display:none}
.lb-dot{width:7px;height:7px;border-radius:50%;background:var(--red);flex:none;
  animation:lbBlink 1.4s ease-in-out infinite}
#lowbal.urgent .lb-dot{animation-duration:.55s}
#lowbal.urgent{border-width:2px;animation:lbShake 1.1s ease-in-out infinite}
@keyframes lbBlink{0%,100%{opacity:.12;transform:scale(.7)}50%{opacity:1;transform:scale(1)}}
@keyframes lbShake{0%,100%{box-shadow:0 10px 26px -14px rgba(201,32,46,.7)}
  50%{box-shadow:0 10px 30px -10px rgba(201,32,46,1)}}
.lb-txt{white-space:nowrap}
.lb-btn{border:0;background:var(--red);color:#fff;font-size:12px;font-weight:750;
  padding:4px 10px;border-radius:7px;cursor:pointer;transition:.15s;white-space:nowrap}
.lb-btn:hover{background:var(--red-hover)}




@keyframes tpIn{from{opacity:0;transform:translateY(14px) scale(.97)}to{opacity:1;transform:none}}




















/* 2026-08-24：电汇单能完整展开、能选中、能复制。
   原来 .kv 是 flex 但【没有 flex-wrap】，值那格【没有 min-width:0】——
   flex 子项默认不能收缩到内容宽度以下，所以银行地址那长串
   硬把行撑出容器，超出部分被 .tp-card 裁掉，选不中也复制不了。
   外层的 word-break:break-all 救不了 —— 撑破的是布局，不是文字换行。 */



@media(max-width:480px){


}








.lowtip{position:fixed;right:18px;bottom:96px;z-index:90;max-width:330px;
  background:#fff;border:1px solid var(--line);border-left:4px solid var(--red);
  border-radius:12px;padding:14px 16px;box-shadow:0 14px 40px -18px rgba(0,0,0,.3);
  font-size:13.5px;line-height:1.8;color:var(--muted);animation:tipIn .22s ease-out}
.lowtip b{display:block;color:var(--text);font-size:14.5px;margin-bottom:5px}
@keyframes tipIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@media (max-width:620px){ .lowtip{right:12px;left:12px;max-width:none;bottom:86px} }

.rate{display:flex;align-items:center;gap:6px;margin-top:9px;
  opacity:.35;transition:opacity .18s}
.msg-row:hover .rate,.rate:focus-within{opacity:1}
.rate span{font-size:11.5px;color:var(--muted-2);margin-right:2px;white-space:nowrap}
.rate button{border:1px solid var(--line);background:#fff;border-radius:7px;
  padding:2px 9px;font-size:11.5px;color:var(--muted);cursor:pointer;
  font-family:inherit;white-space:nowrap}
.rate button:hover{border-color:var(--red);color:var(--red)}
.rate.done{opacity:.5}
.rate.done span{color:var(--green)}

.stopbtn{position:fixed;left:50%;transform:translateX(-50%);bottom:96px;z-index:75;
  border:1.5px solid var(--red);background:#fff;color:var(--red);border-radius:99px;
  padding:8px 20px;font-size:13.5px;font-weight:700;cursor:pointer;font-family:inherit;
  box-shadow:0 10px 26px -14px rgba(0,0,0,.4);white-space:nowrap}
.stopbtn[hidden]{display:none}
.stopbtn:hover{background:var(--red);color:#fff}
.lomask{position:fixed;inset:0;background:rgba(20,20,20,.45);backdrop-filter:blur(3px);
  display:grid;place-items:center;z-index:95;padding:22px}
.lobox{background:#fff;border-radius:16px;padding:26px 26px 22px;max-width:380px;text-align:center}
.lobox h3{margin:0 0 8px;font-size:17px}
.lobox p{margin:0 0 18px;color:var(--muted);font-size:14px;line-height:1.8}
.lobtn{border:0;border-radius:11px;background:var(--red);color:#fff;padding:11px 26px;
  font-size:14.5px;font-weight:700;cursor:pointer;font-family:inherit;white-space:nowrap}
.spent{margin-top:6px;font-size:11.5px;color:var(--muted-2)}
#toast{position:fixed;left:50%;bottom:96px;transform:translateX(-50%) translateY(12px);
  background:var(--ink);color:#fff;padding:9px 16px;border-radius:9px;font-size:13.5px;
  opacity:0;pointer-events:none;transition:.22s;z-index:70}
#toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

@media (max-width:620px){
  .inner{padding:16px 14px 6px}
  .dock{padding:8px 12px calc(12px + env(safe-area-inset-bottom))}
  .me .bub{max-width:88%}
  .acts{opacity:1}
  .seeds{grid-template-columns:1fr 1fr;gap:8px}
  .seed{padding:12px}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
.back666{position:fixed;left:16px;bottom:18px;z-index:60;width:42px;height:42px;
  border-radius:50%;background:#fff;border:1.5px solid var(--line,#E6E3E1);
  display:grid;place-items:center;text-decoration:none;color:var(--ink,#141414);
  font-size:19px;box-shadow:0 8px 20px -12px rgba(0,0,0,.35)}
.back666:hover{border-color:var(--red,#C9202E);color:var(--red,#C9202E)}

:where([hidden]){display:none!important}

.mpick{position:relative;flex:1;min-width:0}
.mpick input{width:100%;height:36px;padding:0 12px;border:1px solid var(--line,#EFEBE9);
  border-radius:8px;font:inherit;font-size:14px;background:#fff;color:inherit}
.mpick input:focus{outline:0;border-color:var(--red,#C9202E)}
.mlist{position:absolute;z-index:60;top:40px;left:0;right:0;max-height:320px;
  overflow:auto;background:#fff;border:1px solid var(--line,#EFEBE9);border-radius:8px;
  box-shadow:0 12px 32px rgba(0,0,0,.14)}
.mlist button{display:block;width:100%;padding:9px 12px;border:0;border-bottom:1px solid #F4F1EF;
  background:#fff;text-align:start;cursor:pointer;font:inherit;font-size:13.5px}
.mlist button:last-child{border-bottom:0}
.mlist button:hover,.mlist button.hi{background:var(--red-soft,#FCEEEF)}
.mlist .mid{display:block;font-size:11.5px;color:var(--muted-2,#8B8487);
  font-family:var(--mono,monospace);margin-top:2px}
.mlist .none{padding:12px;color:var(--muted-2,#8B8487);font-size:13px}

.n666-midmask{position:fixed;inset:0;background:rgba(26,22,24,.45);z-index:99998}
.n666-mid{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);
  z-index:99999;max-width:min(430px,88vw);padding:24px 26px;border-radius:14px;
  background:#fff;box-shadow:0 22px 60px rgba(0,0,0,.28);text-align:center;
  line-height:1.75;font-size:15.5px}
.n666-mid .row{display:flex;gap:10px;justify-content:center;margin-top:20px}
.n666-mid button{padding:11px 26px;border-radius:9px;font-size:14.5px;
  font-weight:700;cursor:pointer;border:1px solid #E6E3E1;background:#fff}
.n666-mid button.pri{border-color:#C9202E;background:#C9202E;color:#fff}

/* 666 放大 20% —— 他要求：整行一起放大，包括前面那句描述和四个选项 */
.rate{font-size:1.2em;gap:14px;padding:12px 0;line-height:1.6}
.rate *{font-size:inherit}
.rate button,.rate .r,.rate a{padding:0.5em 0.9em;border-radius:9px}

/* 666 放大 20% —— 他要求：整行一起放大，包括前面那句描述和四个选项 */
.rate{font-size:1.2em;gap:14px;padding:12px 0;line-height:1.6}
.rate *{font-size:inherit}
.rate button,.rate .r,.rate a{padding:0.5em 0.9em;border-radius:9px}

/* 666 放大 20% —— 他要求：整行一起放大，包括前面那句描述和四个选项 */
.rate{font-size:1.2em;gap:14px;padding:12px 0;line-height:1.6}
.rate *{font-size:inherit}
.rate button,.rate .r,.rate a{padding:0.5em 0.9em;border-radius:9px}

/* 666 放大 20% —— 他要求：整行一起放大，包括前面那句描述和四个选项 */
.rate{font-size:1.2em;gap:14px;padding:12px 0;line-height:1.6}
.rate *{font-size:inherit}
.rate button,.rate .r,.rate a{padding:0.5em 0.9em;border-radius:9px}

/* ══════════════════════════════════════════════════════════
   2026-08-23：按钮溢出 · 去充值按钮 · 发送键变停止键
   ══════════════════════════════════════════════════════════ */

/* 🔴 ① 五个档位按钮：原来 overflow-x:auto + nowrap + flex:none。
   能横滑，**但用户不知道能滑**，看着就是被截断了 ——
   他说「指定模型只能显示出 20%，剩下 80% 都超出屏幕」。
   中文和韩文短所以正好放得下，其余八种语言必然溢出。
   → 改成可换行。宁可占两行，也不能让人看不见按钮。 */
.tiers{flex-wrap:wrap;overflow-x:visible;row-gap:7px}
.tb{flex:0 1 auto;min-width:0}
.tb.tb-pick{max-width:100%}
@media (max-width:560px){
  .tiers{gap:5px;row-gap:6px}
  .tb{height:31px;padding:0 10px;font-size:12.5px}
}

/* 🔴 ④ 去充值按钮：横向拉满、不要边框、文字真正居中。
   原来 display:block + line-height:48px —— 有边框时文字看着偏下。
   改用 flex 居中，行高交给 flex 管，不再靠 line-height 凑。 */


/* ② 发送键在发送中变成停止键 —— 不新增按钮，那一行本来就紧 */
.send.stopping{background:#3A3336}
.send.stopping:hover{background:#241F21;transform:none}

/* 666 放大 20% —— 他要求：整行一起放大，包括前面那句描述和四个选项 */
.rate{font-size:1.2em;gap:14px;padding:12px 0;line-height:1.6}
.rate *{font-size:inherit}
.rate button,.rate .r,.rate a{padding:0.5em 0.9em;border-radius:9px}

/* 666 放大 20% —— 他要求：整行一起放大，包括前面那句描述和四个选项 */
.rate{font-size:1.2em;gap:14px;padding:12px 0;line-height:1.6}
.rate *{font-size:inherit}
.rate button,.rate .r,.rate a{padding:0.5em 0.9em;border-radius:9px}

/* 666 放大 20% —— 他要求：整行一起放大，包括前面那句描述和四个选项 */
.rate{font-size:1.2em;gap:14px;padding:12px 0;line-height:1.6}
.rate *{font-size:inherit}
.rate button,.rate .r,.rate a{padding:0.5em 0.9em;border-radius:9px}

/* 666 放大 20% —— 他要求：整行一起放大，包括前面那句描述和四个选项 */
.rate{font-size:1.2em;gap:14px;padding:12px 0;line-height:1.6}
.rate *{font-size:inherit}
.rate button,.rate .r,.rate a{padding:0.5em 0.9em;border-radius:9px}

/* 666 放大 20% —— 他要求：整行一起放大，包括前面那句描述和四个选项 */
.rate{font-size:1.2em;gap:14px;padding:12px 0;line-height:1.6}
.rate *{font-size:inherit}
.rate button,.rate .r,.rate a{padding:0.5em 0.9em;border-radius:9px}

/* 666 放大 20% —— 他要求：整行一起放大，包括前面那句描述和四个选项 */
.rate{font-size:1.2em;gap:14px;padding:12px 0;line-height:1.6}
.rate *{font-size:inherit}
.rate button,.rate .r,.rate a{padding:0.5em 0.9em;border-radius:9px}

/* 666 放大 20% —— 他要求：整行一起放大，包括前面那句描述和四个选项 */
.rate{font-size:1.2em;gap:14px;padding:12px 0;line-height:1.6}
.rate *{font-size:inherit}
.rate button,.rate .r,.rate a{padding:0.5em 0.9em;border-radius:9px}



/* 666 放大 20% —— 他要求：整行一起放大，包括前面那句描述和四个选项 */
.rate{font-size:1.2em;gap:14px;padding:12px 0;line-height:1.6}
.rate *{font-size:inherit}
.rate button,.rate .r,.rate a{padding:0.5em 0.9em;border-radius:9px}

/* 充值弹窗 —— 2026-08-24
   ④ 金额那一行字号大一号、数字标红，让人一眼看清要付多少 */


/* ①② 分组：展开靠 class，不靠 hidden ——
   .tp-chans 是 flex，hidden 在里面盖不过 display */












/* 666 放大 20% —— 他要求：整行一起放大，包括前面那句描述和四个选项 */
.rate{font-size:1.2em;gap:14px;padding:12px 0;line-height:1.6}
.rate *{font-size:inherit}
.rate button,.rate .r,.rate a{padding:0.5em 0.9em;border-radius:9px}

/* 666 放大 20% —— 他要求：整行一起放大，包括前面那句描述和四个选项 */
.rate{font-size:1.2em;gap:14px;padding:12px 0;line-height:1.6}
.rate *{font-size:inherit}
.rate button,.rate .r,.rate a{padding:0.5em 0.9em;border-radius:9px}

/* 666 放大 20% —— 他要求：整行一起放大，包括前面那句描述和四个选项 */
.rate{font-size:1.2em;gap:14px;padding:12px 0;line-height:1.6}
.rate *{font-size:inherit}
.rate button,.rate .r,.rate a{padding:0.5em 0.9em;border-radius:9px}

/* Markdown 渲染 —— 2026-08-24
   原来 fmt() 只认反引号，星号/井号/列表号全当文字打在屏幕上。 */
.body .mdh{font-weight:750;font-size:1.04em;margin:.7em 0 .3em}
.body .mdh:first-child{margin-top:0}
.body .mdli{position:relative;padding-inline-start:1.15em;margin:.18em 0}
.body .mdli::before{content:"·";position:absolute;inset-inline-start:.25em;
  color:var(--muted-2);font-weight:700}
.body .mdli.mdol::before{content:attr(data-n);inset-inline-start:0;font-weight:600;
  font-size:.92em}
.body .mdq{border-inline-start:3px solid var(--line);padding-inline-start:.7em;
  color:var(--muted);margin:.4em 0}
.body .mdhr{border:0;border-top:1px solid var(--line);margin:.8em 0}
.body .mdtr{display:flex;gap:14px;flex-wrap:wrap;margin:.15em 0}
.body .mdtr span{min-width:0}
.body .mdpre{background:var(--paper-2);border:1px solid var(--line);
  border-radius:8px;padding:10px 12px;overflow-x:auto;margin:.5em 0}
.body .mdpre code{background:none;padding:0;font-size:12.5px;line-height:1.65}
.body strong{font-weight:750}
.body del{opacity:.6}

/* ══════════════════════════════════════════════════════════════
   充值弹窗（充值页 B）—— 2026-08-24 整套重画
   [stated] 他：「你重新画一份不行吗？……能不能把窗口搞大一点、搞长一点，
   你不让它崩、不挤在一起不行吗？」
   → 之前打了七八个补丁越补越乱，这次推倒重写。

   ⚠️ 每一条都用 #topup 前缀圈住 —— 不会再和外面的类名撞车
      （.amt 那次就是没圈住，红色金额吃到了档位按钮的样式）。
   ══════════════════════════════════════════════════════════════ */
#topup{position:fixed;inset:0;z-index:70;
  background:rgba(26,21,23,.5);backdrop-filter:blur(3px);
  display:grid;place-items:center;padding:20px;overflow-y:auto}
#topup[hidden]{display:none}

#topup .tp-card{position:relative;box-sizing:border-box;
  width:min(520px,92vw);max-height:88vh;overflow-y:auto;
  background:#fff;border-radius:18px;padding:30px 28px 24px;
  box-shadow:0 28px 70px rgba(0,0,0,.28)}

#topup .tp-x{position:absolute;top:14px;inset-inline-end:14px;
  width:34px;height:34px;border:0;background:none;cursor:pointer;
  font-size:26px;line-height:1;color:var(--muted-2);border-radius:8px}
#topup .tp-x:hover{background:var(--paper-2);color:var(--text)}

#topup .tp-h{margin:0 0 22px;padding-inline-end:30px}
#topup .tp-h b{display:block;font-size:22px;font-weight:800;line-height:1.35}
#topup .tp-h span{display:block;margin-top:8px;font-size:14px;
  color:var(--muted);line-height:1.6}

/* 档位：宽屏 4 个一行，窄屏 2 个一行 —— 不会换乱 */
#topup .tp-grid{display:grid;grid-template-columns:repeat(4,1fr);
  gap:10px;margin:0 0 20px}
#topup .tp-opt{box-sizing:border-box;width:100%;
  border:1.5px solid var(--line);border-radius:12px;
  padding:15px 4px;background:#fff;cursor:pointer;
  font:800 17px/1.2 var(--sans);color:var(--red);
  transition:border-color .15s,background .15s}
#topup .tp-opt:hover{border-color:var(--red);background:var(--red-soft)}
#topup .tp-opt.on{border-color:var(--red);background:var(--red-soft);
  box-shadow:0 0 0 2px rgba(201,32,46,.14)}

#topup .tp-custom{margin:0 0 22px}
#topup .tp-custom label{display:block;margin-bottom:8px;
  font-size:13.5px;color:var(--muted)}
#topup .tp-cwrap{display:flex;align-items:center;gap:8px;
  border:1.5px solid var(--line);border-radius:11px;padding:0 14px;height:50px}
#topup .tp-cwrap:focus-within{border-color:var(--red)}
#topup .tp-cwrap span{flex:none;font-size:16px;font-weight:700;color:var(--muted-2)}
#topup .tp-cwrap input{flex:1;min-width:0;border:0;outline:0;background:none;
  font:600 16px var(--sans);height:100%}

/* 付款方式：自己占一行，和档位分开 */
#topup .tp-chans{display:flex;flex-wrap:wrap;gap:9px;
  margin:0 0 18px;min-height:40px;align-items:flex-start}
#topup .tp-chan{flex:0 0 auto;box-sizing:border-box;
  border:1.5px solid var(--line);border-radius:10px;padding:9px 15px;
  background:#fff;cursor:pointer;white-space:nowrap;
  font:550 13.5px var(--sans);color:var(--text);
  transition:border-color .15s,background .15s}
#topup .tp-chan:hover{border-color:var(--red);background:var(--red-soft)}
#topup .tp-chan.on{border-color:var(--red);background:var(--red-soft);
  color:var(--red);font-weight:700}
#topup .tp-chan.off{opacity:.45;cursor:not-allowed;border-style:dashed}
#topup .tp-chan.off:hover{border-color:var(--line);background:#fff}
#topup .tp-chan .soon{font-size:11px;opacity:.85;margin-inline-start:5px}
#topup .tp-chan.tp-more{border-style:dashed}
#topup .tp-chan.tp-more.on{border-style:solid}
/* 展开区：整行铺开，靠 class 控制显隐（不用 hidden，flex 里盖不住） */
#topup .tp-sub{display:none;flex-basis:100%;flex-wrap:wrap;gap:9px;
  margin-top:2px;padding-inline-start:8px}
#topup .tp-sub.on{display:flex}
#topup .tp-empty{font-size:13px;color:var(--muted-2);line-height:1.7}

/* 金额那一行：纯文字，绝不是按钮 */
#topup .tp-note{margin:0 0 20px;font-size:14.5px;color:var(--text);
  line-height:1.7;min-height:22px}
#topup .tp-note b.tp-amt{border:0;padding:0;background:none;cursor:default;
  display:inline;transform:none;
  color:var(--red);font-size:20px;font-weight:800;
  margin-inline-start:6px;letter-spacing:.01em}

#topup .tp-go{display:block;box-sizing:border-box;width:100%;
  height:52px;border:0;border-radius:12px;cursor:pointer;
  background:var(--red);color:#fff;font:800 16px var(--sans);
  transition:background .15s}
#topup .tp-go:hover{background:var(--red-hover)}
#topup .tp-go:disabled{background:#D9D4D2;cursor:not-allowed}

#topup .tp-later{display:block;width:100%;margin-top:14px;
  border:0;background:none;cursor:pointer;
  font:550 14px var(--sans);color:var(--muted)}
#topup .tp-later:hover{color:var(--text);text-decoration:underline;text-underline-offset:3px;background:var(--paper-2);border-radius:8px}

/* 下单之后的信息单：能完整展开、能选中、能复制 */
#topup .tp-result{margin-top:18px;padding:16px 18px;
  border:1px solid var(--line);border-radius:12px;background:var(--paper-2);
  font-size:13.5px;line-height:1.85;user-select:text}
#topup .tp-result[hidden]{display:none}
#topup .tp-result .kv{display:flex;flex-wrap:wrap;gap:8px 12px;
  align-items:flex-start;padding:5px 0}
#topup .tp-result .kv i{flex:none;font-style:normal;color:var(--muted-2);
  min-width:5.2em}
#topup .tp-result .kv span,#topup .tp-result .kv b{flex:1;min-width:0;
  word-break:break-all;overflow-wrap:anywhere;user-select:text}
#topup .tp-result b{color:var(--red)}

@media (max-width:560px){
  #topup{padding:12px}
  #topup .tp-card{padding:24px 18px 18px;max-height:92vh}
  #topup .tp-h b{font-size:19px}
  #topup .tp-grid{grid-template-columns:repeat(2,1fr)}
  #topup .tp-opt{font-size:16px;padding:14px 4px}
  #topup .tp-note b.tp-amt{font-size:18px}
}

/* 五分钟提示 —— 2026-08-24 */
#topup .tp-quotetip{margin:-10px 0 18px;font-size:12.5px;line-height:1.65}
#topup .tp-quotetip[hidden]{display:none}
#topup .tp-quotetip #tpClock{display:inline-block;font-weight:750;
  color:var(--red);font-variant-numeric:tabular-nums;margin-inline-end:8px}
#topup .tp-quotetip .tp-expire{color:var(--muted-2)}

/* 分组标题的 ▾ —— 用 CSS 加，不放在文字里。
   放文字里的话，data-i18n 刷 textContent 时会把它冲掉。 */
#topup .tp-chan.has-caret::after{content:' \25BE';font-size:11px;opacity:.75}

/* 🔴 2026-08-25：「暂未开通」挪到按钮下面。
   原来它是按钮内部的 span，父子都挂 data-i18n 会互相吃掉。 */
#topup .tp-cell{display:inline-flex;flex-direction:column;align-items:center;gap:3px}
#topup .soon-out{font-size:11px;color:var(--muted-2);line-height:1.2;
  white-space:nowrap}
#topup .tp-cell.off .tp-chan{opacity:.55}




/* 🔴 2026-08-25：汇款单 —— 只有【附言】那一行标红，其余保持原样。
   [stated] 他：「让你标红的信息没有让你加粗，你不要乱搞。」
   → 不加粗、不右对齐。值居中。 */
#topup .kv .tp-val{text-align:center;word-break:break-all;
  font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
#topup .kv .tp-memo{color:var(--red)}
