/* 外壳专用样式（块页面不用）。基础样式在 /s/base.css。 */
html,body{height:100%;overflow:hidden;overscroll-behavior:none}
svg.i{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex:none}
.shell{display:flex;flex-direction:column;height:100vh;height:100dvh}
main{flex:1;position:relative;min-height:0}
.view{position:absolute;inset:0;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;
  padding:calc(env(safe-area-inset-top) + 12px) max(16px, env(safe-area-inset-right)) 18px max(16px, env(safe-area-inset-left))}
.view>.in{max-width:560px;margin:0 auto}
.hd .ib,.ib{width:44px;height:44px;border-radius:22px;display:grid;place-items:center;color:var(--ink2);flex:none}
.hd .ib{margin:-6px -8px 0 0}
.g.o{background:transparent;border:1px solid var(--ink2)}
.chev.r{margin-left:auto}

/* 口子 + 底栏 */
.dock{flex:none;background:var(--paper);border-top:1px solid var(--rule);padding-bottom:env(safe-area-inset-bottom);
  padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right);position:relative;z-index:5}
.mouth{display:flex;align-items:center;gap:6px;padding:8px 10px 6px;max-width:600px;margin:0 auto}
.mouth .ib.on{color:var(--paper);background:var(--ink)}
.mouth .f{flex:1;min-width:0;height:44px;border-radius:22px;background:var(--card);border:1px solid var(--rule);padding:0 14px;font-size:16px;outline:0}
.mouth .f::placeholder{color:var(--faint)}
.mouth .f:focus{border-color:var(--ink2)}
.rec{flex:none;height:44px;border-radius:22px;background:var(--red);color:#fff;display:flex;align-items:center;gap:7px;padding:0 15px 0 13px;font-size:15px;font-weight:600;
  touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
.rec:before{content:"";width:9px;height:9px;border-radius:5px;background:#fff}
.rec.live{box-shadow:0 0 0 5px var(--red-soft)}
.rec.mini{width:44px;padding:0;justify-content:center;font-size:0;gap:0}
.rec.mini:before{width:12px;height:12px;border-radius:6px}
.snd{flex:none;width:44px;height:44px;border-radius:22px;background:var(--ink);color:var(--paper);display:grid;place-items:center}
.snd svg.i{stroke-width:2.2}
.tabs{display:flex;justify-content:space-around;padding:0 8px;max-width:600px;margin:0 auto}
.tab{width:72px;height:48px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:11px;color:var(--mute)}
.tab.on{color:var(--ink);font-weight:700}
.tab.on svg.i{stroke-width:2.2}
body.typing .tabs{display:none}

/* 口子上方：位置、照片、提示 */
.tray{display:flex;gap:8px;align-items:center;padding:12px 12px 0;overflow-x:auto;max-width:600px;margin:0 auto;scrollbar-width:none}
.tray::-webkit-scrollbar{display:none}
.tray .chip{height:30px;padding:0 4px 0 10px;gap:4px;font-weight:500;font-size:12.5px;flex:none}
.tray .chip svg.i{width:14px;height:14px}
.tray .chip .x{width:26px;height:26px;display:grid;place-items:center;color:var(--mute)}
.tray .chip .x svg.i{width:13px;height:13px}
.tray .ph{position:relative;flex:none;width:48px;height:48px}
.tray .ph img{width:48px;height:48px;object-fit:cover;border-radius:9px}
.tray .ph button{position:absolute;top:-6px;right:-6px;width:22px;height:22px;border-radius:11px;background:var(--ink);color:var(--paper);display:grid;place-items:center}
.tray .ph button svg.i{width:12px;height:12px;stroke-width:2.4}
.tray .hint{font-size:12.5px;color:var(--ink2);padding:2px 2px;white-space:normal}

/* 对话 */
.chat-in{display:flex;flex-direction:column;min-height:100%}
.fold{display:flex;align-items:center;justify-content:center;gap:6px;font-size:12.5px;color:var(--mute);padding:8px 10px;border:1px dashed var(--faint);border-radius:12px;margin:0 0 6px;min-height:40px}
.day{text-align:center;font-size:11px;color:var(--mute);letter-spacing:.1em;margin:10px 0 4px}
.grp{margin:2px 0}
.me{margin:6px 0 3px auto;width:fit-content;max-width:84%;background:var(--ink);color:var(--paper);padding:7px 13px;border-radius:18px 18px 5px 18px;font-size:15px;line-height:1.35;white-space:pre-wrap;word-break:break-word}
.me .tag{opacity:.6;font-size:12px;white-space:nowrap}
.me.local{background:var(--ink2)}
.me .imgs{display:grid;gap:4px;margin:-1px -7px 6px;grid-template-columns:repeat(2,1fr)}
.me .imgs.n1{grid-template-columns:1fr;width:132px}
.me .imgs img{width:100%;aspect-ratio:3/4;object-fit:cover;border-radius:10px;background:#3a3631}
.me .imgs.n1 img{aspect-ratio:auto;max-height:200px}
.me .cap2{font-size:11px;opacity:.65;margin-top:2px}
.me.photo{padding:6px;border-radius:16px 16px 5px 16px}
.me.photo .txt{padding:2px 6px 0}
.chat-in .kc{margin:3px 0 6px}
.kc .top>.chev{align-self:center}
.kc.working{background:transparent;border-style:dashed;display:flex;gap:10px;align-items:center}
.kc.working .t{font-weight:500}
.kc.undone{opacity:.55}
.kc.undone .t{text-decoration:line-through;text-decoration-color:var(--faint)}
.kc .say{font-size:12.5px;color:var(--mute);margin-top:4px}
.kc.multi{padding:4px 12px}
.mini{display:flex;align-items:center;gap:8px;padding:6px 0;border-top:1px solid var(--rule);font-size:14px;min-height:36px}
.mini:first-child{border-top:0}
.mini .tx{flex:1;min-width:0}
.mini.undone .tx{color:var(--faint);text-decoration:line-through}
.ai{margin:6px 40px 6px 2px;font-size:15px;line-height:1.5;white-space:pre-wrap;word-break:break-word}
.sys{text-align:center;font-size:12px;color:var(--mute);margin:6px 10px}
.dots{color:var(--mute);font-size:18px;letter-spacing:2px;margin:0 4px 4px;line-height:1}
.loadmore{text-align:center;font-size:12px;color:var(--faint);padding:8px}

/* 今天 */
.one .t,.one .s{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.one>div{min-width:0}
a.card{display:flex}
.tl[href]{cursor:pointer}

/* 块 */
.bgrid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.bk{height:150px;margin:0;display:flex;flex-direction:column}
.bk .hd2{display:flex;align-items:center;gap:10px}
.bk b{font-size:17px}
.bk .rec2{font-size:13px;margin-top:1px;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.bk.off{opacity:.55}

/* 我 */
.bsw{padding:4px 12px;display:grid;grid-template-columns:1fr 1fr;column-gap:16px}
.bsw .set{border:0;cursor:pointer}
.spend{padding:0 0 8px;font-size:12.5px;color:var(--ink2);display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:10px;row-gap:3px}
.spend>span:nth-child(odd){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.token{font-family:var(--mono);font-size:13px;word-break:break-all;background:var(--fill);border-radius:10px;padding:8px 10px;margin:6px 0}

/* 关于你 */
.mg{font-size:12px;color:var(--mute);font-weight:600;letter-spacing:.08em;margin:10px 4px 4px}
.mcard{padding:0 14px;margin-bottom:4px}
.mrow{display:flex;gap:10px;align-items:center;padding:7px 0;border-top:1px solid var(--rule);min-height:48px;cursor:pointer}
.mrow:first-child{border-top:0}
.mk{width:52px;flex:none;font-size:13px;color:var(--mute);overflow:hidden;text-overflow:ellipsis}
.mv{flex:1;min-width:0;font-size:15px;line-height:1.3;word-break:break-word}
.mv small{display:flex;gap:8px;align-items:center;font-size:11.5px;color:var(--mute);margin-top:2px;flex-wrap:wrap}
.lockk{display:inline-flex;align-items:center;gap:2px;color:var(--ink2);font-weight:600}
.lockk svg.i{width:11px;height:11px;stroke-width:2.2}
.used{display:inline-flex;align-items:center;gap:3px}
.used .g{width:16px;height:16px;font-size:10px;border-radius:4px}
.medit{padding:6px 0 10px;border-top:1px solid var(--rule)}
.medit:first-child{border-top:0}
.medit .q{font-size:12px;color:var(--mute);margin:6px 2px 0}

/* 找 */
.srch{display:flex;gap:8px;align-items:center;margin:0 0 10px}
.srch .field{border-radius:22px;padding:0 16px}
.hit{display:grid;grid-template-columns:22px 1fr auto;gap:10px;align-items:center;padding:9px 0;border-top:1px solid var(--rule);font-size:14.5px}
.hit:first-child{border-top:0}
.hit time{font-size:12px;color:var(--mute);white-space:nowrap}
.hit span.t{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}

/* 语音 */
.vsheet{position:fixed;inset:0;z-index:40}
.vsheet .dim{position:absolute;inset:0;background:rgba(28,26,23,.38)}
.sheet{position:absolute;left:0;right:0;bottom:0;max-width:600px;margin:0 auto;height:min(640px,86vh);height:min(640px,86dvh);background:var(--paper);border-radius:28px 28px 0 0;
  padding:10px 20px calc(env(safe-area-inset-bottom) + 18px);display:flex;flex-direction:column;user-select:none;-webkit-user-select:none;touch-action:none}
.grab{width:40px;height:5px;border-radius:3px;background:var(--faint);margin:0 auto 12px;flex:none}
.vtop{display:flex;align-items:center;gap:6px}
.vtop .chip svg.i{flex:none}
.capt{font-size:25px;font-weight:600;line-height:1.45;letter-spacing:-.01em;margin-top:22px;min-height:72px;max-height:30vh;overflow-y:auto;word-break:break-word}
.capt .ph{color:var(--faint)}
.capt .tmp{color:var(--ink2)}
.caret{display:inline-block;width:2px;height:27px;background:var(--ink);vertical-align:-5px;margin-left:2px}
.hot{margin-top:14px;padding:10px 12px}
.hotw{display:flex;flex-wrap:wrap;gap:6px}
.wave{display:flex;align-items:center;justify-content:center;gap:4px;height:48px;margin-top:12px;flex:none}
.wave i{display:block;width:4px;border-radius:2px;background:var(--ink);height:4px}
.vbot{margin-top:auto;text-align:center;flex:none}
.cancel{width:56px;height:56px;border-radius:28px;border:1.5px dashed var(--faint);display:grid;place-items:center;color:var(--mute);margin:0 auto}
.cancel.armed{border:0;background:var(--ink);color:var(--paper)}
.vhint{margin:6px 0 14px;display:flex;align-items:center;justify-content:center;gap:4px;min-height:17px}
.hold{width:96px;height:96px;border-radius:48px;background:var(--red);color:#fff;display:grid;place-items:center;margin:0 auto;box-shadow:0 0 0 10px var(--red-soft)}
.hold.busy{background:var(--ink2);box-shadow:0 0 0 10px var(--fill)}
.vlab{font-size:15px;font-weight:600;margin-top:16px}
.vsheet.armed .vlab{color:var(--ink)}

/* 登录 */
.login{max-width:400px;margin:0 auto;padding:calc(env(safe-area-inset-top) + 18vh) 16px 40px;text-align:center}
.login .mark{width:72px;height:72px;border-radius:18px;margin:0 auto 18px;background:var(--card);border:1px solid var(--rule);display:grid;place-items:center;font-size:38px;font-weight:800}
.login .btn{width:100%;margin-top:10px}
.login .field{margin-top:18px;text-align:center}
.login .err{color:var(--ink2);font-size:13px;margin-top:12px;min-height:18px}
