/* ===== 基础变量 ===== */
:root{
  --wall:linear-gradient(160deg,#3B2A45,#151118 60%,#0B0B0D);
  --veil-1:rgba(8,8,10,.34);
  --veil-2:rgba(8,8,10,.58);
  --ink:#FFFFFF;
  --ink-2:rgba(255,255,255,.74);
  --ink-3:rgba(255,255,255,.46);
  --glass:rgba(255,255,255,.10);
  --glass-2:rgba(255,255,255,.17);
  --glass-line:rgba(255,255,255,.16);
  --glass-line-2:rgba(255,255,255,.26);
  --panel:rgba(18,18,22,.72);
  --panel-solid:rgba(16,16,20,.94);
  --accent:#E2703A;
  --accent-fg:#160D07;
  --accent-soft:rgba(226,112,58,.28);
  --safe-t:env(safe-area-inset-top,0px);
  --safe-b:env(safe-area-inset-bottom,0px);
}
:root[data-accent="moon"]{ --accent:#9DB6D8; --accent-fg:#0C1218; --accent-soft:rgba(157,182,216,.28); }
:root[data-accent="moss"]{ --accent:#9CC3A6; --accent-fg:#0B120D; --accent-soft:rgba(156,195,166,.28); }
:root[data-accent="rose"]{ --accent:#DCA3AC; --accent-fg:#170D0F; --accent-soft:rgba(220,163,172,.28); }
:root[data-dim="soft"]{ --veil-1:rgba(8,8,10,.20); --veil-2:rgba(8,8,10,.46); }
:root[data-dim="deep"]{ --veil-1:rgba(8,8,10,.48); --veil-2:rgba(8,8,10,.76); }

*{ box-sizing:border-box; -webkit-tap-highlight-color:transparent; }
html,body{ height:100%; }
body{
  margin:0;
  background:#0B0B0D;
  color:var(--ink);
  font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","PingFang SC","Hiragino Sans GB","Microsoft YaHei",system-ui,sans-serif;
  font-size:16px; line-height:1.6;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
button{ font-family:inherit; }
::selection{ background:var(--accent-soft); }

/* 滚动条：全部隐藏。Windows 开启「始终显示滚动条」时，浏览器会画出带上下箭头的白方块，很破坏观感 */
*{ scrollbar-width:none; -ms-overflow-style:none; }
*::-webkit-scrollbar{ width:0; height:0; display:none; }

/* 背景与遮罩 */
.wallpaper{
  position:fixed; inset:0; z-index:-2;
  background:var(--wall);
  background-size:cover; background-position:center;
  transition:filter .4s ease;
}
.veil{
  position:fixed; inset:0; z-index:-1; pointer-events:none;
  background:linear-gradient(to bottom,var(--veil-2) 0%,var(--veil-1) 20%,var(--veil-1) 60%,var(--veil-2) 100%);
}

/* ===== 顶栏 ===== */
.header{
  position:fixed; top:0; left:0; right:0; z-index:30;
  height:calc(56px + var(--safe-t));
  padding:var(--safe-t) 6px 0;
  display:flex; align-items:center; gap:2px;
  background:linear-gradient(to bottom,rgba(8,8,10,.42),rgba(8,8,10,.16) 70%,transparent);
  -webkit-backdrop-filter:blur(14px);
  backdrop-filter:blur(14px);
  -webkit-mask-image:linear-gradient(to bottom,#000 70%,transparent);
  mask-image:linear-gradient(to bottom,#000 70%,transparent);
}
.head-center{ flex:1; min-width:0; text-align:center; }
.title{
  font-size:15px; font-weight:600; letter-spacing:.01em;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
  text-shadow:0 1px 8px rgba(0,0,0,.5);
}
.subtitle{
  font-size:11px; color:var(--ink-3); letter-spacing:.02em;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
  margin-top:1px;
}
.icon-btn{
  width:38px; height:38px; flex:0 0 auto;
  display:grid; place-items:center;
  border:0; border-radius:50%; background:transparent;
  color:var(--ink-2); cursor:pointer;
  transition:background-color .18s ease,color .18s ease,transform .12s ease;
}
.icon-btn svg{ width:21px; height:21px; }
.icon-btn.sm svg{ width:18px; height:18px; }
.icon-btn:hover{ background:var(--glass); color:var(--ink); }
.icon-btn:active{ transform:scale(.92); }

/* ===== 消息流 ===== */
.stream{
  max-width:760px; margin:0 auto;
  padding:calc(58px + var(--safe-t) + 26px) 18px calc(118px + var(--safe-b));
  display:flex; flex-direction:column; gap:22px;
  transition:padding-bottom .28s ease;
}
body.panel-open .stream{ padding-bottom:calc(400px + var(--safe-b)); }
.stream.is-empty{
  min-height:100dvh; justify-content:center; align-items:center;
  padding-bottom:calc(190px + var(--safe-b)); text-align:center;
}

/* 空状态 */
.hero{ width:100%; display:flex; flex-direction:column; align-items:center; }
.hero-mark{
  width:44px; height:44px; margin-bottom:18px;
  display:grid; place-items:center; color:var(--accent);
  filter:drop-shadow(0 2px 12px rgba(0,0,0,.5));
  animation:rise .7s cubic-bezier(.2,.8,.2,1) both;
}
.hero-mark svg{ width:34px; height:34px; }
.hero h1{
  margin:0 0 8px; font-size:30px; font-weight:600; letter-spacing:-.02em;
  text-shadow:0 2px 20px rgba(0,0,0,.6);
  animation:rise .7s cubic-bezier(.2,.8,.2,1) .05s both;
}
.hero p{
  margin:0; font-size:14.5px; color:var(--ink-2);
  text-shadow:0 1px 10px rgba(0,0,0,.6);
  animation:rise .7s cubic-bezier(.2,.8,.2,1) .1s both;
}
.chips{
  display:flex; flex-wrap:wrap; gap:8px; justify-content:center;
  margin-top:28px; max-width:520px;
  animation:rise .7s cubic-bezier(.2,.8,.2,1) .15s both;
}
.chip{
  padding:9px 15px; border-radius:999px;
  border:1px solid var(--glass-line); background:var(--glass);
  -webkit-backdrop-filter:blur(12px); backdrop-filter:blur(12px);
  color:var(--ink-2); font-size:13.5px; line-height:1.2; cursor:pointer;
  transition:background-color .18s ease,color .18s ease,transform .14s ease;
}
.chip:hover{ background:var(--glass-2); color:var(--ink); }
.chip:active{ transform:scale(.96); }

/* 气泡 */
.msg{ display:flex; flex-direction:column; animation:rise .45s cubic-bezier(.2,.8,.2,1) both; }
.msg.user{ align-items:flex-end; }
.msg.assistant{ align-items:flex-start; }
.bubble{
  max-width:84%; padding:11px 16px;
  background:var(--glass-2);
  -webkit-backdrop-filter:blur(18px); backdrop-filter:blur(18px);
  border:1px solid var(--glass-line);
  border-radius:20px 20px 6px 20px;
  font-size:15.5px; line-height:1.65;
  white-space:pre-wrap; word-break:break-word; overflow-wrap:anywhere;
  text-shadow:0 1px 6px rgba(0,0,0,.35);
}
.content{
  font-size:16px; line-height:1.78; max-width:100%;
  white-space:pre-wrap; word-break:break-word; overflow-wrap:anywhere;
  text-shadow:0 1px 10px rgba(0,0,0,.72),0 0 1px rgba(0,0,0,.4);
}
.content:empty{ display:none; }
.sticker-img{
  max-width:136px; max-height:136px; border-radius:14px;
  display:block; box-shadow:0 6px 24px rgba(0,0,0,.4);
}
.msg.user .sticker-img{ margin-left:auto; }

.typing{ display:flex; align-items:center; gap:5px; height:26px; }
.typing i{
  width:5px; height:5px; border-radius:50%; display:block;
  background:rgba(255,255,255,.7); animation:blink 1.3s infinite ease-in-out;
}
.typing i:nth-child(2){ animation-delay:.18s; }
.typing i:nth-child(3){ animation-delay:.36s; }

.notice{
  font-size:13.5px; line-height:1.6; color:var(--ink-2);
  border-left:2px solid var(--accent); padding:2px 0 2px 12px;
  text-shadow:0 1px 6px rgba(0,0,0,.5);
}

/* ===== 底部输入区 ===== */
.composer{
  position:fixed; left:0; right:0; bottom:0; z-index:20;
  display:flex; flex-direction:column; gap:10px;
  padding:10px 14px calc(10px + var(--safe-b));
  background:linear-gradient(to top,rgba(8,8,10,.55) 30%,transparent);
}
.composer-inner{
  width:100%; max-width:760px; margin:0 auto;
  display:flex; align-items:flex-end; gap:4px;
  padding:6px 6px 6px 6px;
  background:rgba(255,255,255,.13);
  -webkit-backdrop-filter:blur(22px) saturate(160%);
  backdrop-filter:blur(22px) saturate(160%);
  border:1px solid var(--glass-line);
  border-radius:26px;
  box-shadow:0 8px 32px rgba(0,0,0,.35);
  transition:border-color .2s ease,box-shadow .2s ease;
}
.composer-inner:focus-within{
  border-color:var(--glass-line-2);
  box-shadow:0 8px 32px rgba(0,0,0,.4),0 0 0 3px var(--accent-soft);
}
#input{
  flex:1; min-height:38px; max-height:150px;
  padding:9px 2px; border:0; outline:0; background:transparent;
  color:var(--ink); font-size:16px; line-height:1.45; resize:none; overflow-y:auto;
}
#input::placeholder{ color:var(--ink-3); }
/* 隐藏输入框的系统滚动条（Windows 上会显示成带上下箭头的白方块） */
#input{ scrollbar-width:none; -ms-overflow-style:none; }
#input::-webkit-scrollbar{ width:0; height:0; display:none; }
.mini-btn{
  width:34px; height:34px; flex:0 0 auto; margin-bottom:2px;
  display:grid; place-items:center;
  border:0; border-radius:50%; background:transparent;
  color:var(--ink-2); cursor:pointer;
  transition:background-color .18s ease,color .18s ease,transform .14s ease;
}
.mini-btn svg{ width:20px; height:20px; }
.mini-btn:hover{ background:var(--glass); color:var(--ink); }
.mini-btn:active{ transform:scale(.92); }
.mini-btn.on{ color:var(--accent); }
.send{
  width:38px; height:38px; flex:0 0 auto; margin-bottom:0;
  display:grid; place-items:center;
  border:0; border-radius:50%;
  background:var(--accent); color:var(--accent-fg); cursor:pointer;
  transition:transform .15s ease,opacity .2s ease;
}
.send svg{ width:19px; height:19px; }
.send:disabled{ opacity:.3; cursor:default; }
.send:not(:disabled):active{ transform:scale(.92); }

/* ===== 表情面板 ===== */
.sticker-panel{
  width:100%; max-width:760px; margin:0 auto;
  background:var(--panel);
  -webkit-backdrop-filter:blur(26px) saturate(160%);
  backdrop-filter:blur(26px) saturate(160%);
  border:1px solid var(--glass-line);
  border-radius:22px;
  overflow:hidden;
  animation:panel-up .28s cubic-bezier(.2,.8,.2,1) both;
}
.sp-head{
  display:flex; align-items:center; justify-content:space-between;
  padding:8px 10px 8px 8px; border-bottom:1px solid var(--glass-line);
}
.sp-tabs{ display:flex; gap:4px; padding:3px; border-radius:12px; background:rgba(255,255,255,.07); }
.sp-tabs button{
  padding:6px 16px; border:0; border-radius:9px; background:transparent;
  color:var(--ink-3); font-size:13.5px; cursor:pointer;
  transition:background-color .18s ease,color .18s ease;
}
.sp-tabs button[aria-pressed="true"]{ background:var(--glass-2); color:var(--ink); }
.sp-body{ height:250px; overflow-y:auto; padding:10px; }

.emoji-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(44px,1fr)); gap:2px; }
.emoji-btn{
  height:44px; border:0; border-radius:11px; background:transparent;
  font-size:25px; line-height:1; cursor:pointer;
  transition:background-color .15s ease,transform .12s ease;
}
.emoji-btn:hover{ background:var(--glass); }
.emoji-btn:active{ transform:scale(.9); }

.pack-grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(76px,1fr)); gap:8px; }
.pack-tile{
  position:relative; aspect-ratio:1/1;
  border:1px solid var(--glass-line); border-radius:14px;
  background:var(--glass); overflow:hidden; cursor:pointer; padding:0;
  transition:transform .14s ease,border-color .18s ease;
}
.pack-tile:hover{ border-color:var(--glass-line-2); }
.pack-tile:active{ transform:scale(.95); }
.pack-tile img{ width:100%; height:100%; object-fit:cover; display:block; }
.pack-tile.add{
  display:grid; place-items:center; color:var(--ink-3);
  border-style:dashed; font-size:12px; gap:4px;
}
.pack-tile.add svg{ width:22px; height:22px; }
.pack-tile .rm{
  position:absolute; top:6px; right:6px; width:24px; height:24px;
  display:grid; place-items:center; border:0; border-radius:50%;
  background:rgba(0,0,0,.55); color:#fff; cursor:pointer; opacity:.55;
  transition:opacity .16s ease,background-color .16s ease;
}
.pack-tile .rm:hover{ opacity:1; background:rgba(0,0,0,.8); }
.pack-tile .rm svg{ width:12px; height:12px; }
.pack-empty{
  grid-column:1/-1; padding:28px 10px; text-align:center;
  color:var(--ink-3); font-size:13.5px; line-height:1.7;
}

/* ===== 侧栏 ===== */
.scrim{
  position:fixed; inset:0; z-index:40;
  background:rgba(0,0,0,.42);
  -webkit-backdrop-filter:blur(3px); backdrop-filter:blur(3px);
  animation:fade .24s ease both;
}
.drawer{
  position:fixed; top:0; bottom:0; left:0; z-index:50;
  width:288px; max-width:85vw;
  display:flex; flex-direction:column;
  padding-top:var(--safe-t); padding-bottom:var(--safe-b);
  background:var(--panel-solid);
  -webkit-backdrop-filter:blur(30px); backdrop-filter:blur(30px);
  border-right:1px solid var(--glass-line);
  transform:translateX(-102%);
  transition:transform .34s cubic-bezier(.2,.8,.2,1);
}
.drawer.open{ transform:none; }
.drawer-head{
  display:flex; align-items:center; justify-content:space-between;
  padding:12px 10px 12px 20px; border-bottom:1px solid var(--glass-line);
}
.drawer-title{ font-size:13.5px; font-weight:600; color:var(--ink-3); letter-spacing:.04em; }
.session-list{ flex:1; overflow-y:auto; padding:8px; }
.session-item{
  display:flex; align-items:center; gap:8px;
  width:100%; padding:11px 12px; margin-bottom:2px;
  border:0; border-radius:12px; background:transparent;
  color:var(--ink-2); font-size:14.5px; text-align:left; cursor:pointer;
  transition:background-color .16s ease,color .16s ease;
}
.session-item span{ flex:1; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.session-item:hover{ background:var(--glass); color:var(--ink); }
.session-item.active{ background:var(--glass-2); color:var(--ink); font-weight:500; }
.session-item .del{
  width:22px; height:22px; flex:0 0 auto; opacity:0;
  display:grid; place-items:center; border:0; border-radius:7px;
  background:transparent; color:var(--ink-3); cursor:pointer;
}
.session-item .del svg{ width:14px; height:14px; }
.session-item:hover .del{ opacity:1; }
.drawer-foot{ padding:10px 12px calc(10px + var(--safe-b)); border-top:1px solid var(--glass-line); }
.text-btn{
  width:100%; padding:10px; border:0; border-radius:11px; background:transparent;
  color:var(--ink-3); font-size:14px; cursor:pointer;
  transition:background-color .16s ease,color .16s ease;
}
.text-btn:hover{ background:var(--glass); color:var(--ink); }

/* ===== 设置面板 ===== */
.sheet{ position:fixed; inset:0; z-index:60; }
.sheet[hidden]{ display:none; }
.sheet-backdrop{ position:absolute; inset:0; background:rgba(0,0,0,.5); animation:fade .22s ease both; }
.sheet-panel{
  position:absolute; left:0; right:0; bottom:0;
  max-width:560px; margin:0 auto; max-height:90dvh; overflow-y:auto;
  padding:8px 22px calc(26px + var(--safe-b));
  background:var(--panel-solid);
  -webkit-backdrop-filter:blur(30px); backdrop-filter:blur(30px);
  border:1px solid var(--glass-line); border-bottom:0;
  border-radius:26px 26px 0 0;
  animation:sheet-up .34s cubic-bezier(.2,.8,.2,1) both;
}
.sheet-grip{ width:36px; height:4px; margin:6px auto 16px; border-radius:99px; background:var(--glass-line-2); }
.sheet-title{ margin:0 0 22px; font-size:19px; font-weight:600; letter-spacing:-.01em; }
.field{ margin-bottom:22px; }
.label{ display:block; margin-bottom:9px; font-size:13px; color:var(--ink-2); letter-spacing:.01em; }
.input{
  width:100%; height:46px; padding:0 14px;
  border:1px solid var(--glass-line); border-radius:13px;
  background:rgba(255,255,255,.06); color:var(--ink);
  font-family:inherit; font-size:15px; outline:0;
  transition:border-color .18s ease,box-shadow .18s ease;
}
.input:focus{ border-color:var(--accent); box-shadow:0 0 0 3px var(--accent-soft); }
.hint{ margin:8px 0 0; font-size:12.5px; line-height:1.6; color:var(--ink-3); }
.walls{ display:grid; grid-template-columns:repeat(5,1fr); gap:9px; }
.wall-tile{
  position:relative; aspect-ratio:3/4; padding:0; overflow:hidden;
  border:1px solid var(--glass-line); border-radius:13px;
  background:transparent; cursor:pointer;
  transition:transform .16s ease,border-color .18s ease;
}
.wall-tile span{ display:block; width:100%; height:100%; }
.wall-tile:hover{ transform:translateY(-2px); }
.wall-tile[aria-pressed="true"]{ border-color:var(--accent); box-shadow:0 0 0 2px var(--accent-soft); }
.wall-tile.custom{ display:grid; place-items:center; border-style:dashed; color:var(--ink-3); }
.wall-tile.custom svg{ width:22px; height:22px; }
.swatches{ display:flex; gap:12px; }
.swatch{
  width:32px; height:32px; border-radius:50%; cursor:pointer; padding:0;
  border:1px solid var(--glass-line-2);
  transition:transform .16s ease,box-shadow .16s ease;
}
.swatch[data-accent="ember"]{ background:#E2703A; }
.swatch[data-accent="moon"]{ background:#9DB6D8; }
.swatch[data-accent="moss"]{ background:#9CC3A6; }
.swatch[data-accent="rose"]{ background:#DCA3AC; }
.swatch[aria-pressed="true"]{ box-shadow:0 0 0 2px var(--panel-solid),0 0 0 4px var(--accent); }
.swatch:hover{ transform:scale(1.07); }
.seg{ display:flex; gap:6px; padding:3px; border-radius:14px; background:rgba(255,255,255,.07); }
.seg button{
  flex:1; height:38px; border:0; border-radius:11px; background:transparent;
  color:var(--ink-2); font-size:14px; cursor:pointer;
  transition:background-color .18s ease,color .18s ease;
}
.seg button[aria-pressed="true"]{ background:var(--glass-2); color:var(--ink); }
.sheet-actions{ display:flex; flex-direction:column; gap:10px; margin-top:26px; }
.btn-primary{
  height:48px; border:0; border-radius:14px;
  background:var(--accent); color:var(--accent-fg);
  font-size:15.5px; font-weight:500; cursor:pointer;
  transition:transform .15s ease,opacity .2s ease;
}
.btn-primary:active{ transform:scale(.985); }
.btn-ghost{
  height:44px; border:1px solid var(--glass-line); border-radius:14px;
  background:transparent; color:var(--ink-3); font-size:14px; cursor:pointer;
  transition:background-color .16s ease,color .16s ease;
}
.btn-ghost:hover{ background:var(--glass); color:var(--ink-2); }

/* ===== 动画 ===== */
@keyframes rise{ from{ opacity:0; transform:translateY(8px); } to{ opacity:1; transform:none; } }
@keyframes fade{ from{ opacity:0; } to{ opacity:1; } }
@keyframes sheet-up{ from{ transform:translateY(100%); } to{ transform:none; } }
@keyframes panel-up{ from{ opacity:0; transform:translateY(12px) scale(.98); } to{ opacity:1; transform:none; } }
@keyframes blink{ 0%,60%,100%{ opacity:.3; transform:translateY(0); } 30%{ opacity:1; transform:translateY(-2px); } }

@media (prefers-reduced-motion:reduce){
  *{ animation-duration:.01ms !important; transition-duration:.01ms !important; }
}
@media (min-width:640px){
  .stream{ padding-left:28px; padding-right:28px; }
  .composer{ padding-left:20px; padding-right:20px; }
}
/* ================= 外观自定义 ================= */
:root[data-fs="s"]{ --fs-mul:.9; }
:root[data-fs="l"]{ --fs-mul:1.12; }
:root[data-fs="xl"]{ --fs-mul:1.26; }
.content{ font-size:calc(16px * var(--fs-mul,1)); }
.bubble{ font-size:calc(15.5px * var(--fs-mul,1)); }

:root[data-bubble="light"]{ --bubble-bg:rgba(255,255,255,.10); }
:root[data-bubble="mid"]{ --bubble-bg:rgba(255,255,255,.17); }
:root[data-bubble="solid"]{ --bubble-bg:rgba(255,255,255,.28); }
:root[data-radius="square"]{ --bubble-r:12px; }
:root[data-radius="mid"]{ --bubble-r:20px; }
:root[data-radius="round"]{ --bubble-r:26px; }
.bubble{
  background:var(--bubble-bg,rgba(255,255,255,.17));
  border-radius:var(--bubble-r,20px) var(--bubble-r,20px) 6px var(--bubble-r,20px);
}

:root[data-ui="clear"]{ --glass:rgba(255,255,255,.07); --glass-2:rgba(255,255,255,.13); --panel:rgba(18,18,22,.55); --panel-solid:rgba(16,16,20,.86); }
:root[data-ui="mid"]{ --glass:rgba(255,255,255,.10); --glass-2:rgba(255,255,255,.17); --panel:rgba(18,18,22,.72); --panel-solid:rgba(16,16,20,.94); }
:root[data-ui="solid"]{ --glass:rgba(255,255,255,.14); --glass-2:rgba(255,255,255,.24); --panel:rgba(18,18,22,.85); --panel-solid:rgba(16,16,20,.98); }

textarea.input{ height:auto; min-height:92px; padding:12px 14px; line-height:1.6; resize:none; }
.seg.wrap{ flex-wrap:wrap; }
.seg.wrap button{ min-width:64px; }
/* ================= 侧栏功能入口 ================= */
.drawer-tools{ padding:8px; border-top:1px solid var(--glass-line); }
.tool-item{
  display:flex; align-items:center; gap:10px;
  width:100%; padding:11px 12px; margin-bottom:2px;
  border:0; border-radius:12px; background:transparent;
  color:var(--ink-2); font-size:14.5px; text-align:left; cursor:pointer;
  transition:background-color .16s ease,color .16s ease;
}
.tool-item svg{ width:19px; height:19px; flex:0 0 auto; }
.tool-item:hover{ background:var(--glass); color:var(--ink); }
.tool-item .soon{ margin-left:auto; font-size:11px; color:var(--ink-3); }

/* ================= 功能空间（全屏层） ================= */
.space{
  position:fixed; inset:0; z-index:70;
  display:flex; flex-direction:column;
  background:var(--panel-solid);
  -webkit-backdrop-filter:blur(30px) saturate(160%);
  backdrop-filter:blur(30px) saturate(160%);
  animation:space-in .3s cubic-bezier(.2,.8,.2,1) both;
}
.space[hidden]{ display:none; }
.space-head{
  display:flex; align-items:center; gap:6px;
  padding:calc(var(--safe-t) + 8px) 12px 10px;
  border-bottom:1px solid var(--glass-line);
}
.space-title{ flex:1; font-size:16px; font-weight:600; letter-spacing:-.01em; }
.space-body{
  flex:1; overflow-y:auto; width:100%; max-width:640px; margin:0 auto;
  padding:18px 16px calc(30px + var(--safe-b));
}

.card{
  padding:16px; margin-bottom:14px;
  background:var(--glass); border:1px solid var(--glass-line); border-radius:18px;
}
.card-title{ font-size:13px; color:var(--ink-3); letter-spacing:.02em; margin-bottom:10px; }
.big-num{ font-size:28px; font-weight:600; letter-spacing:-.02em; }
.big-num small{ font-size:14px; font-weight:400; color:var(--ink-3); margin-left:6px; }
.grid2{ display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.grid3{ display:grid; grid-template-columns:repeat(3,1fr); gap:8px; }

.row-item{
  display:flex; align-items:center; gap:12px;
  padding:12px 4px; border-bottom:1px solid var(--glass-line);
}
.row-item:last-child{ border-bottom:0; }
.row-main{ flex:1; min-width:0; }
.row-title{ font-size:15px; }
.row-sub{ font-size:12.5px; color:var(--ink-3); margin-top:2px; }
.row-amt{ font-size:15px; font-weight:600; }
.row-amt.out{ color:#F0A48C; }
.row-amt.in{ color:#9CC3A6; }
.row-del{
  width:26px; height:26px; flex:0 0 auto; display:grid; place-items:center;
  border:0; border-radius:8px; background:transparent; color:var(--ink-3); cursor:pointer;
}
.row-del:hover{ background:var(--glass-2); color:var(--ink); }
.row-del svg{ width:14px; height:14px; }

.chip-btn{
  padding:8px 13px; border-radius:999px;
  border:1px solid var(--glass-line); background:transparent;
  color:var(--ink-2); font-size:13.5px; cursor:pointer;
  transition:background-color .16s ease,color .16s ease,border-color .16s ease;
}
.chip-btn[aria-pressed="true"]{ background:var(--accent); color:var(--accent-fg); border-color:transparent; }
.chip-wrap{ display:flex; flex-wrap:wrap; gap:8px; }

.btn-full{
  width:100%; height:48px; border:0; border-radius:15px;
  background:var(--accent); color:var(--accent-fg);
  font-size:15.5px; font-weight:500; cursor:pointer;
  transition:transform .15s ease,opacity .18s ease;
}
.btn-full:active{ transform:scale(.985); }
.btn-line{
  width:100%; height:46px; border:1px solid var(--glass-line); border-radius:15px;
  background:transparent; color:var(--ink-2); font-size:15px; cursor:pointer;
}
.btn-line:hover{ background:var(--glass); color:var(--ink); }

.form-line{ display:flex; gap:8px; margin-bottom:10px; }
.form-line .input{ flex:1; }
.bar-wrap{ height:7px; border-radius:99px; background:var(--glass-2); overflow:hidden; margin-top:8px; }
.bar{ height:100%; border-radius:99px; background:var(--accent); transition:width .4s ease; }
.empty-tip{ padding:26px 8px; text-align:center; color:var(--ink-3); font-size:13.5px; line-height:1.7; }

/* 朗读按钮 */
.speak-btn{
  width:30px; height:30px; margin-top:8px;
  display:grid; place-items:center;
  border:0; border-radius:50%; background:transparent;
  color:var(--ink-3); cursor:pointer;
  transition:background-color .16s ease,color .16s ease;
}
.speak-btn svg{ width:16px; height:16px; }
.speak-btn:hover{ background:var(--glass); color:var(--ink); }
.speak-btn.on{ color:var(--accent); }

@keyframes space-in{ from{ opacity:0; transform:translateY(14px); } to{ opacity:1; transform:none; } }
/* ================= 健康 / 游戏 / 图标 ================= */
.entry-grid{ display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.entry-tile{
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:8px;
  padding:20px 10px; border-radius:18px;
  border:1px solid var(--glass-line); background:var(--glass);
  color:var(--ink); font-size:14.5px; cursor:pointer;
  transition:transform .15s ease,background-color .18s ease;
}
.entry-tile:active{ transform:scale(.97); }
.entry-tile .ico{ font-size:26px; line-height:1; }
.entry-tile .sub{ font-size:12px; color:var(--ink-3); }

.pick-row{ display:flex; gap:10px; justify-content:center; margin:16px 0; }
.pick-btn{
  flex:1; max-width:150px; height:96px;
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:6px;
  border:1px solid var(--glass-line); border-radius:18px;
  background:var(--glass); color:var(--ink);
  font-size:15px; cursor:pointer;
  transition:transform .14s ease,background-color .18s ease,border-color .18s ease;
}
.pick-btn .ico{ font-size:30px; }
.pick-btn:active{ transform:scale(.95); }
.pick-btn.wide{ max-width:100%; flex:1 1 100%; height:auto; padding:16px; }
.quiz-opt{
  width:100%; padding:15px; margin-bottom:10px;
  border:1px solid var(--glass-line); border-radius:15px;
  background:var(--glass); color:var(--ink); font-size:15px; text-align:left; cursor:pointer;
  transition:background-color .16s ease;
}
.quiz-opt:hover{ background:var(--glass-2); }
.result-big{ text-align:center; padding:22px 10px; }
.result-big .em{ font-size:44px; line-height:1; margin-bottom:12px; }
.result-big .txt{ font-size:19px; font-weight:600; }
.result-big .sub{ font-size:13.5px; color:var(--ink-3); margin-top:8px; line-height:1.7; }

.health-row{ display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:12px; }
.health-row .lb{ font-size:14px; color:var(--ink-2); }
.health-row .input{ width:130px; text-align:right; }
.mood-wrap{ display:flex; gap:8px; flex-wrap:wrap; }
.mood-btn{
  display:flex; flex-direction:column; align-items:center; gap:3px;
  padding:9px 12px; border-radius:14px;
  border:1px solid var(--glass-line); background:transparent; color:var(--ink-2);
  font-size:11.5px; cursor:pointer;
}
.mood-btn .em{ font-size:22px; }
.mood-btn[aria-pressed="true"]{ background:var(--accent); color:var(--accent-fg); border-color:transparent; }
.trend{ display:flex; align-items:flex-end; gap:4px; height:80px; margin-top:10px; }
.trend .b{ flex:1; background:var(--accent); border-radius:4px 4px 0 0; min-height:3px; opacity:.85; }

.icon-preview{
  width:150px; height:150px; margin:0 auto 16px; border-radius:34px; overflow:hidden;
  box-shadow:0 10px 30px rgba(0,0,0,.35); border:1px solid var(--glass-line);
}
.icon-preview img{ width:100%; height:100%; display:block; }
.color-row{ display:flex; gap:10px; flex-wrap:wrap; }
.color-dot{ width:36px; height:36px; border-radius:50%; border:2px solid transparent; cursor:pointer; }
.color-dot[aria-pressed="true"]{ border-color:var(--ink); }
/* ================= 新版侧栏 ================= */
.drawer-profile{
  display:flex; align-items:center; gap:12px; width:100%;
  padding:calc(var(--safe-t) + 16px) 18px 14px;
  border:0; background:transparent; color:var(--ink);
  cursor:pointer; text-align:left;
}
.drawer-profile:active{ opacity:.8; }
.avatar{
  width:36px; height:36px; flex:0 0 auto;
  display:grid; place-items:center;
  border-radius:50%;
  background:linear-gradient(140deg,rgba(255,255,255,.30),rgba(255,255,255,.10));
  border:1px solid var(--glass-line);
  font-size:16px; line-height:1; color:var(--ink);
}
.drawer-profile .avatar{ width:42px; height:42px; font-size:18px; }
.drawer-profile .who{ flex:1; font-size:16px; font-weight:600; letter-spacing:-.01em; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.chev svg{ width:18px; height:18px; color:var(--ink-3); }
.list-head{
  display:flex; align-items:center; justify-content:space-between;
  padding:4px 10px 8px 20px;
  font-size:12px; color:var(--ink-3); letter-spacing:.05em;
}
.drawer-bottom{
  display:flex; align-items:center; gap:6px;
  padding:12px 12px calc(12px + var(--safe-b));
  border-top:1px solid var(--glass-line);
}
.ai-chip{ display:flex; align-items:center; gap:10px; flex:1; min-width:0; padding-left:6px; }
.ai-chip .who{ font-size:15px; font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.apps-btn{
  width:44px; height:44px; flex:0 0 auto; padding:3px;
  display:grid; place-items:center;
  border:0; background:transparent; cursor:pointer;
  transition:transform .15s ease;
}
.apps-btn{ color:var(--ink-2); }
.apps-btn svg{ width:21px; height:21px; }
.apps-btn:hover{ color:var(--ink); background:var(--glass); }
.apps-btn:active{ transform:scale(.9); }

/* ================= 功能面板 ================= */
.apps-sheet{ position:fixed; inset:0; z-index:65; }
.apps-sheet[hidden]{ display:none; }
.apps-backdrop{ position:absolute; inset:0; background:rgba(0,0,0,.5); animation:fade .2s ease both; }
.apps-panel{
  position:absolute; left:0; right:0; bottom:0;
  max-width:520px; margin:0 auto;
  padding:8px 20px calc(24px + var(--safe-b));
  background:var(--panel-solid);
  -webkit-backdrop-filter:blur(30px) saturate(160%); backdrop-filter:blur(30px) saturate(160%);
  border:1px solid var(--glass-line); border-bottom:0;
  border-radius:26px 26px 0 0;
  animation:sheet-up .3s cubic-bezier(.2,.8,.2,1) both;
}
.apps-title{ font-size:13px; color:var(--ink-3); letter-spacing:.05em; margin:2px 0 16px; }
.apps-grid{ display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.app-tile{
  display:flex; flex-direction:column; align-items:center; gap:10px;
  padding:18px 10px 16px; border-radius:20px;
  border:1px solid var(--glass-line); background:var(--glass);
  color:var(--ink); font-size:14.5px; cursor:pointer;
  transition:transform .15s ease,background-color .18s ease;
}
.app-tile:hover{ background:var(--glass-2); }
.app-tile:active{ transform:scale(.96); }
.app-ico{
  width:52px; height:52px; display:grid; place-items:center; border-radius:16px;
  background:linear-gradient(145deg,var(--c1),var(--c2));
  color:#fff; box-shadow:0 6px 18px rgba(0,0,0,.3);
}
.app-ico svg{ width:26px; height:26px; }

/* ================= 设置分类 ================= */
.sheet-head{ display:flex; align-items:center; justify-content:space-between; gap:10px; margin:0 0 16px; }
.sheet-head .sheet-title{ margin:0; }
.btn-mini{
  height:34px; padding:0 16px; border-radius:11px; border:0;
  background:var(--accent); color:var(--accent-fg); font-size:13.5px; cursor:pointer;
}
.set-tabs{
  display:flex; gap:4px; padding:4px; margin-bottom:22px;
  border-radius:14px; background:rgba(255,255,255,.07);
}
.set-tabs button{
  flex:1; height:36px; border:0; border-radius:11px; background:transparent;
  color:var(--ink-3); font-size:13.5px; cursor:pointer;
  transition:background-color .18s ease,color .18s ease;
}
.set-tabs button[aria-pressed="true"]{ background:var(--glass-2); color:var(--ink); }
.stat-line{ font-size:13px; color:var(--ink-3); line-height:1.75; }

/* ================= 新增外观控制 ================= */
:root[data-font="round"]{ --font-stack:"PingFang SC",ui-rounded,"SF Pro Rounded","Hiragino Sans GB","Microsoft YaHei",sans-serif; }
:root[data-font="serif"]{ --font-stack:"Songti SC","SimSun",Georgia,"Times New Roman",serif; }
body{ font-family:var(--font-stack,-apple-system,BlinkMacSystemFont,"SF Pro Text","PingFang SC","Hiragino Sans GB","Microsoft YaHei",system-ui,sans-serif); }

:root[data-lh="tight"]{ --lh:1.6; }
:root[data-lh="normal"]{ --lh:1.78; }
:root[data-lh="loose"]{ --lh:2.05; }
.content{ line-height:var(--lh,1.78); }

:root[data-gap="tight"]{ --msg-gap:14px; }
:root[data-gap="normal"]{ --msg-gap:22px; }
:root[data-gap="loose"]{ --msg-gap:32px; }
.stream{ gap:var(--msg-gap,22px); }

:root[data-bcolor="accent"]{ --bubble-bg:var(--accent-soft); }
:root[data-bcolor="dark"]{ --bubble-bg:rgba(0,0,0,.42); }

:root[data-blur="soft"] .wallpaper{ filter:blur(7px); transform:scale(1.07); }
:root[data-blur="hard"] .wallpaper{ filter:blur(18px); transform:scale(1.14); }

:root[data-shadow="off"] .content,
:root[data-shadow="off"] .bubble{ text-shadow:none; }
:root[data-shadow="hard"] .content,
:root[data-shadow="hard"] .bubble{ text-shadow:0 1px 3px rgba(0,0,0,.92),0 0 12px rgba(0,0,0,.85); }

.msg .av, .msg .tm{ display:none; }
:root[data-avatar="on"] .msg.assistant .av{ display:grid; }
:root[data-time="on"] .msg .tm{ display:block; }
.av{
  width:26px; height:26px; margin-bottom:7px;
  place-items:center; border-radius:50%;
  background:var(--glass-2); border:1px solid var(--glass-line);
  font-size:13px; line-height:1;
}
.tm{ font-size:11px; color:var(--ink-3); margin-top:6px; letter-spacing:.02em; }
:root[data-speak="off"] .speak-btn{ display:none; }
/* =================================================================
   图二风格：底部功能图标栏
   ================================================================= */
.apps-sheet{ position:fixed; inset:0; z-index:65; }
.apps-sheet[hidden]{ display:none; }
.apps-backdrop{ position:absolute; inset:0; background:rgba(0,0,0,.10); animation:fade .2s ease both; }
.dock{
  position:absolute; left:14px; right:14px; bottom:calc(14px + var(--safe-b));
  max-width:520px; margin:0 auto;
  display:flex; align-items:stretch;
  padding:10px 6px 8px;
  background:rgba(250,250,252,.84);
  -webkit-backdrop-filter:blur(26px) saturate(180%); backdrop-filter:blur(26px) saturate(180%);
  border:1px solid rgba(255,255,255,.65);
  border-radius:28px;
  box-shadow:0 16px 44px rgba(16,18,26,.32);
  animation:dock-up .32s cubic-bezier(.2,.8,.2,1) both;
}
@keyframes dock-up{ from{ opacity:0; transform:translateY(26px); } to{ opacity:1; transform:none; } }
.dock-item{
  flex:1; display:flex; flex-direction:column; align-items:center; gap:5px;
  padding:9px 2px 7px; border:0; border-radius:20px; background:transparent;
  color:#717784; cursor:pointer;
  transition:background-color .18s ease,color .18s ease,transform .14s ease;
}
.dock-item{ color:#4A5260; }
.dock-item:hover{ background:rgba(120,132,155,.10); color:#20242C; }
.dock-item:active{ transform:scale(.94); }
.dock-ico svg{ width:26px; height:26px; display:block; }
.dock-name{ font-size:11.5px; letter-spacing:.01em; }

/* =================================================================
   图三风格：功能页统一浅色柔雾设计
   ================================================================= */
:root{ --serif:"Songti SC","STSong","SimSun",Georgia,"Times New Roman",serif; }

.space{
  --ink:#2B303A;
  --ink-2:#6E7480;
  --ink-3:#A6ADB9;
  --glass:rgba(255,255,255,.74);
  --glass-2:rgba(255,255,255,.94);
  --glass-line:rgba(120,132,155,.15);
  --glass-line-2:rgba(120,132,155,.28);
  --panel-solid:#F1F3F7;
  --accent-fg:#FFFFFF;
  background:
    radial-gradient(120% 60% at 10% 0%, rgba(196,215,245,.55), transparent 60%),
    radial-gradient(90% 50% at 94% 6%, rgba(226,205,240,.5), transparent 62%),
    radial-gradient(80% 50% at 50% 100%, rgba(205,230,220,.45), transparent 60%),
    var(--panel-solid);
  color:var(--ink);
}
.space-head{
  background:transparent; border-bottom:0;
  padding:calc(var(--safe-t) + 6px) 12px 4px;
}
.space-title{ font-family:var(--serif); font-size:17.5px; font-weight:500; letter-spacing:.02em; }
.space .icon-btn{ color:var(--ink-2); }
.space .icon-btn:hover{ background:rgba(120,132,155,.1); color:var(--ink); }
.space-body{ padding:12px 16px calc(30px + var(--safe-b)); }

.space .card{
  background:var(--glass);
  border:1px solid rgba(255,255,255,.72);
  border-radius:24px;
  box-shadow:0 10px 28px rgba(96,116,150,.10);
  -webkit-backdrop-filter:blur(16px); backdrop-filter:blur(16px);
  padding:18px;
}
.space .card-title{ font-family:var(--serif); font-size:13px; letter-spacing:.08em; color:var(--ink-3); margin-bottom:12px; }
.space .row-amt.out{ color:#D4574E; }
.space .row-amt.in{ color:#3E8E63; }
.space .row-item{ border-bottom-color:rgba(120,132,155,.12); }
.space .row-sub{ color:var(--ink-3); }
.space .big-num{ color:var(--ink); }
.space .input{ background:rgba(255,255,255,.86); border-color:rgba(120,132,155,.18); color:var(--ink); }
.space .input::placeholder{ color:var(--ink-3); }
.space .seg{ background:rgba(120,132,155,.10); }
.space .seg button{ color:var(--ink-2); }
.space .seg button[aria-pressed="true"]{ background:#fff; color:var(--ink); box-shadow:0 2px 8px rgba(96,116,150,.16); }
.space .chip-btn{ background:rgba(255,255,255,.72); border-color:rgba(120,132,155,.18); color:var(--ink-2); }
.space .btn-line{ background:rgba(255,255,255,.72); border-color:rgba(120,132,155,.2); color:var(--ink-2); }
.space .btn-line:hover{ background:#fff; color:var(--ink); }
.space .entry-tile, .space .pick-btn, .space .quiz-opt{ background:rgba(255,255,255,.74); border-color:rgba(120,132,155,.16); color:var(--ink); }
.space .mood-btn{ background:rgba(255,255,255,.62); border-color:rgba(120,132,155,.18); color:var(--ink-2); }
.space .trend .b{ background:linear-gradient(180deg,#93B7EA,#6E97D6); }
.space .empty-tip, .space .stat-line{ color:var(--ink-3); }
.space .row-del{ color:var(--ink-3); }
.space .row-del:hover{ background:rgba(120,132,155,.12); color:var(--ink); }
.space .btn-full{ box-shadow:0 8px 20px rgba(226,112,58,.28); }
.space .health-row .lb{ color:var(--ink-2); }

/* 日历 */
.cal{
  padding:20px 16px 16px; margin-bottom:16px;
  background:var(--glass); border:1px solid rgba(255,255,255,.72);
  border-radius:26px; box-shadow:0 12px 32px rgba(96,116,150,.12);
  -webkit-backdrop-filter:blur(18px); backdrop-filter:blur(18px);
}
.cal-head{ display:flex; align-items:flex-start; justify-content:space-between; margin-bottom:18px; }
.cal-month{ font-family:var(--serif); font-size:29px; font-weight:400; letter-spacing:-.01em; color:#3A404C; line-height:1.1; }
.orb{
  width:46px; height:46px; border-radius:50%; flex:0 0 auto;
  background:conic-gradient(from 200deg,#A9C8F0,#E4B9E9,#F7DAC6,#B7E3D2,#A9C8F0);
  box-shadow:0 6px 20px rgba(150,170,210,.45);
  filter:saturate(120%);
}
.cal-nav{ display:flex; gap:8px; margin-bottom:16px; }
.cal-nav button{
  flex:1; height:38px; border:0; border-radius:14px;
  background:rgba(255,255,255,.92); color:var(--ink-2);
  font-size:13.5px; cursor:pointer; box-shadow:0 3px 10px rgba(96,116,150,.10);
}
.cal-nav button:active{ transform:scale(.97); }
.cal-week{ display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); text-align:center; font-size:12.5px; color:var(--ink-3); margin-bottom:6px; }
.cal-grid{ display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:3px 1px; }
.cal-cell{
  position:relative; aspect-ratio:1/1; min-width:0; min-height:0; padding:0;
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:2px;
  border:0; border-radius:50%; background:transparent;
  color:#3A404C; font-size:15px; cursor:pointer;
  transition:background-color .16s ease,box-shadow .16s ease;
}
.cal-cell.empty{ pointer-events:none; }
.cal-cell .dots{ display:flex; gap:3px; height:6px; align-items:center; }
.cal-cell .dots i{ width:5px; height:5px; border-radius:50%; display:block; }
.cal-cell .sub{ font-size:9px; line-height:1; color:var(--ink-3); letter-spacing:-.02em; }
.cal-cell.today{ background:rgba(255,255,255,.96); box-shadow:0 4px 14px rgba(120,140,180,.2); }
.cal-cell.sel{ box-shadow:inset 0 0 0 2px #7FA8E0; }
.cal-note{
  margin-top:16px; text-align:center;
  font-family:var(--serif); font-size:13px; color:var(--ink-3); letter-spacing:.02em;
}

/* 健康：数据卡 */
.week-strip{ display:flex; gap:6px; margin-bottom:16px; }
.week-strip .d{
  flex:1; text-align:center; padding:9px 0; border-radius:16px;
  background:rgba(255,255,255,.66); font-size:11.5px; color:var(--ink-3);
}
.week-strip .d b{ display:block; font-size:15.5px; font-weight:600; color:var(--ink); margin-top:3px; }
.week-strip .d.on{ background:rgba(180,225,190,.8); color:#2F6B45; }
.week-strip .d.on b{ color:#2F6B45; }
.stat-grid{ display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.stat-card{
  padding:15px; border-radius:22px;
  background:var(--glass); border:1px solid rgba(255,255,255,.72);
  box-shadow:0 8px 24px rgba(96,116,150,.10);
  -webkit-backdrop-filter:blur(14px); backdrop-filter:blur(14px);
}
.stat-card .h{ font-size:12.5px; color:var(--ink-2); margin-bottom:12px; }
.stat-card .chart{ height:34px; display:flex; align-items:flex-end; gap:2px; margin-bottom:12px; }
.stat-card .chart i{ flex:1; border-radius:3px; min-height:2px; opacity:.85; }
.stat-card .big{ font-size:26px; font-weight:600; letter-spacing:-.02em; line-height:1; }
.stat-card .unit{ font-size:12px; color:var(--ink-3); margin-left:4px; }
.stat-card .foot{ display:flex; align-items:flex-end; justify-content:space-between; }
.stat-card .emoji{ font-size:20px; opacity:.85; }

/* 游戏：卡片网格 */
.game-grid{ display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.game-card{
  position:relative; min-height:116px; padding:16px;
  display:flex; flex-direction:column; justify-content:space-between; align-items:flex-start;
  border:0; border-radius:22px; color:#fff; text-align:left; cursor:pointer; overflow:hidden;
  box-shadow:0 10px 24px rgba(96,116,150,.20);
  transition:transform .15s ease;
}
.game-card:active{ transform:scale(.97); }
.game-card .tag{ font-size:10.5px; padding:3px 9px; border-radius:9px; background:rgba(255,255,255,.28); }
.game-card .nm{ font-size:16.5px; font-weight:600; margin-top:10px; }
.game-card .ds{ font-size:11.5px; opacity:.86; margin-top:3px; }
.game-card .gi{ position:absolute; right:10px; bottom:8px; opacity:.92; }
.game-card .gi svg{ width:40px; height:40px; }
.peer-head{ display:flex; align-items:center; justify-content:space-between; margin-bottom:16px; }
.peer-head .who{ display:flex; align-items:center; gap:8px; font-size:13.5px; color:var(--ink-2); }
.peer-head .who .avatar{ width:34px; height:34px; font-size:15px; background:rgba(255,255,255,.8); border-color:rgba(120,132,155,.18); color:var(--ink); }
/* =================================================================
   功能页 = 独立界面：打开时把聊天整个藏起来
   ================================================================= */
body.in-space .header,
body.in-space .stream,
body.in-space .composer,
body.in-space .wallpaper,
body.in-space .veil,
body.in-space .drawer,
body.in-space .scrim{ display:none !important; }

.space{ animation:space-page-in .32s cubic-bezier(.22,.8,.3,1) both; }
@keyframes space-page-in{ from{ opacity:0; transform:translateY(18px) scale(.99); } to{ opacity:1; transform:none; } }
/* =================================================================
   功能页底部导航（图一样式）
   ================================================================= */
.space-body{ padding-bottom:calc(104px + var(--safe-b)) !important; }
.space-nav{
  position:absolute; left:0; right:0; bottom:0; z-index:5;
  display:flex; align-items:stretch;
  padding:8px 10px calc(8px + var(--safe-b));
  background:linear-gradient(to top,var(--panel-solid) 42%,rgba(241,243,247,.86) 72%,transparent);
  -webkit-backdrop-filter:blur(10px); backdrop-filter:blur(10px);
}
.space-nav .snav{
  flex:1; display:flex; flex-direction:column; align-items:center; gap:5px;
  padding:10px 2px 8px; border:0; border-radius:18px; background:transparent;
  color:var(--ink-3); cursor:pointer;
  transition:background-color .18s ease,color .18s ease,transform .14s ease;
}
.space-nav .snav svg{ width:23px; height:23px; }
.space-nav .snav span{ font-size:11px; }
.space-nav .snav:active{ transform:scale(.94); }
.space-nav .snav[aria-pressed="true"]{ color:#2B303A; background:rgba(255,255,255,.86); box-shadow:0 4px 14px rgba(96,116,150,.14); }
.space .row-item.cardrow{
  background:rgba(255,255,255,.78);
  border:1px solid rgba(255,255,255,.9);
  border-radius:20px;
  padding:13px 14px; margin-bottom:10px;
  box-shadow:0 5px 16px rgba(96,116,150,.07);
}
.space .row-item.cardrow:last-child{ margin-bottom:0; }
.space .row-ico{
  width:36px; height:36px; flex:0 0 auto;
  display:grid; place-items:center; border-radius:13px;
  background:linear-gradient(140deg,rgba(255,255,255,.95),rgba(238,242,248,.9));
  font-size:18px; box-shadow:0 2px 8px rgba(96,116,150,.08);
}
.space .row-item.cardrow .row-title{ font-size:15px; font-weight:500; }
/* 浅色主题下的选中态（避免被上面的 .space .chip-btn 覆盖） */
.space .chip-btn[aria-pressed="true"]{ background:var(--accent); color:var(--accent-fg); border-color:transparent; box-shadow:0 4px 12px rgba(226,112,58,.26); }
.space .mood-btn[aria-pressed="true"]{ background:var(--accent); color:var(--accent-fg); border-color:transparent; }
.space .seg button[aria-pressed="true"]{ background:#fff; color:var(--ink); box-shadow:0 2px 8px rgba(96,116,150,.16); }
/* =================================================================
   六个入口 / 头像 / AI 日记 / 朋友圈
   ================================================================= */
.dock-item{ padding:9px 1px 7px; gap:4px; }
.dock-ico svg{ width:24px; height:24px; }
.dock-name{ font-size:10.5px; }
.space-nav .snav{ padding:9px 1px 7px; gap:4px; }
.space-nav .snav svg{ width:22px; height:22px; }
.space-nav .snav span{ font-size:10.5px; }

.avatar img{ width:100%; height:100%; border-radius:50%; object-fit:cover; display:block; }
.avatar-row{ display:flex; align-items:center; gap:14px; }
.avatar.lg{ width:54px; height:54px; font-size:24px; }
.avatar-picks{ flex:1; min-width:0; }
.btn-tiny{
  margin-top:8px; height:32px; padding:0 14px;
  border:1px solid var(--glass-line); border-radius:10px;
  background:transparent; color:var(--ink-2); font-size:12.5px; cursor:pointer;
}
.btn-tiny:hover{ background:var(--glass); color:var(--ink); }

/* AI 日记 · 单篇（图二样式） */
.diary-head{ display:flex; align-items:center; gap:10px; margin-bottom:6px; }
.diary-head .avatar{ width:34px; height:34px; font-size:15px; }
.diary-head .who{ font-size:15px; font-weight:600; }
.diary-title{ display:flex; align-items:center; gap:10px; font-size:29px; font-weight:600; letter-spacing:-.02em; margin:16px 0 20px; }
.diary-title .em{ font-size:29px; }
.diary-times{ display:flex; padding:16px 0; border-bottom:1px solid rgba(120,132,155,.14); }
.diary-times > div{ flex:1; }
.diary-times .lb{ font-size:12.5px; color:var(--ink-3); margin-bottom:7px; }
.diary-times .tm{ font-size:23px; font-weight:600; letter-spacing:-.01em; }
.diary-times .dt{ font-size:13px; color:var(--ink-2); margin-top:5px; }
.diary-tag{
  display:inline-flex; align-items:center; gap:7px; margin-top:16px;
  padding:8px 13px; border-radius:12px;
  background:rgba(255,255,255,.78); font-size:13px; color:var(--ink-2);
}
.diary-tag i{ width:9px; height:9px; border-radius:50%; background:#7FA8E0; display:block; }
.diary-body{ font-size:16px; line-height:1.95; color:var(--ink); white-space:pre-wrap; }

/* 朋友圈 */
.moment{ display:flex; gap:12px; padding:16px 0; border-bottom:1px solid rgba(120,132,155,.12); }
.moment:last-child{ border-bottom:0; }
.moment .avatar{ width:38px; height:38px; font-size:16px; }
.moment .mbody{ flex:1; min-width:0; }
.moment .who{ font-size:14.5px; font-weight:600; color:#3A5A8C; }
.moment .txt{ font-size:15px; line-height:1.7; margin-top:5px; white-space:pre-wrap; word-break:break-word; }
.moment .meta{ font-size:12px; color:var(--ink-3); margin-top:8px; }
.moment .acts{ display:flex; gap:16px; margin-top:9px; }
.moment .acts button{ border:0; background:transparent; color:var(--ink-3); cursor:pointer; font-size:12.5px; padding:0; }
.moment .acts button.on{ color:#3A5A8C; font-weight:600; }
.moment-imgs{ display:grid; grid-template-columns:repeat(3,1fr); gap:5px; margin-top:10px; }
.moment-imgs img{ width:100%; aspect-ratio:1/1; object-fit:cover; border-radius:10px; display:block; }
.moment-likes{
  margin-top:10px; padding:9px 12px; border-radius:12px;
  background:rgba(255,255,255,.72); font-size:12.5px; color:var(--ink-2); line-height:1.7;
}
/* =================================================================
   图四：消息头像 + 名字 + 气泡 + 操作条
   ================================================================= */
.msg{ flex-direction:row; align-items:flex-start; gap:9px; }
.msg.user{ flex-direction:row-reverse; }
.ava{
  width:34px; height:34px; flex:0 0 auto; border-radius:50%;
  display:grid; place-items:center; overflow:hidden;
  background:var(--glass-2); border:1px solid var(--glass-line);
  font-size:15px; line-height:1;
}
.ava img{ width:100%; height:100%; object-fit:cover; display:block; }
:root[data-avatar="off"] .ava{ display:none; }
.mcol{ display:flex; flex-direction:column; max-width:78%; min-width:0; }
.msg.user .mcol{ align-items:flex-end; }
.mname{ font-size:11.5px; color:var(--ink-3); margin-bottom:5px; padding:0 5px; }

.bubble, .content{
  padding:10px 14px; font-size:calc(15.5px * var(--fs-mul,1)); line-height:1.62;
  background:var(--msg-bg,rgba(255,255,255,.17));
  color:var(--msg-text,#fff);
  border:var(--msg-bdw,0px) solid var(--msg-bd,transparent);
  border-radius:var(--msg-r,18px) var(--msg-r,18px) 6px var(--msg-r,18px);
  -webkit-backdrop-filter:blur(var(--msg-blur,0px)); backdrop-filter:blur(var(--msg-blur,0px));
  white-space:pre-wrap; word-break:break-word; overflow-wrap:anywhere;
  text-shadow:none;
}
.msg.assistant .bubble, .msg.assistant .content{
  border-radius:var(--msg-r,18px) var(--msg-r,18px) var(--msg-r,18px) 6px;
}
.bubble-empty{ display:none; }
.mcol .sticker-img{ max-width:150px; }
.macts{ display:flex; gap:16px; margin-top:8px; padding:0 5px; }
.macts button{ border:0; background:transparent; color:var(--ink-3); font-size:12px; cursor:pointer; padding:0; }
.macts button:hover{ color:var(--ink); }

/* 消息样式设置 */
.msg-preview{ padding:14px; border-radius:16px; background:rgba(255,255,255,.06); }
.pv-row{ display:flex; margin-bottom:9px; }
.pv-row:last-child{ margin-bottom:0; }
.pv-row.pv-user{ justify-content:flex-end; }
.pv-b{
  max-width:82%; padding:9px 13px; font-size:14px;
  background:var(--msg-bg); color:var(--msg-text);
  border:var(--msg-bdw) solid var(--msg-bd);
  border-radius:var(--msg-r) var(--msg-r) 6px var(--msg-r);
}
.pv-ai .pv-b{ border-radius:var(--msg-r) var(--msg-r) var(--msg-r) 6px; }
.range-row{ display:flex; align-items:center; gap:12px; }
.range-row input[type=range]{ flex:1; min-width:0; accent-color:var(--accent); height:24px; }
.range-row .rv{ width:48px; text-align:right; font-size:12.5px; color:var(--ink-3); }
.cpick{ width:36px; height:36px; flex:0 0 auto; padding:2px; border:1px solid var(--glass-line); border-radius:10px; background:transparent; }
/* =================================================================
   操作条图标（图三）
   ================================================================= */
.macts{ display:flex; gap:16px; margin-top:8px; padding:0 5px; }
.macts button{
  width:28px; height:28px; display:grid; place-items:center;
  border:0; border-radius:9px; background:transparent;
  color:var(--ink-3); cursor:pointer;
  transition:background-color .16s ease,color .16s ease,transform .14s ease;
}
.macts button svg{ width:17px; height:17px; }
.macts button:hover{ color:var(--ink); background:var(--glass); }
.macts button:active{ transform:scale(.9); }

/* 圆形头像框 */
.ai-chip .avatar, .drawer-profile .avatar{ box-shadow:0 0 0 2px rgba(255,255,255,.34); }

/* 朋友圈：封面 + 头像 + 时间线（图五） */
.mo-cover{
  height:180px; margin:-12px -16px 0;
  background:rgba(255,255,255,.4) center/cover no-repeat;
  border-radius:0 0 22px 22px;
}
.mo-id{ display:flex; flex-direction:column; align-items:flex-end; gap:7px; margin:-32px 8px 0 0; position:relative; z-index:2; }
.mo-id .avatar{ width:64px; height:64px; font-size:26px; box-shadow:0 0 0 3px #fff,0 8px 20px rgba(96,116,150,.28); }
.mo-nick{ font-size:15px; font-weight:600; }
.mo-timeline{ margin-top:20px; }
.mo-row{ display:flex; gap:14px; padding:16px 0; border-bottom:1px solid rgba(120,132,155,.12); }
.mo-row:last-child{ border-bottom:0; }
.mo-date{ width:44px; flex:0 0 auto; text-align:center; color:var(--ink-3); font-size:12px; line-height:1.35; }
.mo-date b{ display:block; font-size:23px; font-weight:600; color:var(--ink); margin-top:2px; }
.mo-post{ flex:1; min-width:0; }
.mo-post .who{ font-size:12.5px; color:#3A5A8C; font-weight:600; margin-bottom:6px; }
.mo-post .txt{ font-size:15px; line-height:1.75; color:var(--ink); white-space:pre-wrap; word-break:break-word; }

/* =================================================================
   记忆库：宇宙
   ================================================================= */
.space.memory-space{
  background:radial-gradient(130% 80% at 22% 0%, #2E2658, #140F2A 52%, #06050D 100%);
}
.space.memory-space .space-head{ background:transparent; }
.space.memory-space .space-title{ color:#EDEBFF; }
.space.memory-space .icon-btn{ color:rgba(237,235,255,.75); }
.space.memory-space .icon-btn:hover{ background:rgba(255,255,255,.1); color:#fff; }
.space.memory-space .space-nav{ background:linear-gradient(to top,rgba(8,7,18,.92) 40%,rgba(8,7,18,.6) 72%,transparent); }
.space.memory-space .space-nav .snav{ color:rgba(237,235,255,.5); }
.space.memory-space .space-nav .snav[aria-pressed="true"]{ background:rgba(255,255,255,.14); color:#fff; box-shadow:none; }
.space.memory-space .card{ background:rgba(255,255,255,.08); border-color:rgba(255,255,255,.14); box-shadow:none; }
.space.memory-space .card-title{ color:rgba(237,235,255,.55); }
.space.memory-space .row-sub{ color:rgba(237,235,255,.6); }
.space.memory-space .input{ background:rgba(255,255,255,.1); border-color:rgba(255,255,255,.18); color:#EDEBFF; }
.space.memory-space .chip-btn{ background:rgba(255,255,255,.1); border-color:rgba(255,255,255,.18); color:rgba(237,235,255,.75); }
.space.memory-space .chip-btn[aria-pressed="true"]{ background:#EDEBFF; color:#1A1530; border-color:transparent; }

.universe{ position:relative; height:58vh; min-height:360px; margin:-12px -16px 0; overflow:hidden; }
.universe .star{ position:absolute; width:2px; height:2px; border-radius:50%; background:#fff; }
.uni-hint{
  position:absolute; left:0; right:0; bottom:16px; text-align:center;
  font-size:12.5px; color:rgba(237,235,255,.45);
}
.planet{
  position:absolute; transform:translate(-50%,-50%);
  border-radius:50%; border:0; cursor:pointer; padding:0;
  display:grid; place-items:center; overflow:hidden;
  color:#fff; font-size:10.5px; line-height:1.1; text-align:center;
  box-shadow:0 0 22px rgba(150,180,255,.35);
  transition:transform .22s cubic-bezier(.2,.8,.2,1);
  animation:floaty 6s ease-in-out infinite;
}
.planet:active{ transform:translate(-50%,-50%) scale(.9); }
.planet span{ padding:0 4px; opacity:.92; }
@keyframes floaty{ 0%,100%{ margin-top:0; } 50%{ margin-top:-7px; } }
.mem-card{
  background:rgba(255,255,255,.1); border:1px solid rgba(255,255,255,.16);
  border-radius:20px; padding:16px; margin-bottom:14px;
  color:#EDEBFF; -webkit-backdrop-filter:blur(14px); backdrop-filter:blur(14px);
}
/* =================================================================
   气泡长度 / 纯文字模式 / 多条气泡 / 底部图标对齐
   ================================================================= */
.mcol{ max-width:var(--bubble-w,78%); }
:root[data-multibubble="on"] .mcol .bubble + .bubble{ margin-top:6px; }
:root[data-bubbleon="off"] .msg.assistant .bubble{
  background:transparent; border-color:transparent; padding:0;
  -webkit-backdrop-filter:none; backdrop-filter:none;
  color:var(--ink);
}
:root[data-bubbleon="off"] .msg.assistant .mcol .bubble + .bubble{ margin-top:12px; }

/* 让气泡爱心和齿轮占同一个位置和尺寸 */
.apps-btn{ width:38px; height:38px; padding:2px; }
.apps-btn svg{ width:20px; height:20px; }
/* AI 朋友圈封面 */
.mo-cover{ position:relative; background-size:cover; background-position:center; cursor:pointer; }
.cover-tip{
  position:absolute; right:12px; bottom:12px;
  padding:5px 11px; border-radius:10px; font-size:11px;
  background:rgba(0,0,0,.34); color:#fff; opacity:.8;
  -webkit-backdrop-filter:blur(8px); backdrop-filter:blur(8px);
}
/* 气泡按内容自适应 + 更宽松的内边距（对齐图二） */
.bubble{ width:fit-content; max-width:100%; padding:10px 16px; }
.mcol{ max-width:var(--bubble-w,92%); }

/* AI 朋友圈：去掉「加图片」那个边框 */
#mo-pick{
  border:0; background:transparent; color:var(--ink-2);
  font-size:14px; box-shadow:none;
}
#mo-pick:hover{ color:var(--ink); background:transparent; }
/* =================================================================
   朋友圈：无框发布区 + 图一样式动态
   ================================================================= */
.mo-compose{ background:transparent; border:0; box-shadow:none; padding:0; margin:4px 0 20px; }
.mo-compose .card-title{ margin-bottom:12px; }
.mo-compose .input{ border:0; background:rgba(255,255,255,.6); border-radius:18px; }
.mo-compose #mo-pick, .mo-compose #mo-ai{ border:0; background:transparent; color:var(--ink-2); box-shadow:none; }
.mo-compose #mo-ai{ height:40px; margin-top:6px; }
.mo-compose #mo-pick:hover, .mo-compose #mo-ai:hover{ color:var(--ink); }

.mo-timeline{ margin-top:4px; }
.mo-post-item{ padding:16px 0 14px; border-bottom:1px solid rgba(120,132,155,.14); }
.mo-post-item:last-child{ border-bottom:0; }
.mo-head{ display:flex; align-items:center; gap:9px; margin-bottom:10px; }
.mo-head .avatar.sm{ width:34px; height:34px; font-size:14px; }
.mo-head .who{ font-size:14.5px; font-weight:600; color:#3A5A8C; }
.mo-post-item .txt{ font-size:15.5px; line-height:1.82; color:var(--ink); white-space:pre-wrap; word-break:break-word; }
.mo-foot{ display:flex; align-items:center; justify-content:space-between; margin-top:12px; }
.mo-foot .tm{ font-size:12px; color:var(--ink-3); }
.mo-foot .acts{ display:flex; gap:14px; }
.mo-foot .acts button{ border:0; background:transparent; color:var(--ink-3); font-size:12px; cursor:pointer; padding:0; }
.mo-foot .acts button.on{ color:#3A5A8C; font-weight:600; }

/* =================================================================
   记忆库：中心球体 + 环绕小球（图三）
   ================================================================= */
.universe{ position:relative; height:62vh; min-height:420px; margin:-12px -16px 0; overflow:hidden; }
.core{
  position:absolute; left:50%; top:50%; width:124px; height:124px; margin:-62px 0 0 -62px;
  border-radius:50%; z-index:2;
  background:radial-gradient(circle at 36% 30%, #D6C6FF 0%, #7B5CE0 32%, #3B2A8A 62%, #140E31 100%);
  box-shadow:0 0 64px rgba(150,120,255,.8), inset 0 0 34px rgba(255,255,255,.35);
  animation:corePulse 6s ease-in-out infinite;
}
.core-glow{
  position:absolute; left:50%; top:50%; width:320px; height:320px; margin:-160px 0 0 -160px;
  border-radius:50%; pointer-events:none; z-index:1;
  background:radial-gradient(circle, rgba(160,130,255,.32), rgba(120,90,220,.12) 45%, transparent 70%);
}
@keyframes corePulse{ 0%,100%{ transform:scale(1); } 50%{ transform:scale(1.06); } }
.ring{
  position:absolute; left:50%; top:50%; border-radius:50%; z-index:1;
  border:1px solid rgba(180,160,255,.16);
  transform:translate(-50%,-50%);
}
.ring.r1{ width:212px; height:212px; }
.ring.r2{ width:298px; height:298px; }
.ring.r3{ width:384px; height:384px; }
.space.memory-space .planet{
  position:absolute; left:50%; top:50%; z-index:3;
  transform:translate(-50%,-50%) rotate(var(--ang)) translateX(var(--rad)) rotate(calc(-1 * var(--ang)));
  border-radius:50%; border:0; cursor:pointer; padding:0;
  display:grid; place-items:center; overflow:hidden;
  color:#fff; font-size:9.5px; line-height:1.1; text-align:center;
  box-shadow:0 0 18px rgba(150,180,255,.45);
  animation:orbitSpin 46s linear infinite;
}
.space.memory-space .planet span{ padding:0 3px; opacity:.95; }
.space.memory-space .planet:active{
  transform:translate(-50%,-50%) rotate(var(--ang)) translateX(var(--rad)) rotate(calc(-1 * var(--ang))) scale(.9);
}
@keyframes orbitSpin{
  from{ transform:translate(-50%,-50%) rotate(var(--ang)) translateX(var(--rad)) rotate(calc(-1 * var(--ang))); }
  to{ transform:translate(-50%,-50%) rotate(calc(var(--ang) + 360deg)) translateX(var(--rad)) rotate(calc(-1 * var(--ang) - 360deg)); }
}
.space.memory-space .uni-hint{ bottom:14px; }
/* =================================================================
   记忆库 · 重做（更精致的宇宙）
   ================================================================= */
.space.memory-space{
  background:
    radial-gradient(90% 55% at 50% 42%, rgba(124,92,224,.42), transparent 62%),
    radial-gradient(70% 45% at 12% 8%, rgba(88,120,220,.35), transparent 60%),
    radial-gradient(65% 45% at 92% 78%, rgba(190,110,200,.28), transparent 62%),
    linear-gradient(180deg,#120E28 0%,#0A0818 46%,#05040C 100%);
}
.universe{ position:relative; height:64vh; min-height:430px; margin:-12px -16px 0; overflow:hidden; }
.universe .star{ box-shadow:0 0 6px rgba(255,255,255,.85); }
.core{
  position:absolute; left:50%; top:50%; width:132px; height:132px; margin:-66px 0 0 -66px;
  border-radius:50%; z-index:3;
  background:
    radial-gradient(circle at 34% 26%, rgba(255,255,255,.95) 0%, rgba(198,176,255,.85) 12%, transparent 34%),
    radial-gradient(circle at 62% 68%, rgba(120,180,255,.55), transparent 46%),
    radial-gradient(circle at 50% 50%, #9E7CF0 0%, #5B3FBE 42%, #2A1B63 72%, #100A28 100%);
  box-shadow:
    0 0 26px rgba(190,165,255,.85),
    0 0 70px rgba(130,100,240,.55),
    inset 0 0 26px rgba(255,255,255,.28);
  animation:corePulse 7s ease-in-out infinite;
}
.core::after{
  content:''; position:absolute; inset:-18px; border-radius:50%;
  border:1px solid rgba(200,180,255,.22);
  animation:coreSpin 26s linear infinite;
}
@keyframes coreSpin{ from{ transform:rotate(0deg);} to{ transform:rotate(360deg);} }
.core-glow{
  position:absolute; left:50%; top:50%; width:360px; height:360px; margin:-180px 0 0 -180px;
  border-radius:50%; pointer-events:none; z-index:1;
  background:radial-gradient(circle, rgba(150,120,255,.30), rgba(110,80,210,.10) 44%, transparent 70%);
  animation:glowBreath 9s ease-in-out infinite;
}
@keyframes glowBreath{ 0%,100%{ opacity:.85; transform:scale(1);} 50%{ opacity:1; transform:scale(1.08);} }
.ring{
  position:absolute; left:50%; top:50%; z-index:1;
  border-radius:50%; border:1px solid rgba(180,160,255,.14);
  transform:translate(-50%,-50%);
}
.ring.r1{ width:224px; height:224px; }
.ring.r2{ width:308px; height:308px; border-color:rgba(180,160,255,.11); }
.ring.r3{ width:396px; height:396px; border-color:rgba(180,160,255,.09); }
.ring.r4{ width:484px; height:484px; border-color:rgba(180,160,255,.07); }
.space.memory-space .planet{
  border:0; padding:0; overflow:visible;
  background:
    radial-gradient(circle at 32% 26%, #FFFFFF 0%, rgba(255,255,255,.75) 16%, transparent 42%),
    radial-gradient(circle at 62% 70%, var(--c2), transparent 62%),
    radial-gradient(circle at 50% 50%, var(--c1), #140E30 98%);
  box-shadow:0 0 16px var(--glow), 0 0 34px var(--glow);
  animation:orbitSpin 60s linear infinite;
  transition:box-shadow .25s ease;
}
.space.memory-space .planet::after{
  content:''; position:absolute; inset:-6px; border-radius:50%;
  border:1px solid rgba(255,255,255,.16);
}
.space.memory-space .planet:hover{
  box-shadow:0 0 24px var(--glow), 0 0 54px var(--glow);
}
@keyframes orbitSpin{
  from{ transform:translate(-50%,-50%) rotate(var(--ang)) translateX(var(--rad)) rotate(calc(-1 * var(--ang))); }
  to{ transform:translate(-50%,-50%) rotate(calc(var(--ang) + 360deg)) translateX(var(--rad)) rotate(calc(-1 * var(--ang) - 360deg)); }
}
.space.memory-space .uni-hint{
  bottom:10px; font-size:12px; color:rgba(237,235,255,.45); letter-spacing:.02em;
}
.space.memory-space .card{
  background:rgba(255,255,255,.07);
  border:1px solid rgba(255,255,255,.13);
  border-radius:24px;
  -webkit-backdrop-filter:blur(20px); backdrop-filter:blur(20px);
}
.space.memory-space .card-title{
  font-family:var(--serif); font-size:12.5px; letter-spacing:.1em;
  color:rgba(237,235,255,.5);
}
.space.memory-space .input{
  background:rgba(255,255,255,.08); border-color:rgba(255,255,255,.14);
  border-radius:16px; height:48px;
}
.space.memory-space .input::placeholder{ color:rgba(237,235,255,.35); }
.space.memory-space .chip-btn{
  border-radius:999px; padding:8px 15px;
  background:rgba(255,255,255,.07); border-color:rgba(255,255,255,.14);
  color:rgba(237,235,255,.72);
}
.space.memory-space .chip-btn[aria-pressed="true"]{
  background:linear-gradient(135deg,#B9A4FF,#7C5CE0); color:#fff; border-color:transparent;
  box-shadow:0 6px 18px rgba(124,92,224,.45);
}
.space.memory-space .btn-full{
  border-radius:16px; height:50px; font-weight:500;
  background:linear-gradient(135deg,#8E6BF0,#5B3FBE);
  box-shadow:0 10px 26px rgba(91,63,190,.45);
}
.space.memory-space .mem-card{
  background:rgba(255,255,255,.09); border-color:rgba(255,255,255,.16); border-radius:22px;
}
/* =================================================================
   气泡：更多可调项 + 一条一条弹出
   ================================================================= */
.bubble, .content{
  padding:var(--msg-pad,14px) calc(var(--msg-pad,16px) + 2px);
  font-size:calc(var(--msg-size,15.5px) * var(--fs-mul,1));
  font-weight:var(--msg-weight,400);
  line-height:var(--msg-lh,1.62);
  box-shadow:var(--msg-shadow,none);
}
.mcol .bubble + .bubble{ margin-top:var(--msg-gap2,8px); }
.bubble.typing-b{ min-width:60px; display:grid; place-items:center; }
.bubble.seq{ animation:seqPop .3s cubic-bezier(.2,.8,.2,1) both; }
@keyframes seqPop{ from{ opacity:0; transform:translateY(7px) scale(.98);} to{ opacity:1; transform:none;} }
.bubble .typing{ height:16px; }
/* 气泡尾巴角（箭头角）可调 */
.bubble, .content, .pv-b{
  border-radius:var(--msg-r,18px) var(--msg-r,18px) var(--msg-tail,6px) var(--msg-r,18px) !important;
}
.msg.assistant .bubble, .msg.assistant .content, .pv-ai .pv-b{
  border-radius:var(--msg-r,18px) var(--msg-r,18px) var(--msg-r,18px) var(--msg-tail,6px) !important;
}
/* 记忆库：嵌入银河 */
.space.memory-space .space-body{ padding:0 !important; max-width:none; height:calc(100dvh - 56px - var(--safe-t)); overflow-y:auto; }
.galaxy-wrap{ position:relative; width:100%; height:62vh; min-height:380px; margin:0; overflow:hidden; }
.galaxy-frame{ width:100%; height:100%; border:0; display:block; background:#050209; }
.space.memory-space .card{ margin:16px; }
.space.memory-space .mem-card{ margin:0 16px 14px; }
/* 记忆候选条 */
.mem-cand{
  display:block; width:100%; text-align:left; margin-bottom:8px;
  padding:12px 14px; border-radius:16px; cursor:pointer;
  border:1px solid rgba(255,255,255,.14); background:rgba(255,255,255,.05);
  color:rgba(237,235,255,.55); font-size:14px; line-height:1.6;
}
.mem-cand b{
  display:inline-block; margin-right:8px; padding:2px 8px; border-radius:8px;
  font-size:11px; font-weight:500; background:rgba(255,255,255,.1); color:rgba(237,235,255,.7);
}
.mem-cand[aria-pressed="true"]{ border-color:transparent; background:linear-gradient(135deg,rgba(185,164,255,.28),rgba(124,92,224,.22)); color:#fff; }
.mem-cand[aria-pressed="true"] b{ background:rgba(255,255,255,.22); color:#fff; }
.mem-auto{
  margin:14px 16px 20px; text-align:center;
  font-size:12.5px; color:rgba(237,235,255,.45); line-height:1.8;
}
.mem-auto button{
  border:0; background:transparent; color:rgba(200,180,255,.9);
  font-size:12.5px; text-decoration:underline; cursor:pointer; padding:0 2px;
}
.mname{ margin-bottom:var(--name-gap,5px); }
/* 修正：气泡间距必须能覆盖「多条气泡」那条更具体的规则 */
:root .mcol .bubble + .bubble,
:root[data-multibubble="on"] .mcol .bubble + .bubble,
:root[data-bubbleon="off"] .msg.assistant .mcol .bubble + .bubble{
  margin-top:var(--msg-gap2,8px) !important;
}
/* =================================================================
   全局风格统一：浅色雾面玻璃（参考 Visual 那套）
   聊天背景保留用户壁纸，界面元素统一
   ================================================================= */
:root{
  --glass-blue:#7B8FBF;
  --glass-blue-2:#6B7FA8;
  --ink-soft:#3A465E;
  --serif:"Songti SC","STSong","SimSun",Georgia,serif;
}

/* ---- 功能页统一 ---- */
.space{
  --accent:#7B8FBF;
  --accent-fg:#FFFFFF;
  background:
    radial-gradient(95% 60% at 12% 0%, rgba(206,219,242,.92), transparent 60%),
    radial-gradient(85% 55% at 92% 8%, rgba(228,220,244,.88), transparent 62%),
    radial-gradient(80% 50% at 50% 100%, rgba(214,230,228,.7), transparent 62%),
    linear-gradient(180deg,#F5F7FB 0%,#EEF1F7 100%);
}
.space .card{
  background:rgba(255,255,255,.72);
  border:1px solid rgba(255,255,255,.92);
  border-radius:24px;
  box-shadow:0 12px 32px rgba(120,140,180,.10);
}
.space .card-title{
  font-family:var(--serif);
  font-size:11.5px; letter-spacing:.16em; text-transform:uppercase;
  color:#9AA6BC; font-weight:400;
}
.space .big-num, .space .stat-card .big, .cal-month, .diary-title, .mo-nick, .diary-times .tm{
  font-family:var(--serif);
}
.space .input{
  background:#FFFFFF; border-color:rgba(140,155,185,.18); border-radius:18px;
}
.space .btn-full{
  background:linear-gradient(135deg,#8FA3CC,#6B7FA8);
  border-radius:18px; box-shadow:0 10px 24px rgba(107,127,168,.32);
}
.space .btn-line{
  background:rgba(255,255,255,.72); border-color:rgba(140,155,185,.22); border-radius:18px;
}
.space .seg{ background:rgba(140,155,185,.12); border-radius:16px; }
.space .seg button[aria-pressed="true"]{ background:#FFFFFF; color:var(--ink-soft); }
.space .chip-btn[aria-pressed="true"]{ background:#7B8FBF; box-shadow:none; }
.space .stat-card{ border-radius:22px; background:rgba(255,255,255,.72); border:1px solid rgba(255,255,255,.9); }
.space .game-card{ border-radius:22px; }
.space .cal{ border-radius:26px; background:rgba(255,255,255,.66); border-color:rgba(255,255,255,.9); }
.space .cal-nav button{ border-radius:16px; background:rgba(255,255,255,.9); }
.space .space-nav .snav[aria-pressed="true"]{ color:var(--ink-soft); }
.space .space-title{ font-family:var(--serif); letter-spacing:.06em; }

/* ---- 记忆库保留深色宇宙（它本身是宇宙风，不改） ---- */
.space.memory-space{ --accent:#8E6BF0; }
/* 功能页配色由设置驱动 */
.space{
  --accent:var(--pg-accent,#7B8FBF);
  background:linear-gradient(180deg,var(--pg-bg1,#F5F7FB) 0%,var(--pg-bg2,#EEF1F7) 100%);
}
.space .card{
  background:var(--pg-card,rgba(255,255,255,.72));
  border-radius:var(--pg-radius,24px);
  -webkit-backdrop-filter:blur(var(--pg-blur,16px));
  backdrop-filter:blur(var(--pg-blur,16px));
}
.space .stat-card, .space .cal{
  background:var(--pg-card,rgba(255,255,255,.72));
  border-radius:var(--pg-radius,24px);
}
.space .input, .space .btn-line, .space .btn-full{ border-radius:calc(var(--pg-radius,24px) * .75); }
/* =================================================================
   侧栏 / 设置面板 跟随功能页配色
   ================================================================= */
:root[data-lightui="on"] .drawer,
:root[data-lightui="on"] .sheet-panel,
:root[data-lightui="on"] .apps-panel{
  --ink:#2B303A;
  --ink-2:#6E7480;
  --ink-3:#A6ADB9;
  --glass:rgba(255,255,255,.72);
  --glass-2:rgba(255,255,255,.94);
  --glass-line:rgba(120,132,155,.15);
  --glass-line-2:rgba(120,132,155,.28);
  --panel-solid:rgba(250,251,253,.97);
  --accent:var(--pg-accent,#7B8FBF);
  --accent-fg:#FFFFFF;
  color:var(--ink);
}
:root[data-lightui="on"] .drawer,
:root[data-lightui="on"] .sheet-panel{
  background:var(--panel-solid);
  border-color:rgba(255,255,255,.9);
  box-shadow:0 10px 40px rgba(120,140,180,.22);
}
:root[data-lightui="on"] .drawer .icon-btn:hover,
:root[data-lightui="on"] .sheet-panel .icon-btn:hover{ background:rgba(120,132,155,.10); color:var(--ink); }
:root[data-lightui="on"] .session-item.active{ background:rgba(120,132,155,.12); color:var(--ink); }
:root[data-lightui="on"] .session-item:hover{ background:rgba(120,132,155,.08); color:var(--ink); }
:root[data-lightui="on"] .sheet-panel .input{
  background:#FFFFFF; border-color:rgba(140,155,185,.18); color:var(--ink); border-radius:16px;
}
:root[data-lightui="on"] .sheet-panel textarea.input{ border-radius:16px; }
:root[data-lightui="on"] .sheet-panel .seg{ background:rgba(140,155,185,.12); }
:root[data-lightui="on"] .sheet-panel .seg button[aria-pressed="true"]{ background:#FFFFFF; color:#3A465E; }
:root[data-lightui="on"] .sheet-panel .chip-btn{ background:rgba(255,255,255,.7); border-color:rgba(140,155,185,.2); color:var(--ink-2); }
:root[data-lightui="on"] .sheet-panel .btn-ghost{ border-color:rgba(140,155,185,.22); color:var(--ink-2); }
:root[data-lightui="on"] .sheet-panel .btn-tiny{ border-color:rgba(140,155,185,.22); color:var(--ink-2); }
:root[data-lightui="on"] .sheet-panel .stat-line,
:root[data-lightui="on"] .sheet-panel .hint{ color:var(--ink-3); }
:root[data-lightui="on"] .sheet-panel .swatch{ border-color:rgba(140,155,185,.3); }
:root[data-lightui="on"] .msg-preview{ background:rgba(140,155,185,.08); border-radius:16px; }
:root[data-lightui="on"] .drawer-bottom{ border-top-color:rgba(120,132,155,.15); }
:root[data-lightui="on"] .ai-chip .avatar,
:root[data-lightui="on"] .drawer-profile .avatar{ box-shadow:0 0 0 2px rgba(120,132,155,.25); }
/* 克克主页 */
.cp-names{ font-family:var(--serif); font-size:19px; letter-spacing:.04em; color:#3A465E; margin:10px 0 6px; }
.cp-days{ font-family:var(--serif); font-size:64px; line-height:1; color:#6B7FA8; letter-spacing:-.02em; margin:6px 0 4px; }
.cp-avatars{ display:flex; align-items:center; justify-content:center; gap:16px; margin:18px 0 12px; }
.cp-avatars .avatar.lg{ width:62px; height:62px; font-size:26px; box-shadow:0 0 0 3px rgba(255,255,255,.9),0 8px 20px rgba(120,140,180,.18); }
.cp-heart{ color:#E08AA8; font-size:16px; }
.space .grid2{ display:grid; grid-template-columns:1fr 1fr; gap:12px; }
/* 克克主页 · 完整复刻 */
.cp-hero{ text-align:center; padding-top:22px; }
.cp-eyebrow{ font-family:var(--serif); font-size:13px; color:#A8B4CB; letter-spacing:.06em; }
.cp-names{ font-size:15px; font-weight:600; color:#3A465E; margin:6px 0 2px; }
.cp-days{ font-family:var(--serif); font-size:74px; line-height:1; color:#6E86B8; letter-spacing:-.03em; margin:8px 0 2px; }
.cp-sub{ font-family:var(--serif); font-size:13px; color:#9FB0CC; margin-bottom:18px; }
.cp-avatars{ display:flex; align-items:center; justify-content:center; gap:10px; margin-bottom:16px; }
.cp-line{ width:22px; height:1px; background:rgba(140,155,185,.4); }
.cp-heart{ color:#8FA3CC; font-size:15px; }
.cp-avatars .avatar.lg{ width:66px; height:66px; font-size:28px; box-shadow:0 0 0 3px rgba(255,255,255,.95),0 8px 22px rgba(120,140,180,.16); }
.cp-since{ font-size:12.5px; color:#9FB0CC; }
.cp-cards{ display:grid; grid-template-columns:1fr 1fr; gap:12px; margin:14px 0 6px; }
.cp-mini{ background:var(--pg-card,rgba(255,255,255,.72)); border:1px solid rgba(255,255,255,.9); border-radius:22px; padding:14px; box-shadow:0 10px 26px rgba(120,140,180,.09); }
.cp-mini-h{ font-size:12.5px; color:#93A2BC; margin-bottom:10px; }
.cp-mini-big{ font-size:14.5px; font-weight:600; color:#3A465E; line-height:1.5; }
.cp-mini-sub{ font-size:12px; color:#9FB0CC; margin-top:5px; }
.cp-sechead{ display:flex; align-items:center; justify-content:space-between; margin:22px 4px 12px; }
.cp-sechead span{ font-size:14px; font-weight:600; color:#3A465E; }
.cp-plus{ width:30px; height:30px; border-radius:50%; border:0; background:var(--pg-card,#fff); color:#3A465E; font-size:17px; line-height:1; box-shadow:0 4px 14px rgba(120,140,180,.16); cursor:pointer; }
.cp-ann{ background:var(--pg-card,rgba(255,255,255,.72)); border:1px solid rgba(255,255,255,.9); border-radius:22px; padding:16px; margin-bottom:12px; box-shadow:0 10px 26px rgba(120,140,180,.09); }
.cp-ann-head{ display:flex; align-items:center; justify-content:space-between; }
.cp-ann-name{ font-size:15.5px; font-weight:600; color:#2F3A50; }
.cp-ann-row{ display:flex; align-items:center; gap:10px; margin-top:10px; position:relative; }
.cp-tag{ font-size:11px; padding:2px 8px; border-radius:7px; background:rgba(120,150,210,.16); color:#5677B0; }
.cp-ann-date{ font-size:12.5px; color:#9FB0CC; }
.cp-ann-left{ margin-left:auto; font-family:var(--serif); font-size:26px; color:#7E96C4; line-height:1; text-align:right; }
.cp-ann-left i{ display:block; font-family:-apple-system,sans-serif; font-size:10px; font-style:normal; color:#A8B4CB; margin-top:3px; }
.cp-pin{ margin-top:12px; padding:4px 10px; font-size:11.5px; border:0; border-radius:8px; background:rgba(120,150,210,.14); color:#5C7BB4; cursor:pointer; }
.cp-foot{ text-align:center; margin:18px 0 24px; }
.cp-link{ border:0; background:transparent; color:#9FB0CC; font-size:12.5px; text-decoration:underline; cursor:pointer; }
/* 小游戏：浅色统一 + 底部聊天入口 */
.space .game-card{ color:#3A465E !important; box-shadow:0 10px 24px rgba(120,140,180,.12) !important; }
.space .game-card .tag{ background:rgba(120,150,210,.16); color:#5677B0; }
.space .game-card .ds{ opacity:1; color:#8E9DB8; }
.space .game-card .nm{ color:#2F3A50; }
.space .game-card .gi svg{ color:rgba(120,150,210,.45); }
.space.memory-space .game-card .gi svg{ color:rgba(120,150,210,.45); }
.game-chat{
  position:fixed; right:18px; bottom:calc(96px + var(--safe-b)); z-index:6;
  width:46px; height:46px; border:0; border-radius:50%;
  background:var(--pg-card,rgba(255,255,255,.86)); color:#5C7BB4;
  display:grid; place-items:center; cursor:pointer;
  box-shadow:0 8px 22px rgba(120,140,180,.22);
}
.game-chat:active{ transform:scale(.94); }
.game-chat svg{ width:22px; height:22px; }
/* 五子棋 */
.gm-status{ text-align:center; font-size:14px; color:#5C7BB4; margin-bottom:12px; }
#gm-board{ display:block; }
/* 顶栏只留名字，不要下面的会话标题 */
.subtitle{ display:none !important; }
/* 我的收藏 */
.fav-count{ font-size:12.5px; color:var(--ink-3); margin:0 4px 12px; letter-spacing:.04em; }
.fav-card{
  background:var(--pg-card,rgba(255,255,255,.72));
  border:1px solid rgba(255,255,255,.9);
  border-radius:calc(var(--pg-radius,24px) * .85);
  padding:18px 18px 14px; margin-bottom:12px;
  box-shadow:0 10px 26px rgba(120,140,180,.09);
}
.fav-text{
  font-family:var(--serif); font-size:16.5px; line-height:1.85; color:#2F3A50;
  white-space:pre-wrap; word-break:break-word; position:relative; padding-left:16px;
}
.fav-text::before{ content:'“'; position:absolute; left:-2px; top:-4px; font-size:26px; color:#C3CEE2; }
.fav-meta{
  display:flex; align-items:center; gap:10px; flex-wrap:wrap;
  margin-top:14px; padding-top:12px; border-top:1px solid rgba(140,155,185,.14);
  font-size:12px; color:var(--ink-3);
}
.fav-meta b{ font-weight:600; color:#5C7BB4; }
.fav-time{ margin-left:auto; }
.fav-del{ border:0; background:transparent; color:var(--ink-3); font-size:12px; cursor:pointer; padding:0 2px; }
.fav-del:hover{ color:#D4574E; }
/* 卡片边框可调 */
.space .card, .space .stat-card, .space .cal, .fav-card, .cp-mini, .cp-ann{
  border:var(--pg-card-bdw,1px) solid var(--pg-card-bd,rgba(255,255,255,.9)) !important;
}
/* AI 日记：当天概览 */
.dy-date{ font-size:15px; font-weight:600; color:#2F3A50; }
.dy-stats{ display:flex; gap:16px; flex-wrap:wrap; font-size:13px; color:#8E9DB8; padding-bottom:16px; border-bottom:1px solid rgba(140,155,185,.14); margin-bottom:16px; }
.dy-stats b{ color:#3A465E; font-weight:600; }
.dy-body{ font-family:var(--serif); font-size:17px; line-height:1.95; color:#2F3A50; white-space:pre-wrap; }
/* 记忆库：银河铺满 */
.space.memory-space .galaxy-wrap{
  height:calc(100dvh - 56px - var(--safe-t) - 76px - var(--safe-b)) !important;
  min-height:420px;
}
.space.memory-space .space-body{ overflow:hidden; }
/* 模块页全屏：底部导航默认收起，点返回键滑出 */
.space-nav{ transition:transform .32s cubic-bezier(.2,.8,.2,1),opacity .24s ease; }
.space-nav.collapsed{ transform:translateY(120%); opacity:0; pointer-events:none; }
.space-body{ transition:padding-bottom .32s ease; }