
  * { margin:0; padding:0; box-sizing:border-box; -webkit-tap-highlight-color:transparent; }
  :root{
  /* ===== 伍空 Life OS 字体层级 V2.0（2026-10-04 · 开发设计规则 §19.1） ===== */
  --fs-hero:32px; --fs-page:28px; --fs-module:24px; --fs-card:19px;
  --fs-body:17px; --fs-body2:16px; --fs-aux:14px; --fs-micro:13px; --fs-btn:17px;
  --lh-hero:1.25; --lh-page:1.3; --lh-module:1.35; --lh-card:1.4;
  --lh-body:1.7; --lh-aux:1.5; --lh-micro:1.4;

    --ink:#22202A; --ink2:#4A4655; --ink3:#86828F;
    --pri:#6c53c9; --pri2:#8f6fe8; --gold:#B99755;
    --bg:#F7F5F0; --card:#fff; --line:rgba(108,83,201,.14);
  }
  html,body { background:var(--bg); overflow-x:hidden; max-width:100%; }
  body {
    font-family:-apple-system,"PingFang SC","HarmonyOS Sans SC","Microsoft YaHei",sans-serif;
    color:var(--ink); padding-bottom:96px;
  }
  .wrap { max-width:480px; margin:0 auto; position:relative; }
  button { font-family:inherit; border:none; background:none; cursor:pointer; }

  /* ============ 顶部星空 · 黄金分割 hero ============ */
  /* 视觉重心落在右上黄金点（x≈61.8% / y≈38.2%），头像锚定于此；左侧一条信息纵轴 */
  .sky {
    position:relative; padding:38px 20px 96px; overflow:hidden;
    background:linear-gradient(155deg,var(--t-hero1,#241b4d) 0%,var(--t-hero2,#3b2d78) 32%,var(--t-hero3,#5f47b8) 66%,var(--t-hero4,#8a68e6) 100%);
    border-radius:0 0 32px 32px;
  }
  .sky::after { content:''; position:absolute; left:-30px; top:-60px; width:230px; height:230px; border-radius:50%;
    background:radial-gradient(circle, rgba(var(--t-pri-rgb),.30), transparent 68%); pointer-events:none; }
  .sky .star { position:absolute; background:#fff; border-radius:50%; opacity:.55; animation:tw 3.2s ease-in-out infinite; }
  @keyframes tw { 0%,100%{opacity:.25; transform:scale(.85)} 50%{opacity:.85; transform:scale(1.12)} }
  /* 纵轴容器：宽度按黄金分割收敛到左侧 61.8% */
  .sky .axis { position:relative; width:94%; max-width:360px; }
  .sky .hi { color:rgba(255,255,255,.62); font-size:var(--fs-micro); letter-spacing:3.4px; }
  .sky h1 { color:#fff; font-size:var(--fs-page); margin-top:11px; letter-spacing:1.2px; line-height:1.32; font-weight:700; }
  /* v86：sub 收窄成一行小字，更多 顺在文字后面 */
  .sky .sub { color:rgba(255,255,255,.88); font-size:var(--fs-aux); font-weight:500;
    margin-top:10px; line-height:1.6; letter-spacing:.3px;
    display:flex; align-items:baseline; gap:8px; min-width:0; }
  .sky .sub .sf-t { flex:1; min-width:0; }
  .fmore { flex:none; color:rgba(255,255,255,.72); font-size:28px; line-height:1;
    text-decoration:none; cursor:pointer; padding:6px 9px; font-weight:400; }
  .fmore:active { opacity:.5; }
  /* v86 星空悬挂：小 chips 像挂饰一样从星空垂下来（高低错落） */
  .hang { display:flex; gap:12px; margin-top:16px; align-items:flex-start; flex-wrap:wrap; row-gap:6px; }
  .hchip { position:relative; padding:12px 4px 0; }
  .hchip::before { content:''; position:absolute; top:0; left:50%; width:1px; height:8px;
    background:linear-gradient(180deg, transparent, rgba(255,255,255,.55)); }
  .hchip .hc { display:inline-flex; align-items:center; gap:5px; white-space:nowrap;
    border:1px solid rgba(255,255,255,.22); background:rgba(255,255,255,.08); color:rgba(255,255,255,.92);
    border-radius:13px; padding:4px 11px; font-size:var(--fs-micro); letter-spacing:.6px; }
  .hchip .hc b { font-weight:700; font-size:var(--fs-micro); }
  .hchip .hc .pl { font-size:11px; opacity:.85; }
  .hang .hchip:nth-child(1) { margin-top:5px; }
  .hang .hchip:nth-child(2) { margin-top:14px; }
  .hang .hchip:nth-child(3) { margin-top:0; }
  .hang .hchip:nth-child(4) { margin-top:9px; }
  /* v86：漂流瓶 + 分享（并排，很小很淡，几乎隐藏款；漂流瓶在前） */
  .fops { display:flex; align-items:center; gap:9px; margin-top:14px; justify-content:flex-end; }
  .fbtn { flex:none; width:30px; height:30px; border-radius:50%; border:1px solid rgba(255,255,255,.26);
    background:rgba(255,255,255,.07); color:rgba(255,255,255,.62); display:flex; align-items:center;
    justify-content:center; cursor:pointer; font-size:13px; padding:0; }
  .fbtn svg { width:13px; height:13px; }
  .fbtn:active { opacity:.5; }
  /* v88 悬挂灵魂名片：星空底色向下延伸，名片上半截压进色块里（悬挂组合结构；导航/hero 结构/漂流瓶位置全部不动） */
  .sec.sec-hang { margin-top:-58px; position:relative; z-index:3; }
  body.compact .sec.sec-hang, body.compact2 .sec.sec-hang, body.compact3 .sec.sec-hang { margin-top:-58px; }

  /* ============ v81 灵魂名片 → 恢复卡片（用户：纯粹扁平化太机械，用回之前卡片结构） ============ */
  .cardwrap { margin:0; position:relative; z-index:2; }
  .vcard {
    background:rgba(255,255,255,.94); backdrop-filter:none; -webkit-backdrop-filter:none;
    border:1px solid rgba(0,0,0,.045); border-radius:20px; padding:16px 16px 13px;
    box-shadow:0 3px 16px rgba(80,60,150,.08);
    position:relative; user-select:none; -webkit-user-select:none;
  }
  .vcard::before { display:none; }
  .vc-top { display:flex; gap:13px; align-items:center; position:relative; }
  .vc-id { min-width:0; flex:1; }
  .vc-name { display:block; font-size:var(--fs-card); font-weight:800; color:var(--ink); letter-spacing:.3px; }
  .vc-tag { display:inline-block; margin-top:11px; font-size:var(--fs-micro); color:var(--ink2);
    background:transparent; border:none; border-radius:0; padding:0; letter-spacing:.4px; }
  .vc-links { margin-top:8px; font-size:var(--fs-aux); color:var(--ink3); display:flex; gap:10px; flex-wrap:wrap; }
  .vc-ava { width:52px; height:52px; border-radius:50%; object-fit:cover; background:#eee; flex:none; }
  .vc-ava-ph { width:52px; height:52px; border-radius:50%; flex:none; display:flex; align-items:center; justify-content:center;
    font-size:var(--fs-card); font-weight:700; color:#fff; background:var(--ink); }
  /* 名片入口：v99 只留分享（更淡），编辑移到我的后台 */
  .vc-ops { display:flex; align-items:center; gap:8px; flex:none; }
  .vc-mini { width:27px; height:27px; border-radius:50%; border:1px solid rgba(var(--t-pri-rgb),.10);
    background:rgba(var(--t-pri-rgb),.03); color:var(--ink3); display:flex; align-items:center;
    justify-content:center; cursor:pointer; padding:0; opacity:.42; }
  .vc-mini svg { width:12px; height:12px; }
  .vc-mini:active { opacity:.3; }
  .vc-mini { position:relative; }
  .vc-mini #wkMsgDot, .vc-mini .wkb-dot { top:-3px; right:-4px; }
  /* v209 今日在线咨询师 */
  .ollist { display:flex; flex-direction:column; }
  .olrow { display:flex; align-items:center; gap:12px; padding:13px 2px; border-top:1px solid rgba(108,83,201,.11); }
  .olrow:first-child { border-top:0; }
  .olava { width:44px; height:44px; border-radius:50%; flex:none; object-fit:cover; background:rgba(108,83,201,.10);
    display:flex; align-items:center; justify-content:center; color:#fff; font-weight:800; font-size:17px; }
  .olinfo { flex:1; min-width:0; text-align:left; }
  .olnm { font-size:var(--fs-body2); font-weight:700; color:var(--ink); display:flex; align-items:center; gap:7px; }
  .oldot { width:7px; height:7px; border-radius:50%; background:#3fbf7f; flex:none; box-shadow:0 0 0 3px rgba(63,191,127,.16); }
  .olsub { font-size:var(--fs-micro); color:var(--ink3); margin-top:3px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .olacts { flex:none; display:flex; gap:7px; }
  .olbtn { border:0; border-radius:16px; padding:8px 14px; font-size:var(--fs-micro); font-weight:700; cursor:pointer;
    font-family:inherit; transition:opacity .15s; }
  .olbtn:active { opacity:.65; }
  .olbtn.v { background:linear-gradient(135deg,#7b5cf0,#4fb9d8); color:#fff; }
  .olbtn.c { background:rgba(108,83,201,.10); color:var(--t-pri,#6c53c9); }
  .olempty { font-size:var(--fs-micro); color:var(--ink3); padding:8px 2px 6px; line-height:1.65; }
  .olempty b { color:var(--ink2); font-weight:700; }
  .olhole { display:flex; align-items:center; gap:11px; margin-top:12px; padding:12px 2px 2px;
    border-top:1px dashed rgba(108,83,201,.20); cursor:pointer; }
  .olhole .em { font-size:17px; flex:none; }
  .olhole .tx { flex:1; min-width:0; display:flex; flex-direction:column; gap:2px; }
  .olhole .tx b { font-size:var(--fs-aux); font-weight:700; color:var(--ink2); }
  .olhole .tx small { font-size:var(--fs-micro); color:var(--ink3); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .olhole .ar { color:var(--ink3); font-size:16px; flex:none; }
  /* v210 使用反馈（有奖）入口 */
  .fbk { display:flex; align-items:center; gap:12px; text-decoration:none;
    background:linear-gradient(135deg,rgba(185,151,85,.12),rgba(108,83,201,.06));
    border:1px solid rgba(185,151,85,.30); border-radius:16px; padding:14px 15px; }
  .fbk:active { opacity:.7; }
  .fbk-ic { font-size:19px; flex:none; }
  .fbk-tx { flex:1; min-width:0; display:flex; flex-direction:column; gap:3px; }
  .fbk-tx b { font-size:var(--fs-aux); font-weight:700; color:var(--ink2); }
  .fbk-tx small { font-size:var(--fs-micro); color:var(--ink3); line-height:1.55; }
  .fbk-ar { color:var(--ink3); font-size:16px; flex:none; }
  .fbk-gem { font-size:var(--fs-micro); color:#b08d3f; font-weight:700; flex:none; }
  .vc-more { flex:none; font-size:var(--fs-aux); color:var(--ink3); background:rgba(var(--t-pri-rgb),.06);
    border:1px solid rgba(var(--t-pri-rgb),.12); border-radius:14px; padding:6px 14px; cursor:pointer; }
  .vc-more:active { opacity:.55; }
  html[data-theme-dark="1"] .vcard { background:rgba(30,28,40,.8); border-color:rgba(255,255,255,.08); }
  /* v81：愿力/天赋/理念回到卡片里（用户要求恢复旧版卡片结构） */
  .vc-soul { display:flex; flex-direction:column; gap:9px; margin-top:13px; }
  .soulrow { display:flex; gap:9px; font-size:var(--fs-aux); line-height:1.55; align-items:flex-start; }
  .soulrow .ic { flex:none; width:22px; height:22px; border-radius:8px; position:relative; }
  .soulrow .ic::after { content:''; position:absolute; inset:6px; border-radius:50%; background:rgba(255,255,255,.9); box-shadow:0 0 0 2px rgba(255,255,255,.35); }
  .soulrow .lb { flex:none; color:var(--ink3); font-size:var(--fs-aux); width:30px; padding-top:3px; letter-spacing:.5px; }
  .soulrow .tx { color:var(--ink2); flex:1; min-width:0; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
  /* v356：对话/分享按钮并入理念行右端；去掉标签行后卡片更紧凑，下方空间更多 */
  .soulrow .vc-ops { margin-left:auto; align-self:center; padding-left:6px; }
  .soulrow-idea { align-items:center; }
  .soulrow-idea .tx { -webkit-line-clamp:1; }
  .ic-vow  { background:linear-gradient(135deg,#e8c98a,#d9a95f); }
  .ic-gift { background:linear-gradient(135deg,#8f6fe8,#6c53c9); }
  .ic-idea { background:linear-gradient(135deg,#6fbee8,#4a94c9); }
  /* 卡片底部：引路人脚注 + 编辑名片 */
  .vc-foot { display:flex; align-items:center; justify-content:flex-end; margin-top:6px; gap:10px; }
  .vc-dot {
    position:absolute; right:6px; bottom:6px; width:22px; height:22px; border-radius:50%;
    background:radial-gradient(circle, rgba(var(--t-pri-rgb),.16), rgba(var(--t-pri-rgb),.02));
    opacity:.16; transition:opacity .25s; display:none; z-index:3;
  }
  .vc-dot.show { display:block; }
  .vc-dot:active { opacity:.5; }
  /* v60/v81：主名片即推荐人名片时的引路人脚注 */
  .vc-from {
    display:block; margin:0; text-align:left; margin-right:auto;
    font-size:var(--fs-aux); letter-spacing:.3px;
    color:var(--ink3); background:none; border:none; border-radius:0; padding:0; pointer-events:none;
  }

  /* ============ v81 模式觉察 · 四个测评卡 ============ */
  .obscard { background:rgba(255,255,255,.94); border:1px solid rgba(0,0,0,.045); border-radius:20px;
    padding:17px 16px 15px; box-shadow:0 3px 16px rgba(80,60,150,.08); }
  .ob-eyebrow { font-size:var(--fs-micro); letter-spacing:4px; color:var(--gold,#B99755); font-weight:700; }
  .ob-t { margin-top:6px; font-size:var(--fs-module); font-weight:800; color:var(--ink); letter-spacing:.3px; }
  .ob-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:9px; margin-top:14px; }
  .ob-grid a { display:flex; flex-direction:column; align-items:center; gap:8px; text-decoration:none;
    background:rgba(var(--t-pri-rgb),.045); border:1px solid rgba(var(--t-pri-rgb),.10); border-radius:15px; padding:12px 4px 10px; }
  .ob-grid a:active { opacity:.6; }
  .ob-ic { width:44px; height:44px; border-radius:50%; display:flex; align-items:center; justify-content:center;
    color:#fff; font-size:19px; font-weight:800; text-shadow:0 1px 3px rgba(40,20,90,.18); }
  .ob-grid b { font-size:var(--fs-aux); color:var(--ink); font-weight:600; text-align:center; line-height:1.35; }
  /* v387：发朋友圈/收鸡蛋恢复昨天的小胶囊，「更多」同行右侧；四觉察 56px 不变；夜间配色微调 */
  .sec-flat { background:transparent; border:none; box-shadow:none; padding-left:0; padding-right:0; }
  .sec-flat .ob-hd { position:relative; display:flex; align-items:center; justify-content:space-between; gap:10px; margin:2px 0 12px; }
  .sec-flat .ob-l { display:flex; align-items:center; gap:8px; min-width:0; }
  .sec-flat .ob-egg { text-decoration:none; font-size:13px; font-weight:700; color:#b0722a; flex:none;
    background:rgba(240,169,60,.14); border-radius:999px; padding:7px 14px; letter-spacing:.3px; }
  .sec-flat .ob-egg:active { opacity:.6; }
  html[data-theme-dark="1"] .sec-flat .ob-egg { background:rgba(240,169,60,.22); color:#f3c887; box-shadow:inset 0 0 0 1px rgba(240,169,60,.28); }
  .sec-flat .ob-share { text-decoration:none; font-size:13px; font-weight:700; color:#7d5cc7; flex:none;
    background:rgba(125,92,199,.10); border-radius:999px; padding:7px 14px; letter-spacing:.3px; }
  .sec-flat .ob-share:active { opacity:.6; }
  .sec-flat .ob-more { text-decoration:none; font-size:12.5px; font-weight:700; color:var(--ink3); padding:7px 2px; flex:none; margin-left:auto; }
  .sec-flat .ob-grid { margin-top:0; gap:8px; }
  .sec-flat .ob-grid a { padding:14px 4px 12px; border-radius:17px; }
  .sec-flat .ob-grid b { white-space:nowrap; font-size:13.5px; font-weight:700; }
  .sec-flat .ob-ic { width:56px; height:56px; font-size:22px; box-shadow:0 8px 18px rgba(108,83,201,.14); }
  html[data-theme-dark="1"] .sec-flat .ob-share { background:rgba(167,138,224,.22); color:#cdb9f7; box-shadow:inset 0 0 0 1px rgba(167,138,224,.30); }
  html[data-theme-dark="1"] .obscard { background:rgba(30,28,40,.8); border-color:rgba(255,255,255,.08); }
  /* v299：测评邀请角标（类似流日分享钮——常驻但低调：点它直接出邀请海报，点图标/文字仍进测评） */
  .ob-icw { position:relative; display:inline-block; }
  .ob-inv { position:absolute; top:-7px; right:-9px; width:21px; height:21px; border-radius:50%;
    border:1px solid rgba(var(--t-pri-rgb),.32); background:#fff; color:var(--pri,#6c53c9);
    font-size:11px; font-weight:700; line-height:19px; text-align:center; opacity:.5;
    box-shadow:0 1px 4px rgba(80,60,150,.14); }
  .ob-inv:active { opacity:1; transform:scale(.9); }
  html[data-theme-dark="1"] .ob-inv { background:rgba(30,28,40,.92); }

  /* v68 去卡片化：「现在最值得做的一步」不再是一张卡，文字本身就是界面（V2.1 §22.3） */
  .nba { background:none; border:none; box-shadow:none; padding:4px 2px 2px; position:relative; }
  .nb-t { font-size:var(--fs-module); font-weight:650; line-height:var(--lh-module); letter-spacing:.2px; color:var(--ink); }
  .nb-s { margin-top:9px; font-size:var(--fs-body); color:var(--ink2); line-height:var(--lh-body); }
  .nb-go { display:inline-block; margin-top:13px; font-size:var(--fs-body); font-weight:500; color:var(--pri); text-decoration:none; }
  .nb-more { display:block; margin-top:12px; font-size:var(--fs-aux); color:var(--ink3); text-decoration:none; }
  /* v199：关怀卡自动淡出（进入显示 5 秒后消失） */
  .sec.jy-auto { transition:opacity .45s ease; }
  .sec.jy-auto.jy-out { opacity:0; }

  /* ============ 通用 section ============ */
  .sec { margin:12px 14px 0; }
  .sec-hd { display:flex; align-items:baseline; justify-content:space-between; padding:0 4px 8px; }
  .sec-hd .t { font-size:var(--fs-body); font-weight:700; letter-spacing:.5px; }
  /* v68 去卡片化：取消标题前那根紫色竖线（AI 感最重的元素之一 · V2.1 §22.2） */
  .sec-hd .d { font-size:var(--fs-aux); color:var(--ink3); }
  /* v253：万年历 / 流日弹层 · 任意日期时间看流日（原生日期时间选择器） */
  .caldt { display:flex; align-items:center; gap:8px; padding:2px 4px 10px; flex-wrap:wrap; }
  .caldt .ic { font-size:14px; }
  .caldt input, .fldt input { border:1px solid rgba(var(--t-pri-rgb),.35); background:#fff; border-radius:9px; padding:7px 10px; font-size:14px; color:var(--ink); font-family:inherit; -webkit-appearance:none; appearance:none; min-width:0; }
  .caldt .tip, .fldt .tip { font-size:var(--fs-aux); color:var(--ink3); }
  .fldt { display:flex; align-items:center; gap:8px; margin:2px 0 8px; flex-wrap:wrap; }
  #calSpan { cursor:pointer; }

  /* ============ v68 去卡片化 · 四条真实的人生问题 ============
     V2.1 §22.3：不要四个独立白盒。用「留白 + 字号 + 分隔线 + 文字链」建立层级。 */
  .q4hd { font-size:var(--fs-module); font-weight:650; letter-spacing:.2px; color:var(--ink);
    padding:2px 2px 4px; line-height:var(--lh-module); }
  .qlist { margin-top:6px; }
  .qi { display:block; width:100%; text-align:left; padding:17px 2px; background:none; border:none;
    border-bottom:1px solid rgba(0,0,0,.075); cursor:pointer; }
  .qi:last-of-type { border-bottom:none; padding-bottom:6px; }
  .qi:active { opacity:.55; }
  .qi b { display:block; font-size:var(--fs-card); font-weight:600; color:var(--ink); letter-spacing:.2px;
    line-height:var(--lh-card); }
  .qi i { display:block; font-style:normal; margin-top:7px; font-size:var(--fs-aux);
    color:var(--ink3); line-height:1.5; }
  .qi i em { font-style:normal; color:var(--pri); }
  html[data-theme-dark="1"] .qi { border-bottom-color:rgba(255,255,255,.10); }
  /* ============ 今日流日（去卡片化 · 长在页面上，规则 §19.2） ============ */
  .flow {
    background:none; border:none; border-radius:0; box-shadow:none;
    padding:16px 2px 4px; color:var(--ink); position:relative; overflow:hidden;
    cursor:pointer;
  }
  .flow:active { opacity:.72; }
  .flow .hd { display:flex; justify-content:space-between; align-items:center; position:relative; z-index:1; }
  .flow .hd .t { font-size:var(--fs-aux); color:var(--ink3); letter-spacing:1px; }
  .flow .hd .date { font-size:var(--fs-aux); color:var(--ink3); opacity:.8; }
  .ftheme { margin-top:9px; position:relative; z-index:1; display:flex; align-items:baseline; gap:8px; flex-wrap:wrap; }
  .ftheme .sun { font-size:var(--fs-module); font-weight:800; color:var(--pri); font-variant-numeric:tabular-nums; }
  .ftheme .sun small { font-size:var(--fs-micro); font-weight:600; opacity:.8; }
  .ftheme .th { font-size:var(--fs-aux); color:var(--ink2); }
  /* 今日心情 · 地球频率 + 人本五维指数（图4式通俗维度） */
  .fmood { margin-top:10px; position:relative; z-index:1; }
  .fmood .mt { display:flex; justify-content:space-between; align-items:baseline; font-size:var(--fs-aux); color:var(--ink3); margin-bottom:5px; }
  .fmood .mt b { color:var(--pri); font-size:var(--fs-aux); }
  .fmood .mf { font-size:var(--fs-aux); color:var(--ink2); line-height:1.7; }
  .fmood .mf b { color:var(--pri); font-weight:700; }
  .dims { display:grid; grid-template-columns:repeat(5,1fr); gap:8px; margin-top:12px; }
  .dim { text-align:center; }
  .dim .bar { height:46px; border-radius:12px; background:rgba(var(--t-pri-rgb),.07); position:relative; overflow:hidden; display:flex; align-items:flex-end; }
  .dim .bar i { display:block; width:100%; border-radius:12px; transition:height .45s; }
  .dim .sc { font-size:var(--fs-micro); font-weight:800; margin-top:5px; color:var(--ink); line-height:1; }
  .dim .nm { font-size:var(--fs-micro); color:var(--ink3); margin-top:2px; }
  .dimnote { margin-top:9px; font-size:var(--fs-micro); color:#b9b3cf; text-align:center; }
  /* 今日关键语 */
  .fkey { margin-top:9px; position:relative; z-index:1; font-size:var(--fs-aux); font-weight:700; color:var(--ink);
    background:linear-gradient(135deg,rgba(232,201,138,.20),rgba(232,201,138,.10)); border-radius:11px; padding:8px 12px;
    display:flex; align-items:center; gap:7px; }
  .fkey .kb { flex:none; font-size:var(--fs-aux); font-weight:700; color:#a8802e; background:rgba(232,201,138,.35); border-radius:7px; padding:2px 7px; letter-spacing:1px; }
  .fkey .kt { flex:1; min-width:0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .fcols { display:flex; gap:9px; margin-top:11px; position:relative; z-index:1; }
  .fcol { flex:1; background:rgba(var(--t-pri-rgb),.055); border:1px solid rgba(var(--t-pri-rgb),.10); border-radius:14px; padding:10px 11px; }
  .fcol .ft { font-size:var(--fs-aux); font-weight:700; letter-spacing:1px; margin-bottom:5px; display:flex; align-items:center; gap:5px; }
  .fcol.fit .ft { color:#3f9d6d; }
  .fcol.avoid .ft { color:#c9617a; }
  .fcol .it { font-size:var(--fs-aux); line-height:1.75; color:var(--ink2); display:flex; gap:5px; }
  .fcol .it::before { content:'·'; font-weight:700; }
  .ftip { margin-top:11px; display:flex; justify-content:space-between; align-items:center; position:relative; z-index:1;
    background:rgba(var(--t-pri-rgb),.06); border-radius:12px; padding:9px 12px; font-size:var(--fs-aux); color:var(--pri); }
  .ftip span:first-child { min-width:0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .ftip .ar { opacity:.7; flex:none; margin-left:8px; }

  /* ============ 流月 ============ */
  .month {
    background:#fff; border-radius:18px; padding:15px 16px; box-shadow:0 3px 16px rgba(80,60,150,.07);
  }
  .month .mt { display:flex; justify-content:space-between; align-items:baseline; }
  .month .mt .a { font-size:var(--fs-body2); font-weight:700; }
  .month .mt .b { font-size:var(--fs-aux); color:var(--ink3); }
  .mgates { display:flex; gap:6px; margin-top:11px; overflow-x:auto; scrollbar-width:none; }
  .mgates::-webkit-scrollbar { display:none; }
  .mg { flex:none; width:58px; border-radius:12px; padding:7px 0 6px; text-align:center;
    background:rgba(var(--t-pri-rgb),.07); border:1px solid rgba(var(--t-pri-rgb),.12); }
  .mg.on { background:linear-gradient(135deg,var(--pri),var(--pri2)); border-color:transparent; color:#fff; box-shadow:0 3px 10px rgba(var(--t-pri-rgb),.3); }
  .mg .g { font-size:var(--fs-body); font-weight:800; }
  .mg .n { font-size:var(--fs-micro); opacity:.75; margin-top:2px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; padding:0 3px; }
  .month .mtxt { margin-top:10px; font-size:var(--fs-aux); color:var(--ink2); line-height:1.7; }

  /* ============ 人类图万年历 · 月亮运作图 ============ */
  .cal { background:#fff; border-radius:18px; padding:15px 13px 13px; box-shadow:0 3px 16px rgba(80,60,150,.07); }
  .cal .desc { font-size:var(--fs-aux); color:var(--ink2); line-height:1.75; margin-bottom:11px; }
  .cal .desc b { color:var(--pri); }
  .calgrid { display:grid; grid-template-columns:repeat(7,1fr); gap:4px; }
  .calhead { text-align:center; font-size:var(--fs-micro); color:var(--ink3); padding:2px 0 5px; }
  .ccell {
    border-radius:10px; background:rgba(var(--t-pri-rgb),.055); border:1.5px solid transparent;
    padding:5px 2px 5px; text-align:center; min-height:62px; position:relative;
    transition:transform .12s;
  }
  .ccell:active { transform:scale(.94); }
  .ccell .dd { font-size:var(--fs-micro); color:var(--ink3); line-height:1; }
  .ccell .moon { display:flex; flex-direction:column; gap:2px; align-items:center; margin-top:3px; }
  .ccell .mb { font-size:var(--fs-micro); font-weight:700; line-height:1; background:rgba(var(--t-pri-rgb),.13); color:var(--pri);
    border-radius:5px; padding:2px 4px; }
  .ccell.today { background:linear-gradient(135deg,var(--pri),var(--pri2)); box-shadow:0 3px 10px rgba(var(--t-pri-rgb),.32); }
  .ccell.today .dd { color:rgba(255,255,255,.85); }
  .ccell.today .mb { background:rgba(255,255,255,.22); color:#fff; }
  .ccell.mine { border-color:var(--gold); background:rgba(232,201,138,.10); }
  .ccell.mine::after { content:''; position:absolute; top:4px; right:5px; width:5px; height:5px; border-radius:50%; background:var(--gold); }
  .ccell.mine.today { border-color:#fff; }
  .ccell.empty { background:transparent; }
  .cal .legend { display:flex; gap:12px; margin-top:10px; font-size:var(--fs-micro); color:var(--ink3); flex-wrap:wrap; }
  .cal .legend i { display:inline-block; width:8px; height:8px; border-radius:3px; margin-right:4px; vertical-align:-1px; }
  .cal .foot-note { margin-top:8px; font-size:var(--fs-micro); color:#b9b3cf; text-align:center; }

  /* ============ 快捷入口 ============ */
  .quick { display:grid; grid-template-columns:repeat(4,1fr); gap:8px; background:#fff; border-radius:18px;
    padding:15px 10px 12px; box-shadow:0 3px 16px rgba(80,60,150,.07); }
  .qk { text-align:center; text-decoration:none; display:block; }
  .qk .em { width:46px; height:46px; margin:0 auto; border-radius:16px; display:flex; align-items:center; justify-content:center; font-size:var(--fs-body); font-weight:800; color:#fff; text-shadow:0 1px 3px rgba(40,20,90,.18); }
  .qk .nm { font-size:var(--fs-aux); margin-top:6px; color:var(--ink2); }
  .q1 .em{background:linear-gradient(135deg,#a78ae0,#7d5cc7)} .q2 .em{background:linear-gradient(135deg,#e0b566,#c9912f)}
  .q3 .em{background:linear-gradient(135deg,#79c99a,#4da374)} .q4 .em{background:linear-gradient(135deg,#e08fa4,#c9627f)}

  /* ============ footer ============ */
  .foot { text-align:center; font-size:var(--fs-aux); color:var(--ink3); line-height:1.9; padding:26px 20px 10px; }


  /* ============ v80 当下板块 ============ */
  .nowhd { display:flex; align-items:center; justify-content:space-between; margin-bottom:10px; }
  .nowhd .t { font-size:var(--fs-page); font-weight:800; letter-spacing:2px; color:var(--ink); }
  .nowshare { display:flex; align-items:center; gap:5px; border:1px solid rgba(var(--t-pri-rgb),.25); background:rgba(var(--t-pri-rgb),.07);
    color:var(--pri); border-radius:20px; padding:7px 14px; font-size:var(--fs-aux); font-weight:600; }
  .nowshare svg { width:15px; height:15px; }
  .nowshare:active { opacity:.6; }
  .td-rel { margin-top:10px; font-size:var(--fs-aux); line-height:1.75; color:var(--ink2); }
  .prac { margin-top:10px; display:flex; align-items:center; justify-content:space-between; gap:12px;
    border:1.5px dashed rgba(var(--t-pri-rgb),.30); border-radius:14px; padding:12px 14px; }
  .prac .pr-l { display:flex; flex-direction:column; gap:3px; min-width:0; text-align:left; }
  .prac .pr-l .k { font-size:var(--fs-micro); letter-spacing:2px; color:var(--gold,#B99755); font-weight:700; }
  .prac .pr-l .tx { font-size:var(--fs-body2); color:var(--ink); line-height:1.6; }
  .prac .pr-go { flex:none; border:none; border-radius:18px; padding:8px 18px; font-size:var(--fs-aux); font-weight:700; color:#fff; background:var(--gold,#B99755); }
  .prac .pr-go.done { background:#e8e4f0; color:var(--ink3); }

  /* v80 心情记录 */
  .moodbox { border:1px solid rgba(0,0,0,.07); border-radius:18px; padding:14px 14px 12px; background:rgba(255,255,255,.65); }
  .moodbox input { width:100%; border:none; outline:none; background:transparent; font-size:var(--fs-aux); color:var(--ink);
    font-family:inherit; padding:2px 2px 9px; } /* v151 横线移到 .mrow 全宽对齐表情，字调小 */
  .memj { display:flex; justify-content:space-between; margin:12px 0 4px; }
  .memj .mj { flex:1; display:flex; flex-direction:column; align-items:center; gap:3px; border:none; background:none; font-size:19px; color:var(--ink3); padding:0; }
  .memj .mj small { font-size:var(--fs-micro); }
  .memj .mj.on small { color:var(--pri); font-weight:700; }
  /* v89：想说点什么 = 自动记录（语音钮 + 表情点了就记） */
  .mrow { display:flex; align-items:center; gap:9px; border-bottom:1px solid rgba(0,0,0,.06); } /* v151 横线全宽=与表情两侧对齐 */
  .mmic { flex:none; width:36px; height:36px; border-radius:50%; border:1px solid rgba(var(--t-pri-rgb),.16); background:rgba(var(--t-pri-rgb),.06); color:var(--ink3); display:flex; align-items:center; justify-content:center; cursor:pointer; padding:0; }
  .mmic svg { width:16px; height:16px; }
  .mmic.rec { background:var(--gold,#B99755); border-color:var(--gold,#B99755); color:#fff; animation:mPulse 1.1s ease-in-out infinite; }
  @keyframes mPulse { 0%,100%{opacity:1} 50%{opacity:.5} }
  .msend { width:100%; margin-top:10px; height:42px; border:none; border-radius:14px; background:rgba(var(--t-pri-rgb),.10);
    color:var(--pri); font-size:var(--fs-body2); font-weight:700; }
  .msend:active { opacity:.6; }

  /* v80 四件工具 */
  .tools4 { display:grid; grid-template-columns:1fr 1fr 1fr 1fr; gap:10px; }
  .tools4 a { display:flex; flex-direction:column; align-items:center; gap:4px; text-decoration:none; border:1px solid rgba(0,0,0,.07);
    border-radius:16px; padding:14px 4px 11px; background:rgba(255,255,255,.65); text-align:center; }
  .tools4 .ti-em { font-size:24px; line-height:1; }
  .tools4 b { font-size:var(--fs-aux); color:var(--ink); font-weight:600; }
  .tools4 small { font-size:var(--fs-micro); color:var(--ink3); }
  .tools4 a:active { opacity:.6; }

  /* v80 时间线 */
  .tl-hd { display:flex; align-items:baseline; justify-content:space-between; margin-bottom:12px; }
  .tl-hd .t { font-size:var(--fs-module); font-weight:700; color:var(--ink); }
  .tl-hd .tl-sub { font-size:var(--fs-micro); color:var(--ink3); }
  .tl-tabs { display:flex; gap:8px; margin-bottom:12px; }
  .tl-tabs button { border:1px solid rgba(0,0,0,.08); background:none; border-radius:16px; padding:6px 14px; font-size:var(--fs-aux); color:var(--ink3); }
  .tl-tabs button.on { background:var(--ink,#22202A); color:#fff; border-color:var(--ink,#22202A); font-weight:600; }
  .tl-row { display:flex; gap:12px; padding:10px 0; }
  .tl-row:last-child { border-bottom:none; }
  /* v91：时间线安静（去分隔线），修 .prac 虚线误伤时间线功课行 */
  .tl-row.prac { border:none; border-radius:0; margin-top:0; padding:10px 0; }
  .tl-only { font-style:normal; font-size:var(--fs-micro); font-weight:400; color:var(--ink3); margin-left:6px; }
  .tl-row .tm { flex:none; width:52px; font-size:var(--fs-micro); color:var(--ink3); font-variant-numeric:tabular-nums; padding-top:3px; }
  .tl-row .em { flex:none; font-size:19px; line-height:1.4; }
  .tl-row .bd { flex:1; min-width:0; font-size:var(--fs-body2); color:var(--ink); line-height:1.65; word-break:break-all; }
  .tl-row .bd small { display:block; margin-top:2px; font-size:var(--fs-micro); color:var(--ink3); }
  .tl-row.prac .bd { color:var(--ink2); }
  .tl-empty { font-size:var(--fs-aux); color:var(--ink3); padding:14px 0; }
  .tl-more { width:100%; margin-top:8px; border:none; background:none; color:var(--pri); font-size:var(--fs-aux); padding:8px; }

  /* ============ 弹层 ============ */
  .mask { position:fixed; inset:0; background:rgba(20,14,40,.45); z-index:90; opacity:0; pointer-events:none; transition:opacity .22s; }
  .mask.show { opacity:1; pointer-events:auto; }
  .sheet {
    position:fixed; bottom:0; left:0; right:0; z-index:95; max-width:480px; margin:0 auto;
    background:#fff; padding:calc(14px + env(safe-area-inset-top)) 18px calc(20px + env(safe-area-inset-bottom));
    transform:translateY(105%); transition:transform .26s cubic-bezier(.2,.7,.3,1);
    /* v254：全部弹层全屏——半屏弹层会被手机浏览器底部工具栏压住，输入框根本没法用 */
    top:0; height:100vh; max-height:100vh; border-radius:0; overflow-y:auto;
    /* v257：弹层内滚动防卡死——滚到顶/底不把滑动串给背后页面（手机上「滑不动/卡住」的主因） */
    -webkit-overflow-scrolling:touch; overscroll-behavior:contain;
  }
  /* v257：弹层开着时锁住背后页面滚动，防滚动穿透与手势打架 */
  body.sheet-open { overflow:hidden; }
  .sheet.show { transform:translateY(0); }
  /* v156：名片海报弹层全屏 */
  .sheet.full { max-height:100vh; height:100vh; border-radius:0; top:0; }
  .sheet.full.show { transform:translateY(0); }
  .sheet .grab { width:38px; height:4px; border-radius:3px; background:#e4e0f0; margin:0 auto 14px; position:sticky; top:0; }
  /* v254：弹层已全屏，拖拽条没有意义，藏掉 */
  .sheet .grab { display:none; }
  .sheet h3 { font-size:var(--fs-body); display:flex; align-items:center; justify-content:space-between; }
  .sheet h3 .x { font-size:var(--fs-body2); color:var(--ink3); width:28px; height:28px; border-radius:50%; background:#f2effa; flex:none; }
  .fld { margin-top:13px; }
  .fld label { font-size:var(--fs-aux); color:var(--ink2); display:flex; align-items:center; gap:6px; margin-bottom:6px; }
  .fld input, .fld textarea {
    width:100%; border:1.5px solid #e8e4f4; border-radius:12px; padding:10px 12px; font-size:var(--fs-body2);
    font-family:inherit; color:var(--ink); background:#faf9fe; outline:none;
  }
  .fld input:focus, .fld textarea:focus { border-color:var(--pri2); background:#fff; }
  .fld textarea { resize:none; min-height:52px; line-height:1.6; }
  .fld .hint { font-size:var(--fs-aux); color:var(--ink3); margin-top:4px; }
  .ava-row { display:flex; align-items:center; gap:12px; }
  .ava-prev { width:52px; height:52px; border-radius:50%; object-fit:cover; background:#eee; }
  .ava-pick { font-size:var(--fs-aux); color:var(--pri); background:rgba(var(--t-pri-rgb),.09); border-radius:20px; padding:6px 14px; }
  .savebtn { width:100%; margin-top:17px; height:46px; border-radius:15px; color:#fff; font-size:var(--fs-body2); font-weight:700;
    background:linear-gradient(135deg,var(--pri),var(--pri2)); box-shadow:0 5px 16px rgba(var(--t-pri-rgb),.35); }
  /* v86：一键生成介绍（淡金描边文字钮，不抢保存的戏） */
  .genbtn { width:100%; margin-top:14px; height:42px; border-radius:14px; cursor:pointer;
    background:rgba(185,151,85,.07); border:1px solid rgba(185,151,85,.35); color:#a5814a;
    font-size:var(--fs-aux); font-weight:600; letter-spacing:1px; }
  .genbtn:active { opacity:.6; }
  .intro-list { margin-top:12px; display:grid; gap:8px; }
  .intro-list .it { display:flex; gap:9px; font-size:var(--fs-aux); color:var(--ink2); line-height:1.6; align-items:flex-start; }
  .intro-list .it i { flex:none; font-style:normal; width:20px; height:20px; border-radius:50%; background:rgba(var(--t-pri-rgb),.10);
    color:var(--pri); font-size:var(--fs-aux); display:flex; align-items:center; justify-content:center; font-weight:700; margin-top:1px; }
  .coming { margin-top:14px; text-align:center; font-size:var(--fs-aux); color:var(--gold);
    background:rgba(232,201,138,.14); border-radius:12px; padding:9px; }

  /* 菜单弹层（长按名片） */
  .menu-item { display:flex; align-items:center; gap:12px; padding:14px 6px; border-bottom:1px solid #f2effa;
    font-size:var(--fs-body2); color:var(--ink); width:100%; text-align:left; }
  .menu-item:last-of-type { border-bottom:none; }
  .menu-item .mi { flex:none; width:36px; height:36px; border-radius:12px; display:flex; align-items:center; justify-content:center;
    font-size:var(--fs-body2); font-weight:700; color:#fff; }
  .menu-cancel { width:100%; margin-top:12px; height:42px; border-radius:13px; background:#f2effa; color:var(--ink3); font-size:var(--fs-body2); }

  /* 流日详情弹层 */
  .who { display:flex; gap:7px; margin-top:11px; overflow-x:auto; scrollbar-width:none; }
  .who::-webkit-scrollbar { display:none; }
  .who-chip { flex:none; font-size:var(--fs-aux); color:var(--ink2); background:#f2effa; border:1.5px solid transparent;
    border-radius:18px; padding:6px 14px; font-weight:600; display:inline-flex; align-items:center; gap:2px; }
  .who-chip.on { color:#fff; background:linear-gradient(135deg,var(--pri),var(--pri2)); box-shadow:0 3px 10px rgba(var(--t-pri-rgb),.28); }
  .who-chip.add { color:var(--pri); background:rgba(var(--t-pri-rgb),.10); border-color:rgba(var(--t-pri-rgb),.30); }
  /* v254：人名 chip 上的删除小叉 */
  .who-chip .wdel { font-style:normal; font-size:13px; line-height:1; width:17px; height:17px; border-radius:50%;
    display:inline-flex; align-items:center; justify-content:center; margin-left:5px;
    background:rgba(255,255,255,.55); color:var(--ink2); }
  .who-chip.on .wdel { background:rgba(255,255,255,.30); color:#fff; }
  .svrow { display:flex; gap:9px; margin-top:12px; }
  .svbtn { flex:1; height:44px; border-radius:14px; font-size:var(--fs-body2); font-weight:700; color:#fff;
    background:linear-gradient(135deg,var(--pri),var(--pri2)); box-shadow:0 4px 14px rgba(var(--t-pri-rgb),.30); }
  .svbtn.alt { color:var(--pri); background:#fff; border:1.5px solid rgba(var(--t-pri-rgb),.35); box-shadow:none; }
  .fl-lead { font-size:var(--fs-aux); color:var(--ink2); line-height:1.8; margin-top:10px; }
  .flchart { margin-top:13px; border-radius:16px; background:#f7f5fd; padding:8px; min-height:120px;
    display:flex; align-items:center; justify-content:center; }
  .flchart svg { width:100%; height:auto; display:block; }
  .flchart .loading { font-size:var(--fs-aux); color:var(--ink3); padding:40px 0; }
  .flsun { margin-top:14px; font-size:var(--fs-aux); color:var(--ink2); }
  .flsun b { font-size:var(--fs-body); color:var(--ink); }
  .flweather { margin-top:11px; background:linear-gradient(135deg,#312860,#4a3a8f); border-radius:16px; padding:14px; color:#fff; }
  .flweather .hd { font-size:var(--fs-aux); font-weight:700; display:flex; align-items:center; gap:7px; flex-wrap:wrap; }
  .flweather .hd .tag { font-size:var(--fs-aux); font-weight:500; background:rgba(255,255,255,.16); border:1px solid rgba(255,255,255,.25); border-radius:12px; padding:2px 9px; }
  .flweather .desc { font-size:var(--fs-aux); line-height:1.75; opacity:.88; margin-top:8px; }
  .flbox { margin-top:10px; background:rgba(255,255,255,.09); border-radius:12px; padding:10px 12px; }
  .flbox .bt { font-size:var(--fs-aux); font-weight:700; margin-bottom:5px; display:flex; align-items:center; gap:5px; }
  .flbox.fit .bt { color:#8fe3b0; }
  .flbox.avoid .bt { color:#f0a5b5; }
  .flbox .it { font-size:var(--fs-aux); line-height:1.8; opacity:.9; display:flex; gap:6px; }
  .flbox .it::before { content:'·'; font-weight:700; }
  .flquote { margin-top:10px; font-size:var(--fs-aux); color:var(--gold); line-height:1.7; }
  .flcolor { margin-top:13px; background:#fff; border:1.5px solid rgba(var(--t-pri-rgb),.16); border-radius:16px; padding:13px 14px; }
  .flcolor .hd { display:flex; align-items:center; gap:10px; }
  .flc-badge { flex:none; width:46px; height:46px; border-radius:15px; color:#fff; display:flex; flex-direction:column; align-items:center; justify-content:center; }
  .flc-badge .c { font-size:var(--fs-body); font-weight:800; line-height:1; }
  .flc-badge .l { font-size:var(--fs-micro); opacity:.85; margin-top:3px; letter-spacing:1px; }
  .flcolor .mo { font-size:var(--fs-aux); font-weight:700; }
  .flcolor .fr { font-size:var(--fs-aux); color:var(--ink2); line-height:1.65; margin-top:5px; }
  .flbar { margin-top:9px; }
  .flbar .lab { display:flex; justify-content:space-between; font-size:var(--fs-micro); color:var(--ink3); margin-bottom:4px; }
  .flbar .track { height:6px; border-radius:4px; background:rgba(var(--t-pri-rgb),.10); overflow:hidden; }
  .flbar .fill { height:100%; border-radius:4px; background:linear-gradient(90deg,var(--pri2),var(--pri)); }
  .flprops { margin-top:9px; display:grid; grid-template-columns:1fr 1fr; gap:3px 12px; }
  .flprops .pv { font-size:var(--fs-micro); color:var(--ink3); }
  .flprops .pv b { color:var(--ink2); font-weight:600; }
  .flrel { margin-top:13px; background:rgba(var(--t-pri-rgb),.07); border-radius:14px; padding:12px 14px; font-size:var(--fs-aux); line-height:1.8; color:var(--ink2); }
  .flrel b { color:var(--pri); }
  .flplanets { margin-top:15px; }
  .flplanets .tt { font-size:var(--fs-body2); font-weight:700; }
  .flplanets .ld { font-size:var(--fs-micro); color:var(--ink3); line-height:1.7; margin-top:4px; }
  .pl-row { display:flex; gap:10px; padding:10px 2px; border-bottom:1px dashed rgba(var(--t-pri-rgb),.14); align-items:flex-start; }
  .pl-row:last-child { border-bottom:none; }
  .pl-ic { flex:none; width:38px; height:38px; border-radius:12px; display:flex; flex-direction:column; align-items:center; justify-content:center; color:#fff; }
  .pl-ic .s { font-size:var(--fs-aux); line-height:1; }
  .pl-ic .cn { font-size:var(--fs-micro); opacity:.85; margin-top:2px; }
  .pl-body { flex:1; min-width:0; }
  .pl-t { font-size:var(--fs-micro); color:var(--ink); }
  .pl-t b { font-weight:700; }
  .pl-t .mine { color:var(--gold); font-weight:700; }
  .pl-d { font-size:var(--fs-micro); color:var(--ink3); line-height:1.65; margin-top:2px; }
  .pl-d.hot { color:var(--pri); }
  .flcta { display:flex; margin-top:15px; align-items:center; justify-content:center; gap:6px;
    height:46px; border-radius:15px; text-decoration:none; font-size:var(--fs-body2); font-weight:700;
    color:#fff; background:linear-gradient(135deg,var(--pri),var(--pri2)); box-shadow:0 5px 16px rgba(var(--t-pri-rgb),.35); }
  .flweek { margin-top:13px; }
  .flweek summary { list-style:none; font-size:var(--fs-aux); color:var(--pri); display:flex; align-items:center; gap:5px; cursor:pointer; }
  .flweek summary::-webkit-details-marker { display:none; }
  .fwrow { display:flex; align-items:center; gap:8px; padding:7px 2px; border-bottom:1px dashed rgba(var(--t-pri-rgb),.14); font-size:var(--fs-aux); color:var(--ink2); }
  .fwrow:last-child { border-bottom:none; }
  .fwrow .dt { width:66px; flex:none; color:var(--ink3); }
  .fwrow .sg { flex:1; }
  .fwrow .rl { flex:1.3; font-size:var(--fs-micro); color:var(--ink3); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }

  /* 海报预览 */
  .poster-prev { width:min(320px, 82vw); border-radius:16px; box-shadow:0 10px 30px rgba(30,20,70,.3); display:block; margin:6px auto 0; }
  .dlposter { width:100%; margin-top:16px; height:46px; border-radius:15px; color:#fff; font-size:var(--fs-body2); font-weight:700;
    background:linear-gradient(135deg,var(--pri),var(--pri2)); }

  .toast { position:fixed; left:50%; bottom:120px; transform:translateX(-50%) translateY(10px); background:rgba(30,22,60,.88);
    color:#fff; font-size:var(--fs-aux); border-radius:12px; padding:10px 18px; z-index:120; opacity:0; transition:all .25s; pointer-events:none; white-space:nowrap; }
  .toast.show { opacity:1; transform:translateX(-50%) translateY(0); }

  /* ============ 小屏紧凑（fitFirst 自动分级挂 compact / compact2） ============ */
  /* v66：首屏问句是核心信息，任何屏幕都不隐藏 */
  body.compact .cardwrap { margin-top:0; }
  body.compact .dimnote { display:none; }
  body.compact .sec { margin-top:9px; }
  body.compact2 .sky h1 { margin-top:8px; }
  body.compact2 .dim .bar { height:30px; }
  body.compact2 .dims { gap:6px; margin-top:9px; }
  body.compact2 .fcol .it:nth-child(n+3) { display:none; }
  body.compact2 .vc-soul { margin-top:9px; padding-top:8px; gap:5px; }
  body.compact2 .flow { padding:10px 12px 8px; }
  body.compact2 .ftheme { margin-top:4px; }
  body.compact2 .fcols { margin-top:8px; }
  body.compact2 .ftip { padding:5px 12px; margin-top:6px; }
  body.compact2 .sec-hd { padding-bottom:5px; }
  body.compact2 .tk { padding:9px 6px 8px; }
  body.compact2 .fcol { padding:8px 10px; }
  body.compact3 .fcols { display:none; }
  body.compact3 .ftip { display:none; }
  body.compact3 .dim .bar { height:28px; }
  body.compact3 .vc-soul { gap:5px; padding-top:8px; margin-top:8px; }
  body.compact3 .fkey { padding:7px 10px; }
  body.compact3 .kt { font-size:var(--fs-aux); }
  body.compact3 .sec { margin-top:7px; }
  body.compact3 .tk { padding:7px 5px 7px; }
  body.compact3 .fmood { margin-top:8px; }

  /* ============ v6 · 星空漂流瓶（右上角小按钮 + 弹层） ============ */
  .bottlebtn { position:absolute; top:12px; right:12px; width:34px; height:34px; border:none;
    background:rgba(255,255,255,.14); border-radius:50%; font-size:var(--fs-body); line-height:34px;
    color:#fff; opacity:.55; backdrop-filter:blur(6px); cursor:pointer; z-index:5; }
  .bottlebtn:active { opacity:.9; transform:scale(.92); }
  .btabs { display:flex; gap:7px; margin-bottom:12px; }
  .btab { flex:1; border:none; background:rgba(var(--t-pri-rgb),.08); color:var(--ink2); font-size:var(--fs-aux);
    font-weight:700; padding:9px 0; border-radius:11px; }
  .btab.on { background:linear-gradient(135deg,var(--pri),var(--pri2)); color:#fff; box-shadow:0 3px 10px rgba(var(--t-pri-rgb),.3); }
  .barea { min-height:180px; }
  .bta { width:100%; min-height:86px; border:1.5px solid rgba(var(--t-pri-rgb),.18); border-radius:14px;
    padding:11px 12px; font-size:var(--fs-body2); font-family:inherit; resize:none; color:var(--ink1); background:rgba(255,255,255,.7); }
  .bta:focus { outline:none; border-color:var(--pri); }
  .bcnt { text-align:right; font-size:var(--fs-aux); color:var(--ink3); margin:5px 2px 10px; }
  .bbtn { width:100%; border:none; border-radius:13px; padding:12px 0; font-size:var(--fs-body2); font-weight:800;
    background:linear-gradient(135deg,var(--pri),var(--pri2)); color:#fff; box-shadow:0 4px 14px rgba(var(--t-pri-rgb),.35); }
  .bbtn.ghost { background:rgba(var(--t-pri-rgb),.09); color:var(--pri); box-shadow:none; }
  .bbtn+.bbtn { margin-top:9px; }
  .bcard { background:linear-gradient(160deg,#f4f0ff,#fff); border:1px solid rgba(var(--t-pri-rgb),.14);
    border-radius:16px; padding:18px 16px; text-align:center; }
  .bcard .bc-t { font-size:var(--fs-micro); color:var(--ink3); letter-spacing:2px; }
  .bcard .bc-x { font-size:var(--fs-body); line-height:1.7; margin-top:10px; color:var(--ink1); }
  .bcard .bc-r { margin-top:12px; padding-top:11px; border-top:1px dashed rgba(var(--t-pri-rgb),.2);
    font-size:var(--fs-aux); color:var(--ink2); line-height:1.65; }
  .bcard .bc-r b { color:var(--pri); font-size:var(--fs-micro); display:block; margin-bottom:3px; }
  .bnote { font-size:var(--fs-aux); color:var(--ink3); line-height:1.7; text-align:center; margin-top:10px; }
  .blist .bi { background:rgba(var(--t-pri-rgb),.05); border-radius:12px; padding:10px 12px; margin-bottom:8px; font-size:var(--fs-aux); line-height:1.6; }
  .blist .bi .st { font-size:var(--fs-micro); color:var(--pri); font-weight:700; }
  .blist .bi .st.gone { color:var(--ink3); }
  .blist .bi .rp { margin-top:6px; padding-top:6px; border-top:1px dashed rgba(var(--t-pri-rgb),.15); color:var(--ink2); font-size:var(--fs-aux); }
  .anc-name { font-size:var(--fs-card); font-weight:800; margin-top:2px; }
  .anc-role { font-size:var(--fs-aux); color:var(--ink3); margin-top:2px; }
  .anc-line { margin-top:11px; font-size:var(--fs-aux); color:var(--pri); font-weight:700; }

  /* ============ v6 · 闸门学习卡（本月太阳之旅点击） ============ */
  .mg { cursor:pointer; }
  .mg .n { color:inherit; }
  .gstudy .gy { background:linear-gradient(150deg,#fdf9ef,#fff); border:1px solid rgba(196,148,58,.18);
    border-radius:14px; padding:13px 14px; }
  .gstudy .gy .tag, .gstudy .gd .tag { display:inline-block; font-size:var(--fs-aux); font-weight:800; letter-spacing:1px;
    padding:2.5px 9px; border-radius:999px; margin-bottom:7px; }
  .gstudy .gy .tag { background:rgba(196,148,58,.14); color:#a07417; }
  .gstudy .gd .tag { background:rgba(var(--t-pri-rgb),.12); color:var(--pri); }
  .gstudy .gy .tx { font-size:var(--fs-aux); line-height:1.75; color:var(--ink1); }
  .gstudy .gd { background:linear-gradient(150deg,#f4f0ff,#fff); border:1px solid rgba(var(--t-pri-rgb),.15);
    border-radius:14px; padding:13px 14px; margin-top:10px; }
  .gstudy .gh { font-size:var(--fs-body2); font-weight:800; margin-bottom:6px; color:var(--ink1); }

  /* ============ v6 · 星历解锁 ============ */
  .starrow { margin-top:10px; display:flex; align-items:center; justify-content:space-between;
    background:linear-gradient(135deg,rgba(var(--t-pri-rgb),.09),rgba(var(--t-pri-rgb),.06)); border:1px solid rgba(var(--t-pri-rgb),.14);
    border-radius:12px; padding:10px 12px; cursor:pointer; }
  .starrow .l { font-size:var(--fs-aux); font-weight:700; color:var(--ink1); }
  .starrow .l small { display:block; font-weight:400; font-size:var(--fs-aux); color:var(--ink3); margin-top:2px; }
  .starrow .r { flex:none; font-size:var(--fs-aux); font-weight:800; color:#fff; background:linear-gradient(135deg,var(--pri),var(--pri2));
    border-radius:999px; padding:7px 13px; box-shadow:0 3px 10px rgba(var(--t-pri-rgb),.3); }
  .star-feats { margin:12px 0; }
  .star-feats .fi { display:flex; gap:9px; font-size:var(--fs-aux); line-height:1.65; color:var(--ink2); margin-bottom:8px; }
  .star-feats .fi .ic { flex:none; width:22px; height:22px; border-radius:8px; background:rgba(var(--t-pri-rgb),.1);
    display:flex; align-items:center; justify-content:center; font-size:var(--fs-aux); }
  .price { text-align:center; margin:14px 0 4px; }
  .price .p { font-size:var(--fs-hero); font-weight:900; color:var(--ink1); }
  .price .p small { font-size:var(--fs-aux); font-weight:600; color:var(--ink3); }

  /* ===== v67 · Life OS V2.0：老师的一句话 / 四觉察 2×2 / 今日流日 / 出图CTA / 口碑（规则 §19.3-§19.6） ===== */
  .sky .hi { font-size:var(--fs-aux); letter-spacing:2.4px; color:rgba(255,255,255,.72); }
  .sky h1 { font-size:var(--fs-page); line-height:var(--lh-page); }
  .sky .sub { font-size:var(--fs-module); font-weight:650; line-height:var(--lh-module); color:rgba(255,255,255,.94); }

  .tsay { padding:15px 24px 0; }
  .tsay .ts-q { font-size:var(--fs-body); line-height:var(--lh-body); color:var(--ink); }
  .tsay .ts-w { margin-top:10px; display:flex; align-items:center; justify-content:space-between; gap:10px; }
  .tsay .ts-w > span { font-size:var(--fs-aux); color:var(--ink3); }
  .tsay .ts-more { font-size:var(--fs-aux); color:var(--pri); padding:3px 0; }

  .about-q { font-size:var(--fs-body); line-height:var(--lh-body); color:var(--ink); padding:4px 0 14px;
    border-bottom:1px solid rgba(var(--t-pri-rgb),.12); }
  .about-row { display:grid; grid-template-columns:52px 1fr; gap:10px; padding:11px 0;
    border-bottom:1px solid rgba(var(--t-pri-rgb),.08); }
  .about-row .lb { font-size:var(--fs-aux); color:var(--gold); font-weight:600; }
  .about-row .tx { font-size:var(--fs-body); line-height:var(--lh-body); color:var(--ink2); }
  .about-note { padding-top:14px; font-size:var(--fs-aux); color:var(--ink3); }
  .about-note a { color:var(--pri); text-decoration:none; }

  /* v68：V2.1 已去掉四觉察的 2×2 白盒（.q4grid/.q4c），改为无框列表 .qlist/.qi */

  .today { padding:2px 4px 0; cursor:pointer; }
  .today .td-top { display:flex; align-items:baseline; justify-content:space-between; gap:10px; }
  .today .td-t { font-size:var(--fs-module); font-weight:650; line-height:var(--lh-module); color:var(--ink); }
  .today .td-d { font-size:var(--fs-aux); color:var(--ink3); }
  .today .td-lead { margin-top:11px; font-size:var(--fs-body); line-height:var(--lh-body); color:var(--ink); }
  .today .td-mood-t { margin-top:15px; font-size:var(--fs-aux); font-weight:600; letter-spacing:.4px; color:var(--gold); }
  .today .td-tip { margin-top:6px; font-size:var(--fs-body); line-height:var(--lh-body); color:var(--ink2); }
  .today .td-src { margin-top:13px; font-size:var(--fs-aux); color:var(--ink3); }
  .today .td-src b { color:var(--gold); font-weight:600; }
  .today .td-src small { font-size:inherit; opacity:.72; }
  .today .td-go { margin-top:13px; font-size:var(--fs-body); color:var(--pri); font-weight:500; }
  .today .td-off { display:none !important; }
  /* 保留但不在首页展开的模块（V2.1 §22.5：首页只留 5 件事，其余模块代码保留、入口各归其位） */
  #laterModules { display:none !important; }

  /* v70：今日生命卡 —— 首页的视觉呼吸点（V2.3 §24.6：真实照片 + 一句话，无框） */
  .lifecard { cursor:pointer; }
  .lifecard .lc-img { width:100%; padding-top:62%; border-radius:6px;
    background-size:cover; background-position:center; background-color:var(--tint); }
  .lifecard .lc-t { margin-top:14px; font-size:var(--fs-aux); letter-spacing:2px; color:var(--ink3); }
  .lifecard .lc-q { margin-top:8px; font-size:var(--fs-card); font-weight:600; line-height:var(--lh-card); color:var(--ink); }

  /* v68：出图 = 一屏唯一强按钮，实色、无渐变、无阴影（V2.1 §22.2 第 6/7 条） */
  .chartcta { display:block; margin:24px 2px 0; padding:21px 20px; border-radius:16px;
    background:var(--ink); color:#fff; text-decoration:none; }
  .chartcta:active { opacity:.88; }
  .chartcta .cc-t { display:block; font-size:var(--fs-aux); opacity:.62; }
  .chartcta .cc-b { display:block; margin-top:9px; font-size:var(--fs-card); font-weight:600; line-height:var(--lh-card); letter-spacing:.2px; }
  html[data-theme-dark="1"] .chartcta { background:var(--t-pri); color:var(--t-onpri,#fff); }

  .cardwrap.cw-late { margin:0; }

  .vh { margin-bottom:13px; }
  .vh .vh-t { font-size:var(--fs-module); font-weight:650; line-height:var(--lh-module); color:var(--ink); }
  .vh .vh-s { margin-top:7px; font-size:var(--fs-body); line-height:var(--lh-body); color:var(--ink2); }
  /* v68：首页口碑也去框，改成杂志式短名单（V2.1 §22.4） */
  .vlist { display:block; }
  .vcase { display:block; padding:19px 2px; border-bottom:1px solid rgba(0,0,0,.075);
    text-decoration:none; color:inherit; }
  .vcase:last-child { border-bottom:none; padding-bottom:8px; }
  .vcase:active { opacity:.6; }
  .vcase .vn { font-size:var(--fs-module); font-weight:650; line-height:var(--lh-module); color:var(--ink); }
  .vcase .vq { margin-top:8px; font-size:var(--fs-card); line-height:var(--lh-card); color:var(--ink); letter-spacing:.2px; }
  .vcase .vd { margin-top:9px; font-size:var(--fs-aux); line-height:var(--lh-body); color:var(--ink2);
    display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
  .vcase .vg { margin-top:11px; font-size:var(--fs-aux); color:var(--pri); }
  .vempty { font-size:var(--fs-aux); color:var(--ink3); }
  .vmore { display:block; margin-top:16px; font-size:var(--fs-aux); color:var(--pri); text-decoration:none; }
  html[data-theme-dark="1"] .vcase { border-bottom-color:rgba(255,255,255,.10); }


  /* 主题暗色适配：星空系深色底时，星空 hero 保持不变、卡片随主题 */
  html[data-theme-dark="1"] body { background:var(--bg); color:var(--ink); }
  html[data-theme-dark="1"] .sheet { background:var(--card); }
  html[data-theme-dark="1"] .flow { background:transparent; }
  html[data-theme-dark="1"] .tab { color:var(--ink3); }
  html[data-theme-dark="1"] .tab.on { color:var(--pri); }

  /* ============ v57 · 全局字号提升（反馈：整体字体偏小） ============ */
  .sky h1 { font-size:var(--fs-page); }
  .sky .sub { font-size:var(--fs-module); }
  .sky .hi { font-size:var(--fs-micro); }
  /* v89：hero 定稿三行字（比例对齐定稿图），漂流瓶+分享固定右上角 */
  .sky h1 { font-size:var(--fs-hero); line-height:1.25; letter-spacing:.5px; margin-top:12px; }
  .sky .sub { font-size:clamp(13px, 4vw, 16px); font-weight:500; color:rgba(255,255,255,.86); margin-top:12px; letter-spacing:.2px; }
  .fops.fops-tr { position:absolute; top:18px; right:16px; margin-top:0; }
  /* v141：hero 月亮句只显一行（超长省略号不折行）；流日入口 › 由 JS 绝对定位，与右上分享钮列对齐 */
  .sky .sub { padding-right:30px; }
  .sky .sub .sf-t { display:block; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  /* v145：月相小图标 + 月亮闸门胶囊（heroFlowSub 变容器，诗才是 .sf-t） */
  .sky .sub .subin { flex:1; min-width:0; display:flex; align-items:center; gap:4px; }
  .sky .sub .subin .sf-t { flex:1; min-width:0; display:block; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .sky .sub .mph { flex:none; width:17px; height:17px; filter:drop-shadow(0 0 5px rgba(255,240,200,.55)); }
  .sky .sub .mg { flex:none; font-weight:700; font-size:.82em; letter-spacing:.5px; color:rgba(255,255,255,.80); background:none; border:none; padding:0; width:auto; border-radius:0; } /* v151 扁平化：去胶囊框，贴月相 */
  .sky .fmore { position:absolute; z-index:5; }
  /* v141：愿力/天赋/理念 一行不变形（标签不许竖排、正文不许折行） */
  .soulrow { align-items:center; }
  .soulrow .lb { width:auto; white-space:nowrap; flex:none; }
  .soulrow .tx { display:block; -webkit-line-clamp:unset; -webkit-box-orient:unset; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; font-size:clamp(13px,3.8vw,15px); }
  /* v142：活的宇宙天气（纯装饰层：雨/雪/风/晴/雷/雾+昼夜；绝对定位不占布局，不影响任何数据） */
  .sky .axis { z-index:2; }
  .sky .fops.fops-tr { z-index:2; }
  .wxlyr { position:absolute; inset:0; pointer-events:none; overflow:hidden; }
  .wxd { position:absolute; top:-30px; display:block; }
  @keyframes wxfall { to { transform:translateY(500px); } }
  @keyframes wxdrift { 0% { margin-left:-7px; } 50% { margin-left:7px; } 100% { margin-left:-7px; } }
  .wxd.drop { width:1.5px; border-radius:2px; background:linear-gradient(180deg, rgba(255,255,255,0), rgba(255,255,255,.6)); animation:wxfall linear infinite; }
  .wxd.flake { border-radius:50%; background:rgba(255,255,255,.8); animation:wxfall linear infinite, wxdrift ease-in-out infinite; }
  .wxd.mote { border-radius:50%; background:rgba(255,255,255,.55); animation:wxfall linear infinite, wxdrift ease-in-out infinite; }
  @keyframes wxgust { 0% { transform:translateX(-70%); opacity:0; } 18% { opacity:1; } 80% { opacity:1; } 100% { transform:translateX(300%); opacity:0; } }
  .wxd.gust { height:1px; border-radius:2px; background:linear-gradient(90deg, rgba(255,255,255,0), rgba(255,255,255,.26), rgba(255,255,255,0)); animation:wxgust ease-in-out infinite; }
  .wxhaze { position:absolute; inset:0; background:linear-gradient(180deg, rgba(255,255,255,.07), rgba(255,255,255,.03) 55%, rgba(255,255,255,.06)); }
  .wxsun { position:absolute; right:-46px; top:-46px; width:190px; height:190px; border-radius:50%;
    background:radial-gradient(circle, rgba(255,222,150,.30), rgba(255,222,150,.10) 55%, transparent 72%); }
  @keyframes wxflash { 0%,92.5%,96.5%,100% { opacity:0; } 93.6% { opacity:.10; } 94.6% { opacity:.02; } 95.4% { opacity:.13; } }
  .wxflash { position:absolute; inset:0; background:#fff; opacity:0; animation:wxflash 9s infinite; }
  /* 昼夜：夜里星更亮，白天星更淡 */
  .sky.wx-night .star { opacity:.78; }
  .sky.wx-day .star { opacity:.30; }
  .vc-name { font-size:var(--fs-module); }
  .vc-tag { font-size:var(--fs-aux); }
  .soulrow { font-size:var(--fs-body2); }
  .soulrow .lb { font-size:var(--fs-aux); }
  .sec-hd .t { font-size:var(--fs-card); }
  .sec-hd .d { font-size:var(--fs-aux); }
  .tk .nm { font-size:var(--fs-aux); }
  .flow .hd .t { font-size:var(--fs-aux); }
  .ftheme .sun { font-size:var(--fs-module); }
  .ftheme .th { font-size:var(--fs-aux); }
  .fkey { font-size:var(--fs-aux); }
  .fmood .mf { font-size:var(--fs-aux); }
  .fcol .it { font-size:var(--fs-aux); }
  .ftip { font-size:var(--fs-aux); }
  .dim .sc { font-size:var(--fs-micro); }
  .dim .nm { font-size:var(--fs-micro); }
  .tab { font-size:var(--fs-aux); }
  .qk .nm { font-size:var(--fs-aux); }
  .foot { font-size:var(--fs-aux); }
  /* ============ v302 · 首页四组动线（分组条 + 折叠） ============ */
  .mgroup { display:flex; align-items:baseline; gap:10px; margin:6px 2px -4px; padding:0 2px; }
  .mgroup .mg-l { font-size:var(--fs-aux); font-weight:600; color:var(--ink); letter-spacing:1px; }
  .mgroup .mg-d { font-size:var(--fs-micro); color:var(--ink3); }
  .mgroup:before { content:""; width:3px; height:12px; border-radius:2px; background:var(--pri); opacity:.7; }
  .mfold-hd { display:flex; align-items:center; gap:8px; padding:11px 14px; border-radius:14px; background:var(--card); border:1px solid var(--line); cursor:pointer; }
  .mfold-hd .mf-t { flex:1; font-size:var(--fs-aux); font-weight:600; color:var(--ink); }
  .mfold-hd .mf-d { font-size:var(--fs-micro); color:var(--ink3); }
  .mfold-hd .mf-ar { font-size:var(--fs-micro); color:var(--pri); white-space:nowrap; }
  .mfolded > *:not(.mfold-hd) { display:none !important; }
  /* v305 老师端：客户线索提示条（仅自己收到线索时显示） */
  .leadbar { margin:10px 16px 12px; background:linear-gradient(135deg,#fdf6e8,#fbf3e0); border:1px solid #ecdcb8;
    border-radius:14px; padding:13px 15px; display:flex; align-items:center; gap:11px; cursor:pointer; }
  .leadbar .lb-i { font-size:20px; line-height:1; }
  .leadbar .lb-t { font-size:var(--fs-body2); font-weight:700; color:#7a5c1e; }
  .leadbar .lb-t b { color:#b3403a; font-weight:800; }
  .leadbar .lb-s { font-size:var(--fs-micro); color:#9a8055; margin-top:2px; }
  .leadbar .lb-go { margin-left:auto; font-size:var(--fs-aux); font-weight:700; color:#8a6d28; white-space:nowrap; }
  html[data-theme-dark="1"] .leadbar { background:#2a2418; border-color:#4a3d22; }
  html[data-theme-dark="1"] .leadbar .lb-t { color:#e8d19a; }
  html[data-theme-dark="1"] .leadbar .lb-s { color:#a89163; }

@keyframes wkSpin{to{transform:rotate(360deg)}}
/* ================= v310：胶囊导航 + 平台工具四列 + 功课脉冲 ================= */
.caprow { display:flex; gap:8px; overflow-x:auto; padding:0 0 2px; -webkit-overflow-scrolling:touch; scrollbar-width:none; }
.caprow::-webkit-scrollbar { display:none; }
.cap { flex:0 0 auto; border:1px solid rgba(var(--t-pri-rgb,108,83,201),.20); background:rgba(var(--t-pri-rgb,108,83,201),.07);
  color:var(--t-pri,#6c53c9); border-radius:999px; padding:9px 15px; font-size:12.5px; font-weight:700;
  cursor:pointer; white-space:nowrap; }
.cap:active { opacity:.65; }
.pgrid { display:grid; grid-template-columns:repeat(4,1fr); gap:10px; padding:2px 0; }
.pgrid a { position:relative; display:flex; flex-direction:column; align-items:center; gap:6px;
  background:var(--card,#fff); border-radius:14px; padding:12px 4px 10px; text-decoration:none;
  box-shadow:0 2px 10px rgba(60,40,20,.05); }
.pgrid a:active { opacity:.75; }
.pgrid .ic { width:40px; height:40px; border-radius:12px; display:flex; align-items:center; justify-content:center;
  font-size:16px; font-weight:800; color:#7a6a45; background:rgba(185,151,85,.12); }
.pgrid .nm { font-size:12px; font-weight:700; color:var(--ink,#3c3941); text-align:center; }
.pgrid a.hot { background:linear-gradient(135deg,#221f2b,#3a3348); }
.pgrid a.hot .nm { color:#e8cf9a; }
.pgrid a.hot .ic { background:rgba(232,207,154,.16); color:#e8cf9a; }
.pgrid .nw { position:absolute; top:-6px; right:-2px; background:#e05a4e; color:#fff; font-size:10px; font-weight:800;
  border-radius:10px; padding:2px 6px; }
@keyframes wkPulse310 { 0% { box-shadow:0 0 0 0 rgba(108,83,201,.35); } 100% { box-shadow:0 0 0 14px rgba(108,83,201,0); } }
.pulse310 { animation:wkPulse310 1s ease 2; border-radius:18px; }
/* v310b：胶囊行入星空——月相正下方，深色底配色；名片悬挂区在其下互不干扰 */
.sky .caprow { margin:22px 0 0; position:relative; z-index:2; }
.sky .caprow .cap { background:rgba(255,255,255,.13); border-color:rgba(255,255,255,.30); color:#fff; }
.sky .caprow .cap:active { background:rgba(255,255,255,.24); }

/* ================= v311：星空顶区回归简版（老板 2026-10-14） ================= */
/* ① 三入口去椭圆边框（纯文字）② 标题/月相句/三入口同一左基线 ③ 星空高度恢复到加胶囊行之前 */
.sky .caprow { margin:14px 0 0; gap:18px; }
.sky .caprow .cap { background:none; border:none; border-radius:0; padding:4px 2px; color:rgba(255,255,255,.90); font-size:13px; font-weight:600; letter-spacing:.4px; }
.sky .caprow .cap:active { background:none; opacity:.55; }
.sky { padding-bottom:80px; }

/* ================= v402：今日心情一句话卡（扁平化：无边框无底，基线对齐，分值 20px） ================= */
.moodcard { display:flex; align-items:baseline; gap:8px; margin:14px 0 0; position:relative; z-index:2;
  background:none; border:none; box-shadow:none; padding:4px 2px; cursor:pointer; }
.moodcard:active { opacity:.75; }
.moodcard .mc-l { flex:0 0 auto; display:flex; align-items:baseline; gap:5px; }
.moodcard .mc-k { font-size:12px; color:rgba(255,255,255,.62); font-weight:600; letter-spacing:.5px; white-space:nowrap; }
.moodcard .mc-s { white-space:nowrap; }
.moodcard .mc-s b { font-size:20px; font-weight:800; color:#fff; line-height:1; }
.moodcard .mc-s i { font-style:normal; font-size:11.5px; color:rgba(255,255,255,.62); margin-left:1px; }
.moodcard .mc-r { flex:1 1 auto; min-width:0; display:flex; align-items:baseline; gap:6px; }
.moodcard .mc-t { flex:1 1 auto; min-width:0; font-size:13px; color:rgba(255,255,255,.9); line-height:1.45;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.moodcard .mc-ar { flex:0 0 auto; color:rgba(255,255,255,.45); font-size:15px; font-weight:700; }
