/* source: inline-style-01 */
html.ui-booting{ background:#f7f4ef; }
  html.ui-booting body{ visibility:hidden; }
  :root{
    --screen-height: 100%;
    --keyboard-offset: 0px;
    --ios-pwa-bottom-bleed: 0px;
    --ref-width: 941px;
    --ref-height: 1672px;
    --font-en: "Cormorant Garamond", Georgia, serif;
    --font-cn: "Noto Serif SC", "Songti SC", "STSong", "SimSun", serif;
    --wall-light: none;
    --wall-harbor: none;
    --wall-default: var(--wall-light);
    --menu-wall-light: none;
    --menu-wall-harbor: none;
    --menu-wall-default: var(--menu-wall-light);
    --avatar-default: none;
    --human-avatar-default: linear-gradient(145deg, rgba(255,255,255,.85), rgba(249,210,74,.48));
    --profile-avatar-default: linear-gradient(145deg, rgba(255,255,255,.85), rgba(249,210,74,.48)); /* settings 顶卡专用,和聊天页头像分开存(乐乐点名) */
    /* ── PEARL TIDE · 珍珠潮汐(default) ── */
    --bg: #F7FAFC;
    --header-bg: #F7FAFC;
    --hairline: rgba(120,142,165,.24);
    --text: #253447;
    --text-soft: #5E7080;
    --text-faint: #8A99A8;
    --bubble-ai-bg: #ECEEF3;
    --bubble-ai-fg: #253447;
    --bubble-ai-line: transparent;
    --bubble-human-bg: #DFE5EE;
    --bubble-human-fg: #253447;
    --bubble-human-line: transparent;
    --accent: #4C6378;
    --send-bg: #2C4056;
    --tick: #7E93A4;
    --accent-fg: #ffffff;
    --think-flourish: rgba(99, 121, 142, 0.52);
    --think-label: #6A7E8E;
    --think-body: #56697A;
    --composer-bg: #EEF4FA;
    --field-bg: rgba(247,250,252,.92);
    --field-line: rgba(151,169,181,.18);
    --shadow: 0 18px 46px rgba(74, 93, 108, 0.10);
    --soft-shadow: 0 14px 34px rgba(86, 104, 118, 0.08);
    --scrim: linear-gradient(180deg, rgba(255,255,255,0.38), rgba(255,255,255,0.12) 30%, rgba(255,255,255,0.04) 68%, rgba(255,255,255,0.22));
    --header-h: clamp(56px, 10vw, 120px);
    --side-pad: clamp(16px, 4vw, 40px);
    --avatar-size: clamp(32px, 5vw, 48px);
    --bubble-radius: clamp(14px, 2vw, 20px);
    --composer-h: clamp(44px, 6vw, 72px);
    --motion-fast: 150ms;
    --motion-normal: 260ms;
    --ease-soft: cubic-bezier(0.22, 1, 0.36, 1);
    /* composer 占据的底部区域(含安全区/键盘):scroll 底 padding 与边缘渐隐共用同一来源,保持对齐 */
    --composer-zone: calc(var(--composer-h) + 16px + env(safe-area-inset-bottom) + var(--keyboard-offset));
    --edge-fade-top: clamp(24px, 5vw, 52px);
    --edge-fade-tail: clamp(16px, 3vw, 30px);
    /* profile / settings — frosted glass, blends into the wallpaper */
    --card-bg: rgba(244,248,250,.42);
    --card-line: rgba(150,168,182,.12);
    --card-shadow: 0 10px 28px rgba(70,92,108,.05);
    --seg-track: rgba(140,160,176,.11);
    --seg-thumb: rgba(255,255,255,.68);
    --seg-thumb-shadow: 0 2px 8px rgba(40,60,78,.08);
    --row-press: rgba(140,160,176,.09);
    --slider-track: rgba(143,162,176,.28);
    --slider-thumb: #44627b;
    --info-ring: rgba(143,162,176,.38);
    --status-dot: #5fbf8f;
    /* voice call (speaking overlay) */
    --call-glass-top: rgba(255,255,255,.46);
    --call-glass-bot: rgba(255,255,255,.20);
    --call-glass-edge: rgba(255,255,255,.58);
    --call-glass-hi: rgba(255,255,255,.72);
    --call-glass-glow: rgba(150,172,196,.20);
    --call-glass-shadow: 0 20px 50px rgba(74,93,108,.16);
    --call-scrim: rgba(64,82,102,.06);
    --call-hangup-bg: #cf8d92;
    --call-hangup-shadow: rgba(176,96,104,.34);
  }
  /* ── HARBOR · 海港(通用开源主题 / Tidal Echo) ── 中性冷调,供 fork 使用;只覆盖带色相变量,其余继承 PEARL TIDE */
  :root[data-theme="harbor"]{
      --wall-default: var(--wall-harbor);
      --menu-wall-default: var(--menu-wall-harbor);
      --bg: #F4F2EF;
      --header-bg: #F4F2EF;
      --hairline: rgba(74,93,108,.20);
      --text: #36404B;
      --text-soft: #5E6B78;
      --text-faint: #9197A0;
      --bubble-ai-bg: #EAE6E4;
      --bubble-ai-fg: #36404B;
      --bubble-human-bg: #E1E0E3;
      --bubble-human-fg: #36404B;
      --accent: #4A5D6C;
      --send-bg: #4A5D6C;
      --tick: #7E8E9C;
      --accent-fg: #ffffff;
      --think-flourish: rgba(74, 93, 108, 0.48);
      --think-label: #5E6B78;
      --think-body: #4F5D6A;
      --composer-bg: #EFEBE8;
      --field-bg: rgba(244,242,239,.92);
      --slider-thumb: #4A5D6C;
      --status-dot: #6FA98C;
  }

  *{ box-sizing: border-box; -webkit-tap-highlight-color: transparent; }
  html, body{ margin:0; padding:0; height:100%; overflow:hidden; overscroll-behavior:none; }
  /* PWA standalone: 100% 继承链拿到真实全屏高度,env(safe-area-inset-bottom) 正常返回 */
  #app{ height:100%; min-height:100%; }
  body{ position: fixed; inset: 0; width: 100%;
    background: var(--bg);
    color: var(--text);
    font-family: var(--font-cn);
    font-size: clamp(14px, 1.45vw, 16px);
    line-height: 1.5;
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
    overscroll-behavior: none;
  }

  .app{
    display: flex;
    flex-direction: column;
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    z-index: 1;
    width: min(100vw, var(--ref-width));
    margin: 0 auto;
    overflow: hidden;
  }
  .wall{
    position:fixed;
    inset:0;
    width:100vw;
    height:var(--screen-height);
    z-index:0;
    background-color: var(--bg);
    background-image: var(--wall-default);
    background-size: cover; background-position: center;
    transform: translateZ(0);
    -webkit-transform: translateZ(0);
  }
  .wall::after{
    content:""; position:absolute; inset:0; background: var(--scrim); pointer-events:none;
  }
  .topbar, .scroll, .composer{ position: relative; z-index: 1; }

  /* ── Header (floating frosted pill + corner avatar) ── */
  .topbar{
    position: sticky; top: 0; z-index: 10;
    display: flex; align-items: center; justify-content: center;
    height: calc(var(--header-h) + env(safe-area-inset-top));
    padding: calc(env(safe-area-inset-top) + 8px) var(--side-pad) 10px;
    border-bottom: 1px solid var(--hairline);
    pointer-events: none;
  }
  .topbar > *{ pointer-events: auto; }
  .peerpill{
    display:flex; flex-direction:column; align-items:center; line-height:1.15;
    background: transparent;
    border: none;
    border-radius: 0;
    padding: 0 76px;
  }
  .peerpill .name{
    font-family: "Songti SC", "Noto Serif SC", "STSong", "SimSun", serif;
    font-size: clamp(18px, 3vw, 28px);
    font-weight: 500;
    color: var(--text);
    letter-spacing: 0;
    text-shadow: 0 1px 18px rgba(255,255,255,0.3);
  }
  .peerpill .status{
    font-family: var(--font-en), var(--font-cn);
    font-size: clamp(12px, 1.8vw, 16px);
    color: var(--text-soft);
    margin-top: 4px;
    letter-spacing: 0;
  }
  .app[data-conn="reconnecting"] .peerpill .status{ color:#9a8061; }
  .peerpill .status.typing{
    color: #4f9fda;
    font-weight: 500;
    text-shadow: 0 0 16px rgba(79,159,218,.24);
    display: inline-flex; align-items: center;
  }
  .typing-dots{ display:inline-flex; align-items:center; gap:3px; margin-left:6px; }
  .typing-dots i{ width:4px; height:4px; border-radius:50%; background:currentColor; animation: typingDot 1.25s ease-in-out infinite; }
  .typing-dots i:nth-child(2){ animation-delay:.16s; }
  .typing-dots i:nth-child(3){ animation-delay:.32s; }
  @keyframes typingDot{ 0%,70%,100%{ transform:translateY(0); opacity:.4; } 35%{ transform:translateY(-3px); opacity:1; } }
  .backbtn{
    position:absolute; left: calc(var(--side-pad) + 4px); top: calc(env(safe-area-inset-top) + clamp(14px, 2.5vw, 36px));
    width:36px; height:36px; border-radius:50%; padding:0; flex:none; cursor:pointer;
    border: none; background: transparent;
    color: var(--text); display:grid; place-items:center;
    transition: transform .15s ease;
  }
  .backbtn:active{ transform: scale(.9); }
  .backbtn svg{ width:22px; height:22px; display:block; margin-left:-2px; }
  .header-actions{
    position:absolute;
    right: calc(var(--side-pad) - 2px);
    top: calc(env(safe-area-inset-top) + clamp(14px, 2.5vw, 36px));
    display:flex;
    align-items:center;
    justify-content:flex-end;
    gap: clamp(8px, 2vw, 14px);
    height:32px;
  }
  .topbtn{
    width:32px;
    height:32px;
    border:0;
    border-radius:50%;
    padding:0;
    background:transparent;
    color: var(--text);
    display:grid;
    place-items:center;
    cursor:pointer;
    transition: transform .15s ease;
  }
  .topbtn:active{ transform: scale(.9); }
  .topbtn svg{ width:20px; height:20px; display:block; }
  .topbtn.more svg{ width:20px; height:20px; }
  .topbtn.terminal.active{ color:var(--accent); }
  /* 隐藏桌面同步专用键位 (手机用不到) — 需要时把 display:none 删掉 */
  .topbtn.sessions, .topbtn.terminal{ display:none; }
  @media (min-width: 720px){
    .topbtn.sessions, .topbtn.terminal{ display:grid; }
  }
  .session-pop{
    position:absolute;
    right: calc(var(--side-pad) + 34px);
    top: calc(env(safe-area-inset-top) + clamp(58px, 8vw, 82px));
    z-index:30;
    width:min(82vw, 320px);
    max-height:min(58vh, 480px);
    overflow:auto;
    padding:10px;
    border-radius:18px;
    background:var(--panel-bg);
    border:1px solid var(--card-line);
    box-shadow:0 18px 50px rgba(30,45,62,.18);
    -webkit-backdrop-filter:blur(18px);
    backdrop-filter:blur(18px);
  }
  .session-pop[hidden]{ display:none !important; }
  .session-head{ display:flex; align-items:center; justify-content:space-between; gap:8px; padding:4px 2px 8px; }
  .session-title{ font-size:12px; color:var(--text-faint); font-family:var(--font-en), var(--font-cn); }
  .session-new{
    border:1px solid var(--seg-line); border-radius:999px; padding:5px 9px;
    background:var(--seg-track); color:var(--text-soft); font:inherit; font-size:11.5px; cursor:pointer;
  }
  .session-list{ display:flex; flex-direction:column; gap:2px; }
  .session-item{
    border:0; width:100%; background:transparent; color:var(--text);
    display:grid; grid-template-columns:1fr auto; align-items:center; gap:8px;
    padding:10px 9px; border-radius:12px; text-align:left; cursor:pointer; font:inherit;
  }
  .session-item.active{ background:var(--seg-track); }
  .session-item:active{ transform:scale(.992); }
  .session-main{ min-width:0; display:flex; flex-direction:column; align-items:flex-start; gap:3px; }
  .session-name{ font-size:14px; line-height:1.25; }
  .session-meta{ font-size:11px; color:var(--text-faint); font-family:var(--font-en), var(--font-cn); }
  .session-rename{
    border:0; background:transparent; color:var(--text-faint); width:28px; height:28px;
    border-radius:50%; display:grid; place-items:center; cursor:pointer; padding:0;
  }
  .session-rename:hover{ color:var(--accent); background:var(--seg-track); }
  .session-rename svg{ width:15px; height:15px; display:block; }
  .terminal-panel{
    position:fixed;
    inset:0;
    z-index:260;
    display:flex;
    flex-direction:column;
    background:#050607;
    color:#d7f7df;
    font-family:"SFMono-Regular", Consolas, "Cascadia Mono", monospace;
    transform:translateX(100%);
    transition:transform .24s cubic-bezier(.2,.8,.2,1);
  }
  .terminal-panel.open{ transform:translateX(0); }
  .terminal-top{
    flex:none;
    min-height:calc(52px + env(safe-area-inset-top));
    display:flex;
    align-items:center;
    gap:10px;
    padding:calc(env(safe-area-inset-top) + 8px) 12px 8px;
    border-bottom:1px solid rgba(157,255,188,.18);
    background:#080a0b;
  }
  .terminal-back{
    flex:none;
    width:34px;
    height:34px;
    border:0;
    border-radius:50%;
    background:transparent;
    color:#d7f7df;
    display:grid;
    place-items:center;
    padding:0;
    cursor:pointer;
  }
  .terminal-back:active{ transform:scale(.9); }
  .terminal-back svg{ width:21px; height:21px; display:block; }
  .terminal-title{ min-width:0; display:flex; flex-direction:column; gap:2px; line-height:1.15; }
  .terminal-title strong{ font-size:14px; font-weight:600; color:#effff4; }
  .terminal-title span{
    font-size:11px;
    color:rgba(215,247,223,.62);
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
  }
  .terminal-log{
    flex:1 1 auto;
    overflow:auto;
    padding:14px 14px 18px;
    font-size:13px;
    line-height:1.55;
    white-space:pre-wrap;
    overflow-wrap:anywhere;
  }
  .term-entry{ margin:0 0 13px; }
  .term-user{ color:#9dffbc; }
  .term-assistant{ color:#d7f7df; }
  .term-tool{
    color:#b6d6ff;
    border-left:2px solid rgba(126,174,255,.45);
    padding-left:10px;
  }
  .term-muted{ color:rgba(215,247,223,.48); }
  .term-cmd{ color:#9dffbc; }
  .term-err{ color:#ffb0a3; }
  .terminal-form{
    flex:none;
    display:flex;
    align-items:flex-end;
    gap:9px;
    padding:10px 12px calc(10px + env(safe-area-inset-bottom));
    border-top:1px solid rgba(157,255,188,.18);
    background:#080a0b;
  }
  .terminal-prompt{ flex:none; color:#9dffbc; font-size:15px; line-height:34px; }
  .terminal-input{
    flex:1 1 auto;
    min-width:0;
    max-height:120px;
    border:0;
    outline:0;
    resize:none;
    background:transparent;
    color:#effff4;
    font:inherit;
    font-size:15px;
    line-height:1.45;
    padding:6px 0;
  }
  .terminal-input::placeholder{ color:rgba(215,247,223,.34); }
  .terminal-send{
    flex:none;
    width:34px;
    height:34px;
    border:1px solid rgba(157,255,188,.34);
    border-radius:50%;
    background:rgba(157,255,188,.1);
    color:#d7f7df;
    display:grid;
    place-items:center;
    padding:0;
    cursor:pointer;
  }
  .terminal-send:active{ transform:scale(.92); }
  .terminal-send svg{ width:18px; height:18px; display:block; }
  .avatar{
    position:absolute; right: calc(var(--side-pad) - 3px); top: calc(env(safe-area-inset-top) + clamp(14px, 2.5vw, 36px));
    width: var(--avatar-size); height: var(--avatar-size); border-radius:50%; padding:0; flex:none; cursor:pointer;
    border: none;
    background-image: var(--avatar-default);
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
    overflow: hidden;
    box-shadow: 0 12px 24px rgba(24,46,67,0.16);
  }
  .avatar:focus-visible,
  .backbtn:focus-visible,
  button:focus-visible,
  textarea:focus-visible,
  input:focus-visible{
    outline: 2px solid var(--accent);
    outline-offset: 3px;
  }

  /* ── Messages ── */
  .scroll{
    flex: 1 1 auto;
    overflow-y: auto;
    overflow-x: hidden;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior: contain;
    overflow-anchor: none;
    padding: clamp(14px, 2.4vw, 28px) var(--side-pad) var(--composer-zone);
    display: flex; flex-direction: column;
    transition: padding-bottom .28s cubic-bezier(.2,.8,.2,1);
    /* 边缘渐隐:顶部一段、底部对齐 composer 上沿一段,消息滚到边缘自然淡出 */
    -webkit-mask-image: linear-gradient(to bottom, transparent 0, #000 var(--edge-fade-top), #000 calc(100% - var(--composer-zone)), transparent calc(100% - var(--composer-zone) + var(--edge-fade-tail)));
    mask-image: linear-gradient(to bottom, transparent 0, #000 var(--edge-fade-top), #000 calc(100% - var(--composer-zone)), transparent calc(100% - var(--composer-zone) + var(--edge-fade-tail)));
    -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat;
  }
  .scroll::-webkit-scrollbar{ width:0; height:0; }
  .v-spacer{
    flex: 0 0 auto;
    width: 100%;
    min-height: 0;
    pointer-events: none;
  }

  .day{
    align-self: center;
    margin: 0;
    font-family: var(--font-en), var(--font-cn);
    font-size: clamp(12px, 1.6vw, 16px); color: var(--text-faint);
    padding: 0;
    border-radius: 0;
    background: transparent;
    border: none;
  }

  .row{ display:flex; position:relative; margin-top: clamp(14px, 2.2vw, 28px); }
  .day + .row{ margin-top: clamp(12px, 1.8vw, 20px); }
  .new-divider{
    display:flex;
    align-items:center;
    justify-content:center;
    gap: clamp(16px, 2.4vw, 24px);
    margin: clamp(16px, 2.4vw, 28px) 0 clamp(12px, 1.8vw, 20px);
    color: var(--text-faint);
    font-family: var(--font-en), var(--font-cn);
    font-size: clamp(12px, 1.6vw, 16px);
    line-height:1;
    letter-spacing:0;
  }
  .new-divider::before,
  .new-divider::after{
    content:"";
    width: clamp(94px, 24vw, 226px);
    height:1px;
    background: var(--hairline);
  }
  .row.grouped{ margin-top: clamp(4px, 0.8vw, 8px); }
  .row.human{ justify-content: flex-end; }
  .row.ai{ justify-content: flex-start; padding-left: calc(var(--avatar-size) + clamp(10px, 1.6vw, 16px)); }
  .row.ai::before{
    content:"";
    position:absolute;
    left:0;
    top: clamp(5px, 1vw, 9px);
    width: var(--avatar-size);
    height: var(--avatar-size);
    border-radius: 50%;
    background-image: var(--avatar-default);
    background-size: cover;
    background-position: center;
    box-shadow: 0 12px 24px rgba(24,46,67,0.14);
  }

  .bubble{
    max-width: min(61vw, 506px);
    padding: clamp(8px, 1.05vw, 12px) clamp(13px, 1.65vw, 18px) clamp(8px, 1.1vw, 13px);
    border-radius: var(--bubble-radius);
    position: relative;
    font-family: var(--font-cn);
    font-size: clamp(14px, 1.55vw, 16px); line-height: 1.58;
    word-wrap: break-word;
    overflow-wrap: break-word;
    animation: pop .24s cubic-bezier(.2,.8,.2,1) both;
  }
  .row[data-vkey] .bubble,
  .row[data-vkey] .think-block{ animation: none; }
  @keyframes pop{ from{ transform: translateY(5px) scale(.99);} to{ transform:none;} }
  /* 新消息入场:轻微弹性,只对刚发/刚收到那条播一次(虚拟列表复用不重播,JS 控 enter class) */
  .row[data-vkey].enter-human .bubble{ transform-origin: bottom right; animation: enterHuman .44s cubic-bezier(.34,1.46,.5,1) both; }
  .row[data-vkey].enter-ai .bubble{ transform-origin: bottom left; animation: enterAi .44s cubic-bezier(.34,1.46,.5,1) both; }
  @keyframes enterHuman{ from{ transform: translate(6px, 9px) scale(.95); opacity:0; } 55%{ opacity:1; } to{ transform:none; opacity:1; } }
  @keyframes enterAi{ from{ transform: translate(-6px, 9px) scale(.95); opacity:0; } 55%{ opacity:1; } to{ transform:none; opacity:1; } }
  .row.ai .bubble{
    background: var(--bubble-ai-bg);
    color: var(--bubble-ai-fg);
    border: 0;
    box-shadow: 0 10px 28px rgba(78, 94, 108, 0.08);
  }
  .row.human .bubble{
    background: var(--bubble-human-bg);
    color: var(--bubble-human-fg);
    border: 0;
    box-shadow: 0 10px 28px rgba(78, 94, 108, 0.08);
  }
  /* 每段最后一条:外下角收一个小尖(多气泡时只给最后一个气泡) */
  .row.ai.tail .bubble.bubble-tail{ border-bottom-left-radius: 2px; }
  .row.human.tail .bubble.bubble-tail{ border-bottom-right-radius: 2px; }
  /* AI 一条回复按空行切成的多个小气泡:段与段之间留一点呼吸 */
  .row .bubble + .bubble{ margin-top: clamp(5px, 0.9vw, 9px); }
  /* 入场时多个小气泡逐个蹦出(--bi 由 JS 按气泡序号写入) */
  .row[data-vkey].enter-ai .bubble{ animation-delay: calc(var(--bi, 0) * 70ms); }

  .bubble .txt{ white-space: normal; }
  .bubble.has-att{ display:flex; flex-direction:column; gap:6px; }
  .bubble.att-only{ background:transparent !important; padding:0 !important; box-shadow:none !important; }
  .att-img-link{ display:block; line-height:0; border-radius:14px; overflow:hidden; width:min(64vw,260px); aspect-ratio:var(--att-ratio, 1.04); max-height:340px; background:rgba(125,128,135,.10); }
  .att-img{ display:block; width:100%; height:100%; object-fit:cover; border-radius:14px; }
  .att-file{ display:flex; align-items:center; gap:10px; padding:9px 11px; min-width:170px; max-width:250px; text-decoration:none; color:inherit; background:rgba(125,128,135,.12); border-radius:12px; }
  .att-file-ic{ flex:0 0 auto; width:36px; height:36px; display:grid; place-items:center; border-radius:9px; background:rgba(125,128,135,.20); }
  .att-file-ic svg{ width:20px; height:20px; opacity:.85; }
  .att-file-meta{ display:flex; flex-direction:column; min-width:0; }
  .att-file-name{ font-size:13px; font-weight:600; line-height:1.3; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .att-file-size{ font-size:11px; opacity:.6; margin-top:2px; }
  .att-uploading{ opacity:.62; }
  .att-img-dead img{ display:none; }
  .att-img-dead::after{ content:"⚠ 图片已失效"; display:inline-block; padding:16px 20px; font-size:12px; color:var(--text-faint); background:rgba(125,128,135,.14); border-radius:14px; }
  .att-failed{ outline:1.5px solid #e3534d; outline-offset:1px; }
  .bubble .txt a{ color: inherit; text-decoration: underline; text-underline-offset: 2px; }
  .bubble .txt code{
    font-family: ui-monospace, "SF Mono", Menlo, monospace; font-size: .92em;
    background: rgba(120,100,80,0.14); padding: 1px 5px; border-radius: 5px;
  }
  /* Claude 风格:**bold** = 粗体 + 略大字号,跟正文明显区分 */
  .bubble .txt strong{ font-weight: 700; font-size: 1.08em; letter-spacing: -0.005em; }
  .bubble .txt em{ font-style: italic; }
  .term-entry strong{ font-weight: 700; font-size: 1.08em; letter-spacing: -0.005em; }
  .term-entry em{ font-style: italic; }
  .usage-line{ margin-top: 6px; padding: 4px 8px; font-size: 11.5px; line-height: 1.45;
               color: var(--text-faint); opacity: .82; letter-spacing: .01em;
               background: rgba(120,100,80,0.07); border-radius: 6px;
               font-family: ui-monospace, "SF Mono", Menlo, monospace; }
  .meta{
    display:inline; margin-left: clamp(10px, 1.4vw, 16px); white-space: nowrap;
    font-family: var(--font-en), var(--font-cn);
    font-size: clamp(11px, 1.3vw, 14px); color: var(--text-faint); user-select:none;
    vertical-align: baseline;
  }
  .meta .tick{ color: var(--tick); margin-left: 7px; letter-spacing:0; }
  .meta .state{ color: var(--accent); }
  .meta .fail{ color:#c0533f; cursor:pointer; }
  .row.human .meta,
  .row.ai .meta{ color: var(--text-faint); }
  .row.human .meta .tick,
  .row.ai .meta .tick{ color: var(--tick); }
  /* 发送中:小时钟,转完即送达 → 同位换成 ✓✓ */
  .meta .tick.clock{ color: var(--tick); }
  .meta .tick.clock svg{ width: 1.05em; height: 1.05em; vertical-align: -0.18em; }

  /* ── thinking ── collapsed follows AI bubble; expanded becomes a quiet reading section ── */
  .row.think{
    justify-content: flex-start;
    padding-left: calc(var(--avatar-size) + clamp(10px, 1.6vw, 16px));
    padding-right: 0;
    margin-top: clamp(7px, 1.2vw, 12px);
    margin-bottom: clamp(10px, 1.8vw, 18px);
  }
  .row.think.think-open{
    justify-content: center;
    padding-left: 0;
    padding-right: 0;
    margin-top: clamp(20px, 3.2vw, 34px);
    margin-bottom: clamp(18px, 2.8vw, 28px);
  }
  .think-block{
    width: min(61vw, 506px);
    max-width: min(61vw, 506px);
    color: var(--think-body);
    text-align: left;
    animation: pop .24s cubic-bezier(.2,.8,.2,1) both;
  }
  .think-block.open{
    width: 100%;
    max-width: min(100%, 760px);
    text-align: center;
  }
  .think-toggle{
    appearance: none;
    -webkit-appearance: none;
    width: auto;
    max-width: 100%;
    padding: 0;
    border: 0;
    background: transparent;
    color: inherit;
    font: inherit;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
  }
  .think-block.open .think-toggle{
    width: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: clamp(9px, 1.8vw, 14px);
  }
  .think-toggle:hover .think-caption{ color: var(--accent); }
  .think-toggle:active{ transform: translateY(1px); }
  .think-rule{
    display: none;
    position: relative;
    width: 100%;
    height: 1px;
    color: var(--think-flourish);
  }
  .think-block.open .think-rule{ display: block; }
  .think-rule::before{
    content: "";
    position: absolute;
    left: clamp(22px, 6vw, 64px);
    right: clamp(22px, 6vw, 64px);
    top: 0;
    height: 1px;
    background: linear-gradient(90deg, transparent, var(--think-flourish) 16%, var(--think-flourish) 84%, transparent);
    opacity: .46;
  }
  .think-caption{
    display: inline-flex;
    align-items: center;
    justify-content: flex-start;
    gap: 6px;
    color: var(--think-label);
    font-family: var(--font-en), var(--font-cn);
    font-size: clamp(12px, 1.38vw, 14px);
    line-height: 1.1;
    letter-spacing: .08em;
    transition: color var(--motion-fast) var(--ease-soft);
  }
  .think-caption-star,
  .think-state{
    color: var(--think-flourish);
    font-size: 1.18em;
    line-height: 1;
    transform: translateY(-.02em);
  }
  .think-block.open .think-caption-star{ display: none; }
  .think-state::before{ content: "✧"; }
  .think-block.open .think-state::before{ content: "✦"; }
  .think-body[hidden]{ display: none !important; }
  .think-body{
    margin-top: clamp(12px, 2.2vw, 20px);
  }
  .think-text{
    width: min(82%, 520px);
    margin: 0 auto clamp(16px, 2.6vw, 24px);
    color: var(--think-body);
    font-family: var(--font-cn);
    font-size: clamp(12px, 1.25vw, 13.5px);
    line-height: 1.72;
    text-align: center;
    white-space: normal;
    overflow-wrap: break-word;
  }
  .think-starline{
    position: relative;
    width: 100%;
    height: 24px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--think-flourish);
  }
  .think-starline::before,
  .think-starline::after{
    content: "";
    position: absolute;
    top: 50%;
    height: 1px;
    background: linear-gradient(90deg, transparent, var(--think-flourish) 15%, var(--think-flourish) 85%, transparent);
    opacity: .5;
  }
  .think-starline::before{ left: 0; right: calc(50% + 34px); }
  .think-starline::after{ left: calc(50% + 34px); right: 0; }
  .think-star{
    position: relative;
    z-index: 1;
    color: var(--think-flourish);
    display: grid;
    place-items: center;
  }
  .think-star svg{ width: 24px; height: 24px; display: block; }
  .think-copy{ min-width: 0; }
  .think-copy a{ color: inherit; text-decoration: underline; text-underline-offset: 2px; }
  .think-copy code{
    font-family: ui-monospace, "SF Mono", Menlo, monospace;
    font-size: .9em;
    background: rgba(120,100,80,0.10);
    padding: 1px 5px;
    border-radius: 5px;
  }

  /* ── act ── the AI's action chip: a quiet "what it just did", optionally expand to see raw tool calls ──
     视觉与 thinking 同一族(--think-* 配色),但更小、更收,贴在头像缝隙里,不抢气泡 ── */
  .row.act{
    justify-content: flex-start;
    padding-left: calc(var(--avatar-size) + clamp(10px, 1.6vw, 16px));
    padding-right: clamp(12px, 4vw, 40px);
    margin-top: clamp(4px, 0.9vw, 9px);
    margin-bottom: clamp(4px, 0.9vw, 9px);
  }
  .act-block{
    max-width: min(80vw, 470px);
    animation: pop .24s cubic-bezier(.2,.8,.2,1) both;
  }
  .act-toggle{
    appearance: none; -webkit-appearance: none;
    margin: 0; padding: 2px 0; border: 0; background: transparent;
    color: inherit; font: inherit; cursor: pointer; text-align: left;
    max-width: 100%;
    display: inline-flex; align-items: baseline; gap: 7px;
  }
  .act-toggle.bare{ cursor: default; }
  .act-toggle:focus-visible{ outline: none; }
  .act-glyph{
    flex: none;
    color: var(--think-flourish);
    font-size: 1.04em; line-height: 1;
    transform: translateY(.06em);
  }
  .act-label{
    color: var(--think-label);
    font-family: var(--font-cn);                /* 统一宋体:--font-en 末尾的通用 serif 会先吃掉 CJK→iOS 回退黑体 */
    font-size: clamp(12px, 1.32vw, 13.5px);
    line-height: 1.46;
    letter-spacing: .02em;
  }
  /* 展开指示:沿用 thinking 的空心星 ✧(收起)→ 实心 ✦(展开),比"· 展开"文字更轻、不突兀 */
  .act-state{
    flex: none;
    color: var(--think-flourish);
    font-size: 1.1em;
    line-height: 1;
    transform: translateY(.02em);
    transition: color var(--motion-fast) var(--ease-soft);
  }
  .act-state::before{ content: "✧"; }
  .act-block.open .act-state::before{ content: "✦"; }
  .act-toggle:hover .act-state{ color: var(--accent); }
  .act-toggle:hover .act-label{ color: var(--think-body); }
  .act-toggle:active{ transform: translateY(1px); }
  .act-detail[hidden]{ display: none !important; }
  .act-detail{
    margin-top: 8px;
    border-radius: 12px;
    background: rgba(127,127,127,0.08);
    border: 1px solid var(--field-line);
    padding: clamp(9px, 1.6vw, 13px) clamp(11px, 1.8vw, 14px);
    font-family: ui-monospace, "SF Mono", Menlo, Consolas, monospace;
    font-size: 12px; line-height: 1.6;
    color: var(--think-body);
    overflow-x: auto;
    animation: pop .2s cubic-bezier(.2,.8,.2,1) both;
  }
  .act-step + .act-step{
    margin-top: 7px; padding-top: 7px;
    border-top: 1px dashed var(--field-line);
  }
  .act-line{ white-space: pre-wrap; overflow-wrap: anywhere; }
  .act-k{ color: var(--text-faint); user-select: none; }
  .act-v{ color: var(--think-body); }


  /* ── Composer ── */
  .composer{
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 100;
    width: min(100vw, var(--ref-width));
    margin: 0 auto;
    display:flex; align-items:center; gap: clamp(6px, 1vw, 12px);
    background: transparent; border:none;
    padding: 0 var(--side-pad) clamp(10px, 1.6vw, 18px);
    padding-bottom: calc(clamp(10px, 1.6vw, 18px) + env(safe-area-inset-bottom));
    transform: translate3d(0, calc(-1 * var(--keyboard-offset)), 0);
    -webkit-transform: translate3d(0, calc(-1 * var(--keyboard-offset)), 0);
    transition: transform .28s cubic-bezier(.2,.8,.2,1);
  }
  .floatbtn{
    flex:none; width: clamp(36px, 5vw, 48px); height: clamp(36px, 5vw, 48px); border-radius:50%;
    border: none; background: transparent;
    color: var(--accent); display:grid; place-items:center; cursor:pointer; padding:0;
    transition: transform .15s ease, color .2s ease;
  }
  .floatbtn:active{ transform: scale(.9); color: var(--text); }
  .floatbtn:hover{ color: var(--text); }
  .floatbtn svg{ width: clamp(20px, 2.8vw, 28px); height: clamp(20px, 2.8vw, 28px); display:block; }
  .floatbtn.send{
    background: var(--send-bg);
    color:#ffffff;
    box-shadow: 0 16px 32px rgba(41, 60, 78, 0.22);
  }
  .floatbtn.send:hover{ color:#ffffff; }
  .floatbtn.send:active{ transform: scale(.97); }      /* 发送键按压:轻收 3%(比通用 .floatbtn 的 .9 克制) */
  @keyframes send-go{ from{ transform: scale(.96); } to{ transform: scale(1); } }
  .floatbtn.send.send-go{ animation: send-go .22s cubic-bezier(.2,.8,.2,1); }
  @media (prefers-reduced-motion: reduce){ .floatbtn.send.send-go{ animation: none; } }
  .composer .field{
    flex:1 1 auto; display:flex; align-items:center; gap: clamp(4px, 0.8vw, 10px);
    background: var(--field-bg);
    border: 1px solid var(--field-line);
    border-radius: 999px;
    padding: clamp(4px, 0.6vw, 8px) clamp(8px, 1.2vw, 14px) clamp(4px, 0.6vw, 8px) clamp(10px, 1.5vw, 16px);
    min-height: clamp(42px, 5.5vw, 56px);
    box-shadow: var(--shadow);
    transition: border-color .2s ease;
  }
  .composer .field:focus-within{ border-color: var(--field-line); }
  .composer textarea:focus,
  .composer textarea:focus-visible,
  .composer button:focus-visible{
    outline: none;
  }
  textarea{
    flex:1 1 auto; border:none; outline:none; resize:none; background:transparent;
    color: var(--text); font-family: var(--font-en), var(--font-cn); font-size: clamp(15px, 2vw, 18px); line-height:1.35;
    max-height: 110px; padding: 6px 0; margin:0;
  }
  textarea::placeholder{ color: var(--text-faint); opacity: 1; }
  .emojibtn{
    flex:none; width: clamp(28px, 3.8vw, 38px); height: clamp(28px, 3.8vw, 38px); border:none; background:transparent;
    color: var(--accent); display:grid; place-items:center; cursor:pointer; padding:0;
    transition: transform .15s ease, color .2s ease;
  }
  .emojibtn:active{ transform: scale(.85); color: var(--text); }
  .emojibtn:hover{ color: var(--text); }
  .emojibtn svg{ width: clamp(22px, 3vw, 30px); height: clamp(22px, 3vw, 30px); display:block; }
  /* ── 回到最新 · 翻历史时来新消息,底部悬浮一枚安静的半透明胶囊 ── */
  .newmsg-pill{
    position: fixed; left: 50%; z-index: 90;
    bottom: calc(clamp(78px, 13vw, 96px) + env(safe-area-inset-bottom));
    display: inline-flex; align-items: center; gap: 5px;
    padding: 7px 14px 7px 11px; border: none; border-radius: 999px;
    background: rgba(34, 46, 60, .52); color: #fff;
    font-family: var(--font-en), var(--font-cn); font-size: 13px; line-height: 1; letter-spacing: .01em;
    -webkit-backdrop-filter: blur(10px) saturate(1.2); backdrop-filter: blur(10px) saturate(1.2);
    box-shadow: 0 8px 24px rgba(18, 28, 40, .26);
    cursor: pointer; opacity: 0; pointer-events: none;
    transform: translate3d(-50%, calc(8px - var(--keyboard-offset, 0px)), 0);
    transition: opacity .2s ease, transform .28s cubic-bezier(.2,.8,.2,1);
  }
  .newmsg-pill.show{ opacity: 1; pointer-events: auto; transform: translate3d(-50%, calc(-1 * var(--keyboard-offset, 0px)), 0); }
  .newmsg-pill svg{ width: 15px; height: 15px; flex: none; }
  @media (prefers-reduced-motion: reduce){ .newmsg-pill{ transition: opacity .2s ease; } }

  /* ── Login ── */
  .login{
    position: fixed; inset:0; z-index: 50;
    display:flex; flex-direction:column; align-items:center; justify-content:center;
    gap: 22px; padding: 28px;
    padding-top: calc(28px + env(safe-area-inset-top));
    background-color: var(--bg);
    background-image: var(--wall-default);
    background-size: cover;
    background-position: center;
  }
  .login .orb{
    width:72px; height:72px; border-radius:50%;
    background-image: var(--avatar-default);
    background-size: cover;
    box-shadow: 0 20px 42px rgba(24,46,67,0.2);
    animation: breathe 4.5s ease-in-out infinite;
  }
  .login h1{ margin:0; font-size:34px; font-weight:500; letter-spacing:0; }
  .login .sub{ margin:-12px 0 0; color: var(--text-soft); font-size:16px; text-align:center; }
  .login form{ display:flex; flex-direction:column; gap:11px; width:100%; max-width:320px; }
  .login input{
    width:100%; padding: 14px 16px; font: inherit; color: var(--text);
    background: var(--field-bg); border:1px solid var(--field-line); border-radius:18px; outline:none;
    transition: border-color .2s ease;
    box-shadow: var(--soft-shadow);
  }
  .login input:focus{ border-color: var(--accent); }
  .login button{
    width:100%; padding: 14px; font: inherit; font-weight:600;
    background: var(--accent); color: var(--accent-fg); border:none; border-radius:18px; cursor:pointer;
  }
  .login button:active{ transform: scale(.99); }
  .login .err{ color:#c0533f; font-size:13px; min-height:16px; text-align:center; margin:0; }
  .hidden{ display:none !important; }
  .app.kb .composer{ padding-bottom: 8px; }

  /* ── Profile page (full-screen settings) ── */
  .profile-panel{
    position: fixed;
    inset: 0;
    z-index: 200;
    pointer-events: none;
    transform: translateX(100%);
    opacity: 0;
    transition: transform .34s var(--ease-soft), opacity .26s ease;
  }
  .profile-panel.open{ transform: none; opacity: 1; pointer-events: auto; }
  /* own wallpaper layer so the chat behind is fully covered, theme-matched */
  .profile-page{
    position: absolute;
    inset: 0;
    display: flex;
    flex-direction: column;
    background-color: var(--bg);
    background-image: var(--wall-default);
    background-size: cover;
    background-position: center;
    overflow: hidden;
  }
  .profile-page::before{
    content:""; position:absolute; inset:0; background: var(--scrim); pointer-events:none;
  }
  .profile-topbar{
    position: relative; z-index:1;
    flex: 0 0 auto;
    display:flex; align-items:center; gap:10px;
    height: calc(56px + env(safe-area-inset-top));
    padding: env(safe-area-inset-top) var(--side-pad) 0;
  }
  .profile-back{
    width:40px; height:40px; flex:none;
    border:0; border-radius:50%; padding:0; margin-left:-6px;
    background: transparent; color: var(--text);
    display:grid; place-items:center; cursor:pointer;
    transition: transform .15s ease;
  }
  .profile-back:active{ transform: scale(.9); }
  .profile-back svg{ width:24px; height:24px; display:block; }
  .profile-scroll{
    position: relative; z-index:1;
    flex: 1 1 auto;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior: contain;
    padding: 10px var(--side-pad) calc(30px + env(safe-area-inset-bottom));
    display:flex; flex-direction:column; gap:24px;
  }
  .profile-scroll::-webkit-scrollbar{ width:0; height:0; }

  /* identity */
  .profile-identity{
    display:grid;
    grid-template-columns: auto 1fr;
    gap:18px; align-items:center;
    padding: 4px 4px 16px;
  }
  .profile-avatar{
    width:78px; height:78px; border-radius:50%;
    border:0; padding:0; overflow:hidden;
    -webkit-appearance:none; appearance:none;
    background-color:transparent;
    background-image: var(--profile-avatar-default); /* settings 顶卡是乐乐本人的(她点名),和聊天页头像两张图分开存 */
    background-size:cover; background-position:center;
    box-shadow: 0 12px 28px rgba(24,46,67,0.16);
    cursor:pointer; transition: transform .15s ease;
  }
  .profile-avatar:active{ transform: scale(.96); }
  .profile-id-copy{ min-width:0; }
  .profile-name-row{ display:flex; align-items:center; gap:9px; margin:0 0 5px; }
  .profile-name-row h3,
  #profileNameInput{
    margin:0;
    font-family: var(--font-en), var(--font-cn);
    font-size:23px; font-weight:500; letter-spacing:0;
    color: var(--text); line-height:1.1;
  }
  #profileNameInput{
    width:6.6em; max-width:62%;
    border:0; border-radius:10px;
    background: var(--seg-track); outline:none;
    padding:3px 11px; margin:-3px 0;
  }
  .profile-name-edit{
    width:26px; height:26px; flex:none;
    border:0; border-radius:50%; padding:0;
    background:transparent; color: var(--text-soft);
    display:grid; place-items:center; cursor:pointer;
    transition: color .2s ease, transform .15s ease;
  }
  .profile-name-edit:active{ transform: scale(.88); }
  .profile-name-edit svg{ width:15px; height:15px; display:block; }
  .profile-handle{
    display:flex; align-items:center; gap:7px; margin:0 0 8px;
    color: var(--text-soft);
    font-family: var(--font-en), var(--font-cn); font-size:13.5px;
  }
  .profile-bio{ margin:0; color: var(--text-soft); font-size:13px; line-height:1.55; }

  /* setting card */
  .settings-card{
    background: var(--card-bg);
    border: 1px solid var(--card-line);
    border-radius:18px;
    box-shadow: var(--card-shadow);
    padding:15px 16px;
    -webkit-backdrop-filter: blur(14px);
    backdrop-filter: blur(14px);
  }
  .settings-label{
    display:flex; align-items:center; gap:6px;
    color: var(--text-soft); font-size:12.5px;
    margin-bottom:11px; letter-spacing:.01em;
  }
  .info-i{
    width:14px; height:14px; flex:none; border-radius:50%;
    border:1px solid var(--info-ring); color: var(--text-faint);
    display:inline-grid; place-items:center;
    font-size:9px; font-style:normal; line-height:1;
    font-family: var(--font-en), var(--font-cn);
    cursor:help; user-select:none;
  }
  .push-hint{
    margin-top:9px; font-size:11.5px; line-height:1.55;
    color: var(--text-faint); letter-spacing:.01em;
  }
  /* ── Vesper 实时定位 (0.8.4-vesper-location) ── */
  .location-card{ padding:14px 15px; }
  .location-card.waiting .location-body{ opacity:.55; }
  .location-head{ display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:10px; }
  .location-head .settings-label{ margin-bottom:0; }
  .location-state{
    display:inline-flex; align-items:center; gap:6px;
    font-size:11.5px; color:var(--text-soft);
    padding:3px 9px; border-radius:999px; background:var(--seg-track);
  }
  .location-state::before{
    content:""; width:7px; height:7px; border-radius:50%;
    background:var(--text-faint);
  }
  .location-state.online::before{ background:#5cb87a; box-shadow:0 0 6px color-mix(in srgb,#5cb87a 60%,transparent); }
  .location-state.stale::before{ background:#c9a85c; }
  .location-body{ display:grid; gap:8px; margin-top:4px; }
  .location-row{ display:flex; justify-content:space-between; gap:10px; font-size:12.5px; line-height:1.5; }
  .location-row .k{ color:var(--text-faint); flex-shrink:0; }
  .location-row .v{ color:var(--text); font-variant-numeric:tabular-nums; text-align:right; min-width:0; }
  .location-journey{ display:flex; align-items:center; justify-content:space-between; gap:12px; margin-top:12px; padding-top:12px; border-top:1px solid var(--card-line); }
  .location-journey-text{ flex:1; min-width:0; }
  .location-journey-text strong{ display:block; font-size:13px; font-weight:500; color:var(--text); margin-bottom:2px; }
  .location-journey-text small{ font-size:11px; color:var(--text-faint); }
  .location-wait{
    margin-top:11px; padding:8px 10px; border-radius:10px;
    background:var(--seg-track); color:var(--text-faint);
    font-size:11.5px; line-height:1.5;
  }

  .mind-head{ display:flex; align-items:center; justify-content:space-between; gap:12px; }
  .mind-head .settings-label{ margin-bottom:0; }
  .mind-refresh{ border:0; background:transparent; color:var(--text-soft); font:inherit; font-size:12px; padding:3px 0; cursor:pointer; }
  .mind-refresh:disabled{ opacity:.45; cursor:default; }
  .mind-summary{ display:flex; align-items:baseline; gap:8px; margin:13px 0 14px; }
  .mind-state{ color:var(--text); font-size:16px; font-weight:500; }
  .mind-presence{ color:var(--text-soft); font-size:12px; }
  .mind-drives{ display:grid; gap:10px; }
  .mind-drive-row{ display:grid; grid-template-columns:3.5em 1fr 3em; gap:9px; align-items:center; font-size:12.5px; color:var(--text-soft); }
  .mind-drive-value{ text-align:right; font-variant-numeric:tabular-nums; color:var(--text); }
  .mind-track{ height:6px; border-radius:999px; overflow:hidden; background:var(--slider-track); }
  .mind-fill{ display:block; height:100%; width:0; border-radius:inherit; background:var(--accent); transition:width .35s var(--ease-soft); }
  .mind-meta{ display:grid; grid-template-columns:1fr 1fr; gap:8px 14px; margin-top:15px; padding-top:12px; border-top:1px solid var(--card-line); }
  .mind-meta div{ min-width:0; }
  .mind-meta small{ display:block; color:var(--text-faint); font-size:10.5px; margin-bottom:3px; }
  .mind-meta span{ display:block; color:var(--text); font-size:12px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .mind-monologues{ margin:14px 0 0; padding:0; list-style:none; display:grid; gap:8px; }
  .mind-monologues li{ color:var(--text-soft); font-size:12px; line-height:1.5; padding:8px 10px; border-radius:10px; background:var(--seg-track); }
  .mind-empty{ color:var(--text-faint) !important; }
  .mind-error{ color:#b35c5c !important; }

  /* segmented control */
  .segmented{
    display:grid; grid-auto-flow:column; grid-auto-columns:1fr;
    gap:3px; background: var(--seg-track);
    border-radius:13px; padding:3px;
  }
  .segmented button{
    border:0; background:transparent; color: var(--text-soft);
    border-radius:10px; padding:8px 3px;
    font: inherit; font-size: clamp(10.5px, 2.9vw, 12.5px);
    letter-spacing:0; white-space:nowrap; cursor:pointer;
    transition: background .22s ease, color .22s ease, box-shadow .22s ease;
  }
  .segmented button.active{
    background: var(--seg-thumb); color: var(--text);
    box-shadow: var(--seg-thumb-shadow); font-weight:500;
  }

  /* context slider */
  .context-slider-wrap{ padding:4px 2px 2px; }
  .context-slider{
    -webkit-appearance:none; appearance:none;
    width:100%; height:4px; border-radius:999px;
    background: var(--slider-track);
    outline:none; cursor:pointer; margin:6px 0;
  }
  .context-slider::-webkit-slider-thumb{
    -webkit-appearance:none; appearance:none;
    width:21px; height:21px; border-radius:50%;
    background: var(--slider-thumb);
    border:2.5px solid var(--card-bg);
    box-shadow: 0 3px 10px rgba(24,46,67,.26); cursor:pointer;
  }
  .context-slider::-moz-range-thumb{
    width:21px; height:21px; border-radius:50%;
    background: var(--slider-thumb);
    border:2.5px solid var(--card-bg);
    box-shadow: 0 3px 10px rgba(24,46,67,.26); cursor:pointer;
  }
  .context-scale{
    display:flex; justify-content:space-between; margin-top:9px;
    color: var(--text-faint);
    font-family: var(--font-en), var(--font-cn); font-size:11.5px;
  }

  /* action rows */
  .action-row{
    display:flex; align-items:center; gap:13px;
    width:100%; text-align:left;
    background: var(--card-bg);
    border:1px solid var(--card-line);
    border-radius:16px; box-shadow: var(--card-shadow);
    padding:13px 16px; color: var(--text); font: inherit; cursor:pointer;
    -webkit-backdrop-filter: blur(14px); backdrop-filter: blur(14px);
    transition: background .18s ease, transform .12s ease;
  }
  button.action-row:active{ background: var(--row-press); transform: scale(.992); }
  .action-icon{ width:21px; height:21px; flex:none; color: var(--accent); display:grid; place-items:center; }
  .action-icon svg{ width:19px; height:19px; display:block; }
  .action-name{ font-family: var(--font-en), var(--font-cn); font-size:14.5px; color: var(--text); flex:none; }
  .settings-sub{ font-size:11.5px; color: var(--text-soft, rgba(255,255,255,.55)); padding:6px 2px 2px; text-align:right; }
  .action-value{
    margin-left:auto; color: var(--text-soft); font-size:12.5px;
    text-align:right; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
  }
  .action-chevron{ flex:none; color: var(--text-faint); display:grid; place-items:center; margin-left:2px; }
  .action-chevron svg{ width:16px; height:16px; display:block; }
  .action-row.status{ cursor:default; }
  .action-row.status .status-main{ margin-left:auto; display:flex; flex-direction:column; align-items:flex-end; gap:2px; min-width:0; }
  .status-used{ color: var(--text); font-family: var(--font-en), var(--font-cn); font-size:13px; }
  .status-sid{ display:flex; align-items:center; gap:6px; color: var(--text-faint); font-size:11.5px; font-family: ui-monospace, "SF Mono", Menlo, monospace; }
  .status-copy{
    width:24px; height:24px; flex:none; border:0; border-radius:8px; padding:0;
    background:transparent; color: var(--text-soft);
    display:grid; place-items:center; cursor:pointer;
    transition: color .2s ease, transform .15s ease;
  }
  .status-copy:active{ transform: scale(.85); }
  .status-copy svg{ width:15px; height:15px; display:block; }

  /* toast */
  .toast{
    position: fixed; left:50%; bottom: calc(40px + env(safe-area-inset-bottom));
    transform: translate(-50%, 12px); z-index:300;
    background: rgba(20,34,48,.92); color:#eef5fb; font-size:14px;
    padding:10px 18px; border-radius:999px;
    box-shadow: 0 14px 34px rgba(0,0,0,.28);
    opacity:0; pointer-events:none;
    transition: opacity .24s ease, transform .24s ease;
  }
  .toast.show{ opacity:1; transform: translate(-50%, 0); }

  @media (max-width: 520px){
    :root{
      --side-pad: 16px;
      --header-h: 56px;
      --avatar-size: 32px;
    }
    .peerpill{ padding: 0 44px; }
    .peerpill .name{ font-size: 18px; }
    .peerpill .status{ font-size: 12px; margin-top: 3px; }
    .backbtn{ left: 16px; top: calc(env(safe-area-inset-top) + 16px); width: 32px; height: 32px; }
    .backbtn svg{ width: 20px; height: 20px; }
    .header-actions{ right: 16px; top: calc(env(safe-area-inset-top) + 16px); gap: 26px; height:32px; }
    .topbtn{ width:32px; height:32px; }
    .topbtn svg{ width:22px; height:22px; }
    .topbtn.more svg{ width:20px; height:20px; }
    .avatar{ right: 16px; top: calc(env(safe-area-inset-top) + 16px); }
    .row{ margin-top: 18px; }
    .row.grouped{ margin-top: 8px; }
    .row.ai{ padding-left: 42px; }
    .bubble{ max-width: min(63vw, 520px); font-size: 13.5px; line-height: 1.56; padding: 8px 13px 8px; }
    .meta{ font-size: 11px; margin-left: 8px; }
    .day{ font-size: 12px; }
    .new-divider{ font-size: 12px; margin: 14px 0 10px; }
    .composer{ gap: 5px; padding-left: 16px; padding-right: 16px; }
    .floatbtn{ width: 36px; height: 36px; }
    .floatbtn svg{ width: 20px; height: 20px; }
    .composer .field{ min-height: 42px; padding: 4px 8px 4px 12px; }
    textarea{ font-size: 15px; }
    .emojibtn{ width: 28px; height: 28px; }
    .emojibtn svg{ width: 22px; height: 22px; }
    .row.think{ padding-left: 42px; padding-right: 0; }
    .think-block{ width: min(63vw, 520px); max-width: min(63vw, 520px); }
    .think-block.open{ width: 100%; max-width: 100%; }
    .row.think.think-open{ padding-left: 0; padding-right: 0; }
    .think-caption{ font-size: 12.5px; letter-spacing: .07em; }
    .think-caption-star, .think-state{ font-size: 1.2em; }
    .think-body{ margin-top: 12px; }
    .think-text{ width: min(86%, 360px); font-size: 12px; line-height: 1.66; }
    .think-star svg{ width: 22px; height: 22px; }
    .profile-identity{ gap:15px; padding-bottom:14px; }
    .profile-avatar{ width:72px; height:72px; }
    .profile-name-row h3, #profileNameInput{ font-size:21px; }
    .profile-handle{ font-size:13px; }
    .profile-bio{ font-size:12.5px; }
    .settings-card{ padding:14px 15px; }
    .action-row{ padding:12px 15px; }
    .profile-scroll{ gap:22px; }
  }

  /* ── Menu (hub / home page · 从聊天页左箭头进入) ── */
  .menu-panel{
    position: fixed; inset: 0; z-index: 190;
    pointer-events: none;
    transform: translateX(-100%);
    opacity: 0;
    transition: transform .38s var(--ease-soft), opacity .28s ease;
  }
  .menu-panel.open{ transform: none; opacity: 1; pointer-events: auto; }
  .menu-page{
    position: absolute; inset: 0;
    display: flex; flex-direction: column;
    background-color: var(--bg);
    background-image: var(--menu-wall-default);
    background-size: cover; background-position: center;
    overflow: hidden;
  }
  .menu-page::before{
    content:""; position:absolute; inset:0; background: var(--scrim); pointer-events:none;
  }
  .menu-scroll{
    position: relative; z-index: 1;
    flex: 1 1 auto; overflow-y: auto;
    -webkit-overflow-scrolling: touch; overscroll-behavior: contain;
    display: flex; flex-direction: column;
    padding: calc(env(safe-area-inset-top) + clamp(18px, 4vw, 30px)) clamp(26px, 7vw, 54px) calc(env(safe-area-inset-bottom) + clamp(20px, 5vw, 30px));
  }
  .menu-scroll::-webkit-scrollbar{ width:0; height:0; }

  /* header: 玻璃液态日夜 toggle(左) · PRIVATE SPACE(右) */
  .menu-head{
    flex: 0 0 auto;
    display:flex; align-items:flex-start; justify-content:space-between;
    margin-bottom: clamp(34px, 10vw, 68px);
  }
  /* (主题切换已移至设置页 #themeSeg;原菜单页玻璃 toggle 的 CSS 已随标记一并移除) */
  .menu-private{
    text-align:right; line-height:1.55;
    font-family: var(--font-en), var(--font-cn);
    font-size: clamp(9.5px, 2.5vw, 11px); letter-spacing:.24em;
    color: var(--text-soft); text-transform:uppercase;
  }
  .menu-private::after{
    content:""; display:block; margin-left:auto; margin-top:8px;
    width: clamp(20px, 5.5vw, 26px); height:1px; background: var(--text-faint); opacity:.6;
  }

  /* hero: app title · since · days */
  .menu-hero{ flex: 0 0 auto; margin-bottom: clamp(38px, 11vw, 72px); }
  .menu-title{
    font-family: "Pinyon Script", var(--font-en), cursive;
    font-weight: 400;
    font-size: clamp(46px, 15vw, 86px);
    line-height: 1.04;
    color: var(--text);
    margin: 0 0 clamp(16px, 4.4vw, 26px);
    letter-spacing: .005em;
    text-shadow: 0 2px 26px rgba(0,0,0,.16);
  }
  .menu-since{
    font-family: var(--font-en), var(--font-cn);
    font-size: clamp(11px, 2.9vw, 13.5px);
    letter-spacing:.14em; color: var(--text-soft);
    margin: 0 0 clamp(8px, 2.2vw, 12px);
  }
  .menu-days{
    display:flex; align-items:baseline; gap: clamp(8px, 2.6vw, 12px);
    font-family: var(--font-en), var(--font-cn); color: var(--text);
  }
  .menu-days .num{ font-size: clamp(30px, 8.4vw, 48px); font-weight:500; line-height:1; letter-spacing:.01em; }
  .menu-days .lab{ font-size: clamp(12px, 3.1vw, 15px); letter-spacing:.13em; color: var(--text-soft); }

  /* list */
  .menu-list{ flex: 0 0 auto; display:flex; flex-direction:column; }
  .menu-item{
    display:grid;
    grid-template-columns: clamp(22px, 6vw, 27px) auto 1fr auto;
    align-items:center; gap: clamp(12px, 3.4vw, 18px);
    width:100%; text-align:left;
    background:transparent; border:0;
    border-top:1px solid var(--hairline);
    padding: clamp(15px, 4.4vw, 21px) 2px;
    color: var(--text); font: inherit; cursor:pointer;
    transition: background .18s ease, transform .12s ease;
  }
  .menu-item:last-child{ border-bottom:1px solid var(--hairline); }
  .menu-item:active{ background: var(--row-press); transform: scale(.995); }
  .menu-ic{ display:grid; place-items:center; color: var(--text-soft); }
  .menu-ic svg{ width: clamp(19px, 5vw, 22px); height: clamp(19px, 5vw, 22px); display:block; }
  .menu-dot{ width:3px; height:3px; border-radius:50%; background: var(--text-faint); opacity:.5; }
  .menu-copy{ display:flex; flex-direction:column; min-width:0; }
  .menu-name{
    font-family: var(--font-en), var(--font-cn);
    font-size: clamp(18px, 5vw, 23px); font-weight:500; line-height:1.14;
    color: var(--text); margin-bottom:2px;
  }
  .menu-sub{
    font-family: var(--font-en), var(--font-cn);
    font-size: clamp(8.5px, 2.3vw, 10px); letter-spacing:.16em;
    text-transform:uppercase; color: var(--text-faint);
  }
  .menu-chev{ color: var(--text-faint); display:grid; place-items:center; }
  .menu-chev svg{ width:15px; height:15px; display:block; }

  /* footer */
  .menu-foot{
    flex: 1 1 auto;
    display:flex; align-items:flex-end; justify-content:center;
    text-align:center;
    padding-top: clamp(22px, 6vw, 40px);
    font-family: var(--font-en), var(--font-cn);
    font-size: clamp(10.5px, 2.7vw, 12.5px); font-style:italic;
    letter-spacing:.05em; color: var(--text-faint);
  }

  /* ── Memory page (OB read-only browser) ── */
  .memory-panel{
    position:fixed; inset:0; z-index:195;
    transform:translateX(100%);
    opacity:0; pointer-events:none;
    transition:transform .38s var(--ease-soft), opacity .28s ease;
  }
  .memory-panel.open{ transform:none; opacity:1; pointer-events:auto; }
  .memory-page{
    position:absolute; inset:0; display:flex; flex-direction:column;
    background-color:var(--bg); background-image:var(--wall-default);
    background-size:cover; background-position:center; overflow:hidden;
  }
  .memory-page::before{ content:""; position:absolute; inset:0; background:var(--scrim); pointer-events:none; }
  .memory-top{
    position:relative; z-index:1; flex:none; height:60px;
    display:flex; align-items:center; gap:12px;
    padding:calc(env(safe-area-inset-top) + 6px) max(16px, env(safe-area-inset-left)) 6px;
  }
  .memory-back{
    width:42px; height:42px; border:0; background:transparent; color:var(--text);
    display:grid; place-items:center; border-radius:50%; cursor:pointer;
  }
  .memory-back svg{ width:24px; height:24px; display:block; }
  .memory-title{ min-width:0; display:flex; flex-direction:column; line-height:1.15; }
  .memory-title strong{ color:var(--text); font-size:15px; font-weight:600; }
  .memory-title span{ color:var(--text-soft); font-size:11.5px; margin-top:3px; }
  .memory-scroll{
    position:relative; z-index:1; flex:1; min-height:0; overflow:auto;
    -webkit-overflow-scrolling:touch; overscroll-behavior:contain;
    padding:14px max(18px, env(safe-area-inset-left)) calc(24px + env(safe-area-inset-bottom));
    display:grid; gap:14px;
  }
  .memory-card{
    border:1px solid var(--card-line); background:var(--card-bg); border-radius:18px;
    padding:14px 15px; box-shadow:var(--card-shadow);
    -webkit-backdrop-filter:blur(14px); backdrop-filter:blur(14px);
  }
  .memory-head{ display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:10px; }
  .memory-label{ color:var(--text-soft); font-size:12.5px; letter-spacing:.01em; }
  .memory-refresh{ border:0; background:transparent; color:var(--text-soft); font:inherit; font-size:12px; padding:3px 0; cursor:pointer; }
  .memory-search{ display:flex; gap:8px; }
  .memory-search input{
    flex:1; min-width:0; border:1px solid var(--card-line); border-radius:12px;
    background:var(--input-bg); color:var(--text); padding:11px 12px; font:inherit; font-size:13px;
  }
  .memory-search button{
    flex:none; border:0; border-radius:12px; background:var(--accent); color:var(--accent-ink);
    padding:0 14px; font:inherit; font-size:13px; cursor:pointer;
  }
  .memory-list{ display:grid; gap:8px; }
  .memory-item{
    border-radius:12px; background:var(--seg-track); color:var(--text-soft);
    padding:9px 10px; font-size:12px; line-height:1.55; white-space:pre-wrap; overflow-wrap:anywhere;
  }
  .memory-empty{ color:var(--text-faint); font-size:12px; line-height:1.5; }

  /* ── Voice call (speaking overlay · 假按键 / 纯 UI,后端以后接) ── */
  .call-overlay{
    position: fixed; inset: 0; z-index: 150;
    pointer-events: none;
  }
  .call-scrim{
    position: absolute; inset: 0;
    background: linear-gradient(180deg, rgba(255,255,255,.55) 0%, rgba(255,255,255,.25) 40%, rgba(255,255,255,.45) 100%);
    pointer-events: none;
    opacity: 0;
    transition: opacity .3s ease;
  }
  .call-overlay.open .call-scrim{ opacity: 1; }
  .call-sheet{
    position: absolute; inset: 0;
    display: flex; flex-direction: column; align-items: center;
    justify-content: flex-start;
    padding: calc(env(safe-area-inset-top) + clamp(50px, 10vw, 84px)) var(--side-pad) calc(env(safe-area-inset-bottom) + 26px);
    text-align: center;
    background-color: var(--bg);
    background-image: var(--wall-default);
    background-size: cover; background-position: center;
    opacity: 0; pointer-events: none;
    transform: translateY(12px);
    transition: opacity .34s var(--ease-soft), transform .34s var(--ease-soft);
    overflow: hidden;
  }
  .call-overlay.open .call-sheet{ opacity: 1; pointer-events: auto; transform: translateY(0); }

  /* ── Avatar stage: 头像 + 两翼声纹 ── */
  .call-avatar-stage{
    display: flex; align-items: center; justify-content: center;
    width: 100%;
    gap: clamp(8px, 2.2vw, 16px);
    margin-top: clamp(4px, 3vh, 30px);
    flex-shrink: 0;
  }
  .call-vu{
    --vu-level: 0;
    flex: 1 1 0; min-width: 0;
    height: clamp(70px, 17vw, 100px);
    display: flex; align-items: center;
    gap: clamp(2.5px, 0.8vw, 4px);
  }
  .call-vu-left{ flex-direction: row-reverse; }
  .call-vu i{
    flex: 0 0 auto;
    width: clamp(2px, 0.65vw, 3px);
    height: calc(100% * var(--bar, .4) * (0.46 + 0.54 * var(--vu-level)));
    min-height: 2px;
    border-radius: 99px;
    background: var(--accent);
    opacity: calc(var(--bar-op, .4) * (0.6 + 0.4 * var(--vu-level)));
    animation: callVuIdle var(--vu-dur, 1.6s) var(--ease-soft) infinite alternate;
    animation-delay: var(--vu-delay, 0s);
    will-change: transform, opacity;
  }
  @keyframes callVuIdle{ from{ transform: scaleY(.55); } to{ transform: scaleY(1); } }
  @media (prefers-reduced-motion: reduce){ .call-vu i{ animation: none; } }

  /* ── Avatar ring ── */
  .call-avatar-ring{
    --ring-level: 0;
    position: relative;
    width: clamp(128px, 37vw, 168px); height: clamp(128px, 37vw, 168px);
    border-radius: 50%;
    display: grid; place-items: center;
    flex: 0 0 auto;
    box-shadow:
      0 10px 34px rgba(40,60,78,.16),
      0 0 calc(16px + 34px * var(--ring-level)) calc(2px + 12px * var(--ring-level)) color-mix(in srgb, var(--accent) 30%, transparent);
    transition: box-shadow .14s ease;
  }
  .call-avatar-img{
    width: 100%; height: 100%;
    border-radius: 50%;
    background-image: var(--avatar-default);
    background-size: cover; background-position: center;
    box-shadow: inset 0 0 0 1px rgba(255,255,255,.14);
  }

  /* ── Name / status / timer ── */
  .call-name{
    margin-top: clamp(18px, 4vw, 28px);
    color: var(--text);
    font-family: var(--font-cn);
    font-size: clamp(27px, 7vw, 36px);
    font-weight: 500;
    line-height: 1.2;
  }
  .call-status{
    display: inline-flex; align-items: center; gap: 11px;
    color: var(--think-label);
    font-family: var(--font-en), var(--font-cn);
    font-size: clamp(13px, 1.8vw, 15.5px);
    letter-spacing: .16em;
    line-height: 1;
    margin-top: 8px;
  }
  .call-status .call-star{ color: var(--think-flourish); display: grid; place-items: center; }
  .call-status .call-star svg{ width: 16px; height: 16px; display: block; }
  .call-timer{
    font-family: var(--font-en), var(--font-cn);
    font-variant-numeric: tabular-nums;
    font-size: clamp(19px, 5vw, 25px);
    font-weight: 500;
    letter-spacing: .04em;
    line-height: 1;
    color: var(--text-soft);
    margin-top: 9px;
  }

  /* ── Quote (the AI's last spoken line) ── */
  .call-quote{
    flex: 1 1 auto;
    min-height: 0;                 /* 让 flex 能真正约束它,长文本不再撑破/盖住头像与字幕 */
    display: flex; align-items: center; justify-content: center;
    width: min(88vw, 400px);
    padding: clamp(8px, 2vw, 18px) clamp(8px, 2vw, 16px);
    overflow: hidden;              /* 兜底:绝不溢出到相邻区域 */
  }
  .call-quote-mark{
    color: var(--text-faint);
    font-family: var(--font-en);
    font-size: clamp(40px, 9.5vw, 56px);
    line-height: 1;
    user-select: none;
    flex-shrink: 0;
    align-self: flex-start;
    opacity: .5;
  }
  .call-quote-mark:last-child{ align-self: flex-end; }
  .call-quote-text{
    max-height: 100%;
    overflow-y: auto;
    overscroll-behavior: contain;
    scrollbar-width: none;                 /* Firefox 隐藏滚动条 */
    color: var(--text);
    font-family: var(--font-cn);
    font-size: clamp(20px, 5.2vw, 27px);
    line-height: 1.52;
    text-align: center;
    padding: 0 clamp(6px, 1.5vw, 12px);
    overflow-wrap: break-word;
  }
  .call-quote-text::-webkit-scrollbar{ display: none; }   /* WebKit 隐藏滚动条 */
  /* 仅当文字真的溢出时(由 JS 加 .clip)才底部渐隐(顶部保持清晰,因为总是从头读起,
     渐隐只用来暗示"下面还有,全文在字幕条里") */
  .call-quote-text.clip{
    -webkit-mask-image: linear-gradient(180deg, #000 0, #000 calc(100% - 22px), transparent 100%);
            mask-image: linear-gradient(180deg, #000 0, #000 calc(100% - 22px), transparent 100%);
  }
  .call-quote-text.hint{
    color: var(--text-soft);
    font-size: clamp(18px, 4.8vw, 24px);
  }
  .call-quote-text.lyric-mode{
    font-size: clamp(14px, 3.8vw, 19px);
    text-align: center;
  }
  .lyric-line{
    display: block;
    opacity: 0.28;
    transition: opacity 0.45s ease, transform 0.45s ease;
    transform: scale(0.96);
    padding: 3px 0;
  }
  .lyric-line.active{
    opacity: 1;
    transform: scale(1);
  }

  /* ── Transcript section ── */
  .call-transcript-section{
    width: min(92vw, 440px);
    display: flex; flex-direction: column; align-items: center;
    gap: 10px;
    flex-shrink: 0;
  }
  .call-transcript-label{
    position: relative;
    display: flex; align-items: center; justify-content: center;
    width: 100%;
    color: var(--text-faint);
    font-family: var(--font-en), var(--font-cn);
    font-size: clamp(12px, 1.5vw, 13px);
    letter-spacing: .06em;
  }
  .call-transcript-cap{ display: inline-flex; align-items: center; gap: 7px; }
  .call-transcript-cap::before{
    content: ""; display: inline-block;
    width: 16px; height: 14px;
    background: currentColor;
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.4' stroke-linecap='round'%3E%3Cline x1='4' y1='9' x2='4' y2='15'/%3E%3Cline x1='9' y1='4.5' x2='9' y2='19.5'/%3E%3Cline x1='14' y1='7.5' x2='14' y2='16.5'/%3E%3Cline x1='19' y1='10.5' x2='19' y2='13.5'/%3E%3C/svg%3E") center/contain no-repeat;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.4' stroke-linecap='round'%3E%3Cline x1='4' y1='9' x2='4' y2='15'/%3E%3Cline x1='9' y1='4.5' x2='9' y2='19.5'/%3E%3Cline x1='14' y1='7.5' x2='14' y2='16.5'/%3E%3Cline x1='19' y1='10.5' x2='19' y2='13.5'/%3E%3C/svg%3E") center/contain no-repeat;
  }
  /* 「我在想 …」跳动点(引号区,贴心提示) */
  .call-dots{ display: inline-flex; align-items: center; gap: 4px; }
  .call-dots i{
    width: 4px; height: 4px; border-radius: 50%;
    background: currentColor;
    animation: callTypingDot 1.25s ease-in-out infinite;
  }
  .call-dots i:nth-child(2){ animation-delay: .16s; }
  .call-dots i:nth-child(3){ animation-delay: .32s; }
  @keyframes callTypingDot{ 0%,70%,100%{ transform: translateY(0); opacity:.4; } 35%{ transform: translateY(-3px); opacity:1; } }
  .call-dots-quote{ margin-left: 10px; vertical-align: middle; gap: 5px; }
  .call-dots-quote i{ width: 6px; height: 6px; }
  .call-transcript-bar{
    width: 100%;
    min-height: 2em;
    padding: clamp(11px, 2.2vw, 15px) clamp(18px, 4vw, 26px);
    border-radius: clamp(18px, 3.4vw, 24px);
    background: linear-gradient(157deg, var(--call-glass-top), var(--call-glass-bot));
    border: 1px solid var(--call-glass-edge);
    box-shadow: var(--call-glass-shadow), inset 0 1px 0 var(--call-glass-hi);
    -webkit-backdrop-filter: blur(24px) saturate(1.6);
    backdrop-filter: blur(24px) saturate(1.6);
    color: var(--text);
    font-family: var(--font-cn);
    font-size: clamp(14.5px, 2vw, 16.5px);
    line-height: 1.6;
    text-align: center;
    overflow-wrap: break-word;
    max-height: clamp(72px, 16vh, 132px);   /* 长字幕也封顶,不再把控制键/挂断顶出屏外 */
    overflow-y: auto;
    overscroll-behavior: contain;
    scrollbar-width: none;
  }
  .call-transcript-bar::-webkit-scrollbar{ display: none; }
  .call-transcript-bar .caret{
    display: inline-block; width: 1px; height: 1.04em; margin-left: 2px;
    background: currentColor; opacity: .55;
    vertical-align: -0.14em;
    animation: callCaret 1s steps(1) infinite;
  }
  @keyframes callCaret{ 0%,49%{ opacity:.55; } 50%,100%{ opacity:0; } }

  /* ── Controls row ── */
  .call-controls{
    display: flex; align-items: flex-start; justify-content: center;
    gap: clamp(30px, 9vw, 50px);
    margin-top: clamp(22px, 4vw, 34px);
    flex-shrink: 0;
  }
  .call-ctrl-btn{
    display: flex; flex-direction: column; align-items: center; gap: 9px;
    border: 0; padding: 0; cursor: pointer;
    background: transparent;
    color: var(--text-soft);
    -webkit-tap-highlight-color: transparent;
  }
  .call-ctrl-btn > svg{
    width: clamp(58px, 14.5vw, 70px); height: clamp(58px, 14.5vw, 70px);
    padding: clamp(15px, 3.4vw, 19px);
    border-radius: 50%;
    background: linear-gradient(157deg, var(--call-glass-top), var(--call-glass-bot));
    border: 1px solid var(--call-glass-edge);
    -webkit-backdrop-filter: blur(20px) saturate(1.6);
    backdrop-filter: blur(20px) saturate(1.6);
    box-shadow: 0 8px 22px rgba(40,60,78,.10), inset 0 1px 0 var(--call-glass-hi);
    transition: background .15s ease, transform .12s ease, color .15s ease;
  }
  .call-ctrl-btn:active > svg{ transform: scale(.92); }
  .call-ctrl-btn > span{
    font-family: var(--font-cn);
    font-size: clamp(12px, 1.6vw, 13.5px);
    color: var(--text-faint);
  }
  .call-ctrl-btn.active > svg{
    background: var(--accent);
    color: var(--accent-fg);
    border-color: transparent;
  }

  /* ── Hangup ── */
  .call-hangup{
    margin-top: clamp(20px, 4vw, 32px);
    width: clamp(64px, 15.5vw, 74px); height: clamp(64px, 15.5vw, 74px);
    border: 0; border-radius: 50%; padding: 0; cursor: pointer;
    background: var(--call-hangup-bg);
    color: #fff;
    display: grid; place-items: center;
    box-shadow: 0 10px 26px var(--call-hangup-shadow);
    transition: transform .15s ease, filter .2s ease;
    flex-shrink: 0;
  }
  .call-hangup:hover{ filter: brightness(1.05); }
  .call-hangup:active{ transform: scale(.92); }
  .call-hangup svg{ width: clamp(26px, 5.6vw, 31px); height: clamp(26px, 5.6vw, 31px); display: block; transform: rotate(135deg); }

  /* ── Minimize (top-left) ── */
  .call-minimize-top{
    position: absolute;
    top: calc(env(safe-area-inset-top) + clamp(10px, 2vw, 16px));
    left: clamp(10px, 2vw, 16px);
    width: 36px; height: 36px;
    border: 0; border-radius: 50%; padding: 0; cursor: pointer;
    background: var(--card-bg);
    border: 1px solid var(--card-line);
    -webkit-backdrop-filter: blur(12px);
    backdrop-filter: blur(12px);
    color: var(--text-soft);
    display: grid; place-items: center;
    z-index: 2;
    -webkit-tap-highlight-color: transparent;
    transition: background .15s ease, transform .12s ease;
  }
  .call-minimize-top:active{ transform: scale(.9); }
  .call-minimize-top svg{ width: 18px; height: 18px; display: block; }

  /* ── Hide old wave (no longer visible) ── */
  .call-wave{ display: none; }

  /* ── Call mini-bar (WeChat-style green strip) ── */
  .call-mini{
    display: none;
    position: fixed;
    left: 0; right: 0;
    top: calc(var(--header-h) + env(safe-area-inset-top));
    height: 34px;
    background: var(--accent);
    color: var(--accent-fg);
    font-family: var(--font-cn);
    font-size: 13px;
    align-items: center; justify-content: center;
    gap: 8px;
    z-index: 152;
    cursor: pointer;
    pointer-events: auto;
    -webkit-tap-highlight-color: transparent;
    transition: opacity .2s ease;
  }
  .call-mini:active{ filter: brightness(.88); }
  .call-mini-dot{
    width: 7px; height: 7px;
    border-radius: 50%;
    background: currentColor;
    animation: callMiniPulse 1.4s ease-in-out infinite;
  }
  @keyframes callMiniPulse{
    0%,100%{ opacity: 1; }
    50%{ opacity: .35; }
  }
  .call-mini-timer{
    font-family: var(--font-en);
    font-variant-numeric: tabular-nums;
    letter-spacing: .04em;
  }
  .call-overlay.open.minimized .call-scrim{ opacity: 0; pointer-events: none; }
  .call-overlay.open.minimized .call-sheet{ opacity: 0; pointer-events: none; transform: translateY(12px); }
  .call-overlay.open.minimized .call-mini{ display: flex; }
  .call-overlay.open.minimized{ pointer-events: none; }

  /* 来电:全屏(与通话中同一张画布,接听后无缝衔接,不再是顶部小卡片) */
  .incoming-call-overlay{ z-index: 151; }
  .incoming-call-overlay .call-scrim{ background: var(--call-scrim); }
  .incoming-call-overlay .call-sheet{
    justify-content: flex-start;
    gap: clamp(12px, 2.6vw, 20px);
  }
  /* caption 行(✦ incoming call ✦)——与 .call-status 同款横排 */
  .call-caption{
    display: inline-flex; align-items: center; gap: 11px;
    color: var(--think-label);
    font-family: var(--font-en), var(--font-cn);
    font-size: clamp(13px, 1.8vw, 15.5px);
    letter-spacing: .16em; line-height: 1;
    margin-top: clamp(2px, 2vh, 14px);
  }
  .call-caption .call-star{ color: var(--think-flourish); display: grid; place-items: center; }
  .call-caption .call-star svg{ width: 16px; height: 16px; display: block; }
  /* 来电大头像 + 呼吸光环 */
  .incoming-call-avatar{
    width: clamp(132px, 40vw, 184px); height: clamp(132px, 40vw, 184px);
    border-radius: 50%;
    background-image: var(--avatar-default);
    background-size: cover; background-position: center;
    box-shadow: 0 12px 38px rgba(40,60,78,.18), inset 0 0 0 1px rgba(255,255,255,.14);
    margin-top: clamp(10px, 4vh, 36px);
    animation: incomingPulse 2.4s var(--ease-soft) infinite;
  }
  @keyframes incomingPulse{
    0%   { box-shadow: 0 12px 38px rgba(40,60,78,.18), 0 0 0 0 color-mix(in srgb, var(--accent) 34%, transparent), inset 0 0 0 1px rgba(255,255,255,.14); }
    70%  { box-shadow: 0 12px 38px rgba(40,60,78,.18), 0 0 0 22px color-mix(in srgb, var(--accent) 0%, transparent), inset 0 0 0 1px rgba(255,255,255,.14); }
    100% { box-shadow: 0 12px 38px rgba(40,60,78,.18), 0 0 0 0 color-mix(in srgb, var(--accent) 0%, transparent), inset 0 0 0 1px rgba(255,255,255,.14); }
  }
  @media (prefers-reduced-motion: reduce){ .incoming-call-avatar{ animation: none; } }
  /* 来电动作区:推到底部,拒接/接听左右分开(iOS 式) */
  .incoming-call-actions{
    margin-top: auto;
    margin-bottom: calc(env(safe-area-inset-bottom) + clamp(14px, 5vh, 52px));
    display: flex; align-items: flex-end; justify-content: center;
    gap: clamp(46px, 22vw, 108px);
    width: 100%;
  }
  .incoming-call-slot{ display: flex; flex-direction: column; align-items: center; gap: 11px; }
  .incoming-call-label{
    font-family: var(--font-cn);
    font-size: clamp(12px, 1.6vw, 13.5px);
    color: var(--text-faint);
  }
  .incoming-call-title{
    margin-top: clamp(4px, 2vw, 12px);
    color: var(--text);
    font-family: var(--font-cn);
    font-size: clamp(27px, 6.6vw, 36px);
    line-height: 1.2;
    font-weight: 500;
  }
  .incoming-call-text{
    width: min(80vw, 360px);
    min-height: 1.6em;
    color: var(--text-soft);
    font-family: var(--font-cn);
    font-size: clamp(14px, 1.9vw, 16px);
    line-height: 1.6;
    text-align: center;
    overflow-wrap: break-word;
  }
  .incoming-call-actions{
    display: flex; align-items: center; justify-content: center;
    gap: clamp(18px, 6vw, 34px);
    width: 100%;
  }
  .incoming-call-btn{
    width: clamp(62px, 15.5vw, 74px); height: clamp(62px, 15.5vw, 74px);
    border: 0; border-radius: 50%; padding: 0; cursor: pointer;
    color: #fff;
    display: grid; place-items: center;
    transition: transform .15s ease, filter .2s ease;
  }
  .incoming-call-btn:hover{ filter: brightness(1.05); }
  .incoming-call-btn:active{ transform: scale(.92); }
  .incoming-call-btn svg{ width: clamp(26px, 6vw, 30px); height: clamp(26px, 6vw, 30px); display: block; }
  .incoming-call-btn.accept{
    background: #5aa77a;
    box-shadow: 0 10px 26px rgba(69,132,96,.34);
  }
  .incoming-call-btn.decline{
    background: var(--call-hangup-bg);
    box-shadow: 0 10px 26px var(--call-hangup-shadow);
  }
  .incoming-call-btn.decline svg{ transform: rotate(135deg); }
  .topbtn.call.active{ color: var(--accent); }

  /* ── 长按气泡 · 复制菜单 (TG 式抬起+遮罩) ── */
  /* 长按由我们接管 → 彻底屏蔽聊天区(#scroll)的系统选择/放大镜/callout,否则和我们的菜单打架。
     用 !important 压过一切(含 iOS 误报 hover/pointer 的情况)。输入框在 #scroll 外,单独保持可选可编辑;
     气泡里要复制文字走长按菜单的 Copy。 */
  #scroll, #scroll *{
    -webkit-user-select:none !important; user-select:none !important;
    -webkit-touch-callout:none !important;
  }
  textarea, input, .composer, .composer *{
    -webkit-user-select:text !important; user-select:text !important;
    -webkit-touch-callout:default !important;
  }

  .msg-menu{ position:fixed; inset:0; z-index:250; opacity:0; pointer-events:none; }
  .msg-menu.open{ opacity:1; pointer-events:auto; }
  .msg-menu-scrim{
    position:absolute; inset:0;
    background:rgba(10,16,24,.42);
    -webkit-backdrop-filter:blur(5px) saturate(.82); backdrop-filter:blur(5px) saturate(.82);
    opacity:0; transition:opacity .26s var(--ease-soft);
  }
  .msg-menu.open .msg-menu-scrim{ opacity:1; }
  .msg-menu .msg-menu-clone{
    position:fixed !important; margin:0 !important; animation:none !important;
    pointer-events:none; box-sizing:border-box; z-index:1;
    outline:3px solid var(--ref-plum,var(--accent)) !important; outline-offset:3px;
    box-shadow:0 0 0 7px color-mix(in srgb,var(--ref-plum,var(--accent)) 20%,transparent),0 24px 56px rgba(18,34,52,.38) !important;
    filter:saturate(1.06) brightness(1.04) !important;
    transform:scale(1); transition:transform .26s var(--ease-soft); will-change:transform;
  }
  .msg-menu.open .msg-menu-clone{ transform:translateY(-2px) scale(1.025); }
  .msg-menu-clone.clone-human{ background:var(--bubble-human-bg) !important; color:var(--bubble-human-fg) !important; }
  .msg-menu-clone.clone-ai{ background:var(--bubble-ai-bg) !important; color:var(--bubble-ai-fg) !important; }
  .msg-menu-actions{
    position:fixed; display:flex; flex-direction:column; min-width:188px; padding:7px;
    border-radius:16px; background:var(--composer-bg); border:1px solid var(--hairline);
    box-shadow:var(--shadow);
    -webkit-backdrop-filter:blur(20px) saturate(1.4); backdrop-filter:blur(20px) saturate(1.4);
    opacity:0; transform:translateY(8px) scale(.96); transform-origin:top center;
    transition:opacity .2s var(--ease-soft) .05s, transform .26s var(--ease-soft) .05s;
  }
  .msg-menu-actions::before{
    content:"已选中这一条"; padding:5px 11px 7px; color:var(--text-soft);
    font:500 11px/1.2 var(--font-cn); letter-spacing:.08em;
  }
  .msg-menu.open .msg-menu-actions{ opacity:1; transform:none; }
  .msg-menu-act{
    appearance:none; -webkit-appearance:none; border:0; background:transparent; color:var(--text);
    font-family:var(--font-cn), var(--font-en); font-size:15px; font-weight:600;
    display:flex; align-items:center; justify-content:flex-start; gap:11px;
    min-height:48px; padding:0 14px; border-radius:12px; cursor:pointer; text-align:left; width:100%;
    transition:background var(--motion-fast);
  }
  .msg-menu-act:hover{ background:var(--row-press); }
  .msg-menu-act:active{ background:var(--row-press); transform:scale(.98); }
  .msg-menu-act svg{ width:19px; height:19px; opacity:.86; flex:0 0 auto; }
  .row.recovered-focus .bubble{
    outline:3px solid var(--ref-plum,var(--accent)) !important; outline-offset:4px;
    box-shadow:0 0 0 9px color-mix(in srgb,var(--ref-plum,var(--accent)) 20%,transparent),0 16px 38px rgba(18,34,52,.24) !important;
  }
  .row.recovered-focus{ animation:recoveredMessageFocus 2.6s ease both; }
  @keyframes recoveredMessageFocus{
    0%,100%{ transform:none; }
    18%,72%{ transform:translateY(-3px) scale(1.012); }
  }

  /* ── reaction chips (AI poke) ── */
  .row.has-reactions{ flex-direction:column; gap:5px; }
  .row.human.has-reactions{ align-items:flex-end; }
  .row.ai.has-reactions{ align-items:flex-start; }
  .reactions{ display:flex; flex-wrap:wrap; gap:5px; max-width:min(61vw,506px); }
  .reaction{
    display:inline-flex; align-items:center; justify-content:center;
    font-size:15px; line-height:1; padding:4px 9px; border-radius:13px;
    background:var(--bubble-ai-bg); border:1px solid var(--hairline);
    box-shadow:0 4px 12px rgba(78,94,108,.12);
    -webkit-user-select:none; user-select:none;
  }
  .reaction.pop-in{ animation:reactionPop .52s cubic-bezier(.34,1.56,.5,1) both; }
  @keyframes reactionPop{
    0%{ transform:scale(0) rotate(-16deg); opacity:0; }
    55%{ transform:scale(1.22) rotate(5deg); opacity:1; }
    100%{ transform:none; opacity:1; }
  }

  @media (prefers-reduced-motion: reduce){
    *,
    *::before,
    *::after{
      animation: none !important;
      transition-duration: 0.01ms !important;
      scroll-behavior: auto !important;
    }
    /* 通话声纹是"对方正在说话"的功能性反馈,即便系统减弱动态也保留(细窄低位移,不刺激) */
    .call-wave i{
      animation: callWave var(--dur, 1s) var(--ease-soft) var(--d, 0s) infinite alternate !important;
    }
  }

/* ── Sharon × Sable 2026 glass refresh ── */
:root{
  --paper:#f8f6f1; --paper-2:#eef3f7; --ink:#30363a; --muted:#7c858b;
  --brand:#75a0bd; --brand-deep:#345282; --warm:#da5e4b; --butter:#eee0ac;
  --glass:rgba(255,255,255,.68); --glass-strong:rgba(255,255,255,.84);
  --glass-line:rgba(255,255,255,.9); --glass-shadow:0 18px 48px rgba(52,82,130,.12);
}
body{background:linear-gradient(145deg,#fbfaf6 0%,#eef5fa 48%,#f8f2ee 100%);color:var(--ink)}
body::before{content:"";position:fixed;inset:-20%;pointer-events:none;background:
radial-gradient(circle at 12% 16%,rgba(117,160,189,.20),transparent 30%),
radial-gradient(circle at 88% 18%,rgba(238,224,172,.20),transparent 28%),
radial-gradient(circle at 75% 82%,rgba(218,94,75,.10),transparent 28%);filter:blur(24px)}
.topbar,.composer,.peerpill,.session-pop,.settings-card,.action-row,.menu-item,.memory-card{
  background:var(--glass)!important;border:1px solid var(--glass-line)!important;
  box-shadow:var(--glass-shadow)!important;backdrop-filter:blur(24px) saturate(130%);-webkit-backdrop-filter:blur(24px) saturate(130%)}
.topbar{border-radius:0 0 24px 24px!important}.composer{border-radius:26px 26px 0 0!important}
.bubble{border:1px solid rgba(255,255,255,.74)!important;box-shadow:0 9px 28px rgba(48,54,58,.08)!important}
.row.ai .bubble{background:rgba(255,255,255,.68)!important}.row.me .bubble{background:rgba(218,94,75,.09)!important}
.menu-page,.profile-page,.memory-page{background:linear-gradient(155deg,#fbfaf7 0%,#edf4f8 58%,#f8f0ec 100%)!important}
.menu-scroll{max-width:720px;margin:auto;padding:calc(env(safe-area-inset-top) + 28px) 22px 40px!important}
.menu-head{min-height:18px}.menu-private{color:var(--brand-deep)!important;letter-spacing:.24em!important}
.menu-hero{padding:26px 24px!important;border-radius:28px;background:var(--glass);border:1px solid var(--glass-line);box-shadow:var(--glass-shadow);text-align:center}
.menu-title{font-family:Georgia,"Times New Roman",serif!important;font-style:italic;font-weight:500!important;color:var(--brand-deep)!important}
.menu-since{color:var(--muted)!important;letter-spacing:.18em}.menu-days .num{font-family:Georgia,serif;color:var(--warm)!important}
.menu-list{display:grid!important;grid-template-columns:1fr 1fr;gap:14px!important;margin-top:18px!important}
.menu-item{min-height:142px;border-radius:26px!important;padding:22px!important;display:flex!important;align-items:flex-start!important;position:relative}
.menu-item[data-menu="chat"]{grid-column:1/-1;min-height:174px}.menu-item .menu-dot{display:none}.menu-item .menu-chev{position:absolute;right:18px;bottom:18px}.menu-copy{text-align:left}.menu-name{font-family:Georgia,serif!important;font-style:italic;font-size:26px!important;color:var(--brand-deep)!important}.menu-sub{color:var(--muted)!important}
.menu-ic{color:var(--warm)!important}.menu-foot{color:rgba(52,82,130,.45)!important;font-family:Georgia,serif;font-style:italic}
.login{background:linear-gradient(150deg,#faf8f3,#edf4f8 62%,#f8efeb)!important;padding:26px!important}
.login .orb{width:112px!important;height:112px!important;box-shadow:var(--glass-shadow)!important}
.login h1{font-family:Georgia,serif;font-style:italic;color:var(--brand-deep)}
.login form{padding:20px;border-radius:26px;background:var(--glass);border:1px solid var(--glass-line);box-shadow:var(--glass-shadow)}
.login input{background:rgba(255,255,255,.72)!important;border:1px solid rgba(117,160,189,.22)!important;color:var(--ink)!important}
.login button{background:var(--brand-deep)!important;color:white!important;border-radius:999px!important}
.login-anniversary{width:min(100%,320px);padding:18px 20px;border-radius:26px;background:var(--glass);border:1px solid var(--glass-line);box-shadow:var(--glass-shadow);text-align:center;color:var(--muted)}
.login-anniversary b{display:block;font:500 54px/1 Georgia,serif;color:var(--warm)}
.login-anniversary span{display:block;margin-top:6px;letter-spacing:.12em;font-size:12px}
#resetRow,#swapRow,#resumeRow{display:none!important}
#apiForm:not([hidden]){position:fixed!important;z-index:2000;left:50%;top:50%;transform:translate(-50%,-50%);width:min(90vw,440px);max-height:78vh;overflow:auto;padding:22px!important;border-radius:26px;background:rgba(248,250,251,.96)!important;border:1px solid white;box-shadow:0 30px 90px rgba(24,38,55,.26)!important}
#apiForm:not([hidden])::before{content:"添加 / 编辑 API";display:block;font:600 18px/1.2 var(--chat-type,"Songti SC","Noto Serif SC",serif);color:var(--brand-deep);margin-bottom:8px}
.profile-avatar{outline:3px solid rgba(117,160,189,.22)}
.usage-line{color:var(--muted)!important;background:rgba(255,255,255,.45)!important;border-radius:10px}
@media(max-width:560px){.menu-item{min-height:132px}.menu-item[data-menu="chat"]{min-height:164px}.menu-name{font-size:23px!important}}
.api-modal-backdrop{position:fixed;inset:0;z-index:2998;background:rgba(35,43,50,.24);backdrop-filter:blur(9px);-webkit-backdrop-filter:blur(9px)}
body.api-modal-open{overflow:hidden!important}
#apiForm[hidden]{display:none!important}
.profile-panel .api-input{width:100%;padding:11px 13px;border:1px solid color-mix(in srgb,var(--brand) 22%,transparent);border-radius:14px;background:color-mix(in srgb,var(--paper) 82%,white);color:var(--ink);font:inherit}
.settings-card,.action-row,.segmented,.context-slider-wrap{color:var(--ink)!important}.settings-label,.settings-sub,.action-value{color:var(--muted)!important}
.segmented button.active{background:var(--glass-strong)!important;color:var(--brand-deep)!important;box-shadow:0 5px 18px color-mix(in srgb,var(--brand) 18%,transparent)!important}
body>#apiForm:not([hidden]){z-index:2999!important;display:flex!important;flex-direction:column;gap:8px;width:min(calc(100vw - 30px),440px)!important;max-height:min(76vh,650px)!important;padding:22px!important;background:var(--glass-strong)!important;color:var(--ink)!important;border:1px solid var(--glass-line)!important;box-shadow:0 30px 100px rgba(30,42,50,.28)!important;font-family:var(--chat-type,"Songti SC","Noto Serif SC",serif)}
body>#apiForm .api-input{display:block;width:100%;height:42px;min-height:42px;padding:0 13px;border:1px solid color-mix(in srgb,var(--brand) 28%,transparent);border-radius:12px;background:color-mix(in srgb,var(--paper) 82%,white);color:var(--ink);font:400 14px/1 var(--chat-type,"Songti SC","Noto Serif SC",serif);letter-spacing:0;box-sizing:border-box}
body>#apiForm .api-input::placeholder{color:var(--muted);font:inherit;opacity:.72}
body>#apiForm .api-model-row{display:flex;align-items:stretch;gap:8px}body>#apiForm .api-model-picker{position:relative;min-width:0;flex:1}body>#apiForm .api-model-picker .api-input{padding-right:44px}
body>#apiForm .api-model-toggle{position:absolute;top:0;right:0;display:grid;place-items:center;width:42px;height:42px;padding:0;border:0;border-radius:0 12px 12px 0;background:transparent;color:var(--brand-deep);cursor:pointer}body>#apiForm .api-model-toggle:disabled{opacity:.42;cursor:default}
body>#apiForm .api-select-wrap{position:relative}body>#apiForm .api-select-wrap .api-input{-webkit-appearance:none;appearance:none;padding-right:44px}body>#apiForm .api-select-chevron{display:block;width:8px;height:8px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg) translate(-1px,-1px);transform-origin:center;color:var(--brand-deep);pointer-events:none}body>#apiForm .api-select-wrap>.api-select-chevron{position:absolute;top:50%;right:16px;margin-top:-6px}
body>#apiForm .api-model-menu{position:absolute;z-index:2;left:0;right:0;top:calc(100% + 5px);max-height:220px;overflow:auto;padding:5px;border:1px solid var(--glass-line);border-radius:12px;background:var(--glass-strong);box-shadow:0 16px 40px rgba(30,42,50,.18)}
body>#apiForm .api-model-option{display:block;width:100%;padding:9px 10px;border:0;border-radius:9px;background:transparent;color:var(--ink);font:inherit;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}body>#apiForm .api-model-option:hover,body>#apiForm .api-model-option:focus-visible{background:color-mix(in srgb,var(--brand) 12%,transparent);outline:0}
body>#apiForm .api-mini-btn{min-height:42px;padding:0 15px;border:1px solid color-mix(in srgb,var(--brand) 26%,transparent);border-radius:12px;background:var(--glass);color:var(--ink);font:500 14px/1 var(--chat-type,"Songti SC","Noto Serif SC",serif)}
body>#apiForm .api-mini-btn.primary{background:var(--brand-deep);color:#fff;border-color:transparent}
body>#apiForm .api-form-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:8px}body>#apiForm .api-form-actions .api-mini-btn{min-width:68px;min-height:40px;padding:0 17px}body>#apiForm .api-form-actions .primary{box-shadow:0 6px 14px color-mix(in srgb,var(--brand-deep) 14%,transparent)}body>#apiForm .api-hint{font:400 12px/1.4 var(--chat-type,"Songti SC","Noto Serif SC",serif);color:var(--muted)}body>#apiForm .api-hint:empty{display:none}
@media(max-width:560px){
  .menu-scroll{padding:calc(env(safe-area-inset-top) + 12px) 16px 18px!important;overflow:hidden!important}
  .menu-head{height:42px!important;min-height:42px!important}.menu-private{font-size:10px!important;line-height:1.45!important}
  .menu-hero{padding:14px 16px!important;border-radius:22px!important;min-height:154px!important}
  .menu-title{font-size:48px!important;line-height:.94!important;margin:5px 0 8px!important}
  .menu-since{font-size:9px!important;margin:0 0 5px!important}.menu-days .num{font-size:42px!important}.menu-days .lab{font-size:11px!important}
  .menu-list{gap:9px!important;margin-top:10px!important}.menu-item{min-height:86px!important;padding:13px!important;border-radius:20px!important}
  .menu-item[data-menu="chat"]{min-height:100px!important}.menu-name{font-size:21px!important}.menu-sub{font-size:9px!important;margin-top:4px!important}
  .menu-ic{width:24px!important;height:24px!important}.menu-chev{right:11px!important;bottom:10px!important}.menu-foot{margin-top:10px!important;font-size:10px!important}
  .topbar{min-height:72px!important;padding-top:env(safe-area-inset-top)!important}.peerpill .name{font-size:25px!important;font-family:Georgia,serif!important}
  .scroll{padding-top:12px!important}
}
/* One measured rhythm between every major menu block. */
@media(max-width:560px){
  .menu-panel .menu-scroll{gap:12px!important}
  .menu-panel .menu-hero,.menu-panel .menu-whisper,.menu-panel .menu-status,.menu-panel .menu-list,.menu-panel .menu-foot{margin:0!important}
  .menu-panel .menu-status{flex:0 0 24px!important}
}

/* source: cacheLampCss */
/* ── 缓存指示灯 v2(07-30 晚乐乐改版):只留呼吸光点,挂在 online 右边 ──
   status-line 自带 justify-content:center + gap:12px:灯负 margin 贴紧 online 成一组,
   整段开关自然隔在 12px 外,分组感照旧 */
.cache-lamp{position:relative;display:inline-flex;align-items:center;margin-left:-5px;padding:4px;border:0;background:transparent;cursor:pointer;-webkit-tap-highlight-color:transparent}
.cache-lamp #cacheLampWord{display:none}
.cache-lamp .dot{width:7.5px;height:7.5px;border-radius:50%;background:#c9c9c9;transition:background .35s ease,box-shadow .35s ease}
.cache-lamp[data-state="hot"] .dot{background:#ef6f97;animation:cacheLampGlow 2.4s ease-in-out infinite}
.cache-lamp[data-state="warm"] .dot{background:#eda65b;box-shadow:0 0 6px 1.5px rgba(237,166,91,.5)}
.cache-lamp[data-state="cold"] .dot{background:#93aecb;box-shadow:0 0 5px 1px rgba(147,174,203,.45)}
@keyframes cacheLampGlow{0%,100%{box-shadow:0 0 4px 1px rgba(239,111,151,.35)}50%{box-shadow:0 0 10px 3px rgba(239,111,151,.7)}}
.cache-lamp .lamp-pop{position:absolute;top:calc(100% + 12px);left:50%;transform:translateX(-50%);width:max-content;max-width:82vw;padding:10px 13px;border-radius:14px;border:1px solid color-mix(in srgb,var(--brand,#e8638c) 18%,transparent);background:color-mix(in srgb,var(--glass-strong,#fff) 94%,transparent);backdrop-filter:blur(10px);box-shadow:0 10px 28px color-mix(in srgb,var(--brand-deep,#b03a5e) 14%,transparent);font:400 11.5px/1.65 var(--chat-type,serif);letter-spacing:.02em;color:var(--ink,#57324a);text-align:left;cursor:default;z-index:9}
.cache-lamp .lamp-pop b{font-weight:600;color:var(--brand-deep,#b03a5e)}
/* 气泡打开的 5 秒里把顶栏抬到消息流之上,不然会被聊天内容盖住 */
.topbar.lamp-pop-open{z-index:6!important}

/* source: ak-me-skin */
/* ── AK-ME 个人/设置页墨白换皮(2026-08-06)· 仅 data-sms(墨白)显形,花笺零动 ──
   详情弹窗的卡片会被 JS 搬进 body 下的 .settings-detail-overlay,
   所以 token 同时定义在 .profile-page 和 overlay 上(12448 行 ref 层在
   .profile-page 上定义过同名 var,必须在同元素上以更高特异性压回) */
:root[data-sms] .profile-panel,
:root[data-sms] .profile-page,
:root[data-sms] .settings-detail-overlay{
  --akbg:#f7f4ef; --aksurface:rgba(255,255,255,.66); --akpaper:#fdfcfa;
  --akink:#222220; --akink2:#66645f; --akmute:#98958f;
  --akline:rgba(34,34,32,.16); --akline2:rgba(34,34,32,.08);
  --ak-accent:#2774b8; --akrose:#d45f83;
  --akserif:"Cormorant Garamond",Georgia,"Noto Serif SC","Songti SC",serif;
  --akcjk:"Noto Serif SC","Songti SC","SimSun",serif;
  --aknum:"Source Serif 4","Noto Serif SC",Georgia,serif;
  --akscript:"Satisfy","Segoe Script","Cormorant Garamond",cursive;
  /* 主题 var 重映射兜底:没被下面点名的角落也自动落进墨白色系 */
  --ink:var(--akink); --text:var(--akink); --text-soft:var(--akink2);
  --text-faint:var(--akmute); --muted:var(--akmute);
  --paper:var(--akpaper); --paper-2:var(--akbg);
  --brand:var(--ak-accent); --brand-deep:var(--akink);
  --accent:var(--ak-accent); --warm:var(--ak-accent);
  --glass:var(--aksurface); --glass-strong:var(--akpaper); --glass-line:var(--akline);
  --glass-shadow:none; --surface-shadow:rgba(34,34,32,.10);
  --card-bg:var(--aksurface); --card-line:var(--akline); --card-shadow:none;
  --seg-track:rgba(34,34,32,.05); --seg-thumb:var(--akink); --seg-thumb-shadow:none;
  --slider-track:var(--akline2); --slider-thumb:var(--akink);
  --row-press:rgba(34,34,32,.06);
  --field-bg:#fff; --field-line:var(--akline);
  --overlay-scrim:rgba(34,34,32,.34);
  --scrim:transparent; --wall-default:none}

/* 白画布收星月(:has 家规);弹窗开着时同收 */
:root[data-sms] body:has(#profilePanel:not(.hidden)) .drift-layer,
:root[data-sms] body.settings-detail-open .drift-layer{display:none}

/* ── 页壳:白纸平底(12456 行 ref 渐变墙纸带 !important,必须压) ── */
:root[data-sms] .profile-page{background:var(--akbg)!important}
:root[data-sms] .profile-page::before{content:none!important}

/* 顶栏:细框方角返回 + caps 页题;滚动区顶压粗墨线 */
:root[data-sms] .profile-back{border:1px solid var(--akline);border-radius:0;width:36px;height:36px;color:var(--akink);margin-left:0}
:root[data-sms] .profile-back svg{width:18px;height:18px}
:root[data-sms] #profileTitle{margin:0 auto;font:600 11px/1 var(--akserif)!important;letter-spacing:.24em;text-transform:uppercase;color:var(--akink)}
:root[data-sms] .profile-scroll{border-top:1.5px solid var(--akink);margin:0 16px;padding:14px 2px calc(30px + env(safe-area-inset-bottom))!important;gap:18px}
/* Satisfy 花体页首(仅 settings 视图;mind 视图题头保持素净) */
:root[data-sms] .profile-panel.settings-view .profile-scroll::before{
  content:"Me";display:block;flex:0 0 auto;margin:2px 2px -4px;
  font:400 46px/1 var(--akscript);color:var(--akink)}

/* ── 身份:轻署名行(0806夜二改,乐乐:"Me和头像有点突兀"——头像缩小挪右侧,
   跟 Home 标题行右挂房间胶囊同构;花体 Me 独占页题,名字降号不抢戏) ── */
:root[data-sms] .profile-panel .profile-identity{background:transparent;border:0;border-radius:0;box-shadow:none;padding:0 2px 6px;margin-top:-6px;grid-template-columns:1fr auto;gap:2px 14px}
:root[data-sms] .profile-panel .profile-avatar{grid-column:2;grid-row:1/3;align-self:start;border-radius:2px;border:1px solid var(--akline);box-shadow:none;width:42px;height:42px}
:root[data-sms] .profile-panel .profile-id-copy{grid-column:1;grid-row:1}
:root[data-sms] .profile-panel .profile-name-row h3,
:root[data-sms] .profile-panel #profileNameInput{font-family:var(--akcjk);font-size:17px}
:root[data-sms] .profile-panel #profileNameInput,
:root[data-sms] .profile-panel #profileHandleInput{background:#fff;border:1px solid var(--akline);border-radius:0}
:root[data-sms] .profile-panel .profile-handle{font-family:var(--aknum);font-variant-numeric:lining-nums;font-feature-settings:"lnum" 1}
:root[data-sms] .profile-panel .profile-bio{font:italic 400 12.5px/1.5 var(--akserif);color:var(--akmute)}
:root[data-sms] .profile-panel .profile-name-edit{color:var(--akink2)}

/* ── 设置目录:开放式索引行 = Home 的 ak-idx 词汇(小蓝菱形+标题+虚线引线+箭头),无卡无框 ── */
:root[data-sms] .settings-hub{gap:0;margin-top:2px}
:root[data-sms] .settings-hub-row{grid-template-columns:auto auto 1fr auto;grid-template-rows:auto auto;gap:4px 12px;align-items:center;min-height:60px;padding:13px 2px;border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important}
:root[data-sms] .settings-hub-row::before{content:"";grid-column:1;grid-row:1;width:6px;height:6px;transform:rotate(45deg);background:var(--ak-accent)}
:root[data-sms] .settings-hub-row span{grid-column:2;grid-row:1;font:600 15px/1.3 var(--akcjk)!important;color:var(--akink)!important}
:root[data-sms] .settings-hub-row::after{content:"";grid-column:3;grid-row:1;border-top:1px dashed var(--akline)}
:root[data-sms] .settings-hub-row small{grid-column:2/5;grid-row:2;font:italic 400 11.5px/1.45 var(--akserif)!important;color:var(--akmute)!important}
:root[data-sms] .settings-hub-row b{grid-column:4;grid-row:1;font:300 18px/1 var(--akserif)!important;color:var(--akink2)!important}

/* ── 卡与眉题(页内+弹窗两栖,以下 :is 同) ── */
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .settings-card{border:1px solid var(--akline);border-radius:2px!important;-webkit-backdrop-filter:none;backdrop-filter:none}
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .settings-label{font:600 10.5px/1.4 var(--akserif)!important;letter-spacing:.2em;text-transform:uppercase;color:var(--akink2)!important}
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .info-i{border-radius:0;text-transform:none;letter-spacing:0}
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .settings-sub{font:italic 400 11px/1.5 var(--akserif);color:var(--akmute)!important}
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .theme-family b{font:600 13px/1 var(--akcjk)!important;color:var(--akink)!important}
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .theme-family small{font:italic 400 10.5px/1 var(--akserif)!important;color:var(--akmute)!important}

/* 分段控件:方角,选中实心墨(1988 行带 !important,同押) */
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .segmented{background:transparent;border:1px solid var(--akline);border-radius:0;padding:0;gap:0}
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .segmented button{border-radius:0;font-family:var(--akcjk);font-weight:500;color:var(--akink2);padding:9px 3px}
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .segmented button.active{background:var(--akink)!important;color:var(--akbg)!important;box-shadow:none!important;font-weight:600}

/* 上下文滑杆:细轨方钮,数值 lining */
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .context-current{font:italic 400 12.5px/1.4 var(--akserif);color:var(--akink2)}
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .context-current strong{font:600 16px/1 var(--aknum);font-style:normal;font-variant-numeric:lining-nums;font-feature-settings:"lnum" 1;color:var(--akink)}
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .context-slider{border-radius:0;height:3px}
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .context-slider::-webkit-slider-thumb{border-radius:2px;background:var(--akink);border:2px solid var(--akbg);box-shadow:0 2px 8px rgba(34,34,32,.3)}
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .context-slider::-moz-range-thumb{border-radius:2px;background:var(--akink);border:2px solid var(--akbg);box-shadow:0 2px 8px rgba(34,34,32,.3)}
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .context-scale{font-family:var(--aknum);font-variant-numeric:lining-nums;font-feature-settings:"lnum" 1}

/* 动作行(摘要API状态/清空会话等):白面方角(9830 行带 !important,同押) */
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .action-row{border:1px solid var(--akline);border-radius:2px!important;box-shadow:none!important;background:var(--aksurface);-webkit-backdrop-filter:none;backdrop-filter:none}
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .action-icon{color:var(--ak-accent)}
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .action-name{font-family:var(--akcjk)}
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .action-value{font:italic 400 12px/1.3 var(--akserif);color:var(--akmute)}
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .status-used{font-family:var(--aknum);font-variant-numeric:lining-nums;font-feature-settings:"lnum" 1}

/* 内心状态卡(mind 视图):方角量条,独白墨线小笺 */
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .mind-state{font-family:var(--akcjk)}
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .mind-track{border-radius:0}
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .mind-fill{background:var(--ak-accent)}
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .mind-meta{border-top-color:var(--akline)}
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .mind-monologues li{border-radius:0;background:transparent;border:1px solid var(--akline2);font-family:var(--akcjk)}
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .mind-refresh{font:italic 400 12px/1.2 var(--akserif);color:var(--akink2)}

/* 聊天热力图(mind 视图) */
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .calendar-kicker strong{font:600 10.5px/1 var(--akserif)!important;letter-spacing:.2em;text-transform:uppercase;color:var(--akink2)}
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .calendar-head strong{font-family:var(--aknum)!important;font-variant-numeric:lining-nums;font-feature-settings:"lnum" 1;color:var(--akink)}
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .calendar-head button{border:1px solid var(--akline);border-radius:0;color:var(--akink)}
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .calendar-cell{border-radius:0!important}
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .calendar-hint{font:italic 400 11px/1.5 var(--akserif)!important;color:var(--akmute)}
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .push-hint{font:italic 400 11.5px/1.5 var(--akserif);color:var(--akmute)}

/* ── 详情弹窗:白纸方角,顶压粗墨线,caps 弹窗题 ── */
:root[data-sms] .settings-detail-overlay{background:rgba(34,34,32,.34);backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px)}
:root[data-sms] .settings-detail-dialog{border:1px solid var(--akink);border-radius:2px;background:var(--akbg);box-shadow:0 26px 70px rgba(34,34,32,.38)}
:root[data-sms] .settings-detail-head{border-bottom:1.5px solid var(--akink);padding:15px 16px 12px}
:root[data-sms] .settings-detail-head strong{font:600 12px/1 var(--akserif);font-style:normal;letter-spacing:.22em;text-transform:uppercase;color:var(--akink)}
:root[data-sms] .settings-detail-close{border:1px solid var(--akline);border-radius:0;background:transparent;color:var(--akink)}
:root[data-sms] .settings-detail-body{padding:8px 14px 18px}

/* ── 表单件通用:方角细墨输入/按钮,实心墨主钮(卡内 <style> 是 ID 选择器,以 !important 压) ── */
:root[data-sms] :is(.profile-page,.settings-detail-overlay) :is(.api-input,.prompt-editor,.xp-name,#kelivoLimit){border:1px solid var(--akline)!important;border-radius:0!important;background:#fff!important;color:var(--akink)!important}
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .api-input{font-family:var(--akcjk)!important}
:root[data-sms] :is(.profile-page,.settings-detail-overlay) #kelivoLimit{font-family:var(--aknum)!important;font-variant-numeric:lining-nums}
:root[data-sms] :is(.profile-page,.settings-detail-overlay) :is(.api-mini-btn,.history-mini-btn){border:1px solid var(--akline)!important;border-radius:0!important;background:transparent!important;color:var(--akink)!important;font-family:var(--akcjk)!important}
:root[data-sms] :is(.profile-page,.settings-detail-overlay) :is(.api-mini-btn.primary,.history-mini-btn.primary){background:var(--akink)!important;border-color:var(--akink)!important;color:var(--akbg)!important}
:root[data-sms] :is(.profile-page,.settings-detail-overlay) :is(.api-mini-btn.xp-danger,.history-mini-btn.danger){background:transparent!important;color:#b0504d!important;border-color:rgba(176,80,77,.4)!important}
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .api-add-btn{border:1px dashed var(--akline)!important;border-radius:0!important;color:var(--akink2)!important;font-family:var(--akcjk)!important}
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .api-row{border:1px solid var(--akline)!important;border-radius:0!important;background:#fff}
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .api-row.active{border-color:var(--akink)!important;background:var(--akbg)!important}
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .api-row .dot{border-radius:0!important;border:1.5px solid var(--akline)!important;width:11px;height:11px}
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .api-row.active .dot{border-color:var(--ak-accent)!important;background:var(--ak-accent)!important}
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .api-pricing-box{border:1px solid var(--akline2)!important;border-radius:0!important}
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .api-hint{font:italic 400 11px/1.4 var(--akserif)!important;color:var(--akmute)!important}

/* 附加提示词:白面方角行,开关墨色 */
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .xp-row{border:1px solid var(--akline)!important;border-radius:0!important;background:#fff!important}
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .xp-title{font-family:var(--akcjk)!important}
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .xp-peek{font:italic 400 11px/1.3 var(--akserif)!important;color:var(--akmute)!important}
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .xp-switch{background:rgba(34,34,32,.22)!important}
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .xp-switch.on{background:var(--akink)!important}

/* 聊天记录卡:概览/迁移卡白面方角,徽章细墨 */
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .history-overview{border:1px solid var(--akline)!important;border-radius:2px!important;background:var(--aksurface)!important}
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .history-overview-icon{border-radius:0!important;background:transparent!important;border:1px solid var(--akline2);color:var(--akink)!important}
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .history-overview-copy strong{font-family:var(--akcjk)!important}
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .history-format-badge{border-radius:0!important;background:transparent!important;border:1px solid var(--akline)!important;color:var(--akink2)!important;font-family:var(--aknum)!important}
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .history-transfer-card{border:1px solid var(--akline)!important;border-radius:2px!important;background:#fff!important}
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .history-transfer-card.export{background:var(--akbg)!important}
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .history-transfer-icon{border-radius:0!important;background:transparent!important;border:1px solid var(--akline2);color:var(--ak-accent)!important}
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .history-transfer-name{font-family:var(--akcjk)!important}
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .history-transfer-card small{font:italic 400 9.5px/1.3 var(--akserif)!important;color:var(--akmute)!important}
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .kelivo-import-options{border:1px solid var(--akline2)!important;border-radius:0!important;background:transparent!important}
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .summary-api-form{border:1px solid var(--akline2)!important;border-radius:0!important;background:transparent!important}

/* 乐乐头像预选行(主题卡内) */
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .human-avatar-preview{border-radius:2px!important;box-shadow:none!important;border:1px solid var(--akline)}
:root[data-sms] :is(.profile-page,.settings-detail-overlay) .human-avatar-choice{font-family:var(--akcjk)!important}

/* toast:墨牌白字方角(设置页 info-i 说明等都走它) */
:root[data-sms] .toast{background:#222220;color:#f6f3ee;border-radius:0;font-family:"Noto Serif SC","Songti SC","SimSun",serif;box-shadow:0 14px 34px rgba(34,34,32,.32)}

/* ══ 细化轮(0806下午,乐乐:"有点单调"→补 ak 装饰密度,词汇全参考 Home/Commons)══ */
/* 签名压墨线收终点圆点(同 Home whisper;锚点方块/PROFILE角签随卡片盒子一起退休) */
:root[data-sms] .profile-panel .profile-bio{position:relative;padding:0 0 9px;border-bottom:1px solid var(--akline)}
:root[data-sms] .profile-panel .profile-bio::after{content:"";position:absolute;right:0;bottom:-3px;width:5px;height:5px;border-radius:50%;background:var(--akink)}
/* ── 行记轮(0806晚,乐乐点单"要方舟众生行记那种关卡UI,滑动会变"):
   目录改关卡节点列表 = 左轨道+菱形节点+ME-0x关卡码+角落斜纹章;
   滑动联动 = scroll-driven animation(卡片入出场随滚动擦洗+罗马数字水印视差+顶栏进度线),
   @supports 门控,老浏览器退回静态版不炸;词汇原创不照搬 ── */
:root[data-sms] .settings-hub::before{content:"INDEX";display:block;padding:2px 1px 7px;border-bottom:1px dashed var(--akline);font:600 10px/1 var(--akserif);letter-spacing:.28em;color:var(--akink2)}
/* (轨道/卡片斜纹章随卡片时代退休,0806夜开放式改版) */
/* 草稿桌批注层:原创 SVG 线稿+蓝批注铺满 Me 页底,卡片半透明白隐约透出;滚动时视差漂移
   (.profile-page 原生 position:absolute inset:0,别再写 position:relative——会塌掉滚动高度,0806踩过) */
:root[data-sms] .profile-panel.settings-view .profile-page::after{content:"";position:absolute;
  left:0;right:0;top:0;height:calc(100% + 260px);z-index:0;pointer-events:none;
  background-image:url("data:image/svg+xml;utf8,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20width%3D'480'%20height%3D'1560'%20viewBox%3D'0%200%20480%201560'%20font-family%3D'Georgia%2CTimes%20New%20Roman%2Cserif'%3E%0A%3Cg%20stroke%3D'rgba(34%2C34%2C32%2C.13)'%20fill%3D'none'%3E%0A%3Cpolyline%20points%3D'16%2C764%2058%2C702%2092%2C748%20128%2C688%20166%2C752%20204%2C712%20238%2C764'%20stroke-width%3D'1.2'%2F%3E%0A%3Cpath%20d%3D'M60%201180%20Q%20240%201078%20462%201168'%2F%3E%0A%3Cpath%20d%3D'M296%20318%20Q%20340%20268%20402%20258%20M292%20336%20Q%20348%20300%20416%20296%20M290%20354%20Q%20352%20332%20424%20336'%20stroke-width%3D'1'%2F%3E%0A%3Ccircle%20cx%3D'120'%20cy%3D'980'%20r%3D'40'%2F%3E%3Ccircle%20cx%3D'120'%20cy%3D'980'%20r%3D'58'%20stroke%3D'rgba(34%2C34%2C32%2C.09)'%2F%3E%0A%3Crect%20x%3D'40'%20y%3D'420'%20width%3D'150'%20height%3D'96'%20stroke%3D'rgba(34%2C34%2C32%2C.18)'%20stroke-dasharray%3D'4%203'%2F%3E%0A%3Cpath%20d%3D'M250%201244%20h150%20M250%201238%20v12%20M400%201238%20v12'%20stroke%3D'rgba(34%2C34%2C32%2C.2)'%2F%3E%0A%3Cpath%20d%3D'M330%201390%20l46%20-46%20M348%201408%20l46%20-46'%20stroke%3D'rgba(34%2C34%2C32%2C.4)'%20stroke-width%3D'4'%2F%3E%0A%3C%2Fg%3E%0A%3Cg%20stroke%3D'rgba(39%2C116%2C184%2C.32)'%20fill%3D'none'%3E%0A%3Cpath%20d%3D'M400%2036%20v1500'%20stroke-width%3D'1'%2F%3E%0A%3Cpath%20d%3D'M394%20200%20h12%20M394%20440%20h12%20M394%20800%20h12%20M394%201160%20h12%20M394%201420%20h12'%2F%3E%0A%3Ccircle%20cx%3D'300'%20cy%3D'190'%20r%3D'26'%2F%3E%3Ccircle%20cx%3D'300'%20cy%3D'190'%20r%3D'3.5'%20fill%3D'rgba(39%2C116%2C184%2C.5)'%20stroke%3D'none'%2F%3E%0A%3Cpath%20d%3D'M264%20190%20h72%20M300%20154%20v72'%2F%3E%0A%3Crect%20x%3D'190'%20y%3D'600'%20width%3D'120'%20height%3D'76'%20stroke-dasharray%3D'5%204'%20transform%3D'rotate(-8%20250%20638)'%20stroke%3D'rgba(39%2C116%2C184%2C.28)'%2F%3E%0A%3Ccircle%20cx%3D'330'%20cy%3D'1058'%20r%3D'17'%2F%3E%3Cpath%20d%3D'M330%201041%20v-10%20M330%201075%20v10%20M313%201058%20h-10%20M347%201058%20h10'%2F%3E%0A%3C%2Fg%3E%0A%3Cg%20fill%3D'rgba(39%2C116%2C184%2C.42)'%20font-size%3D'10'%3E%0A%3Ctext%20x%3D'408'%20y%3D'204'%3EY1%3C%2Ftext%3E%3Ctext%20x%3D'408'%20y%3D'444'%3EY2%3C%2Ftext%3E%3Ctext%20x%3D'406'%20y%3D'1164'%3E-Y3%3C%2Ftext%3E%0A%3Ctext%20x%3D'150'%20y%3D'544'%3E560%3C%2Ftext%3E%3Ctext%20x%3D'208'%20y%3D'904'%3E87%3C%2Ftext%3E%3Ctext%20x%3D'58'%20y%3D'864'%3E-111%3C%2Ftext%3E%3Ctext%20x%3D'386'%20y%3D'1004'%3E24%3C%2Ftext%3E%3Ctext%20x%3D'332'%20y%3D'800'%3EO.%3C%2Ftext%3E%0A%3C%2Fg%3E%0A%3Cg%20fill%3D'rgba(34%2C34%2C32%2C.2)'%3E%0A%3Ctext%20x%3D'36'%20y%3D'612'%20font-size%3D'24'%20font-style%3D'italic'%3EN%3C%2Ftext%3E%0A%3Ctext%20x%3D'432'%20y%3D'1310'%20font-size%3D'17'%3E%26%238734%3B%3C%2Ftext%3E%0A%3Crect%20x%3D'260'%20y%3D'140'%20width%3D'5'%20height%3D'5'%2F%3E%3Crect%20x%3D'70'%20y%3D'1120'%20width%3D'5'%20height%3D'5'%20fill%3D'rgba(39%2C116%2C184%2C.45)'%2F%3E%3Crect%20x%3D'420'%20y%3D'880'%20width%3D'5'%20height%3D'5'%20fill%3D'rgba(39%2C116%2C184%2C.45)'%2F%3E%0A%3Crect%20x%3D'177'%20y%3D'757'%20width%3D'6'%20height%3D'6'%20transform%3D'rotate(45%20180%20760)'%20fill%3D'rgba(39%2C116%2C184%2C.4)'%2F%3E%0A%3C%2Fg%3E%3C%2Fsvg%3E");background-size:480px auto;background-repeat:repeat}
/* 顶栏进度线:滑到哪走到哪(.profile-scroll 自带 z-index:1,topbar 必须压上去)
   顶栏穿纸色衣:批注层视差漂上来时从它底下钻过,不再压字(0806真机她报"滑动盖上去") */
:root[data-sms] .profile-topbar{position:relative;z-index:2;background:var(--akbg)}
/* SETTINGS 牌子退休(她:都是Me页了还要什么settings) */
:root[data-sms] .profile-panel.settings-view #profileTitle{display:none!important}
/* tab 态:顶栏整个退休(她原话"顶栏都去掉了!还弄它干嘛!");
   滚动区自补安全区顶距,进度线搬去 panel::after 骑在墨线上 */
:root[data-sms] body.ak-me-tab .profile-topbar{display:none}
:root[data-sms] body.ak-me-tab .profile-scroll{margin-top:env(safe-area-inset-top,0px);padding-top:16px!important}
:root[data-sms] body.ak-me-tab .profile-panel::after{content:"";position:absolute;left:16px;right:16px;top:env(safe-area-inset-top,0px);height:2px;z-index:3;background:var(--ak-accent);transform-origin:left;transform:scaleX(0)}
:root[data-sms] .profile-topbar::after{content:"";position:absolute;left:16px;right:16px;bottom:-1.5px;height:2px;background:var(--ak-accent);transform-origin:left;transform:scaleX(0)}
/* 滑动联动(Chromium 115+;老浏览器整段跳过,静态版照常) */
@supports (animation-timeline: view()){
  :root[data-sms] .profile-panel{timeline-scope:--meScroll} /* 放panel:topbar和panel::after两个宿主都要够得着 */
  :root[data-sms] .profile-scroll{scroll-timeline:--meScroll y}
  :root[data-sms] .profile-topbar::after{animation:akMeProg linear both;animation-timeline:--meScroll}
  :root[data-sms] body.ak-me-tab .profile-panel::after{animation:akMeProg linear both;animation-timeline:--meScroll}
  :root[data-sms] .profile-panel.settings-view .profile-page::after{animation:akMeDrift linear both;animation-timeline:--meScroll}
  :root[data-sms] .settings-hub-row{
    animation:akMeRowIn linear both,akMeRowOut linear both;
    animation-timeline:view(),view();
    animation-range:entry 0% entry 90%,exit 10% exit 100%}
  @media (prefers-reduced-motion:reduce){
    :root[data-sms] .settings-hub-row,:root[data-sms] .profile-page::after,:root[data-sms] .profile-topbar::after{animation:none}}
}
@keyframes akMeProg{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes akMeDrift{from{transform:translateY(0)}to{transform:translateY(-240px)}}
@keyframes akMeRowIn{from{opacity:.12;transform:translateX(26px)}to{opacity:1;transform:none}}
@keyframes akMeRowOut{from{opacity:1;transform:none}to{opacity:.12;transform:translateX(-16px)}}
/* 页脚小签(仅 settings 视图;flex 尾项,与 Home ak-foot 同款) */
:root[data-sms] .profile-panel.settings-view .profile-scroll::after{content:"ACHERON & SABLE";display:block;flex:0 0 auto;margin:8px 0 2px;text-align:center;font:600 9px/1 var(--akserif);letter-spacing:.3em;color:var(--akmute)}

/* ── Me 当真 tab(0806夜,乐乐:"Me 底栏就有,为什么还有返回键"):
   从 ak 底栏进 Me → body.ak-me-tab:首页不关、面板底边停在底栏上沿、返回键收起,
   底栏一直露着可点(menu z190 < panel z200,面板让出高度即露出);
   从聊天页头像/内心状态进的旧路不带这个类,返回键照留,不然没出口 ── */
:root[data-sms] body.ak-me-tab .profile-panel{bottom:calc(60px + env(safe-area-inset-bottom,0px))}
:root[data-sms] body.ak-me-tab .profile-back{display:none}

/* source: inline-style-04 */
#apiCard .api-list{ display:flex; flex-direction:column; gap:8px; margin:8px 0; }
          #apiCard .api-row{ display:flex; align-items:center; gap:8px; padding:8px 10px; border:1px solid rgba(255,255,255,.14); border-radius:10px; cursor:pointer; }
          #apiCard .api-row.active{ border-color:#b48ead; background:rgba(180,142,173,.14); }
          #apiCard .api-row .dot{ width:13px; height:13px; border-radius:50%; border:2px solid rgba(255,255,255,.4); flex:0 0 auto; }
          #apiCard .api-row.active .dot{ border-color:#b48ead; background:#b48ead; }
          #apiCard .api-meta{ flex:1; min-width:0; }
          #apiCard .api-meta .nm{ font-size:14px; }
          #apiCard .api-meta .sub{ font-size:11px; opacity:.55; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
          #apiCard .api-e, #apiCard .api-x{ display:grid; place-items:center; width:30px; height:30px; flex:0 0 auto; padding:0; border:0; border-radius:10px; background:transparent; color:var(--muted); opacity:.68; cursor:pointer; }
          #apiCard .api-e svg, #apiCard .api-x svg{ display:block; width:15px; height:15px; }
          #apiCard .api-e:hover, #apiCard .api-x:hover{ opacity:1; }
          #apiCard .api-add-btn{ display:flex; align-items:center; justify-content:center; gap:7px; width:100%; padding:9px; border:1px dashed rgba(255,255,255,.25); border-radius:10px; background:transparent; color:inherit; opacity:.8; cursor:pointer; font-size:13px; }
          #apiCard .api-add-btn svg{ display:block; width:15px; height:15px; }
          #apiCard .api-form{ display:flex; flex-direction:column; gap:8px; margin-top:10px; }
          #apiCard .api-input{ width:100%; padding:9px 11px; border:1px solid rgba(255,255,255,.16); border-radius:9px; background:rgba(0,0,0,.22); color:inherit; font-size:13px; }
          #apiCard .api-role-field{ display:grid; grid-template-columns:auto minmax(0,1fr); align-items:center; gap:10px; color:var(--muted); font:500 11px/1.2 var(--chat-type); }
          #apiCard .api-role-field .api-input{ min-width:0; appearance:auto; border-color:var(--field-line,rgba(255,255,255,.16)); background:var(--field-bg,rgba(0,0,0,.22)); color:var(--text,inherit); }
          #apiCard .api-role-badge{ flex:0 0 auto; padding:4px 7px; border:1px solid color-mix(in srgb,var(--brand-deep) 25%,transparent); border-radius:999px; background:color-mix(in srgb,var(--paper) 70%,transparent); color:var(--muted); font:600 9px/1 var(--chat-type); letter-spacing:.08em; }
          #apiCard .api-row.role-vision{ border-color:color-mix(in srgb,var(--brand-deep) 28%,var(--glass-line)); background:color-mix(in srgb,var(--brand) 7%,var(--glass)); cursor:default; }
          #apiCard .api-row.role-vision .dot{ border-color:color-mix(in srgb,var(--brand-deep) 60%,transparent); background:color-mix(in srgb,var(--brand) 28%,transparent); }
          #apiCard .api-row.role-summary{ cursor:default; }
          #apiCard .api-model-row{ display:flex; gap:6px; }
          #apiCard .api-model-row .api-input{ flex:1; }
          #apiCard .api-mini-btn{ padding:8px 12px; border:1px solid rgba(255,255,255,.2); border-radius:9px; background:transparent; color:inherit; cursor:pointer; font-size:13px; white-space:nowrap; }
          #apiCard .api-mini-btn.primary{ background:#b48ead; border-color:transparent; color:#fff; }
          #apiCard .api-form-actions{ display:flex; gap:6px; }
          #apiCard .api-hint{ font-size:11px; opacity:.65; min-height:14px; }
          .api-form .api-pricing-box{ border:1px solid rgba(255,255,255,.14); border-radius:10px; padding:8px 10px; }
          .api-form .api-pricing-box summary{ cursor:pointer; font-size:12px; opacity:.82; }
          .api-form .api-pricing-box p{ margin:8px 0; font-size:10.5px; line-height:1.45; opacity:.58; }
          .api-form .api-price-grid{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:7px; margin-top:7px; }
          .api-form .api-price-grid label{ display:grid; gap:4px; min-width:0; font-size:10.5px; opacity:.76; }
          .api-form .api-price-grid .api-input{ min-width:0; }

/* source: inline-style-05 */
#systemPromptCard .prompt-editor-note{ margin:0 0 10px; color:var(--text-faint); font-size:11.5px; line-height:1.55; }
          #systemPromptCard .prompt-editor{ display:block; width:100%; min-height:46vh; resize:vertical; padding:12px; border:1px solid var(--field-line); border-radius:13px; background:var(--field-bg); color:var(--text); font:12px/1.65 ui-monospace,"SF Mono",Menlo,monospace; outline:none; }
          #systemPromptCard .prompt-editor:focus{ border-color:var(--accent); box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 14%,transparent); }
          #systemPromptCard .prompt-editor-meta{ display:flex; justify-content:space-between; gap:12px; padding:7px 2px 9px; color:var(--text-faint); font-size:11px; }
          #systemPromptCard .prompt-editor-actions{ display:flex; gap:8px; }
          #systemPromptCard .api-mini-btn{ flex:1; padding:9px 12px; border:1px solid var(--field-line); border-radius:10px; background:transparent; color:var(--text); font:inherit; cursor:pointer; }
          #systemPromptCard .api-mini-btn.primary{ background:var(--accent); border-color:transparent; color:white; }
          #systemPromptCard .api-mini-btn:disabled{ opacity:.5; cursor:default; }

/* source: inline-style-06 */
#extraPromptsCard .prompt-editor-note{ margin:0 0 10px; color:var(--text-faint); font-size:11.5px; line-height:1.55; }
          #extraPromptsCard .xp-list{ display:flex; flex-direction:column; gap:8px; margin:0 0 10px; }
          #extraPromptsCard .xp-row{ display:flex; align-items:center; gap:10px; padding:10px 12px; border:1px solid var(--field-line); border-radius:13px; background:var(--field-bg); }
          #extraPromptsCard .xp-row.off{ opacity:.55; }
          #extraPromptsCard .xp-info{ flex:1; min-width:0; cursor:pointer; }
          #extraPromptsCard .xp-title{ font-size:13px; color:var(--text); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
          #extraPromptsCard .xp-peek{ margin-top:2px; font-size:11px; color:var(--text-faint); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
          #extraPromptsCard .xp-switch{ position:relative; flex:0 0 40px; width:40px; height:24px; border-radius:12px; border:none; cursor:pointer; background:color-mix(in srgb,var(--text-faint) 38%,transparent); transition:background .18s; }
          #extraPromptsCard .xp-switch::after{ content:""; position:absolute; top:3px; left:3px; width:18px; height:18px; border-radius:50%; background:#fff; box-shadow:0 1px 3px rgba(0,0,0,.25); transition:transform .18s; }
          #extraPromptsCard .xp-switch.on{ background:var(--accent); }
          #extraPromptsCard .xp-switch.on::after{ transform:translateX(16px); }
          #extraPromptsCard .xp-editor{ margin:0 0 10px; }
          #extraPromptsCard .xp-name{ display:block; width:100%; margin:0 0 8px; padding:10px 12px; border:1px solid var(--field-line); border-radius:11px; background:var(--field-bg); color:var(--text); font:inherit; outline:none; }
          #extraPromptsCard .xp-name:focus{ border-color:var(--accent); }
          #extraPromptsCard .xp-content{ display:block; width:100%; min-height:26vh; resize:vertical; padding:12px; border:1px solid var(--field-line); border-radius:13px; background:var(--field-bg); color:var(--text); font:12px/1.65 ui-monospace,"SF Mono",Menlo,monospace; outline:none; }
          #extraPromptsCard .xp-content:focus{ border-color:var(--accent); }
          #extraPromptsCard .prompt-editor-actions{ display:flex; gap:8px; margin-top:8px; }
          #extraPromptsCard .api-mini-btn{ flex:1; padding:9px 12px; border:1px solid var(--field-line); border-radius:10px; background:transparent; color:var(--text); font:inherit; cursor:pointer; }
          #extraPromptsCard .api-mini-btn.primary{ background:var(--accent); border-color:transparent; color:white; }
          #extraPromptsCard .api-mini-btn.xp-danger{ color:#c0524f; border-color:color-mix(in srgb,#c0524f 45%,transparent); }
          #extraPromptsCard .api-mini-btn:disabled{ opacity:.5; cursor:default; }
          #extraPromptsCard .xp-empty{ padding:14px 4px; color:var(--text-faint); font-size:12px; text-align:center; }

/* source: inline-style-07 */
#historyCard .history-overview{ display:flex; align-items:center; gap:12px; min-height:82px; padding:14px; border:1px solid color-mix(in srgb,var(--brand) 20%,transparent); border-radius:18px; background:linear-gradient(145deg,color-mix(in srgb,var(--brand) 10%,var(--paper)),color-mix(in srgb,var(--paper) 86%,transparent)); font-family:var(--chat-type); }
          #historyCard .history-overview-icon{ display:grid; place-items:center; flex:0 0 42px; width:42px; height:42px; border-radius:14px; background:color-mix(in srgb,var(--brand-deep) 12%,var(--paper)); color:var(--brand-deep); }
          #historyCard .history-overview-icon svg{ width:23px; height:23px; }
          #historyCard .history-overview-copy{ display:flex; flex:1; min-width:0; flex-direction:column; }
          #historyCard .history-overview-copy small{ color:var(--muted); font:400 10px/1.2 var(--chat-type); letter-spacing:.08em; }
          #historyCard .history-overview-copy strong{ margin-top:3px; overflow:hidden; color:var(--ink); font:500 14px/1.25 var(--chat-type); text-overflow:ellipsis; white-space:nowrap; }
          #historyCard .history-overview-copy span{ margin-top:3px; color:var(--text-soft); font:400 10px/1.25 var(--chat-type); }
          #historyCard .history-format-badge{ flex:0 0 auto; align-self:flex-start; padding:5px 8px; border:1px solid color-mix(in srgb,var(--brand) 25%,transparent); border-radius:999px; background:color-mix(in srgb,var(--paper) 80%,transparent); color:var(--brand-deep); font:500 9px/1 var(--chat-type); }
          #historyCard .history-transfer-label{ margin-top:16px; }
          #historyCard .history-transfer-grid{ display:grid; grid-template-columns:1fr 1fr; gap:9px; margin-top:9px; }
          #historyCard .history-transfer-card{ display:flex; min-width:0; min-height:116px; flex-direction:column; align-items:flex-start; padding:13px; border:1px solid var(--glass-line); border-radius:16px; background:color-mix(in srgb,var(--paper) 72%,transparent); color:var(--ink); text-align:left; cursor:pointer; transition:transform .16s ease,border-color .16s ease,background .16s ease; }
          #historyCard .history-transfer-card:active{ transform:scale(.98); }
          #historyCard .history-transfer-card:focus-visible{ outline:2px solid color-mix(in srgb,var(--brand-deep) 48%,transparent); outline-offset:2px; }
          #historyCard .history-transfer-card:disabled{ opacity:.58; cursor:wait; }
          #historyCard .history-transfer-card.export{ background:linear-gradient(145deg,color-mix(in srgb,var(--brand) 11%,var(--paper)),color-mix(in srgb,var(--paper) 78%,transparent)); }
          #historyCard .history-transfer-icon{ display:grid; place-items:center; width:34px; height:34px; margin-bottom:11px; border-radius:11px; background:color-mix(in srgb,var(--brand-deep) 10%,var(--paper)); color:var(--brand-deep); }
          #historyCard .history-transfer-icon svg{ width:19px; height:19px; }
          #historyCard .history-transfer-name{ font:500 12px/1.3 var(--chat-type); }
          #historyCard .history-transfer-card small{ display:block; max-width:100%; margin-top:5px; overflow:hidden; color:var(--muted); font:400 9.5px/1.25 var(--chat-type); text-overflow:ellipsis; white-space:nowrap; }
          #historyCard .kelivo-import-options{ display:grid; gap:9px; margin-top:10px; padding:12px; border:1px solid var(--glass-line); border-radius:14px; background:color-mix(in srgb,var(--paper) 66%,transparent); font-family:var(--chat-type); }
          #historyCard .kelivo-limit-field{ display:flex; align-items:center; justify-content:space-between; gap:12px; color:var(--text-soft); font:400 12px/1.25 var(--chat-type); }
          #historyCard .kelivo-limit-control{ display:flex; align-items:center; gap:7px; min-width:0; }
          #historyCard #kelivoLimit{ width:76px; min-height:38px; padding:8px 10px; border:1px solid color-mix(in srgb,var(--brand) 28%,transparent); border-radius:12px; background:color-mix(in srgb,var(--paper) 82%,white); color:var(--ink); font:400 13px/20px var(--chat-type); outline:none; }
          #historyCard #kelivoLimit:focus{ border-color:color-mix(in srgb,var(--brand-deep) 48%,transparent); box-shadow:0 0 0 3px color-mix(in srgb,var(--brand) 10%,transparent); }
          #historyCard .kelivo-limit-control small{ white-space:nowrap; color:var(--muted); font:400 10px/1.2 var(--chat-type); }
          #historyCard .kelivo-import-actions{ display:flex; align-items:center; justify-content:space-between; gap:10px; }
          #historyCard .kelivo-dry-run{ display:flex; align-items:center; gap:7px; min-width:0; color:var(--muted); font:400 11px/1.25 var(--chat-type); cursor:pointer; }
          #historyCard .kelivo-dry-run input{ width:16px; height:16px; margin:0; accent-color:var(--brand-deep); }
          #historyCard .history-mini-btn{ min-height:38px; flex:0 0 auto; padding:8px 13px; border:1px solid color-mix(in srgb,var(--brand) 26%,transparent); border-radius:12px; background:var(--glass); color:var(--brand-deep); font:400 11px/1 var(--chat-type); }
          #historyCard .history-section-label{ margin-top:16px; }
          #historyCard .summary-api-form{ display:grid; gap:8px; margin-top:10px; padding:12px; border:1px solid var(--glass-line); border-radius:14px; background:color-mix(in srgb,var(--paper) 66%,transparent); font-family:var(--chat-type); }
          #historyCard .summary-api-form .api-input{ display:block; box-sizing:border-box; width:100%; height:40px; min-height:40px; padding:0 12px; border:1px solid color-mix(in srgb,var(--brand) 28%,transparent); border-radius:12px; outline:none; background:color-mix(in srgb,var(--paper) 82%,white); color:var(--ink); font:400 13px/1 var(--chat-type); letter-spacing:0; box-shadow:none; }
          #historyCard .summary-api-form .api-input::placeholder{ color:var(--muted); font:inherit; opacity:.72; }
          #historyCard .summary-api-form .api-input:focus{ border-color:color-mix(in srgb,var(--brand-deep) 48%,transparent); box-shadow:0 0 0 3px color-mix(in srgb,var(--brand) 10%,transparent); }
          #historyCard .summary-api-actions{ display:flex; justify-content:flex-end; gap:8px; margin-top:2px; }
          #historyCard .summary-api-actions .history-mini-btn{ min-width:78px; height:38px; padding:0 14px; }
          #historyCard .summary-api-actions .primary{ border-color:transparent; background:var(--brand-deep); color:var(--glass-strong); }
          #historyCard .summary-api-actions .danger{ border-color:color-mix(in srgb,#a25a5a 24%,transparent); background:transparent; color:#985b5b; }
          #historyCard .summary-api-form .settings-sub{ min-height:0; padding:0 2px; font:400 10px/1.35 var(--chat-type); }
          #historyCard .summary-api-form .settings-sub:empty{ display:none; }
          @media (max-width:360px){ #historyCard .history-transfer-grid{ grid-template-columns:1fr; } #historyCard .history-transfer-card{ min-height:92px; } }

/* source: ak-home-skin */
/* 开关:墨白系藏旧菜单亮新首页;别的主题完全不受影响 */
.menu-panel .ak-home{display:none}
:root[data-sms] .menu-panel .menu-scroll{display:none!important}
:root[data-sms] .menu-panel .ak-home{display:flex}
:root[data-sms] .menu-page{background-image:none!important;background:#f7f4ef!important}
:root[data-sms] .menu-page::before{content:none!important}
/* 墨白首页开着时收起全局漂浮星月:白画布只留坐标线;关门或别的主题照旧 */
:root[data-sms] #menuPanel.open ~ .drift-layer{display:none}

.ak-home{
  --akbg:#f7f4ef; --aksurface:rgba(255,255,255,.58);
  --akink:#222220; --akink2:#66645f; --akmute:#98958f;
  --akline:rgba(34,34,32,.16); --akline2:rgba(34,34,32,.08);
  --ak-accent:#2774b8; --ak-accent-rgb:39,116,184; --akrose:#d45f83;
  --akserif:"Cormorant Garamond",Georgia,"Noto Serif SC","Songti SC",serif;
  --akcjk:"Noto Serif SC","Songti SC","SimSun",serif;
  --aknum:"Source Serif 4","Noto Serif SC",Georgia,serif;
  --akscript:"Satisfy","Segoe Script","Cormorant Garamond",cursive;
  --ak-ease:cubic-bezier(.22,1,.36,1);
  position:absolute; inset:0; z-index:2;
  flex-direction:column;
  background:var(--akbg); color:var(--akink);
  font-family:var(--akserif);
  overflow:hidden;
}
/* 胭脂皮:强调色蓝换玫红,布局不动 */
:root[data-theme="rouge"] .menu-panel .ak-home{--ak-accent:#c25a78;--ak-accent-rgb:194,90,120}

.ak-scroll{
  position:relative; z-index:1; flex:1 1 auto; min-height:0;
  overflow-y:auto; overflow-x:clip; -webkit-overflow-scrolling:touch; overscroll-behavior:contain;
  padding:calc(env(safe-area-inset-top,0px) + 14px) 22px 28px;
}
.ak-scroll::-webkit-scrollbar{width:0;height:0}

/* 装饰坐标层:原创矢量,只躺在右侧,不挡点击 */
.ak-art{position:absolute; top:96px; right:-34px; width:300px; height:540px; z-index:0; pointer-events:none; opacity:.6}
.ak-art svg{display:block;width:100%;height:100%}

/* 顶部工具横线 */
.ak-top{
  display:flex; align-items:center; justify-content:space-between;
  height:36px; margin-bottom:2px;
  border-top:1px solid var(--akline2); border-bottom:1.5px solid var(--akink);
}
.ak-date{font:600 11px/1 var(--akserif); letter-spacing:.22em; color:var(--akink);
  font-variant-numeric:lining-nums; font-feature-settings:"lnum" 1}
.ak-awake{display:flex; align-items:center; gap:5px; font:600 10.5px/1 var(--akserif); letter-spacing:.2em; color:var(--akink);
  font-variant-numeric:lining-nums; font-feature-settings:"lnum" 1}
.ak-awake i{width:7px;height:7px;border-radius:50%;background:var(--ak-accent);margin-left:2px}
.ak-awake i:nth-child(2){opacity:.85}
.ak-awake i:nth-child(3){opacity:.7}

/* 眉题 + 花体标题 + 房间切换 */
.ak-crumb{margin:22px 0 8px; font:600 11px/1 var(--akserif); letter-spacing:.18em; color:var(--akink2)}
.ak-crumb span[lang]{font-family:var(--akcjk); font-weight:500; letter-spacing:.14em}
.ak-titlerow{display:flex; align-items:flex-start; justify-content:space-between; gap:12px; margin-bottom:24px}
.ak-title{
  margin:2px 0 0; font-family:var(--akscript); font-weight:400;
  font-size:46px; line-height:1; color:var(--akink); letter-spacing:.01em;
}
.ak-roomwrap{display:flex; flex-direction:column; align-items:flex-start; gap:7px; padding-top:4px}
.ak-roomlab{font:600 10px/1 var(--akserif); letter-spacing:.24em; color:var(--akink2); margin-left:16px}
.ak-rooms{
  display:flex; align-items:center; gap:9px; height:40px; padding:0 15px;
  border:1px solid var(--akline); border-radius:20px; background:var(--aksurface);
}
.ak-room{
  display:flex; align-items:center; gap:5px; border:0; background:transparent; padding:6px 1px;
  font:600 12px/1 var(--akserif); letter-spacing:.1em; color:var(--akink2); cursor:pointer;
}
.ak-room.is-on{color:var(--akink)}
.ak-room.is-on .ak-dot{margin-top:-1px}
.ak-roomdiv{width:1px; height:13px; background:var(--akline)}
.ak-dot{display:inline-block; width:6px; height:6px; border-radius:50%; background:var(--ak-accent)}
.ak-chev{font-family:Georgia,serif; font-size:13px; color:var(--akink2)}

/* Together 天数 */
.ak-together{margin:0 0 28px}
.ak-cap{font:600 12.5px/1 var(--akserif); letter-spacing:.2em; color:var(--akink); margin-bottom:10px}
.ak-daysrow{display:flex; align-items:baseline; gap:10px}
.ak-days{font-family:var(--aknum); font-weight:600; font-size:54px; line-height:.95; color:var(--akink);
  font-variant-numeric:lining-nums tabular-nums; font-feature-settings:"lnum" 1,"tnum" 1}
.ak-dayslab{font:600 12px/1 var(--akserif); letter-spacing:.18em; color:var(--akink2)}
.ak-daysdeco{margin-left:2px; align-self:center; color:var(--akink)}

/* Whisper */
.ak-whisper{margin:0 0 28px}
.ak-whisper-cap{display:flex; align-items:center; gap:8px; font:600 11px/1 var(--akserif); letter-spacing:.2em; color:var(--akink); margin-bottom:14px;
  font-variant-numeric:lining-nums; font-feature-settings:"lnum" 1}
.ak-whisper-cap svg{color:var(--akink2)}
.ak-whisper-txt{
  position:relative; margin:0; padding:0 0 12px;
  font-family:var(--akcjk); font-weight:500; font-stretch:100%;
  font-size:18px; line-height:1.45; letter-spacing:.01em; color:var(--akink);
  border-bottom:1px solid var(--akline);
}
.ak-whisper-txt::after{content:""; position:absolute; right:0; bottom:-3.5px; width:6px; height:6px; border-radius:50%; background:var(--akink)}
.ak-expand{
  display:inline-flex; align-items:center; min-height:44px; margin-top:2px; padding:0 4px 0 0;
  border:0; background:transparent; cursor:pointer;
  font:600 12px/1 var(--akserif); letter-spacing:.2em; color:var(--ak-accent);
}
.ak-whisper-more{
  margin-top:4px; padding-top:12px; border-top:1px dashed var(--akline2);
  font-family:var(--akcjk); font-weight:500; font-size:14px; line-height:1.7; color:var(--akink2);
}
.ak-whisper-more.hidden{display:none}

/* Plan */
.ak-plan{margin:0 0 26px}
.ak-cap2{display:flex; align-items:center; gap:7px; font:600 12.5px/1 var(--akserif); letter-spacing:.2em; color:var(--akink); margin-bottom:12px}
.ak-plancard{border:1px solid var(--akline); border-radius:12px; background:var(--aksurface); padding:2px 16px 6px}
.ak-planrow{display:grid; grid-template-columns:26px 56px 1fr; align-items:center; min-height:52px; gap:8px}
.ak-planrow + .ak-planrow{border-top:1px solid var(--akline2)}
.ak-planrow svg{color:var(--akink); opacity:.85}
.ak-plantime{font-family:var(--aknum); font-weight:600; font-size:15.5px; color:var(--akink);
  font-variant-numeric:lining-nums tabular-nums}
.ak-planrow.is-next .ak-plantime{color:var(--ak-accent)}
.ak-plantitle{display:flex; align-items:center; gap:10px; min-width:0}
.ak-plantitle::before{content:""; flex:0 0 26px; border-top:1px dotted var(--akline)}
.ak-plantitle span{font-family:var(--akcjk); font-weight:500; font-size:15px; color:var(--akink);
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.ak-planempty{min-height:52px; display:flex; align-items:center; font-family:var(--akcjk); font-weight:500; font-size:14px; color:var(--akmute)}
.ak-planadd{
  display:flex; margin-left:auto; align-items:center; min-height:40px; padding:0 2px;
  border:0; background:transparent; cursor:pointer;
  font:600 12.5px/1 var(--akserif); letter-spacing:.14em; color:var(--ak-accent);
}
.ak-planadd span[lang]{font-family:var(--akcjk)}

/* Today 四列 */
.ak-today{margin:0 0 26px}
.ak-grid{display:grid; grid-template-columns:repeat(4,1fr)}
.ak-col{display:flex; flex-direction:column; align-items:flex-start; gap:6px; padding:4px 6px 2px 10px; min-width:0}
.ak-col:first-child{padding-left:1px}
.ak-col + .ak-col{border-left:1px solid var(--akline2)}
.ak-col-ic{height:18px; color:var(--akink); opacity:.8}
.ak-col-num{font-family:var(--aknum); font-weight:600; font-size:21px; line-height:1; color:var(--akink);
  font-variant-numeric:lining-nums tabular-nums; white-space:nowrap}
.ak-col-num small{font-size:12px; font-weight:600; margin:0 1px}
.ak-col-lab{font-family:var(--akcjk); font-weight:500; font-size:11.5px; color:var(--akmute); letter-spacing:.06em}
.ak-col-fig{height:20px; display:flex; align-items:flex-end; color:var(--akink)}
.ak-sleeptimes{display:flex; justify-content:space-between; width:100%; font-family:var(--aknum); font-weight:600; font-size:9px; color:var(--akmute);
  font-variant-numeric:lining-nums tabular-nums}
.ak-mood{
  width:24px; height:24px; border-radius:50%; margin-top:-2px;
  background:radial-gradient(circle, var(--ak-accent) 0 26%, rgba(var(--ak-accent-rgb),.3) 32% 52%, rgba(var(--ak-accent-rgb),.14) 58% 76%, transparent 80%);
}

/* 档案索引行:MY DATA / MOMENTS / MEMORY / DREAM */
.ak-index{margin:0 0 8px}
.ak-idx{
  display:flex; align-items:center; gap:10px; width:100%; min-height:46px; padding:0 1px;
  border:0; background:transparent; cursor:pointer; text-align:left;
}
.ak-idx > b{font:600 12.5px/1 var(--akserif); letter-spacing:.2em; color:var(--akink); white-space:nowrap}
.ak-idx small{font-family:var(--akcjk); font-weight:500; font-size:11px; letter-spacing:.08em; color:var(--akmute); white-space:nowrap}
.ak-idxline{flex:1 1 auto; border-top:1px dashed var(--akline)}
.ak-plus{font:500 17px/1 Georgia,serif; color:var(--akink2)}
.ak-idx .ak-chev{opacity:.75}
.ak-foot{margin:22px 0 4px; text-align:center; font:600 9px/1 var(--akserif); letter-spacing:.3em; color:var(--akmute)}

/* 底栏主导航 */
.ak-nav{
  position:relative; z-index:2; flex:0 0 auto;
  display:grid; grid-template-columns:repeat(4,1fr);
  height:calc(60px + env(safe-area-inset-bottom,0px));
  padding:0 10px env(safe-area-inset-bottom,0px);
  background:rgba(247,244,239,.94);
  -webkit-backdrop-filter:blur(12px); backdrop-filter:blur(12px);
  border-top:1px solid var(--akline);
}
.ak-navi{
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:3px;
  border:0; background:transparent; cursor:pointer; color:var(--akink2); padding:0;
}
.ak-navi svg{width:22px; height:22px}
.ak-navi span{position:relative; font:600 11px/1.3 var(--akserif); letter-spacing:.04em}
.ak-navi.is-on{color:var(--akink)}
.ak-navi.is-on span::after{content:""; position:absolute; left:50%; transform:translateX(-50%); bottom:-4px; width:18px; height:2px; background:var(--ak-accent)}

/* 进场:分组错峰淡入,首页每次开门轻一遍 */
@keyframes akIn{from{opacity:0; transform:translateY(6px)} to{opacity:1; transform:none}}
.menu-panel.open .ak-scroll > *{animation:akIn .32s var(--ak-ease) both}
.menu-panel.open .ak-scroll > *:nth-child(2){animation-delay:.04s}
.menu-panel.open .ak-scroll > *:nth-child(3){animation-delay:.08s}
.menu-panel.open .ak-scroll > *:nth-child(4){animation-delay:.12s}
.menu-panel.open .ak-scroll > *:nth-child(5){animation-delay:.16s}
.menu-panel.open .ak-scroll > *:nth-child(6){animation-delay:.2s}
.menu-panel.open .ak-scroll > *:nth-child(7){animation-delay:.24s}
.menu-panel.open .ak-scroll > *:nth-child(8){animation-delay:.28s}
@media (prefers-reduced-motion:reduce){
  .menu-panel.open .ak-scroll > *{animation:none}
}
/* 小屏兜底:370 以下花体和天数略收 */
@media (max-width:370px){
  .ak-title{font-size:40px}
  .ak-days{font-size:48px}
  .ak-rooms{padding:0 11px; gap:7px}
}

/* source: ak-commons-skin */
/* 视图开关:默认 Home;切到 commons 时藏首页正文和右侧坐标画 */
.ak-home:not([data-view="commons"]) .ak-vcommons{display:none}
.ak-home[data-view="commons"] .ak-vhome{display:none}
.ak-home[data-view="commons"] .ak-art{display:none}

/* 标题与地图眉线 */
.ak-title--commons{font-size:40px;margin:2px 0 0}
.ak-mapcap{margin:10px 0 0;font:600 11px/1 var(--akserif);letter-spacing:.22em;color:var(--akink2)}
.ak-mapcap span[lang]{font-family:var(--akcjk);font-weight:500;letter-spacing:.14em}

/* 共享地图:349 坐标系,节点绝对定位,矢量网络垫底不挡点击 */
.ak-map{position:relative;width:349px;max-width:100%;height:640px;margin:4px auto 0}
.ak-cart{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;opacity:.9}
.ak-coords{position:absolute;right:2px;top:128px;text-align:right;
  font-family:var(--aknum);font-weight:600;font-size:10px;line-height:1.6;letter-spacing:.12em;color:var(--akink2);
  font-variant-numeric:lining-nums;font-feature-settings:"lnum" 1}
.ak-sidx{position:absolute;right:2px;top:296px;display:flex;flex-direction:column;gap:20px;text-align:right;
  font-family:var(--aknum);font-weight:600;font-size:10.5px;color:var(--akmute);
  font-variant-numeric:lining-nums;font-feature-settings:"lnum" 1}

/* 节点:圆环图标 + 编号名牌;点击区自带内边距凑 44 */
.ak-node{position:absolute;z-index:1;display:flex;align-items:flex-start;gap:10px;
  border:0;background:transparent;padding:6px;cursor:pointer;text-align:left;min-height:44px}
.ak-node-ic{flex:0 0 auto;width:38px;height:38px;border:1px solid var(--akline);border-radius:50%;
  background:rgba(255,255,255,.72);display:flex;align-items:center;justify-content:center;color:var(--akink)}
.ak-node-ic svg{width:17px;height:17px}
.ak-node-body{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding-top:1px}
.ak-node-no{font-family:var(--aknum);font-weight:600;font-size:25px;line-height:1;color:var(--akink);
  font-variant-numeric:lining-nums tabular-nums;font-feature-settings:"lnum" 1,"tnum" 1}
.ak-node-en{font:600 15px/1.2 var(--akserif);letter-spacing:.02em;color:var(--akink);white-space:nowrap}
.ak-node-zh{font-family:var(--akcjk);font-weight:500;font-size:11.5px;letter-spacing:.08em;color:var(--akink2);white-space:nowrap}
.ak-node-st{font:600 10px/1 var(--akserif);letter-spacing:.24em;color:var(--akmute);margin-top:4px}
.ak-node-st.is-live{color:var(--ak-accent)}
.ak-node-sub{display:flex;align-items:center;gap:5px;margin-top:4px;
  font:600 10.5px/1.4 var(--akserif);letter-spacing:.05em;color:var(--akink2);white-space:nowrap;
  font-variant-numeric:lining-nums;font-feature-settings:"lnum" 1}
.ak-node-sub span[lang]{font-family:var(--akcjk);font-weight:500}
.ak-node-sub.hidden{display:none}
.ak-subdot{flex:0 0 auto;width:5px;height:5px;border-radius:50%;background:var(--akrose)}
/* 02 记忆库:当前唯一展开节点,编号玫红加大 */
.ak-node--hot .ak-node-no{font-size:30px;color:var(--akrose)}
.ak-node--hot .ak-node-en{font-size:17px}
.ak-node--hot .ak-node-ic{border-color:rgba(212,95,131,.5)}

/* 足迹条:今天从这张图出发去过几处 */
.ak-traces{margin:6px 0 4px;display:flex;flex-direction:column;gap:9px}
.ak-traces-cap{font:600 11px/1 var(--akserif);letter-spacing:.2em;color:var(--akink);
  font-variant-numeric:lining-nums;font-feature-settings:"lnum" 1}
.ak-traces-cap b{font-family:var(--aknum);font-weight:600}
.ak-ticks{display:flex;align-items:flex-end;gap:9px;height:16px}
.ak-ticks i{display:block;width:2px;height:7px;background:var(--akline)}
.ak-ticks i:nth-child(3n){height:11px}
.ak-ticks i:nth-child(5n){height:14px}
.ak-ticks i.on{background:var(--ak-accent)}
.ak-ticks i.on.alt{background:var(--akrose)}

/* 小屏兜底:地图整体轻收,别横向溢出 */
@media (max-width:370px){
  .ak-title--commons{font-size:36px}
  .ak-map{transform:scale(.92);transform-origin:top left;margin-bottom:-48px}
}

/* source: memory-page-skin */
/* 开合沿用 head 里既有 .memory-panel 规则;这里只重塑内容 */
  .memory-page::before{content:none!important}
  .memory-page{position:absolute;inset:0;display:flex;flex-direction:column;background:var(--ref-paper,#FBF6EA);overflow:hidden}
  .memory-topbar{display:grid;grid-template-columns:44px 1fr 44px;align-items:center;padding:calc(env(safe-area-inset-top,0px) + 10px) 10px 4px}
  .memory-back{width:38px;height:38px;border:0;background:transparent;color:var(--ref-plum,#635D35);display:grid;place-items:center;border-radius:50%;cursor:pointer}
  .memory-back svg{width:22px;height:22px}
  .memory-h1{margin:0;text-align:center;font-family:var(--editorial-serif,Georgia,serif);font-style:italic;font-weight:500;font-size:27px;letter-spacing:.5px;color:var(--ref-ink,#4E4827)}
  .memory-scroll{display:block;flex:1;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;padding:10px 14px calc(env(safe-area-inset-bottom,0px) + 26px)}
  .memory-tabs{display:grid;grid-template-columns:1fr 1fr;gap:0;background:var(--ref-glass,rgba(255,255,252,.66));border:1px solid var(--ref-glass-line,rgba(255,255,255,.88));border-radius:14px;padding:3px;margin:2px auto 13px;max-width:520px}
  .memory-tabs button{border:0;background:transparent;padding:9px 6px;border-radius:11px;font-family:var(--chat-type,serif);font-size:14px;color:var(--ref-mauve,#A6985C);cursor:pointer;transition:background .18s ease,color .18s ease}
  .memory-tabs button.active{background:rgba(var(--ref-accent-rgb,150,136,74),.16);color:var(--ref-ink,#4E4827)}
  #memTabOmbre,#memTabLab{display:block;max-width:520px;margin:0 auto}
  #memTabOmbre.hidden,#memTabLab.hidden{display:none}
  .mem-statusline{display:flex;align-items:center;gap:7px;margin:2px 2px 10px;font-family:var(--chat-type,serif);font-size:13px;color:var(--ref-mauve,#A6985C)}
  .mem-dot{width:8px;height:8px;border-radius:50%;background:#9BB187;box-shadow:0 0 0 3px rgba(155,177,135,.22)}
  .mem-dot.offline{background:#C7C0B2;box-shadow:none}
  .mem-search{display:flex;align-items:center;gap:9px;background:var(--ref-chip,#fff);border:1px solid var(--ref-glass-line,rgba(255,255,255,.88));border-radius:16px;padding:12px 14px;box-shadow:0 6px 18px rgba(var(--ref-shadow,99,93,53),.08);margin-bottom:12px}
  .mem-search svg{width:17px;height:17px;color:var(--ref-mauve,#A6985C);flex:none}
  .mem-search input{flex:1;min-width:0;border:0;background:transparent;outline:none;font-family:var(--chat-type,serif);font-size:15px;color:var(--ref-ink,#4E4827)}
  .mem-search input::placeholder{color:var(--ref-placeholder,#B3A87E)}
  .mem-search input::-webkit-search-cancel-button{-webkit-appearance:none}
  .mem-crab{flex:none;display:grid;place-items:center;opacity:.92}
  .mem-crab svg{width:24px;height:18px;color:#C0674F}
  .mem-chips{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;padding:1px 1px 3px;margin-bottom:13px}
  .mem-chips::-webkit-scrollbar{display:none}
  .mem-chip{flex:none;border:1px solid transparent;background:var(--ref-glass,rgba(255,255,252,.66));color:var(--ref-mauve,#A6985C);border-radius:999px;padding:7px 15px;font-family:var(--chat-type,serif);font-size:13.5px;cursor:pointer;transition:all .18s ease}
  .mem-chip.active{background:rgba(var(--ref-accent-rgb,150,136,74),.14);border-color:rgba(var(--ref-accent-rgb,150,136,74),.55);color:var(--ref-ink,#4E4827)}
  .mem-list{display:flex;flex-direction:column;gap:12px}
  .mem-card{display:block;width:100%;text-align:left;border:0;background:var(--ref-glass-strong,rgba(255,253,246,.92));border-radius:18px;padding:13px 15px 12px;box-shadow:0 8px 22px rgba(var(--ref-shadow,99,93,53),.09);cursor:pointer;font-family:var(--chat-type,serif)}
  .mem-card:active{transform:scale(.985)}
  .mem-card-head{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:5px}
  .mem-card-type{font-family:var(--editorial-sans,sans-serif);font-size:10.5px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:#C0674F}
  .mem-card-time{font-size:12px;color:var(--ref-mauve,#A6985C)}
  .mem-card-title{font-size:15.5px;font-weight:700;color:var(--ref-ink,#4E4827);line-height:1.35;margin-bottom:4px;word-break:break-word}
  .mem-card-preview{font-size:13px;line-height:1.55;color:var(--ref-ink,#4E4827);opacity:.72;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;word-break:break-word;margin-bottom:8px}
  .mem-card-foot{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}
  .mem-dots{font-size:9px;letter-spacing:2px;color:#C0674F;white-space:nowrap}
  .mem-dots .off{opacity:.28}
  .mem-score-badge{font-size:12px;color:#C0674F;font-weight:600}
  .mem-card-tags{display:flex;gap:5px;flex-wrap:wrap;justify-content:flex-end}
  .mem-tag{border:1px solid rgba(var(--ref-shadow,99,93,53),.16);border-radius:999px;padding:2.5px 9px;font-size:11px;color:var(--ref-mauve,#A6985C);background:var(--ref-chip,#fff)}
  .mem-badges{display:flex;gap:6px;margin-top:7px}
  .mem-badge{border-radius:999px;padding:2.5px 10px;font-size:11px;background:rgba(var(--ref-shadow,99,93,53),.07);color:var(--ref-mauve,#A6985C)}
  .mem-empty,.mem-loading,.mem-offline{text-align:center;padding:34px 10px;font-family:var(--chat-type,serif);font-size:13.5px;color:var(--ref-mauve,#A6985C);line-height:2}
  .mem-offline button{margin-top:8px;border:1px solid rgba(var(--ref-accent-rgb,150,136,74),.5);background:transparent;border-radius:999px;padding:6px 22px;font-family:inherit;font-size:13px;color:var(--ref-ink,#4E4827);cursor:pointer}
  /* Breath Lab */
  .lab-params{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px}
  .lab-params label{display:flex;align-items:center;gap:8px;font-family:var(--chat-type,serif);font-size:13.5px;color:var(--ref-mauve,#A6985C)}
  .lab-params input{flex:1;min-width:0;border:1px solid var(--ref-glass-line,rgba(255,255,255,.88));background:var(--ref-chip,#fff);border-radius:12px;padding:9px 11px;font-family:inherit;font-size:14px;color:var(--ref-ink,#4E4827);outline:none}
  .lab-run{width:100%;border:0;border-radius:15px;padding:13px;background:rgba(var(--ref-accent-rgb,150,136,74),.16);color:var(--ref-ink,#4E4827);font-family:var(--chat-type,serif);font-size:15.5px;cursor:pointer;margin-bottom:13px}
  .lab-run:disabled{opacity:.5;cursor:default}
  .lab-summary{font-family:var(--chat-type,serif);font-size:12.5px;color:var(--ref-mauve,#A6985C);margin:0 2px 11px;line-height:1.7}
  .lab-bars{display:grid;gap:4px;margin-top:7px}
  .lab-bar-row{display:grid;grid-template-columns:72px 1fr 40px;align-items:center;gap:8px;font-size:11.5px;color:var(--ref-mauve,#A6985C)}
  .lab-track{height:5px;border-radius:999px;background:rgba(var(--ref-shadow,99,93,53),.1);overflow:hidden}
  .lab-fill{display:block;height:100%;border-radius:999px;background:#C0674F;opacity:.75}
  .lab-final{display:flex;justify-content:space-between;align-items:center;gap:8px}
  .lab-final b{font-size:16px;color:var(--ref-ink,#4E4827)}
  .lab-pass{font-size:11px;border-radius:999px;padding:2.5px 10px;background:rgba(155,177,135,.2);color:#5F7A50}
  .lab-fail{font-size:11px;border-radius:999px;padding:2.5px 10px;background:rgba(var(--ref-shadow,99,93,53),.08);color:var(--ref-mauve,#A6985C)}
  /* detail bottom sheet */
  .mem-sheet-wrap{position:absolute;inset:0;z-index:6}
  .mem-sheet-wrap.hidden{display:none}
  .mem-sheet-backdrop{position:absolute;inset:0;border:0;background:rgba(var(--ref-shadow,99,93,53),.28);opacity:0;transition:opacity .26s ease;cursor:pointer}
  .mem-sheet-wrap.open .mem-sheet-backdrop{opacity:1}
  .mem-sheet{position:absolute;left:0;right:0;bottom:0;max-height:84%;display:flex;flex-direction:column;background:var(--ref-sheet,#F9F3E2);border-radius:24px 24px 0 0;box-shadow:0 -12px 40px rgba(var(--ref-shadow,99,93,53),.22);transform:translateY(102%);transition:transform .32s var(--ease-soft,cubic-bezier(.22,.61,.36,1))}
  .mem-sheet-wrap.open .mem-sheet{transform:none}
  .mem-sheet-handle{border:0;background:transparent;padding:12px 0 6px;cursor:pointer;flex:none}
  .mem-sheet-handle::before{content:"";display:block;width:64px;height:5px;border-radius:999px;background:rgba(var(--ref-shadow,99,93,53),.22);margin:0 auto}
  .mem-sheet-scroll{overflow-y:auto;-webkit-overflow-scrolling:touch;padding:2px 22px calc(env(safe-area-inset-bottom,0px) + 24px);font-family:var(--chat-type,serif)}
  .mem-sheet-title{margin:4px 0 3px;font-size:22px;font-weight:700;color:var(--ref-ink,#4E4827);line-height:1.3;word-break:break-word}
  .mem-sheet-meta{font-size:13px;color:var(--ref-mauve,#A6985C);margin-bottom:12px}
  .mem-sheet-content{font-size:15px;line-height:1.85;color:var(--ref-ink,#4E4827);white-space:pre-wrap;word-break:break-word;border-top:1px solid rgba(var(--ref-shadow,99,93,53),.12);padding:14px 0;margin-bottom:6px}
  .mem-sheet-why{font-size:12.5px;line-height:1.7;color:var(--ref-mauve,#A6985C);margin:0 0 10px;font-style:italic}
  .mem-info{border-top:1px solid rgba(var(--ref-shadow,99,93,53),.12);padding-top:12px;display:grid;gap:9px;margin-bottom:14px}
  .mem-info>div{display:flex;justify-content:space-between;align-items:baseline;gap:12px;font-size:13.5px}
  .mem-info>div>span:first-child{color:var(--ref-mauve,#A6985C)}
  .mem-info>div>span:last-child{color:var(--ref-ink,#4E4827);text-align:right}
  .mem-sheet-tags{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:16px}
  .mem-rest-btn{width:100%;border:1px solid rgba(var(--ref-shadow,99,93,53),.2);background:var(--ref-chip,#fff);border-radius:15px;padding:13px;font-family:var(--chat-type,serif);font-size:15px;color:var(--ref-mauve,#A6985C);cursor:pointer;margin-bottom:12px}
  .mem-rest-btn:disabled{opacity:.5;cursor:default}
  .mem-sheet-id{display:block;width:100%;border:0;background:transparent;text-align:center;font-family:var(--editorial-sans,sans-serif);font-size:11.5px;letter-spacing:.04em;color:var(--ref-placeholder,#B3A87E);cursor:pointer;padding:4px}

/* source: ak-memory-skin */
/* ── AK-MEMORY 记忆库墨白换皮(2026-08-05)· 仅 data-sms(墨白/胭脂)显形,其余主题零动 ──
   词汇同家规:白纸平底、墨线、caps 眉题、方角细墨边;记忆强调色=玫瑰 */
:root[data-sms] .memory-panel{
  --akbg:#f7f4ef; --aksurface:rgba(255,255,255,.66);
  --akink:#222220; --akink2:#66645f; --akmute:#98958f;
  --akline:rgba(34,34,32,.16); --akline2:rgba(34,34,32,.08);
  --ak-accent:#2774b8; --akrose:#d45f83;
  --akserif:"Cormorant Garamond",Georgia,"Noto Serif SC","Songti SC",serif;
  --akcjk:"Noto Serif SC","Songti SC","SimSun",serif;
  --aknum:"Source Serif 4","Noto Serif SC",Georgia,serif;
  --akscript:"Satisfy","Segoe Script","Cormorant Garamond",cursive}
:root[data-sms][data-theme="rouge"] .memory-panel{--ak-accent:#c25a78}
:root[data-sms] body:has(#memoryPanel:not(.hidden)) .drift-layer{display:none}
/* 12455 行的 ref 皮渐变墙纸带 !important,这里必须也带才能压回白纸 */
:root[data-sms] .memory-panel .memory-page{background:var(--akbg)!important}

/* 顶栏:细框方角返回,标题压成 caps;下压双轨墨线 */
:root[data-sms] .memory-panel .memory-back{
  border:1px solid var(--akline);border-radius:0;color:var(--akink);width:36px;height:36px}
:root[data-sms] .memory-panel .memory-back svg{width:18px;height:18px}
:root[data-sms] .memory-panel .memory-h1{
  font:600 11px/1 var(--akserif);font-style:normal;letter-spacing:.24em;
  text-transform:uppercase;color:var(--akink)}
:root[data-sms] .memory-panel .memory-h1::after{content:" \2014 \8BB0\5FC6\5E93"}
:root[data-sms] .memory-panel .memory-topbar{padding-bottom:10px}
:root[data-sms] .memory-panel .memory-scroll{
  border-top:1.5px solid var(--akink);margin:0 14px;padding:12px 0 calc(env(safe-area-inset-bottom,0px) + 26px)}

/* 双联 tab:caps 方角,选中实心墨 */
:root[data-sms] .memory-panel .memory-tabs{
  background:transparent;border:1px solid var(--akline);border-radius:0;padding:0;gap:0}
:root[data-sms] .memory-panel .memory-tabs button{
  border-radius:0;font:600 11px/1 var(--akserif);letter-spacing:.18em;
  text-transform:uppercase;color:var(--akink2);padding:10px 6px}
:root[data-sms] .memory-panel .memory-tabs button.active{background:var(--akink);color:var(--akbg)}

/* 状态行 + 搜索 + 筛选 chips */
:root[data-sms] .memory-panel .mem-statusline{
  font:italic 400 12.5px/1 var(--akserif);color:var(--akmute)}
:root[data-sms] .memory-panel .mem-search{
  background:var(--aksurface);border:1px solid var(--akline);border-radius:0;box-shadow:none;
  padding:11px 13px}
:root[data-sms] .memory-panel .mem-search svg{color:var(--akink2)}
:root[data-sms] .memory-panel .mem-search input{
  font:400 14.5px/1.4 var(--akcjk);color:var(--akink)}
:root[data-sms] .memory-panel .mem-search input::placeholder{
  color:var(--akmute);font-family:var(--akserif);font-style:italic}
:root[data-sms] .memory-panel .mem-chip{
  border-radius:0;border:1px solid var(--akline);background:transparent;
  font:500 12.5px/1 var(--akcjk);color:var(--akink2);padding:7px 13px}
:root[data-sms] .memory-panel .mem-chip.active{
  background:var(--akink);border-color:var(--akink);color:var(--akbg)}

/* 记忆卡:白面方角细墨边;type 眉题+玫瑰;权重点阵玫瑰 */
:root[data-sms] .memory-panel .mem-card{
  background:var(--aksurface);border:1px solid var(--akline);border-radius:2px;box-shadow:none}
:root[data-sms] .memory-panel .mem-card-type{
  font:600 10px/1 var(--akserif);letter-spacing:.2em;color:var(--akrose)}
:root[data-sms] .memory-panel .mem-card-time{
  font:500 11px/1 var(--aknum);color:var(--akmute);
  font-variant-numeric:lining-nums;font-feature-settings:"lnum" 1}
:root[data-sms] .memory-panel .mem-card-title{
  font:500 15px/1.4 var(--akcjk);color:var(--akink)}
:root[data-sms] .memory-panel .mem-card-preview{
  font-family:var(--akcjk);color:var(--akink2);opacity:1}
:root[data-sms] .memory-panel .mem-dots{color:var(--akrose)}
:root[data-sms] .memory-panel .mem-dots .off{opacity:.2}
:root[data-sms] .memory-panel .mem-score-badge{color:var(--akrose);font-family:var(--aknum)}
:root[data-sms] .memory-panel .mem-tag{
  border-radius:0;border:1px solid var(--akline2);background:transparent;
  font-family:var(--akcjk);color:var(--akmute)}
:root[data-sms] .memory-panel .mem-badge{
  border-radius:0;background:transparent;border:1px solid var(--akline2);
  font-family:var(--akcjk);color:var(--akink2)}
:root[data-sms] .memory-panel .mem-empty,
:root[data-sms] .memory-panel .mem-loading,
:root[data-sms] .memory-panel .mem-offline{
  font-family:var(--akserif);font-style:italic;color:var(--akmute)}
:root[data-sms] .memory-panel .mem-offline button{
  border:1px solid var(--akline);border-radius:0;color:var(--akink);font-family:var(--akcjk)}

/* Breath Lab:方角输入,实心墨运行钮,玫瑰量条 */
:root[data-sms] .memory-panel .lab-params label{font-family:var(--akcjk);color:var(--akink2)}
:root[data-sms] .memory-panel .lab-params input{
  border:1px solid var(--akline);border-radius:0;background:var(--aksurface);
  color:var(--akink);font-family:var(--aknum);
  font-variant-numeric:lining-nums;font-feature-settings:"lnum" 1}
:root[data-sms] .memory-panel .lab-run{
  border-radius:0;background:var(--akink);color:var(--akbg);
  font:600 12px/1 var(--akserif);letter-spacing:.18em;text-transform:uppercase;padding:14px}
:root[data-sms] .memory-panel .lab-summary{font-family:var(--akcjk);color:var(--akink2)}
:root[data-sms] .memory-panel .lab-bar-row{color:var(--akmute);font-family:var(--aknum)}
:root[data-sms] .memory-panel .lab-track{border-radius:0;background:var(--akline2)}
:root[data-sms] .memory-panel .lab-fill{border-radius:0;background:var(--akrose);opacity:1}
:root[data-sms] .memory-panel .lab-final b{color:var(--akink);font-family:var(--aknum)}
:root[data-sms] .memory-panel .lab-pass{border-radius:0;background:transparent;border:1px solid var(--ak-accent);color:var(--ak-accent)}
:root[data-sms] .memory-panel .lab-fail{border-radius:0;background:transparent;border:1px solid var(--akline);color:var(--akmute)}

/* 详情底抽屉:白纸方角,顶压粗墨线 */
:root[data-sms] .memory-panel .mem-sheet{
  background:var(--akbg);border-radius:0;border-top:1.5px solid var(--akink);
  box-shadow:0 -18px 48px rgba(34,34,32,.25)}
:root[data-sms] .memory-panel .mem-sheet-handle::before{background:var(--akline)}
:root[data-sms] .memory-panel .mem-sheet-title{
  font:500 19px/1.4 var(--akcjk);color:var(--akink)}
:root[data-sms] .memory-panel .mem-sheet-meta{
  font:italic 400 12.5px/1.5 var(--akserif);color:var(--akmute)}
:root[data-sms] .memory-panel .mem-sheet-content{
  font-family:var(--akcjk);color:var(--akink);border-top:1px solid var(--akline2)}
:root[data-sms] .memory-panel .mem-sheet-why{font-family:var(--akserif);color:var(--akink2)}
:root[data-sms] .memory-panel .mem-info{border-top:1px solid var(--akline2)}
:root[data-sms] .memory-panel .mem-info>div>span:first-child{color:var(--akmute);font-family:var(--akserif)}
:root[data-sms] .memory-panel .mem-info>div>span:last-child{
  color:var(--akink);font-family:var(--aknum);
  font-variant-numeric:lining-nums;font-feature-settings:"lnum" 1}
:root[data-sms] .memory-panel .mem-rest-btn{
  border:1px solid var(--akline);border-radius:0;background:transparent;
  font-family:var(--akcjk);color:var(--akink2)}
:root[data-sms] .memory-panel .mem-sheet-id{
  font:500 10.5px/1 var(--aknum);color:var(--akmute);
  font-variant-numeric:lining-nums;font-feature-settings:"lnum" 1}

/* source: sable-long-memory-ui-0827 */
.sable-memory-card{display:block;width:100%;text-align:left}
  .sable-memory-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}
  .sable-memory-actions button{border:1px solid var(--akline);background:transparent;color:var(--akink2);padding:6px 11px;font:500 11px/1 var(--akcjk);cursor:pointer}
  .sable-memory-actions button[data-action="forget"]{color:#b45555}
  .sable-memory-source{margin-top:8px;color:var(--akmute);font:400 10px/1.45 var(--akcjk)}

/* source: inline-style-13 */
/* PWA install banner */
#installBanner{
  position: fixed; left: 12px; right: 12px;
  bottom: calc(12px + env(safe-area-inset-bottom));
  z-index: 100;
  display: flex; align-items: center; gap: 10px;
  padding: 12px 14px;
  background: var(--card, #1a1b22);
  border: 1px solid var(--hairline, rgba(255,255,255,.08));
  border-radius: 16px;
  box-shadow: 0 10px 30px rgba(0,0,0,.35);
  color: var(--text, #e6e6ea);
  font-size: 13.5px;
  transform: translateY(140%);
  opacity: 0;
  transition: transform .35s cubic-bezier(.2,.8,.2,1), opacity .25s ease;
  pointer-events: none;
}
#installBanner.show{ transform: translateY(0); opacity: 1; pointer-events: auto; }
#installBanner .ib-text{ flex: 1; line-height: 1.35; }
#installBanner .ib-btn{
  flex: none;
  padding: 7px 14px;
  border-radius: 999px;
  border: 0;
  background: var(--accent, #6e7c5b);
  color: #fff;
  font-size: 13px;
  font-weight: 500;
  cursor: pointer;
}
#installBanner .ib-x{
  flex: none;
  width: 26px; height: 26px;
  border: 0; background: transparent;
  color: var(--text-soft, rgba(255,255,255,.55));
  font-size: 22px; line-height: 1;
  cursor: pointer;
  padding: 0;
}

/* source: sharon-ui-v2 */
/* Final visual layer: the three user palettes drive every surface, including history heat. */
:root{
  --paper:#efe8dd;--paper-2:#e4e8e6;--ink:#345282;--muted:#66756f;
  --brand:#9cabcc;--brand-deep:#345282;--warm:#dcaf75;--butter:#efe8dd;
  --glass:rgba(255,255,255,.56);--glass-strong:rgba(255,253,248,.86);
  --glass-line:rgba(255,255,255,.78);--glass-shadow:0 14px 34px rgba(52,82,130,.11);
  --bg:#efe8dd;--header-bg:transparent;--text:#344a45;--text-soft:#61716d;--text-faint:#87918d;
  --bubble-ai-bg:rgba(255,253,248,.72);--bubble-human-bg:rgba(156,171,204,.28);
  --accent:#48614f;--send-bg:#345282;--composer-bg:rgba(255,253,248,.72);--field-bg:rgba(255,255,255,.76);
  --calendar-empty:#efe8dd;--calendar-low:#9cabcc;--calendar-high:#345282;--calendar-selected:#dcaf75;--calendar-text:#345282;
  --surface-shadow:rgba(52,82,130,.10);--overlay-scrim:rgba(52,82,130,.18);--morning-glow:rgba(220,175,117,.18)
}
body,.menu-page,.profile-page,.memory-page{background:radial-gradient(circle at 12% 10%,color-mix(in srgb,var(--brand) 18%,transparent),transparent 32%),linear-gradient(155deg,var(--paper),var(--paper-2) 60%,var(--paper))!important}
.menu-scroll{max-width:520px!important;height:100%!important;margin:auto!important;padding:calc(env(safe-area-inset-top) + 18px) 18px calc(env(safe-area-inset-bottom) + 14px)!important;overflow:hidden!important}
.menu-head{height:38px!important;min-height:38px!important}.menu-private{font:500 9px/1.45 system-ui!important;letter-spacing:.27em!important;color:var(--brand-deep)!important}
.menu-hero{min-height:132px!important;padding:15px 20px!important;border-radius:26px!important;background:var(--glass)!important;border:1px solid var(--glass-line)!important;box-shadow:var(--glass-shadow)!important}
.menu-title{font:italic 34px/.98 Georgia,serif!important;color:var(--brand-deep)!important;margin:2px 0 10px!important;text-align:center!important}
.menu-since{font:500 9px/1.2 system-ui!important;letter-spacing:.2em!important;margin:0 0 7px!important;color:var(--muted)!important}.menu-days{justify-content:center!important}.menu-days .num{font:500 38px/1 Georgia,serif!important;color:var(--warm)!important}.menu-days .lab{font:500 10px/1.2 system-ui!important;letter-spacing:.12em!important;color:var(--muted)!important}
.menu-list{display:grid!important;grid-template-columns:1fr 1fr!important;gap:9px!important;margin-top:9px!important}
.menu-item{min-height:78px!important;padding:12px 13px!important;border-radius:22px!important;background:var(--glass)!important;border:1px solid var(--glass-line)!important;box-shadow:var(--glass-shadow)!important}
.menu-item[data-menu="sable-space"]{order:1;grid-column:1/-1;min-height:62px!important}.menu-item[data-menu="chat"]{order:2;grid-column:1/-1;min-height:90px!important}.menu-item[data-menu="memory"]{order:3}.menu-item[data-menu="dream"]{order:4}.menu-item[data-menu="moments"]{order:5}.menu-item[data-menu="settings"]{order:6}
.menu-name{font:italic 20px/1 Georgia,serif!important;color:var(--brand-deep)!important}.menu-sub{font:500 8.5px/1.35 system-ui!important;letter-spacing:.08em!important;color:var(--muted)!important;margin-top:5px!important}.menu-ic{width:22px!important;height:22px!important;color:var(--warm)!important}.menu-chev{right:11px!important;bottom:9px!important;width:15px!important}.menu-foot{margin-top:7px!important;font-size:9px!important;color:color-mix(in srgb,var(--brand-deep) 42%,transparent)!important}
.topbar{min-height:68px!important;padding:calc(env(safe-area-inset-top) + 8px) 12px 8px!important;background:transparent!important;border:0!important;box-shadow:none!important;backdrop-filter:none!important}
.backbtn,.topbtn{background:var(--glass-strong)!important;border:1px solid var(--glass-line)!important;box-shadow:0 8px 22px var(--surface-shadow)!important;border-radius:999px!important}
.peerpill{min-width:118px!important;padding:6px 16px!important;border-radius:999px!important;background:var(--glass-strong)!important;border:1px solid var(--glass-line)!important;box-shadow:0 8px 22px var(--surface-shadow)!important}.peerpill .name{font:500 22px/1 Georgia,serif!important;color:var(--brand-deep)!important}.peerpill .status{font:500 10px/1.2 system-ui!important;color:var(--muted)!important}
.header-actions{gap:5px!important}.scroll{padding-top:5px!important}.row{margin-bottom:8px!important;flex-direction:column!important}.row.ai{align-items:flex-start!important}.row.human{align-items:flex-end!important}.bubble{max-width:78%!important;padding:10px 13px!important;border-radius:18px!important;box-shadow:0 7px 18px var(--surface-shadow)!important}.bubble .txt{font-size:14px!important;line-height:1.52!important}.message-meta{display:block!important;margin:4px 5px 0!important;font:400 9px/1 system-ui!important;color:var(--muted)!important}.message-usage{max-width:78%;margin:2px 5px 0}.usage-line{font:500 9px/1.3 system-ui!important;padding:0!important;margin:0!important;background:transparent!important;color:var(--muted)!important}
.reroll-action{margin:7px 5px 0;padding:7px 12px;border:1px solid color-mix(in srgb,var(--brand-deep) 20%,transparent);border-radius:999px;background:var(--glass);color:var(--brand-deep);font:500 10px/1 system-ui;letter-spacing:.03em;box-shadow:0 5px 14px color-mix(in srgb,var(--brand-deep) 8%,transparent)}.reroll-action:disabled{opacity:.56}
.relay-error-actions{display:flex;align-items:center;gap:2px;margin:7px 5px 0}.relay-error-actions .reroll-action{margin:0!important}.relay-error-delete{opacity:.72}
.composer{left:10px!important;right:10px!important;bottom:calc(8px + env(safe-area-inset-bottom))!important;width:auto!important;padding:8px!important;border-radius:24px!important;background:var(--glass-strong)!important;border:1px solid var(--glass-line)!important;box-shadow:0 14px 34px var(--surface-shadow)!important;flex-wrap:wrap!important;gap:6px!important}.composer .field{background:rgba(255,255,255,.55)!important;border-radius:18px!important}.composer textarea{font-size:14px!important}.composer-model-row{flex:0 0 100%;display:flex;padding:0 6px 1px 46px}.composer-model-btn{max-width:70%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:5px 11px;border:0;border-radius:999px;background:var(--glass);color:var(--muted);font:500 10px/1.2 system-ui}.app{--composer-zone:calc(124px + var(--keyboard-offset))!important}
.profile-scroll{padding:12px 14px calc(30px + env(safe-area-inset-bottom))!important}.settings-card{padding:15px!important;border-radius:22px!important;box-shadow:var(--glass-shadow)!important}.action-row{border-radius:16px!important;box-shadow:0 7px 18px var(--surface-shadow)!important}
.profile-scroll>.settings-detail-source{display:none!important}.profile-scroll>.action-row,.profile-scroll>.action-row.status{display:none!important}
.profile-panel.mind-view .settings-hub,.profile-panel.mind-view .settings-detail-source,.profile-panel.mind-view .profile-scroll>.action-row{display:none!important}
.profile-panel.settings-view #mindStatusCard,.profile-panel.settings-view #historyCalendar{display:none!important}
.profile-panel.mind-view .profile-identity,.profile-panel.mind-view #mindStatusCard,.profile-panel.mind-view #historyCalendar{display:block!important;width:100%!important;max-width:520px!important;margin:0 auto!important}
.profile-panel.mind-view .profile-identity{display:grid!important}
/* 状态页顶卡=Sable 的资料卡(乐乐 07-23 深夜点名):头像用聊天页 Sable 头像那张 */
.profile-panel.mind-view .profile-avatar{background-image:var(--avatar-default)!important}
.profile-handle-edit{width:20px;height:20px}
.profile-handle-edit svg{width:12px;height:12px}
#profileHandleInput{width:8em;max-width:56%;border:0;border-radius:8px;background:var(--seg-track);outline:none;padding:2px 9px;margin:-2px 0;color:inherit;font:inherit}
.profile-panel.mind-view #profileTitle{display:none!important}
.profile-topbar h2{display:block!important;margin:0 auto;font:italic 23px/1 Georgia,serif;color:var(--brand-deep);letter-spacing:.02em}.profile-topbar .profile-back{position:absolute;left:14px}
.history-calendar{padding:17px!important}.calendar-kicker{display:flex;align-items:baseline;gap:9px;margin:0 0 16px}.calendar-kicker strong{font:500 18px/1.2 Georgia,serif;color:var(--brand-deep)}.calendar-kicker span{font:500 10px/1.2 system-ui;color:var(--muted);letter-spacing:.08em}
.calendar-head{display:grid;grid-template-columns:36px 1fr 36px;align-items:center;margin-bottom:10px}.calendar-head strong{text-align:center;font:500 22px/1.2 Georgia,serif;color:var(--brand-deep)}.calendar-head button{width:34px;height:34px;border:0;border-radius:50%;background:var(--glass);color:var(--brand-deep);display:grid;place-items:center}.calendar-head button svg{width:18px;height:18px}
.calendar-week,.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}.calendar-week{margin-bottom:5px}.calendar-week span{text-align:center;font:500 10px/1.4 system-ui;color:var(--muted)}
.calendar-cell{aspect-ratio:1/.98;min-width:0;border:1px solid transparent;border-radius:8px;background:color-mix(in srgb,var(--calendar-empty) 72%,var(--glass-strong));color:var(--muted);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font:500 14px/1 Georgia,serif}.calendar-cell small{font:500 8.5px/1 system-ui;color:currentColor}.calendar-cell.has-messages{color:var(--calendar-text);border-color:color-mix(in srgb,var(--calendar-high) 18%,transparent);box-shadow:0 5px 13px color-mix(in srgb,var(--calendar-high) 9%,transparent)}.calendar-cell.heat-1{background:color-mix(in srgb,var(--calendar-low) 22%,var(--glass-strong))}.calendar-cell.heat-2{background:color-mix(in srgb,var(--calendar-low) 38%,var(--glass-strong))}.calendar-cell.heat-3{background:color-mix(in srgb,var(--calendar-low) 58%,var(--glass-strong))}.calendar-cell.heat-4{background:color-mix(in srgb,var(--calendar-high) 37%,var(--calendar-low))}.calendar-cell.heat-5{background:color-mix(in srgb,var(--calendar-high) 58%,var(--calendar-low));color:var(--glass-strong)}.calendar-cell.selected{border:2px solid var(--calendar-selected);box-shadow:0 0 0 2px color-mix(in srgb,var(--calendar-selected) 24%,transparent)}.calendar-cell:disabled{opacity:.34}.calendar-cell.blank{background:transparent}.calendar-hint{text-align:center;margin:12px 0 0;font:500 9px/1.4 system-ui;color:var(--muted);letter-spacing:.04em}
.settings-hub{display:grid;gap:9px;margin-top:14px}.settings-hub-row{display:grid;grid-template-columns:1fr auto;gap:3px 12px;text-align:left;padding:14px 16px;border:1px solid var(--glass-line);border-radius:19px;background:var(--glass);color:var(--ink);box-shadow:var(--glass-shadow)}
.settings-hub-row span{font:500 15px/1.2 system-ui}.settings-hub-row small{grid-column:1;font:400 11px/1.3 system-ui;color:var(--muted)}.settings-hub-row b{grid-column:2;grid-row:1/3;align-self:center;font:300 24px/1 system-ui;color:var(--muted)}
.settings-detail-overlay{position:fixed;inset:0;z-index:2800;display:flex;align-items:center;justify-content:center;padding:18px;background:var(--overlay-scrim);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.settings-detail-dialog{display:flex;flex-direction:column;width:min(100%,480px);max-height:min(82vh,720px);border:1px solid var(--glass-line);border-radius:26px;background:var(--glass-strong);box-shadow:0 28px 90px var(--surface-shadow);overflow:hidden}.settings-detail-head{display:flex;align-items:center;justify-content:space-between;padding:15px 18px 10px}.settings-detail-head strong{font:italic 21px/1 Georgia,serif;color:var(--brand-deep)}.settings-detail-close{display:grid;place-items:center;width:34px;height:34px;padding:0;border:0;border-radius:50%;background:var(--glass);color:var(--ink)}.settings-detail-close svg{width:18px;height:18px;display:block}.settings-detail-body{overflow:auto;padding:6px 12px 16px}.settings-detail-body>.settings-card{display:block!important;margin:0!important;background:transparent!important;border:0!important;box-shadow:none!important;padding:8px!important}
body.settings-detail-open{overflow:hidden!important}
body>#apiForm:not([hidden]){border-radius:24px!important;background:var(--glass-strong)!important;color:var(--ink)!important}.api-modal-backdrop{background:var(--overlay-scrim)!important}
@media(max-height:720px){.menu-head{display:none!important}.menu-hero{min-height:114px!important}.menu-title{font-size:30px!important}.menu-item{min-height:70px!important}.menu-item[data-menu="chat"]{min-height:78px!important}.menu-item[data-menu="sable-space"]{min-height:54px!important}}
/* 26 Days refresh: an airy, editorial home and a lighter letter-style chat. */
:root{--editorial-serif:"Cormorant Garamond",Georgia,"Times New Roman","Songti SC",serif;--editorial-sans:system-ui,-apple-system,"PingFang SC","Microsoft YaHei",sans-serif}
.menu-scroll{max-width:540px!important;overflow-y:auto!important;padding:calc(env(safe-area-inset-top) + 34px) 28px calc(env(safe-area-inset-bottom) + 34px)!important}
.menu-head{height:22px!important;min-height:22px!important;margin-bottom:30px}.menu-private{font:500 8px/1.45 var(--editorial-sans)!important;letter-spacing:.3em!important;opacity:.62}
.menu-hero{min-height:220px!important;padding:30px 31px!important;border-radius:31px!important;background:var(--glass-strong)!important;text-align:left!important;box-shadow:0 18px 44px color-mix(in srgb,var(--brand-deep) 10%,transparent)!important}
.menu-title{font:italic 42px/1.03 var(--editorial-serif)!important;text-align:left!important;margin:0 0 16px!important;letter-spacing:-.035em!important}.menu-since{font:500 10px/1.2 var(--editorial-sans)!important;letter-spacing:.17em!important;margin:0 0 16px!important}.menu-days{justify-content:flex-start!important;align-items:baseline!important;gap:10px!important}.menu-days .num{font:500 72px/.78 var(--editorial-serif)!important}.menu-days .lab{font:500 15px/1.2 var(--editorial-sans)!important;letter-spacing:.065em!important}
.menu-whisper{margin:14px 0 4px;padding:20px 24px;border:1px solid color-mix(in srgb,var(--brand-deep) 8%,transparent);border-radius:24px;background:color-mix(in srgb,var(--glass-strong) 86%,transparent);box-shadow:0 10px 28px color-mix(in srgb,var(--brand-deep) 5%,transparent);font:italic 18px/1.45 var(--editorial-serif);color:var(--brand-deep);text-align:center}.menu-whisper small{display:block;margin-top:8px;font:500 9px/1 var(--editorial-sans);letter-spacing:.14em;color:var(--muted)}
.menu-list{gap:14px!important;margin-top:22px!important}.menu-item{min-height:154px!important;padding:21px!important;border-radius:29px!important;display:block!important;position:relative!important;background:var(--glass-strong)!important;box-shadow:0 14px 34px color-mix(in srgb,var(--brand-deep) 8%,transparent)!important}.menu-item[data-menu="sable-space"]{min-height:104px!important}.menu-item[data-menu="chat"]{min-height:210px!important}.menu-ic{position:absolute!important;top:20px!important;left:21px!important;width:30px!important;height:30px!important;color:var(--warm)!important;stroke-width:1.45!important}.menu-copy{position:absolute;left:21px;right:20px;bottom:20px}.menu-name{font:italic 30px/1 var(--editorial-serif)!important;letter-spacing:-.025em!important}.menu-item[data-menu="chat"] .menu-name{font-size:42px!important}.menu-sub{margin-top:9px!important;font:500 11px/1.35 var(--editorial-sans)!important;letter-spacing:.065em!important}.menu-chev,.menu-dot{display:none!important}.menu-foot{margin-top:20px!important;font:italic 13px/1 var(--editorial-serif)!important;letter-spacing:.045em!important}
.menu-item[data-menu="chat"]{background:linear-gradient(145deg,color-mix(in srgb,var(--glass-strong) 82%,var(--morning-glow)),var(--glass-strong))!important;border-color:color-mix(in srgb,var(--warm) 34%,var(--glass-line))!important;box-shadow:0 18px 42px color-mix(in srgb,var(--warm) 17%,transparent)!important}.menu-item[data-menu="chat"] .menu-sub{max-width:18em!important}.menu-item:active{transform:scale(.985)!important;transition:transform .16s ease!important}
.topbar{min-height:88px!important;padding:calc(env(safe-area-inset-top) + 13px) 18px 10px!important;border-bottom:1px solid color-mix(in srgb,var(--brand) 16%,transparent)!important;border-radius:0!important}.backbtn,.topbtn{width:46px!important;height:46px!important;border-radius:13px!important;background:color-mix(in srgb,var(--glass-strong) 88%,transparent)!important;box-shadow:0 6px 18px color-mix(in srgb,var(--brand-deep) 7%,transparent)!important}.backbtn svg,.topbtn svg{width:20px!important;height:20px!important;stroke-width:1.5!important}.peerpill{min-width:0!important;padding:2px 10px!important;border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important}.peerpill .name{font:italic 27px/1 var(--editorial-serif)!important;letter-spacing:-.02em!important}.peerpill .status{margin-top:5px!important;font:500 11px/1 var(--editorial-sans)!important;letter-spacing:.025em!important}.header-actions{gap:3px!important}
.scroll{padding:14px 18px calc(var(--composer-zone) + 16px)!important}.row{margin-bottom:15px!important}.bubble{max-width:76%!important;padding:11px 14px!important;border:1px solid color-mix(in srgb,var(--brand-deep) 10%,transparent)!important;border-radius:17px!important;box-shadow:0 5px 16px color-mix(in srgb,var(--brand-deep) 5%,transparent)!important}.row.ai .bubble{background:var(--bubble-ai-bg)!important}.row.human .bubble{background:var(--bubble-human-bg)!important}.bubble .txt{font:400 15.5px/1.68 "Songti SC","Noto Serif SC",var(--editorial-serif)!important;letter-spacing:.005em!important}.day{margin:20px 0!important;font:500 10px/1 var(--editorial-sans)!important;letter-spacing:.07em!important}.message-meta{margin:5px 5px 0!important;font:400 10px/1 var(--editorial-sans)!important;letter-spacing:.025em!important;opacity:.62}.message-usage{max-width:76%!important;margin:3px 5px 0!important}.usage-line{font:500 9px/1.35 ui-monospace,monospace!important;opacity:.52}.new-divider{margin:20px 0!important;font:500 10px/1 var(--editorial-sans)!important;letter-spacing:.08em!important}.reroll-action{min-height:30px!important;margin:7px 5px 0!important;padding:6px 3px!important;border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important;font:500 10px/1 var(--editorial-sans)!important;color:var(--muted)!important;text-decoration:none!important}
.composer{left:12px!important;right:12px!important;bottom:calc(8px + env(safe-area-inset-bottom))!important;padding:7px!important;border-radius:20px!important;background:color-mix(in srgb,var(--composer-bg) 92%,transparent)!important;box-shadow:0 10px 26px color-mix(in srgb,var(--brand-deep) 10%,transparent)!important}.composer .field{min-height:52px!important;background:var(--field-bg)!important;border:1px solid color-mix(in srgb,var(--brand-deep) 10%,transparent)!important;border-radius:15px!important}.composer textarea{font:400 14px/1.4 "Songti SC","Noto Serif SC",var(--editorial-serif)!important}.composer textarea::placeholder{font:500 12px var(--editorial-sans)!important;letter-spacing:.02em}.floatbtn{width:38px!important;height:38px!important;border-radius:13px!important;box-shadow:none!important}.send{width:42px!important;height:42px!important;border-radius:14px!important}.composer-model-row{padding:0 4px 1px 42px!important}.composer-model-btn{padding:4px 9px!important;font:500 9px/1.2 var(--editorial-sans)!important}.app{--composer-zone:calc(108px + var(--keyboard-offset))!important}
@media(max-width:560px){.menu-scroll{padding:calc(env(safe-area-inset-top) + 30px) 28px calc(env(safe-area-inset-bottom) + 30px)!important}.menu-head{margin-bottom:28px}.menu-hero{min-height:214px!important}.menu-title{font-size:40px!important}.menu-days .num{font-size:67px!important}.menu-whisper{font-size:17px}.menu-item[data-menu="chat"]{min-height:196px!important}.bubble .txt{font-size:16px!important}}

/* 26 Days login and shared mobile type scale. The composition follows the compact
   welcome-card reference while every colour continues to come from our palette. */
:root{--type-body:16px;--type-label:11px;--type-caption:10px;--type-section:20px;--type-display:38px}
.login{justify-content:center!important;gap:17px!important;padding:calc(env(safe-area-inset-top) + 22px) 24px calc(env(safe-area-inset-bottom) + 22px)!important;background:radial-gradient(circle at 19% 15%,color-mix(in srgb,var(--warm) 13%,transparent),transparent 29%),radial-gradient(circle at 84% 83%,color-mix(in srgb,var(--brand) 16%,transparent),transparent 30%),linear-gradient(150deg,var(--paper),color-mix(in srgb,var(--paper-2) 62%,var(--paper)),var(--paper))!important}
.login-welcome-card{position:relative;display:flex;flex-direction:column;align-items:center;width:min(100%,350px);min-height:390px;padding:40px 27px 34px;border:1px solid color-mix(in srgb,var(--glass-line) 82%,var(--warm));border-radius:31px;background:linear-gradient(145deg,color-mix(in srgb,var(--glass-strong) 88%,var(--morning-glow)),var(--glass-strong));box-shadow:0 22px 54px color-mix(in srgb,var(--brand-deep) 11%,transparent);text-align:center;overflow:hidden}
.login-welcome-card::before{content:"♡";display:grid;place-items:center;width:34px;height:34px;margin:0 0 24px;border:1px solid color-mix(in srgb,var(--warm) 36%,transparent);border-radius:50%;color:var(--warm);font:400 22px/1 var(--editorial-serif)}
.login .orb{width:76px!important;height:76px!important;margin:0 0 22px;border:2px solid color-mix(in srgb,var(--glass-line) 86%,white);box-shadow:0 12px 30px var(--surface-shadow)!important;animation:none!important}
.login h1{max-width:280px;margin:0!important;font:italic 400 var(--type-display)/1.08 var(--editorial-serif)!important;letter-spacing:-.035em!important;color:var(--brand-deep)!important}
.login .sub{max-width:264px;margin:16px 0 0!important;font:400 14px/1.52 var(--editorial-sans)!important;color:var(--muted)!important}
.login-anniversary{width:100%!important;margin-top:auto!important;padding:22px 12px 0!important;border:0!important;border-top:1px solid color-mix(in srgb,var(--brand-deep) 11%,transparent)!important;border-radius:0!important;background:transparent!important;box-shadow:none!important;color:var(--muted)!important}
.login-anniversary b{display:inline-block!important;font:500 72px/.86 var(--editorial-serif)!important;color:var(--brand-deep)!important;letter-spacing:-.045em}.login-anniversary b::after{content:" days";margin-left:8px;font:400 15px/1 var(--editorial-sans);letter-spacing:.08em;color:var(--muted)}
.login-anniversary span{margin-top:10px!important;font:500 var(--type-label)/1.2 var(--editorial-sans)!important;letter-spacing:.12em!important}
.login form{width:min(100%,350px)!important;padding:12px!important;border-radius:22px!important;background:color-mix(in srgb,var(--glass-strong) 86%,transparent)!important;border:1px solid var(--glass-line)!important;box-shadow:0 13px 32px color-mix(in srgb,var(--brand-deep) 8%,transparent)!important}
.login input{height:52px!important;padding:0 17px!important;border-radius:15px!important;font:400 var(--type-body)/1 var(--editorial-sans)!important}.login button{height:52px!important;padding:0!important;border-radius:15px!important;font:600 var(--type-body)/1 var(--editorial-sans)!important;background:var(--send-bg)!important}.login-whisper{margin:0!important;font:italic 400 13px/1.2 var(--editorial-serif)!important;letter-spacing:.08em!important;color:color-mix(in srgb,var(--brand-deep) 48%,transparent)!important}
.menu-sub,.peerpill .status,.settings-hub-row small{font-size:var(--type-label)!important}.bubble .txt{font-size:var(--type-body)!important;line-height:1.72!important}.composer textarea{font-size:var(--type-body)!important;line-height:1.5!important}.message-meta,.usage-line,.calendar-week span,.calendar-hint{font-size:var(--type-caption)!important}.calendar-kicker strong{font-size:var(--type-section)!important}.calendar-head strong{font-size:22px!important}.calendar-cell{font:500 13px/1 var(--editorial-serif)!important}.calendar-cell small{font:500 var(--type-caption)/1 var(--editorial-sans)!important}.calendar-kicker span{font-size:var(--type-caption)!important}
@media(max-width:560px){.login{gap:14px!important}.login-welcome-card{min-height:370px;padding:34px 24px 30px}.login-welcome-card::before{margin-bottom:19px}.login .orb{width:68px!important;height:68px!important;margin-bottom:18px}.login h1{font-size:35px!important}.login .sub{font-size:13px!important}.login-anniversary b{font-size:66px!important}.login form{padding:10px!important}.login-whisper{font-size:12px!important}.calendar-cell{font-size:13px!important}.calendar-cell small{font-size:9px!important}}

/* Home hero: quieter, centered and deliberately airy. */
:root{--menu-serif:"Cormorant Garamond",Georgia,"Times New Roman","Songti SC",serif}
.menu-item[data-menu="sable-space"]{display:none!important}
.menu-hero{min-height:166px!important;padding:24px!important;text-align:center!important}.menu-title{font:italic 400 30px/1.05 var(--menu-serif)!important;text-align:center!important;margin:0 0 11px!important;letter-spacing:-.015em!important}.menu-since{text-align:center!important;margin:0 0 14px!important;font-size:9px!important}.menu-days{justify-content:center!important;gap:8px!important}.menu-days .num{font:500 55px/.82 var(--menu-serif)!important}.menu-days .lab{font-size:12px!important}.menu-name{font-family:var(--menu-serif)!important;font-weight:400!important;letter-spacing:-.012em!important}.menu-item[data-menu="chat"] .menu-name{font-family:var(--menu-serif)!important;font-weight:400!important}.menu-sub{letter-spacing:.02em!important}.menu-whisper{font-family:var(--menu-serif)!important;font-size:17px!important;letter-spacing:-.012em!important}.menu-list{gap:12px!important;margin-top:28px!important}
@media(max-width:560px){.menu-scroll{padding-top:calc(env(safe-area-inset-top) + 30px)!important}.menu-hero{min-height:162px!important;padding:24px!important}.menu-title{font-size:30px!important}.menu-days .num{font-size:53px!important}.menu-days .lab{font-size:12px!important}.menu-list{margin-top:24px!important}}

/* Chat stays text-first: no per-message avatar rail. */
.row.ai{padding-left:0!important}.row.ai::before{display:none!important}

/* Xiaomi 17 Pro Max class viewport (400 CSS px): keep the mobile rhythm calm. */
@media(max-width:420px){
  :root{--type-body:15px;--type-label:10px;--type-caption:9px;--type-section:19px}
  .topbar{min-height:76px!important;padding:calc(env(safe-area-inset-top) + 10px) 14px 8px!important}.backbtn,.topbtn{width:42px!important;height:42px!important}.peerpill .name{font-size:24px!important}.peerpill .status{font-size:10px!important}
  .scroll{padding:12px 16px calc(var(--composer-zone) + 14px)!important}.row{margin-bottom:13px!important}.bubble{max-width:80%!important;padding:11px 13px!important;border-radius:16px!important}.bubble .txt{font-size:var(--type-body)!important;line-height:1.68!important}.message-meta{font-size:var(--type-caption)!important;margin-top:4px!important}
  .composer{left:10px!important;right:10px!important;padding:6px!important}.composer .field{min-height:48px!important}.composer textarea{font-size:var(--type-body)!important}.floatbtn{width:36px!important;height:36px!important}.send{width:40px!important;height:40px!important}
  .menu-name{font-size:24px!important}.menu-item[data-menu="chat"] .menu-name{font-size:30px!important}.menu-sub{font-size:10px!important}.menu-item{min-height:116px!important;padding:20px!important}.menu-item[data-menu="chat"]{min-height:128px!important}.menu-copy{left:20px!important;bottom:20px!important}.menu-ic{top:20px!important;left:20px!important;width:26px!important;height:26px!important}
  .calendar-kicker strong{font-size:19px!important}.calendar-head strong{font-size:20px!important}.calendar-cell{font-size:12px!important}.calendar-cell small{font-size:9px!important}.calendar-week,.calendar-grid{gap:4px!important}
}

/* Compact login: a quiet entry card, with the password field immediately below. */
.login{gap:12px!important;padding:calc(env(safe-area-inset-top) + 22px) 22px calc(env(safe-area-inset-bottom) + 22px)!important}
.login-welcome-card{width:min(100%,294px)!important;min-height:272px!important;padding:31px 22px 27px!important;border-radius:27px!important;box-shadow:0 16px 38px color-mix(in srgb,var(--brand-deep) 8%,transparent)!important}
.login-welcome-card::before{width:28px!important;height:28px!important;margin:0 0 22px!important;font-size:18px!important}
.login .orb,.login .sub,.login-whisper{display:none!important}
.login h1{max-width:236px!important;font-size:28px!important;line-height:1.08!important;letter-spacing:-.022em!important}
.login-anniversary{padding:19px 0 0!important}.login-anniversary b{font-size:59px!important}.login-anniversary b::after{margin-left:6px!important;font-size:12px!important;letter-spacing:.06em!important}.login-anniversary span{margin-top:8px!important;font-size:9px!important;letter-spacing:.11em!important}
.login form{width:min(100%,258px)!important;padding:0!important;border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important}.login input{height:40px!important;padding:0 14px!important;border-radius:12px!important;font-size:14px!important;box-shadow:0 8px 20px color-mix(in srgb,var(--brand-deep) 6%,transparent)!important}.login .err{margin:7px 0 0!important;min-height:14px!important;font-size:10px!important}
@media(max-width:420px){.login-welcome-card{width:min(100%,282px)!important;min-height:260px!important;padding:29px 20px 24px!important}.login h1{font-size:27px!important}.login-anniversary b{font-size:56px!important}.login form{width:min(100%,246px)!important}.login input{height:39px!important;font-size:13px!important}}

/* Login polish: retain the airy reference without decorative containers. */
.login-welcome-card{min-height:242px!important;padding:27px 22px 22px!important}
.login-welcome-card::before{display:block;width:auto!important;height:auto!important;margin:0 0 17px!important;border:0!important;border-radius:0!important;font:400 20px/1 var(--editorial-serif)!important}
.login h1{max-width:184px!important;font:italic 400 27px/1.04 "Cormorant Garamond",var(--editorial-serif)!important;letter-spacing:-.012em!important}
.login-anniversary{display:flex!important;flex-wrap:wrap!important;align-items:baseline!important;justify-content:center!important;gap:0 7px!important;margin-top:auto!important;padding:13px 0 0!important;border:0!important}
.login-anniversary b{font:400 48px/.9 "Songti SC","Noto Serif SC",var(--editorial-serif)!important;letter-spacing:-.035em!important}.login-anniversary b::after{font:400 11px/1 var(--editorial-sans)!important;letter-spacing:.045em!important}.login-anniversary span{flex:0 0 100%!important;margin-top:10px!important;font-size:8.5px!important;line-height:1.15!important;letter-spacing:.105em!important}
.login form{margin-top:6px!important}.login input{background:color-mix(in srgb,var(--glass-strong) 72%,transparent)!important;border-color:color-mix(in srgb,var(--brand-deep) 8%,transparent)!important;box-shadow:0 5px 15px color-mix(in srgb,var(--brand-deep) 5%,transparent)!important}
@media(max-width:420px){.login-welcome-card{min-height:234px!important;padding:26px 20px 20px!important}.login h1{font-size:26px!important}.login-anniversary b{font-size:46px!important}.login form{margin-top:7px!important}}

/* Conversation metadata: the words in the bubble remain untouched. */
.bubble{position:relative!important;overflow:visible!important}
.message-meta{position:absolute!important;top:calc(100% + 1px)!important;display:block!important;margin:0!important;font:400 9px/1 "Songti SC","Noto Serif SC",var(--editorial-serif)!important;letter-spacing:0!important;color:var(--muted)!important;opacity:.7!important;white-space:nowrap!important}
.row.human .message-meta{left:8px!important;right:auto!important;text-align:left!important}
.row.ai .message-meta{right:8px!important;left:auto!important;text-align:right!important}
.message-usage{max-width:76%!important;margin:15px 4px 0!important;color:var(--muted)!important}
.usage-line{font:400 9px/1.3 "Songti SC","Noto Serif SC",var(--editorial-serif)!important;letter-spacing:0!important;color:inherit!important;opacity:.7!important}
.calendar-kicker{margin:0 0 12px!important}.calendar-kicker strong{font:400 12.5px/1.2 var(--editorial-sans)!important;letter-spacing:.01em!important;color:var(--text-soft)!important}
.calendar-head strong{font:400 14px/1.2 var(--editorial-sans)!important;letter-spacing:.01em!important;color:var(--text-soft)!important}.calendar-week span,.calendar-cell,.calendar-cell small,.calendar-hint{font-family:var(--editorial-sans)!important;font-weight:400!important}.calendar-cell{font-size:12px!important}.calendar-cell small{font-size:8.5px!important}
@media(max-width:420px){.message-meta{top:calc(100% + 1px)!important;font-size:8.5px!important}.message-usage{margin-top:14px!important}.usage-line{font-size:8.5px!important}.calendar-kicker strong{font-size:12.5px!important}.calendar-head strong{font-size:13px!important}}

/* Mobile refinement: the reference is quiet and small, never poster-sized. */
@media(max-width:560px){
  .bubble .txt{font-size:14px!important;line-height:1.64!important;letter-spacing:0!important}
  .bubble{padding:10px 12px!important;border-radius:15px!important;max-width:78%!important}
  .message-meta{font-size:8.5px!important;top:calc(100% + 1px)!important}
  .message-usage{margin-top:13px!important}.usage-line{font-size:8.5px!important;line-height:1.25!important}
  .peerpill .name{font-size:22px!important}.peerpill .status{font-size:9px!important}
  .new-divider{display:flex!important;flex-direction:column!important;gap:3px!important;margin:18px 0!important;font:400 9px/1.18 "Songti SC","Noto Serif SC",var(--editorial-serif)!important;letter-spacing:.025em!important;color:var(--muted)!important}
  .new-divider::before,.new-divider::after{align-self:center!important;width:76px!important;opacity:.45!important}
  .new-divider-date,.new-divider-time{display:block!important;text-align:center!important}

  /* Make the profile typography match the calm Songti treatment of the status card. */
  .profile-panel.mind-view .profile-scroll,.profile-panel.mind-view .settings-card,.profile-panel.mind-view .segmented button,.profile-panel.mind-view .mind-refresh{font-family:"Songti SC","Noto Serif SC",var(--editorial-serif)!important}
  .profile-panel.mind-view .settings-card{padding:14px 15px!important;border-radius:20px!important}
  .profile-panel.mind-view .settings-label,.profile-panel.mind-view .mind-refresh{font-size:12px!important;line-height:1.2!important}
  .profile-panel.mind-view .mind-summary{margin:11px 0 12px!important}.profile-panel.mind-view .mind-title{font-size:17px!important}.profile-panel.mind-view .mind-sub,.profile-panel.mind-view .mind-grid,.profile-panel.mind-view .segmented button{font-size:13px!important}
  .profile-panel.mind-view .history-calendar{padding:16px!important}.profile-panel.mind-view .calendar-kicker strong{font-size:12px!important}.profile-panel.mind-view .calendar-head strong{font-size:14px!important}

  /* Menu: rebuild the hierarchy to match the compact reference cards. */
  .menu-scroll{max-width:400px!important;padding:calc(env(safe-area-inset-top) + 28px) 38px calc(env(safe-area-inset-bottom) + 26px)!important;overflow-y:auto!important}
  .menu-head{height:auto!important;min-height:0!important;margin:0 0 18px!important;text-align:left!important}.menu-private{font-size:8px!important;line-height:1.35!important;letter-spacing:.23em!important}
  .menu-hero{min-height:166px!important;margin:0!important;padding:24px 18px!important;border-radius:23px!important;text-align:center!important;box-shadow:0 12px 28px color-mix(in srgb,var(--brand-deep) 6%,transparent)!important}
  .menu-title{margin:0 0 12px!important;font:italic 400 25px/1.05 var(--menu-serif)!important;letter-spacing:-.02em!important;text-align:center!important}
  .menu-since{margin:0 0 15px!important;font:500 9px/1 var(--editorial-sans)!important;letter-spacing:.13em!important}
  .menu-days{gap:7px!important;justify-content:center!important}.menu-days .num{font:400 48px/.82 "Songti SC","Noto Serif SC",var(--menu-serif)!important;letter-spacing:-.03em!important}.menu-days .lab{font:400 12px/1 var(--editorial-sans)!important;letter-spacing:.04em!important}
  .menu-whisper{margin:16px 0 24px!important;padding:17px 18px!important;border-radius:21px!important;font:italic 400 14px/1.35 var(--menu-serif)!important;letter-spacing:-.01em!important}.menu-whisper small{margin-top:6px!important;font-size:8px!important;letter-spacing:.11em!important}
  .menu-list{display:grid!important;grid-template-columns:1fr 1fr!important;grid-template-areas:"chat chat" "memory dream" "moments settings"!important;gap:10px!important;margin:0!important}
  .menu-item{min-height:132px!important;padding:16px!important;border-radius:22px!important;box-shadow:0 10px 24px color-mix(in srgb,var(--brand-deep) 5%,transparent)!important}.menu-item[data-menu="chat"]{grid-area:chat!important;min-height:182px!important}.menu-item[data-menu="memory"]{grid-area:memory!important}.menu-item[data-menu="dream"]{grid-area:dream!important}.menu-item[data-menu="moments"]{grid-area:moments!important}.menu-item[data-menu="settings"]{grid-area:settings!important}
  .menu-ic{top:16px!important;left:16px!important;width:23px!important;height:23px!important}.menu-copy{left:16px!important;right:14px!important;bottom:16px!important}.menu-name{font:italic 400 24px/1 var(--menu-serif)!important;letter-spacing:-.018em!important}.menu-item[data-menu="chat"] .menu-name{font-size:35px!important}.menu-sub{margin-top:7px!important;font:500 9px/1.28 var(--editorial-sans)!important;letter-spacing:.015em!important}.menu-item[data-menu="chat"] .menu-sub{max-width:none!important}.menu-foot{margin:19px 0 0!important;font-size:10px!important}
}

/* Final type rule: use the same small Songti family as the chat bubbles. */
:root{--chat-type:"Songti SC","Noto Serif SC",var(--editorial-serif)}
.app,.menu-panel,.profile-panel,.login{font-family:var(--chat-type)!important}
@media(max-width:560px){
  .menu-scroll{padding:calc(env(safe-area-inset-top) + 16px) 24px calc(env(safe-area-inset-bottom) + 12px)!important}
  .menu-head{margin:0 0 9px 14px!important}.menu-private{font:400 7px/1.22 var(--chat-type)!important;letter-spacing:.17em!important}
  .menu-hero{min-height:126px!important;padding:16px 14px!important;border-radius:21px!important}
  .menu-title{margin:0 0 7px!important;font:italic 400 21px/1.02 var(--chat-type)!important;letter-spacing:-.015em!important}
  .menu-since{margin:0 0 9px!important;font:400 7.5px/1 var(--chat-type)!important;letter-spacing:.09em!important}.menu-days .num{font:400 39px/.78 var(--chat-type)!important}.menu-days .lab{font:400 9px/1 var(--chat-type)!important;letter-spacing:.02em!important}
  .menu-whisper{margin:10px 0 13px!important;padding:11px 13px!important;border-radius:18px!important;font:italic 400 11px/1.2 var(--chat-type)!important}.menu-whisper small{margin-top:3px!important;font:400 7px/1 var(--chat-type)!important;letter-spacing:.07em!important}
  .menu-list{gap:7px!important}.menu-item{min-height:92px!important;padding:12px!important;border-radius:19px!important}.menu-item[data-menu="chat"]{min-height:126px!important}.menu-ic{top:12px!important;left:12px!important;width:19px!important;height:19px!important}.menu-copy{left:12px!important;right:11px!important;bottom:12px!important}.menu-name{font:italic 400 19px/1 var(--chat-type)!important;letter-spacing:-.012em!important}.menu-item[data-menu="chat"] .menu-name{font-size:27px!important}.menu-sub{margin-top:4px!important;font:400 7.5px/1.16 var(--chat-type)!important;letter-spacing:.01em!important}.menu-foot{margin:9px 0 0!important;font:italic 400 7.5px/1 var(--chat-type)!important}
  .profile-panel.mind-view .profile-scroll,.profile-panel.mind-view .settings-card,.profile-panel.mind-view .segmented button,.profile-panel.mind-view .mind-refresh,.peerpill .name,.peerpill .status,.composer textarea,.composer textarea::placeholder,.composer-model-btn{font-family:var(--chat-type)!important}
}

/* Timestamp rail: a quiet record between turns, with token detail directly below. */
.message-meta{position:static!important;display:flex!important;align-items:center!important;gap:9px!important;align-self:flex-start!important;margin:10px 0 8px 7px!important;font:400 10px/1 var(--chat-type)!important;letter-spacing:.035em!important;color:var(--muted)!important;opacity:.76!important;white-space:nowrap!important}
.message-meta-dot{font-size:8px!important;color:var(--warm)!important;line-height:1!important}.row.human .message-meta,.row.ai .message-meta{left:auto!important;right:auto!important;text-align:left!important}
.peerpill .name{font-size:20px!important;line-height:1.05!important}.message-usage{max-width:76%!important;margin:5px 0 0!important}.row.ai .message-usage{align-self:flex-start!important;text-align:left}.row.human .message-usage{align-self:flex-end!important;text-align:right}.usage-line{font:400 9px/1.25 var(--chat-type)!important;letter-spacing:.015em!important;opacity:.65!important}
.new-divider{display:flex!important;justify-content:center!important;gap:0!important;margin:18px 0 14px!important;font:400 10px/1 var(--chat-type)!important;letter-spacing:.035em!important;color:var(--muted)!important}.new-divider::before,.new-divider::after{display:none!important}.new-divider-date{display:flex!important;align-items:center!important;gap:9px!important}.new-divider-date i{font-style:normal!important;font-size:8px!important;color:var(--warm)!important}
@media(max-width:560px){.peerpill .name{font-size:18px!important}.message-meta{margin:9px 0 7px 6px!important;font-size:9px!important}.message-meta-dot{font-size:7px!important}.message-usage{margin:4px 0 0!important}.usage-line{font-size:8px!important}.new-divider{margin:16px 0 12px!important;font-size:9px!important}.new-divider-date i{font-size:7px!important}}

/* Separate chat portraits: Sable on the left, Sharon on the right. */
.row.ai{padding-left:42px!important}.row.ai::before{display:block!important;left:0!important;top:14px!important;width:32px!important;height:32px!important;background-image:var(--avatar-default)!important;box-shadow:0 5px 13px var(--surface-shadow)!important}
.row.human{padding-right:42px!important}.row.human::after{content:"";position:absolute;display:block;right:0;top:14px;width:32px;height:32px;border-radius:50%;background-image:var(--human-avatar-default);background-size:cover;background-position:center;background-repeat:no-repeat;box-shadow:0 5px 13px var(--surface-shadow)}
.profile-panel.settings-view .profile-identity{display:grid!important;grid-template-columns:auto 1fr;align-items:center;gap:15px;width:100%;max-width:520px;margin:0 auto 6px;padding:18px 20px;background:var(--glass-strong);border:1px solid var(--glass-line);border-radius:22px;box-shadow:0 12px 30px color-mix(in srgb,var(--brand-deep) 7%,transparent)}.human-avatar-choice{display:flex;align-items:center;gap:11px;width:100%;padding:3px 0;border:0;background:transparent;color:var(--text);font:400 13px/1.2 var(--chat-type);text-align:left}.human-avatar-preview{display:block;width:36px;height:36px;flex:0 0 auto;border-radius:50%;background-image:var(--avatar-default);background-size:cover;background-position:center;box-shadow:0 5px 13px var(--surface-shadow)}.human-avatar-preview.chat-self-preview{background-image:var(--human-avatar-default)}
@media(max-width:560px){.row.ai{padding-left:38px!important}.row.ai::before{top:11px!important;width:29px!important;height:29px!important}.row.human{padding-right:38px!important}.row.human::after{top:11px;width:29px;height:29px}.human-avatar-choice{font-size:12px!important}.human-avatar-preview{width:32px!important;height:32px!important}}

/* Last mobile layer: heatmap, menu and composer share the small chat type. */
.history-calendar,.history-calendar *{font-family:var(--chat-type)!important}.history-calendar .calendar-kicker strong{font:400 12px/1.2 var(--chat-type)!important;letter-spacing:.01em!important;color:var(--text-soft)!important}.history-calendar .calendar-head strong{font:400 13px/1.2 var(--chat-type)!important;color:var(--text-soft)!important}.history-calendar .calendar-week span{font:400 9px/1.2 var(--chat-type)!important}.history-calendar .calendar-cell{font:400 12px/1 var(--chat-type)!important}.history-calendar .calendar-cell small,.history-calendar .calendar-hint{font:400 8px/1.2 var(--chat-type)!important}
.composer-model-row{display:flex!important;align-items:center!important;gap:7px!important;padding:0 4px 1px!important}.composer-add-btn{display:grid!important;place-items:center!important;width:24px!important;height:24px!important;flex:0 0 auto!important;padding:0!important;border:0!important;border-radius:50%!important;background:transparent!important;color:var(--muted)!important;font:400 20px/1 var(--chat-type)!important}.composer-model-btn{max-width:calc(100% - 31px)!important;padding:4px 0!important;background:transparent!important;font:400 9px/1.2 var(--chat-type)!important}.composer .field{min-width:0!important}.clip-in-field{display:none!important}
@media(max-width:560px){.menu-panel .menu-scroll{display:flex!important;max-width:430px!important;padding:calc(env(safe-area-inset-top) + 16px) 24px calc(env(safe-area-inset-bottom) + 12px)!important}.menu-panel .menu-list{display:grid!important;grid-template-columns:1fr 1fr!important;grid-template-areas:"chat chat" "memory dream" "moments settings"!important;gap:7px!important;margin:0!important}.menu-panel .menu-item[data-menu="chat"]{grid-area:chat!important;min-height:126px!important}.menu-panel .menu-item[data-menu="memory"]{grid-area:memory!important}.menu-panel .menu-item[data-menu="dream"]{grid-area:dream!important}.menu-panel .menu-item[data-menu="moments"]{grid-area:moments!important}.menu-panel .menu-item[data-menu="settings"]{grid-area:settings!important}.menu-panel .menu-item{min-height:92px!important;padding:12px!important;border-radius:19px!important}.menu-panel .menu-name{font:italic 400 19px/1 var(--chat-type)!important}.menu-panel .menu-item[data-menu="chat"] .menu-name{font-size:27px!important}.menu-panel .menu-sub{font:400 7.5px/1.16 var(--chat-type)!important}.history-calendar .calendar-kicker strong{font-size:12px!important}.history-calendar .calendar-head strong{font-size:13px!important}.history-calendar .calendar-cell{font-size:12px!important}.composer-model-row{padding:0 3px 1px!important}.composer-add-btn{width:22px!important;height:22px!important;font-size:19px!important}}

/* Attachment entry must be discoverable without changing the composer hierarchy. */
.composer-add-btn{display:inline-flex!important;align-items:center!important;gap:4px!important;width:auto!important;height:24px!important;padding:0 8px!important;border:1px solid color-mix(in srgb,var(--brand-deep) 14%,transparent)!important;border-radius:999px!important;background:color-mix(in srgb,var(--glass-strong) 72%,transparent)!important;font:400 10px/1 var(--chat-type)!important;white-space:nowrap!important}.composer-add-btn svg{display:block;width:12px;height:12px;flex:0 0 auto}
.composer-model-btn{max-width:calc(100% - 58px)!important}
@media(max-width:560px){.composer-add-btn{width:auto!important;height:23px!important;padding:0 7px!important;font-size:9.5px!important}}

/* Menu audit pass: exact reference hierarchy, not a scaled-down dashboard. */
@media(max-width:560px){
  .menu-panel .menu-scroll{align-items:center!important;justify-content:flex-start!important;max-width:none!important;padding:calc(env(safe-area-inset-top) + 48px) 0 calc(env(safe-area-inset-bottom) + 14px)!important}
  .menu-panel .menu-head{display:none!important}
  .menu-panel .menu-hero,.menu-panel .menu-whisper,.menu-panel .menu-list,.menu-panel .menu-foot{width:min(344px,calc(100vw - 48px))!important;flex:0 0 auto!important}
  .menu-panel .menu-hero{min-height:132px!important;margin:0!important;padding:18px 16px!important;border-radius:22px!important;text-align:center!important}
  .menu-panel .menu-title{margin:0 0 8px!important;font:italic 400 22px/1.04 var(--chat-type)!important;letter-spacing:-.02em!important}
  .menu-panel .menu-since{margin:0 0 10px!important;font:400 8px/1 var(--chat-type)!important;letter-spacing:.09em!important}
  .menu-panel .menu-days .num{font:400 40px/.8 var(--chat-type)!important}.menu-panel .menu-days .lab{font:400 9px/1 var(--chat-type)!important;letter-spacing:.02em!important}
  .menu-panel .menu-whisper{min-height:58px!important;margin:12px 0 22px!important;padding:11px 15px!important;border-radius:19px!important;font:italic 400 11px/1.2 var(--chat-type)!important}.menu-panel .menu-whisper small{margin-top:3px!important;font:400 7px/1 var(--chat-type)!important;letter-spacing:.07em!important}
  .menu-panel .menu-list{gap:8px!important}.menu-panel .menu-item{min-height:94px!important;padding:13px!important;border-radius:20px!important}.menu-panel .menu-item[data-menu="chat"]{min-height:112px!important}.menu-panel .menu-ic{top:13px!important;left:13px!important;width:20px!important;height:20px!important}.menu-panel .menu-copy{left:13px!important;right:12px!important;bottom:13px!important}.menu-panel .menu-name{font:italic 400 20px/1 var(--chat-type)!important;letter-spacing:-.015em!important}.menu-panel .menu-item[data-menu="chat"] .menu-name{font-size:28px!important}.menu-panel .menu-sub{margin-top:4px!important;font:400 7.5px/1.18 var(--chat-type)!important;letter-spacing:.01em!important}.menu-panel .menu-foot{margin:10px 0 0!important;text-align:center!important;font:italic 400 8px/1 var(--chat-type)!important}
}

/* Fit every menu destination into a 430 × 932 first screen. */
@media(max-width:560px){
  .menu-panel .menu-scroll{height:100%!important;min-height:0!important;overflow:hidden!important;padding:calc(env(safe-area-inset-top) + 70px) 0 calc(env(safe-area-inset-bottom) + 10px)!important}
  .menu-panel .menu-hero{min-height:166px!important;height:166px!important;padding:24px 18px!important}
  .menu-panel .menu-title{font-size:25px!important;margin-bottom:11px!important}.menu-panel .menu-since{margin-bottom:14px!important;font-size:9px!important}.menu-panel .menu-days .num{font-size:48px!important}.menu-panel .menu-days .lab{font-size:11px!important}
  .menu-panel .menu-whisper{min-height:80px!important;height:80px!important;margin:16px 0 24px!important;padding:16px 18px!important;font-size:13px!important}.menu-panel .menu-whisper small{font-size:8px!important}
  .menu-panel .menu-list{gap:10px!important}.menu-panel .menu-item{min-height:120px!important;height:120px!important;padding:16px!important}.menu-panel .menu-item[data-menu="chat"]{min-height:134px!important;height:134px!important}.menu-panel .menu-ic{top:16px!important;left:16px!important;width:23px!important;height:23px!important}.menu-panel .menu-copy{left:16px!important;right:15px!important;bottom:16px!important}.menu-panel .menu-name{font-size:24px!important}.menu-panel .menu-item[data-menu="chat"] .menu-name{font-size:32px!important}.menu-panel .menu-sub{font-size:9px!important;margin-top:6px!important}.menu-panel .menu-foot{margin-top:14px!important;font-size:9px!important}
}

/* Companion landing treatment, recoloured exclusively from the 26 Days palette. */
.menu-status{display:flex;align-items:center;justify-content:center;gap:8px;color:var(--text-soft);font:400 10px/1.2 var(--editorial-sans);letter-spacing:.035em}.menu-status i{width:6px;height:6px;border-radius:50%;background:var(--warm);box-shadow:0 0 0 4px color-mix(in srgb,var(--warm) 14%,transparent)}.menu-status small{font:inherit;color:var(--muted);opacity:.7}
@media(max-width:560px){
  .menu-panel .menu-scroll{align-items:center!important;overflow:hidden!important;padding:calc(env(safe-area-inset-top) + 48px) 0 calc(env(safe-area-inset-bottom) + 14px)!important;background:transparent!important}
  .menu-panel .menu-hero,.menu-panel .menu-whisper,.menu-panel .menu-status,.menu-panel .menu-list,.menu-panel .menu-foot{width:min(344px,calc(100vw - 48px))!important}
  .menu-panel .menu-hero{min-height:158px!important;height:158px!important;margin:0!important;padding:22px 18px!important;border:1px solid var(--glass-line)!important;border-radius:28px!important;background:color-mix(in srgb,var(--glass-strong) 86%,transparent)!important;box-shadow:0 14px 34px color-mix(in srgb,var(--brand-deep) 8%,transparent)!important}
  .menu-panel .menu-title{font-family:var(--editorial-serif)!important;font-size:27px!important;line-height:1.02!important;margin:0 0 10px!important}.menu-panel .menu-since{font-family:var(--editorial-sans)!important;font-size:8.5px!important;margin:0 0 12px!important}.menu-panel .menu-days .num{font-family:var(--editorial-serif)!important;font-size:47px!important}.menu-panel .menu-days .lab{font-family:var(--editorial-sans)!important;font-size:10px!important}
  .menu-panel .menu-whisper{min-height:72px!important;height:72px!important;margin:16px 0 12px!important;padding:14px 18px!important;border-radius:24px!important;background:color-mix(in srgb,var(--glass-strong) 84%,transparent)!important;font-family:var(--editorial-serif)!important;font-size:13px!important}.menu-panel .menu-whisper small{font-family:var(--editorial-sans)!important;font-size:7.5px!important}
  .menu-panel .menu-status{height:24px!important;margin:0 0 16px!important;font-size:9px!important}.menu-panel .menu-status i{width:5px!important;height:5px!important}
  .menu-panel .menu-list{gap:9px!important}.menu-panel .menu-item{min-height:106px!important;height:106px!important;padding:14px!important;border-radius:26px!important;background:color-mix(in srgb,var(--glass-strong) 88%,transparent)!important;box-shadow:0 12px 28px color-mix(in srgb,var(--brand-deep) 6%,transparent)!important}.menu-panel .menu-item[data-menu="chat"]{min-height:128px!important;height:128px!important}.menu-panel .menu-ic{top:14px!important;left:14px!important;width:21px!important;height:21px!important;color:var(--warm)!important}.menu-panel .menu-copy{left:14px!important;right:13px!important;bottom:14px!important}.menu-panel .menu-name,.menu-panel .menu-item[data-menu="chat"] .menu-name{font-family:var(--editorial-serif)!important;font-weight:400!important}.menu-panel .menu-name{font-size:22px!important}.menu-panel .menu-item[data-menu="chat"] .menu-name{font-size:31px!important}.menu-panel .menu-sub{font-family:var(--editorial-sans)!important;font-size:8px!important;letter-spacing:.025em!important}.menu-panel .menu-foot{font-family:var(--editorial-serif)!important;font-size:9px!important;margin-top:12px!important}
}

/* source: checklist-receipt-ui */
.checklist-scrim{position:fixed;inset:0;z-index:3600;background:rgba(41,56,13,.22);backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px);opacity:0;pointer-events:none;transition:opacity .28s ease}.checklist-scrim.open{opacity:1;pointer-events:auto}
.checklist-sheet{--checklist-height:66vh;position:fixed;left:0;right:0;bottom:0;z-index:3601;height:var(--checklist-height);max-height:93vh;display:flex;overflow:hidden;transform:translateY(102%);background:#F5ECF4;color:#29380D;clip-path:polygon(0 8px,2.5% 0,5% 8px,7.5% 0,10% 8px,12.5% 0,15% 8px,17.5% 0,20% 8px,22.5% 0,25% 8px,27.5% 0,30% 8px,32.5% 0,35% 8px,37.5% 0,40% 8px,42.5% 0,45% 8px,47.5% 0,50% 8px,52.5% 0,55% 8px,57.5% 0,60% 8px,62.5% 0,65% 8px,67.5% 0,70% 8px,72.5% 0,75% 8px,77.5% 0,80% 8px,82.5% 0,85% 8px,87.5% 0,90% 8px,92.5% 0,95% 8px,97.5% 0,100% 8px,100% 100%,0 100%);box-shadow:0 -18px 58px rgba(41,56,13,.18);transition:transform .34s cubic-bezier(.32,.72,0,1),height .26s cubic-bezier(.32,.72,0,1)}.checklist-sheet.open{transform:none}
.checklist-handle{position:absolute;z-index:2;top:16px;left:50%;width:48px;height:5px;padding:0;border:0;border-radius:5px;background:rgba(41,56,13,.24);transform:translateX(-50%);touch-action:none}.checklist-handle::after{content:"";position:absolute;inset:-16px -70px}
.checklist-scroll{width:min(100%,560px);margin:0 auto;padding:47px 23px calc(env(safe-area-inset-bottom) + 24px);overflow-y:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;-ms-overflow-style:none;font-family:"SF Mono","JetBrains Mono",Menlo,Consolas,monospace}.checklist-scroll::-webkit-scrollbar{display:none;width:0;height:0}.checklist-head{text-align:center;margin-bottom:8px}.checklist-brand{font-size:8px;font-weight:700;letter-spacing:.28em;color:rgba(41,56,13,.58)}.checklist-head h2{margin:5px 0 4px;font:italic 500 29px/1.05 var(--chat-type);letter-spacing:.01em}.checklist-date{font-size:10px;letter-spacing:.16em;color:rgba(41,56,13,.58)}
.checklist-rule{overflow:hidden;margin:7px 0;color:rgba(41,56,13,.28);font-size:10px;letter-spacing:.06em;white-space:nowrap;text-align:center}.checklist-meta{display:flex;justify-content:space-between;padding:3px 0;font-size:11px;letter-spacing:.03em}.checklist-meta.faded{color:rgba(41,56,13,.55)}.checklist-section{padding:3px 0 9px;text-align:center;font-size:10px;font-weight:700;letter-spacing:.18em;color:rgba(41,56,13,.58)}
.checklist-item{display:flex;align-items:baseline;gap:8px;padding:7px 0;border-bottom:1px dashed rgba(41,56,13,.14)}.checklist-item button{font:inherit}.checklist-check,.checklist-trigger,.checklist-body,.checklist-delete{border:0;background:transparent;color:inherit}.checklist-check{flex:0 0 auto;padding:0;font-size:13px;line-height:1.5}.checklist-trigger{flex:0 0 auto;padding:1px 5px;border:1px solid rgba(165,177,57,.28);border-radius:4px;color:#7A871F;font-size:10px;line-height:1.55}.checklist-item .checklist-body{flex:1;min-width:0;padding:0;text-align:left;color:#29380D;font-family:var(--font-cn);font-size:16px;font-weight:400;line-height:1.55;letter-spacing:0;word-break:break-word}.checklist-item.done .checklist-body{text-decoration:line-through;color:rgba(41,56,13,.36)}.checklist-bang{color:#7A871F;font-size:14px}.checklist-by{flex:0 0 auto;white-space:nowrap;color:#29380D;font:italic 400 11px/1.6 var(--chat-type);letter-spacing:.05em;opacity:.7}.checklist-delete{padding:0 2px;color:rgba(41,56,13,.34);font-size:15px;line-height:1.35;opacity:0}
.checklist-new,.checklist-alarm{display:grid;gap:7px;margin-top:10px}.checklist-new{grid-template-columns:minmax(0,1fr) auto}.checklist-alarm{grid-template-columns:minmax(0,1fr) 90px auto}.checklist-new input,.checklist-alarm input{box-sizing:border-box;width:100%;min-width:0;max-width:100%;height:34px;padding:0 9px;border:1px dashed rgba(41,56,13,.20);border-radius:6px;outline:none;background:rgba(245,236,244,.72);color:#29380D;font:11px/1.2 "SF Mono",Menlo,monospace}.checklist-new button,.checklist-alarm button{box-sizing:border-box;min-width:48px;border:1px solid rgba(165,177,57,.30);border-radius:6px;background:rgba(249,210,74,.16);color:#29380D;font:10px/1 "SF Mono",Menlo,monospace}.checklist-alarm button{position:relative;z-index:1}
.checklist-progress{display:grid;grid-template-columns:auto 1fr auto;gap:8px;align-items:center;padding:7px 0;font-size:10px}.checklist-progress span:nth-child(2){overflow:hidden;letter-spacing:-.08em;white-space:nowrap}.checklist-progress small{font-size:9px;color:rgba(41,56,13,.58)}.checklist-stamp{width:max-content;margin:17px auto 8px;padding:6px 13px;border:2px solid #A5B139;border-radius:5px;color:#7A871F;font:italic 700 13px/1.1 var(--chat-type);letter-spacing:.12em;transform:rotate(-3deg)}.checklist-foot{text-align:center;color:rgba(41,56,13,.58);font:italic 12px/1.65 var(--chat-type)}
.topbtn.checklist-open svg{width:19px!important;height:19px!important}
@media(max-width:430px){.checklist-scroll{padding-left:18px;padding-right:18px}.checklist-alarm{grid-template-columns:minmax(0,1fr) 76px 48px}.checklist-alarm input{padding-left:8px;padding-right:8px}.checklist-head h2{font-size:27px}.checklist-item{gap:6px}.checklist-body{font-size:12px}}

/* source: entry-cover-ui */
/* ── 入口封面:参考图2 的 tap-to-come-inside 行为 ── */
.login.authed{cursor:pointer;-webkit-tap-highlight-color:transparent}
.login.authed form{display:none!important}
.login .login-tap{display:none;margin:30px 0 0;font:500 12px/1 var(--editorial-sans,system-ui);letter-spacing:.34em;color:var(--muted);animation:cover-breathe 3.4s ease-in-out infinite}
.login.authed .login-tap{display:block}
.login .login-foot{position:absolute;left:0;right:0;bottom:calc(22px + env(safe-area-inset-bottom));margin:0;text-align:center;font:italic 400 14px/1 var(--editorial-serif,Georgia,serif);color:var(--brand-deep);opacity:.55;pointer-events:none}
@keyframes cover-breathe{0%,100%{opacity:.4}50%{opacity:.95}}
@media (prefers-reduced-motion: reduce){.login .login-tap{animation:none}}

/* source: chat-look-reference */
/* ── 换肤层(2026-07-23 乐乐三色卡,原参考图粉色已按她指示删除) ──
   结构沿用参考图复刻层;所有色值集中在 --ref-* 变量。
   基准 = 花镜 mirror(色卡①绿系,MAIN COLOR);热可可 cocoa / 夜樱 sakura 在文件尾 theme-skins 整组覆盖。 */
:root{
  --ref-bg-1:#F7F0DF; --ref-bg-2:#EDE4CC; --ref-bg-3:#F2E8D5;   /* vanilla creamer 底 */
  --ref-ink:#4E4827;            /* 气泡正文(hunter green 加深) */
  --ref-plum:#635D35;           /* 名字/图标 = hunter green #635d35 */
  --ref-mauve:#A6985C;          /* 副行/时间戳/次要文字 = seaweed #a6985c */
  --ref-bubble-ai:#FDFBF4; --ref-bubble-human:#D1B99F;          /* human = nude #d1b99f 本尊(乐乐 07-23:色卡五色都要用上) */
  --ref-chip:#FFFFFF;           /* 白色小方钮/输入框 */
  --ref-accent:#96884A;         /* 心形发送键(seaweed 加深) */
  --ref-shadow:99,93,53;        /* 投影基色 rgb(hunter) */
  /* 换肤扩展变量:玻璃/纸面/占位符集中于此,主题块整组覆盖 */
  --ref-accent-rgb:150,136,74;  /* accent 的 rgb,给半透明描边 */
  --ref-paper:#FBF6EA; --ref-paper-2:#F2E8D5;
  --ref-sheet:#F9F3E2;          /* 便签小票纸面 */
  --ref-placeholder:#B3A87E;
  --ref-glass:rgba(255,255,252,.66); --ref-glass-strong:rgba(255,253,246,.92); --ref-glass-line:rgba(255,255,255,.88);
  --ref-glow-1:rgba(166,152,92,.14); --ref-glow-2:rgba(255,255,255,.32); --ref-glow-3:rgba(188,200,204,.20); /* glow-3 = soft baby blue #bcc8cc */
  --ref-on-plum:#FFFFFF;            /* plum 底上的文字(登录键等) */
}
.wall{height:auto!important;background-color:var(--ref-bg-3)!important;background-image:linear-gradient(168deg,var(--ref-bg-1),var(--ref-bg-2) 58%,var(--ref-bg-3))!important}
.wall::after{background:none!important}
.topbar{min-height:96px!important;border-bottom:0!important;background:none!important;box-shadow:none!important}
.backbtn,.topbtn{width:44px!important;height:44px!important;border:0!important;border-radius:15px!important;background:var(--ref-chip)!important;color:var(--ref-plum)!important;box-shadow:0 6px 16px rgba(var(--ref-shadow),.13)!important}
.peerpill .name{font:italic 500 26px/1.05 var(--editorial-serif)!important;color:var(--ref-plum)!important;letter-spacing:.01em!important}
.status-line{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:5px}
.peerpill .status{margin-top:0!important;font:400 11.5px/1 var(--editorial-sans)!important;color:var(--ref-mauve)!important;letter-spacing:.03em!important}
.status-line .tog{display:inline-flex;align-items:center;gap:4px}
.status-line .tog-t{font:400 10px/1 var(--editorial-sans);color:var(--ref-mauve);letter-spacing:.05em;opacity:.8}
#mindQuietToggle{position:relative;width:28px;height:16px;flex:0 0 auto;align-self:center;padding:0;border:0;border-radius:999px;background:var(--ref-chip);box-shadow:0 3px 9px rgba(var(--ref-shadow),.16)}
#mindQuietToggle i{position:absolute;top:3px;left:3px;width:10px;height:10px;border-radius:50%;background:var(--ref-mauve);transition:left .18s ease,background .18s ease}
#mindQuietToggle[aria-pressed="true"] i{left:15px;background:var(--ref-plum)}
/* 07-27 乐乐点名:留任的胶囊要圆头——方块钮小灶撤销,整段开关也用圆钮 */
.day{color:var(--ref-mauve)!important}
.message-meta-dot{display:none!important}
.message-meta{gap:0!important;margin:10px 3px 7px!important;font:400 10.5px/1 var(--editorial-sans)!important;color:var(--ref-mauve)!important;opacity:.9!important;letter-spacing:.03em!important}
.row.human .message-meta{align-self:flex-end!important;margin:5px 4px 0!important}
.bubble{border:0!important;border-radius:20px!important;padding:11px 14px!important;box-shadow:0 6px 18px rgba(var(--ref-shadow),.07)!important}
.row.ai .bubble{background:var(--ref-bubble-ai)!important}
.row.human .bubble{background:var(--ref-bubble-human)!important}
.bubble .txt{color:var(--ref-ink)!important}/* 字体保持原宋体不动(乐乐点名) */
.bubble-stack{display:flex;flex-direction:column;max-width:78%;min-width:0;align-items:flex-start}
.row.human .bubble-stack{align-items:flex-end}
/* 08-01 乐乐点名:拆出来的小泡按各自字数包宽,不再整组拉平 — 全主题生效 */
.bubble-stack .bubble{max-width:100%!important;width:fit-content}
.message-usage{width:max-content;min-width:0;max-width:100%!important;margin:4px 0 0!important;box-sizing:border-box}
.row.ai .message-usage,.row.human .message-usage{align-self:center!important;text-align:center!important}
.usage-line{font:400 8.5px/1.4 var(--editorial-sans)!important;color:var(--ref-mauve)!important;opacity:.85!important;letter-spacing:.01em!important;white-space:nowrap!important;overflow:hidden;text-overflow:ellipsis}
.row.ai::before,.row.human::after{box-shadow:0 4px 12px rgba(var(--ref-shadow),.18)!important}
.think-caption{font:italic 400 12.5px/1 var(--editorial-serif)!important;color:var(--ref-mauve)!important;letter-spacing:.04em!important}
.think-caption-star,.new-divider-date i{color:var(--ref-accent)!important}
.act-toggle,.act-glyph,.act-label,.act-state,.new-divider,.reroll-action{color:var(--ref-mauve)!important}
/* ⚠ 收纳行里的重 Roll 曾被降成 10px 无边框灰字,深色主题下近乎隐形(乐乐 07-24"按钮没有了")→ 恢复成看得见的小药丸 */
/* 瘦身版重 Roll:裸符号,无底无影,和「中转站出了点状况」一行居中对齐(乐乐 07-27 二稿) */
.row.act .reroll-action,.reroll-action{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;min-height:0!important;margin:0 0 0 2px!important;padding:0!important;border:0!important;border-radius:50%!important;background:transparent!important;color:var(--ref-mauve,var(--muted))!important;box-shadow:none!important;text-decoration:none!important;vertical-align:middle}
.reroll-action svg{width:11.5px;height:11.5px;display:block}
/* ⚠ 收纳行同轴化:行内基线各论各的没法真居中,改 flex 让 ↻ 和文字同心(乐乐 07-27 三稿「就差这里」) */
.row.act .act-block{display:flex;flex-wrap:wrap;align-items:center;column-gap:2px}
.row.act .act-block .act-detail{flex:1 1 100%}
.row.act .reroll-action{margin:0!important}
/* 气泡尾巴下的小操作排:淡淡一排线稿图标,左缘对齐 token 行(margin 同 .message-usage 的 5px) */
.msg-actions{display:flex;gap:14px;margin:4px 5px 0;opacity:.5;transition:opacity .2s ease}
.row.human .msg-actions{flex-direction:row-reverse}
.msg-actions:focus-within,.msg-actions:hover{opacity:.85}
.msg-act{display:grid;place-items:center;width:22px;height:22px;padding:0;border:0;background:transparent;color:var(--ref-mauve,var(--muted));cursor:pointer}
.msg-act svg{width:13px;height:13px;display:block}
.msg-act:active{transform:scale(.88)}
.msg-act.arm{color:#c96f6f;opacity:1;animation:armpulse 1.3s ease infinite}
.msg-act:disabled{opacity:.45}
@keyframes armpulse{50%{transform:scale(1.12)}}
.msg-act.spin svg,.reroll-action.spin svg{animation:msgspin 1s linear infinite}
@keyframes msgspin{to{transform:rotate(360deg)}}
/* Sable reply editor: the pencil lives in the existing quiet action row; editing
   opens one restrained sheet shared by flower-chat and ink/noir themes. */
.message-editor[hidden]{display:none!important}
.message-editor{position:fixed;inset:0;z-index:10080;display:flex;align-items:flex-end;justify-content:center}
.message-editor-scrim{position:absolute;inset:0;width:100%;height:100%;padding:0;border:0;background:rgba(var(--ref-shadow,48,39,48),.28);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px)}
.message-editor-sheet{position:relative;width:min(100%,620px);padding:10px 18px calc(18px + env(safe-area-inset-bottom));border:1px solid rgba(var(--ref-shadow,48,39,48),.12);border-radius:24px 24px 0 0;background:var(--ref-sheet,var(--panel));color:var(--ref-ink,var(--ink));box-shadow:0 -18px 54px rgba(var(--ref-shadow,48,39,48),.18)}
.message-editor-handle{display:block;width:34px;height:3px;margin:0 auto 14px;border-radius:99px;background:rgba(var(--ref-shadow,48,39,48),.22)}
.message-editor-head{display:flex;flex-direction:column;gap:4px;margin-bottom:12px}
.message-editor-head strong{font:500 16px/1.3 var(--editorial-serif,var(--chat-type))}
.message-editor-head small{color:var(--ref-mauve,var(--muted));font:400 10px/1.4 var(--editorial-sans,var(--chat-type))}
.message-editor-input{display:block;width:100%;min-height:180px;max-height:min(52vh,440px);resize:vertical;box-sizing:border-box;padding:13px 14px;border:1px solid rgba(var(--ref-shadow,48,39,48),.16);border-radius:15px;outline:none;background:var(--ref-chip,rgba(255,255,255,.5));color:inherit;font:400 15px/1.65 var(--font-cn,var(--chat-type));box-shadow:inset 0 1px 0 rgba(255,255,255,.34)}
.message-editor-input:focus{border-color:rgba(var(--ref-accent-rgb,137,95,112),.48);box-shadow:0 0 0 3px rgba(var(--ref-accent-rgb,137,95,112),.08)}
.message-editor-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:12px}
.message-editor-actions button{min-height:38px;padding:0 16px;border:1px solid rgba(var(--ref-shadow,48,39,48),.14);border-radius:13px;background:transparent;color:inherit;font:500 12px/1 var(--editorial-sans,var(--chat-type))}
.message-editor-save{background:var(--ref-bubble-human,var(--brand-soft))!important;color:var(--ref-plum,var(--brand-deep))!important}
.message-editor-actions button:disabled{opacity:.5}
@media(max-width:560px){.message-editor-sheet{padding-left:14px;padding-right:14px}.message-editor-input{min-height:150px;max-height:48vh}}
/* 便签小票面板:同一张粉色纸;字体弃等宽,统一走宋体/衬线系(乐乐点名) */
.checklist-scroll{font-family:var(--font-cn)!important}
.checklist-brand,.checklist-section{font-family:var(--editorial-sans)!important;font-weight:500!important}
.checklist-date,.checklist-meta{letter-spacing:.08em!important}
.checklist-meta{font-size:12px!important}
.checklist-new input,.checklist-alarm input,.checklist-new button,.checklist-alarm button{font-family:var(--font-cn)!important;font-size:13px!important}
.checklist-progress{font-family:var(--editorial-sans)!important}
.checklist-scrim{background:rgba(var(--ref-shadow),.20)!important}
.checklist-sheet{background:var(--ref-sheet)!important;color:var(--ref-ink)!important;box-shadow:0 -18px 58px rgba(var(--ref-shadow),.20)!important}
.checklist-handle{background:rgba(var(--ref-shadow),.24)!important}
.checklist-brand,.checklist-date,.checklist-section,.checklist-meta.faded,.checklist-progress small,.checklist-foot{color:var(--ref-mauve)!important}
.checklist-head h2{color:var(--ref-plum)!important}
.checklist-rule{color:rgba(var(--ref-shadow),.24)!important}
.checklist-item{border-bottom-color:rgba(var(--ref-shadow),.15)!important}
/* 条目区照参考页排版:宽括号、大间距、松行距;字体走自家宋体(乐乐:先一致再换字体) */
.checklist-item{align-items:baseline!important;gap:13px!important;padding:12px 0!important}
.checklist-item .checklist-body{color:var(--ref-ink)!important;font:400 13.5px/1.7 var(--font-cn)!important;letter-spacing:.02em!important}
.checklist-check{font:500 13.5px/1.7 var(--font-cn)!important;letter-spacing:.14em!important;color:var(--ref-ink)!important}
.checklist-trigger{font:500 12px/1.5 var(--font-cn)!important;padding:1px 7px!important;border-radius:6px!important;letter-spacing:.05em!important;background:var(--ref-chip)!important}
.checklist-by{font:italic 400 12px/1.7 var(--editorial-serif)!important}
.checklist-delete{opacity:.45!important;font-size:15px!important}
.checklist-item.done .checklist-body{color:rgba(var(--ref-shadow),.35)!important}
.checklist-trigger{border-color:rgba(var(--ref-accent-rgb),.34)!important;color:var(--ref-accent)!important}
.checklist-bang{color:var(--ref-accent)!important}
.checklist-by{color:var(--ref-plum)!important}
.checklist-delete{color:rgba(var(--ref-shadow),.35)!important}
.checklist-add-row{display:block;width:100%;padding:11px 0;border:0;background:transparent;text-align:left;font:400 13.5px/1.7 var(--font-cn);color:var(--ref-mauve);letter-spacing:.06em;cursor:pointer}
.checklist-add-row.open{color:var(--ref-plum)}
#checklistAddZone{margin-bottom:4px}
.checklist-new input,.checklist-alarm input{border-color:rgba(var(--ref-shadow),.22)!important;background:var(--ref-chip)!important;color:var(--ref-ink)!important}
.checklist-new button,.checklist-alarm button{border-color:rgba(var(--ref-accent-rgb),.32)!important;background:var(--ref-bubble-human)!important;color:var(--ref-plum)!important}
.checklist-stamp{border-color:var(--ref-accent)!important;color:var(--ref-accent)!important}
.composer{border:0!important;background:transparent!important;box-shadow:none!important;padding:6px 4px!important;border-radius:0!important}
.composer .field{min-height:54px!important;border:0!important;border-radius:27px!important;background:var(--ref-chip)!important;box-shadow:0 10px 26px rgba(var(--ref-shadow),.13)!important}
.composer textarea{color:var(--ref-ink)!important}
.composer textarea::placeholder{color:var(--ref-placeholder)!important;font:400 13px/1.4 var(--editorial-sans)!important;letter-spacing:.02em!important}
.emojibtn{color:var(--ref-mauve)!important}
.send{width:46px!important;height:46px!important;border-radius:17px!important;background:var(--ref-chip)!important;color:var(--ref-accent)!important;box-shadow:0 8px 20px rgba(var(--ref-shadow),.15)!important}
.composer-add-btn{display:grid!important;place-items:center!important;width:34px!important;height:34px!important;padding:0!important;border:0!important;border-radius:12px!important;background:var(--ref-chip)!important;color:var(--ref-plum)!important;box-shadow:0 5px 14px rgba(var(--ref-shadow),.12)!important}
.composer-add-btn svg{width:16px!important;height:16px!important}
.composer-model-row{padding:2px 6px 1px!important;gap:8px!important}
.composer-model-btn{max-width:62%!important;padding:8px 13px!important;border-radius:999px!important;background:var(--ref-chip)!important;color:var(--ref-mauve)!important;font:500 10.5px/1 var(--editorial-sans)!important;box-shadow:0 5px 14px rgba(var(--ref-shadow),.10)!important}
.newmsg-pill{background:var(--ref-chip)!important;color:var(--ref-plum)!important}
@media(max-width:560px){
  .peerpill .name{font-size:24px!important}
  .bubble{border-radius:21px!important;padding:12px 15px!important}
  .bubble .txt{font-size:14.5px!important;line-height:1.6!important}
  .message-meta{font-size:10px!important}
  .usage-line{font-size:7.5px!important}
}

/* source: drift-symbols-ui */
/* ── 全局漂浮星月:呼吸式上飘,不挡任何操作 ── */
.drift-layer{position:fixed;inset:0;z-index:6000;pointer-events:none;overflow:hidden}
.drift-layer span{position:absolute;bottom:-4vh;display:block;color:var(--warm,#c9a76a);opacity:0;animation:drift-up linear infinite,drift-breathe ease-in-out infinite;will-change:transform,opacity}
@keyframes drift-up{from{transform:translate3d(0,0,0) rotate(0deg)}to{transform:translate3d(var(--sway,0px),-112vh,0) rotate(var(--spin,0deg))}}
@keyframes drift-breathe{0%,100%{opacity:0}14%{opacity:var(--peak,.2)}52%{opacity:calc(var(--peak,.2)*.5)}86%{opacity:var(--peak,.2)}}
@media (prefers-reduced-motion: reduce){.drift-layer{display:none}}

/* source: moments-ui */
/* ── 朋友圈 Moments(参考-朋友圈Moments.jpg)──
   粉色渐变顶栏 + 居中斜体标题;时间线卡片(头像/大写名/斜体相对时间/delete);
   空心心形 liked by;竖线缩进评论链;底部 share a little thing 发布框。
   配色沿用 --ref-* 层,正文走 --font-cn 宋体,标题走 --editorial-serif。 */
.moments-panel{position:fixed;inset:0;z-index:60;display:flex;flex-direction:column;
  background:linear-gradient(178deg,var(--ref-bg-1),var(--ref-bg-3) 34%,var(--ref-paper) 62%);
  opacity:0;transform:translateY(10px);transition:opacity .34s ease,transform .34s ease;
  font-family:var(--font-cn)}
.moments-panel.open{opacity:1;transform:none}
.moments-panel.hidden{display:none}
.mm-page{display:flex;flex-direction:column;height:100%;max-width:520px;margin:0 auto;width:100%}
.mm-top{flex:0 0 auto;display:flex;align-items:center;gap:10px;padding:14px 16px 12px;
  background:linear-gradient(180deg,var(--ref-bg-1),rgba(247,233,240,0))}
.mm-back{width:42px;height:42px;flex:0 0 auto;display:grid;place-items:center;border:0;border-radius:14px;
  background:var(--ref-chip);color:var(--ref-plum);box-shadow:0 6px 16px rgba(var(--ref-shadow),.13)}
.mm-back svg{width:20px;height:20px}
.mm-title{flex:1;margin:0;text-align:center;font:italic 500 27px/1.05 var(--editorial-serif);color:var(--ref-plum);letter-spacing:.01em}
.mm-top-spacer{width:42px;flex:0 0 auto}
/* ── 共用分段切换器 Moments / Journal ── */
.seg-switch{flex:1;display:flex;justify-content:center;gap:2px;margin:0 auto;padding:3px;
  background:var(--ref-chip);border-radius:14px;max-width:230px}
.seg-tab{flex:1;padding:7px 4px;border:0;border-radius:11px;background:transparent;cursor:pointer;
  font:italic 500 16px/1 var(--editorial-serif);letter-spacing:.01em;color:var(--ref-mauve);
  transition:background .22s ease,color .22s ease}
.seg-tab.is-on{background:var(--ref-chip);color:var(--ref-plum);box-shadow:0 3px 10px rgba(var(--ref-shadow),.14)}
.mm-scroll{flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:6px 18px 20px}
.mm-empty{padding:64px 12px;text-align:center;color:var(--ref-mauve);font-size:15px;line-height:1.9}
/* 卡片 */
.mm-card{position:relative;padding:20px 0 18px;border-bottom:1px solid rgba(var(--ref-shadow),.1)}
.mm-card:last-child{border-bottom:0}
.mm-card-head{display:flex;align-items:center;gap:10px;margin-bottom:11px}
.mm-avatar{width:38px;height:38px;flex:0 0 auto;border-radius:12px;object-fit:cover;background:var(--ref-bubble-human);
  display:grid;place-items:center;color:var(--ref-plum);box-shadow:0 3px 10px rgba(var(--ref-shadow),.12)}
.mm-avatar svg{width:22px;height:22px}
.mm-who{display:flex;align-items:baseline;gap:9px;flex:1;min-width:0}
.mm-name{font:600 13px/1 var(--editorial-sans);letter-spacing:.13em;text-transform:uppercase;color:var(--ref-plum)}
.mm-time{font:italic 400 13px/1 var(--editorial-serif);color:var(--ref-mauve);letter-spacing:.02em}
.mm-del{flex:0 0 auto;border:0;background:none;color:var(--ref-mauve);font:400 12.5px/1 var(--editorial-sans);
  letter-spacing:.05em;opacity:.62;padding:4px 2px}
.mm-del:active{opacity:1}
.mm-body{color:var(--ref-ink);font-size:16px;line-height:1.72;white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word}
.mm-imgs{display:grid;gap:5px;margin-top:11px;grid-template-columns:repeat(2,1fr);max-width:300px}
.mm-imgs.n1{grid-template-columns:1fr;max-width:210px}
.mm-imgs.n1 img{aspect-ratio:auto;max-height:280px}
.mm-imgs.n3 :first-child,.mm-imgs.n4 :first-child{grid-column:auto}
.mm-imgs img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:12px;background:var(--ref-bubble-human);display:block}
/* liked + 评论链 */
.mm-liked{display:flex;align-items:center;gap:8px;margin-top:14px;padding-top:12px;
  border-top:1px dashed rgba(var(--ref-shadow),.16);color:var(--ref-mauve);font-size:13.5px}
.mm-liked svg{width:17px;height:17px;flex:0 0 auto}
.mm-heart{border:0;background:none;padding:0;color:var(--ref-mauve);display:grid;place-items:center;cursor:pointer}
.mm-heart.on{color:var(--ref-accent)}
.mm-heart.on svg{fill:currentColor}
.mm-comments{margin-top:12px;padding-left:14px;border-left:2px solid rgba(var(--ref-shadow),.14);display:flex;flex-direction:column;gap:11px}
.mm-cm{position:relative;padding-right:42px}
.mm-cm-name{font:italic 500 14px/1.2 var(--editorial-serif);color:var(--ref-plum)}
.mm-cm-text{color:var(--ref-ink);font-size:14.5px;line-height:1.6;margin-top:2px}
.mm-cm-time{color:var(--ref-mauve);font:400 11px/1 var(--editorial-sans);letter-spacing:.04em;margin-top:3px}
.mm-cm-del{position:absolute;right:0;top:0;border:0;background:none;color:var(--ref-mauve);padding:2px 0;
  font:400 10px/1 var(--editorial-sans);letter-spacing:.04em;cursor:pointer}
.mm-cm-btn{align-self:flex-start;margin-top:2px;border:0;background:none;color:var(--ref-mauve);
  font:400 12.5px/1 var(--editorial-sans);letter-spacing:.06em;padding:3px 0}
/* 发布框 */
.mm-composer{flex:0 0 auto;padding:10px 16px calc(12px + env(safe-area-inset-bottom));background:linear-gradient(0deg,var(--ref-paper),transparent)}
.mm-attrow{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:9px}
.mm-att{position:relative;width:56px;height:56px;border-radius:11px;overflow:hidden;background:var(--ref-bubble-human)}
.mm-att img{width:100%;height:100%;object-fit:cover;display:block}
.mm-att button{position:absolute;top:2px;right:2px;width:18px;height:18px;border:0;border-radius:50%;
  background:rgba(0,0,0,.5);color:#fff;font-size:12px;line-height:1;display:grid;place-items:center}
.mm-inputline{display:flex;align-items:center;gap:9px;padding:7px 8px 7px 12px;border-radius:22px;
  background:var(--ref-chip);box-shadow:0 6px 18px rgba(var(--ref-shadow),.12)}
.mm-cam{width:34px;height:34px;flex:0 0 auto;display:grid;place-items:center;border:0;background:none;color:var(--ref-mauve)}
.mm-cam svg{width:21px;height:21px}
.mm-field{flex:1;min-width:0;border:0;background:none;outline:none;font:400 15px/1.4 var(--font-cn);color:var(--ref-ink)}
.mm-field::placeholder{color:var(--ref-mauve);opacity:.85}
.mm-send{width:38px;height:38px;flex:0 0 auto;display:grid;place-items:center;border:0;border-radius:50%;
  background:var(--ref-accent);color:#fff;box-shadow:0 5px 14px rgba(var(--ref-shadow),.28)}
.mm-send svg{width:19px;height:19px}
.mm-send:disabled{opacity:.4}

/* source: ak-moments-skin */
/* ── AK-MOMENTS 朋友圈墨白换皮(2026-08-05)· 仅 data-sms(墨白/胭脂)显形,其余主题零动 ──
   词汇同 ak-journal/health:白纸平底、墨线双轨、caps 眉题、Satisfy 花体、lining 数字、方角细墨边 */
:root[data-sms] .moments-panel{
  --akbg:#f7f4ef; --aksurface:rgba(255,255,255,.66);
  --akink:#222220; --akink2:#66645f; --akmute:#98958f;
  --akline:rgba(34,34,32,.16); --akline2:rgba(34,34,32,.08);
  --ak-accent:#2774b8; --akrose:#d45f83;
  --akserif:"Cormorant Garamond",Georgia,"Noto Serif SC","Songti SC",serif;
  --akcjk:"Noto Serif SC","Songti SC","SimSun",serif;
  --aknum:"Source Serif 4","Noto Serif SC",Georgia,serif;
  --akscript:"Satisfy","Segoe Script","Cormorant Garamond",cursive;
  background:var(--akbg);
  font-family:var(--akcjk)}
:root[data-sms][data-theme="rouge"] .moments-panel{--ak-accent:#c25a78}
/* 收漂浮星月:drift-layer 由脚本就地 append,DOM 里排在三个 panel 之前,
   旧的 "#xxPanel ~ .drift-layer" 兄弟选择器全部落空(只有 menuPanel 在它前面才灵)。
   这里用 :has 一并把 moments/journal/health 三页修掉 */
:root[data-sms] body:has(#momentsPanel:not(.hidden)) .drift-layer,
:root[data-sms] body:has(#journalPanel:not(.hidden)) .drift-layer,
:root[data-sms] body:has(#healthPanel:not(.hidden)) .drift-layer{display:none}

/* 顶栏:去渐变底,细框方角按钮;双联切换摘掉(journal 已单飞成弹窗),居中补 caps 标题 */
:root[data-sms] .moments-panel .mm-top{position:relative;background:none;padding:14px 14px 10px}
:root[data-sms] .moments-panel .mm-top::after{
  content:"MOMENTS \2014 \670B\53CB\5708";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  font:600 11px/1 var(--akserif);letter-spacing:.22em;color:var(--akink);white-space:nowrap}
:root[data-sms] .moments-panel .seg-switch{display:none}
:root[data-sms] .moments-panel .mm-back{
  background:transparent;border:1px solid var(--akline);border-radius:0;
  color:var(--akink);box-shadow:none;width:36px;height:36px;margin-right:auto}
:root[data-sms] .moments-panel .mm-back svg{width:18px;height:18px}

/* 标题区:caps 眉题 + 花体 Moments,压双轨墨线 */
:root[data-sms] .moments-panel .mm-scroll{padding:0 18px 20px}
:root[data-sms] .moments-panel .mm-scroll::before{
  content:"SHARED DAYS \2014 \65E5\5E38";display:block;margin:12px 0 0;
  font:600 10.5px/1 var(--akserif);letter-spacing:.22em;color:var(--akink2)}
:root[data-sms] .moments-panel .mm-feed::before{
  content:"Moments";display:block;margin:6px 0 4px;padding-bottom:10px;
  font:400 34px/1.1 var(--akscript);color:var(--ak-accent);
  border-top:1px solid var(--akline2);border-bottom:1.5px solid var(--akink)}
:root[data-sms] .moments-panel .mm-empty{
  font-family:var(--akserif);font-style:italic;color:var(--akmute);letter-spacing:.03em}

/* 卡片:细墨分隔;头像方角细墨边;名字 caps 墨字;时间斜体衬线灰 */
:root[data-sms] .moments-panel .mm-card{border-bottom:1px solid var(--akline2)}
:root[data-sms] .moments-panel .mm-avatar{
  border-radius:0;border:1px solid var(--akline);background:var(--aksurface);
  color:var(--akink);box-shadow:none}
:root[data-sms] .moments-panel .mm-name{
  font:600 11px/1 var(--akserif);letter-spacing:.18em;color:var(--akink)}
:root[data-sms] .moments-panel .mm-time{
  font:italic 400 12.5px/1 var(--akserif);color:var(--akmute);
  font-variant-numeric:lining-nums;font-feature-settings:"lnum" 1}
:root[data-sms] .moments-panel .mm-del{
  font:600 10px/1 var(--akserif);letter-spacing:.14em;text-transform:uppercase;color:var(--akmute)}
:root[data-sms] .moments-panel .mm-body{font-family:var(--akcjk);color:var(--akink);font-size:15.5px}
:root[data-sms] .moments-panel .mm-imgs img{border-radius:2px;background:var(--aksurface)}
:root[data-sms] .moments-panel .mm-att{border-radius:2px}

/* liked 行:实线细墨;心形点亮走玫瑰 */
:root[data-sms] .moments-panel .mm-liked{
  border-top:1px solid var(--akline2);color:var(--akink2);
  font-family:var(--akserif);font-style:italic;font-size:13px}
:root[data-sms] .moments-panel .mm-heart{color:var(--akmute)}
:root[data-sms] .moments-panel .mm-heart.on{color:var(--akrose)}

/* 评论链:墨色竖轨;名字扶正走衬线中文,时间 caps lining */
:root[data-sms] .moments-panel .mm-comments{border-left:1.5px solid var(--akink)}
:root[data-sms] .moments-panel .mm-cm-name{
  font:500 13px/1.2 var(--akcjk);font-style:normal;color:var(--akink)}
:root[data-sms] .moments-panel .mm-cm-text{font-family:var(--akcjk);color:var(--akink2);font-size:14px}
:root[data-sms] .moments-panel .mm-cm-time{
  font:500 10px/1 var(--aknum);letter-spacing:.08em;color:var(--akmute);
  font-variant-numeric:lining-nums;font-feature-settings:"lnum" 1}
:root[data-sms] .moments-panel .mm-cm-btn{
  font:600 10px/1 var(--akserif);letter-spacing:.14em;text-transform:uppercase;color:var(--akink2)}

/* 发布框:方角细墨输入条,实心墨发送钮 */
:root[data-sms] .moments-panel .mm-composer{background:linear-gradient(0deg,var(--akbg) 62%,transparent)}
:root[data-sms] .moments-panel .mm-inputline{
  border-radius:0;border:1px solid var(--akline);background:var(--aksurface);box-shadow:none;
  padding:6px 6px 6px 12px}
:root[data-sms] .moments-panel .mm-cam{color:var(--akink2)}
:root[data-sms] .moments-panel .mm-field{
  font:400 14.5px/1.4 var(--akcjk);color:var(--akink)}
:root[data-sms] .moments-panel .mm-field::placeholder{
  color:var(--akmute);font-family:var(--akserif);font-style:italic}
:root[data-sms] .moments-panel .mm-send{
  border-radius:0;background:var(--akink);color:var(--akbg);box-shadow:none;width:34px;height:34px}
:root[data-sms] .moments-panel .mm-send svg{width:17px;height:17px}

/* source: journal-ui */
/* ── 日程表 Journal(参考-日程表Journal.jpg,风格已改)──
   保留参考图的灵魂:大衬线序数日期标题、左侧小时刻度时间轴、按时长撑高的事件块。
   但配色/纸张/刻度改到 --ref-* 粉调层,和聊天页/朋友圈同一家族。
   马卡龙事件色保留但柔化,压进粉白纸底。 */
.journal-panel{position:fixed;inset:0;z-index:60;display:flex;flex-direction:column;
  background:linear-gradient(180deg,var(--ref-bg-1),var(--ref-paper) 30%,var(--ref-paper-2));
  opacity:0;transform:translateY(10px);transition:opacity .34s ease,transform .34s ease;
  font-family:var(--font-cn)}
.journal-panel.open{opacity:1;transform:none}
.journal-panel.hidden{display:none}
.jn-page{display:flex;flex-direction:column;height:100%;max-width:560px;margin:0 auto;width:100%}
.jn-top{flex:0 0 auto;display:flex;align-items:center;gap:8px;padding:14px 14px 12px}
.jn-back,.jn-nav,.jn-add{display:grid;place-items:center;border:0;border-radius:13px;background:var(--ref-chip);
  color:var(--ref-plum);box-shadow:0 5px 14px rgba(var(--ref-shadow),.12)}
.jn-back{width:42px;height:42px}.jn-back svg{width:20px;height:20px}
.jn-nav{width:36px;height:36px}.jn-nav svg{width:17px;height:17px}
.jn-add{width:42px;height:42px;background:var(--ref-accent);color:#fff;box-shadow:0 6px 15px rgba(var(--ref-shadow),.26)}
.jn-add svg{width:20px;height:20px}
.jn-daynav{flex:0 0 auto;display:flex;align-items:center;justify-content:center;gap:14px;padding:2px 14px 10px}
.jn-dow{min-width:150px;text-align:center;font:600 12.5px/1 var(--editorial-sans);letter-spacing:.22em;text-transform:uppercase;color:var(--ref-mauve)}
.jn-scroll{flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:2px 20px 40px}
.jn-headline{margin:6px 0 20px;line-height:1;display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}
.jn-date{font:italic 500 40px/1 var(--editorial-serif);color:var(--ref-ink);letter-spacing:.005em}
.jn-word{font:italic 400 34px/1 var(--editorial-serif);color:var(--ref-mauve)}
/* 时间轴 */
.jn-timeline{position:relative}
.jn-hour{position:relative;height:56px;border-top:1px solid rgba(var(--ref-shadow),.1)}
.jn-hour:first-child{border-top:0}
.jn-hour-lb{position:absolute;left:0;top:-8px;width:52px;font:600 11px/1 var(--editorial-sans);
  letter-spacing:.12em;color:var(--ref-mauve);opacity:.72}
.jn-events{position:absolute;left:60px;right:0;top:0;bottom:0;pointer-events:none}
.jn-ev{position:absolute;left:0;right:0;border-radius:12px;padding:9px 13px;overflow:hidden;pointer-events:auto;
  box-shadow:0 3px 10px rgba(var(--ref-shadow),.09);cursor:pointer;
  display:flex;flex-direction:column;gap:2px;min-height:34px}
.jn-ev-title{font-size:14.5px;line-height:1.35;color:var(--ref-ink);font-weight:500;
  display:flex;justify-content:space-between;gap:10px;align-items:baseline}
.jn-ev-range{font:400 12px/1.3 var(--editorial-sans);color:rgba(var(--ref-shadow),.62);white-space:nowrap;letter-spacing:.02em}
.jn-ev.compact{flex-direction:row;align-items:center;justify-content:space-between;padding-top:6px;padding-bottom:6px}
.jn-ev.compact .jn-ev-range{color:rgba(var(--ref-shadow),.6)}
.jn-empty{padding:56px 12px;text-align:center;color:var(--ref-mauve);font-size:15px;line-height:1.9}
/* 事件块色板:从乐乐色卡派生,基准=花镜(奶油绿系);cocoa/sakura 在 theme-skins 覆盖 --jn-c* */
:root{
  /* c1 = nude 本尊,c3 = soft baby blue 本尊(乐乐 07-23:五色都要用上) */
  --jn-c0:#EFE3C6;--jn-c1:#D1B99F;--jn-c2:#D9E0CB;--jn-c3:#BCC8CC;
  --jn-c4:#E6D9BE;--jn-c5:#CFD6B8;--jn-c6:#EAE0C4;--jn-c7:#D8D2B4;
}
.jn-c0{background:var(--jn-c0)}.jn-c1{background:var(--jn-c1)}.jn-c2{background:var(--jn-c2)}
.jn-c3{background:var(--jn-c3)}.jn-c4{background:var(--jn-c4)}.jn-c5{background:var(--jn-c5)}
.jn-c6{background:var(--jn-c6)}.jn-c7{background:var(--jn-c7)}

/* source: ak-journal-skin */
/* ── AK-JOURNAL 日程表墨白换皮(2026-08-05)· 仅 data-sms(墨白/胭脂)显形,其余主题零动 ──
   词汇沿 ak-home:白纸平底、墨线双轨、caps 眉题、Satisfy 花体、lining 数字、白面事件块+左轴分色 */
:root[data-sms] .journal-panel{
  --akbg:#f7f4ef; --aksurface:rgba(255,255,255,.66);
  --akink:#222220; --akink2:#66645f; --akmute:#98958f;
  --akline:rgba(34,34,32,.16); --akline2:rgba(34,34,32,.08);
  --ak-accent:#2774b8; --akrose:#d45f83;
  --akserif:"Cormorant Garamond",Georgia,"Noto Serif SC","Songti SC",serif;
  --akcjk:"Noto Serif SC","Songti SC","SimSun",serif;
  --aknum:"Source Serif 4","Noto Serif SC",Georgia,serif;
  --akscript:"Satisfy","Segoe Script","Cormorant Garamond",cursive;
  background:var(--akbg);
  font-family:var(--akserif)}
:root[data-sms][data-theme="rouge"] .journal-panel{--ak-accent:#c25a78}
/* 白纸开着时收起全局漂浮星月(沿 ak-home 的规矩);别的主题照旧 */
:root[data-sms] #journalPanel:not(.hidden) ~ .drift-layer{display:none}

/* 顶栏:透明细框按钮 + 实心墨 add;切换器压成 caps 双联 */
:root[data-sms] .journal-panel .jn-back,
:root[data-sms] .journal-panel .jn-nav{
  background:transparent;border:1px solid var(--akline);border-radius:0;
  color:var(--akink);box-shadow:none}
:root[data-sms] .journal-panel .jn-add{
  background:var(--akink);color:var(--akbg);border-radius:0;box-shadow:none}
:root[data-sms] .journal-panel .seg-switch{
  background:transparent;border:1px solid var(--akline);border-radius:0;padding:0;gap:0;max-width:220px}
:root[data-sms] .journal-panel .seg-tab{
  border-radius:0;font:600 11px/1 var(--akserif);font-style:normal;
  letter-spacing:.18em;text-transform:uppercase;color:var(--akink2);padding:9px 4px}
:root[data-sms] .journal-panel .seg-tab.is-on{background:var(--akink);color:var(--akbg);box-shadow:none}

/* 日轨:上细线/下粗墨线双轨,星期走 caps lining */
:root[data-sms] .journal-panel .jn-daynav{
  margin:0 14px;padding:8px 0;
  border-top:1px solid var(--akline2);border-bottom:1.5px solid var(--akink)}
:root[data-sms] .journal-panel .jn-dow{
  font:600 11px/1 var(--akserif);letter-spacing:.24em;color:var(--akink);
  font-variant-numeric:lining-nums;font-feature-settings:"lnum" 1}
:root[data-sms] .journal-panel .jn-nav{width:30px;height:30px}

/* 眉题压在标题上方;日期换 lining 衬线,Journal 换花体点强调色 */
:root[data-sms] .journal-panel .jn-scroll::before{
  content:"DAILY SCHEDULE — 日程";display:block;margin:16px 0 0;
  font:600 10.5px/1 var(--akserif);letter-spacing:.22em;color:var(--akink2)}
:root[data-sms] .journal-panel .jn-headline{margin:8px 0 18px}
:root[data-sms] .journal-panel .jn-date{
  font:500 38px/1 var(--aknum);font-style:normal;color:var(--akink);
  font-variant-numeric:lining-nums;font-feature-settings:"lnum" 1}
:root[data-sms] .journal-panel .jn-word{
  font:400 34px/1.1 var(--akscript);font-style:normal;color:var(--ak-accent)}
:root[data-sms] .journal-panel .jn-headline::after{
  content:"";width:7px;height:7px;background:var(--ak-accent);align-self:center;margin-left:2px}

/* 时间轴:细坐标线 + caps 刻度 */
:root[data-sms] .journal-panel .jn-hour{border-top:1px solid var(--akline2)}
:root[data-sms] .journal-panel .jn-hour-lb{
  font:600 10px/1 var(--akserif);letter-spacing:.14em;color:var(--akmute);opacity:1;
  font-variant-numeric:lining-nums;font-feature-settings:"lnum" 1}

/* 事件块:白面方角 + 细墨边 + 左轴分色(马卡龙色板压进 ak 灰阶) */
:root[data-sms] .journal-panel .jn-ev{
  border-radius:2px;border:1px solid var(--akline);border-left-width:3px;box-shadow:none}
:root[data-sms] .journal-panel .jn-ev-title{font-family:var(--akcjk);font-weight:500;color:var(--akink);font-size:14px}
:root[data-sms] .journal-panel .jn-ev-range{
  font:500 11px/1.3 var(--aknum);letter-spacing:.05em;color:var(--akink2);
  font-variant-numeric:lining-nums;font-feature-settings:"lnum" 1}
:root[data-sms] .journal-panel .jn-c0,:root[data-sms] .journal-panel .jn-c1,
:root[data-sms] .journal-panel .jn-c2,:root[data-sms] .journal-panel .jn-c3,
:root[data-sms] .journal-panel .jn-c4,:root[data-sms] .journal-panel .jn-c5,
:root[data-sms] .journal-panel .jn-c6,:root[data-sms] .journal-panel .jn-c7{background:var(--aksurface)}
:root[data-sms] .journal-panel .jn-c0{border-left-color:var(--ak-accent)}
:root[data-sms] .journal-panel .jn-c1{border-left-color:var(--akrose)}
:root[data-sms] .journal-panel .jn-c2{border-left-color:var(--akink)}
:root[data-sms] .journal-panel .jn-c3{border-left-color:var(--akink2)}
:root[data-sms] .journal-panel .jn-c4{border-left-color:var(--ak-accent)}
:root[data-sms] .journal-panel .jn-c5{border-left-color:var(--akrose)}
:root[data-sms] .journal-panel .jn-c6{border-left-color:var(--akink)}
:root[data-sms] .journal-panel .jn-c7{border-left-color:var(--akink2)}

/* 空态 */
:root[data-sms] .journal-panel .jn-empty{
  font-family:var(--akserif);font-style:italic;color:var(--akmute);letter-spacing:.03em}

/* source: ak-journal-modal */
/* ── AK-JOURNAL 弹窗化(2026-08-05 乐乐追单)· 仅 data-sms:日程表独立成弹窗,不再和朋友圈合体 ── */
/* 面板变遮罩:墨色半透,弹窗居中;z 提到菜单(190)之上,弹窗浮在 Home 上 */
:root[data-sms] .journal-panel{
  z-index:220;
  background:rgba(34,34,32,.5);
  align-items:center;justify-content:center;
  padding:24px 18px calc(24px + env(safe-area-inset-bottom,0px))}
/* 页身变白纸弹窗卡:细墨边方角,限高内滚 */
:root[data-sms] .journal-panel .jn-page{
  height:auto;max-height:min(660px,86vh);width:min(400px,100%);
  background:var(--akbg);border:1px solid var(--akline);border-radius:2px;
  box-shadow:0 24px 60px rgba(34,34,32,.30)}
/* 摘掉双联切换(日程表单独一页);顶栏中间补 caps 标题,back 换 ✕ */
:root[data-sms] .journal-panel .seg-switch{display:none}
:root[data-sms] .journal-panel .jn-top{position:relative;padding:12px 12px 8px}
:root[data-sms] .journal-panel .jn-top::after{
  content:"JOURNAL — 日程";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  font:600 11px/1 var(--akserif);letter-spacing:.22em;color:var(--akink);white-space:nowrap}
:root[data-sms] .journal-panel .jn-back,
:root[data-sms] .journal-panel .jn-add{width:36px;height:36px}
:root[data-sms] .journal-panel .jn-add{margin-left:auto}
:root[data-sms] .journal-panel .jn-back svg{display:none}
:root[data-sms] .journal-panel .jn-back::after{content:"\2715";font:400 15px/1 var(--akserif)}
:root[data-sms] .journal-panel .jn-add svg{width:17px;height:17px}
:root[data-sms] .journal-panel .jn-scroll{padding:2px 16px 22px;scrollbar-width:none}
:root[data-sms] .journal-panel .jn-scroll::-webkit-scrollbar{width:0;height:0}
:root[data-sms] .journal-panel .jn-scroll::before{margin-top:10px}
/* 朋友圈侧同步摘 Journal tab,别留断头路 */
:root[data-sms] .moments-panel .seg-tab[data-seg="journal"]{display:none}

/* source: ak-add-form */
/* ── AK-ADD 记一件事弹窗表单(2026-08-05)· 仅 data-sms;二层小卡浮在 journal 弹窗上 ──
   词汇照抄 ak 家规:白纸方角卡+细墨边、caps 眉题、墨线单轨输入、实心墨主按钮 */
.akaf{display:none}
:root[data-sms] .akaf.show{
  position:absolute;inset:0;z-index:8;display:flex;align-items:center;justify-content:center;
  background:rgba(34,34,32,.35);padding:20px}
:root[data-sms] .akaf-card{
  width:min(330px,100%);background:var(--akbg);border:1px solid var(--akline);border-radius:2px;
  box-shadow:0 18px 48px rgba(34,34,32,.35);padding:15px 16px 14px;
  font-family:var(--akserif);animation:akafIn .22s ease}
@keyframes akafIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
:root[data-sms] .akaf-head{
  display:flex;align-items:center;justify-content:space-between;
  padding-bottom:9px;border-bottom:1.5px solid var(--akink)}
:root[data-sms] .akaf-head b{
  font:600 11px/1 var(--akserif);letter-spacing:.22em;color:var(--akink);white-space:nowrap}
:root[data-sms] .akaf-x{
  width:28px;height:28px;display:grid;place-items:center;border:1px solid var(--akline);
  border-radius:0;background:transparent;color:var(--akink);font:400 13px/1 var(--akserif);cursor:pointer}
:root[data-sms] .akaf-lb{
  display:block;margin:13px 0 0;font:600 10px/1 var(--akserif);
  letter-spacing:.2em;color:var(--akink2)}
:root[data-sms] .akaf input{
  width:100%;margin-top:5px;padding:7px 2px 8px;border:0;border-bottom:1.5px solid var(--akline);
  border-radius:0;background:transparent;color:var(--akink);outline:none;
  font:500 15px/1.3 var(--akcjk);transition:border-color .18s ease}
:root[data-sms] .akaf input:focus{border-bottom-color:var(--ak-accent)}
:root[data-sms] .akaf input[type="time"]{
  font:500 16px/1.2 var(--aknum);letter-spacing:.04em;
  font-variant-numeric:lining-nums;font-feature-settings:"lnum" 1;
  -webkit-appearance:none;appearance:none}
:root[data-sms] .akaf input::placeholder{color:var(--akmute);font-style:italic}
:root[data-sms] .akaf-row{display:flex;gap:16px}
:root[data-sms] .akaf-row > div{flex:1;min-width:0}
:root[data-sms] .akaf-hint{
  margin:10px 0 0;font:italic 400 11px/1.5 var(--akserif);color:var(--akmute);letter-spacing:.03em}
:root[data-sms] .akaf-foot{display:flex;gap:8px;margin-top:14px}
:root[data-sms] .akaf-foot button{
  flex:1;padding:10px 4px;border-radius:0;cursor:pointer;
  font:600 11px/1 var(--akserif);letter-spacing:.18em;text-transform:uppercase;
  transition:opacity .18s ease}
:root[data-sms] .akaf-cancel{background:transparent;border:1px solid var(--akline);color:var(--akink2)}
:root[data-sms] .akaf-ok{background:var(--akink);border:1px solid var(--akink);color:var(--akbg)}
:root[data-sms] .akaf-ok[disabled]{opacity:.45}

/* source: health-ui */
/* ── Health 健康页 ── 结构照 Moments/Journal 面板惯例;所有色值引用 --ref-* 层,换肤免维护。 */
.health-panel{position:fixed;inset:0;z-index:60;display:flex;flex-direction:column;
  background:linear-gradient(178deg,var(--ref-bg-1),var(--ref-bg-3) 34%,var(--ref-paper) 62%);
  opacity:0;transform:translateY(10px);transition:opacity .34s ease,transform .34s ease;
  font-family:var(--font-cn)}
.health-panel.open{opacity:1;transform:none}
.health-panel.hidden{display:none}
.hl-page{display:flex;flex-direction:column;height:100%;max-width:520px;margin:0 auto;width:100%}
.hl-top{flex:0 0 auto;display:flex;align-items:center;gap:10px;padding:14px 16px 6px;
  background:linear-gradient(180deg,var(--ref-bg-1),rgba(247,233,240,0))}
.hl-top-spacer{flex:1}
.hl-back,.hl-refresh{width:42px;height:42px;flex:0 0 auto;display:grid;place-items:center;border:0;border-radius:14px;
  background:var(--ref-chip);color:var(--ref-plum);box-shadow:0 6px 16px rgba(var(--ref-shadow),.13)}
.hl-back svg,.hl-refresh svg{width:20px;height:20px}
.hl-refresh.spin svg{animation:hlspin 1s linear infinite}
@keyframes hlspin{to{transform:rotate(360deg)}}
.hl-scroll{flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:2px 18px calc(22px + env(safe-area-inset-bottom))}
.hl-headline{display:flex;align-items:baseline;justify-content:space-between;padding:6px 2px 14px}
.hl-date{font:600 12px/1.5 var(--editorial-sans);letter-spacing:.13em;text-transform:uppercase;color:var(--ref-mauve)}
.hl-word{font:italic 500 30px/1 var(--editorial-serif);color:var(--ref-plum)}
.hl-banner{margin:0 0 12px;padding:11px 14px;border-radius:14px;background:var(--ref-chip);color:var(--ref-plum);
  font-size:13px;line-height:1.7;box-shadow:0 6px 16px rgba(var(--ref-shadow),.10)}
.hl-card{background:var(--ref-glass);border:1px solid var(--ref-glass-line);border-radius:18px;
  box-shadow:0 10px 26px rgba(var(--ref-shadow),.10);padding:15px 16px 13px;margin-bottom:12px}
.hl-label{display:flex;align-items:baseline;gap:8px;font:600 12px/1 var(--editorial-sans);
  letter-spacing:.16em;color:var(--ref-plum);margin-bottom:10px}
.hl-label small{font:400 11px/1 var(--font-cn);letter-spacing:.02em;color:var(--ref-mauve)}
.hl-score{margin-left:auto;font:italic 500 13px/1 var(--editorial-serif);letter-spacing:.02em;color:var(--ref-accent);font-style:italic}
.hl-big{font:italic 600 38px/1.05 var(--editorial-serif);color:var(--ref-ink)}
.hl-big small{font:italic 500 17px/1 var(--editorial-serif);color:var(--ref-mauve);margin:0 6px 0 2px}
.hl-range{margin-top:6px;font-size:13px;color:var(--ref-mauve)}
.hl-stagebar{display:flex;height:12px;border-radius:7px;overflow:hidden;margin:12px 0 9px;background:rgba(var(--ref-shadow),.08)}
.hl-stagebar i{display:block;height:100%}
.hl-sg-deep{background:var(--ref-plum)}
.hl-sg-rem{background:var(--ref-accent)}
.hl-sg-light{background:var(--ref-bubble-human)}
.hl-leg{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:11.5px;color:var(--ref-mauve)}
.hl-leg i{display:inline-block;width:8px;height:8px;border-radius:3px;margin-right:5px;vertical-align:0}
.hl-naps{display:flex;flex-wrap:wrap;gap:8px;margin-top:11px}
.hl-nap{padding:5px 11px;border-radius:10px;background:var(--ref-chip);color:var(--ref-plum);
  font-size:12.5px;box-shadow:0 4px 10px rgba(var(--ref-shadow),.10)}
.hl-whisper{margin-top:11px;padding-top:10px;border-top:1px dashed rgba(var(--ref-shadow),.16);
  font:italic 400 13.5px/1.75 var(--font-cn);color:var(--ref-mauve)}
.hl-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:12px}
.hl-tile{background:var(--ref-glass);border:1px solid var(--ref-glass-line);border-radius:16px;
  box-shadow:0 8px 20px rgba(var(--ref-shadow),.09);padding:12px 14px 11px}
.hl-tile .hl-label{margin-bottom:7px}
.hl-num{font:italic 600 26px/1.1 var(--editorial-serif);color:var(--ref-ink)}
.hl-sub{margin-top:3px;font-size:11.5px;color:var(--ref-mauve)}
.hl-hrow{display:flex;justify-content:space-between;padding:2px 2px 0}
.hl-hstat{display:flex;flex-direction:column;align-items:center;gap:4px}
.hl-hstat b{font:italic 600 21px/1 var(--editorial-serif);color:var(--ref-ink)}
.hl-hstat span{font-size:11px;color:var(--ref-mauve)}
.hl-stress{margin-top:11px;padding-top:10px;border-top:1px dashed rgba(var(--ref-shadow),.16);
  font-size:12.5px;color:var(--ref-mauve)}
.hl-chartcap{font-size:11.5px;color:var(--ref-mauve);margin:4px 2px 6px}
.hl-chart{display:flex;align-items:flex-end;gap:6px;height:78px;margin:0 2px 10px}
.hl-col{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;min-width:0}
.hl-val{font-size:9.5px;color:var(--ref-mauve);letter-spacing:.02em;white-space:nowrap}
.hl-barbox{width:100%;height:46px;display:flex;align-items:flex-end;justify-content:center}
.hl-bar{width:100%;max-width:26px;border-radius:7px 7px 3px 3px;background:rgba(var(--ref-shadow),.14);min-height:3px}
.hl-col.on .hl-bar{background:var(--ref-accent)}
.hl-dow{font-size:10px;color:var(--ref-mauve)}
.hl-col.on .hl-dow{color:var(--ref-plum);font-weight:600}
.hl-cycle-line{font-size:14.5px;line-height:1.7;color:var(--ref-ink)}
.hl-cycle-actions{display:flex;gap:9px;margin-top:11px}
.hl-btn{border:0;border-radius:12px;padding:9px 15px;font:500 13px/1 var(--font-cn);cursor:pointer;
  background:var(--ref-chip);color:var(--ref-plum);box-shadow:0 4px 12px rgba(var(--ref-shadow),.12)}
.hl-btn.acc{background:var(--ref-accent);color:var(--ref-on-plum)}
.hl-btn:active{transform:translateY(1px)}
.hl-note{margin-top:10px;font-size:11.5px;line-height:1.7;color:var(--ref-mauve)}
.hl-foot{padding:6px 4px 12px;text-align:center;font-size:11px;color:var(--ref-mauve)}
/* 主页第二行(cycle/token 位)点一下就能进健康页 */
.menu-status{cursor:pointer}

/* source: ak-health-skin */
/* ── AK-HEALTH 健康页墨白换皮(2026-08-05)· 仅 data-sms(墨白/胭脂)显形,其余主题零动 ──
   词汇同 ak-journal:白纸平底、墨线双轨、caps 眉题+锚点方块、lining 数字、白面方角卡 */
:root[data-sms] .health-panel{
  --akbg:#f7f4ef; --aksurface:rgba(255,255,255,.66);
  --akink:#222220; --akink2:#66645f; --akmute:#98958f;
  --akline:rgba(34,34,32,.16); --akline2:rgba(34,34,32,.08);
  --ak-accent:#2774b8; --akrose:#d45f83;
  --akserif:"Cormorant Garamond",Georgia,"Noto Serif SC","Songti SC",serif;
  --akcjk:"Noto Serif SC","Songti SC","SimSun",serif;
  --aknum:"Source Serif 4","Noto Serif SC",Georgia,serif;
  --akscript:"Satisfy","Segoe Script","Cormorant Garamond",cursive;
  background:var(--akbg);
  font-family:var(--akcjk)}
:root[data-sms][data-theme="rouge"] .health-panel{--ak-accent:#c25a78}
:root[data-sms] #healthPanel:not(.hidden) ~ .drift-layer{display:none}

/* 顶栏:透明细框按钮,去渐变底 */
:root[data-sms] .health-panel .hl-top{background:none}
:root[data-sms] .health-panel .hl-back,
:root[data-sms] .health-panel .hl-refresh{
  background:transparent;border:1px solid var(--akline);border-radius:0;
  color:var(--akink);box-shadow:none}

/* 标题行:双轨墨线,date 走 caps lining,Health 换花体点强调色 */
:root[data-sms] .health-panel .hl-headline{
  padding:10px 2px 12px;margin-bottom:14px;align-items:center;
  border-top:1px solid var(--akline2);border-bottom:1.5px solid var(--akink)}
:root[data-sms] .health-panel .hl-date{
  font:600 11px/1.5 var(--akserif);letter-spacing:.22em;color:var(--akink2);
  font-variant-numeric:lining-nums;font-feature-settings:"lnum" 1}
:root[data-sms] .health-panel .hl-word{
  font:400 32px/1.1 var(--akscript);font-style:normal;color:var(--ak-accent)}

/* 卡片与瓦片:白面方角 + 细墨边,去玻璃大阴影 */
:root[data-sms] .health-panel .hl-card,
:root[data-sms] .health-panel .hl-tile,
:root[data-sms] .health-panel .hl-banner{
  background:var(--aksurface);border:1px solid var(--akline);border-radius:2px;box-shadow:none}
:root[data-sms] .health-panel .hl-banner{color:var(--akink);font-family:var(--akcjk)}

/* 卡片眉题:caps + 前置锚点方块;中文小注走衬线 */
:root[data-sms] .health-panel .hl-label{
  font:600 11px/1 var(--akserif);letter-spacing:.2em;color:var(--akink);align-items:center}
:root[data-sms] .health-panel .hl-label::before{
  content:"";width:6px;height:6px;background:var(--ak-accent);margin-right:2px;flex:0 0 auto}
:root[data-sms] .health-panel .hl-label small{
  font:500 11px/1 var(--akcjk);color:var(--akmute)}
:root[data-sms] .health-panel .hl-score{
  font:500 12px/1 var(--aknum);font-style:normal;color:var(--ak-accent);
  font-variant-numeric:lining-nums;font-feature-settings:"lnum" 1}

/* 大数与统计:斜体衬线一律扶正成 lining 衬线数字 */
:root[data-sms] .health-panel .hl-big{
  font:500 36px/1.1 var(--aknum);font-style:normal;color:var(--akink);
  font-variant-numeric:lining-nums;font-feature-settings:"lnum" 1}
:root[data-sms] .health-panel .hl-big small{
  font:500 15px/1 var(--akserif);font-style:normal;color:var(--akink2)}
:root[data-sms] .health-panel .hl-num{
  font:500 25px/1.1 var(--aknum);font-style:normal;color:var(--akink);
  font-variant-numeric:lining-nums;font-feature-settings:"lnum" 1}
:root[data-sms] .health-panel .hl-hstat b{
  font:500 20px/1 var(--aknum);font-style:normal;color:var(--akink);
  font-variant-numeric:lining-nums;font-feature-settings:"lnum" 1}
:root[data-sms] .health-panel .hl-range,
:root[data-sms] .health-panel .hl-sub,
:root[data-sms] .health-panel .hl-hstat span{color:var(--akink2)}

/* 睡眠分段条:方角;deep=墨 rem=强调 light=浅灰 */
:root[data-sms] .health-panel .hl-stagebar{border-radius:0;height:10px;background:var(--akline2)}
:root[data-sms] .health-panel .hl-sg-deep{background:var(--akink)}
:root[data-sms] .health-panel .hl-sg-rem{background:var(--ak-accent)}
:root[data-sms] .health-panel .hl-sg-light{background:rgba(34,34,32,.18)}
:root[data-sms] .health-panel .hl-leg{color:var(--akink2)}
:root[data-sms] .health-panel .hl-leg i{border-radius:0}
:root[data-sms] .health-panel .hl-nap{
  background:transparent;border:1px solid var(--akline);border-radius:0;
  color:var(--akink);box-shadow:none}
:root[data-sms] .health-panel .hl-whisper{
  border-top:1px dashed var(--akline);font:500 13px/1.8 var(--akcjk);font-style:normal;color:var(--akink2)}
:root[data-sms] .health-panel .hl-stress{border-top:1px dashed var(--akline);color:var(--akink2)}

/* 七天图:方角柱,灰底/强调高亮;刻度 caps lining */
:root[data-sms] .health-panel .hl-chartcap{
  font:600 10.5px/1 var(--akserif);letter-spacing:.16em;color:var(--akink2)}
:root[data-sms] .health-panel .hl-bar{border-radius:0;background:rgba(34,34,32,.12)}
:root[data-sms] .health-panel .hl-col.on .hl-bar{background:var(--ak-accent)}
:root[data-sms] .health-panel .hl-val{color:var(--akmute);
  font-variant-numeric:lining-nums;font-feature-settings:"lnum" 1}
:root[data-sms] .health-panel .hl-dow{
  font:600 10px/1 var(--akserif);letter-spacing:.1em;color:var(--akmute)}
:root[data-sms] .health-panel .hl-col.on .hl-dow{color:var(--akink)}

/* 生理期卡:主按钮实心墨,次按钮细框透明 */
:root[data-sms] .health-panel .hl-cycle-line{color:var(--akink);font-family:var(--akcjk)}
:root[data-sms] .health-panel .hl-btn{
  background:transparent;border:1px solid var(--akline);border-radius:0;
  color:var(--akink);box-shadow:none;font-family:var(--akcjk)}
:root[data-sms] .health-panel .hl-btn.acc{background:var(--akink);border-color:var(--akink);color:var(--akbg)}
:root[data-sms] .health-panel .hl-note,
:root[data-sms] .health-panel .hl-foot{color:var(--akmute)}

/* source: func-ui */
/* ── Corridor 功能页 ── 结构照 Health 面板惯例;色值引用 --ref-* 层。 */
.func-panel{position:fixed;inset:0;z-index:58;display:flex;flex-direction:column;
  background:linear-gradient(178deg,var(--ref-bg-1),var(--ref-bg-3) 34%,var(--ref-paper) 62%);
  opacity:0;transform:translateY(10px);transition:opacity .34s ease,transform .34s ease;
  font-family:var(--font-cn)}
.func-panel.open{opacity:1;transform:none}
.func-panel.hidden{display:none}
.fp-page{display:flex;flex-direction:column;height:100%;max-width:520px;margin:0 auto;width:100%}
.fp-top{flex:0 0 auto;display:flex;align-items:center;min-height:100px;padding:16px 16px 8px;
  background:linear-gradient(180deg,var(--ref-bg-1),rgba(247,233,240,0))}
.fp-back{align-self:flex-start}
.fp-back{width:42px;height:42px;flex:0 0 auto;display:grid;place-items:center;border:0;border-radius:14px;
  background:var(--ref-chip);color:var(--ref-plum);box-shadow:0 6px 16px rgba(var(--ref-shadow),.13)}
.fp-back svg{width:20px;height:20px}
.fp-scroll{flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:2px 18px calc(22px + env(safe-area-inset-bottom))}
.fp-headline{margin-left:auto;align-self:flex-end;display:flex;flex-direction:column;align-items:flex-end;gap:6px;
  text-align:right;padding:0 2px;pointer-events:none}
.fp-hint{font:400 10px/1 var(--editorial-sans);letter-spacing:.14em;color:var(--ref-muted,var(--muted))}
.fp-word{font:italic 500 34px/1 var(--editorial-serif);color:var(--ref-plum)}
.fp-cap{display:flex;align-items:baseline;gap:8px;margin:14px 2px 8px;
  font:600 11px/1 var(--editorial-sans);letter-spacing:.18em;color:var(--ref-plum)}
.fp-cap small{font:400 9px/1 var(--editorial-sans);letter-spacing:.1em;color:var(--ref-muted,var(--muted))}
.fp-card{display:flex;align-items:center;gap:14px;width:100%;text-align:left;margin:0 0 10px;
  background:var(--ref-glass);border:1px solid var(--ref-glass-line);border-radius:18px;
  padding:15px 16px;color:var(--ink);font:inherit;cursor:pointer;
  box-shadow:0 8px 22px rgba(var(--ref-shadow),.10);transition:transform .12s ease}
.fp-card:active{transform:scale(.985)}
.fp-ic{flex:0 0 auto;display:grid;place-items:center;width:38px;height:38px;border-radius:13px;
  background:var(--ref-chip);color:var(--ref-plum)}
.fp-ic svg{width:20px;height:20px}
.fp-together-ic{font:italic 600 21px/1 Georgia,serif}
.fp-copy{display:flex;flex-direction:column;min-width:0;flex:1}
.fp-name{font:italic 500 19px/1.15 var(--editorial-serif);color:var(--ref-plum)}
.fp-sub{margin-top:3px;font:400 9.5px/1.4 var(--editorial-sans);letter-spacing:.08em;color:var(--ref-muted,var(--muted))}
.fp-chev{color:var(--ref-muted,var(--muted));opacity:.6}
.fp-chev svg{width:15px;height:15px;display:block}
.fp-soon{flex:0 0 auto;font:600 8px/1 var(--editorial-sans);letter-spacing:.16em;color:var(--ref-plum);
  padding:5px 8px;border-radius:999px;background:var(--ref-chip);opacity:.75}
.fp-card.is-soon{cursor:default;opacity:.62}
.fp-card.is-soon:active{transform:none}
/* settings 视图里签名行可点(乐乐的签名=暗门句子),就地编辑 */
.profile-panel.settings-view #profileBio{cursor:pointer}
#profileBio .sig-edit{width:100%;max-width:280px;padding:6px 10px;border:1px solid var(--ref-glass-line);
  border-radius:10px;background:var(--ref-glass);color:inherit;font:inherit;text-align:inherit;outline:none}
.fp-foot{margin:18px 2px 0;text-align:center;font:italic 400 10.5px/1.5 var(--editorial-serif);color:var(--ref-muted,var(--muted));opacity:.8}

/* ── 入口=耳语卡暗门(乐乐 07-25 拍板):Health 收进走廊,菜单格隐藏 ── */
.menu-item[data-menu="health"]{display:none!important}
.menu-whisper{cursor:pointer;position:relative}
.menu-whisper::after{content:"›";position:absolute;right:13px;bottom:7px;
  font:400 13px/1 var(--editorial-serif);color:var(--ref-plum,var(--muted));opacity:.32}
.menu-whisper:active{transform:scale(.99)}

/* ── 菜单留白收紧(两版通用):恢复统一 12px 节奏,大卡贴内容不再撑空 ── */
@media(max-width:560px){
  .menu-panel .menu-head{height:38px!important;min-height:38px!important;margin:0!important}
  .menu-panel .menu-hero{min-height:0!important;height:auto!important;padding:20px 18px 18px!important;margin:0!important}
  .menu-panel .menu-whisper{min-height:0!important;height:auto!important;padding:13px 16px!important;margin:0!important}
  .menu-panel .menu-status{margin:0!important}
  .menu-panel .menu-list{margin:0!important}
  .menu-panel .menu-foot{margin:0!important;padding-top:6px!important}
  .menu-panel .menu-scroll{gap:12px!important}
}

/* source: charon-ui */
/* ── Charon 的房间 ── 布局仿聊天页;气泡/act 用全局类,房间作用域只换 token。 */
.charon-panel{position:fixed;inset:0;z-index:62;display:flex;flex-direction:column;
  background:linear-gradient(178deg,var(--ref-bg-1),var(--ref-bg-3) 34%,var(--ref-paper) 62%);
  opacity:0;transform:translateY(10px);transition:opacity .34s ease,transform .34s ease;
  font-family:var(--font-cn);
  /* 住户 token:头像与 AI 气泡是渡口的船,她那侧(human)照旧吃主题。
     三主题三套船色(CC 07-26 自选):mirror=松岸 / cocoa=夜航(本命色) / sakura=樱夜;灯永远是暖的。 */
  --avatar-default:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 96 96'><defs><radialGradient id='g' cx='38%25' cy='30%25' r='80%25'><stop offset='0' stop-color='%233a4358'/><stop offset='1' stop-color='%23151a28'/></radialGradient></defs><circle cx='48' cy='48' r='48' fill='url(%23g)'/><path d='M63 20a15 15 0 1 0 7.6 27.9A17.5 17.5 0 1 1 63 20z' fill='%23e7d8a6'/><path d='M23 60h44l-8.5 10h-27z' fill='%23cdd3e2'/><path d='M50 60V42l11 18z' fill='%23a9b2c9'/><circle cx='27' cy='56' r='3.2' fill='%23e2c26f'/><g stroke='%235d6a86' stroke-width='2.6' stroke-linecap='round' fill='none'><path d='M18 78h20M42 81h24M28 87h28'/></g></svg>");
  /* 基础值=夜航(兜底);三主题覆盖块在下面 */
  --cr-bubble:linear-gradient(165deg,#3b4360,#2c3347);
  --cr-fg:#eef1f8;
  --cr-lantern:#d9bd7a;--cr-lantern-rgb:217,189,122;
  --cr-ink:#2e3548;
  --cr-orb-1:#4a5470;--cr-orb-2:#202638;
  --cr-shadow:24,29,44;
  --bubble-ai-bg:var(--cr-bubble);
  --bubble-ai-fg:var(--cr-fg);
  --ref-bubble-ai:var(--cr-bubble)} /* 参考皮层的气泡bg走这个token(8646行!important),必须一起换 */
/* ── 三主题住户色(data-theme 在 html 上,作用域盖过基础值) ── */
:root[data-theme="mirror"] .charon-panel{ /* 松岸:墨松绿船身+黄铜灯,青苔渡口 */
  --cr-bubble:linear-gradient(165deg,#46503c,#303827);
  --cr-fg:#f0f2e8;
  --cr-lantern:#c9a86a;--cr-lantern-rgb:201,168,106;
  --cr-ink:#303827;
  --cr-orb-1:#515c47;--cr-orb-2:#252c1e;
  --cr-shadow:38,44,28}
:root[data-theme="cocoa"] .charon-panel{ /* 夜航:墨蓝+旧金,房间出生色,原样保留 */
  --cr-bubble:linear-gradient(165deg,#3b4360,#2c3347);
  --cr-fg:#eef1f8;
  --cr-lantern:#d9bd7a;--cr-lantern-rgb:217,189,122;
  --cr-ink:#2e3548;
  --cr-orb-1:#4a5470;--cr-orb-2:#202638;
  --cr-shadow:24,29,44}
:root[data-theme="sakura"] .charon-panel{ /* 樱夜:夜梅紫船身+樱金灯,落樱夜渡 */
  --cr-bubble:linear-gradient(165deg,#584458,#3e3040);
  --cr-fg:#f5eef2;
  --cr-lantern:#dca98c;--cr-lantern-rgb:220,169,140;
  --cr-ink:#3e3040;
  --cr-orb-1:#645064;--cr-orb-2:#2e2430;
  --cr-shadow:62,48,64}
:root[data-theme="dusk"] .charon-panel{ /* 暮渡:暮云紫船身+霞金灯,晚霞渡口 */
  --cr-bubble:linear-gradient(165deg,#5c3d55,#42293d);
  --cr-fg:#f7eef3;
  --cr-lantern:#e8b088;--cr-lantern-rgb:232,176,136;
  --cr-ink:#42293d;
  --cr-orb-1:#6a4a62;--cr-orb-2:#321f30;
  --cr-shadow:66,49,75}
:root[data-theme="berry"] .charon-panel{ /* 莓航:莓酒红船身+焰橙灯,浆果夜渡 */
  --cr-bubble:linear-gradient(165deg,#54282a,#3a1618);
  --cr-fg:#f5ecea;
  --cr-lantern:#df8f6a;--cr-lantern-rgb:223,143,106;
  --cr-ink:#3a1618;
  --cr-orb-1:#5e3234;--cr-orb-2:#2a0f10;
  --cr-shadow:45,14,14}
:root[data-theme="ink"] .charon-panel{ /* 墨渡:玄岩黑船身+绛炭灯,墨色渡口 */
  --cr-bubble:linear-gradient(165deg,#413b3e,#2c2729);
  --cr-fg:#f0edee;
  --cr-lantern:#d47a5a;--cr-lantern-rgb:212,122,90;
  --cr-ink:#2c2729;
  --cr-orb-1:#4e4548;--cr-orb-2:#221e20;
  --cr-shadow:38,34,36}
:root[data-theme="noir"] .charon-panel{ /* 墨渡:炭墨船身+暖金灯,黑白渡口(灯永远是暖的) */
  --cr-bubble:linear-gradient(165deg,#3D3B38,#262422);
  --cr-fg:#F2F1EE;
  --cr-lantern:#D8BC80;--cr-lantern-rgb:216,188,128;
  --cr-ink:#2B2927;
  --cr-orb-1:#4A4744;--cr-orb-2:#1F1D1B;
  --cr-shadow:32,30,28}
/* 参考皮层把两侧 .txt 都染 --ref-ink;房间里只提亮 AI 侧,她那侧照旧 */
#charonPanel .row.ai .bubble .txt{color:var(--cr-fg)!important}
#charonPanel .row.ai .bubble{box-shadow:0 10px 28px rgba(var(--cr-shadow),.22)!important}
.charon-panel.open{opacity:1;transform:none}
.charon-panel.hidden{display:none}
.cr-page{display:flex;flex-direction:column;height:100%;max-width:520px;margin:0 auto;width:100%}
.cr-top{flex:0 0 auto;display:flex;align-items:center;gap:12px;
  padding:calc(env(safe-area-inset-top) + 14px) 16px 10px;
  background:linear-gradient(180deg,var(--ref-bg-1),rgba(247,233,240,0))}
.cr-back{width:42px;height:42px;flex:0 0 auto;display:grid;place-items:center;border:0;border-radius:14px;
  background:var(--ref-chip);color:var(--ref-plum);box-shadow:0 6px 16px rgba(var(--ref-shadow),.13);cursor:pointer}
.cr-back svg{width:20px;height:20px}
.cr-pill{display:flex;flex-direction:column;gap:4px;min-width:0}
.cr-name{font:italic 500 24px/1 var(--editorial-serif);color:var(--ref-plum)}
.cr-status{font:400 10px/1 var(--editorial-sans);letter-spacing:.08em;color:var(--ref-muted,var(--muted));
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cr-end{margin-left:auto;flex:0 0 auto;border:1px solid var(--ref-glass-line);background:var(--ref-glass);
  color:var(--ref-plum);border-radius:999px;padding:9px 14px;font:500 11px/1 var(--editorial-sans);
  letter-spacing:.08em;box-shadow:0 6px 16px rgba(var(--ref-shadow),.10);cursor:pointer;
  transition:background .18s ease,color .18s ease}
.cr-end.arm{background:var(--cr-ink);color:var(--cr-lantern);border-color:transparent}
.cr-scroll{flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:6px 16px 14px}
.cr-empty{display:flex;flex-direction:column;align-items:center;gap:14px;margin:22vh 0 0;text-align:center;
  color:var(--ref-muted,var(--muted));font:400 12.5px/1.9 var(--font-cn)}
.cr-orb{width:46px;height:46px;border-radius:50%;
  background:radial-gradient(circle at 34% 30%,var(--cr-orb-1),var(--cr-orb-2) 70%);
  box-shadow:0 0 22px rgba(var(--cr-lantern-rgb),.35),inset 0 0 8px rgba(var(--cr-lantern-rgb),.25)}
.cr-note{margin:16px auto 6px;text-align:center;font:400 10px/1.6 var(--editorial-sans);letter-spacing:.1em;
  color:var(--ref-muted,var(--muted))}
.cr-composer{flex:0 0 auto;display:flex;align-items:flex-end;gap:10px;
  padding:10px 14px calc(12px + env(safe-area-inset-bottom))}
.cr-field{flex:1;min-width:0;background:var(--ref-glass);border:1px solid var(--ref-glass-line);
  border-radius:22px;box-shadow:0 8px 22px rgba(var(--ref-shadow),.10);padding:9px 14px}
.cr-field textarea{display:block;width:100%;max-height:120px;border:0;outline:0;background:transparent;resize:none;
  font-family:var(--font-cn);font-size:15px;line-height:1.5;color:var(--ink)}
.cr-send{width:44px;height:44px;flex:0 0 auto;display:grid;place-items:center;border:0;border-radius:50%;
  background:var(--cr-ink);color:var(--cr-lantern);box-shadow:0 8px 20px rgba(var(--cr-shadow),.35);
  cursor:pointer;transition:transform .12s ease,opacity .18s ease}
.cr-send:active{transform:scale(.94)}
.cr-send.busy{opacity:.55;pointer-events:none}
.cr-send svg{width:20px;height:20px}
.cr-caret{display:inline-block;width:2px;height:1em;vertical-align:-2px;margin-left:2px;
  background:var(--cr-lantern);animation:crBlink 1s steps(2) infinite}
@keyframes crBlink{50%{opacity:0}}
/* 房间里头像光圈往夜色靠一点(气泡投影在上面和文字提亮写一起) */
#charonPanel .row.ai::before{box-shadow:0 5px 13px rgba(var(--cr-shadow),.35)!important}
@media (max-width:560px){.cr-name{font-size:21px}.cr-back{width:38px;height:38px}}

/* source: settings-polish */
/* ── Settings/API/聊天记录 统一补丁(乐乐 07-23 夜圈的:字体一致/对齐/符号一致/尺寸一致)──
   规则:标题正文全走 --chat-type 宋体(去 system-ui);标题色从蓝收敛到 --text;
   chevron 统一为同族细箭头;按钮/输入框统一高度。 */
/* Settings 列表行 */
.settings-hub-row span{font:500 15.5px/1.25 var(--chat-type)!important;color:var(--text)!important;letter-spacing:.01em!important}
.settings-hub-row small{font:400 11.5px/1.45 var(--chat-type)!important;color:var(--muted)!important}
.settings-hub-row b{font:300 22px/1 var(--editorial-serif)!important;color:var(--muted)!important}
/* API 弹窗 */
body>#apiForm:not([hidden])::before,#apiForm:not([hidden])::before{color:var(--text)!important;font:600 17px/1.2 var(--chat-type)!important}
body>#apiForm .api-pricing-box summary{list-style:none;display:flex;align-items:center;gap:8px;font:500 13px/1.3 var(--chat-type);color:var(--text);cursor:pointer}
body>#apiForm .api-pricing-box summary::-webkit-details-marker{display:none}
body>#apiForm .api-pricing-box summary::before{content:"";flex:0 0 auto;width:7px;height:7px;border-right:1.5px solid var(--muted);border-bottom:1.5px solid var(--muted);transform:rotate(-45deg);transition:transform .18s ease}
body>#apiForm .api-pricing-box[open] summary::before{transform:rotate(45deg)}
body>#apiForm .api-pricing-box p{font:400 11.5px/1.55 var(--chat-type);color:var(--muted);margin:8px 0}
body>#apiForm .api-price-grid label{font:400 12px/1.4 var(--chat-type);color:var(--muted)}
body>#apiForm .api-model-toggle,body>#apiForm .api-select-chevron{color:var(--muted)!important}
body>#apiForm .api-form-actions .api-mini-btn{min-width:88px!important;min-height:40px!important}
/* 聊天记录卡 */
#historyCard .settings-label,#historyCard .history-section-label{font:500 13px/1.3 var(--chat-type)!important;color:var(--text-soft)!important}
#historyCard .action-name{font:400 14px/1.3 var(--chat-type)!important}
#historyCard .action-value{font:400 11.5px/1.3 var(--chat-type)!important}
#historyCard .kelivo-limit-field,#historyCard .kelivo-dry-run{font:400 12px/1.4 var(--chat-type)!important}
#historyCard #kelivoLimit{height:38px!important;min-height:38px!important;width:86px!important}
#historyCard .history-mini-btn{min-height:38px!important;padding:0 14px!important;font:500 12px/1 var(--chat-type)!important}
#historyCard .summary-api-form .api-input{height:40px!important;min-height:40px!important;font:400 13px/1 var(--chat-type)!important}
#historyCard .summary-api-actions .history-mini-btn{min-width:88px!important;height:38px!important}

/* source: tone-unify */
/* ── 全站色调统一(乐乐 2026-07-23 点名) ──
   主页/入口/Settings/记忆页/API弹窗 并入聊天页同一 --ref-* 换肤层;只换色,不动定稿布局。
   色值全部引用 chat-look-reference 里的 --ref-* 变量,换肤仍只改那一段 + theme-skins。 */
body{background:linear-gradient(168deg,var(--ref-bg-1) 0%,var(--ref-bg-2) 58%,var(--ref-bg-3) 100%)!important;color:var(--ref-ink)}
body::before{background:
radial-gradient(circle at 12% 16%,var(--ref-glow-1),transparent 30%),
radial-gradient(circle at 88% 18%,var(--ref-glow-2),transparent 28%),
radial-gradient(circle at 75% 82%,var(--ref-glow-3),transparent 28%)!important}
.menu-page,.profile-page,.memory-page,.login,#apiForm{
  --brand:var(--ref-accent);--brand-deep:var(--ref-plum);--warm:var(--ref-accent);
  --ink:var(--ref-ink);--muted:var(--ref-mauve);--paper:var(--ref-paper);--paper-2:var(--ref-paper-2);
  --text:var(--ref-ink);--text-soft:var(--ref-plum);--text-faint:var(--ref-mauve);
  --accent:var(--ref-accent);
  --glass:var(--ref-glass);--glass-strong:var(--ref-glass-strong);--glass-line:var(--ref-glass-line);
  --glass-shadow:0 18px 48px rgba(var(--ref-shadow),.12);
}
.menu-page,.profile-page,.memory-page{background:linear-gradient(168deg,var(--ref-bg-1),var(--ref-bg-2) 58%,var(--ref-bg-3))!important}
.login{background:linear-gradient(150deg,var(--ref-bg-1),var(--ref-bg-2) 62%,var(--ref-bg-3))!important}
.menu-foot{color:rgba(var(--ref-shadow),.45)!important}
.login input{border:1px solid rgba(var(--ref-shadow),.20)!important}
.login button{background:var(--ref-plum)!important;color:var(--ref-on-plum)!important}
.profile-avatar{outline-color:rgba(var(--ref-shadow),.20)!important}
.api-modal-backdrop{background:rgba(var(--ref-shadow),.24)!important}

/* source: theme-skins */
/* ── 三色卡主题(2026-07-23 乐乐拍板,原占位粉已删) ──
   花镜 mirror = 基准(chat-look-reference :root 里的绿系);这里只放它的底层 token 微调。
   热可可 cocoa(色卡②冬夜红棕,深色) / 夜樱 sakura(复古粉 v5,乐乐 07-23 深夜终审拍板,正式卡版被否) 整组覆盖 --ref-* + 底层 token。 */
:root[data-theme="mirror"]{
  --bg:#F2E8D5;--header-bg:#F2E8D5;--hairline:rgba(99,93,53,.22);
  --text:#4E4827;--text-soft:#6E6740;--text-faint:#A6985C;
  --think-flourish:rgba(99,93,53,.45);--think-label:#847B4C;--think-body:#6E6740;
  --composer-bg:#F7F0DF;--field-bg:rgba(255,253,246,.92);--field-line:rgba(99,93,53,.16);
  --card-bg:rgba(255,253,246,.42);--card-line:rgba(99,93,53,.12);
  --seg-track:rgba(99,93,53,.11);--seg-thumb:rgba(255,255,255,.72);--row-press:rgba(99,93,53,.09);
  --slider-track:#BCC8CC;--slider-thumb:#635D35;--info-ring:rgba(99,93,53,.34); /* 滑杆轨 = soft baby blue 本尊 */
  --accent:#96884A;--send-bg:#635D35;--accent-fg:#FFFFFF;--tick:#A6985C;--warm:#96884A;
  --calendar-empty:#EFE6CF;--calendar-low:#BCC8CC;--calendar-high:#635D35;--calendar-selected:#A6985C;--calendar-text:#4E4827;
  --surface-shadow:rgba(99,93,53,.14);--overlay-scrim:rgba(78,72,39,.20);--status-dot:#7D9457;
}
:root[data-theme="cocoa"]{
  --ref-bg-1:#241713;--ref-bg-2:#160F0C;--ref-bg-3:#1C1210;      /* black raspberry #160f0c 底 */
  --ref-ink:#D8D2CB;                                             /* soft dove #c0bab3 提亮 */
  --ref-plum:#C0BAB3;--ref-mauve:#887D77;                        /* moon rock #887d77 */
  --ref-bubble-ai:#2A211E;--ref-bubble-human:#52423D;            /* spiced hot chocolate #52423d */
  --ref-chip:#332824;--ref-accent:#A45B60;--ref-shadow:8,5,4;    /* accent = dark sienna #391214 提亮;本尊用在发送键/日历低档/事件块 */
  --ref-accent-rgb:164,91,96;
  --ref-paper:#241B18;--ref-paper-2:#2E2320;--ref-sheet:#271E1B;
  --ref-placeholder:#8A7E77;
  --ref-glass:rgba(41,31,27,.62);--ref-glass-strong:rgba(46,35,31,.92);--ref-glass-line:rgba(255,255,255,.07);
  --ref-glow-1:rgba(164,91,96,.10);--ref-glow-2:rgba(255,255,255,.03);--ref-glow-3:rgba(136,125,119,.08);
  --ref-on-plum:#241713;
  --bg:#160F0C;--header-bg:#160F0C;--hairline:rgba(192,186,179,.16);
  --text:#D8D2CB;--text-soft:#B4ACA4;--text-faint:#887D77;
  --think-flourish:rgba(192,186,179,.35);--think-label:#A99F98;--think-body:#B4ACA4;
  --composer-bg:#241B18;--field-bg:rgba(51,40,36,.92);--field-line:rgba(255,255,255,.08);
  --card-bg:rgba(46,35,31,.50);--card-line:rgba(255,255,255,.06);
  --seg-track:rgba(255,255,255,.08);--seg-thumb:rgba(82,66,61,.90);--seg-thumb-shadow:0 2px 8px rgba(0,0,0,.4);--row-press:rgba(255,255,255,.06);
  --slider-track:rgba(255,255,255,.18);--slider-thumb:#A45B60;--info-ring:rgba(255,255,255,.22);
  --accent:#A45B60;--send-bg:#391214;--accent-fg:#F1EDE8;--tick:#887D77;--warm:#A45B60;
  --calendar-empty:#241B18;--calendar-low:#391214;--calendar-high:#C0BAB3;--calendar-selected:#A45B60;--calendar-text:#D8D2CB;
  --surface-shadow:rgba(0,0,0,.50);--overlay-scrim:rgba(0,0,0,.45);--status-dot:#8FAE83;
  --scrim:linear-gradient(180deg,rgba(22,15,12,.42),rgba(22,15,12,.12) 30%,rgba(22,15,12,.04) 68%,rgba(22,15,12,.24));
}
:root[data-theme="sakura"]{
  /* 复古粉(乐乐 07-23 深夜终审:正式色卡版(bc3f215)做出来后她还是更喜欢这版 v5,拍板回滚):
     做旧玫瑰纸底+玫瑰木深字+rose gold 点缀 */
  --ref-bg-1:#F7E6E1;--ref-bg-2:#EBD2CB;--ref-bg-3:#F1DDD7;      /* dusty rose 纸底 */
  --ref-ink:#5A3A3C;                                             /* rosewood 正文 */
  --ref-plum:#8C5A63;--ref-mauve:#B08A8A;                        /* antique rose / 灰玫瑰 */
  --ref-bubble-ai:#FCF4F1;--ref-bubble-human:#E5C4BC;            /* 奶油粉 / dusty nude */
  --ref-chip:#FFFFFF;--ref-accent:#B76E79;--ref-shadow:90,58,60; /* accent = rose gold */
  --ref-accent-rgb:183,110,121;
  --ref-paper:#F9EFEB;--ref-paper-2:#F1DDD7;--ref-sheet:#F7EBE6;
  --ref-placeholder:#C6A2A0;
  --ref-glass:rgba(255,250,247,.66);--ref-glass-strong:rgba(255,249,245,.92);--ref-glass-line:rgba(255,255,255,.88);
  --ref-glow-1:rgba(183,110,121,.13);--ref-glow-2:rgba(255,255,255,.32);--ref-glow-3:rgba(176,138,138,.18);
  --ref-on-plum:#FFFFFF;
  --bg:#F1DDD7;--header-bg:#F1DDD7;--hairline:rgba(90,58,60,.20);
  --text:#5A3A3C;--text-soft:#7E5A5C;--text-faint:#B08A8A;
  --think-flourish:rgba(90,58,60,.42);--think-label:#96686C;--think-body:#7E5A5C;
  --composer-bg:#F7EAE5;--field-bg:rgba(255,250,247,.92);--field-line:rgba(90,58,60,.15);
  --card-bg:rgba(255,250,246,.42);--card-line:rgba(90,58,60,.12);
  --seg-track:rgba(90,58,60,.11);--seg-thumb:rgba(255,255,255,.72);--row-press:rgba(90,58,60,.09);
  --slider-track:rgba(90,58,60,.24);--slider-thumb:#B76E79;--info-ring:rgba(90,58,60,.34);
  --accent:#B76E79;--send-bg:#8C5A63;--accent-fg:#FFFFFF;--tick:#B08A8A;--warm:#B76E79;
  --calendar-empty:#EFDAD3;--calendar-low:#D9AFA8;--calendar-high:#8C5A63;--calendar-selected:#B76E79;--calendar-text:#5A3A3C;
  --surface-shadow:rgba(90,58,60,.14);--overlay-scrim:rgba(90,58,60,.20);--status-dot:#97A97C;
}
/* Journal 事件块色板:深色主题各给一组色卡同族深色(基准花镜组在 journal 样式块) */
:root[data-theme="cocoa"]{
  /* 热可可事件块:spiced hot chocolate / dark sienna 本尊 + 同族过渡档 */
  --jn-c0:#52423D;--jn-c1:#391214;--jn-c2:#5C4A44;--jn-c3:#63464A;
  --jn-c4:#44372F;--jn-c5:#55483E;--jn-c6:#4E3E3B;--jn-c7:#5A4C4A;
}
:root[data-theme="sakura"]{
  --jn-c0:#F0D6CE;--jn-c1:#E7C3BA;--jn-c2:#F2E0CC;--jn-c3:#E0CCD6;
  --jn-c4:#ECD3C4;--jn-c5:#DCC8BC;--jn-c6:#F0CFD6;--jn-c7:#E4D5CA;
}
/* 深色主题(cocoa)下事件块内时间/刻度线改浅色,避免深字压深底 */
:root[data-theme="cocoa"] .jn-ev-range,:root[data-theme="cocoa"] .jn-ev.compact .jn-ev-range{color:rgba(255,255,255,.55)}
:root[data-theme="cocoa"] .jn-hour{border-top-color:rgba(255,255,255,.08)}
/* 深色主题下,发送键图标用 accent-fg 会看不清 → 沿用 ref 层 chip+accent,这里只兜底文字选择色 */
:root[data-theme="cocoa"] ::selection{background:rgba(164,91,96,.35)}
:root[data-theme="sakura"] ::selection{background:rgba(183,110,121,.28)}
/* ── 三色卡新增(2026-08-01 乐乐发图点单):暮霞 dusk(晚霞粉紫,浅) / 莓夜 berry(莓果深红,深) / 绛墨 ink(正红黑灰,深) ── */
#themeSeg{grid-auto-flow:row;grid-template-columns:repeat(3,1fr)}
:root[data-theme="dusk"]{
  --ref-bg-1:#FCCF96;--ref-bg-2:#F7B49B;--ref-bg-3:#E696AD;      /* v3 晚霞大渐变:peach-orange 本尊 → 霞橘 → charm pink 本尊 */
  --ref-ink:#503148;                                             /* purple taupe 正文本尊 */
  --ref-plum:#9F4658;--ref-mauve:#8A5B76;                        /* english red 标题 / 暮紫副行(加深可读) */
  --ref-bubble-ai:#FFF6E9;--ref-bubble-human:#E696AD;            /* 奶油 / charm pink 本尊不兑水 */
  --ref-chip:#FFF3E4;--ref-accent:#E15E55;--ref-shadow:80,49,75; /* accent = jelly bean 本尊 */
  --ref-accent-rgb:225,94,85;
  --ref-paper:#FDF1DE;--ref-paper-2:#FAE0C4;--ref-sheet:#FCE9CF;
  --ref-placeholder:#B98A93;
  --ref-glass:rgba(255,244,229,.60);--ref-glass-strong:rgba(255,243,227,.92);--ref-glass-line:rgba(255,255,255,.85);
  --ref-glow-1:rgba(225,94,85,.20);--ref-glow-2:rgba(255,236,200,.38);--ref-glow-3:rgba(159,70,88,.16);
  --ref-on-plum:#FFF6EA;
  --bg:#F8C29E;--header-bg:#F8C29E;--hairline:rgba(80,49,75,.22);
  --text:#503148;--text-soft:#7A4E67;--text-faint:#A9718A;
  --think-flourish:rgba(159,70,88,.45);--think-label:#9F4658;--think-body:#7A4E67;
  --composer-bg:#FCEBD2;--field-bg:rgba(255,250,242,.92);--field-line:rgba(80,49,75,.16);
  --card-bg:rgba(255,246,233,.46);--card-line:rgba(80,49,75,.13);
  --seg-track:rgba(80,49,75,.12);--seg-thumb:rgba(255,255,255,.78);--row-press:rgba(159,70,88,.10);
  --slider-track:rgba(80,49,75,.24);--slider-thumb:#E15E55;--info-ring:rgba(159,70,88,.36);
  --accent:#E15E55;--send-bg:#9F4658;--accent-fg:#FFFFFF;--tick:#9F4658;--warm:#E15E55;
  --calendar-empty:#FBE4C6;--calendar-low:#E696AD;--calendar-high:#9F4658;--calendar-selected:#E15E55;--calendar-text:#503148;
  --surface-shadow:rgba(80,49,75,.16);--overlay-scrim:rgba(80,49,75,.24);--status-dot:#97A97C;
}
:root[data-theme="berry"]{
  --ref-bg-1:#451414;--ref-bg-2:#2D0E0E;--ref-bg-3:#231016;      /* v3 酒红夜幕:亮莓顶 → dark danger 本尊 → 泛蓝黑收底 */
  --ref-ink:#E9DFDA;
  --ref-plum:#B7C3D1;--ref-mauve:#768596;                        /* 标题=apollo bay 提亮(她点名提神的蓝) / 副行本尊 */
  --ref-bubble-ai:#4C1A1A;--ref-bubble-human:#404654;            /* 莓酒气泡浮出底(不再和背景一个色) / blue ash 本尊 */
  --ref-chip:#4A2020;--ref-accent:#DF6043;--ref-shadow:12,4,4;   /* accent = festival orange 本尊;all systems red #B30303 守发送键/日历低档 */
  --ref-accent-rgb:223,96,67;
  --ref-paper:#3B1616;--ref-paper-2:#4A1C1C;--ref-sheet:#421919;
  --ref-placeholder:#A08A8C;
  --ref-glass:rgba(64,26,26,.64);--ref-glass-strong:rgba(74,30,30,.94);--ref-glass-line:rgba(255,255,255,.08);
  --ref-glow-1:rgba(179,3,3,.16);--ref-glow-2:rgba(223,96,67,.07);--ref-glow-3:rgba(118,133,150,.15);
  --ref-on-plum:#20262E;
  --bg:#2D0E0E;--header-bg:#2D0E0E;--hairline:rgba(222,214,210,.16);
  --text:#E9DFDA;--text-soft:#C2B2AE;--text-faint:#8C96A4;
  --think-flourish:rgba(118,133,150,.45);--think-label:#8FA0B2;--think-body:#BFB0AC;
  --composer-bg:#3B1515;--field-bg:rgba(74,30,30,.92);--field-line:rgba(255,255,255,.09);
  --card-bg:rgba(74,28,28,.55);--card-line:rgba(255,255,255,.07);
  --seg-track:rgba(255,255,255,.08);--seg-thumb:rgba(64,70,84,.92);--seg-thumb-shadow:0 2px 8px rgba(0,0,0,.4);--row-press:rgba(255,255,255,.06);
  --slider-track:rgba(255,255,255,.18);--slider-thumb:#DF6043;--info-ring:rgba(118,133,150,.30);
  --accent:#DF6043;--send-bg:#B30303;--accent-fg:#FBEFEA;--tick:#768596;--warm:#DF6043;
  --calendar-empty:#3B1616;--calendar-low:#B30303;--calendar-high:#768596;--calendar-selected:#DF6043;--calendar-text:#E9DFDA;
  --surface-shadow:rgba(0,0,0,.50);--overlay-scrim:rgba(0,0,0,.45);--status-dot:#8FAE83;
  --scrim:linear-gradient(180deg,rgba(45,14,14,.42),rgba(45,14,14,.12) 30%,rgba(45,14,14,.04) 68%,rgba(45,14,14,.24));
}
:root[data-theme="ink"]{
  --ref-bg-1:#343032;--ref-bg-2:#262224;--ref-bg-3:#201D1F;      /* v3 砚台渐变:银灰浮光 → raisin black 本尊 → 墨底 */
  --ref-ink:#DCD9DA;                                             /* sonic silver 提亮 */
  --ref-plum:#CBC8CD;--ref-mauve:#94919E;                        /* 标题=银字 / spanish gray 本尊 */
  --ref-bubble-ai:#3B3739;--ref-bubble-human:#6E2530;            /* 灰岩气泡浮出底 / brown chocolate 提亮 */
  --ref-chip:#3E3A3C;--ref-accent:#BC3038;--ref-shadow:10,8,9;   /* accent = carnelian #AB141C 提亮;本尊守发送键 */
  --ref-accent-rgb:188,48,56;
  --ref-paper:#312D2F;--ref-paper-2:#3B3739;--ref-sheet:#353133;
  --ref-placeholder:#908D8F;
  --ref-glass:rgba(55,51,53,.62);--ref-glass-strong:rgba(62,58,60,.94);--ref-glass-line:rgba(255,255,255,.08);
  --ref-glow-1:rgba(171,20,28,.13);--ref-glow-2:rgba(148,145,158,.07);--ref-glow-3:rgba(119,115,116,.10);
  --ref-on-plum:#262224;
  --bg:#262224;--header-bg:#262224;--hairline:rgba(217,214,215,.16);
  --text:#DCD9DA;--text-soft:#B3B0B2;--text-faint:#94919E;
  --think-flourish:rgba(188,48,56,.40);--think-label:#A5A2A6;--think-body:#B3B0B2;
  --composer-bg:#2E2A2C;--field-bg:rgba(62,58,60,.92);--field-line:rgba(255,255,255,.09);
  --card-bg:rgba(59,55,57,.55);--card-line:rgba(255,255,255,.07);
  --seg-track:rgba(255,255,255,.08);--seg-thumb:rgba(104,34,42,.90);--seg-thumb-shadow:0 2px 8px rgba(0,0,0,.4);--row-press:rgba(255,255,255,.06);
  --slider-track:rgba(255,255,255,.18);--slider-thumb:#BC3038;--info-ring:rgba(148,145,158,.30);
  --accent:#BC3038;--send-bg:#AB141C;--accent-fg:#F2EFEF;--tick:#94919E;--warm:#BC3038;
  --calendar-empty:#312D2F;--calendar-low:#68222A;--calendar-high:#94919E;--calendar-selected:#BC3038;--calendar-text:#DCD9DA;
  --surface-shadow:rgba(0,0,0,.50);--overlay-scrim:rgba(0,0,0,.45);--status-dot:#8FAE83;
  --scrim:linear-gradient(180deg,rgba(38,34,36,.42),rgba(38,34,36,.12) 30%,rgba(38,34,36,.04) 68%,rgba(38,34,36,.24));
}
:root[data-theme="dusk"]{
  --jn-c0:#FCCF96;--jn-c1:#E696AD;--jn-c2:#F0A79A;--jn-c3:#D18BA4;
  --jn-c4:#F7DDB6;--jn-c5:#E8AFB6;--jn-c6:#F2B89C;--jn-c7:#C9899C;
}
:root[data-theme="berry"]{
  --jn-c0:#404654;--jn-c1:#6E1A1A;--jn-c2:#563636;--jn-c3:#586078;
  --jn-c4:#4E2424;--jn-c5:#454E60;--jn-c6:#603030;--jn-c7:#544048;
}
:root[data-theme="ink"]{
  --jn-c0:#68222A;--jn-c1:#4A1418;--jn-c2:#544E51;--jn-c3:#5E3A40;
  --jn-c4:#3E3A3C;--jn-c5:#5C2830;--jn-c6:#4A4448;--jn-c7:#553238;
}
:root[data-theme="berry"] .jn-ev-range,:root[data-theme="berry"] .jn-ev.compact .jn-ev-range,:root[data-theme="ink"] .jn-ev-range,:root[data-theme="ink"] .jn-ev.compact .jn-ev-range{color:rgba(255,255,255,.55)}
:root[data-theme="berry"] .jn-hour,:root[data-theme="ink"] .jn-hour{border-top-color:rgba(255,255,255,.08)}
:root[data-theme="dusk"] ::selection{background:rgba(225,94,85,.25)}
:root[data-theme="berry"] ::selection{background:rgba(223,96,67,.35)}
:root[data-theme="ink"] ::selection{background:rgba(188,48,56,.35)}
/* 0801v3: peerpill 底透明但 backdrop-filter 还挂着,深色渐变上糊出一块矩形(莓夜/绛墨可见),摘除 */
.peerpill{backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
/* ── 墨白 noir(08-01,参考图=乐乐当晚三张黑白气泡截图):
     近白冷灰纸底;两侧气泡都是深底白字——AI=近黑炭,她=中灰(参考图两侧本尊);
     时间戳嵌尾气泡右下(.meta-in),她侧带 ✓✓;点缀全收灰阶,唯一彩色=在线灯。 ── */
:root[data-theme="noir"]{
  --ref-bg-1:#F4F4F3;--ref-bg-2:#EAEAE8;--ref-bg-3:#F1F1EF;      /* 近白冷灰纸底 */
  --ref-ink:#232221;                                             /* 炭墨正文(页面全站) */
  --ref-plum:#1C1B1A;--ref-mauve:#8B8A88;                        /* 名字/图标=near black;副行=中灰 */
  --ref-bubble-ai:#2B2A29;--ref-bubble-human:#8A8A8E;            /* 近黑炭 / 中灰(参考图两侧本尊) */
  --ref-chip:#FFFFFF;--ref-accent:#1C1B1A;--ref-shadow:34,33,32;
  --ref-accent-rgb:28,27,26;
  --ref-paper:#FAFAF9;--ref-paper-2:#F1F1EF;--ref-sheet:#F8F8F7;
  --ref-placeholder:#A7A6A3;
  --ref-glass:rgba(255,255,255,.66);--ref-glass-strong:rgba(255,255,255,.92);--ref-glass-line:rgba(255,255,255,.88);
  --ref-glow-1:rgba(34,33,32,.06);--ref-glow-2:rgba(255,255,255,.32);--ref-glow-3:rgba(139,138,136,.12);
  --ref-on-plum:#FFFFFF;
  --bg:#F1F1EF;--header-bg:#F1F1EF;--hairline:rgba(34,33,32,.15);
  --text:#232221;--text-soft:#585755;--text-faint:#8B8A88;
  --think-flourish:rgba(34,33,32,.36);--think-label:#6C6B68;--think-body:#585755;
  --composer-bg:#F4F4F3;--field-bg:rgba(255,255,255,.92);--field-line:rgba(34,33,32,.13);
  --card-bg:rgba(255,255,255,.55);--card-line:rgba(34,33,32,.10);
  --seg-track:rgba(34,33,32,.08);--seg-thumb:rgba(255,255,255,.92);--seg-thumb-shadow:0 2px 8px rgba(34,33,32,.18);--row-press:rgba(34,33,32,.07);
  --slider-track:rgba(34,33,32,.20);--slider-thumb:#232221;--info-ring:rgba(34,33,32,.28);
  --accent:#232221;--send-bg:#1C1B1A;--accent-fg:#FFFFFF;--tick:#8B8A88;--warm:#585755;
  --calendar-empty:#EAEAE8;--calendar-low:#C7C6C3;--calendar-high:#232221;--calendar-selected:#585755;--calendar-text:#232221;
  --surface-shadow:rgba(34,33,32,.12);--overlay-scrim:rgba(34,33,32,.24);--status-dot:#7BA982;
  --scrim:linear-gradient(180deg,rgba(241,241,239,.42),rgba(241,241,239,.12) 30%,rgba(241,241,239,.04) 68%,rgba(241,241,239,.24));
  /* 短讯家换肤层(0802 乐乐第7条):两套皮肤只共享布局,颜色各走各的变量 */
  --sms-txt-ai:#F6F6F5;--sms-txt-human:#F6F6F5;
  --sms-meta-ai:rgba(255,255,255,.52);--sms-meta-human:rgba(255,255,255,.68);--sms-tick:rgba(255,255,255,.80);
  --sms-code-ai:rgba(255,255,255,.16);--sms-code-human:rgba(255,255,255,.16);
  --sms-lamp:#C9A2AA;   /* 状态强调:低饱和粉(乐乐 0802 点名,顶替蓝灯) */
  --sms-active:rgba(34,33,32,.08);--sms-select:rgba(34,33,32,.18);
  --sms-think-bg:rgba(255,255,255,.5);--sms-think-bg-open:rgba(255,255,255,.6);--sms-detail-bg:rgba(255,255,255,.72);
}
/* 墨白气泡:两侧都是深底 → 正文统一提白(参考皮层两侧共用 --ref-ink,这里两侧一起开小灶);
   圆角 20 尾角 6,去描边;深底上的 code 衬底换白纱 */
:root[data-sms] .bubble .txt{color:var(--sms-txt-ai)!important}
:root[data-sms] .row.human .bubble .txt{color:var(--sms-txt-human)!important}
:root[data-sms] .bubble .txt code{background:var(--sms-code-ai)}
:root[data-sms] .row.human .bubble .txt code{background:var(--sms-code-human)}
:root[data-sms] .bubble{border:0!important;border-radius:20px!important;box-shadow:0 4px 14px rgba(var(--ref-shadow),.10)!important}
:root[data-sms] .row.ai.tail .bubble.bubble-tail{border-bottom-left-radius:6px!important}
:root[data-sms] .row.human.tail .bubble.bubble-tail{border-bottom-right-radius:6px!important}
/* 嵌入式时间戳:.meta-in 常年藏着,只在墨白显形(参考图式:时间贴着正文末行右下,她侧带 ✓✓) */
.bubble .meta-in{display:none}
:root[data-sms] .bubble .meta-in{display:inline-block;float:right;margin:9px -3px -3px 10px;
  font:500 10px/1 var(--font-en),system-ui;color:var(--sms-meta-ai);letter-spacing:.02em;user-select:none}
:root[data-sms] .row.human .bubble .meta-in{color:var(--sms-meta-human)}
:root[data-sms] .meta-in .tick-in{margin-left:4px;letter-spacing:-2px;color:var(--sms-tick)}
:root[data-sms] .bubble.has-att .meta-in{align-self:flex-end;float:none}
:root[data-sms] .bubble.att-only .meta-in{display:none}
/* 外挂时间戳在墨白退场(时间已进气泡);「未送达·重试」是活按钮,留在原地 */
:root[data-sms] .message-meta{display:none!important}
:root[data-sms] .message-meta:has(.fail){display:block!important}
:root[data-sms] ::selection{background:var(--sms-select)}
:root[data-theme="noir"]{
  --jn-c0:#DDDBD7;--jn-c1:#C9C7C2;--jn-c2:#E4E2DE;--jn-c3:#D2D0CC;
  --jn-c4:#CFCDC8;--jn-c5:#E0DEDA;--jn-c6:#D6D4D0;--jn-c7:#CBC9C5;
}
/* ── 胭脂 rouge(0802,乐乐口谕:暖纸底/深棕气泡/灰粉己方/棕金线条/酒红选中;与墨白只共享布局) ── */
:root[data-theme="rouge"]{
  --ref-bg-1:#F7F0E6;--ref-bg-2:#EDE2D2;--ref-bg-3:#F3EADD;      /* 暖纸底 */
  --ref-ink:#413127;                                             /* 深棕正文 */
  --ref-plum:#4A3527;--ref-mauve:#A28A74;                        /* 名字/图标=深棕;副行=浅棕 */
  --ref-bubble-ai:#4C3A2F;--ref-bubble-human:#C5A49E;            /* 深棕 / 灰粉 */
  --ref-chip:#FFFDF8;--ref-accent:#8C4351;--ref-shadow:122,95,62; /* accent=酒红;投影/线条基色=棕金 */
  --ref-accent-rgb:140,67,81;
  --ref-paper:#FBF5EC;--ref-paper-2:#F3EADD;--ref-sheet:#F9F2E7;
  --ref-placeholder:#B7A48E;
  --ref-glass:rgba(255,251,243,.66);--ref-glass-strong:rgba(255,252,246,.92);--ref-glass-line:rgba(255,255,255,.85);
  --ref-glow-1:rgba(176,141,87,.12);--ref-glow-2:rgba(255,255,255,.30);--ref-glow-3:rgba(197,164,158,.14);
  --ref-on-plum:#FFF9F1;
  --bg:#F3EADD;--header-bg:#F3EADD;--hairline:rgba(151,117,73,.30);
  --text:#413127;--text-soft:#71604F;--text-faint:#A28A74;
  --think-flourish:rgba(151,117,73,.40);--think-label:#8B7259;--think-body:#71604F;
  --composer-bg:#F7F0E6;--field-bg:rgba(255,253,248,.92);--field-line:rgba(151,117,73,.28);
  --card-bg:rgba(255,252,246,.55);--card-line:rgba(151,117,73,.22);
  --seg-track:rgba(151,117,73,.12);--seg-thumb:rgba(255,253,248,.95);--seg-thumb-shadow:0 2px 8px rgba(122,95,62,.20);--row-press:rgba(151,117,73,.10);
  --slider-track:rgba(151,117,73,.28);--slider-thumb:#8C4351;--info-ring:rgba(140,67,81,.30);
  --accent:#8C4351;--send-bg:#8C4351;--accent-fg:#FFF9F1;--tick:#A28A74;--warm:#8B7259;
  --calendar-empty:#EDE2D2;--calendar-low:#D9BFA6;--calendar-high:#8C4351;--calendar-selected:#7B3945;--calendar-text:#413127;
  --surface-shadow:rgba(122,95,62,.14);--overlay-scrim:rgba(65,49,39,.26);--status-dot:#8FA075;
  --scrim:linear-gradient(180deg,rgba(243,234,221,.42),rgba(243,234,221,.12) 30%,rgba(243,234,221,.04) 68%,rgba(243,234,221,.24));
  --sms-txt-ai:#F7F1E9;--sms-txt-human:#45322B;                  /* 深棕泡提米白;灰粉泡走深棕字 */
  --sms-meta-ai:rgba(247,241,233,.55);--sms-meta-human:rgba(69,50,43,.55);--sms-tick:rgba(69,50,43,.72);
  --sms-code-ai:rgba(255,255,255,.18);--sms-code-human:rgba(65,49,39,.10);
  --sms-lamp:#9A5560;                                            /* 状态灯=酒红 */
  --sms-active:rgba(140,67,81,.14);--sms-select:rgba(140,67,81,.24);
  --sms-think-bg:rgba(255,252,246,.55);--sms-think-bg-open:rgba(255,252,246,.65);--sms-detail-bg:rgba(255,252,246,.80);
  --jn-c0:#E2D5C4;--jn-c1:#D3C2AC;--jn-c2:#E8DCCB;--jn-c3:#DBCCB8;
  --jn-c4:#D7C7B2;--jn-c5:#E5D8C6;--jn-c6:#DED0BC;--jn-c7:#D0BFA8;
}

/* source: charon-home-ui */
/* ── Charon 首页(装修线 0730):进门先到家,点 Chat 才上船 ── */
.cr-home{flex:1;overflow-y:auto;display:none;flex-direction:column;gap:12px;
  padding:10px 16px calc(env(safe-area-inset-bottom) + 26px)}
.cr-page.home .cr-home{display:flex}
.cr-page.home .cr-scroll,.cr-page.home .cr-composer,.cr-page.home .cr-end,.cr-page.home .charon-clawd{display:none}
.crh-card{position:relative;border:0;border-radius:22px;text-align:left;
  background:color-mix(in srgb,var(--ref-paper,#fbf6ea) 74%,transparent);
  box-shadow:0 10px 26px rgba(var(--cr-shadow),.13);
  color:var(--ref-ink,var(--cr-ink));padding:18px;font-family:var(--font-cn)}
button.crh-card{cursor:pointer;-webkit-tap-highlight-color:transparent;transition:transform .18s ease}
button.crh-card:active{transform:scale(.975)}
.crh-hero{padding:26px 18px 20px;text-align:center;overflow:visible;margin-top:14px}
.crh-hello{margin:0;font:italic 500 19px/1.3 "Cormorant Garamond",Georgia,"Songti SC","Noto Serif SC",serif}
.crh-days{display:flex;align-items:baseline;justify-content:center;gap:9px;margin:10px 0 5px}
.crh-days b{font:italic 600 52px/1 "Cormorant Garamond",Georgia,serif;color:var(--cr-lantern)}
.crh-days i{font:400 12px/1 var(--font-cn);letter-spacing:.24em;opacity:.55;font-style:normal}
.crh-since{margin:0;font-size:12px;opacity:.6;letter-spacing:.05em}
.crh-quote{text-align:center;padding:16px 20px;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:transform .18s ease}
.crh-quote:active{transform:scale(.975)}
.crh-quote::after{content:"›";position:absolute;right:14px;bottom:9px;font:400 13px/1 "Cormorant Garamond",Georgia,serif;opacity:.35}
.cr-page.home .cr-back{visibility:hidden;pointer-events:none} /* 首页不给返回键,暗门=语录卡(工单③);聊天视图返回键照旧 */
.crh-quote p{margin:0;font:italic 400 14.5px/1.8 "Cormorant Garamond",Georgia,"Songti SC","Noto Serif SC",serif}
.crh-quote small{display:block;margin-top:8px;font-size:11px;opacity:.55}
.crh-chat{display:flex;flex-direction:column;gap:5px;min-height:118px;justify-content:flex-end}
.crh-chat svg{width:26px;height:26px;color:var(--cr-lantern);margin-bottom:auto}
.crh-card b{font:italic 600 20px/1.2 "Cormorant Garamond",Georgia,"Songti SC","Noto Serif SC",serif}
.crh-card small{font-size:11.5px;opacity:.62}
.crh-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.crh-grid .crh-card{min-height:102px;display:flex;flex-direction:column;gap:5px;justify-content:flex-end}
.crh-together{display:flex;flex-direction:column;gap:5px}
.crh-foot{margin:8px 0 0;text-align:center;font:italic 400 13px/1 "Cormorant Garamond",Georgia,serif;opacity:.5}
.crhome-clawd{position:absolute;top:-15px;right:26px;width:44px;height:33px}

/* source: clawd-pet-ui */
/* Animated pixel crab adapted from xixicc186/clawd-emotes-skill (MIT).
   Feet stay inside the animated body group; the shadow stays independent. */
.clawd-pet{
  --clawd-shell:#C0674F;
  --clawd-eye:#433723;
  --clawd-cheek:#A94F43;
  --clawd-delay:0s;
  display:inline-grid;
  place-items:center;
  flex:none;
  color:var(--clawd-shell);
  pointer-events:auto;
  touch-action:none;
  cursor:grab;
  user-select:none;
  transform-origin:50% 100%;
  will-change:left,top;
}
:root[data-theme="cocoa"] .clawd-pet{--clawd-shell:#D18872;--clawd-eye:#2B1815;--clawd-cheek:#B85E59}
:root[data-theme="sakura"] .clawd-pet{--clawd-shell:#C97872;--clawd-eye:#513034;--clawd-cheek:#A94F5C}
:root[data-theme="dusk"] .clawd-pet{--clawd-shell:#DE8570;--clawd-eye:#4A2C38;--clawd-cheek:#C25F63;--ref-shadow:99,93,53}
:root[data-theme="berry"] .clawd-pet{--clawd-shell:#D97B60;--clawd-eye:#2A1010;--clawd-cheek:#B34A3A;--ref-shadow:8,5,4}
:root[data-theme="ink"] .clawd-pet{--clawd-shell:#C5766B;--clawd-eye:#241416;--clawd-cheek:#A13B41;--ref-shadow:8,5,4}

/* 0831 mobile modal isolation: Chromium/WebView can composite translucent
   glass children against chat text incorrectly in the three dark paper themes. */
:root:is([data-theme="cocoa"],[data-theme="berry"],[data-theme="ink"]) .settings-detail-dialog,
:root:is([data-theme="cocoa"],[data-theme="berry"],[data-theme="ink"]) .model-pop{
  background:var(--ref-sheet)!important;
  border-color:var(--ref-glass-line)!important;
  -webkit-backdrop-filter:none!important;
  backdrop-filter:none!important;
  isolation:isolate;
}
:root:is([data-theme="cocoa"],[data-theme="berry"],[data-theme="ink"]) .settings-detail-dialog{
  box-shadow:0 28px 90px rgba(0,0,0,.58)!important;
}
:root:is([data-theme="cocoa"],[data-theme="berry"],[data-theme="ink"]) .model-pop{
  box-shadow:0 18px 44px rgba(0,0,0,.62)!important;
  overscroll-behavior:contain;
}
/* 儿子保留原色(乐乐 08-01 口谕):墨白不给小螃蟹刷灰,彩壳照旧 */
.clawd-pet svg{display:block;width:100%;height:100%;overflow:visible;color:inherit}
.clawd-body{transform-box:view-box;transform-origin:7.5px 13px;animation:clawd-bob 2.7s var(--clawd-delay) infinite ease-in-out}
.clawd-shadow{fill:rgb(var(--ref-shadow,99,93,53)/.24);transform-box:view-box;transform-origin:7.5px 15.5px;animation:clawd-shadow 2.7s var(--clawd-delay) infinite ease-in-out}
.clawd-claw{transform-box:view-box}
.clawd-claw-left{transform-origin:2px 10px;animation:clawd-wave-left 3.4s var(--clawd-delay) infinite ease-in-out}
.clawd-claw-right{transform-origin:13px 10px;animation:clawd-wave-right 3.4s var(--clawd-delay) infinite ease-in-out}
.clawd-face{fill:var(--clawd-eye);color:var(--clawd-eye)}
.clawd-face-line{fill:none;stroke:var(--clawd-eye);stroke-width:.62;stroke-linecap:round;stroke-linejoin:round}
.clawd-face .clawd-cheek{fill:var(--clawd-cheek);opacity:.66}
.clawd-eye-pair{transform-box:fill-box;transform-origin:center;animation:clawd-eye-glance 7.4s var(--clawd-delay) infinite ease-in-out}
.clawd-face-squint{animation:clawd-face-squint 8.4s var(--clawd-delay) infinite steps(1,end)}
.clawd-face-open{opacity:0;animation:clawd-face-open 8.4s var(--clawd-delay) infinite steps(1,end)}
.clawd-face-happy{opacity:0;animation:clawd-face-happy 8.4s var(--clawd-delay) infinite steps(1,end)}
.menu-hero{position:relative}
.menu-item[data-menu="chat"]{position:relative}
.menu-clawd{position:absolute;z-index:3;right:24px;top:-20px;width:45px;height:34px;pointer-events:auto}
.chat-clawd{position:absolute;z-index:4;left:clamp(18px,5vw,42px);bottom:calc(var(--composer-zone) + 10px);width:44px;height:33px;opacity:.9}
.mem-crab{width:44px;height:33px;opacity:.94}
.cr-page{position:relative}
.charon-clawd{position:absolute;z-index:4;left:18px;bottom:calc(env(safe-area-inset-bottom) + 76px);width:44px;height:33px;opacity:.92}
.mem-crab svg{width:100%!important;height:100%!important;color:inherit!important}
.menu-clawd .clawd-body{animation:none!important;transform:translateY(1px) scaleY(.9)}
.menu-clawd .clawd-shadow{animation:none!important;transform:scaleX(1.08);opacity:.24}
.menu-clawd .clawd-claw{animation:none!important}
.menu-clawd .clawd-eye-pair{animation:none!important;transform:translateX(0)}
.menu-clawd.is-poked{animation:clawd-menu-poke 1.25s 1 cubic-bezier(.2,.75,.25,1)}
.menu-clawd.is-poked .clawd-eye-pair{animation:clawd-eye-poke .72s 1 ease-in-out!important}

@keyframes clawd-bob{
  0%,100%{transform:translateY(0) rotate(-1deg)}
  50%{transform:translateY(-.6px) rotate(1deg)}
}
@keyframes clawd-shadow{
  0%,100%{transform:scaleX(1);opacity:.24}
  50%{transform:scaleX(.9);opacity:.17}
}
@keyframes clawd-wave-left{
  0%,30%,100%{transform:rotate(0)}
  38%{transform:rotate(-17deg)}
  46%{transform:rotate(7deg)}
  54%{transform:rotate(-12deg)}
  62%{transform:rotate(0)}
}
@keyframes clawd-wave-right{
  0%,55%,100%{transform:rotate(0)}
  64%{transform:rotate(12deg)}
  72%{transform:rotate(-6deg)}
  80%{transform:rotate(9deg)}
  88%{transform:rotate(0)}
}
@keyframes clawd-face-squint{
  0%,52%,66%,82%,100%{opacity:1}
  53%,65%,83%,92%{opacity:0}
}
@keyframes clawd-face-open{
  0%,52%,66%,100%{opacity:0}
  53%,65%{opacity:1}
}
@keyframes clawd-face-happy{
  0%,82%,93%,100%{opacity:0}
  83%,92%{opacity:1}
}
@keyframes clawd-walk-body{
  0%,100%{transform:translateY(0) rotate(-1.5deg)}
  50%{transform:translateY(-1.1px) rotate(1.5deg)}
}
@keyframes clawd-walk-shadow{
  0%,100%{transform:scaleX(.9);opacity:.18}
  50%{transform:scaleX(1.04);opacity:.26}
}
@keyframes clawd-menu-poke{
  0%,100%{transform:translate(0,0) rotate(0)}
  24%{transform:translate(-8px,-2px) rotate(-4deg)}
  50%{transform:translate(7px,-3px) rotate(4deg)}
  72%{transform:translate(-3px,-1px) rotate(-2deg)}
}
@keyframes clawd-eye-glance{
  0%,42%,100%{transform:translateX(0)}
  48%,55%{transform:translateX(.28px)}
  68%,75%{transform:translateX(-.22px)}
}
@keyframes clawd-eye-run{
  0%,100%{transform:translate(.42px,0)}
  50%{transform:translate(.58px,-.12px)}
}
@keyframes clawd-eye-poke{
  0%,100%{transform:translateX(0)}
  35%{transform:translateX(-.38px)}
  70%{transform:translateX(.42px)}
}

/* Occasional movement and emote props; idle remains a quiet ^^ face. */
.clawd-pet.is-facing-left svg{transform:scaleX(-1)}
.clawd-pet.is-walking .clawd-body{animation:clawd-walk-body .38s infinite ease-in-out}
.clawd-pet.is-walking .clawd-shadow{animation:clawd-walk-shadow .38s infinite ease-in-out}
.clawd-pet.is-walking .clawd-eye-pair{animation:clawd-eye-run .42s infinite ease-in-out}
.clawd-pet.is-dragging{
  cursor:grabbing;
  z-index:5000!important;
  filter:drop-shadow(0 8px 10px rgb(var(--ref-shadow,99,93,53)/.24));
}
.clawd-pet.is-dragging,
.clawd-pet.is-dragging *{animation-play-state:paused!important}
.clawd-pet.is-parked .clawd-body{animation:clawd-rest 4.8s infinite ease-in-out}
.clawd-pet.is-parked .clawd-shadow{animation:clawd-rest-shadow 4.8s infinite ease-in-out}
.clawd-pet.is-parked .clawd-arm{transform:translateY(1px)}
.clawd-pet.is-on-bubble .clawd-body{animation:clawd-rest 4.8s infinite ease-in-out}
.clawd-pet.is-on-bubble .clawd-shadow{animation:clawd-rest-shadow 4.8s infinite ease-in-out}
.clawd-pet.is-dropping .clawd-claw-left{transform:rotate(-14deg)}
.clawd-pet.is-dropping .clawd-claw-right{transform:rotate(14deg)}
.clawd-face{display:none;animation:none!important;opacity:1!important}
.clawd-face-squint{display:block}
.clawd-prop{display:none}
.clawd-pet[data-emote="coffee"] .clawd-face-squint,
.clawd-pet[data-emote="reading"] .clawd-face-squint,
.clawd-pet[data-emote="coding"] .clawd-face-squint{display:none}
.clawd-pet[data-emote="coffee"] .clawd-face-open,
.clawd-pet[data-emote="reading"] .clawd-face-open,
.clawd-pet[data-emote="coding"] .clawd-face-open{display:block}
.clawd-pet[data-emote="music"] .clawd-face-squint{display:none}
.clawd-pet[data-emote="music"] .clawd-face-happy{display:block}
.clawd-pet[data-emote="sleep"] .clawd-prop-sleep,
.clawd-pet[data-emote="coffee"] .clawd-prop-coffee,
.clawd-pet[data-emote="reading"] .clawd-prop-reading,
.clawd-pet[data-emote="music"] .clawd-prop-music,
.clawd-pet[data-emote="coding"] .clawd-prop-coding{display:block}
.clawd-pet[data-emote="sleep"] .clawd-body{animation:clawd-sleep 4.2s infinite ease-in-out}
.clawd-pet[data-emote="sleep"] .clawd-shadow{animation:clawd-rest-shadow 4.2s infinite ease-in-out}
.clawd-pet[data-emote="music"] .clawd-body{animation:clawd-groove 1.1s infinite ease-in-out}
.clawd-pet[data-emote="coffee"] .clawd-steam{animation:clawd-steam 2.4s infinite ease-out}
.clawd-pet[data-emote="coffee"] .clawd-steam.second{animation-delay:-1.2s}
.clawd-pet[data-emote="music"] .clawd-note{animation:clawd-note 2s infinite ease-out}
.clawd-pet[data-emote="music"] .clawd-note.second{animation-delay:-1s}
.clawd-pet[data-emote="coding"] .clawd-screen-dot{animation:clawd-code-blink 1.4s infinite steps(1,end)}
.clawd-pet[data-emote="sleep"] .clawd-z{animation:clawd-z 2.8s infinite ease-out}
.clawd-pet[data-emote="sleep"] .clawd-z.second{animation-delay:-1.4s}

@keyframes clawd-rest{
  0%,100%{transform:translateY(1px) scaleY(.9)}
  50%{transform:translateY(.7px) scaleY(.93)}
}
@keyframes clawd-rest-shadow{
  0%,100%{transform:scaleX(1.08);opacity:.25}
  50%{transform:scaleX(1.02);opacity:.2}
}
@keyframes clawd-sleep{
  0%,100%{transform:translate(0,1.3px) scaleY(.84) rotate(-2deg)}
  50%{transform:translate(0,1px) scaleY(.88) rotate(-2deg)}
}
@keyframes clawd-groove{
  0%,100%{transform:translateY(0) rotate(-3deg)}
  50%{transform:translateY(-.7px) rotate(3deg)}
}
@keyframes clawd-steam{
  0%{opacity:0;transform:translateY(0)}
  35%{opacity:.72}
  100%{opacity:0;transform:translateY(-5px)}
}
@keyframes clawd-note{
  0%{opacity:0;transform:translate(0,1px)}
  30%{opacity:.9}
  100%{opacity:0;transform:translate(1px,-6px)}
}
@keyframes clawd-code-blink{0%,45%{opacity:1}46%,100%{opacity:.28}}
@keyframes clawd-z{
  0%{opacity:0;transform:translate(0,1px) scale(.75)}
  35%{opacity:.8}
  100%{opacity:0;transform:translate(2px,-6px) scale(1)}
}

/* Only text changes font. The red-circled glyphs keep their current face. */
.think-caption-text,
.act-label{
  font-family:var(--editorial-serif,"Cormorant Garamond",Georgia,serif)!important;
  font-style:italic!important;
}
.act-detail,
.act-line,
.usage-line,
#menuStatusDays,
.status-used{
  font-family:var(--editorial-serif,"Cormorant Garamond",Georgia,serif)!important;
}
.think-caption-star,
.think-state,
.act-glyph,
.act-state{
  font-family:var(--font-cn),system-ui,sans-serif!important;
  font-style:normal!important;
  font-weight:400!important;
}

@media(max-width:420px){
  .menu-clawd{right:20px;top:-19px;width:45px;height:34px}
  .chat-clawd{left:16px;width:39px;height:29px}
}
@media(prefers-reduced-motion:reduce){
  .clawd-pet,.clawd-pet *{animation:none!important}
  .clawd-pet.is-walking .clawd-eye-pair{transform:translateX(.46px)}
  .clawd-face-squint{display:block!important}
  .clawd-face-open,.clawd-face-happy{display:none!important}
}

/* source: open-props-polish */
/* Open Props is intentionally used as a polish layer, not a replacement theme. */
:root{
  --ui-ease-out:var(--ease-out-4,cubic-bezier(.16,1,.3,1));
  --ui-ease-spring:var(--ease-spring-3,cubic-bezier(.34,1.56,.64,1));
  --ui-lift-shadow:var(--shadow-3,0 8px 24px rgba(var(--ref-shadow,99,93,53),.14));
  --ui-focus-ring:color-mix(in srgb,var(--ref-accent,#96884A) 62%,white);
}

:where(.backbtn,.topbtn,.floatbtn,.send,.settings-hub-row,.fp-card,.mem-card,.jn-ev,.moment-card,.health-card){
  transition:
    transform var(--motion-fast,150ms) var(--ui-ease-spring),
    box-shadow var(--motion-normal,260ms) var(--ui-ease-out),
    border-color var(--motion-fast,150ms) var(--ui-ease-out),
    filter var(--motion-fast,150ms) var(--ui-ease-out);
}

:where(button,[role="button"],input,textarea,select):focus-visible{
  outline:2px solid var(--ui-focus-ring);
  outline-offset:3px;
}

.login-welcome-card{
  animation:
    var(--animation-fade-in,ui-fade-in .42s var(--ui-ease-out) both),
    var(--animation-slide-in-up,ui-rise-in .52s var(--ui-ease-out) both);
}

.settings-detail-dialog,
.api-modal,
.mem-sheet,
.checklist-sheet{
  transition-timing-function:var(--ui-ease-out)!important;
}

@media (hover:hover) and (pointer:fine){
  :where(.settings-hub-row,.fp-card,.mem-card,.jn-ev,.moment-card,.health-card):hover{
    transform:translateY(-2px);
    box-shadow:var(--ui-lift-shadow);
    border-color:color-mix(in srgb,var(--ref-accent,#96884A) 22%,var(--ref-glass-line,transparent));
  }
  :where(.backbtn,.topbtn,.floatbtn,.send):hover{
    transform:translateY(-1px) scale(1.035);
    filter:saturate(1.06);
  }
}

:where(.settings-hub-row,.fp-card,.mem-card,.jn-ev,.moment-card,.health-card):active,
:where(.backbtn,.topbtn,.floatbtn,.send):active{
  transform:translateY(1px) scale(.985);
  transition-duration:70ms;
}

@keyframes ui-fade-in{
  from{opacity:0}
  to{opacity:1}
}
@keyframes ui-rise-in{
  from{transform:translateY(14px)}
  to{transform:translateY(0)}
}

@media (prefers-reduced-motion:reduce){
  .login-welcome-card{animation:none}
  :where(.backbtn,.topbtn,.floatbtn,.send,.settings-hub-row,.fp-card,.mem-card,.jn-ev,.moment-card,.health-card){
    transition-duration:1ms!important;
  }
}

/* source: together-feature-style */
/* Together · 0730 下午重整:呼吸感放大 + 主题 token 化(cocoa 深色不再穿帮) */
  .together-panel{
    position:fixed; inset:0; z-index:235; color:var(--ref-ink,var(--text));
    background:
      radial-gradient(circle at 14% 2%,var(--ref-glow-1,rgba(150,136,74,.14)),transparent 38%),
      radial-gradient(circle at 90% 94%,var(--ref-glow-3,rgba(188,200,204,.18)),transparent 32%),
      var(--ref-paper,#fbf6ea);
    transform:translateX(100%); opacity:0; pointer-events:none;
    transition:transform .38s var(--ease-soft),opacity .25s ease;
  }
  .together-panel.open{transform:none;opacity:1;pointer-events:auto}
  .together-shell{height:100%;max-width:760px;margin:auto;display:flex;flex-direction:column;overflow:hidden}
  .together-top{
    flex:none;display:grid;grid-template-columns:44px 1fr 44px;align-items:center;
    padding:calc(env(safe-area-inset-top) + 12px) 16px 10px;
  }
  .together-back{
    width:42px;height:42px;border:0;border-radius:14px;background:var(--ref-chip,#fff);color:var(--ref-plum,var(--text));
    display:grid;place-items:center;cursor:pointer;
    box-shadow:0 6px 16px rgba(var(--ref-shadow,99,93,53),.12);
  }
  .together-back svg{width:20px;height:20px}
  .together-tool svg{width:17px;height:17px}
  .together-heading{text-align:center;min-width:0}
  .together-heading strong{display:block;font:italic 500 30px/1.02 var(--editorial-serif,Georgia,serif);letter-spacing:-.02em}
  .together-heading small{display:block;margin-top:5px;color:var(--ref-mauve,var(--text-soft));font:500 9.5px/1.2 var(--editorial-sans,system-ui);letter-spacing:.22em;text-transform:uppercase}
  .together-body{flex:1;min-height:0;display:flex;flex-direction:column;padding:10px 18px calc(env(safe-area-inset-bottom) + 16px)}

  .together-presence{
    flex:none;display:flex;align-items:center;gap:12px;padding:12px 15px;margin-bottom:12px;
    border:1px solid var(--ref-glass-line,rgba(255,255,255,.86));border-radius:21px;
    background:var(--ref-glass,rgba(255,255,252,.66));box-shadow:0 10px 26px rgba(var(--ref-shadow,99,93,53),.08);
  }
  .together-avatar{
    width:38px;height:38px;flex:none;border-radius:50%;background:var(--avatar-default) center/cover no-repeat;
    box-shadow:0 0 0 2px var(--ref-chip,#fff),0 6px 15px var(--surface-shadow,rgba(45,37,24,.13));
  }
  .together-presence-copy{min-width:0;display:flex;flex-direction:column}
  .together-presence-copy strong{font:italic 500 15px/1.2 var(--editorial-serif,Georgia,serif);letter-spacing:.01em}
  .together-presence-copy small{margin-top:3px;color:var(--ref-mauve,var(--text-soft));font:400 11px/1.3 var(--chat-type,serif)}
  .together-live-dot{width:8px;height:8px;margin-left:auto;flex:none;border-radius:50%;background:var(--status-dot,#8ca27d);box-shadow:0 0 0 4px color-mix(in srgb,var(--status-dot,#8ca27d) 16%,transparent);animation:togetherBreathe 2.8s var(--ease-soft) infinite}
  @keyframes togetherBreathe{0%,100%{box-shadow:0 0 0 3px color-mix(in srgb,var(--status-dot,#8ca27d) 20%,transparent)}50%{box-shadow:0 0 0 7px color-mix(in srgb,var(--status-dot,#8ca27d) 8%,transparent)}}

  .together-tabs{
    flex:none;display:grid;grid-template-columns:1fr 1fr;padding:4px;margin-bottom:13px;
    border:1px solid var(--ref-glass-line,rgba(255,255,255,.86));border-radius:18px;background:var(--ref-glass,rgba(255,255,252,.6));
  }
  .together-tab{border:0;border-radius:14px;background:transparent;color:var(--ref-mauve,var(--text-soft));padding:11px 8px;font:500 14px/1.2 var(--chat-type,serif);letter-spacing:.02em;cursor:pointer;transition:color .18s ease}
  .together-tab.active{background:var(--ref-chip,#fff);color:var(--ref-ink,var(--text));box-shadow:0 5px 14px rgba(var(--ref-shadow,99,93,53),.10)}

  .together-mode{flex:1;min-height:0;display:flex;flex-direction:column;gap:11px}
  .together-mode[hidden]{display:none!important}
  .together-card{
    border:1px solid var(--ref-glass-line,rgba(255,255,255,.88));border-radius:25px;
    background:var(--ref-glass-strong,rgba(255,253,246,.9));box-shadow:0 14px 34px rgba(var(--ref-shadow,99,93,53),.09);
  }
  .together-panel.open .together-presence,
  .together-panel.open .together-tabs,
  .together-panel.open .together-mode:not([hidden])>*{animation:togetherRise .4s var(--ease-soft) both}
  .together-panel.open .together-tabs{animation-delay:.04s}
  .together-panel.open .together-mode:not([hidden])>*{animation-delay:.08s}
  @keyframes togetherRise{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:none}}

  .together-empty{padding:30px 22px 24px;text-align:center}
  .together-empty-mark{
    display:grid;place-items:center;width:64px;height:64px;margin:0 auto;border-radius:50%;
    color:var(--ref-accent,#96884a);background:rgba(var(--ref-accent-rgb,150,136,74),.11);
    box-shadow:0 0 0 1px rgba(var(--ref-accent-rgb,150,136,74),.14),0 0 0 9px rgba(var(--ref-accent-rgb,150,136,74),.045);
    font:italic 500 29px/1 var(--editorial-serif,Georgia,serif);
  }
  .together-empty-mark svg{width:29px;height:29px;display:block}
  .together-empty h2{margin:15px 0 8px;font:italic 500 26px/1.12 var(--editorial-serif,Georgia,serif);letter-spacing:-.01em}
  .together-empty p{max-width:30em;margin:0 auto;color:var(--ref-mauve,var(--text-soft));font:400 12.5px/1.75 var(--chat-type,serif)}
  .together-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:9px;margin-top:18px}
  .together-btn{
    min-height:42px;border:1px solid rgba(var(--ref-accent-rgb,150,136,74),.20);border-radius:15px;
    background:color-mix(in srgb,var(--ref-chip,#fff) 55%,transparent);color:var(--ref-ink,var(--text));
    padding:10px 15px;font:500 13px/1.2 var(--chat-type,serif);cursor:pointer;
    transition:transform .15s ease,box-shadow .18s ease;
  }
  .together-btn.primary{background:var(--ref-accent,#96884a);border-color:transparent;color:#fff;box-shadow:0 8px 20px rgba(var(--ref-accent-rgb,150,136,74),.26)}
  .together-btn:active{transform:scale(.97)}
  .together-btn:disabled{opacity:.42;cursor:default;box-shadow:none}
  .together-url{display:grid;grid-template-columns:1fr auto;gap:9px;margin-top:14px}
  .together-audio-url{display:block}
  .together-url input,.together-paste textarea{
    width:100%;border:1px solid rgba(var(--ref-accent-rgb,150,136,74),.16);border-radius:15px;
    background:var(--ref-chip,#fff);color:inherit;outline:0;font:400 13px/1.5 var(--chat-type,serif);
    transition:border-color .18s ease;
  }
  .together-url input::placeholder,.together-paste textarea::placeholder{color:var(--ref-placeholder,#b3a87e)}
  .together-url input:focus,.together-paste textarea:focus{border-color:rgba(var(--ref-accent-rgb,150,136,74),.42)}
  .together-url input{height:42px;padding:0 14px}
  .together-paste{padding:14px 0 0}
  .together-paste textarea{display:block;height:104px;resize:none;padding:12px 14px}
  .together-read-actions,.together-listen-actions{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:11px}
  .together-read-actions .together-btn,.together-listen-actions .together-btn{width:100%;margin:0}

  .together-now{padding:21px 20px 18px}
  .together-now[hidden]{display:none!important}
  .together-kicker{color:var(--ref-mauve,var(--text-soft));font:600 9.5px/1.2 var(--editorial-sans,system-ui);letter-spacing:.2em;text-transform:uppercase}
  .together-track-title{margin:9px 0 5px;font:italic 500 27px/1.14 var(--editorial-serif,Georgia,serif);letter-spacing:-.01em;overflow-wrap:anywhere}
  .together-track-meta{color:var(--ref-mauve,var(--text-soft));font:400 11.5px/1.35 var(--chat-type,serif)}
  .together-now audio{display:block;width:100%;height:44px;margin:17px 0 10px;accent-color:var(--ref-accent,#96884a)}
  .together-note{margin:0;color:var(--ref-mauve,var(--text-soft));font:400 10.5px/1.55 var(--chat-type,serif);opacity:.85}
  .together-chat{margin-top:0;display:grid;grid-template-columns:1fr;gap:8px}
  .together-chat .together-btn{width:100%;min-height:46px;border-radius:17px;font-size:13.5px}

  .together-reader{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}
  .together-reader[hidden]{display:none!important}
  .together-reader-head{flex:none;display:flex;align-items:center;gap:8px;padding:11px 12px;border-bottom:1px solid rgba(var(--ref-accent-rgb,150,136,74),.11)}
  .together-reader-title{min-width:0;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font:italic 500 17px/1.2 var(--editorial-serif,Georgia,serif)}
  .together-tool{
    width:36px;height:36px;flex:none;display:grid;place-items:center;border:0;border-radius:12px;background:var(--ref-chip,#fff);color:var(--ref-plum,var(--text));
    font:500 13.5px/1 var(--editorial-sans,system-ui);cursor:pointer;
    box-shadow:0 4px 11px rgba(var(--ref-shadow,99,93,53),.10);transition:transform .14s ease;
  }
  .together-tool:active{transform:scale(.93)}
  .together-reader-stage{flex:1;min-height:0;position:relative;background:color-mix(in srgb,var(--ref-chip,#fff) 32%,transparent);overflow:hidden}
  .together-text-reader{position:absolute;inset:0;overflow:auto;padding:26px 24px 74px;scroll-behavior:smooth}
  .together-text-reader article{max-width:38em;margin:auto;font-size:18px;line-height:1.95;font-family:var(--chat-type,"Noto Serif SC",serif);color:var(--ref-ink,var(--text))}
  .together-text-reader p{margin:0 0 1.15em;text-align:justify}
  .together-epub-reader{position:absolute;inset:0}
  .together-reader-foot{
    position:absolute;left:14px;right:14px;bottom:12px;display:flex;align-items:center;gap:10px;padding:9px 12px;
    border:1px solid var(--ref-glass-line,rgba(255,255,255,.86));border-radius:15px;
    background:var(--ref-glass-strong,rgba(255,253,246,.9));backdrop-filter:blur(10px);
    box-shadow:0 8px 22px rgba(var(--ref-shadow,99,93,53),.13);
  }
  .together-progress{flex:1;height:3px;border-radius:999px;background:rgba(var(--ref-accent-rgb,150,136,74),.16);overflow:hidden}
  .together-progress i{display:block;width:0;height:100%;background:var(--ref-accent,#96884a);transition:width .15s ease}
  .together-progress-label{min-width:32px;text-align:right;color:var(--ref-mauve,var(--text-soft));font:500 9.5px/1 var(--editorial-sans,system-ui);letter-spacing:.04em}
  .together-selection{min-height:18px;padding:0 3px;color:var(--ref-mauve,var(--text-soft));font:400 11px/1.5 var(--chat-type,serif);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

  @media(max-width:560px){
    .together-body{padding-left:14px;padding-right:14px}
    .together-empty{padding:24px 16px 20px}
    .together-text-reader{padding:22px 19px 68px}
  }
  @media(max-height:720px){
    .together-presence{padding:9px 12px;margin-bottom:9px}
    .together-tabs{margin-bottom:9px}
    .together-empty{padding:18px 15px 16px}
    .together-empty-mark{width:50px;height:50px;font-size:23px}
    .together-empty h2{font-size:21px;margin-top:10px}
    .together-actions{margin-top:12px}
  }
  @media(prefers-reduced-motion:reduce){
    .together-live-dot{animation:none}
    .together-panel.open .together-presence,.together-panel.open .together-tabs,.together-panel.open .together-mode:not([hidden])>*{animation:none}
  }

/* source: sable-attachment-drawer */
/* Sable · 附件抽屉 0730 下午美化:+号并入全站圆片语言,照片/文件改成两张填满整行的横向卡片 */
.composer-plus{position:relative;display:block;width:15px;height:15px;transition:transform .24s cubic-bezier(.2,.75,.25,1)}
.composer-plus::before,.composer-plus::after{content:"";position:absolute;left:50%;top:50%;width:13px;height:1.6px;border-radius:999px;background:currentColor;transform:translate(-50%,-50%)}
.composer-plus::after{transform:translate(-50%,-50%) rotate(90deg)}
.composer.attachments-open .composer-plus{transform:rotate(45deg)}
.composer.attachments-open .composer-add-btn{background:rgba(var(--ref-accent-rgb,150,136,74),.14)!important;color:var(--ref-accent,#96884a)!important}
.attachment-drawer{
  flex:0 0 100%;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;
  max-height:0;overflow:hidden;opacity:0;pointer-events:none;
  margin:0;padding:0 6px;border-top:1px solid transparent;transform:translateY(7px);
  transition:max-height .28s cubic-bezier(.2,.75,.25,1),opacity .2s ease,transform .28s cubic-bezier(.2,.75,.25,1),padding .28s ease,border-color .2s ease
}
.composer.attachments-open .attachment-drawer{
  max-height:112px;opacity:1;pointer-events:auto;transform:none;
  margin-top:3px;padding:12px 6px 7px;
  border-top-color:rgba(var(--ref-accent-rgb,150,136,74),.13)
}
.attachment-choice{
  display:flex;flex-direction:row;align-items:center;justify-content:flex-start;gap:11px;min-width:0;
  padding:9px 12px;border:1px solid var(--ref-glass-line,rgba(255,255,255,.86));border-radius:17px;
  background:var(--ref-glass,rgba(255,255,252,.66));color:var(--ref-ink,var(--text));cursor:pointer;
  box-shadow:0 6px 16px rgba(var(--ref-shadow,99,93,53),.08);
  font:500 12.5px/1.2 var(--chat-type,serif);letter-spacing:.02em;
  transition:transform .15s ease,box-shadow .18s ease
}
.attachment-choice-icon{
  width:36px;height:36px;flex:none;display:grid;place-items:center;border-radius:12px;
  color:var(--ref-accent,#96884a);background:rgba(var(--ref-accent-rgb,150,136,74),.11);
  border:0;box-shadow:none;
  transition:transform .15s ease
}
.attachment-choice-icon svg{width:19px;height:19px}
.attachment-choice:active{transform:scale(.96);box-shadow:0 3px 9px rgba(var(--ref-shadow,99,93,53),.08)}
.attachment-choice:focus-visible{outline:2px solid color-mix(in srgb,var(--ref-plum,#635d35) 45%,transparent);outline-offset:2px}
.app.attachment-drawer-open{--composer-zone:calc(206px + var(--keyboard-offset))!important}
@media(max-width:560px){
  .attachment-drawer{gap:8px;padding-left:5px;padding-right:5px}
  .composer.attachments-open .attachment-drawer{padding-top:11px}
  .attachment-choice{padding:8px 11px;border-radius:16px;font-size:12px}
  .attachment-choice-icon{width:34px;height:34px;border-radius:11px}
  .attachment-choice-icon svg{width:18px;height:18px}
}
@media(prefers-reduced-motion:reduce){
  .attachment-drawer,.composer-plus,.attachment-choice,.attachment-choice-icon{transition:none!important}
}

/* source: menu-font-polish */
/* 0730 字体线:--editorial-serif/--menu-serif 原缺 Noto Serif SC,安卓中文掉回无衬线;此处补栈。
   小字仅调字号,布局(hero 158px/whisper 72px 定高)实测有余量。 */
:root{--editorial-serif:"Cormorant Garamond",Georgia,"Times New Roman","Songti SC","Noto Serif SC","SimSun",serif;--menu-serif:"Cormorant Garamond",Georgia,"Times New Roman","Songti SC","Noto Serif SC","SimSun",serif}
@media(max-width:560px){
.menu-panel .menu-since{font-size:9.5px!important}
.menu-panel .menu-days .lab{font-size:11px!important}
.menu-panel .menu-whisper small{font-size:9px!important}
.menu-panel .menu-status{font-size:10px!important}
.menu-panel .menu-sub{font-size:9.5px!important;line-height:1.25!important}
.menu-panel .menu-foot{font-size:10.5px!important}
}

/* source: colloq-chat */
/* ═══ colloq 0801:墨白聊天页重做(乐乐 08-01 拍板:照参考图结构,填我们自己的信息;
   参考图副标位=我们的 online 状态+缓存灯;黑白灰;TG 气泡包字宽) ═══ */
/* 设置页两大主题分组标签(全主题可见) */
#appearanceCard .theme-family{display:flex;align-items:baseline;gap:8px;margin:12px 2px 7px}
#appearanceCard .theme-family:first-of-type{margin-top:4px}
#appearanceCard .theme-family b{font:600 13.5px/1 var(--font-cn,serif);color:var(--text)}
#appearanceCard .theme-family small{font-size:10px;color:var(--text-faint,#999)}
/* 模型药丸弹窗(全主题可用,吃各家主题 token) */
.model-pop{position:absolute;bottom:calc(100% + 10px);left:6px;min-width:240px;max-width:88%;max-height:46vh;overflow-y:auto;background:var(--glass-strong,rgba(255,255,255,.95));border:1px solid var(--card-line,rgba(0,0,0,.08));border-radius:16px;box-shadow:0 18px 44px var(--surface-shadow,rgba(0,0,0,.16));padding:6px;z-index:60;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}
.model-pop-row{display:flex;align-items:center;gap:9px;width:100%;padding:10px 12px;border:0;border-radius:11px;background:transparent;color:var(--text,inherit);font:500 12.5px/1.25 var(--font-cn,serif);cursor:pointer;text-align:left;-webkit-tap-highlight-color:transparent}
.model-pop-row:active{background:var(--row-press,rgba(0,0,0,.06))}
.model-pop-row.active{background:var(--seg-track,rgba(0,0,0,.05))}
.model-pop-row .mp-dot{width:7px;height:7px;border-radius:50%;background:transparent;border:1.5px solid var(--text-faint,#999);flex:0 0 auto}
.model-pop-row.active .mp-dot{background:var(--accent,#b48ead);border-color:var(--accent,#b48ead)}
.model-pop-row .mp-name{flex:0 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.model-pop-row .mp-model{margin-left:auto;max-width:48%;font:500 10px/1 ui-monospace,monospace;color:var(--text-faint,#888);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.model-pop-manage{justify-content:center;color:var(--text-soft,#777);font-size:11.5px}
/* 头部双头像 + CONTEXT 栏骨架:平时全藏,只在墨白亮相 */
.peer-duo{display:none}
.peer-text{display:flex;flex-direction:column;align-items:center;min-width:0}
.noir-ctxbar{display:none}
/* ── 顶栏:参考图式左对齐 — 双头像 40 + 名字,名下一行 = online + 缓存灯 + 整段钮 ── */
:root[data-sms] .topbar{justify-content:flex-start!important}
:root[data-sms] .peerpill{flex-direction:row!important;flex:1 1 auto;min-width:0;gap:12px;padding:0 6px!important}
:root[data-sms] .peer-duo{display:flex;flex:0 0 auto}
:root[data-sms] .peer-duo i{display:block;width:40px;height:40px;border-radius:50%;background:var(--ref-bg-2) center/cover no-repeat;border:2px solid var(--ref-paper);box-shadow:0 2px 8px rgba(var(--ref-shadow),.16)}
:root[data-sms] .peer-duo .pa{background-image:var(--avatar-default)}
:root[data-sms] .peer-duo .pb{background-image:var(--human-avatar-default);margin-left:-14px}
:root[data-sms] .peer-text{align-items:flex-start}
:root[data-sms] .peerpill .name{font-size:21px!important;font-weight:600;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
:root[data-sms] .status-line{justify-content:flex-start;gap:9px;margin-top:4px}
:root[data-sms] .peerpill .status{margin-top:0!important;font:500 8.5px/1 var(--font-en),serif!important;letter-spacing:.30em!important;text-transform:uppercase;color:var(--text-faint)!important}
/* ── CONTEXT/COST 栏 + 用量进度条(参考图那根,分母 200K) ── */
:root[data-sms] .noir-ctxbar{display:block;margin:0 14px;padding:8px 2px 0}
:root[data-sms] .noir-ctx-row{display:flex;justify-content:space-between;align-items:baseline;font:600 9px/1 var(--font-en),serif;letter-spacing:.24em;color:var(--text-soft);text-transform:uppercase}
.noir-ctxbar b{font-weight:700;color:var(--text);letter-spacing:.08em;margin-left:7px;font-size:10px}
:root[data-sms] .noir-ctx-track{height:3px;border-radius:2px;background:rgba(var(--ref-shadow),.12);margin:7px 0 6px;overflow:hidden}
:root[data-sms] .noir-ctx-fill{display:block;height:100%;width:0;border-radius:2px;background:var(--sms-lamp);transition:width .3s ease}
/* ── 气泡:TG 规格 — 圆角 18、同侧相邻角 6、组尾小尖 5、padding 收紧;宽度包字(A 刀全局已修) ── */
:root[data-sms] .bubble{padding:7px 12px 6px!important;border-radius:18px!important}
:root[data-sms] .row.ai .bubble:has(+ .bubble){border-bottom-left-radius:6px!important}
:root[data-sms] .row.ai .bubble + .bubble{border-top-left-radius:6px!important}
:root[data-sms] .row.human .bubble:has(+ .bubble){border-bottom-right-radius:6px!important}
:root[data-sms] .row.human .bubble + .bubble{border-top-right-radius:6px!important}
:root[data-sms] .row.ai.tail .bubble.bubble-tail{border-bottom-left-radius:5px!important}
:root[data-sms] .row.human.tail .bubble.bubble-tail{border-bottom-right-radius:5px!important}
:root[data-sms] .bubble .meta-in{font-size:9px;margin-top:6px}
:root[data-sms] .bubble .txt{font:600 13.5px/1.5 -apple-system,"PingFang SC","HarmonyOS Sans SC","MiSans","Noto Sans SC","Microsoft YaHei",sans-serif!important;letter-spacing:.012em!important}
:root[data-sms] .row.ai{padding-left:0!important}
:root[data-sms] .row.ai::before{display:none!important}
:root[data-sms] .row.human{padding-right:0!important}
:root[data-sms] .row.human::after{display:none!important}
:root[data-sms] .bubble-stack{max-width:84%!important}
:root[data-sms] .row{margin-bottom:8px!important}
:root[data-sms] .row .bubble + .bubble{margin-top:3px!important}
/* 连发感:入场逐泡蹦(她侧也来;封顶防长文干等) */
:root[data-sms] .row[data-vkey].enter-ai .bubble{animation-delay:min(calc(var(--bi,0)*340ms),2400ms)!important}
:root[data-sms] .row[data-vkey].enter-human .bubble{animation-delay:min(calc(var(--bi,0)*240ms),1700ms)!important}
/* token 行/操作排靠左贴泡(她侧靠右) */
:root[data-sms] .message-usage{align-self:flex-start;max-width:100%!important;margin:3px 2px 0!important}
:root[data-sms] .usage-line{text-align:left!important;padding:0!important;background:transparent!important;border-radius:0!important}
:root[data-sms] .row.human .message-usage{align-self:flex-end}
:root[data-sms] .msg-actions{margin:3px 2px 0}
/* ── 思维卡:参考图虚线盒,常显成卡(收起=一行标签,展开=斜体正文),左对齐挂 AI 侧 ── */
:root[data-sms] .row.think{padding-left:0!important;padding-right:12px!important;margin:12px 0 8px!important}
:root[data-sms] .row.think.think-open{padding:0 12px 0 0!important}
:root[data-sms] .think-block{width:auto;max-width:84%;border:1px dashed rgba(var(--ref-shadow),.32);border-radius:12px;background:var(--sms-think-bg);padding:8px 12px;text-align:left}
:root[data-sms] .think-block.open{width:100%;max-width:84%;padding:9px 12px 11px;text-align:left;background:var(--sms-think-bg-open);border:1px dashed rgba(var(--ref-shadow),.32)}
:root[data-sms] .think-block.open .think-toggle{align-items:flex-start;gap:6px}
:root[data-sms] .think-rule{display:none!important}
:root[data-sms] .think-caption{font:600 9.5px/1.2 var(--font-en),serif!important;font-style:normal!important;letter-spacing:.22em!important;text-transform:uppercase;color:var(--think-label)!important}
:root[data-sms] .think-text{width:100%;margin:7px 0 0;text-align:left;font:italic 400 13px/1.85 var(--editorial-serif),"Songti SC","Noto Serif SC",serif!important;color:var(--think-body)!important}
:root[data-sms] .think-starline{display:none!important}
:root[data-sms] .think-body{margin-top:2px}
/* ── 动作行 → 参考图式工具卡:白底单行胶囊 + 左强调竖边 + 等宽字;不可展开的=右端 ✓,可展开的=空心/实心星 ── */
:root[data-sms] .row.act{padding-left:0!important;padding-right:12px!important}
:root[data-sms] .act-block{max-width:84%;min-width:min(66%,320px);background:var(--ref-glass-strong);border:1px solid rgba(var(--ref-shadow),.10);border-left:3px solid rgba(var(--ref-shadow),.5);border-radius:10px;padding:7px 11px;box-shadow:0 2px 10px rgba(var(--ref-shadow),.05)}
:root[data-sms] .act-toggle{display:flex;width:100%;align-items:center;gap:8px}
:root[data-sms] .act-glyph{color:var(--ref-plum)!important;font-size:.92em}
:root[data-sms] .act-label{flex:1 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font:500 11px/1.5 ui-monospace,"SF Mono",Menlo,Consolas,monospace!important;letter-spacing:.02em!important;color:var(--text-soft)!important}
:root[data-sms] .act-state{margin-left:auto;flex:none}
:root[data-sms] .act-toggle.bare::after{content:"✓";margin-left:auto;flex:none;font-size:12px;line-height:1;color:var(--ref-plum)}
:root[data-sms] .act-detail{background:var(--sms-detail-bg);border:1px solid rgba(var(--ref-shadow),.10)}
/* ── 模型弹窗黑白灰小灶 ── */
:root[data-sms] .model-pop{border:1px solid rgba(var(--ref-shadow),.10);box-shadow:0 18px 44px rgba(var(--ref-shadow),.18)}
:root[data-sms] .model-pop-row.active{background:var(--sms-active)}
/* 底部模型钮:罗马小字幕 + 展开箭头(参考图底部状态条) */
:root[data-sms] .composer-model-btn{font:600 9.5px/1.2 var(--font-en),serif!important;letter-spacing:.16em!important;text-transform:uppercase;color:var(--text-soft)!important}
:root[data-sms] .composer-model-btn::after{content:" ▴";font-size:8px;opacity:.7}
:root[data-sms] .composer-model-btn[aria-expanded="true"]::after{content:" ▾"}
/* ═══ colloq v2(乐乐 0801 傍晚实机规格书对表,黑白灰映射):
   尖尾巴/呼吸在线灯/COGITATIO 右上箭头/动效包/间距圆角字级对表;393 设计基准,全部相对单位无硬编码屏宽 ═══ */
/* 顶栏:标题 24 / online 13 级 + 在线蓝灯 #7EACD0(功能色保留,2.2s 呼吸不闪烁) */
:root[data-sms] .peerpill .name{font-size:24px!important}
:root[data-sms] .peerpill .status{font:400 11px/1.2 var(--font-en),serif!important;letter-spacing:.14em!important}
:root[data-sms] .cache-lamp .dot{animation:colloqBreath 2.2s ease-in-out infinite}
@keyframes colloqBreath{0%,100%{transform:scale(1);opacity:.7}50%{transform:scale(1.12);opacity:1}}
/* Context 行 11px / .24em */
:root[data-sms] .noir-ctx-row{font-size:11px;letter-spacing:.24em}
:root[data-sms] .noir-ctxbar b{font-size:11.5px}
/* ACTVS 卡对表:圆角 9 / 行距 6 / 行高 28-30 / 逐条 140ms 淡入 */
:root[data-sms] .act-block{border-radius:9px;padding:5px 11px;min-height:28px;display:flex;align-items:center;animation:colloqFadeIn .14s ease-out both}
:root[data-sms] .row.act{margin-top:6px!important;margin-bottom:6px!important}
@keyframes colloqFadeIn{from{opacity:0}to{opacity:1}}
/* 气泡对表:圆角 16 / 内距 9×12 / 正文 15px 衬线 / 纵距 9 / 长泡 80% / 时间 10px .72 */
:root[data-sms] .bubble{padding:9px 12px 8px!important;border-radius:16px!important}
:root[data-sms] .bubble .txt{font:500 15px/1.47 "Songti SC","Noto Serif SC",var(--font-cn),serif!important;letter-spacing:.01em!important}
:root[data-sms] .bubble-stack{max-width:80%!important}
:root[data-sms] .row{margin-bottom:9px!important}
:root[data-sms] .row .bubble + .bubble{margin-top:4px!important}
:root[data-sms] .bubble .meta-in{font-size:10px;opacity:.72}
/* TG 尖尾 v2:弧形 path 从底角切线流出(12×16 外伸10 叠2 圆尖收势);尾泡投影统一挪去 drop-shadow 防接缝暗线;附件泡不长尾 */
:root[data-sms] .row.ai.tail .bubble.bubble-tail:not(.att-only)::after{content:"";position:absolute;left:-10px;bottom:0;width:18px;height:16px;background:var(--ref-bubble-ai);clip-path:path("M18 0 L12 0 C11.65 7.2 8.8 12.4 0.8 15.1 C0.1 15.35 0.05 16 1 16 L18 16 Z")}
:root[data-sms] .row.human.tail .bubble.bubble-tail:not(.att-only)::after{content:"";position:absolute;right:-10px;bottom:0;width:18px;height:16px;background:var(--ref-bubble-human);clip-path:path("M0 0 L6 0 C6.35 7.2 9.2 12.4 17.2 15.1 C17.9 15.35 17.95 16 17 16 L0 16 Z")}
:root[data-sms] .row.tail .bubble.bubble-tail:not(.att-only){box-shadow:none!important;filter:drop-shadow(0 4px 14px rgba(var(--ref-shadow),.10))}
:root[data-sms] .row.ai.tail .bubble.bubble-tail{border-bottom-left-radius:6px!important}
:root[data-sms] .row.human.tail .bubble.bubble-tail{border-bottom-right-radius:6px!important}
/* 气泡入场:左泡 -8px 右泡 +8px 滑入 180ms(连发 stagger 沿用) */
:root[data-sms] .row[data-vkey].enter-ai .bubble{animation-name:colloqInL!important;animation-duration:.18s!important;animation-timing-function:ease-out!important;animation-fill-mode:both!important}
:root[data-sms] .row[data-vkey].enter-human .bubble{animation-name:colloqInR!important;animation-duration:.18s!important;animation-timing-function:ease-out!important;animation-fill-mode:both!important}
@keyframes colloqInL{from{transform:translateX(-8px);opacity:0}to{transform:none;opacity:1}}
@keyframes colloqInR{from{transform:translateX(8px);opacity:0}to{transform:none;opacity:1}}
/* COGITATIO 卡对表:宽 ≤68% 右缩进 / 内距 14×16 / 右上角箭头 220ms 旋转 / 标题 10.5 字距 .22em / 正文 13.5 */
:root[data-sms] .think-block{position:relative;max-width:68%;min-width:56%;margin-left:24px;padding:12px 16px}
:root[data-sms] .think-block.open{width:auto;max-width:68%;margin-left:24px;padding:14px 16px}
:root[data-sms] .think-state{position:absolute;top:9px;right:12px;transform:none;transition:transform .22s cubic-bezier(.22,.8,.22,1)}
:root[data-sms] .think-state::before{content:"⌃"!important;font-size:12px;line-height:1;color:var(--text-faint)}
:root[data-sms] .think-block.open .think-state::before{content:"⌃"!important}
:root[data-sms] .think-block.open .think-state{transform:rotate(180deg)}
:root[data-sms] .think-caption{font-size:10.5px!important;letter-spacing:.22em!important}
:root[data-sms] .think-text{font-size:13.5px!important;line-height:1.63!important}
:root[data-sms] .think-body{animation:colloqThink .22s cubic-bezier(.22,.8,.22,1) both}
@keyframes colloqThink{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
/* 模型弹窗对表:左 14 / 宽 ~200 / 圆角 14 / 内距 10 / 行高 32-34 / 左下浮起 160ms */
:root[data-sms] .model-pop{left:14px;min-width:200px;max-width:76%;border-radius:14px;padding:10px;transform-origin:left bottom;animation:colloqPop .16s ease-out both}
@keyframes colloqPop{from{opacity:0;transform:translateY(6px) scale(.98)}to{opacity:1;transform:none}}
:root[data-sms] .model-pop-row{padding:6px 10px;border-radius:8px;font-size:13.5px}
:root[data-sms] .model-pop-row.active{background:var(--sms-active);transition:background .12s ease}
/* 底部:模型状态 11.5 / .16em;图片钮圆角 12;输入框圆角 16 + 聚焦 160ms 加深(不改尺寸防抖) */
:root[data-sms] .composer-model-btn{font-size:11.5px!important;letter-spacing:.16em!important}
:root[data-sms] .composer-add-btn{border-radius:12px!important}
:root[data-sms] .composer .field{border-radius:16px!important;transition:border-color .16s ease,box-shadow .16s ease}
:root[data-sms] .composer .field:focus-within{border-color:rgba(var(--ref-shadow),.34)!important;box-shadow:0 4px 14px rgba(var(--ref-shadow),.10)!important}
/* 页面进入:180ms 淡入上移 */
:root[data-sms] .scroll{animation:colloqPage .18s ease-out both}
@keyframes colloqPage{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
/* 无障碍:reduce 只留短淡入 */
@media (prefers-reduced-motion: reduce){
  :root[data-sms] .cache-lamp .dot{animation:none}
  :root[data-sms] .row[data-vkey].enter-ai .bubble,:root[data-sms] .row[data-vkey].enter-human .bubble{animation-name:colloqFadeIn!important}
  :root[data-sms] .scroll,:root[data-sms] .model-pop,:root[data-sms] .think-body{animation:colloqFadeIn .12s ease-out both}
}

/* source: sms-layout-0802 */
/* ═══ 0802晚 聊天页四行骨架 v2(乐乐规格书):Header+Context+Scroll+Composer 四行 grid,
   composer 入流退掉 fixed,scroll 是唯一滚动行;安全区顶底各只算一次;
   全部挂 data-sms 墨白胭脂共用,纯布局零颜色。
   (注释里不能写星号斜杠连写,会截断注释吞掉下一条规则) ═══ */
/* 〇、骨架:app 本就 fixed inset0 吃动态视口(等效 100dvh),再补显式 100dvh;四行 grid,middle 行 minmax(0,1fr) 防撑破 */
:root[data-sms] #app{height:100dvh}
:root[data-sms] .app{display:grid;grid-template-rows:auto auto minmax(0,1fr) auto;min-height:0;overflow:hidden}
/* 一、顶栏:内容高 64 + 顶部安全区只算一次;菜单钮 44 定左 16 垂直居中;双头像 42 重叠 12;
   菜单↔头像 10(16+44+10=70 起)、头像↔标题 12;右侧两钮 44×44 距 8 定右 16(占位 96+16,标题区右让 112) */
:root[data-sms] .topbar{height:calc(64px + env(safe-area-inset-top))!important;min-height:calc(64px + env(safe-area-inset-top))!important;padding:env(safe-area-inset-top) 0 0!important}
:root[data-sms] .backbtn{left:16px!important;top:env(safe-area-inset-top)!important;bottom:0!important;margin:auto 0!important;width:44px!important;height:44px!important}
:root[data-sms] .peerpill{padding:0!important;margin:0 112px 0 70px;gap:12px!important;align-items:center;align-self:center}
:root[data-sms] .peer-duo i{width:42px;height:42px}
:root[data-sms] .peer-duo .pb{margin-left:-12px}
:root[data-sms] .header-actions{right:16px!important;top:env(safe-area-inset-top)!important;bottom:0!important;margin:auto 0!important;height:auto!important;gap:8px!important}
:root[data-sms] .topbtn{width:44px!important;height:44px!important}
/* 二、CONTEXT 行:与顶栏输入区同轨左右 16;顶栏↔标签 20;标签↔进度线 8;进度线↔消息区 14(走 scroll 的 padding-top) */
:root[data-sms] .noir-ctxbar{margin:0 16px!important;padding:20px 0 0!important}
:root[data-sms] .noir-ctx-track{margin:8px 0 0!important}
/* 三、消息滚动区:唯一滚动行;底衬 16+键盘位(composer 抬起时消息能全滚出来);
   渐隐 mask 改跟键盘走,不再绑旧 fixed composer 的 --composer-zone */
:root[data-sms] .scroll{min-height:0;overscroll-behavior:contain;scrollbar-width:none;padding:14px 16px calc(16px + var(--keyboard-offset,0px))!important;-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 var(--edge-fade-top),#000 calc(100% - var(--keyboard-offset,0px) - 14px),transparent calc(100% - var(--keyboard-offset,0px)))!important;mask-image:linear-gradient(to bottom,transparent 0,#000 var(--edge-fade-top),#000 calc(100% - var(--keyboard-offset,0px) - 14px),transparent calc(100% - var(--keyboard-offset,0px)))!important}
/* 四、纵距:同组 6 换向 12 模块↔消息 20 模块间 8;日期分隔线上下 18,不靠空白硬推 */
:root[data-sms] .scroll .row{margin-top:12px!important;margin-bottom:0!important}
:root[data-sms] .scroll .row.grouped{margin-top:6px!important}
:root[data-sms] .row .bubble + .bubble{margin-top:6px!important}
:root[data-sms] .scroll .row.act,:root[data-sms] .scroll .row.think{margin-top:20px!important;margin-bottom:0!important}
:root[data-sms] .scroll .row.act + .row,:root[data-sms] .scroll .row.think + .row{margin-top:20px!important}
:root[data-sms] .scroll .row.act + .row.act,:root[data-sms] .scroll .row.act + .row.think,:root[data-sms] .scroll .row.think + .row.act,:root[data-sms] .scroll .row.think + .row.think{margin-top:8px!important}
:root[data-sms] .scroll .day,:root[data-sms] .scroll .new-divider{margin:18px 0 0!important}
:root[data-sms] .day + .row,:root[data-sms] .new-divider + .row{margin-top:18px!important}
:root[data-sms] .new-divider-date{display:inline-flex;align-items:center;gap:6px}
/* 五、操作排:贴泡 4、高 16、图标距 14、默认 0.28,点亮 0.65(JS 挂 actions-live) */
:root[data-sms] .msg-actions{height:16px;align-items:center;margin:4px 2px 0!important;gap:14px!important;opacity:.28!important}
:root[data-sms] .msg-actions:hover,:root[data-sms] .msg-actions:focus-within,:root[data-sms] .row.actions-live .msg-actions{opacity:.65!important}
/* 六、系统模块同轨:行内衬清零满宽,思考卡 ACTVS 同宽留在时间线原位 */
:root[data-sms] .row.act,:root[data-sms] .row.think,:root[data-sms] .row.think.think-open{padding:0!important}
:root[data-sms] .act-block{width:100%!important;max-width:none!important;min-width:0!important}
:root[data-sms] .think-block,:root[data-sms] .think-block.open{width:100%!important;max-width:none!important;min-width:0!important;margin-left:0!important}
/* 七、气泡包字宽:短不拉宽,长的 80% 自然换行 */
:root[data-sms] .bubble-stack{max-width:80%!important;width:fit-content}
:root[data-sms] .bubble{width:fit-content;max-width:100%}
/* 八、输入区:grid 第四行入流不再 fixed;左右 16、底 max(10,安全区)手势条压不到模型钮;
   行一=输入框+爱心 52 同高顶对齐距 10;行二距 10、加号↔模型钮 10;键盘开时底衬收 8(沿用 kb 类) */
:root[data-sms] .composer{position:relative!important;left:auto!important;right:auto!important;bottom:auto!important;width:auto!important;margin:0!important;padding:10px 16px max(10px,env(safe-area-inset-bottom))!important;gap:10px!important;align-items:flex-start!important}
:root[data-sms] .app.kb .composer{padding-bottom:8px!important}
:root[data-sms] .composer .field{min-height:52px!important}
:root[data-sms] .floatbtn.send{width:52px!important;height:52px!important}
:root[data-sms] .composer-model-row{padding:0!important;margin:0!important;gap:10px!important}

/* source: slim-0803 */
/* ═══ 0803 统一瘦身(乐乐点单,GPT 出数,第一步只瘦身不动色) ═══ */
/* ── 花笺排(非 sms 全主题):正文 14.5 行高 1.52;泡 8x12 圆角 14 宽 78;行距 10 模块 14;
      时间戳 9.5;顶栏 76 标题 24 钮 40;输入框 44 圆角 14;爱心 40 圆角 12;投影全档降约两成半 ── */
/* 宽度不在这里设:花笺气泡宽由 bubble-stack 的 78 管着,气泡本身必须留 100(再压会双重打折变窄条) */
:root:not([data-sms]) .bubble{padding:8px 12px!important;border-radius:14px!important;box-shadow:0 3px 10px color-mix(in srgb,var(--brand-deep) 5%,transparent)!important}
:root:not([data-sms]) .bubble .txt{font-size:14.5px!important;line-height:1.52!important}
:root:not([data-sms]) .row{margin-bottom:10px!important}
:root:not([data-sms]) .day{margin:14px 0!important}
:root:not([data-sms]) .new-divider{margin:14px 0 12px!important}
:root:not([data-sms]) .message-meta{font-size:9.5px!important}
:root:not([data-sms]) .topbar{min-height:76px!important}
:root:not([data-sms]) .peerpill .name{font-size:24px!important}
:root:not([data-sms]) .backbtn,:root:not([data-sms]) .topbtn{width:40px!important;height:40px!important;border-radius:12px!important;box-shadow:0 4px 13px color-mix(in srgb,var(--brand-deep) 6%,transparent)!important}
:root:not([data-sms]) .composer .field{min-height:44px!important;border-radius:14px!important;box-shadow:0 7px 18px rgba(var(--ref-shadow),.10)!important}
:root:not([data-sms]) .send{width:40px!important;height:40px!important;border-radius:12px!important;box-shadow:0 6px 14px rgba(var(--ref-shadow),.11)!important}
:root:not([data-sms]) .floatbtn{border-radius:12px!important}
:root:not([data-sms]) .app{--composer-zone:calc(98px + var(--keyboard-offset))!important}
/* ── 墨白排(sms 双色):行高 1.40;泡 7x10 圆角 14(相邻角 6 尖尾照旧);同组 4 换人 9 模块 14;
      时间戳 9.5;顶栏内容高 58 钮 40;输入框 44 爱心 40;聚焦投影降档 ── */
:root[data-sms] .bubble{padding:7px 10px 6px!important;border-radius:14px!important}
:root[data-sms] .bubble .txt{line-height:1.4!important}
:root[data-sms] .bubble .meta-in{font-size:9.5px!important}
:root[data-sms] .scroll .row{margin-top:9px!important}
:root[data-sms] .scroll .row.grouped{margin-top:4px!important}
:root[data-sms] .row .bubble + .bubble{margin-top:4px!important}
:root[data-sms] .scroll .row.act,:root[data-sms] .scroll .row.think{margin-top:14px!important}
:root[data-sms] .scroll .row.act + .row,:root[data-sms] .scroll .row.think + .row{margin-top:14px!important}
:root[data-sms] .scroll .row.act + .row.act,:root[data-sms] .scroll .row.act + .row.think,:root[data-sms] .scroll .row.think + .row.act,:root[data-sms] .scroll .row.think + .row.think{margin-top:8px!important}
:root[data-sms] .scroll .day,:root[data-sms] .scroll .new-divider{margin:14px 0 0!important}
:root[data-sms] .day + .row,:root[data-sms] .new-divider + .row{margin-top:14px!important}
:root[data-sms] .topbar{height:calc(58px + env(safe-area-inset-top))!important;min-height:calc(58px + env(safe-area-inset-top))!important}
:root[data-sms] .backbtn,:root[data-sms] .topbtn{width:40px!important;height:40px!important}
:root[data-sms] .composer .field{min-height:44px!important}
:root[data-sms] .floatbtn.send{width:40px!important;height:40px!important}
:root[data-sms] .composer .field:focus-within{box-shadow:0 3px 10px rgba(var(--ref-shadow),.08)!important}

/* source: noir-chat-v1-1-0807 */
/* Fable Chat v1.0 follow-up: chat-only skin. Home, Commons, Me and flower themes stay untouched. */
:root[data-theme="noir"][data-sms] #app{
  --ref-bg-1:#f7f4ef;
  --ref-bg-2:#f4f1ec;
  --ref-bg-3:#f7f4ef;
  --ref-ink:#222220;
  --ref-plum:#222220;
  --ref-mauve:#77736e;
  --ref-bubble-ai:#292928;
  --ref-bubble-human:#cfe0ee;
  --ref-shadow:34,34,32;
  --ref-paper:#f7f4ef;
  --ref-paper-2:#f1eee9;
  --ref-glass:rgba(255,255,255,.58);
  --ref-glass-strong:rgba(255,255,255,.78);
  --ref-glass-line:rgba(34,34,32,.12);
  --sms-txt-ai:#f6f2ee;
  --sms-txt-human:#292220;
  --sms-meta-ai:rgba(246,242,238,.48);
  --sms-meta-human:rgba(41,34,32,.48);
  --sms-tick:rgba(41,34,32,.54);
  --sms-lamp:#2774b8;
  --sms-active:rgba(39,116,184,.09);
  --send-bg:#2774b8;
  --composer-bg:rgba(255,255,255,.56);
  --field-bg:rgba(255,255,255,.70);
  --field-line:rgba(34,34,32,.12);
  background:#f7f4ef!important;
}

/* Header follows the v1.0 drawing: compact real avatars, signature title and one quiet status line. */
:root[data-theme="noir"][data-sms] .topbar{
  height:calc(66px + env(safe-area-inset-top))!important;
  min-height:calc(66px + env(safe-area-inset-top))!important;
  background:#f7f4ef!important;
}
:root[data-theme="noir"][data-sms] .backbtn{
  width:44px!important;
  height:44px!important;
  left:10px!important;
  border:0!important;
  background:transparent!important;
  box-shadow:none!important;
}
:root[data-theme="noir"][data-sms] .backbtn svg{display:none!important}
:root[data-theme="noir"][data-sms] .backbtn::before{
  content:"←";
  font:400 31px/1 Georgia,serif;
  color:#292928;
}
:root[data-theme="noir"][data-sms] .peerpill{
  margin:0 64px 0 60px!important;
  gap:10px!important;
}
:root[data-theme="noir"][data-sms] .peer-duo i{
  width:40px!important;
  height:40px!important;
  border-color:#f7f4ef!important;
  box-shadow:0 2px 7px rgba(34,34,32,.12)!important;
}
:root[data-theme="noir"][data-sms] .peer-duo .pb{margin-left:-14px!important}
:root[data-theme="noir"][data-sms] .peerpill .name{
  display:block!important;
  overflow:visible!important;
  text-overflow:clip!important;
  font-family:var(--akscript,"Satisfy","Segoe Script","Cormorant Garamond",cursive)!important;
  font-size:32px!important;
  font-weight:400!important;
  line-height:1!important;
  letter-spacing:0!important;
  color:#222220!important;
}
:root[data-theme="noir"][data-sms] .peer-text{transform:translateY(7px)}
:root[data-theme="noir"][data-sms] .peerpill .status{
  font:400 10px/1.15 Georgia,"Times New Roman",serif!important;
  letter-spacing:.08em!important;
  text-transform:lowercase!important;
  color:#77736e!important;
}
:root[data-theme="noir"][data-sms] .header-actions{
  right:8px!important;
  gap:0!important;
}
:root[data-theme="noir"][data-sms] .header-actions .more{
  width:44px!important;
  height:44px!important;
  background:transparent!important;
  box-shadow:none!important;
}

/* The existing checklist stays fully functional as a compact edge tile. */
:root[data-theme="noir"][data-sms] #checklistBtn{
  position:fixed!important;
  z-index:40!important;
  top:auto!important;
  bottom:calc(env(safe-area-inset-bottom) + 140px)!important;
  right:0!important;
  left:auto!important;
  width:38px!important;
  height:38px!important;
  display:flex!important;
  flex-direction:column!important;
  align-items:center!important;
  justify-content:center!important;
  gap:0!important;
  padding:0 0 0 2px!important;
  border:1px solid rgba(34,34,32,.16)!important;
  border-right:0!important;
  border-radius:9px 0 0 9px!important;
  background:rgba(255,255,255,.82)!important;
  color:#2774b8!important;
  box-shadow:0 5px 15px rgba(34,34,32,.08)!important;
  -webkit-backdrop-filter:blur(12px)!important;
  backdrop-filter:blur(12px)!important;
}
:root[data-theme="noir"][data-sms] #checklistBtn svg{display:none!important}
:root[data-theme="noir"][data-sms] #checklistBtn::before{
  content:"";
  width:19px;
  height:19px;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%232774b8' stroke-width='1.65' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3.5' y='3.5' width='17' height='17' rx='2.5'/%3E%3Cpath d='M7 9l1.3 1.3L10.8 8M13 9h4M7 15l1.3 1.3 2.5-2.3M13 15h4'/%3E%3C/svg%3E") center/19px 19px no-repeat;
}
:root[data-theme="noir"][data-sms] #checklistBtn::after{
  content:none;
}

/* Context remains one quiet 34px band; progress uses the rose accent from the drawing. */
:root[data-theme="noir"][data-sms] .noir-ctxbar{
  margin:0 12px!important;
  padding:5px 0 0!important;
  min-height:34px;
  background:#f7f4ef;
}
:root[data-theme="noir"][data-sms] .noir-ctx-row{
  font:600 10px/1 Georgia,"Times New Roman",serif!important;
  letter-spacing:.16em!important;
}
:root[data-theme="noir"][data-sms] .noir-ctxbar b{font-size:10px!important;letter-spacing:.04em!important}
:root[data-theme="noir"][data-sms] .noir-ctx-track{
  height:2px!important;
  margin:7px 0 0!important;
  border-radius:0!important;
  background:rgba(34,34,32,.11)!important;
}
:root[data-theme="noir"][data-sms] .noir-ctx-fill{
  border-radius:0!important;
  background:#d45f83!important;
}

/* Narrower, squarer bubbles: long messages become compact blocks instead of horizontal bars. */
:root[data-theme="noir"][data-sms] .scroll{
  padding:12px 10px calc(12px + var(--keyboard-offset,0px))!important;
}
:root[data-theme="noir"][data-sms] .row.ai .bubble-stack{max-width:72%!important}
:root[data-theme="noir"][data-sms] .row.human .bubble-stack{max-width:70%!important}
:root[data-theme="noir"][data-sms] .bubble-stack{
  width:fit-content!important;
  min-width:0!important;
}
:root[data-theme="noir"][data-sms] .bubble{
  width:fit-content!important;
  max-width:100%!important;
  min-width:0!important;
  padding:6px 12px 6px!important;
  border-radius:12px!important;
  box-shadow:none!important;
}
:root[data-theme="noir"][data-sms] .row.ai .bubble{background:#292928!important}
:root[data-theme="noir"][data-sms] .row.human .bubble{background:#cfe0ee!important}
:root[data-theme="noir"][data-sms] .bubble .txt{
  font:500 15px/1.34 "Source Han Serif SC","Noto Serif SC","Songti SC",serif!important;
  font-stretch:100%!important;
  font-synthesis:none!important;
  letter-spacing:.01em!important;
}
:root[data-theme="noir"][data-sms] .bubble .meta-in{
  margin:8px -2px -2px 9px!important;
  font:500 8.5px/1 ui-monospace,"SFMono-Regular",Consolas,monospace!important;
  letter-spacing:0!important;
  opacity:.9!important;
}
:root[data-theme="noir"][data-sms] .meta-in .tick-in{margin-left:3px!important}
:root[data-theme="noir"][data-sms] .row.ai .bubble:has(+ .bubble){border-bottom-left-radius:4px!important}
:root[data-theme="noir"][data-sms] .row.ai .bubble + .bubble{border-top-left-radius:4px!important}
:root[data-theme="noir"][data-sms] .row.human .bubble:has(+ .bubble){border-bottom-right-radius:4px!important}
:root[data-theme="noir"][data-sms] .row.human .bubble + .bubble{border-top-right-radius:4px!important}
:root[data-theme="noir"][data-sms] .row.ai.tail .bubble.bubble-tail{border-bottom-left-radius:4px!important}
:root[data-theme="noir"][data-sms] .row.human.tail .bubble.bubble-tail{border-bottom-right-radius:4px!important}
:root[data-theme="noir"][data-sms] .row.ai.tail .bubble.bubble-tail:not(.att-only)::after{
  left:-8px!important;
  width:14px!important;
  height:13px!important;
  background:#292928!important;
}
:root[data-theme="noir"][data-sms] .row.human.tail .bubble.bubble-tail:not(.att-only)::after{
  right:-8px!important;
  width:14px!important;
  height:13px!important;
  background:#cfe0ee!important;
}
:root[data-theme="noir"][data-sms] .scroll .row{margin-top:14px!important}
:root[data-theme="noir"][data-sms] .scroll .row.grouped{margin-top:5px!important}
:root[data-theme="noir"][data-sms] .row .bubble + .bubble{margin-top:5px!important}

/* Runtime rows are a quiet two-line band, not another set of chat cards. */
:root[data-theme="noir"][data-sms] .scroll .row.act,
:root[data-theme="noir"][data-sms] .scroll .row.think{margin-top:8px!important}
:root[data-theme="noir"][data-sms] .act-block{
  min-height:30px!important;
  padding:0 4px!important;
  border:0!important;
  border-top:1px solid rgba(34,34,32,.10)!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
}
:root[data-theme="noir"][data-sms] .think-block:not(.open){
  min-height:30px!important;
  padding:0 4px!important;
  border:0!important;
  border-top:1px solid rgba(34,34,32,.10)!important;
  border-radius:0!important;
  background:transparent!important;
  display:flex;
  align-items:center;
}
:root[data-theme="noir"][data-sms] .act-label,
:root[data-theme="noir"][data-sms] .think-caption{opacity:.58!important}
:root[data-theme="noir"][data-sms] .msg-actions,
:root[data-theme="noir"][data-sms] .message-usage{opacity:.18!important;transition:opacity .16s ease}
:root[data-theme="noir"][data-sms] .row.actions-live .msg-actions,
:root[data-theme="noir"][data-sms] .row.actions-live .message-usage{opacity:.62!important}

/* A clean writing row with a quiet tool row below: add and model stay together. */
:root[data-theme="noir"][data-sms] .composer{
  display:grid!important;
  grid-template-columns:24px minmax(0,1fr) 44px!important;
  grid-template-rows:44px 20px!important;
  grid-template-areas:"field field send" "add model ."!important;
  align-items:center!important;
  column-gap:7px!important;
  row-gap:3px!important;
  width:calc(100% - 24px)!important;
  max-width:calc(100% - 24px)!important;
  min-width:0!important;
  justify-self:center!important;
  box-sizing:border-box!important;
  margin:0 12px max(8px,env(safe-area-inset-bottom))!important;
  padding:8px!important;
  border:1px solid rgba(255,255,255,.82)!important;
  border-radius:17px!important;
  background:rgba(255,255,255,.56)!important;
  box-shadow:0 10px 28px rgba(34,34,32,.10)!important;
  -webkit-backdrop-filter:blur(18px) saturate(1.08)!important;
  backdrop-filter:blur(18px) saturate(1.08)!important;
}
:root[data-theme="noir"][data-sms] .composer .field{
  grid-area:field!important;
  min-width:0!important;
  min-height:44px!important;
  border-radius:12px!important;
  background:rgba(255,255,255,.72)!important;
  box-shadow:none!important;
}
:root[data-theme="noir"][data-sms] .composer textarea{
  width:100%!important;
  min-width:0!important;
  padding:0 2px!important;
  font:500 14px/1.35 "Source Han Serif SC","Noto Serif SC","Songti SC",serif!important;
}
:root[data-theme="noir"][data-sms] .composer textarea::placeholder{font:400 13px/1.2 Georgia,serif!important}
:root[data-theme="noir"][data-sms] .emojibtn,
:root[data-theme="noir"][data-sms] #micBtn{display:none!important}
:root[data-theme="noir"][data-sms] .composer-model-row{display:contents!important}
:root[data-theme="noir"][data-sms] .composer-add-btn{
  grid-area:add!important;
  width:20px!important;
  height:20px!important;
  min-width:20px!important;
  padding:0!important;
  justify-self:start!important;
  border:0!important;
  border-radius:7px!important;
  color:#77736e!important;
  opacity:.78!important;
}
:root[data-theme="noir"][data-sms] .composer-plus{width:12px!important;height:12px!important}
:root[data-theme="noir"][data-sms] .composer-plus::before,
:root[data-theme="noir"][data-sms] .composer-plus::after{width:11px!important;height:1.4px!important}
:root[data-theme="noir"][data-sms] .composer-model-btn{
  grid-area:model!important;
  min-width:0!important;
  max-width:100%!important;
  justify-self:start!important;
  padding:2px 4px!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
  font:500 12px/1.2 "Source Han Serif SC","Noto Serif SC","Songti SC",serif!important;
  letter-spacing:.02em!important;
  color:#77736e!important;
}
:root[data-theme="noir"][data-sms] .floatbtn.send{
  grid-area:send!important;
  position:relative!important;
  width:44px!important;
  height:44px!important;
  border-radius:50%!important;
  background:#2774b8!important;
  color:#fff!important;
}
:root[data-theme="noir"][data-sms] .floatbtn.send svg{display:none!important}
:root[data-theme="noir"][data-sms] .floatbtn.send::before{
  content:"";
  position:absolute;
  inset:0;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 18V6M7.8 10.2 12 6l4.2 4.2'/%3E%3C/svg%3E") center/21px 21px no-repeat;
}
:root[data-theme="noir"][data-sms] .floatbtn.send::after{
  content:none;
}
:root[data-theme="noir"][data-sms] .attachment-drawer{grid-column:1/-1!important}

/* Me identity rows: names lead directly into each person's signature. */
:root[data-theme="noir"][data-sms] .profile-panel .profile-handle{display:none!important}

/* Keep the front-end crab on this page and soften it whenever it crosses readable content. */
:root[data-theme="noir"][data-sms] .chat-clawd{
  display:block!important;
  width:38px!important;
  height:29px!important;
  opacity:.90!important;
  transition:opacity .18s ease!important;
}
:root[data-theme="noir"][data-sms] .chat-clawd.is-over-chat-text{opacity:.18!important}

@media (max-width:360px){
  :root[data-theme="noir"][data-sms] .composer{grid-template-columns:24px minmax(0,1fr) 42px!important;width:calc(100% - 16px)!important;max-width:calc(100% - 16px)!important;margin-left:8px!important;margin-right:8px!important}
  :root[data-theme="noir"][data-sms] .floatbtn.send{width:42px!important;height:42px!important}
}
@media (prefers-reduced-motion:reduce){
  :root[data-theme="noir"][data-sms] .chat-clawd{transition:none!important}
}

/* source: chatfix-0809 */
/* ── chatfix-0809: 气泡/输入框/便签 润色(2026-08-09) ── */

/* 1. 气泡文字: 字重→400,行距→1.65,Songti 在低行距下中文很难读 */
:root[data-theme="noir"][data-sms] .bubble .txt{
  font:400 15px/1.65 "Noto Serif SC","Source Han Serif SC","Songti SC",serif!important;
  letter-spacing:.015em!important;
}

/* 2. 输入框整体: field 行高从44→48px,底行从20→23px,padding 留匀称 */
:root[data-theme="noir"][data-sms] .composer{
  grid-template-rows:48px 23px!important;
  row-gap:5px!important;
  padding:9px 10px!important;
}
:root[data-theme="noir"][data-sms] .composer .field{
  min-height:48px!important;
  border-radius:11px!important;
  background:rgba(255,255,255,.90)!important;
  box-shadow:none!important;
}
/* textarea: 字重400,行距1.5,字体和气泡统一 */
:root[data-theme="noir"][data-sms] .composer textarea{
  font:400 15px/1.5 "Noto Serif SC","Source Han Serif SC","Songti SC",serif!important;
  padding:0 5px!important;
}
/* placeholder: 和正文同字族,色号轻一档 */
:root[data-theme="noir"][data-sms] .composer textarea::placeholder{
  font:400 13px/1.4 "Noto Serif SC","Source Han Serif SC","Songti SC",serif!important;
  color:#b2aea9!important;
  letter-spacing:.04em!important;
}
/* model 标签: UI 标签走系统无衬线小字,从12px压到10.5px */
:root[data-theme="noir"][data-sms] .composer-model-btn{
  font:400 10.5px/1.2 system-ui,-apple-system,"PingFang SC","Microsoft YaHei",sans-serif!important;
  letter-spacing:.025em!important;
  padding:2px 5px!important;
}
/* add 按钮: 极细边框+半透明底面,让按钮找得到 */
:root[data-theme="noir"][data-sms] .composer-add-btn{
  width:22px!important;
  height:22px!important;
  border:1px solid rgba(34,34,32,.18)!important;
  border-radius:7px!important;
  background:rgba(255,255,255,.55)!important;
  opacity:1!important;
}
/* send 发送键: 换成近黑暖色,与整体调性一致(原纯蓝#2774b8 太跳) */
:root[data-theme="noir"][data-sms] .floatbtn.send{
  background:#222220!important;
  box-shadow:0 4px 14px rgba(34,34,32,.24)!important;
}

/* 3. 便签小标 */
/* brand 顶行: 字号从8px→9.5px,间距从.28em→.16em,别再过宽难辨 */
.checklist-brand{
  font-size:9.5px!important;
  letter-spacing:.16em!important;
}
/* section 段标: 改用 font-cn(系统宋体/黑体),兜住"项"字不在系统无衬线里跑偏 */
.checklist-section{
  font:600 9.5px/1.3 var(--font-cn)!important;
  letter-spacing:.14em!important;
  text-transform:uppercase;
}
/* meta 标签(key): 略小略淡,作为 label */
.checklist-meta span:first-child{
  font:500 11px/1.5 var(--editorial-sans)!important;
  letter-spacing:.05em!important;
  opacity:.62!important;
}
/* meta 值(value): 正文感,走 font-cn */
.checklist-meta span:last-child{
  font:400 11.5px/1.5 var(--font-cn)!important;
  letter-spacing:.02em!important;
}
/* 标题字号微抬 */
.checklist-head h2{font-size:28px!important}

/* source: together-listen-ui-0808 */
/* Listen room · 0808: app-first 网易云方向，本地/直链保留为兼容源。 */
.together-panel{--listen-blue:#1265be;--listen-line:color-mix(in srgb,var(--ref-ink,var(--text)) 20%,transparent)}
.together-shell{max-width:680px}
.together-top{grid-template-columns:46px 1fr 58px;padding:calc(env(safe-area-inset-top) + 10px) 18px 8px;border-bottom:1px solid var(--listen-line)}
.together-back{width:40px;height:40px;border:1px solid transparent;border-radius:50%;background:transparent;box-shadow:none}
.together-back:hover,.together-back:focus-visible{border-color:var(--listen-line);background:color-mix(in srgb,var(--ref-chip,#fff) 42%,transparent);outline:0}
.together-back svg{width:22px;height:22px;stroke-width:1.7}
.together-heading{text-align:left;padding-left:4px}
.together-heading strong{font:italic 500 31px/.95 var(--editorial-serif,Georgia,serif)}
.together-heading small{margin-top:6px;font-size:8.5px;letter-spacing:.2em}
.together-source-chip{justify-self:end;color:var(--listen-blue);font:600 8px/1 var(--editorial-sans,system-ui);letter-spacing:.14em}
.together-body{overflow:auto;padding:12px 18px calc(env(safe-area-inset-bottom) + 22px);scrollbar-width:none}
.together-body::-webkit-scrollbar{display:none}
.together-presence{min-height:58px;margin:0 0 10px;padding:9px 0 10px;border:0;border-bottom:1px solid var(--listen-line);border-radius:0;background:transparent;box-shadow:none}
.together-avatar{display:none}
.together-room-cap{margin-bottom:5px;color:var(--ref-mauve,var(--text-soft));font:600 7.5px/1 var(--editorial-sans,system-ui);letter-spacing:.18em}
.together-presence-copy strong{font:500 13px/1.15 var(--chat-type,serif)}
.together-presence-copy small{margin-top:3px;font-size:9.5px}
.together-listening-count{margin-left:auto;display:grid;grid-template-columns:auto auto 7px 7px;align-items:center;gap:7px;color:var(--ref-ink,var(--text))}
.together-listening-count b{font:500 14px/1 var(--editorial-serif,Georgia,serif)}
.together-listening-count small{font:600 7px/1 var(--editorial-sans,system-ui);letter-spacing:.12em}
.together-listening-count i{width:7px;height:7px;border-radius:50%;background:var(--listen-blue)}
.together-tabs{width:min(250px,75%);align-self:center;margin:0 auto 12px;padding:0;border:0;border-radius:0;background:transparent;border-bottom:1px solid var(--listen-line)}
.together-tab{position:relative;border-radius:0;padding:9px 8px 10px;font-size:11.5px;background:transparent!important;box-shadow:none!important}
.together-tab.active{color:var(--listen-blue)}
.together-tab.active::after{content:"";position:absolute;left:28%;right:28%;bottom:-1px;height:2px;background:var(--listen-blue)}
.together-mode{flex:none;gap:12px}
.together-card{border:1px solid var(--listen-line);border-radius:14px;background:color-mix(in srgb,var(--ref-glass-strong,rgba(255,253,246,.9)) 78%,transparent);box-shadow:0 9px 24px rgba(var(--ref-shadow,99,93,53),.055)}
.together-queue-stage{height:104px;display:grid;grid-template-columns:74px minmax(94px,126px) 74px;justify-content:center;align-items:end;gap:16px;padding:2px 0 1px}
.together-queue-stage button{border:0;background:transparent;color:inherit;padding:0}
.together-queue-side,.together-queue-current{min-width:0;display:flex;flex-direction:column;align-items:center;gap:6px}
.together-queue-side>span,.together-queue-current>span{position:relative;display:block;border:1px solid var(--listen-line);background:color-mix(in srgb,var(--ref-chip,#fff) 42%,transparent)}
.together-queue-side>span{width:58px;height:58px;opacity:.62}
.together-queue-current>span{width:88px;height:78px;background:linear-gradient(145deg,color-mix(in srgb,var(--listen-blue) 11%,var(--ref-chip,#fff)),color-mix(in srgb,var(--listen-blue) 3%,transparent));box-shadow:0 9px 18px rgba(var(--ref-shadow,99,93,53),.08)}
.together-queue-side>span::before,.together-queue-side>span::after,.together-queue-current>span::before,.together-queue-current>span::after{content:"";position:absolute;border:1px solid color-mix(in srgb,var(--listen-blue) 46%,transparent);border-radius:50%}
.together-queue-side>span::before{inset:15px}.together-queue-side>span::after{inset:24px;background:var(--listen-blue);border:0}
.together-queue-current>span::before{inset:18px 23px}.together-queue-current>span::after{inset:31px 36px;background:var(--listen-blue);border:0}
.together-queue-current i{position:absolute;left:50%;top:-6px;width:1px;height:90px;background:linear-gradient(var(--listen-blue),transparent);opacity:.24}
.together-queue-stage small,.together-queue-stage b{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:600 7px/1 var(--editorial-sans,system-ui);letter-spacing:.12em;color:var(--ref-mauve,var(--text-soft))}
.together-queue-current b{color:var(--listen-blue)}
.together-empty{position:relative;padding:18px 17px 16px;text-align:left;overflow:hidden}
.together-empty::after,.together-now::after{content:"";position:absolute;inset:5px;border:1px solid color-mix(in srgb,var(--ref-ink,var(--text)) 13%,transparent);border-radius:9px;pointer-events:none}
#togetherListenMode .together-empty-mark{display:none}
.together-empty-mark{position:relative;float:left;width:86px;height:86px;margin:0 16px 12px 0;border-radius:1px;color:var(--listen-blue);background:linear-gradient(145deg,color-mix(in srgb,var(--listen-blue) 10%,var(--ref-chip,#fff)),color-mix(in srgb,var(--listen-blue) 3%,transparent));box-shadow:inset 0 0 0 1px var(--listen-line);overflow:hidden}
.together-empty-mark::before,.together-empty-mark::after,.together-empty-mark span::before{content:"";position:absolute;border:1px solid color-mix(in srgb,var(--listen-blue) 55%,transparent);border-radius:50%;inset:20px}
.together-empty-mark::after{inset:30px}
.together-empty-mark span::before{inset:40px;background:var(--listen-blue);border:0}
.together-empty .together-kicker{padding:2px 0 8px;border-bottom:1px solid var(--listen-line);color:var(--listen-blue);font-size:7.5px}
.together-empty h2{margin:7px 0 6px;font:500 22px/1.18 var(--editorial-serif,Georgia,serif)}
.together-empty p{min-height:46px;margin:0;text-align:left;font-size:10px;line-height:1.6}
.together-audio-url{clear:both;margin-top:2px}
.together-url input{height:38px;border-color:var(--listen-line);border-radius:1px;background:transparent;font-size:11px}
.together-listen-actions{clear:both;gap:0;margin-top:8px}
.together-listen-actions .together-btn+ .together-btn{border-left:0}
.together-btn{min-height:38px;border-color:var(--listen-line);border-radius:2px;background:transparent;font-size:11px;box-shadow:none!important}
.together-btn.primary{background:var(--listen-blue);color:#fff}
.together-now{position:relative;padding:20px 17px 16px;overflow:hidden}
.together-change-track{position:absolute;right:17px;top:18px;z-index:1;border:0;background:transparent;color:var(--listen-blue);font:600 7px/1 var(--editorial-sans,system-ui);letter-spacing:.11em;cursor:pointer}
.together-kicker{font-size:7.5px;letter-spacing:.2em}
.together-track-title{max-width:85%;margin:10px 0 5px;font:500 29px/1.08 var(--editorial-serif,Georgia,serif)}
.together-track-meta{font-size:10px;letter-spacing:.08em;text-transform:uppercase}
.together-now audio{display:none}
.together-timeline{display:grid;grid-template-columns:34px 1fr 34px;align-items:center;gap:7px;margin-top:19px;font:500 8.5px/1 var(--editorial-sans,system-ui);font-variant-numeric:tabular-nums}
.together-timeline span:last-child{text-align:right}
.together-timeline input{width:100%;height:20px;margin:0;accent-color:var(--listen-blue)}
.together-transport{display:grid;grid-template-columns:42px 56px 42px 42px;justify-content:center;align-items:center;gap:10px;margin:9px 0 7px}
.together-transport button{position:relative;width:42px;height:42px;display:grid;place-items:center;border:0;background:transparent;color:var(--ref-ink,var(--text));cursor:pointer}
.together-transport button:disabled{opacity:.22;cursor:default}
.together-transport svg{width:22px;height:22px;fill:currentColor;stroke:currentColor;stroke-width:0}
.together-transport .together-play{width:56px;height:56px;border-radius:50%;background:var(--listen-blue);color:#fff}
.together-play .pause-shape{display:none}
.together-play[data-playing="true"] .play-shape{display:none}
.together-play[data-playing="true"] .pause-shape{display:block}
.together-repeat svg{fill:none;stroke-width:1.5}
.together-repeat small{position:absolute;right:4px;bottom:4px;font:600 7px/1 var(--editorial-sans,system-ui);opacity:0}
.together-repeat[aria-pressed="true"]{color:var(--listen-blue)}
.together-repeat[aria-pressed="true"] small{opacity:1}
.together-note{font-size:8.5px;text-align:center}
.together-pair-card{position:relative;min-height:132px;padding:14px 14px 10px;border:1px solid var(--listen-line);background:color-mix(in srgb,var(--ref-glass,rgba(255,255,252,.66)) 60%,transparent)}
.together-pair-head{display:flex;align-items:flex-start;gap:10px}
.together-pair-head>span{min-width:0;display:flex;flex-direction:column;text-transform:uppercase}
.together-pair-head b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:500 9px/1.2 var(--editorial-serif,Georgia,serif);letter-spacing:.06em}
.together-pair-head small{margin-top:4px;color:var(--ref-mauve,var(--text-soft));font:600 7px/1 var(--editorial-sans,system-ui);letter-spacing:.14em}
.together-pair-head em{color:var(--listen-blue);font-style:normal}
.together-pair-head>i{width:6px;height:6px;margin:4px 0 0 auto;flex:none;border-radius:50%;background:var(--listen-blue);box-shadow:0 0 0 4px color-mix(in srgb,var(--listen-blue) 10%,transparent)}
.together-pair-link{display:grid;grid-template-columns:62px minmax(60px,1fr) 62px;align-items:center;margin:8px auto 5px;max-width:420px}
.together-person{min-width:0;display:flex;flex-direction:column;align-items:center;gap:4px}
.together-person>span{width:37px;height:37px;display:grid;place-items:center;border-radius:50%;background:var(--listen-blue);color:#fff;box-shadow:0 0 0 6px color-mix(in srgb,var(--listen-blue) 7%,transparent);font:500 13px/1 var(--editorial-serif,Georgia,serif)}
.together-person small{max-width:62px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ref-mauve,var(--text-soft));font:500 7px/1 var(--editorial-sans,system-ui);letter-spacing:.08em;text-transform:uppercase}
.together-wave{width:100%;height:42px;overflow:visible}
.together-wave path{fill:none;stroke:color-mix(in srgb,var(--listen-blue) 72%,transparent);stroke-width:1;vector-effect:non-scaling-stroke}
.together-pair-foot{display:flex;justify-content:space-between;gap:10px;padding-top:7px;border-top:1px solid var(--listen-line);font:600 7px/1 var(--editorial-sans,system-ui);letter-spacing:.13em}
.together-pair-foot b{color:var(--listen-blue)}
.together-pair-foot small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ref-mauve,var(--text-soft));font:inherit}
.together-chat .together-btn{min-height:42px}
#togetherReadMode .together-empty-mark{display:grid;float:none;width:54px;height:54px;margin:0 auto 12px;border-radius:50%}
@media(max-width:420px){
  .together-top{padding-left:12px;padding-right:12px}.together-body{padding-left:13px;padding-right:13px}
  .together-listening-count{gap:5px}.together-listening-count small{display:none}
  .together-empty-mark{width:76px;height:76px;margin-right:13px}.together-empty h2{font-size:20px}.together-empty p{font-size:9.5px}
  .together-pair-card{min-height:126px}.together-pair-link{margin-top:6px}
}
@media(max-height:720px){
  .together-top{padding-top:calc(env(safe-area-inset-top) + 5px)}.together-presence{min-height:48px;padding-top:5px}.together-room-cap{display:none}
  .together-tabs{margin-bottom:8px}.together-empty{padding-top:13px}.together-pair-card{min-height:118px}
}
@media(prefers-reduced-motion:reduce){.together-panel.open .together-pair-card{animation:none}}

/* source: kb-compact-composer-0810 */
/* Focus is the reliable keyboard signal: resize-mode Chrome may shrink the
   viewport without keeping .app.kb set. The writing row grows upward while
   the add/model row remains a separate track below it. */
:root[data-theme="noir"][data-sms] .composer.typing-focus{
  grid-template-columns:24px minmax(0,1fr) 42px!important;
  grid-template-rows:minmax(46px,auto) 23px!important;
  grid-template-areas:"field field send" "add model ."!important;
  column-gap:7px!important;
  row-gap:5px!important;
  width:calc(100% - 16px)!important;
  max-width:calc(100% - 16px)!important;
  margin:0 8px 4px!important;
  padding:5px 6px!important;
  align-items:end!important;
}
:root[data-theme="noir"][data-sms] .composer.typing-focus .field{
  height:auto!important;
  min-height:46px!important;
  max-height:110px!important;
  overflow:hidden!important;
  align-items:flex-end!important;
}
:root[data-theme="noir"][data-sms] .composer.typing-focus textarea{
  min-height:32px!important;
  max-height:96px!important;
  overflow-y:auto!important;
  overscroll-behavior:contain;
  scrollbar-width:none;
}
:root[data-theme="noir"][data-sms] .composer.typing-focus textarea::-webkit-scrollbar{
  width:0;
  height:0;
}
:root[data-theme="noir"][data-sms] .composer.typing-focus .floatbtn.send{
  width:42px!important;
  height:42px!important;
  align-self:end!important;
}

/* source: vesper-opening-0810 */
.vesper-opening{display:none}
:root[data-theme="noir"][data-sms] .vesper-opening{
  position:fixed;inset:0;z-index:5000;display:block;overflow:hidden;
  color:#101010;background:#fff;
  opacity:0;visibility:hidden;pointer-events:none;
  -webkit-font-smoothing:antialiased;text-rendering:geometricPrecision;
  transform:translateZ(0);will-change:opacity;
  transition:opacity .58s cubic-bezier(.4,0,.2,1),visibility 0s linear .58s;
}
:root[data-theme="noir"][data-sms] .vesper-opening.is-visible{
  opacity:1;visibility:visible;transition:none;
}
:root[data-theme="noir"][data-sms] .vesper-opening.is-leaving{
  opacity:0;transition:opacity .58s cubic-bezier(.4,0,.2,1);
}
.vesper-opening-inner{
  position:absolute;left:50%;top:51.5%;width:min(82vw,470px);
  transform:translate3d(-50%,-50%,0);text-align:center;
}
.vesper-question{
  margin:0;color:#101010;
  font:italic 500 clamp(13px,3.55vw,16px)/1.25 "Cormorant Garamond",Georgia,"Times New Roman",serif;
  letter-spacing:-.01em;
}
.vesper-instruction{
  margin:16px 0 2px;color:#141414;
  font:400 clamp(12px,3.25vw,15px)/1.2 "Cormorant Garamond",Georgia,"Times New Roman",serif;
  letter-spacing:.08em;
}
.vesper-signature{
  display:block;width:100%;height:auto;margin:0 auto;overflow:visible;
  shape-rendering:geometricPrecision;
}
.vesper-signature-ink,.vesper-signature-eraser,.vesper-signature-line,.vesper-signature-stem{
  fill:none;stroke:#0c0c0c;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round;
  vector-effect:non-scaling-stroke;
}
.vesper-signature-eraser{display:none}
.vesper-signature-heart{fill:#0c0c0c;transform-origin:center;filter:none}
.vesper-opening-footer{margin:-3px 0 0;color:#101010;text-align:center}
.vesper-opening-footer strong{
  display:block;font:italic 500 clamp(12px,3.2vw,14px)/1.25 "Cormorant Garamond",Georgia,"Times New Roman",serif;
  letter-spacing:0;
}
.vesper-opening-footer span{
  display:block;margin-top:7px;font:400 clamp(11px,2.95vw,13px)/1.2 "Cormorant Garamond",Georgia,"Times New Roman",serif;
  letter-spacing:.02em;
}
.vesper-opening-footer .vesper-amp,.entry-cover-amp{
  display:inline-block;margin:0 .06em;
  font-family:Georgia,"Times New Roman",serif;font-style:normal;font-weight:500;
  line-height:1;letter-spacing:0;
}
.vesper-opening.is-leaving .vesper-opening-inner{
  transform:translate3d(-50%,calc(-50% - 5px),0);
  transition:transform .58s cubic-bezier(.22,.8,.2,1);
}
@media(max-width:360px){
  .vesper-opening-inner{width:84vw}.vesper-instruction{margin-top:14px}
}
@media(min-width:700px){
  .vesper-opening-inner{width:min(64vw,500px)}
}
@media(prefers-reduced-motion:reduce){
  :root[data-theme="noir"][data-sms] .vesper-opening,
  .vesper-opening *{transition-duration:1ms!important;animation:none!important}
}

/* source: sable-mail-approval-0816-style */
html body .menu-panel .menu-list .menu-item[data-menu="sable-space"]{display:none!important}
.sable-mail-panel{position:fixed;inset:0;z-index:4100;display:none;background:var(--ref-paper,#f7f4eb);color:var(--ref-ink,#4e4827)}
.sable-mail-panel.open{display:block}.sable-mail-page{height:100%;max-width:720px;margin:0 auto;display:flex;flex-direction:column}
.sable-mail-top{display:grid;grid-template-columns:42px 1fr 42px;align-items:center;padding:calc(env(safe-area-inset-top) + 9px) 12px 8px;border-bottom:1px solid color-mix(in srgb,var(--ref-ink,#4e4827) 10%,transparent)}
.sable-mail-back{width:38px;height:38px;display:grid;place-items:center;border:0;background:transparent;color:inherit}.sable-mail-back svg{width:22px;height:22px}.sable-mail-title{text-align:center}.sable-mail-title strong{display:block;font:italic 500 25px/1.05 var(--editorial-serif,Georgia,serif)}.sable-mail-title span{display:block;margin-top:4px;color:var(--ref-mauve,#958b67);font:600 8px/1 system-ui;letter-spacing:.18em;text-transform:uppercase}
.sable-mail-scroll{flex:1;overflow:auto;padding:14px 14px calc(28px + env(safe-area-inset-bottom));display:grid;align-content:start;gap:12px}.sable-mail-card{border:1px solid color-mix(in srgb,var(--ref-ink,#4e4827) 10%,transparent);background:color-mix(in srgb,var(--ref-chip,#fff) 80%,transparent);padding:15px;border-radius:16px;box-shadow:0 8px 24px rgba(70,62,37,.06)}
.sable-mail-status{display:flex;align-items:center;gap:9px}.sable-mail-status i{width:8px;height:8px;border-radius:50%;background:#bbb4a4}.sable-mail-status.ready i{background:#8ca779}.sable-mail-status b{font:600 12px/1.2 system-ui}.sable-mail-status small{margin-left:auto;color:var(--ref-mauve,#958b67);font:500 10px/1.2 system-ui}
.sable-mail-empty{padding:20px 12px;text-align:center;color:var(--ref-mauve,#958b67);font:400 12px/1.6 var(--font-cn,serif)}.sable-mail-list,.sable-draft-list{display:grid;gap:7px;margin-top:12px}.sable-mail-item,.sable-draft-item{width:100%;display:grid;grid-template-columns:1fr auto;gap:4px 10px;padding:11px 12px;border:1px solid color-mix(in srgb,var(--ref-ink,#4e4827) 9%,transparent);border-radius:11px;background:transparent;color:inherit;text-align:left}.sable-mail-item strong,.sable-draft-item strong,.sable-mail-item span,.sable-draft-item small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sable-mail-item strong,.sable-draft-item strong{font:600 12px/1.3 var(--font-cn,serif)}.sable-mail-item span,.sable-draft-item small{grid-column:1/-1;color:var(--ref-mauve,#958b67);font:400 10px/1.4 var(--font-cn,serif)}.sable-mail-item small,.sable-draft-item span{color:var(--ref-mauve,#958b67);font:500 9px/1.3 system-ui}
.sable-preview[hidden]{display:none}.sable-preview dl{display:grid;grid-template-columns:52px 1fr;gap:7px 10px;margin:0 0 12px;font-size:12px}.sable-preview dt{color:var(--ref-mauve,#958b67)}.sable-preview dd{margin:0;word-break:break-word}.sable-preview-body{min-height:120px;padding:14px;border-radius:10px;background:rgba(255,255,255,.45);white-space:pre-wrap;word-break:break-word;font:400 14px/1.75 var(--font-cn,serif)}.sable-safety{margin:10px 0 0;color:var(--ref-mauve,#958b67);font:400 10px/1.55 var(--font-cn,serif)}
.sable-draft-actions{display:grid;grid-template-columns:1fr 1fr 1.25fr;gap:8px;margin-top:14px}.sable-draft-actions button{min-height:40px;border:1px solid color-mix(in srgb,var(--ref-ink,#4e4827) 14%,transparent);border-radius:10px;background:transparent;color:inherit;font:600 11px/1 system-ui}.sable-draft-actions .approve{background:var(--ref-ink,#4e4827);color:#fff}.sable-draft-actions .send-approved{background:#8ca779;color:#fff}.sable-draft-actions button:disabled{opacity:.35}
.sable-drift-card h2{margin:0;font:italic 500 23px/1.1 var(--editorial-serif,Georgia,serif)}.sable-drift-card h2 small{display:block;margin-top:5px;color:var(--ref-mauve,#958b67);font:600 8px/1 system-ui;letter-spacing:.17em;text-transform:uppercase}.sable-drift-intro{margin:11px 0;color:var(--ref-mauve,#958b67);font:400 11px/1.65 var(--font-cn,serif)}
.sable-drift-form{display:grid;gap:9px}.sable-drift-form label{display:grid;gap:5px;color:var(--ref-mauve,#958b67);font:500 10px/1.3 system-ui}.sable-drift-form input[type=email]{width:100%;box-sizing:border-box;min-height:42px;padding:9px 11px;border:1px solid color-mix(in srgb,var(--ref-ink,#4e4827) 14%,transparent);border-radius:10px;background:rgba(255,255,255,.45);color:inherit;font:400 13px/1.2 system-ui}.sable-drift-consent{display:flex!important;align-items:flex-start;gap:9px!important;padding:4px 1px;color:inherit!important;font:400 11px/1.55 var(--font-cn,serif)!important}.sable-drift-consent input{margin-top:3px}
.sable-drift-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.sable-drift-actions button{min-height:40px;padding:0 13px;border:1px solid color-mix(in srgb,var(--ref-ink,#4e4827) 14%,transparent);border-radius:10px;background:transparent;color:inherit;font:600 11px/1 system-ui}.sable-drift-actions .primary{background:var(--ref-ink,#4e4827);color:#fff}.sable-drift-actions .cast{background:#8ca779;color:#fff}.sable-drift-actions button:disabled{opacity:.35}.sable-drift-state{margin-top:13px;padding-top:13px;border-top:1px solid color-mix(in srgb,var(--ref-ink,#4e4827) 10%,transparent)}.sable-drift-meta{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:9px}.sable-drift-meta span{padding:5px 8px;border-radius:999px;background:color-mix(in srgb,var(--ref-mauve,#958b67) 11%,transparent);font:500 9px/1.1 system-ui}.sable-drift-prompt{padding:12px;border-radius:10px;background:rgba(255,255,255,.45);white-space:pre-wrap;word-break:break-word;font:400 12px/1.65 var(--font-cn,serif)}.sable-drift-draft{margin-top:10px}.sable-drift-draft strong{display:block;margin-bottom:6px;font:600 11px/1.3 system-ui}.sable-drift-submit{display:grid;gap:8px;margin-top:10px}.sable-drift-submit[hidden],.sable-drift-state[hidden],.sable-drift-draft[hidden]{display:none}.sable-drift-note{margin:8px 0 0;color:var(--ref-mauve,#958b67);font:400 9px/1.55 var(--font-cn,serif)}
@media(max-width:560px){.menu-panel .menu-list{grid-template-areas:"chat chat" "memory dream" "moments settings"!important}.sable-mail-scroll{padding-left:11px;padding-right:11px}.sable-draft-actions{grid-template-columns:1fr 1fr}.sable-draft-actions .send-approved{grid-column:1/-1}}

/* source: reasoning-effort-control-0830 */
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.reasoning-effort-wrap{display:inline-flex;align-items:center;min-width:0;margin-left:auto}
.reasoning-effort-wrap[hidden]{display:none!important}
.reasoning-effort-select{max-width:92px;height:26px;padding:0 22px 0 9px;border:1px solid color-mix(in srgb,var(--brand-deep) 13%,transparent);border-radius:999px;background:color-mix(in srgb,var(--glass-strong) 76%,transparent);color:var(--muted);font:500 9.5px/1 var(--chat-type,system-ui);outline:none;box-shadow:0 4px 12px color-mix(in srgb,var(--brand-deep) 7%,transparent)}
.reasoning-effort-select:focus-visible{border-color:color-mix(in srgb,var(--brand-deep) 34%,transparent);box-shadow:0 0 0 2px color-mix(in srgb,var(--brand) 13%,transparent)}
:root[data-theme="noir"][data-sms] .composer-model-btn{max-width:calc(100% - 104px)!important}
:root[data-theme="noir"][data-sms] .reasoning-effort-wrap{grid-area:model!important;justify-self:end!important;margin-left:0!important}
:root[data-theme="noir"][data-sms] .reasoning-effort-select{height:22px;max-width:88px;padding-left:7px;font-size:9px;background:rgba(255,255,255,.62);color:#77736e}
@media(max-width:360px){.reasoning-effort-select{max-width:82px;padding-left:7px;font-size:9px}:root[data-theme="noir"][data-sms] .composer-model-btn{max-width:calc(100% - 92px)!important}}

/* 0831 flower UI audit: root-level dialogs must inherit the active paper
   palette, and the expanded attachment drawer must reserve its full height. */
:root:not([data-sms]) .settings-detail-dialog{
  --brand:var(--ref-accent);--brand-deep:var(--ref-plum);--warm:var(--ref-accent);
  --ink:var(--ref-ink);--muted:var(--ref-mauve);--paper:var(--ref-paper);--paper-2:var(--ref-paper-2);
  --text:var(--ref-ink);--text-soft:var(--ref-plum);--text-faint:var(--ref-mauve);
  --accent:var(--ref-accent);--glass:var(--ref-glass);--glass-strong:var(--ref-glass-strong);--glass-line:var(--ref-glass-line);
}
:root:not([data-sms]) .app.attachment-drawer-open{--composer-zone:calc(180px + var(--keyboard-offset))!important}

/* 0831 flower chat viewport: the fixed composer must be a real lower edge,
   not merely a translucent mask that messages can scroll underneath. */
:root:not([data-sms]) .scroll{
  margin-bottom:var(--composer-live-inset,var(--composer-zone))!important;
  padding-bottom:14px!important;
  -webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 var(--edge-fade-top),#000 calc(100% - 12px),transparent 100%)!important;
  mask-image:linear-gradient(to bottom,transparent 0,#000 var(--edge-fade-top),#000 calc(100% - 12px),transparent 100%)!important;
  transition:margin-bottom .28s cubic-bezier(.2,.8,.2,1)!important;
}

/* 0831 noir composer controls: one calm baseline, three distinct controls. */
:root[data-theme="noir"][data-sms] .composer{
  grid-template-columns:28px minmax(0,1fr) 48px 44px!important;
  grid-template-rows:48px 28px!important;
  grid-template-areas:"field field field send" "add model effort effort"!important;
  column-gap:7px!important;
  row-gap:7px!important;
}
:root[data-theme="noir"][data-sms] .composer-add-btn{
  grid-area:add!important;width:28px!important;height:28px!important;min-width:28px!important;
  justify-self:stretch!important;border:1px solid rgba(34,34,32,.14)!important;border-radius:9px!important;
  background:rgba(255,255,255,.66)!important;color:#68645f!important;box-shadow:none!important;
}
:root[data-theme="noir"][data-sms] .composer-plus{width:13px!important;height:13px!important}
:root[data-theme="noir"][data-sms] .composer-model-btn{
  grid-area:model!important;display:block!important;width:100%!important;height:28px!important;min-width:0!important;max-width:none!important;
  padding:0 10px!important;border:1px solid rgba(34,34,32,.10)!important;border-radius:9px!important;
  background:rgba(255,255,255,.52)!important;color:#66625e!important;box-sizing:border-box!important;
  overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important;text-align:left!important;
  font:500 10px/28px system-ui,-apple-system,"PingFang SC","Microsoft YaHei",sans-serif!important;
  letter-spacing:.015em!important;text-transform:none!important;
}
:root[data-theme="noir"][data-sms] .composer-model-btn::after{content:"  ▴"!important;font-size:8px!important;opacity:.48!important}
:root[data-theme="noir"][data-sms] .composer-model-btn[aria-expanded="true"]::after{content:"  ▾"!important}
:root[data-theme="noir"][data-sms] .reasoning-effort-wrap{
  grid-area:effort!important;display:flex!important;width:100%!important;min-width:0!important;justify-self:stretch!important;margin:0!important;
}
:root[data-theme="noir"][data-sms] .reasoning-effort-select{
  width:100%!important;height:28px!important;max-width:none!important;padding:0 24px 0 10px!important;
  border:1px solid rgba(34,34,32,.10)!important;border-radius:9px!important;
  background:rgba(255,255,255,.52)!important;color:#66625e!important;box-shadow:none!important;
  font:500 10px/1 system-ui,-apple-system,"PingFang SC","Microsoft YaHei",sans-serif!important;
}

.vesper-download-card{position:relative;display:grid;gap:0;padding:8px 4px 2px!important;border:0!important;background:transparent!important;box-shadow:none!important}
.vesper-download-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}
.vesper-download-head .settings-label{margin:0;font:500 14px/1.3 var(--chat-type,system-ui);letter-spacing:.02em;color:var(--text)}
.vesper-release-state{display:inline-flex;align-items:center;gap:6px;padding:4px 9px;border-radius:999px;background:var(--seg-track);color:var(--text-soft);font:500 10px/1.2 var(--chat-type,system-ui)}
.vesper-release-state::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--accent)}
.vesper-release-body{display:grid;gap:9px;padding:2px 0 17px}
.vesper-release-row{display:flex;align-items:baseline;justify-content:space-between;gap:16px;min-height:22px;font:400 13px/1.5 var(--chat-type,system-ui)}
.vesper-release-row .k{flex:0 0 auto;color:var(--text-faint)}
.vesper-release-row .v{min-width:0;color:var(--text);font:400 14px/1.35 var(--editorial-serif);font-variant-numeric:lining-nums tabular-nums;text-align:right}
.vesper-release-row strong.v{font-size:19px;font-weight:500}
.vesper-download-action{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 0 0;border-top:1px solid var(--card-line)}
.vesper-download-action>div{min-width:0}
.vesper-download-action strong{display:block;margin-bottom:4px;color:var(--text);font:500 14px/1.25 var(--chat-type,system-ui)}
.vesper-download-action small{display:block;color:var(--text-faint);font:400 11px/1.4 var(--chat-type,system-ui)}
.vesper-download-btn{flex:0 0 auto;min-width:82px!important;min-height:38px!important;display:inline-flex!important;align-items:center;justify-content:center!important;gap:9px;padding:0 13px!important;border-radius:10px!important}
.vesper-download-btn b{font:400 14px/1 var(--editorial-sans)}
.vesper-download-btn:disabled{opacity:.55;cursor:wait}
.vesper-download-note{margin:13px 0 0;padding:9px 11px;border-radius:10px;background:var(--seg-track);color:var(--text-faint);font:400 11px/1.5 var(--chat-type,system-ui)}
:root[data-theme="noir"][data-sms] .vesper-download-card{border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important}
:root[data-theme="noir"][data-sms] .vesper-download-head .settings-label{font-family:var(--akcjk)!important;color:var(--akink)!important;letter-spacing:.04em}
:root[data-theme="noir"][data-sms] .vesper-release-state{border-radius:0!important;background:transparent!important;border:1px solid var(--akline)!important;color:var(--akink2)!important}
:root[data-theme="noir"][data-sms] .vesper-release-state::before{border-radius:0;background:var(--ak-accent)!important}
:root[data-theme="noir"][data-sms] .vesper-release-row{font-family:var(--akcjk)!important}
:root[data-theme="noir"][data-sms] .vesper-release-row .k{color:var(--akmute)!important}
:root[data-theme="noir"][data-sms] .vesper-release-row .v{font-family:var(--aknum)!important;color:var(--akink)!important}
:root[data-theme="noir"][data-sms] .vesper-download-action{border-top-color:var(--akline)!important}
:root[data-theme="noir"][data-sms] .vesper-download-action strong{font-family:var(--akcjk)!important;color:var(--akink)!important}
:root[data-theme="noir"][data-sms] .vesper-download-action small{font-family:var(--akcjk)!important;color:var(--akmute)!important}
:root[data-theme="noir"][data-sms] .vesper-download-btn{border:1px solid var(--akline)!important;border-radius:0!important;background:transparent!important;color:var(--akink)!important;box-shadow:none!important}
:root[data-theme="noir"][data-sms] .vesper-download-note{border-radius:0!important;background:rgba(34,34,32,.035)!important;color:var(--akmute)!important;font-family:var(--akcjk)!important}

/* Vesper 1.7: keep the three secondary controls in one contiguous grid.
   This avoids WebView distributing the effort control across spare composer
   columns and leaving the detached gap seen on narrow screens. */
:root[data-theme="noir"][data-sms] .composer{
  grid-template-columns:minmax(0,1fr) 44px!important;
  grid-template-areas:"field send" "tools tools"!important;
}
:root[data-theme="noir"][data-sms] .composer-model-row{
  grid-area:tools!important;
  display:grid!important;
  grid-template-columns:28px minmax(0,1fr) 94px!important;
  align-items:center!important;
  width:100%!important;
  min-width:0!important;
  gap:7px!important;
  padding:0!important;
  margin:0!important;
}
:root[data-theme="noir"][data-sms] .composer-add-btn,
:root[data-theme="noir"][data-sms] .composer-model-btn,
:root[data-theme="noir"][data-sms] .reasoning-effort-wrap{
  grid-area:auto!important;
}
@media(max-width:360px){
  :root[data-theme="noir"][data-sms] .composer{grid-template-columns:minmax(0,1fr) 40px!important;column-gap:5px!important}
  :root[data-theme="noir"][data-sms] .composer-model-row{grid-template-columns:26px minmax(0,1fr) 88px!important;gap:5px!important}
  :root[data-theme="noir"][data-sms] .composer-add-btn{width:26px!important;height:28px!important;min-width:26px!important}
  :root[data-theme="noir"][data-sms] .composer-model-btn{padding-left:8px!important;font-size:9.5px!important}
  :root[data-theme="noir"][data-sms] .reasoning-effort-select{padding-left:8px!important;font-size:9.5px!important}
}

/* 0831 keyboard-state repair: the older :focus-within rule has higher
   specificity than the normal two-column composer. Repeat the final skeleton
   at focus specificity so WebView cannot revive the obsolete three-column
   grid and auto-place the tools into a tall blank row. */
:root[data-theme="noir"][data-sms] .composer.typing-focus{
  grid-template-columns:minmax(0,1fr) 42px!important;
  grid-template-rows:minmax(46px,auto) 28px!important;
  grid-template-areas:"field send" "tools tools"!important;
  column-gap:7px!important;
  row-gap:7px!important;
  align-items:end!important;
  width:calc(100% - 16px)!important;
  max-width:calc(100% - 16px)!important;
  margin:0 8px 4px!important;
  padding:5px 6px!important;
  transform:none!important;
  -webkit-transform:none!important;
}
:root[data-theme="noir"][data-sms] .composer.typing-focus .composer-model-row{
  grid-area:tools!important;
}
@media(max-width:360px){
  :root[data-theme="noir"][data-sms] .composer.typing-focus{
    grid-template-columns:minmax(0,1fr) 40px!important;
    column-gap:5px!important;
  }
}

/* 0831 flower header boundary: the translucent header is a real layout row,
   never a shrinkable overlay. Messages begin below it even after a viewport or
   keyboard resize. */
:root:not([data-sms]) .topbar{
  flex:0 0 auto!important;
  box-sizing:border-box!important;
  overflow:hidden!important;
}
:root:not([data-sms]) .scroll{min-height:0!important}

/* 0831 noir model picker: an opaque, bounded sheet above the model control.
   Long provider lists scroll inside the sheet instead of becoming a translucent
   half-screen layer through which chat bubbles remain readable. */
:root[data-theme="noir"][data-sms] .model-pop{
  left:10px!important;
  right:auto!important;
  bottom:calc(100% + 8px)!important;
  width:min(320px,calc(100vw - 32px))!important;
  min-width:0!important;
  max-width:none!important;
  max-height:min(38dvh,360px)!important;
  padding:7px!important;
  overflow-x:hidden!important;
  overflow-y:auto!important;
  background:#f7f4ef!important;
  border:1px solid rgba(35,33,30,.14)!important;
  box-shadow:0 18px 46px rgba(35,33,30,.24)!important;
  -webkit-backdrop-filter:none!important;
  backdrop-filter:none!important;
  isolation:isolate!important;
  contain:paint!important;
  overscroll-behavior:contain!important;
}
:root[data-theme="noir"][data-sms] .model-pop-row{
  min-height:34px!important;
  padding:7px 9px!important;
  background:#f7f4ef!important;
}
:root[data-theme="noir"][data-sms] .model-pop-row.active{
  background:#e5e1da!important;
}
:root[data-theme="noir"][data-sms] .model-pop-manage{
  position:sticky!important;
  bottom:-7px!important;
  z-index:2!important;
  margin-top:4px!important;
  border-top:1px solid rgba(35,33,30,.10)!important;
  border-radius:0 0 8px 8px!important;
  box-shadow:0 -8px 12px #f7f4ef!important;
}

/* 0831 Vesper 1.7 full-page navigation audit: every child page uses one
   safe-area rhythm and one 40px back/close target, including Journal. */
:where(.mm-top,.hl-top,.fp-top,.cr-top,.together-top,.sable-mail-top,.memory-topbar,.profile-topbar,.terminal-top){
  min-height:calc(64px + env(safe-area-inset-top))!important;
  padding:calc(10px + env(safe-area-inset-top)) 16px 10px!important;
  box-sizing:border-box!important;
  align-items:center!important;
}
:where(.mm-back,.jn-back,.hl-back,.fp-back,.cr-back,.together-back,.sable-mail-back,.memory-back,.profile-back,.terminal-back){
  width:40px!important;height:40px!important;min-width:40px!important;min-height:40px!important;
  flex:0 0 40px!important;margin:0!important;padding:0!important;align-self:center!important;
  display:grid!important;place-items:center!important;box-sizing:border-box!important;
}
:where(.mm-back,.jn-back,.hl-back,.fp-back,.cr-back,.together-back,.sable-mail-back,.memory-back,.profile-back,.terminal-back) svg{
  width:19px!important;height:19px!important;
}
:where(.mm-top-spacer,.hl-top-spacer){width:40px!important;flex:0 0 40px!important}
/* 0901 fix: health top-right refresh must match the 40px back target, and the
   spacer must flex again -- pinned at 40px it stopped pushing refresh right,
   so both buttons clustered on the left. Scoped to health panel only. */
:root .health-panel .hl-refresh{width:40px!important;height:40px!important;min-width:40px!important;min-height:40px!important;flex:0 0 40px!important;margin:0!important;padding:0!important;align-self:center!important;display:grid!important;place-items:center!important;box-sizing:border-box!important}
:root .health-panel .hl-refresh svg{width:19px!important;height:19px!important}
:root .health-panel .hl-top-spacer{flex:1 1 auto!important;width:auto!important;min-width:40px!important}
:root:not([data-sms]) .journal-panel .jn-top{
  min-height:calc(64px + env(safe-area-inset-top))!important;
  padding:calc(10px + env(safe-area-inset-top)) 16px 10px!important;
  box-sizing:border-box!important;align-items:center!important;
}
:root[data-sms] .journal-panel .jn-back{
  width:40px!important;height:40px!important;min-width:40px!important;min-height:40px!important;
  flex:0 0 40px!important;margin:0!important;padding:0!important;align-self:center!important;
}

/* Moments has one focus surface: the outer publish bar. The text field must
   not draw Android/WebView's second rectangular focus box inside it. */
.moments-panel .mm-field,
.moments-panel .mm-field:focus,
.moments-panel .mm-field:focus-visible{
  border:0!important;outline:0!important;outline-offset:0!important;box-shadow:none!important;
  -webkit-appearance:none!important;appearance:none!important;
}
.moments-panel .mm-inputline:focus-within{
  border-color:color-mix(in srgb,var(--ref-accent) 42%,var(--ref-glass-line))!important;
  box-shadow:0 0 0 2px color-mix(in srgb,var(--ref-accent) 10%,transparent),0 6px 18px rgba(var(--ref-shadow),.12)!important;
}
:root[data-sms] .moments-panel .mm-inputline:focus-within{
  border-color:var(--akink)!important;box-shadow:none!important;
}

/* Replace Android's native select dialog with a theme-aware in-app sheet. */
.reasoning-effort-wrap{position:relative!important}
.reasoning-effort-native{position:absolute!important;width:1px!important;height:1px!important;opacity:0!important;pointer-events:none!important}
.reasoning-effort-pop{
  position:absolute;right:0;bottom:calc(100% + 9px);z-index:180;width:min(220px,calc(100vw - 32px));
  padding:7px;border:1px solid var(--ref-glass-line,var(--glass-line));border-radius:16px;
  background:var(--ref-sheet,var(--glass-strong));box-shadow:0 18px 48px rgba(var(--ref-shadow),.24);
  overflow:hidden;isolation:isolate;
}
.reasoning-effort-pop[hidden]{display:none!important}
.reasoning-effort-option{display:flex;align-items:center;width:100%;min-height:40px;padding:0 12px;border:0;border-radius:10px;background:transparent;color:var(--ref-ink,var(--text));font:500 13px/1 var(--font-cn,serif);text-align:left}
.reasoning-effort-option::after{content:"";width:16px;height:16px;margin-left:auto;border:1.5px solid var(--ref-mauve,var(--muted));border-radius:50%;box-sizing:border-box}
.reasoning-effort-option.active{background:color-mix(in srgb,var(--ref-accent) 12%,transparent)}
.reasoning-effort-option.active::after{border:5px solid var(--ref-accent)}
:root[data-sms] .reasoning-effort-pop{border-radius:2px;background:#f7f4ef;border-color:rgba(34,34,32,.18);box-shadow:0 20px 54px rgba(34,34,32,.30)}
:root[data-sms] .reasoning-effort-option{border-radius:0;color:#222220;font-family:var(--akserif,Georgia,serif);letter-spacing:.04em}
:root[data-sms] .reasoning-effort-option+.reasoning-effort-option{border-top:1px solid rgba(34,34,32,.10)}
:root[data-sms] .reasoning-effort-option.active{background:#e5e1da}
:root[data-sms] .reasoning-effort-option.active::after{border-color:#222220}

/* One medium/small-dialog language per theme. Flower uses a rounded paper
   sheet; Noir mirrors the Journal add form's square white-paper card. */
:root:not([data-sms]) :is(.settings-detail-dialog,.model-pop,.mem-sheet,.akaf-card){background:var(--ref-sheet)!important;border:1px solid var(--ref-glass-line)!important;border-radius:22px!important;box-shadow:0 24px 68px rgba(var(--ref-shadow),.24)!important}
:root:not([data-sms]) body>#apiForm:not([hidden]){background:var(--ref-sheet)!important;border:1px solid var(--ref-glass-line)!important;border-radius:22px!important}
:root[data-sms] :is(.settings-detail-dialog,.model-pop,.mem-sheet,.akaf-card){background:#f7f4ef!important;border:1px solid rgba(34,34,32,.18)!important;border-radius:2px!important;box-shadow:0 24px 60px rgba(34,34,32,.30)!important}
:root[data-sms] body>#apiForm:not([hidden]){background:#f7f4ef!important;border:1px solid rgba(34,34,32,.18)!important;border-radius:2px!important;color:#222220!important}

/* 0903 Noir composer: stable reference-height shell and one control language.
   The #app scope outranks legacy focus/keyboard rules without affecting flower.
   Focusing changes only the writing border, never box geometry. */
:root[data-theme="noir"][data-sms] #app .composer{
  --composer-control-font:"Noto Serif SC","Source Han Serif SC","Songti SC",Georgia,serif;
  --composer-control-line:rgba(59,55,49,.08);
  --composer-control-ink:#68625a;
  box-sizing:border-box!important;
  width:calc(100% - 24px)!important; max-width:calc(100% - 24px)!important;
  height:112px!important; min-height:112px!important;
  margin:0 12px max(8px,env(safe-area-inset-bottom))!important;
  padding:10px!important;
  display:grid!important;
  grid-template-columns:minmax(0,1fr) 44px!important;
  grid-template-rows:minmax(0,1fr) 28px!important;
  grid-template-areas:"field send" "tools tools"!important;
  gap:10px 8px!important; align-items:center!important;
  transform:none!important; -webkit-transform:none!important;
  transition:background-color .15s,border-color .15s!important;
}
:root[data-theme="noir"][data-sms] #app .composer .field{
  box-sizing:border-box!important; width:100%!important;
  height:100%!important; min-height:0!important; max-height:none!important;
  padding:7px 12px!important; overflow:hidden!important;
  display:flex!important; align-items:center!important;
  border:1px solid var(--composer-control-line)!important;
  border-radius:10px!important; background:rgba(255,255,255,.62)!important;
  box-shadow:0 3px 10px rgba(59,55,49,.045),inset 0 1px 1px rgba(255,255,255,.9)!important;
}
:root[data-theme="noir"][data-sms] #app .composer.typing-focus .field{
  border-color:rgba(59,55,49,.15)!important;
}
:root[data-theme="noir"][data-sms] #app .composer textarea{
  box-sizing:border-box!important; display:block!important;
  width:100%!important; height:34px!important; min-height:34px!important; max-height:34px!important;
  padding:6px 0!important; margin:0!important;
  font:400 14px/22px var(--composer-control-font)!important;
  letter-spacing:.01em!important;
  color:#4d4943!important; background:transparent!important;
  border:0!important; border-radius:0!important; outline:none!important;
  resize:none!important; overflow-y:auto!important; overscroll-behavior:contain;
}
:root[data-theme="noir"][data-sms] #app .composer textarea::placeholder{
  font:400 14px/22px var(--composer-control-font)!important;
  letter-spacing:.01em!important; color:#98938c!important; opacity:1!important;
}
:root[data-theme="noir"][data-sms] #app .composer .floatbtn.send{
  width:44px!important; height:44px!important; min-width:44px!important;
  align-self:center!important; justify-self:center!important;
}
:root[data-theme="noir"][data-sms] #app .composer-model-row{
  grid-area:tools!important;
  grid-template-columns:28px minmax(0,1fr) 94px!important;
  height:28px!important; min-height:28px!important;
  gap:8px!important; padding:0!important; margin:0!important;
}
:root[data-theme="noir"][data-sms] #app .composer-model-row :is(#clipBtn,#composerModelBtn,#effortBtn0902){
  box-sizing:border-box!important; height:28px!important; min-height:28px!important;
  min-width:0!important; width:100%!important; max-width:none!important;
  border:1px solid var(--composer-control-line)!important;
  border-radius:10px!important; background:rgba(255,255,255,.88)!important;
  color:var(--composer-control-ink)!important; opacity:1!important;
  box-shadow:0 3px 8px rgba(59,55,49,.07),0 1px 2px rgba(59,55,49,.035),inset 0 1px 0 rgba(255,255,255,.95)!important; margin:0!important;
  font:400 11px/26px var(--composer-control-font)!important;
  letter-spacing:0!important;
}
:root[data-theme="noir"][data-sms] #app .composer-model-row #clipBtn{
  padding:0!important; display:flex!important; align-items:center!important; justify-content:center!important;
}
:root[data-theme="noir"][data-sms] #app .composer-model-row :is(#composerModelBtn,#effortBtn0902){
  position:relative!important; display:block!important;
  padding:0 22px 0 9px!important; text-align:left!important;
  white-space:nowrap!important; overflow:hidden!important; text-overflow:ellipsis!important;
}
:root[data-theme="noir"][data-sms] #app .composer-model-row :is(#composerModelBtn,#effortBtn0902)::before{
  content:none!important;
}
/* Draw a real chevron; the old tiny font glyph looked like a stray dot. */
:root[data-theme="noir"][data-sms] #app .composer-model-row :is(#composerModelBtn,#effortBtn0902)::after{
  content:""!important; position:absolute!important; right:9px!important; top:calc(50% - 2px)!important;
  display:block!important; width:5px!important; height:5px!important;
  border:0!important; border-right:1.2px solid currentColor!important; border-bottom:1.2px solid currentColor!important;
  transform:rotate(225deg)!important; opacity:.65!important;
}
:root[data-theme="noir"][data-sms] #app .composer-model-row :is(#composerModelBtn,#effortBtn0902)[aria-expanded="true"]::after{
  top:calc(50% - 4px)!important; transform:rotate(45deg)!important;
}
/* A closed drawer must not add an implicit third grid row. */
:root[data-theme="noir"][data-sms] #app #attachmentDrawer[aria-hidden="true"]{
  display:none!important;
}
:root[data-theme="noir"][data-sms] #app .composer.attachments-open{
  height:auto!important; grid-template-rows:52px 28px auto!important;
}

/* 0904 · 附件先进入待发送区，再与输入文字合成同一条消息。 */
.composer-attachment-tray{
  flex:0 0 100%;display:flex;gap:8px;overflow-x:auto;padding:2px 5px 4px;
  scrollbar-width:none;scroll-snap-type:x proximity
}
.composer-attachment-tray[hidden]{display:none!important}
.composer-attachment-tray::-webkit-scrollbar{display:none}
.composer-attachment-chip{
  flex:0 0 auto;max-width:154px;height:48px;display:grid;grid-template-columns:38px minmax(0,1fr) 24px;
  align-items:center;gap:6px;padding:4px;border-radius:14px;border:1px solid rgba(var(--ref-accent-rgb,150,136,74),.14);
  background:var(--ref-glass,rgba(255,255,252,.72));box-shadow:0 5px 13px rgba(var(--ref-shadow,99,93,53),.07);
  scroll-snap-align:start
}
.composer-attachment-chip img{width:38px;height:38px;display:block;object-fit:cover;border-radius:10px}
.composer-file-glyph{width:38px;height:38px;display:grid;place-items:center;color:var(--ref-accent,#96884a)}
.composer-file-glyph svg{width:20px;height:20px}
.composer-attachment-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:500 10px/1.2 var(--chat-type,serif);color:var(--ref-ink,var(--text))}
.composer-attachment-chip button{width:24px;height:24px;border:0;border-radius:50%;background:rgba(var(--ref-shadow,99,93,53),.08);color:var(--ref-muted,var(--muted));font:400 18px/22px system-ui;cursor:pointer}
.app.has-pending-attachments{--composer-zone:calc(178px + var(--keyboard-offset))!important}
:root:not([data-sms]) .app.has-pending-attachments{--composer-zone:calc(158px + var(--keyboard-offset))!important}
:root[data-theme="noir"][data-sms] #app .composer-attachment-tray{grid-column:1/-1;grid-row:1;padding:0 1px 4px}
:root[data-theme="noir"][data-sms] #app .composer.has-pending-attachments{height:auto!important;grid-template-rows:52px 52px 28px!important}
:root[data-theme="noir"][data-sms] #app .composer.has-pending-attachments .field{grid-row:2!important}
:root[data-theme="noir"][data-sms] #app .composer.has-pending-attachments .floatbtn.send{grid-row:2!important}
:root[data-theme="noir"][data-sms] #app .composer.has-pending-attachments .composer-model-row{grid-row:3!important}
:root[data-theme="noir"][data-sms] #app .composer.has-pending-attachments.attachments-open{grid-template-rows:52px 52px 28px auto!important}

/* 0904 Home plan: empty state stays compact; real items restore the full card. */
:root[data-theme="noir"] .ak-plan.is-empty{margin-top:5px!important;margin-bottom:5px!important}
:root[data-theme="noir"] .ak-plan.is-empty .ak-cap2{margin-bottom:0!important}
:root[data-theme="noir"] .ak-plan.is-empty .ak-plancard{display:none!important}
:root[data-theme="noir"] .ak-plan .ak-plancard{position:relative;width:100%!important}
:root[data-theme="noir"] .ak-plan:not(.is-empty) #akPlanRows{min-width:0;width:100%;max-height:156px!important;overflow-y:auto!important;overscroll-behavior:contain;scrollbar-width:thin}
:root[data-theme="noir"] .ak-plan .ak-cap2 .ak-planadd{position:static!important;margin-left:auto!important;min-height:20px!important;padding:0!important;font-size:10px!important;letter-spacing:.11em!important;color:var(--ak-accent)!important}
:root[data-theme="noir"] .ak-plan .ak-cap2{gap:10px!important;min-height:32px!important;margin-bottom:4px!important}
:root[data-theme="noir"] .ak-plan .ak-cap2>span:first-child{white-space:nowrap}
:root[data-theme="noir"] .ak-plan .ak-cap2>small{font-family:var(--akcjk);font-weight:500;font-size:11px;letter-spacing:.08em;color:var(--akmute);white-space:nowrap}
:root[data-theme="noir"] .ak-plan .ak-cap2>.ak-idxline{flex:1 1 auto;border-top:1px dashed var(--akline)}
:root[data-theme="noir"] .ak-today[data-ak="health"]{cursor:pointer;border-radius:10px;transition:background .16s ease}
:root[data-theme="noir"] .ak-today[data-ak="health"]:active{background:rgba(var(--ak-accent-rgb),.05)}
:root[data-theme="noir"] .ak-today[data-ak="health"]:focus-visible{outline:1px solid var(--ak-accent);outline-offset:5px}

/* Commons: keep the cartographic route; give the lower four destinations clearer breathing room. */
.ak-vcommons .ak-map{height:640px}
.ak-vcommons .ak-cart{height:640px}
.ak-vcommons .ak-node{transition:transform .16s ease,opacity .16s ease}
.ak-vcommons .ak-node:hover,.ak-vcommons .ak-node:active{transform:translateY(-2px)}
.ak-vcommons .ak-node[data-akc="together"],.ak-vcommons .ak-node[data-akc="forum"],.ak-vcommons .ak-node[data-akc="games"]{max-width:170px}

/* One discreet, shared pocket for Letters / Drift Bottle. */
.sable-pocket-btn,.sable-pocket-menu{display:none!important}
.sable-pocket-btn{position:absolute;z-index:32;right:18px;top:18px;width:38px;height:32px;border:1px solid rgba(var(--ref-shadow,99,93,53),.12);border-radius:999px;background:rgba(255,255,255,.52);color:var(--ref-muted,var(--muted));font:700 13px/1 system-ui;letter-spacing:2px;box-shadow:0 6px 16px rgba(var(--ref-shadow,99,93,53),.08)}
.sable-pocket-btn[aria-expanded="true"]{background:rgba(var(--ref-accent-rgb,150,136,74),.14);color:var(--ref-accent,#96884a)}
.sable-pocket-menu{position:absolute;z-index:33;right:16px;top:56px;width:min(286px,calc(100% - 32px));padding:9px;border:1px solid rgba(var(--ref-shadow,99,93,53),.12);border-radius:18px;background:color-mix(in srgb,var(--surface,#fff) 92%,transparent);box-shadow:0 18px 42px rgba(var(--ref-shadow,99,93,53),.18);backdrop-filter:blur(20px)}
.sable-pocket-menu[hidden]{display:none!important}
.sable-pocket-head{display:flex;align-items:baseline;justify-content:space-between;padding:5px 7px 8px;color:var(--ref-muted,var(--muted))}
.sable-pocket-head span{font:600 9px/1.2 system-ui;letter-spacing:.18em}.sable-pocket-head small{font:500 10px/1.2 var(--chat-type,serif)}
.sable-pocket-menu>button{width:100%;display:grid;grid-template-columns:1fr auto;gap:3px 12px;text-align:left;padding:10px 11px;border:0;border-top:1px solid rgba(var(--ref-shadow,99,93,53),.08);background:transparent;color:var(--ref-ink,var(--text));cursor:pointer}
.sable-pocket-menu>button b{font:600 12px/1.3 var(--chat-type,serif)}.sable-pocket-menu>button span{grid-column:1/-1;font:400 10px/1.35 var(--chat-type,serif);color:var(--ref-muted,var(--muted))}
.sable-pocket-menu>button:active{background:rgba(var(--ref-accent-rgb,150,136,74),.08);border-radius:11px}
:root[data-theme="noir"] .sable-pocket-btn{background:rgba(246,243,237,.76);border-color:rgba(59,55,49,.12);color:#68625a}
:root[data-theme="noir"] .sable-pocket-menu{background:rgba(247,244,238,.97);border-color:rgba(59,55,49,.12);box-shadow:0 16px 38px rgba(45,42,38,.16)}
@media(max-width:380px){.sable-pocket-btn{right:12px;top:14px}.sable-pocket-menu{right:10px;top:50px;width:calc(100% - 20px)}}

/* Noir Together: share the same restrained paper, linework and blue accent as Home / Commons. */
:root[data-theme="noir"] .together-panel{--listen-blue:var(--ak-accent,#3f78b6);--listen-line:var(--akline,rgba(34,34,32,.18));background:var(--akbg,#f5f3ee);color:var(--akink,#222220)}
:root[data-theme="noir"] .together-shell{max-width:680px;background:transparent}
:root[data-theme="noir"] .together-top{border-bottom:1.5px solid var(--akink);background:color-mix(in srgb,var(--akbg) 94%,transparent);box-shadow:none}
:root[data-theme="noir"] .together-heading strong{font-family:var(--akscript,var(--editorial-serif));font-weight:400;letter-spacing:0}
:root[data-theme="noir"] .together-heading small,:root[data-theme="noir"] .together-source-chip{font-family:var(--akserif,var(--editorial-sans));letter-spacing:.18em}
:root[data-theme="noir"] .together-presence{border-bottom-color:var(--akline);background:transparent}
:root[data-theme="noir"] .together-tabs{width:min(286px,82%);border-bottom-color:var(--akline)}
:root[data-theme="noir"] .together-tab{font-family:var(--akcjk,var(--chat-type));font-size:11px;letter-spacing:.08em}
:root[data-theme="noir"] .together-tab.active{color:var(--ak-accent);background:transparent!important}
:root[data-theme="noir"] .together-card{border:1px solid var(--akline);border-radius:3px;background:rgba(255,255,255,.28);box-shadow:none}
:root[data-theme="noir"] .together-empty::after,:root[data-theme="noir"] .together-now::after{inset:7px;border-radius:1px;border-color:var(--akline2)}
:root[data-theme="noir"] .together-empty h2,:root[data-theme="noir"] .together-track-title,:root[data-theme="noir"] .together-reader-title{font-family:var(--akserif,var(--editorial-serif));font-style:normal}
:root[data-theme="noir"] .together-btn{border-radius:2px;border-color:var(--akline);font-family:var(--akcjk,var(--chat-type));background:transparent}
:root[data-theme="noir"] .together-btn.primary{background:var(--ak-accent);border-color:var(--ak-accent);box-shadow:none}
:root[data-theme="noir"] .together-url input,:root[data-theme="noir"] .together-paste textarea{border-radius:2px;border-color:var(--akline);background:rgba(255,255,255,.2)}
:root[data-theme="noir"] .together-pair-card{border-color:var(--akline);background:transparent}
:root[data-theme="noir"] .together-reader-stage{background:rgba(255,255,255,.18)}
:root[data-theme="noir"] .together-reader-head,:root[data-theme="noir"] .together-reader-foot{border-color:var(--akline);background:color-mix(in srgb,var(--akbg) 92%,transparent)}

/* Together mobile editorial polish · 0906
   Keep the HuaJian / MoBai paper language, but restore a readable type scale,
   quieter rules and a clearer action hierarchy on real phone viewports. */
:root[data-theme="noir"] .together-panel{
  --together-muted:color-mix(in srgb,var(--akink) 58%,var(--akbg));
  --together-faint:color-mix(in srgb,var(--akink) 10%,transparent);
  --together-card:color-mix(in srgb,#fff 32%,var(--akbg));
  font-family:var(--akcjk,var(--chat-type,"Noto Serif SC",serif));
}
:root[data-theme="noir"] .together-top{
  grid-template-columns:44px minmax(0,1fr) 64px;
  padding:calc(env(safe-area-inset-top) + 16px) 20px 14px;
  border-bottom:1px solid var(--akline);
}
:root[data-theme="noir"] .together-back{width:44px;height:44px;margin-left:-8px}
:root[data-theme="noir"] .together-heading{padding-left:2px}
:root[data-theme="noir"] .together-heading strong{font-size:34px;line-height:.95}
:root[data-theme="noir"] .together-heading small{margin-top:9px;font-size:10px;line-height:1.25;letter-spacing:.16em;color:var(--together-muted)}
:root[data-theme="noir"] .together-source-chip{font-size:10px;letter-spacing:.16em}
:root[data-theme="noir"] .together-body{padding:18px 20px calc(env(safe-area-inset-bottom) + 28px);gap:0}
:root[data-theme="noir"] .together-presence{min-height:72px;margin-bottom:16px;padding:8px 0 15px}
:root[data-theme="noir"] .together-room-cap{margin-bottom:7px;font-size:9px;letter-spacing:.16em;color:var(--together-muted)}
:root[data-theme="noir"] .together-presence-copy strong{font:500 18px/1.2 var(--akserif,var(--editorial-serif));letter-spacing:.01em}
:root[data-theme="noir"] .together-presence-copy small{margin-top:5px;font-size:13px;line-height:1.45;color:var(--together-muted)}
:root[data-theme="noir"] .together-listening-count{grid-template-columns:auto 8px 8px;gap:8px}
:root[data-theme="noir"] .together-listening-count b{font-size:15px}
:root[data-theme="noir"] .together-listening-count small{display:none}
:root[data-theme="noir"] .together-listening-count i{width:8px;height:8px}
:root[data-theme="noir"] .together-tabs{width:100%;margin:0 0 20px;border-bottom-color:var(--akline)}
:root[data-theme="noir"] .together-tab{min-height:48px;padding:13px 8px 14px;font-size:14px;line-height:1.2;letter-spacing:.06em;color:var(--together-muted)}
:root[data-theme="noir"] .together-tab.active::after{left:31%;right:31%;height:2px}
:root[data-theme="noir"] .together-mode{gap:16px}
:root[data-theme="noir"] .together-card{border-color:color-mix(in srgb,var(--akink) 22%,transparent);background:var(--together-card)}
:root[data-theme="noir"] .together-queue-stage{height:118px;grid-template-columns:78px minmax(104px,132px) 78px;gap:18px;padding:0 0 4px}
:root[data-theme="noir"] .together-queue-side>span{width:62px;height:62px}
:root[data-theme="noir"] .together-queue-current>span{width:96px;height:88px}
:root[data-theme="noir"] .together-queue-stage small,:root[data-theme="noir"] .together-queue-stage b{font-size:9px;letter-spacing:.13em}
:root[data-theme="noir"] .together-empty{padding:25px 22px 22px}
:root[data-theme="noir"] .together-empty::after,:root[data-theme="noir"] .together-now::after{inset:8px;border-color:var(--together-faint)}
:root[data-theme="noir"] .together-empty .together-kicker{padding:0 0 12px;font-size:9px;line-height:1.2;letter-spacing:.18em}
:root[data-theme="noir"] .together-empty h2{margin:14px 0 8px;font-size:25px;line-height:1.22;font-weight:500;letter-spacing:.01em}
:root[data-theme="noir"] .together-empty p{min-height:0;margin:0 0 18px;font-size:13px;line-height:1.7;color:var(--together-muted)}
:root[data-theme="noir"] .together-url input,:root[data-theme="noir"] .together-paste textarea{
  border-color:color-mix(in srgb,var(--akink) 26%,transparent);
  background:color-mix(in srgb,#fff 22%,transparent);
  color:var(--akink);
  font:400 14px/1.55 var(--akcjk,var(--chat-type));
}
:root[data-theme="noir"] .together-url input::placeholder,:root[data-theme="noir"] .together-paste textarea::placeholder{color:color-mix(in srgb,var(--akink) 42%,var(--akbg));opacity:1}
:root[data-theme="noir"] .together-url input{height:50px;padding:0 15px}
:root[data-theme="noir"] .together-paste{padding-top:2px}
:root[data-theme="noir"] .together-paste textarea{height:148px;padding:16px}
:root[data-theme="noir"] .together-listen-actions,:root[data-theme="noir"] .together-read-actions{gap:10px;margin-top:10px}
:root[data-theme="noir"] .together-listen-actions .together-btn+.together-btn{border-left:1px solid var(--akline)}
:root[data-theme="noir"] .together-btn{min-height:48px;padding:12px 14px;border-color:color-mix(in srgb,var(--akink) 28%,transparent);font:500 14px/1.2 var(--akcjk,var(--chat-type));letter-spacing:.02em;color:var(--akink)}
:root[data-theme="noir"] .together-btn.primary{color:#fff}
:root[data-theme="noir"] .together-btn:disabled{opacity:.32}
:root[data-theme="noir"] .together-note{font-size:12px;line-height:1.6;text-align:left;color:var(--together-muted);opacity:1}
:root[data-theme="noir"] .together-pair-card{min-height:152px;padding:18px 17px 13px;border-color:color-mix(in srgb,var(--akink) 22%,transparent);background:var(--together-card)}
:root[data-theme="noir"] .together-pair-head b{font-size:10px;letter-spacing:.09em}
:root[data-theme="noir"] .together-pair-head small{font-size:8.5px}
:root[data-theme="noir"] .together-pair-link{grid-template-columns:72px minmax(70px,1fr) 72px;margin:13px auto 9px}
:root[data-theme="noir"] .together-person>span{width:44px;height:44px;font-size:16px}
:root[data-theme="noir"] .together-person small{margin-top:3px;font-size:9px}
:root[data-theme="noir"] .together-pair-foot{padding-top:10px;font-size:8.5px;line-height:1.2}
:root[data-theme="noir"] #togetherReadMode .together-empty-mark{width:62px;height:62px;margin-bottom:18px;background:color-mix(in srgb,var(--ak-accent) 8%,transparent)}
:root[data-theme="noir"] #togetherReadMode .together-empty-mark svg{width:30px;height:30px}
:root[data-theme="noir"] #togetherReadMode .together-empty h2{margin-top:0}
:root[data-theme="noir"] .together-selection{min-height:22px;padding:0 4px;font-size:13px;line-height:1.6;color:var(--together-muted)}

@media(max-width:420px){
  :root[data-theme="noir"] .together-top{padding-left:16px;padding-right:16px}
  :root[data-theme="noir"] .together-body{padding-left:16px;padding-right:16px}
  :root[data-theme="noir"] .together-heading strong{font-size:32px}
  :root[data-theme="noir"] .together-queue-stage{grid-template-columns:70px minmax(94px,116px) 70px;gap:12px}
  :root[data-theme="noir"] .together-empty{padding:22px 18px 20px}
  :root[data-theme="noir"] .together-empty h2{font-size:24px}
  :root[data-theme="noir"] .together-empty p{font-size:13px}
}
@media(max-height:720px){
  :root[data-theme="noir"] .together-top{padding-top:calc(env(safe-area-inset-top) + 8px)}
  :root[data-theme="noir"] .together-presence{min-height:58px;margin-bottom:10px;padding-bottom:10px}
  :root[data-theme="noir"] .together-tabs{margin-bottom:12px}
  :root[data-theme="noir"] .together-queue-stage{height:100px}
  :root[data-theme="noir"] .together-empty{padding-top:18px}
}

/* 墨白气泡 Markdown 斜体：Android WebView 缺少对应字形时允许合成倾斜。 */
:root[data-theme="noir"][data-sms] .bubble .txt em{
  font-style:italic!important;
  font-synthesis:style!important;
}

/* Together · NetEase-native player and synchronized lyric surface. */
:root[data-theme="noir"] .together-source-chip{display:flex;align-items:center;justify-content:flex-end;gap:7px;white-space:nowrap}
:root[data-theme="noir"] .together-source-chip>i{width:6px;height:6px;border-radius:50%;background:var(--ak-accent);box-shadow:0 0 0 4px color-mix(in srgb,var(--ak-accent) 9%,transparent)}
:root[data-theme="noir"] .together-source-chip[data-connected="false"]{color:var(--together-muted)}
:root[data-theme="noir"] .together-source-chip[data-connected="false"]>i{background:color-mix(in srgb,var(--akink) 30%,var(--akbg));box-shadow:none}
:root[data-theme="noir"] .together-native-actions{display:grid;gap:9px;margin-top:4px}
:root[data-theme="noir"] .together-native-actions .together-btn{width:100%;min-height:52px}
:root[data-theme="noir"] .together-open-netease{justify-self:center;border:0;background:transparent;color:var(--together-muted);padding:5px 10px;font:500 11px/1.2 var(--akcjk,var(--chat-type));letter-spacing:.04em}
:root[data-theme="noir"] .together-player-hero{display:grid;grid-template-columns:86px minmax(0,1fr);align-items:center;gap:17px;padding-right:92px}
:root[data-theme="noir"] .together-album-art{position:relative;width:86px;height:86px;border:1px solid color-mix(in srgb,var(--akink) 18%,transparent);background:linear-gradient(145deg,color-mix(in srgb,var(--ak-accent) 9%,#fff),color-mix(in srgb,var(--ak-accent) 2%,var(--akbg)));background-position:center;background-size:cover;box-shadow:0 10px 24px rgba(35,34,31,.09);overflow:hidden}
:root[data-theme="noir"] .together-album-art::before,:root[data-theme="noir"] .together-album-art::after{content:"";position:absolute;border:1px solid color-mix(in srgb,var(--ak-accent) 50%,transparent);border-radius:50%;inset:20px}
:root[data-theme="noir"] .together-album-art::after{inset:36px;background:var(--ak-accent);border:0}
:root[data-theme="noir"] .together-album-art.has-art::before,:root[data-theme="noir"] .together-album-art.has-art::after{display:none}
:root[data-theme="noir"] .together-track-copy{min-width:0}
:root[data-theme="noir"] .together-now{padding:23px 21px 20px}
:root[data-theme="noir"] .together-track-title{max-width:none;margin:9px 0 6px;font-size:27px;line-height:1.15}
:root[data-theme="noir"] .together-track-meta{font-size:12px;line-height:1.45;color:var(--together-muted);letter-spacing:.03em;text-transform:none}
:root[data-theme="noir"] .together-change-track{top:24px;right:22px;font-size:8px}
:root[data-theme="noir"] .together-timeline{grid-template-columns:38px 1fr 38px;gap:9px;margin-top:20px;font-size:10px}
:root[data-theme="noir"] .together-lyrics{margin-top:8px;padding-top:15px;border-top:1px solid var(--together-faint)}
:root[data-theme="noir"] .together-lyrics-head{display:flex;align-items:center;justify-content:space-between;gap:12px;font:600 8.5px/1.2 var(--editorial-sans,system-ui);letter-spacing:.16em;color:var(--ak-accent)}
:root[data-theme="noir"] .together-lyrics-head small{font:500 9px/1.2 var(--akcjk,var(--chat-type));letter-spacing:.04em;color:var(--together-muted)}
:root[data-theme="noir"] .together-lyrics-window{height:154px;margin-top:10px;overflow-y:auto;scrollbar-width:none;scroll-behavior:smooth;mask-image:linear-gradient(transparent,#000 17%,#000 83%,transparent)}
:root[data-theme="noir"] .together-lyrics-window::-webkit-scrollbar{display:none}
:root[data-theme="noir"] .together-lyrics-window p{min-height:32px;margin:0;padding:7px 2px;text-align:center;color:color-mix(in srgb,var(--akink) 37%,var(--akbg));font:400 14px/1.55 var(--akserif,var(--chat-type));transition:color .22s ease,transform .22s ease,font-size .22s ease}
:root[data-theme="noir"] .together-lyrics-window p small{display:block;margin-top:2px;font:400 10.5px/1.45 var(--akcjk,var(--chat-type));color:var(--together-muted)}
:root[data-theme="noir"] .together-lyrics-window p.active{color:var(--akink);font-size:18px;transform:scale(1.015)}
:root[data-theme="noir"] .together-lyrics-window p.active small{color:color-mix(in srgb,var(--ak-accent) 58%,var(--akink))}
:root[data-theme="noir"] .together-pair-link{position:relative;grid-template-columns:72px minmax(90px,1fr) 72px;column-gap:10px}
:root[data-theme="noir"] .together-wave{position:relative;height:48px;filter:drop-shadow(0 0 3px color-mix(in srgb,var(--ak-accent) 18%,transparent));overflow:visible}
:root[data-theme="noir"] .together-wave path{stroke:var(--ak-accent);stroke-width:1.15;stroke-linecap:round;stroke-linejoin:round}
:root[data-theme="noir"] .together-pair-link::before,:root[data-theme="noir"] .together-pair-link::after{content:"";position:absolute;z-index:2;top:50%;width:4px;height:4px;margin-top:-2px;border-radius:50%;background:var(--ak-accent);box-shadow:0 0 0 4px color-mix(in srgb,var(--ak-accent) 9%,transparent);pointer-events:none;animation:togetherPulseTravel 3.2s ease-in-out infinite}
:root[data-theme="noir"] .together-pair-link::before{left:29%;animation-delay:-1.6s}
:root[data-theme="noir"] .together-pair-link::after{right:29%}
@keyframes togetherPulseTravel{0%,100%{opacity:.18;transform:scale(.75)}50%{opacity:.9;transform:scale(1)}}
@media(max-width:420px){
  :root[data-theme="noir"] .together-player-hero{grid-template-columns:72px minmax(0,1fr);gap:13px;padding-right:68px}
  :root[data-theme="noir"] .together-album-art{width:72px;height:72px}
  :root[data-theme="noir"] .together-track-title{font-size:23px}
  :root[data-theme="noir"] .together-lyrics-window{height:142px}
}
@media(prefers-reduced-motion:reduce){
  :root[data-theme="noir"] .together-pair-link::before,:root[data-theme="noir"] .together-pair-link::after{animation:none}
  :root[data-theme="noir"] .together-lyrics-window{scroll-behavior:auto}
}

/* Together paper room 0906: scoped tokens also work outside Home / Commons. */
:root[data-theme="noir"] #togetherPanel{
 --akbg:#f7f4ef;--akink:#222220;--ak-accent:#3f7eb5;--akline:rgba(34,34,32,.16);--akline2:rgba(34,34,32,.08);
 --akscript:"Satisfy","Segoe Script",cursive;--akserif:"Cormorant Garamond","Noto Serif SC",serif;--akcjk:"Noto Serif SC",serif;
 --listen-blue:#3f7eb5;--together-muted:#85827b;--together-faint:rgba(34,34,32,.1);
 background:#f7f4ef;color:#222220;
}
:root[data-theme="noir"] #togetherPanel .together-top{position:relative;grid-template-columns:36px 1fr;gap:10px;padding:calc(env(safe-area-inset-top) + 24px) 22px 18px;background:transparent;border:0;flex-shrink:0}
:root[data-theme="noir"] #togetherPanel .together-heading strong{font:400 48px/1.1 var(--akscript);color:var(--akink)}
:root[data-theme="noir"] #togetherPanel .together-heading small{font:500 10px/1.5 var(--akserif);letter-spacing:.2em;margin-top:8px}
:root[data-theme="noir"] #togetherPanel .together-source-chip{grid-column:2;justify-content:flex-start;font:500 10px/1.5 var(--akcjk);letter-spacing:.08em;margin-top:3px;white-space:normal}
:root[data-theme="noir"] #togetherPanel .together-body{padding:0 22px calc(env(safe-area-inset-bottom) + 28px)}
:root[data-theme="noir"] #togetherPanel .together-presence{border-top:1.5px solid var(--akink);border-bottom:1px solid var(--akline);padding:18px 0;margin:0;min-height:0}
:root[data-theme="noir"] #togetherPanel .together-room-cap{display:block;font:500 9px/1.4 var(--akserif);letter-spacing:.18em}
:root[data-theme="noir"] #togetherPanel .together-presence-copy strong{font:500 18px/1.4 var(--akserif)}
:root[data-theme="noir"] #togetherPanel .together-presence-copy small{font-size:11px;line-height:1.6}
:root[data-theme="noir"] #togetherPanel .together-tabs{width:100%;margin:10px 0 24px;border-bottom:1px solid var(--akline)}
:root[data-theme="noir"] #togetherPanel .together-tab{min-height:44px;font-size:13px}
:root[data-theme="noir"] #togetherPanel .together-queue-stage{display:none}
:root[data-theme="noir"] #togetherPanel .together-now{padding:0;border:0;border-radius:0;box-shadow:none;background:transparent;overflow:visible}
:root[data-theme="noir"] #togetherPanel .together-now::after{display:none}
:root[data-theme="noir"] #togetherPanel .together-player-hero{display:flex;flex-direction:column;align-items:center;gap:22px;padding:0}
:root[data-theme="noir"] #togetherPanel .together-album-art{width:156px;height:156px;border-radius:50%;border:1px solid var(--akline);background-color:#efeee9;box-shadow:0 0 0 9px #f7f4ef,0 0 0 10px rgba(34,34,32,.08),0 0 0 22px #f7f4ef,0 0 0 23px rgba(34,34,32,.05);margin:10px 0 8px}
:root[data-theme="noir"] #togetherPanel .together-album-art::before{inset:32px;border-color:rgba(63,126,181,.25)}
:root[data-theme="noir"] #togetherPanel .together-album-art::after{inset:65px;background:var(--ak-accent)}
:root[data-theme="noir"] #togetherPanel .together-track-copy{width:100%;text-align:center}
:root[data-theme="noir"] #togetherPanel .together-kicker{font:500 9px/1.5 var(--akserif);letter-spacing:.2em;color:var(--together-muted)}
:root[data-theme="noir"] #togetherPanel .together-track-title{max-width:100%;margin:9px auto 7px;font:500 25px/1.35 var(--akserif);overflow-wrap:anywhere;text-wrap:pretty}
:root[data-theme="noir"] #togetherPanel .together-track-meta{font:400 12px/1.6 var(--akserif);letter-spacing:.04em;color:#77746e}
:root[data-theme="noir"] #togetherPanel .together-change-track{position:static;display:block;margin:8px auto 0;padding:10px;min-height:40px;max-width:100%;font:500 9px/1.5 var(--akserif);letter-spacing:.12em;color:var(--ak-accent)}
:root[data-theme="noir"] #togetherPanel .together-timeline{margin:6px 0 0;grid-template-columns:32px minmax(0,1fr) 32px;font:500 10px/1.5 var(--akserif);gap:10px}
:root[data-theme="noir"] #togetherPanel .together-transport{grid-template-columns:44px 60px 44px 44px;gap:14px;margin:16px 0 24px}
:root[data-theme="noir"] #togetherPanel .together-transport button{width:44px;height:44px;color:var(--akink)}
:root[data-theme="noir"] #togetherPanel .together-transport .together-play{width:60px;height:60px;background:var(--ak-accent);color:white;box-shadow:0 0 0 6px rgba(63,126,181,.07)}
:root[data-theme="noir"] #togetherPanel .together-lyrics{padding-top:16px;border-top:1px solid var(--akline);margin-top:0}
:root[data-theme="noir"] #togetherPanel .together-lyrics-head{font:500 9px/1.5 var(--akserif);letter-spacing:.16em;color:var(--akink)}
:root[data-theme="noir"] #togetherPanel .together-lyrics-window{height:160px;margin:12px 0}
:root[data-theme="noir"] #togetherPanel .together-note{font-size:10px;line-height:1.7;color:#8b8881;text-align:center;margin:12px 0 20px}
:root[data-theme="noir"] #togetherPanel .together-pair-card{padding:18px 0 12px;min-height:0;background:transparent;border:0;border-top:1px solid var(--akline);border-bottom:1px solid var(--akline);border-radius:0;box-shadow:none}
:root[data-theme="noir"] #togetherPanel .together-pair-head b{font:500 10px/1.5 var(--akserif);letter-spacing:.12em}
:root[data-theme="noir"] #togetherPanel .together-pair-link{grid-template-columns:64px minmax(0,1fr) 64px;margin:16px 0 12px}
:root[data-theme="noir"] #togetherPanel .together-person>span{width:38px;height:38px;background:transparent;border:1px solid rgba(63,126,181,.35);color:var(--ak-accent);box-shadow:none;font-family:var(--akserif)}
:root[data-theme="noir"] #togetherPanel .together-wave{opacity:.55;height:30px}
:root[data-theme="noir"] #togetherPanel .together-pair-foot{border-top:0;font-size:8px;color:var(--together-muted);gap:12px}
:root[data-theme="noir"] #togetherPanel .together-btn{border-radius:18px;border-color:var(--akline);font-size:13px}
:root[data-theme="noir"] #togetherPanel .together-btn.primary{background:var(--ak-accent);color:white;border-color:var(--ak-accent)}
:root[data-theme="noir"] #togetherPanel .together-btn.primary:disabled{background:rgba(63,126,181,.06);color:#92948f;border-color:var(--akline);opacity:1}
:root[data-theme="noir"] #togetherPanel .together-empty{border:1px solid var(--akline);border-radius:18px;background:rgba(255,255,255,.35);padding:26px 20px}
:root[data-theme="noir"] #togetherPanel .together-empty::after{display:none}
:root[data-theme="noir"] #togetherPanel .together-chat{margin-top:20px}
@media(max-width:360px){:root[data-theme="noir"] #togetherPanel .together-body{padding-left:18px;padding-right:18px}:root[data-theme="noir"] #togetherPanel .together-track-title{font-size:23px}}
/* One-screen listening: lyrics own the flexible middle, controls stay in view. */
:root[data-theme="noir"] #togetherPanel:has(#togetherListenTab.active) .together-top{padding:calc(env(safe-area-inset-top) + 10px) 22px 10px;grid-template-columns:30px 1fr auto;gap:8px}
:root[data-theme="noir"] #togetherPanel:has(#togetherListenTab.active) .together-heading strong{font-size:36px}
:root[data-theme="noir"] #togetherPanel:has(#togetherListenTab.active) .together-heading small{font-size:8px;margin-top:3px}
:root[data-theme="noir"] #togetherPanel:has(#togetherListenTab.active) .together-source-chip{grid-column:3;font-size:9px;max-width:100px}
:root[data-theme="noir"] #togetherPanel:has(#togetherListenTab.active) .together-body{overflow:hidden;padding-bottom:calc(env(safe-area-inset-bottom) + 10px)}
:root[data-theme="noir"] #togetherPanel:has(#togetherListenTab.active) .together-presence{display:none}
:root[data-theme="noir"] #togetherPanel:has(#togetherListenTab.active) .together-tabs{flex-shrink:0;margin:0 0 12px;border-top:1.5px solid var(--akink)}
:root[data-theme="noir"] #togetherPanel #togetherListenMode{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:minmax(0,1fr) 48px;gap:12px 10px;overflow:hidden}
:root[data-theme="noir"] #togetherPanel #togetherListenMode[hidden]{display:none}
:root[data-theme="noir"] #togetherPanel .together-now{grid-column:1/-1;min-height:0;display:flex;flex-direction:column;align-items:stretch}
:root[data-theme="noir"] #togetherPanel .together-player-hero{gap:10px;flex-shrink:0}
:root[data-theme="noir"] #togetherPanel .together-album-art{width:clamp(100px,22dvh,200px);height:clamp(100px,22dvh,200px);border-radius:4px;margin:5px 0 8px;box-shadow:7px 12px 23px rgba(44,43,38,.15),0 0 0 5px #f7f4ef,0 0 0 6px rgba(34,34,32,.13);background-image:linear-gradient(140deg,#eef1f1,#e2e8e9)}
:root[data-theme="noir"] #togetherPanel .together-album-art::before{inset:22%;border-color:rgba(63,126,181,.35)}
:root[data-theme="noir"] #togetherPanel .together-album-art::after{inset:44%}
:root[data-theme="noir"] #togetherPanel .together-track-copy .together-kicker{display:none}
:root[data-theme="noir"] #togetherPanel .together-track-title{font-size:21px;line-height:1.28;margin:2px 0 3px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
:root[data-theme="noir"] #togetherPanel .together-track-meta{font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
:root[data-theme="noir"] #togetherPanel .together-change-track{order:3;flex-shrink:0;min-height:28px;padding:4px 10px;margin:0 auto;font-size:8px}
:root[data-theme="noir"] #togetherPanel .together-lyrics{order:2;flex:1;min-height:40px;display:flex;flex-direction:column;border:0;padding-top:8px;overflow:hidden}
:root[data-theme="noir"] #togetherPanel .together-lyrics-head{flex-shrink:0;font-size:8px}
:root[data-theme="noir"] #togetherPanel .together-lyrics-window{height:auto;flex:1;min-height:0;margin:5px 0;overscroll-behavior:contain}
:root[data-theme="noir"] #togetherPanel .together-timeline{order:4;flex-shrink:0;margin:0;min-height:28px}
:root[data-theme="noir"] #togetherPanel .together-transport{order:5;flex-shrink:0;margin:8px 0 4px;grid-template-columns:44px 52px 44px 44px}
:root[data-theme="noir"] #togetherPanel .together-transport .together-play{width:52px;height:52px;box-shadow:0 5px 12px rgba(63,126,181,.2)}
:root[data-theme="noir"] #togetherPanel #togetherPlayerNote{display:none}
:root[data-theme="noir"] #togetherPanel .together-pair-card{grid-column:1;grid-row:2;align-self:center;padding:0;border:0;min-width:0}
:root[data-theme="noir"] #togetherPanel .together-pair-head{gap:4px}
:root[data-theme="noir"] #togetherPanel .together-pair-head b{font-size:9px;letter-spacing:.02em;text-transform:none}
:root[data-theme="noir"] #togetherPanel .together-pair-head small{font-size:8px}
:root[data-theme="noir"] #togetherPanel .together-pair-head>i{display:none}
:root[data-theme="noir"] #togetherPanel .together-pair-link,:root[data-theme="noir"] #togetherPanel .together-pair-foot{display:none}
:root[data-theme="noir"] #togetherPanel .together-chat{grid-column:2;grid-row:2;align-self:center;margin:0}
:root[data-theme="noir"] #togetherPanel #togetherMusicChat{min-height:40px;padding:9px 12px;border-radius:12px;font-size:11px;box-shadow:0 4px 10px rgba(63,126,181,.12)}
:root[data-theme="noir"] #togetherPanel #togetherListenMode>.together-empty{grid-column:1/-1;align-self:center}
@media(max-height:690px){:root[data-theme="noir"] #togetherPanel .together-album-art{width:110px;height:110px}:root[data-theme="noir"] #togetherPanel .together-track-title{font-size:18px}:root[data-theme="noir"] #togetherPanel .together-lyrics-head{display:none}:root[data-theme="noir"] #togetherPanel:has(#togetherListenTab.active) .together-heading strong{font-size:30px}}
:root[data-theme="noir"] #togetherPanel #togetherMusicChat:disabled{color:#646b70;background:#e8edf0;border-color:#c7d0d6;box-shadow:none}
:root[data-theme="noir"] #togetherPanel .together-lyrics-window{overflow-x:hidden}

/* Together chat continuity: normal flow, above messages, no composer overlap. */
#togetherChatPlayer{position:relative;z-index:2;flex:0 0 auto;display:flex;align-items:center;gap:3px;margin:0 16px 7px;padding:4px 6px 4px 9px;border:1px solid rgba(90,100,110,.18);border-radius:13px;background:var(--ref-paper,#f7f4ef);color:var(--ref-ink,#292824);box-shadow:0 4px 13px rgba(42,42,38,.07);min-width:0}
#togetherChatPlayer[hidden]{display:none!important}
#togetherChatPlayer button{border:0;background:transparent;color:inherit;cursor:pointer;min-width:36px;min-height:38px;padding:5px;flex-shrink:0}
#togetherChatPlayer .tcm-song{display:flex;align-items:center;gap:9px;flex:1;min-width:0;text-align:left;overflow:hidden}
#togetherChatPlayer .tcm-disc{display:grid;place-items:center;width:28px;height:28px;flex-shrink:0;border:1px solid currentColor;border-radius:50%;opacity:.7}
#togetherChatPlayer .tcm-copy{min-width:0;display:flex;flex-direction:column;gap:3px}
#togetherChatPlayer small{font:500 8px/1.2 system-ui;letter-spacing:.08em;opacity:.7}
#togetherChatPlayer strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:400 12px/1.4 var(--chat-type,serif)}
#togetherChatPlayer .tcm-toggle{color:#3f7eb5;font-size:17px}
#togetherChatPlayer .tcm-next{font-size:26px}
#togetherChatPlayer .tcm-close{font-size:19px;opacity:.55;min-width:30px}
#togetherChatPlayer button:disabled{opacity:.28;cursor:default}
#togetherChatPlayer button[hidden]{display:none!important}
#togetherChatPlayer .tcm-accept,#togetherChatPlayer .tcm-decline{font:500 11px/1.2 var(--chat-type,serif);padding:5px 8px}
#togetherChatPlayer .tcm-accept{color:#3f7eb5}
:root[data-theme="noir"] #togetherChatPlayer{background:#f7f4ef;color:#222220;border-color:rgba(34,34,32,.15);border-radius:9px}
/* Use Memory's 64px header, equal side slots, and identical back glyph. */
:root #momentsPanel .mm-top,:root #togetherPanel .together-top{display:grid!important;grid-template-columns:44px minmax(0,1fr) 44px!important;gap:0!important;height:calc(64px + env(safe-area-inset-top))!important;min-height:calc(64px + env(safe-area-inset-top))!important;flex:0 0 auto!important;padding:calc(10px + env(safe-area-inset-top)) 16px 10px!important;border:0!important;background:transparent!important;box-shadow:none!important}
:root #momentsPanel .mm-top::after{display:none!important}
:root #togetherPanel .together-heading{padding:0!important;text-align:center;min-width:0}
:root #togetherPanel .together-heading small,:root #togetherPanel .together-source-chip{display:none!important}
:root #togetherPanel .together-heading strong,:root #momentsPanel .mm-page-title{display:block;margin:0;text-align:center;font:italic 500 27px/1.15 var(--editorial-serif,Georgia,serif)!important;letter-spacing:.5px!important;color:var(--ref-ink,#4e4827)}
:root #momentsPanel .mm-back,:root #togetherPanel .together-back{border:0;border-radius:50%;background:transparent!important;box-shadow:none!important;color:var(--ref-plum,#635d35)}
:root[data-sms] #momentsPanel .mm-back,:root[data-sms] #togetherPanel .together-back{border:1px solid var(--akline,rgba(34,34,32,.16));border-radius:0;color:var(--akink,#222220)}
:root[data-sms] #momentsPanel .mm-page-title,:root[data-sms] #togetherPanel .together-heading strong{font:600 11px/1 var(--akserif,Georgia,serif)!important;font-style:normal!important;letter-spacing:.24em!important;text-transform:uppercase;color:var(--akink,#222220)}
:root[data-sms] #momentsPanel .mm-page-title::after{content:' — 朋友圈'}
:root[data-sms] #togetherPanel .together-heading strong::after{content:' — 一起听'}
:root #momentsPanel>.mm-page>.seg-switch{flex:0 0 auto;align-self:stretch;margin:0 16px 10px;width:auto;min-height:44px}
/* Conversation search follows the existing theme colors. */
.chat-history-search-form{display:flex;gap:8px;margin:4px 0 12px}.chat-history-search-form input{flex:1;min-width:0;padding:12px;border:1px solid currentColor;border-radius:12px;background:transparent;color:inherit;font:inherit}.chat-history-hit{display:flex;flex-direction:column;gap:7px;width:100%;padding:14px 4px;text-align:left;border:0;border-bottom:1px solid color-mix(in srgb,currentColor 15%,transparent);background:transparent;color:inherit;font:inherit;cursor:pointer}.chat-history-hit span{white-space:pre-wrap;overflow-wrap:anywhere}.chat-history-hit small,.chat-history-original small{opacity:.65;font-size:11px}.chat-history-context{z-index:10020!important}.chat-history-context .settings-detail-body{position:relative;overflow:auto;overscroll-behavior:contain}.chat-history-original{margin:14px 0;padding:14px;border-radius:14px;background:color-mix(in srgb,currentColor 5%,transparent)}.chat-history-original.human{margin-left:22px}.chat-history-original.ai{margin-right:22px}.chat-history-original.located{outline:2px solid currentColor;outline-offset:-2px}.chat-history-original-text{white-space:pre-wrap;overflow-wrap:anywhere;margin-top:8px;line-height:1.7}.chat-history-context mark,#chatHistorySearchResults mark{background:#ead79b;color:#302b24;border-radius:3px}.chat-history-context .api-mini-btn{margin:8px 0}#chatHistorySearchResults{max-height:45vh;overflow:auto}#chatHistorySearchMore{margin:10px 0 20px}
.chat-history-context{color:var(--ink)}.chat-history-search-form input{border-color:var(--glass-line);background:var(--glass);color:var(--ink)}.chat-history-search-form input::placeholder{color:var(--ink);opacity:.55}.chat-history-context mark,#chatHistorySearchResults mark{background:color-mix(in srgb,var(--brand) 30%,transparent);color:inherit}.chat-history-hit:focus-visible,.chat-history-search-form input:focus-visible{outline:2px solid var(--brand);outline-offset:2px}.chat-history-original.located{outline-color:var(--brand)}
:root[data-sms] .chat-history-context{color:var(--akink);font-family:var(--akcjk)}:root[data-sms] .chat-history-search-form input{border:1px solid var(--akline2);border-radius:2px;background:var(--akbg);color:var(--akink);font-family:var(--akcjk)}:root[data-sms] .chat-history-original{border-radius:2px;border:1px solid var(--akline);background:transparent}:root[data-sms] .chat-history-original.human{background:var(--akbg)}:root[data-sms] .chat-history-original.located{outline-color:var(--ak-accent)}:root[data-sms] .chat-history-context mark,:root[data-sms] #chatHistorySearchResults mark{background:color-mix(in srgb,var(--ak-accent) 16%,var(--akbg));color:var(--akink);border-radius:0}:root[data-sms] .chat-history-hit small,:root[data-sms] .chat-history-original small{font-family:var(--aknum)}
.chat-history-context .settings-detail-dialog{max-height:min(86dvh,780px)}.chat-history-context .settings-detail-body{min-height:0}.chat-history-search-form .api-mini-btn{flex-shrink:0}@media(max-width:380px){.chat-history-search-form input{padding:10px 8px;font-size:13px}.chat-history-context .settings-detail-body{padding-left:8px;padding-right:8px}}
/* Use the current whole-theme palette, including DIY overrides. */
.chat-history-context,.chat-history-hit{color:var(--ref-ink,var(--text));font-family:var(--font-cn,serif)}.chat-history-search-form input{background:var(--ref-glass,var(--glass));border-color:var(--ref-glass-line,var(--glass-line));color:var(--ref-ink,var(--text))}.chat-history-search-form input::placeholder{color:var(--ref-mauve,var(--muted));opacity:1}.chat-history-context mark,#chatHistorySearchResults mark{background:color-mix(in srgb,var(--ref-accent,var(--brand)) 22%,transparent);color:inherit}.chat-history-original.located{outline-color:var(--ref-accent,var(--brand))}.chat-history-context .api-mini-btn,.chat-history-search-form .api-mini-btn,#chatHistorySearchMore{min-height:36px;padding:7px 13px;border:1px solid var(--ref-glass-line,var(--glass-line));border-radius:12px;background:var(--ref-chip,var(--glass));color:var(--ref-ink,var(--text));font:500 12px/1.3 var(--font-cn,serif);cursor:pointer}.chat-history-context .api-mini-btn:disabled{opacity:.5;cursor:wait}.chat-history-context .settings-sub{text-align:left;font-size:11px;color:var(--ref-mauve,var(--muted));line-height:1.6}.chat-history-context .settings-detail-dialog{min-width:0}.chat-history-context .settings-detail-head strong{font-size:19px}.chat-history-hit:focus-visible,.chat-history-search-form input:focus-visible{outline-color:var(--ref-accent,var(--brand))}
:root[data-sms] .chat-history-context .api-mini-btn,:root[data-sms] .chat-history-search-form .api-mini-btn,:root[data-sms] #chatHistorySearchMore{border-radius:2px;border-color:var(--akline2);background:var(--akbg);color:var(--akink);font-family:var(--akcjk)}:root[data-sms] .chat-history-context .settings-detail-head strong{font:500 18px/1.4 var(--akcjk);color:var(--akink)}:root[data-sms] .chat-history-context .settings-sub{color:var(--akink2)}
/* Heatmap search entrance and a focused, theme-aware message search page. */
.chat-history-search-launch{display:flex!important;align-items:center;gap:9px;width:100%;min-height:40px;padding:9px 13px;margin:0 0 18px;border:1px solid var(--ref-glass-line,var(--glass-line));border-radius:12px;background:var(--ref-glass,var(--glass));color:var(--ref-mauve,var(--muted));font:400 13px/1.4 var(--font-cn,serif);text-align:left;cursor:pointer}.chat-history-search-launch svg{width:18px;height:18px;flex-shrink:0}
#chatHistorySearchPanel[hidden]{display:none!important}#chatHistorySearchPanel{position:fixed;z-index:10010;left:0;right:0;top:var(--history-search-top,0px);height:var(--history-search-height,100dvh);display:flex;flex-direction:column;overflow:hidden;background:var(--ref-sheet,var(--glass-strong));color:var(--ref-ink,var(--text));font-family:var(--font-cn,serif);isolation:isolate}.chat-history-search-open{overflow:hidden!important}.chat-history-search-top{display:flex;align-items:center;gap:12px;padding:calc(env(safe-area-inset-top) + 12px) 16px 12px;border-bottom:1px solid var(--ref-glass-line,var(--glass-line));flex-shrink:0}.chat-history-search-top .chat-history-search-form{flex:1;min-width:0;margin:0;display:block}.chat-history-search-field{display:flex;align-items:center;gap:8px;padding:0 10px;min-height:40px;border:1px solid var(--ref-glass-line,var(--glass-line));border-radius:12px;background:var(--ref-glass,var(--glass))}.chat-history-search-icon{font:24px/1 sans-serif;opacity:.55;flex:none}#chatHistorySearchPanel input{width:100%;min-width:0;flex:1;padding:9px 0;border:0;border-radius:0;background:transparent;box-shadow:none;color:inherit;font:400 16px/1.4 var(--font-cn,serif);outline:none}#chatHistorySearchPanel input::-webkit-search-cancel-button{display:none}.chat-history-search-clear,.chat-history-search-cancel{border:0;background:transparent;color:inherit;cursor:pointer}.chat-history-search-clear{flex:none;width:28px;height:28px;padding:0;border-radius:50%;font:22px/1 sans-serif;opacity:.6}.chat-history-search-cancel{padding:8px 0;min-width:32px;font:400 14px/1.4 var(--font-cn,serif);color:var(--ref-accent,var(--brand))}.chat-history-search-content{min-height:0;flex:1;overflow:auto;overscroll-behavior:contain;padding:0 16px calc(18px + env(safe-area-inset-bottom))}#chatHistorySearchPanel #chatHistorySearchStatus{font:400 11px/1.5 var(--font-cn,serif);color:var(--ref-mauve,var(--muted));padding:12px 0;margin:0;text-align:left}#chatHistorySearchPanel #chatHistorySearchResults{max-height:none;overflow:visible}#chatHistorySearchPanel .chat-history-hit{display:flex;flex-direction:row;align-items:center;gap:12px;padding:15px 0;border-bottom:1px solid var(--ref-glass-line,var(--glass-line));color:inherit}#chatHistorySearchPanel .chat-history-result-avatar{width:42px;height:42px;flex:0 0 42px;border-radius:9px;background:var(--ref-chip,var(--glass));background-image:var(--avatar-default);background-size:cover;background-position:center}#chatHistorySearchPanel .chat-history-result-avatar.human{background-image:var(--human-avatar-default)}#chatHistorySearchPanel .chat-history-result-copy{display:flex;flex-direction:column;min-width:0;flex:1;gap:7px}#chatHistorySearchPanel .chat-history-result-meta{display:flex;align-items:baseline;justify-content:space-between;gap:8px;white-space:nowrap}#chatHistorySearchPanel .chat-history-result-meta strong{font:500 13px/1.4 var(--font-cn,serif);overflow:hidden;text-overflow:ellipsis}#chatHistorySearchPanel .chat-history-result-meta small{font:400 10px/1.4 system-ui;flex:none;opacity:.6}#chatHistorySearchPanel .chat-history-result-snippet{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font:400 14px/1.6 var(--font-cn,serif)}#chatHistorySearchPanel mark{background:color-mix(in srgb,var(--ref-accent,var(--brand)) 20%,transparent);color:inherit}#chatHistorySearchPanel button:focus-visible,.chat-history-search-launch:focus-visible{outline:2px solid var(--ref-accent,var(--brand));outline-offset:2px}
:root[data-sms] .chat-history-search-launch{border-radius:2px;border-color:var(--akline2);background:var(--akbg);color:var(--akink2);font-family:var(--akcjk)}:root[data-sms] #chatHistorySearchPanel{background:var(--akbg);color:var(--akink);font-family:var(--akcjk)}:root[data-sms] .chat-history-search-field{border-radius:2px;background:transparent;border-color:var(--akline2)}:root[data-sms] .chat-history-search-top{border-color:var(--akline2)}:root[data-sms] .chat-history-search-cancel{color:var(--akink);font-family:var(--akcjk)}:root[data-sms] #chatHistorySearchPanel input,:root[data-sms] #chatHistorySearchPanel .chat-history-result-snippet,:root[data-sms] #chatHistorySearchPanel .chat-history-result-meta strong{font-family:var(--akcjk)}:root[data-sms] #chatHistorySearchPanel .chat-history-hit{border-color:var(--akline)}:root[data-sms] #chatHistorySearchPanel .chat-history-result-avatar{border-radius:2px}:root[data-sms] #chatHistorySearchPanel mark{background:color-mix(in srgb,var(--ak-accent) 16%,var(--akbg));color:var(--akink);border-radius:0}
@media(min-width:700px){.chat-history-search-top,.chat-history-search-content{padding-left:max(20px,calc((100vw - 700px)/2));padding-right:max(20px,calc((100vw - 700px)/2))}}
#chatHistorySearchPanel #chatHistorySearchStatus{color:inherit;opacity:.68}.chat-history-search-cancel{color:var(--ref-ink,var(--text))}
:root[data-sms] #chatHistorySearchPanel{background:var(--ref-sheet,#f7f4ef)}:root[data-sms] #chatHistorySearchPanel .chat-history-hit{border-color:color-mix(in srgb,var(--akink,#222220) 14%,transparent)}:root[data-sms] #chatHistorySearchPanel .chat-history-search-field{border-color:color-mix(in srgb,var(--akink,#222220) 22%,transparent)}
