/* 由 web/build.py 从 web/src/ 生成 */
/* 小五 1.0 网站原型 —— 沿用朋友设计的“软极简”：米白底、一个强调色（杏橙）、大圆角；小五的话不套气泡，用户的话是淡色气泡 */
:root{
  --font-sans: system-ui,-apple-system,'PingFang SC','Hiragino Sans GB','Microsoft YaHei UI','Microsoft YaHei','Noto Sans SC',sans-serif;
  --font-round:'Resource Han Rounded SC','Yuanti SC',var(--font-sans);
  --r-card:22px; --r-frame:28px; --ease:cubic-bezier(.2,.8,.2,1);
}
/* ---------- 三套网站配色（用户在 设置 → 网站配色 里切换，存在本机） ----------
   dark-orange：朋友原稿的深色 + 杏橙（原样保留）
   dark-blue  ：深色 + 蓝（底色略偏冷，和蓝色更搭）
   light-blue ：浅色（冷白）+ 蓝
   light-orange：浅色（暖白）+ 橙（1.4，Z 10-15 19:20）
   蓝色统一用“晴空蓝”：浅色下 #2F6FD6（白字对比度约 4.8:1，达到 WCAG AA），深色下提亮为 #5B9CFF。 */
[data-theme=dark-orange]{ --page:#101012; --bg:#18181b; --surface:#222226; --surface-2:#2c2c32; --frame:#25252b; --text:#eceae5; --text-2:#a3a098; --text-3:#8e8b84;
  --border:rgba(236,234,229,.08); --overlay:rgba(0,0,0,.5); --danger:#f08a72; --danger-tint:#4a2620; --warn-text:#e8c27a; --warn-tint:#3d3018;
  --ok:#7fd3a0; --ok-tint:#1d3427; --on-accent:#18181b; --accent:#f0945a; --accent-tint:#4a3020; --accent-text:#f0945a; --shadow:rgba(0,0,0,.35); --btn-glass:rgba(0,0,0,.35); --danger-on:#1f0d08; }
[data-theme=dark-blue]{ --page:#0d1016; --bg:#141821; --surface:#1b202b; --surface-2:#252b38; --frame:#1e2430; --text:#e8ecf3; --text-2:#a2abbb; --text-3:#8a93a3;
  --border:rgba(232,236,243,.09); --overlay:rgba(0,0,0,.55); --danger:#f08a72; --danger-tint:#4a2620; --warn-text:#e8c27a; --warn-tint:#3a3019;
  --ok:#7fd3a0; --ok-tint:#1b3326; --on-accent:#0b1220; --accent:#5b9cff; --accent-tint:#1c2c48; --accent-text:#7fb2ff; --shadow:rgba(0,0,0,.4); --btn-glass:rgba(0,0,0,.35); --danger-on:#1f0d08; }
[data-theme=light-orange]{ --page:#f3efe9; --bg:#faf8f5; --surface:#ffffff; --surface-2:#efebe5; --frame:#ebe6df; --text:#22201c; --text-2:#665f55; --text-3:#6b645a;
  --border:rgba(34,32,28,.10); --overlay:rgba(30,22,15,.28); --danger:#b23a2a; --danger-tint:#fbe3dc; --warn-text:#8a5a12; --warn-tint:#faefd9;
  --ok:#2f7a4f; --ok-tint:#e2f2e7; --on-accent:#ffffff; --accent:#b5541b; --accent-tint:#fbeadd; --accent-text:#a64b15; --shadow:rgba(60,35,15,.08); --btn-glass:rgba(255,255,255,.8); --danger-on:#ffffff; }
[data-theme=light-blue]{ --page:#eaeef4; --bg:#f6f8fb; --surface:#ffffff; --surface-2:#e9edf3; --frame:#e4e9f0; --text:#1b1f27; --text-2:#5b6474; --text-3:#646d7c;
  --border:rgba(27,31,39,.09); --overlay:rgba(15,20,30,.28); --danger:#b23a2a; --danger-tint:#fbe3dc; --warn-text:#8a5a12; --warn-tint:#faefd9;
  --ok:#2f7a4f; --ok-tint:#e2f2e7; --on-accent:#ffffff; --accent:#2f6fd6; --accent-tint:#e3ecfb; --accent-text:#1f56b0; --shadow:rgba(20,40,80,.08); --btn-glass:rgba(255,255,255,.8); --danger-on:#ffffff; }
*{box-sizing:border-box}
html,body{height:100%;margin:0}
body{background:var(--page);color:var(--text);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;font-size:15px;line-height:1.55}
button{font:inherit;color:inherit;cursor:pointer}
input,textarea{font:inherit;color:inherit}
a{color:var(--accent-text);text-decoration:none}
svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.hidden{display:none!important}
.hint{color:var(--text-3);font-size:13px;line-height:1.5;margin:4px 0 0}
.fine{color:var(--text-3);font-size:12.5px;margin:14px 0 0}
.center{text-align:center}
.pad{padding:0 18px}
.err{color:var(--danger);font-size:13px;min-height:1em;margin:6px 2px 0}
.danger-t{color:var(--danger)!important}
.link{background:none;border:0;color:var(--accent-text);padding:0 4px;font-size:inherit}
.as-btn{background:none;border:0;text-align:left;width:100%}
.btn{border:0;border-radius:999px;height:44px;padding:0 20px;background:var(--surface-2);font-weight:600;transition:transform .15s var(--ease),filter .2s}
.btn:active{transform:scale(.97)}
.btn.primary{background:var(--accent);color:var(--on-accent)}
.btn.danger{background:var(--danger);color:var(--danger-on)}
.btn.ghost{background:transparent;box-shadow:inset 0 0 0 1px var(--border)}
.btn.danger.ghost{background:transparent;color:var(--danger)}
.btn.small{height:32px;padding:0 14px;font-size:13px;font-weight:500}
.btn.block{width:100%}
.chk{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--text-2);cursor:pointer}
.chk input{accent-color:var(--accent);width:16px;height:16px;margin:0}

/* ---------- 页面切换 ---------- */
.page{display:none}
.page.on{display:flex}

/* ---------- 登录 / 注册 ---------- */
.auth{min-height:calc(100dvh / var(--z,1));align-items:center;justify-content:center;padding:70px 16px 30px}
.auth-card{position:relative;width:100%;max-width:400px;background:var(--surface);border-radius:var(--r-card);padding:34px 26px 24px;box-shadow:0 1px 0 var(--border),0 18px 50px var(--shadow)}
.peek{position:absolute;left:50%;top:-74px;transform:translateX(-50%);width:110px;height:92px;overflow:hidden;pointer-events:none}
.peek canvas{margin-top:-4px}
.brand{display:flex;align-items:center;justify-content:center;gap:10px;font-family:var(--font-round);font-size:20px;font-weight:700}
.brand img{width:30px;height:30px;border-radius:9px}
.auth-sub{text-align:center;color:var(--text-3);font-size:13px;margin:6px 0 18px}
.auth .back{position:absolute;left:18px;top:16px;font-size:14px;color:var(--text-2)}
.fields{display:flex;flex-direction:column;gap:0}
.field{display:flex;align-items:center;gap:12px;border:1px solid var(--border);background:var(--bg);padding:0 14px;height:50px;margin-top:-1px}
.field:first-child{border-radius:14px 14px 0 0}
.field:nth-last-child(3),.fields .field:last-of-type{border-radius:0 0 14px 14px}
.field span{flex:none;width:64px;font-size:14px;color:var(--text-2)}
.field input{flex:1;border:0;background:transparent;outline:none;font-size:15px;min-width:0}
.field:focus-within{border-color:var(--accent);position:relative;z-index:1}
.fields .btn{margin-top:12px}
.check-row{margin:12px 2px 0;font-size:14px;color:var(--text-2)}
.check-row label{display:flex;align-items:flex-start;gap:8px;cursor:pointer;line-height:1.45}
.check-row input{margin:3px 0 0;accent-color:var(--accent);flex:none}   /* 第 31 项：注册页 18 岁勾选 */
.auth-switch{text-align:center;margin:16px 0 0;font-size:14px;color:var(--text-2)}
.card.fields .field{background:var(--surface)}

/* ---------- 首次说明 ---------- */
.notice-page{min-height:calc(100dvh / var(--z,1));justify-content:center;padding:28px 16px}
.notice-card{max-width:560px;width:100%;background:var(--surface);border-radius:var(--r-card);padding:24px 24px 20px;box-shadow:0 18px 50px var(--shadow);align-self:flex-start}
.notice-orb{width:110px;height:110px;margin:0 auto -4px;overflow:hidden}
.notice-card h1{font-family:var(--font-round);font-size:22px;text-align:center;margin:6px 0 6px}
.lead{color:var(--text-2);text-align:center;margin:0 0 14px;font-size:14px}
.notice-list{display:flex;flex-direction:column;gap:10px;margin-bottom:18px}
.ni{background:var(--bg);border-radius:16px;padding:12px 14px}
.ni b{font-size:15px}
.ni p{margin:4px 0 0;font-size:13.5px;color:var(--text-2)}
.ni:nth-child(2){background:var(--accent-tint)}
.ni:nth-child(2) b{color:var(--accent-text)}

/* ---------- 应用框架 ---------- */
.app{flex-direction:column;height:calc(100dvh / var(--z,1));max-width:480px;margin:0 auto;background:var(--bg);box-shadow:0 0 0 1px var(--border);overflow:hidden}
.topbar{flex:none;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;height:56px;padding:0 10px}
.topbar>:first-child{justify-self:start}.topbar>:last-child{justify-self:end}
.topbar-title{font-family:var(--font-round);font-size:16px;font-weight:600;display:flex;flex-direction:column;align-items:center;line-height:1.2}
.topbar-status{font-family:var(--font-sans);font-size:11px;font-weight:400;color:var(--text-3)}
.topbar-status:empty{display:none}
.icon-btn{width:40px;height:40px;border-radius:12px;border:0;background:transparent;display:grid;place-items:center;color:var(--text)}
.icon-btn:hover{background:var(--surface-2)}
.pill{display:inline-flex;align-items:center;gap:5px;height:32px;padding:0 12px;border-radius:999px;border:1px solid var(--border);background:var(--surface);font-size:13px;color:var(--text-2)}
.pill svg{width:15px;height:15px}
.pill .plus{transform-origin:center;transform:rotate(45deg)}
.pill[aria-pressed=true]{border:1.5px dashed var(--accent);color:var(--accent-text);background:var(--accent-tint)}
.scroll{flex:1;overflow-y:auto;padding:4px 14px 40px}

/* 管理员状态条 */
.adminbar{flex:none;display:flex;flex-wrap:wrap;gap:6px;padding:6px 12px 8px;font-size:12px;border-bottom:1px solid var(--border);background:var(--surface);cursor:pointer}
.adminbar::before{content:attr(data-label);font-weight:600;color:var(--text-2);margin-right:2px;align-self:center}
.adminbar span{padding:2px 8px;border-radius:999px;background:var(--surface-2);color:var(--text-2)}
.adminbar .yellow{background:var(--warn-tint);color:var(--warn-text)}
.adminbar .red{background:var(--danger-tint);color:var(--danger)}
.netbar{flex:none;text-align:center;font-size:13px;padding:6px 10px;background:var(--warn-tint);color:var(--warn-text)}
.netbar.red{background:var(--danger-tint);color:var(--danger)}

/* ---------- 聊天 ---------- */
.chat-layout{flex:1;display:flex;flex-direction:column;min-height:0}
.face-col{flex:none;padding:0 12px}
.face-frame{position:relative;height:150px;border-radius:var(--r-frame);background:var(--frame);display:flex;align-items:flex-end;justify-content:center;overflow:hidden;cursor:pointer}
.xw-face{display:flex;justify-content:center}
.face-style-btn{position:absolute;right:10px;top:10px;min-width:34px;width:auto;max-width:none;height:34px;padding:0 10px 0 8px;flex-wrap:nowrap;gap:5px;border-radius:12px;border:0;background:var(--btn-glass);display:flex;align-items:center;justify-content:center;font-size:12.5px;font-weight:500;white-space:nowrap;color:var(--text-2);box-shadow:0 1px 3px rgba(0,0,0,.06)}
.face-style-btn svg{width:18px;height:18px}

.face-caption{display:flex;justify-content:center;align-items:center;gap:8px;font-size:12px;color:var(--text-3);height:26px}
.mood-chip{padding:1px 9px;border-radius:999px;background:var(--surface);box-shadow:inset 0 0 0 1px var(--border);color:var(--text-2)}
.side-toggles{display:none}
.chat-col{flex:1;display:flex;flex-direction:column;min-height:0;position:relative}
.nostore-bar{margin:4px 12px 0;padding:7px 12px;border:1.5px dashed var(--accent);border-radius:14px;font-size:13px;color:var(--accent-text);background:var(--accent-tint);display:flex;justify-content:space-between;align-items:center;gap:8px}
.msgs{flex:1;overflow-y:auto;padding:6px 16px 16px;display:flex;flex-direction:column;gap:4px}
.nostore .msgs{background-image:linear-gradient(var(--bg),var(--bg));outline:1.5px dashed color-mix(in srgb,var(--accent) 45%,transparent);outline-offset:-6px;border-radius:18px}
.more-old{align-self:center;margin:6px 0;font-size:13px}
.day{align-self:center;font-size:12px;color:var(--text-3);margin:12px 0 6px}
.m{max-width:88%;position:relative;margin:4px 0}
.m.user{align-self:flex-end;background:var(--accent-tint);padding:9px 14px;border-radius:18px 18px 6px 18px;white-space:pre-wrap;word-break:break-word}
.m.user.unsaved{background:transparent;border:1.5px dashed var(--accent)}
.m.bot{align-self:flex-start;max-width:94%;white-space:pre-wrap;word-break:break-word}
/* 1.5.1.1：光标跟在字后面（以前在 .m 末尾、.mt 是块，光标单独占一行，回完那一行缩回去、整列跳一下）*/
.m.bot.streaming>.mt::after{content:"▍";color:var(--accent);animation:blink 1s steps(1) infinite}
@keyframes blink{50%{opacity:0}}
.m .meta{display:flex;gap:6px;align-items:center;margin-top:6px;flex-wrap:wrap;white-space:normal}
.tag{display:inline-flex;align-items:center;gap:4px;height:26px;padding:0 10px;border-radius:999px;font-size:12px;border:1px solid var(--border);background:var(--surface);color:var(--text-2)}
.tag svg{width:13px;height:13px}
.tag.on{color:var(--accent-text);border-color:var(--accent);background:var(--accent-tint)}
.tag.warn{background:var(--warn-tint);color:var(--warn-text);border-color:transparent}
button.tag{cursor:pointer}
.erase{position:absolute;left:-26px;top:50%;transform:translateY(-50%);width:22px;height:22px;border-radius:50%;border:0;background:var(--surface-2);color:var(--text-3);font-size:13px;line-height:1;opacity:0;transition:opacity .15s}
.m.user:hover .erase,.m.user:focus-within .erase,.m.user.show-x .erase{opacity:1}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.erase{width:26px;height:26px;left:-32px}
.sys{align-self:center;max-width:92%;text-align:center;font-size:12.5px;color:var(--text-2);background:var(--surface-2);border-radius:12px;padding:6px 12px;margin:6px 0}
.sys.err{color:var(--danger);background:var(--danger-tint)}
.update-bar{display:flex;align-items:center;justify-content:center;gap:4px;margin:8px auto 0;max-width:92%;font-size:12.5px;color:var(--text-2);background:var(--surface-2);border-radius:12px;padding:4px 6px 4px 12px}   /* 第 29 项：和系统灰字同一个样子 */
.update-open{background:none;border:0;color:inherit;font:inherit;text-align:left;cursor:pointer;padding:2px 0;flex:1;min-width:0}
.update-open:hover{text-decoration:underline}
.update-x{background:none;border:0;color:var(--text-3,var(--text-2));font-size:16px;line-height:1;cursor:pointer;padding:2px 6px;flex:none}
.sys.dashed{background:transparent;border:1.5px dashed var(--accent);color:var(--accent-text)}
.sys button{margin-left:6px}
.pending{align-self:stretch;background:var(--surface);border-radius:16px;padding:12px 14px;box-shadow:inset 0 0 0 1px var(--border);font-size:14px}
.pending .pd-btns{display:flex;gap:8px;margin-top:8px}
.code{white-space:normal;margin:8px 0;border-radius:14px;background:var(--surface);box-shadow:inset 0 0 0 1px var(--border);overflow:hidden}
.code-h{display:flex;justify-content:space-between;font-size:12px;color:var(--text-3);padding:6px 12px;background:var(--surface-2)}
.code pre{margin:0;padding:10px 12px;font:12.5px/1.5 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;overflow-x:auto;white-space:pre}
.composer{flex:none;padding:8px 12px calc(10px + env(safe-area-inset-bottom));position:relative}
.composer-row{display:flex;align-items:flex-end;gap:8px;background:var(--surface);border-radius:24px;padding:6px;box-shadow:0 0 0 1px var(--border),0 4px 18px var(--shadow)}
.nostore .composer-row{box-shadow:0 0 0 1.5px var(--accent);outline:1.5px dashed var(--accent);outline-offset:3px}
.composer textarea{flex:1;border:0;outline:none;resize:none;background:transparent;padding:9px 4px;max-height:140px;font-size:15px;line-height:1.45}
.mic,.send{flex:none;width:40px;height:40px;border-radius:50%;border:0;display:grid;place-items:center}
.mic{background:var(--surface-2);color:var(--text-2);touch-action:none;user-select:none}
.mic.rec-on{background:var(--accent);color:var(--on-accent);transform:scale(1.12)}
.send{background:var(--accent);color:var(--on-accent)}
.send:disabled{opacity:.4}
.composer-sub{display:flex;gap:14px;align-items:center;padding:6px 8px 0}
.composer-sub .hint{margin:0 0 0 auto;font-size:12px}
.desk-only{display:none}
.rec{position:absolute;left:12px;right:12px;bottom:calc(100% + 6px);background:var(--surface);border-radius:20px;box-shadow:0 10px 30px rgba(0,0,0,.12);padding:14px;display:flex;flex-direction:column;align-items:center;gap:6px;font-size:13px;color:var(--text-2)}
.rec.cancel{color:var(--danger)}
.wave{display:flex;gap:4px;align-items:center;height:30px}
.wave i{width:4px;border-radius:2px;background:var(--accent);height:8px;animation:wv .9s ease-in-out infinite}
.wave i:nth-child(2){animation-delay:.1s}.wave i:nth-child(3){animation-delay:.2s}.wave i:nth-child(4){animation-delay:.3s}.wave i:nth-child(5){animation-delay:.2s}.wave i:nth-child(6){animation-delay:.1s}
@keyframes wv{50%{height:28px}}

/* ---------- 卡片 / 列表 ---------- */
.card{display:block;background:var(--surface);border-radius:18px;padding:14px 16px;margin:8px 0;box-shadow:0 0 0 1px var(--border)}
.card p{margin:6px 0}
.sec{font-size:13px;font-weight:600;color:var(--text-2);margin:20px 4px 4px}
.sec .hint{font-weight:400;display:block}
.card.list{padding:2px 0}
.li{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;min-height:48px;color:var(--text);border-top:1px solid var(--border)}
.li:first-child{border-top:0}
.li b{font-weight:500;color:var(--text-2)}
.li.col{flex-direction:column;align-items:flex-start;gap:2px}
.chev{color:var(--text-3);font-size:20px;line-height:1}
.link-card{display:flex;justify-content:space-between;align-items:center;color:var(--text)}
.danger-card{color:var(--danger)}
.dots{margin:4px 0 8px;padding-left:20px;color:var(--text-2)}
.row-end{display:flex;justify-content:flex-end}
.switch-row{cursor:pointer}
.switch-row input{position:absolute;opacity:0;pointer-events:none}
.switch-row i{flex:none;width:44px;height:26px;border-radius:13px;background:var(--surface-2);box-shadow:inset 0 0 0 1px var(--border);position:relative;transition:background .2s}
.switch-row i::after{content:"";position:absolute;left:3px;top:3px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.2);transition:transform .2s var(--ease)}
.switch-row input:checked+i{background:var(--accent)}
.switch-row input:checked+i::after{transform:translateX(18px)}
.look-card{display:flex;align-items:center;gap:12px}
.look-text{flex:1;display:flex;flex-direction:column}
.mini-orb{flex:none;width:64px;height:64px;overflow:hidden;border-radius:16px;background:var(--frame);display:flex;justify-content:center;align-items:flex-end}

/* 我的资料 */
.toggle-card .tc-head{display:flex;justify-content:space-between;align-items:center}
.toggle-card .state{margin-left:8px;font-size:12px;padding:2px 8px;border-radius:999px;background:var(--ok-tint);color:var(--ok)}
.toggle-card.off .state{background:var(--surface-2);color:var(--text-3)}
.toggle-card.off .btn{background:var(--accent);color:var(--on-accent)}
.items{list-style:none;margin:0;padding:0}
.it{padding:10px 0;border-top:1px solid var(--border)}
.it:first-child{border-top:0}
.it .t{font-size:14.5px}
.it .src{font-size:12px;color:var(--text-3);margin-top:2px}
.it .acts{display:flex;gap:4px;margin-top:4px}
.it .acts .link{font-size:12.5px;padding:2px 6px 2px 0;color:var(--text-2)}
.it .acts .link.del{color:var(--danger)}
.badge{display:inline-block;font-size:11px;padding:0 7px;border-radius:999px;margin-right:6px;vertical-align:1px;background:var(--surface-2);color:var(--text-2)}
.badge.you{background:var(--accent-tint);color:var(--accent-text)}
.badge.obs{background:transparent;box-shadow:inset 0 0 0 1px var(--border);color:var(--text-3)}
.badge.stale{background:var(--warn-tint);color:var(--warn-text)}
.it.gone{opacity:.45}
.grp-t{font-size:12px;color:var(--text-3);margin:10px 0 0}
.empty{color:var(--text-3);font-size:13.5px;padding:6px 0}
.pf-off .pf-dim{opacity:.5}
.mood-now{display:flex;gap:12px;align-items:center}
.feel summary{cursor:pointer;margin-top:10px;font-size:14px}
.count{color:var(--text-3);font-size:12px}

/* 聊天记录 */
.h-day{font-size:12px;color:var(--text-3);margin:16px 4px 4px}
.h-round{background:var(--surface);border-radius:16px;padding:10px 14px;margin:6px 0;box-shadow:0 0 0 1px var(--border);font-size:14px;position:relative}
.h-round .u{color:var(--accent-text)}
.h-round .b{color:var(--text-2);margin-top:4px}
.h-round .tm{font-size:11.5px;color:var(--text-3)}
.h-round .del{position:absolute;right:10px;top:8px;font-size:12.5px;color:var(--danger)}

/* ---------- 浮层 ---------- */
.overlay{position:fixed;inset:0;background:var(--overlay);z-index:20;display:flex;align-items:flex-end;justify-content:center;animation:fade .2s}
.overlay.center{align-items:center;padding:20px}
@keyframes fade{from{opacity:0}}
.drawer{position:absolute;left:0;top:0;bottom:0;width:270px;background:var(--bg);padding:18px 12px;display:flex;flex-direction:column;gap:2px;animation:slide .25s var(--ease)}
@keyframes slide{from{transform:translateX(-100%)}}
.drawer-head{display:flex;gap:10px;align-items:center;padding:4px 10px 16px}
.drawer-head img{width:36px;height:36px;border-radius:11px}
.drawer-head div{display:flex;flex-direction:column}
.drawer a,.drawer .as-btn{display:block;padding:12px 12px;border-radius:12px;color:var(--text);font-size:15px}
.drawer a:hover,.drawer .as-btn:hover{background:var(--surface-2)}
.drawer .as-btn{margin-top:auto}
.sheet{width:100%;max-width:520px;max-height:calc(90dvh / var(--z,1));overflow-y:auto;background:var(--bg);border-radius:26px 26px 0 0;padding:8px 18px calc(22px + env(safe-area-inset-bottom));animation:up .28s var(--ease)}
@keyframes up{from{transform:translateY(40%);opacity:.4}}
.sheet-grip{width:40px;height:4px;border-radius:2px;background:var(--surface-2);margin:2px auto 8px}
.sheet-head{display:flex;justify-content:space-between;align-items:center;font-size:17px}
.sheet h4{font-size:13px;color:var(--text-2);margin:16px 0 8px}
.styles{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.style-card{border:0;background:var(--surface);border-radius:18px;padding:6px 6px 10px;display:flex;flex-direction:column;align-items:center;box-shadow:0 0 0 1px var(--border);transition:box-shadow .2s}
.style-card[aria-pressed=true]{box-shadow:0 0 0 2px var(--accent)}
.sc-orb{width:100%;height:100px;display:flex;justify-content:center;align-items:flex-end;overflow:hidden;border-radius:14px;background:var(--frame)}
.style-card b{margin-top:6px;font-size:14px}
.style-card span{font-size:11.5px;color:var(--text-3)}
.swatches{display:flex;flex-wrap:wrap;gap:10px}
.sw{width:36px;height:36px;border-radius:50%;border:0;box-shadow:inset 0 0 0 1px rgba(0,0,0,.12);position:relative}
.sw[aria-pressed=true]::after{content:"";position:absolute;inset:-5px;border-radius:50%;border:2px solid var(--accent)}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{height:34px;padding:0 14px;border-radius:999px;border:0;background:var(--surface);box-shadow:inset 0 0 0 1px var(--border);font-size:13.5px}
.chip[aria-pressed=true]{background:var(--accent-tint);color:var(--accent-text);box-shadow:inset 0 0 0 1.5px var(--accent)}
.dialog{width:100%;max-width:380px;background:var(--surface);border-radius:22px;padding:20px 20px 16px;animation:pop .2s var(--ease)}
@keyframes pop{from{transform:scale(.94);opacity:0}}
.dialog h3{margin:0 0 8px;font-size:17px}
.dialog p{margin:0;color:var(--text-2);font-size:14px;white-space:pre-line}
.dialog input{width:100%;height:44px;border-radius:12px;border:1px solid var(--border);background:var(--bg);padding:0 12px;margin-top:12px;outline:none}
.dg-btns{display:flex;justify-content:flex-end;gap:8px;margin-top:14px}
.toast{position:fixed;left:50%;bottom:110px;transform:translateX(-50%);background:var(--text);color:var(--bg);padding:9px 16px;border-radius:999px;font-size:13.5px;z-index:40;max-width:90vw;text-align:center}
.pp-head{display:flex;align-items:center;gap:8px}.pp-head .hint{margin:0;flex:1}
.pp-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:4px}
.pp-grid a{font-size:12px;text-align:center;padding:5px 2px;border-radius:8px;background:var(--surface-2);color:var(--text)}
.pp-moods{display:grid;grid-template-columns:repeat(5,1fr);gap:4px}
.pp-moods button{font-size:11.5px;padding:4px 0;border-radius:8px;border:0;background:var(--surface-2)}
.pp-range{display:flex;align-items:center;gap:8px;margin:8px 0}
.pp-range input{flex:1;accent-color:var(--accent)}
.pp-row{display:flex;gap:6px;margin:6px 0}.pp-row.wrap{flex-wrap:wrap}

/* ---------- 手机/电脑差异 ---------- */
@media (max-width:480px){ .app{box-shadow:none} }

/* 网站配色选择 */
.themes{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;padding:12px}
.theme-card{border:0;border-radius:16px;padding:8px;background:var(--surface-2);display:flex;flex-direction:column;gap:6px;align-items:stretch;text-align:center;font-size:12.5px;box-shadow:0 0 0 1px var(--border)}
.theme-card[aria-pressed=true]{box-shadow:0 0 0 2px var(--accent)}
.tc-prev{height:54px;border-radius:10px;position:relative;overflow:hidden}
.tc-prev i{position:absolute;right:8px;bottom:8px;width:34px;height:12px;border-radius:6px}
.tc-prev b{position:absolute;left:8px;top:8px;width:40px;height:8px;border-radius:4px;opacity:.5}
.tc-prev em{position:absolute;left:8px;top:22px;width:26px;height:8px;border-radius:4px;opacity:.3}
/* 原型按钮：手机上贴在左边缘，不挡顶栏 */
@media (max-width:480px){
  .adminbar{flex-wrap:nowrap;overflow-x:auto;white-space:nowrap} .adminbar span{flex:none} }
.nostore-bar .link{white-space:nowrap;flex:none}

/* ================= 图标按钮 / 小提示 ================= */
.ib{width:30px;height:30px;border-radius:9px;border:0;background:transparent;display:inline-grid;place-items:center;color:var(--text-2);padding:0}
.ib svg{width:17px;height:17px}
.ib:hover{background:var(--surface-2);color:var(--text)}
.ib.on{color:var(--accent-text);background:var(--accent-tint)}
.ib.del:hover{color:var(--danger);background:var(--danger-tint)}
.ib.warn{color:var(--warn-text);background:var(--warn-tint)}
.meta .ib{width:28px;height:28px;border:1px solid var(--border);background:var(--surface);border-radius:999px}
.meta .ib.on{border-color:var(--accent)}
.meta-t{font-size:12px;color:var(--accent-text)}
.code-h .ib{width:24px;height:24px}
.erase svg{width:13px;height:13px}
.erase{display:grid;place-items:center}
.q-tip{display:inline-grid;place-items:center;color:var(--text-3);cursor:help;margin-left:4px;vertical-align:-3px}
.q-tip svg{width:14px;height:14px}
.it .acts .ib{width:26px;height:26px}
.it .acts .ib svg{width:15px;height:15px}
.adminbar span{display:inline-flex;align-items:center;gap:4px}
.adminbar svg{width:13px;height:13px}
.desk{display:none}
select{font:inherit;font-size:13.5px;height:32px;border-radius:9px;border:1px solid var(--border);background:var(--bg);color:var(--text);padding:0 8px;outline:none}
select:focus{border-color:var(--accent)}

/* ================= 快速查看面板 ================= */
.quick{display:none}
.q-sec{padding:10px 0;border-top:1px solid var(--border)}
.q-sec:first-child{border-top:0;padding-top:2px}
.q-h{display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--text-2);margin-bottom:6px}
.q-h>span:first-child svg{width:14px;height:14px;color:var(--accent-text)}
.q-h b{font-weight:600}
.q-h .q-tip{margin-left:auto}
.q-more{margin-left:auto;font-size:12px;display:inline-flex;align-items:center}
.q-more svg{width:14px;height:14px}
.mrow{display:grid;grid-template-columns:76px 1fr 18px 18px;align-items:center;gap:8px;font-size:13px;height:24px;cursor:default}
.mrow.minor{opacity:.78;font-size:12.5px}
.mrow.calm{display:block;color:var(--text-3)}
.ml{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mbar{height:6px;border-radius:3px;background:var(--surface-2);overflow:hidden}
.mbar i{display:block;height:100%;border-radius:3px;background:var(--accent);transition:width 1.2s var(--ease)}
.mbar.u i{background:var(--text-3)}
.mlv{font-size:11.5px;color:var(--text-3);text-align:center}
.mfade{color:var(--text-3);opacity:.35;display:grid;place-items:center}
.mfade svg{width:14px;height:14px}
.mfade.on{opacity:1;color:var(--accent-text)}
.msrc{font-size:10.5px;width:18px;height:18px;border-radius:50%;display:grid;place-items:center}
.msrc.you{background:var(--accent-tint);color:var(--accent-text)}
.msrc.obs{box-shadow:inset 0 0 0 1px var(--border);color:var(--text-3)}
.q-prof{list-style:none;margin:0;padding:0}
.qp{font-size:13px;padding:5px 8px;margin:0 -8px;border-radius:9px;cursor:pointer}
.qp:hover{background:var(--surface-2)}
.qp-t{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qp-t::before{content:"·";color:var(--accent);margin-right:6px;font-weight:700}
.qp-more{display:none;font-size:11.5px;color:var(--text-3);padding:2px 0 2px 12px}
.qp-more a{display:block;margin-top:2px}
.qp.open .qp-t{white-space:normal}
.qp.open .qp-more{display:block}
.qp-rest{font-size:12px;padding-top:4px}

/* ================= 我的资料：心情 ================= */
.um{padding:10px 0;border-top:1px solid var(--border)}
.um:first-child{border-top:0;padding-top:2px}
.um.past{opacity:.6}
.um-h{display:flex;align-items:center;gap:4px;flex-wrap:wrap}
.um-h b{font-weight:500;font-size:14.5px;margin-left:2px}
.um-acts{margin-left:auto;display:flex;gap:2px}
.um .src{font-size:12px;color:var(--text-3);margin-top:3px}
.um-edit{display:none;margin-top:8px;padding:10px 12px;border-radius:14px;background:var(--bg);box-shadow:inset 0 0 0 1px var(--border)}
.um.editing .um-edit{display:block}
.sel-row{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:4px 0}
.sel-row label{display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--text-2)}
.sel-row.end{justify-content:flex-end}
.mn-text{flex:1;min-width:0}
#pf-mood-bars .mrow{grid-template-columns:96px 1fr 18px 18px}
.xw-set{margin-top:12px;padding:10px 12px;border-radius:14px;border:1.5px dashed var(--warn-text);background:var(--warn-tint)}
.xw-set-h{display:flex;align-items:center;justify-content:space-between;font-size:13px;margin-bottom:4px}
.xw-set .badge.stale{background:var(--surface);}
.feel summary .q-tip{vertical-align:-2px}

/* ================= 电脑布局（≥1100px，真正的宽屏版） ================= */
@media (min-width:1100px){
  body{font-size:15px}
  .mob-only{display:none!important}
  .desk{display:flex}
  .app{max-width:none;width:100%;height:calc(100dvh / var(--z,1));margin:0;box-shadow:none;background:var(--page)}
  .topbar{height:60px;padding:0 24px;grid-template-columns:1fr auto 1fr;background:var(--bg);border-bottom:1px solid var(--border)}
  .top-left,.top-right{display:flex;align-items:center;gap:10px}
  .top-right{justify-self:end}
  .brand-sm{align-items:center;gap:8px;font-family:var(--font-round);font-weight:700;font-size:17px;color:var(--text)}
  .brand-sm img{width:28px;height:28px;border-radius:8px}
  .top-nav{gap:2px;padding-left:10px;margin-left:4px;border-left:1px solid var(--border)}
  .top-nav .ib{width:36px;height:36px;border-radius:11px}
  .top-nav .ib svg{width:19px;height:19px}
  .topbar-status{font-size:12.5px}
  .sub .topbar{grid-template-columns:1fr auto 1fr}
  .sub .topbar>.top-nav{justify-self:end}
  .adminbar{padding:6px 24px;background:var(--bg)}
  /* 聊天：左栏 340（头像 + 开关 + 快速查看），右边聊天，正文限宽 780 居中 */
  [data-page=chat] .chat-layout{flex-direction:row;width:100%;max-width:1480px;margin:0 auto;padding:18px 24px;gap:20px;min-height:0}
  [data-page=chat] .face-col{width:340px;flex:none;padding:0;display:flex;flex-direction:column;gap:12px;overflow-y:auto}
  [data-page=chat] .face-frame{height:240px;flex:none}
  [data-page=chat] .face-caption{margin-top:-6px}
  [data-page=chat] .side-toggles{display:block;background:var(--surface);border-radius:16px;padding:10px 14px;box-shadow:0 0 0 1px var(--border)}
  [data-page=chat] .side-toggles .switch-row{display:flex;justify-content:space-between;align-items:center}
  [data-page=chat] .quick{display:block;background:var(--surface);border-radius:16px;padding:12px 14px;box-shadow:0 0 0 1px var(--border)}
  [data-page=chat] .chat-col{background:var(--bg);border-radius:24px;box-shadow:0 0 0 1px var(--border);overflow:hidden}
  [data-page=chat] .msgs{padding:16px max(32px,calc((100% - 780px)/2)) 20px}
  [data-page=chat] .composer{padding:8px max(28px,calc((100% - 800px)/2)) 16px}
  [data-page=chat] .nostore-bar{margin:12px max(28px,calc((100% - 800px)/2)) 0}
  [data-page=chat] .mobile-only{display:none}
  [data-page=chat] .desk-only{display:inline}
  .m.bot{max-width:100%}
  /* 子页面：内容区限宽、两栏 */
  .sub .scroll{padding:20px 24px 60px}
  .pf-grid{max-width:1240px;margin:0 auto;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:28px;align-items:start}
  .pf-right{position:sticky;top:0}
  .st-grid{max-width:1100px;margin:0 auto;display:grid;grid-template-columns:1fr 1fr;gap:28px;align-items:start}
  [data-page=history] .scroll>*{max-width:860px;margin-left:auto;margin-right:auto}
  [data-page=password] .scroll>*,[data-page=reset] .scroll>*{max-width:560px;margin-left:auto;margin-right:auto}
  [data-page=password] .scroll>.pad,[data-page=reset] .scroll>.pad{padding:0}
  .sheet{max-width:620px;border-radius:26px;margin-bottom:24px}
  .overlay:not(.center){align-items:center}
  .auth-card{max-width:420px}
}
@media (min-width:1400px){ [data-page=chat] .face-col{width:360px} }
@media (min-width:1100px){
  [data-page=chat] .mood-chip,[data-page=chat] .side-toggles .hint{display:none}
  [data-page=chat] .side-toggles{padding:8px 14px}
  .it{display:grid;grid-template-columns:1fr auto;column-gap:10px;align-items:start}
  .it>.t,.it>.src{grid-column:1}
  .it>.acts{grid-column:2;grid-row:1 / span 2;margin:0;opacity:.55;transition:opacity .15s}
  .it:hover>.acts,.it:focus-within>.acts{opacity:1}
}
@media (min-width:1100px) and (max-height:960px){ [data-page=chat] .face-frame{height:196px} [data-page=chat] .q-sec{padding:8px 0} }
@media (min-width:1100px) and (max-height:840px){ [data-page=chat] .face-frame{height:172px} .qp:nth-child(n+3):not(.qp-rest){display:none} }

.li-in{border:1px solid var(--border);background:var(--bg);border-radius:9px;height:32px;padding:0 10px;outline:none;width:160px;text-align:right}
.li-in:focus{border-color:var(--accent)}
.name-row{display:flex;gap:12px;flex-wrap:wrap;margin-top:8px}
.name-row label{display:flex;flex-direction:column;gap:4px;font-size:12.5px;color:var(--text-2);flex:1;min-width:160px}
.name-row input,.pp-in{height:36px;border-radius:10px;border:1px solid var(--border);background:var(--surface);padding:0 10px;outline:none}
.pp-in{height:30px;width:96px;font-size:12.5px}
.names-ni{background:var(--surface-2)!important}
/* 快速查看：你的心情（只显示后端给的那句话，不画进度条） */
.umq{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:13px;line-height:1.5}
.umq .badge{flex:none}
.umq-s{font-size:11.5px;color:var(--muted);margin-top:2px}

/* 更多：撤回 / 先别用 */
.more-acts{display:none;gap:6px;margin-top:6px;width:100%}
.it.more-on .more-acts{display:flex}
.it.restricted .t{opacity:.6}
.it{flex-wrap:wrap}
/* 回答中：发送键变成停止键 */
.send.stop{background:var(--surface-2,#444);color:var(--text)}
.send.stop svg rect{fill:currentColor;stroke:none}
.cut{color:var(--muted);font-size:12px;margin-left:4px}

/* =====================================================================
   定稿打磨（10/11 3:26）：排版、间距、气泡、心情主次、大屏自适应
   ===================================================================== */
:root{ --gap:clamp(16px,1.4vw,28px); --card-pad:14px 16px; --r-card:18px }
body{letter-spacing:.01em}
.sec{font-size:13.5px;color:var(--text);font-weight:600;margin:24px 4px 8px}
.sec .hint{display:block;font-weight:400;margin-top:2px;font-size:12.5px}
.card{border-radius:var(--r-card)}

/* 聊天气泡：用户在右（主题色浅底），对方在左（卡片底＋细边），头像、名字和时间 */
.msgs{gap:2px}
.mr{display:flex;gap:10px;align-items:flex-start;margin:8px 0;max-width:100%}
.mr.user{flex-direction:row-reverse}
.av{flex:none;width:36px;height:36px;border-radius:11px;overflow:hidden;background:var(--surface-2);display:grid;place-items:center;margin-top:20px}
.av img{width:100%;height:100%;display:block}
.av-t{font-size:14px;font-weight:600;color:var(--accent-text)}
.mr.user .av{background:var(--accent-tint)}
.mcol{display:flex;flex-direction:column;align-items:flex-start;min-width:0;max-width:min(76%,620px)}
.mr.bot .mcol{max-width:min(84%,680px)}
.mr.user .mcol{align-items:flex-end}
.who{display:flex;gap:6px;align-items:baseline;font-size:11.5px;color:var(--text-3);margin:0 6px 4px;line-height:16px}
.who b{font-weight:500;color:var(--text-2)}
.m{margin:0;max-width:100%;font-size:15px;line-height:1.65;text-wrap:pretty}
.m.user{padding:9px 14px;border-radius:16px 4px 16px 16px;background:var(--accent-tint)}
.m.bot{padding:10px 15px;border-radius:4px 16px 16px 16px;background:var(--surface);box-shadow:0 0 0 1px var(--border);max-width:100%}
.m.bot .code{margin:8px 0;white-space:normal}
.m.bot .meta{margin-top:6px;margin-bottom:-2px}
.m.user.unsaved,.m.bot.unsaved{background:transparent;box-shadow:none;border:1.5px dashed var(--accent)}
.day{display:flex;align-items:center;gap:14px;align-self:stretch;font-size:12px;color:var(--text-3);margin:18px 0 6px}
.day::before,.day::after{content:"";flex:1;height:1px;background:var(--border)}
.sys{align-self:center;max-width:80%;text-align:center}
.more-old{margin:4px 0 8px}

/* 小五的心情：主要的大而粗，次要的小一点、不加粗 */
.mrow{grid-template-columns:minmax(64px,auto) 1fr 22px 16px;min-height:26px;height:auto;gap:10px}
.mrow:not(.minor):not(.calm) .ml{font-size:15.5px;font-weight:700;color:var(--text)}
.mrow:not(.minor):not(.calm) .mlv{font-size:12.5px;font-weight:600;color:var(--text-2)}
.mrow:not(.minor):not(.calm) .mbar{height:8px;border-radius:4px}
.mrow.minor{opacity:1;font-size:12.5px;min-height:22px}
.mrow.minor .ml{font-weight:400;color:var(--text-2)}
.mrow.minor .mbar{height:4px}
.mrow.minor .mbar i{opacity:.7}
#pf-mood-bars .mrow{grid-template-columns:minmax(80px,auto) 1fr 22px 16px}

@media (min-width:1100px){
  /* 主体随屏宽流动，内容居中，最大宽度封顶 */
  [data-page=chat] .chat-layout{max-width:1560px;padding:var(--gap);gap:var(--gap)}
  [data-page=chat] .face-col{width:clamp(300px,23vw,372px);gap:12px}
  [data-page=chat] .face-frame{height:clamp(170px,calc(26vh / var(--z,1)),260px)}
  [data-page=chat] .quick{padding:var(--card-pad);border-radius:var(--r-card)}
  [data-page=chat] .side-toggles{border-radius:var(--r-card)}
  [data-page=chat] .chat-col{border-radius:22px}
  [data-page=chat] .msgs{padding:12px max(28px,calc((100% - 880px)/2)) 24px}
  [data-page=chat] .composer{padding:8px max(24px,calc((100% - 900px)/2)) 16px}
  [data-page=chat] .nostore-bar{margin:12px max(24px,calc((100% - 900px)/2)) 0}
  .q-sec{padding:12px 0}
  .q-h{font-size:12px;letter-spacing:.04em;margin-bottom:8px}
  .sub .scroll{padding:clamp(16px,calc(2.2vh / var(--z,1)),32px) var(--gap) 64px}
  .pf-grid{max-width:1280px;gap:var(--gap)}
  .st-grid{max-width:1120px;gap:var(--gap)}
  .mr{margin:10px 0}
}
/* 屏幕矮（16:10 的笔记本、或者浏览器没最大化）：头像框和面板更紧凑 */
@media (min-width:1100px) and (max-height:820px){ [data-page=chat] .face-frame{height:160px} [data-page=chat] .q-sec{padding:8px 0} }
/* 大屏（1920 以上、2K）：整体放大，避免字小、留白空洞。缩放后布局仍按同一套规则排 */
@media (min-width:1800px){ html{zoom:1.12;--z:1.12} }
@media (min-width:2200px){ html{zoom:1.25;--z:1.25} }
@media (min-width:2500px){ html{zoom:1.33;--z:1.33} }
.xw-set{border:0;background:var(--surface-2);border-radius:14px}
.xw-set .badge.stale{background:var(--warn-tint);color:var(--warn-text)}
/* 聊天记录页：和聊天页一样的气泡，一轮一组，鼠标停上去显示删除 */
.h-day{display:flex;align-items:center;gap:14px;font-size:12px;color:var(--text-3);margin:22px 0 6px}
.h-day::before,.h-day::after{content:"";flex:1;height:1px;background:var(--border)}
.h-round{background:transparent;box-shadow:none;padding:4px 44px 4px 0;margin:0;border-radius:16px;font-size:inherit}
.h-round:hover{background:color-mix(in srgb,var(--surface) 55%,transparent)}
.h-round .mr{margin:6px 0}
.h-round .del.h-del{position:absolute;right:8px;top:50%;transform:translateY(-50%);opacity:0;transition:opacity .15s}
.h-round:hover .h-del,.h-round:focus-within .h-del{opacity:1}
/* 浅色主题：自己的气泡用实心晴空蓝＋白字（对比度约 4.8:1），一眼分清谁说的 */
[data-theme=light-blue] .m.user,[data-theme=light-orange] .m.user{background:var(--accent);color:#fff}
[data-theme=light-blue] .m.user .erase,[data-theme=light-orange] .m.user .erase{background:var(--surface-2);color:var(--text-3)}
[data-theme=light-blue] .mr.user .av,[data-theme=light-orange] .mr.user .av{background:var(--accent)}
[data-theme=light-blue] .mr.user .av-t,[data-theme=light-orange] .mr.user .av-t{color:#fff}
[data-theme=light-blue] .m.bot,[data-theme=light-orange] .m.bot{box-shadow:0 0 0 1px var(--border),0 1px 2px rgba(20,30,50,.04)}

.mrow{grid-template-columns:minmax(64px,auto) 1fr 40px 16px}
#pf-mood-bars .mrow{grid-template-columns:minmax(80px,auto) 1fr 40px 16px}
.mlv{text-align:right;white-space:nowrap}
.noted{margin-top:6px;font-size:12px;color:var(--text-3)}.noted-t{color:var(--text-3);font-size:12px;text-align:left;padding:0}.noted .acts{display:inline-flex;margin-left:6px}

/* ================= 1.5.1 待办 + 灵感随笔（照 docs/mockups/1.5.1/todo_inspiration/；类名都限在这两页和随笔编辑里） ================= */
.todo-page .sec2,.notes-page .sec2{display:flex;align-items:baseline;gap:8px;margin:12px 8px 8px}
.todo-page .sec2 h2{font-size:17px;margin:0}.todo-page .sec2 .c{font-size:13px;color:var(--text-2)}.todo-page .grow{flex:1;min-width:0}
.todo-page .card{padding:0;margin:0 0 12px;border-radius:22px;box-shadow:none;overflow:hidden;background:var(--surface)}
.todo-page .row{display:flex;align-items:center;gap:12px;padding:12px 16px;border-top:1px solid var(--surface-2)}.todo-page .row:first-child{border-top:0}
.todo-page .chk{width:24px;height:24px;border-radius:50%;border:2px solid var(--text-3);flex:none;background:transparent;padding:0;cursor:pointer;position:relative}
.todo-page .chk:hover{border-color:var(--ok)}
.todo-page .chk.done{background:var(--ok);border-color:var(--ok)}
.todo-page .chk.done:after{content:"";position:absolute;left:6px;top:2px;width:6px;height:11px;border:solid var(--on-accent);border-width:0 2.5px 2.5px 0;transform:rotate(45deg)}
.todo-page .t{font-size:15px;overflow-wrap:anywhere}.todo-page .done-row .t{text-decoration:line-through;color:var(--text-3)}
.todo-page .sub{font-size:13px;color:var(--text-2);margin-top:2px}.todo-page .sub.warn{color:var(--warn-text)}.todo-page .sub.over{color:var(--danger)}
.todo-page .tag{font-size:11px;background:var(--accent-tint);color:var(--accent-text);padding:3px 8px;border-radius:8px;white-space:nowrap;flex:none}
.todo-page .addrow{color:var(--text-3);font-size:15px;cursor:text}.todo-page .addrow b{color:var(--accent-text);font-size:20px;font-weight:400;width:24px;text-align:center;flex:none}
.todo-page .td-add{border:0;background:transparent;font:inherit;font-size:15px;color:var(--text);padding:0;outline:0}.todo-page .td-add::placeholder{color:var(--text-3)}
.todo-page .fold{display:block;width:100%;text-align:left;font:inherit;font-size:13px;color:var(--text-2);padding:12px 16px;min-height:40px;border:0;border-top:1px solid var(--surface-2);background:transparent;cursor:pointer}
.todo-page .ins{background:var(--surface-2)}
.todo-page .ins .fold{border-color:var(--border);text-align:center}.todo-page .more{font-size:14px;color:var(--accent-text);font-weight:600}
.todo-page .note,.notes-page .note{padding:12px 16px;border-top:1px solid var(--border);cursor:pointer}.todo-page .note:first-child{border-top:0}
.todo-page .nt-empty{cursor:default;font-size:14px;color:var(--text-2)}
.todo-page .note .h,.notes-page .note .h{display:flex;gap:6px;align-items:center;font-size:12px;color:var(--text-2)}
.todo-page .ntag,.notes-page .ntag{font-size:11px;padding:2px 7px;border-radius:7px;background:var(--surface);color:var(--text-2)}
.todo-page .note .tt,.notes-page .tt{font-weight:600;font-size:15px;margin:4px 0 2px;overflow-wrap:anywhere}
.todo-page .note .ex{font-family:var(--font-round);font-size:14px;line-height:1.7;color:var(--text-2);display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}
.todo-page .mini{font:inherit;font-size:13px;padding:6px 12px;border-radius:12px;border:1.5px solid var(--accent);color:var(--accent-text);font-weight:600;background:transparent;cursor:pointer}
.todo-page .td-new{align-self:center;align-items:center;width:auto;height:auto;min-height:0;margin:0;padding:9px 16px;border-radius:12px;font-size:14px;font-weight:600;line-height:1.2;background:var(--accent);color:var(--on-accent);border:0;box-shadow:none}
.todo-page .row{line-height:1.3}.todo-page .sub{margin-top:3px}
[data-page="notes"] .topbar-title{font-size:22px;font-weight:700}
.notes-page{padding-bottom:110px}
.notes-page .quick{display:block;width:100%;margin:4px 0 14px;background:var(--surface);border:0;border-radius:16px;padding:13px 16px;color:var(--text);font:inherit;font-size:15px;outline:0}.notes-page .quick::placeholder{color:var(--text-3)}
.notes-page .ncard{background:var(--surface);border-radius:22px;margin:0 0 16px;padding:16px;cursor:pointer}
.notes-page .ncard .nhead{padding:0;border:0}.notes-page .ncard .ntag{background:var(--surface-2)}
.notes-page .ncard .ex{font-family:var(--font-round);font-size:15px;line-height:1.7;color:var(--text-2);-webkit-line-clamp:2;display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden}
.back-link{font-size:15px;color:var(--accent-text);font-weight:600;text-decoration:none;white-space:nowrap}
.nt-search-btn{justify-self:end;display:flex;align-items:center;gap:4px;padding:6px 10px;border-radius:12px;background:var(--surface-2);color:var(--text);font:inherit;font-size:13px;border:0;min-height:36px;cursor:pointer}
.nt-search-btn svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}
[data-page="notes"] .fab{position:fixed;right:max(16px,calc(50% - 240px + 16px));bottom:calc(24px + env(safe-area-inset-bottom,0px));height:56px;padding:0 22px;border-radius:28px;background:var(--accent);color:var(--on-accent);font:inherit;font-size:17px;font-weight:600;display:flex;align-items:center;gap:6px;box-shadow:0 4px 14px var(--shadow);border:0;cursor:pointer;z-index:3}
[data-page="notes"] .fab i{font-style:normal;font-size:26px;line-height:1}
#note-edit .seg{display:flex;background:var(--surface-2);border-radius:12px;padding:3px;margin:6px 0 10px}
#note-edit .seg b{flex:1;text-align:center;padding:7px 0;font-size:14px;font-weight:500;color:var(--text-2);border-radius:9px;cursor:pointer}
#note-edit .seg b.on{background:var(--surface);color:var(--text);box-shadow:0 1px 3px var(--shadow)}
#note-edit .ne-title,#note-edit .ne-body{display:block;width:100%;margin:0 0 10px;background:var(--surface-2);border:0;border-radius:12px;padding:11px 14px;color:var(--text);font:inherit;font-size:15px;outline:0}
#note-edit .ne-body{font-family:var(--font-round);line-height:1.7;resize:vertical;min-height:140px}
#note-edit .dg-btns{display:flex;gap:8px;justify-content:flex-end}
@media (min-width:1100px){
  .todo-page .td-cols{display:flex;gap:16px;align-items:flex-start;max-width:1100px;margin:0 auto}
  .todo-page .td-main{flex:1.7;min-width:0}.todo-page .td-side{flex:1;min-width:0}
  [data-page="notes"] .fab{right:32px;bottom:32px}
  .notes-page{max-width:720px;margin:0 auto;width:100%}
}

/* ================= 1.5.1 电脑左侧导航（艺术总监 UI 体检 P0 #1 #3；示意稿 ad_audit_chat_desktop） ================= */
.desk-side{display:none}
@media (min-width:1100px){
  body.has-side .desk-side{display:flex;flex-direction:column;position:fixed;left:0;top:0;bottom:0;width:var(--side-w,216px);z-index:20;
    background:var(--bg);border-right:1px solid var(--border);padding:16px 10px 12px}
  body.has-side .app{margin-left:var(--side-w,216px);width:calc(100% - var(--side-w,216px))}
  body.has-side .top-nav,body.has-side .brand-sm{display:none!important}
  .ds-head{display:flex;align-items:center;gap:10px;padding:6px 10px 14px;color:var(--text);text-decoration:none;font-family:var(--font-round);font-size:16px}
  .ds-orb{width:28px;height:28px;flex:none;display:block}
  .ds-links{display:flex;flex-direction:column;gap:2px}
  .ds-link{display:flex;align-items:center;gap:10px;height:40px;padding:0 12px;border-radius:10px;color:var(--text-2);text-decoration:none;font-size:14.5px}
  .ds-link svg{width:18px;height:18px;flex:none;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
  .ds-link:hover{background:var(--surface);color:var(--text)}
  .ds-link.on{background:var(--accent-tint,var(--surface));color:var(--accent);font-weight:600}
  .ds-foot{margin-top:auto;display:flex;flex-direction:column;gap:6px;position:relative}
  .ds-user{display:flex;align-items:center;gap:10px;height:44px;padding:0 12px;border:0;border-top:1px solid var(--border);background:none;color:var(--text);font:inherit;font-size:14px;cursor:pointer;text-align:left}
  .ds-av{width:26px;height:26px;border-radius:50%;background:var(--surface-2,var(--surface));display:grid;place-items:center;font-size:12px;flex:none}
  .ds-uname{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .ds-chev{color:var(--text-3,var(--text-2))}
  .ds-menu{position:absolute;left:4px;right:4px;bottom:52px;background:var(--bg);border:1px solid var(--border);border-radius:12px;box-shadow:0 8px 24px var(--shadow);padding:6px;display:flex;flex-direction:column}
  .ds-menu.hidden{display:none}
  .ds-mi{display:block;padding:9px 12px;border-radius:8px;border:0;background:none;color:var(--text);font:inherit;font-size:14px;text-align:left;text-decoration:none;cursor:pointer}
  .ds-mi:hover{background:var(--surface)}
  .ds-mi.danger-t{color:var(--danger,#d33)}
}
@media (min-width:1100px){
  body.has-side [data-page=chat] .topbar{grid-template-columns:auto 1fr auto}
  body.has-side [data-page=chat] .topbar-title{justify-self:start;align-self:center;display:flex;flex-direction:column;align-items:flex-start;row-gap:3px}
  body.has-side [data-page=chat] .topbar-title::before{content:attr(data-t);font-weight:700;font-size:16px;color:var(--text)}
}
@media (min-width:1100px){ body.has-side .sub .topbar>a.icon-btn[href="#chat"]{visibility:hidden} }   /* 有侧栏就不用“返回聊天”；返回到上一级的（如改密码→设置）照留 */

/* ================= 1.5.1 日历页（calendar_desktop 样稿；类名都限在 .cal-page） ================= */
.cal-page .cal-cols{display:flex;flex-direction:column;gap:12px}
.cal-page .cal-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:6px 4px 12px}
.cal-page .cal-head h2{font-size:22px;margin:0 4px;font-variant-numeric:tabular-nums}
.cal-page .grow{flex:1;min-width:0}
.cal-page .cal-nav{width:32px;height:32px;border-radius:10px;border:0;background:transparent;color:var(--text-2);cursor:pointer;display:grid;place-items:center}
.cal-page .cal-nav svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.cal-page .cal-nav:hover{background:var(--surface-2)}
.cal-page .cal-seg{display:flex;gap:4px}
.cal-page .cal-seg .cs,.cal-page .cal-today{font:inherit;font-size:13px;padding:7px 13px;border-radius:12px;border:0;background:var(--surface-2);color:var(--text-2);cursor:pointer;min-height:32px;width:auto;height:auto;margin:0}
.cal-page .cal-seg .cs.on{background:var(--accent-tint);color:var(--accent-text);font-weight:600}
.cal-page #cal-new{width:auto;height:auto;min-height:0;margin:0;padding:8px 14px;border-radius:12px;font-size:14px;font-weight:600}
.cal-page .card{padding:0;margin:0;border-radius:22px;box-shadow:none;background:var(--surface);overflow:hidden}
.cal-page .cal-mgrid{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;gap:2px;padding:10px 12px 12px}
.cal-page .cw{font-size:11px;color:var(--text-3);font-weight:500;padding:6px 0}
.cal-page .cd-cell{position:relative;border:0;background:transparent;font:inherit;font-size:15px;color:var(--text);min-height:44px;padding:8px 0 12px;border-radius:12px;cursor:pointer;font-variant-numeric:tabular-nums}
.cal-page .cd-cell:hover{background:var(--surface-2)}
.cal-page .cd-cell.dim{color:var(--text-3)}
.cal-page .cd-cell.today .n{display:inline-grid;place-items:center;width:30px;height:30px;margin:-5px 0;border-radius:50%;background:var(--accent);color:var(--on-accent);font-weight:600}
.cal-page .cd-cell.sel:not(.today) .n{display:inline-grid;place-items:center;width:30px;height:30px;margin:-5px 0;border-radius:50%;box-shadow:inset 0 0 0 2px var(--accent)}
.cal-page .cd-cell.sel.today{box-shadow:inset 0 0 0 2px var(--accent-tint)}
.cal-page .cdots{position:absolute;left:0;right:0;bottom:4px;display:flex;justify-content:center;gap:3px}
.cal-page .cdot{display:inline-block;width:6px;height:6px;border-radius:50%;flex:none}
.cal-page .cal-row .cdot,.cal-page .lg .cdot{width:8px;height:8px}
.cal-page .cdot.rem{background:var(--accent)}.cal-page .cdot.todo{background:var(--ok)}.cal-page .cdot.cd{background:var(--warn-text)}
.cal-page .cal-legend{font-size:12px;color:var(--text-2);margin:10px 8px;display:flex;flex-wrap:wrap;gap:6px 14px;align-items:center}
.cal-page .lg{display:inline-flex;align-items:center;gap:5px}
.cal-page .sec{font-size:13px;color:var(--text-3);font-weight:600;margin:4px 4px 8px}
.cal-page .cal-list{background:var(--surface-2)}
.cal-page .cal-row{display:flex;align-items:center;gap:12px;padding:12px 16px;border-top:1px solid var(--border)}.cal-page .cal-row:first-child{border-top:0}
.cal-page .cal-row .ct{width:52px;flex:none;font-size:13px;color:var(--text-2);font-variant-numeric:tabular-nums}
.cal-page .cal-row .tt{font-size:15px;overflow-wrap:anywhere}.cal-page .cal-row .sub{font-size:12.5px;color:var(--text-2);margin-top:2px}
.cal-page .cal-row.done .tt{text-decoration:line-through;color:var(--text-3)}
.cal-page .chk{width:24px;height:24px;border-radius:50%;border:2px solid var(--text-3);flex:none;background:transparent;padding:0;cursor:pointer;position:relative}
.cal-page .chk.done{background:var(--ok);border-color:var(--ok)}
.cal-page .chk.done:after{content:"";position:absolute;left:6px;top:2px;width:6px;height:11px;border:solid var(--on-accent);border-width:0 2.5px 2.5px 0;transform:rotate(45deg)}
.cal-page .cal-empty{padding:14px 16px;font-size:14px;color:var(--text-2)}
.cal-page .cal-add{display:block;width:100%;text-align:left;border:0;background:transparent;font:inherit;font-size:14px;color:var(--text-2);padding:12px 16px;cursor:pointer;border-radius:12px}
.cal-page .cal-add:hover{color:var(--accent-text);background:var(--surface-2)}
.cal-page .cal-days{padding:6px 0}
.cal-page .cal-day{padding:4px 0 8px;border-top:1px solid var(--surface-2)}.cal-page .cal-day:first-child{border-top:0}
.cal-page .cal-dh{display:block;border:0;background:transparent;font:inherit;font-size:13px;font-weight:600;color:var(--text-2);padding:10px 16px 4px;cursor:pointer}
.cal-page .cal-day.today .cal-dh{color:var(--accent-text)}.cal-page .cal-day .hint{padding:2px 16px 6px;font-size:13px}
.cal-page .cal-form{padding:14px;display:flex;flex-direction:column;gap:10px}
.cal-page .cal-seg.small .cs{font-size:12.5px;padding:6px 10px}
.cal-page .cf-in{width:100%;border:0;border-radius:12px;background:var(--surface-2);color:var(--text);font:inherit;font-size:15px;padding:10px 12px;outline:0}
.cal-page .cf-in:focus{box-shadow:0 0 0 2px var(--accent-tint)}
.cal-page .cf-row{display:flex;gap:8px}
.cal-page .cf-btns{display:flex;gap:8px;justify-content:flex-end}.cal-page .cf-btns .btn{width:auto;height:auto;margin:0;padding:8px 16px;min-height:36px}
@media (min-width:1100px){
  [data-page=calendar] .scroll{padding:0}
  .cal-page .cal-cols{flex-direction:row;align-items:stretch;min-height:100%;gap:0}
  .cal-page .cal-main{flex:1;min-width:0;padding:14px 18px}
  .cal-page .cal-side{width:360px;flex:none;background:var(--surface);border-left:1px solid var(--surface-2);padding:20px;min-height:calc(100dvh / var(--z,1) - 60px)}
  .cal-page .cal-card{max-width:760px}
  .cal-page .cal-side .card.cal-list{background:var(--surface-2)}
  .cal-page .cal-side .cal-form{background:var(--surface-2)}
  .cal-page .cal-side .cf-in{background:var(--surface)}
}
@media (min-width:1100px){ body.has-side [data-page=calendar] .topbar{display:none} }   /* 样稿：电脑日历页标题在内容区，没有顶栏 */
.toast .toast-act{margin-left:12px;border:0;background:none;color:var(--accent-on-dark,var(--bg));font:inherit;font-weight:700;text-decoration:underline;cursor:pointer;min-height:28px}
/* ===== 1.5.1 艺术总监 5 处（desktop_5items）：只用主题变量；可点区域 ≥44px ===== */
.sr{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.tag{display:inline-block;font-size:11.5px;line-height:18px;padding:0 7px;border-radius:999px;background:var(--accent-tint);color:var(--accent-text,var(--accent));font-weight:500;white-space:nowrap}
.pill{display:inline-block;font-size:12px;line-height:18px;padding:0 8px;border-radius:999px;background:var(--surface-2);color:var(--text-2);margin-left:8px;font-weight:500;vertical-align:1px}
.hint.warn{color:var(--warn-text)}
.li .col{display:flex;flex-direction:column;gap:2px;min-width:0}
.li .grow,.grow{flex:1;min-width:0}
.li-ic{display:inline-flex;color:var(--accent);margin-right:10px}
.li-ic svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
/* ① 人物胶囊 */
.ds-capw{position:relative;padding:4px 4px 14px}
.ds-cap{display:inline-flex;align-items:center;gap:8px;height:44px;max-width:100%;padding:0 12px 0 7px;border-radius:999px;border:1px solid var(--border);background:var(--surface);color:var(--text);font:inherit;font-family:var(--font-round);font-size:15px}
.ds-cap b{font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ds-cap .ds-orb{width:30px;height:30px}
.ds-cap.on{cursor:pointer}
.ds-cap.on:hover{background:var(--surface-2)}
.ds-cap.open{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-tint)}
.ds-cap:focus-visible,.pm-it:focus-visible,.st-cn:focus-visible,.wp-fq-btn:focus-visible,.wp-fq-o:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.ds-caret{display:inline-flex;color:var(--text-2)}
.ds-caret svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2;transition:transform .15s}
.ds-cap.open .ds-caret svg{transform:rotate(180deg)}
.ds-pmenu{position:absolute;left:4px;top:54px;width:290px;background:var(--surface);border:1px solid var(--border);border-radius:16px;box-shadow:0 12px 32px var(--shadow);padding:8px;z-index:30;animation:pmin .12s ease-out}
@keyframes pmin{from{opacity:0;transform:scale(.97)}to{opacity:1;transform:none}}
.ds-pmenu.hidden{display:none}
.pm-h{display:flex;justify-content:space-between;font-size:12px;color:var(--text-3);padding:4px 10px 6px}
.pm-it{display:flex;align-items:center;gap:10px;width:100%;min-height:52px;padding:6px 10px;border:0;border-radius:12px;background:none;color:var(--text);font:inherit;text-align:left;cursor:pointer}
.pm-it:hover{background:var(--surface-2)}
.pm-it.cur{background:var(--accent-tint)}
.pm-orb{width:32px;height:32px;flex:none;display:block}
.pm-tx{display:flex;flex-direction:column;flex:1;min-width:0}
.pm-tx b{font-size:14.5px;font-weight:600}
.pm-sub{font-size:12px;color:var(--text-3)}
.pm-sub.warn{color:var(--warn-text)}
.pm-check,.pm-mi{display:inline-flex}
.pm-check{color:var(--accent)}
.pm-check svg,.pm-mi svg,.pm-plus svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.pm-mi{width:32px;justify-content:center;color:var(--text-2)}
.pm-plus{width:32px;height:32px;flex:none;border-radius:50%;border:1.5px dashed var(--border);display:grid;place-items:center;color:var(--accent)}
.pm-it.dis{cursor:default}
.pm-it.dis b,.pm-it.dis .pm-plus{opacity:.5}
.pm-sep{height:1px;background:var(--border);margin:6px 4px}
.pm-scrim{position:fixed;inset:0;z-index:19;background:var(--overlay);opacity:.15}
@keyframes xwfade{from{opacity:0}to{opacity:1}}
body.ps-fade #msgs{animation:xwfade .15s ease-out}
@media (prefers-reduced-motion:reduce){.ds-pmenu,body.ps-fade #msgs{animation:none}.ds-caret svg{transition:none}}
/* 电脑端子页面：标题靠左，像示意稿 */
@media (min-width:1100px){
  body.has-side .sub .topbar{display:flex;gap:8px;align-items:center}
  body.has-side .sub .topbar>a.icon-btn[href="#chat"]{display:none}
  body.has-side .sub .topbar-title{flex:1;align-items:flex-start;font-size:20px;font-weight:700}
  body.has-side [data-page=profile] .topbar-title{font-size:0}
  body.has-side [data-page=profile] .topbar-title::before{content:attr(data-t);font-size:20px;font-weight:700;color:var(--text)}
}
.pf-tg-btn{display:none;align-items:center;gap:6px;min-height:40px}
.pf-tg-btn svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.8}
/* 设置：左侧二级分类（电脑端）；手机单列 */
.st-cats{display:none}
.st-body{max-width:760px;margin:0 auto}
.st-cat>.sec:first-child{margin-top:4px}
@media (min-width:1100px){
  body.has-side .st-wrap{display:flex;align-items:flex-start;min-height:100%}
  body.has-side .st-cats{display:flex;flex-direction:column;gap:2px;width:184px;flex:none;padding:8px 10px;position:sticky;top:0;align-self:stretch;border-right:1px solid var(--border)}
  body.has-side .st-body{flex:1;max-width:760px;margin:0;padding:0 28px 40px}
  body.has-side .st-cat:not(.cur){display:none}
}
.st-cn{display:flex;align-items:center;gap:10px;height:40px;padding:0 12px;border-radius:10px;color:var(--text-2);text-decoration:none;font-size:14.5px}
.st-cn svg{width:18px;height:18px;flex:none;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.st-cn:hover{background:var(--surface-2);color:var(--text)}
.st-cn.on{background:var(--surface);color:var(--text);font-weight:600;box-shadow:0 1px 2px var(--shadow)}
/* ② 语言两段式 */
.lang-row{min-height:64px}
.seg2{display:inline-flex;padding:3px;gap:2px;border-radius:11px;background:var(--surface-2)}
.seg2 button{min-width:84px;height:38px;border:0;border-radius:8px;background:none;color:var(--text-2);font:inherit;font-size:14px;cursor:pointer}
.seg2 button.on{background:var(--surface);color:var(--text);font-weight:600;box-shadow:0 1px 3px var(--shadow)}
.seg2 button:focus-visible,.seg3 button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
/* 人物与声音 */
.pv-row{gap:12px;min-height:60px}
.pv-orb{width:32px;height:32px;flex:none;display:block}
.pv-tx{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}
#og-hint{text-wrap:balance}#og-hint>span{display:inline-block}#og-wrap .pv-tx .hint{text-wrap:balance}
.pv-name{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.pv-play svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:2;margin-right:4px;vertical-align:-2px}
.pv-add{justify-content:space-between;gap:12px}
.pv-add-btn{display:inline-flex;align-items:center;gap:10px;border:0;background:none;color:var(--accent);font:inherit;min-height:44px;cursor:pointer;padding:0}
.pv-add.dis .pv-add-btn{color:var(--text-3);cursor:default}
.pv-more{gap:8px;justify-content:flex-end;flex-wrap:wrap}
/* 她来找你 */
.pro-int-row{gap:12px;flex-wrap:wrap}
.seg3{display:inline-flex;padding:3px;gap:2px;border-radius:11px;background:var(--surface-2)}
.seg3 button{min-width:64px;height:36px;border:0;border-radius:8px;background:none;color:var(--text-2);font:inherit;cursor:pointer}
.seg3 button.on{background:var(--surface);color:var(--text);font-weight:600;box-shadow:0 1px 3px var(--shadow)}
.pro-card2 .pro-cats{display:grid;grid-template-columns:1fr 1fr;gap:10px 18px}
.pro-cats label{display:flex;align-items:center;gap:8px;min-height:32px}
.pro-cats label.dis{opacity:.5}
@media (max-width:560px){.pro-card2 .pro-cats{grid-template-columns:1fr}}
/* ⑤ 通知被拒 */
.li.dis input+i{opacity:.45}
.push-why{display:flex;gap:8px;align-items:flex-start;margin:0 12px 10px;padding:10px 12px;border-radius:10px;background:var(--warn-tint);color:var(--warn-text);font-size:13px;line-height:1.5}
.push-why.hidden,.push-how.hidden{display:none}
.push-why svg{width:16px;height:16px;flex:none;margin-top:2px;fill:none;stroke:currentColor;stroke-width:2}
.push-how{margin:0 12px 12px;border:1px solid var(--border);border-radius:12px;overflow:hidden}
.push-how summary{min-height:44px;display:flex;align-items:center;padding:0 12px;color:var(--accent);font-weight:600;cursor:pointer}
.ph-row{display:grid;grid-template-columns:120px 1fr;gap:12px;padding:10px 12px;border-top:1px solid var(--border);font-size:13px;line-height:1.55}
.ph-row b{display:flex;flex-direction:column;gap:3px;align-items:flex-start}
.ph-row.yours{background:var(--accent-tint)}
/* ③ 帮我关注 */
.wp-wrap{max-width:760px;margin:0 auto;padding:4px 16px 40px}
.wp-intro{margin:4px 2px 14px}
.wp-card{padding:14px 16px;margin-bottom:14px;display:flex;flex-direction:column;gap:10px}
.wp-card.ended{background:var(--bg);color:var(--text-2)}
.wp-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.wp-title{font-size:15.5px}
.tag.t-pause{background:var(--surface-2);color:var(--text-2)}
.tag.t-end{background:var(--surface-2);color:var(--text-3)}
.tag.t-on{background:var(--ok-tint);color:var(--ok)}
.wp-meta{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:13.5px}
.wp-meta .dot{color:var(--text-3)}
.wp-recent{display:flex;flex-direction:column;gap:6px;font-size:13.5px;border-top:1px solid var(--border);padding-top:10px}
.wp-r{display:grid;grid-template-columns:92px 1fr;gap:10px}
.wp-t{color:var(--text-3);font-variant-numeric:tabular-nums}
.wp-fail{display:flex;gap:6px;align-items:flex-start;color:var(--danger)}
.wp-fail svg{width:15px;height:15px;flex:none;margin-top:2px;fill:none;stroke:currentColor;stroke-width:2}
.wp-foot{display:flex;align-items:center;gap:10px;border-top:1px solid var(--border);padding-top:10px}
.wp-sw{display:inline-flex;align-items:center;gap:10px;min-height:44px}
.wp-del{display:inline-flex;align-items:center;gap:6px;min-height:40px}
.wp-del svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.8}
.wp-fq{position:relative;display:inline-flex}
.wp-fq-btn{display:inline-flex;align-items:center;gap:4px;min-height:36px;padding:0 10px;border:1px solid var(--border);border-radius:9px;background:var(--surface);color:var(--text);font:inherit;font-size:13.5px;cursor:pointer}
.wp-fq-btn svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2}
.wp-fq-menu{position:absolute;left:0;top:40px;min-width:200px;background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:0 10px 28px var(--shadow);padding:6px;z-index:25}
.wp-fq-menu.hidden{display:none}
.wp-fq-o{display:flex;align-items:center;gap:8px;min-height:40px;padding:0 10px;border-radius:8px;cursor:pointer;font-size:14px}
.wp-fq-o:hover{background:var(--surface-2)}
.wp-fq-o.on{background:var(--accent-tint)}
.wp-fq-o.dis{color:var(--text-3);cursor:not-allowed}
.wt-manage{color:var(--accent);text-decoration:none;min-height:44px}
/* ④ 她记得的你 */
.pf-top{max-width:1120px;margin:0 auto 6px;display:flex;flex-direction:column;gap:6px}
.ma-row{display:flex;align-items:center;gap:8px;min-height:52px}
.ma-ic{display:inline-flex;color:var(--text-3);padding-left:4px}
.ma-ic svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2}
.ma-row .li-in{flex:1;border:0;background:none;min-height:44px}
#ma-out.ma-open{margin-top:10px;border:1.5px solid var(--accent);border-radius:12px;padding:12px}
.ma-q2{font-weight:600;margin:0 0 8px}
#ma-out .ma-c{display:flex;align-items:center;gap:10px;min-height:44px;border-top:1px solid var(--border);padding:6px 2px}
#ma-out .ma-c input{width:18px;height:18px;accent-color:var(--accent)}
#ma-out .ma-btns{display:flex;justify-content:flex-end;gap:8px;margin-top:10px}
.og-row{gap:12px;min-height:56px}
.og-ic{width:32px;height:32px;flex:none;border-radius:9px;background:var(--accent-tint);color:var(--accent);display:grid;place-items:center}
.og-ic svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.8}
.sec .pill,.topbar .pill{height:20px;line-height:20px;border:0;vertical-align:2px}
.pv-add.dis .pm-plus{opacity:.5}
.push-how summary{list-style:none;gap:6px}
.push-how summary::-webkit-details-marker{display:none}
.push-how summary::after{content:"›";display:inline-block;transition:transform .15s;font-size:16px}
.push-how[open] summary::after{transform:rotate(90deg)}
#ma-card{padding:4px 6px 4px 12px}
#pro-by{min-width:220px;width:auto;max-width:60%;flex:0 0 auto}
/* ===== 1.5.1 时钟页（艺术总监意见第 2 节、ad_clock_desktop）：大号细体时间 tabular-nums；卡片 22px；关闭的整行降透明度但保 ≥3:1（另写“已关闭”）；只用主题变量 ===== */
.ck-page .grow{flex:1;min-width:0}
.ck-page .ck-cols{display:flex;flex-direction:column;gap:12px}
.ck-page .ck-main{padding:4px 2px;max-width:640px;width:100%}
.ck-page .ck-head{display:flex;align-items:center;gap:8px;margin:6px 4px 12px}
.ck-page .ck-head h2{font-size:22px;margin:0 4px}
.ck-page .ck-sb{width:40px;height:40px;border-radius:12px;background:var(--surface-2)}
.ck-page .ck-q{max-width:200px;padding:8px 12px}
.ck-page .ck-newb{width:auto;height:auto;min-height:40px;margin:0;padding:8px 16px;border-radius:12px;font-size:14px;font-weight:600;display:inline-flex;align-items:center;gap:6px}
.ck-page .ck-newb svg,.ck-page .ck-empty-btn svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:round}
.ck-page .ck-seg{display:flex;width:100%;max-width:420px}
.ck-page .ck-seg button{flex:1}
.ck-page .ck-next{font-size:13px;color:var(--text-2);margin:12px 6px 8px;font-variant-numeric:tabular-nums}
.ck-page .card{padding:0;margin:0 0 14px;border-radius:22px;box-shadow:none;background:var(--surface);overflow:hidden}
.ck-page .sec{font-size:13px;color:var(--text-3);font-weight:600;margin:14px 6px 8px}
.ck-page .ck-al,.ck-page .ck-rm,.ck-page .ck-cd{display:flex;align-items:center;gap:12px;padding:12px 16px;border-top:1px solid var(--border);cursor:pointer;min-height:56px}
.ck-page .ck-card>:first-child{border-top:0}
.ck-page .ck-al:hover,.ck-page .ck-rm:hover,.ck-page .ck-cd:hover{background:color-mix(in srgb,var(--surface-2) 55%,transparent)}
.ck-page .sel{background:var(--accent-tint)!important}
.ck-page .ck-al:focus-visible,.ck-page .ck-rm:focus-visible,.ck-page .ck-cd:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
.ck-page .ck-big{font-size:clamp(36px,4.2vw,48px);font-weight:300;line-height:1.05;font-variant-numeric:tabular-nums;letter-spacing:-.5px}
.ck-page .sub{font-size:12.5px;color:var(--text-2);margin-top:2px}
.ck-page .ck-al.off .ck-big{color:var(--text-3)}
.ck-page .tt{font-size:15px;overflow-wrap:anywhere}
.ck-page .ck-dot{width:8px;height:8px;border-radius:50%;background:var(--text-3);flex:none}
.ck-page .ck-dot.ai{background:var(--accent)}
.ck-page .ck-ack,.ck-page .ck-cd .btn{width:auto;height:auto;margin:0;padding:6px 14px;min-height:36px;border-radius:10px}
.ck-page .ck-empty{padding:22px 18px;display:flex;flex-direction:column;align-items:flex-start;gap:12px}
.ck-page .ck-empty p{margin:0;color:var(--text-2)}
.ck-page .ck-empty-btn{width:auto;height:auto;margin:0;padding:8px 16px;min-height:40px;border-radius:12px;display:inline-flex;align-items:center;gap:6px}
.ck-page .ck-ringcard{padding:22px 16px 18px;display:flex;flex-direction:column;align-items:center;gap:16px}
.ck-page .ck-ring{position:relative;width:min(240px,60vw);aspect-ratio:1}
.ck-page .ck-ring svg{width:100%;height:100%;transform:rotate(-90deg)}
.ck-page .ck-ring circle{fill:none;stroke-width:10}
.ck-page .ck-ring .bg{stroke:var(--surface-2)}
.ck-page .ck-ring .fg{stroke:var(--accent);stroke-linecap:round;transition:stroke-dashoffset .9s linear}
.ck-page .ck-rc{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px}
.ck-page .ck-rt{font-size:clamp(34px,4vw,44px);font-weight:300;font-variant-numeric:tabular-nums}
.ck-page .ck-rn{font-size:13px;color:var(--text-2);max-width:70%;text-align:center;overflow-wrap:anywhere}
.ck-page .ck-rbtn{display:flex;gap:12px}
.ck-page .ck-rb{width:auto;height:auto;margin:0;min-width:96px;min-height:44px;border-radius:22px}
.ck-page .ck-cdv,.ck-page .ck-days{font-size:24px;font-weight:300;font-variant-numeric:tabular-nums;text-align:right}
.ck-page .ck-sh{display:flex;align-items:center;justify-content:space-between}
.ck-page .ck-x{width:36px;height:36px}
.ck-page .ck-form{padding:16px;display:flex;flex-direction:column;gap:12px}
.ck-page .ck-hint{padding:16px}.ck-page .ck-hint p{margin:0;color:var(--text-2);font-size:14px;line-height:1.6}
.ck-page .ck-bigtime{font:inherit;font-size:clamp(40px,4.4vw,52px);font-weight:300;font-variant-numeric:tabular-nums;text-align:center;border:0;background:transparent;color:var(--text);width:100%;padding:4px 0;outline:0;border-radius:12px}
.ck-page .ck-bigtime:focus-visible{box-shadow:0 0 0 2px var(--accent-tint)}
.ck-page .ck-f{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--text-2)}
.ck-page .ck-chips{display:flex;gap:6px;flex-wrap:wrap}
.ck-page .ck-chips button{min-width:40px;height:40px;border-radius:20px;border:0;background:var(--surface-2);color:var(--text-2);font:inherit;font-size:13px;cursor:pointer;padding:0 8px}
.ck-page .ck-chips button.on{background:var(--accent);color:var(--on-accent);font-weight:600}
.ck-page .ck-chips button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.ck-page .ck-rep{margin:-4px 2px 0;font-size:12.5px;color:var(--text-3)}
.ck-page .ck-st{margin:0;font-size:12.5px;color:var(--text-2);min-height:1em}.ck-page .ck-st.err{color:var(--danger)}
.ck-page .ck-mode{align-self:flex-start}
.ck-page .cf-in{width:100%;border:0;border-radius:12px;background:var(--surface-2);color:var(--text);font:inherit;font-size:15px;padding:10px 12px;outline:0}
.ck-page .cf-row{display:flex;gap:8px}
.ck-page .cf-btns{display:flex;gap:8px;justify-content:flex-end}.ck-page .cf-btns .btn{width:auto;height:auto;margin:0;padding:8px 16px;min-height:40px}
.ck-page .ck-inbox .li{padding:10px 16px}
@media (min-width:1100px){
  [data-page=clock] .scroll{padding:0}
  body.has-side [data-page=clock] .topbar{display:none}
  .ck-page .ck-cols{flex-direction:row;align-items:stretch;min-height:100%;gap:0}
  .ck-page .ck-main{flex:1;max-width:none;padding:14px 22px}
  .ck-page .ck-main>*{max-width:600px}
  .ck-page .ck-head{max-width:none}
  .ck-page .ck-side{width:360px;flex:none;background:var(--surface);border-left:1px solid var(--surface-2);padding:20px;min-height:calc(100dvh / var(--z,1))}
  .ck-page .ck-side .card{background:var(--surface-2)}
  .ck-page .ck-side .cf-in,.ck-page .ck-side .ck-chips button:not(.on){background:var(--surface)}
}
@media (prefers-reduced-motion:reduce){ .ck-page .ck-ring .fg{transition:none} }
.ck-page .ck-sw{display:flex;align-items:center;justify-content:flex-end;min-width:52px;min-height:44px;flex:none}
.ck-page .ck-sw input:checked+i{background:var(--ok)}
.ck-page .ck-chips{gap:4px;flex-wrap:nowrap}.ck-page .ck-chips button{min-width:36px;width:36px;height:36px;padding:0;border-radius:18px;flex:none}
.ck-page .ck-bigtime::-webkit-calendar-picker-indicator{display:none}
@media (max-width:1099px){ .ck-page .ck-head h2{display:none} .ck-page .ck-side:empty, .ck-page .ck-side.idle{display:none} }
/* ===== 艺术总监 P0 #4 / P1 #6 / P1 #9 / P2 #15：输入框下两个小开关（不保存、朗读），左栏一行“她记得” ===== */
.composer-sub{gap:8px}
.cchip{position:relative;display:inline-flex;align-items:center;gap:5px;min-height:32px;padding:4px 12px;border-radius:16px;background:var(--surface-2);color:var(--text-2);font-size:13px;cursor:pointer;user-select:none}
.cchip input{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}
.cchip svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.cchip.on,.cchip:has(input:checked){background:var(--accent-tint);color:var(--accent-text);font-weight:600}
.cchip:has(input:focus-visible){outline:2px solid var(--accent);outline-offset:2px}
.q-memline{margin:0;font-size:12.5px;line-height:1.6;color:var(--text-2)}
.q-memline .qm-h{color:var(--text);font-weight:600}
.q-memline .q-more{margin-left:6px;white-space:nowrap}
/* 艺术总监 P2 #14：密码框眼睛按钮、忘记密码、注册两步 */
.field.has-eye{position:relative}
.field.has-eye input{padding-right:48px}
.field .eye{position:absolute;right:4px;bottom:4px;width:40px;height:40px;border:0;background:transparent;color:var(--text-2);border-radius:10px;cursor:pointer;display:grid;place-items:center}
.field .eye svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.field .eye:hover{background:var(--surface-2)}.field .eye:focus-visible{outline:2px solid var(--accent)}
.forgot{display:block;margin:10px auto 0;font-size:13px}
#lg-forgot-txt{margin:6px 0 0;text-align:center;font-size:13px}
.rg-steps{margin:0 0 4px;font-size:13px;color:var(--text-2)}
#rg-back{display:block;margin:10px auto 0;font-size:13px}
/* 艺术总监 P2 #18 看板日期快捷选项 */
.dash-filter{display:flex;flex-wrap:wrap;align-items:center;gap:10px}
.dash-rng button{min-width:72px;height:36px}
.dash-custom{display:inline-flex;flex-wrap:wrap;align-items:center;gap:10px}.dash-custom.hidden{display:none}
#dash-csv{display:inline-flex;align-items:center;gap:6px}#dash-csv svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
/* 艺术总监 P2 #17：空状态一句话＋主按钮；电脑上 toast 对准内容区中间（让开左侧导航） */
.empty-cta{display:flex;flex-direction:column;align-items:flex-start;gap:12px;padding:20px 18px}
.empty-cta p{margin:0;color:var(--text-2);font-size:14px;line-height:1.6}
.empty-cta .btn{width:auto;height:auto;margin:0;padding:8px 16px;min-height:40px;border-radius:12px}
@media (min-width:1100px){ body.has-side .toast{left:calc(50% + var(--side-w,216px) / 2)} }

/* 1.5.1 艺术总监 #16（Z 10/16 改为加框）：她的回答＝柔和浅色气泡＋细边＋轻阴影、左上角收尖；光球和名字只跟最新一条；操作悬停／点一下才出现；不再逐条标“未保存” */
.m.bot{box-shadow:0 0 0 1px var(--border),0 1px 3px rgba(20,30,50,.06)}
#msgs .mr.bot:not(.last) .av{display:none}
#msgs .mr:not(.head) .who{display:none}
#msgs .mr.bot:not(.last) .mcol{margin-left:4px}
.m.user.unsaved,.m.bot.unsaved{border:none;background:var(--accent-tint)}
.m.bot.unsaved{background:var(--surface);box-shadow:0 0 0 1px var(--border)}
.m.bot .meta:empty{display:none}
.mr.bot{margin-bottom:22px}
.m.bot .hacts{position:absolute;top:100%;left:2px;display:flex;gap:2px;padding-top:2px;opacity:0;pointer-events:none;transition:opacity .15s;white-space:nowrap}
.m.bot:hover .hacts,.m.bot:focus-within .hacts,.m.bot.show-acts .hacts{opacity:1;pointer-events:auto}
.m.bot .hacts .ib.fb.on{opacity:1}
.hacts .ib.lab{width:auto;height:22px;padding:0 7px 0 5px;gap:3px;font-size:12px;color:var(--text-3);border:none;background:transparent;display:inline-flex;align-items:center;border-radius:6px}
.hacts .ib.lab svg{width:13px;height:13px}
.hacts .ib.lab:hover{color:var(--accent-text);background:var(--accent-tint)}
.hacts .ib.lab.on{color:var(--accent-text)}
.m.bot .fb-menu{margin-top:8px}
.ns-sep{font-size:12px;color:var(--text-3);width:fit-content;margin-left:auto;margin-right:auto}
/* 1.5.1 艺术总监 P1 #11：首次引导四步 */
.ob-card{max-width:460px;align-self:center;padding:28px 24px 22px}
.ob-dots{display:flex;justify-content:center;gap:6px;margin-bottom:8px}
.ob-dots i{width:6px;height:6px;border-radius:3px;background:var(--border);transition:width .2s}
.ob-dots i.on{width:16px;background:var(--accent)}
.ob-count{text-align:center;font-size:12px;color:var(--text-3);margin:0 0 6px}
.ob-step{display:none}
.ob-step.on{display:block}
.ob-step h1{font-family:var(--font-round);font-size:22px;text-align:center;margin:6px 0 14px}
.ob-fields{display:flex;flex-direction:column;gap:10px}
.ob-in{display:flex;align-items:center;gap:6px;height:44px;padding:0 12px;border:1px solid var(--border);border-radius:12px;background:var(--surface);font-size:13.5px;color:var(--text-2)}
.ob-in input{flex:1;min-width:0;border:none;outline:none;background:transparent;font-size:15px;font-weight:600;color:var(--text);height:100%}
.ob-in:focus-within{border-color:var(--accent)}
.ob-look{width:100%;margin:0 0 12px}
.ob-tz{background:var(--bg);border-radius:16px;padding:12px 14px}
.ob-tz b{font-size:15px}.ob-tz p{margin:4px 0 8px;font-size:13.5px;color:var(--text-2)}
.ob-tz select,.ob-tz input{width:100%}
.ob-try-h{font-size:13px;color:var(--text-2);margin:12px 0 8px}
.ob-try{display:flex;flex-wrap:wrap;gap:8px}
.ob-try .cchip{border:none}
.ob-btns{display:flex;gap:10px;margin-top:20px}
.ob-btns .btn{margin:0;min-height:46px;border-radius:14px}
.ob-skip{flex:1;background:var(--surface-2);color:var(--text-2)}
.ob-next{flex:2}
.ob-next.hidden{display:none}
/* 1.5.1 艺术总监 P1 #12：使用说明子页，目录电脑在左、手机在上 */
.gd-page{padding:0}
.gd-wrap{display:flex;flex-direction:column}
.gd-toc{display:flex;gap:4px;overflow-x:auto;padding:8px 12px;position:sticky;top:0;background:var(--bg);z-index:2;scrollbar-width:none}
.gd-toc::-webkit-scrollbar{display:none}
.gd-toc a{flex:none;padding:7px 12px;border-radius:10px;font-size:13px;color:var(--text-2);text-decoration:none;background:var(--surface-2)}
.gd-toc a .l{display:none}
.gd-toc a.on{background:var(--accent-tint);color:var(--accent-text);font-weight:600}
.gd-body{padding:4px 18px calc(100dvh - 200px);max-width:720px}
.gd-body section{scroll-margin-top:56px}
.gd-body h2{font-size:20px;margin:18px 0 6px}
.gd-body p{margin:0;line-height:1.75;color:var(--text-2);font-size:14.5px}
@media (min-width:1100px){
  .gd-wrap{flex-direction:row;align-items:flex-start;min-height:100%}
  .gd-toc{flex-direction:column;width:200px;flex:none;padding:12px 10px;overflow:visible;align-self:flex-start;position:sticky;top:0;background:transparent}
  .gd-body{border-left:1px solid var(--border);min-height:100%}
  .gd-toc a{background:transparent;padding:8px 12px}
  .gd-toc a .l{display:inline}.gd-toc a .s{display:none}
  .gd-toc a:hover{background:var(--surface-2)}
  .gd-toc a.on{background:var(--accent-tint)}
  .gd-body{padding:6px 32px calc(100dvh - 160px)}
  .gd-body section{scroll-margin-top:12px}
}
.ob-in input::placeholder{font-weight:400;color:var(--text-3)}

/* 1.5.1 艺术总监 P1 #10：聊天记录搜索 */
.hs-head{padding:4px 0 10px}
.hs-seg{display:flex;width:100%;max-width:520px}
.hs-seg button{flex:1}
.hs-box{display:flex;align-items:center;gap:8px;height:44px;padding:0 14px;border-radius:12px;background:var(--surface);box-shadow:0 0 0 1px var(--border);max-width:520px}
.hs-box:focus-within{box-shadow:0 0 0 1.5px var(--accent)}
.hs-box input{flex:1;min-width:0;border:none;outline:none;background:transparent;font:inherit;font-size:15px;color:var(--text)}
.hs-ic svg{width:16px;height:16px;fill:none;stroke:var(--text-3);stroke-width:2;display:block}
.hs-count{margin:10px 2px 8px;font-size:12.5px}
.hs-res{max-width:520px;padding:0;overflow:hidden}
.hs-res:not(.card){background:none;box-shadow:none}
.hs-hit{display:flex;align-items:center;gap:10px;width:100%;text-align:left;padding:11px 14px;border:0;background:none;font:inherit;color:var(--text);cursor:pointer;border-top:1px solid var(--border)}
.hs-hit:first-child{border-top:0}
.hs-hit:hover{background:var(--surface-2)}
.hs-tx{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.hs-when{font-size:11.5px;color:var(--text-3)}
.hs-sn{font-size:14.5px;line-height:1.5;word-break:break-word}
.hs-hit .chev{color:var(--text-3);font-size:18px}
.hs-res mark,.h-round mark{background:color-mix(in srgb,var(--accent) 22%,transparent);color:inherit;border-radius:3px;padding:0 1px}
.hs-more{display:block;margin:8px auto 10px}
.h-round.hs-flash{animation:hsflash 2.4s ease-out}
@keyframes hsflash{0%,30%{background:var(--accent-tint);box-shadow:0 0 0 6px var(--accent-tint)}100%{background:transparent;box-shadow:0 0 0 6px transparent}}
@media (prefers-reduced-motion:reduce){.h-round.hs-flash{animation:none;background:var(--accent-tint)}}

/* 1.5.1 艺术总监 P1 #7：她记得的你分三组（单栏） */
.pf3{max-width:760px;margin:0 auto;width:100%}
.pf-top{max-width:760px;margin-left:auto;margin-right:auto}
.pf3-h{font-size:13px;color:var(--text-2);margin:22px 4px 8px}
.pf3-list{padding:0;overflow:hidden}
.pf3-row{display:flex;align-items:center;gap:12px;min-height:54px;padding:8px 14px;color:var(--text);text-decoration:none;cursor:pointer;list-style:none;border-top:1px solid var(--border)}
.pf3-list>.pf3-row:first-child,.pf3-list>.pf3-row.hidden+*>.pf3-row,.pf3-list>.pf3-d:first-child>.pf3-row,.pf3-list>.hidden:first-child+.pf3-d>.pf3-row{border-top:0}
.pf3-row::-webkit-details-marker{display:none}
.pf3-row:hover{background:var(--surface-2)}
.pf3-ic{width:30px;height:30px;border-radius:9px;background:var(--accent-tint);color:var(--accent-text);display:inline-flex;align-items:center;justify-content:center;flex:none}
.pf3-ic svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.pf3-l{flex:1;min-width:0;font-size:14.5px;display:flex;align-items:center;gap:4px}
.pf3-v{font-size:13px;color:var(--text-2);max-width:45%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pf3-row .chev{color:var(--text-3);font-size:18px;transition:transform .15s}
.pf3-d[open]>.pf3-row .chev{transform:rotate(90deg)}
.pf3-body{padding:4px 14px 14px}
.pf3-body .toggle-card{box-shadow:none;background:var(--surface-2);margin:0}
.pf3 .feel{margin:0;padding:0;border:0;background:none}
.pf3 .feel>summary{margin-top:0;font-size:inherit}
.pf3-first{margin-top:4px}
.pf3-list .pf3-row{height:54px;padding-top:0;padding-bottom:0;box-sizing:border-box}
/* 1.5.1 H1／I-3 */
.noted.ask{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.noted.ask .btn.small{padding:2px 10px;font-size:12px;min-height:0}
li.it.flash{animation:itflash 2.2s ease-out}@keyframes itflash{0%,40%{background:var(--accent-soft,rgba(214,108,40,.18))}100%{background:transparent}}
.pf-sum{margin:2px 0 12px}.pf-sum-t{margin:0 0 4px;color:var(--text-2)}.pf-more{font-size:13px;padding:0}
@media (prefers-reduced-motion:reduce){li.it.flash{animation:none;outline:2px solid var(--accent)}}
.cp-row .cp-del{flex:none}

/* ---- 1.0.6 正式前端补充（原型里没有、真功能需要的样式） ---- */
.topbar-status{font-size:12px;color:var(--text-2);font-weight:400}
.run-meta{align-self:flex-start;margin:-2px 0 4px 52px;font-size:12px}
.run-meta .link{font-size:12px;color:var(--text-2)}
.meta .ib.tts{color:var(--accent-text)}
.meta .ib:disabled{opacity:.4;cursor:default}
.sys.audio{display:flex;align-items:center;gap:6px}
.sys.audio .ib{width:28px;height:28px;border:1px solid var(--border);background:var(--surface);border-radius:999px}
.ns,.cut{font-size:12px;color:var(--text-2);margin-left:4px}
.m.voice .mic-tag{display:inline-flex;vertical-align:-2px;margin-right:4px;opacity:.7}
.m.voice .mic-tag svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2}
.mt{white-space:pre-wrap;word-break:break-word}
.rec.cancel{color:var(--danger);box-shadow:0 0 0 2px var(--danger) inset,0 10px 30px rgba(0,0,0,.12)}
.rec.cancel .wave i{background:var(--danger)}
#ptt{touch-action:none;user-select:none;-webkit-user-select:none}
.adminbar b{font-weight:600;margin-right:2px}
.adminbar .seg{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:999px}
.adminbar .seg svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:2}
#nostore-pill{border-color:var(--accent);color:var(--accent-text)}
details.hist{padding:4px 14px 10px}
details.hist summary{cursor:pointer;font-size:12.5px}
.h-round{position:relative;display:flex;flex-direction:column;gap:6px;padding:10px 0;border-bottom:1px solid var(--border)}
.h-round .h-del{position:absolute;right:0;top:8px;opacity:.55}
.h-round:hover .h-del{opacity:1}
#history-list{display:flex;flex-direction:column;padding:12px 24px 40px;max-width:900px;width:100%;margin:0 auto}
#history-list .h-more{align-self:center;margin:16px 0}
#face-frame.speaking{box-shadow:0 0 0 2px var(--accent) inset}
#pf-umood > .um-edit{display:block}

/* 1.1 头像设置 */
.av-row{display:flex;align-items:center;gap:12px}
.av-row .av-prev{margin-top:0;width:44px;height:44px}
.av-row .av-name{flex:1}
.av-row .av-acts{display:flex;gap:6px}

/* 1.1 事项、到点横条 */
.it-row{display:flex;align-items:center;gap:10px}
.it-row .it-main,.item-banner .it-main{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}
.it-row.it-off .it-main b{opacity:.55;text-decoration:line-through}
.it-btns{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.item-banner{position:fixed;top:0;left:50%;transform:translate(-50%,-130%);transition:transform .28s ease;z-index:90;width:min(560px,calc(100vw - 20px));margin-top:10px;display:flex;align-items:center;gap:10px;padding:12px 14px;background:var(--card,#fff);border-radius:16px;box-shadow:0 8px 28px rgba(0,0,0,.18)}
.item-banner.on{transform:translate(-50%,0)}
.item-banner.alarm{border:2px solid var(--accent,#e8833a)}
.item-banner .icon-btn,.it-row .icon-btn{font-size:18px;width:38px;height:38px;border-radius:50%}
#nt-tz{margin-top:6px;max-width:100%}

/* ---------- 1.1.1 滚动条跟着三套配色走（细、淡）：Firefox 用 scrollbar-*，Chrome/Edge/Safari 用 ::-webkit-scrollbar ---------- */
[data-theme=dark-orange]{ --sb:rgba(236,234,229,.20); --sb-hover:rgba(240,148,90,.55); color-scheme:dark }
[data-theme=dark-blue]{ --sb:rgba(232,236,243,.20); --sb-hover:rgba(91,156,255,.55); color-scheme:dark }
[data-theme=light-blue]{ --sb:rgba(27,31,39,.20); --sb-hover:rgba(47,111,214,.55); color-scheme:light }
[data-theme=light-orange]{ --sb:rgba(34,32,28,.20); --sb-hover:rgba(181,84,27,.55); color-scheme:light; }
html, body, *{ scrollbar-width:thin; scrollbar-color:var(--sb, rgba(128,128,128,.3)) transparent }
::-webkit-scrollbar{ width:8px; height:8px; background:transparent }
::-webkit-scrollbar-track, ::-webkit-scrollbar-corner{ background:transparent }
::-webkit-scrollbar-thumb{ background-color:var(--sb, rgba(128,128,128,.3)); border-radius:8px; border:2px solid transparent; background-clip:padding-box; min-height:32px }
::-webkit-scrollbar-thumb:hover{ background-color:var(--sb-hover, rgba(128,128,128,.5)) }
::-webkit-scrollbar-button{ display:none; width:0; height:0 }

/* ---------- 1.1.1 回答下方的小字确认（只来自工具回执） ---------- */
.acts{ display:flex; flex-wrap:wrap; gap:6px; margin-top:6px }
.srcs{ display:flex; flex-wrap:wrap; gap:4px 10px; margin-top:4px; font-size:12px }
.srcs .src{ color:var(--muted, #888); text-decoration:none; border-bottom:1px dotted currentColor }
.act-chip{ font-size:12px; line-height:1.4; padding:2px 8px; border-radius:10px; background:var(--ok-tint); color:var(--ok) }

/* 1.1.1：设置 → 名字 那一行的“保存”不再被长提示挤歪；事项按钮用图标 */
#st-names .li:last-child{align-items:center}
#st-names .li:last-child .hint{flex:1 1 auto;min-width:0}
#st-names .li:last-child .btn{flex:0 0 auto;white-space:nowrap}
.it-btns{display:flex;gap:2px;flex:0 0 auto}
.mr.partial .mt{opacity:.6}.partial-tag{display:block;font-size:12px;color:var(--text-2);margin-top:2px}  /* 第 34 项：中断时留下的半截 */
/* 1.2.0 第 30 项“这句不对” */
.fb-menu{ display:flex; flex-wrap:wrap; gap:6px; margin-top:6px }
.fb-menu .act-chip{ border:0; cursor:pointer; background:var(--surface-2); color:var(--text); box-shadow:inset 0 0 0 1px var(--border) }
.fb-menu .act-chip.on, .meta .fb.on{ color:var(--danger, #c0392b) }
/* 1.2.0 第 9 项：字号、减少动效、日历、时区搜索、事项标签可点 */
.msg .mt, #input{ font-size:var(--chat-fs, 15px) }
html.reduce-motion *, html.reduce-motion *::before, html.reduce-motion *::after{ animation-duration:.01ms !important; animation-iteration-count:1 !important; transition-duration:.01ms !important; scroll-behavior:auto !important }
.h-cal{ padding:10px 14px 4px; max-width:420px; margin:0 auto }
.cal-head{ display:flex; align-items:center; gap:10px; justify-content:center; margin-bottom:6px }
.cal-head .cal-nav{ font-size:20px; width:32px; height:32px }
.cal-grid{ display:grid; grid-template-columns:repeat(7,1fr); gap:4px; text-align:center }
.cal-w{ font-size:12px; color:var(--text-3) }
.cal-d{ border:0; background:none; border-radius:8px; padding:6px 0; font:inherit; color:var(--text-3); position:relative }
.cal-d.has{ color:var(--text); cursor:pointer }
.cal-d.has::after{ content:""; position:absolute; left:50%; bottom:2px; width:4px; height:4px; margin-left:-2px; border-radius:50%; background:var(--accent, #e8794a) }
.cal-d.on{ background:var(--accent, #e8794a); color:#fff }
.tz-find{ min-width:0 }
.act-chip.go{ cursor:pointer; text-decoration:underline dotted }

/* 1.2.0 第 14 项 我们的回忆 */
.memories-btn{ margin:0 0 10px }
.memories .mem-row{ margin:6px 0 }
.memories .mem-fam{ margin:12px 0 6px }
.memories .mem-bar{ height:8px; border-radius:4px; background:var(--surface-2); margin-top:6px; overflow:hidden }
.memories .mem-fill{ height:100%; background:var(--accent, #6b8afd) }

/* 1.3.1 主动互动卡 */
#pro-card .seg{display:flex;gap:6px;margin:10px 0}
#pro-card .seg button{flex:1;padding:6px 0;border-radius:8px;border:1px solid var(--border);background:var(--surface-2);cursor:pointer}
#pro-card .seg button.on{background:var(--accent,#3b6fd8);color:#fff;border-color:transparent}
#pro-card .pro-cats{display:grid;gap:6px;margin:6px 0 4px}
#pro-card .pro-cats label{display:flex;gap:8px;align-items:center;font-size:14px}
/* 1.3.1 帮我关注列表：名字占满，频率和按钮靠右挨着 */
#wt-list .wt-row{display:flex;align-items:center;gap:8px}
#wt-list .wt-row .wt-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#wt-list .wt-row select{flex:none;width:auto;min-width:120px}

/* 1.3.1 一句话管理记忆 */
#ma-card .ma-row{display:flex;gap:8px}
#ma-card .ma-row input{flex:1}
#ma-out .ma-c{display:flex;gap:8px;align-items:flex-start;margin:6px 0}
#ma-out .ma-btns{display:flex;gap:8px;margin-top:8px}
#ma-out .ma-sum{white-space:pre-wrap;margin:8px 0 0}
#ma-card #ma-q{text-align:left}
/* 1.3.1 主动互动：第一次在聊天里问一下 */
.pro-ask{display:flex;gap:8px;margin-top:8px}

/* 1.4 管理员看板：只用主题变量，四套主题都跟着变 */
.dash-filter{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:10px 12px}
.dash-filter input,.dash-form input,.dash-form select{background:var(--surface-2);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:6px 8px;font:inherit}
.dash-form{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding:8px 12px}
.dash-tw{overflow-x:auto;padding:0 12px 8px}
.dash-t{width:100%;border-collapse:collapse;font-size:13px}
.dash-t th{text-align:left;color:var(--text-2);font-weight:600;border-bottom:1px solid var(--border);padding:6px 8px;white-space:nowrap}
.dash-t td{border-bottom:1px solid var(--border);padding:6px 8px;color:var(--text);white-space:nowrap}
.dash-bar{display:grid;grid-template-columns:48px 1fr auto;gap:8px;align-items:center}
.dash-bar i{display:block;height:8px;border-radius:4px;background:var(--accent);min-width:2px}
.adm h3{padding:10px 12px 4px}
a.btn{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;box-sizing:border-box;line-height:1}   /* 1.4 Z 19:33：链接做的按钮文字垂直居中（导出 CSV／回到聊天） */
/* 1.4 设置页“人物” */
.persona-row{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}
.persona-acts{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.persona-add{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.persona-add select{background:var(--surface-2);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:6px 8px;font:inherit}
.btn.sm{height:32px;padding:0 12px;font-size:13px}

/* 1.4 声音挑选：全用主题变量 */
.vox-sheet{max-width:560px;border-radius:22px;max-height:86dvh}
.vox-who{display:flex;align-items:center;gap:10px;margin:10px 0 4px}
.vox-filters{display:flex;flex-direction:column;gap:8px;margin:12px 0}
.vox-group{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.vox-group>.hint{min-width:44px}
.vox-group .chip{height:30px;padding:0 12px;display:inline-flex;align-items:center;color:var(--text)}
.vox-group .chip.on{background:var(--accent-tint);color:var(--accent-text);box-shadow:inset 0 0 0 1.5px var(--accent)}
.vox-list{max-height:44dvh;overflow-y:auto}
.vox-row{display:flex;justify-content:space-between;align-items:center;gap:10px}
.vox-row.cur{background:var(--accent-tint)}
.vox-info{display:flex;flex-direction:column;align-items:flex-start;text-align:left;gap:2px;min-width:0}
.vox-info .hint{font-size:12.5px}
.vox-cur{color:var(--accent-text);font-size:13px}
.vox-play.on{color:var(--accent-text);box-shadow:inset 0 0 0 1.5px var(--accent)}
.vox-foot{display:flex;justify-content:flex-end;margin-top:8px}
/* 1.4 总集：换样子面板（7 个版本一屏、四套主题都用主题变量） */
.av-vers{grid-template-columns:repeat(auto-fill,minmax(98px,1fr))}
.av-bodies .chip,#av-pals .chip{white-space:nowrap}
#av-pals{flex-wrap:wrap}
.nt-look{display:block;margin:10px 0 0}
.dash-acts .btn{margin-right:6px}   /* 1.5.1 补做第 20 项：账号行的按钮 */
/* 1.5.1 Z 17:57／18:03～18:07：右侧面板可收起（默认收起，点她的头像展开）＋小头像实时镜像大光球
   艺术总监 docs/mockups/1.5.1/side_panel/方案.md v2 ＋ 小头像同步规范.md。只在电脑端；手机布局不变 */
.pnl-head,.av-live,.av-tip{display:none}
.av-fly{position:fixed;left:0;top:0;z-index:60;pointer-events:none;display:none}.av-fly.on{display:block}.av-fly.warm{display:block;visibility:hidden}
.av-fly canvas{display:block}
@media (min-width:1100px){
  [data-page=chat] .pw{order:2;flex:none;width:0;margin-left:calc(-1 * var(--gap,20px));overflow:hidden;display:flex;justify-content:flex-start;
    transition:width 260ms cubic-bezier(.4,0,.6,1),margin-left 260ms cubic-bezier(.4,0,.6,1)}
  [data-page=chat] .pw.open{width:320px;margin-left:0;transition-duration:320ms;transition-timing-function:cubic-bezier(.33,0,.2,1)}
  [data-page=chat] .pw>.face-col{width:320px;flex:none;contain:layout paint;opacity:0;transform:translateX(24px);visibility:hidden;
    transition:opacity 200ms cubic-bezier(.4,0,.6,1),transform 260ms cubic-bezier(.4,0,.6,1),visibility 0s linear 260ms}
  [data-page=chat] .pw.open>.face-col{opacity:1;transform:none;visibility:visible;
    transition:opacity 240ms cubic-bezier(.33,0,.2,1) 60ms,transform 320ms cubic-bezier(.33,0,.2,1),visibility 0s}
  [data-page=chat] .pw.rm,[data-page=chat] .pw.rm>.face-col{transition:opacity 120ms linear,visibility 0s linear 120ms!important}
  [data-page=chat] .pw.rm>.face-col{transform:none}
  [data-page=chat] .pw.rm.open>.face-col{transition:opacity 120ms linear,visibility 0s!important}
  [data-page=chat] .pw.noanim,[data-page=chat] .pw.noanim>.face-col{transition:none!important}
  .pnl-head{display:flex;align-items:center;gap:8px;min-height:44px;margin:-4px 0 -4px;position:relative}
  .pnl-head b{flex:1;font-family:var(--font-round);font-size:15px;color:var(--text)}
  .pnl-x{width:44px;height:44px;color:var(--text-2);background:transparent;border-radius:12px}
  .pnl-x svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
  .pnl-x:hover,.pnl-x:focus-visible{background:var(--surface-2);color:var(--text)}
  .pnl-tip{position:absolute;right:50px;top:50%;transform:translateY(-50%);font-size:12px;color:var(--text-2);background:var(--surface);box-shadow:0 0 0 1px var(--border);border-radius:8px;padding:3px 8px;opacity:0;pointer-events:none;transition:opacity 120ms;white-space:nowrap}
  .pnl-tip kbd{font:inherit;font-size:11px;padding:0 4px;border-radius:4px;background:var(--surface-2)}
  .pnl-head:has(.pnl-x:hover) .pnl-tip,.pnl-head:has(.pnl-x:focus-visible) .pnl-tip{opacity:1}
  /* 小头像：48px 按钮、内容 40px、无边框；悬停／聚焦柔光＋放大 1.06（160ms）；镜像画布 76×76 在气泡下面 */
  .has-live #msgs .mr.bot.last>.av{display:none}
  #msgs .mr.bot.last{gap:12px}
  #msgs .mr.bot.last>.av-live{display:block}
  .av-live{position:relative;z-index:0;flex:none;width:48px;height:48px;padding:0;margin:0;border:0;border-radius:50%;background:none;cursor:pointer;outline:none;transition:transform 160ms cubic-bezier(.33,0,.2,1)}
  .av-live::before{content:"";position:absolute;inset:-10px;border-radius:50%;background:radial-gradient(closest-side,color-mix(in srgb,var(--accent) 22%,transparent),transparent);opacity:0;transition:opacity 160ms}
  .av-live:hover,.av-live:focus-visible{transform:scale(1.06)}
  .av-live:hover::before,.av-live:focus-visible::before{opacity:1}
  .av-live:focus-visible::before{background:radial-gradient(closest-side,color-mix(in srgb,var(--accent) 40%,transparent),transparent)}
  .av-live canvas,.av-live .av-ghost{position:absolute;left:-14px;top:-14px;width:76px;height:76px;pointer-events:none;overflow:visible}
  .av-live .av-ghost{transition:opacity 150ms linear}
  .av-live.flying canvas,.av-live.flying::before,.av-live.flying .av-tip{visibility:hidden}
  #msgs .mr.bot.last>.mcol{position:relative;z-index:1}
  /* Z 10-17 18:50：面板展开时球在面板里，小头像那一格空出来，这一行和更早的消息一样靠左（补位动画在 live_av.js） */
  body.lp-open #msgs .mr.bot.last>.av-live{display:none}
  body.lp-open #msgs .mr.bot.last{gap:10px}
  body.lp-open #msgs .mr.bot.last>.mcol{margin-left:4px}
  .av-tip{display:block;position:absolute;left:50%;bottom:calc(100% + 6px);transform:translateX(-50%);font-size:12px;color:var(--text-2);background:var(--surface);box-shadow:0 0 0 1px var(--border);border-radius:8px;padding:3px 8px;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity 120ms}
  .av-live:hover .av-tip{opacity:1;transition-delay:400ms}
  .av-live:focus-visible .av-tip{opacity:1}
}
@media (min-width:1100px) and (prefers-reduced-motion:reduce){ .av-live,.av-live:hover,.av-live:focus-visible{transform:none;transition:none} }
html.reduce-motion .av-live,html.reduce-motion .av-live:hover,html.reduce-motion .av-live:focus-visible{transform:none!important}
/* 1.5.1.1（Z 10-17 20:30 ET／艺术总监定稿）：聊天栏随屏幕自适应——任何宽度都铺满，不再 1040 居中；左右留白 clamp(16px,1.6vw,48px)（收起、展开、窄屏一样）。
   消息区、输入栏、下面按钮行同一列同样留白。她的头像贴列左内边（48＋12＝60，E 方案补位 60px／500ms 不变，更早的消息也贴左），“我”贴右、隔 8px。
   气泡最宽：她 min(72%,clamp(560px,36vw,900px))，我 min(65%,clamp(480px,30vw,760px))；真手机（≤480px）气泡照旧。 */
[data-page=chat] .chat-col{--cp:clamp(16px,1.6vw,48px)}
[data-page=chat] .msgs,[data-page=chat] .composer{padding-left:var(--cp);padding-right:var(--cp)}
[data-page=chat] .nostore-bar{margin-left:var(--cp);margin-right:var(--cp)}
#msgs .mr.bot:not(.last) .mcol{margin-left:0}
.mr.user{gap:8px}
@media (min-width:481px){
  .mr.bot .mcol{max-width:min(72%,clamp(560px,36vw,900px))}
  .mr.user .mcol{max-width:min(65%,clamp(480px,30vw,760px))}
}
/* 481～1099px（窄窗口、平板）：不再套 480px 的手机外壳，聊天页铺满；其它页最宽 760px 居中、左右留白同聊天栏（艺术总监 20:44 批）。真手机（≤480px）不变 */
@media (min-width:481px) and (max-width:1099px){
  .page.app[data-page=chat]{max-width:none;box-shadow:none}
  .page.app.sub{max-width:760px}
  .page.app.sub .scroll{padding-left:clamp(16px,1.6vw,48px);padding-right:clamp(16px,1.6vw,48px)}
}
/* 1.5.1.1（艺术总监 20:44 必改 2）：窄屏上头像卡和“小五在这儿／心情”那行下面才是滚动区；往上滚的字在顶上 16px 淡出，不再像压在那一行底下 */
@media (max-width:1099px){
  [data-page=chat] .chat-col{overflow:hidden}
  [data-page=chat] .msgs{-webkit-mask-image:linear-gradient(to bottom,transparent,black 16px);mask-image:linear-gradient(to bottom,transparent,black 16px);padding-top:16px}
}
/* 底部留白规格（1511j）：--msgs-pb = 输入栏不盖住消息区时 24px；盖住时＝被盖住的高度＋16px（main.js 的 MSGS_PB 实时算，改窗口大小后贴底） */
[data-page=chat] .msgs{padding-bottom:max(16px,var(--msgs-pb,24px))}
@media (min-width:1100px){
  [data-page=chat] .chat-layout{max-width:none;margin:0}     /* 原来 1480／1560 居中，2K 屏两边空 */
  [data-page=chat] .msgs,[data-page=chat] .composer{transition:padding 260ms cubic-bezier(.4,0,.6,1)}
  [data-page=chat] .nostore-bar{transition:margin 260ms cubic-bezier(.4,0,.6,1)}
  body.lp-open [data-page=chat] .msgs,body.lp-open [data-page=chat] .composer,body.lp-open[data-page=chat] .msgs,body.lp-open[data-page=chat] .composer{transition:padding 320ms cubic-bezier(.33,0,.2,1)}
  body.lp-open [data-page=chat] .nostore-bar,body.lp-open[data-page=chat] .nostore-bar{transition:margin 320ms cubic-bezier(.33,0,.2,1)}
  body.lp-open #msgs .mr.bot.last>.mcol{margin-left:0}
}
@media (min-width:1100px) and (prefers-reduced-motion:reduce){ [data-page=chat] .msgs,[data-page=chat] .composer,[data-page=chat] .nostore-bar{transition:none!important} }
html.reduce-motion [data-page=chat] .msgs,html.reduce-motion [data-page=chat] .composer,html.reduce-motion [data-page=chat] .nostore-bar{transition:none!important}
/* 1.5.1.1：弹窗里的“显示密码”眼睛——只有要输密码时出现，样子和输入框里的一样（以前每个弹窗都露出一个没样式的灰方块） */
.dialog .eye{display:none}
.dialog .eye.on{display:grid;place-items:center;float:right;position:relative;margin:-42px 4px 0 0;width:40px;height:40px;border:0;background:transparent;color:var(--text-2);border-radius:10px;cursor:pointer}
.dialog .eye.on svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.dialog .eye.on:hover{background:var(--surface-2)}.dialog .eye.on:focus-visible{outline:2px solid var(--accent)}
.dialog.has-eye input{padding-right:48px}
/* ===== 1.5.1.1 陪伴小球（艺术总监规格 A）：聊天以外的页面标题栏右端；只在电脑端（≥1100px） ===== */
.xw-comp,.xc-tip{display:none}
@media (min-width:1100px){
  :root{--comp-r:clamp(16px,1.6vw,48px)}
  /* 标题栏 48px（上下各 6px 给 36px 的小球）；右边给小球留位，以后加在标题栏的按钮排在它左边、隔 12px */
  body.has-side .sub .topbar{height:60px;padding-right:calc(var(--comp-r) + 36px + 12px)}
  body.has-side [data-page=clock] .topbar{display:flex}
  .cal-page .cal-side{min-height:calc(100dvh / var(--z,1) - 48px)}
  .xw-comp{position:fixed;z-index:70;top:6px;right:var(--comp-r);width:36px;height:36px;padding:0;margin:0;border:0;border-radius:50%;background:none;cursor:pointer;outline:none}
  .xw-comp.on{display:block}
  .xw-comp.warm{display:block;visibility:hidden}
  .xw-comp .xc-fly{position:absolute;inset:0;display:block;will-change:transform}
  .xw-comp .xc-in{position:absolute;inset:0;display:block;border-radius:50%;transition:transform 160ms cubic-bezier(.33,0,.2,1)}
  .xw-comp .xc-in::before{content:"";position:absolute;inset:-8px;border-radius:50%;background:radial-gradient(closest-side,color-mix(in srgb,var(--accent) 22%,transparent),transparent);opacity:0;transition:opacity 160ms}
  .xw-comp:hover .xc-in,.xw-comp:focus-visible .xc-in{transform:scale(1.06)}
  .xw-comp:hover .xc-in::before,.xw-comp:focus-visible .xc-in::before{opacity:1}
  .xw-comp:focus-visible .xc-in::before{background:radial-gradient(closest-side,color-mix(in srgb,var(--accent) 40%,transparent),transparent)}
  .xw-comp.flying .xc-in::before{opacity:0}
  .xw-comp canvas{position:absolute;left:-10px;top:-10px;width:56px;height:56px;pointer-events:none}
  .xw-comp .xc-dot{position:absolute;top:1px;right:1px;width:6px;height:6px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 2px var(--bg);display:none;pointer-events:none}
  .xw-comp.dot:not(.flying) .xc-dot{display:block}
  .xc-tip.on{display:block;position:fixed;z-index:71;max-width:320px;font-size:12.5px;line-height:1.4;color:var(--text);background:var(--surface);box-shadow:0 0 0 1px var(--border),0 4px 14px rgba(0,0,0,.25);border-radius:8px;padding:5px 10px;pointer-events:none;white-space:nowrap}
  .av-live.comp-away canvas,.av-live.comp-away::before{visibility:hidden}
}
/* ===== 1.5.1.1 聊天记录页（艺术总监规格 B）：按天看＋紧凑卡片＋月历 ===== */
.hd{display:flex;flex-direction:column;gap:12px}
.hd-main{min-width:0;flex:1}
.hd-side{order:-1;max-width:none;margin:0;padding:10px 12px;background:var(--surface);border-radius:12px;box-shadow:0 0 0 1px var(--border)}
.hd-nav{display:flex;align-items:center;gap:8px;margin:0 0 10px}
.hd-nav .btn{width:auto;margin:0;min-height:36px;padding:6px 12px;white-space:nowrap}
.hd-nav .btn:disabled{opacity:.4;cursor:default}
.hd-mid{flex:1;min-width:0;display:flex;align-items:baseline;justify-content:center;gap:10px;flex-wrap:wrap}
.hd-mid b{font-size:15px}
.hd-today{font-size:13px}
.hd-more{display:block;margin:0 auto 8px;font-size:13px}
.hd-list{display:flex;flex-direction:column;gap:8px}
.hd-list .ns-sep{margin:0}
.hc{position:relative;display:grid;grid-template-columns:56px 1fr;padding:12px 16px;border-radius:12px;background:var(--surface);box-shadow:0 0 0 1px var(--border);cursor:pointer;overflow:hidden;font-size:14px;line-height:1.5;outline:none;margin:0}
.hc:hover{background:var(--surface)}
.hc:focus-visible{box-shadow:0 0 0 2px var(--accent)}
.hc.gone{display:none}
.hc-t{color:var(--text-2);font-size:12.5px;padding-top:1px;font-variant-numeric:tabular-nums}
.hc-b{min-width:0;display:flex;flex-direction:column;gap:2px;padding-right:28px}
.hc-who{font-weight:600;color:var(--text-2)}
.hc-u{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hc-a{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;color:var(--text)}
.hc.open .hc-u{white-space:pre-wrap;overflow:visible;word-break:break-word}
.hc.open .hc-a{display:block;-webkit-line-clamp:unset;white-space:pre-wrap;word-break:break-word}
.hc .hc-x{display:none;align-self:flex-end;font-size:12.5px;margin-top:2px}
.hc.cut .hc-x,.hc.open .hc-x{display:inline}
.hc .h-del{position:absolute;right:6px;top:6px;transform:none;opacity:0;transition:opacity .15s}
.hc:hover .h-del,.hc:focus-within .h-del{opacity:1}
@media (hover:none){.hc .h-del{display:none}}
.hc-menu{position:absolute;right:10px;top:10px;z-index:5;display:flex;flex-direction:column;min-width:120px;background:var(--surface-2);border-radius:10px;box-shadow:0 4px 16px rgba(0,0,0,.3);overflow:hidden}
.hc-menu button{border:0;background:none;color:var(--text);font:inherit;text-align:left;padding:12px 16px;min-height:44px}
.hc-menu button+button{border-top:1px solid var(--border);color:var(--danger)}
.hs-item{display:flex;flex-direction:column;gap:4px;margin-bottom:8px}
.hs-item .hs-when{font-size:12px;color:var(--text-2);padding-left:4px}
.hs-res{max-width:none}
.hc mark{background:color-mix(in srgb,var(--accent) 22%,transparent);color:inherit;border-radius:3px;padding:0 1px}
.h-cal .cal-n{margin:2px 0 6px;font-size:12.5px;color:var(--text-2);text-align:center}
.h-cal .cal-hide{display:none}
.h-cal .cal-tog{display:block;margin:6px auto 0;font-size:12.5px}
.h-cal .cal-d.has::after{width:4px;height:4px;margin-left:-2px;bottom:2px}
.h-cal .cal-d.on{background:var(--accent);color:var(--on-accent)}
@media (min-width:1100px){
  .hd{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:24px;align-items:start}
  .hd-side{order:0;position:sticky;top:12px;width:280px;padding:14px}
  .hs-page .hs-res,.hs-page #hs-search{max-width:760px}
  /* 艺术总监 10-18：列表一直铺到月历那一栏，左右内边距 clamp(16px,1.6vw,48px)；分段按钮、搜索框和列表左对齐 */
  [data-page=history] .scroll.hs-page{padding-left:clamp(16px,calc(1.6vw / var(--z,1)),calc(48px / var(--z,1)));padding-right:clamp(16px,calc(1.6vw / var(--z,1)),calc(48px / var(--z,1)))}
  [data-page=history] .scroll.hs-page>*{max-width:none;margin-left:0;margin-right:0}
  .hs-page #hs-search{max-width:calc(100% - 304px)}
  .hs-page #hs-search .hs-res{max-width:none}
  .hs-page .hs-box{max-width:520px;margin:0}
}
#history-list.hd-list{padding:0 0 40px;max-width:none;margin:0;gap:8px}
/* 1.5.1.1 艺术总监「空白开场」：打开聊天是空白的；她那颗球等在下一条她的消息的头像位置（左边、输入框上面 16px），右边一个虚线幽灵气泡 */
[data-page=chat] #msgs::before{content:"";flex:1 0 0;min-height:0}
#msgs>.blank-hint{order:-1;align-self:center;font-size:12px;color:var(--text-2);margin:0 0 8px;padding:2px 8px;line-height:18px}
#msgs>.blank-hint:hover{color:var(--accent)}
#msgs>.mr.wait{order:1}
/* “停下”放在等着那一行／第一句下面、占她这一行本来留给操作按钮的 22px，球不被顶上去 */
#msgs>.mr.wait~.run-meta,#msgs>.mr.bot.born.last+.run-meta{height:19px;line-height:19px;margin-top:-21px;margin-bottom:0}
#msgs>.mr.wait~.run-meta{order:2}
#msgs>.mr.wait>.mcol>.who{visibility:hidden}
#msgs .mr.wait .m.ghost,#msgs .mr.wait .m.wait-dots{padding:9px 14px;border-radius:4px 16px 16px 16px;align-self:flex-start;min-height:calc(1.65em + 20px);box-sizing:border-box}
#msgs .mr.wait .m.ghost{background:none;box-shadow:none;border:1px dashed var(--border-strong,color-mix(in srgb,var(--text-2) 45%,transparent));color:var(--text-2);transition:opacity 150ms linear}
#msgs .mr.wait.typing .m.ghost{opacity:.4}
#msgs .mr.wait .m.wait-dots{display:none;background:none;box-shadow:none;border:1px solid transparent}
#msgs .mr.wait.busy .m.ghost{display:none}
#msgs .mr.wait.busy .m.wait-dots{display:flex;gap:5px;align-items:center;animation:none}   /* 1511i：幽灵气泡淡完点点立刻在，不再空约 150ms */
#msgs .mr.wait .wait-dots i{width:6px;height:6px;border-radius:50%;background:var(--text-2);opacity:.35;animation:xwdot 1.2s ease-in-out infinite}
#msgs .mr.wait .wait-dots i:nth-of-type(2){animation-delay:.18s}
#msgs .mr.wait .wait-dots i:nth-of-type(3){animation-delay:.36s}
#msgs .mr.wait .wait-label{display:none;font-size:13px;color:var(--text-2);margin-right:3px;white-space:nowrap}
#msgs .mr.wait.thinking .wait-label{display:inline}
@keyframes xwdot{0%,60%,100%{opacity:.35;transform:none}30%{opacity:.9;transform:translateY(-2px)}}
/* 球飞走（陪伴小球）时幽灵气泡淡出，回来淡入 150ms */
#msgs .mr.wait>.av-live.comp-away~.mcol .m{opacity:0}
@media (prefers-reduced-motion:reduce){ #msgs .mr.wait .wait-dots i{animation:none;opacity:.6} #msgs .mr.wait.busy .m.wait-dots{animation:none} }
html.reduce-motion #msgs .mr.wait .wait-dots i{animation:none;opacity:.6}
/* 手机（<1100）：等着的球用同一块实时画布，大小同手机头像 36px；她的第一句从它冒出来后，这颗球留在那一句上 */
@media (max-width:1099px){
  #msgs .mr.bot.wait>.av-live,#msgs .mr.bot.last>.av-live{display:block;position:relative;flex:none;width:36px;height:36px;padding:0;margin:20px 0 0;border:0;border-radius:50%;background:none;outline:none;-webkit-tap-highlight-color:transparent}
  #msgs .mr.bot.wait>.av-live canvas,#msgs .mr.bot.last>.av-live canvas{position:absolute;left:-10.5px;top:-10.5px;width:57px;height:57px;pointer-events:none}
  #msgs .mr.bot.wait>.av-live .av-tip,#msgs .mr.bot.last>.av-live .av-tip{display:none}
  #msgs .mr.bot.wait>.av,#msgs .mr.bot.last:has(>.av-live)>.av{display:none}   /* 艺术总监 10-18 #14：手机最新一条也用实时小球，不要带底色的方块 */
}

/* 1.5.1.1 语言切换（艺术总监 语言切换_方案_AD.md）：胶囊 高32 圆角16 内边距12 字13 最小宽104，底色同次级按钮，聚焦 2px 橙环 */
.lsw{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:32px;min-width:104px;padding:0 12px;border:0;border-radius:16px;background:var(--surface-2);color:var(--text-2);font:inherit;font-size:13px;cursor:pointer;white-space:nowrap}
.lsw:hover{background:var(--surface-3,var(--surface-2));color:var(--text);filter:brightness(1.08)}
.lsw:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.lsw .lsw-c{font-size:10px;opacity:.7}
.lsw-auth{position:fixed;top:20px;right:20px;z-index:40}
@media (max-width:759px){.lsw-auth{top:16px;right:16px}}
.ds-langrow{display:flex;justify-content:flex-start;padding:4px 0 6px}
.ds-langrow>.lsw{min-width:104px}
.drawer-lang{padding:6px 12px 8px}
.drawer-lang>.lsw{min-width:104px}
.lsw-mask{position:fixed;inset:0;z-index:79;background:rgb(0 0 0 / .4)}
.lsw-menu.lsw-sheet{left:0;right:0;bottom:0;top:auto;border-radius:16px 16px 0 0;padding:8px 8px calc(8px + env(safe-area-inset-bottom))}
.lsw-sheet .lsw-it{height:48px;font-size:15px}
.lsw-menu{position:fixed;z-index:80;min-width:132px;padding:4px;border-radius:12px;background:var(--surface);box-shadow:0 8px 24px var(--shadow),inset 0 0 0 1px var(--border);display:flex;flex-direction:column}
.lsw-it{height:36px;padding:0 12px;border:0;border-radius:8px;background:none;color:var(--text);font:inherit;font-size:14px;text-align:left;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:12px}
.lsw-it:hover,.lsw-it:focus-visible{background:var(--surface-2);outline:none}
.lsw-it.on::after{content:"✓";color:var(--accent)}
@media (max-width:759px){.lsw-it{height:48px;font-size:15px}}
/* 1.5.1.1 日历页（艺术总监 日历页_方案_AD.md＋Z 参考图）：大格子、色块、+N、弹卡；配色用 hsl 变量（不写十六进制） */
.cal-page,.cal-pop{--cal-reminder-bg:hsl(215 32% 30% / .7);--cal-reminder-fg:hsl(215 70% 88%);--cal-todo-bg:hsl(145 28% 26% / .75);--cal-todo-fg:hsl(145 45% 84%);--cal-countdown-bg:hsl(24 42% 30% / .8);--cal-countdown-fg:hsl(30 85% 86%)}
[data-theme^="light"] .cal-page,[data-theme^="light"] .cal-pop{--cal-reminder-bg:hsl(215 60% 92%);--cal-reminder-fg:hsl(215 45% 30%);--cal-todo-bg:hsl(145 40% 90%);--cal-todo-fg:hsl(145 40% 24%);--cal-countdown-bg:hsl(28 80% 91%);--cal-countdown-fg:hsl(24 60% 30%)}
.cal-page .cal-side{display:none!important}
.cal-page .cal-cols{display:block}
.cal-page .cal-main{padding:14px clamp(16px,1.6vw,48px)!important}
.cal-page .cal-card{max-width:none!important;padding:0;overflow:hidden}
.cal-page .cal-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.cal-page .cal-head h2{margin:0 4px}
.cal-lgd{display:inline-flex;gap:4px;align-items:center;margin:0 8px 0 0;position:relative}
.cal-lgd .lg{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 10px;border:0;border-radius:14px;background:none;color:var(--text-2);font:inherit;font-size:13px;cursor:pointer}
.cal-lgd .lg:hover{background:var(--surface-2);color:var(--text)}
.cal-lgd .lg:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.cal-lgd .lg .cdot{width:8px;height:8px;border-radius:50%}
.cal-lgd .lg.off{color:var(--text-3)}
.cal-lgd .lg.off .cdot{background:transparent!important;box-shadow:inset 0 0 0 1.5px var(--text-3)}
.cal-lgd .lg.filt{box-shadow:inset 0 0 0 1px var(--border)}
.cal-lgd .lg.filt.on{color:var(--accent-text)}
.cal-lgd .lg-menu{position:absolute;top:32px;left:0;z-index:30;display:flex;flex-direction:column;padding:4px;border-radius:10px;background:var(--surface);box-shadow:0 8px 24px var(--shadow),inset 0 0 0 1px var(--border)}
.cal-page .cdot.rem{background:var(--cal-reminder-fg)}.cal-page .cdot.todo{background:var(--cal-todo-fg)}.cal-page .cdot.cd{background:var(--cal-countdown-fg)}
.cal-page .cal-card.v-month .cal-mgrid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-template-rows:28px repeat(6,minmax(96px,1fr));gap:0;padding:0;text-align:left;min-height:calc(100dvh / var(--z,1) - 150px)}
/* 艺术总监 10-18 #5：≥1100 六行等高固定（最少 96px），格子内容多也不撑高，放不下的走 +N */
@media (min-width:1100px){.cal-page .cal-card.v-month .cal-mgrid{height:max(604px,calc(100dvh / var(--z,1) - 150px));min-height:0;grid-template-rows:28px repeat(6,minmax(96px,1fr))}
  .cal-page .v-month .cd-cell{min-height:0;overflow:hidden}.cal-page .v-month .cd-cell .chips{overflow:hidden;min-height:0}}
.cal-page .v-month .cw{font-size:12px;font-weight:500;color:var(--text-3);padding:6px 8px;border-bottom:1px solid var(--surface-2)}
.cal-page .v-month .cd-cell{display:flex;flex-direction:column;min-height:96px;padding:6px 6px 4px;border-radius:0;border-right:1px solid var(--surface-2);border-bottom:1px solid var(--surface-2);font-size:12px;cursor:default;overflow:hidden;outline:none}
.cal-page .v-month .cd-cell:nth-child(7n+7){border-right:0}
.cal-page .v-month .cd-cell:hover{background:color-mix(in srgb,var(--surface-2) 45%,transparent)}
.cal-page .v-month .cd-cell:focus-visible{box-shadow:inset 0 0 0 2px var(--accent)}
.cal-page .v-month .cd-cell.open{box-shadow:inset 0 0 0 1px var(--accent)}
.cal-page .v-month .cd-cell .n{display:inline-grid;place-items:center;align-self:flex-start;min-width:24px;height:24px;margin:-2px 0 2px -2px;font-size:12px;color:var(--text-2);border-radius:50%;width:auto;background:none;box-shadow:none}
.cal-page .v-month .cd-cell.today .n{width:24px;background:var(--accent);color:var(--on-accent);font-weight:700}
.cal-page .v-month .cd-cell.dim .n{opacity:.4}
.cal-page .v-month .cd-cell.dim .cal-chip{opacity:.6}
.cal-page .v-month .cd-cell.past:not(.dim) .cal-chip{opacity:.7}
.cal-page .chips{display:flex;flex-direction:column;gap:2px;min-width:0}
.cal-chip{display:flex;gap:4px;width:100%;height:20px;padding:0 6px;border:0;border-radius:4px;font:inherit;font-size:12px;line-height:20px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;flex:none}
.cal-chip.k-rem,.cw-ev.k-rem{background:var(--cal-reminder-bg);color:var(--cal-reminder-fg)}
.cal-chip.k-todo,.cw-ev.k-todo{background:var(--cal-todo-bg);color:var(--cal-todo-fg)}
.cal-chip.k-cd,.cw-ev.k-cd{background:var(--cal-countdown-bg);color:var(--cal-countdown-fg)}
.cal-chip.done,.cw-ev.done,.cl-row.done .cl-tt{text-decoration:line-through;opacity:.5}
.cal-chip:hover{filter:brightness(1.12)}
.cal-chip:focus-visible,.cal-more:focus-visible,.cw-ev:focus-visible,.cl-row:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.cal-chip .cc-t{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cal-chip .cc-m{flex:none;opacity:.85;font-variant-numeric:tabular-nums}
.cal-chip.in-card{height:30px;line-height:30px;padding:0 10px;font-size:13px;border-radius:6px}
.cal-chip.over,.gone{display:none!important}
.cal-more{align-self:flex-start;border:0;background:none;padding:0 6px;font:inherit;font-size:12px;line-height:20px;color:var(--text-3);cursor:pointer}
.cal-more:hover{color:var(--text);text-decoration:underline}
.cal-page .m-mid .cal-chip{font-size:11px}
.cal-pop{position:fixed;z-index:70;width:320px;max-height:min(70vh,560px);overflow:auto;padding:14px;border-radius:14px;background:var(--surface);box-shadow:0 12px 32px var(--shadow),inset 0 0 0 1px var(--border)}
.cal-dc-h{font-weight:600;font-size:14px;margin:0 0 8px}
.cal-dc-list{display:flex;flex-direction:column;gap:4px}
.cal-pop.day{display:flex;flex-direction:column;overflow:hidden;padding:0}
.cal-pop.day .cal-dcard{display:flex;flex-direction:column;min-height:0;max-height:min(70vh,560px)}
.cal-pop.day .cal-dc-h{padding:14px 14px 0}
.cal-pop.day .cal-dc-list{flex:1;min-height:0;overflow:auto;padding:0 14px 4px}
.cal-pop.day .cal-add{flex:none;margin:0;border-radius:0 0 14px 14px;height:44px;border-top:1px solid var(--border)}
.cal-pop.day .cal-form.in-pop{padding:0 14px 14px;overflow:auto}
.cal-pop .cal-row.click{cursor:pointer;border-radius:8px}
.cal-pop .cal-row.click:hover{background:var(--surface-2)}
.cal-pop .cal-add{margin-top:8px;width:100%;height:34px;border:0;border-radius:8px;background:var(--surface-2);color:var(--text);font:inherit;font-size:13px;cursor:pointer}
.cal-pop .cal-form.in-pop{box-shadow:none;padding:0;background:none}
.cal-ecard .cal-ec-t{font-weight:600;font-size:15px;margin-bottom:4px;word-break:break-word}
.cal-ecard .cal-ec-s{font-size:12px;color:var(--text-2);margin-bottom:12px}
.cal-ecard .cal-ec-b{display:flex;gap:8px;flex-wrap:wrap}
.cal-ecard .cal-edit{display:flex;flex-direction:column;gap:8px}
.cal-ecard .btn.danger{color:var(--danger,var(--accent-text))}
.cw-wrap{display:flex;flex-direction:column;height:calc(100dvh / var(--z,1) - 150px);min-height:420px}
.cw-head,.cw-all,.cw-body{display:grid;grid-template-columns:56px repeat(var(--cols),minmax(0,1fr))}
.cw-body{flex:1;overflow:auto;position:relative}
.cw-gut{font-size:11px;color:var(--text-3);padding:6px;border-bottom:1px solid var(--surface-2);display:flex;align-items:center}
.cw-dh{padding:8px;font-size:12px;color:var(--text-2);border-bottom:1px solid var(--surface-2);border-left:1px solid var(--surface-2)}
.cw-dh .dn{display:inline-grid;place-items:center;min-width:24px;height:24px;border-radius:50%;font-size:13px;color:var(--text)}
.cw-dh.today .dn{background:var(--accent);color:var(--on-accent)}
.cw-ad{display:flex;flex-direction:column;gap:2px;padding:4px;border-bottom:1px solid var(--surface-2);border-left:1px solid var(--surface-2);min-height:28px;min-width:0}
.cw-hours{display:flex;flex-direction:column}
.cw-h{height:48px;flex:none;font-size:11px;color:var(--text-3);padding:0 6px;transform:translateY(-6px);text-align:right}
.cw-h:first-child{transform:none}
.cw-col{position:relative;height:1152px;border-left:1px solid var(--surface-2);background:repeating-linear-gradient(to bottom,transparent 0 47px,var(--surface-2) 47px 48px)}
.cw-ev{position:absolute;display:flex;flex-direction:column;justify-content:center;padding:2px 6px;border:0;border-radius:4px;font:inherit;text-align:left;cursor:pointer;overflow:hidden;min-height:22px}
.cw-ev .et{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cw-ev .em{font-size:11px;opacity:.8}
.cw-more{position:absolute;display:flex;align-items:flex-start;justify-content:center;padding:6px 4px;border:0;border-radius:4px;background:color-mix(in srgb,var(--surface-2) 80%,transparent);color:var(--text-2);font:inherit;font-size:12px;cursor:pointer}
.cw-more:hover{color:var(--text);filter:brightness(1.12)}.cw-more:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.cw-now{position:absolute;left:0;right:0;height:1px;background:var(--accent);pointer-events:none}
.cw-now::before{content:"";position:absolute;left:-3px;top:-3px;width:6px;height:6px;border-radius:50%;background:var(--accent)}
.cl-days{position:relative;max-height:calc(100dvh / var(--z,1) - 150px);overflow:auto;padding:0 0 12px}
.cl-dh{position:sticky;top:0;z-index:1;margin:0;padding:10px 16px 6px;font-size:13px;font-weight:600;background:var(--surface);color:var(--text-2)}
.cl-day.today .cl-dh{color:var(--text)}
.cl-day.today .cl-dh::before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--accent);margin-right:6px;vertical-align:middle}
.cl-day.past{opacity:.55}
.cl-row{display:grid;grid-template-columns:3px 56px 1fr auto;align-items:center;gap:10px;width:100%;min-height:40px;padding:6px 16px;border:0;background:none;font:inherit;color:var(--text);text-align:left;cursor:pointer}
.cl-row:hover{background:var(--surface-2)}
.cl-bar{align-self:stretch;border-radius:2px}
.cl-row.k-rem .cl-bar{background:var(--cal-reminder-fg)}.cl-row.k-todo .cl-bar{background:var(--cal-todo-fg)}.cl-row.k-cd .cl-bar{background:var(--cal-countdown-fg)}
.cl-t{font-size:12px;color:var(--text-2);font-variant-numeric:tabular-nums}
.cl-tt{font-size:14px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cl-k{font-size:11px;color:var(--text-3)}
/* <760：紧凑格只日期＋最多 3 个 6px 圆点；点一天在下面列出来；“＋新建”右下悬浮圆按钮 */
.cal-page .m-narrow .cal-mgrid{grid-template-rows:28px repeat(6,52px)!important;min-height:0!important}
.cal-page .m-narrow .cd-cell{min-height:52px!important;align-items:center;cursor:pointer!important}
.cal-page .m-narrow .cd-cell .n{align-self:center!important}
.cal-page .m-narrow .cd-cell.sel{box-shadow:inset 0 0 0 1px var(--accent)}
.cal-page .m-narrow .cdots{display:flex;gap:3px;justify-content:center}
.cal-page .m-narrow .cdots .cdot{width:6px;height:6px;border-radius:50%}
.cal-page .cal-nlist{padding:8px 4px 72px}
@media (max-width:759px){.cal-page #cal-new{position:fixed;right:16px;bottom:calc(16px + env(safe-area-inset-bottom));z-index:20;width:52px;height:52px;border-radius:50%;padding:0;font-size:0;box-shadow:0 6px 16px var(--shadow)}
  .cal-page #cal-new::before{content:"＋";font-size:24px}}
/* 1.5.1.1 帮我关注 结果呈现（艺术总监方案）：铃铛（陪伴小球左边 12px，聊天页最右）、下拉 360px、聊天卡片 */
:root{--watch-accent:hsl(208 70% 66%);--watch-on:hsl(215 45% 6%)}
.wn-bell{position:fixed;z-index:70;top:6px;right:var(--comp-r,12px);width:36px;height:36px;border-radius:50%;display:grid;place-items:center;color:var(--text-2)}
.wn-bell.by-orb{right:calc(var(--comp-r,12px) + 36px + 12px)}
.wn-bell svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.wn-bell:hover,.wn-bell[aria-expanded=true]{color:var(--text);background:var(--surface-2)}
.wn-bell:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.wn-badge{position:absolute;top:2px;right:0;min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:var(--watch-accent);color:var(--watch-on);font-size:10px;font-weight:700;line-height:16px;text-align:center;box-sizing:border-box}
.wn-bell.swing svg{animation:wn-swing 600ms ease-in-out;transform-origin:50% 15%}
@keyframes wn-swing{20%{transform:rotate(12deg)}45%{transform:rotate(-12deg)}70%{transform:rotate(6deg)}100%{transform:rotate(0)}}
body.has-side [data-page=chat] .topbar{padding-right:calc(var(--comp-r,12px) + 36px + 12px)}
body.has-side .sub .topbar{padding-right:calc(var(--comp-r) + 36px + 12px + 36px + 12px)}
@media (max-width:1099px){.wn-bell{right:8px}.wn-bell.by-orb{right:8px}.topbar{padding-right:52px}}
.wn-menu{position:fixed;z-index:80;width:360px;max-height:min(520px,70vh);display:none;flex-direction:column;background:var(--surface);border-radius:12px;box-shadow:0 0 0 1px var(--border),0 12px 32px var(--shadow);overflow:hidden;opacity:0;transform:translateY(-4px);transition:opacity 160ms,transform 160ms}
.wn-menu.on{display:flex;opacity:1;transform:none}
@starting-style{.wn-menu.on{opacity:0;transform:translateY(-4px)}}
.wn-hd{display:flex;justify-content:space-between;align-items:baseline;padding:12px 14px 6px;font-size:13px}
.wn-list{overflow:auto;flex:1}
.wn-gh{padding:8px 14px 4px;font-size:11px;color:var(--text-3)}
.wn-it{display:block;width:100%;padding:8px 14px 8px 14px;border:0;background:none;color:var(--text);text-align:left;font:inherit;cursor:pointer}
.wn-it:hover,.wn-it:focus-visible{background:var(--surface-2);outline:none}
.wn-it-t{display:flex;align-items:center;gap:6px;font-size:13px}
.wn-dot{width:6px;height:6px;border-radius:50%;flex:none;background:transparent}
.wn-it.unread .wn-dot{background:var(--watch-accent)}
.wn-it.unread .wn-tt{font-weight:600}
.wn-tt{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wn-ago{font-size:11px;flex:none}
.wn-sum{margin:2px 0 0 12px;font-size:12px;color:var(--text-2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.wn-empty{padding:28px 14px;text-align:center;color:var(--text-3);font-size:13px}
.wn-ft{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--surface-2)}
.wn-fb{padding:10px;border:0;background:none;color:var(--text-2);font:inherit;font-size:12px;text-align:center;cursor:pointer;text-decoration:none}
.wn-fb+.wn-fb{border-left:1px solid var(--surface-2)}
.wn-fb:hover{color:var(--text);background:var(--surface-2)}
@media (max-width:759px){.wn-menu{left:0!important;right:0!important;bottom:0;top:auto!important;width:auto;max-height:75vh;border-radius:16px 16px 0 0;padding-bottom:env(safe-area-inset-bottom)}}
.wn-cards{display:flex;flex-direction:column;gap:8px;margin-top:8px}
.wn-card{position:relative;padding:10px 12px 8px 14px;border-radius:8px;background:var(--surface-2);box-shadow:inset 3px 0 0 var(--watch-accent);animation:wn-in 150ms ease-out;transition:box-shadow 200ms}
@keyframes wn-in{from{opacity:0}to{opacity:1}}
.wn-card.hl{box-shadow:inset 3px 0 0 var(--watch-accent),0 0 0 2px var(--watch-accent)}
.wn-c-h{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--watch-accent);font-weight:600}
.wn-c-h svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.8}
.wn-c-l{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wn-new{font-size:10px;padding:1px 6px;border-radius:4px;background:var(--watch-accent);color:var(--watch-on)}
.wn-card.read .wn-new,.wn-card.seen-v .wn-new{opacity:0;transition:opacity 200ms linear 1200ms}   /* 1511b：看见后“新”留 1.2s 再 200ms 淡掉 */
.wn-card{transition:box-shadow 200ms linear}
.wn-card.paused .wn-c-a .wn-btn[disabled]{display:none}   /* 1511b：暂停后不再显示“暂停关注”按钮 */
.wn-card.paused{opacity:.6;box-shadow:inset 3px 0 0 var(--text-3)}
.wn-c-p{font-size:12px;color:var(--text-3);margin-left:4px;flex:none}
.wn-mask{position:fixed;inset:0;z-index:79;background:rgb(0 0 0 / .4)}
.wn-c-s{margin-top:4px;font-size:14px;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.wn-c-m{margin-top:4px;font-size:11px}
.wn-c-a{display:flex;gap:14px;margin-top:6px}
.wn-btn{padding:2px 0;border:0;background:none;color:var(--text-2);font:inherit;font-size:12px;cursor:pointer;text-decoration:none}
.wn-btn:hover{color:var(--text)}
.wn-btn:disabled{opacity:.5;cursor:default}
.wn-more{align-self:flex-start;border:0;background:none;color:var(--watch-accent);font:inherit;font-size:12px;cursor:pointer}
@media (prefers-reduced-motion:reduce){.wn-bell.swing svg{animation:none}.wn-card{animation:none}.wn-menu{transition:none}.wn-card.hl{transition:none}}

/* 艺术总监 10-18 #11：开机时只显示背景，知道登没登录后再显示 */
.xw-boot .page,.xw-boot #desk-side,.xw-boot .lsw-auth,.xw-boot .tabbar,.xw-boot .xw-comp{visibility:hidden!important}
/* 艺术总监 10-18 #13：输入框下面一行——“不保存／朗读”永不折行，地方不够先藏快捷键说明 */
.composer-sub{flex-wrap:nowrap;min-width:0;container-type:inline-size}
.composer-sub .cchip{white-space:nowrap;flex:none}
.composer-sub #kb-hint{white-space:nowrap;min-width:0;overflow:hidden}
@container (max-width:640px){.composer-sub #kb-hint{display:none!important}}
.hc .h-del{width:auto;padding:0 8px;gap:4px;align-items:center;border-radius:8px}
@media (hover:hover){.hc .h-del{display:inline-flex}}
.hc .h-del .h-del-l{font-size:12.5px}
/* 艺术总监 10-18：去掉飘在消息下面的“停下”（发送键在她回答时本身就变成停止键） */
#msgs>.run-meta{display:none!important}
/* 艺术总监 10-18：手机标题下“{AI}在想…”那一行先留好高度，出现／消失时标题不跳 */
@media (max-width:1099px){.topbar-status:empty{display:block;visibility:hidden}.topbar-status{min-height:1.2em}}
/* 艺术总监 10-18：输入框占位字放不下时用省略号 */
input::placeholder,textarea::placeholder{text-overflow:ellipsis}
input{text-overflow:ellipsis}
/* 艺术总监 10-18：设置左侧分类永不折行（按最长的一项撑宽，最少 184px） */
@media (min-width:1100px){body.has-side .st-cats{width:auto;min-width:184px}.st-cn{white-space:nowrap}}
/* 1.5.1.1（Z 10-18 批）：英文侧栏改叫 Memories，不再折行，侧栏宽度回到原来的 216px（撤掉 232px 加宽） */
@media (min-width:1100px){.ds-link{white-space:nowrap}}
:root:lang(en) .field span{width:96px;white-space:nowrap}   /* 1.5.1.1：英文标签（Enter again）不折行 */
.field input{text-overflow:ellipsis;min-width:0}
/* 艺术总监 1511b #5：月视图 +N 单独一行，色块区占剩下的高 */
.cal-page .v-month .cd-cell>.chips{flex:1 1 0;min-height:0;overflow:hidden}
.cal-page .v-month .cd-cell:has(>.cal-more)>.chips{flex:0 1 auto}   /* 1511c #5：+N 紧贴最后一条，不沉到格底 */
.cal-page .v-month .cd-cell>.cal-more{flex:none;align-self:stretch;text-align:left;white-space:nowrap}
/* 艺术总监 1511b 建议：周/3 天色块时间完整（不截成 23:0），标题省略 */
.cw-ev{padding:2px 4px;box-sizing:border-box;min-width:0}.cw-ev .em{white-space:nowrap;overflow:hidden;font-variant-numeric:tabular-nums}
.cal-chip .cc-m{white-space:nowrap}
/* 1511b：日卡片里的色块铺满宽；手机弹卡时＋按钮让开 */
.cal-pop .cal-dc-list{display:flex;flex-direction:column;align-items:stretch;gap:4px}
.cal-pop .cal-chip.in-card{width:100%;flex:none;margin:0}
body.cal-popping .cal-page #cal-new{opacity:0;pointer-events:none;transition:opacity .15s}
.cal-pop.day .cal-dcard{max-height:inherit}
.cw-more{writing-mode:horizontal-tb;white-space:nowrap;font-size:11px}
.cal-page #cal-new,.cal-page #cal-today,.cal-seg button{white-space:nowrap;flex:none}   /* 1511b：1100 英文“+ New”不折行 */
.wn-c-l{flex:0 1 auto}.wn-c-h .wn-new{margin-left:auto}.wn-c-p{margin-left:0}   /* 1511b：“· 已暂停”紧跟在标签后面 */
@media (max-width:1099px){.sub .topbar{position:relative}.sub .topbar>.topbar-title{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);max-width:calc(100% - 128px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}   /* 1511b：手机顶栏标题真居中（右边多了铃铛） */
/* 艺术总监 1511b：底部弹层和遮罩 200ms 进场 */
.lsw-mask,.wn-mask{transition:opacity 200ms linear}
@starting-style{.lsw-mask,.wn-mask{opacity:0}}
.lsw-menu.lsw-sheet{transition:transform 200ms cubic-bezier(.2,.8,.2,1)}
@starting-style{.lsw-menu.lsw-sheet{transform:translateY(100%)}}
@media (max-width:759px){.wn-menu{transition:transform 200ms cubic-bezier(.2,.8,.2,1),opacity 200ms}@starting-style{.wn-menu.on{transform:translateY(100%);opacity:1}}}
@media (prefers-reduced-motion:reduce){.lsw-mask,.wn-mask,.lsw-menu.lsw-sheet{transition:none}}

/* 1511c 偏差 (b)：+N 小签叠在重叠组右下角（不占列），色块最少约 48px 宽、最多 2 列 */
.cw-more.cw-more-tag{left:auto;padding:0 2px;display:flex;align-items:center;justify-content:center;text-align:center;white-space:normal;word-break:keep-all;font-size:11px;line-height:13px;border-radius:4px;z-index:2;background:var(--surface-2)}
/* 1511c 建议：1100 英文“+ New”不再掉到下一行——桌面上表头不折行，标题让位省略 */
@media (min-width:760px){.cal-page .cal-head{flex-wrap:nowrap;min-width:0}.cal-page .cal-head h2{min-width:0;flex:0 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}
/* 1511c 建议：390 聊天页标题“小五”也绝对居中（以前只有子页面居中） */
@media (max-width:759px){[data-page=chat] .topbar{position:relative}[data-page=chat] .topbar>.topbar-title{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);max-width:calc(100% - 200px);white-space:nowrap;row-gap:3px}[data-page=chat] .topbar>.topbar-title>span{max-width:100%;overflow:hidden;text-overflow:ellipsis}}
.cal-pop.day .cal-dcard{align-self:stretch;width:100%}   /* 1511c：弹层条目撑满（父级 align-items:center 让卡片缩到内容宽） */
.cal-pop{margin:0!important}   /* 1511c：继承来的 margin-top 18px 让 390 弹层底边出屏 */
.cal-pop.day .cal-dcard{margin:0}
.lsw-sheet.out{transform:translateY(100%)!important;transition:transform .2s cubic-bezier(.4,0,1,1)!important}
.lsw-mask.out{opacity:0!important;transition:opacity .2s linear!important;pointer-events:none}
.hs-hit.hc{align-items:flex-start}   /* 1511c：搜索卡时间顶部对齐，和日期卡一致 */
/* 艺术总监 1511c 补：1100 en 标题被省略、图例 To-do 折行。图例不折行；窄于 1280 时图例只留色点（悬停有字），标题不再让位 */
@media (min-width:760px){.cal-page .cal-lgd,.cal-page .cal-lgd *{white-space:nowrap}.cal-page .cal-head h2{flex-shrink:0}}
@media (min-width:760px) and (max-width:1199px){.cal-page .cal-lgd .lg-t{display:none}.cal-page .cal-lgd .lg{padding-left:6px;padding-right:6px}}
.cal-pop.day{gap:0}.cal-pop.day::before,.cal-pop.day::after{display:none}   /* 1511e #5：继承的 gap 14px 加上空的 ::before/::after，顶上底下各多 14px（加标题内边距看着约 28px 空白） */

/* 1.5.1.1h（艺术总监 1511g #2）：后台改写时同一个气泡里的“想事情”点点（和空白开场那排点点同款） */
#msgs .m.bot .redo-dots{display:flex;gap:5px;align-items:center;min-height:1.65em;animation:xwfade 150ms linear}
#msgs .m.bot .redo-dots i{width:6px;height:6px;border-radius:50%;background:var(--text-2);opacity:.35;animation:xwdot 1.2s ease-in-out infinite}
#msgs .m.bot .redo-dots i:nth-child(2){animation-delay:.18s}
#msgs .m.bot .redo-dots i:nth-child(3){animation-delay:.36s}
#msgs .m.bot .redo-dots~.hacts,#msgs .m.bot .redo-dots~.meta{display:none}
@media (prefers-reduced-motion:reduce){#msgs .m.bot .redo-dots i{animation:none;opacity:.6}#msgs .m.bot .redo-dots{animation:none}}
html.reduce-motion #msgs .m.bot .redo-dots i{animation:none;opacity:.6}
/* 1.5.1.1h（艺术总监 1511g #1）：Memories 页从状态行开始，“我们的回忆”是状态行右边的次要按钮 */
.pf-sum-row{display:flex;align-items:center;gap:12px;justify-content:space-between;margin-top:4px}
.pf-sum-row .pf-sum-t{flex:1 1 auto;min-width:0;margin:0}
.pf-sum-row .memories-btn{margin:0;flex:none;font-size:13px;padding:5px 10px;white-space:nowrap}
/* 1511i（艺术总监 1511h）：“我们的回忆”次要按钮——图标和字竖直居中，字用次要色、常规字重 */
.pf-sum-row .memories-btn{display:inline-flex;align-items:center;gap:6px;line-height:1;font-weight:400;color:var(--text-2)}
.pf-sum-row .memories-btn svg{display:block;flex:none;width:15px;height:15px;margin:0}
.pf-sum-row .memories-btn:hover{color:var(--text)}
/* 1511j（艺术总监 1511i 必修 1）：顶栏回到全站 60px、标题一行；副标题“{AI}记住的关于你的事”放内容区第一行（像日历页），手机也一样。
   副标题 14px 次要灰；下面状态行改成正文色、隔 12px，两行不再同色同字号重复 */
.pf-sub{margin:4px 0 12px;font-size:14px;line-height:1.45;color:var(--text-2)}
.pf-sum-row .pf-sum-t{color:var(--text)}
/* 1511j／1.5.1.2：幽灵气泡→点点交叉淡化时，幽灵气泡留在原位，点点临时绝对定位叠在它上面（.mcol 是定位参照） */
#msgs .mr.wait .mcol{position:relative}
#msgs .mr.wait.xfade .m.wait-dots{display:flex;gap:5px;align-items:center}
/* 1511j（艺术总监建议）：内容变长出滚动条时不让内容列左右跳 */
.page.sub .scroll,.sub .scroll{scrollbar-gutter:stable}

/* 1511k：记忆页首次加载不出现“读取中…”那一帧。
   1.5.1.2（艺术总监 1512ui M3）：以前用 60vh 的隐形占位先占高度，固定部分先画在下面，数据来了整块上跳约 180px；
   现在第一次进来整页内容先不显示（标题栏照常），数据画好那一刻一起出现，不占位、不跳 */
#pf-groups .pf-loading{display:none}
#panel .scroll.pf-wait{visibility:hidden}
/* 1.5.1.2 重新生成（艺术总监规格）：只在最新一条回复下面，和气泡左边对齐；平时淡（.5），悬停气泡／键盘聚焦全亮；别的操作照旧悬停才出 */
#msgs .m.bot .hacts.has-regen{opacity:1;pointer-events:auto;left:0}
#msgs .m.bot .hacts.has-regen>:not(.regen){opacity:0;pointer-events:none;transition:opacity .15s}
#msgs .m.bot:hover .hacts.has-regen>*,#msgs .m.bot:focus-within .hacts.has-regen>*,#msgs .m.bot.show-acts .hacts.has-regen>*{opacity:1;pointer-events:auto}
#msgs .hacts .ib.lab.regen{opacity:.5;transition:opacity .15s,color .15s,background .15s}
#msgs .m.bot:hover .hacts .ib.lab.regen,#msgs .hacts .ib.lab.regen:hover,#msgs .hacts .ib.lab.regen:focus-visible{opacity:1}
#msgs .hacts .ib.lab.regen svg{fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
#msgs .m.bot.regen-busy>.hacts,#msgs .m.bot.regen-busy>.acts,#msgs .m.bot.regen-busy>.srcs,#msgs .m.bot.regen-busy>.meta,#msgs .m.bot.regen-busy>.fb-menu{display:none}
@media (prefers-reduced-motion:reduce){#msgs .hacts .ib.lab.regen,#msgs .m.bot .hacts.has-regen>:not(.regen){transition:none}}
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
/* 1.5.1.2（艺术总监 1512ui 次要 7）：确认框正文中文按标点断行（「不能恢复」不再拆成「不能恢｜复」）；实在放不下才在字间断 */
#dg-body{word-break:keep-all;overflow-wrap:anywhere;text-wrap:pretty}
/* 1.5.1.2（艺术总监 1512ui M4）：人物行“更多”改成图标＋字，和旁边“切换”同一行高，横排 */
.persona-acts .ib.lab{width:auto;height:28px;padding:0 10px 0 7px;gap:4px;display:inline-flex;align-items:center;border-radius:8px;font-size:12px;color:var(--text-2)}
.persona-acts .ib.lab svg{width:15px;height:15px}
.persona-acts .ib.lab:hover{color:var(--accent-text);background:var(--accent-tint)}

/* 1.5.1.2 第二轮（艺术总监规格）：提醒确认卡最下面的送达说明（灰字＋🔔）；推送没开时带一个文字按钮 */
.acts-deliv{ flex-basis:100%; display:flex; align-items:center; flex-wrap:wrap; gap:4px 6px; margin-top:2px; font-size:12px; line-height:1.45; color:var(--text-3) }
.acts-deliv .dl-ic{ font-size:11px; line-height:1 }
.acts-deliv .dl-btn{ border:0; background:none; padding:0 2px; font:inherit; color:var(--accent); cursor:pointer; text-decoration:underline; text-underline-offset:2px }
.acts-deliv .dl-btn.hidden{ display:none }
.acts-deliv .dl-btn:disabled{ opacity:.5; cursor:default }
/* 1.5.1.3 P1：换样子面板顶上显示在改哪个人物（小球＋名字） */
.av-who { display: inline-flex; align-items: center; gap: 8px; }
.av-who-orb { width: 28px; height: 28px; flex: none; display: inline-block; }
/* 1.5.1.3 W1：关注卡片下面的第一次结果 */
.wo-first { margin-top: 8px; padding: 8px 10px; border-radius: 10px; background: rgba(127,127,127,.08); font-size: .92em; line-height: 1.5; }
.wo-first.done { color: inherit; }
/* 1.5.1.3 艺术总监 10-21：聊天里的关注卡，照 watch-entry-1513/chat.png */
.wo-card { margin-top: 10px; border-radius: 14px; background: rgba(127,127,127,.10); border: 1px solid rgba(127,127,127,.18); overflow: hidden; min-width: min(420px, 100%); }
.wo-card .wo-h { display: flex; align-items: center; gap: 8px; padding: 12px 14px 4px; }
.wo-card .wo-t { font-weight: 600; }
.wo-card .wo-tag { font-size: .78em; padding: 1px 7px; border-radius: 6px; color: var(--ok); background: var(--ok-tint); }
.wo-card .wo-m { padding: 0 14px 12px; font-size: .86em; }
.wo-card .wo-m b { font-weight: 600; color: inherit; }
.wo-card .wo-link { display: flex; align-items: center; padding: 10px 14px; border-top: 1px solid rgba(127,127,127,.18); color: var(--accent-text); font-weight: 600; font-size: .9em; text-decoration: none; }
.wo-card .wo-link .grow { flex: 1; }
.wo-card .wo-first { margin: 0; border-radius: 0; padding: 10px 14px 12px; background: rgba(127,127,127,.07); }
.wo-card .wo-ft { font-size: .82em; margin-bottom: 2px; }
.wo-card .wo-ft.wo-fail { display: flex; align-items: center; gap: 4px; }
.wo-card .wo-ftag { font-size: .95em; padding: 0 6px; border-radius: 6px; color: var(--warn-text); background: var(--warn-tint); }

/* 1.5.1.3 第八轮（艺术总监 7d96d1e）：聊天气泡旁边的头像只用一个组件（avatarOf 画的静态小头像），一个尺寸、一个样式（40px 圆形、无底色），
   实时、刷新后、面板收起／展开、中英文都一样。每串她的第一条带头像，同串后面几条空出这一格对齐。
   会动、跟着心情的小球只在右侧面板里（展开时一直是活的），不再放进聊天行；点最新那条的小头像展开面板（main.js）。 */
#msgs .mr.bot>.av-live{display:none!important}
#msgs .mr.bot{gap:10px!important}
#msgs .mr.bot>.mcol{margin-left:0!important}
#msgs .mr.bot>.av{display:grid!important;width:40px!important;height:40px!important;border-radius:50%!important;background:none!important;margin-top:20px;visibility:hidden!important}
#msgs .mr.bot.head>.av,#msgs .mr.bot.wait>.av{visibility:visible!important}
#msgs .mr.bot>.av img{width:100%;height:100%;object-fit:contain}
#msgs .mr.bot>.av{position:relative;overflow:hidden}   /* 第九轮：看得见的圆正好 40px（main.js avFit），影子收在圆外 */
#msgs .mr.bot>.av.av-go{cursor:pointer}
#msgs .mr.bot>.av.av-go:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

/* 第九轮（艺术总监）：窄屏标题绝对居中后，网格里只剩两格，右侧按钮掉进中间那一列压住标题 → 右侧固定在第三列靠右（中英文，320–1099px） */
@media (max-width:1099px){.topbar>.top-right{grid-column:3;justify-self:end}}
.mrow .mlv:empty{display:none}   /* 第九轮：英文心情条旁不写副词 */
/* 第九轮（艺术总监）：点了“好／不用”后卡片收起，原处一行小字结果 */
/* 第十轮（艺术总监）：这一行本身不当胶囊（.sys 的底色和左边 50px 让字偏一边）；胶囊只包字，左右内边距相等，带不带 ✓ 都居中 */
#msgs > .mr.wo-res{display:flex;justify-content:center;align-self:stretch;max-width:none;background:none;border-radius:0;padding:0;margin:2px 0 6px}
#msgs > .mr.wo-res .wo-res-line{display:inline-block;white-space:nowrap;font-size:12.5px;color:var(--text-2);line-height:1.4;background:var(--surface-2);border-radius:12px;padding:6px 12px;text-align:center}
#msgs > .mr.wo-res .wo-ok{color:var(--accent);margin-right:4px;-webkit-user-select:none;user-select:none}   /* 行内元素：复制、读屏都是一行 */

/* 第十轮（艺术总监）：窄屏往上翻时聊天内容滑到小球区下面被硬切一半 → 顶边淡出遮罩＋一条分隔线（只用主题变量） */
@media (max-width:759px){
  #msgs{-webkit-mask-image:linear-gradient(to bottom,transparent 0,black 28px);mask-image:linear-gradient(to bottom,transparent 0,black 28px);border-top:1px solid var(--border)}
}
/* 第十轮（英文把关）：心情条右边的小斜线是“正在慢慢平复”的图标（.mfade），没在平复时也淡淡地常显，看着像多出来的一道斜杠 → 只在真在平复时显示 */
.mrow .mfade:not(.on){visibility:hidden}

/* ===== V1 精简层（Z 10-29 21:47 定的六件 + 艺术总监 V1 意见）：只露 V1 真有的东西 ===== */
/* 颜色：暗色用户气泡改浅橙实心深字；正文以外的灰字提亮（对比度 ≥4.5:1） */
[data-theme=dark-orange]{ --text-2:#b9b5ac; --text-3:#a8a49b; --v1-ubg:#f0945a; --v1-ufg:#1f1208; }
[data-theme=dark-blue]{ --text-2:#b4bccb; --text-3:#a3abba; --v1-ubg:#5b9cff; --v1-ufg:#0b1220; }
[data-theme=light-orange]{ --v1-ubg:#b5541b; --v1-ufg:#ffffff; }
[data-theme=light-blue]{ --v1-ubg:#2f6fd6; --v1-ufg:#ffffff; }

/* V1 没有的入口：全部不显示 */
body.v1 #nostore-l, body.v1 #voice-l, body.v1 #voice-btn, body.v1 #ptt, body.v1 .mic, body.v1 .hacts .tts, body.v1 .ib.tts, body.v1 #kb-hint, body.v1 .composer-sub,
body.v1 .wn-bell, body.v1 #wn-bell, body.v1 [data-open="menu"], body.v1 .face-style-btn, body.v1 #mood-chip,
body.v1 .hacts .fb, body.v1 .ib.erase, body.v1 .erase, body.v1 #nostore-bar, body.v1 .comp-orb, body.v1 .xw-comp,
body.v1 .mob-only.brand-sm, body.v1 #ds-pmenu { display:none!important }
/* 手机聊天页顶上的大脸面板不显示（招牌用不动的小五脸：侧栏、手机顶栏、空状态） */
@media (max-width:1099px){ body.v1 #xw-pw, body.v1 .face-col { display:none!important } }
@media (min-width:1100px){ body.v1 #xw-pw { display:none!important } }

/* 字体：桌面气泡 16px / 1.6，侧栏和设置行 15px */
body.v1 .m, body.v1 .m .mt { font-size:16px; line-height:1.6 }
@media (max-width:1099px){ body.v1 .m, body.v1 .m .mt { font-size:17px } }
body.v1 .ds-link { font-size:15px; height:44px; gap:12px }
body.v1 .st-cat .li { font-size:15px }
body.v1 .st-cat h3.sec { font-weight:600; font-size:15px }
body.v1 .who, body.v1 .day { font-size:12.5px; color:var(--text-3) }

/* 气泡：内边距 12×16（手机 14×18），圆角 16 */
body.v1 .m.user, body.v1 [data-theme] .m.user { background:var(--v1-ubg)!important; color:var(--v1-ufg)!important; padding:12px 16px!important; border-radius:16px!important }
body.v1 .m.bot { padding:12px 16px!important; border-radius:16px!important }
@media (max-width:1099px){ body.v1 .m.user, body.v1 .m.bot { padding:14px 18px!important } }

/* 间距：同一轮 8px，换轮 20px；名字只标在一串的第一条，时间只在隔 5 分钟以上 */
body.v1 #msgs .mr { margin:8px 0!important }
body.v1 #msgs .mr.user { margin-top:20px!important }
body.v1 #msgs .mr:not(.head) .who { display:none!important }
body.v1 #msgs .mr .who time { display:none }
body.v1 #msgs .mr.v1-t .who time { display:inline }
body.v1 #msgs .mr.user .who { display:none!important }
body.v1 #msgs .mr.user.v1-t .who { display:flex!important }

/* 头像：「我」也是圆的，桌面 28、手机 32；跟着气泡颜色 */
body.v1 .av[data-av=user] { display:grid!important; visibility:visible!important; width:28px!important; height:28px!important; border-radius:50%!important;
  background:var(--v1-ubg)!important; color:var(--v1-ufg)!important; font-size:12px; margin-top:6px!important }
body.v1 .mr.user:not(.head) .av[data-av=user] { visibility:hidden!important }
@media (max-width:1099px){ body.v1 .av[data-av=user] { width:32px!important; height:32px!important; font-size:13px } }

/* 回复下只留「复制」（悬停或点一下出现） */
body.v1 .hacts .cp { display:inline-flex }

/* 输入框：桌面高 56、圆角 28；空着时发送键灰，有字才亮 */
body.v1 .composer-row { min-height:56px; border-radius:28px!important; padding:8px 8px 8px 18px; outline:none!important; box-shadow:0 0 0 1px var(--border),0 4px 18px var(--shadow)!important }
body.v1 .composer-row:focus-within { box-shadow:0 0 0 1.5px var(--accent),0 4px 18px var(--shadow)!important }
body.v1 #input { font-size:16px; align-self:center }
body.v1 .send.v1-empty { background:var(--accent)!important; color:var(--on-accent)!important; opacity:.5 }
body.v1 .composer-row { gap:8px }  /* 2.0 的小话筒放在发送键左边，留好位置 */
@media (max-width:1099px){ body.v1 .composer-row { min-height:52px } body.v1 .composer { padding-left:12px!important; padding-right:12px!important } }

/* 侧栏：小五（不动的脸）、聊天、她记得的你、空白、设置、账号；约 200px */
@media (min-width:1100px){ body.v1.has-side .desk-side { width:200px } }
body.v1 #ds-orb.v1-static { width:28px; height:28px; border-radius:50%; overflow:hidden; display:inline-grid; place-items:center }
body.v1 .v1-face img, body.v1 #ds-orb.v1-static img { width:100%; height:100%; object-fit:contain; display:block }

/* 手机：顶栏只留「小五」居中（带不动的小脸），底部固定三按钮 */
.v1-tabs { display:none }
@media (max-width:1099px){
  body.v1.v1-tabs-on .v1-tabs { display:flex; position:fixed; left:0; right:0; bottom:0; z-index:40; background:var(--bg); border-top:1px solid var(--border);
    padding-bottom:env(safe-area-inset-bottom); height:calc(56px + env(safe-area-inset-bottom)) }
  .v1-tabs a { flex:1; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:2px; color:var(--text-2); font-size:12.5px; text-decoration:none }
  .v1-tabs a svg { width:24px; height:24px }
  .v1-tabs a.on { color:var(--accent-text); font-weight:600 }
  body.v1.v1-tabs-on .page.on { padding-bottom:calc(56px + env(safe-area-inset-bottom)) }
  body.v1.v1-tabs-on.v1-kb .v1-tabs { display:none }
  body.v1.v1-tabs-on.v1-kb .page.on { padding-bottom:0 }
  body.v1 .page.sub .topbar > a.icon-btn[href="#chat"] { visibility:hidden }
}
.v1-mface { display:inline-block; width:24px; height:24px; border-radius:50%; overflow:hidden; vertical-align:-6px; margin-right:6px }
.v1-mface img { width:100%; height:100%; object-fit:contain }
@media (min-width:1100px){ .v1-mface { display:none } }
.v1-histlink { font-size:14px; color:var(--text-2); text-decoration:none; padding:6px 10px; border-radius:10px; white-space:nowrap }
.v1-histlink:hover { background:var(--surface-2) }

/* 第一次打开的空状态：不动的小五脸＋一句招呼＋可点的开头 */
.v1-empty { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:14px; min-height:60%; padding:40px 16px; text-align:center }
.v1-empty .v1-face { width:96px; height:96px; border-radius:50% }
.v1-empty p { margin:0; font-size:17px; color:var(--text) }
.v1-empty .v1-starts { display:flex; flex-wrap:wrap; gap:10px; justify-content:center }
.v1-empty .v1-starts button { border:1px solid var(--border); background:var(--surface); color:var(--text); border-radius:20px; padding:10px 16px; font-size:15px }
.v1-empty .v1-starts button:hover { border-color:var(--accent) }

/* 设置：单列卡片，居中，最大 720；没有二级菜单 */
body.v1 #st-cats { display:none!important }
body.v1 .st-wrap { display:block!important; max-width:720px!important; margin:0 auto!important; padding:0 16px }
body.v1 .st-body { max-width:720px!important; width:100%!important; margin:0 auto }
body.v1 .st-cat { display:block!important }
body.v1 .st-cat[data-cat=persona], body.v1 .st-cat[data-cat=checkin], body.v1 .st-cat[data-cat=notify],
body.v1 #st-watch-row, body.v1 .v1-off, body.v1 [data-theme-pick$="-blue"] { display:none!important }

/* 「她记得的你」：按类分组，只读 */
body.v1 [data-page=profile] .scroll > :not(.v1-mem) { display:none!important }
.v1-mem { max-width:720px; margin:0 auto; padding:8px 16px 32px }
.v1-mem .v1-sub { color:var(--text-2); font-size:14px; margin:4px 0 18px }
.v1-mem h3 { font-size:15px; font-weight:600; margin:20px 0 8px; color:var(--text) }
.v1-mem ul { list-style:none; margin:0; padding:4px 0; background:var(--surface); border-radius:16px; box-shadow:0 0 0 1px var(--border) }
.v1-mem li { padding:12px 16px; font-size:15px; line-height:1.6; border-top:1px solid var(--border) }
.v1-mem li:first-child { border-top:0 }
.v1-mem .v1-none { color:var(--text-2); font-size:15px; padding:40px 0; text-align:center }
/* 不动的小五脸：尺寸由外框定，不跟头像的缩放走 */
.v1-face { display:block; width:28px; height:28px; border-radius:50%; overflow:hidden; flex:none; margin:0!important; background:none!important }
.v1-face img, .v1-mface img, #ds-orb.v1-static img { width:100%!important; height:100%!important; max-width:none!important; transform:none!important; position:static!important; margin:0!important; object-fit:contain }
body.v1 .av[data-av=user] .av-t { display:block!important; visibility:visible!important; color:inherit!important; font-weight:600 }
body.v1 .send { width:40px!important; height:40px!important; flex:none!important; align-self:center!important; border-radius:50%!important }
body.v1 .send svg { stroke:currentColor!important; opacity:1!important; visibility:visible!important }
body.v1 .st-cat h3.sec { margin-top:28px }
body.v1 .st-cat:first-child h3.sec:first-child { margin-top:8px }
body.v1 #chat .topbar-title > .mob-only { display:inline-flex; align-items:center }
body.v1 .send { min-height:40px!important; max-height:40px!important; min-width:40px!important; padding:0!important; display:grid!important; place-items:center }
body.v1 .send svg { width:20px; height:20px; fill:none; stroke-width:2.2; stroke-linecap:round; stroke-linejoin:round }

/* ===== 复审 1 ===== */
/* M1 间距：同一轮（你问→她答）气泡之间 8px，换轮 20px；同一轮里她那条不再标名字（有头像） */
body.v1 #msgs { gap:0!important }
body.v1 #msgs .mr { margin:0!important }
body.v1 #msgs .mr.user, body.v1 #msgs .mr.bot:not(.v1-in) { margin-top:20px!important }
body.v1 #msgs .mr.bot.v1-in { margin-top:8px!important }
body.v1 #msgs .mr.bot.v1-in .who { display:none!important }
body.v1 #msgs .day + .mr { margin-top:12px!important }
/* M13 字号：设置行、记忆条目、侧栏 15px；说明 13px */
body.v1 .ds-link, body.v1 .ds-link span { font-size:15px!important }
body.v1 .st-cat .li, body.v1 .st-cat .li span, body.v1 .st-cat .li input, body.v1 .st-cat .li b, body.v1 .st-cat .li select, body.v1 .v1-mem li { font-size:15px!important }
body.v1 .st-cat p.hint, body.v1 .st-cat .li .hint, body.v1 .hs-count, body.v1 .v1-mem .v1-sub { font-size:13px!important }
/* M3 手机顶栏「记录」：最右、图标+字、点按区 ≥44 */
.v1-histlink { display:inline-flex; align-items:center; gap:6px; min-height:44px; min-width:44px; justify-content:center }
.v1-histlink svg { width:18px; height:18px; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round }
.v1-hl-m { display:none }
@media (max-width:1099px){
  body.v1 #chat .topbar { position:relative }
  body.v1 #chat .top-right { position:absolute; right:4px; top:50%; transform:translateY(-50%) }
  .v1-hl-d { display:none } .v1-hl-m { display:inline }
}
/* M5 聊天记录手机左上「‹ 聊天」 */
body.v1 .page.sub .topbar > a.v1-back { visibility:visible!important; display:inline-flex!important; align-items:center; gap:2px; width:auto!important; min-width:44px; min-height:44px; padding:0 8px 0 2px; font-size:15px; color:var(--text) ; text-decoration:none }
@media (min-width:1100px){ body.v1 .page.sub .topbar > a.v1-back { display:none!important } }
/* M7 聊天记录：单列居中 ≤720 */
body.v1 .hs-page { max-width:720px; margin:0 auto; width:100%; box-sizing:border-box }
body.v1 .hs-page .hs-head, body.v1 #hs-search, body.v1 .hs-box { max-width:none!important; width:100% }
/* S5 搜索/按日期 选中态 */
body.v1 .hs-seg button { color:var(--text-2); font-weight:400 }
body.v1 .hs-seg button.on, body.v1 .hs-seg button[aria-pressed=true] { font-weight:600; color:var(--text) }
[data-theme=dark-orange] body.v1 .hs-seg button.on, [data-theme=dark-orange] body.v1 .hs-seg button[aria-pressed=true],
body.v1[data-theme=dark-orange] .hs-seg button.on { background:#2e2e33!important; color:#fff!important }
/* S6 聊天记录空状态 */
.v1-hsempty { display:flex; flex-direction:column; align-items:center; gap:12px; padding:56px 16px; color:var(--text-2); font-size:15px }
.v1-hsempty .v1-face { width:48px; height:48px }
.v1-hsempty p { margin:0 }
#hs-res:not(:empty) ~ .v1-hsempty { display:none }
/* M8 额度 */
body.v1 .v1-qv { margin-left:auto; font-weight:600 }
body.v1 .li.v1-qhint { color:var(--text-2); font-size:13px!important; min-height:0; padding-top:0 }
/* M10 时区一行 */
.v1-tzbtn { margin-left:auto; background:none; border:0; color:var(--text); font-size:15px; padding:8px 0 8px 12px; min-height:44px; cursor:pointer }
.v1-tzpane { flex-direction:column; align-items:stretch!important; gap:8px }
.v1-tzpane:not(.v1-off) { display:flex }
.v1-tzq { width:100%; box-sizing:border-box; padding:10px 12px; border-radius:10px; border:1px solid var(--border); background:var(--bg); color:var(--text); font-size:15px }
.v1-tzlist { max-height:240px; overflow:auto; display:flex; flex-direction:column }
.v1-tzlist button { text-align:left; background:none; border:0; padding:10px 4px; font-size:15px; color:var(--text); border-bottom:1px solid var(--border) }
.v1-tzlist button.on { color:var(--accent-text); font-weight:600 }
/* S1 组间距统一 24（手机 28）；S2 保存按钮放右下 */
body.v1 .st-cat h3.sec, body.v1 .st-cat:first-child h3.sec:first-child { margin-top:24px!important }
body.v1 .st-cat:first-child h3.sec:first-child { margin-top:8px!important }
body.v1 .st-cat p.err:empty { display:none }
body.v1 .st-cat p.hint.pad { margin-bottom:0 }
@media (max-width:1099px){ body.v1 .st-cat h3.sec { margin-top:28px!important } }
body.v1 .li.v1-save { justify-content:flex-end }
body.v1 .li.v1-save .btn { height:36px; padding:0 16px; font-size:15px; border-radius:18px }
/* S4 发送键：空时浅橙 40% + 深箭头；有字实心 */
[data-theme=dark-orange] body.v1 .send, body.v1[data-theme=dark-orange] .send { background:var(--v1-ubg)!important; color:var(--v1-ufg)!important; opacity:1 }
[data-theme=dark-orange] body.v1 .send.v1-empty, body.v1[data-theme=dark-orange] .send.v1-empty { background:rgba(240,148,90,.4)!important; color:var(--v1-ufg)!important; opacity:1 }
/* S7 手机顶栏的脸 28px */
.v1-mface { width:28px!important; height:28px!important; vertical-align:-8px }
/* S8 底部按钮安全区 */
@media (max-width:1099px){ body.v1.v1-tabs-on .v1-tabs { padding-bottom:max(8px, env(safe-area-inset-bottom)); height:calc(56px + max(8px, env(safe-area-inset-bottom))) }
  body.v1.v1-tabs-on .page.on { padding-bottom:calc(56px + max(8px, env(safe-area-inset-bottom))) } }
/* M2 手机顶栏：让开刘海（安全区顶），实底+细线，消息从顶栏下 12px 开始，不再被压住 */
@media (max-width:1099px){
  body.v1 .page.on > .topbar, body.v1 .page.on .chat-col > .topbar, body.v1 #chat .topbar { padding-top:env(safe-area-inset-top)!important; height:calc(56px + env(safe-area-inset-top))!important; box-sizing:border-box; background:var(--bg)!important; border-bottom:1px solid var(--border); z-index:5; flex:none }
  body.v1 #msgs { padding-top:12px!important; scroll-padding-top:12px }
  body.v1 #chat .top-right { top:calc(50% + env(safe-area-inset-top) / 2) }
}
@media (max-width:1099px){
  body.v1 .page .topbar { padding-top:env(safe-area-inset-top)!important; height:calc(56px + env(safe-area-inset-top))!important; box-sizing:border-box; background:var(--bg)!important; border-bottom:1px solid var(--border) }
}
@media (max-width:1099px){ body.v1 .page .topbar .topbar-title { top:calc(50% + env(safe-area-inset-top) / 2) } }
/* ===== 复审 2 ===== */
/* R1 时区卡：隐藏的「找时区」行不留线，单行跟「版本」一样高 */
body.v1 .v1-tzrow { border-top:0!important }
body.v1 .v1-tzbtn { height:auto; min-height:0; padding:0; line-height:inherit }
/* B1 额度提示 */
body.v1 .v1-qhint { padding-top:4px!important; padding-bottom:12px!important; border-top:0!important }
/* B4 减少动效：开关 */
body.v1 label.li:has(#st-reduce) { min-height:44px; cursor:pointer }
body.v1 #st-reduce { appearance:none; -webkit-appearance:none; width:44px; height:26px; margin:0; border-radius:13px; background:var(--border); position:relative; cursor:pointer; flex:none; transition:background .15s }
body.v1 #st-reduce::after { content:""; position:absolute; top:3px; left:3px; width:20px; height:20px; border-radius:50%; background:#fff; box-shadow:0 1px 2px rgba(0,0,0,.25); transition:transform .15s }
body.v1 #st-reduce:checked { background:var(--accent) }
body.v1 #st-reduce:checked::after { transform:translateX(18px) }
body.v1 #st-reduce:focus-visible { outline:2px solid var(--accent); outline-offset:2px }
/* B5/B7 记录页切换条：和搜索框同宽；暗色选中态明显 */
body.v1 .hs-head .hs-seg { display:flex; width:100% }
body.v1 .hs-seg button { flex:1 }
html[data-theme^=dark] body.v1 .hs-seg button.on { background:#f0945a!important; color:#1a1a1a!important; font-weight:600 }
/* B6 手机顶栏脸 28px */
body.v1 #chat .topbar-title .v1-mface, body.v1 .v1-mface { width:28px!important; height:28px!important }
body.v1 .hs-head { display:block; width:100%; max-width:none; box-sizing:border-box }
body.v1 .hs-head .hs-seg { max-width:none!important }
body.v1 .card > .li.v1-first { border-top:0!important }

/* ---------- 提醒（web/reminders.js），艺术总监 2026-10-30 终审通过后从 JS 搬来 ---------- */
#rem-stack{display:flex;flex-direction:column;gap:8px;padding:0 12px 8px;width:100%;max-width:744px;margin:0 auto;box-sizing:border-box}
#rem-stack:empty{display:none}
.rem-card{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:12px 16px;color:var(--text);font-size:16px;line-height:1.6;max-width:720px;box-sizing:border-box}
.rem-card.rem-inline{margin:8px 0 12px;max-width:560px}
.rem-card.due{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,var(--surface));box-shadow:inset 3px 0 0 var(--accent)}
[data-theme^=light] .rem-card.due{background:color-mix(in srgb,var(--accent) 8%,var(--surface))}
.rem-t1{font-weight:600}
.rem-kind{color:var(--accent-text,var(--accent))}
.rem-t2{color:var(--text-2);font-size:15px}
.rem-note{color:var(--text-3);font-size:13px;margin-top:2px}
.rem-acts{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap;align-items:center}
.rem-acts button{border:0;border-radius:999px;padding:0 18px;height:36px;min-width:64px;font:inherit;font-size:15px;line-height:20px;cursor:pointer;background:var(--surface-2);color:var(--text)}
.rem-acts button.pri{background:var(--accent);color:var(--accent-on,#fff)}
.rem-acts button.rem-txt{background:none;color:var(--text-2);min-width:0;padding:0 10px}
.rem-card.due .rem-acts button:not(.pri){background:var(--surface);border:1px solid var(--border);padding:0 17px}
.rem-card.rem-busy{opacity:.6}
.rem-card button:disabled,.rem-card select:disabled{opacity:1;color:inherit}
.rem-card .pri:disabled{color:var(--accent-on,#fff)}
.rem-card button:disabled{cursor:default}
.rem-card.rem-gone{opacity:.7}
.rem-card.rem-gone .rem-t1,.rem-card.rem-gone .rem-t2,.rem-card.rem-gone .rem-kind,.rem-card.rem-gone .rem-err{color:var(--text-3)}
.rem-pick{display:flex;gap:8px;width:100%;margin-top:10px}
.rem-pick select{flex:1;min-width:0;font:inherit;font-size:15px;line-height:20px;height:36px;padding:0 10px;border-radius:10px;border:1px solid var(--border);background:var(--bg);color:var(--text)}
.rem-pick select.rem-t{flex:0 0 96px}
.rem-pick select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 20%,transparent)}
.rem-err{color:var(--danger);font-size:13px;margin-top:6px}
.rem-err:empty{display:none}
.rem-more{align-self:flex-start;border:0;background:none;font:inherit;font-size:15px;color:var(--accent-text,var(--accent));min-height:44px;padding:0 6px;cursor:pointer}
#rem-toast{position:fixed;z-index:2147483000;left:50%;transform:translateX(-50%);background:var(--text);color:var(--bg);padding:8px 16px;border-radius:999px;font-size:15px;line-height:20px;pointer-events:none;white-space:nowrap;box-shadow:0 4px 16px rgba(0,0,0,.18)}
#rem-mine .rem-help{padding:8px 16px 0;margin:0;font-size:13px;line-height:1.6;color:var(--text-2)}
.rem-list .li{flex-wrap:wrap}
.rem-list .li .grow{flex:1;min-width:0}
.rem-list .li .rem-when{font-size:14px;color:var(--text-2)}
.rem-list .li button{border:0;background:none;color:var(--text-2);font:inherit;font-size:14px;cursor:pointer;padding:6px 10px;min-height:32px;min-width:44px;border-radius:8px}
.rem-list .li button.rem-danger{color:var(--danger)}
.rem-list .li .rem-ask{color:var(--text);font-size:14px}
.rem-list .li .rem-pick{flex-basis:100%}
@media (max-width:760px){.rem-card{font-size:17px}}
