/* ==========================================================================
   SoulBook UI 2.0  ·  ui2.css
   --------------------------------------------------------------------------
   PC  端：顶栏 + 筛选条 + 瀑布流网格 + 常驻内联右栏（设置 / POV 演绎 / 对话）
   手机端：对齐 SHINE 真机结构（沉浸式立绘 + 对白 + 操作行 + 底部导航）
   --------------------------------------------------------------------------
   设计基线：
     - PC  端：用户提供的 PC 设计图
     - 手机端：MUMU 真机抓取 com.xinghe.shine v1.3.2
              详见《SHINE 结构与 SOULBOOK 手机端对齐规范 v1.md》
   ========================================================================== */

/* ══════════════════════════════════════════════════════════════════════════
   Design Tokens · 2026「液态玻璃 + 柔和马卡龙」
   用户 2026-09-18：受众为女性与年轻人；旧观感（emoji 当图标 / 1px 灰描边 +
   纯白卡片 + 极浅阴影 / 字号层级差小 / 圆角间距不成体系 / 无微交互）判定为不合格。
   参考 2026 主流：Liquid Glass（苹果 iOS26 年度顶流）+ Bento 网格 + 柔和马卡龙色。
   变量名沿用旧名（避免大范围改选择器），只把值升级为玻璃体系。
   ══════════════════════════════════════════════════════════════════════════ */
:root{
  /* —— 主色：低饱和马卡龙（粉 → 薰衣草，薄荷/蜜桃作点缀）—— */
  --u2-ac:#FF8FB1;
  --u2-ac2:#A98BFB;
  --u2-ac3:#7FD8C4;
  --u2-peach:#FFB27A;
  --u2-grad:linear-gradient(135deg,var(--u2-ac),var(--u2-ac2));
  --u2-bg:#FBF7FC;
  --u2-txt:#2A2433;
  --u2-sub:#8A8198;
  --u2-sub2:#B0A6BC;
  /* —— 液态玻璃：半透面 + 细白边 + 顶部高光内描边 —— */
  --u2-glass:rgba(255,255,255,.58);
  --u2-glass2:rgba(255,255,255,.76);
  --u2-glass3:rgba(255,255,255,.38);
  --u2-glass-dark:rgba(16,10,24,.46);
  --u2-line:rgba(255,255,255,.70);
  --u2-line2:rgba(150,120,170,.16);
  --u2-hl:inset 0 1px 0 rgba(255,255,255,.9);
  --u2-card:rgba(255,255,255,.62);
  --u2-blur:saturate(1.55) blur(22px);
  --u2-blur-sm:saturate(1.4) blur(14px);
  /* —— 阴影：分层柔光（环境 + 主光），不是一条死阴影 —— */
  --u2-sh:0 2px 8px rgba(120,90,140,.06), 0 10px 30px rgba(120,90,140,.08);
  --u2-sh2:0 4px 14px rgba(120,90,140,.10), 0 20px 54px rgba(120,90,140,.14);
  --u2-sh3:0 30px 80px rgba(90,60,110,.22);
  --u2-sh-ac:0 8px 26px rgba(255,143,177,.36);
  /* —— 圆角体系（旧值只有一档 14px，层级不清）—— */
  --u2-r:20px;
  --u2-r-sm:14px;
  --u2-r-xs:10px;
  --u2-r-lg:28px;
  --u2-r-pill:999px;
  /* —— 间距体系 —— */
  --u2-s1:4px; --u2-s2:8px; --u2-s3:12px; --u2-s4:16px;
  --u2-s5:20px; --u2-s6:24px; --u2-s7:32px;
  /* ── PC 左栏＝「手机框」（用户 2026-09-17 第 1/2/3 条）────────────────
     左栏（设置侧栏）与手机模式的框体共用同一套几何：
       · 长宽比 = 手机（参考 iPhone，约 9:19.5）
       · 高度随窗口自适应、宽度按比例推出 → 不拉伸、不成比例失真
       · 位置固定在左侧（就是原来的侧栏位），进入手机模式时框体原地不变 */
  --u2-frame-h:min(calc(100vh - 152px), 828px);
  --u2-frame-w:calc(var(--u2-frame-h) * 9 / 19.5);
  --u2-frame-left:20px;
}

/* 旧手机壳在 UI 2.0 两种模式下都必须让位。
   它是 #inp / #msgList 的宿主，ui2.js 复用其 send()，
   故用「移出视口 + 保留布局盒」而非 display:none（否则 scrollHeight 归 0）。 */
html[data-u2-mode="desktop"] .phone,
html[data-u2-mode="phone"] .phone{
  position:fixed !important;
  left:-99999px !important;
  top:0 !important;
  width:392px !important;
  height:min(860px,96vh) !important;
  opacity:0 !important;
  pointer-events:none !important;
  box-shadow:none !important;
  z-index:-1 !important;
}

/* ============================ PC 端外壳 ============================ */
.u2-desktop{
  display:none;
  position:fixed;inset:0;
  background:
    radial-gradient(1100px 620px at 12% -8%, #ffe9f1 0%, transparent 62%),
    radial-gradient(980px 560px at 100% 0%, #ece5ff 0%, transparent 58%),
    linear-gradient(165deg,#fdf7f5 0%,#faf4f9 46%,#f4f0fd 100%);
  font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Hiragino Sans GB','Microsoft YaHei',sans-serif;
  color:var(--u2-txt);
  z-index:40;
  overflow:hidden;
}
html[data-u2-mode="desktop"] .u2-desktop{display:flex}
html[data-u2-mode="desktop"] body{background:transparent}

.u2-shell{display:flex;flex-direction:column;width:100%;height:100%;min-height:0}

/* ---------- 顶栏 ---------- */
.u2-top{
  display:flex;align-items:center;gap:14px;
  padding:12px 20px;
  background:rgba(255,255,255,.72);
  backdrop-filter:blur(16px);
  border-bottom:1px solid var(--u2-line);
  flex:none;
}
.u2-brand{display:flex;align-items:center;gap:7px;font-weight:800;font-size:16px;flex:none}
.u2-brand .mark{
  width:26px;height:26px;border-radius:8px;display:grid;place-items:center;
  background:linear-gradient(135deg,var(--u2-ac),var(--u2-ac2));
  color:#fff;font-size:14px;
}

/* 搜索框：含语音 / 图片图标 */
.u2-search{
  flex:1;max-width:520px;display:flex;align-items:center;gap:8px;
  background:#fff;border:1px solid var(--u2-line2);border-radius:999px;
  padding:0 8px 0 14px;height:40px;box-shadow:var(--u2-sh);
}
.u2-search .ico{font-size:14px;opacity:.5;flex:none}
.u2-search input{
  flex:1;border:0;outline:0;background:transparent;font-size:13.5px;color:var(--u2-txt);
  font-family:inherit;min-width:0;
}
.u2-search input::placeholder{color:#b9aec4}
.u2-search .tools{display:flex;gap:2px;flex:none}
.u2-ibtn{
  width:28px;height:28px;border-radius:50%;border:0;background:transparent;
  cursor:pointer;font-size:14px;display:grid;place-items:center;transition:background .15s;
}
.u2-ibtn:hover{background:rgba(255,123,172,.12)}
.u2-ibtn.rec{background:rgba(255,80,110,.18);animation:u2pulse 1.2s infinite}
@keyframes u2pulse{0%,100%{opacity:1}50%{opacity:.45}}

/* 导航：浏览历史 / 我的角色 / 创建|导入 */
.u2-nav{display:flex;align-items:center;gap:4px;flex:none}
.u2-nav button{
  border:0;background:transparent;cursor:pointer;
  font-size:13.5px;color:var(--u2-sub);padding:7px 11px;border-radius:9px;
  font-family:inherit;transition:.15s;white-space:nowrap;
}
.u2-nav button:hover{background:rgba(255,123,172,.10);color:var(--u2-txt)}
.u2-nav button.on{background:linear-gradient(135deg,rgba(255,123,172,.16),rgba(139,108,255,.16));color:var(--u2-txt);font-weight:700}
.u2-nav .sep{color:var(--u2-line2);font-size:13px}

.u2-acc{
  width:34px;height:34px;border-radius:50%;border:1px solid var(--u2-line2);
  background:#fff;cursor:pointer;font-size:15px;flex:none;transition:.15s;
}
.u2-acc:hover{box-shadow:var(--u2-sh)}

/* ---------- 筛选条 ---------- */
.u2-filters{
  display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  padding:10px 20px;flex:none;
  background:rgba(255,255,255,.45);
  border-bottom:1px solid var(--u2-line);
}
.u2-flabel{font-size:12px;color:var(--u2-sub);font-weight:700;flex:none}
.u2-fchips{display:flex;gap:6px;flex-wrap:wrap}
.u2-chip{
  border:1px solid var(--u2-line2);background:#fff;color:var(--u2-sub);
  padding:5px 12px;border-radius:999px;font-size:12.5px;cursor:pointer;
  font-family:inherit;transition:.15s;white-space:nowrap;
}
.u2-chip:hover{border-color:var(--u2-ac);color:var(--u2-ac)}
.u2-chip.on{
  background:linear-gradient(135deg,var(--u2-ac),var(--u2-ac2));
  color:#fff;border-color:transparent;font-weight:600;
}
/* chip 上的数量徽标（标签筛选按真实数据生成，带张数） */
.u2-cn{
  display:inline-block;margin-left:5px;padding:0 5px;border-radius:999px;
  font-size:10px;font-weight:700;line-height:15px;vertical-align:1px;
  background:rgba(160,130,170,.14);color:var(--u2-sub);
}
.u2-chip.on .u2-cn{background:rgba(255,255,255,.28);color:#fff}
.u2-fmore{
  margin-left:auto;border:1px dashed var(--u2-line2);background:transparent;
  color:var(--u2-sub);padding:5px 12px;border-radius:999px;font-size:12.5px;
  cursor:pointer;font-family:inherit;
}
.u2-fmore:hover{border-color:var(--u2-ac);color:var(--u2-ac)}

/* ---------- 主体：网格 + 常驻右栏 ---------- */
/* 主体＝[左：手机框（设置/POV/对话）× 固定手机比例] + [右：广场网格] */
.u2-main{flex:1;display:flex;min-height:0;overflow:hidden;padding-left:var(--u2-frame-left)}

.u2-gridwrap{flex:1;min-width:0;display:flex;flex-direction:column;overflow:hidden}
.u2-gridhead{
  display:flex;align-items:baseline;gap:9px;padding:14px 22px 8px;flex:none;
}
.u2-gridhead h2{margin:0;font-size:15px;font-weight:800}
.u2-gridhead .cnt{font-size:12px;color:var(--u2-sub)}

.u2-grid{
  flex:1;overflow-y:auto;padding:6px 22px 26px;
  display:grid;gap:14px;
  grid-template-columns:repeat(var(--u2-cols,4),minmax(0,1fr));
  align-content:start;
}
/* 瀑布流：卡片高度随内容 */
.u2-grid{grid-auto-rows:min-content}

.u2-card{
  position:relative;background:var(--u2-card);border-radius:var(--u2-r);
  box-shadow:var(--u2-sh);cursor:pointer;overflow:hidden;
  border:2px solid transparent;transition:transform .16s,box-shadow .16s,border-color .16s;
  display:flex;flex-direction:column;
}
.u2-card:hover{transform:translateY(-3px);box-shadow:var(--u2-sh2)}
.u2-card.sel{border-color:var(--u2-ac2);box-shadow:0 0 0 4px rgba(139,108,255,.14),var(--u2-sh2)}
.u2-card .pic{
  position:relative;width:100%;aspect-ratio:3/4;overflow:hidden;
  background:linear-gradient(160deg,#ffe6ef,#ece2ff);
}
.u2-card .pic img{width:100%;height:100%;object-fit:cover;display:block}
.u2-card .pic .ph{
  width:100%;height:100%;display:grid;place-items:center;font-size:38px;opacity:.5;
}
.u2-card .meta{padding:9px 11px 11px}
.u2-card .nm{font-size:13.5px;font-weight:700;line-height:1.3;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.u2-card .ds{
  font-size:11.5px;color:var(--u2-sub);line-height:1.5;margin-top:4px;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
.u2-card .tags{display:flex;gap:4px;flex-wrap:wrap;margin-top:7px}
.u2-card .tag{
  font-size:10.5px;color:var(--u2-ac2);background:rgba(139,108,255,.10);
  padding:2px 7px;border-radius:5px;
}
.u2-card .del{
  position:absolute;top:7px;right:7px;z-index:3;
  width:22px;height:22px;border-radius:50%;border:0;cursor:pointer;
  background:rgba(20,14,28,.5);color:#fff;font-size:11px;line-height:1;
  display:grid;place-items:center;opacity:0;transition:opacity .15s;
}
.u2-card:hover .del{opacity:1}
.u2-card .del:hover{background:#e5484d}

/* 网格列数自适应 */
@media (max-width:1500px){.u2-grid{--u2-cols:4}}
@media (max-width:1280px){.u2-grid{--u2-cols:3}}
@media (max-width:1040px){.u2-grid{--u2-cols:2}}

/* ---------- 常驻内联右栏 ---------- */
.u2-rail{
  /* 左栏＝手机框：与手机模式同一套几何（见 :root --u2-frame-*），不可拉伸 */
  width:var(--u2-frame-w);height:var(--u2-frame-h);
  flex:none;align-self:center;margin-right:18px;
  border-radius:22px;overflow:hidden;
  background:rgba(255,255,255,.86);
  backdrop-filter:blur(14px);
  border:1px solid var(--u2-line);
  box-shadow:var(--u2-sh);
  display:flex;flex-direction:column;min-height:0;
}

.u2-rhead{
  display:flex;align-items:center;gap:9px;padding:13px 14px;flex:none;
  border-bottom:1px solid var(--u2-line);
}
.u2-rhead .av{
  width:34px;height:34px;border-radius:10px;flex:none;overflow:hidden;
  background:linear-gradient(135deg,var(--u2-ac),var(--u2-ac2));
  display:grid;place-items:center;color:#fff;font-size:15px;
}
.u2-rhead .av img{width:100%;height:100%;object-fit:cover}
.u2-rhead .who{flex:1;min-width:0}
.u2-rhead .who .n{font-size:13.5px;font-weight:700;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.u2-rhead .who .s{font-size:11px;color:var(--u2-sub);margin-top:1px}
.u2-rhead .x{
  width:26px;height:26px;border-radius:7px;border:0;background:transparent;
  cursor:pointer;font-size:14px;color:var(--u2-sub);flex:none;
}
.u2-rhead .x:hover{background:rgba(160,130,170,.12)}

.u2-rbody{flex:1;overflow-y:auto;padding:10px 12px;min-height:0}
.u2-rfoot{flex:none;padding:10px 12px;border-top:1px solid var(--u2-line)}

/* 设置项列表 */
.u2-ditem{
  display:flex;align-items:center;gap:10px;width:100%;
  padding:11px 12px;border:1px solid var(--u2-line);border-radius:11px;
  background:#fff;cursor:pointer;margin-bottom:8px;text-align:left;
  font-family:inherit;font-size:13px;color:var(--u2-txt);transition:.15s;
}
.u2-ditem:hover{border-color:var(--u2-ac);box-shadow:var(--u2-sh)}
.u2-ditem .ic{font-size:15px;flex:none;width:20px;text-align:center}
.u2-ditem .lb{flex:1;min-width:0}
.u2-ditem .ar{color:var(--u2-sub);font-size:15px;flex:none}

.u2-dhint{font-size:12px;color:var(--u2-sub);line-height:1.6;padding:10px 2px}
.u2-dsec{
  font-size:11px;font-weight:800;color:var(--u2-sub);
  letter-spacing:.4px;margin:14px 0 8px;padding-left:2px;
}
.u2-dsec:first-child{margin-top:2px}

/* ---------- POV 演绎区 ---------- */
.u2-pov{
  position:relative;border-radius:13px;overflow:hidden;margin-bottom:11px;
  background:linear-gradient(165deg,#2a2036,#3d2f4d);
  aspect-ratio:3/4;display:flex;flex-direction:column;justify-content:flex-end;
}
.u2-pov .stage{
  position:absolute;inset:0;background-size:cover;background-position:center top;
  opacity:0;transition:opacity .8s ease;
}
.u2-pov .stage.show{opacity:1}
.u2-pov .fallback{
  position:absolute;inset:0;display:grid;place-items:center;
  font-size:52px;opacity:.28;color:#fff;
}
.u2-pov .veil{
  position:absolute;inset:0;
  background:linear-gradient(to top,rgba(16,10,24,.88) 0%,rgba(16,10,24,.35) 45%,transparent 72%);
}
.u2-pov .lines{
  position:relative;z-index:2;padding:14px 14px 15px;color:#fff;
}
.u2-pov .who{
  font-size:11px;opacity:.8;margin-bottom:5px;letter-spacing:.3px;
}
.u2-pov .who .cnt{opacity:.62;font-size:10px;margin-left:4px}
/* ── 左栏＝手机框：点广场卡后，POV 在框内「整屏沉浸」演出 ──────────────
     用户 2026-09-18：左栏本身就是手机版页面，观感应与手机版几乎一致 →
     立绘铺满整个框体 + 渐变遮罩 + 顶部角色信息 + 底部对白 / 控制 / 发送。
     POV 态下隐藏左栏自身的表头与底栏，把整个框体交给演出层。 */
#u2Rail[data-pane="pov"] .u2-rhead,
#u2Rail[data-pane="pov"] .u2-rfoot{display:none}
#u2Rail[data-pane="pov"] .u2-rbody{padding:0;overflow:hidden;position:relative}

.u2-povfull{
  position:absolute;inset:0;overflow:hidden;
  display:flex;flex-direction:column;justify-content:flex-end;
  background:linear-gradient(165deg,#3a2b4d,#241a33 60%,#180f24);
}
.u2-povfull .bg0{position:absolute;inset:0;background:linear-gradient(165deg,#3a2b4d,#241a33 60%,#180f24)}
.u2-povfull .bg{
  position:absolute;inset:0;background-size:cover;background-position:center top;
  opacity:0;transition:opacity .8s ease;
}
.u2-povfull .bg.show{opacity:1}
.u2-povfull .emoji{position:absolute;inset:0;display:grid;place-items:center;font-size:64px;opacity:.22;color:#fff}
.u2-povfull .mask{
  position:absolute;inset:0;
  background:linear-gradient(to bottom,rgba(12,8,20,.62) 0%,rgba(12,8,20,.10) 22%,
             rgba(12,8,20,.20) 46%,rgba(12,8,20,.88) 82%,rgba(12,8,20,.96) 100%);
}
.u2-povfull .top{
  position:relative;z-index:3;display:flex;align-items:center;gap:9px;
  padding:14px 13px 0;flex:none;color:#fff;
}
.u2-povfull .top .av{
  width:34px;height:34px;border-radius:50%;overflow:hidden;flex:none;
  display:grid;place-items:center;background:rgba(255,255,255,.16);color:#fff;font-size:15px;
}
.u2-povfull .top .av img{width:100%;height:100%;object-fit:cover;display:block}
.u2-povfull .top .who{min-width:0;flex:1}
.u2-povfull .top .n{font-size:14px;font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.u2-povfull .top .s{font-size:10.5px;opacity:.72;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:1px}
.u2-povfull .top .x{
  width:28px;height:28px;border-radius:50%;border:0;cursor:pointer;flex:none;
  background:rgba(255,255,255,.18);color:#fff;font-size:16px;line-height:1;
  display:grid;place-items:center;backdrop-filter:blur(6px);
}
.u2-povfull .bot{position:relative;z-index:3;padding:14px 14px 16px;color:#fff;flex:none}
.u2-povfull .cnt{font-size:10.5px;opacity:.75;margin-bottom:5px;letter-spacing:.3px}
.u2-povfull .line{font-size:13.5px;line-height:1.7;min-height:66px;text-shadow:0 1px 6px rgba(0,0,0,.6)}
.u2-povfull .bar{display:flex;align-items:center;gap:7px;margin-top:12px}
.u2-povfull .play{
  width:31px;height:31px;border-radius:50%;border:0;cursor:pointer;flex:none;
  background:rgba(255,255,255,.20);color:#fff;font-size:12px;
  display:grid;place-items:center;backdrop-filter:blur(6px);transition:.15s;
}
.u2-povfull .play:hover{background:rgba(255,255,255,.34)}
.u2-povfull .play.on{background:var(--u2-ac)}
.u2-povfull .tip{font-size:10.5px;opacity:.72}
.u2-povfull .send{
  width:100%;margin-top:12px;padding:12px;border:0;border-radius:12px;cursor:pointer;
  font-family:inherit;font-size:14px;font-weight:800;color:#fff;
  background:linear-gradient(135deg,var(--u2-ac),var(--u2-ac2));
  box-shadow:0 8px 24px rgba(255,123,172,.34);
}
.u2-pov .line{
  font-size:13px;line-height:1.65;min-height:44px;
  text-shadow:0 1px 6px rgba(0,0,0,.5);
}
.u2-pov .bar{
  display:flex;align-items:center;gap:7px;margin-top:11px;
}
.u2-pov .play{
  width:30px;height:30px;border-radius:50%;border:0;cursor:pointer;flex:none;
  background:rgba(255,255,255,.20);color:#fff;font-size:12px;
  display:grid;place-items:center;backdrop-filter:blur(6px);transition:.15s;
}
.u2-pov .play:hover{background:rgba(255,255,255,.34)}
.u2-pov .play.on{background:var(--u2-ac)}
.u2-pov .tip{font-size:10.5px;opacity:.72}

/* POV 打字机光标 */
.u2-caret{
  display:inline-block;width:2px;height:13px;background:#fff;
  vertical-align:-2px;margin-left:2px;animation:u2blink .9s step-end infinite;
}
@keyframes u2blink{0%,100%{opacity:1}50%{opacity:0}}

/* 主行动按钮 */
.u2-go{
  width:100%;padding:11px;border:0;border-radius:11px;cursor:pointer;
  background:linear-gradient(135deg,var(--u2-ac),var(--u2-ac2));
  color:#fff;font-size:13.5px;font-weight:700;font-family:inherit;
  box-shadow:0 6px 20px rgba(255,123,172,.32);transition:.15s;
}
.u2-go:hover{filter:brightness(1.06);transform:translateY(-1px)}
.u2-go:disabled{opacity:.5;cursor:default;transform:none}
.u2-go.ghost{
  background:#fff;color:var(--u2-txt);border:1px solid var(--u2-line2);box-shadow:none;
}
.u2-go.ghost:hover{border-color:var(--u2-ac);color:var(--u2-ac)}

/* 右栏消息预览 */
.u2-rmsgs{
  flex:1;overflow-y:auto;padding:4px 2px 8px;min-height:0;
  display:flex;flex-direction:column;gap:8px;
}
.u2-m{
  max-width:88%;padding:8px 11px;border-radius:12px;font-size:12.5px;line-height:1.6;
  word-break:break-word;
}
.u2-m.ai{align-self:flex-start;background:#fff;border:1px solid var(--u2-line)}
.u2-m.me{align-self:flex-end;background:linear-gradient(135deg,var(--u2-ac),var(--u2-ac2));color:#fff;border-color:transparent}

/* 历史 / 我的 列表项 */
.u2-hitem{
  display:flex;gap:9px;align-items:center;padding:8px;border-radius:10px;
  cursor:pointer;transition:.15s;margin-bottom:4px;
}
.u2-hitem:hover{background:rgba(255,123,172,.09)}
.u2-hitem .t{
  width:36px;height:36px;border-radius:9px;flex:none;overflow:hidden;
  background:linear-gradient(135deg,#ffe6ef,#ece2ff);display:grid;place-items:center;font-size:15px;
}
.u2-hitem .t img{width:100%;height:100%;object-fit:cover}
.u2-hitem .c{flex:1;min-width:0}
.u2-hitem .c .n{font-size:12.5px;font-weight:600;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.u2-hitem .c .d{font-size:10.5px;color:var(--u2-sub);margin-top:1px}
.u2-hitem .x{
  border:0;background:transparent;color:var(--u2-sub);cursor:pointer;
  font-size:13px;padding:3px 6px;border-radius:6px;flex:none;
}
.u2-hitem .x:hover{background:rgba(229,72,77,.12);color:#e5484d}

/* ---------- 导入弹窗 ---------- */
.u2-modal{
  position:fixed;inset:0;z-index:80;display:none;
  background:rgba(30,22,40,.42);backdrop-filter:blur(3px);
  align-items:center;justify-content:center;
}
.u2-modal.show{display:flex}
.u2-modal .box{
  width:min(560px,92vw);
  /* 固定高度：切 JSON / URL / AI 三个 tab 时框体尺寸不再跳变（用户 2026-09-17 第 1 条）。
     内容超出只在 pane 区域内滚动，不会把弹窗撑高或缩矮。 */
  height:min(660px,86vh);
  display:flex;flex-direction:column;overflow:hidden;
  background:#fff;border-radius:18px;box-shadow:0 24px 70px rgba(60,40,80,.32);
  padding:22px;
}
.u2-modal .box > .hd,
.u2-modal .box > .u2-tabs,
.u2-modal .box > .u2-log{flex:none}
.u2-modal .box > .u2-pane.on{flex:1;min-height:0;overflow-y:auto}
.u2-modal .hd{
  display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;
}
.u2-modal .hd .t{font-size:16px;font-weight:800}
.u2-modal .hd .x{
  width:28px;height:28px;border-radius:8px;border:0;background:rgba(160,130,170,.12);
  cursor:pointer;font-size:14px;color:var(--u2-sub);
}

.u2-tabs{display:flex;gap:6px;margin-bottom:16px}
.u2-tabs button{
  flex:1;padding:9px;border:1px solid var(--u2-line2);border-radius:10px;
  background:#fff;cursor:pointer;font-family:inherit;font-size:13px;color:var(--u2-sub);
  transition:.15s;
}
.u2-tabs button.on{
  background:linear-gradient(135deg,rgba(255,123,172,.14),rgba(139,108,255,.14));
  border-color:var(--u2-ac);color:var(--u2-txt);font-weight:700;
}
.u2-pane{display:none}
.u2-pane.on{display:block}

.u2-drop{
  border:2px dashed var(--u2-line2);border-radius:13px;padding:28px 18px;
  text-align:center;cursor:pointer;transition:.15s;background:#fdfafd;
}
.u2-drop:hover,.u2-drop.over{border-color:var(--u2-ac);background:rgba(255,123,172,.05)}
.u2-drop .em{font-size:30px;margin-bottom:8px}
.u2-drop .t1{font-size:13.5px;font-weight:700;margin-bottom:4px}
.u2-drop .t2{font-size:11.5px;color:var(--u2-sub)}

.u2-inp{
  width:100%;padding:10px 12px;border:1px solid var(--u2-line2);border-radius:10px;
  font-size:13px;font-family:inherit;color:var(--u2-txt);outline:0;margin-bottom:10px;
  box-sizing:border-box;
}
.u2-inp:focus{border-color:var(--u2-ac)}
.u2-inp::placeholder{color:#b9aec4}
textarea.u2-inp{min-height:110px;resize:vertical;line-height:1.6;
  font-family:ui-monospace,Consolas,monospace;font-size:12px}

.u2-note{
  font-size:11.5px;color:var(--u2-sub);line-height:1.65;
  background:#faf7fc;border-radius:9px;padding:9px 11px;margin-bottom:11px;
}
.u2-note b{color:var(--u2-txt)}

.u2-log{
  font-size:11.5px;line-height:1.7;max-height:150px;overflow-y:auto;
  background:#faf7fc;border-radius:9px;padding:10px 12px;margin-top:11px;
  font-family:ui-monospace,Consolas,monospace;display:none;
}
.u2-log.show{display:block}
.u2-log .ok{color:#2f9e5f}
.u2-log .bad{color:#e5484d}
.u2-log .dim{color:var(--u2-sub)}

/* 双按钮行（如 AI 扩写 / AI 生成） */
.u2-row{display:flex;gap:10px}
.u2-row .u2-go{flex:1;width:auto}
/* 推荐找卡站点：一律新窗口打开 */
.u2-sites{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.u2-site{
  display:flex;flex-direction:column;gap:2px;text-decoration:none;
  border:1px solid var(--u2-line2);border-radius:11px;padding:10px 12px;
  color:var(--u2-txt);background:#fff;transition:.15s;
}
.u2-site:hover{border-color:var(--u2-ac);box-shadow:var(--u2-sh);transform:translateY(-1px)}
.u2-site b{font-size:13px}
.u2-site span{font-size:11px;color:var(--u2-sub)}

/* 设置子页：折叠块（API 设置里的 文本模型/文生图/TTS）+ 搬进来的真实设置面板 */
.u2-fold{border:1px solid var(--u2-line);border-radius:12px;background:#fff;margin-bottom:9px;overflow:hidden}
.u2-fold-h{
  display:flex;align-items:center;gap:9px;width:100%;padding:11px 12px;
  border:0;background:transparent;cursor:pointer;font-family:inherit;
  font-size:13px;font-weight:700;color:var(--u2-txt);text-align:left;
}
.u2-fold-h .ic{width:20px;text-align:center;flex:none}
.u2-fold-h .ar{margin-left:auto;color:var(--u2-sub);transition:transform .18s}
.u2-fold[data-open="1"] .u2-fold-h .ar{transform:rotate(180deg)}
.u2-fold-b{display:none;padding:0 10px 10px;border-top:1px solid var(--u2-line)}
.u2-fold[data-open="1"] .u2-fold-b{display:block}
/* 搬进来的面板原由 switchCfgTab / switchTTSTab 控制 display，这里统一点亮 */
.u2-fold-b > [id^="cfgPanel"],
.u2-livehost > [id^="cfgPanel"]{display:block !important}
/* 搬运进来的旧设置卡片贴合左栏宽度 */
.u2-fold-b .card,.u2-livehost .card{margin-top:8px}
.u2-fold-b .card:first-child,.u2-livehost .card:first-child{margin-top:0}
.u2-fold-b .inp,.u2-livehost .inp,
.u2-fold-b textarea,.u2-livehost textarea{max-width:100%;box-sizing:border-box}

/* ============================ 手机端 ============================ */
/* 设计基线：SHINE v1.3.2 真机结构
   - 底部导航由 SHINE 的 5 档改为 4 档（去掉中间 Shine 品牌档）
   - 沉浸式：全屏立绘 + 对白区 + 操作行 + 「点击继续」大按钮
   - 不做：SHINE 品牌徽标、模拟手机外壳、排行榜类入口             */
.u2-phone{
  --u2-navh:56px;   /* 底部导航条高度：子页 bottom 与 pnav height 共用 */
  display:none;
  position:fixed;
  /* 手机模式＝「缩至侧边栏的位置」：与左栏手机框同一位置、同一尺寸（用户 2026-09-17 第 2 条）。
     不居中、不缩放、不可拉伸；右侧广场整体隐藏。 */
  left:var(--u2-frame-left);top:50%;transform:translateY(-50%);
  width:var(--u2-frame-w);height:var(--u2-frame-h);
  border-radius:22px;overflow:hidden;
  background:#1a1424;
  box-shadow:0 30px 90px rgba(60,40,80,.42),0 0 0 1px rgba(255,255,255,.14);
  font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Microsoft YaHei',sans-serif;
  color:#fff;z-index:50;flex-direction:column;
  /* 底栏改为绝对定位后，用 padding 给它在流内留位，避免内容被压住 */
  padding-bottom:var(--u2-navh);
}
html[data-u2-mode="phone"] .u2-phone{display:flex}
html[data-u2-mode="phone"] body{background:transparent;overflow:hidden}

/* 全屏立绘层 */
.u2-pbg{
  position:absolute;inset:0;background-size:cover;background-position:center top;
  opacity:0;transition:opacity .7s ease;
}
.u2-pbg.show{opacity:1}
.u2-pbgmask{
  position:absolute;inset:0;
  background:linear-gradient(to bottom,rgba(12,8,20,.55) 0%,rgba(12,8,20,.10) 26%,
             rgba(12,8,20,.30) 52%,rgba(12,8,20,.86) 84%,rgba(12,8,20,.94) 100%);
}
.u2-pbg0{position:absolute;inset:0;background:linear-gradient(165deg,#3a2b4d,#241a33 60%,#180f24)}
.u2-pemoji{
  position:absolute;inset:0;display:grid;place-items:center;
  font-size:96px;opacity:.16;pointer-events:none;
}

/* 顶栏 */
.u2-ptop{
  position:relative;z-index:3;display:flex;align-items:center;gap:8px;
  padding:10px 12px;flex:none;
}
.u2-pid{
  display:flex;align-items:center;gap:7px;min-width:0;cursor:pointer;
  background:rgba(0,0,0,.26);backdrop-filter:blur(8px);
  border-radius:999px;padding:4px 10px 4px 4px;max-width:56%;
}
.u2-pid .av{
  width:26px;height:26px;border-radius:50%;flex:none;overflow:hidden;
  background:linear-gradient(135deg,var(--u2-ac),var(--u2-ac2));
  display:grid;place-items:center;font-size:13px;
}
.u2-pid .av img{width:100%;height:100%;object-fit:cover}
.u2-pid .tx{min-width:0}
.u2-pid .nm{font-size:12.5px;font-weight:700;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-shadow:0 1px 4px rgba(0,0,0,.6)}
.u2-pid .sb{font-size:9.5px;opacity:.72;text-shadow:0 1px 4px rgba(0,0,0,.6)}
.u2-picons{margin-left:auto;display:flex;gap:5px;flex:none}
.u2-pic{
  width:28px;height:28px;border-radius:50%;border:0;cursor:pointer;
  background:rgba(0,0,0,.28);backdrop-filter:blur(8px);
  color:#fff;font-size:12.5px;display:grid;place-items:center;position:relative;
  transition:.15s;
}
.u2-pic:hover{background:rgba(0,0,0,.44)}
.u2-pic .badge{
  position:absolute;top:-2px;right:-2px;min-width:14px;height:14px;padding:0 3px;
  border-radius:7px;background:#ff4d6d;color:#fff;font-size:9px;line-height:14px;
  text-align:center;font-weight:700;
}

/* 中部：可点继续的大区域 */
.u2-pstage{position:relative;z-index:2;flex:1;min-height:0;cursor:pointer}

/* 对白区 */
.u2-pdialog{position:relative;z-index:3;flex:none;padding:0 14px 10px}
.u2-pvoice{
  display:flex;align-items:center;gap:7px;margin-bottom:7px;
}
.u2-pvoice .vt{
  display:flex;align-items:center;gap:6px;
  background:rgba(255,255,255,.16);backdrop-filter:blur(8px);
  border-radius:999px;padding:5px 12px 5px 9px;font-size:11.5px;
  cursor:pointer;transition:.15s;
}
.u2-pvoice .vt:hover{background:rgba(255,255,255,.26)}
.u2-pvoice .vt .pl{
  width:18px;height:18px;border-radius:50%;background:var(--u2-ac);
  display:grid;place-items:center;font-size:8px;color:#fff;
}
.u2-pline{
  font-size:13.5px;line-height:1.75;
  text-shadow:0 1px 8px rgba(0,0,0,.65);
  min-height:44px;max-height:150px;overflow-y:auto;
  position:relative;padding-right:26px;
}
.u2-pline .spk{
  position:absolute;right:0;bottom:0;
  width:22px;height:22px;border-radius:50%;border:0;cursor:pointer;
  background:rgba(255,255,255,.18);color:#fff;font-size:10px;
  display:grid;place-items:center;
}
.u2-pline .spk:hover{background:rgba(255,255,255,.32)}
.u2-pline .spk.on{background:var(--u2-ac)}

/* 操作行：继续 / 重说 / 分享 / 灵感 */
.u2-pacts{
  position:relative;z-index:3;display:flex;align-items:center;
  gap:0;padding:2px 12px 8px;flex:none;
}
.u2-pact{
  flex:1;display:flex;align-items:center;justify-content:center;gap:5px;
  background:transparent;border:0;color:rgba(255,255,255,.9);cursor:pointer;
  font-size:11.5px;padding:6px 2px;border-radius:8px;font-family:inherit;
  transition:.15s;text-shadow:0 1px 5px rgba(0,0,0,.6);
}
.u2-pact:hover{background:rgba(255,255,255,.14)}
.u2-pact:disabled{opacity:.4;cursor:default}

/* 底部 CTA：点击继续 */
.u2-pcta{
  position:relative;z-index:3;flex:none;padding:0 12px 10px;
  display:flex;align-items:center;gap:9px;
}
.u2-pbig{
  flex:1;padding:13px;border:0;border-radius:999px;cursor:pointer;
  background:rgba(255,255,255,.20);backdrop-filter:blur(10px);
  border:1px solid rgba(255,255,255,.26);
  color:#fff;font-size:14px;font-weight:700;font-family:inherit;transition:.15s;
}
.u2-pbig:hover{background:rgba(255,255,255,.30)}
.u2-pbig:disabled{opacity:.45;cursor:default}
/* 小说 / 对话 模式切换 */
.u2-pmode{
  flex:none;display:flex;flex-direction:column;gap:1px;
  background:rgba(0,0,0,.26);backdrop-filter:blur(8px);
  border-radius:11px;padding:5px 8px;cursor:pointer;border:0;
}
.u2-pmode span{font-size:9.5px;color:rgba(255,255,255,.55);line-height:1.35;transition:.15s}
.u2-pmode span.on{color:#fff;font-weight:700}

/* 消息输入框（自由对话时用，SHINE 无此件——SOULBOOK 保留） */
.u2-pin{
  position:relative;z-index:3;flex:none;display:flex;gap:7px;
  padding:8px 12px 10px;
}
.u2-pin textarea{
  flex:1;min-height:38px;max-height:96px;resize:none;
  border-radius:19px;border:1px solid rgba(255,255,255,.22);
  background:rgba(255,255,255,.14);backdrop-filter:blur(8px);
  color:#fff;font-size:13px;padding:9px 13px;outline:0;font-family:inherit;line-height:1.4;
}
.u2-pin textarea::placeholder{color:rgba(255,255,255,.5)}
.u2-pin .send{
  width:38px;height:38px;border-radius:50%;border:0;cursor:pointer;flex:none;
  background:linear-gradient(135deg,var(--u2-ac),var(--u2-ac2));
  color:#fff;font-size:15px;display:grid;place-items:center;
}

/* ============================================================
   对话态（data-chat="1"）
   用户一开始输入，即从「POV 演绎态」自动切过来：
   · 隐藏「点击继续」CTA 与单行演绎文本
   · 对白区转为气泡流，输入框提亮
   SHINE 首页那个输入框视觉上很淡（像装饰），但确实可输入——下面用
   :not([data-chat="1"]) 弱化来还原这个观感。
   ============================================================ */
.u2-phone:not([data-chat="1"]) .u2-pin textarea{
  background:rgba(255,255,255,.07);border-color:rgba(255,255,255,.10);
}
.u2-phone:not([data-chat="1"]) .u2-pin .send{opacity:.34}

.u2-phone[data-chat="1"] .u2-pcta{display:none}
.u2-phone[data-chat="1"] .u2-pline{display:none}
.u2-phone[data-chat="1"] .u2-pvoice{display:none !important}
.u2-phone[data-chat="1"] .u2-pacts{opacity:.5}
.u2-phone[data-chat="1"] .u2-pin textarea{
  background:rgba(255,255,255,.24);border-color:rgba(255,255,255,.46);
}
.u2-phone[data-chat="1"] .u2-pin .send{opacity:1}

/* 对话气泡流 */
.u2-thread{
  display:none;max-height:196px;overflow-y:auto;
  padding:2px 0 4px;scroll-behavior:smooth;
}
.u2-thread::-webkit-scrollbar{width:3px}
.u2-thread::-webkit-scrollbar-thumb{background:rgba(255,255,255,.22);border-radius:3px}
.u2-tb{
  max-width:83%;margin:0 0 8px;padding:8px 11px;border-radius:13px;
  font-size:12.5px;line-height:1.65;word-break:break-word;position:relative;
  animation:u2tbin .22s ease both;
}
@keyframes u2tbin{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.u2-tb.ai{
  background:rgba(255,255,255,.16);backdrop-filter:blur(9px);
  border:1px solid rgba(255,255,255,.16);border-bottom-left-radius:4px;
  color:#fff;text-shadow:0 1px 6px rgba(0,0,0,.5);padding-right:26px;
}
.u2-tb.me{
  margin-left:auto;
  background:linear-gradient(135deg,var(--u2-ac),var(--u2-ac2));
  color:#fff;border-bottom-right-radius:4px;
}
.u2-tb.wait{opacity:.55}
.u2-tb .spk{
  position:absolute;right:5px;bottom:5px;width:19px;height:19px;border-radius:50%;
  border:0;cursor:pointer;background:rgba(255,255,255,.20);
  color:#fff;font-size:9px;display:grid;place-items:center;
}
.u2-tb .spk:hover{background:rgba(255,255,255,.36)}

/* ============================================================
   节拍演出（beats）
   后端 beats.go 发 SSE {type:'beat',action,...} → 手机端：
   ① 气泡顶部挂动作行  ② 立绘按动作播一次动效
   动作→动效映射见 ui2.js 的 BEAT_FX（hurt/angry/shake→shake，fall/cry/sigh→drop，
   approach→zoom，smile/blush→nod，look→look，leave→leave）
   ============================================================ */
.u2-tbeats{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:5px}
.u2-tbi{
  display:inline-flex;align-items:center;gap:3px;
  padding:1px 6px;border-radius:8px;font-size:10px;line-height:1.6;
  background:rgba(255,255,255,.20);border:1px solid rgba(255,255,255,.18);
  color:#fff;white-space:nowrap;
}
.u2-phone[data-fx="shake"] .u2-pbg{animation:u2fxShake .5s ease}
.u2-phone[data-fx="drop"]   .u2-pbg{animation:u2fxDrop .6s ease}
.u2-phone[data-fx="zoom"]   .u2-pbg{animation:u2fxZoom .7s ease}
.u2-phone[data-fx="nod"]    .u2-pbg{animation:u2fxNod .6s ease}
.u2-phone[data-fx="look"]   .u2-pbg{animation:u2fxLook .7s ease}
.u2-phone[data-fx="leave"]  .u2-pbg{animation:u2fxLeave .7s ease}
@keyframes u2fxShake{
  0%,100%{transform:translateX(0)}
  20%{transform:translateX(-7px)} 40%{transform:translateX(6px)}
  60%{transform:translateX(-4px)} 80%{transform:translateX(3px)}
}
@keyframes u2fxDrop{0%,100%{transform:translateY(0) scale(1)}45%{transform:translateY(10px) scale(.97)}}
@keyframes u2fxZoom{0%,100%{transform:scale(1)}50%{transform:scale(1.06)}}
@keyframes u2fxNod{0%,100%{transform:translateY(0)}40%{transform:translateY(-5px)}}
@keyframes u2fxLook{0%,100%{transform:translateX(0)}50%{transform:translateX(-9px)}}
@keyframes u2fxLeave{0%,100%{transform:scale(1) translateY(0)}50%{transform:scale(.94) translateY(6px)}}

/* ============================================================
   冗余功能开关
   已实现但 SHINE 侧属于「模拟手机 / 社区 / 商业」类、SOULBOOK 暂无后端的功能，
   用 data-extra 标记，代码保留不删，可整体隐藏或高亮出框。
   用法：document.documentElement.setAttribute('data-u2-extra','0'|'mark')
   ============================================================ */
html[data-u2-extra="0"] [data-extra]{display:none !important}
html[data-u2-extra="mark"] [data-extra]{
  outline:1px dashed rgba(255,176,32,.85);outline-offset:2px;border-radius:6px;
}
html[data-u2-extra="mark"] [data-extra]::after{
  content:attr(data-extra);
  position:absolute;left:0;bottom:100%;margin-bottom:3px;
  font-size:9px;line-height:1.3;padding:1px 4px;border-radius:3px;
  background:rgba(255,176,32,.92);color:#22160a;white-space:nowrap;
  pointer-events:none;z-index:99;
}
html[data-u2-extra="mark"] .u2-psub[data-extra]{position:relative}

/* 底部导航：4 档（已去掉 SHINE 中间品牌档）
   绝对定位贴底 + z-index:20（高于子页 .u2-psub 的 6）→
   切到探索 / 消息 / 我的 任意页，底栏都常驻可见可点，随时切回首页。 */
.u2-pnav{
  position:absolute;left:0;right:0;bottom:0;
  z-index:20;display:flex;
  padding:4px 4px 6px;height:var(--u2-navh);box-sizing:border-box;
  background:rgba(12,8,18,.92);backdrop-filter:blur(12px);
  border-top:1px solid rgba(255,255,255,.12);
}
.u2-pnav button{
  flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;
  background:transparent;border:0;cursor:pointer;padding:5px 0;
  color:rgba(255,255,255,.5);font-size:9.5px;font-family:inherit;transition:.15s;
  position:relative;
}
.u2-pnav button .ic{font-size:17px;line-height:1}
.u2-pnav button.on{color:var(--u2-ac)}
.u2-pnav button .dot{
  position:absolute;top:2px;right:50%;margin-right:-16px;
  min-width:14px;height:14px;padding:0 3px;border-radius:7px;
  background:#ff4d6d;color:#fff;font-size:9px;line-height:14px;font-weight:700;
}

/* 手机端内部子页（探索 / 消息 / 我的） */
/* 子页：底部留出导航条高度，底栏常驻可见可切（用户要求：各模块都要有底栏，方便切回去） */
.u2-psub{
  position:absolute;left:0;right:0;top:0;bottom:var(--u2-navh);
  z-index:6;background:#fbf8fd;color:var(--u2-txt);
  display:none;flex-direction:column;
}
.u2-psub.show{display:flex}
.u2-psub .sh{
  display:flex;align-items:center;gap:8px;padding:11px 13px;flex:none;
  border-bottom:1px solid var(--u2-line);background:#fff;
}
.u2-psub .sh .t{font-size:14px;font-weight:800}
.u2-psub .sh .x{
  margin-left:auto;width:26px;height:26px;border-radius:7px;border:0;
  background:rgba(160,130,170,.12);cursor:pointer;color:var(--u2-sub);font-size:13px;
}
.u2-psub .sb{flex:1;overflow-y:auto;padding:12px;min-height:0}

/* ============================================================
   探索页 = PC 端「官方精选」推荐页形态
   带 搜索 / 导入 / 创建角色 / 主题筛选 / 标签筛选 / 瀑布流网格
   （用户 2026-09-17：参考 PC 推荐页；去掉「我的收藏」档，创建角色放这里）
   ============================================================ */
.u2-exbar{display:flex;gap:6px;margin-bottom:9px}
.u2-exbar input{
  flex:1;min-width:0;height:34px;border-radius:17px;border:1px solid var(--u2-line);
  background:#fff;padding:0 12px;font-size:12px;color:var(--u2-txt);
  outline:0;font-family:inherit;
}
.u2-exbar input:focus{border-color:var(--u2-ac)}
.u2-exbar button{
  height:34px;padding:0 11px;border-radius:17px;border:0;cursor:pointer;
  font-size:11.5px;font-family:inherit;font-weight:600;color:#fff;
  background:linear-gradient(135deg,var(--u2-ac),var(--u2-ac2));white-space:nowrap;
}
.u2-exbar button.ghost{background:#fff;color:var(--u2-sub);border:1px solid var(--u2-line)}
.u2-exchips{display:flex;gap:5px;overflow-x:auto;padding-bottom:7px;margin-bottom:4px}
.u2-exchips::-webkit-scrollbar{height:0}
.u2-exchips .u2-chip{flex:none;white-space:nowrap}
.u2-exmeta{font-size:11px;color:var(--u2-sub);margin:2px 0 8px}
.u2-exgrid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.u2-excard{
  background:#fff;border-radius:11px;overflow:hidden;box-shadow:var(--u2-sh);
  cursor:pointer;position:relative;transition:.15s;
}
.u2-excard:hover{box-shadow:var(--u2-sh2);transform:translateY(-1px)}
.u2-excard .pic{
  aspect-ratio:3/4;background:linear-gradient(160deg,#ffe6ef,#ece2ff);
  display:grid;place-items:center;overflow:hidden;
}
.u2-excard .pic img{width:100%;height:100%;object-fit:cover}
.u2-excard .b{padding:7px 8px 9px}
.u2-excard .n{
  font-size:12px;font-weight:700;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.u2-excard .d{
  font-size:10px;color:var(--u2-sub);line-height:1.5;margin-top:3px;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
.u2-excard .rt{
  position:absolute;left:6px;top:6px;padding:1px 6px;border-radius:8px;
  background:rgba(0,0,0,.5);color:#ffd76a;font-size:10px;font-weight:700;
}

/* 探索页（旧三档分段，保留备用） */
.u2-pseg{display:flex;gap:4px;margin-bottom:11px}
.u2-pseg button{
  flex:1;padding:7px 4px;border:0;background:transparent;cursor:pointer;
  font-size:12px;color:var(--u2-sub);font-family:inherit;
  border-bottom:2px solid transparent;transition:.15s;
}
.u2-pseg button.on{color:var(--u2-txt);font-weight:700;border-bottom-color:var(--u2-ac)}
.u2-pcard{
  display:flex;gap:10px;padding:10px;border-radius:12px;background:#fff;
  box-shadow:var(--u2-sh);cursor:pointer;margin-bottom:9px;border:2px solid transparent;
}
.u2-pcard:hover{border-color:var(--u2-ac)}
.u2-pcard .pic{
  width:64px;height:85px;border-radius:9px;overflow:hidden;flex:none;
  background:linear-gradient(160deg,#ffe6ef,#ece2ff);display:grid;place-items:center;
}
.u2-pcard .pic img{width:100%;height:100%;object-fit:cover}
.u2-pcard .c{flex:1;min-width:0}
.u2-pcard .c .n{font-size:13px;font-weight:700;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.u2-pcard .c .g{font-size:10.5px;color:var(--u2-ac2);margin:3px 0}
.u2-pcard .c .d{font-size:11px;color:var(--u2-sub);line-height:1.55;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

/* 消息页 */
.u2-prow{
  display:flex;align-items:center;gap:9px;padding:11px 12px;border-radius:11px;
  background:#fff;box-shadow:var(--u2-sh);cursor:pointer;margin-bottom:8px;
}
.u2-prow:hover{box-shadow:var(--u2-sh2)}
.u2-prow .ic{
  width:34px;height:34px;border-radius:10px;flex:none;display:grid;place-items:center;
  font-size:16px;color:#fff;
}
.u2-prow .c{flex:1;min-width:0}
.u2-prow .c .n{font-size:12.5px;font-weight:600}
.u2-prow .bd{
  min-width:17px;height:17px;padding:0 4px;border-radius:9px;background:#ff4d6d;
  color:#fff;font-size:10px;line-height:17px;text-align:center;font-weight:700;flex:none;
}
/* 通用功能页（无后端 / 规划中入口的统一落点，保证有去有回） */
.u2-stub{text-align:center;padding:38px 16px}
.u2-stub .ic{font-size:44px;margin-bottom:12px}
.u2-stub .h{font-size:15px;font-weight:800;margin-bottom:8px}
.u2-stub .p{font-size:12px;color:var(--u2-sub);line-height:1.75;margin-bottom:20px;white-space:pre-line}
.u2-stubgo{
  padding:10px 22px;border-radius:999px;border:0;cursor:pointer;font-family:inherit;
  font-size:13px;font-weight:700;color:#fff;
  background:linear-gradient(135deg,var(--u2-ac),var(--u2-ac2));
}

.u2-pconv{
  display:flex;gap:9px;padding:10px;border-radius:11px;background:#fff;
  box-shadow:var(--u2-sh);cursor:pointer;margin-bottom:8px;align-items:center;
}
.u2-pconv .av{
  width:42px;height:42px;border-radius:11px;flex:none;overflow:hidden;
  background:linear-gradient(135deg,#ffe6ef,#ece2ff);display:grid;place-items:center;
}
.u2-pconv .av img{width:100%;height:100%;object-fit:cover}
.u2-pconv .c{flex:1;min-width:0}
.u2-pconv .c .r1{display:flex;align-items:baseline;gap:6px}
.u2-pconv .c .n{font-size:12.5px;font-weight:600;flex:1;min-width:0;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.u2-pconv .c .tm{font-size:10px;color:var(--u2-sub);flex:none}
.u2-pconv .c .pv{font-size:11px;color:var(--u2-sub);margin-top:2px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.u2-pconv .ub{
  min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:#28c76f;
  color:#fff;font-size:9.5px;line-height:16px;text-align:center;font-weight:700;flex:none;
}

/* 我的页 */
.u2-pmine-hero{
  position:relative;padding:16px 14px 40px;
  background:linear-gradient(135deg,#ffd9e6,#e5dcff);
}
.u2-pmine-hero .tip{font-size:10.5px;color:rgba(40,30,55,.5);text-align:right}
.u2-pmine-hero .me{display:flex;align-items:center;gap:10px;margin-top:6px}
.u2-pmine-hero .av{
  width:58px;height:58px;border-radius:50%;flex:none;overflow:hidden;
  border:3px solid #fff;box-shadow:0 4px 14px rgba(90,60,110,.22);
  background:#fff;display:grid;place-items:center;font-size:26px;
}
.u2-pmine-hero .av img{width:100%;height:100%;object-fit:cover}
.u2-pmine-hero .nm{font-size:15px;font-weight:800;color:#2b2438}
.u2-pmine-hero .id{font-size:10.5px;color:rgba(43,36,56,.6);margin-top:2px}
.u2-pvip{
  margin:0 12px;padding:12px 14px;border-radius:13px;
  background:linear-gradient(135deg,#3a2b4d,#5a4470);color:#fff;
  display:flex;align-items:center;gap:10px;margin-top:-26px;position:relative;
  box-shadow:0 8px 24px rgba(60,40,80,.28);
}
.u2-pvip .c{flex:1;min-width:0}
.u2-pvip .t1{font-size:13px;font-weight:700}
.u2-pvip .t2{font-size:10.5px;opacity:.75;margin-top:2px}
.u2-pvip .b{
  padding:6px 13px;border-radius:999px;border:0;cursor:pointer;flex:none;
  background:linear-gradient(135deg,#ffd88a,#ffb45e);color:#5a3d10;
  font-size:11.5px;font-weight:700;font-family:inherit;
}
.u2-pstats{display:flex;padding:14px 6px 6px}
.u2-pstat{flex:1;text-align:center;cursor:pointer}
.u2-pstat .v{font-size:15px;font-weight:800}
.u2-pstat .l{font-size:10px;color:var(--u2-sub);margin-top:2px}
.u2-pgrid4{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;padding:12px}
.u2-pg4{
  display:flex;flex-direction:column;align-items:center;gap:6px;padding:12px 4px;
  background:#fff;border-radius:12px;box-shadow:var(--u2-sh);cursor:pointer;transition:.15s;
}
.u2-pg4:hover{box-shadow:var(--u2-sh2);transform:translateY(-2px)}
.u2-pg4 .ic{font-size:19px}
.u2-pg4 .l{font-size:10.5px;color:var(--u2-sub)}

/* 手机端设置面板 */
.u2-psheet{
  /* z-index 高于底栏(20)：设置抽屉升起时盖住底栏，避免底栏浮在抽屉上 */
  position:absolute;inset:0;z-index:30;background:rgba(20,14,28,.42);
  display:none;align-items:flex-end;
}
.u2-psheet.show{display:flex}
.u2-psheet .panel{
  width:100%;max-height:82%;background:#fff;border-radius:18px 18px 0 0;
  display:flex;flex-direction:column;overflow:hidden;
  animation:u2up .22s ease;
}
@keyframes u2up{from{transform:translateY(100%)}to{transform:translateY(0)}}
.u2-psheet .ph{
  display:flex;align-items:center;padding:13px 15px;flex:none;
  border-bottom:1px solid var(--u2-line);
}
.u2-psheet .ph .t{font-size:14px;font-weight:800;color:var(--u2-txt)}
.u2-psheet .ph .x{
  margin-left:auto;width:26px;height:26px;border-radius:7px;border:0;
  background:rgba(160,130,170,.12);cursor:pointer;color:var(--u2-sub);font-size:13px;
}
.u2-psheet .pb{flex:1;overflow-y:auto;padding:11px 13px;min-height:0}

/* 桌面登录层 */
.u2-login{
  position:fixed;inset:0;z-index:90;display:none;
  align-items:center;justify-content:center;
  background:
    radial-gradient(900px 520px at 15% -10%, #ffe9f1 0%, transparent 60%),
    linear-gradient(165deg,#fdf7f5,#f2ecfa);
}
.u2-login.show{display:flex}
.u2-login .box{
  width:min(400px,92vw);background:#fff;border-radius:20px;padding:26px;
  box-shadow:0 24px 70px rgba(150,110,170,.26);text-align:center;
}
.u2-login .logo{
  width:52px;height:52px;margin:0 auto 12px;border-radius:15px;display:grid;place-items:center;
  background:linear-gradient(135deg,var(--u2-ac),var(--u2-ac2));color:#fff;font-size:24px;
}
.u2-login .appname{font-size:19px;font-weight:800;margin-bottom:5px}
.u2-login .sub{font-size:11.5px;color:var(--u2-sub);line-height:1.6;margin-bottom:16px}
.u2-login .inp{
  width:100%;padding:10px 13px;border:1px solid var(--u2-line2);border-radius:10px;
  font-size:13px;font-family:inherit;outline:0;margin-bottom:10px;box-sizing:border-box;
}
.u2-login .inp:focus{border-color:var(--u2-ac)}
.u2-login .chk{
  display:flex;gap:8px;align-items:flex-start;text-align:left;
  font-size:11px;color:var(--u2-sub);line-height:1.55;margin-bottom:8px;cursor:pointer;
}
.u2-login .chk input{margin-top:2px;flex:none}
.u2-login .go{
  width:100%;padding:12px;border:0;border-radius:11px;cursor:pointer;margin-top:8px;
  background:linear-gradient(135deg,var(--u2-ac),var(--u2-ac2));color:#fff;
  font-size:14px;font-weight:700;font-family:inherit;
}

/* Toast */
.u2-toast{
  position:fixed;left:50%;bottom:38px;transform:translateX(-50%) translateY(14px);
  background:rgba(28,20,38,.92);color:#fff;padding:9px 18px;border-radius:999px;
  font-size:12.5px;z-index:200;opacity:0;pointer-events:none;transition:.24s;
  font-family:-apple-system,'PingFang SC',sans-serif;
}
.u2-toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* 小屏：手机窗铺满 */
@media (max-width:460px){
  .u2-phone{width:100vw;height:100vh;border-radius:0;left:0;top:0;transform:none}
}

/* ══════════════════════════════════════════════════════════════════════════
   2026 主题层 ·「液态玻璃 + 柔和马卡龙」
   —— 用户 2026-09-18：受众为女性与年轻人；旧观感判定不合格（emoji 当图标 /
   1px 灰描边 + 纯白卡片 + 极浅阴影 / 字号层级差小 / 圆角间距不成体系 / 无微交互）。
   本层叠在既有组件规则之后，同选择器后写者胜出 → 不改结构、只换皮。
   参考：Liquid Glass（苹果 iOS 26）、Bento 网格、柔和马卡龙、克制微交互。
   ══════════════════════════════════════════════════════════════════════════ */

/* ── 0. 字体与渲染 ─────────────────────────────────────────────────────── */
.u2-desktop,.u2-phone,.u2-modal,.u2-login{
  font-family:-apple-system,BlinkMacSystemFont,'SF Pro SC','PingFang SC','HarmonyOS Sans SC','Microsoft YaHei',sans-serif;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}

/* ── 1. 背景：柔和极光（马卡龙三色光斑） ────────────────────────────────── */
.u2-desktop{
  background:
    radial-gradient(1200px 720px at 6% -14%, rgba(255,143,177,.40) 0%, transparent 60%),
    radial-gradient(1020px 640px at 102% -4%, rgba(169,139,251,.38) 0%, transparent 58%),
    radial-gradient(900px 720px at 48% 122%, rgba(127,216,196,.24) 0%, transparent 62%),
    linear-gradient(168deg,#FFF8FC 0%,#F7F2FE 46%,#F1F7FB 100%);
}

/* ── 2. 顶栏：玻璃条 + 品牌胶囊 ─────────────────────────────────────────── */
.u2-top{
  padding:14px var(--u2-s6);gap:var(--u2-s4);
  background:var(--u2-glass3);
  backdrop-filter:var(--u2-blur);
  border-bottom:1px solid var(--u2-line);
  box-shadow:var(--u2-hl);
}
.u2-brand{font-size:17px;letter-spacing:.2px}
.u2-brand .mark{
  width:30px;height:30px;border-radius:11px;
  background:var(--u2-grad);
  box-shadow:var(--u2-sh-ac),var(--u2-hl);
}
.u2-brand .mark svg{width:16px;height:16px;color:#fff}

/* ── 3. 搜索：更高的玻璃胶囊 ───────────────────────────────────────────── */
.u2-search{
  height:46px;max-width:560px;padding:0 var(--u2-s2) 0 var(--u2-s4);
  background:var(--u2-glass2);
  backdrop-filter:var(--u2-blur-sm);
  border:1px solid var(--u2-line);
  box-shadow:var(--u2-sh),var(--u2-hl);
}
.u2-search input{font-size:14px}
.u2-search .ico{font-size:0;display:flex;align-items:center;opacity:.55}
.u2-search .ico svg{width:16px;height:16px;color:var(--u2-sub)}

/* ── 4. 顶栏导航：分段玻璃控件 ─────────────────────────────────────────── */
.u2-nav{
  gap:2px;padding:4px;border-radius:var(--u2-r-pill);
  background:var(--u2-glass3);border:1px solid var(--u2-line);
  backdrop-filter:var(--u2-blur-sm);box-shadow:var(--u2-hl);
}
.u2-nav button{padding:8px 14px;border-radius:var(--u2-r-pill);font-size:13.5px;font-weight:600}
.u2-nav button:hover{background:rgba(255,255,255,.7);transform:none}
.u2-nav button.on{background:var(--u2-grad);color:#fff;box-shadow:var(--u2-sh-ac),var(--u2-hl)}
.u2-nav .sep{display:none}
.u2-acc{
  width:38px;height:38px;border-radius:var(--u2-r-pill);
  background:var(--u2-glass2);border:1px solid var(--u2-line);
  backdrop-filter:var(--u2-blur-sm);box-shadow:var(--u2-hl);
  display:grid;place-items:center;cursor:pointer;
}
.u2-acc svg{width:17px;height:17px;color:var(--u2-txt)}

/* ── 5. 筛选条：玻璃带 + 胶囊 chip ─────────────────────────────────────── */
.u2-filters{
  padding:12px var(--u2-s6);gap:var(--u2-s3);
  background:var(--u2-glass3);
  backdrop-filter:var(--u2-blur-sm);
  border-bottom:1px solid var(--u2-line);
}
.u2-flabel{font-size:11.5px;font-weight:800;color:var(--u2-sub2);letter-spacing:.5px;text-transform:none}
.u2-flabel:not(:first-child){margin-left:var(--u2-s2)}
.u2-chip{
  padding:7px 14px;border-radius:var(--u2-r-pill);
  background:var(--u2-glass2);border:1px solid var(--u2-line);
  color:var(--u2-txt);font-size:12.5px;font-weight:600;
  box-shadow:0 1px 3px rgba(120,90,140,.05),var(--u2-hl);
  backdrop-filter:var(--u2-blur-sm);
}
.u2-chip:hover{border-color:rgba(255,143,177,.6);color:var(--u2-ac);transform:translateY(-1px)}
.u2-chip.on{
  background:var(--u2-grad);color:#fff;border-color:transparent;
  box-shadow:var(--u2-sh-ac),var(--u2-hl);
}
.u2-cn{
  background:rgba(140,110,160,.13);color:var(--u2-sub);
  border-radius:var(--u2-r-pill);padding:0 6px;font-size:10px;font-weight:800;
}
.u2-chip.on .u2-cn{background:rgba(255,255,255,.3);color:#fff}
.u2-fmore{
  border:1px solid var(--u2-line);background:var(--u2-glass2);
  color:var(--u2-sub);border-radius:var(--u2-r-pill);font-weight:600;
  backdrop-filter:var(--u2-blur-sm);
}
.u2-fmore:hover{border-color:rgba(169,139,251,.6);color:var(--u2-ac2)}

/* ── 6. 网格：Bento 化（自适应列宽 + 更大留白） ────────────────────────── */
.u2-grid{
  padding:var(--u2-s4) var(--u2-s6) var(--u2-s7);
  gap:var(--u2-s5);
  grid-template-columns:repeat(auto-fill,minmax(212px,1fr));
}
.u2-gridhead{padding:var(--u2-s4) var(--u2-s6) var(--u2-s2)}
.u2-gridhead h2{font-size:17px;font-weight:800;letter-spacing:.2px}
.u2-gridhead .cnt{font-size:12px;font-weight:600;color:var(--u2-sub)}

/* ── 7. 卡片：玻璃卡 + 柔和抬升 ───────────────────────────────────────── */
.u2-card{
  border-radius:var(--u2-r);
  background:var(--u2-glass2);
  backdrop-filter:var(--u2-blur-sm);
  border:1px solid var(--u2-line);
  box-shadow:var(--u2-sh),var(--u2-hl);
}
.u2-card:hover{transform:translateY(-5px) scale(1.012);box-shadow:var(--u2-sh2),var(--u2-hl)}
.u2-card.sel{
  border-color:rgba(255,143,177,.85);
  box-shadow:0 0 0 3px rgba(255,143,177,.20),var(--u2-sh2);
}
.u2-card .pic{background:linear-gradient(160deg,#FFE9F2,#EDE4FF)}
.u2-card .meta{padding:12px 14px 14px}
.u2-card .nm{font-size:14px;font-weight:700;letter-spacing:.1px}
.u2-card .ds{font-size:12px;line-height:1.6;margin-top:5px;color:var(--u2-sub)}
.u2-card .tag{
  font-size:10.5px;font-weight:700;color:var(--u2-ac2);
  background:rgba(169,139,251,.12);padding:3px 9px;border-radius:var(--u2-r-pill);
}
.u2-card .del{
  width:26px;height:26px;top:9px;right:9px;font-size:12px;
  background:rgba(24,16,34,.42);backdrop-filter:blur(8px);
}
.u2-card .del:hover{background:#FF6B81}

/* ── 8. 左栏＝手机框：玻璃 bezel（外圈更厚、阴影更深） ─────────────────── */
.u2-rail{
  border-radius:34px;
  background:var(--u2-glass2);
  backdrop-filter:var(--u2-blur);
  border:1px solid var(--u2-line);
  box-shadow:var(--u2-sh3),var(--u2-hl);
}
.u2-rhead{padding:14px 14px 12px;border-bottom:1px solid var(--u2-line)}
.u2-rhead .av{
  width:38px;height:38px;border-radius:13px;font-size:16px;
  background:var(--u2-grad);color:#fff;box-shadow:var(--u2-sh-ac),var(--u2-hl);
  display:grid;place-items:center;overflow:hidden;
}
.u2-rhead .av img{width:100%;height:100%;object-fit:cover}
.u2-rhead .n{font-size:14.5px;font-weight:800}
.u2-rhead .s{font-size:11px;color:var(--u2-sub);margin-top:1px}
.u2-rbody{padding:var(--u2-s3)}
.u2-rfoot{padding:var(--u2-s3);border-top:1px solid var(--u2-line)}

/* ── 9. 设置项 / 历史项 / 列表项：玻璃行 ───────────────────────────────── */
.u2-ditem{
  padding:13px 14px;border-radius:var(--u2-r-sm);
  background:rgba(255,255,255,.55);
  border:1px solid rgba(255,255,255,.72);
  box-shadow:0 1px 3px rgba(120,90,140,.05);
  font-size:13.5px;font-weight:600;margin-bottom:9px;
}
.u2-ditem:hover{
  border-color:rgba(255,143,177,.55);background:rgba(255,255,255,.82);
  transform:translateX(2px);box-shadow:var(--u2-sh);
}
.u2-ditem .ic{display:grid;place-items:center}
.u2-ditem .ic svg{width:17px;height:17px;color:var(--u2-ac2)}
.u2-ditem .ar{color:var(--u2-sub2);font-weight:700}
.u2-hitem{
  border-radius:var(--u2-r-sm);background:rgba(255,255,255,.55);
  border:1px solid rgba(255,255,255,.72);transition:.18s;
}
.u2-hitem:hover{border-color:rgba(255,143,177,.5);background:rgba(255,255,255,.82);transform:translateX(2px)}

/* ── 10. 按钮 ─────────────────────────────────────────────────────────── */
.u2-go{
  padding:13px;border-radius:var(--u2-r-sm);font-size:14px;font-weight:800;
  background:var(--u2-grad);box-shadow:var(--u2-sh-ac),var(--u2-hl);
}
.u2-go.ghost{
  background:rgba(255,255,255,.62);border:1px solid var(--u2-line2);
  color:var(--u2-txt);box-shadow:var(--u2-hl);font-weight:700;
}
.u2-go.ghost:hover{border-color:var(--u2-ac);color:var(--u2-ac)}

/* ── 11. 折叠块（API 设置） ────────────────────────────────────────────── */
.u2-fold{
  border-radius:var(--u2-r-sm);
  background:rgba(255,255,255,.55);
  border:1px solid rgba(255,255,255,.72);
  box-shadow:0 1px 3px rgba(120,90,140,.05);
  margin-bottom:10px;
}
.u2-fold-h{font-size:13.5px;padding:13px 14px}
.u2-fold[data-open="1"] .u2-fold-h{background:rgba(255,255,255,.5)}
.u2-fold-b{border-top:1px solid var(--u2-line2)}

/* ── 12. 弹窗 / 登录层：玻璃卡 ─────────────────────────────────────────── */
.u2-modal{background:rgba(42,28,56,.32);backdrop-filter:blur(10px) saturate(1.2)}
.u2-modal .box{
  border-radius:var(--u2-r-lg);
  background:var(--u2-glass2);backdrop-filter:var(--u2-blur);
  border:1px solid var(--u2-line);
  box-shadow:var(--u2-sh3),var(--u2-hl);
}
.u2-tabs button{
  border-radius:var(--u2-r-pill);border:1px solid var(--u2-line);
  background:rgba(255,255,255,.55);font-weight:600;
}
.u2-tabs button.on{
  background:var(--u2-grad);color:#fff;border-color:transparent;
  box-shadow:var(--u2-sh-ac),var(--u2-hl);
}
.u2-inp{
  border-radius:var(--u2-r-sm);border:1px solid var(--u2-line2);
  background:rgba(255,255,255,.78);
}
.u2-inp:focus{border-color:var(--u2-ac);box-shadow:0 0 0 3px rgba(255,143,177,.16)}
.u2-drop{border-radius:var(--u2-r);background:rgba(255,255,255,.5)}
.u2-site{border-radius:var(--u2-r-sm);background:rgba(255,255,255,.6);border:1px solid var(--u2-line)}
.u2-site:hover{border-color:var(--u2-ac);box-shadow:var(--u2-sh)}

/* ── 13. 手机端（左栏内＝手机版页面）：同套玻璃 ─────────────────────────── */
.u2-phone{background:linear-gradient(168deg,#2A1F3C,#1A1226 62%,#140D1E)}
.u2-pnav{
  background:rgba(18,11,28,.72);
  backdrop-filter:var(--u2-blur);
  border-top:1px solid rgba(255,255,255,.10);
}
.u2-psub .sh{
  background:var(--u2-glass2);backdrop-filter:var(--u2-blur-sm);
  border-bottom:1px solid var(--u2-line);
}
.u2-psub .sh .x{border-radius:var(--u2-r-pill)}
.u2-povfull .send{border-radius:var(--u2-r-sm);box-shadow:var(--u2-sh-ac),var(--u2-hl)}

/* ── 14. 排版层级（旧版字号层级差过小） ────────────────────────────────── */
.u2-card .nm,.u2-ditem .lb,.u2-rhead .n{letter-spacing:.1px}
.u2-dhint{font-size:12px;line-height:1.7;color:var(--u2-sub)}

/* ── 15. 微交互：按压回弹 + 柔和淡入 + 焦点环 ──────────────────────────── */
.u2-go,.u2-chip,.u2-ditem,.u2-ibtn,.u2-nav button,.u2-card,.u2-site,.u2-hitem,
.u2-fold-h,.u2-acc,.u2-tabs button,.u2-search{
  transition:transform .18s cubic-bezier(.22,1,.36,1),box-shadow .22s ease,
             background-color .22s ease,border-color .22s ease,color .22s ease;
}
.u2-go:active,.u2-chip:active,.u2-ditem:active,.u2-nav button:active,
.u2-site:active,.u2-acc:active,.u2-tabs button:active{transform:scale(.97)}
.u2-card:active{transform:translateY(-2px) scale(.994)}
.u2-fmore:active{transform:scale(.98)}
:focus-visible{outline:2px solid rgba(255,143,177,.8);outline-offset:2px}

@keyframes u2fade{from{opacity:0}to{opacity:1}}
.u2-card,.u2-ditem,.u2-hitem,.u2-excard{animation:u2fade .3s ease both}

/* 无障碍：尊重「减少动态效果」系统设置 */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none !important;transition:none !important}
}
