
  .spatial.svelte-q7k8cb { position: fixed; top: 0; left: 0; width: 100vw; height: 100dvh; display: block; z-index: 0; pointer-events: none; }

  /* 不透明白底：GL 挂掉时元素本身也是白（降级=纯白幕），与父层白幕顶帧互换无感 */
  .pr.svelte-v00hld { position: fixed; top: 0; left: 0; width: 100vw; height: 100dvh; display: block;
        background: #fff; pointer-events: none; }
  .pr.hide.svelte-v00hld { visibility: hidden; }   /* 预载期隐形（仍在渲染，显形即有画面） */

  .preload.svelte-1u7unb5 { position: fixed; inset: 0; z-index: 200; background: #fff; }       /* A 暗版：白底 */
  .preload.b.svelte-1u7unb5 { background: #0a0a0a; }                                            /* B 白版：黑底（白方块展开成白） */
  /* 快路径：本层底色让位，镂空窗后面直接就是主页（四周由方块的黑环接管） */
  .preload.b.reveal-home.svelte-1u7unb5 { background: transparent; }

  /* 中央方块 → 居中放大铺满全屏（圆角同步归零）。曲线/时长走运动令牌。 */
  .block.svelte-1u7unb5 {
    position: fixed; top: 50%; left: 50%; width: 148px; height: 148px;
    transform: translate(-50%, -50%); background: #0a0a0a; border-radius: 34px;
    box-shadow: 0 24px 70px rgba(0,0,0,.28);
    transition: width var(--mo-page) var(--ea-decel), height var(--mo-page) var(--ea-decel),
                border-radius var(--mo-page) var(--ea-decel), box-shadow var(--mo-base) var(--ea-fade);
  }
  .preload.b.svelte-1u7unb5 .block:where(.svelte-1u7unb5) { background: #fff; }
  .preload.cover.svelte-1u7unb5 .block:where(.svelte-1u7unb5) { animation: svelte-1u7unb5-blockIn var(--mo-quick) var(--ea-settle) both; }
  @keyframes svelte-1u7unb5-blockIn { from { transform: translate(-50%,-50%) scale(.86); opacity: 0; } to { transform: translate(-50%,-50%) scale(1); opacity: 1; } }
  .preload.expand.svelte-1u7unb5 .block:where(.svelte-1u7unb5) { width: 150vmax; height: 150vmax; border-radius: 0; box-shadow: none; }
  /* B 版 expand：白方块顶帧变「镂空窗 + 黑环」——中心透明，box-shadow 瞬时换成 9999px
     黑环接管四周（同为 #0a0a0a，肉眼无感）；transition 剔除 box-shadow 防止环从 0 长出来露馅。 */
  .preload.b.expand.svelte-1u7unb5 .block:where(.svelte-1u7unb5) {
    background: transparent; box-shadow: 0 0 0 9999px #0a0a0a;
    transition: width var(--mo-page) var(--ea-decel), height var(--mo-page) var(--ea-decel),
                border-radius var(--mo-page) var(--ea-decel);
  }

  /* iOS 弹性缓动，与 demo2 一致 */
  .refract.svelte-1p2djoz, .plabel.svelte-1p2djoz, .card.svelte-1p2djoz { transition-timing-function: cubic-bezier(.32, .72, 0, 1); }
  /* 出场动画：随主页露出，整个登录胶囊（玻璃+文字+本体）一起淡入，略晚于入口图标。
     fixed 子元素靠外层 opacity group 一并淡入；外层占满视口、自身不拦事件（子元素各自接管）。 */
  .lc-fade.svelte-1p2djoz { position: fixed; inset: 0; z-index: 30; pointer-events: none; opacity: 0; transition: opacity var(--mo-base) var(--ea-fade) var(--mo-quick); }
  .lc-fade.appeared.svelte-1p2djoz { opacity: 1; }

  .refract.svelte-1p2djoz {
    position: fixed; z-index: 31; pointer-events: none;
    border-radius: 22px; transform-origin: center center;
    transition-property: transform, opacity; transition-duration: .52s, .42s;
  }
  .plabel.svelte-1p2djoz {
    position: fixed; z-index: 32; pointer-events: auto;
    /* 块级 + 行高居中（而非 flex），让超长用户名能 ellipsis（pillW 封顶后的兜底） */
    display: block; line-height: 40px; text-align: center; padding: 0 14px;
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
    color: #fff; font-size: 14px; font-weight: 600; letter-spacing: .02em; text-shadow: 0 1px 3px rgba(0,0,0,.35);
    transform-origin: center center; transition-property: transform, opacity; transition-duration: .52s, .3s;
  }
  /* 桌面：胶囊本身是个按钮，鼠标划过得亮一下（transform/opacity 归 morph 动画管，
     这里只碰文字发光，免得跟展开成卡片的那条 transition 打架） */
  @media (hover: hover) {
    .plabel.svelte-1p2djoz:hover { text-shadow: 0 0 12px rgba(255,255,255,.55), 0 1px 3px rgba(0,0,0,.35); }
  }

  .card-bd.svelte-1p2djoz { position: fixed; inset: 0; z-index: 20; pointer-events: auto; background: rgba(0,0,0,.34); backdrop-filter: blur(2px); -webkit-backdrop-filter: blur(2px); }

  .card.svelte-1p2djoz {
    position: fixed; z-index: 30; pointer-events: auto; overflow: hidden;
    transition-property: left, top, width, height, border-radius, background, box-shadow, backdrop-filter, -webkit-backdrop-filter;
    transition-duration: .52s; box-shadow: 0 0 0 0 rgba(0,0,0,0);
  }
  .card.pill.svelte-1p2djoz { background: rgba(255,255,255,0); backdrop-filter: blur(0) saturate(1); -webkit-backdrop-filter: blur(0) saturate(1); }
  .card.expanded.svelte-1p2djoz {
    background: rgba(240,243,250,.72); backdrop-filter: blur(34px) saturate(1.7); -webkit-backdrop-filter: blur(34px) saturate(1.7);
    box-shadow: 0 30px 90px rgba(0,0,0,.4), inset 0 1px 1px rgba(255,255,255,.7);
  }

  .content.svelte-1p2djoz { position: absolute; inset: 0; padding: 26px 22px; display: flex; flex-direction: column; gap: 12px; overflow-y: auto; }
  .content.svelte-1p2djoz h3:where(.svelte-1p2djoz) { font-size: 23px; font-weight: 800; color: #15171c; margin-bottom: 2px; }
  .lf.svelte-1p2djoz { width: 100%; height: 50px; border: none; outline: none; border-radius: 14px; background: rgba(255,255,255,.66); box-shadow: inset 0 0 0 .5px rgba(0,0,0,.08); padding: 0 16px; font-size: 16px; color: #15171c; }
  .lf.svelte-1p2djoz::placeholder { color: #8a8d96; }
  .acts.svelte-1p2djoz { display: flex; flex-direction: column; gap: 10px; margin-top: auto; }
  .act.svelte-1p2djoz { width: 100%; height: 50px; border-radius: 25px; font-size: 17px; font-weight: 700; display: flex; align-items: center; justify-content: center; transition: transform var(--mo-tap) var(--ea-out), filter var(--mo-micro) var(--ea-fade); }
  .act.svelte-1p2djoz:active { transform: scale(.97); }
  .act.primary.svelte-1p2djoz { background: #2f6fed; color: #fff; box-shadow: 0 6px 16px rgba(47,111,237,.4); }
  .act.primary.svelte-1p2djoz:disabled { opacity: .6; }
  .act.ghost.svelte-1p2djoz { background: rgba(0,0,0,.05); color: #2f6fed; font-weight: 600; height: 46px; }
  .act.workspace.svelte-1p2djoz { position: relative; justify-content: flex-start; gap: 11px; padding: 0 17px; background: rgba(255,255,255,.62); color: #15171c; box-shadow: inset 0 0 0 .5px rgba(0,0,0,.08); }
  .act.workspace.svelte-1p2djoz img:where(.svelte-1p2djoz) { width: 28px; height: 28px; object-fit: contain; }
  .act.workspace.svelte-1p2djoz .chev:where(.svelte-1p2djoz) { margin-left: auto; color: #8a8d96; font-size: 27px; line-height: 1; font-weight: 400; }
  .act.link.svelte-1p2djoz { background: none; color: #5a5e68; font-weight: 500; height: 38px; font-size: 14px; }
  /* 登录模式底部两条次级链接并排（注册 / 令牌），把主位让给「扫码登录」 */
  .links.svelte-1p2djoz { display: flex; gap: 6px; }
  .links.svelte-1p2djoz .act.link:where(.svelte-1p2djoz) { width: auto; flex: 1; padding: 0 4px; }
  .act.workspace.svelte-1p2djoz .scanico:where(.svelte-1p2djoz) { width: 28px; height: 28px; display: flex; align-items: center; justify-content: center; color: #2f6fed; }
  /* —— 扫码登录：白底码块 + 状态盖层 —— */
  .qrwrap.svelte-1p2djoz { position: relative; width: 200px; height: 200px; margin: 2px auto 0; flex: none; }
  .qrbox.svelte-1p2djoz { position: absolute; inset: 0; padding: 12px; border-radius: 16px; background: #fff; box-shadow: inset 0 0 0 .5px rgba(0,0,0,.08); transition: opacity .2s; }
  .qrbox.svelte-1p2djoz svg { display: block; width: 100%; height: 100%; }
  .qrbox.dim.svelte-1p2djoz svg { opacity: .1; }
  .qrov.svelte-1p2djoz { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; color: #15171c; text-align: center; padding: 12px; border-radius: 16px; background: transparent; }
  .qrov.svelte-1p2djoz b:where(.svelte-1p2djoz) { font-size: 15px; font-weight: 700; }
  .qrov.svelte-1p2djoz small:where(.svelte-1p2djoz) { font-size: 12.5px; color: #6b6f78; }
  .qrov.tap.svelte-1p2djoz:active { background: rgba(0,0,0,.04); }
  .qi.svelte-1p2djoz { width: 40px; height: 40px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 20px; font-weight: 700; color: #2f6fed; background: rgba(47,111,237,.12); margin-bottom: 4px; }
  .qi.ok.svelte-1p2djoz { color: #2f9e5b; background: rgba(47,158,91,.13); }
  .spin.svelte-1p2djoz { width: 26px; height: 26px; border-radius: 50%; border: 3px solid rgba(47,111,237,.18); border-top-color: #2f6fed; animation: svelte-1p2djoz-qrspin .8s linear infinite; }
  @keyframes svelte-1p2djoz-qrspin { to { transform: rotate(360deg); } }
  .qrhint.svelte-1p2djoz { font-size: 13px; color: #6b6f78; text-align: center; line-height: 1.4; }
  .err.svelte-1p2djoz { background: rgba(217,106,90,.14); color: #b13b2a; font-size: 13px; padding: 9px 13px; border-radius: 11px; }
  .usage.svelte-1p2djoz { display: flex; flex-direction: column; gap: 9px; margin: 4px 0 2px; }
  .urow.svelte-1p2djoz { display: flex; justify-content: space-between; font-size: 15px; color: #2a2d34; }
  .urow.svelte-1p2djoz span:where(.svelte-1p2djoz):last-child { font-weight: 700; }
  .uhint.svelte-1p2djoz { font-size: 12px; color: #82858d; margin-top: 2px; }

  .refraction.svelte-wcxezk { position: fixed; top: 0; left: 0; width: 100vw; height: 100dvh; display: block; z-index: 0; pointer-events: none; }

  .home.svelte-1ary22t { position: fixed; inset: 0; background: #0a0a0a; overflow: hidden;
          transition: opacity var(--mo-quick) var(--ea-fade); }  /* 纯黑兜底：flux 未出画面时露此黑，与预载黑屏一致，flux「从黑浮现」无缝、不闪蓝板 */
  /* claude 入场：主页退到后面去。要比转场本身快（200ms）——慢过转场的话前半段还亮着，
     纵深就白让了。转场结束类自动摘掉，那时它已 display:none，恢复无感。 */
  .home.entering.svelte-1ary22t { opacity: .5; }
  /* 设置页静止打开时，禁用主页全部 backdrop-filter（液态玻璃折射 + 登录胶囊）。Chromium 下多个
     backdrop-filter 元素共存会互扰：主页这些玻璃绘制在设置页下层，会破坏设置页那层 backdrop-filter
     的合成，令其 computed 是 blur(22px) 却完全不渲染模糊（桌面/移动端皆然，也是 screenshot 卡死之源）。
     设置页盖住主页、这些玻璃本就不可见，禁用无损；拖滑块预览(settingsPreview)时设置页透明露主页，恢复折射。 */
  .home.dimbg.svelte-1ary22t .lg,
  .home.dimbg.svelte-1ary22t .card { backdrop-filter: none !important; -webkit-backdrop-filter: none !important; }
  /* 壁纸铺满整屏含状态栏区（iOS safe-area）：top:0 + 100dvh，别在刘海/状态栏处留黑边。
     原色（深蓝近黑 Orange set 预设），只叠一层很淡暗角衬托玻璃。 */
  .wp.svelte-1ary22t { position: fixed; top: 0; left: 0; width: 100vw; height: 100dvh; border: 0; z-index: 0; pointer-events: none; }
  .wp-img.svelte-1ary22t { object-fit: cover; }   /* 静态壁纸 cover 铺满 */
  .wp-fx.svelte-1ary22t { z-index: 1; animation: svelte-1ary22t-wp-fade .55s ease forwards; }   /* 壁纸切换：旧图盖上层交叉淡出 */
  @keyframes svelte-1ary22t-wp-fade { from { opacity: 1; } to { opacity: 0; } }
  .wp-veil.svelte-1ary22t { position: fixed; inset: 0; z-index: 1; pointer-events: none;
             background: radial-gradient(125% 95% at 50% 42%, rgba(0,0,0,0) 52%, rgba(0,0,0,.38) 100%); }

  /* 左上品牌字：与预载页末态同位同款，硬接无缝 */
  /* (unused) .brand {
    position: fixed; top: max(16px, var(--sat)); left: 18px; z-index: 10; pointer-events: none;
    display: flex; flex-direction: column; gap: 0;
    color: #fff; font-family: var(--serif-stack); font-weight: 300; font-size: 14px; line-height: 1.16; letter-spacing: .14em;
    text-shadow: 0 1px 8px rgba(0,0,0,.4);
  }*/

  /* 中央入口：四个时 2×2；普通账号隐藏 ChatGPT 后，第三个自动居中。 */
  .grid.svelte-1ary22t {
    position: fixed; left: 0; right: 0; top: 50%; transform: translateY(-50%); z-index: 5;
    display: grid; grid-template-columns: repeat(2, auto); justify-content: center; gap: 26px 22px; padding: 0 24px;
  }
  /* 浮现入场：仅明亮主题(多洛米蒂 B)。玻璃框(.tile)带折射全程在、不淡入；只让框里的 logo(.ico)
     原地纯透明度 0→1 浮现——折射在 .tile 上、不被 opacity 破坏(全程可见)，logo 柔和浮现。轻微 stagger。
     暗主题(flux)logo 直接显示。触发见 Home $effect：明亮主页露出后才浮现，确保可见。 */
  /* 折叠屏展开 / 平板（≥700）：2×2 的方块簇在这么宽的屏上缩成中间一小坨，摊成一行更像
     大屏启动器。奇数个时的「末项跨列居中」规则要一并撤——一行摆得下就不需要它了。 */
  @media (min-width: 700px) {
    .grid.svelte-1ary22t { grid-template-columns: repeat(4, auto); gap: 0 30px; }
    .entry.svelte-1ary22t:last-child:nth-child(odd) { grid-column: auto; justify-self: auto; }
  }
  .entry.svelte-1ary22t { display: flex; flex-direction: column; align-items: center; gap: 11px; }
  .entry.svelte-1ary22t:last-child:nth-child(odd) { grid-column: 1 / -1; justify-self: center; }
  .grid.fade.svelte-1ary22t .ico:where(.svelte-1ary22t) {
    opacity: 0;
    transition: opacity var(--mo-base) var(--ea-fade);
    transition-delay: calc(var(--i, 0) * 34ms);   /* 4 个入口 → 尾巴封在 ~100ms 内 */
  }
  .grid.fade.revealed.svelte-1ary22t .ico:where(.svelte-1ary22t) { opacity: 1; }
  /* transform 由 use:pressable 经 --press-s 驱动（按下 CSS 过渡、松手 JS 弹簧），
     故此处不再写 transition——写了会跟弹簧每帧打架，回弹变成一截一截的。 */
  .tile.svelte-1ary22t { width: 124px; height: 124px; display: flex; align-items: center; justify-content: center;
          transform: scale(var(--press-s, 1)); }
  /* 拎着文件悬停在入口上：方块微微鼓起 + 描一圈，说明「丢这儿就发给它」 */
  .entry.dnd-on.svelte-1ary22t .tile:where(.svelte-1ary22t) { transform: scale(1.06); transition: transform .14s ease; }
  .entry.dnd-on.svelte-1ary22t .ico:where(.svelte-1ary22t) { filter: drop-shadow(0 0 14px rgba(255, 255, 255, .55)); }
  /* 方案 A 极高透光毛玻璃：玻璃边框 + 高光（blur 由 liquidGlass 注入，很透，流体能透过来） */
  .tile.frost.svelte-1ary22t { border-radius: 30px; border: 1px solid rgba(255,255,255,.22);
    box-shadow: inset 0 1px 1px rgba(255,255,255,.32), inset 0 -2px 3px rgba(0,0,0,.12), 0 6px 18px rgba(0,0,0,.18); }
  .ico.svelte-1ary22t { width: 62px; height: 62px; object-fit: contain; filter: drop-shadow(0 2px 6px rgba(0,0,0,.35)); }
  .ico.vhidden.svelte-1ary22t { opacity: 0; }   /* 转场时隐藏被点 vertex 图标，由转场十字星无缝接管 */

  /* 共用毛玻璃材质：无 border、无高光描边、无投影——纯 blur + 半透底色 */
  .fab.svelte-1h259us {
    position: absolute; z-index: 30;   /* top 由 sat 属性内联给（宿主吃过安全区时不叠加） */
    background: rgba(32, 32, 30, .42);
    -webkit-backdrop-filter: blur(18px) saturate(1.5);
    backdrop-filter: blur(18px) saturate(1.5);
    color: var(--serif);
  }
  html[data-theme="light"] .fab.svelte-1h259us { background: rgba(248, 248, 246, .5); }

  .fab.round.svelte-1h259us {
    left: 10px; width: 44px; height: 44px; border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    font-family: var(--icons); font-size: 21px;
  }
  .fab.round.svelte-1h259us:active { background: rgba(32,32,30,.6); }
  html[data-theme="light"] .fab.round.svelte-1h259us:active { background: rgba(235,235,230,.7); }
  /* 折叠屏展开档：汉堡＝侧栏常驻开关，已常驻时点亮（与 eyes 键同款选中反馈） */
  .fab.round.on.svelte-1h259us { color: var(--text); background: rgba(32,32,30,.62); }
  html[data-theme="light"] .fab.round.on.svelte-1h259us { background: rgba(228,228,222,.78); }

  .fab.pill.svelte-1h259us {
    right: 10px; height: 44px; border-radius: 22px;
    display: flex; align-items: center; padding: 0 4px;
  }
  .pbtn.svelte-1h259us {
    width: 42px; height: 36px; border-radius: 18px;
    display: flex; align-items: center; justify-content: center; color: var(--serif);
  }
  .pbtn.svelte-1h259us:active { background: var(--hover-strong); }
  .pbtn.svelte-1h259us svg:where(.svelte-1h259us) { width: 20px; height: 20px; }
  .pbtn.eyes.svelte-1h259us { position: relative; }
  .pbtn.eyes.on.svelte-1h259us { background: var(--hover-strong); color: var(--text); }
  /* agent 正在用浏览器且面板没开：呼吸绿点提示（点开即清） */
  .live-dot.svelte-1h259us { position: absolute; top: 5px; right: 7px; width: 7px; height: 7px; border-radius: 50%;
    background: var(--ok); animation: svelte-1h259us-tbPulse 1.2s ease-in-out infinite; }
  @keyframes svelte-1h259us-tbPulse { 50% { opacity: .35; } }
  .pbtn.svelte-1h259us .moon:where(.svelte-1h259us) { display: none; }
  html[data-theme="light"] .pbtn.svelte-1h259us .sun:where(.svelte-1h259us) { display: none; }
  html[data-theme="light"] .pbtn.svelte-1h259us .moon:where(.svelte-1h259us) { display: block; }

  .sm.svelte-1egw7wm {
    position: absolute; left: 0; right: 0; bottom: calc(100% + 8px); z-index: 61;
    max-height: 46vh; overflow-y: auto; overscroll-behavior: contain; padding: 6px;
    background: var(--q-card); border-radius: 12px; box-shadow: var(--q-shadow);
    animation: svelte-1egw7wm-smPop var(--mo-quick, .16s) var(--ea-decel, ease-out);
  }
  @keyframes svelte-1egw7wm-smPop { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: none; } }
  .sm-row.svelte-1egw7wm { width: 100%; display: flex; align-items: baseline; gap: 10px; padding: 7px 10px; border-radius: 8px; text-align: left; min-width: 0; }
  .sm-row.on.svelte-1egw7wm { background: var(--hover); }
  .sm-name.svelte-1egw7wm { flex: none; max-width: 55%; font-size: 13.5px; color: var(--text); overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
  .sm-arg.svelte-1egw7wm { color: var(--muted); font-size: 12px; margin-left: 5px; }
  .sm-desc.svelte-1egw7wm { flex: 1; min-width: 0; font-size: 12px; color: var(--muted); overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }

  .mp-backdrop.svelte-1lis8xj { position: fixed; inset: 0; z-index: 60; }
  /* 官方 popover 实测：min-w 130 / 圆角 8 / py 6 / 影 0 0 0 1px 6% + 0 6px 16px 6% */
  .mp.svelte-1lis8xj {
    position: absolute; bottom: calc(100% + 8px); right: 0; z-index: 61;
    min-width: 172px; max-width: 88vw; padding: 6px 0;
    background: var(--q-card); border-radius: 10px; box-shadow: var(--q-shadow);
    max-height: 60vh; overflow-y: auto; animation: svelte-1lis8xj-mpPop var(--mo-quick) var(--ea-decel);
  }
  @keyframes svelte-1lis8xj-mpPop { from { opacity: 0; transform: scale(.97); } to { opacity: 1; transform: none; } }
  .mp.down.svelte-1lis8xj { bottom: auto; top: calc(100% + 8px); }
  .mp-label.svelte-1lis8xj { padding: 4px 12px 2px; font-size: 12px; color: var(--muted); }
  /* 官方行规格：min-h 28（官方 24，触屏放宽）/px 12/13.5px */
  .mp-row.svelte-1lis8xj { width: 100%; min-height: 28px; display: flex; align-items: center; gap: 8px; padding: 5px 12px; text-align: left; }
  .mp-row.svelte-1lis8xj:active { background: var(--hover); }
  @media (hover: hover) { .mp-row.svelte-1lis8xj:hover { background: var(--hover); } }
  .mp-name.svelte-1lis8xj { flex: 1; min-width: 0; font-size: 13.5px; color: var(--text); overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
  .mp-back.svelte-1lis8xj .mp-name:where(.svelte-1lis8xj) { color: var(--muted); }
  .mp-check.svelte-1lis8xj { flex: none; width: 15px; height: 15px; color: var(--text); }
  .mp-chev.svelte-1lis8xj { flex: none; width: 14px; height: 14px; color: var(--muted); }
  .mp-chev.back.svelte-1lis8xj { margin-left: -4px; }
  .mp-div.svelte-1lis8xj { height: 1px; background: var(--divider); margin: 5px 0; }
  /* Fast mode 开关（官方 claude.ai/code 同款：iOS 式蓝色 toggle，32×18 / knob 14） */
  .mp-switch.svelte-1lis8xj { flex: none; width: 32px; height: 18px; border-radius: 999px; background: var(--hover-strong, var(--hover));
    position: relative; transition: background var(--mo-micro) var(--ea-fade); }
  .mp-switch.on.svelte-1lis8xj { background: #2f80ed; }
  .mp-knob.svelte-1lis8xj { position: absolute; top: 2px; left: 2px; width: 14px; height: 14px; border-radius: 999px;
    background: #fff; box-shadow: 0 1px 2px rgba(0,0,0,.25); transition: left var(--mo-quick) var(--ea-std); }
  .mp-switch.on.svelte-1lis8xj .mp-knob:where(.svelte-1lis8xj) { left: 16px; }

  /* ===== 官方 token（claude.ai/code 实测）。bridge 暗=:root 默认，亮=html[data-theme=light] ===== */
  .ef.svelte-n7cbak {
    --ef-pop-bg: rgb(44, 44, 42);
    --ef-pop-shadow: inset 0 0 0 1px rgba(255, 255, 255, .08), 0 6px 16px rgba(11, 11, 11, .24);
    --ef-t5: rgba(255, 255, 255, .25);
    --ef-t6: rgba(255, 255, 255, .48);
    --ef-t7: rgba(255, 255, 255, .7);
    --ui-slider-background: rgb(26, 26, 25);
    --ui-slider-fill: rgba(255, 255, 255, .16);
    --ui-slider-handle: rgb(165, 164, 154);
    --ui-slider-handle-energized: rgb(241, 234, 255);
    --ef-thumb-shadow: 0 0 12px rgba(11, 11, 11, .24);
    --extended-purple: rgb(183, 150, 255);
    --extended-20-purple: rgba(183, 150, 255, .2);
    --ui-slider-energy-hot: rgb(183, 150, 255);
    --ui-slider-energy-cool: rgb(255, 255, 255);
    --ui-slider-fill-charged-start: rgb(158, 128, 235);
    --ui-slider-fill-charged-end: rgb(89, 64, 153);
    --ui-slider-energy-tint-blue: transparent;
    --ui-slider-energy-tint-pink: transparent;
    --ui-slider-energy-bed-fill: 0;
    --ui-slider-energy-charge-max: .85;
    --ui-slider-energy-charge-ramp: 1.1;
    --ui-slider-energy-ink-floor: .08;
    --ui-slider-energy-ink-ceil: .85;
    --ui-slider-energy-gain: 1;
    --ui-slider-energy-reveal: 60%;
    --ef-energy-op-k: .86;      /* 暗：opacity clamp 系数与上限（官方 dark 变体） */
    --ef-energy-op-max: 65%;
  }
  html[data-theme="light"] .ef.svelte-n7cbak {
    --ef-pop-bg: #fff;
    --ef-pop-shadow: 0 0 0 1px rgba(11, 11, 11, .06), 0 6px 16px rgba(11, 11, 11, .06);
    --ef-t5: rgba(11, 11, 11, .25);
    --ef-t6: rgba(11, 11, 11, .5);
    --ef-t7: rgba(11, 11, 11, .8);
    --ui-slider-background: rgb(237, 236, 232);
    --ui-slider-fill: rgba(11, 11, 11, .1);
    --ui-slider-handle: #fff;
    --ui-slider-handle-energized: #fff;
    --ef-thumb-shadow: 0 0 0 1px rgba(11, 11, 11, .04), 0 0 12px rgba(11, 11, 11, .06);
    --extended-purple: rgb(142, 107, 217);
    --extended-20-purple: rgba(142, 107, 217, .2);
    --ui-slider-energy-hot: rgb(251, 237, 241);
    --ui-slider-energy-cool: rgb(210, 196, 240);
    --ui-slider-fill-charged-start: rgb(151, 148, 218);
    --ui-slider-fill-charged-end: rgb(157, 107, 191);
    --ui-slider-energy-tint-blue: rgba(191, 215, 243, .28);
    --ui-slider-energy-tint-pink: rgba(240, 188, 204, .28);
    --ui-slider-energy-bed-fill: 1;
    --ui-slider-energy-charge-max: .92;
    --ui-slider-energy-charge-ramp: .5;
    --ui-slider-energy-ink-floor: .28;
    --ui-slider-energy-ink-ceil: 1;
    --ui-slider-energy-gain: 1.18;
    --ui-slider-energy-reveal: 45%;
    --ef-energy-op-k: 1.33;
    --ef-energy-op-max: 100%;
  }

  .ef-backdrop.svelte-n7cbak { position: fixed; inset: 0; z-index: 60; }
  /* 卡片：220 / p10 / gap16 / r12（官方 w-[220px] p-p7 gap-[16px] rounded-r8，click 即现无入场动画） */
  .ef.svelte-n7cbak {
    position: absolute; bottom: calc(100% + 8px); right: 0; z-index: 61;
    width: 220px; padding: 10px; display: flex; flex-direction: column; gap: 16px;
    background: var(--ef-pop-bg); border-radius: 12px; box-shadow: var(--ef-pop-shadow);
    user-select: none; font-size: 13px; line-height: 18px; font-family: var(--sans);
  }
  .ef.down.svelte-n7cbak { bottom: auto; top: calc(100% + 8px); }

  /* 标题行：gap 4（g3）；Effort t6、档名 t7、? t5→hover t7 */
  .ef-head.svelte-n7cbak { position: relative; display: flex; align-items: center; justify-content: space-between; gap: 4px; }
  .ef-head-l.svelte-n7cbak { display: flex; min-width: 0; align-items: center; gap: 4px; }
  .ef-title.svelte-n7cbak { flex: none; font-size: 13px; font-weight: 400; color: var(--ef-t6); }
  .ef-valwrap.svelte-n7cbak { position: relative; min-width: 0; display: flex; }
  .ef-val.svelte-n7cbak { display: block; min-width: 0; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; color: var(--ef-t7); }
  .ef-val.accent.svelte-n7cbak { color: var(--extended-purple); font-weight: 500; }
  .ef-help.svelte-n7cbak { flex: none; width: 18px; height: 18px; display: inline-flex; align-items: center; justify-content: center;
    border-radius: 999px; color: var(--ef-t5); cursor: default; outline: none; }
  .ef-help.svelte-n7cbak:hover { color: var(--ef-t7); }
  .ef-help-ic.svelte-n7cbak { font-family: var(--icons); font-size: 16px; line-height: 1; font-variation-settings: "opsz" 16, "wght" 430; }
  /* 帮助浮层：220px、上方右对齐（官方 side top / align end / sideOffset 18 / alignOffset -10） */
  .ef-help-pop.svelte-n7cbak { position: absolute; bottom: calc(100% + 8px); right: -10px; width: 220px; z-index: 5;
    display: flex; flex-direction: column; gap: 2px; padding: 10px;
    background: var(--ef-pop-bg); border-radius: 12px; box-shadow: var(--ef-pop-shadow); }
  .ef-help-t.svelte-n7cbak { font-size: 12px; line-height: 15px; font-weight: 500; color: var(--ef-t7); padding-bottom: 2px; }
  .ef-help-b.svelte-n7cbak { font-size: 13px; line-height: 18px; color: var(--ef-t6); overflow-wrap: break-word; text-wrap: pretty; }

  /* 滑条区：gap 8（g6）；Faster/Smarter 12px t6 */
  .ef-sec.svelte-n7cbak { display: flex; width: 100%; flex-direction: column; gap: 8px; }
  .ef-ends.svelte-n7cbak { display: flex; align-items: center; justify-content: space-between; gap: 4px;
    font-size: 12px; line-height: 15px; color: var(--ef-t6); }

  /* control 24 高；track 20 高 r6 上下 margin 2 */
  .ef-slider.svelte-n7cbak { position: relative; display: flex; height: 24px; width: 100%; align-items: center; touch-action: none; }
  .ef-slider.dragging.svelte-n7cbak { cursor: ew-resize; }
  .ef-track.svelte-n7cbak { position: relative; width: 100%; margin: 2px 0; height: calc(100% - 4px); border-radius: 6px;
    overflow: hidden; container-type: inline-size; background: var(--ui-slider-background); }
  .ef-fill.svelte-n7cbak { position: absolute; inset: 0 auto 0 0; left: 0; overflow: hidden;
    width: var(--slider-drag-pos, var(--slider-rest-pos)); background: var(--ui-slider-fill); }
  /* 能量层：官方 opacity clamp((pos-25%)*k) + mask 软渐入（reveal 45%/60%）+ mask-size 跟填充 */
  .ef-energy-wrap.svelte-n7cbak { pointer-events: none; position: absolute; inset: 0 auto 0 0; width: 100cqw;
    opacity: clamp(0%, calc((var(--slider-drag-pos, var(--slider-rest-pos)) - 25%) * var(--ef-energy-op-k)), var(--ef-energy-op-max));
    mask-image: linear-gradient(to right, transparent 0%, #000 var(--ui-slider-energy-reveal));
    -webkit-mask-image: linear-gradient(to right, transparent 0%, #000 var(--ui-slider-energy-reveal));
    mask-repeat: no-repeat; -webkit-mask-repeat: no-repeat;
    mask-size: max(calc(var(--slider-drag-pos, var(--slider-rest-pos)) - 8px), 0px) 100%;
    -webkit-mask-size: max(calc(var(--slider-drag-pos, var(--slider-rest-pos)) - 8px), 0px) 100%; }
  .ef.svelte-n7cbak { --ef-blend: normal; }
  html:not([data-theme="light"]) .ef.svelte-n7cbak .ef-energy-wrap:where(.svelte-n7cbak) { mix-blend-mode: plus-lighter; }
  .ef-energy.svelte-n7cbak { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none;
    color: var(--ui-slider-energy-hot); outline-color: var(--ui-slider-energy-cool);
    border-top: 0 none var(--ui-slider-fill-charged-start); border-bottom: 0 none var(--ui-slider-fill-charged-end);
    text-decoration-color: var(--ui-slider-energy-tint-blue); column-rule-color: var(--ui-slider-energy-tint-pink); }

  /* 档位点：3px、px 10 两端、t5（末档紫）、35ms 步进错峰；顶档非拖动隐去；命中区 19×23 */
  .ef-dots.svelte-n7cbak { pointer-events: none; position: absolute; inset: 0; display: flex; align-items: center;
    justify-content: space-between; padding: 0 10px; }
  .ef-dot.svelte-n7cbak { pointer-events: auto; position: relative; display: flex; width: 3px; height: 3px;
    align-items: center; justify-content: center; border-radius: 999px; background: var(--ef-t5); }
  .ef-dot.last.svelte-n7cbak { background: var(--extended-purple); }
  .ef-dot-hit.svelte-n7cbak { position: absolute; inset: -10px -8px; }
  @media (prefers-reduced-motion: no-preference) {
    .ef-dot.svelte-n7cbak { transition: opacity .3s ease var(--ds, 0ms); }
  }
  .ef-slider.dragging.svelte-n7cbak .ef-dot:where(.svelte-n7cbak) { pointer-events: none; }
  .ef-slider.topstop.svelte-n7cbak .ef-dot:where(.svelte-n7cbak) { pointer-events: none; }
  .ef-slider.topstop.svelte-n7cbak:not(.dragging) .ef-dot:where(.svelte-n7cbak) { opacity: 0; }

  /* 轨内滑轨：两侧内缩半把手（8px）；把手 16×19 r6，背景色 300ms 过渡 */
  .ef-rail.svelte-n7cbak { pointer-events: none; position: absolute; top: 0; bottom: 0; left: 8px; right: 8px; }
  .ef-thumb.svelte-n7cbak { pointer-events: auto; position: absolute; width: 16px; height: 19px; border-radius: 6px;
    left: var(--slider-drag-pos, var(--slider-rest-pos)); top: 50%; transform: translate(-50%, -50%);
    background: var(--ui-slider-handle); box-shadow: var(--ef-thumb-shadow); cursor: ew-resize; }
  @media (prefers-reduced-motion: no-preference) {
    .ef-thumb.svelte-n7cbak { transition: background-color .3s; }
  }
  .ef-slider.topstop.svelte-n7cbak .ef-thumb:where(.svelte-n7cbak) { background: var(--ui-slider-handle-energized); }
  /* 键盘聚焦环：白 2px + 环 4px + 20% 辉光（官方 shadow-focus-slider；顶档换紫） */
  .ef-focusring.svelte-n7cbak { pointer-events: none; opacity: 0; background: transparent; cursor: default;
    box-shadow: 0 0 0 2px var(--ef-pop-bg), 0 0 0 4px var(--coral), 0 0 14px 4px color-mix(in srgb, var(--coral) 20%, transparent); }
  .ef-slider.svelte-n7cbak:focus-within .ef-focusring:where(.svelte-n7cbak) { opacity: 1; }
  .ef-slider.topstop.svelte-n7cbak .ef-focusring:where(.svelte-n7cbak) {
    box-shadow: 0 0 0 2px var(--ef-pop-bg), 0 0 0 4px var(--extended-purple), 0 0 14px 4px var(--extended-20-purple); }
  /* 真 input：藏在把手位置承载键盘/读屏（官方 clip 内藏 input 同构） */
  .ef-input.svelte-n7cbak { position: absolute; width: 16px; height: 19px; top: 50%;
    left: var(--slider-drag-pos, var(--slider-rest-pos)); transform: translate(-50%, -50%);
    opacity: 0; pointer-events: none; margin: 0; }

  /* 官方 chart categorical 令牌（c25d7186f：亮色值 / 暗色 modes 值） */
  .cb.svelte-7g7vve {
    --cx-1: #2a78d6; --cx-2: #eb6834; --cx-3: #1baf7a; --cx-4: #eda100; --cx-5: #e87ba4; --cx-6: #008300; --cx-7: #4a3aa7; --cx-8: #e34948;
    --cx-ref: color-mix(in srgb, var(--muted) 85%, transparent);
    --cx-ref-tint: color-mix(in srgb, var(--muted) 18%, transparent);
    --cx-muted: color-mix(in srgb, var(--muted) 45%, transparent);
    display: flex; flex-direction: column; gap: 6px; min-width: 0;
  }
  html[data-theme="dark"] .cb.svelte-7g7vve {
    --cx-1: #3987e5; --cx-2: #d95926; --cx-3: #199e70; --cx-4: #c98500; --cx-5: #d55181; --cx-7: #9085e9; --cx-8: #e66767;
  }
  .meter.svelte-7g7vve { position: relative; width: 100%; overflow: hidden; border-radius: 999px; background: var(--cx-ref-tint); }
  .seg.svelte-7g7vve { position: absolute; top: 0; bottom: 0; display: block; }
  .legend.svelte-7g7vve { display: flex; flex-direction: column; }
  .row.svelte-7g7vve { display: flex; align-items: center; gap: 4px; font-size: 12px; line-height: 16px; min-width: 0; }
  .legend.svelte-7g7vve .row:where(.svelte-7g7vve) + .row:where(.svelte-7g7vve) { margin-top: 4px; }
  .sw.svelte-7g7vve { flex: none; width: 10px; height: 10px; border-radius: 2px; display: inline-block; }
  .sw.blank.svelte-7g7vve { background: transparent; }
  .nm.svelte-7g7vve { flex: 1; min-width: 0; color: var(--text); overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
  .nm.muted.svelte-7g7vve { color: var(--muted); }
  .tk.svelte-7g7vve { flex: none; color: var(--muted); font-variant-numeric: tabular-nums; }
  .pc.svelte-7g7vve { flex: none; width: 44px; text-align: right; color: var(--text); font-variant-numeric: tabular-nums; }
  .sec.svelte-7g7vve { display: flex; flex-direction: column; gap: 2px; margin-top: 8px; }
  .sec-h.svelte-7g7vve { display: flex; align-items: center; gap: 4px; width: 100%; text-align: left; font-size: 12px; line-height: 16px; padding: 0; }
  .car.svelte-7g7vve { flex: none; width: 10px; height: 10px; display: flex; align-items: center; justify-content: center; color: var(--muted); opacity: .7; }
  .car.svelte-7g7vve svg:where(.svelte-7g7vve) { width: 10px; height: 10px; transition: transform var(--mo-micro, .12s) var(--ea-std, ease); }
  .car.on.svelte-7g7vve svg:where(.svelte-7g7vve) { transform: rotate(90deg); }
  .sec-l.svelte-7g7vve { flex: 1; min-width: 0; color: var(--serif); }
  .sec-b.svelte-7g7vve { display: flex; flex-direction: column; gap: 2px; }
  .sec-b.scroll.svelte-7g7vve { max-height: 168px; overflow-y: auto; overscroll-behavior: contain; }

  .qr-wrap.svelte-z4nx56 { position: relative; display: flex; }
  .qr-btn.svelte-z4nx56 { width: 38px; height: 38px; border-radius: 10px; display: flex; align-items: center; justify-content: center; }
  .qr-btn.svelte-z4nx56:active { background: var(--hover); }
  @media (hover: hover) { .qr-btn.svelte-z4nx56:hover { background: var(--hover); } }
  .qr.svelte-z4nx56 { width: 16px; height: 16px; transform: rotate(-90deg); }
  .qr.svelte-z4nx56 .track:where(.svelte-z4nx56) { fill: none; stroke: var(--divider); stroke-width: 2; }
  .qr.svelte-z4nx56 .arc:where(.svelte-z4nx56) { fill: none; stroke: var(--coral); stroke-width: 2; stroke-linecap: round; transition: stroke-dashoffset .3s ease; }
  .qr.warning.svelte-z4nx56 .arc:where(.svelte-z4nx56) { stroke: var(--warn); }
  .qr.critical.svelte-z4nx56 .arc:where(.svelte-z4nx56) { stroke: var(--crit); }

  .qb-backdrop.svelte-z4nx56 { position: fixed; inset: 0; z-index: 60; }
  /* 官方 Popup：w-360 / max-w calc(100vw-2rem) / padding none / 内层 py-sm；环在输入栏工具条
     【左侧】，面板从左边缘展开（沿用 right:0 会整块推到屏幕外） */
  .qb-panel.svelte-z4nx56 {
    position: absolute; bottom: calc(100% + 8px); left: 0; z-index: 61;
    width: min(360px, 100vw - 16px); padding: 8px 0;
    max-height: min(640px, 80vh); overflow-y: auto; overscroll-behavior: contain;
    background: var(--q-card); border-radius: 16px; box-shadow: var(--q-shadow);
  }
  .qb-panel.down.svelte-z4nx56 { bottom: auto; top: calc(100% + 8px); }
  .qb-sec.svelte-z4nx56 { display: flex; flex-direction: column; }
  /* 官方行：px-lg(16) py-xs(4) min-h 20，footnote 12px */
  .qb-h.svelte-z4nx56 { display: flex; align-items: center; gap: 8px; width: 100%; min-height: 20px; padding: 4px 16px; text-align: left; border-radius: 6px; }
  .qb-h.svelte-z4nx56:disabled { cursor: default; }
  .qb-h.static.svelte-z4nx56 { cursor: default; }
  .qb-k.svelte-z4nx56 { font-size: 12px; color: var(--muted); }
  .qb-v.svelte-z4nx56 { margin-left: auto; font-size: 12px; color: var(--muted); font-variant-numeric: tabular-nums; white-space: nowrap; }
  .qb-car.svelte-z4nx56 { flex: none; width: 10px; height: 10px; display: flex; align-items: center; justify-content: center; color: var(--muted); }
  .qb-car.svelte-z4nx56 svg:where(.svelte-z4nx56) { width: 10px; height: 10px; transition: transform var(--mo-micro, .12s) var(--ea-std, ease); }
  .qb-car.on.svelte-z4nx56 svg:where(.svelte-z4nx56) { transform: rotate(90deg); }
  .qb-body.svelte-z4nx56 { padding: 4px 16px 4px; }
  .qb-body.plan.svelte-z4nx56 { display: flex; flex-direction: column; gap: 8px; }
  .qb-note.svelte-z4nx56 { padding: 2px 16px 4px; font-size: 12px; color: var(--serif); }
  .qb-bar.svelte-z4nx56 { display: block; height: 4px; border-radius: 999px; background: color-mix(in srgb, var(--muted) 18%, transparent); overflow: hidden; }
  .qb-fill.svelte-z4nx56 { display: block; height: 100%; background: var(--coral); border-radius: 999px; transition: width .3s ease; }
  .qb-fill.warning.svelte-z4nx56 { background: var(--warn); } .qb-fill.critical.svelte-z4nx56 { background: var(--crit); }
  .qb-row.svelte-z4nx56 { display: grid; grid-template-columns: 1fr auto; align-items: baseline; gap: 4px 8px; }
  .qb-row.svelte-z4nx56 .qb-bar:where(.svelte-z4nx56) { grid-column: 1 / -1; }
  .qb-lbl.svelte-z4nx56 { font-size: 12px; color: var(--text); overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
  .qb-old.svelte-z4nx56 { color: var(--muted); font-size: 11px; }
  .qb-rs.svelte-z4nx56 { color: var(--muted); }
  .qb-pct.svelte-z4nx56 { color: var(--text); margin-left: 6px; }
  .qb-div.svelte-z4nx56 { height: 1px; background: var(--divider); margin: 4px 16px; }

  .am-backdrop.svelte-bm042c { position: fixed; inset: 0; z-index: 60; }
  .am.svelte-bm042c {
    position: absolute; bottom: calc(100% + 8px); left: 0; z-index: 61;
    min-width: 246px; max-width: 88vw; padding: 6px;
    background: var(--q-card); border-radius: 16px; box-shadow: var(--q-shadow);
    max-height: 60vh; overflow-y: auto;
  }
  .am.down.svelte-bm042c { bottom: auto; top: calc(100% + 8px); }
  .am-row.svelte-bm042c { width: 100%; display: flex; align-items: center; gap: 11px; padding: 10px 12px; border-radius: 11px; text-align: left; }
  .am-row.svelte-bm042c:active { background: var(--hover); }
  .am-row.split.svelte-bm042c { padding: 0; gap: 0; }
  .am-pickarea.svelte-bm042c { flex: 1; display: flex; align-items: center; gap: 11px; padding: 10px 0 10px 12px; border-radius: 11px 0 0 11px; text-align: left; min-width: 0; }
  .am-pickarea.svelte-bm042c:active { background: var(--hover); }
  .am-editbtn.svelte-bm042c { flex: none; width: 38px; align-self: stretch; display: flex; align-items: center; justify-content: center; color: var(--muted); border-radius: 0 11px 11px 0; }
  .am-editbtn.svelte-bm042c:active { background: var(--hover); color: var(--text); }
  .am-editbtn.svelte-bm042c svg:where(.svelte-bm042c) { width: 15px; height: 15px; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
  .am-ic.svelte-bm042c { width: 20px; height: 20px; color: var(--serif); flex: none; }
  .am-name.svelte-bm042c { font-size: 15px; color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .am-right.svelte-bm042c { margin-left: auto; font-size: 13px; color: var(--muted); }
  /* claude 页配色铁律：除星芒图标外全部黑白灰——勾选/按钮不用 coral（审美统一）。 */
  .am-check.svelte-bm042c { margin-left: auto; color: var(--text); font-size: 15px; padding-right: 10px; }
  .am-div.svelte-bm042c { height: 1px; background: var(--divider); margin: 5px 8px; }
  .am-back.svelte-bm042c { width: 100%; padding: 8px 12px; color: var(--muted); font-size: 14px; text-align: left; }
  /* 自定义风格编辑表单（菜单内嵌） */
  .am-form.svelte-bm042c { display: flex; flex-direction: column; gap: 8px; padding: 4px 8px 8px; width: 280px; max-width: 100%; }
  .am-input.svelte-bm042c, .am-ta.svelte-bm042c {
    width: 100%; padding: 9px 11px; border-radius: 10px; font-size: 14px;
    background: var(--hover); color: var(--text); border: 1px solid var(--divider);
  }
  .am-ta.svelte-bm042c { resize: vertical; min-height: 96px; line-height: 1.5; font-family: inherit; }
  .am-input.svelte-bm042c:focus, .am-ta.svelte-bm042c:focus { outline: none; border-color: var(--serif); }
  .am-form-btns.svelte-bm042c { display: flex; gap: 8px; justify-content: flex-end; }
  /* 主按钮与发送键/提交回答同款：黑底反白（亮暗主题自适应），不再是突兀的橙色 */
  .am-save.svelte-bm042c { padding: 8px 16px; border-radius: 10px; background: var(--text); color: var(--bg); font-size: 14px; font-weight: 600; }
  .am-save.svelte-bm042c:disabled { opacity: .45; }
  .am-del.svelte-bm042c { padding: 8px 14px; border-radius: 10px; color: var(--muted); font-size: 14px; border: 1px solid var(--divider); }
  .am-del.arm.svelte-bm042c { color: #fff; background: #c43c3c; border-color: #c43c3c; }

  .composer.svelte-1n8df3y { position: relative; width: 100%; background: var(--card); border-radius: 24px; box-shadow: var(--card-shadow); padding: 14px 12px 10px; }
  /* 拖拽文件悬停：卡片描边高亮 + 覆盖一层「拖到此处」提示（pointer-events:none 让拖放事件穿透到卡片） */
  .composer.drag-over.svelte-1n8df3y { box-shadow: var(--card-shadow), inset 0 0 0 2px var(--serif); }
  .drop-veil.svelte-1n8df3y { position: absolute; inset: 0; z-index: 3; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px;
    border-radius: 24px; border: 2px dashed var(--serif); background: var(--card); color: var(--serif); font-size: 14px; pointer-events: none; }
  .drop-veil.svelte-1n8df3y svg:where(.svelte-1n8df3y) { width: 26px; height: 26px; }
  .attachments.svelte-1n8df3y { display: flex; flex-wrap: wrap; gap: 7px; padding: 2px 6px 10px; }
  .att.svelte-1n8df3y { position: relative; display: flex; align-items: center; height: 52px; border-radius: 12px; overflow: hidden; background: var(--hover); }
  .att.img.svelte-1n8df3y { width: 52px; }
  .att.svelte-1n8df3y img:where(.svelte-1n8df3y) { width: 52px; height: 52px; object-fit: cover; display: block; }
  .att-name.svelte-1n8df3y { padding: 0 12px; font-size: 13px; color: var(--text); max-width: 170px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
  .att-x.svelte-1n8df3y { position: absolute; top: 0; right: 0; width: 17px; height: 17px; border-radius: 50%; background: rgba(0,0,0,.6); color: #fff; font-size: 13px; line-height: 1; display: flex; align-items: center; justify-content: center; }
  /* 扩大触控命中区到 ~32px（视觉不变）——17px 的删除点手机上极难点中 */
  .att-x.svelte-1n8df3y::before { content: ''; position: absolute; inset: -8px; }
  .att.pending.svelte-1n8df3y { opacity: .55; }
  /* 挂载的文件夹：图标 + 两行（名字 / 文件数·上传进度）——与图片、单文件卡区分开 */
  .att.dir.svelte-1n8df3y { gap: 9px; padding: 0 14px 0 11px; }
  .att.dir.pending.svelte-1n8df3y { opacity: 1; }              /* 进度写在副行里，不靠整块变淡表达 */
  .att-ic.svelte-1n8df3y { flex: none; width: 22px; height: 22px; color: var(--serif); }
  .att-ic.svelte-1n8df3y svg:where(.svelte-1n8df3y) { width: 100%; height: 100%; display: block; }
  .att-col.svelte-1n8df3y { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
  .att.dir.svelte-1n8df3y .att-name:where(.svelte-1n8df3y) { padding: 0; }
  .att-sub.svelte-1n8df3y { font-size: 11.5px; color: var(--muted); white-space: nowrap; }
  .att-spin.svelte-1n8df3y { position: absolute; left: 50%; top: 50%; width: 16px; height: 16px; margin: -8px 0 0 -8px; border-radius: 50%; border: 2px solid rgba(255,255,255,.35); border-top-color: #fff; animation: svelte-1n8df3y-attspin .8s linear infinite; }
  @keyframes svelte-1n8df3y-attspin { to { transform: rotate(360deg); } }
  .submit.svelte-1n8df3y:disabled { opacity: .45; }
  .field.svelte-1n8df3y { min-height: 30px; max-height: 40vh; overflow-y: auto; font-size: 16px; line-height: 1.4; color: var(--text); outline: none; padding: 2px 6px 12px; }
  .field.svelte-1n8df3y:empty::before { content: attr(data-ph); color: var(--muted); }
  /* 窄屏防「顶飞」：芯片是 white-space:nowrap 的文字，min-content 就是整串文字宽——
     不给 min-width:0 的话这一行的最小宽度会大于卡片，flex 溢出把发送键推到卡片外
     （折叠屏分屏 / 小窗实测：Extra high + 额度环时必现）。这里让两枚芯片可收缩并省略号，
     固定尺寸的 +、额度环、发送键一律 flex:none 保住不被压扁；
     还窄就整组换行（flex-wrap）：宁可工具条排两行，也不把芯片压成「O…」。 */
  .toolbar.svelte-1n8df3y { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 6px 8px; min-width: 0; }
  .left.svelte-1n8df3y, .right.svelte-1n8df3y { display: flex; align-items: center; gap: 4px; min-width: 0; }
  .left.svelte-1n8df3y { flex: none; }
  .right.svelte-1n8df3y { flex: 1 1 auto; justify-content: flex-end; }
  .left.svelte-1n8df3y .qr-wrap, .submit.svelte-1n8df3y { flex: none; }
  .plus-wrap.svelte-1n8df3y { position: relative; display: flex; flex: none; }
  .tbtn.svelte-1n8df3y { width: 38px; height: 38px; border-radius: 10px; display: flex; align-items: center; justify-content: center; color: var(--serif); }
  .tbtn.svelte-1n8df3y:active { background: var(--hover); }
  .tbtn.plus.svelte-1n8df3y svg:where(.svelte-1n8df3y) { width: 21px; height: 21px; }
  /* 激活态功能 chip 走黑白灰（claude 页配色铁律：彩色只留星芒）——深灰底 + 正文色图标 */
  .chip.svelte-1n8df3y { width: 38px; height: 38px; border-radius: 10px; display: flex; align-items: center; justify-content: center; color: var(--text); background: var(--hover-strong, var(--hover)); }
  .chip.svelte-1n8df3y svg:where(.svelte-1n8df3y) { width: 20px; height: 20px; }
  .chip.svelte-1n8df3y:active { filter: brightness(1.08); }
  .model-wrap.svelte-1n8df3y { position: relative; min-width: 0; }
  /* 挤不下时先牺牲 Effort（次要信息），模型名尽量保住 */
  .model-wrap.eff.svelte-1n8df3y { flex-shrink: 3; }
  /* 官方两枚素文本芯片（Opus 5 / Extra）：无 chevron，hover/按下浮出底色 */
  .model.svelte-1n8df3y { display: flex; align-items: center; padding: 7px 8px; border-radius: 8px; font-size: 14px; color: var(--text); white-space: nowrap; max-width: 100%; }
  .mtxt.svelte-1n8df3y { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
  /* 实际生效 ≠ 所选（effort：Stop hook 回报的档；模型：安全栅门回退后的会话模型）：点线下划提示（title 有说明） */
  .model.mismatch.svelte-1n8df3y .mtxt:where(.svelte-1n8df3y) { text-decoration: underline dotted; text-underline-offset: 3px; text-decoration-color: var(--muted); }
  /* 折叠屏分屏 / 手机小窗（实测可用宽 ~285px）：把官方间距压一点点，让工具条继续排一行，
     不必提前换行。宽屏一律维持官方 p7/8 与 gap8。 */
  @media (max-width: 360px) {
    .toolbar.svelte-1n8df3y { gap: 6px; }
    .right.svelte-1n8df3y { gap: 3px; }
    .model.svelte-1n8df3y { padding: 7px 6px; }
  }
  .model.svelte-1n8df3y:active { background: var(--hover); }
  @media (hover: hover) { .model.svelte-1n8df3y:hover { background: var(--hover); } }
  .model.lvl.svelte-1n8df3y { color: var(--muted); }
  /* 「· Fast」后缀：官方为灰色（与模型名区分） */
  .model-fast.svelte-1n8df3y { color: var(--muted); }
  .submit.svelte-1n8df3y { width: 38px; height: 38px; border-radius: 11px; background: var(--text); color: var(--bg); display: flex; align-items: center; justify-content: center; margin-left: 2px; }
  .submit.stop.svelte-1n8df3y { border-radius: 11px; }

  /* 令牌只挂在本组件根上——本页 CSS 会被打进宿主 bundle，裸 :root 会漏给别人
     （apk218 暗色错乱就是这么来的）。 */
  .wchips.svelte-256hfk {
    --wc-h: 24px; --wc-pad: 6px; --wc-gap: 6px; --wc-r: 6px;
    /* 官方 effect-contained-default：亮色一圈 1px 内描边 + 极淡投影，暗色【两条全无】 */
    --wc-ring: none;
    display: flex; flex-wrap: wrap; align-items: center;
    gap: var(--wc-gap);
    /* 官方是行 pb-p3(4) + composer 列 gap-g5(6)，这里合成 10px 与输入框卡片的间距；
       左缘与输入框卡片齐平（官方也是齐平，不做视觉内缩） */
    padding: 0 0 4px; margin-bottom: 6px;
    min-width: 0;
  }
  html[data-theme="light"] .wchips.svelte-256hfk {
    --wc-ring: inset 0 0 0 1px rgba(11, 11, 11, .1), 0 1px 2px rgba(11, 11, 11, .04);
  }

  /* 芯片原语（官方 z_ 常量的等价物）：描边一律靠 box-shadow，不用 border */
  .chip.svelte-256hfk, .half.svelte-256hfk {
    display: flex; align-items: center; gap: var(--wc-gap);
    height: var(--wc-h); padding: 0 var(--wc-pad);
    border: 0; border-radius: var(--wc-r);
    font-size: 13px; line-height: 19px; color: var(--serif);
    min-width: 0; max-width: 100%;
    transition: background-color var(--mo-micro) var(--ea-std), color var(--mo-micro) var(--ea-std);
  }
  /* 底色要【不透明】：聊天态输入栏是悬浮层、正文从下面穿过（.composer-wrap 无实心隔层），
     半透明芯片会让标题字直接叠进芯片文字里。这里把半透明的 --hover 铺在 --bg 上合成出
     同一个视觉色，但整块挡光——与输入卡片 var(--card) 的不透明取向一致。 */
  .chip.svelte-256hfk { background-color: var(--bg); background-image: linear-gradient(var(--hover), var(--hover)); box-shadow: var(--wc-ring); }
  .chip.svelte-256hfk:active, .half.svelte-256hfk:not(.wt):active { background: var(--hover-strong); color: var(--text); }
  @media (hover: hover) {
    .chip.svelte-256hfk:hover, .half.svelte-256hfk:not(.wt):hover { background: var(--hover-strong); color: var(--text); }
  }

  /* 分体胶囊：底色与描边在外层，两半透明 + 圆角继承（官方 group/split 的搬运） */
  .split.svelte-256hfk {
    display: inline-flex; align-items: center;
    border-radius: var(--wc-r);
    background-color: var(--bg); background-image: linear-gradient(var(--hover), var(--hover));
    box-shadow: var(--wc-ring);
    min-width: 0; max-width: 100%;
  }
  .split.svelte-256hfk .half:where(.svelte-256hfk) { background: transparent; border-radius: inherit; }
  /* worktree 半区：只读指示，左右 padding 不对称（官方 pl-p4 5 / pr-p5 6）、间距 g2 3 */
  .half.wt.svelte-256hfk { gap: 3px; padding: 0 6px 0 5px; cursor: default; }
  .divi.svelte-256hfk {
    width: 1px; height: 10px; flex: none; background: var(--divider);
    transition: opacity var(--mo-micro) var(--ea-std);
  }
  .split.svelte-256hfk:hover .divi:where(.svelte-256hfk), .split.svelte-256hfk:focus-within .divi:where(.svelte-256hfk) { opacity: 0; }

  /* 图标 = 已内置的 Anthropicons 字形：U+E072 Folder / U+E078 GitBranch。
     liga 关掉直接吃 PUA 码位；轴位取官方芯片实测的 opsz16 / wght533。 */
  .ic.svelte-256hfk {
    flex: none; width: 16px; height: 16px; font-size: 16px; line-height: 1;
    display: flex; align-items: center; justify-content: center;
    font-family: var(--icons);
    font-feature-settings: "liga" 0;
    font-variation-settings: "opsz" 16, "wght" 533;
  }
  .lbl.svelte-256hfk { max-width: 160px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

  /* 勾选框：外槽 16 / 内框 11.2 / 圆角 2.4（官方数值），勾是官方原样 SVG 路径 */
  .cb.svelte-256hfk { flex: none; display: inline-flex; align-items: center; justify-content: center; width: 16px; height: 16px; padding: 2.4px; }
  .box.svelte-256hfk {
    display: flex; align-items: center; justify-content: center;
    width: 100%; height: 100%; border-radius: 2.4px;
    background: var(--text); color: var(--bg);
  }

  .clogo.svelte-1kvovqf { display: inline-block; overflow: hidden; line-height: 0; flex: none; padding: 0; border: none; background: none; }
  .clogo.interactive.svelte-1kvovqf { cursor: pointer; }
  .strip.svelte-1kvovqf { display: block; width: 100%; }
  .strip.svelte-1kvovqf svg { display: block; width: 100%; height: auto; fill: currentColor; will-change: transform; }
  @media (max-resolution: 1.99dppx) { .clogo.svelte-1kvovqf { clip-path: inset(.5px 0); } }

  /* 铺满屏，内容居中；背景 50% 黑 + brightness(.75) 压暗底层页面（复刻 claude.ai：底层对话透出压暗）。
     纯 CSS 淡入，不依赖 RAF，切后台也稳。brightness 不支持时退化为 50% 黑罩，仍可用。 */
  /* 罩层随下滑进度(--lb-p)变淡：手指往下带，底层内容同步露出来，是"拖走"而不是"点掉" */
  .lb.svelte-win00u { position: fixed; inset: 0; z-index: 320; display: grid; place-items: center;
    padding: max(52px, calc(var(--sat) + 44px)) 16px max(20px, var(--sab)); animation: svelte-win00u-lbIn var(--mo-base) var(--ea-fade);
    background: rgba(0,0,0,calc(.5 * (1 - var(--lb-p, 0))));
    /* brightness 压暗保持静态：它是 backdrop-filter，逐帧改会在拖动时把整屏重新滤镜化
       （手机上直接掉帧）。跟手的暗度变化交给上面那层黑罩的 alpha 就够了。 */
    -webkit-backdrop-filter: brightness(.75); backdrop-filter: brightness(.75); }
  @keyframes svelte-win00u-lbIn { from { opacity: 0; } to { opacity: 1; } }
  /* 背景按钮：铺满、透明、置于对话框之下——点到图片周围留白即关闭 */
  .lb-scrim.svelte-win00u { position: absolute; inset: 0; z-index: 0; background: transparent; cursor: default; }

  /* 对话框：图片＋文件名＋下载 竖排居中（宽度封顶 640，同 claude.ai max-w-[40rem]） */
  .lb-dialog.svelte-win00u { position: relative; z-index: 1; max-width: 640px; width: 100%; max-height: 100%;
    display: flex; flex-direction: column; align-items: center; gap: 12px; }
  .lb-img.svelte-win00u { min-height: 0; max-width: 100%; max-height: calc(100% - 56px); object-fit: contain; border-radius: 8px;
    box-shadow: 0 10px 44px rgba(0,0,0,.5); animation: svelte-win00u-lbImg var(--mo-base) var(--ea-decel); }
  @keyframes svelte-win00u-lbImg { from { opacity: 0; transform: scale(.985); } to { opacity: 1; transform: none; } }

  .lb-cap.svelte-win00u { display: flex; flex-direction: column; align-items: center; gap: 8px; flex: none; color: #fff; }
  .lb-name.svelte-win00u { font-size: 13px; max-width: 82vw; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; text-shadow: 0 1px 3px rgba(0,0,0,.5); }
  .lb-count.svelte-win00u { color: rgba(255,255,255,.6); }
  .lb-dl.svelte-win00u { width: 38px; height: 38px; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: #fff; }
  .lb-dl.svelte-win00u svg:where(.svelte-win00u) { width: 21px; height: 21px; }
  .lb-dl.svelte-win00u:hover, .lb-dl.svelte-win00u:active { background: rgba(255,255,255,.15); }

  .lb-close.svelte-win00u { position: absolute; z-index: 2; top: max(12px, var(--sat)); right: 12px; width: 42px; height: 42px; border-radius: 50%;
    display: flex; align-items: center; justify-content: center; color: #fff; }
  .lb-close.svelte-win00u svg:where(.svelte-win00u) { width: 22px; height: 22px; }
  .lb-close.svelte-win00u:hover, .lb-close.svelte-win00u:active { background: rgba(255,255,255,.15); }

  .lb-nav.svelte-win00u { position: absolute; z-index: 2; top: 50%; transform: translateY(-50%); width: 44px; height: 44px; border-radius: 50%;
    display: flex; align-items: center; justify-content: center; color: #fff; background: rgba(255,255,255,.12); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); }
  .lb-nav.svelte-win00u svg:where(.svelte-win00u) { width: 24px; height: 24px; }
  .lb-nav.left.svelte-win00u { left: 12px; } .lb-nav.right.svelte-win00u { right: 12px; }
  .lb-nav.svelte-win00u:hover, .lb-nav.svelte-win00u:active { background: rgba(255,255,255,.22); }

  .wrap.svelte-11l0rnh { display: flex; flex-direction: column; width: 100%; min-width: 0; margin: 4px 0; }
  .wrap.ingroup.svelte-11l0rnh { margin: 0; }   /* 分组卡里由容器给 8px 10px */
  /* 文本行（官方 OF 形态 B）：gap 3px、r4、secondary 字色，hover 整体转 primary */
  .row.svelte-11l0rnh {
    position: relative; display: flex; align-self: flex-start; max-width: 100%; min-width: 0; align-items: center; gap: 3px;
    padding: 0; text-align: left; border-radius: 4px; outline: none; color: var(--serif); font-size: 14px; line-height: 20px;
    -webkit-tap-highlight-color: transparent; transition: color var(--mo-micro, 140ms);
  }
  .row.expandable.svelte-11l0rnh { cursor: pointer; }
  .row.svelte-11l0rnh:focus-visible { box-shadow: 0 0 0 1px var(--serif); }
  @media (hover: hover) { .row.expandable.svelte-11l0rnh:hover { color: var(--text); } }
  .trunc.svelte-11l0rnh { min-width: 0; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
  .nowrap.svelte-11l0rnh { flex: none; white-space: nowrap; }
  .danger.svelte-11l0rnh { color: var(--crit); }
  /* meta：文件路径 / 代码类恒 primary；其它跟随行色（secondary → hover primary） */
  .meta.svelte-11l0rnh { color: inherit; }
  .meta.pri.svelte-11l0rnh { color: var(--text); }
  .meta.code.svelte-11l0rnh { font-family: ui-monospace, "SF Mono", Menlo, Consolas, monospace; font-size: 13px; }
  a.meta.svelte-11l0rnh { text-decoration: none; }
  a.meta.svelte-11l0rnh:hover { text-decoration: underline; text-underline-offset: 3px; }
  .tail.svelte-11l0rnh { flex: none; }
  .rng.svelte-11l0rnh { color: inherit; }
  /* 展开箭头（官方 My customSize 14）：字体图标，可变字重 570 ≈ 14px 下的描边粗细 */
  .caret.svelte-11l0rnh {
    flex: none; width: 1em; height: 1em; font-size: 14px; font-weight: 570;
    display: flex; align-items: center; justify-content: center; font-feature-settings: "liga" 0;
  }
  .sr-only.svelte-11l0rnh { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }

  /* 展开体（官方 Xk 壳）：分组卡里只加 4px 上距；单独一行时自带描边小卡 */
  .body[hidden].svelte-11l0rnh { display: none; }
  .body.card.svelte-11l0rnh { margin-top: 6px; padding: 8px 10px; border-radius: 8px; box-shadow: 0 0 0 1px var(--divider); overflow: hidden; }
  .body.svelte-11l0rnh:not(.card) { padding-top: 4px; }
  .params.svelte-11l0rnh { display: flex; flex-direction: column; gap: 3px; min-width: 0; color: var(--serif); font-size: 13px; line-height: 18px; }
  .params.sep.svelte-11l0rnh { margin-top: 8px; padding-top: 8px; border-top: 1px solid var(--divider); }
  .param.svelte-11l0rnh { min-width: 0; overflow-wrap: anywhere; }
  .key.svelte-11l0rnh { font-family: ui-monospace, "SF Mono", Menlo, Consolas, monospace; font-size: 12.5px; opacity: .7; margin-right: 4px; }
  .chip.svelte-11l0rnh { font-family: ui-monospace, "SF Mono", Menlo, Consolas, monospace; font-size: 12.5px; padding: 1px 5px; border-radius: 4px; background: var(--hover); color: var(--text); word-break: break-all; }
  .code.svelte-11l0rnh { font-family: ui-monospace, "SF Mono", Menlo, Consolas, monospace; font-size: 12.5px; line-height: 17px; white-space: pre-wrap; word-break: break-all; color: var(--text); }
  .pfx.svelte-11l0rnh { user-select: none; color: var(--serif); }
  .val.svelte-11l0rnh { white-space: pre-wrap; }

  /* 令牌只挂在组件根上（嵌入宿主 bundle 的子应用 CSS 禁裸 :root）：--t7 = 墨色 70/80% */
  .wrap.svelte-1s99ahs { --cl-t7: rgba(255, 255, 255, .7); display: flex; flex-direction: column; width: 100%; min-width: 0; margin: 4px 0; }
  html[data-theme="light"] .wrap.svelte-1s99ahs { --cl-t7: rgba(0, 0, 0, .8); }
  .wrap.ingroup.svelte-1s99ahs { margin: 0; }
  .wrap.cardwrap.svelte-1s99ahs { margin: 6px 0; }

  /* —— 形态 A：任务卡（官方 Iy + Cy + ky）：318px、r8、padding 6/4/6/10、gap 6 —— */
  .card.svelte-1s99ahs {
    position: relative; isolation: isolate; display: flex; align-self: flex-start; align-items: center; gap: 6px;
    width: 318px; max-width: 100%; box-sizing: border-box; padding: 6px 4px 6px 10px; border-radius: 8px;
    text-align: left; cursor: pointer; outline: none; font-size: 14px; line-height: 20px; -webkit-tap-highlight-color: transparent;
  }
  .card.svelte-1s99ahs:focus-visible { box-shadow: 0 0 0 1px var(--serif); }
  /* 底面层：1px 描边 + hover 底色 + 按下 scale(.99)、松手 .45s 弹簧（官方 --btn-spring 原曲线，
     不支持 linear() 的内核退到 settle 曲线）；只有底面缩，文字不动 */
  .surface.svelte-1s99ahs {
    position: absolute; inset: 0; z-index: -1; border-radius: inherit; box-shadow: 0 0 0 1px var(--divider);
    transform-origin: 50% 50%;
    transition: transform .45s cubic-bezier(.34, 1.26, .5, 1);
    transition: transform .45s linear(0, .2459, .6526, .9468, 1.0764, 1.0915, 1.0585, 1.0219, .9993, .9914, .9921, .9957, .9988, 1.0004, 1);
  }
  @media (hover: hover) { .card.svelte-1s99ahs:hover .surface:where(.svelte-1s99ahs) { background: var(--hover); } }
  .card.svelte-1s99ahs:active .surface:where(.svelte-1s99ahs) { transform: scale(.99); transition: transform 60ms ease-out; }
  .ico.svelte-1s99ahs { flex: none; width: 16px; height: 16px; color: var(--muted); display: flex; align-items: center; justify-content: center; }
  .ico.svelte-1s99ahs svg { display: block; width: 16px; height: 16px; }
  .ttl.svelte-1s99ahs { min-width: 0; flex: 1; }
  .t7.svelte-1s99ahs { color: var(--cl-t7); }

  /* —— 形态 B：文本行（官方 OF）：gap 3px、r4、secondary 字色，hover 整体转 primary —— */
  .row.svelte-1s99ahs {
    position: relative; display: flex; align-self: flex-start; max-width: 100%; min-width: 0; align-items: center; gap: 3px;
    padding: 0; text-align: left; border-radius: 4px; outline: none; cursor: pointer; color: var(--serif); font-size: 14px; line-height: 20px;
    -webkit-tap-highlight-color: transparent; transition: color var(--mo-micro, 140ms);
  }
  .row.svelte-1s99ahs:focus-visible { box-shadow: 0 0 0 1px var(--serif); }
  @media (hover: hover) { .row.svelte-1s99ahs:hover { color: var(--text); } }
  .trunc.svelte-1s99ahs { min-width: 0; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
  .nowrap.svelte-1s99ahs { flex: none; white-space: nowrap; }
  .danger.svelte-1s99ahs { color: var(--crit); }
  .model.svelte-1s99ahs, .act.svelte-1s99ahs, .meta.svelte-1s99ahs { color: inherit; }
  .tail.svelte-1s99ahs { flex: none; }
  /* 右侧 CaretRight（官方 Sy center，muted）：可点开子转录；运行中不画 */
  .caret.svelte-1s99ahs { flex: none; width: 1em; height: 1em; font-size: 16px; font-weight: 533; color: var(--muted); display: flex; align-items: center; justify-content: center; font-feature-settings: "liga" 0; }
  .sr-only.svelte-1s99ahs { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }

  /* 令牌只挂在组件根上（嵌入宿主 bundle 的子应用 CSS 禁裸 :root）。
     done 格官方亮色 --t4(黑16%) / 暗色 --t5(白25%)；pending/ghost 描边 --t5。bridge 暗色是默认。 */
  .dots.svelte-xjjtek { --ad-done: rgba(255, 255, 255, .25); --ad-t5: rgba(255, 255, 255, .25); display: block; }
  html[data-theme="light"] .dots.svelte-xjjtek { --ad-done: rgba(0, 0, 0, .16); --ad-t5: rgba(0, 0, 0, .25); }
  .dots.row.svelte-xjjtek { display: flex; align-items: center; height: 20px; }
  .grid.svelte-xjjtek { display: grid; gap: 2px; }
  .grid.fit.svelte-xjjtek { width: fit-content; }
  .grid.full.svelte-xjjtek { width: 100%; overflow: hidden; }
  .cell.svelte-xjjtek {
    box-sizing: border-box; width: 6px; height: 6px; border-radius: 2px; flex: none;
    background-color: transparent; border: 1px solid transparent;
    transition: background-color .16s, border-color .16s, opacity .16s, filter .16s;
  }
  @media (hover: hover) {
    .cell.svelte-xjjtek:hover { filter: brightness(1.1); }
    html[data-theme="light"] .cell.svelte-xjjtek:hover { filter: brightness(.9); }
  }
  .cell.done.svelte-xjjtek { background-color: var(--ad-done); }
  /* 官方 accent 蓝 → var(--text)（配色铁律） */
  .cell.running.svelte-xjjtek { background-color: var(--text); animation: svelte-xjjtek-pulse var(--dur, 2.8s) ease-in-out var(--delay, 0s) infinite; }
  .cell.stalled.svelte-xjjtek { background-color: var(--warn); }
  .cell.error.svelte-xjjtek { background-color: var(--crit); }
  .cell.pending.svelte-xjjtek { border-color: var(--ad-t5); }
  .cell.ghost.svelte-xjjtek { border-color: var(--ad-t5); animation: svelte-xjjtek-ghost 2.2s ease-in-out infinite; }
  @keyframes svelte-xjjtek-pulse { 0%, 100% { opacity: 1; } 50% { opacity: .72; } }
  @keyframes svelte-xjjtek-ghost { 0%, 100% { opacity: .25; } 50% { opacity: .9; } }
  @media (prefers-reduced-motion: reduce) {
    .cell.svelte-xjjtek { transition: none; }
    .cell.running.svelte-xjjtek { animation: none; }
    .cell.ghost.svelte-xjjtek { opacity: .45; animation: none; }
  }

  /* 令牌只挂在组件根上（嵌入宿主 bundle 的子应用 CSS 禁裸 :root）：--t7 = 墨色 70/80% */
  .wrap.svelte-2nbtm4 { --cl-t7: rgba(255, 255, 255, .7); display: flex; flex-direction: column; width: 100%; min-width: 0; margin: 4px 0; }
  html[data-theme="light"] .wrap.svelte-2nbtm4 { --cl-t7: rgba(0, 0, 0, .8); }
  .wrap.ingroup.svelte-2nbtm4 { margin: 0; }
  .wrap.cardwrap.svelte-2nbtm4 { margin: 6px 0; }

  /* —— 紧凑卡（官方 TD：my + Cy + ky）：318px、r8、padding 10/8/10/12、gap 6、items-start —— */
  .card.svelte-2nbtm4 {
    appearance: none; background: none; border: 0; margin: 0; font: inherit; color: inherit;
    position: relative; isolation: isolate; display: flex; align-self: flex-start; align-items: flex-start; gap: 6px;
    width: 318px; max-width: 100%; box-sizing: border-box; padding: 10px 8px 10px 12px; border-radius: 8px;
    text-align: left; text-wrap: pretty; cursor: pointer; outline: none; -webkit-tap-highlight-color: transparent;
  }
  .card.svelte-2nbtm4:focus-visible { box-shadow: 0 0 0 1px var(--serif); }
  /* 底面层：1px 描边 + hover 底色 + 按下 scale(.99)、松手 .45s 弹簧（官方 --btn-spring 原曲线，
     不支持 linear() 的内核退到 settle 曲线）；只有底面缩，内容不动 */
  .surface.svelte-2nbtm4 {
    position: absolute; inset: 0; z-index: -1; border-radius: inherit; box-shadow: 0 0 0 1px var(--divider);
    transform-origin: 50% 50%;
    transition: transform .45s cubic-bezier(.34, 1.26, .5, 1);
    transition: transform .45s linear(0, .2459, .6526, .9468, 1.0764, 1.0915, 1.0585, 1.0219, .9993, .9914, .9921, .9957, .9988, 1.0004, 1);
  }
  @media (hover: hover) { .card.svelte-2nbtm4:hover .surface:where(.svelte-2nbtm4) { background: var(--hover); } }
  .card.svelte-2nbtm4:active .surface:where(.svelte-2nbtm4) { transform: scale(.99); transition: transform 60ms ease-out; }
  .col.svelte-2nbtm4 { display: flex; min-width: 0; flex: 1; flex-direction: column; gap: 4px; }
  .ttl.svelte-2nbtm4 { font-size: 14px; line-height: 20px; }
  .trunc.svelte-2nbtm4 { min-width: 0; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
  /* 副行（官方 text-footnote text-muted tabular-nums，minHeight=leading-body）：gap 12px */
  .meta.svelte-2nbtm4 { display: flex; min-width: 0; align-items: center; gap: 12px; min-height: 20px; font-size: 12.5px; line-height: 16px; color: var(--muted); font-variant-numeric: tabular-nums; }
  .meta.pb.svelte-2nbtm4 { padding-bottom: 3px; }
  .kind.svelte-2nbtm4, .cnt.svelte-2nbtm4, .tm.svelte-2nbtm4 { flex: none; white-space: nowrap; }
  .t7.svelte-2nbtm4 { color: var(--cl-t7); }
  .dots.svelte-2nbtm4 { display: block; padding: 6px 0 2px; }
  /* 右侧 CaretRight（官方 Sy：muted，高度对齐标题行 20px） */
  .caret.svelte-2nbtm4 { flex: none; display: flex; align-items: center; justify-content: center; width: 1em; height: 20px; font-size: 16px; font-weight: 533; color: var(--muted); font-feature-settings: "liga" 0; }

  /* —— 单行（官方 zD 非卡态）：gap 3px、r4 —— */
  .row.svelte-2nbtm4 {
    position: relative; display: flex; align-self: flex-start; max-width: 100%; min-width: 0; align-items: center; gap: 3px;
    padding: 0; text-align: left; border-radius: 4px; outline: none; cursor: pointer; color: var(--serif); font-size: 14px; line-height: 20px;
    -webkit-tap-highlight-color: transparent; transition: color var(--mo-micro, 140ms);
  }
  .row.svelte-2nbtm4:focus-visible { box-shadow: 0 0 0 1px var(--serif); }
  @media (hover: hover) { .row.svelte-2nbtm4:hover { color: var(--text); } }
  .nowrap.svelte-2nbtm4 { flex: none; white-space: nowrap; }
  .danger.svelte-2nbtm4 { color: var(--crit); }
  .name.svelte-2nbtm4 { color: inherit; }
  .badge.svelte-2nbtm4 { flex: none; }
  .rowcaret.svelte-2nbtm4 { height: 1em; }
  /* 失败/停止原因：桌面靠 Failed 徽标的 title 悬停，触屏内联显示（官方 [@media(pointer:coarse)]:block） */
  .reason.svelte-2nbtm4 { display: none; }
  @media (pointer: coarse) { .reason.svelte-2nbtm4 { display: block; } }
  .sr-only.svelte-2nbtm4 { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }

  /* ============ 全局注入（ToolRow / AgentRow / WorkflowCard 共用，只在这里写一次）============
     文字流光 = 官方 epitaxy-text-shine 原文（workflow-panel.md §6）：文字本色打底、一道白色
     高光从右往左扫过、3s 一循环。bridge 暗色是默认（html 无 data-theme=light）：底 白 70% /
     高光 白；亮色：底 currentColor / 高光 currentColor 混 70% 白（color-mix 不支持的老内核退到
     近似灰）。reduced-motion：停在 50% 位置不动。 */
  @keyframes cl-text-shine {
    0%, 22% { background-position: 150% 0; animation-timing-function: cubic-bezier(.5, .05, .45, .95); }
    76%, 100% { background-position: -50% 0; }
  }
  .cl-shine {
    color: var(--text);
    background-image: linear-gradient(120deg, rgba(255, 255, 255, .7) 25%, #fff 50%, rgba(255, 255, 255, .7) 75%);
    background-position: 150% 0; background-size: 200% 100%;
    -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
    animation: cl-text-shine 3s infinite;
  }
  html[data-theme="light"] .cl-shine {
    background-image: linear-gradient(120deg, currentColor 25%, #b5b5b3 50%, currentColor 75%);
    background-image: linear-gradient(120deg, currentColor 25%, color-mix(in srgb, currentColor 30%, white) 50%, currentColor 75%);
  }
  @media (prefers-reduced-motion: reduce) {
    .cl-shine { background-position: 50% 0; animation: none; }
  }

  /* ============ 分组本体 ============ */
  .grp.svelte-nyip3s { display: flex; flex-direction: column; width: 100%; min-width: 0; margin: 6px 0; }
  /* 折叠头（官方 lj button）：gap 2px、圆角 4px、secondary 字色，hover 整体转 primary */
  .head.svelte-nyip3s {
    appearance: none; background: none; border: 0; margin: 0; padding: 0; font: inherit; color: var(--serif);
    position: relative; display: flex; align-self: flex-start; max-width: 100%; min-width: 0; align-items: center; gap: 2px;
    text-align: left; cursor: pointer; border-radius: 4px; outline: none; -webkit-tap-highlight-color: transparent;
    transition: color var(--mo-micro, 140ms);
  }
  .head.svelte-nyip3s:focus-visible { box-shadow: 0 0 0 1px var(--serif); }
  @media (hover: hover) { .head.svelte-nyip3s:hover { color: var(--text); } }
  .lbl.svelte-nyip3s { display: inline-flex; align-items: center; gap: 4px; min-width: 0; }
  .t.svelte-nyip3s { font-size: 14px; line-height: 20px; }
  .trunc.svelte-nyip3s { min-width: 0; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
  .nowrap.svelte-nyip3s { flex: none; white-space: nowrap; }
  .danger.svelte-nyip3s { color: var(--crit); }
  /* 展开箭头（官方 My customSize 14）：字体图标，可变字重 570 ≈ 14px 下的描边粗细 */
  .caret.svelte-nyip3s {
    flex: none; width: 1em; height: 1em; font-size: 14px; font-weight: 570;
    display: flex; align-items: center; justify-content: center; font-feature-settings: "liga" 0;
  }
  .body[hidden].svelte-nyip3s { display: none; }
  /* 展开卡：描边 1px、r8、overflow clip、上边距 8px；子项 padding 8px 10px、之间 1px 分隔 */
  .card.svelte-nyip3s { display: flex; flex-direction: column; margin-top: 8px; border-radius: 8px; box-shadow: 0 0 0 1px var(--divider); overflow: hidden; overflow: clip; }
  .item.svelte-nyip3s { padding: 8px 10px; min-width: 0; }
  .item.svelte-nyip3s + .item:where(.svelte-nyip3s) { border-top: 1px solid var(--divider); }
  .sr-only.svelte-nyip3s { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }

  /* 官方 tR：max-w 480 / r8 / p12 / 1px 描边（--t2）/ 行距 6 */
  .mn.svelte-ix64wc { display: flex; flex-direction: column; gap: 6px; width: 100%; max-width: 480px; box-sizing: border-box;
    border-radius: 8px; padding: 12px; box-shadow: 0 0 0 1px var(--divider); margin: 6px 0;
    font-size: 14px; line-height: 20px; color: var(--text); overflow-wrap: anywhere; }
  .mn-head.svelte-ix64wc { display: flex; align-items: center; gap: 6px; }
  /* Warning 图标：Anthropicons 字形，同状态栏芯片轴位 opsz16/wght533 */
  .mn-ic.svelte-ix64wc { flex: none; width: 16px; height: 16px; display: inline-flex; align-items: center; justify-content: center;
    font-family: var(--icons); font-style: normal; font-feature-settings: "liga" 0; font-variation-settings: "opsz" 16, "wght" 533;
    font-size: 16px; line-height: 1; color: var(--crit); }
  .mn-title.svelte-ix64wc { min-width: 0; flex: 1; font-weight: 500; color: var(--text); }
  .mn-hint.svelte-ix64wc { display: block; color: var(--serif); white-space: pre-line; overflow-wrap: anywhere; }
  .mn-hint.svelte-ix64wc a:where(.svelte-ix64wc) { color: var(--text); text-decoration: underline; text-underline-offset: 3px; word-break: break-all; }
  .mn-details.svelte-ix64wc { display: block; padding-top: 4px; }
  .mn-details.svelte-ix64wc code:where(.svelte-ix64wc) { font-family: ui-monospace, "SF Mono", Menlo, Consolas, monospace; font-size: 12.5px; word-break: break-all; }
  /* 次级 xxs 按钮（CDS Button secondary/xxs：高 20、字 12/17、r5、圆角描边） */
  .mn-actions.svelte-ix64wc { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; padding-top: 8px; }
  .mn-btn.svelte-ix64wc { display: inline-flex; align-items: center; height: 20px; padding: 0 6px; border-radius: 5px;
    font-size: 12px; line-height: 17px; color: var(--serif); text-decoration: none; background: var(--hover);
    box-shadow: inset 0 0 0 1px var(--divider), 0 1px 2px rgba(0,0,0,.05); transition: background-color 60ms ease-out, color 60ms ease-out; }
  @media (hover: hover) { .mn-btn.svelte-ix64wc:hover { background: var(--hover-strong); color: var(--text); } }
  .mn-btn.svelte-ix64wc:active { transform: scale(.975); }

  /* 顶部空出 悬浮按钮区（--sat + 10 顶距 + 44 按钮 + 8 间隙）——对话从按钮下方开始，
     滚动时内容滑到毛玻璃按钮底下透出。 */
  .thread.svelte-1uxvm9k { padding: calc(var(--sat) + 62px) 16px 24px; display: flex; flex-direction: column; max-width: 760px; margin: 0 auto; width: 100%; }
  /* 「查看更早」：居中细胶囊，原生 IM 的历史折叠惯例 */
  .earlier.svelte-1uxvm9k { align-self: center; margin: 2px 0 10px; padding: 7px 16px; border-radius: 15px;
    background: var(--hover); color: var(--muted); font-size: 13px; }
  .earlier.svelte-1uxvm9k:active { background: var(--hover-strong); color: var(--text); }
  .turn-user.svelte-1uxvm9k { display: flex; justify-content: flex-end; margin: 14px 0; }
  /* —— 屏幕外的轮次跳过渲染 ——
     长会话（点过「查看更早」后可能几百条）里每一轮都带 markdown、代码高亮、工具卡，
     全量参与布局与绘制是滚动掉帧的大头。content-visibility:auto 让浏览器对视口外的
     子树跳过 layout/paint/hit-test；contain-intrinsic-size 的 auto 关键字让它【记住上次
     渲染的真实高度】，滚回去不会因为占位高度不准而跳动（写死数值才会跳）。
     纪律：只给「已完成 且 不是最近两条」的轮次上——正在流式吐字的那条若被跳过，
     自动滚到底会读到过期高度；最后两条恒在视口附近，跳过没有收益只有风险。
     选中文本跨越被跳过的子树时浏览器会自动强制渲染，复制不受影响。
     类由 skipWhen 动作在运行时翻（不是 class: 指令）：scoped 规则必须写 :global(.skip)，
     否则编译器把它当没用过的类剪掉；--cis 是动作在加类前量好的真实高度（见 skipWhen）。 */
  .turn-user.svelte-1uxvm9k.skip, .turn-assistant.svelte-1uxvm9k.skip {
    content-visibility: auto;
    contain-intrinsic-size: auto var(--cis, 220px);
  }
  /* 附件缩略图 + 气泡 竖排右对齐（附件在上、文字在下），整列封顶 84%（复刻 claude.ai 消息形态） */
  .u-col.svelte-1uxvm9k { display: flex; flex-direction: column; align-items: flex-end; gap: 6px; max-width: 84%; min-width: 0; }
  .u-atts.svelte-1uxvm9k { display: flex; flex-wrap: wrap; gap: 6px; justify-content: flex-end; max-width: 100%; }
  .u-att.svelte-1uxvm9k { display: block; }
  /* 多图：120×120 方形封面切图（object-cover），圆角 8px + 极淡描边 + 轻阴影——复刻 claude.ai */
  .u-img.svelte-1uxvm9k { width: 120px; height: 120px; border-radius: 8px; overflow: hidden; background: var(--hover); border: .5px solid var(--divider); box-shadow: 0 1px 3px rgba(0,0,0,.08); line-height: 0; }
  .u-img.svelte-1uxvm9k img:where(.svelte-1uxvm9k) { display: block; width: 100%; height: 100%; object-fit: cover; }
  /* 单图：不裁切，按原始比例展示（封顶尺寸），同 claude.ai 单图更大更完整 */
  .u-img.single.svelte-1uxvm9k { width: auto; height: auto; }
  .u-img.single.svelte-1uxvm9k img:where(.svelte-1uxvm9k) { width: auto; height: auto; max-width: min(280px, 72vw); max-height: 320px; object-fit: contain; }
  .u-img.svelte-1uxvm9k:active { filter: brightness(.94); }
  /* 检查点回滚（用户气泡右下）：默认一枚半透明 ↺，点开变就地确认排 */
  .u-acts.svelte-1uxvm9k { display: flex; align-items: center; gap: 6px; justify-content: flex-end; flex-wrap: wrap; min-height: 26px; }
  .rw-ico.svelte-1uxvm9k { width: 28px; height: 28px; opacity: .4; }
  .rw-ico.svelte-1uxvm9k svg:where(.svelte-1uxvm9k) { width: 15px; height: 15px; }
  .rw-ico.svelte-1uxvm9k:not(:disabled):active, .rw-ico.svelte-1uxvm9k:not(:disabled):hover { opacity: 1; }
  .rw-ask.svelte-1uxvm9k { font-size: 12px; color: var(--muted); }
  .rw-btn.svelte-1uxvm9k { padding: 4px 11px; border-radius: 8px; font-size: 12px; background: var(--hover); color: var(--text); }
  .rw-btn.primary.svelte-1uxvm9k { background: var(--coral); color: #fff; }
  .rw-btn.svelte-1uxvm9k:active { filter: brightness(.92); }
  .rw-note.svelte-1uxvm9k { font-size: 12px; color: var(--muted); }
  .rw-note.err.svelte-1uxvm9k { color: #e5484d; }
  .u-file.svelte-1uxvm9k { display: flex; align-items: center; gap: 9px; max-width: min(260px, 72vw); padding: 10px 13px; border-radius: 13px; background: var(--card); border: 1px solid var(--divider); }
  .u-file-ic.svelte-1uxvm9k { width: 22px; height: 22px; flex: none; color: var(--serif); }
  .u-file-ic.svelte-1uxvm9k svg:where(.svelte-1uxvm9k) { width: 100%; height: 100%; }
  .u-file-name.svelte-1uxvm9k { font-size: 13.5px; color: var(--text); overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
  .bubble.svelte-1uxvm9k { background: var(--userbubble); color: var(--text); border-radius: 14px; padding: 10px 15px; font-size: 15px; line-height: 1.5; max-width: 100%; word-break: break-word; white-space: pre-wrap; animation: svelte-1uxvm9k-popIn .28s cubic-bezier(.22,1,.36,1); }
  @keyframes svelte-1uxvm9k-popIn { from { opacity: 0; transform: translateY(6px) scale(.98); } to { opacity: 1; transform: none; } }
  .turn-assistant.svelte-1uxvm9k { margin: 6px 0 22px; }

  .think.svelte-1uxvm9k { display: inline-flex; align-items: center; gap: 6px; color: var(--muted); font-size: 14px; margin-bottom: 10px; }
  .think.svelte-1uxvm9k .chev:where(.svelte-1uxvm9k) { font-size: 10px; transition: transform .15s; }
  .think.open.svelte-1uxvm9k .chev:where(.svelte-1uxvm9k) { transform: rotate(90deg); }
  .think-body.svelte-1uxvm9k { margin: 0 0 14px 2px; padding: 8px 0 8px 14px; border-left: 2px solid var(--divider); color: var(--muted); font-size: 14px; line-height: 1.7; font-style: italic; white-space: pre-wrap; }

  /* 工具行 / 分组 / Agent 卡 / Workflow 卡的样式全在 claude/ToolGroup.svelte 及其子组件里 */

  .media.svelte-1uxvm9k { margin: 8px 0 12px; }
  .media-load.svelte-1uxvm9k { display: inline-flex; align-items: center; gap: 8px; color: var(--muted); font-size: 14px; padding: 6px 0; }
  .media-err.svelte-1uxvm9k { color: var(--err, #d98a6a); font-size: 14px; padding: 6px 0; }
  .media-img.svelte-1uxvm9k, .media-video.svelte-1uxvm9k { max-width: 100%; border-radius: 12px; display: block; }
  .media-audio.svelte-1uxvm9k { width: 100%; margin-top: 4px; }

  /* —— 助手产物附件卡：claude.ai 官网 100% 同款（2026-07-17 Edge 真站逐值提取）——
     卡：radius 8 / border .5px（基 15% 描边，hover 30%）/ hover 底=bg-000 50%，300ms 标准缓动。
     mini 文档页：52px 宽、右缘 8px、translateY 19% 沉入卡底（卡 overflow hidden 裁掉）、
     基态 rotate -0.1rad；hover 弹回 -0.065rad + scale 1.035，400ms cubic-bezier(0,.9,.5,1.35)
     弹簧、离开 300ms easeOutQuart(.165,.84,.44,1)——这就是「鼠标放上去文件图案会动」。
     Download=cds 按钮：32px 高、白10% 底+1px 内环+微投影，按压 squish 弹簧回弹（真站
     0.45s linear() 弹簧曲线原样搬）。字色/描边全部取真站计算值，双主题各一套。 */
  .a-atts.svelte-1uxvm9k { display: flex; flex-direction: column; gap: 8px; margin: 12px 0 4px; }
  .att-card.svelte-1uxvm9k {
    --ac-border: rgba(226, 225, 218, .15); --ac-border-hover: rgba(226, 225, 218, .3);
    --ac-hover-bg: rgba(44, 44, 43, .5); --ac-page-border: rgba(226, 225, 218, .3); --ac-page-bg: #2c2c2b;
    --ac-title: #ffffff; --ac-meta: #97958c; --ac-glyph: #898781;
    --ac-btn-text: #ffffff; --ac-btn-bg: rgba(255, 255, 255, .1); --ac-btn-bg-hover: rgba(255, 255, 255, .14); --ac-btn-ring: rgba(0, 0, 0, 0);
    position: relative; display: flex; width: 100%; padding: 0 16px; border-radius: 8px; overflow: hidden;
    border: .5px solid var(--ac-border); background: transparent;
    transition: background-color .3s cubic-bezier(.4, 0, .2, 1), border-color .3s cubic-bezier(.4, 0, .2, 1);
  }
  html[data-theme='light'] .att-card.svelte-1uxvm9k {
    --ac-border: rgba(31, 31, 30, .15); --ac-border-hover: rgba(31, 31, 30, .3);
    --ac-hover-bg: rgba(255, 255, 255, .5); --ac-page-border: rgba(31, 31, 30, .3); --ac-page-bg: #ffffff;
    --ac-title: #0b0b0b; --ac-meta: #7b7974; --ac-glyph: #898781;
    --ac-btn-text: #0b0b0b; --ac-btn-bg: rgba(255, 255, 255, .1); --ac-btn-bg-hover: rgba(11, 11, 11, .05); --ac-btn-ring: rgba(11, 11, 11, .1);
  }
  .att-hit.svelte-1uxvm9k { position: absolute; inset: 0; cursor: pointer; border-radius: inherit; display: block; }
  .att-hit.svelte-1uxvm9k:focus-visible { outline: none; box-shadow: inset 0 0 0 2px #2563b8; }
  .att-cell.svelte-1uxvm9k { display: flex; flex: 1; gap: 8px; min-width: 0; }
  .att-well.svelte-1uxvm9k { width: 68px; position: relative; flex: none; pointer-events: none; }
  .att-page.svelte-1uxvm9k {
    position: absolute; right: 8px; top: 0; bottom: 0; width: 52px;
    border-radius: 8px 8px 0 0; border: .5px solid var(--ac-page-border);
    background: linear-gradient(to bottom, var(--ac-page-bg), transparent);  /* 官网 from-bg-000 to-bg-000/0 渐隐纸面 */
    display: flex; align-items: flex-start; justify-content: center; padding-top: 16px;
    translate: 0 19%; rotate: -0.1rad; scale: 1; overflow: hidden;
    transition: rotate .3s cubic-bezier(.165, .84, .44, 1), scale .3s cubic-bezier(.165, .84, .44, 1);
  }
  .att-glyph.svelte-1uxvm9k { width: 20px; height: 20px; color: var(--ac-glyph); flex: none; }
  .att-texts.svelte-1uxvm9k { display: flex; flex-direction: column; gap: 4px; padding: 16px 0; min-width: 0; flex: 1; pointer-events: none; }
  .att-name.svelte-1uxvm9k { font-size: 14px; line-height: 1.25; color: var(--ac-title); overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
  .att-sub.svelte-1uxvm9k { font-size: 12px; line-height: 16px; color: var(--ac-meta); overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
  .att-dot.svelte-1uxvm9k { opacity: .5; }
  .att-ctrl.svelte-1uxvm9k { position: relative; z-index: 1; display: flex; align-items: center; flex: none; }
  .att-dl.svelte-1uxvm9k {
    position: relative; isolation: isolate; display: inline-flex; align-items: center; justify-content: center;
    height: 32px; padding: 0 12px; border-radius: 8px; font-size: 14px; font-weight: 500; line-height: 1;
    color: var(--ac-btn-text); white-space: nowrap; text-decoration: none; -webkit-tap-highlight-color: transparent;
  }
  .att-dl-bg.svelte-1uxvm9k {
    position: absolute; inset: 0; z-index: -1; border-radius: inherit;
    background: var(--ac-btn-bg);
    box-shadow: inset 0 0 0 1px var(--ac-btn-ring), 0 1px 2px rgba(0, 0, 0, .05);
    scale: 1;
    transition: background-color .1s ease, scale .45s;
    /* 真站 cds squish 弹簧（0.45s linear() 曲线原样）；不支持 linear() 的内核回落上一行普通过渡 */
    transition: background-color .1s ease, scale .45s linear(0 0%, 0.2459 7.14286%, 0.6526 14.2857%, 0.9468 21.4286%, 1.0764 28.5714%, 1.0915 35.7143%, 1.0585 42.8571%, 1.0219 50%, 0.9993 57.1429%, 0.9914 64.2857%, 0.9921 71.4286%, 0.9957 78.5714%, 0.9988 85.7143%, 1.0004 92.8571%, 1 100%);
  }
  .att-dl.svelte-1uxvm9k:active .att-dl-bg:where(.svelte-1uxvm9k) { scale: .97; transition: background-color .1s ease, scale .12s cubic-bezier(.165, .84, .44, 1); }
  @media (hover: hover) {
    .att-card.svelte-1uxvm9k:hover { background: var(--ac-hover-bg); border-color: var(--ac-border-hover); }
    .att-card.svelte-1uxvm9k:hover .att-page:where(.svelte-1uxvm9k) { rotate: -0.065rad; scale: 1.035;
      transition: rotate .4s cubic-bezier(0, .9, .5, 1.35), scale .4s cubic-bezier(0, .9, .5, 1.35); }
    .att-dl.svelte-1uxvm9k:hover .att-dl-bg:where(.svelte-1uxvm9k) { background: var(--ac-btn-bg-hover); }
  }
  /* 触屏没有 hover：按下整卡时给同款文档页动效，交互反馈不缺席 */
  @media (hover: none) {
    .att-card.svelte-1uxvm9k:active { background: var(--ac-hover-bg); border-color: var(--ac-border-hover); }
    .att-card.svelte-1uxvm9k:active .att-page:where(.svelte-1uxvm9k) { rotate: -0.065rad; scale: 1.035;
      transition: rotate .4s cubic-bezier(0, .9, .5, 1.35), scale .4s cubic-bezier(0, .9, .5, 1.35); }
  }

  /* 消息操作排（复制/重试）——尺寸与交互态照搬设计稿 .act 规格 */
  .actions.svelte-1uxvm9k { display: flex; gap: 2px; margin-top: 10px; margin-left: -8px; }
  .act.svelte-1uxvm9k { width: 34px; height: 34px; border-radius: 9px; display: flex; align-items: center; justify-content: center; color: var(--muted); }
  .act.svelte-1uxvm9k:active { background: var(--hover); color: var(--text); }
  .act.svelte-1uxvm9k:disabled { opacity: .4; }
  .act.svelte-1uxvm9k svg:where(.svelte-1uxvm9k) { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }

  /* min-width:0 + break-word：长 URL / 长标识符这类不可断的单词也不许把正文列撑出去 */
  .answer.svelte-1uxvm9k { font-size: 16px; line-height: 1.75; color: var(--text); min-width: 0; overflow-wrap: break-word; }
  .answer.svelte-1uxvm9k p { margin: 0 0 12px; }
  .answer.svelte-1uxvm9k p:last-child { margin-bottom: 0; }
  .answer.svelte-1uxvm9k h1, .answer.svelte-1uxvm9k h2, .answer.svelte-1uxvm9k h3 { margin: 16px 0 8px; line-height: 1.3; }
  .answer.svelte-1uxvm9k ul, .answer.svelte-1uxvm9k ol { margin: 0 0 12px; padding-left: 22px; }
  .answer.svelte-1uxvm9k li { margin: 3px 0; }
  .answer.svelte-1uxvm9k pre { background: var(--userbubble); border: 1px solid var(--divider); border-radius: 12px; padding: 12px 14px; overflow-x: auto; margin: 0 0 12px; }
  .answer.svelte-1uxvm9k code { font-family: ui-monospace, "SF Mono", Consolas, monospace; font-size: .9em; }
  .answer.svelte-1uxvm9k :not(pre) > code { background: var(--hover); padding: 1px 5px; border-radius: 5px; }
  .answer.svelte-1uxvm9k a { color: var(--coral); }
  .answer.svelte-1uxvm9k img { max-width: 100%; border-radius: 10px; }
  /* 表格的横向溢出交给外层 .md-tablewrap 滚动壳（lib/md.js 套、app.css 定样式），
     这里只管观感。别在这里给 table 加 display:block —— 那样列宽会被 max-width 压回去，
     十几列的表会被挤成一列一个字。 */
  .answer.svelte-1uxvm9k table { border-collapse: collapse; font-size: 14px; margin: 0; }
  .answer.svelte-1uxvm9k th, .answer.svelte-1uxvm9k td { border: 1px solid var(--divider); padding: 6px 10px; }

  /* 流式「吐字渐入」——复刻 claude.ai 官网：新到达文本 opacity 0→1、0.4s linear（见 lib/claudeFade.js）。
     .c-in 由 action 动态生成（不在模板里），故用 :global；keyframes 加 -global- 前缀免被 Svelte 改名。
     inline + 纯 opacity，不改文本流；负 animation-delay 让淡入跨全量重渲染连续、不回跳（对齐官网 linear）。 */
  .answer.svelte-1uxvm9k .c-in { animation: cIn .4s linear both; }
  @keyframes cIn { from { opacity: 0; } to { opacity: 1; } }
  /* 无障碍：跟随系统「减弱动态效果」，直接实体显示（对齐官网 data-reduce-motion 降级）。 */
  @media (prefers-reduced-motion: reduce) { .answer.svelte-1uxvm9k .c-in { animation: none; } }

  .err-box.svelte-1uxvm9k { background: #2a1c14; border: 1px solid #5c3522; color: var(--err, #d98a6a); border-radius: 12px; padding: 10px 14px; font-size: 14px; }

  .qcard.svelte-1uxvm9k { margin-top: 16px; border-radius: 16px; background: var(--q-card); box-shadow: var(--q-shadow); overflow: hidden; animation: svelte-1uxvm9k-popIn .3s cubic-bezier(.22,1,.36,1); }
  .qhead.svelte-1uxvm9k { padding: 14px 15px 10px; }
  .qtext.svelte-1uxvm9k { font-size: 15px; line-height: 1.5; color: var(--text); }
  .qopt.svelte-1uxvm9k { width: 100%; display: flex; align-items: center; gap: 13px; min-height: 50px; padding: 0 15px; border-top: 1px solid var(--divider); text-align: left; }
  .qopt.svelte-1uxvm9k:active { background: var(--hover); }
  .qopt.sel.svelte-1uxvm9k { background: var(--q-rowsel); }
  .qnum.svelte-1uxvm9k { color: var(--muted); font-size: 15px; width: 14px; flex: none; }
  .qlabel.svelte-1uxvm9k { flex: 1; font-size: 15px; color: var(--serif); padding: 13px 0; }
  .qdesc.svelte-1uxvm9k { display: block; font-size: 12.5px; color: var(--muted); margin-top: 2px; }
  .qopt.sel.svelte-1uxvm9k .qlabel:where(.svelte-1uxvm9k), .qopt.sel.svelte-1uxvm9k .qnum:where(.svelte-1uxvm9k) { color: var(--text); }
  .qcheck.svelte-1uxvm9k { color: var(--text); }   /* 黑白灰铁律：勾选不用 coral */
  .qfoot.svelte-1uxvm9k { display: flex; align-items: center; min-height: 50px; padding: 0 15px; border-top: 1px solid var(--divider); }
  .qelse.svelte-1uxvm9k { flex: 1; background: none; border: none; outline: none; font: inherit; font-size: 15px; color: var(--text); padding: 14px 0; }
  .qelse.svelte-1uxvm9k::placeholder { color: var(--muted); }
  .qdiv.svelte-1uxvm9k { height: 6px; background: var(--divider); opacity: .4; }
  .qactions.svelte-1uxvm9k { display: flex; gap: 10px; justify-content: flex-end; padding: 12px 15px; border-top: 1px solid var(--divider); }
  .qerror.svelte-1uxvm9k { padding: 10px 15px; border-top: 1px solid var(--divider); color: var(--err, #d98a6a); background: rgba(217,138,106,.08); font-size: 13px; line-height: 1.35; }
  .qskip.svelte-1uxvm9k { font-size: 14px; color: var(--text); border: 1px solid var(--q-skipborder); border-radius: 9px; padding: 8px 16px; }
  .qsubmit.svelte-1uxvm9k { font-size: 14px; color: var(--bg); background: var(--text); border-radius: 9px; padding: 8px 16px; }
  .qsubmit.svelte-1uxvm9k:disabled { opacity: .4; }
  /* 已回答 ask 块：只读——未选项淡出、所选保留高亮；自定义答案与「已跳过」提示 */
  .ask-seg.answered.svelte-1uxvm9k .qopt:where(.svelte-1uxvm9k) { cursor: default; }
  .ask-seg.answered.svelte-1uxvm9k .qopt:where(.svelte-1uxvm9k):disabled { opacity: 1; }
  .ask-seg.answered.svelte-1uxvm9k .qopt:where(.svelte-1uxvm9k):not(.sel) { opacity: .42; }
  .ask-seg.answered.svelte-1uxvm9k .qopt:where(.svelte-1uxvm9k):active { background: none; }
  .qcustom.svelte-1uxvm9k { flex: 1; font-size: 15px; color: var(--text); padding: 14px 0; }
  .qskipped.svelte-1uxvm9k { padding: 12px 15px; font-size: 14px; color: var(--muted); border-top: 1px solid var(--divider); }

  .turn-foot.svelte-1uxvm9k { display: flex; align-items: center; gap: 10px; margin-top: 14px; flex-wrap: wrap; }
  .logo-fly.svelte-1uxvm9k { display: inline-flex; flex: none; }
  .meta.svelte-1uxvm9k { color: var(--muted); font-size: 13px; }
  /* 后台任务芯片：官方 /code 页菊花右侧那颗蓝色「N running task」——实心蓝底 + 白字小圆角，
     点开右侧工作台的「任务」页。它是状态行里唯一的彩色元素，正是要一眼看见。 */
  .bgchip.svelte-1uxvm9k { background: var(--taskchip); color: var(--taskchip-fg); font-size: 12.5px; line-height: 16px;
    padding: 4px 9px; border-radius: 7px; white-space: nowrap; transition: filter var(--mo-micro) var(--ea-std); }
  @media (hover: hover) { .bgchip.svelte-1uxvm9k:hover { filter: brightness(1.12); } }
  .bgchip.svelte-1uxvm9k:active { filter: brightness(.92); }

  svg.svelte-gwh1ih { display: block; width: auto; flex: none; }

  /* 官方 epitaxy-composer-aux-view：min-h 40 / p8 / r10 / 底 --t1 / 字 body；band 变体上下留白让文字居中 */
  .band.svelte-140x6b2 { position: relative; display: flex; align-items: flex-start; gap: 5px; width: 100%; box-sizing: border-box;
    min-height: 40px; padding: 8px; border-radius: 10px; background: var(--hover); font-size: 14px; line-height: 20px; color: var(--text); }
  .band-main.svelte-140x6b2 { flex: 1; min-width: 0; display: flex; flex-wrap: wrap; align-items: baseline; column-gap: 8px; row-gap: 3px; padding: 2px 0 2px 4px; }
  .band-msg.svelte-140x6b2 { min-width: 0; color: var(--text); }
  .band-cta.svelte-140x6b2 { display: flex; flex-wrap: wrap; align-items: center; column-gap: 8px; row-gap: 3px; min-width: 0; }
  /* 文本链接按钮（官方 va）：次色 + 下划线，hover 转主色 */
  .lnk.svelte-140x6b2 { flex: none; padding: 0; color: var(--serif); text-decoration: underline; text-underline-offset: 3px; text-decoration-color: color-mix(in srgb, currentColor 45%, transparent);
    font-size: 14px; line-height: 20px; border-radius: 4px; }
  @media (hover: hover) { .lnk.svelte-140x6b2:hover { color: var(--text); } }
  .lnk.svelte-140x6b2:disabled { opacity: .5; cursor: default; }
  /* 右侧 X：ghost 图标钮 24×24 */
  .band-x.svelte-140x6b2 { flex: none; width: 24px; height: 24px; display: inline-flex; align-items: center; justify-content: center; border-radius: 6px; color: var(--muted); }
  @media (hover: hover) { .band-x.svelte-140x6b2:hover { color: var(--text); background: var(--hover-strong); } }
  .band-x.svelte-140x6b2:active { background: var(--hover-strong); }
  .gi.svelte-140x6b2 { font-family: var(--icons); font-style: normal; font-feature-settings: "liga" 0; font-variation-settings: "opsz" 16, "wght" 533;
    font-size: 16px; line-height: 1; width: 16px; height: 16px; display: inline-flex; align-items: center; justify-content: center; }

  /* Why? 弹层（官方 MR Popup side=top align=end）：贴横条上方、220–320 宽，卡底 + 描边 + 阴影；left 由脚本按触发器右缘算 */
  .why-pop.svelte-140x6b2 { position: absolute; left: 0; bottom: calc(100% + 6px); z-index: 6; width: min(320px, 100%); min-width: min(220px, 100%);
    box-sizing: border-box; display: flex; flex-direction: column; gap: 3px; padding: 10px 12px;
    background: var(--card); border: 1px solid var(--divider); border-radius: 12px; box-shadow: 0 8px 28px rgba(0,0,0,.28);
    animation: svelte-140x6b2-whyIn var(--mo-quick) var(--ea-decel); overflow-wrap: anywhere; }
  @keyframes svelte-140x6b2-whyIn { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: none; } }
  .why-h.svelte-140x6b2 { font-size: 12.5px; line-height: 16px; font-weight: 500; color: var(--serif); padding-bottom: 4px; }
  .why-b.svelte-140x6b2 { font-size: 14px; line-height: 20px; color: var(--muted); text-wrap: pretty; }
  .why-d.svelte-140x6b2 { display: block; padding-top: 4px; font-size: 14px; line-height: 20px; color: var(--muted); }
  .why-d.svelte-140x6b2 code:where(.svelte-140x6b2) { font-family: ui-monospace, "SF Mono", Menlo, Consolas, monospace; font-size: 12.5px; word-break: break-all; }
  @media (prefers-reduced-motion: reduce) { .why-pop.svelte-140x6b2 { animation: none; } }

  .rt-page.svelte-y02r8m { position: fixed; inset: 0; z-index: 80; background: var(--bg); color: var(--text); display: flex; flex-direction: column; animation: svelte-y02r8m-rtIn .22s ease; }
  @keyframes svelte-y02r8m-rtIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
  /* 高度要把 --sat 加上：border-box 下固定 52px 会被 padding-top 挤扁，按钮溢出顶进状态栏（edge-to-edge 后实测重叠）。 */
  .rt-top.svelte-y02r8m { flex: none; display: flex; align-items: center; gap: 8px; height: calc(52px + var(--sat)); padding: 0 8px; padding-top: var(--sat); border-bottom: 1px solid var(--divider); }
  .rt-back.svelte-y02r8m { width: 38px; height: 38px; border-radius: 10px; font-size: 22px; color: var(--serif); display: flex; align-items: center; justify-content: center; }
  .rt-back.svelte-y02r8m:active { background: var(--hover); }
  .rt-h.svelte-y02r8m { font-size: 16px; font-weight: 600; display: flex; align-items: center; gap: 7px; }
  /* 与侧栏「定时触发」同一枚钟（claude.ai Scheduled 实测规格，动效注释见 ClaudePage.svelte）：
     悬停标题两针以 8 8 为轴走一格——时针 +30°、分针 +390°，0.6s cubic-bezier(.3,.9,.4,1)。 */
  .clock.svelte-y02r8m { width: 18px; height: 18px; color: var(--text); }
  .clock.svelte-y02r8m line:where(.svelte-y02r8m) { transform-box: view-box; transform-origin: 8px 8px;
    transition: rotate .6s cubic-bezier(.3, .9, .4, 1); }
  @media (hover: hover) {
    .rt-h.svelte-y02r8m:hover .clock:where(.svelte-y02r8m) .hh:where(.svelte-y02r8m) { rotate: 30deg; }
    .rt-h.svelte-y02r8m:hover .clock:where(.svelte-y02r8m) .mh:where(.svelte-y02r8m) { rotate: 390deg; }
  }
  .slash.svelte-y02r8m { color: var(--muted); font-weight: 400; } .dim.svelte-y02r8m { color: var(--muted); font-weight: 400; font-size: 12px; }
  .sp.svelte-y02r8m { flex: 1; }
  .rt-new.svelte-y02r8m { font-size: 14px; color: var(--text); padding: 7px 13px; border-radius: 10px; border: 1px solid var(--divider); }
  .rt-new.svelte-y02r8m:active { background: var(--hover); }

  .rt-body.svelte-y02r8m { flex: 1; overflow-y: auto; -webkit-overflow-scrolling: touch; padding: 16px; max-width: 760px; width: 100%; margin: 0 auto; }
  .rt-desc.svelte-y02r8m { color: var(--muted); font-size: 13px; line-height: 1.6; margin-bottom: 16px; }
  .rt-err.svelte-y02r8m { background: rgba(217,106,90,.14); color: var(--crit, #d96a5a); font-size: 13px; padding: 9px 13px; border-radius: 10px; margin-bottom: 12px; }
  .rt-empty.svelte-y02r8m { color: var(--muted); font-size: 14px; text-align: center; padding: 40px 0; }

  .rt-card.svelte-y02r8m { display: flex; align-items: center; gap: 6px; padding: 10px 4px; border-bottom: 1px solid var(--divider); }
  .rt-card-main.svelte-y02r8m { flex: 1; min-width: 0; text-align: left; padding: 4px 8px; border-radius: 10px; }
  .rt-card-main.svelte-y02r8m:active { background: var(--hover); }
  .rt-name.svelte-y02r8m { font-size: 15px; color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .rt-meta.svelte-y02r8m { font-size: 12.5px; color: var(--muted); margin-top: 3px; }
  .rt-icon.svelte-y02r8m { width: 32px; height: 32px; border-radius: 9px; color: var(--muted); flex: none; display: flex; align-items: center; justify-content: center; }
  .rt-icon.svelte-y02r8m:active { background: var(--hover); color: var(--text); } .rt-icon.svelte-y02r8m:disabled { opacity: .35; }
  .rt-icon.svelte-y02r8m svg:where(.svelte-y02r8m) { width: 16px; height: 16px; }

  .rt-sw.svelte-y02r8m { width: 42px; height: 25px; border-radius: 999px; background: var(--divider); flex: none; padding: 2px; transition: background .2s; }
  .rt-sw.svelte-y02r8m .knob:where(.svelte-y02r8m) { display: block; width: 21px; height: 21px; border-radius: 50%; background: var(--muted); transition: transform .2s, background .2s; }
  .rt-sw.on.svelte-y02r8m { background: var(--text); } .rt-sw.on.svelte-y02r8m .knob:where(.svelte-y02r8m) { background: var(--bg); transform: translateX(17px); }
  .rt-sw.big.svelte-y02r8m { width: 48px; height: 28px; } .rt-sw.big.svelte-y02r8m .knob:where(.svelte-y02r8m) { width: 24px; height: 24px; } .rt-sw.big.on.svelte-y02r8m .knob:where(.svelte-y02r8m) { transform: translateX(20px); }

  .form.svelte-y02r8m { padding-bottom: 24px; }
  .rt-label.svelte-y02r8m { display: block; font-size: 13px; color: var(--text); margin: 18px 0 7px; font-weight: 500; }
  .rt-label.svelte-y02r8m b:where(.svelte-y02r8m) { color: var(--muted); }
  .rt-label.svelte-y02r8m:first-child { margin-top: 4px; }
  .rt-input.svelte-y02r8m { width: 100%; background: var(--card); border: 1px solid var(--divider); border-radius: 12px; padding: 12px 14px; font: inherit; font-size: 15px; color: var(--text); outline: none; }
  .rt-input.svelte-y02r8m:focus { border-color: var(--serif); }
  .rt-instr.svelte-y02r8m { background: var(--card); border: 1px solid var(--divider); border-radius: 16px; padding: 6px; }
  .rt-instr.svelte-y02r8m:focus-within { border-color: var(--serif); }
  .rt-ta.svelte-y02r8m { width: 100%; min-height: 120px; max-height: 40vh; resize: vertical; background: none; border: none; outline: none; font: inherit; font-size: 15px; line-height: 1.5; color: var(--text); padding: 10px; }
  .rt-instr-bar.svelte-y02r8m { display: flex; justify-content: flex-end; padding: 2px 4px; }
  .eng-wrap.svelte-y02r8m { position: relative; }
  .eng-btn.svelte-y02r8m { font-size: 13px; color: var(--text); padding: 6px 10px; border-radius: 9px; }
  .eng-btn.svelte-y02r8m:active { background: var(--hover); } .eng-btn.svelte-y02r8m .cv:where(.svelte-y02r8m) { color: var(--muted); }
  .eng-bd.svelte-y02r8m { position: fixed; inset: 0; z-index: 60; }
  .eng-pop.svelte-y02r8m { position: absolute; bottom: calc(100% + 8px); right: 0; z-index: 61; min-width: 240px; max-width: 84vw; padding: 10px 12px; background: var(--q-card); border-radius: 14px; box-shadow: var(--q-shadow); max-height: 56vh; overflow-y: auto; }
  .eng-sec.svelte-y02r8m { font-size: 11px; font-weight: 600; letter-spacing: .3px; color: var(--muted); margin: 10px 0 6px; }
  .eng-sec.svelte-y02r8m:first-child { margin-top: 0; }

  .pills.svelte-y02r8m { display: flex; flex-wrap: wrap; gap: 7px; }
  .pills.wk.svelte-y02r8m { margin-top: 12px; }
  .pill.svelte-y02r8m { font-size: 13px; color: var(--serif); padding: 7px 13px; border-radius: 10px; border: 1px solid var(--divider); background: var(--card); }
  .pill.svelte-y02r8m:active { background: var(--hover); }
  .pill.on.svelte-y02r8m { background: var(--text); border-color: var(--text); color: var(--bg); }

  .rt-when.svelte-y02r8m { display: flex; align-items: center; gap: 10px; margin-top: 12px; color: var(--text); font-size: 14px; }
  .rt-time.svelte-y02r8m, .rt-num.svelte-y02r8m { background: var(--card); border: 1px solid var(--divider); border-radius: 10px; padding: 9px 12px; font: inherit; font-size: 15px; color: var(--text); outline: none; }
  .rt-num.svelte-y02r8m { width: 80px; }
  .rt-time.svelte-y02r8m:focus, .rt-num.svelte-y02r8m:focus { border-color: var(--serif); }
  .rt-err.svelte-y02r8m { margin-top: 14px; color: var(--crit); font-size: 14px; }

  .rt-foot.svelte-y02r8m { flex: none; display: flex; justify-content: flex-end; gap: 10px; padding: 12px 16px max(12px, var(--sab)); border-top: 1px solid var(--divider); }
  .rt-cancel.svelte-y02r8m { font-size: 15px; color: var(--text); padding: 11px 20px; border-radius: 12px; border: 1px solid var(--divider); }
  .rt-cancel.svelte-y02r8m:active { background: var(--hover); }
  .rt-save.svelte-y02r8m { font-size: 15px; color: var(--bg); background: var(--text); padding: 11px 22px; border-radius: 12px; }
  .rt-save.svelte-y02r8m:disabled { opacity: .4; }

  .rv.svelte-q8byra { flex: 1; min-height: 0; display: flex; flex-direction: column; overflow-y: auto; padding: 4px 10px 16px; }
  .rv.svelte-q8byra::-webkit-scrollbar { width: 6px; }
  .rv.svelte-q8byra::-webkit-scrollbar-track { background: transparent; }
  .rv.svelte-q8byra::-webkit-scrollbar-thumb { background: color-mix(in srgb, var(--muted) 38%, transparent); border-radius: 999px; }

  .rv-empty.svelte-q8byra { flex: none; display: flex; align-items: center; justify-content: center; gap: 10px; color: var(--muted); font-size: 14px; padding: 48px 16px; text-align: center; }
  .rv-retry.svelte-q8byra { color: var(--coral); padding: 4px 10px; border-radius: 8px; }
  .rv-retry.svelte-q8byra:active { background: var(--hover); }

  .rv-head.svelte-q8byra { display: flex; align-items: center; gap: 8px; padding: 10px 6px 4px; font-size: 14px; color: var(--text); }
  .rv-branch.svelte-q8byra { display: flex; align-items: center; gap: 6px; font-weight: 560; }
  .rv-branch.svelte-q8byra svg:where(.svelte-q8byra) { width: 16px; height: 16px; color: var(--muted); }
  .rv-arrow.svelte-q8byra { color: var(--muted); }
  .rv-wt.svelte-q8byra { color: var(--serif); }
  .rv-refresh.svelte-q8byra { margin-left: auto; width: 30px; height: 30px; border-radius: 8px; display: flex; align-items: center; justify-content: center; color: var(--muted); }
  .rv-refresh.svelte-q8byra svg:where(.svelte-q8byra) { width: 16px; height: 16px; }
  .rv-refresh.svelte-q8byra:active { background: var(--hover); }
  @media (hover: hover) { .rv-refresh.svelte-q8byra:hover { background: var(--hover); color: var(--text); } }

  .rv-hint.svelte-q8byra { color: var(--muted); font-size: 12px; padding: 2px 6px 10px; }
  .rv-hint.svelte-q8byra .add:where(.svelte-q8byra) { color: var(--ok); font-style: normal; }
  .rv-hint.svelte-q8byra .del:where(.svelte-q8byra) { color: var(--crit); font-style: normal; }

  .rv-list.svelte-q8byra { display: flex; flex-direction: column; gap: 2px; }
  .rv-row.svelte-q8byra { width: 100%; display: flex; align-items: center; gap: 7px; padding: 7px 8px; border-radius: 8px; font-size: 13.5px; color: var(--serif); text-align: left; transition: background-color .12s ease; }
  .rv-row.svelte-q8byra:active { background: var(--hover); }
  @media (hover: hover) { .rv-row.svelte-q8byra:hover { background: var(--hover); color: var(--text); } }
  .chev.svelte-q8byra { width: 14px; height: 14px; flex: none; color: var(--muted); transition: transform .16s ease; }
  .chev.open.svelte-q8byra { transform: rotate(90deg); }
  .rv-name.svelte-q8byra { flex: 1; min-width: 0; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; direction: rtl; text-align: left; }
  .rv-name.svelte-q8byra::after { content: '\200e'; }
  .rv-st.svelte-q8byra { flex: none; font-size: 11px; padding: 1px 6px; border-radius: 6px; background: var(--hover); color: var(--muted); }
  /* st-* / dl 的分类 class 是模板插值动态拼的，scoped 规则会被编译器当 unused 剪掉——:global 保住 */
  .rv-st.svelte-q8byra.st-A, .rv-st.svelte-q8byra.st-U { color: var(--ok); }
  .rv-st.svelte-q8byra.st-D { color: var(--crit); }
  .rv-bin.svelte-q8byra { flex: none; font-size: 12px; color: var(--muted); }
  .rv-count.svelte-q8byra { flex: none; font-size: 12.5px; font-variant-numeric: tabular-nums; }
  .rv-count.add.svelte-q8byra { color: var(--ok); }
  .rv-count.del.svelte-q8byra { color: var(--crit); }

  .rv-diff.svelte-q8byra { margin: 2px 0 8px 20px; border: 1px solid var(--divider); border-radius: 10px; overflow: hidden; }
  .rv-dload.svelte-q8byra { display: flex; align-items: center; justify-content: center; gap: 8px; color: var(--muted); font-size: 13px; padding: 16px; }
  .rv-code.svelte-q8byra { overflow-x: auto; font-family: Consolas, 'Cascadia Mono', Menlo, monospace; font-size: 12px; line-height: 1.5; padding: 6px 0; }
  .dl.svelte-q8byra { white-space: pre; padding: 0 10px; min-width: max-content; }
  .dl.svelte-q8byra.add { background: color-mix(in srgb, var(--ok) 12%, transparent); color: var(--text); }
  .dl.svelte-q8byra.del { background: color-mix(in srgb, var(--crit) 11%, transparent); color: var(--text); }
  .dl.svelte-q8byra.hunk { color: #7aa2f7; background: color-mix(in srgb, #7aa2f7 7%, transparent); padding-top: 2px; padding-bottom: 2px; }
  .dl.svelte-q8byra.meta { color: var(--muted); }
  .dl.svelte-q8byra.ctx { color: var(--serif); }

  .spin.svelte-q8byra { width: 14px; height: 14px; border: 2px solid var(--divider); border-top-color: var(--coral); border-radius: 50%; animation: svelte-q8byra-rvspin .8s linear infinite; flex: none; }
  @keyframes svelte-q8byra-rvspin { to { transform: rotate(360deg); } }

  .tm.svelte-1ogq9hw { flex: 1; min-height: 0; display: flex; flex-direction: column; position: relative; padding: 6px 6px 0; }
  .tm-body.svelte-1ogq9hw { flex: 1; min-height: 0; border-radius: 10px; overflow: hidden; background: var(--bg); padding: 6px 0 0 8px; }
  .tm-body.svelte-1ogq9hw .xterm { height: 100%; }
  .tm-body.svelte-1ogq9hw .xterm-viewport { background: transparent !important; }
  .tm-body.svelte-1ogq9hw .xterm-viewport::-webkit-scrollbar { width: 6px; }
  .tm-body.svelte-1ogq9hw .xterm-viewport::-webkit-scrollbar-thumb { background: color-mix(in srgb, var(--muted) 38%, transparent); border-radius: 999px; }

  .tm-veil.svelte-1ogq9hw { position: absolute; inset: 6px 6px 44px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 12px;
    background: color-mix(in srgb, var(--bg) 82%, transparent); backdrop-filter: blur(2px); color: var(--muted); font-size: 14px; border-radius: 10px; }
  .tm-restart.svelte-1ogq9hw { padding: 7px 16px; border-radius: 10px; background: var(--text); color: var(--bg); font-size: 13.5px; font-weight: 600; }

  .tm-quick.svelte-1ogq9hw { flex: none; display: flex; align-items: center; gap: 5px; padding: 6px 2px; overflow-x: auto; }
  .tm-quick.svelte-1ogq9hw button:where(.svelte-1ogq9hw) { flex: none; padding: 5px 11px; border-radius: 8px; background: var(--hover); color: var(--serif); font-size: 12.5px;
    font-family: Consolas, 'Cascadia Mono', Menlo, monospace; transition: background-color .12s ease; }
  .tm-quick.svelte-1ogq9hw button:where(.svelte-1ogq9hw):active { background: var(--hover-strong); }
  @media (hover: hover) { .tm-quick.svelte-1ogq9hw button:where(.svelte-1ogq9hw):hover { background: var(--hover-strong); color: var(--text); } }
  .tm-kill.svelte-1ogq9hw { margin-left: auto; display: flex; align-items: center; justify-content: center; }
  .tm-kill.svelte-1ogq9hw svg:where(.svelte-1ogq9hw) { width: 14px; height: 14px; }

  .spin.svelte-1ogq9hw { width: 14px; height: 14px; border: 2px solid var(--divider); border-top-color: var(--coral); border-radius: 50%; animation: svelte-1ogq9hw-tmspin .8s linear infinite; }
  @keyframes svelte-1ogq9hw-tmspin { to { transform: rotate(360deg); } }

  .bw.svelte-hvpqou { flex: 1; min-height: 0; display: flex; flex-direction: column; position: relative; }

  /* 窄面板 ⋮ 弹层：设备三档 + 关闭浏览器 */
  .dev-bd.svelte-hvpqou { position: absolute; inset: 0; z-index: 8; }
  .dev-pop.svelte-hvpqou { position: absolute; top: 78px; right: 10px; z-index: 9; min-width: 168px; padding: 5px;
    background: var(--q-card); border-radius: 12px; box-shadow: var(--q-shadow); animation: svelte-hvpqou-devPop .14s ease; }
  @keyframes svelte-hvpqou-devPop { from { opacity: 0; transform: scale(.96); } to { opacity: 1; transform: none; } }
  .dev-row.svelte-hvpqou { width: 100%; display: flex; align-items: center; gap: 10px; padding: 9px 11px; border-radius: 8px; font-size: 13.5px; color: var(--text); text-align: left; }
  .dev-row.svelte-hvpqou svg:where(.svelte-hvpqou) { width: 17px; height: 17px; flex: none; color: var(--serif); }
  .dev-row.svelte-hvpqou:active { background: var(--hover); }
  .dev-row.on.svelte-hvpqou { color: var(--coral); }
  .dev-row.on.svelte-hvpqou svg:where(.svelte-hvpqou) { color: var(--coral); }
  .dev-row.off.svelte-hvpqou { color: var(--crit); }
  .dev-row.off.svelte-hvpqou svg:where(.svelte-hvpqou) { color: var(--crit); }
  .dev-ck.svelte-hvpqou { margin-left: auto; }

  /* 视口选项弹层：自定义尺寸 / 横竖屏 / 触屏 / 配色 + 实测行 */
  .vp-pop.svelte-hvpqou { position: absolute; top: 78px; right: 10px; z-index: 9; width: 250px; padding: 10px;
    display: flex; flex-direction: column; gap: 8px;
    background: var(--q-card); border-radius: 12px; box-shadow: var(--q-shadow); animation: svelte-hvpqou-devPop .14s ease; }
  .vp-row.svelte-hvpqou { display: flex; align-items: center; gap: 6px; }
  .vp-lab.svelte-hvpqou { flex: none; width: 28px; font-size: 12px; color: var(--muted); }
  .vp-in.svelte-hvpqou { flex: 1; width: 0; min-width: 0; height: 28px; padding: 0 6px; border-radius: 7px; border: none; outline: none;
    background: var(--hover); color: var(--text); font-size: 12.5px; text-align: center; -moz-appearance: textfield; appearance: textfield; }
  .vp-in.svelte-hvpqou::-webkit-outer-spin-button, .vp-in.svelte-hvpqou::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
  .vp-in.svelte-hvpqou:focus { box-shadow: 0 0 0 1.5px color-mix(in srgb, var(--coral) 55%, transparent); }
  .vp-x.svelte-hvpqou { flex: none; color: var(--muted); font-size: 12px; }
  .vp-go.svelte-hvpqou { flex: none; height: 28px; padding: 0 10px; border-radius: 7px; background: var(--coral); color: #fff; font-size: 12.5px; }
  .vp-go.svelte-hvpqou:active { opacity: .85; }
  .vp-btns.svelte-hvpqou { gap: 4px; }
  .vp-tg.svelte-hvpqou { flex: 1; display: flex; align-items: center; justify-content: center; gap: 5px; height: 28px; border-radius: 7px;
    background: var(--hover); color: var(--serif); font-size: 12px; }
  .vp-tg.svelte-hvpqou svg:where(.svelte-hvpqou) { width: 14px; height: 14px; flex: none; }
  .vp-tg.svelte-hvpqou:active { background: var(--hover-strong); }
  .vp-tg.on.svelte-hvpqou { color: var(--coral); background: color-mix(in srgb, var(--coral) 12%, transparent); }
  .vp-meta.svelte-hvpqou { font-size: 11px; color: var(--muted); line-height: 1.4; }
  .vp-meta.warn.svelte-hvpqou { color: var(--crit); }

  /* —— 标签条：胶囊标签 + ×/＋（dimensio 真标签条的 Claude 皮）—— */
  .bw-tabs.svelte-hvpqou { flex: none; display: flex; align-items: center; gap: 4px; padding: 6px 8px 0; overflow-x: auto; scrollbar-width: none; }
  .bw-tabs.svelte-hvpqou::-webkit-scrollbar { display: none; }
  .btab.svelte-hvpqou { flex: 0 1 168px; min-width: 72px; display: flex; align-items: center; gap: 4px; height: 30px;
    padding: 0 4px 0 11px; border-radius: 9px; background: transparent; color: var(--muted);
    font-size: 12.5px; cursor: pointer; transition: background-color .13s ease, color .13s ease; }
  .btab.on.svelte-hvpqou { background: var(--card); color: var(--text); box-shadow: var(--card-shadow); }
  @media (hover: hover) { .btab.svelte-hvpqou:not(.on):hover { background: var(--hover); color: var(--serif); } }
  .btab-t.svelte-hvpqou { flex: 1; min-width: 0; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
  .btab-x.svelte-hvpqou { width: 20px; height: 20px; border-radius: 6px; display: flex; align-items: center; justify-content: center; color: var(--muted); flex: none; }
  .btab-x.svelte-hvpqou svg:where(.svelte-hvpqou) { width: 11px; height: 11px; }
  .btab-x.svelte-hvpqou:active { background: var(--hover-strong); }
  @media (hover: hover) {
    .btab.svelte-hvpqou:not(.on):not(:hover) .btab-x:where(.svelte-hvpqou) { opacity: 0; }
    .btab-x.svelte-hvpqou:hover { background: var(--hover-strong); color: var(--text); }
  }
  .btab-new.svelte-hvpqou { width: 28px; height: 28px; border-radius: 8px; display: flex; align-items: center; justify-content: center; color: var(--muted); flex: none; }
  .btab-new.svelte-hvpqou svg:where(.svelte-hvpqou) { width: 14px; height: 14px; }
  .btab-new.svelte-hvpqou:active { background: var(--hover); }
  @media (hover: hover) { .btab-new.svelte-hvpqou:hover { background: var(--hover); color: var(--text); } }

  .bw-nav.svelte-hvpqou { flex: none; display: flex; align-items: center; gap: 4px; padding: 6px 8px; }
  .nbtn.svelte-hvpqou { width: 30px; height: 30px; border-radius: 8px; display: flex; align-items: center; justify-content: center; color: var(--serif); flex: none; }
  .nbtn.svelte-hvpqou:disabled { opacity: .35; }
  .nbtn.svelte-hvpqou svg:where(.svelte-hvpqou) { width: 16px; height: 16px; }
  .nbtn.svelte-hvpqou:not(:disabled):active { background: var(--hover); }
  @media (hover: hover) { .nbtn.svelte-hvpqou:not(:disabled):hover { background: var(--hover); color: var(--text); } }

  .urlbar.svelte-hvpqou { flex: 1; min-width: 0; display: flex; align-items: center; gap: 7px; height: 32px; padding: 0 11px; border-radius: 16px; background: var(--hover); }
  .urlbar.svelte-hvpqou .dot:where(.svelte-hvpqou) { width: 6px; height: 6px; border-radius: 50%; background: var(--muted); flex: none; transition: background .2s ease; }
  .urlbar.live.svelte-hvpqou .dot:where(.svelte-hvpqou) { background: var(--ok); box-shadow: 0 0 6px color-mix(in srgb, var(--ok) 60%, transparent); }
  .urlbar.svelte-hvpqou input:where(.svelte-hvpqou) { flex: 1; min-width: 0; background: none; border: none; outline: none; color: var(--text); font-size: 12.5px; }
  .urlbar.svelte-hvpqou input:where(.svelte-hvpqou)::placeholder { color: var(--muted); }

  /* —— 只读直播（聊天快照访客）：地址只展示不可编辑，标签条不可点，画面不吃指针 —— */
  .urltext.svelte-hvpqou { flex: 1; min-width: 0; overflow: hidden; white-space: nowrap; text-overflow: ellipsis;
    color: var(--muted); font-size: 12.5px; }
  .ro-tag.svelte-hvpqou { flex: none; margin-left: 6px; padding: 3px 8px; border-radius: 8px; background: var(--hover);
    color: var(--muted); font-size: 11.5px; }
  .btab.ro.svelte-hvpqou { cursor: default; padding-right: 10px; }
  .cwrap.ro.svelte-hvpqou canvas:where(.svelte-hvpqou) { pointer-events: none; }

  .devs.svelte-hvpqou { flex: none; display: flex; align-items: center; gap: 2px; margin-left: 2px; }
  .dbtn.svelte-hvpqou { width: 28px; height: 28px; border-radius: 7px; display: flex; align-items: center; justify-content: center; color: var(--muted); }
  .dbtn.svelte-hvpqou svg:where(.svelte-hvpqou) { width: 15px; height: 15px; }
  .dbtn.svelte-hvpqou:disabled { opacity: .35; }
  .dbtn.svelte-hvpqou:not(:disabled):active { background: var(--hover); }
  @media (hover: hover) { .dbtn.svelte-hvpqou:not(:disabled):hover { background: var(--hover); color: var(--text); } }
  .dbtn.on.svelte-hvpqou { color: var(--coral); background: color-mix(in srgb, var(--coral) 12%, transparent); }
  .dbtn.off.svelte-hvpqou:not(:disabled):hover { color: var(--crit); }

  .bw-hint.svelte-hvpqou { flex: none; color: var(--crit); font-size: 12px; padding: 0 14px 4px; }

  .bw-stage.svelte-hvpqou { flex: 1; min-height: 0; position: relative; display: flex; align-items: center; justify-content: center; outline: none; overflow: hidden; margin: 0 6px 6px; border-radius: 10px; background: color-mix(in srgb, var(--bg) 62%, black 10%); }
  html[data-theme="light"] .bw-stage.svelte-hvpqou { background: color-mix(in srgb, var(--bg) 80%, black 5%); }

  .bw-empty.svelte-hvpqou { display: flex; flex-direction: column; align-items: center; gap: 6px; color: var(--muted); padding: 24px; text-align: center; }
  .bw-empty.svelte-hvpqou svg:where(.svelte-hvpqou) { width: 40px; height: 40px; margin-bottom: 8px; opacity: .8; }
  .bw-t1.svelte-hvpqou { font-size: 15.5px; font-weight: 600; color: var(--text); }
  .bw-t2.svelte-hvpqou { font-size: 12.5px; }

  .cwrap.svelte-hvpqou { position: relative; flex: none; }
  /* 原生模式：画布只是被真视图盖住的占位，连同竖屏手机框一起藏起来——
     缩放摆位后视图四周会露出留白，别让空画布/空边框从缝里探出头。 */
  .cwrap.nat.svelte-hvpqou { visibility: hidden; }
  .cwrap.portrait.svelte-hvpqou { border-radius: 16px; overflow: hidden; border: 1px solid var(--divider); box-shadow: 0 8px 32px rgba(0,0,0,.35); }
  canvas.svelte-hvpqou { width: 100%; height: 100%; display: block; cursor: crosshair; touch-action: none; }
  .aptr.svelte-hvpqou { position: absolute; width: 18px; height: 18px; margin: -2px 0 0 -2px; pointer-events: none; z-index: 3; transition: left .12s ease, top .12s ease; }
  .aptr.svelte-hvpqou svg:where(.svelte-hvpqou) { width: 100%; height: 100%; filter: drop-shadow(0 1px 2px rgba(0,0,0,.5)); }
  .ripple.svelte-hvpqou { position: absolute; width: 34px; height: 34px; margin: -17px 0 0 -17px; border: 2px solid var(--coral); border-radius: 50%; pointer-events: none; z-index: 2; animation: svelte-hvpqou-bwRipple .5s ease-out forwards; }
  @keyframes svelte-hvpqou-bwRipple { from { transform: scale(.25); opacity: .9; } to { transform: scale(1); opacity: 0; } }
  .vpsize.svelte-hvpqou { position: absolute; right: 6px; bottom: 6px; font-size: 10.5px; color: #fff; background: rgba(0,0,0,.45); padding: 1px 6px; border-radius: 6px; pointer-events: none; white-space: nowrap; }
  .vpsize.warn.svelte-hvpqou { background: rgba(196, 58, 40, .78); }

  /* iOS 27 token（实测官方 UI Kit）。独立手机页固定浅色 grouped；内嵌进工作台（.embedded）
     时跟随全站明暗（见下方暗色块）。所有颜色只走这些令牌，别再就地写死。 */
  .ws-root.svelte-1dsu3ml {
    --blue: #0088ff; --red: #ff383c; --green: #34c759; --blue-soft: rgba(0,136,255,.1);
    --label: #000; --label2: rgba(60,60,67,.6); --label3: rgba(60,60,67,.3); --ink: #1a1a1a; --sub: #8a8a8e;
    --fill: rgba(120,120,128,.16); --fill3: rgba(116,116,128,.08); --field: rgba(118,118,128,.12); --soft: #f0f0f2; --soft2: #e6e6ea;
    --bg: #f2f2f7; --card: #fff; --sep: rgba(60,60,67,.12); --press: #ededed; --hair: #e6e6e6;
    --glass: rgba(248,248,248,.55); --glass-strong: rgba(247,247,247,.82); --menu: rgba(247,247,247,.86); --toast: rgba(247,247,247,.88);
    --ring: rgba(190,190,190,.5); --hi: rgba(255,255,255,.95); --hi2: rgba(255,255,255,.6); --edge: rgba(105,105,105,.22);
    --sheet: rgba(250,250,250,.96); --paper: #fff; --dot: #d5d5da; --chev: #c4c4c8; --ph: #b0b0b4;
    position: fixed; inset: 0; z-index: 40; background: var(--bg);
    font-family: -apple-system, 'SF Pro Text', BlinkMacSystemFont, 'PingFang SC', 'HarmonyOS Sans SC', 'Microsoft YaHei UI', sans-serif;
    color: var(--label); -webkit-font-smoothing: antialiased; user-select: none; -webkit-touch-callout: none; overflow: hidden;
  }
  .ws-root.svelte-1dsu3ml svg { display: block; }
  /* 内嵌进工作台且全站为暗色：iOS 暗色 grouped，底色对齐 Claude 的 #1f1f1e（data-theme 缺省即暗）。 */
  html:not([data-theme='light']) .ws-root.embedded.svelte-1dsu3ml:not(.th-light), .ws-root.embedded.th-dark.svelte-1dsu3ml {
    --blue: #4f9dff; --red: #ff6961; --green: #30d158; --blue-soft: rgba(79,157,255,.18);
    --label: #f2f2f0; --label2: rgba(235,235,245,.6); --label3: rgba(235,235,245,.3); --ink: #f2f2f0; --sub: #98989d;
    --fill: rgba(120,120,128,.36); --fill3: rgba(118,118,128,.2); --field: rgba(118,118,128,.24); --soft: rgba(118,118,128,.2); --soft2: rgba(118,118,128,.3);
    --bg: #1f1f1e; --card: #2a2a29; --sep: rgba(255,255,255,.1); --press: #3a3a3c; --hair: rgba(255,255,255,.1);
    --glass: rgba(44,44,42,.62); --glass-strong: rgba(40,40,38,.88); --menu: rgba(44,44,42,.9); --toast: rgba(44,44,42,.9);
    --ring: rgba(255,255,255,.12); --hi: rgba(255,255,255,.12); --hi2: rgba(255,255,255,.06); --edge: rgba(0,0,0,.35);
    --sheet: rgba(40,40,38,.97); --paper: #2a2a29; --dot: #48484a; --chev: #636366; --ph: #6e6e73;
    color-scheme: dark;
  }

  /* 拖拽上传：整块虚线提示（pointer-events:none 让 dragover/drop 穿透到下面的文件夹格子，
     否则遮罩一盖住，「拖到某个文件夹上」就永远命中不了）+ 目标文件夹格子高亮 */
  .dropveil.svelte-1dsu3ml { position: absolute; inset: 8px; z-index: 60; pointer-events: none;
    display: flex; align-items: center; justify-content: center;
    border: 2px dashed var(--blue); border-radius: 18px; background: var(--blue-soft); }
  /* 文字压在文件夹格子上会糊成一片——收进一枚实底药丸，落在任何内容上都读得清 */
  .dropveil-in.svelte-1dsu3ml { display: flex; align-items: center; gap: 9px; padding: 11px 18px; border-radius: 999px;
    background: var(--paper); box-shadow: 0 6px 24px rgba(0,0,0,.16); color: var(--blue); font-size: 14px; font-weight: 500;
    max-width: 82%; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
  .dropveil-in.svelte-1dsu3ml svg:where(.svelte-1dsu3ml) { width: 20px; height: 20px; flex: none; }
  .folder.dropin.svelte-1dsu3ml { background: var(--blue-soft); box-shadow: inset 0 0 0 2px var(--blue); border-radius: 14px; }

  /* —— 全域拖拽的三处视觉：被拎走的原位 / 悬停在某一级面包屑 / 悬停在当前目录空白处 ——
     幽灵卡片由 DragLayer 画（全局唯一一层），这里只负责「源」和「落点」的状态。 */
  .dnd-lift.svelte-1dsu3ml { opacity: .34; transition: opacity .12s ease; }
  /* 按住还没到门槛：整个长按期间慢慢压下去，松手/挪开即弹回（iOS 拿起前的那一下「压」） */
  .dnd-arm.svelte-1dsu3ml, .folder.dnd-arm.svelte-1dsu3ml:active { transform: scale(.955); transition: transform .42s cubic-bezier(.25, .7, .3, 1); }
  .frow.dnd-arm.svelte-1dsu3ml { background: var(--fill3); }
  /* 弹簧倒计时：格子轻轻起伏两下，配合幽灵上的进度环，说明「再停一会儿就进去了」 */
  .folder.dnd-spring.svelte-1dsu3ml { animation: svelte-1dsu3ml-dndSpringPulse .65s ease-in-out; }
  @keyframes svelte-1dsu3ml-dndSpringPulse { 35% { transform: scale(1.07); } 70% { transform: scale(1.02); } 100% { transform: scale(1.07); } }
  .pb-seg.dnd-on.svelte-1dsu3ml { background: var(--blue-soft); box-shadow: inset 0 0 0 1.5px var(--blue); border-radius: 8px; color: var(--blue); }
  .scroll.dnd-here.svelte-1dsu3ml { box-shadow: inset 0 0 0 2px rgba(0,136,255,.45); border-radius: 12px; }

  /* 玻璃配方（kit Materials Small UI） */
  .glass.svelte-1dsu3ml { background: var(--glass); backdrop-filter: blur(5px) saturate(1.9); -webkit-backdrop-filter: blur(5px) saturate(1.9);
    box-shadow: 0 0 0 .5px var(--ring), 0 10px 22px rgba(0,0,0,.1), 0 2px 5px rgba(0,0,0,.05),
      inset 0 1.4px 1px -.6px var(--hi), inset 0 -1.2px 1px -.6px var(--hi2),
      inset 1.6px 0 1.6px -1.2px var(--edge), inset -1.6px 0 1.6px -1.2px var(--edge); }
  .glass-strong.svelte-1dsu3ml { background: var(--glass-strong); backdrop-filter: blur(30px) saturate(1.9); -webkit-backdrop-filter: blur(30px) saturate(1.9);
    box-shadow: 0 0 0 .5px var(--ring), 0 18px 46px rgba(0,0,0,.25), inset 0 1.4px 1px -.6px var(--hi); }

  /* 顶部玻璃钮 */
  .topbtns.svelte-1dsu3ml { position: absolute; top: calc(var(--sat,0px) + 10px); left: 14px; right: 14px; z-index: 44; display: flex; align-items: center; gap: 12px; pointer-events: none; }
  .gbtn.svelte-1dsu3ml { pointer-events: auto; position: relative; width: 44px; height: 44px; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: var(--label);
    background: var(--glass); backdrop-filter: blur(4px) saturate(1.9); -webkit-backdrop-filter: blur(4px) saturate(1.9);
    box-shadow: 0 0 0 .5px var(--ring), 0 8px 15px rgba(0,0,0,.05), inset 0 1.2px 1px -.5px var(--hi), inset 0 -1px 1px -.5px var(--hi2);
    transition: transform .18s cubic-bezier(.32,.72,0,1); }
  .gbtn.svelte-1dsu3ml:active { transform: scale(.92); }
  .gbtn.svelte-1dsu3ml svg:where(.svelte-1dsu3ml) { width: 21px; height: 21px; }
  .gbtn.ring.svelte-1dsu3ml .ringsvg:where(.svelte-1dsu3ml) { position: absolute; inset: 0; width: 44px; height: 44px; transform: rotate(-90deg); }
  .gbtn.ring.svelte-1dsu3ml .track:where(.svelte-1dsu3ml) { fill: none; stroke: rgba(120,120,128,.22); stroke-width: 2.6; }
  .gbtn.ring.svelte-1dsu3ml .prog:where(.svelte-1dsu3ml) { fill: none; stroke: var(--blue); stroke-width: 2.6; stroke-linecap: round; transition: stroke-dashoffset .5s linear; }
  .gbtn.ring.alldone.svelte-1dsu3ml .prog:where(.svelte-1dsu3ml) { stroke: var(--green); }
  .gbtn.ring.svelte-1dsu3ml .arrows:where(.svelte-1dsu3ml) { width: 16px; height: 16px; }
  .gbtn.ring.svelte-1dsu3ml .badge:where(.svelte-1dsu3ml) { position: absolute; top: -2px; right: -2px; min-width: 17px; height: 17px; border-radius: 9px; background: var(--blue); color: #fff; font-size: 11px; font-weight: 600; line-height: 17px; text-align: center; padding: 0 4px; box-shadow: 0 0 0 2px var(--bg); }

  /* 添加菜单 */
  .add-scrim.svelte-1dsu3ml { position: fixed; inset: 0; z-index: 45; }
  .addmenu.svelte-1dsu3ml { position: absolute; top: calc(var(--sat,0px) + 58px); right: 14px; z-index: 46; width: 200px; border-radius: 18px; padding: 6px;
    background: var(--menu); backdrop-filter: blur(30px) saturate(1.9); -webkit-backdrop-filter: blur(30px) saturate(1.9);
    box-shadow: 0 0 0 .5px var(--ring), 0 14px 40px rgba(0,0,0,.22); animation: svelte-1dsu3ml-pop .2s cubic-bezier(.32,1.2,.4,1); transform-origin: top right; }
  @keyframes svelte-1dsu3ml-pop { from { opacity: 0; transform: scale(.85); } to { opacity: 1; transform: none; } }

  /* 滚动内容 */
  /* container-type 挂在滚动区（容器查询只作用于【后代】，不能查自己）：
     本页既跑整页也内嵌在工作台侧栏里，格子分列必须看【容器】宽而不是视口宽——
     否则侧栏 300px 时会按 1280px 视口铺成 5 列。inline-size 只建立宽度轴容器，不影响滚动。 */
  .scroll.svelte-1dsu3ml { position: absolute; inset: 0; overflow-y: auto; overflow-x: hidden; padding: calc(var(--sat,0px) + 66px) 0 calc(var(--sab,0px) + 100px); scrollbar-width: none; touch-action: pan-y;
    container-type: inline-size; }
  .scroll.svelte-1dsu3ml::-webkit-scrollbar { display: none; }
  /* 选择器底栏比玻璃枕高：内容区留够，别让最后一行文件夹钻到栏底下（拖不着） */
  .ws-root.wpick.svelte-1dsu3ml .scroll:where(.svelte-1dsu3ml) { padding-bottom: calc(var(--sab,0px) + 128px); }
  /* 紧凑面包屑条（取代大标题） */
  .pathbar.svelte-1dsu3ml { display: flex; align-items: center; flex-wrap: wrap; gap: 5px; padding: 0 18px 8px; min-height: 26px; }
  .pb-seg.svelte-1dsu3ml { background: none; border: none; padding: 0; font-size: 17px; font-weight: 600; letter-spacing: -.02em; color: var(--blue); }
  .pb-seg.cur.svelte-1dsu3ml { color: var(--label); }

  /* —— picker（新建项目选择器）形态 —— */
  /* 路径条＝「当前这个文件夹」本身的拖源：给它一块可按的底 + 左侧抓握点，让「这条也能拖」
     一眼看得出来。touch-action:none 是必须的——起拖后要靠 preventDefault 拦滚动，
     而 pan-y 的容器会先把这根手指判给滚动。 */
  .pathbar.wp-path.svelte-1dsu3ml { margin: 0 12px 8px; padding: 8px 12px; border-radius: 13px; background: var(--card);
    box-shadow: 0 1px 2px rgba(0,0,0,.05); touch-action: none; cursor: grab; }
  .pathbar.wp-path.svelte-1dsu3ml:active { cursor: grabbing; }
  .wp-grip.svelte-1dsu3ml { width: 16px; height: 16px; color: var(--label3); flex: none; }
  .wp-grip.svelte-1dsu3ml svg:where(.svelte-1dsu3ml) { width: 100%; height: 100%; }
  /* 正在被拖走的那一份：原位淡下去，注意力跟着幽灵走 */
  .wp-lift.svelte-1dsu3ml { opacity: .34; }
  /* 选择器里的文件只是「认路用」的参照物，不可点开——去掉一切可交互暗示 */
  .wp-flat.svelte-1dsu3ml { opacity: .55; cursor: default; }
  .wp-flat.svelte-1dsu3ml:active { background: none; }
  /* 文件夹格子在 picker 下要交出这根手指：起拖后靠 preventDefault 拦滚动，
     而 touch-action 仍是 pan-y 的话浏览器已经把它判给滚动了，拦不住。 */
  .ws-root.wpick.svelte-1dsu3ml .folder:where(.svelte-1dsu3ml) { touch-action: none; }

  .wpdock.svelte-1dsu3ml { position: absolute; left: 0; right: 0; bottom: 0; z-index: 34;
    padding: 12px 14px calc(var(--sab,0px) + 14px);
    background: linear-gradient(to top, var(--bg) 62%, transparent); }
  .wpdock-in.svelte-1dsu3ml { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px;
    min-height: 74px; border-radius: 18px; border: 2px dashed rgba(0,136,255,.42); background: var(--blue-soft);
    color: var(--blue); transition: background .16s ease, border-color .16s ease, transform .16s cubic-bezier(.22,1,.36,1); }
  .wpdock.armed.svelte-1dsu3ml .wpdock-in:where(.svelte-1dsu3ml) { border-color: rgba(0,136,255,.75); background: var(--blue-soft); }
  /* 命中：实心蓝、微微放大——「松手就是它」这件事必须在指尖底下无歧义 */
  .wpdock.over.svelte-1dsu3ml .wpdock-in:where(.svelte-1dsu3ml) { border-style: solid; border-color: var(--blue); background: var(--blue); color: #fff; transform: scale(1.02); }
  .wpd-ic.svelte-1dsu3ml { width: 24px; height: 24px; }
  .wpd-ic.svelte-1dsu3ml svg:where(.svelte-1dsu3ml) { width: 100%; height: 100%; }
  .wpd-lb.svelte-1dsu3ml { font-size: 15px; font-weight: 640; letter-spacing: -.01em; }
  .wpd-sub.svelte-1dsu3ml { font-size: 12px; opacity: .62; }

  .wpghost.svelte-1dsu3ml { position: absolute; z-index: 70; pointer-events: none; transform: translate(-50%, -50%) scale(1.04);
    display: flex; align-items: center; gap: 8px; max-width: 62%;
    padding: 8px 14px 8px 10px; border-radius: 15px; background: var(--card);
    box-shadow: 0 12px 30px rgba(0,0,0,.22), 0 2px 6px rgba(0,0,0,.10); }
  .wpghost.over.svelte-1dsu3ml { background: var(--blue); color: #fff; }
  .wpg-ic.svelte-1dsu3ml { width: 26px; height: 26px; object-fit: contain; flex: none; }
  .wpg-nm.svelte-1dsu3ml { font-size: 14px; font-weight: 620; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .pb-share.svelte-1dsu3ml { width: 14px; height: 14px; margin-right: 5px; vertical-align: -1.5px; }
  .pb-sep.svelte-1dsu3ml { color: var(--label3); font-size: 15px; }
  .sel-count.svelte-1dsu3ml { font-size: 17px; font-weight: 600; letter-spacing: -.02em; color: var(--label); }

  .sechead.svelte-1dsu3ml { padding: 22px 16px 8px; }
  .sechead.svelte-1dsu3ml h2:where(.svelte-1dsu3ml) { font-size: 20px; line-height: 25px; font-weight: 600; letter-spacing: -.01em; }
  .desktop-locations.svelte-1dsu3ml { display:flex; gap:8px; overflow-x:auto; padding:0 16px 4px; scrollbar-width:none; }
  .desktop-locations.svelte-1dsu3ml::-webkit-scrollbar { display:none; }
  .desktop-location.svelte-1dsu3ml { flex:0 0 auto; min-height:38px; max-width:220px; display:flex; align-items:center; gap:7px; border:1px solid rgba(0,122,255,.16); border-radius:12px; padding:7px 10px; background:var(--card); color:var(--label); font:600 13px/1.2 inherit; box-shadow:0 1px 2px rgba(0,0,0,.04); cursor:pointer; }
  .desktop-location.on.svelte-1dsu3ml { color:var(--blue); border-color:rgba(0,122,255,.42); background:var(--blue-soft); }
  .desktop-location.add.svelte-1dsu3ml { color:var(--blue); }
  .dl-icon.svelte-1dsu3ml { font-size:16px; }
  .dl-remove.svelte-1dsu3ml { display:grid; place-items:center; width:18px; height:18px; margin-left:2px; padding:0; border:0; border-radius:50%; background:var(--fill); color:var(--label2); font-size:15px; line-height:1; }

  /* 最近：图标与文字都左对齐（同左缘），卡片收窄、间距收紧 */
  .recents.svelte-1dsu3ml { display: flex; gap: 12px; overflow-x: auto; padding: 4px 16px 8px; scrollbar-width: none; }
  .recents.svelte-1dsu3ml::-webkit-scrollbar { display: none; }
  .rcard.svelte-1dsu3ml { flex: 0 0 78px; min-width: 0; background: none; border: none; padding: 0; text-align: left; cursor: pointer; }
  .rcard.svelte-1dsu3ml .thumb:where(.svelte-1dsu3ml) { position: relative; width: 78px; height: 66px; border-radius: 14px; overflow: hidden; display: flex; align-items: center; justify-content: flex-start; }
  .rcard.svelte-1dsu3ml .thumb.img:where(.svelte-1dsu3ml) { box-shadow: 0 0 0 .5px rgba(60,60,67,.12), 0 2px 8px rgba(0,0,0,.06); background-size: cover; background-position: center; }
  .rcard.svelte-1dsu3ml .thumb:where(.svelte-1dsu3ml) .ic:where(.svelte-1dsu3ml) { display: flex; }
  .rcard.svelte-1dsu3ml .thumb:where(.svelte-1dsu3ml) .ic:where(.svelte-1dsu3ml) svg { width: 54px; height: 64px; filter: drop-shadow(0 2px 6px rgba(0,0,0,.14)); }
  /* 系统类型图标：占位 SVG 的同一个左对齐槽位里 contain，最多放大到 48px。
     绝不能像媒体缩略图那样 absolute+cover 铺满整块 78×66——Windows 只给得出 32×32，
     铺满＝放大 2.44 倍再纵向裁掉 12px（纸的上下沿和折角全被切没，还糊）。 */
  .rcard.svelte-1dsu3ml .thumb:where(.svelte-1dsu3ml) .ricon:where(.svelte-1dsu3ml) { width: 54px; height: 100%; padding: 9px 3px; box-sizing: border-box; object-fit: contain; }
  /* 最近卡片缩略图：叠在渐变底/类型图标上层，加载完成才淡入（加载前它们就是占位缓冲）。
     .ok 由 onload 运行时挂上，必须 :global 否则被 Svelte 当未使用选择器剪掉。 */
  .rthumb.svelte-1dsu3ml { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0; transition: opacity .3s ease; }
  .rthumb.svelte-1dsu3ml.ok { opacity: 1; }
  .rcard.svelte-1dsu3ml .nm:where(.svelte-1dsu3ml) { display: block; max-width: 78px; margin-top: 6px; font-size: 12px; line-height: 16px; font-weight: 500; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .rcard.svelte-1dsu3ml .mt:where(.svelte-1dsu3ml) { display: block; font-size: 11px; line-height: 13px; color: var(--label2); }

  /* 文件夹格子按【容器】宽度分列（容器＝上面的 .scroll）：侧栏 300px 仍是 3 列，
     整页跑在折叠屏展开态才铺到 4–5 列。 */
  .foldergrid.svelte-1dsu3ml { display: grid; grid-template-columns: repeat(3, 1fr); row-gap: 18px; padding: 6px 12px 0; }
  @container (min-width: 620px) { .foldergrid.svelte-1dsu3ml { grid-template-columns: repeat(4, 1fr); } }
  @container (min-width: 900px) { .foldergrid.svelte-1dsu3ml { grid-template-columns: repeat(5, 1fr); } }
  .folder.svelte-1dsu3ml { position: relative; min-width: 0; display: flex; flex-direction: column; align-items: center; gap: 6px; padding: 8px 4px 6px; border-radius: 18px; background: none; border: none; cursor: pointer;
    transition: transform .22s cubic-bezier(.32,.72,0,1), background .2s; }
  .folder.svelte-1dsu3ml:active { transform: scale(.94); }
  .folder.sel.svelte-1dsu3ml { background: var(--blue-soft); }
  .folder.svelte-1dsu3ml .ficon:where(.svelte-1dsu3ml) { width: 84px; height: 74px; flex: none; object-fit: contain; filter: drop-shadow(0 4px 7px rgba(40,120,200,.26)); }
  .folder.svelte-1dsu3ml .nm:where(.svelte-1dsu3ml) { width: 100%; font-size: 13px; line-height: 18px; font-weight: 500; text-align: center; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

  /* 多选圈：未选中灰空心、选中蓝底白勾（两态由 .on 切换） */
  .selc.svelte-1dsu3ml { display: flex; align-items: center; justify-content: center; border: 1.8px solid var(--label3); background: transparent; transition: background .15s, border-color .15s; }
  .selc.on.svelte-1dsu3ml { background: var(--blue); border-color: var(--blue); }
  .selc.svelte-1dsu3ml svg { width: 13px; height: 13px; }
  .folder.svelte-1dsu3ml .selc:where(.svelte-1dsu3ml) { position: absolute; top: 6px; left: 14px; width: 22px; height: 22px; border-radius: 50%; box-shadow: 0 0 0 2px var(--paper); }
  .folder.svelte-1dsu3ml .selc:where(.svelte-1dsu3ml):not(.on) { background: var(--paper); }

  .filecard.svelte-1dsu3ml { margin: 6px 16px 0; background: var(--card); border-radius: 26px; overflow: hidden; box-shadow: 0 0 0 .5px rgba(60,60,67,.06); }
  .frow.svelte-1dsu3ml { position: relative; display: flex; align-items: center; gap: 12px; min-height: 56px; padding: 0 6px 0 12px; cursor: pointer; transition: background .15s; }
  .frow.svelte-1dsu3ml:active { background: var(--fill3); }
  .frow.sel.svelte-1dsu3ml { background: var(--blue-soft); }
  .frow.svelte-1dsu3ml + .frow:where(.svelte-1dsu3ml)::before { content: ''; position: absolute; top: 0; left: 60px; right: 0; height: .5px; background: var(--sep); }
  .frow.svelte-1dsu3ml .selc:where(.svelte-1dsu3ml) { flex: 0 0 22px; width: 22px; height: 22px; border-radius: 50%; }
  .ficon-sm.svelte-1dsu3ml { position: relative; flex: 0 0 34px; width: 34px; height: 34px; display: flex; align-items: center; justify-content: center; }
  .ficon-sm.svelte-1dsu3ml svg { width: 28px; height: 35px; filter: drop-shadow(0 1px 2px rgba(0,0,0,.06)); }
  /* 文件行缩略图：盖在类型图标上层，加载完成才淡入；失败保持透明露出图标 */
  .fthumb.svelte-1dsu3ml { position: absolute; inset: 0; width: 34px; height: 34px; object-fit: cover; border-radius: 7px;
    box-shadow: 0 0 0 .5px var(--sep); background: var(--paper); opacity: 0; transition: opacity .25s ease; }
  .fthumb.svelte-1dsu3ml.ok { opacity: 1; }
  /* 视频播放角标：跟随各自缩略图淡入（缩略没出来时不遮类型图标） */
  .fplay.svelte-1dsu3ml, .rplay.svelte-1dsu3ml { position: absolute; inset: 0; margin: auto; display: flex; align-items: center; justify-content: center;
    background: rgba(20,20,24,.45); border-radius: 50%; opacity: 0; transition: opacity .25s ease; pointer-events: none;
    backdrop-filter: blur(2px); -webkit-backdrop-filter: blur(2px); }
  .fplay.svelte-1dsu3ml { width: 16px; height: 16px; }
  .rplay.svelte-1dsu3ml { width: 24px; height: 24px; }
  .fplay.svelte-1dsu3ml svg:where(.svelte-1dsu3ml), .rplay.svelte-1dsu3ml svg:where(.svelte-1dsu3ml) { width: 60%; height: 60%; fill: #fff; filter: none; margin-left: 6%; }
  .fthumb.svelte-1dsu3ml.ok + .fplay:where(.svelte-1dsu3ml), .rthumb.svelte-1dsu3ml.ok + .rplay:where(.svelte-1dsu3ml) { opacity: 1; }
  .frow.svelte-1dsu3ml .meta:where(.svelte-1dsu3ml) { flex: 1; min-width: 0; padding: 8px 0; }
  .frow.svelte-1dsu3ml .meta:where(.svelte-1dsu3ml) .nm:where(.svelte-1dsu3ml) { display: block; font-size: 16px; line-height: 21px; letter-spacing: -.01em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .frow.svelte-1dsu3ml .meta:where(.svelte-1dsu3ml) .fsub:where(.svelte-1dsu3ml) { display: block; font-size: 13px; line-height: 18px; color: var(--label2); }
  .frow.svelte-1dsu3ml .dots:where(.svelte-1dsu3ml) { flex: 0 0 40px; height: 40px; border: none; background: none; display: flex; align-items: center; justify-content: center; color: var(--label2); border-radius: 50%; }
  .frow.svelte-1dsu3ml .dots:where(.svelte-1dsu3ml):active { background: var(--fill); }
  .frow.svelte-1dsu3ml .dots:where(.svelte-1dsu3ml) svg:where(.svelte-1dsu3ml) { width: 19px; height: 19px; }

  .empty.svelte-1dsu3ml { padding: 60px 16px; text-align: center; color: var(--label2); font-size: 15px; }
  .empty.svelte-1dsu3ml .big:where(.svelte-1dsu3ml) { font-size: 44px; margin-bottom: 12px; opacity: .6; }

  /* 本地工作空间未授权引导 */
  .local-intro.svelte-1dsu3ml { padding: 56px 28px; text-align: center; display: flex; flex-direction: column; align-items: center; gap: 12px; }
  .li-icon.svelte-1dsu3ml { width: 88px; height: 74px; object-fit: contain; filter: drop-shadow(0 6px 11px rgba(40,120,200,.3)); }
  .local-intro.svelte-1dsu3ml h3:where(.svelte-1dsu3ml) { font-size: 22px; font-weight: 700; margin-top: 4px; }
  .local-intro.svelte-1dsu3ml p:where(.svelte-1dsu3ml) { font-size: 15px; line-height: 1.7; color: var(--label2); }
  .li-pick.svelte-1dsu3ml { margin-top: 10px; height: 50px; padding: 0 30px; border: none; border-radius: 25px; background: var(--blue); color: #fff; font: inherit; font-size: 17px; font-weight: 600; box-shadow: 0 6px 16px rgba(0,136,255,.35); }
  .li-pick.svelte-1dsu3ml:disabled { opacity: .6; }
  .li-pick.alt.svelte-1dsu3ml { margin-top: 8px; background: var(--field); color: var(--blue); box-shadow: none; }
  .li-hint.svelte-1dsu3ml { margin-top: 4px; font-size: 12px; line-height: 1.6; color: var(--label3); max-width: 280px; }

  /* —— 本地位置主页 —— */
  .loc-list.svelte-1dsu3ml { margin-top: 2px; }
  .loc-ic.svelte-1dsu3ml { flex: 0 0 34px; width: 34px; height: 34px; display: flex; align-items: center; justify-content: center; }
  .loc-ic.svelte-1dsu3ml svg { width: 30px; height: 30px; filter: drop-shadow(0 1px 2px rgba(0,0,0,.06)); }
  .loc-add.svelte-1dsu3ml { margin: 16px 16px 0; display: flex; align-items: center; justify-content: center; gap: 8px; width: calc(100% - 32px);
    height: 50px; border: none; border-radius: 16px; background: var(--blue-soft); color: var(--blue);
    font: inherit; font-size: 16px; font-weight: 600; }
  .loc-add.svelte-1dsu3ml svg:where(.svelte-1dsu3ml) { width: 20px; height: 20px; }
  .loc-add.svelte-1dsu3ml:active { transform: scale(.98); }
  .loc-add.svelte-1dsu3ml:disabled { opacity: .55; }
  .loc-note.svelte-1dsu3ml { margin: 14px 22px 0; font-size: 12px; line-height: 1.7; color: var(--label3); }

  /* 底部玻璃枕 */
  .bottomwrap.svelte-1dsu3ml { position: absolute; left: 0; right: 0; bottom: calc(var(--sab,0px) + 16px); height: 62px; z-index: 30; }
  .bottombar.svelte-1dsu3ml { position: absolute; inset: 0; display: flex; align-items: center; justify-content: space-between; padding: 0 21px;
    transition: opacity .24s, transform .3s cubic-bezier(.32,.72,0,1); }
  .tabpill.svelte-1dsu3ml { position: relative; height: 62px; border-radius: 31px; display: flex; align-items: center; padding: 4px; }
  .tabpill.svelte-1dsu3ml .capsule:where(.svelte-1dsu3ml) { position: absolute; top: 4px; left: 4px; width: 108px; height: 54px; border-radius: 27px; background: var(--fill); transition: transform .34s cubic-bezier(.3,1.25,.4,1); }
  .tab.svelte-1dsu3ml { position: relative; width: 108px; height: 54px; border: none; background: none; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; color: var(--ink); border-radius: 27px; transition: color .22s; }
  .tab.svelte-1dsu3ml svg:where(.svelte-1dsu3ml) { width: 23px; height: 23px; }
  .tab.svelte-1dsu3ml .lb:where(.svelte-1dsu3ml) { font-size: 10px; font-weight: 600; letter-spacing: -.01em; }
  .tab.on.svelte-1dsu3ml { color: var(--blue); }
  .searchbtn.svelte-1dsu3ml { width: 62px; height: 62px; border-radius: 50%; border: none; display: flex; align-items: center; justify-content: center; color: var(--label); transition: transform .25s; }
  .searchbtn.svelte-1dsu3ml:active { transform: scale(.92); }
  .searchbtn.svelte-1dsu3ml svg:where(.svelte-1dsu3ml) { width: 23px; height: 23px; }

  .searchrow.svelte-1dsu3ml { position: absolute; inset: 0; display: flex; align-items: center; gap: 12px; padding: 0 28px; opacity: 0; pointer-events: none; transform: translateY(8px) scale(.96); transition: opacity .26s, transform .3s cubic-bezier(.32,.72,0,1); }
  .bottomwrap.searching.svelte-1dsu3ml .bottombar:where(.svelte-1dsu3ml) { opacity: 0; pointer-events: none; transform: translateY(4px) scale(.97); }
  .bottomwrap.searching.svelte-1dsu3ml .searchrow:where(.svelte-1dsu3ml) { opacity: 1; pointer-events: auto; transform: none; }
  .closebtn.svelte-1dsu3ml { flex: 0 0 48px; width: 48px; height: 48px; border-radius: 50%; border: none; display: flex; align-items: center; justify-content: center; color: var(--label); }
  .closebtn.svelte-1dsu3ml svg:where(.svelte-1dsu3ml) { width: 17px; height: 17px; }
  .searchfield.svelte-1dsu3ml { flex: 1; height: 48px; border-radius: 24px; display: flex; align-items: center; gap: 8px; padding: 0 16px; }
  .searchfield.svelte-1dsu3ml svg:where(.svelte-1dsu3ml) { flex: 0 0 18px; width: 18px; height: 18px; color: var(--sub); }
  .searchfield.svelte-1dsu3ml input:where(.svelte-1dsu3ml) { flex: 1; border: none; background: none; outline: none; height: 100%; font: inherit; font-size: 17px; letter-spacing: -.02em; color: var(--label); }
  .searchfield.svelte-1dsu3ml input:where(.svelte-1dsu3ml)::placeholder { color: var(--sub); }

  .selbar.svelte-1dsu3ml { position: absolute; left: 21px; right: 21px; top: 0; height: 62px; border-radius: 31px; display: flex; align-items: center; justify-content: space-around; padding: 0 10px; opacity: 0; pointer-events: none; transform: translateY(10px) scale(.96); transition: opacity .26s, transform .3s cubic-bezier(.32,.72,0,1); }
  .bottomwrap.selecting.svelte-1dsu3ml .selbar:where(.svelte-1dsu3ml) { opacity: 1; pointer-events: auto; transform: none; }
  .bottomwrap.selecting.svelte-1dsu3ml .bottombar:where(.svelte-1dsu3ml) { opacity: 0; pointer-events: none; }
  .selact.svelte-1dsu3ml { border: none; background: none; display: flex; flex-direction: column; align-items: center; gap: 2px; color: var(--blue); width: 80px; padding: 6px 0; border-radius: 14px; font: inherit; }
  .selact.svelte-1dsu3ml:disabled { color: var(--label3); }
  .selact.danger.svelte-1dsu3ml { color: var(--red); }
  .selact.danger.svelte-1dsu3ml:disabled { color: var(--label3); }
  .selact.done.svelte-1dsu3ml { color: var(--label); }
  .selact.svelte-1dsu3ml svg:where(.svelte-1dsu3ml) { width: 21px; height: 21px; }
  .selact.svelte-1dsu3ml span:where(.svelte-1dsu3ml) { font-size: 10px; font-weight: 600; }

  /* 长按菜单 */
  /* 长按菜单的背景层：只做「点外面关掉」的命中区，不做虚化（老板要求取消）——
     菜单本体自带毛玻璃+阴影，足以与内容分层；整片 blur 反而把文件列表糊掉、看不清
     自己长按的是哪一个。保持完全透明，不加任何底色。 */
  .menu-back.svelte-1dsu3ml { position: fixed; inset: 0; z-index: 70; background: transparent; }
  @keyframes svelte-1dsu3ml-fade { from { opacity: 0; } to { opacity: 1; } }
  .ctxmenu.svelte-1dsu3ml { position: fixed; z-index: 72; width: 250px; border-radius: 26px; padding: 6px;
    background: var(--glass-strong); backdrop-filter: blur(30px) saturate(1.9); -webkit-backdrop-filter: blur(30px) saturate(1.9);
    box-shadow: 0 0 0 .5px var(--ring), 0 18px 46px rgba(0,0,0,.25), inset 0 1.4px 1px -.6px var(--hi);
    transform-origin: var(--ox) var(--oy); animation: svelte-1dsu3ml-menupop .32s cubic-bezier(.34,1.22,.36,1); }
  @keyframes svelte-1dsu3ml-menupop { from { opacity: 0; transform: scale(.16); } to { opacity: 1; transform: none; } }
  .mi.svelte-1dsu3ml { display: flex; align-items: center; width: 100%; height: 42px; border-radius: 20px; padding: 0 10px 0 12px; border: none; background: none; color: var(--label); }
  .mi.svelte-1dsu3ml:active { background: var(--press); }
  .mi.svelte-1dsu3ml .micon:where(.svelte-1dsu3ml) { flex: 0 0 30px; display: flex; align-items: center; color: var(--label); }
  .mi.svelte-1dsu3ml .micon:where(.svelte-1dsu3ml) svg:where(.svelte-1dsu3ml) { width: 20px; height: 20px; }
  .mi.svelte-1dsu3ml .mlb:where(.svelte-1dsu3ml) { flex: 1; text-align: left; font-size: 17px; letter-spacing: -.02em; font-weight: 400; }
  .mi.destructive.svelte-1dsu3ml { color: var(--red); }
  .mi.ai.svelte-1dsu3ml .micon:where(.svelte-1dsu3ml) { color: #cb30e0; }
  .msep.svelte-1dsu3ml { height: 9px; margin: 0 -6px; position: relative; }
  .msep.svelte-1dsu3ml::after { content: ''; position: absolute; left: 0; right: 0; top: 4px; height: 1px; background: var(--hair); }

  /* 传输面板 */
  .tp-scrim.svelte-1dsu3ml { position: fixed; inset: 0; z-index: 54; background: none; }
  .transferpanel.svelte-1dsu3ml { position: absolute; top: calc(var(--sat,0px) + 62px); right: 14px; width: min(354px, calc(100vw - 28px)); border-radius: 26px; z-index: 56; overflow: hidden; animation: svelte-1dsu3ml-tppop .42s cubic-bezier(.34,1.18,.36,1); transform-origin: top right; }
  @keyframes svelte-1dsu3ml-tppop { from { opacity: 0; transform: scale(.2); } to { opacity: 1; transform: none; } }
  .tp-head.svelte-1dsu3ml { display: flex; align-items: center; justify-content: space-between; padding: 16px 18px 10px; }
  .tp-head.svelte-1dsu3ml h3:where(.svelte-1dsu3ml) { font-size: 17px; font-weight: 600; letter-spacing: -.02em; }
  .tp-head.svelte-1dsu3ml button:where(.svelte-1dsu3ml) { border: none; background: none; color: var(--blue); font: inherit; font-size: 15px; padding: 4px 2px; }
  .tp-empty.svelte-1dsu3ml { padding: 16px 18px 22px; color: var(--label2); font-size: 14px; text-align: center; }
  .task.svelte-1dsu3ml { display: flex; align-items: center; gap: 12px; padding: 9px 18px; }
  .task.svelte-1dsu3ml .ticon:where(.svelte-1dsu3ml) { flex: 0 0 34px; height: 34px; border-radius: 9px; display: flex; align-items: center; justify-content: center; }
  .task.svelte-1dsu3ml .ticon:where(.svelte-1dsu3ml) svg { width: 20px; height: 20px; }
  .task.svelte-1dsu3ml .tmeta:where(.svelte-1dsu3ml) { flex: 1; min-width: 0; }
  .task.svelte-1dsu3ml .r1:where(.svelte-1dsu3ml) { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; }
  .task.svelte-1dsu3ml .nm:where(.svelte-1dsu3ml) { font-size: 14px; font-weight: 500; letter-spacing: -.01em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .task.svelte-1dsu3ml .spd:where(.svelte-1dsu3ml) { font-size: 12px; color: var(--label2); font-variant-numeric: tabular-nums; white-space: nowrap; }
  .task.svelte-1dsu3ml .track:where(.svelte-1dsu3ml) { margin-top: 6px; height: 4px; border-radius: 2px; background: var(--fill); overflow: hidden; }
  .task.svelte-1dsu3ml .fillb:where(.svelte-1dsu3ml) { height: 100%; border-radius: 2px; background: var(--blue); transition: width .3s linear; }
  .task.svelte-1dsu3ml .fillb.up:where(.svelte-1dsu3ml) { background: var(--green); }
  .task.svelte-1dsu3ml .fillb.off:where(.svelte-1dsu3ml) { background: var(--label3); }
  .task.svelte-1dsu3ml .tp-x:where(.svelte-1dsu3ml) { flex: 0 0 26px; height: 26px; border: none; border-radius: 50%; background: var(--fill); color: var(--label2); display: flex; align-items: center; justify-content: center; padding: 0; }
  .task.svelte-1dsu3ml .tp-x:where(.svelte-1dsu3ml) svg:where(.svelte-1dsu3ml) { width: 11px; height: 11px; }
  .task.svelte-1dsu3ml .tp-x:where(.svelte-1dsu3ml):active { filter: brightness(.9); }

  /* 预览模态 */
  .pv-mask.svelte-1dsu3ml { position: fixed; inset: 0; z-index: 80; background: rgba(0,0,0,.45); display: flex; align-items: center; justify-content: center; padding: calc(var(--sat,0px) + 20px) 16px calc(var(--sab,0px) + 20px); animation: svelte-1dsu3ml-fade .2s; }
  .pv-card.svelte-1dsu3ml { width: 100%; max-width: 560px; max-height: 100%; border-radius: 24px; display: flex; flex-direction: column; overflow: hidden; }
  .pv-head.svelte-1dsu3ml { display: flex; align-items: center; gap: 10px; padding: 14px 12px 14px 18px; border-bottom: .5px solid var(--sep); }
  .pv-name.svelte-1dsu3ml { flex: 1; font-size: 16px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .pv-dl.svelte-1dsu3ml, .pv-x.svelte-1dsu3ml { width: 34px; height: 34px; border-radius: 50%; border: none; background: var(--fill); color: var(--label); display: flex; align-items: center; justify-content: center; }
  .pv-dl.svelte-1dsu3ml svg:where(.svelte-1dsu3ml) { width: 19px; height: 19px; } .pv-x.svelte-1dsu3ml svg:where(.svelte-1dsu3ml) { width: 15px; height: 15px; }
  .pv-body.svelte-1dsu3ml { flex: 1; min-height: 0; overflow: auto; display: flex; }
  .pv-body.svelte-1dsu3ml img:where(.svelte-1dsu3ml) { width: 100%; height: auto; object-fit: contain; }
  .pv-body.svelte-1dsu3ml pre:where(.svelte-1dsu3ml) { flex: 1; margin: 0; padding: 16px; font: 13px/1.6 ui-monospace, 'SF Mono', Menlo, monospace; white-space: pre-wrap; word-break: break-word; color: var(--ink); }
  .pv-loading.svelte-1dsu3ml { flex: 1; display: flex; align-items: center; justify-content: center; padding: 60px; color: var(--label2); }
  .pv-other.svelte-1dsu3ml { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 14px; padding: 50px 20px; }
  .pv-other.svelte-1dsu3ml .big:where(.svelte-1dsu3ml) { display: flex; }
  .pv-other.svelte-1dsu3ml .big:where(.svelte-1dsu3ml) svg { width: 62px; height: 76px; filter: drop-shadow(0 2px 6px rgba(0,0,0,.1)); }
  .pv-other.svelte-1dsu3ml p:where(.svelte-1dsu3ml) { color: var(--label2); font-size: 14px; }
  .pv-dlbtn.svelte-1dsu3ml, .dlg.svelte-1dsu3ml .go:where(.svelte-1dsu3ml) { background: var(--blue); color: #fff; border: none; border-radius: 22px; padding: 11px 26px; font: inherit; font-size: 16px; font-weight: 600; }

  /* 对话框 sheet */
  .dlg-mask.svelte-1dsu3ml { position: fixed; inset: 0; z-index: 82; background: rgba(0,0,0,.4); display: flex; align-items: center; justify-content: center; padding: 0 36px; animation: svelte-1dsu3ml-fade .2s; }
  .dlg.svelte-1dsu3ml { width: 100%; max-width: 320px; background: var(--sheet); backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); border-radius: 22px; padding: 22px 20px 16px; }
  .dlg.svelte-1dsu3ml h3:where(.svelte-1dsu3ml) { font-size: 18px; font-weight: 600; text-align: center; }
  .dlg.svelte-1dsu3ml input:where(.svelte-1dsu3ml) { width: 100%; height: 44px; margin: 16px 0; border: none; outline: none; border-radius: 12px; background: var(--field); color: var(--label); padding: 0 14px; font: inherit; font-size: 16px; }
  .dlg-btns.svelte-1dsu3ml { display: flex; gap: 10px; }
  .dlg-btns.svelte-1dsu3ml button:where(.svelte-1dsu3ml) { flex: 1; height: 46px; border-radius: 23px; border: none; font: inherit; font-size: 16px; }
  .dlg-btns.svelte-1dsu3ml .cancel:where(.svelte-1dsu3ml) { background: var(--field); color: var(--label); }
  .dlg-btns.svelte-1dsu3ml .go:where(.svelte-1dsu3ml) { font-weight: 600; }
  .dlg-btns.svelte-1dsu3ml .go:where(.svelte-1dsu3ml):disabled { opacity: .55; }

  /* 分享链接弹窗 */
  .sharedlg.svelte-1dsu3ml .sh-file:where(.svelte-1dsu3ml) { margin: 6px 0 10px; text-align: center; font-size: 13px; color: var(--label2); word-break: break-all; }
  .sh-row.svelte-1dsu3ml { display: flex; align-items: center; justify-content: space-between; padding: 9px 2px; }
  .sh-row.col.svelte-1dsu3ml { flex-direction: column; align-items: stretch; gap: 9px; margin-bottom: 14px; }
  .sh-lb.svelte-1dsu3ml { font-size: 15px; color: var(--label); }
  .sw.svelte-1dsu3ml { position: relative; width: 51px; height: 31px; border-radius: 16px; border: none; padding: 0; flex: none; background: rgba(120,120,128,.24); transition: background .2s; }
  .sw.on.svelte-1dsu3ml { background: var(--green); }
  .sw.svelte-1dsu3ml .knob:where(.svelte-1dsu3ml) { position: absolute; top: 2px; left: 2px; width: 27px; height: 27px; border-radius: 50%; background: #fff; box-shadow: 0 2px 6px rgba(0,0,0,.22); transition: transform .2s; }
  .sw.on.svelte-1dsu3ml .knob:where(.svelte-1dsu3ml) { transform: translateX(20px); }
  .sharedlg.svelte-1dsu3ml input.sh-pw:where(.svelte-1dsu3ml) { margin: 4px 0 8px; }
  .sh-ttl.svelte-1dsu3ml { display: flex; gap: 6px; }
  .sh-ttl.svelte-1dsu3ml button:where(.svelte-1dsu3ml) { flex: 1; height: 34px; border: none; border-radius: 10px; background: var(--field); font: inherit; font-size: 13px; color: var(--label); }
  .sh-ttl.svelte-1dsu3ml button.on:where(.svelte-1dsu3ml) { background: var(--blue); color: #fff; font-weight: 600; }
  .sh-url.svelte-1dsu3ml { display: block; width: 100%; margin: 4px 0 10px; padding: 12px 13px; border: none; border-radius: 12px; background: var(--field); font: inherit; font-size: 13px; color: var(--blue); word-break: break-all; text-align: left; line-height: 1.5; }
  .sh-meta.svelte-1dsu3ml { margin: 0 0 14px; text-align: center; font-size: 12.5px; color: var(--label2); line-height: 1.7; }
  .sh-meta.svelte-1dsu3ml b:where(.svelte-1dsu3ml) { color: var(--label); }

  /* 移动到/复制到 目录选择器（底部滑入 sheet） */
  .pk-mask.svelte-1dsu3ml { position: fixed; inset: 0; z-index: 84; background: rgba(0,0,0,.4); display: flex; align-items: flex-end; animation: svelte-1dsu3ml-fade .2s; }
  .pk.svelte-1dsu3ml { width: 100%; max-height: 82%; min-height: 52%; display: flex; flex-direction: column; border-radius: 26px 26px 0 0; padding: 0 0 calc(var(--sab,0px) + 12px); animation: svelte-1dsu3ml-pkup .34s cubic-bezier(.32,.72,0,1); }
  @keyframes svelte-1dsu3ml-pkup { from { transform: translateY(100%); } to { transform: none; } }
  .pk-head.svelte-1dsu3ml { display: flex; align-items: center; justify-content: space-between; padding: 16px 16px 8px; }
  .pk-cancel.svelte-1dsu3ml { width: 40px; border: none; background: none; color: var(--blue); font: inherit; font-size: 16px; text-align: left; padding: 0; }
  .pk-title.svelte-1dsu3ml { font-size: 16px; font-weight: 600; }
  .pk-crumb.svelte-1dsu3ml { display: flex; align-items: center; flex-wrap: wrap; gap: 4px; padding: 0 18px 8px; }
  .pk-crumb.svelte-1dsu3ml button:where(.svelte-1dsu3ml) { background: none; border: none; padding: 0; font: inherit; font-size: 14px; color: var(--blue); }
  .pk-crumb.svelte-1dsu3ml button.cur:where(.svelte-1dsu3ml) { color: var(--label); font-weight: 600; }
  .pk-list.svelte-1dsu3ml { flex: 1; min-height: 0; overflow-y: auto; padding: 0 12px; scrollbar-width: none; }
  .pk-list.svelte-1dsu3ml::-webkit-scrollbar { display: none; }
  .pk-row.svelte-1dsu3ml { display: flex; align-items: center; gap: 12px; width: 100%; min-height: 54px; padding: 0 10px; border: none; background: none; border-radius: 14px; }
  .pk-row.svelte-1dsu3ml:active { background: var(--fill); }
  .pk-fico.svelte-1dsu3ml { width: 38px; height: 32px; object-fit: contain; flex: none; }
  .pk-nm.svelte-1dsu3ml { flex: 1; text-align: left; font-size: 16px; color: var(--label); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .pk-chev.svelte-1dsu3ml { width: 18px; height: 18px; color: var(--label3); flex: none; }
  .pk-empty.svelte-1dsu3ml { padding: 50px 16px; text-align: center; color: var(--label2); font-size: 15px; line-height: 1.7; }
  .pk-empty.svelte-1dsu3ml small:where(.svelte-1dsu3ml) { color: var(--label3); font-size: 13px; }
  .pk-confirm.svelte-1dsu3ml { margin: 8px 16px 0; height: 52px; border: none; border-radius: 26px; background: var(--blue); color: #fff; font: inherit; font-size: 17px; font-weight: 600; box-shadow: 0 6px 16px rgba(0,136,255,.35); }
  .pk-confirm.svelte-1dsu3ml:active { filter: brightness(1.08); }
  .pk-confirm.svelte-1dsu3ml:disabled { background: var(--fill); color: var(--label3); box-shadow: none; }

  /* 显示简介 文件详情卡 */
  .info-card.svelte-1dsu3ml { width: 100%; max-width: 320px; background: var(--sheet); backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); border-radius: 22px; padding: 22px 20px 16px; }
  .info-top.svelte-1dsu3ml { display: flex; flex-direction: column; align-items: center; gap: 10px; padding-bottom: 16px; border-bottom: .5px solid var(--sep); }
  .info-ico.svelte-1dsu3ml { width: 64px; height: 56px; object-fit: contain; }
  .info-ico.file.svelte-1dsu3ml svg { width: 50px; height: 62px; }
  .info-name.svelte-1dsu3ml { font-size: 16px; font-weight: 600; text-align: center; word-break: break-all; }
  .info-rows.svelte-1dsu3ml { padding: 6px 0 14px; }
  .ir.svelte-1dsu3ml { display: flex; align-items: baseline; gap: 12px; padding: 9px 0; border-bottom: .5px solid var(--sep); }
  .ir.svelte-1dsu3ml .selectable:where(.svelte-1dsu3ml) { user-select:text; }
  .ir.acl-row.svelte-1dsu3ml { display:block; }
  .ir.acl-row.svelte-1dsu3ml pre:where(.svelte-1dsu3ml) { margin:7px 0 0; padding:8px; max-height:112px; overflow:auto; border-radius:8px; background:var(--field); color:var(--label2); user-select:text; white-space:pre-wrap; word-break:break-all; font:11px/1.35 Consolas,monospace; }
  .ir.svelte-1dsu3ml:last-child { border-bottom: none; }
  .ir.svelte-1dsu3ml span:where(.svelte-1dsu3ml) { flex: 0 0 64px; font-size: 14px; color: var(--label2); }
  .ir.svelte-1dsu3ml b:where(.svelte-1dsu3ml) { flex: 1; font-size: 14px; font-weight: 500; text-align: right; }
  .ir.svelte-1dsu3ml b.loc:where(.svelte-1dsu3ml) { font-weight: 400; color: var(--label2); word-break: break-all; }
  .info-done.svelte-1dsu3ml { width: 100%; height: 46px; border: none; border-radius: 23px; background: var(--blue); color: #fff; font: inherit; font-size: 16px; font-weight: 600; }

  /* toast */
  .toast.svelte-1dsu3ml { position: fixed; top: calc(var(--sat,0px) + 14px); left: 50%; transform: translateX(-50%); z-index: 90; display: flex; align-items: center; gap: 7px; padding: 10px 18px; border-radius: 22px;
    background: var(--toast); backdrop-filter: blur(24px) saturate(1.8); -webkit-backdrop-filter: blur(24px) saturate(1.8);
    box-shadow: 0 0 0 .5px var(--ring), 0 8px 24px rgba(0,0,0,.16); font-size: 14px; font-weight: 500; white-space: nowrap; animation: svelte-1dsu3ml-toastin .3s; }
  .toast.svelte-1dsu3ml svg:where(.svelte-1dsu3ml) { width: 16px; height: 16px; color: var(--green); }
  @keyframes svelte-1dsu3ml-toastin { from { opacity: 0; transform: translate(-50%,-12px); } to { opacity: 1; transform: translateX(-50%); } }

  /* 「发送给 AI」目标选择 — 底部动作单 */
  .ai-mask.svelte-1dsu3ml { position: fixed; inset: 0; z-index: 95; background: rgba(0,0,0,.32); display: flex; align-items: flex-end; justify-content: center; animation: svelte-1dsu3ml-aifade .2s; }
  @keyframes svelte-1dsu3ml-aifade { from { opacity: 0; } to { opacity: 1; } }
  .ai-sheet.svelte-1dsu3ml { width: 100%; max-width: 460px; background: var(--paper); border-radius: 18px 18px 0 0; padding: 6px 10px max(10px, var(--sab)); box-shadow: 0 -8px 30px rgba(0,0,0,.18); animation: svelte-1dsu3ml-aiup .26s cubic-bezier(.22,1,.36,1); }
  @keyframes svelte-1dsu3ml-aiup { from { transform: translateY(100%); } to { transform: none; } }
  .ai-title.svelte-1dsu3ml { font-size: 13px; color: var(--sub); text-align: center; padding: 13px 8px 9px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
  .ai-opt.svelte-1dsu3ml { width: 100%; display: flex; align-items: center; gap: 13px; padding: 12px 12px; border-radius: 12px; font-size: 16px; color: var(--label); text-align: left; }
  .ai-opt.svelte-1dsu3ml:active { background: var(--soft); }
  .ai-opt.svelte-1dsu3ml:disabled { opacity: .55; }
  .ai-ic.svelte-1dsu3ml { width: 34px; height: 34px; border-radius: 9px; display: flex; align-items: center; justify-content: center; flex: none; background: var(--soft); overflow: hidden; }
  .ai-ic.svelte-1dsu3ml img:where(.svelte-1dsu3ml) { width: 24px; height: 24px; object-fit: contain; }
  .ai-ic.svelte-1dsu3ml svg:where(.svelte-1dsu3ml) { width: 22px; height: 22px; }
  .ai-lb.svelte-1dsu3ml { font-weight: 500; display: flex; flex-direction: column; gap: 1px; min-width: 0; }
  .ai-lb.svelte-1dsu3ml small:where(.svelte-1dsu3ml) { font-size: 12px; color: var(--sub); font-weight: 400; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
  .ai-chev.svelte-1dsu3ml { width: 18px; height: 18px; color: var(--chev); margin-left: auto; flex: none; }
  .ai-title-sub.svelte-1dsu3ml { display: flex; align-items: center; gap: 2px; text-align: left; padding: 7px 4px 7px 2px; }
  .ai-back.svelte-1dsu3ml { width: 30px; height: 30px; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: var(--label); flex: none; }
  .ai-back.svelte-1dsu3ml svg:where(.svelte-1dsu3ml) { width: 18px; height: 18px; }
  .ai-back.svelte-1dsu3ml:active { background: var(--soft); }
  .ai-title-txt.svelte-1dsu3ml { flex: 1; min-width: 0; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; color: var(--sub); font-size: 13px; }
  .ai-cancel.svelte-1dsu3ml { width: 100%; margin-top: 5px; padding: 13px; border-radius: 12px; font-size: 16px; font-weight: 600; color: var(--label); background: var(--soft); }
  .ai-cancel.svelte-1dsu3ml:active { background: var(--soft2); }
  /* 「选择对话」层（微信「选择聊天」式）：搜索 + 新对话 + 历史会话列表 */
  .ai-chat-search.svelte-1dsu3ml { display: flex; align-items: center; gap: 8px; margin: 2px 2px 6px; padding: 8px 12px; border-radius: 10px; background: var(--soft); }
  .ai-chat-search.svelte-1dsu3ml svg:where(.svelte-1dsu3ml) { width: 16px; height: 16px; color: var(--sub); flex: none; }
  .ai-chat-search.svelte-1dsu3ml input:where(.svelte-1dsu3ml) { flex: 1; min-width: 0; border: none; background: none; font-size: 15px; color: var(--label); outline: none; }
  .ai-chat-search.svelte-1dsu3ml input:where(.svelte-1dsu3ml)::placeholder { color: var(--ph); }
  .ai-chat-list.svelte-1dsu3ml { max-height: 44vh; overflow-y: auto; overscroll-behavior: contain; margin-top: 2px; border-top: 0.5px solid var(--hair); }
  .ai-chat-row.svelte-1dsu3ml { width: 100%; display: flex; align-items: center; gap: 10px; padding: 12px 10px; font-size: 15px; color: var(--label); text-align: left; border-bottom: 0.5px solid var(--hair); }
  .ai-chat-row.svelte-1dsu3ml:active { background: var(--soft); }
  .ai-chat-title.svelte-1dsu3ml { flex: 1; min-width: 0; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
  .ai-chat-dot.svelte-1dsu3ml { width: 7px; height: 7px; border-radius: 50%; flex: none; background: var(--dot); }
  .ai-chat-dot.work.svelte-1dsu3ml { background: #d97757; animation: svelte-1dsu3ml-aidot 1.2s ease-in-out infinite; }
  .ai-chat-dot.ask.svelte-1dsu3ml { background: #ff9500; animation: svelte-1dsu3ml-aidot 1.2s ease-in-out infinite; }
  @keyframes svelte-1dsu3ml-aidot { 0%, 100% { opacity: 1; } 50% { opacity: 0.35; } }
  .ai-chat-cur.svelte-1dsu3ml { font-size: 11px; color: var(--sub); background: var(--soft); border-radius: 5px; padding: 2px 6px; flex: none; }
  .ai-chat-time.svelte-1dsu3ml { font-size: 12px; color: var(--sub); flex: none; }
  .ai-chat-empty.svelte-1dsu3ml { text-align: center; color: var(--sub); font-size: 13px; padding: 26px 0 20px; }

  /* 桌面工作空间：跟随全站明暗（data-theme），Explorer 级密度；宿主有自己的明暗档时（dimensio）
     经 theme 属性强制 .th-light / .th-dark，与旁边的对话区保持同一档。
     暗色是默认（与 :root 一致：data-theme 缺省即暗）——Claude 底 #1f1f1e 上的 iOS 暗色语言；
     浅色沿用工作空间家族的 iOS 浅色语言（蓝 #0071e3、#f2f2f7）。所有颜色只走下列令牌，别再就地写死。 */
  .fd-root.svelte-hs6z2j {
    --blue: #4f9dff; --blue-soft: rgba(79, 157, 255, .16); --red: #ff6961;
    --bg: #1f1f1e; --panel: #262625; --bar: rgba(31, 31, 30, .94); --side-bg: rgba(35, 35, 34, .7);
    --ink: #ececea; --ink2: rgba(235, 235, 240, .62); --ink3: rgba(235, 235, 240, .4);
    --sep: rgba(255, 255, 255, .09); --hover: rgba(255, 255, 255, .07); --row-alt: rgba(255, 255, 255, .03);
    --seg-bg: rgba(255, 255, 255, .08); --field-bg: #1b1b1a; --pop-bg: rgba(44, 44, 42, .98); --dlg-bg: #2a2a29;
    --mask: rgba(0, 0, 0, .5); --pop-shadow: 0 10px 34px rgba(0, 0, 0, .55); --ctx-shadow: 0 12px 44px rgba(0, 0, 0, .6);
    /* 右上避让：整页形态只让系统窗控；内嵌形态听宿主的 --dock-avoid-r（Claude 工作台不给：它在桌面壳下
       把首行让给窗控当标题栏带、子树 --wco-right 归零，故内嵌时恒为 0） */
    --fd-avoid-r: var(--wco-right, 0px);
    color-scheme: dark;
    position: fixed; inset: 0; z-index: 40; display: flex; flex-direction: column;
    background: var(--bg); color: var(--ink);
    font: 400 13px/1.45 -apple-system, 'Segoe UI', 'Microsoft YaHei UI', sans-serif;
    -webkit-font-smoothing: antialiased; user-select: none; overscroll-behavior: contain;
    /* 容器查询锚点：内嵌进工作台侧栏时"宽窄"由这一列说了算，跟视口无关
       （侧栏可以被拖到 320px，视口却仍是 2560）。 */
    container-type: inline-size;
  }
  html[data-theme='light'] .fd-root.svelte-hs6z2j:not(.th-dark), .fd-root.th-light.svelte-hs6z2j {
    --blue: #0071e3; --blue-soft: rgba(0, 113, 227, .1); --red: #ff383c;
    --bg: #f2f2f7; --panel: #fff; --bar: rgba(248, 248, 250, .92); --side-bg: rgba(242, 242, 246, .8);
    --ink: #1d1d1f; --ink2: rgba(60, 60, 67, .62); --ink3: rgba(60, 60, 67, .4);
    --sep: rgba(60, 60, 67, .1); --hover: rgba(120, 120, 128, .09); --row-alt: rgba(120, 120, 128, .045);
    --seg-bg: rgba(120, 120, 128, .1); --field-bg: #fff; --pop-bg: rgba(252, 252, 253, .97); --dlg-bg: #fbfbfd;
    --mask: rgba(20, 20, 24, .3); --pop-shadow: 0 10px 34px rgba(0, 0, 0, .16); --ctx-shadow: 0 12px 44px rgba(0, 0, 0, .2);
    color-scheme: light;
  }
  /* 内嵌形态（工作台侧栏）：让开状态栏、密度略收、去掉整页才需要的留白；
     右上听宿主给的 --dock-avoid-r，没给就只让窗控（Claude 工作台子树里窗控占宽已归零） */
  .fd-root.embedded.svelte-hs6z2j { z-index: 1; --fd-avoid-r: var(--dock-avoid-r, var(--wco-right, 0px)); }
  .fd-root.embedded.svelte-hs6z2j .fd-toolbar:where(.svelte-hs6z2j) { padding-top: calc(var(--sat) + 8px); }
  /* 侧栏在窄【列】里先让位——正文列表才是主角。
     和文件末尾那条 @media (max-width:680px) 是两个轴：那条管「整窗很窄」，
     这条管「窗很宽但这一列被拖窄了」（内嵌进工作台侧栏的常态）。 */
  /* 窄列收侧栏 / 面包屑边距的 @container 规则见文件末尾（@container 不加特异性，
     写在这里会被后文 .fd-side{display:flex} 按源顺序盖掉——首版就是这么失效的）。 */
  /* 窄列自适应（@container 分档）统一放在本 <style> 末尾——@container 不加特异性，
     写在前面会被后文同名规则按源顺序盖掉（首版就是这么失效的）。 */
  .hidden-input.svelte-hs6z2j { display: none; }
  .fd-rows.svelte-hs6z2j:focus { outline: none; }   /* tabindex=-1 只为拿焦点判快捷键作用域，不该画焦点框 */

  /* —— 工具栏 —— */
  .fd-toolbar.svelte-hs6z2j { position: relative; box-sizing: border-box; flex: 0 0 auto; display: flex; flex-direction: column; gap: 6px; padding: 8px 10px; padding-right: calc(10px + var(--fd-avoid-r)); background: var(--bar); border-bottom: 1px solid var(--sep); }
  /* FLIP 进行中：裁掉溢出（多出的第二行随高度动画渐显、离场幽灵不越界）。平时不裁——下拉菜单是 absolute 挂在里面的 */
  .fd-toolbar.svelte-hs6z2j.flip-anim { overflow: hidden; }
  .fd-toolbar.svelte-hs6z2j.flip-anim .pop-scrim:where(.svelte-hs6z2j) { display: none; }
  .fd-tb.svelte-hs6z2j, .fd-tb2.svelte-hs6z2j { display: flex; align-items: center; gap: 4px; min-width: 0; }
  .fd-tb2.svelte-hs6z2j .fd-crumbs:where(.svelte-hs6z2j) { margin: 0; }
  .tb-fill.svelte-hs6z2j { flex: 1 1 auto; }
  .tb-gap.svelte-hs6z2j { width: 6px; }
  .tb-btn.svelte-hs6z2j { display: grid; place-items: center; width: 30px; height: 30px; border: 0; border-radius: 8px; background: none; color: var(--ink); cursor: pointer; }
  .tb-btn.svelte-hs6z2j svg:where(.svelte-hs6z2j) { width: 17px; height: 17px; }
  .tb-btn.svelte-hs6z2j:hover:not(:disabled) { background: var(--hover); }
  .tb-btn.svelte-hs6z2j:disabled { color: var(--ink3); cursor: default; }
  .fd-crumbs.svelte-hs6z2j { flex: 1 1 auto; min-width: 0; display: flex; align-items: center; margin: 0 8px; padding: 0 6px; height: 32px; background: var(--panel); border: 1px solid var(--sep); border-radius: 9px; overflow: hidden; white-space: nowrap; }
  /* 内层不收缩：外层量 scrollWidth 才量得出溢出（折叠判据）；FLIP 时它承担反向缩放，段落文字不变形 */
  .fd-crumbs-in.svelte-hs6z2j { display: flex; align-items: center; gap: 1px; flex: 0 0 auto; max-width: 100%; }
  .fd-crumbs.squeeze.svelte-hs6z2j .fd-crumbs-in:where(.svelte-hs6z2j) { flex: 0 1 auto; min-width: 0; }
  .crumb.svelte-hs6z2j { flex: 0 0 auto; border: 0; background: none; padding: 3px 7px; border-radius: 6px; font-size: 13px; color: var(--ink2); cursor: pointer; max-width: 220px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .crumb.svelte-hs6z2j:hover { background: var(--hover); color: var(--ink); }
  .crumb.cur.svelte-hs6z2j { color: var(--ink); font-weight: 600; cursor: default; }
  /* 头部全收进「…」了还放不下：这时才让当前目录那段省略号（先折叠、后压缩） */
  .fd-crumbs.squeeze.svelte-hs6z2j .crumb.cur:where(.svelte-hs6z2j) { flex: 0 1 auto; min-width: 56px; }
  .crumb.cur.svelte-hs6z2j:hover { background: none; }
  .crumb.dropin.svelte-hs6z2j { background: var(--blue-soft); color: var(--blue); outline: 1.5px solid var(--blue); }
  .crumb-sep.svelte-hs6z2j { width: 13px; height: 13px; color: var(--ink3); flex: 0 0 auto; }
  .crumb-more.svelte-hs6z2j { display: flex; align-items: center; margin-left: 4px; }
  .tb-btn.ell.svelte-hs6z2j { width: 26px; height: 26px; border-radius: 7px; color: var(--ink2); }
  .tb-btn.ell.svelte-hs6z2j svg:where(.svelte-hs6z2j) { width: 15px; height: 15px; }
  .pop.left.svelte-hs6z2j { left: 0; right: auto; }
  .pop-cap.svelte-hs6z2j { padding: 5px 9px 2px; font-size: 11px; font-weight: 600; letter-spacing: .02em; color: var(--ink3); }
  .pm-ic.svelte-hs6z2j { width: 14px; height: 14px; flex: 0 0 auto; color: var(--ink2); margin-right: 4px; }
  .pop-mi.svelte-hs6z2j:hover:not(:disabled) .pm-ic:where(.svelte-hs6z2j) { color: #fff; }
  .crumb-note.svelte-hs6z2j { margin-left: 8px; font-size: 12px; color: var(--blue); background: var(--blue-soft); padding: 2px 8px; border-radius: 20px; }
  .fd-search.svelte-hs6z2j { flex: 0 0 auto; display: flex; align-items: center; width: 200px; height: 32px; padding: 0 9px; background: var(--panel); border: 1px solid var(--sep); border-radius: 9px; overflow: hidden; transition: border-color .15s; }
  .fd-search-in.svelte-hs6z2j { display: flex; align-items: center; gap: 6px; flex: 1 1 auto; min-width: 0; height: 100%; }
  /* 宽度变化（聚焦展开 / mini 档）全走 FLIP，不写 transition */
  .fd-search.focus.svelte-hs6z2j { width: 260px; border-color: rgba(0, 113, 227, .5); }
  .fd-search.active.svelte-hs6z2j { border-color: rgba(0, 113, 227, .5); }
  .fd-search.svelte-hs6z2j svg:where(.svelte-hs6z2j) { width: 14px; height: 14px; color: var(--ink3); flex: 0 0 auto; }
  .fd-search.svelte-hs6z2j input:where(.svelte-hs6z2j) { flex: 1; min-width: 0; border: 0; background: none; outline: none; font-size: 13px; color: var(--ink); transition: opacity .16s ease; }
  .fd-search.svelte-hs6z2j .sx:where(.svelte-hs6z2j) { display: grid; place-items: center; width: 18px; height: 18px; border: 0; border-radius: 50%; background: rgba(120, 120, 128, .18); color: var(--ink2); cursor: pointer; padding: 0; }
  .fd-search.svelte-hs6z2j .sx:where(.svelte-hs6z2j) svg:where(.svelte-hs6z2j) { width: 9px; height: 9px; color: inherit; }
  /* mini（t1 起）：只剩一枚图标，聚焦/有词时再展开 */
  .fd-search.mini.svelte-hs6z2j { width: 32px; padding: 0 8px; }
  .fd-search.mini.svelte-hs6z2j input:where(.svelte-hs6z2j) { opacity: 0; width: 0; }
  .fd-search.mini.focus.svelte-hs6z2j, .fd-search.mini.active.svelte-hs6z2j { width: 150px; padding: 0 9px; }
  .fd-search.mini.focus.svelte-hs6z2j input:where(.svelte-hs6z2j), .fd-search.mini.active.svelte-hs6z2j input:where(.svelte-hs6z2j) { opacity: 1; width: auto; }
  .fd-tb.t3.svelte-hs6z2j .fd-search.mini.focus:where(.svelte-hs6z2j), .fd-tb.t3.svelte-hs6z2j .fd-search.mini.active:where(.svelte-hs6z2j) { width: 120px; }
  .tb-seg.svelte-hs6z2j { display: flex; margin-left: 6px; background: var(--seg-bg); border-radius: 8px; padding: 2px; }
  .seg.svelte-hs6z2j { display: grid; place-items: center; width: 32px; height: 26px; border: 0; border-radius: 6px; background: none; color: var(--ink2); cursor: pointer; }
  .seg.svelte-hs6z2j svg:where(.svelte-hs6z2j) { width: 15px; height: 15px; }
  .seg.on.svelte-hs6z2j { background: var(--panel); color: var(--blue); box-shadow: 0 1px 2px rgba(0, 0, 0, .1); }
  .tb-drop.svelte-hs6z2j { position: relative; }
  .pop-scrim.svelte-hs6z2j { position: fixed; inset: 0; z-index: 60; border: 0; background: transparent; cursor: default; }
  .pop.svelte-hs6z2j { position: absolute; top: 36px; right: 0; z-index: 61; min-width: 168px; padding: 5px; background: var(--pop-bg); border: 1px solid var(--sep); border-radius: 11px; box-shadow: var(--pop-shadow); }
  .pop-mi.svelte-hs6z2j { display: flex; align-items: center; gap: 4px; width: 100%; padding: 6px 9px; border: 0; border-radius: 7px; background: none; text-align: left; font-size: 13px; color: var(--ink); cursor: pointer; }
  .pop-mi.svelte-hs6z2j:hover:not(:disabled) { background: var(--blue); color: #fff; }
  .pop-mi.svelte-hs6z2j:disabled { color: var(--ink3); cursor: default; }
  .pop-sep.svelte-hs6z2j { height: 1px; margin: 4px 8px; background: var(--sep); }
  .pm-check.svelte-hs6z2j { width: 16px; flex: 0 0 auto; font-size: 12px; }
  .pm-dir.svelte-hs6z2j { margin-left: auto; font-size: 11px; opacity: .68; }

  /* —— 主体 —— */
  .fd-body.svelte-hs6z2j { flex: 1; display: flex; min-height: 0; }
  /* 位置栏＝抽屉：外层 flex-basis 208↔0 走过渡，内层固定 208px 贴住右缘——收起时内容随左缘一起退出画面，
     拉宽时从左边缘抽出来（不是原地压扁、也不是一帧出现）。 */
  .fd-side.svelte-hs6z2j { flex: 0 0 208px; display: flex; flex-direction: column; align-items: flex-end; min-width: 0; background: var(--side-bg); border-right: 1px solid var(--sep); overflow: hidden auto;
    transition: flex-basis var(--mo-base) var(--ea-std), border-right-width var(--mo-base) var(--ea-std); }
  .fd-side-in.svelte-hs6z2j { flex: 1 0 auto; width: 208px; box-sizing: border-box; display: flex; flex-direction: column; padding: 8px 8px 10px; }
  .side-sec.svelte-hs6z2j { padding: 10px 10px 4px; font-size: 11px; font-weight: 600; letter-spacing: .02em; color: var(--ink3); }
  .side-row.svelte-hs6z2j { display: flex; align-items: center; gap: 8px; width: 100%; padding: 6px 10px; border: 0; border-radius: 8px; background: none; text-align: left; font-size: 13px; color: var(--ink); cursor: pointer; }
  .side-row.svelte-hs6z2j:hover { background: var(--hover); }
  .side-row.on.svelte-hs6z2j { background: rgba(0, 113, 227, .13); color: var(--blue); font-weight: 600; }
  .side-row.add.svelte-hs6z2j { color: var(--ink2); }
  .side-ic.svelte-hs6z2j { width: 16px; height: 16px; flex: 0 0 auto; color: var(--ink2); }
  .side-row.on.svelte-hs6z2j .side-ic:where(.svelte-hs6z2j) { color: var(--blue); }
  .side-ic.accent.svelte-hs6z2j { color: var(--blue); }
  .side-nm.svelte-hs6z2j { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .side-fill.svelte-hs6z2j { flex: 1; }
  .side-note.svelte-hs6z2j { padding: 8px 10px 0; font-size: 11px; line-height: 1.5; color: var(--ink3); }

  .fd-main.svelte-hs6z2j { flex: 1; display: flex; flex-direction: column; min-width: 0; background: var(--panel); }

  /* 列表表头 */
  .fd-colhead.svelte-hs6z2j { flex: 0 0 auto; display: flex; align-items: center; padding: 0 12px; height: 30px; border-bottom: 1px solid var(--sep); background: var(--panel); transition: padding var(--mo-base) var(--ea-std); }
  .ch.svelte-hs6z2j { display: flex; align-items: center; gap: 4px; border: 0; background: none; padding: 0 8px; height: 100%; font-size: 12px; color: var(--ink2); cursor: pointer; text-align: left; white-space: nowrap; }
  /* 列的显隐/宽度档位（下文 @container）走过渡而不是一帧切换：flex-basis 收到 0 + padding 归零 + 淡出，
     名称列（flex:1）随布局逐帧回填。overflow:hidden 让收窄途中的文字被裁而不是撑开。 */
  .ch.svelte-hs6z2j, .cell.parent.svelte-hs6z2j, .cell.mtime.svelte-hs6z2j, .cell.type.svelte-hs6z2j, .cell.size.svelte-hs6z2j { overflow: hidden; transition: flex-basis var(--mo-base) var(--ea-std), padding var(--mo-base) var(--ea-std), margin var(--mo-base) var(--ea-std), opacity var(--mo-quick) var(--ea-fade); }
  .ch.svelte-hs6z2j:hover { color: var(--ink); }
  span.ch.svelte-hs6z2j { cursor: default; }
  .ch-dir.svelte-hs6z2j { font-size: 8px; color: var(--blue); }
  .ch.name.svelte-hs6z2j { flex: 1 1 auto; min-width: 0; margin-left: 28px; }
  .ch.parent.svelte-hs6z2j { flex: 0 0 220px; }
  .ch.mtime.svelte-hs6z2j { flex: 0 0 150px; }
  .ch.type.svelte-hs6z2j { flex: 0 0 110px; }
  .ch.size.svelte-hs6z2j { flex: 0 0 86px; justify-content: flex-end; }

  /* 行 */
  .fd-rows.svelte-hs6z2j { flex: 1; min-height: 0; overflow-y: auto; padding: 4px 6px 18px; position: relative; }
  .fd-rows.dropin.svelte-hs6z2j { box-shadow: inset 0 0 0 2px var(--blue); border-radius: 2px; }
  .row.svelte-hs6z2j { display: flex; align-items: center; padding: 0 6px; height: 30px; border-radius: 7px; cursor: default; }
  .row.svelte-hs6z2j:nth-child(even):not(.sel) { background: var(--row-alt); }
  .row.svelte-hs6z2j:hover:not(.sel) { background: var(--hover); }
  .row.sel.svelte-hs6z2j { background: rgba(0, 113, 227, .16); }
  .row.cut.svelte-hs6z2j, .tile.cut.svelte-hs6z2j { opacity: .5; }
  .row.dropin.svelte-hs6z2j, .tile.dropin.svelte-hs6z2j { outline: 2px solid var(--blue); outline-offset: -2px; background: var(--blue-soft); }
  .cell.svelte-hs6z2j { min-width: 0; }
  .cell.name.svelte-hs6z2j { flex: 1 1 auto; display: flex; align-items: center; gap: 8px; overflow: hidden; }
  .cell.parent.svelte-hs6z2j { flex: 0 0 220px; padding: 0 8px; font-size: 12px; color: var(--ink2); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .cell.mtime.svelte-hs6z2j { flex: 0 0 150px; padding: 0 8px; font-size: 12px; color: var(--ink2); white-space: nowrap; }
  .cell.type.svelte-hs6z2j { flex: 0 0 110px; padding: 0 8px; font-size: 12px; color: var(--ink2); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .cell.size.svelte-hs6z2j { flex: 0 0 86px; padding: 0 8px; font-size: 12px; color: var(--ink2); text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
  .cell.size.pend.svelte-hs6z2j { color: var(--ink3); }
  .ric.svelte-hs6z2j { position: relative; width: 20px; height: 20px; flex: 0 0 auto; display: grid; place-items: center; }
  .ric-dir.svelte-hs6z2j { width: 20px; height: 20px; object-fit: contain; }
  .ric-img.svelte-hs6z2j { width: 20px; height: 20px; object-fit: cover; border-radius: 4px; }
  .ric-ph.svelte-hs6z2j { width: 15px; height: 18px; display: block; }
  .ric-ph.svelte-hs6z2j svg { width: 100%; height: 100%; display: block; }
  .nm.svelte-hs6z2j { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 13px; }
  .lk.svelte-hs6z2j { flex: 0 0 auto; margin-left: 2px; padding: 1px 6px; border-radius: 20px; background: rgba(120, 120, 128, .14); font-size: 10px; color: var(--ink2); }
  .rn-input.svelte-hs6z2j { flex: 1; min-width: 60px; height: 24px; padding: 0 6px; border: 1.5px solid var(--blue); border-radius: 6px; background: var(--field-bg); font: inherit; font-size: 13px; color: var(--ink); outline: none; user-select: text; }

  /* 图标视图 */
  .fd-rows.grid.svelte-hs6z2j { display: grid; grid-template-columns: repeat(auto-fill, minmax(108px, 1fr)); align-content: start; gap: 2px; padding: 10px; }
  .tile.svelte-hs6z2j { display: flex; flex-direction: column; align-items: center; gap: 5px; padding: 10px 6px 8px; border-radius: 10px; cursor: default; }
  .tile.svelte-hs6z2j:hover:not(.sel) { background: var(--hover); }
  .tile.sel.svelte-hs6z2j { background: rgba(0, 113, 227, .16); }
  .tic.svelte-hs6z2j { width: 62px; height: 62px; display: grid; place-items: center; }
  .tic-dir.svelte-hs6z2j { width: 58px; height: 58px; object-fit: contain; }
  .tic-img.svelte-hs6z2j { max-width: 62px; max-height: 62px; border-radius: 7px; box-shadow: 0 1px 4px rgba(0, 0, 0, .14); }
  .tic-ph.svelte-hs6z2j { width: 44px; height: 54px; display: block; }
  .tic-ph.svelte-hs6z2j svg { width: 100%; height: 100%; display: block; }
  .tnm.svelte-hs6z2j { max-width: 100%; font-size: 12px; line-height: 1.3; text-align: center; overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; word-break: break-all; }
  .tile-rn.svelte-hs6z2j { width: 100%; text-align: center; }

  /* 状态栏 */
  .fd-status.svelte-hs6z2j { flex: 0 0 auto; display: flex; align-items: center; gap: 10px; height: 26px; padding: 0 14px; border-top: 1px solid var(--sep); background: var(--bar); font-size: 11.5px; color: var(--ink2); }
  .st-fill.svelte-hs6z2j { flex: 1; }
  .st-busy.svelte-hs6z2j { display: flex; align-items: center; gap: 6px; color: var(--blue); }
  .spin.svelte-hs6z2j { width: 14px; height: 14px; border: 2px solid rgba(0, 113, 227, .25); border-top-color: var(--blue); border-radius: 50%; animation: svelte-hs6z2j-fd-spin .8s linear infinite; }
  .spin.sm.svelte-hs6z2j { width: 11px; height: 11px; border-width: 1.5px; }
  @keyframes svelte-hs6z2j-fd-spin { to { transform: rotate(360deg); } }

  /* 空态 */
  .fd-empty.svelte-hs6z2j { display: flex; flex-direction: column; align-items: center; gap: 8px; padding: 90px 20px; color: var(--ink2); font-size: 13px; }
  .fd-rows.grid.svelte-hs6z2j .fd-empty:where(.svelte-hs6z2j) { grid-column: 1 / -1; }
  .fd-empty.svelte-hs6z2j .big:where(.svelte-hs6z2j) { font-size: 40px; }
  .fd-empty.svelte-hs6z2j small:where(.svelte-hs6z2j) { font-size: 12px; color: var(--ink3); }

  /* 右键菜单 */
  .menu-scrim.svelte-hs6z2j { position: fixed; inset: 0; z-index: 80; border: 0; background: transparent; cursor: default; padding: 0; }
  .ctx.svelte-hs6z2j { position: fixed; z-index: 81; min-width: 236px; padding: 5px; background: var(--pop-bg); border: 1px solid var(--sep); border-radius: 11px; box-shadow: var(--ctx-shadow); animation: svelte-hs6z2j-fd-pop .12s ease; }
  @keyframes svelte-hs6z2j-fd-pop { from { opacity: 0; transform: scale(.97); } }
  .ctx-mi.svelte-hs6z2j { display: flex; align-items: center; width: 100%; padding: 6px 10px; border: 0; border-radius: 7px; background: none; text-align: left; font-size: 13px; color: var(--ink); cursor: pointer; }
  .ctx-mi.svelte-hs6z2j:hover:not(:disabled) { background: var(--blue); color: #fff; }
  .ctx-mi.svelte-hs6z2j:hover:not(:disabled) .ctx-hint:where(.svelte-hs6z2j) { color: rgba(255, 255, 255, .75); }
  .ctx-mi.svelte-hs6z2j:disabled { color: var(--ink3); cursor: default; }
  .ctx-mi.danger.svelte-hs6z2j { color: var(--red); }
  .ctx-mi.danger.svelte-hs6z2j:hover:not(:disabled) { background: var(--red); color: #fff; }
  .ctx-mi.accent.svelte-hs6z2j { color: var(--blue); font-weight: 600; }
  .ctx-mi.accent.svelte-hs6z2j:hover:not(:disabled) { color: #fff; }
  .ctx-mi.bold.svelte-hs6z2j { font-weight: 600; }
  .ctx-lb.svelte-hs6z2j { flex: 1; }
  .ctx-hint.svelte-hs6z2j { margin-left: 18px; font-size: 11px; color: var(--ink3); }
  .ctx-sep.svelte-hs6z2j { height: 1px; margin: 4px 9px; background: var(--sep); }

  /* 框选 */
  .marquee.svelte-hs6z2j { position: fixed; z-index: 70; border: 1px solid rgba(0, 113, 227, .8); background: rgba(0, 113, 227, .12); pointer-events: none; }

  /* 弹窗 */
  .dlg-mask.svelte-hs6z2j { position: fixed; inset: 0; z-index: 90; display: grid; place-items: center; background: var(--mask); animation: svelte-hs6z2j-fd-fade .14s ease; }
  @keyframes svelte-hs6z2j-fd-fade { from { opacity: 0; } }
  .dlg.svelte-hs6z2j { width: 400px; max-width: calc(100% - 32px); max-height: calc(100% - 56px); overflow-y: auto; padding: 18px; background: var(--dlg-bg); border-radius: 15px; box-shadow: 0 22px 70px rgba(0, 0, 0, .3); animation: svelte-hs6z2j-fd-rise .16s cubic-bezier(.2, .8, .3, 1); }
  @keyframes svelte-hs6z2j-fd-rise { from { opacity: 0; transform: translateY(8px) scale(.98); } }
  .dlg.svelte-hs6z2j h3:where(.svelte-hs6z2j) { display: flex; align-items: center; gap: 6px; margin: 0 0 10px; font-size: 15px; font-weight: 700; }
  .dlg-sub.svelte-hs6z2j { margin: -4px 0 12px; font-size: 12.5px; color: var(--ink2); word-break: break-all; }
  .dlg-btns.svelte-hs6z2j { display: flex; justify-content: flex-end; gap: 8px; margin-top: 16px; }
  .btn.svelte-hs6z2j { padding: 7px 16px; border: 0; border-radius: 9px; background: rgba(120, 120, 128, .13); font-size: 13px; font-weight: 600; color: var(--ink); cursor: pointer; }
  .btn.svelte-hs6z2j:hover { background: rgba(120, 120, 128, .2); }
  .btn.go.svelte-hs6z2j { background: var(--blue); color: #fff; }
  .btn.go.svelte-hs6z2j:hover { filter: brightness(1.08); }
  .btn.go.svelte-hs6z2j:disabled { opacity: .55; cursor: default; }
  .dlg-input.svelte-hs6z2j { width: 100%; margin: 8px 0 2px; padding: 8px 10px; border: 1px solid var(--sep); border-radius: 9px; background: var(--field-bg); color: var(--ink); font: inherit; font-size: 13px; outline: none; user-select: text; }
  .dlg-input.svelte-hs6z2j:focus { border-color: var(--blue); }

  /* 简介 */
  .dlg.info.svelte-hs6z2j { width: 440px; }
  .info-top.svelte-hs6z2j { display: flex; flex-direction: column; align-items: center; gap: 8px; padding: 4px 0 12px; }
  .info-ico.svelte-hs6z2j { width: 52px; height: 52px; object-fit: contain; }
  .info-ico.file.svelte-hs6z2j { width: 44px; height: 52px; display: block; }
  .info-ico.file.svelte-hs6z2j svg { width: 100%; height: 100%; }
  .info-name.svelte-hs6z2j { font-size: 15px; font-weight: 600; text-align: center; word-break: break-all; }
  .info-rows.svelte-hs6z2j { border-top: 1px solid var(--sep); }
  .ir.svelte-hs6z2j { display: flex; align-items: baseline; gap: 12px; padding: 8px 0; border-bottom: 1px solid var(--sep); }
  .ir.svelte-hs6z2j span:where(.svelte-hs6z2j) { flex: 0 0 70px; font-size: 12.5px; color: var(--ink2); }
  .ir.svelte-hs6z2j b:where(.svelte-hs6z2j) { flex: 1; font-size: 12.5px; font-weight: 500; text-align: right; word-break: break-all; }
  .ir.svelte-hs6z2j b.loc:where(.svelte-hs6z2j) { text-align: right; }
  .ir.svelte-hs6z2j b.selectable:where(.svelte-hs6z2j) { user-select: text; cursor: pointer; color: var(--blue); }
  .ir.acl.svelte-hs6z2j { display: block; }
  .ir.acl.svelte-hs6z2j pre:where(.svelte-hs6z2j) { margin: 6px 0 0; padding: 8px; max-height: 110px; overflow: auto; border-radius: 8px; background: rgba(120, 120, 128, .1); user-select: text; white-space: pre-wrap; word-break: break-all; font: 11px/1.35 Consolas, monospace; }

  /* 分享 */
  .sh-row.svelte-hs6z2j { display: flex; align-items: center; justify-content: space-between; padding: 8px 0; font-size: 13px; }
  .sw.svelte-hs6z2j { position: relative; width: 44px; height: 26px; border: 0; border-radius: 20px; background: rgba(120, 120, 128, .22); cursor: pointer; transition: background .18s; padding: 0; }
  .sw.on.svelte-hs6z2j { background: #34c759; }
  .sw.svelte-hs6z2j .knob:where(.svelte-hs6z2j) { position: absolute; top: 2px; left: 2px; width: 22px; height: 22px; border-radius: 50%; background: #fff; box-shadow: 0 1px 3px rgba(0, 0, 0, .25); transition: transform .18s; }
  .sw.on.svelte-hs6z2j .knob:where(.svelte-hs6z2j) { transform: translateX(18px); }
  .sh-ttl.svelte-hs6z2j { display: flex; gap: 6px; margin-top: 8px; }
  .sh-ttl.svelte-hs6z2j button:where(.svelte-hs6z2j) { flex: 1; padding: 7px 0; border: 1px solid var(--sep); border-radius: 8px; background: var(--field-bg); font-size: 12.5px; color: var(--ink); cursor: pointer; }
  .sh-ttl.svelte-hs6z2j button.on:where(.svelte-hs6z2j) { border-color: var(--blue); background: var(--blue-soft); color: var(--blue); font-weight: 600; }
  .sh-url.svelte-hs6z2j { display: block; width: 100%; margin: 6px 0 4px; padding: 10px; border: 1px dashed rgba(0, 113, 227, .5); border-radius: 9px; background: var(--blue-soft); font-size: 12.5px; color: var(--blue); word-break: break-all; text-align: left; cursor: pointer; user-select: text; }
  .sh-meta.svelte-hs6z2j { margin: 2px 0 0; font-size: 12px; color: var(--ink2); }

  /* 发送给 AI */
  .dlg.ai.svelte-hs6z2j { width: 420px; }
  .ai-back.svelte-hs6z2j { display: grid; place-items: center; width: 24px; height: 24px; border: 0; border-radius: 7px; background: none; color: var(--ink2); cursor: pointer; padding: 0; }
  .ai-back.svelte-hs6z2j:hover { background: var(--hover); }
  .ai-back.svelte-hs6z2j svg:where(.svelte-hs6z2j) { width: 15px; height: 15px; }
  .ai-opt.svelte-hs6z2j { display: flex; align-items: center; gap: 11px; width: 100%; padding: 9px 10px; border: 0; border-radius: 11px; background: none; text-align: left; cursor: pointer; }
  .ai-opt.svelte-hs6z2j:hover { background: var(--hover); }
  .ai-ic.svelte-hs6z2j { display: grid; place-items: center; width: 34px; height: 34px; border-radius: 9px; flex: 0 0 auto; overflow: hidden; }
  .ai-ic.svelte-hs6z2j svg:where(.svelte-hs6z2j) { width: 19px; height: 19px; }
  .ai-ic.svelte-hs6z2j img:where(.svelte-hs6z2j) { width: 100%; height: 100%; object-fit: cover; }
  .ai-lb.svelte-hs6z2j { flex: 1; display: flex; flex-direction: column; gap: 1px; font-size: 13.5px; font-weight: 600; }
  .ai-lb.svelte-hs6z2j small:where(.svelte-hs6z2j) { font-size: 11.5px; font-weight: 400; color: var(--ink2); }
  .ai-chev.svelte-hs6z2j { width: 15px; height: 15px; color: var(--ink3); }
  .ai-search.svelte-hs6z2j { display: flex; align-items: center; gap: 7px; margin: 2px 0 8px; padding: 7px 10px; border: 1px solid var(--sep); border-radius: 9px; background: var(--field-bg); }
  .ai-search.svelte-hs6z2j svg:where(.svelte-hs6z2j) { width: 14px; height: 14px; color: var(--ink3); }
  .ai-search.svelte-hs6z2j input:where(.svelte-hs6z2j) { flex: 1; border: 0; background: none; outline: none; font-size: 13px; color: var(--ink); user-select: text; }
  .ai-list.svelte-hs6z2j { max-height: 300px; overflow-y: auto; }
  .ai-row.svelte-hs6z2j { display: flex; align-items: center; gap: 8px; width: 100%; padding: 8px 10px; border: 0; border-radius: 9px; background: none; text-align: left; cursor: pointer; }
  .ai-row.svelte-hs6z2j:hover { background: var(--hover); }
  .ai-dot.svelte-hs6z2j { width: 7px; height: 7px; border-radius: 50%; background: rgba(120, 120, 128, .35); flex: 0 0 auto; }
  .ai-dot.work.svelte-hs6z2j { background: #34c759; }
  .ai-dot.ask.svelte-hs6z2j { background: #ff9500; }
  .ai-title.svelte-hs6z2j { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 13px; }
  .ai-cur.svelte-hs6z2j { flex: 0 0 auto; padding: 1px 7px; border-radius: 20px; background: var(--blue-soft); font-size: 10.5px; color: var(--blue); }
  .ai-time.svelte-hs6z2j { flex: 0 0 auto; font-size: 11px; color: var(--ink3); }
  .ai-empty.svelte-hs6z2j { padding: 20px 0; text-align: center; font-size: 12.5px; color: var(--ink3); }

  /* toast */
  .toast.svelte-hs6z2j { position: fixed; left: 50%; bottom: 44px; z-index: 120; transform: translateX(-50%); padding: 9px 18px; border-radius: 22px; background: rgba(28, 28, 32, .92); color: #fff; font-size: 13px; box-shadow: 0 8px 26px rgba(0, 0, 0, .3); animation: svelte-hs6z2j-fd-rise .18s ease; white-space: nowrap; max-width: 86%; overflow: hidden; text-overflow: ellipsis; }

  /* 窄窗：侧栏退场（同 @container 那条，走抽屉过渡） */
  @media (max-width: 680px) {
    .fd-side.svelte-hs6z2j { flex-basis: 0; border-right-width: 0; }
  }

  /* ── 窄列（工作台侧栏常态 ≈ 300–640px）自适应 ─────────────────────────────
     【必须留在文件末尾】：@container 不加特异性，同名规则按源顺序后者胜，放前面会被
     上文的 .fd-search{width:200px} / .fd-crumbs{min-width:0} / .tb-seg{display:flex} 盖掉。
     列表：固定列 150+110+86 一加就把名称列挤成零宽、行图标裁成一条缝——名称是正文，
     其它列按宽度逐级让位：先收类型，再收大小，只留修改时间。
     工具栏不在这里分档：它按 .fd-tb 的实测宽度走 JS tier（tbTier），因为 @container
     量的是整列宽、扣不掉右上避让区（窗控 + Claude 顶栏胶囊）。这里只保证子项不收缩。 */
  .tb-btn.svelte-hs6z2j, .tb-seg.svelte-hs6z2j, .tb-drop.svelte-hs6z2j, .fd-search.svelte-hs6z2j { flex: 0 0 auto; }
  .fd-crumbs.svelte-hs6z2j { min-width: 64px; }
  @container (max-width: 700px) {
    .fd-side.svelte-hs6z2j { flex-basis: 0; border-right-width: 0; }
  }
  @container (max-width: 640px) {
    .ch.type.svelte-hs6z2j, .cell.type.svelte-hs6z2j { flex-basis: 0; padding-left: 0; padding-right: 0; opacity: 0; min-width: 0; pointer-events: none; }
    .ch.mtime.svelte-hs6z2j, .cell.mtime.svelte-hs6z2j { flex-basis: 118px; }
    .ch.parent.svelte-hs6z2j, .cell.parent.svelte-hs6z2j { flex-basis: 150px; }
    .ch.size.svelte-hs6z2j, .cell.size.svelte-hs6z2j { flex-basis: 72px; }
  }
  @container (max-width: 560px) {
    .fd-crumbs.svelte-hs6z2j { margin: 0 4px; }
  }
  @container (max-width: 500px) {
    .ch.size.svelte-hs6z2j, .cell.size.svelte-hs6z2j, .ch.parent.svelte-hs6z2j, .cell.parent.svelte-hs6z2j { flex-basis: 0; padding-left: 0; padding-right: 0; opacity: 0; min-width: 0; pointer-events: none; }
    .ch.mtime.svelte-hs6z2j, .cell.mtime.svelte-hs6z2j { flex-basis: 104px; }
    .fd-colhead.svelte-hs6z2j { padding: 0 8px; }
    .ch.name.svelte-hs6z2j { margin-left: 22px; }
  }
  @container (max-width: 380px) {
    .ch.mtime.svelte-hs6z2j, .cell.mtime.svelte-hs6z2j { flex-basis: 0; padding-left: 0; padding-right: 0; opacity: 0; min-width: 0; pointer-events: none; }
    .fd-crumbs.svelte-hs6z2j { min-width: 48px; margin: 0 2px; }
  }

  /* 卡片（官方 flex-col gap-24 rounded-r6 bg-t1 p-p6 pb-p8）：底 --card、圆角 8、内边距 10/12 */
  .rd.svelte-9pp82v { display: flex; flex-direction: column; gap: 18px; border-radius: 10px; background: var(--card); padding: 10px 10px 12px; box-shadow: var(--card-shadow);
    /* 文字流光（官方 epitaxy-text-shine）的两端/中点：暗色 = --t7 → 白 → --t7；亮色 = 墨色 → 掺 30% 白 */
    --sh-edge: var(--serif); --sh-mid: var(--text); }
  html[data-theme="light"] .rd.svelte-9pp82v { --sh-edge: var(--text); --sh-mid: color-mix(in srgb, var(--text) 30%, white); }
  /* 从对话里点进来定位到的那张：描一圈边，1.6s 后淡掉 */
  .rd.focused.svelte-9pp82v { animation: svelte-9pp82v-rdFocus 1.6s ease-out; }
  @keyframes svelte-9pp82v-rdFocus { 0%, 40% { box-shadow: 0 0 0 1.5px color-mix(in srgb, var(--text) 45%, transparent); } 100% { box-shadow: var(--card-shadow); } }

  /* Anthropicons 字形（与状态栏芯片同轴位 opsz16/wght533；xs=12px 用更粗的 620） */
  .gi.svelte-9pp82v { font-family: var(--icons); font-style: normal; font-feature-settings: "liga" 0; font-variation-settings: "opsz" 16, "wght" 533;
    font-size: 16px; line-height: 1; width: 16px; height: 16px; display: inline-flex; align-items: center; justify-content: center; flex: none; }
  .gi.xs.svelte-9pp82v { font-size: 12px; width: 12px; height: 12px; font-variation-settings: "opsz" 12, "wght" 620; }

  .rd-head.svelte-9pp82v { display: flex; flex-direction: column; gap: 6px; user-select: none; }
  .rd-title-row.svelte-9pp82v { display: flex; align-items: flex-start; gap: 8px; }
  .rd-title.svelte-9pp82v { flex: 1; min-width: 0; font-size: 14px; line-height: 20px; color: var(--text); overflow-wrap: anywhere; text-wrap: balance; }
  .rd-title.dim.svelte-9pp82v { color: var(--serif); }
  .rd-dur.svelte-9pp82v { flex: none; padding-right: 2px; font-size: 12.5px; line-height: 20px; color: var(--muted); }
  .rd-meta.svelte-9pp82v { display: flex; flex-wrap: wrap; align-items: baseline; column-gap: 8px; row-gap: 3px;
    font-size: 12.5px; line-height: 16px; color: var(--muted); overflow-wrap: anywhere; }
  .rd-meta.svelte-9pp82v b:where(.svelte-9pp82v) { font-weight: 400; }
  .rd-desc.svelte-9pp82v { font-size: 12.5px; line-height: 16px; color: var(--muted); overflow-wrap: anywhere; margin: 2px 0 0; user-select: text; }

  /* 失败 / 停止原因框（官方：failed 底 = 8% danger，stopped 底 = --t1） */
  .rd-reason.svelte-9pp82v { display: flex; flex-direction: column; gap: 4px; border-radius: 6px; padding: 7px 8px 8px; margin-top: 4px; }
  .rd-reason.stopped.svelte-9pp82v { background: var(--hover); }
  .rd-reason.failed.svelte-9pp82v { background: color-mix(in srgb, var(--crit) 8%, transparent); }
  .rd-reason-h.svelte-9pp82v { font-size: 12.5px; line-height: 16px; color: var(--muted); }
  .rd-reason-b.svelte-9pp82v { display: block; max-height: 120px; overflow-y: auto; border-radius: 4px; font-size: 12.5px; line-height: 16px;
    color: var(--serif); white-space: pre-wrap; overflow-wrap: anywhere; outline: none; user-select: text; }

  /* Phases 进度树（官方 OD 行 → LD 表） */
  .rd-phases.svelte-9pp82v { display: flex; flex-direction: column; gap: 6px; }
  .rd-ph-h.svelte-9pp82v { font-size: 12.5px; line-height: 16px; font-weight: 500; color: var(--text); }
  .rd-ph-list.svelte-9pp82v { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }
  .ph.svelte-9pp82v { display: flex; flex-direction: column; gap: 8px; }
  .ph.open.svelte-9pp82v { padding-bottom: 12px; }
  .ph-btn.svelte-9pp82v { width: 100%; border-radius: 4px; padding: 4px 8px 6px; text-align: left; display: flex; flex-direction: column; gap: 6px;
    font-size: 12.5px; line-height: 16px; color: var(--serif); }
  .ph-btn.pad.svelte-9pp82v { padding-bottom: 8px; }
  .ph-btn.open.svelte-9pp82v { background: var(--hover); }
  @media (hover: hover) { .ph-btn.svelte-9pp82v:not(.open):hover { background: var(--hover); } }
  .ph-row.svelte-9pp82v { display: flex; align-items: flex-start; gap: 8px; width: 100%; }
  .ph-title.svelte-9pp82v { flex: 1; min-width: 0; min-height: 20px; display: flex; align-items: center; overflow-wrap: anywhere; text-wrap: balance; color: var(--serif); }
  .ph-title.text.svelte-9pp82v { color: var(--text); }
  .ph-detail.svelte-9pp82v { display: block; color: var(--muted); overflow-wrap: anywhere; }
  .ph-count.svelte-9pp82v { flex: none; min-height: 20px; display: flex; align-items: center; color: var(--muted); }
  .ph-caret.svelte-9pp82v { min-height: 20px; height: auto; color: var(--muted); }
  .ph-caret.dim.svelte-9pp82v { color: color-mix(in srgb, var(--text) 25%, transparent); }
  .ph-dots.svelte-9pp82v { display: block; padding-right: 22px; }
  .ag-empty.svelte-9pp82v { padding-left: 8px; font-size: 12.5px; line-height: 16px; color: var(--muted); }
  /* 四列表 Agent / Model / Tokens / Time；数据行 16px 高 */
  .ag-grid.svelte-9pp82v { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, max-content) 60px minmax(56px, max-content);
    grid-auto-rows: 16px; align-items: center; column-gap: 12px; row-gap: 4px; padding: 0 8px; font-size: 12.5px; line-height: 16px; }
  .ag-h.svelte-9pp82v { color: var(--muted); display: flex; align-items: center; gap: 5px; white-space: nowrap; }
  .ag-h.r.svelte-9pp82v, .ag-c.r.svelte-9pp82v { text-align: right; justify-self: end; }
  .ag-st.svelte-9pp82v { display: flex; width: 12px; flex: none; align-items: center; justify-content: center; }
  .ag-c.svelte-9pp82v { color: var(--serif); min-width: 0; white-space: nowrap; }
  .ag-c.dim.svelte-9pp82v { color: var(--muted); }
  .ag-name.svelte-9pp82v { display: flex; align-items: center; gap: 5px; border-radius: 4px; outline: none; }
  .ag-name.link.svelte-9pp82v { cursor: pointer; }
  .ag-name.link.svelte-9pp82v .ag-lbl:where(.svelte-9pp82v) { text-decoration: underline; text-decoration-color: transparent; text-underline-offset: 2px; transition: text-decoration-color .15s ease, color .15s ease; }
  @media (hover: hover) { .ag-name.link.svelte-9pp82v:hover .ag-lbl:where(.svelte-9pp82v), .ag-name.link.svelte-9pp82v:focus-visible .ag-lbl:where(.svelte-9pp82v) { text-decoration-color: currentColor; color: var(--text); } }
  .ag-lbl.svelte-9pp82v, .ag-model.svelte-9pp82v { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .ag-err.svelte-9pp82v { grid-column: span 3; justify-self: end; color: var(--crit); cursor: default; outline: none; }

  .rd-result.svelte-9pp82v summary:where(.svelte-9pp82v) { font-size: 12.5px; color: var(--muted); cursor: pointer; }
  .rd-result.svelte-9pp82v pre:where(.svelte-9pp82v) { background: var(--userbubble); border: 1px solid var(--divider); border-radius: 10px; padding: 10px 12px; margin: 6px 0 0;
    font-size: 12.5px; line-height: 1.5; white-space: pre-wrap; overflow-wrap: anywhere; max-height: 240px; overflow: auto; }

  /* 文字流光（官方 epitaxy-text-shine 原参数：3s 循环、0–22% 停在右侧、76% 起停在左侧） */
  .shine.svelte-9pp82v { color: var(--text); background-image: linear-gradient(120deg, var(--sh-edge) 25%, var(--sh-mid) 50%, var(--sh-edge) 75%);
    background-size: 200% 100%; background-position: 150% 0; -webkit-background-clip: text; background-clip: text;
    -webkit-text-fill-color: transparent; animation: svelte-9pp82v-rdShine 3s infinite; }
  @keyframes svelte-9pp82v-rdShine { 0%, 22% { background-position: 150% 0; animation-timing-function: cubic-bezier(.5,.05,.45,.95); } 76%, 100% { background-position: -50% 0; } }
  @media (prefers-reduced-motion: reduce) { .shine.svelte-9pp82v { animation: none; background-position: 50% 0; } .rd.focused.svelte-9pp82v { animation: none; } }

  /* 色彩语义（放在最后，压过各自的默认色）：t7=次色、muted、crit/warn 只保留语义红黄——彩色只留星芒 */
  .t7.svelte-9pp82v { color: var(--serif); }
  .muted.svelte-9pp82v { color: var(--muted); }
  .crit.svelte-9pp82v { color: var(--crit); }
  .warn.svelte-9pp82v { color: var(--warn); }
  .num.svelte-9pp82v { font-variant-numeric: tabular-nums; }

  .tk.svelte-xcdt2m { display: flex; flex-direction: column; gap: 6px; border-radius: 10px; background: var(--card); padding: 10px 10px 8px; box-shadow: var(--card-shadow);
    --sh-edge: var(--serif); --sh-mid: var(--text); }
  html[data-theme="light"] .tk.svelte-xcdt2m { --sh-edge: var(--text); --sh-mid: color-mix(in srgb, var(--text) 30%, white); }
  .tk.focused.svelte-xcdt2m { animation: svelte-xcdt2m-tkFocus 1.6s ease-out; }
  @keyframes svelte-xcdt2m-tkFocus { 0%, 40% { box-shadow: 0 0 0 1.5px color-mix(in srgb, var(--text) 45%, transparent); } 100% { box-shadow: var(--card-shadow); } }
  @media (hover: hover) { .tk.svelte-xcdt2m:hover { background: var(--hover-strong); } }

  .tk-top.svelte-xcdt2m { display: flex; align-items: flex-start; gap: 8px; }
  .tk-stop.svelte-xcdt2m { flex: none; width: 26px; height: 26px; margin: -3px -2px 0 0; border-radius: 7px; display: flex; align-items: center; justify-content: center;
    color: var(--muted); border: 1px solid var(--divider); }
  .tk-stop.svelte-xcdt2m svg:where(.svelte-xcdt2m) { width: 16px; height: 16px; }
  .tk-stop.svelte-xcdt2m:active { background: var(--hover-strong); color: var(--text); }
  @media (hover: hover) { .tk-stop.svelte-xcdt2m:hover { background: var(--hover-strong); color: var(--text); } }
  .tk-title-btn.svelte-xcdt2m { flex: 1; min-width: 0; display: flex; align-items: flex-start; gap: 4px; text-align: left; }
  .tk-title.svelte-xcdt2m { flex: 1; min-width: 0; font-size: 14px; line-height: 20px; color: var(--text); overflow-wrap: anywhere; }
  .tk-title.dim.svelte-xcdt2m { color: var(--serif); }
  .ic.svelte-xcdt2m { font-family: var(--icons); font-style: normal; font-feature-settings: "liga" 0; font-variation-settings: "opsz" 12, "wght" 620;
    font-size: 12px; line-height: 1; width: 12px; height: 20px; display: inline-flex; align-items: center; justify-content: center; flex: none; color: var(--muted); }
  .tk-meta.svelte-xcdt2m { display: flex; flex-direction: column; gap: 4px; font-size: 12.5px; line-height: 16px; color: var(--muted); overflow-wrap: anywhere; padding-bottom: 2px; }
  .tk-row.svelte-xcdt2m { display: flex; flex-wrap: wrap; align-items: baseline; column-gap: 8px; row-gap: 3px; min-width: 0; }
  .tk-row.svelte-xcdt2m b:where(.svelte-xcdt2m) { font-weight: 400; }
  .trunc.svelte-xcdt2m { max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .tk-link.svelte-xcdt2m { color: var(--coral); font-size: 12.5px; line-height: 16px; padding: 0; border-radius: 3px; }
  @media (hover: hover) { .tk-link.svelte-xcdt2m:hover { text-decoration: underline; text-underline-offset: 1px; } }
  .tk-body.svelte-xcdt2m { display: flex; flex-direction: column; gap: 6px; padding: 2px 0 6px; user-select: text; }
  .tk-pre.svelte-xcdt2m { background: var(--userbubble); border: 1px solid var(--divider); border-radius: 8px; padding: 8px 10px; margin: 0;
    font-size: 12.5px; line-height: 1.5; white-space: pre-wrap; overflow-wrap: anywhere; max-height: 200px; overflow: auto; color: var(--text); }
  .tk-out.svelte-xcdt2m { font-size: 13px; line-height: 18px; color: var(--serif); white-space: pre-wrap; overflow-wrap: anywhere; max-height: 240px; overflow: auto; }
  .tk-note.svelte-xcdt2m { font-size: 13px; line-height: 18px; color: var(--muted); }

  .shine.svelte-xcdt2m { color: var(--text); background-image: linear-gradient(120deg, var(--sh-edge) 25%, var(--sh-mid) 50%, var(--sh-edge) 75%);
    background-size: 200% 100%; background-position: 150% 0; -webkit-background-clip: text; background-clip: text;
    -webkit-text-fill-color: transparent; animation: svelte-xcdt2m-tkShine 3s infinite; }
  @keyframes svelte-xcdt2m-tkShine { 0%, 22% { background-position: 150% 0; animation-timing-function: cubic-bezier(.5,.05,.45,.95); } 76%, 100% { background-position: -50% 0; } }
  @media (prefers-reduced-motion: reduce) { .shine.svelte-xcdt2m { animation: none; background-position: 50% 0; } .tk.focused.svelte-xcdt2m { animation: none; } }
  .t7.svelte-xcdt2m { color: var(--serif); }
  .crit.svelte-xcdt2m { color: var(--crit); }
  .num.svelte-xcdt2m { font-variant-numeric: tabular-nums; }

  .tr.svelte-12m9xxu { display: flex; flex-direction: column; gap: 10px; overflow-wrap: anywhere; }
  .tr-model.svelte-12m9xxu { font-size: 12.5px; line-height: 16px; color: var(--muted); margin: 0; }
  .tr-user.svelte-12m9xxu { display: flex; justify-content: flex-end; }
  /* prompt 气泡：复用 Thread 用户气泡视觉（--userbubble 底、r14） */
  .bubble.svelte-12m9xxu { background: var(--userbubble); color: var(--text); border-radius: 14px; padding: 10px 15px; font-size: 14px; line-height: 1.5;
    max-width: 100%; word-break: break-word; white-space: pre-wrap; }
  /* 紧凑 markdown（官方 xd size="sm"）：14px、段距 8 */
  .tr-md.svelte-12m9xxu { font-size: 14px; line-height: 1.55; color: var(--text); min-width: 0; overflow-wrap: break-word; }
  .tr-md.svelte-12m9xxu p { margin: 0 0 8px; }
  .tr-md.svelte-12m9xxu p:last-child { margin-bottom: 0; }
  .tr-md.svelte-12m9xxu h1, .tr-md.svelte-12m9xxu h2, .tr-md.svelte-12m9xxu h3 { font-size: 15px; margin: 10px 0 6px; line-height: 1.3; }
  .tr-md.svelte-12m9xxu ul, .tr-md.svelte-12m9xxu ol { margin: 0 0 8px; padding-left: 20px; }
  .tr-md.svelte-12m9xxu li { margin: 2px 0; }
  .tr-md.svelte-12m9xxu pre { background: var(--userbubble); border: 1px solid var(--divider); border-radius: 10px; padding: 10px 12px; overflow-x: auto; margin: 0 0 8px; font-size: 12.5px; }
  .tr-md.svelte-12m9xxu code { font-family: ui-monospace, "SF Mono", Consolas, monospace; font-size: .9em; }
  .tr-md.svelte-12m9xxu :not(pre) > code { background: var(--hover); padding: 1px 5px; border-radius: 5px; }
  .tr-md.svelte-12m9xxu a { color: var(--coral); }
  .tr-md.svelte-12m9xxu img { max-width: 100%; border-radius: 8px; }
  .tr-md.svelte-12m9xxu table { border-collapse: collapse; font-size: 12.5px; margin: 0; }
  .tr-md.svelte-12m9xxu th, .tr-md.svelte-12m9xxu td { border: 1px solid var(--divider); padding: 4px 8px; }
  /* 子 agent 的工具调用：小行列表（名 + 摘要），描边卡 + 分隔线 */
  .tr-tools.svelte-12m9xxu { display: flex; flex-direction: column; border-radius: 8px; box-shadow: 0 0 0 1px var(--divider); overflow: hidden; }
  .tr-tool.svelte-12m9xxu { display: flex; align-items: baseline; gap: 6px; padding: 6px 10px; font-size: 13px; line-height: 18px; min-width: 0; }
  .tr-tool.svelte-12m9xxu + .tr-tool:where(.svelte-12m9xxu) { border-top: 1px solid var(--divider); }
  .tr-tname.svelte-12m9xxu { flex: none; color: var(--serif); }
  .tr-tsum.svelte-12m9xxu { flex: 1; min-width: 0; color: var(--muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .tr-think.svelte-12m9xxu { font-size: 13px; line-height: 18px; color: var(--muted); font-style: italic; }
  .tr-err.svelte-12m9xxu { font-size: 13px; line-height: 18px; color: var(--crit); white-space: pre-wrap; margin: 0; }
  .tr-star.svelte-12m9xxu { display: flex; align-items: center; height: 20px; }
  .tr-note.svelte-12m9xxu { font-size: 13px; line-height: 18px; color: var(--muted); }
  .tr-status.svelte-12m9xxu { font-size: 12.5px; line-height: 16px; color: var(--muted); padding-top: 8px; border-top: 1px solid var(--divider); margin: 0; }
  .sr.svelte-12m9xxu { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
  .t7.svelte-12m9xxu { color: var(--serif); }
  .num.svelte-12m9xxu { font-variant-numeric: tabular-nums; }

  .tp.svelte-tcs0hw { flex: 1; min-height: 0; display: flex; flex-direction: column; }
  .tp-scroll.svelte-tcs0hw { flex: 1; min-height: 0; overflow-y: auto; -webkit-overflow-scrolling: touch; scrollbar-gutter: stable; padding: 6px 12px 24px; display: flex; flex-direction: column; gap: 16px; }
  .tp-scroll.svelte-tcs0hw::-webkit-scrollbar { width: 6px; }
  .tp-scroll.svelte-tcs0hw::-webkit-scrollbar-thumb { background: color-mix(in srgb, var(--muted) 35%, transparent); border-radius: 3px; }
  .tp-tr.svelte-tcs0hw { padding-top: 10px; }

  .tp-sec.svelte-tcs0hw { display: flex; flex-direction: column; gap: 8px; }
  .tp-sech.svelte-tcs0hw { display: flex; align-items: center; gap: 6px; min-height: 24px; padding: 0 2px; }
  .tp-sech.svelte-tcs0hw h3:where(.svelte-tcs0hw) { margin: 0; font-size: 12.5px; line-height: 16px; font-weight: 400; color: var(--muted); }
  .tp-n.svelte-tcs0hw { font-size: 12.5px; line-height: 16px; color: var(--muted); }
  .tp-fold.svelte-tcs0hw { display: flex; align-items: center; gap: 6px; border-radius: 4px; padding: 2px 4px; margin-left: -4px; color: var(--muted); }
  @media (hover: hover) { .tp-fold.svelte-tcs0hw:hover h3:where(.svelte-tcs0hw), .tp-fold.svelte-tcs0hw:hover .tp-n:where(.svelte-tcs0hw) { color: var(--serif); } }
  .tp-clear.svelte-tcs0hw { margin-left: auto; font-size: 12.5px; line-height: 16px; color: var(--muted); padding: 3px 8px; border-radius: 7px; }
  .tp-clear.svelte-tcs0hw:active { background: var(--hover); }
  @media (hover: hover) { .tp-clear.svelte-tcs0hw:hover { background: var(--hover); color: var(--text); } }
  .tp-list.svelte-tcs0hw { display: flex; flex-direction: column; gap: 8px; }
  .tp-item.svelte-tcs0hw { display: contents; }

  /* 挂起横幅：卡片语言跟 TaskRow 一致（同 --card 底 + 同圆角），靠左缘一条 coral 竖线区分它是
     「状态解释」而不是又一条任务。呼吸点用 coral，与状态行菊花的慢呼吸同一语义。 */
  .tp-hold.svelte-tcs0hw { display: flex; flex-direction: column; gap: 6px; border-radius: 10px; background: var(--card); box-shadow: var(--card-shadow);
    border-left: 2px solid var(--coral); padding: 10px 12px; }
  .tp-hold-top.svelte-tcs0hw { display: flex; align-items: center; gap: 8px; min-width: 0; }
  .tp-hold-title.svelte-tcs0hw { font-size: 13.5px; line-height: 18px; color: var(--text); overflow-wrap: anywhere; }
  .tp-pulse.svelte-tcs0hw { flex: none; width: 7px; height: 7px; border-radius: 50%; background: var(--coral); animation: svelte-tcs0hw-tpPulse 2.4s ease-in-out infinite; }
  @keyframes svelte-tcs0hw-tpPulse { 0%, 100% { opacity: .35; transform: scale(.82); } 50% { opacity: 1; transform: scale(1); } }
  @media (prefers-reduced-motion: reduce) { .tp-pulse.svelte-tcs0hw { animation: none; opacity: .9; } }
  .tp-hold-p.svelte-tcs0hw, .tp-hold-sub.svelte-tcs0hw { margin: 0; font-size: 12.5px; line-height: 17px; color: var(--muted); overflow-wrap: anywhere; }
  .tp-hold-sub.svelte-tcs0hw { color: color-mix(in srgb, var(--muted) 78%, transparent); }
  .tp-hold-btn.svelte-tcs0hw { align-self: flex-start; margin-top: 2px; font-size: 12.5px; line-height: 16px; color: var(--serif);
    padding: 5px 10px; border-radius: 8px; background: var(--hover); }
  .tp-hold-btn.svelte-tcs0hw:disabled { opacity: .55; }
  .tp-hold-btn.svelte-tcs0hw:active { background: var(--hover-strong); }
  @media (hover: hover) { .tp-hold-btn.svelte-tcs0hw:not(:disabled):hover { background: var(--hover-strong); color: var(--text); } }

  .ic.svelte-tcs0hw { font-family: var(--icons); font-style: normal; font-feature-settings: "liga" 0; font-variation-settings: "opsz" 12, "wght" 620;
    font-size: 12px; line-height: 1; width: 12px; height: 16px; display: inline-flex; align-items: center; justify-content: center; flex: none; }

  /* 压上的转录视图头：返回 + 标题 + 种类词 */
  .tp-subhead.svelte-tcs0hw { flex: none; display: flex; align-items: center; gap: 8px; padding: 4px 10px 6px 6px; border-bottom: 1px solid var(--divider); }
  .tp-back.svelte-tcs0hw { width: 32px; height: 32px; border-radius: 8px; display: flex; align-items: center; justify-content: center; color: var(--serif); flex: none; }
  .tp-back.svelte-tcs0hw .ic:where(.svelte-tcs0hw) { transform: scaleX(-1); font-size: 16px; width: 16px; height: 16px; font-variation-settings: "opsz" 16, "wght" 533; }
  .tp-back.svelte-tcs0hw:active { background: var(--hover); }
  @media (hover: hover) { .tp-back.svelte-tcs0hw:hover { background: var(--hover); color: var(--text); } }
  .tp-subtitle.svelte-tcs0hw { flex: 1; min-width: 0; font-size: 14px; color: var(--text); }
  .tp-subkind.svelte-tcs0hw { flex: none; font-size: 12px; color: var(--muted); background: var(--hover); border-radius: 7px; padding: 2px 8px; }
  .trunc.svelte-tcs0hw { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

  .tp-empty.svelte-tcs0hw { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 12px; padding: 40px 24px; text-align: center; color: var(--text); }
  .tp-empty.svelte-tcs0hw p:where(.svelte-tcs0hw) { margin: 0; font-size: 14px; line-height: 20px; max-width: 36ch; overflow-wrap: anywhere; }
  .tp-empty-ic.svelte-tcs0hw { color: color-mix(in srgb, var(--text) 35%, transparent); display: flex; }
  .tp-empty-ic.svelte-tcs0hw svg { width: 28px; height: 28px; }
  .num.svelte-tcs0hw { font-variant-numeric: tabular-nums; }

  .iv-stage.svelte-1hoo0r { position: absolute; inset: 0; overflow: hidden; display: flex; align-items: center; justify-content: center; }
  .iv-blur.svelte-1hoo0r { position: absolute; max-width: 100%; max-height: 100%; object-fit: contain; filter: blur(18px); transform: scale(1.06); opacity: .6; }
  .iv-img.svelte-1hoo0r { max-width: 100%; max-height: 100%; object-fit: contain; will-change: transform; opacity: 0; user-select: none; -webkit-user-drag: none; -webkit-touch-callout: none; }
  .iv-img.ready.svelte-1hoo0r { opacity: 1; transition: opacity var(--mo-quick) var(--ea-fade); }
  .iv-spin.svelte-1hoo0r { position: absolute; width: 34px; height: 34px; }
  .iv-spin.svelte-1hoo0r span:where(.svelte-1hoo0r) { display: block; width: 100%; height: 100%; border-radius: 50%; border: 3px solid rgba(255,255,255,.25); border-top-color: rgba(255,255,255,.92); animation: svelte-1hoo0r-ivspin .8s linear infinite; }
  @keyframes svelte-1hoo0r-ivspin { to { transform: rotate(360deg); } }
  .iv-err.svelte-1hoo0r { position: absolute; display: flex; flex-direction: column; align-items: center; gap: 10px; color: rgba(255,255,255,.82); }
  .iv-err.svelte-1hoo0r p:where(.svelte-1hoo0r) { font-size: 14px; }
  .iv-err.svelte-1hoo0r button:where(.svelte-1hoo0r) { padding: 7px 20px; border-radius: 999px; background: rgba(255,255,255,.16); color: #fff; font-size: 14px; -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); }
  .iv-err.svelte-1hoo0r button:where(.svelte-1hoo0r):active { background: rgba(255,255,255,.26); }

  .vp-wrap.svelte-lbno5h { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; will-change: transform; background: #000; }
  .vp-stage.svelte-lbno5h { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; }
  .vp-video.svelte-lbno5h { max-width: 100%; max-height: 100%; width: 100%; height: 100%; object-fit: contain; background: #000; }

  .vp-spin.svelte-lbno5h { position: absolute; width: 40px; height: 40px; pointer-events: none; }
  .vp-spin.svelte-lbno5h span:where(.svelte-lbno5h) { display: block; width: 100%; height: 100%; border-radius: 50%; border: 3px solid rgba(255,255,255,.25); border-top-color: #fff; animation: svelte-lbno5h-vpspin .8s linear infinite; }
  @keyframes svelte-lbno5h-vpspin { to { transform: rotate(360deg); } }

  .vp-err.svelte-lbno5h { position: absolute; display: flex; flex-direction: column; align-items: center; gap: 10px; color: rgba(255,255,255,.85); padding: 0 30px; text-align: center; }
  .vp-err.svelte-lbno5h button:where(.svelte-lbno5h) { padding: 7px 20px; border-radius: 999px; background: rgba(255,255,255,.16); color: #fff; font-size: 14px; }
  .vp-err.svelte-lbno5h button:where(.svelte-lbno5h):active { background: rgba(255,255,255,.26); }

  .vp-center.svelte-lbno5h { position: absolute; width: 74px; height: 74px; border-radius: 50%; display: flex; align-items: center; justify-content: center; background: rgba(0,0,0,.4); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); color: #fff; }
  .vp-center.svelte-lbno5h svg:where(.svelte-lbno5h) { width: 38px; height: 38px; }
  .vp-center.svelte-lbno5h:active { background: rgba(0,0,0,.55); transform: scale(.96); }

  /* —— 双击跳转半月指示 —— */
  .vp-skip.svelte-lbno5h { position: absolute; top: 0; bottom: 0; width: 38%; display: flex; align-items: center; justify-content: center; pointer-events: none; overflow: hidden; }
  .vp-skip.left.svelte-lbno5h { left: 0; border-radius: 0 100vh 100vh 0 / 0 50% 50% 0; background: radial-gradient(closest-side at 30% 50%, rgba(255,255,255,.14), rgba(255,255,255,.05) 70%, transparent); }
  .vp-skip.right.svelte-lbno5h { right: 0; border-radius: 100vh 0 0 100vh / 50% 0 0 50%; background: radial-gradient(closest-side at 70% 50%, rgba(255,255,255,.14), rgba(255,255,255,.05) 70%, transparent); }
  .vp-skip-in.svelte-lbno5h { display: flex; flex-direction: column; align-items: center; gap: 7px; color: #fff; animation: svelte-lbno5h-vpSkipPop .5s ease; }
  .vp-skip-in.svelte-lbno5h span:where(.svelte-lbno5h) { font-size: 13px; font-weight: 500; text-shadow: 0 1px 3px rgba(0,0,0,.5); }
  @keyframes svelte-lbno5h-vpSkipPop { from { transform: scale(.82); opacity: .4; } to { transform: scale(1); opacity: 1; } }
  .vp-skip-arrows.svelte-lbno5h { display: flex; gap: 3px; }
  .vp-skip-arrows.rev.svelte-lbno5h { flex-direction: row-reverse; }
  .vp-skip-arrows.svelte-lbno5h i:where(.svelte-lbno5h) { width: 0; height: 0; border-style: solid; border-width: 7px 0 7px 11px; border-color: transparent transparent transparent #fff; opacity: .5; animation: svelte-lbno5h-vpArr .75s infinite; }
  .vp-skip-arrows.rev.svelte-lbno5h i:where(.svelte-lbno5h) { transform: rotate(180deg); }
  .vp-skip-arrows.svelte-lbno5h i:where(.svelte-lbno5h):nth-child(2) { animation-delay: .12s; }
  .vp-skip-arrows.svelte-lbno5h i:where(.svelte-lbno5h):nth-child(3) { animation-delay: .24s; }
  @keyframes svelte-lbno5h-vpArr { 0%, 100% { opacity: .35; } 40% { opacity: 1; } }

  /* —— 长按 2x chip —— */
  .vp-2x.svelte-lbno5h { position: absolute; top: max(14px, var(--sat)); left: 50%; transform: translateX(-50%); display: flex; align-items: center; gap: 6px;
    padding: 7px 16px; border-radius: 999px; background: rgba(0,0,0,.55); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
    color: #fff; font-size: 14px; font-weight: 600; pointer-events: none; animation: svelte-lbno5h-vp2xIn .18s ease; }
  .vp-2x.svelte-lbno5h svg:where(.svelte-lbno5h) { width: 18px; height: 18px; }
  @keyframes svelte-lbno5h-vp2xIn { from { opacity: 0; transform: translateX(-50%) scale(.9); } to { opacity: 1; transform: translateX(-50%) scale(1); } }

  /* —— 卡顿→流畅提示 —— */
  .vp-hint.svelte-lbno5h { position: absolute; bottom: 120px; left: 50%; transform: translateX(-50%); white-space: nowrap;
    padding: 9px 18px; border-radius: 999px; background: rgba(0,0,0,.6); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);
    color: #fff; font-size: 13px; animation: svelte-lbno5h-vp2xIn .2s ease; }
  .vp-hint.svelte-lbno5h:active { background: rgba(255,255,255,.2); }

  /* —— 底部控件：两行（时间+功能钮 / 全宽进度条），渐变底、安全区内、自动显隐 —— */
  .vp-bar.svelte-lbno5h { position: absolute; left: 0; right: 0; bottom: 0; z-index: 6; display: flex; flex-direction: column; gap: 2px;
    padding: 34px 14px max(12px, var(--sab)); background: linear-gradient(to top, rgba(0,0,0,.66), rgba(0,0,0,0));
    opacity: 0; transform: translateY(8px); transition: opacity .2s, transform .2s; pointer-events: none; }
  .vp-bar.show.svelte-lbno5h { opacity: 1; transform: none; pointer-events: auto; }
  .vp-row.svelte-lbno5h { display: flex; align-items: center; gap: 6px; }
  .vp-sp.svelte-lbno5h { flex: 1; }
  .vp-t.svelte-lbno5h { color: #fff; font-size: 13px; font-variant-numeric: tabular-nums; text-shadow: 0 1px 2px rgba(0,0,0,.5); padding-left: 2px; }
  .vp-t.svelte-lbno5h em:where(.svelte-lbno5h) { font-style: normal; color: rgba(255,255,255,.6); }
  .vp-ic.svelte-lbno5h { width: 38px; height: 38px; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: #fff; flex: none; }
  .vp-ic.svelte-lbno5h svg:where(.svelte-lbno5h) { width: 22px; height: 22px; }
  .vp-ic.svelte-lbno5h:active { background: rgba(255,255,255,.16); }

  .vp-track.svelte-lbno5h { position: relative; height: 28px; display: flex; align-items: center; cursor: pointer; touch-action: none; }
  .vp-rail.svelte-lbno5h { position: absolute; left: 0; right: 0; height: 3px; border-radius: 2px; background: rgba(255,255,255,.28); transition: height .12s; }
  .vp-buf.svelte-lbno5h { position: absolute; left: 0; height: 3px; border-radius: 2px; background: rgba(255,255,255,.45); transition: height .12s; }
  .vp-fill.svelte-lbno5h { position: absolute; left: 0; height: 3px; border-radius: 2px; background: #fff; transition: height .12s; }
  .vp-knob.svelte-lbno5h { position: absolute; top: 50%; width: 13px; height: 13px; border-radius: 50%; background: #fff; transform: translate(-50%, -50%); box-shadow: 0 1px 4px rgba(0,0,0,.4); transition: width .12s, height .12s; }
  .vp-track.live.svelte-lbno5h .vp-rail:where(.svelte-lbno5h), .vp-track.live.svelte-lbno5h .vp-buf:where(.svelte-lbno5h), .vp-track.live.svelte-lbno5h .vp-fill:where(.svelte-lbno5h) { height: 5px; }
  .vp-track.live.svelte-lbno5h .vp-knob:where(.svelte-lbno5h) { width: 17px; height: 17px; }
  .vp-bubble.svelte-lbno5h { position: absolute; bottom: 30px; transform: translateX(-50%); padding: 5px 12px; border-radius: 999px;
    background: rgba(0,0,0,.72); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
    color: #fff; font-size: 13px; font-variant-numeric: tabular-nums; white-space: nowrap; pointer-events: none; }

  /* —— ⋮ 设置菜单：底部弹层 —— */
  .vp-sheet-back.svelte-lbno5h { position: absolute; inset: 0; z-index: 8; background: rgba(0,0,0,.45); animation: svelte-lbno5h-vpFade .16s ease; }
  @keyframes svelte-lbno5h-vpFade { from { opacity: 0; } to { opacity: 1; } }
  .vp-sheet.svelte-lbno5h { position: absolute; left: 10px; right: 10px; bottom: max(10px, var(--sab)); border-radius: 18px; overflow: hidden;
    background: rgba(28,28,30,.96); -webkit-backdrop-filter: blur(20px); backdrop-filter: blur(20px);
    padding: 6px 0; animation: svelte-lbno5h-vpSheetUp .22s cubic-bezier(.22,1,.36,1); }
  @keyframes svelte-lbno5h-vpSheetUp { from { transform: translateY(28px); opacity: 0; } to { transform: none; opacity: 1; } }
  .vp-mrow.svelte-lbno5h { display: flex; align-items: center; gap: 14px; width: 100%; padding: 13px 18px; color: #fff; font-size: 15px; text-align: left; }
  .vp-mrow.svelte-lbno5h:active { background: rgba(255,255,255,.08); }
  .vp-mrow.svelte-lbno5h > svg:where(.svelte-lbno5h) { width: 21px; height: 21px; flex: none; color: rgba(255,255,255,.85); }
  .vp-mrow.svelte-lbno5h span:where(.svelte-lbno5h) { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
  .vp-mrow.svelte-lbno5h span:where(.svelte-lbno5h) small:where(.svelte-lbno5h) { font-size: 12px; color: rgba(255,255,255,.5); font-weight: 400; }
  .vp-mrow.svelte-lbno5h em:where(.svelte-lbno5h) { font-style: normal; color: rgba(255,255,255,.55); font-size: 13.5px; flex: none; }
  .vp-mrow.svelte-lbno5h .chev:where(.svelte-lbno5h) { width: 16px; height: 16px; color: rgba(255,255,255,.4); }
  .vp-mrow.head.svelte-lbno5h { font-weight: 600; border-bottom: 0.5px solid rgba(255,255,255,.12); margin-bottom: 4px; }
  .vp-mrow.head.svelte-lbno5h > svg:where(.svelte-lbno5h) { width: 18px; height: 18px; }
  .vp-mrow.opt.svelte-lbno5h { padding-left: 22px; }
  .vp-mrow.svelte-lbno5h .ck:where(.svelte-lbno5h) { width: 18px; height: 18px; color: #fff; flex: none; }

  .ap.svelte-152yw44 { display: flex; align-items: center; gap: 12px; width: 100%; }
  .ap-play.svelte-152yw44 { width: 46px; height: 46px; border-radius: 50%; flex: none; display: flex; align-items: center; justify-content: center;
    background: var(--g-primary, #1a73e8); color: #fff; transition: transform .12s, filter .12s; }
  .ap-play.svelte-152yw44 svg:where(.svelte-152yw44) { width: 24px; height: 24px; margin-left: 1px; }
  .ap-play.svelte-152yw44:active { transform: scale(.94); filter: brightness(.95); }
  .ap-play.svelte-152yw44:disabled { opacity: .75; }
  .ap-spin.svelte-152yw44 { width: 20px; height: 20px; border-radius: 50%; border: 2.5px solid rgba(255,255,255,.45); border-top-color: #fff; animation: svelte-152yw44-apspin .8s linear infinite; }
  @keyframes svelte-152yw44-apspin { to { transform: rotate(360deg); } }
  .ap-mid.svelte-152yw44 { flex: 1; min-width: 0; }
  .ap-wave.svelte-152yw44 { display: block; width: 100%; height: 40px; touch-action: none; cursor: pointer; }
  .ap-time.svelte-152yw44 { flex: none; font-size: 12px; font-variant-numeric: tabular-nums; color: var(--g-on-variant, #5f6368); min-width: 74px; text-align: right; }

  /* 暗色（查看器内"正在播放"）*/
  .ap.dark.svelte-152yw44 .ap-play:where(.svelte-152yw44) { background: rgba(255,255,255,.18); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); }
  .ap.dark.svelte-152yw44 .ap-play:where(.svelte-152yw44):active { background: rgba(255,255,255,.3); }
  .ap.dark.svelte-152yw44 .ap-time:where(.svelte-152yw44) { color: rgba(255,255,255,.8); }

  /* 配色令牌：与 mdeditor/editor.css 的 .mde 同名同值（阅读态/编辑态观感必须一致，改色两边一起改）。
     Anthropic/Claude 象牙白暖调：纸面 #faf9f5、字 #141413、强调 Claude 珊瑚 #d97757。 */
  .doc-root.svelte-119lbgn {
    --md-bg: #faf9f5; --md-bg-2: #f3f1eb; --md-bg-3: #eae7df; --md-panel: #fffefb;
    --md-line: #e7e4db; --md-line-2: #d6d2c6;
    --md-fg: #141413; --md-fg-2: #5f5e59; --md-fg-3: #8a8983; --md-fg-4: #b4b2aa;
    --md-accent: #d97757; --md-accent-deep: #b5532f; --md-accent-soft: rgba(217, 119, 87, .16); --md-accent-tint: rgba(217, 119, 87, .085);
    --md-link: #2f6fbf; --md-mark: rgba(235, 196, 98, .42); --md-math: #3f7a5a; --md-danger: #c2472f;
    --md-ok: #4f7d5a; --md-ok-bg: #e8efe6;
    --md-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    --md-shadow-sm: 0 8px 24px rgba(70, 56, 34, .14), 0 1px 4px rgba(70, 56, 34, .06), 0 0 0 .5px rgba(20, 20, 19, .07);
    --md-ease: cubic-bezier(.2, .8, .2, 1);
    position: absolute; inset: 0; background: var(--md-bg); color: var(--md-fg); display: flex; flex-direction: column;
    padding-bottom: var(--kb, 0px);
  }

  .doc-head.svelte-119lbgn { flex: none; display: flex; align-items: center; gap: 8px; padding: max(8px, var(--sat)) 10px 8px;
    border-bottom: 1px solid var(--md-line); background: var(--md-bg); }
  .doc-btn.svelte-119lbgn { width: 36px; height: 36px; border-radius: 10px; display: flex; align-items: center; justify-content: center; color: var(--md-fg); flex: none;
    transition: background var(--mo-tap, 90ms); }
  .doc-btn.svelte-119lbgn svg:where(.svelte-119lbgn) { width: 21px; height: 21px; }
  @media (hover: hover) { .doc-btn.svelte-119lbgn:hover { background: var(--md-bg-2); } }
  .doc-btn.svelte-119lbgn:active { background: var(--md-bg-3); }
  .doc-title-wrap.svelte-119lbgn { flex: 1; min-width: 0; display: flex; align-items: center; gap: 6px; }
  .doc-title.svelte-119lbgn { min-width: 0; font-size: 15px; font-weight: 600; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; letter-spacing: -.1px; }
  .doc-dirty.svelte-119lbgn { color: var(--md-accent); font-size: 10px; flex: none; }

  /* 阅读/编辑/源码 三段切换：暖灰轨道 + 白色滑帽 */
  .doc-seg.svelte-119lbgn { position: relative; display: flex; background: var(--md-bg-2); border: 1px solid rgba(20, 20, 19, .05); border-radius: 10px; padding: 2px; flex: none; }
  .doc-seg-cap.svelte-119lbgn { position: absolute; top: 2px; left: 2px; width: calc(33.333% - 1.4px); height: calc(100% - 4px); background: #fff; border-radius: 8px;
    box-shadow: 0 1px 3px rgba(70, 56, 34, .14), 0 0 0 .5px rgba(20, 20, 19, .06); transition: transform var(--mo-quick, 200ms) var(--md-ease); }
  .doc-seg.svelte-119lbgn button:where(.svelte-119lbgn) { position: relative; z-index: 1; padding: 5px 11px; font-size: 12.5px; color: var(--md-fg-2); font-weight: 500; flex: 1 0 auto;
    border-radius: 8px; transition: color var(--mo-micro, 140ms); }
  .doc-seg.svelte-119lbgn button.on:where(.svelte-119lbgn) { color: var(--md-fg); font-weight: 600; }

  /* CM6 编辑器容器（内部样式在 mdeditor/editor.css，全局注入防 Svelte 剪枝） */
  .doc-cm.svelte-119lbgn { position: absolute; inset: 0; }

  .doc-save.svelte-119lbgn { flex: none; padding: 7px 15px; border-radius: 999px; background: var(--md-accent); color: #fff; font-size: 13.5px; font-weight: 600;
    transition: background var(--mo-micro, 140ms), color var(--mo-micro, 140ms), opacity var(--mo-micro, 140ms); }
  .doc-save.svelte-119lbgn:disabled { opacity: .45; }
  .doc-save.saved.svelte-119lbgn { background: var(--md-ok-bg); color: var(--md-ok); opacity: 1; }
  .doc-save.svelte-119lbgn:not(:disabled):active { filter: brightness(.94); }

  .doc-body.svelte-119lbgn { flex: 1; min-height: 0; position: relative; }
  .doc-center.svelte-119lbgn { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 12px; color: var(--md-fg-2); }
  .doc-spin.svelte-119lbgn { width: 30px; height: 30px; border-radius: 50%; border: 3px solid rgba(20, 20, 19, .1); border-top-color: var(--md-accent); animation: svelte-119lbgn-docspin .8s linear infinite; }
  @keyframes svelte-119lbgn-docspin { to { transform: rotate(360deg); } }
  /* 分块渲染进行中：文末小转圈（正文已可读可滚，不挡内容） */
  .doc-rendering.svelte-119lbgn { display: flex; justify-content: center; padding: 14px 0 6px; }
  .doc-rendering.svelte-119lbgn .doc-spin:where(.svelte-119lbgn) { width: 20px; height: 20px; border-width: 2.5px; }
  .doc-err.svelte-119lbgn button:where(.svelte-119lbgn) { padding: 7px 20px; border-radius: 999px; background: var(--md-accent); color: #fff; font-size: 14px; }
  .doc-ph-name.svelte-119lbgn { font-weight: 600; color: var(--md-fg); }
  .doc-dl.svelte-119lbgn { padding: 8px 20px; border-radius: 999px; background: var(--md-accent); color: #fff; font-size: 14px; }

  .doc-scroll.svelte-119lbgn { position: absolute; inset: 0; overflow-y: auto; -webkit-overflow-scrolling: touch; }
  .doc-edit.svelte-119lbgn { position: absolute; inset: 0; width: 100%; height: 100%; resize: none; border: 0; outline: none; background: var(--md-bg); color: var(--md-fg);
    padding: 16px; font-family: var(--md-mono); font-size: 14px; line-height: 1.7; -webkit-overflow-scrolling: touch; caret-color: var(--md-accent); }

  .doc-page.svelte-119lbgn { max-width: 760px; margin: 0 auto; padding: 14px 20px 60px; }

  /* —— 笔记属性（frontmatter）面板 —— */
  .doc-props.svelte-119lbgn { border-bottom: 1px solid var(--md-line); padding: 0 0 10px; }
  .doc-props-h.svelte-119lbgn { display: flex; align-items: center; gap: 4px; font-size: 13px; color: var(--md-fg-3); font-weight: 550; padding: 6px 0; transition: color var(--mo-micro, 140ms); }
  .doc-props-h.svelte-119lbgn:active { color: var(--md-fg-2); }
  .doc-chev.svelte-119lbgn { width: 14px; height: 14px; transition: transform .18s var(--md-ease); transform: rotate(90deg); }
  .doc-chev.closed.svelte-119lbgn { transform: rotate(0deg); }
  .doc-props-n.svelte-119lbgn { margin-left: 2px; font-size: 11.5px; background: var(--md-bg-2); color: var(--md-fg-3); padding: 1px 7px; border-radius: 999px; }
  .doc-props-tbl.svelte-119lbgn { display: flex; flex-direction: column; }
  .doc-prop.svelte-119lbgn { display: flex; gap: 10px; padding: 4px 0; min-height: 30px; align-items: flex-start; font-size: 14px; }
  .doc-prop-k.svelte-119lbgn { flex: none; width: 116px; display: flex; align-items: center; gap: 7px; color: var(--md-fg-2); overflow: hidden; padding-top: 2px; }
  .doc-prop-k.svelte-119lbgn svg { width: 15px; height: 15px; flex: none; opacity: .72; }
  .doc-prop-k.svelte-119lbgn span:where(.svelte-119lbgn) { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .doc-prop-v.svelte-119lbgn { flex: 1; min-width: 0; color: var(--md-fg); display: flex; flex-wrap: wrap; gap: 5px; align-items: center; word-break: break-word; }
  .doc-prop-txt.svelte-119lbgn { white-space: pre-wrap; }
  .doc-prop-empty.svelte-119lbgn { color: var(--md-fg-4); }
  .doc-prop-json.svelte-119lbgn { font-family: var(--md-mono); font-size: 12.5px; color: #bc5215; background: rgba(188, 82, 21, .08); border-radius: 5px; padding: 2px 7px; word-break: break-all; }
  .doc-chip.svelte-119lbgn { background: var(--md-bg-2); border-radius: 999px; padding: 2px 10px; font-size: 13px; word-break: break-all; }
  .doc-chip-tag.svelte-119lbgn { color: var(--md-accent-deep); background: var(--md-accent-tint); }
  /* 只读勾选框自绘（原生 disabled 态是一坨灰，和编辑态的珊瑚勾对不上） */
  .doc-prop-v.svelte-119lbgn input[type="checkbox"]:where(.svelte-119lbgn) {
    appearance: none; -webkit-appearance: none; width: 16px; height: 16px; margin: 0; border-radius: 5px;
    border: 1.6px solid var(--md-line-2); background: #fff; position: relative; opacity: 1;
  }
  .doc-prop-v.svelte-119lbgn input[type="checkbox"]:where(.svelte-119lbgn):checked { background: var(--md-accent); border-color: var(--md-accent); }
  .doc-prop-v.svelte-119lbgn input[type="checkbox"]:where(.svelte-119lbgn):checked::after {
    content: ''; position: absolute; left: 4.2px; top: 1px; width: 3.8px; height: 7.6px;
    border: solid #fff; border-width: 0 2px 2px 0; transform: rotate(43deg);
  }

  /* —— Obsidian 语法（{@html} 注入，须 :global 保住运行时类）—— */
  .doc-page.svelte-119lbgn a.wk { color: var(--md-accent-deep); text-decoration: none; border-bottom: 1px solid rgba(181, 83, 47, .35); cursor: pointer; word-break: break-all; }
  .doc-page.svelte-119lbgn a.wk:active { background: var(--md-accent-tint); }
  .doc-page.svelte-119lbgn .ob-tag { color: var(--md-accent-deep); background: var(--md-accent-tint); border-radius: 999px; padding: 1px 8px; font-size: .88em; }
  .doc-page.svelte-119lbgn mark { background: var(--md-mark); border-radius: 3px; padding: 0 2px; color: inherit; }
  .doc-page.svelte-119lbgn img.wk-embed { max-width: 100%; border-radius: 8px; }
  .doc-page.svelte-119lbgn .callout { margin: .8em 0; border-radius: 10px; background: rgba(var(--co), .07); border-left: 3px solid rgb(var(--co)); padding: 10px 14px; }
  .doc-page.svelte-119lbgn .co-title { display: flex; align-items: center; gap: 7px; font-weight: 650; color: rgb(var(--co)); font-size: .98em; }
  .doc-page.svelte-119lbgn .co-title svg { width: 17px; height: 17px; flex: none; }
  .doc-page.svelte-119lbgn .co-body { margin-top: 4px; }
  .doc-page.svelte-119lbgn .co-body > :last-child { margin-bottom: 0; }

  /* Markdown 预览排版（象牙白文档）——数值与 mdeditor/editor.css 的 Live Preview 保持一致，
     两个模式来回切时不该有观感落差（字号/行高/间距/块样式全对齐；字体统一走全局 --sans）*/
  .doc-md.svelte-119lbgn { font-size: 16px; line-height: 1.72; word-wrap: break-word; padding-top: 2px; }
  .doc-md.svelte-119lbgn * { -webkit-touch-callout: default; }   /* 长按可起选择/复制（body 全局是禁的）*/
  .doc-md.svelte-119lbgn ::selection { background: var(--md-accent-soft); }
  .doc-md.svelte-119lbgn h1 { font-size: 1.7em; font-weight: 700; margin: 1.05em 0 .45em; line-height: 1.35; }
  .doc-md.svelte-119lbgn h2 { font-size: 1.4em; font-weight: 700; margin: 1em 0 .4em; padding-bottom: .2em; border-bottom: 1px solid var(--md-line); }
  .doc-md.svelte-119lbgn h3 { font-size: 1.2em; font-weight: 700; margin: .9em 0 .35em; }
  .doc-md.svelte-119lbgn h4 { font-size: 1.05em; font-weight: 700; margin: .85em 0 .3em; }
  .doc-md.svelte-119lbgn h5 { font-size: 1em; font-weight: 700; margin: .85em 0 .3em; }
  .doc-md.svelte-119lbgn h6 { font-size: .95em; font-weight: 700; color: var(--md-fg-2); margin: .85em 0 .3em; }
  /* 编辑态两段之间隔着一整行空行（≈60px），阅读态放宽到 ≈50px，比例与 Obsidian 两态一致；
     真要一模一样得把编辑态空行压扁，那样光标在空行上会忽高忽低，不划算 */
  .doc-md.svelte-119lbgn p { margin: 1.4em 0; }
  .doc-md.svelte-119lbgn ul, .doc-md.svelte-119lbgn ol { margin: .5em 0; padding-left: 1.5em; }
  .doc-md.svelte-119lbgn li { margin: .3em 0; }
  .doc-md.svelte-119lbgn li::marker { color: var(--md-accent); }
  /* 任务勾选框：跟编辑态自绘的那只对齐（原生 checkbox 太小、形状也不同）*/
  .doc-md.svelte-119lbgn li input[type="checkbox"] {
    appearance: none; -webkit-appearance: none; width: 17px; height: 17px; border-radius: 5px;
    border: 1.6px solid var(--md-line-2); background: #fff; vertical-align: -3px; margin: 0 4px 0 0; position: relative;
  }
  .doc-md.svelte-119lbgn li input[type="checkbox"]:checked { background: var(--md-accent); border-color: var(--md-accent); }
  .doc-md.svelte-119lbgn li input[type="checkbox"]:checked::after {
    content: ''; position: absolute; left: 4.6px; top: 1.4px; width: 4px; height: 8px;
    border: solid #fff; border-width: 0 2px 2px 0; transform: rotate(43deg);
  }
  .doc-md.svelte-119lbgn a { color: var(--md-link); text-decoration: none; }
  .doc-md.svelte-119lbgn blockquote { margin: .7em 0; padding: .2em 16px; border-left: 3px solid var(--md-line-2); color: var(--md-fg-2); }
  .doc-md.svelte-119lbgn code { background: var(--md-bg-2); border-radius: 5px; padding: .1em .28em; font-family: var(--md-mono); font-size: .88em; }
  .doc-md.svelte-119lbgn pre { background: var(--md-bg-2); border: 1px solid var(--md-line); border-radius: 10px; padding: 8px 14px; overflow-x: auto; margin: .7em 0; }
  .doc-md.svelte-119lbgn pre code { background: none; padding: 0; font-size: 13.5px; line-height: 1.6; }
  /* 代码块围栏头（语言 + 复制）：编辑态有，阅读态也补上，两边同一副长相 */
  .doc-md.svelte-119lbgn .doc-fence { display: flex; align-items: center; gap: 10px; white-space: normal; margin-bottom: 4px; font-family: var(--sans); }
  .doc-md.svelte-119lbgn .doc-fence-lang { color: var(--md-fg-3); font-size: 11.5px; text-transform: lowercase; letter-spacing: .3px; }
  .doc-md.svelte-119lbgn .doc-fence-copy { margin-left: auto; border: 1px solid var(--md-line); background: var(--md-panel); color: var(--md-fg-2); font-size: 11.5px; padding: 2px 10px; border-radius: 999px;
    transition: background var(--mo-micro, 140ms), color var(--mo-micro, 140ms); }
  .doc-md.svelte-119lbgn .doc-fence-copy:active { background: var(--md-bg-3); }
  .doc-md.svelte-119lbgn img { max-width: 100%; border-radius: 8px; }
  .doc-md.svelte-119lbgn table { border-collapse: collapse; width: 100%; margin: .7em 0; display: block; overflow-x: auto; }
  .doc-md.svelte-119lbgn th, .doc-md.svelte-119lbgn td { border: 1px solid var(--md-line); padding: 7px 11px; text-align: left; font-size: .95em; }
  .doc-md.svelte-119lbgn th { background: var(--md-bg-2); font-weight: 650; }
  .doc-md.svelte-119lbgn hr { border: 0; border-top: 1px solid var(--md-line); margin: 1.2em 0; }

  /* —— 文末尾栏：反向链接 / 出链 / 词数（阅读态挂 .doc-tailhost，编辑态被 CM 收编进正文末尾）—— */
  .doc-tail[hidden].svelte-119lbgn { display: none; }
  .doc-links.svelte-119lbgn { margin-top: 34px; border-top: 1px solid var(--md-line); padding-top: 12px; display: flex; flex-direction: column; gap: 6px; }
  .doc-lk-h.svelte-119lbgn { display: flex; align-items: center; gap: 6px; font-size: 13px; color: var(--md-fg-3); font-weight: 550; margin: 8px 0 2px; }
  .doc-lk-h.svelte-119lbgn svg:where(.svelte-119lbgn) { width: 14px; height: 14px; }
  .doc-lk-n.svelte-119lbgn { font-size: 11.5px; background: var(--md-bg-2); color: var(--md-fg-3); padding: 1px 7px; border-radius: 999px; }
  .doc-bls.svelte-119lbgn { display: flex; flex-direction: column; gap: 8px; }
  .doc-bl.svelte-119lbgn { text-align: left; background: var(--md-panel); border: 1px solid var(--md-line); border-radius: 12px; padding: 9px 12px;
    transition: background var(--mo-micro, 140ms), border-color var(--mo-micro, 140ms); }
  @media (hover: hover) { .doc-bl.svelte-119lbgn:hover { border-color: var(--md-line-2); background: #fff; } }
  .doc-bl.svelte-119lbgn:active { background: var(--md-bg-2); }
  .doc-bl-name.svelte-119lbgn { font-size: 14px; font-weight: 600; color: var(--md-accent-deep); display: flex; align-items: center; gap: 6px; min-width: 0; }
  .doc-bl-n.svelte-119lbgn { flex: none; font-size: 11px; background: var(--md-accent-tint); color: var(--md-accent-deep); border-radius: 999px; padding: 0 6px; }
  .doc-bl-x.svelte-119lbgn { margin-top: 4px; font-size: 12.5px; color: var(--md-fg-2); line-height: 1.55; word-break: break-all;
    display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
  .doc-bl-x.svelte-119lbgn b { color: var(--md-fg); background: var(--md-mark); font-weight: 600; border-radius: 2px; }
  .doc-outs.svelte-119lbgn { display: flex; flex-wrap: wrap; gap: 7px; }
  .doc-out.svelte-119lbgn { font-size: 13px; color: var(--md-accent-deep); background: var(--md-accent-tint); border: 1px solid rgba(181, 83, 47, .18); border-radius: 999px; padding: 4px 12px;
    max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; transition: background var(--mo-micro, 140ms); }
  .doc-out.svelte-119lbgn:active { background: var(--md-accent-soft); }
  .doc-out.dead.svelte-119lbgn { color: var(--md-fg-3); background: var(--md-bg-2); border-color: var(--md-line); border-style: dashed; }
  .doc-stats.svelte-119lbgn { margin-top: 26px; padding: 10px 0 4px; text-align: center; font-size: 12px; color: var(--md-fg-4); }

  .doc-restored.svelte-119lbgn { position: absolute; left: 50%; bottom: calc(16px + var(--kb, 0px)); transform: translateX(-50%); background: rgba(217, 119, 87, .96); color: #fff; font-size: 12.5px; padding: 6px 14px; border-radius: 999px; pointer-events: none; box-shadow: var(--md-shadow-sm); }
  .doc-toast.svelte-119lbgn { position: absolute; left: 50%; bottom: calc(54px + var(--kb, 0px)); transform: translateX(-50%); background: rgba(20, 20, 19, .86); color: #faf9f5; font-size: 13px; padding: 8px 18px; border-radius: 999px; pointer-events: none; box-shadow: var(--md-shadow-sm); }

  .pdf-root.svelte-19uo2cs { position: absolute; inset: 0; background: #f3f3f5; color: #1d1d1f; display: flex; flex-direction: column; }
  .pdf-head.svelte-19uo2cs { flex: none; display: flex; align-items: center; gap: 4px; padding: max(8px, var(--sat)) 8px 8px; background: #fff; border-bottom: 1px solid #ececec; }
  .pdf-btn.svelte-19uo2cs { width: 38px; height: 38px; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: #1d1d1f; flex: none; }
  .pdf-btn.svelte-19uo2cs svg:where(.svelte-19uo2cs) { width: 21px; height: 21px; }
  .pdf-btn.svelte-19uo2cs:active { background: rgba(0,0,0,.06); }
  .pdf-title.svelte-19uo2cs { flex: 1; min-width: 0; font-size: 15px; font-weight: 600; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; padding: 0 4px; }
  .pdf-pageno.svelte-19uo2cs { flex: none; font-size: 12.5px; color: #6b6b70; font-variant-numeric: tabular-nums; padding: 0 6px; }

  .pdf-scroll.svelte-19uo2cs { flex: 1; min-height: 0; overflow: auto; -webkit-overflow-scrolling: touch; touch-action: pan-x pan-y pinch-zoom; }
  .pdf-pages.svelte-19uo2cs { display: flex; flex-direction: column; align-items: center; gap: 12px; padding: 12px; will-change: transform; }
  .pdf-slot.svelte-19uo2cs { position: relative; background: #fff; box-shadow: 0 2px 12px rgba(0,0,0,.14); border-radius: 2px; overflow: hidden; max-width: 100%; }
  .pdf-ph.svelte-19uo2cs { position: absolute; inset: 0; background: linear-gradient(100deg, #fafafa 30%, #f0f0f2 50%, #fafafa 70%); background-size: 200% 100%; animation: svelte-19uo2cs-pdfShimmer 1.3s infinite; }
  @keyframes svelte-19uo2cs-pdfShimmer { to { background-position: -200% 0; } }
  .pdf-slot.svelte-19uo2cs canvas { display: block; }

  .pdf-center.svelte-19uo2cs { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 12px; color: #6b6b70; }
  .pdf-spin.svelte-19uo2cs { width: 30px; height: 30px; border-radius: 50%; border: 3px solid rgba(0,0,0,.12); border-top-color: #1a73e8; animation: svelte-19uo2cs-pdfspin .8s linear infinite; }
  @keyframes svelte-19uo2cs-pdfspin { to { transform: rotate(360deg); } }
  .pdf-err.svelte-19uo2cs button:where(.svelte-19uo2cs), .pdf-dl.svelte-19uo2cs { padding: 7px 20px; border-radius: 999px; background: #1a73e8; color: #fff; font-size: 14px; }

  .of-root.svelte-13ygyyc { position: absolute; inset: 0; background: #fbfbfa; color: #1d1d1f; display: flex; flex-direction: column; }
  .of-head.svelte-13ygyyc { flex: none; display: flex; align-items: center; gap: 8px; padding: max(8px, var(--sat)) 10px 8px; background: #fff; border-bottom: 1px solid #ececec; }
  .of-btn.svelte-13ygyyc { width: 38px; height: 38px; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: #1d1d1f; flex: none; }
  .of-btn.svelte-13ygyyc svg:where(.svelte-13ygyyc) { width: 21px; height: 21px; }
  .of-btn.svelte-13ygyyc:active { background: rgba(0,0,0,.06); }
  .of-title.svelte-13ygyyc { flex: 1; min-width: 0; font-size: 15px; font-weight: 600; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }

  .of-tabs.svelte-13ygyyc { flex: none; display: flex; gap: 4px; overflow-x: auto; padding: 7px 10px; background: #fff; border-bottom: 1px solid #ececec; }
  .of-tab.svelte-13ygyyc { flex: none; padding: 5px 13px; border-radius: 999px; font-size: 13px; background: #f0f0f2; color: #57575c; }
  .of-tab.on.svelte-13ygyyc { background: var(--g-primary, #1a73e8); color: #fff; }

  .of-body.svelte-13ygyyc { flex: 1; min-height: 0; position: relative; }
  .of-center.svelte-13ygyyc { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px; color: #6b6b70; padding: 0 30px; text-align: center; }
  .of-spin.svelte-13ygyyc { width: 30px; height: 30px; border-radius: 50%; border: 3px solid rgba(0,0,0,.12); border-top-color: #1a73e8; animation: svelte-13ygyyc-ofspin .8s linear infinite; }
  @keyframes svelte-13ygyyc-ofspin { to { transform: rotate(360deg); } }
  .of-tip.svelte-13ygyyc { font-size: 13px; }
  .of-sub.svelte-13ygyyc { font-size: 12px; color: #9a9aa0; max-width: 80vw; word-break: break-all; }
  .of-err.svelte-13ygyyc button:where(.svelte-13ygyyc), .of-dl.svelte-13ygyyc { padding: 7px 20px; border-radius: 999px; background: #1a73e8; color: #fff; font-size: 14px; }

  .of-scroll.svelte-13ygyyc { position: absolute; inset: 0; overflow: auto; -webkit-overflow-scrolling: touch; }

  /* Word（mammoth HTML）*/
  .of-doc.svelte-13ygyyc { max-width: 800px; margin: 0 auto; padding: 26px 22px 60px; font-size: 16px; line-height: 1.7; }
  .of-doc.svelte-13ygyyc h1 { font-size: 1.6em; font-weight: 700; margin: .7em 0 .4em; }
  .of-doc.svelte-13ygyyc h2 { font-size: 1.35em; font-weight: 700; margin: .7em 0 .4em; }
  .of-doc.svelte-13ygyyc h3 { font-size: 1.15em; font-weight: 650; margin: .6em 0 .35em; }
  .of-doc.svelte-13ygyyc p { margin: .5em 0; }
  .of-doc.svelte-13ygyyc ul, .of-doc.svelte-13ygyyc ol { margin: .5em 0; padding-left: 1.6em; }
  .of-doc.svelte-13ygyyc img { max-width: 100%; height: auto; }
  .of-doc.svelte-13ygyyc table { border-collapse: collapse; margin: .7em 0; width: 100%; }
  .of-doc.svelte-13ygyyc td, .of-doc.svelte-13ygyyc th { border: 1px solid #d8d8dc; padding: 6px 10px; font-size: .95em; }

  /* 表格（SheetJS HTML）*/
  .of-sheetscroll.svelte-13ygyyc { padding: 0; }
  .of-sheetscroll.svelte-13ygyyc table { border-collapse: collapse; font-size: 13px; }
  .of-sheetscroll.svelte-13ygyyc td, .of-sheetscroll.svelte-13ygyyc th { border: 1px solid #e2e2e6; padding: 5px 10px; white-space: nowrap; min-width: 48px; }
  .of-sheetscroll.svelte-13ygyyc tr:first-child td { background: #f6f6f7; font-weight: 600; position: sticky; top: 0; }

  /* PPT 近似 */
  .of-slides.svelte-13ygyyc { padding: 16px; display: flex; flex-direction: column; align-items: center; gap: 16px; }
  .of-slide.svelte-13ygyyc { width: 100%; max-width: 720px; background: #fff; border: 1px solid #e6e6ea; border-radius: 10px; box-shadow: 0 2px 10px rgba(0,0,0,.06); padding: 22px 24px; position: relative; }
  .of-slide-no.svelte-13ygyyc { position: absolute; top: 10px; right: 14px; font-size: 12px; color: #b0b0b6; }
  .of-slide-img.svelte-13ygyyc { max-width: 100%; border-radius: 6px; margin: 6px 0; display: block; }
  .of-slide-txt.svelte-13ygyyc { font-size: 16px; line-height: 1.6; margin: 5px 0; }
  .of-slide-empty.svelte-13ygyyc { color: #b0b0b6; font-size: 14px; }
  .of-approx.svelte-13ygyyc { font-size: 12px; color: #9a9aa0; text-align: center; padding: 6px 20px 30px; }

  .hv.svelte-4y7jd3 { position: fixed; inset: 0; display: flex; flex-direction: column; background: #fff; z-index: 1; }
  .hv-bar.svelte-4y7jd3 { flex: none; height: 52px; display: flex; align-items: center; gap: 8px; padding: 0 10px; background: #f6f6f8; border-bottom: 1px solid #e5e5ea; color: #1c1c1e; }
  .hv-name.svelte-4y7jd3 { flex: 1; min-width: 0; font-size: 15px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .hv-btn.svelte-4y7jd3 { width: 38px; height: 38px; flex: none; display: grid; place-items: center; border: 0; background: none; color: #1c1c1e; border-radius: 50%; cursor: pointer; text-decoration: none; }
  .hv-btn.svelte-4y7jd3:hover { background: rgba(0, 0, 0, .06); }
  .hv-btn.svelte-4y7jd3 svg:where(.svelte-4y7jd3) { width: 22px; height: 22px; }
  .hv-body.svelte-4y7jd3 { flex: 1; position: relative; background: #fff; }
  .hv-frame.svelte-4y7jd3 { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; background: #fff; }
  .hv-msg.svelte-4y7jd3 { position: absolute; inset: 0; display: grid; place-items: center; color: #888; font-size: 14px; }

  /* 进出用纯 CSS 动画（不依赖 RAF，避免切后台时 JS 过渡卡死浮层不卸载）：进场淡入、关闭瞬时卸载 */
  .mv-root.svelte-1ps9ubt { position: fixed; inset: 0; z-index: 300; animation: svelte-1ps9ubt-mvIn var(--mo-base) var(--ea-fade); }
  @keyframes svelte-1ps9ubt-mvIn { from { opacity: 0; } to { opacity: 1; } }
  .mv-page.svelte-1ps9ubt { animation: svelte-1ps9ubt-mvPageIn var(--mo-quick) var(--ea-decel); }
  @keyframes svelte-1ps9ubt-mvPageIn { from { opacity: 0; } to { opacity: 1; } }
  .mv-backdrop.svelte-1ps9ubt { position: absolute; inset: 0; background: #0a0a0c; -webkit-backdrop-filter: blur(2px); backdrop-filter: blur(2px); }
  .mv-stage.svelte-1ps9ubt { position: absolute; inset: 0; overflow: hidden; transform-origin: center; will-change: transform; }
  .mv-page.svelte-1ps9ubt { position: absolute; inset: 0; }
  .mv-audio.svelte-1ps9ubt { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; padding: 0 28px; }
  .mv-audio-box.svelte-1ps9ubt { width: 100%; max-width: 560px; }

  /* 顶栏：从顶部黑渐变压底，白图标，安全区内 */
  .mv-top.svelte-1ps9ubt { position: absolute; top: 0; left: 0; right: 0; z-index: 5; display: flex; align-items: center; gap: 6px;
    padding: max(8px, var(--sat)) 10px 24px;
    background: linear-gradient(to bottom, rgba(0,0,0,.5), rgba(0,0,0,0)); pointer-events: none; }
  .mv-top.svelte-1ps9ubt > :where(.svelte-1ps9ubt) { pointer-events: auto; }
  .mv-btn.svelte-1ps9ubt { width: 40px; height: 40px; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: #fff; flex: none; }
  .mv-btn.svelte-1ps9ubt svg:where(.svelte-1ps9ubt) { width: 22px; height: 22px; }
  .mv-btn.svelte-1ps9ubt:active { background: rgba(255,255,255,.16); }
  .mv-title.svelte-1ps9ubt { flex: 1; min-width: 0; color: #fff; font-size: 15px; font-weight: 500; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; text-shadow: 0 1px 3px rgba(0,0,0,.4); }
  .mv-count.svelte-1ps9ubt { color: rgba(255,255,255,.82); font-size: 13px; font-variant-numeric: tabular-nums; flex: none; padding: 0 4px; text-shadow: 0 1px 3px rgba(0,0,0,.4); }

  /* ⋮ 小菜单（非视频）：右上锚定下拉 */
  .mv-menu-back.svelte-1ps9ubt { position: absolute; inset: 0; z-index: 7; }
  .mv-menu.svelte-1ps9ubt { position: absolute; top: max(52px, calc(var(--sat) + 44px)); right: 10px; min-width: 168px; border-radius: 14px; overflow: hidden;
    background: rgba(28,28,30,.96); -webkit-backdrop-filter: blur(20px); backdrop-filter: blur(20px);
    padding: 5px 0; animation: svelte-1ps9ubt-mvMenuIn var(--mo-quick) var(--ea-decel); box-shadow: 0 8px 28px rgba(0,0,0,.45); }
  @keyframes svelte-1ps9ubt-mvMenuIn { from { opacity: 0; transform: translateY(-6px) scale(.97); } to { opacity: 1; transform: none; } }
  .mv-mrow.svelte-1ps9ubt { display: flex; align-items: center; gap: 12px; padding: 11px 16px; color: #fff; font-size: 14.5px; }
  .mv-mrow.svelte-1ps9ubt:active { background: rgba(255,255,255,.08); }
  .mv-mrow.svelte-1ps9ubt svg:where(.svelte-1ps9ubt) { width: 19px; height: 19px; flex: none; }

  .mv-arrow.svelte-1ps9ubt { position: absolute; top: 50%; transform: translateY(-50%); z-index: 5; width: 44px; height: 44px; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: #fff; background: rgba(0,0,0,.28); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); }
  .mv-arrow.svelte-1ps9ubt svg:where(.svelte-1ps9ubt) { width: 24px; height: 24px; }
  .mv-arrow.left.svelte-1ps9ubt { left: 10px; } .mv-arrow.right.svelte-1ps9ubt { right: 10px; }
  .mv-arrow.svelte-1ps9ubt:active { background: rgba(0,0,0,.45); }
  /* 触屏隐藏箭头（靠滑动），仅细指针(鼠标)显示 */
  @media (pointer: coarse) { .mv-arrow.svelte-1ps9ubt { display: none; } }


  .dock.svelte-1rdlsz1 { display: flex; flex-direction: column; background: var(--bg); }
  /* 宽屏：常驻右列，与对话分栏；显式 width（拖拽持久值）时 min/max 兜底钳制 */
  /* 右上角的归属——只有桌面壳（frameless / WCO）才有冲突：
     · 网页 / 平板 / BRIDGE_WCO=0：Claude 顶栏胶囊（TopBar .fab.pill）是对话列里的 absolute，工作台展开时跟着
       对话列走、停在对话列右上，压不到工作台，面板首行本来就能用满，不需要任何横向避让。
     · 桌面壳：胶囊被 app.css 钉成 fixed 贴在系统窗控（最小化/最大化/关闭）左边，两者合计 ~220px 正好压在工作台
       首行右上。旧做法是首行横向让位（--dock-avoid-r），结果文件工具栏被挤成两行，侧栏里的文档查看器头根本没接
       这个变量，分段钮/保存钮被胶囊盖住。现改成 Claude 桌面版的做法：工作台把【自己这一段】第一行整条让出来当
       标题栏带（高 = 窗控带 --wco-h），带里只坐胶囊和窗控、其余是窗口拖拽区；面板内容从第二行起全宽排版。
       --wco-right 在本子树里归零：app.css 里查看器头（doc-head / pdf-head / mv-top…）和 FilesDesktop 工具栏的
       窗控避让在侧栏内随之失效，它们已经整体落在标题栏带下面了。对话列与左侧栏照旧用满第一行。 */
  .dock.wide.svelte-1rdlsz1 { position: relative; flex: none; width: clamp(400px, 44%, 760px); min-width: 360px; max-width: 78%; border-left: 1px solid var(--divider); animation: svelte-1rdlsz1-dockInW .22s ease; }
  html[data-wco="1"] .dock.wide.svelte-1rdlsz1 { padding-top: var(--wco-h, 40px); --wco-right: 0px; }
  /* medium（折叠屏展开 ~750px / 竖屏平板）：默认占一半多一点，给正文留住 300px 下限。
     min-width 一并降到 300，否则 max-width 钳不动、面板会顶破视口。 */
  .dock.wide.mid.svelte-1rdlsz1 { width: clamp(320px, 52%, 560px); min-width: 300px; max-width: calc(100% - 300px); }
  .dock.wide.gripping.svelte-1rdlsz1 { animation: none; }
  @keyframes svelte-1rdlsz1-dockInW { from { opacity: 0; transform: translateX(14px); } to { opacity: 1; transform: none; } }
  /* 左缘拖拽把手：8px 命中区，悬停/拖动时亮出 2px 指示线；双击复位默认宽 */
  /* no-drag：WCO 下工作台顶上那条标题栏带是窗口拖拽区，把手是 div 不在全局免拖名单里，不打洞的话顶端 40px 拖不动宽度 */
  .dk-grip.svelte-1rdlsz1 { position: absolute; left: -4px; top: 0; bottom: 0; width: 9px; cursor: col-resize; z-index: 5; touch-action: none; -webkit-app-region: no-drag; }
  .dk-grip.svelte-1rdlsz1::after { content: ''; position: absolute; left: 3px; top: 0; bottom: 0; width: 2px; background: transparent; transition: background-color .15s ease; }
  @media (hover: hover) { .dk-grip.svelte-1rdlsz1:hover::after { background: color-mix(in srgb, var(--muted) 45%, transparent); } }
  .dock.gripping.svelte-1rdlsz1 .dk-grip:where(.svelte-1rdlsz1)::after { background: var(--coral); }

  .dk-head.svelte-1rdlsz1 { flex: none; display: flex; align-items: center; gap: 8px; padding: 10px 10px 6px; }
  .dock.wide.svelte-1rdlsz1 .dk-head:where(.svelte-1rdlsz1) { padding-top: calc(var(--sat) + 12px); }
  /* 标题栏带已经隔出了与窗口顶缘的距离，头部不再另垫 12px */
  html[data-wco="1"] .dock.wide.svelte-1rdlsz1 .dk-head:where(.svelte-1rdlsz1) { padding-top: 6px; }
  .dk-title.svelte-1rdlsz1 { font-family: var(--serif-stack); font-size: 16.5px; color: var(--text); }
  .dk-ws.svelte-1rdlsz1 { font-size: 12px; color: var(--muted); background: var(--hover); border-radius: 7px; padding: 2px 8px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; max-width: 40%; }
  .dk-btn.svelte-1rdlsz1 { width: 32px; height: 32px; border-radius: 8px; display: flex; align-items: center; justify-content: center; color: var(--serif); flex: none; }
  .dk-btn.svelte-1rdlsz1 svg:where(.svelte-1rdlsz1) { width: 17px; height: 17px; }
  .dk-btn.svelte-1rdlsz1:active { background: var(--hover); }
  @media (hover: hover) { .dk-btn.svelte-1rdlsz1:hover { background: var(--hover); color: var(--text); } }
  .dk-close.svelte-1rdlsz1 { margin-left: auto; }

  .dk-menu.svelte-1rdlsz1 { display: flex; flex-direction: column; gap: 8px; padding: 12px 14px; overflow-y: auto; }
  .dk-item.svelte-1rdlsz1 { display: flex; align-items: center; gap: 12px; padding: 14px 16px; border-radius: 12px; background: var(--card); color: var(--text); text-align: left; box-shadow: var(--card-shadow); transition: background-color .13s ease, transform .13s ease; }
  .dk-item.svelte-1rdlsz1:active { transform: scale(.985); }
  @media (hover: hover) { .dk-item.svelte-1rdlsz1:hover { background: var(--hover-strong); } }
  .dk-ic.svelte-1rdlsz1 { width: 22px; height: 22px; flex: none; display: flex; color: var(--serif); }
  .dk-ic.svelte-1rdlsz1 svg { width: 100%; height: 100%; }
  .dk-lab.svelte-1rdlsz1 { font-size: 15px; }
  .dk-live.svelte-1rdlsz1 { width: 7px; height: 7px; border-radius: 50%; background: var(--ok); animation: svelte-1rdlsz1-dkPulse 1.2s ease-in-out infinite; flex: none; }
  @keyframes svelte-1rdlsz1-dkPulse { 50% { opacity: .35; } }
  .dk-kbd.svelte-1rdlsz1 { margin-left: auto; font-size: 12px; color: var(--muted); font-family: Consolas, 'Cascadia Mono', Menlo, monospace; }
  @media (pointer: coarse) { .dk-kbd.svelte-1rdlsz1 { display: none; } }
  .dk-wait.svelte-1rdlsz1 { flex: 1; display: flex; align-items: center; justify-content: center; color: var(--muted); font-size: 14px; padding: 0 24px; text-align: center; line-height: 1.7; }
  /* 内嵌真·工作空间页：transform 造 containing block，FilesPanel 的 fixed 根/浮层全被圈进本容器 */
  .dk-embed.svelte-1rdlsz1 { flex: 1; min-height: 0; position: relative; overflow: hidden; transform: translateZ(0); }

  /* —— 移动端底部 sheet（dimensio psheet 同款规格，Claude 皮）—— */
  .sheetwrap.svelte-1rdlsz1 { position: fixed; inset: 0; z-index: 58; display: flex; align-items: flex-end; }
  .sheet-scrim.svelte-1rdlsz1 { position: absolute; inset: 0; background: rgba(0, 0, 0, .45); animation: svelte-1rdlsz1-scrimIn .24s ease; }
  @keyframes svelte-1rdlsz1-scrimIn { from { opacity: 0; } }
  .dock.sheet.svelte-1rdlsz1 { position: relative; width: 100%; height: calc(100dvh - 52px - var(--sat)); border-radius: 20px 20px 0 0;
    padding-bottom: max(var(--sab), var(--kb, 0px));
    box-shadow: 0 -10px 44px rgba(0, 0, 0, .35); overflow: hidden;
    animation: svelte-1rdlsz1-sheetUp .36s cubic-bezier(.32, .9, .35, 1) both; transition: transform .3s cubic-bezier(.32, .9, .35, 1); }
  @keyframes svelte-1rdlsz1-sheetUp { from { transform: translateY(52%); opacity: .7; } }
  .grip-zone.svelte-1rdlsz1 { flex: none; touch-action: none; }
  .grip.svelte-1rdlsz1 { display: block; width: 38px; height: 4.5px; border-radius: 3px; background: var(--divider); margin: 8px auto 2px; }

  /* 工具切换条：chip 直切（移动端没有菜单层级） */
  .dk-chips.svelte-1rdlsz1 { display: flex; align-items: center; gap: 5px; padding: 6px 10px 8px; overflow-x: auto; scrollbar-width: none; }
  .dk-chips.svelte-1rdlsz1::-webkit-scrollbar { display: none; }
  .chip.svelte-1rdlsz1 { flex: none; display: flex; align-items: center; gap: 6px; height: 34px; padding: 0 13px; border-radius: 11px;
    color: var(--muted); font-size: 13px; transition: background-color .14s ease, color .14s ease; }
  .chip.svelte-1rdlsz1:active { transform: scale(.97); }
  .chip.on.svelte-1rdlsz1 { background: var(--card); color: var(--text); box-shadow: var(--card-shadow); }
  .chip-ic.svelte-1rdlsz1 { width: 16px; height: 16px; display: flex; flex: none; }
  .chip-ic.svelte-1rdlsz1 svg { width: 100%; height: 100%; }
  .chip-fold.svelte-1rdlsz1 { margin-left: auto; width: 32px; height: 32px; border-radius: 9px; display: flex; align-items: center; justify-content: center; color: var(--muted); flex: none; }
  .chip-fold.svelte-1rdlsz1 svg:where(.svelte-1rdlsz1) { width: 17px; height: 17px; }
  .chip-fold.svelte-1rdlsz1:active { background: var(--hover); }

  .pp-root.svelte-13r3mmn { position: fixed; inset: 0; z-index: 96; display: flex; align-items: center; justify-content: center; }
  .pp-scrim.svelte-13r3mmn { position: absolute; inset: 0; background: rgba(0,0,0,.42); border: none; animation: svelte-13r3mmn-pp-fade .18s ease both; }
  @keyframes svelte-13r3mmn-pp-fade { from { opacity: 0; } }
  .pp-card.svelte-13r3mmn {
    position: relative; display: flex; flex-direction: column;
    width: min(760px, 100%); height: min(78vh, 760px);
    border-radius: 20px; overflow: hidden; background: #f2f2f7; color: #000;
    box-shadow: 0 26px 70px rgba(0,0,0,.34);
    animation: svelte-13r3mmn-pp-in .26s cubic-bezier(.22,1,.36,1) both;
    font-family: -apple-system, 'SF Pro Text', BlinkMacSystemFont, 'PingFang SC', 'HarmonyOS Sans SC', 'Microsoft YaHei UI', sans-serif;
  }
  @keyframes svelte-13r3mmn-pp-in { from { opacity: 0; transform: translateY(12px) scale(.985); } }
  .pp-head.svelte-13r3mmn { display: flex; align-items: flex-start; gap: 14px; padding: 16px 16px 12px; background: #fff;
    border-bottom: 1px solid rgba(60,60,67,.12); flex: none; }
  .pp-tt.svelte-13r3mmn { min-width: 0; flex: 1; }
  .pp-tt.svelte-13r3mmn h2:where(.svelte-13r3mmn) { font-size: 19px; font-weight: 680; letter-spacing: -.02em; }
  .pp-tt.svelte-13r3mmn p:where(.svelte-13r3mmn) { margin-top: 3px; font-size: 12.5px; color: rgba(60,60,67,.6); }
  .pp-x.svelte-13r3mmn { width: 30px; height: 30px; flex: none; border-radius: 50%; display: inline-flex; align-items: center;
    justify-content: center; background: rgba(120,120,128,.14); color: rgba(60,60,67,.7); border: none; }
  .pp-x.svelte-13r3mmn svg:where(.svelte-13r3mmn) { width: 13px; height: 13px; }
  /* transform 造包含块（与工作台 .dk-embed 同一手法）：FilesPanel 是 fixed inset:0 的整页，
     不圈住就会连头带尾铺满整个视口。圈在 body 上而不是卡上，头部才不会被它盖掉。 */
  /* --sat 归零：安全区已由 .pp-head 让过一次，FilesPanel 内部再让一次就是双份留白 */
  .pp-body.svelte-13r3mmn { position: relative; flex: 1; min-height: 0; overflow: hidden; transform: translateZ(0); --sat: 0px; }
  .pp-msg.svelte-13r3mmn { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;
    font-size: 14px; color: rgba(60,60,67,.6); }
  .pp-busy.svelte-13r3mmn { position: absolute; inset: 0; z-index: 90; display: flex; align-items: center; justify-content: center;
    background: rgba(255,255,255,.72); font-size: 15px; font-weight: 620; color: #0088ff; }
  .pp-err.svelte-13r3mmn { flex: none; padding: 9px 16px; background: #fff; border-top: 1px solid rgba(60,60,67,.12);
    color: #ff383c; font-size: 12.5px; }

  /* 手机 / 窄屏：整屏接管（工作台在窄屏也是这个形态） */
  @media (max-width: 719px) {
    .pp-card.svelte-13r3mmn { width: 100%; height: 100%; border-radius: 0; animation: svelte-13r3mmn-pp-up .3s cubic-bezier(.32,.72,0,1) both; }
    @keyframes svelte-13r3mmn-pp-up { from { transform: translateY(16px); opacity: 0; } }
    .pp-head.svelte-13r3mmn { padding: calc(var(--sat,0px) + 14px) 14px 11px; }
    .pp-scrim.svelte-13r3mmn { display: none; }
  }

  /* 滑动层：fixed 全屏盖在主页之上，translateX 右移即露出底下主页；跟手时关过渡(sliding)。 */
  .claude-slide.svelte-ff1gvf { position: fixed; inset: 0; z-index: 40; display: flex; flex-direction: column;
    padding-bottom: var(--kb, 0px);   /* 键盘高度兜底（同 vertex-slide），原生方案生效时恒 0 */
    background: var(--bg); box-shadow: -10px 0 50px rgba(0,0,0,.30); will-change: transform;
    /* transform 不再走 CSS 过渡：位移全程由手势 / 弹簧逐帧驱动（lib/motion.js），
       两套插值并存会在松手瞬间打架（弹簧改一次值、过渡又去追它＝一顿一顿的）。 */
    transition: background-color var(--mo-base) var(--ea-fade), color var(--mo-base) var(--ea-fade); }
  .claude-root.svelte-ff1gvf { flex: 1; min-height: 0; display: flex; flex-direction: column; }
  /* 宽屏（≥1024px，由 script 的 matchMedia 同步 .wide）：侧栏常驻左列 + 内容列 */
  .claude-root.wide.svelte-ff1gvf { flex-direction: row; position: relative; }
  .main-col.svelte-ff1gvf { flex: 1; min-width: 0; min-height: 0; display: flex; flex-direction: column; position: relative; }
  /* 拖着文件悬在正文上：整列亮一圈，明确「松手就挂进这个会话」 */
  .main-col.dnd-on.svelte-ff1gvf::after { content: ''; position: absolute; inset: 6px; border-radius: 16px; pointer-events: none;
    box-shadow: inset 0 0 0 2px var(--coral); background: color-mix(in srgb, var(--coral) 7%, transparent); z-index: 3; }
  .drawer.pinned.svelte-ff1gvf {
    position: static; transform: none; visibility: visible; transition: none;
    max-width: none; flex: none; height: auto; box-shadow: none;   /* 宽度由 style:width（拉动持久值）下发 */
  }
  /* 侧栏拉动把手（官方同款）：12px 隐形条骑缝右缘（left = 宽-6），全高 col-resize；
     3×48 指示条悬停 200ms 延迟浮现、拖拽中常显、键盘聚焦转珊瑚色 */
  .sb-handle.svelte-ff1gvf { position: absolute; top: 0; bottom: 0; width: 12px; z-index: 45; cursor: col-resize; outline: none; }
  .sb-pill.svelte-ff1gvf { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); width: 3px; height: 48px;
    border-radius: 999px; background: var(--muted); opacity: 0;
    transition: opacity .2s ease .2s, background-color .2s ease; }
  .sb-handle.svelte-ff1gvf:hover .sb-pill:where(.svelte-ff1gvf), .sb-handle.drag.svelte-ff1gvf .sb-pill:where(.svelte-ff1gvf) { opacity: 1; }
  .sb-handle.svelte-ff1gvf:focus-visible .sb-pill:where(.svelte-ff1gvf) { opacity: 1; background: var(--coral); transition-delay: 0s; }
  .stage.svelte-ff1gvf { flex: 1; position: relative; min-height: 0; display: flex; flex-direction: column; }
  /* edge-to-edge 后页面顶到物理屏顶，15vh 要再加状态栏高度才回到原设计位置（不然 greeting 偏上）。 */
  .hero.svelte-ff1gvf { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: flex-start; padding: calc(15vh + var(--sat)) 16px 24px; gap: 0; }
  .greeting.svelte-ff1gvf { display: flex; align-items: center; gap: 10px; margin-bottom: 22px; }
  .logo-fly.svelte-ff1gvf { display: inline-flex; flex: none; }
  .greeting.svelte-ff1gvf h1:where(.svelte-ff1gvf) { font-family: var(--serif-stack); font-weight: 290; font-size: 27px; line-height: 1.12; color: var(--serif); text-align: center; }
  .hero-composer.svelte-ff1gvf { width: 100%; max-width: 760px; }
  /* 归属状态栏两处的对齐槽：与输入框卡片同宽同轴（.composer-wrap 整层 pointer-events:none，
     故聊天态这一槽要自己把事件收回来，否则芯片点不动）。 */
  .hero-chips.svelte-ff1gvf { width: 100%; max-width: 760px; }
  /* 聊天态的归属芯片只在【滚到底】时显形：不动布局，只淡入 + 6px 上浮。
     高度恒占着（--composer-h 不变），所以显隐不会改滚动区内边距、不会在底部抖一下。
     transform 常驻（收起态也写 translateY(0) 而非 none）——保证 .chips-slot 始终是层叠
     上下文，::before 那层渐隐罩的绘制顺序不会在过渡中途翻。
     双向过渡：位移走 --ea-std，透明度走 --ea-fade（运动令牌见 app.css）。 */
  .chips-slot.svelte-ff1gvf {
    position: relative; max-width: 760px; margin: 0 auto;
    opacity: 0; transform: translateY(6px); pointer-events: none;
    transition: opacity var(--mo-quick) var(--ea-fade), transform var(--mo-quick) var(--ea-std);
  }
  .chips-slot.foot.svelte-ff1gvf { opacity: 1; transform: translateY(0); pointer-events: auto; }
  /* 芯片是几条窄胶囊，挡不住整行正文——正文从悬浮输入栏下方穿过时，会有残字从芯片旁边
     露出来。补一层向上渐隐到页底色的薄罩把正文先化掉（官方在芯片行与输入框之间也垫了
     一层同作用的 pointer-events:none 元素）。z-index:-1 只退到 .composer-wrap 这个
     层叠上下文的底，仍盖在滚动区之上。 */
  .chips-slot.svelte-ff1gvf::before {
    content: ''; position: absolute; left: -8px; right: -8px; top: -26px; bottom: -4px;
    /* 渐隐段用绝对长度收在芯片【上方】：到芯片顶边（距罩顶 26px）就已经是纯 --bg，
       芯片那一带整条实心，正文残字不会再从胶囊缝里冒出来。 */
    background: linear-gradient(to bottom, transparent 0, var(--bg) 26px);
    pointer-events: none; z-index: -1;
  }
  /* 回退横条的槽：RefusalBand 没东西可显时自己什么都不渲染 → 槽随之 display:none（不占那 6px
     堆叠间距、::before 罩也不留在输入卡上方）。底必须不透明——横条本身只有 4% 的底色（官方 --t1），
     不垫页底色就会透出从输入栏底下穿过的残字；同芯片再补一层向上渐隐的薄罩，最下 6px 实心，
     正好盖住与归属芯片之间的堆叠间距。z-index:-1 退到 .composer-wrap 这个层叠上下文的底、仍盖着滚动区。 */
  .band-slot.svelte-ff1gvf { position: relative; max-width: 760px; margin: 0 auto; pointer-events: auto;
    background: var(--bg); border-radius: 10px; }
  .band-slot.svelte-ff1gvf:not(:has(*)) { display: none; }
  .chips-slot.svelte-ff1gvf + .band-slot:where(.svelte-ff1gvf) { margin-top: 6px; }
  .band-slot.svelte-ff1gvf::before { content: ''; position: absolute; left: -8px; right: -8px; top: -26px; bottom: 0;
    background: linear-gradient(to bottom, transparent 0, var(--bg) 20px); pointer-events: none; z-index: -1; }

  /* 滚动区吃满整个 stage；底部留出卡片高度（+8px 呼吸），最后一条消息能滚到卡片上方 */
  /* overflow-x 必须显式 hidden：只写 overflow-y:auto 时 CSS 会把另一根轴算成 auto，
     于是任何一处超宽内容（宽表格、长公式、宽卡片）都能把【整条会话】变成可左右拖的画布。
     超宽内容各自在自己身上横滚（见 Thread 里 pre / table 的规则），这里只做兜底闸。 */
  .scroll.svelte-ff1gvf { flex: 1; overflow-y: auto; overflow-x: hidden; -webkit-overflow-scrolling: touch; padding-bottom: calc(var(--composer-h, 84px) + 8px); }
  /* 官方 /code 转录渐隐尺寸：顶带 32px、底带 48px（桌面原值）。底带要钉在输入卡片上沿——官方是
     scroller 高 100%+On、strip bottom:On；这里等价物是 .scroll 的 padding-bottom（= 卡片高 + 8），而
     Chromium 的 sticky 约束框已经扣掉滚动容器自身的 padding（实测 bottom 写成卡片高会离卡片再高一个
     卡片高，2026-09-11 无头 Edge 量出 244 = 2×122），所以底带 bottom:0 就正好落在卡片上沿；滚到底时
     带子的静态位置也在这条线上，钉住与不钉住无缝衔接。
     手机端官方那两档占屏太宽（32/48 在 6 寸屏上吃掉近一行正文），收到 18/28；断点与 layout.svelte.js 的
     compact(<700) 同源。 */
  .scroll.svelte-ff1gvf { --sf-top: 32px; --sf-bottom: 48px; --scroll-fade-color: var(--bg); }
  .scroll.svelte-ff1gvf > .scroll-fade-strip-top:where(.svelte-ff1gvf) { --scroll-fade-size: var(--sf-top); }
  /* 底带钉到【卡片】上沿而不是底衬边缘：底衬 = 整个 wrap 高（含透明的芯片槽），卡片顶到 wrap 底只有
     --composer-card-top，差值用负 bottom 补回去（sticky 负偏移合法）。没量到时两者相等 → bottom:0。 */
  /* 再减 10px：底衬比卡片高出的 8px「呼吸」留白本来落在带子和卡片之间，那一条正文完全没被盖——
     手机上（带子只 28px）就是一道亮缝（老板 09-11 第三张截图）。带子下沿压到卡片上沿下方 2px，
     被卡片（z-index 更高）盖住，实底与卡片无缝相接。 */
  .scroll.svelte-ff1gvf > .scroll-fade-strip-bottom:where(.svelte-ff1gvf) { --scroll-fade-size: var(--sf-bottom); bottom: calc(var(--composer-card-top, var(--composer-h, 84px)) - var(--composer-h, 84px) - 10px); }
  @media (max-width: 699px) { .scroll.svelte-ff1gvf { --sf-top: 18px; --sf-bottom: 28px; } }
  /* 正文滚条=侧栏聊天列表同款 6px 细滚条（只用 webkit 伪元素，别设标准属性——同 .drawer 的坑注） */
  .scroll.svelte-ff1gvf::-webkit-scrollbar { width: 6px; }
  .scroll.svelte-ff1gvf::-webkit-scrollbar-track { background: transparent; }
  .scroll.svelte-ff1gvf::-webkit-scrollbar-thumb { background: color-mix(in srgb, var(--muted) 38%, transparent); border-radius: 999px; }
  @media (hover: hover) { .scroll.svelte-ff1gvf::-webkit-scrollbar-thumb:hover { background: color-mix(in srgb, var(--muted) 62%, transparent); } }
  /* 输入栏卡片：绝对定位悬浮在正文之上，无实心背景/隔层——正文向上滚时从卡片下方穿过 */
  .composer-wrap.svelte-ff1gvf { position: absolute; left: 0; right: 0; bottom: 0; z-index: 5;
    padding: 6px 8px max(10px, var(--sab)); background: transparent; pointer-events: none; }
  /* 卡片【下方】那段底部留白（手机手势条安全区可达 30–40px）是透明的：正文从卡片底边和屏幕底之间
     透出来（老板 09-11 截图第二处）。垫一层页底色，再往上盖住卡片下半段（卡片圆角外的缝也一并封住）；
     z-index:-1 退到 .composer-wrap 这个层叠上下文的底，仍在滚动区之上。 */
  .composer-wrap.svelte-ff1gvf::after { content: ''; position: absolute; left: 0; right: 0; bottom: 0;
    height: calc(max(10px, var(--sab)) + 28px); background: var(--bg); pointer-events: none; z-index: -1; }
  .composer-inner.svelte-ff1gvf { max-width: 760px; margin: 0 auto; pointer-events: auto; }

  .scrim.svelte-ff1gvf { position: fixed; inset: 0; background: rgba(0,0,0,.45); opacity: 0; visibility: hidden; transition: opacity .25s ease, visibility .25s; z-index: 40; }
  .scrim.open.svelte-ff1gvf { opacity: 1; visibility: visible; }
  .drawer.svelte-ff1gvf { position: fixed; top: 0; left: 0; bottom: 0; width: 80vw; max-width: 320px; background: var(--bg); border-right: 1px solid var(--divider); transform: translateX(-100%); visibility: hidden; transition: transform .26s cubic-bezier(.22,1,.36,1), background-color .25s ease, visibility 0s linear .26s; z-index: 50; display: flex; flex-direction: column; padding: 10px 8px; padding-top: max(10px, var(--sat)); overflow-y: auto; }
  /* 关闭态 visibility:hidden —— 侧滑返回时 .claude-slide 的 transform 会把屏外的 drawer 推进屏内，
     隐藏掉就不会"先展开侧边栏"；visibility 用 .26s 延迟，保证关闭滑出动画本身可见、滑完才隐藏。 */
  .drawer.open.svelte-ff1gvf { transform: none; visibility: visible; transition: transform .26s cubic-bezier(.22,1,.36,1), background-color .25s ease, visibility 0s linear 0s; box-shadow: 0 0 40px rgba(0,0,0,.3); }
  /* claude.ai 同款内置细滚条：6px 圆头拇指、无轨道。只用 webkit 私有伪元素——
     别再设标准 scrollbar-width/scrollbar-color，Chromium 里标准属性一出现伪元素即整体失效。 */
  .drawer.svelte-ff1gvf::-webkit-scrollbar { width: 6px; }
  .drawer.svelte-ff1gvf::-webkit-scrollbar-track { background: transparent; }
  .drawer.svelte-ff1gvf::-webkit-scrollbar-thumb { background: color-mix(in srgb, var(--muted) 38%, transparent); border-radius: 999px; }
  @media (hover: hover) { .drawer.svelte-ff1gvf::-webkit-scrollbar-thumb:hover { background: color-mix(in srgb, var(--muted) 62%, transparent); } }
  /* 字标行：官方标题栏里字标垂直居中、高 14px；这里给 44px 行高（与原 21px 衬线文字的占位持平），
     下留 2px 让字标视觉上略高于几何中线。颜色 = 官方 text-primary。 */
  .brand.svelte-ff1gvf { display: flex; align-items: center; flex: none; height: 44px; padding: 0 10px 2px; color: var(--text); }
  /* flex:none 必须写：.drawer 是溢出的 flex 列，min-height:auto 会把这行压到内容高（实测 16px），字标贴到「主页」上 */
  /* —— claude.ai 同款侧栏（实测规格：行高 32/圆角 8/字号 14/悬停 rgba .06、
     图标 Anthropicons 可变字重：导航 20px/430、New·主页 16px/700、⋮ 16px/530、气泡 e037）—— */
  .d-item.svelte-ff1gvf { width: 100%; display: flex; align-items: center; gap: 8px; padding: 8px 10px; border-radius: 8px; font-size: 14px; color: var(--serif); text-align: left; transition: background-color .12s ease, color .12s ease; }
  .d-item.svelte-ff1gvf:active { background: var(--hover); color: var(--text); }
  .d-item.svelte-ff1gvf:disabled { color: var(--muted); }
  .d-lead.svelte-ff1gvf { width: 22px; text-align: center; font-size: 20px; font-weight: 430; color: var(--serif); flex: none; }
  .d-lead.w7.svelte-ff1gvf { font-size: 16px; font-weight: 700; }
  /* 定时触发 = claude.ai 侧栏 Scheduled 同款钟（连悬停动效一并取回，2026-08-14 实测源码规格）：
     16 视口 / 1px 描边 / 圆头圆角，表盘 r5.5，时针 (8,8)→(10,9)、分针 (8,8)→(8,5.5)；
     悬停两针以 8 8 为轴转动 —— 时针 +30°（走一格），分针 +390°（整圈再 30°，与时针同步落位），
     0.6s cubic-bezier(.3,.9,.4,1)；表盘不动。触屏无 hover，:active 走同一套。 */
  .d-lead.ck.svelte-ff1gvf { display: flex; align-items: center; justify-content: center; }
  .d-lead.ck.svelte-ff1gvf svg:where(.svelte-ff1gvf) { width: 16px; height: 16px; }
  .d-lead.ck.svelte-ff1gvf line:where(.svelte-ff1gvf) { transform-box: view-box; transform-origin: 8px 8px;
    transition: rotate .6s cubic-bezier(.3, .9, .4, 1); }
  .d-item.svelte-ff1gvf:active .ck:where(.svelte-ff1gvf) .hh:where(.svelte-ff1gvf) { rotate: 30deg; }
  .d-item.svelte-ff1gvf:active .ck:where(.svelte-ff1gvf) .mh:where(.svelte-ff1gvf) { rotate: 390deg; }
  .d-sec.svelte-ff1gvf { display: flex; align-items: center; justify-content: space-between; color: var(--muted); font-size: 12px; padding: 14px 4px 4px 10px; }
  .d-list.svelte-ff1gvf { display: flex; flex-direction: column; }
  .d-row.svelte-ff1gvf { position: relative; display: flex; align-items: center; border-radius: 8px; margin-bottom: .5px; transition: background-color .12s ease; }
  /* 拎着文件悬在某条会话上：这条亮起来，松手＝切过去并挂进它的输入栏 */
  .d-row.dnd-on.svelte-ff1gvf { background: color-mix(in srgb, var(--coral) 22%, transparent); box-shadow: inset 0 0 0 1.5px var(--coral); }
  .d-row.cur.svelte-ff1gvf { background: var(--hover-strong); }
  .d-row.cur.svelte-ff1gvf .d-title:where(.svelte-ff1gvf) { color: var(--text); }
  /* 会话缩进到项目标题文字正下方（项目行 8 padding + 20 图标 + 8 gap = 36 − 本行 8 padding） */
  .d-row.indent.svelte-ff1gvf { margin-left: 28px; }
  .d-recent.svelte-ff1gvf { flex: 1; min-width: 0; display: flex; align-items: center; gap: 8px; padding: 8px 2px 8px 8px; border-radius: 8px; text-align: left; color: var(--serif); font-size: 14px; }
  .d-recent.svelte-ff1gvf:active { background: var(--hover); }
  .d-bub.svelte-ff1gvf { position: relative; width: 20px; height: 20px; flex: none; display: flex; align-items: center; justify-content: center; }
  /* 项目图标 = claude.ai 同款动态字形：Anthropicons 的 ANIM 变体轴（0→100 盒盖展开），
     悬停/按下经已注册的 --ca-anim（app.css @property）过渡驱动，回弹曲线与官网一致。 */
  .d-bub.svelte-ff1gvf .pj:where(.svelte-ff1gvf) { font-size: 18px; color: var(--serif);
    font-variation-settings: "ANIM" var(--ca-anim, 0), "ANM2" 0, "opsz" 20, "wght" 433;
    transition: --ca-anim .3s cubic-bezier(.34, 1.3, .64, 1); }
  .d-row.proj.svelte-ff1gvf:active .pj:where(.svelte-ff1gvf) { --ca-anim: 100; }
  .d-title.svelte-ff1gvf { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
  /* —— 会话标题跑马灯（官方实测规格，配 lib/marquee.js；data-* 运行时属性须 :global 保住
     scoped 规则不被编译器剪掉）——
     溢出（data-ov）：右缘渐隐 85%→99% 替代省略号；
     悬停行：两端渐隐，右侧 44→20px 为 ⋮ 留位，左侧 12px 只在开滚（data-run）后出现；
     开滚：内层 translateX(-溢出-44) 匀速 50px/s（--mq-x/--mq-dur 由 action 算好），
     离开行 data-run 摘除 → transition 失效瞬时弹回（官方无回程动画）。 */
  .d-scroll.svelte-ff1gvf { display: inline-block; white-space: nowrap; vertical-align: top; }
  .d-title.svelte-ff1gvf[data-ov] { text-overflow: clip;
    mask-image: linear-gradient(to right, #000 85%, transparent 99%);
    -webkit-mask-image: linear-gradient(to right, #000 85%, transparent 99%); }
  .d-title.svelte-ff1gvf[data-run] .d-scroll:where(.svelte-ff1gvf) { transform: translateX(calc(-1 * var(--mq-x, 0px)));
    transition: transform var(--mq-dur, 0s) linear; }
  .d-more.svelte-ff1gvf { width: 28px; height: 28px; margin-right: 2px; border-radius: 6px; display: flex; align-items: center; justify-content: center; color: var(--muted); flex: none; transition: color .12s ease, opacity .12s ease; }
  .d-more.svelte-ff1gvf:active { background: var(--hover-strong); }
  .d-more.svelte-ff1gvf .ic:where(.svelte-ff1gvf) { font-size: 16px; font-weight: 530; }
  /* 项目折叠 chevron：展开=▾ 收起=▸（旋转过渡）；桌面沿用「悬停才浮现」，但收起态常显（不然看不出折了） */
  .d-fold.svelte-ff1gvf svg:where(.svelte-ff1gvf) { width: 15px; height: 15px; transition: transform .16s ease; }
  .d-fold.closed.svelte-ff1gvf svg:where(.svelte-ff1gvf) { transform: rotate(-90deg); }
  /* 指针环境（桌面）：行悬停浮出底色，⋮ 平时隐身、行悬停/键盘聚焦才浮现，悬停 ⋮ 文字提亮，
     项目图标盒盖展开（ANIM 轴 0→100）——与 claude.ai 同款 */
  @media (hover: hover) {
    .d-item.svelte-ff1gvf:hover { background: var(--hover); color: var(--text); }
    .d-item.svelte-ff1gvf:hover .ck:where(.svelte-ff1gvf) .hh:where(.svelte-ff1gvf) { rotate: 30deg; }
    .d-item.svelte-ff1gvf:hover .ck:where(.svelte-ff1gvf) .mh:where(.svelte-ff1gvf) { rotate: 390deg; }
    .d-row.svelte-ff1gvf:hover, .d-row.svelte-ff1gvf:focus-within { background: var(--hover); }
    .d-row.svelte-ff1gvf:hover .d-title:where(.svelte-ff1gvf), .d-row.svelte-ff1gvf:focus-within .d-title:where(.svelte-ff1gvf) { color: var(--text); }
    .d-row.proj.svelte-ff1gvf:hover .pj:where(.svelte-ff1gvf) { --ca-anim: 100; }
    .d-more.svelte-ff1gvf { opacity: 0; pointer-events: none; }
    .d-row.svelte-ff1gvf:hover .d-more:where(.svelte-ff1gvf), .d-row.svelte-ff1gvf:focus-within .d-more:where(.svelte-ff1gvf) { opacity: 1; pointer-events: auto; }
    .d-more.svelte-ff1gvf:hover { color: var(--text); }
    .d-fold.closed.svelte-ff1gvf { opacity: 1; pointer-events: auto; }   /* 折叠着的组：chevron 常显，不然看不出折了 */
    /* 官方同款：会话行 ⋮ 改绝对定位悬浮在行尾（不占排版位）——标题非悬停时吃满整行，
       悬停时由跑马灯的 mask 在右侧 44→20px 挖出渐隐区给按钮让位。项目行有两枚尾按钮，维持原排版。 */
    .d-row.svelte-ff1gvf:not(.proj) .d-more:where(.svelte-ff1gvf) { position: absolute; right: 2px; top: 50%; transform: translateY(-50%); margin-right: 0; }
    .d-row.svelte-ff1gvf:hover .d-title:where(.svelte-ff1gvf)[data-ov], .d-row.svelte-ff1gvf:focus-within .d-title:where(.svelte-ff1gvf)[data-ov] {
      mask-image: linear-gradient(to right, transparent, #000 var(--mq-lf, 0px), #000 calc(100% - 44px), transparent calc(100% - 20px));
      -webkit-mask-image: linear-gradient(to right, transparent, #000 var(--mq-lf, 0px), #000 calc(100% - 44px), transparent calc(100% - 20px));
    }
    .d-title.svelte-ff1gvf[data-run] { --mq-lf: 12px; }   /* 左缘渐隐只在开滚后出现（官方行为） */
  }
  .rowmenu-bd.svelte-ff1gvf { position: fixed; inset: 0; z-index: 55; }
  .rowmenu.svelte-ff1gvf { position: fixed; z-index: 56; min-width: 176px; max-width: 260px; max-height: 292px; overflow-y: auto; padding: 5px; background: var(--q-card); border-radius: 12px; box-shadow: var(--q-shadow); animation: svelte-ff1gvf-rmPop .14s ease; }
  @keyframes svelte-ff1gvf-rmPop { from { opacity: 0; transform: scale(.96); } to { opacity: 1; transform: none; } }
  .rowmenu.svelte-ff1gvf button:where(.svelte-ff1gvf) { width: 100%; display: flex; align-items: center; gap: 10px; padding: 7px 10px; border-radius: 8px; font-size: 14px; color: var(--text); text-align: left; transition: background-color .12s ease; }
  .rowmenu.svelte-ff1gvf button:where(.svelte-ff1gvf):active { background: var(--hover); }
  @media (hover: hover) { .rowmenu.svelte-ff1gvf button:where(.svelte-ff1gvf):hover { background: var(--hover); } }
  .rowmenu.svelte-ff1gvf button.danger:where(.svelte-ff1gvf) { color: var(--crit); }
  .mi.svelte-ff1gvf { width: 20px; text-align: center; font-size: 18px; font-weight: 450; flex: none; }
  /* 会话行不再有图标 → 状态点占「左侧空位」：项目行有 20px 图标、会话行那一列是空的。
     缩进的会话行把点绝对定位进 28px 缩进带里（正对项目图标列中心），既不吃标题宽度、
     也不会在开跑/跑完时把标题推来推去；收藏区的会话行没有缩进带，就内联在标题前。 */
  .d-dot.svelte-ff1gvf { flex: none; width: 7px; height: 7px; border-radius: 50%; }
  .d-row.indent.svelte-ff1gvf .d-dot:where(.svelte-ff1gvf) { position: absolute; left: -14px; top: 50%; transform: translateY(-50%); }
  .d-dot.work.svelte-ff1gvf { background: var(--coral); animation: svelte-ff1gvf-pulse 1.2s ease-in-out infinite; }
  .d-dot.ask.svelte-ff1gvf { background: var(--warn); animation: svelte-ff1gvf-blink 1s steps(2) infinite; }
  @keyframes svelte-ff1gvf-pulse { 50% { opacity: .4; } }
  @keyframes svelte-ff1gvf-blink { 50% { opacity: 0; } }

  /* —— 弹窗（重命名对话用；新建项目的目录浏览已退役，改走 ProjectPicker） —— */
  .pm-bd.svelte-ff1gvf { position: fixed; inset: 0; z-index: 70; background: rgba(0, 0, 0, .45); }
  .pmodal.svelte-ff1gvf { position: fixed; z-index: 71; left: 50%; top: 50%; transform: translate(-50%, -50%);
    width: min(420px, calc(100vw - 40px)); max-height: min(560px, calc(100vh - 80px));
    display: flex; flex-direction: column; background: var(--q-card); border-radius: 16px;
    box-shadow: var(--q-shadow); padding: 16px; animation: svelte-ff1gvf-rmPop .16s ease; }
  .pm-head.svelte-ff1gvf { display: flex; align-items: center; gap: 8px; font-size: 15px; font-weight: 600; color: var(--text); margin-bottom: 12px; }
  .pm-ic.svelte-ff1gvf { font-size: 18px; color: var(--serif); font-variation-settings: "opsz" 20, "wght" 433; }
  .pm-actions.svelte-ff1gvf { display: flex; justify-content: flex-end; gap: 8px; margin-top: 12px; }
  .pm-cancel.svelte-ff1gvf { padding: 8px 14px; border-radius: 10px; color: var(--serif); }
  .pm-cancel.svelte-ff1gvf:active { background: var(--hover); }
  .pm-create.svelte-ff1gvf { padding: 8px 14px; border-radius: 10px; background: var(--text); color: var(--bg); font-weight: 600; }
  .pm-create.svelte-ff1gvf:disabled { opacity: .5; }
  .rnmodal.svelte-ff1gvf { max-height: none; }
  .rn-input.svelte-ff1gvf { width: 100%; padding: 9px 11px; border: 1px solid var(--divider); border-radius: 10px;
    background: var(--bg); color: var(--text); font-size: 14px; }
  .rn-input.svelte-ff1gvf:focus { outline: none; border-color: var(--serif); }
  .d-empty.svelte-ff1gvf { color: var(--muted); font-size: 13px; padding: 10px 11px; }
  .d-spacer.svelte-ff1gvf { flex: 1; min-height: 10px; }
  .d-user.svelte-ff1gvf { display: flex; align-items: center; gap: 11px; padding: 10px 11px; }
  .d-user.svelte-ff1gvf .av:where(.svelte-ff1gvf) { width: 30px; height: 30px; border-radius: 50%; background: var(--avatar-bg); display: flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 560; }
  .d-user.svelte-ff1gvf small:where(.svelte-ff1gvf) { display: block; color: var(--muted); font-size: 12px; }

  aside.svelte-1ad4avs { --bg:#212121; --text:#ececec; --muted:#a8a8a8; --serif:#ececec; --hover:#2f2f2f; --hover-strong:#383838;
    --card:#2f2f2f; --divider:#383838; --coral:#10a37f; --ok:#10a37f; --card-shadow:none;
    display:flex; flex-direction:column; min-width:0; color:var(--text); background:var(--bg); font-family:ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif; }
  .light aside.svelte-1ad4avs { --bg:#fff; --text:#0d0d0d; --muted:#6b6b6b; --serif:#0d0d0d; --hover:#f3f3f3; --hover-strong:#ececec; --card:#f7f7f8; --divider:#e5e5e5; }
  aside.desktop.svelte-1ad4avs { position:relative; flex:none; width:clamp(440px,45vw,820px); min-width:380px; max-width:calc(100vw - 520px); border-left:1px solid var(--divider); animation:svelte-1ad4avs-sideIn .2s ease-out; padding-top:var(--sat,0px); padding-bottom:var(--sab,0px); }
  /* 桌面壳（WCO）：对齐 Claude 工作台——侧列把自己那段第一行整条让给系统窗控当标题栏带（对话 iframe 那边
     app.css 早已整体下推一条带，左右正好是同一行），顶栏的关闭钮、内嵌文件工具栏都从第二行起全宽，
     不再压在最小化/最大化/关闭底下。 */
  html[data-wco="1"] aside.desktop.svelte-1ad4avs { padding-top:var(--wco-h,40px); }
  /* medium（折叠屏展开 ~750px / 竖屏平板）：整套桌面结构照用，只把宽度区间收窄——
     原 min-width:380 + max-width:calc(100vw-520) 在 750px 上互相矛盾（380 > 230），
     面板会顶破视口把对话挤没。给正文留 280px 下限。 */
  aside.desktop.mid.svelte-1ad4avs { width:clamp(300px,52vw,560px); min-width:290px; max-width:calc(100vw - 280px); }
  /* 窄侧列里 56px 图标 rail 太占：缩到 46 并让内容区先吃宽度 */
  aside.desktop.mid.svelte-1ad4avs .rail:where(.svelte-1ad4avs) { width:46px; padding:8px 4px; }
  aside.desktop.mid.svelte-1ad4avs .rail:where(.svelte-1ad4avs) button:where(.svelte-1ad4avs) { width:38px; height:38px; }
  aside.mobile.svelte-1ad4avs { position:fixed; inset:0; z-index:74; width:100%; height:100dvh; animation:svelte-1ad4avs-mobileIn .22s ease-out; padding-top:var(--sat); }
  @keyframes svelte-1ad4avs-sideIn { from { opacity:.5; transform:translateX(12px); } }
  @keyframes svelte-1ad4avs-mobileIn { from { opacity:.4; transform:translateX(8%); } }
  .resize.svelte-1ad4avs { position:absolute; z-index:8; left:-5px; inset-block:0; width:10px; cursor:col-resize; touch-action:none; -webkit-app-region:no-drag; }
  .resize.svelte-1ad4avs::after { content:""; position:absolute; left:4px; inset-block:0; width:2px; background:transparent; transition:.15s; }
  .resize.svelte-1ad4avs:hover::after,.gripping.svelte-1ad4avs .resize:where(.svelte-1ad4avs)::after { background:#10a37f; }
  .topbar.svelte-1ad4avs { height:54px; flex:none; display:flex; align-items:center; gap:10px; padding:0 12px; border-bottom:1px solid var(--divider); background:color-mix(in srgb,var(--bg) 94%,transparent); }
  .heading.svelte-1ad4avs { min-width:0; flex:1; display:flex; align-items:baseline; gap:9px; }
  .heading.svelte-1ad4avs strong:where(.svelte-1ad4avs) { font-size:14.5px; font-weight:600; white-space:nowrap; }
  .heading.svelte-1ad4avs span:where(.svelte-1ad4avs) { color:var(--muted); font-size:12px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .close.svelte-1ad4avs,.back.svelte-1ad4avs { height:36px; border-radius:9px; color:var(--muted); display:flex; align-items:center; justify-content:center; }
  .close.svelte-1ad4avs { width:36px; }
  .close.svelte-1ad4avs:hover,.back.svelte-1ad4avs:hover { color:var(--text); background:var(--hover); }
  .close.svelte-1ad4avs svg:where(.svelte-1ad4avs) { width:18px; height:18px; }
  .back.svelte-1ad4avs { padding:0 8px 0 2px; gap:3px; color:var(--text); }
  .back.svelte-1ad4avs svg:where(.svelte-1ad4avs) { width:22px; height:22px; }
  .back.svelte-1ad4avs span:where(.svelte-1ad4avs) { font-size:14px; }
  .workspace-main.svelte-1ad4avs { flex:1; min-height:0; display:flex; }
  /* 顶部状态栏 / 窗控带、底部手势条已由 aside 根部（或手机底栏）让过：子树归零。此前内嵌文件页
     又自己加了一遍 --sat，折叠屏和手机上文件视图顶部白留双倍状态栏高度。 */
  .topbar.svelte-1ad4avs, .workspace-main.svelte-1ad4avs { --sat:0px; --sab:0px; --wco-right:0px; }
  .rail.svelte-1ad4avs { width:56px; flex:none; display:flex; flex-direction:column; align-items:center; gap:5px; padding:10px 7px; background:#171717; border-right:1px solid var(--divider); }
  .light .rail.svelte-1ad4avs { background:#f7f7f8; }
  .rail.svelte-1ad4avs button:where(.svelte-1ad4avs) { position:relative; width:40px; height:40px; border-radius:10px; display:grid; place-items:center; color:var(--muted); }
  .rail.svelte-1ad4avs button:where(.svelte-1ad4avs):hover { background:var(--hover); color:var(--text); }
  .rail.svelte-1ad4avs button.on:where(.svelte-1ad4avs) { color:var(--text); background:var(--hover-strong); }
  .rail.svelte-1ad4avs svg:where(.svelte-1ad4avs) { width:20px; height:20px; }
  button.svelte-1ad4avs:disabled { opacity:.3; pointer-events:none; }
  nav.svelte-1ad4avs i:where(.svelte-1ad4avs) { position:absolute; width:7px; height:7px; border-radius:50%; background:#10a37f; box-shadow:0 0 0 2px var(--bg); }
  .rail.svelte-1ad4avs i:where(.svelte-1ad4avs) { right:5px; top:5px; }
  .content.svelte-1ad4avs { position:relative; flex:1; min-width:0; min-height:0; display:flex; flex-direction:column; overflow:hidden; }
  .files-host.svelte-1ad4avs { flex:1; min-height:0; position:relative; overflow:hidden; transform:translateZ(0); }
  .empty.svelte-1ad4avs { flex:1; display:grid; place-content:center; justify-items:center; gap:10px; color:var(--muted); font-size:14px; }
  .spin.svelte-1ad4avs { width:22px; height:22px; border:2px solid var(--divider); border-top-color:#10a37f; border-radius:50%; animation:svelte-1ad4avs-spin .8s linear infinite; }
  @keyframes svelte-1ad4avs-spin { to { transform:rotate(360deg); } }
  .bottom.svelte-1ad4avs { height:calc(62px + var(--sab)); flex:none; display:grid; grid-template-columns:repeat(4,1fr); padding:5px 5px var(--sab); border-top:1px solid var(--divider); background:#171717; }
  .light .bottom.svelte-1ad4avs { background:#fff; }
  .bottom.svelte-1ad4avs button:where(.svelte-1ad4avs) { position:relative; min-width:0; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:3px; color:var(--muted); font-size:11px; border-radius:10px; }
  .bottom.svelte-1ad4avs button.on:where(.svelte-1ad4avs) { color:#10a37f; background:color-mix(in srgb,#10a37f 10%,transparent); }
  .bottom.svelte-1ad4avs button:where(.svelte-1ad4avs) > span:where(.svelte-1ad4avs) { position:relative; display:flex; }
  .bottom.svelte-1ad4avs svg:where(.svelte-1ad4avs) { width:21px; height:21px; }
  .bottom.svelte-1ad4avs i:where(.svelte-1ad4avs) { right:-5px; top:-3px; }
  /* 这两条原本用 max-width:1023px 代指「手机形态」。折叠屏展开（700–1023）现在走的是
     桌面形态侧列，宽度也在 1023 以下——不限定 .mobile 就会把标题挤成两行、还把关闭钮
     藏掉（侧列里没有底部返回条，关不掉就出不去了）。 */
  aside.mobile.svelte-1ad4avs .topbar:where(.svelte-1ad4avs) { height:52px; }
  aside.mobile.svelte-1ad4avs .heading:where(.svelte-1ad4avs) { flex-direction:column; gap:0; align-items:flex-start; }
  aside.mobile.svelte-1ad4avs .heading:where(.svelte-1ad4avs) strong:where(.svelte-1ad4avs) { font-size:14px; }
  aside.mobile.svelte-1ad4avs .heading:where(.svelte-1ad4avs) span:where(.svelte-1ad4avs) { font-size:11px; }
  aside.mobile.svelte-1ad4avs .content:where(.svelte-1ad4avs) { padding-bottom:0; }
  aside.mobile.svelte-1ad4avs .close:where(.svelte-1ad4avs) { display:none; }

  /* 底色必须等于 clone 自己的 --main-surface-primary（实测暗 #000 / 亮 #fff）：
     桌面 WCO 下整块 iframe 会下推一条标题栏带，色不对就是一条肉眼可见的接缝。 */
  .chatgpt-page.svelte-hfn6qk { position: fixed; inset: 0; z-index: 40; display:flex; background: #000; overflow:hidden; }
  /* 拎着工作空间的文件悬在 Codex 上：整页亮一圈，松手＝挂进它的输入栏 */
  .chatgpt-page.dnd-on.svelte-hfn6qk::after { content: ''; position: absolute; inset: 6px; border-radius: 16px; pointer-events: none; z-index: 5;
    box-shadow: inset 0 0 0 2px #10a37f; background: rgba(16, 163, 127, .07); }
  .chatgpt-page.light.svelte-hfn6qk { background: #fff; }
  .chat-frame.svelte-hfn6qk { flex:1; min-width:0; position:relative; }
  iframe.svelte-hfn6qk { display: block; width: 100%; height: 100%; border: 0; background: transparent; }

  /* 占位分页此前是硬切（零动效），在一堆有转场的分页里格外显旧。给它全站统一的
     整页入场：底色先到位、内容带位移落定（--ea-decel 入场曲线）。 */
  .cs.svelte-1lte1s4 { position: fixed; inset: 0; background: var(--bg); display: flex; align-items: center; justify-content: center; z-index: 1;
        animation: svelte-1lte1s4-cs-bg var(--mo-quick) var(--ea-fade) both; }
  @keyframes svelte-1lte1s4-cs-bg { from { opacity: 0; } }
  .cs-inner.svelte-1lte1s4 { text-align: center; display: flex; flex-direction: column; align-items: center; gap: 12px; padding: 24px;
              animation: svelte-1lte1s4-cs-in var(--mo-base) var(--ea-decel) both; }
  @keyframes svelte-1lte1s4-cs-in { from { opacity: 0; transform: translateY(12px) scale(.98); } }
  .cs-inner.svelte-1lte1s4 h2:where(.svelte-1lte1s4) { font-family: var(--serif-stack); font-weight: 400; font-size: 26px; color: var(--text); }
  .cs-inner.svelte-1lte1s4 p:where(.svelte-1lte1s4) { color: var(--muted); font-size: 14px; }
  .cs-inner.svelte-1lte1s4 button:where(.svelte-1lte1s4) { margin-top: 10px; padding: 11px 22px; border-radius: 22px; background: var(--card); color: var(--text); box-shadow: var(--card-shadow); font-size: 15px; }
  .cs-inner.svelte-1lte1s4 button:where(.svelte-1lte1s4) { transition: transform var(--mo-tap) var(--ea-out), background var(--mo-micro) var(--ea-fade); }
  .cs-inner.svelte-1lte1s4 button:where(.svelte-1lte1s4):active { background: var(--hover); transform: scale(.96); }

  /* pointer-events:none 是这一版的关键改动之一。旧版是 auto（为了防连点再开一个转场），
     代价是万一落幕逻辑没跑到，这层就永久盖屏吞掉一切点击——症状正是「点进去卡住、
     怎么点都没反应」。防连点改由入口自己把门（openEntry 见到 ui.enterClaude 直接 return），
     转场层绝不挡路。 */
  .enter.svelte-2lt044 { position: fixed; inset: 0; z-index: 150; pointer-events: none; overflow: hidden; }
  .mascot.svelte-2lt044 { position: absolute; object-fit: contain; will-change: transform, opacity;
            filter: drop-shadow(0 2px 8px rgba(0, 0, 0, .4)); }

  .g-sparkle.svelte-11aehdf { display: block; }
  .g-sparkle.glow.svelte-11aehdf { filter: drop-shadow(0 2px 13px rgba(49, 134, 255, .3)); }
/* Antigravity 分页主题 —— 按 Claude Design 设计稿《Antigravity Mobile Design》落地。
   双主题：Azure（暗，深空黑+冰蓝粒子）/ Daylight（明，晨雾白+蓝灰粒子），
   同一信息架构只切配色层；token 全集中在这，组件样式引用 var()。

   毛玻璃实现注（重要）：设计稿对话态用全屏 backdrop-filter:blur(46px) 压粒子——
   WebView 合成里 backdrop 采样整个下层、canvas 每帧都变 → 每帧重算全屏 blur，
   是已踩过的掉帧根因（同屏多 backdrop 还会互扰静默失效）。这里等效改法：
   blur 直接挂在粒子 <canvas> 自身（单层 GPU filter，便宜得多）+ 上面叠半透明
   纯色层。canvas 底下只有纯色 bg，两种算法的视觉结果一致。全分页零 backdrop。 */

@font-face {
  font-family: 'Material Symbols Rounded';
  font-style: normal;
  font-weight: 300 500;
  font-display: block;
  src: url('/app/assets/material-symbols-rounded-agy-Bk8xagf9.woff2') format('woff2');
}

/* 输入框彩环：注册 <angle> 自定义属性使 conic 起始角可被动画平滑插值
   （官网 rotate-gradient-v2 同款；未注册的浏览器退化为静态彩环，仍照常渲染）。
   放全局（非 Svelte scoped）避免 @property/@keyframes 被组件作用域改名。 */
@property --agy-angle { syntax: '<angle>'; initial-value: 0deg; inherits: false; }
@keyframes agy-rotate-border { to { --agy-angle: 360deg; } }

/* 图标连字（子集字体只含本分页用到的 glyph；加新图标要重新子集化下载）。
   font-variation-settings 不可部分覆盖，按 线性/常规/填充/加粗 四档给全组。 */
.agy-root .msr, .agy-root .msr4, .agy-root .msr-f, .agy-root .msr5 {
  font-family: 'Material Symbols Rounded';
  font-weight: normal; font-style: normal; line-height: 1;
  letter-spacing: normal; text-transform: none; white-space: nowrap; direction: ltr;
  font-feature-settings: 'liga';
  -webkit-font-smoothing: antialiased;
  display: inline-block; user-select: none;
}
.agy-root .msr   { font-variation-settings: 'FILL' 0, 'wght' 300, 'GRAD' 0, 'opsz' 24; }
.agy-root .msr4  { font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24; }
.agy-root .msr-f { font-variation-settings: 'FILL' 1, 'wght' 400, 'GRAD' 0, 'opsz' 24; }
.agy-root .msr5  { font-variation-settings: 'FILL' 0, 'wght' 500, 'GRAD' 0, 'opsz' 24; }

.agy-root {
  /* —— Azure 暗（默认）—— */
  --ag-bg: #06080F;
  --ag-on: #EAEFFA;            /* 主文字 */
  --ag-on-sub: #A7B0C6;        /* 副语 */
  --ag-on-dim: #8A93A8;        /* 次级 */
  --ag-on-faint: #7E869B;      /* placeholder/弱 */
  --ag-on-low: #6B7488;        /* 分组标题/最弱 */
  --ag-accent: #6EA8FF;        /* 主蓝（图标/高亮） */
  --ag-send: #4F86FF;          /* 发送钮 */
  --ag-send-on: #fff;
  --ag-send-shadow: 0 4px 18px -3px rgba(79, 134, 255, .7);
  /* 欢迎页底部渐变 veil（粒子裸露区→内容区压暗） */
  --ag-veil: linear-gradient(180deg, rgba(6,8,15,0) 36%, rgba(6,8,15,.5) 62%, rgba(6,8,15,.92) 100%);
  --ag-dim: rgba(7, 10, 19, .72);             /* 对话态全屏遮罩（canvas 已自模糊） */
  --ag-pill-bg: rgba(255, 255, 255, .08);     /* 顶栏模型胶囊 */
  --ag-pill-bd: rgba(255, 255, 255, .13);
  --ag-pill-shadow: none;
  --ag-card-bg: rgba(255, 255, 255, .06);     /* 建议卡 */
  --ag-card-bd: rgba(255, 255, 255, .1);
  --ag-card-shadow: none;
  --ag-input-bg: rgba(255, 255, 255, .07);    /* 输入条 */
  --ag-input-bd: rgba(255, 255, 255, .12);
  --ag-input-shadow: none;
  /* 输入框（AI Studio「Build」同款：面板+彩环+chip，取自其 v3 token 暗值） */
  --ag-cbox-bg: #1f1f1f;                       /* 面板底（--color-v3-surface-container 暗） */
  --ag-cbox-on: #e2e2e5;                       /* 面板文字（--color-on-surface 暗） */
  --ag-cbox-ph: #a8abb4;                       /* placeholder（--color-on-surface-variant 暗） */
  --ag-conic-neutral: #1f1f1f;                 /* 彩环中性段（=面板底，隐入只留彩色扫光） */
  --ag-chip-bd: #333;                          /* mic/add chip 描边（--color-v3-outline 暗） */
  --ag-chip-hover: #424242;                    /* chip 按压/发送钮底（button-container-high 暗） */
  --ag-bubble-bg: rgba(91, 140, 255, .16);    /* 用户气泡 */
  --ag-bubble-bd: rgba(91, 140, 255, .28);
  --ag-bubble-on: #EEF2FB;
  --ag-bubble-shadow: none;
  --ag-code-bg: rgba(255, 255, 255, .04);     /* 代码块 */
  --ag-code-bd: rgba(255, 255, 255, .1);
  --ag-code-on: #C5CAD3;
  --ag-kw: #9FB8FF; --ag-fn: #7FA8FF; --ag-str: #A7E0B0;   /* 语法点缀（行内/链接借用） */
  --ag-sheet-bg: rgba(16, 19, 27, .96);       /* 模型 bottom sheet（无 backdrop，alpha 补偿） */
  --ag-sheet-bd: rgba(255, 255, 255, .1);
  --ag-sheet-handle: rgba(255, 255, 255, .22);
  --ag-sel-bg: rgba(110, 168, 255, .1);       /* sheet 选中项 */
  --ag-sel-bd: rgba(110, 168, 255, .3);
  --ag-badge-on: #9EC2FF;
  --ag-badge-bg: rgba(110, 168, 255, .2);
  --ag-radio: #5a6478;
  --ag-divider: rgba(255, 255, 255, .08);
  --ag-drawer-bg: rgba(12, 15, 22, .9);       /* 侧栏（无 backdrop，alpha 补偿 .7→.9） */
  --ag-drawer-bd: rgba(255, 255, 255, .08);
  --ag-scrim: rgba(0, 0, 0, .5);
  --ag-search-bg: rgba(255, 255, 255, .06);
  --ag-search-bd: rgba(255, 255, 255, .08);
  --ag-new-bg: rgba(110, 168, 255, .14);
  --ag-new-bd: rgba(110, 168, 255, .26);
  --ag-new-on: #CFE0FF;
  --ag-row-on: #C3CAD9;
  --ag-row-active: rgba(110, 168, 255, .13);
  --ag-row-active-ic: #8FB6FF;
  --ag-avatar: linear-gradient(135deg, #4F86FF, #8FB6FF);
  --ag-logo-shadow: drop-shadow(0 6px 26px rgba(110, 168, 255, .55));
  --ag-hover: rgba(255, 255, 255, .07);
  --ag-err-bg: rgba(255, 92, 92, .12);
  --ag-err-on: #ff9d9d;

  font-family: 'Google Sans Flex', 'Google Sans', 'PingFang SC', 'Microsoft YaHei', system-ui, -apple-system, sans-serif;
  color: var(--ag-on);
}

.agy-root.light {
  /* —— Daylight 明 —— */
  --ag-bg: #EDF1F8;
  --ag-on: #14161C;
  --ag-on-sub: #5B6472;
  --ag-on-dim: #5B6472;
  --ag-on-faint: #9aa2b2;
  --ag-on-low: #9aa2b2;
  --ag-accent: #3279F9;
  --ag-send: #14161C;
  --ag-send-on: #fff;
  --ag-send-shadow: 0 4px 14px -4px rgba(20, 22, 28, .5);
  --ag-veil: linear-gradient(180deg, rgba(237,241,248,0) 34%, rgba(237,241,248,.5) 60%, rgba(237,241,248,.97) 100%);
  --ag-dim: rgba(238, 242, 249, .72);
  --ag-pill-bg: rgba(255, 255, 255, .66);
  --ag-pill-bd: rgba(20, 30, 60, .1);
  --ag-pill-shadow: 0 2px 8px -4px rgba(40, 50, 80, .3);
  --ag-card-bg: rgba(255, 255, 255, .62);
  --ag-card-bd: rgba(255, 255, 255, .85);
  --ag-card-shadow: 0 4px 14px -8px rgba(40, 50, 80, .3);
  --ag-input-bg: rgba(255, 255, 255, .72);
  --ag-input-bd: rgba(20, 30, 60, .1);
  --ag-input-shadow: 0 6px 18px -10px rgba(40, 50, 80, .35);
  /* 输入框（AI Studio「Build」同款，明值） */
  --ag-cbox-bg: #fff;                          /* --color-v3-surface-container 明 */
  --ag-cbox-on: #1a1c1e;                        /* --color-on-surface 明 */
  --ag-cbox-ph: #44474e;                        /* --color-on-surface-variant 明 */
  --ag-conic-neutral: #eaeaeb;                  /* 彩环中性段（浅灰细边） */
  --ag-chip-bd: #d7d8da;                        /* --color-v3-outline 明 */
  --ag-chip-hover: #eaeaeb;                     /* --color-v3-button-container-high 明 */
  --ag-bubble-bg: #fff;
  --ag-bubble-bd: rgba(20, 22, 28, .07);
  --ag-bubble-on: #14161C;
  --ag-bubble-shadow: 0 2px 10px -4px rgba(40, 50, 80, .18);
  --ag-code-bg: rgba(255, 255, 255, .62);
  --ag-code-bd: rgba(20, 22, 28, .08);
  --ag-code-on: #3c4250;
  --ag-kw: #8430CE; --ag-fn: #1A73E8; --ag-str: #188038;
  --ag-sheet-bg: rgba(255, 255, 255, .97);
  --ag-sheet-bd: rgba(20, 30, 60, .08);
  --ag-sheet-handle: rgba(20, 30, 60, .18);
  --ag-sel-bg: rgba(50, 121, 249, .08);
  --ag-sel-bd: rgba(50, 121, 249, .3);
  --ag-badge-on: #1a56d6;
  --ag-badge-bg: rgba(50, 121, 249, .13);
  --ag-radio: #c2c7d0;
  --ag-divider: rgba(20, 30, 60, .08);
  --ag-drawer-bg: rgba(255, 255, 255, .92);
  --ag-drawer-bd: rgba(20, 30, 60, .08);
  --ag-scrim: rgba(30, 40, 70, .28);
  --ag-search-bg: rgba(20, 30, 60, .05);
  --ag-search-bd: rgba(20, 30, 60, .08);
  --ag-new-bg: rgba(50, 121, 249, .1);
  --ag-new-bd: rgba(50, 121, 249, .25);
  --ag-new-on: #1a56d6;
  --ag-row-on: #3a4150;
  --ag-row-active: rgba(50, 121, 249, .1);
  --ag-row-active-ic: #3279F9;
  --ag-avatar: linear-gradient(135deg, #3279F9, #7FB0FF);
  --ag-logo-shadow: drop-shadow(0 8px 22px rgba(50, 121, 249, .3));
  --ag-hover: rgba(20, 30, 60, .06);
  --ag-err-bg: #fce8e6;
  --ag-err-on: #c5221f;
}

.agy-root button { font-family: inherit; color: inherit; background: none; border: 0; cursor: pointer; padding: 0; -webkit-tap-highlight-color: transparent; }

/* 隐藏滚动条（手机 app 质感；桌面滚轮/拖拽不受影响）——sheet 列表/会话流/侧栏都适用 */
.agy-root *::-webkit-scrollbar { width: 0; height: 0; }
.agy-root * { scrollbar-width: none; }

/* —— AI 回复 markdown 排版（{@html} 动态内容，须全局；色值走 token 随主题切）—— */
.agy-root .agy-md { font-size: 15px; line-height: 1.62; color: var(--ag-on); word-break: break-word; }
.agy-root .agy-md > :first-child { margin-top: 0; }
.agy-root .agy-md > :last-child { margin-bottom: 0; }
.agy-root .agy-md p { margin: 0 0 10px; }
.agy-root .agy-md h1, .agy-root .agy-md h2, .agy-root .agy-md h3, .agy-root .agy-md h4 { margin: 16px 0 8px; font-weight: 550; line-height: 1.3; }
.agy-root .agy-md h1 { font-size: 19px; } .agy-root .agy-md h2 { font-size: 17px; } .agy-root .agy-md h3 { font-size: 16px; } .agy-root .agy-md h4 { font-size: 15px; }
.agy-root .agy-md strong { color: var(--ag-on); font-weight: 600; }
.agy-root .agy-md a { color: var(--ag-accent); text-decoration: none; }
.agy-root .agy-md a:active { opacity: .7; }
.agy-root .agy-md ul, .agy-root .agy-md ol { margin: 0 0 10px; padding-left: 22px; }
.agy-root .agy-md li { margin: 3px 0; }
.agy-root .agy-md blockquote { margin: 0 0 10px; padding: 2px 0 2px 13px; border-left: 2px solid var(--ag-sel-bd); color: var(--ag-on-dim); }
.agy-root .agy-md hr { border: 0; border-top: 1px solid var(--ag-divider); margin: 14px 0; }
.agy-root .agy-md code { font-family: 'Google Sans Mono', ui-monospace, 'SF Mono', Consolas, monospace; font-size: .88em; background: var(--ag-code-bg); border: 1px solid var(--ag-code-bd); padding: 1px 6px; border-radius: 6px; color: var(--ag-code-on); }
.agy-root .agy-md pre { margin: 0 0 12px; border: 1px solid var(--ag-code-bd); border-radius: 14px; background: var(--ag-code-bg); padding: 12px 14px; overflow-x: auto; }
.agy-root .agy-md pre code { background: none; border: 0; padding: 0; font-size: 12px; line-height: 1.7; color: var(--ag-code-on); white-space: pre; }
.agy-root .agy-md img { max-width: 100%; border-radius: 14px; display: block; margin: 4px 0 10px; }
.agy-root .agy-md table { border-collapse: collapse; margin: 0 0 12px; font-size: 13.5px; display: block; overflow-x: auto; }
.agy-root .agy-md th, .agy-root .agy-md td { border: 1px solid var(--ag-divider); padding: 6px 10px; text-align: left; }
.agy-root .agy-md th { background: var(--ag-code-bg); font-weight: 550; }

  .agy-root.svelte-gok9s5 { flex: 1; min-height: 0; position: relative; display: flex; flex-direction: column; background: var(--ag-bg); overflow: hidden; }

  /* 背景层：粒子 canvas（对话态自模糊成柔光，scale 补偿 blur 采样边缘）+ veil/遮罩 */
  .agy-canvas.svelte-gok9s5 { position: absolute; inset: 0; width: 100%; height: 100%; z-index: 0; display: block;
    transition: filter .8s ease; will-change: filter; }
  .agy-canvas.soft.svelte-gok9s5 { filter: blur(32px); transform: scale(1.12); }
  .agy-veil.svelte-gok9s5 { position: absolute; inset: 0; z-index: 1; background: var(--ag-veil); pointer-events: none; }
  .agy-dimlayer.svelte-gok9s5 { position: absolute; inset: 0; z-index: 1; background: var(--ag-dim); pointer-events: none; }

  /* 顶栏 */
  .agy-top.svelte-gok9s5 { flex: none; display: flex; align-items: center; justify-content: space-between; gap: 8px;
    padding: calc(var(--sat) + 6px) 12px 0; position: relative; z-index: 5; }
  .agy-iconbtn.svelte-gok9s5 { width: 44px; height: 44px; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: var(--ag-on); flex: none; }
  .agy-iconbtn.svelte-gok9s5:active { background: var(--ag-hover); }
  /* —— 模型胶囊 ↔ 选择窗 morph（单元素：宽/高/圆角/底色全程过渡）——
     胶囊 absolute 悬在顶栏中央（与 44px 图标钮垂直居中），打开时长成悬浮窗；
     胶囊面淡出、列表错峰淡入。不用 svelte transition，关闭动画纯 CSS 可逆。 */
  .agy-mp-probe.svelte-gok9s5 { position: fixed; visibility: hidden; white-space: nowrap; font-size: 14px; font-weight: 500; pointer-events: none; }
  .agy-mp-scrim.svelte-gok9s5 { position: absolute; inset: 0; z-index: 34; background: rgba(0, 0, 0, .35); opacity: 0; visibility: hidden;
    transition: opacity .3s, visibility 0s linear .3s; }
  .agy-mp-scrim.open.svelte-gok9s5 { opacity: 1; visibility: visible; transition: opacity .3s; }
  .agy-root.light.svelte-gok9s5 .agy-mp-scrim:where(.svelte-gok9s5) { background: rgba(30, 40, 70, .25); }
  .agy-mp.svelte-gok9s5 { position: absolute; top: calc(var(--sat) + 11.5px); left: 50%; transform: translateX(-50%); z-index: 35;
    width: var(--mp-w); height: 33px; border-radius: 999px; overflow: hidden;
    background: var(--ag-pill-bg); border: 1px solid var(--ag-pill-bd); box-shadow: var(--ag-pill-shadow);
    transition: width .38s cubic-bezier(.32,.72,.27,1), height .38s cubic-bezier(.32,.72,.27,1),
      border-radius .32s ease, background .28s ease, border-color .28s ease, box-shadow .32s ease; }
  .agy-mp.open.svelte-gok9s5 { width: min(calc(100% - 32px), 380px); height: var(--mp-h); border-radius: 22px;
    background: var(--ag-sheet-bg); border-color: var(--ag-sheet-bd); box-shadow: 0 26px 60px -18px rgba(0, 0, 0, .55); }
  .agy-mp-face.svelte-gok9s5 { position: absolute; top: 0; left: 0; right: 0; height: 33px; display: flex; align-items: center; justify-content: center;
    gap: 7px; padding: 0 12px 0 11px; transition: opacity .14s ease; }
  .agy-mp.open.svelte-gok9s5 .agy-mp-face:where(.svelte-gok9s5) { opacity: 0; pointer-events: none; }
  .agy-mp-star.svelte-gok9s5 { color: var(--ag-accent); flex: none; }
  .agy-mp-name.svelte-gok9s5 { font-size: 14px; font-weight: 500; color: var(--ag-on); overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
  .agy-mp-chev.svelte-gok9s5 { color: var(--ag-on-dim); flex: none; }
  .agy-mp-panel.svelte-gok9s5 { position: absolute; inset: 0; display: flex; flex-direction: column; padding: 8px 8px 10px;
    opacity: 0; pointer-events: none; transition: opacity .16s ease; }
  .agy-mp.open.svelte-gok9s5 .agy-mp-panel:where(.svelte-gok9s5) { opacity: 1; pointer-events: auto; transition: opacity .26s ease .12s; }
  .agy-mp-title.svelte-gok9s5 { flex: none; font-size: 12px; color: var(--ag-on-low); padding: 5px 10px 7px; letter-spacing: .04em; }
  .agy-mp-list.svelte-gok9s5 { flex: 1; min-height: 0; overflow-y: auto; display: flex; flex-direction: column; gap: 2px; }
  .agy-mp-row.svelte-gok9s5 { position: relative; display: flex; flex-direction: column; align-items: flex-start; gap: 1px;
    padding: 8px 42px 9px 12px; border-radius: 13px; text-align: left; }
  .agy-mp-row.svelte-gok9s5:active { background: var(--ag-hover); }
  .agy-mp-row.sel.svelte-gok9s5 { background: var(--ag-sel-bg); }
  .agy-mp-rname.svelte-gok9s5 { font-size: 15px; font-weight: 550; color: var(--ag-on); }
  .agy-mp-rdesc.svelte-gok9s5 { font-size: 12px; color: var(--ag-on-dim); }
  .agy-mp-ck.svelte-gok9s5 { position: absolute; right: 13px; top: 50%; transform: translateY(-50%); color: var(--ag-accent); }

  /* ① 欢迎页 */
  .agy-hero.svelte-gok9s5 { flex: 1; min-height: 0; display: flex; flex-direction: column; align-items: center; justify-content: center;
    padding: 0 28px; position: relative; z-index: 5; text-align: center; }
  .agy-hero-logo.svelte-gok9s5 { width: 66px; height: 66px; margin-bottom: 22px; filter: var(--ag-logo-shadow); }
  .agy-hero.svelte-gok9s5 h1:where(.svelte-gok9s5) { font-size: 30px; font-weight: 500; letter-spacing: -.5px; color: var(--ag-on); margin: 0; }
  .agy-hero.svelte-gok9s5 p:where(.svelte-gok9s5) { font-size: 15.5px; color: var(--ag-on-sub); margin: 8px 0 0; line-height: 1.5; }

  /* 入场转场配合（vs.agyEnter）：UI 整体淡入、hero logo 隐身——logo 由转场层的
     帧动画落位接管，落位完成（onLand）置回 false 时本体显出，与层淡出 cross-fade。 */
  .agy-root.entering.svelte-gok9s5 { animation: svelte-gok9s5-agy-enter-fade .65s ease .05s backwards; }
  .agy-root.entering.svelte-gok9s5 .agy-hero-logo:where(.svelte-gok9s5) { visibility: hidden; }
  @keyframes svelte-gok9s5-agy-enter-fade { from { opacity: 0; } }

  /* ② 对话页 */
  .agy-scroll.svelte-gok9s5 { flex: 1; min-height: 0; overflow-y: auto; -webkit-overflow-scrolling: touch; position: relative; z-index: 5; }
  .agy-thread.svelte-gok9s5 { max-width: 760px; margin: 0 auto; width: 100%; padding: 16px 18px 8px; display: flex; flex-direction: column; gap: 15px; }
  .agy-turn-user.svelte-gok9s5 { display: flex; justify-content: flex-end; }
  .agy-bubble.svelte-gok9s5 { max-width: 82%; background: var(--ag-bubble-bg); border: 1px solid var(--ag-bubble-bd); color: var(--ag-bubble-on);
    border-radius: 20px 20px 6px 20px; padding: 11px 15px; font-size: 15px; line-height: 1.5; box-shadow: var(--ag-bubble-shadow);
    word-break: break-word; white-space: pre-wrap; }
  .agy-b-atts.svelte-gok9s5 { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 8px; }
  .agy-b-att.svelte-gok9s5 { display: inline-flex; align-items: center; font-size: 13px; color: var(--ag-on-dim); }
  .agy-b-att.svelte-gok9s5 img:where(.svelte-gok9s5) { width: 64px; height: 64px; object-fit: cover; border-radius: 12px; display: block; }
  /* 回复行无头像（老板砍掉 agy 头像）：内容占满整行宽 */
  .agy-turn-ai.svelte-gok9s5 { display: flex; align-self: flex-start; width: 100%; }
  .agy-ai-body.svelte-gok9s5 { display: flex; flex-direction: column; gap: 11px; min-width: 0; flex: 1; }
  .agy-foot.svelte-gok9s5 { color: var(--ag-on-low); font-size: 13px; }
  .agy-err.svelte-gok9s5 { background: var(--ag-err-bg); color: var(--ag-err-on); border-radius: 12px; padding: 10px 14px; font-size: 14px; }
  .agy-actions.svelte-gok9s5 { display: flex; gap: 4px; margin-left: -8px; }
  .agy-act.svelte-gok9s5 { width: 36px; height: 36px; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: var(--ag-on-dim); }
  .agy-act.svelte-gok9s5:active { background: var(--ag-hover); }
  .agy-act.svelte-gok9s5:disabled { opacity: .4; }
  /* 等待三点（流式中无内容时） */
  .agy-tdots.svelte-gok9s5 { display: inline-flex; gap: 5px; padding: 6px 0; }
  .agy-tdots.svelte-gok9s5 i:where(.svelte-gok9s5) { width: 6px; height: 6px; border-radius: 50%; background: var(--ag-accent); animation: svelte-gok9s5-agDot 1.2s ease-in-out infinite; }
  .agy-tdots.svelte-gok9s5 i:where(.svelte-gok9s5):nth-child(2) { animation-delay: .2s; }
  .agy-tdots.svelte-gok9s5 i:where(.svelte-gok9s5):nth-child(3) { animation-delay: .4s; }
  @keyframes svelte-gok9s5-agDot { 0%, 60%, 100% { transform: translateY(0); opacity: .45; } 30% { transform: translateY(-5px); opacity: 1; } }

  /* 输入框：AI Studio「Build」页同款（旋转彩环 + 面板 + 底部动作行）。
     解耦自原单行胶囊——外层 1px padding 承彩环 conic，内层面板列布局。 */
  .agy-composer-wrap.svelte-gok9s5 { flex: none; padding: 8px 16px max(12px, var(--sab)); position: relative; z-index: 5; }
  .agy-composer.svelte-gok9s5 { max-width: 680px; margin: 0 auto; position: relative; padding: 1px; border-radius: 24px; --agy-angle: 0deg;
    background: conic-gradient(from var(--agy-angle) at 50% 50%,
      var(--ag-conic-neutral) 0deg, var(--ag-conic-neutral) 69deg,
      rgba(66, 133, 244, .55) 115deg, rgba(26, 166, 74, .5) 193deg,
      var(--ag-conic-neutral) 270deg, rgba(252, 189, 0, .5) 291deg,
      rgba(219, 55, 45, .5) 322deg, var(--ag-conic-neutral) 360deg);
    animation: agy-rotate-border 10s linear infinite;
    box-shadow: 0 4px 20px -4px rgba(66, 133, 244, .15), 0 8px 32px -8px rgba(66, 133, 244, .1), 0 20px 24px -6px rgba(10, 13, 18, .1); }
  .agy-c-inner.svelte-gok9s5 { border-radius: 23px; background: var(--ag-cbox-bg); padding: 20px 16px; display: flex; flex-direction: column; gap: 20px; min-height: 140px; }
  .agy-field.svelte-gok9s5 { flex: 1; min-height: 44px; max-height: 40vh; overflow-y: auto; font-size: 16px; line-height: 24px; color: var(--ag-cbox-on);
    outline: none; word-break: break-word; padding: 0; }
  .agy-field.svelte-gok9s5:empty::before { content: attr(data-ph); color: var(--ag-cbox-ph); }
  .agy-c-actions.svelte-gok9s5 { display: flex; align-items: center; gap: 8px; }
  .agy-c-spacer.svelte-gok9s5 { flex: 1 1 auto; }
  .agy-chip.svelte-gok9s5 { width: 38px; height: 38px; border-radius: 50%; display: flex; align-items: center; justify-content: center; flex: none;
    color: var(--ag-cbox-ph); border: 1px solid var(--ag-chip-bd); background: transparent; transition: background .15s; }
  .agy-chip.svelte-gok9s5:active { background: var(--ag-chip-hover); }
  .agy-c-send.svelte-gok9s5 { width: 38px; height: 38px; border-radius: 50%; display: flex; align-items: center; justify-content: center; flex: none;
    background: var(--ag-chip-hover); transition: opacity .15s, filter .15s; }
  .agy-c-send.svelte-gok9s5:disabled { opacity: .4; }
  .agy-c-send.svelte-gok9s5:active { filter: brightness(.94); }
  .agy-c-send-ic.svelte-gok9s5 { display: block; }
  @media (prefers-reduced-motion: reduce) { .agy-composer.svelte-gok9s5 { animation: none; } }
  /* 附件 chips */
  .agy-c-atts.svelte-gok9s5 { display: flex; flex-wrap: wrap; gap: 7px; padding: 4px 4px 8px; }
  .agy-c-att.svelte-gok9s5 { position: relative; display: flex; align-items: center; height: 52px; border-radius: 14px; overflow: hidden; background: var(--ag-card-bg); border: 1px solid var(--ag-card-bd); }
  .agy-c-att.img.svelte-gok9s5 { width: 52px; }
  .agy-c-att.svelte-gok9s5 img:where(.svelte-gok9s5) { width: 52px; height: 52px; object-fit: cover; display: block; }
  .agy-c-att-name.svelte-gok9s5 { padding: 0 12px; font-size: 13px; color: var(--ag-on); max-width: 160px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
  .agy-c-att.pending.svelte-gok9s5 { opacity: .55; }
  .agy-c-spin.svelte-gok9s5 { position: absolute; left: 50%; top: 50%; width: 16px; height: 16px; margin: -8px 0 0 -8px; border-radius: 50%;
    border: 2px solid var(--ag-divider); border-top-color: var(--ag-on); animation: svelte-gok9s5-agSpin .8s linear infinite; }
  @keyframes svelte-gok9s5-agSpin { to { transform: rotate(360deg); } }
  .agy-c-att-x.svelte-gok9s5 { position: absolute; top: 0; right: 0; width: 17px; height: 17px; border-radius: 50%; background: rgba(0,0,0,.55); color: #fff;
    font-size: 13px; line-height: 1; display: flex; align-items: center; justify-content: center; }
  .agy-c-att-x.svelte-gok9s5::before { content: ''; position: absolute; inset: -8px; }

  /* ③ 侧栏 */
  .agy-scrim.svelte-gok9s5 { position: absolute; inset: 0; z-index: 50; background: var(--ag-scrim); opacity: 0; visibility: hidden;
    transition: opacity .25s, visibility 0s linear .25s; }
  .agy-scrim.open.svelte-gok9s5 { opacity: 1; visibility: visible; transition: opacity .25s; }
  .agy-drawer.svelte-gok9s5 { position: absolute; top: 0; left: 0; bottom: 0; width: 81vw; max-width: 308px; z-index: 51;
    background: var(--ag-drawer-bg); border-right: 1px solid var(--ag-drawer-bd); display: flex; flex-direction: column;
    padding-top: var(--sat); transform: translateX(-100%); visibility: hidden;
    transition: transform .26s cubic-bezier(.22,1,.36,1), visibility 0s linear .26s; }
  .agy-drawer.open.svelte-gok9s5 { transform: none; visibility: visible; transition: transform .26s cubic-bezier(.22,1,.36,1); box-shadow: 0 0 40px rgba(0,0,0,.25); }
  .agy-d-brand.svelte-gok9s5 { flex: none; display: flex; align-items: center; gap: 9px; padding: 10px 8px 10px 18px; }
  .agy-d-brand.svelte-gok9s5 img:where(.svelte-gok9s5) { width: 24px; height: 24px; }
  .agy-d-brand.svelte-gok9s5 span:where(.svelte-gok9s5) { font-size: 17px; font-weight: 550; color: var(--ag-on); flex: 1; }
  .agy-d-close.svelte-gok9s5 { color: var(--ag-on-dim); }
  .agy-d-nav.svelte-gok9s5 { display: flex; align-items: center; gap: 13px; margin: 0 10px; padding: 10px 9px; border-radius: 11px; font-size: 14.5px; color: var(--ag-row-on); text-align: left; }
  .agy-d-nav.svelte-gok9s5:active { background: var(--ag-hover); }
  .agy-d-nav-ic.svelte-gok9s5 { color: var(--ag-on-dim); width: 20px; text-align: center; flex: none; }
  .agy-d-nav-gem.svelte-gok9s5 { color: var(--ag-accent); }
  .agy-d-search.svelte-gok9s5 { flex: none; display: flex; align-items: center; gap: 9px; margin: 8px 16px 10px; background: var(--ag-search-bg);
    border: 1px solid var(--ag-search-bd); border-radius: 12px; padding: 9px 12px; color: var(--ag-on-dim); }
  .agy-d-search.svelte-gok9s5 input:where(.svelte-gok9s5) { flex: 1; min-width: 0; background: none; border: 0; outline: none; font: inherit; font-size: 14px; color: var(--ag-on); }
  .agy-d-search.svelte-gok9s5 input:where(.svelte-gok9s5)::placeholder { color: var(--ag-on-faint); }
  .agy-d-new.svelte-gok9s5 { flex: none; display: flex; align-items: center; gap: 10px; margin: 0 16px 12px; background: var(--ag-new-bg);
    border: 1px solid var(--ag-new-bd); border-radius: 13px; padding: 11px 13px; }
  .agy-d-new.svelte-gok9s5 .msr4:where(.svelte-gok9s5) { color: var(--ag-accent); }
  .agy-d-new.svelte-gok9s5 span:where(.svelte-gok9s5):last-child { font-size: 14.5px; font-weight: 550; color: var(--ag-new-on); }
  .agy-d-new.svelte-gok9s5:active { filter: brightness(1.12); }
  .agy-d-list.svelte-gok9s5 { flex: 1; min-height: 0; overflow-y: auto; padding: 0 10px; display: flex; flex-direction: column; gap: 2px; }
  .agy-d-sec.svelte-gok9s5 { font-size: 11.5px; font-weight: 600; letter-spacing: .06em; color: var(--ag-on-low); padding: 10px 8px 5px; }
  .agy-d-row.svelte-gok9s5 { display: flex; align-items: center; gap: 11px; padding: 0 0 0 9px; border-radius: 11px; }
  .agy-d-row.cur.svelte-gok9s5 { background: var(--ag-row-active); }
  .agy-d-row-ic.svelte-gok9s5 { color: var(--ag-on-low); flex: none; }
  .agy-d-row-ic.on.svelte-gok9s5 { color: var(--ag-row-active-ic); }
  .agy-d-pick.svelte-gok9s5 { flex: 1; min-width: 0; padding: 10px 0; text-align: left; font-size: 14px; color: var(--ag-row-on);
    overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
  .agy-d-row.cur.svelte-gok9s5 .agy-d-pick:where(.svelte-gok9s5) { color: var(--ag-on); }
  .agy-d-del.svelte-gok9s5 { width: 36px; height: 36px; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: var(--ag-on-low); flex: none; }
  .agy-d-del.svelte-gok9s5:active { background: var(--ag-hover); }
  .agy-d-empty.svelte-gok9s5 { color: var(--ag-on-low); font-size: 14px; padding: 10px 12px; }
  .agy-d-list.svelte-gok9s5 { padding-bottom: calc(10px + var(--sab)); }

  /* 顶栏功能模块按钮 + 菜单（与 vertex 分页统一的切换入口，agy 暗色风浮层） */
  .agy-fbtn.svelte-gok9s5 { width: auto; padding: 0 7px 0 10px; gap: 2px; border-radius: 999px; }
  .agy-fbtn-logo.svelte-gok9s5 { width: 22px; height: 21px; object-fit: contain; display: block; }
  .agy-fbtn-chev.svelte-gok9s5 { color: var(--ag-on-dim); }
  .agy-fm-scrim.svelte-gok9s5 { position: absolute; inset: 0; z-index: 44; }
  .agy-fm.svelte-gok9s5 { position: absolute; top: calc(var(--sat) + 52px); right: 12px; z-index: 45; min-width: 218px;
    background: var(--ag-sheet-bg); border: 1px solid var(--ag-sheet-bd); border-radius: 18px; padding: 6px;
    box-shadow: 0 18px 44px -12px rgba(0, 0, 0, .5); }
  .agy-fm-sec.svelte-gok9s5 { font-size: 12px; color: var(--ag-on-low); padding: 7px 12px 5px; letter-spacing: .04em; }
  .agy-fm-row.svelte-gok9s5 { display: flex; align-items: center; gap: 11px; width: 100%; padding: 10px 12px; border-radius: 12px; text-align: left; }
  .agy-fm-row.svelte-gok9s5:active { background: var(--ag-hover); }
  .agy-fm-row.sel.svelte-gok9s5 { background: var(--ag-sel-bg); }
  .agy-fm-ico.svelte-gok9s5 { width: 22px; flex: none; color: var(--ag-on-dim); text-align: center; }
  .agy-fm-logo.svelte-gok9s5 { width: 22px; height: 21px; object-fit: contain; flex: none; display: block; }
  .agy-fm-name.svelte-gok9s5 { flex: 1; font-size: 14.5px; color: var(--ag-on); }
  .agy-fm-ck.svelte-gok9s5 { color: var(--ag-accent); flex: none; }

  .agye.svelte-1i2m17x { position: fixed; inset: 0; z-index: 120; opacity: 0; transition: opacity .38s ease; }
  .agye.on.svelte-1i2m17x { opacity: 1; }
  .agye-wrap.svelte-1i2m17x { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; will-change: transform; }
  .agye-wrap.svelte-1i2m17x canvas:where(.svelte-1i2m17x) { display: block; }
/* ============================================================
   Gemini (Luminous / lr26) 主题 —— Vertex 分页专用，固定亮色。
   令牌 / 字体 / 图标 / 排版均取自参考资源（真实 Gemini 移动页）的 CSS。
   全部作用域在 .vertex-root，绝不污染 bridge 全局暗色主题。
   字体放 src 由 Vite 处理 base（dev=/ , prod=/app/），url() 用相对路径。
   ============================================================ */

/* —— 字体：拉丁子集即可，中文走系统回退（真实 Gemini 也是 Google Sans 拉丁 + Noto/系统 CJK）—— */
@font-face { font-family: "Google Sans Flex"; font-style: oblique 0deg 10deg; font-weight: 280 540; font-stretch: 92% 100%; font-display: swap; src: url('/app/assets/google-sans-flex-2emASO-3.woff2') format('woff2'); }
@font-face { font-family: "Google Sans"; font-style: normal; font-weight: 400; font-display: swap; src: url('/app/assets/google-sans-DDbPpJLK.woff2') format('woff2'); }
@font-face { font-family: "Luminous Symbols"; font-style: normal; font-weight: 100 700; font-display: block; src: url('/app/assets/luminous-symbols-B3fQKu0_.woff2') format('woff2'); }
@font-face { font-family: "Google Symbols"; font-style: normal; font-weight: 100 700; font-display: block; src: url('/app/assets/google-symbols-StpZmXyJ.woff2') format('woff2'); }

.vertex-root {
  /* —— 表面 / 文字 —— */
  --g-surface: #fdfcfc;        /* 页面底 */
  --g-bright: #fff;            /* 表面 / 输入条 / 侧栏 */
  --g-dim: #f2f0f0;
  --g-container: #f0f4f9;      /* 用户气泡 / 代码块底 */
  --g-container-high: #e9eef6;
  --g-on: #1f1f1f;            /* 主文字 */
  --g-on-strong: #000;
  --g-on-variant: rgba(0,0,0,.55);   /* 次要文字 */
  --g-on-low: rgba(0,0,0,.42);
  --g-outline: #747775;
  --g-outline-low: #e1e3e1;          /* 输入条边框 */
  --g-divider: #ececec;
  /* —— 品牌 / 强调 —— */
  --g-primary: #0b57d0;        /* 链接 / 主操作 */
  --g-primary-c: #d3e3fd;
  --g-on-primary: #fff;
  --g-accent: #3186ff;         /* aurora 蓝 */
  --g-accent-c: #dcf1ff;
  --g-blue: #3186ff; --g-green: #0ebc5f; --g-red: #ff4641; --g-yellow: #ffcc00;
  --g-placeholder: #5f6368;
  /* —— 态 —— */
  --g-hover: rgba(68,71,70,.08);
  --g-hover-strong: rgba(68,71,70,.12);
  /* —— 形状 / 阴影（2026-06 实测自真实 Gemini 移动页计算样式）——
     输入条：白底无边框 radius 40，阴影极软 0 0 20px rgba(31,31,31,.04)
     用户气泡：#f2f0f0 radius 40 padding 20/28；弹层 radius 20 padding 8 */
  --g-r-input: 40px; --g-r-card: 16px; --g-r-bubble: 40px; --g-r-pill: 999px;
  --g-shadow-input: 0 0 20px rgba(31,31,31,.04);
  --g-shadow-pop: 0 6px 24px rgba(0,0,0,.16);
  /* 字体栈：拉丁/数字 Google Sans（gemini 味），中文系统回退 */
  --g-font: "Google Sans Flex", "Google Sans", "PingFang SC", "Microsoft YaHei", system-ui, -apple-system, sans-serif;

  width: 100%; height: 100%;
  display: flex; flex-direction: column;
  background: var(--g-surface); color: var(--g-on);
  font-family: var(--g-font); font-size: 16px; line-height: 1.5;
  -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility;
}
.vertex-root *, .vertex-enter * { box-sizing: border-box; }
.vertex-root button { font-family: inherit; color: inherit; background: none; border: 0; cursor: pointer; padding: 0; -webkit-tap-highlight-color: transparent; }

/* ============================================================
   深色模式 —— Vertex 独立明暗：分页顶栏日/月钮切 vertex.theme，根节点挂 .v-dark
   控制（与全局 ui.theme 解耦；默认深色）。取色自真实 Gemini 移动端深色页
   （2026-06-16 连 Edge 实测计算样式）：页面纯黑 #000 / 抬升面 #1e1f20 / 正文 #e3e3e3
   / 图标 #e0e0e0 / 输入条软白微光 / 主色淡蓝 #a8c7fa。只改令牌 + 少数硬编码色。
   ============================================================ */
.vertex-root.v-dark {
  /* 暗色令牌照搬真站 gem-sys-color 计算值（2026-07 实测 lr26 深色）：页底不是纯黑而是 #131314，
     表面层级 lowest#0e0e0e/low#1b1b1b/container#1e1f20/high#282a2c/highest#333537。*/
  --g-surface: #131314;
  --g-bright: #1e1f20;
  --g-dim: #282a2c;
  --g-container: #1e1f20;
  --g-container-high: #333537;
  --g-on: #e3e3e3;
  --g-on-strong: #ffffff;
  --g-on-variant: #c4c7c5;
  --g-on-low: #9a9b9c;
  --g-outline: #8e918f;
  --g-outline-low: #444746;
  --g-divider: #2c2d2f;
  --g-primary: #a8c7fa;
  --g-primary-c: #004a77;
  --g-on-primary: #062e6f;
  --g-accent: #a8c7fa;
  --g-accent-c: #004a77;
  --g-blue: #8ab4f8; --g-green: #6dd58c; --g-red: #f2b8b5; --g-yellow: #ffe071;
  --g-placeholder: #9aa0a6;
  --g-hover: rgba(227,227,227,.08);
  --g-hover-strong: rgba(227,227,227,.14);
  --g-shadow-input: 0 0 0 .5px rgba(255,255,255,.05);
  --g-shadow-pop: 0 8px 28px rgba(0,0,0,.6);
}
/* 顶栏渐隐：浅色硬编码近白渐变 → 深色改纯黑渐变（否则黑页顶上压一条白带）。 */
.vertex-root.v-dark .v-header {
  background: linear-gradient(to bottom, rgba(0,0,0,.97) 0%, rgba(0,0,0,.86) 64%, rgba(0,0,0,0) 100%);
}
/* 底部环境光晕：浅色淡蓝 → 深色极淡冷蓝（贴合真实 Gemini 深色页底部微光，不发白发灰）。 */
.vertex-root.v-dark .v-glow {
  background: linear-gradient(180deg, rgba(40,72,140,0) 0%, rgba(42,74,140,.10) 55%, rgba(60,96,168,.20) 100%);
}
/* 对话输入条底部渐隐：浅色近白 → 深色纯黑（对齐顶栏渐隐的明暗处理，避免黑页底部压一条白带）。 */
.vertex-root.v-dark .v-composer-wrap.v-cw-chat {
  background: linear-gradient(to top, rgba(0,0,0,1) 0%, rgba(0,0,0,.96) 42%, rgba(0,0,0,0) 100%);
}
/* 填充主操作：深色主色变淡蓝，原硬编码白字会糊 → 改深蓝字（对齐真实 Gemini 填充按钮）。 */
.vertex-root.v-dark .vm-gen,
.vertex-root.v-dark .vm-chip.on,
.vertex-root.v-dark .vp-chip.on { color: #062e6f; }
/* 分段控件选中态：深色下 bright(#1e1f20) 反比 track 暗 → 选中改更亮灰凸显。 */
.vertex-root.v-dark .vp-seg button.on { background: #3c4043; color: var(--g-on-strong); box-shadow: none; }
/* 复制/重试图标：硬编码深灰 #444746 在黑页几乎不可见 → 提亮。 */
.vertex-root.v-dark .v-act { color: var(--g-on-variant); }
/* 停止按钮：浅色黑底白块在黑页里糊掉 → 浅底深块（发送按钮 .v-go 本就淡蓝深箭头，不改）。 */
.vertex-root.v-dark .v-stop { background: #e3e3e3; color: #000; }
/* 错误条：浅色硬编码粉底红字 → 深色暗红底浅红字。 */
.vertex-root.v-dark .vm-err,
.vertex-root.v-dark .v-err { background: rgba(242,184,181,.14); color: #f2b8b5; }

/* —— 图标字体（连字写法，与真实 Gemini 一致：把图标名当文本写）—— */
.vertex-root .lumi, .vertex-enter .lumi { font-family: "Luminous Symbols"; font-weight: normal; font-style: normal; line-height: 1; letter-spacing: normal; text-transform: none; white-space: nowrap; direction: ltr; font-feature-settings: "liga"; -webkit-font-smoothing: antialiased; display: inline-block; user-select: none; }
.vertex-root .gsym { font-family: "Google Symbols"; font-weight: normal; font-style: normal; line-height: 1; letter-spacing: normal; text-transform: none; white-space: nowrap; direction: ltr; font-feature-settings: "liga"; -webkit-font-smoothing: antialiased; display: inline-block; user-select: none; }

/* —— 对话 markdown 排版（Gemini 模型正文 17px / 行高 26px）—— */
.vertex-root .g-md { font-size: 17px; line-height: 1.625; color: var(--g-on); word-break: break-word; }
/* 流式「吐字渐入」：写头新增的尾部文本淡入（见 lib/streamFade.js）。inline + 纯 opacity，
   不改文本流；强 ease-out 让淡入即便被下一 delta 打断也几乎无跳变（对齐克隆页 .fade-chunk）。 */
.vertex-root .g-md .g-in { display: inline; animation: gmIn .42s cubic-bezier(.2,0,0,1) both; }
@keyframes gmIn { from { opacity: 0; } to { opacity: 1; } }
.vertex-root .g-md p { margin: 0 0 12px; }
.vertex-root .g-md > :last-child { margin-bottom: 0; }
.vertex-root .g-md h1, .vertex-root .g-md h2, .vertex-root .g-md h3, .vertex-root .g-md h4 { font-weight: 500; line-height: 1.3; margin: 18px 0 8px; }
.vertex-root .g-md h1 { font-size: 22px; }
.vertex-root .g-md h2 { font-size: 19px; }
.vertex-root .g-md h3, .vertex-root .g-md h4 { font-size: 17px; }
.vertex-root .g-md ul, .vertex-root .g-md ol { margin: 0 0 12px; padding-left: 24px; }
.vertex-root .g-md li { margin: 4px 0; }
.vertex-root .g-md a { color: var(--g-primary); text-decoration: none; }
.vertex-root .g-md a:active { text-decoration: underline; }
.vertex-root .g-md code { font-family: "Google Sans Mono", ui-monospace, "SF Mono", monospace; font-size: .9em; background: var(--g-container); padding: 2px 6px; border-radius: 6px; }
.vertex-root .g-md pre { background: var(--g-container); border-radius: 12px; padding: 14px 16px; overflow-x: auto; margin: 0 0 12px; }
.vertex-root .g-md pre code { background: none; padding: 0; }
.vertex-root .g-md blockquote { margin: 0 0 12px; padding-left: 14px; border-left: 3px solid var(--g-outline-low); color: var(--g-on-variant); }
.vertex-root .g-md hr { border: 0; border-top: 1px solid var(--g-outline-low); margin: 16px 0; }
.vertex-root .g-md strong { font-weight: 600; }
.vertex-root .g-md img { max-width: 100%; border-radius: 10px; }

/* —— 媒体生成页共享（图像/视频/语音/音乐）—— */
.vertex-root .vm-panel { flex: 1; min-height: 0; display: flex; flex-direction: column; position: relative; }
.vertex-root .vm-scroll { flex: 1; overflow-y: auto; -webkit-overflow-scrolling: touch; padding: calc(var(--sat, 0px) + 64px) 16px 12px; }
.vertex-root .vm-inner { max-width: 720px; margin: 0 auto; }
.vertex-root .vm-empty { display: flex; flex-direction: column; align-items: center; gap: 12px; padding: 13vh 20px; text-align: center; color: var(--g-on-low); }
.vertex-root .vm-empty h3 { font-size: 19px; color: var(--g-on); font-weight: 400; }
.vertex-root .vm-empty p { font-size: 14px; }
.vertex-root .vm-card { background: var(--g-bright); border: 1px solid var(--g-outline-low); border-radius: var(--g-r-card); overflow: hidden; box-shadow: var(--g-shadow-input); margin-bottom: 14px; }
.vertex-root .vm-load { display: flex; flex-direction: column; align-items: center; gap: 14px; padding: 44px 20px; }
.vertex-root .vm-load-txt { font-size: 14px; color: var(--g-on-variant); }
.vertex-root .vm-spin { animation: vspin 1.4s linear infinite; display: inline-flex; }
.vertex-root .vm-img { width: 100%; display: block; }
.vertex-root .vm-video { width: 100%; display: block; background: #000; }
.vertex-root .vm-cap { padding: 11px 14px; font-size: 14px; color: var(--g-on-variant); border-top: 1px solid var(--g-outline-low); display: flex; align-items: center; gap: 10px; }
.vertex-root .vm-cap-txt { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.vertex-root .vm-err { background: #fce8e6; color: #c5221f; border-radius: 12px; padding: 12px 15px; font-size: 14px; margin-bottom: 14px; }
/* 对话式图像的用户气泡（右对齐灰底，gemini 风）*/
.vertex-root .ic-user { width: fit-content; max-width: 82%; margin: 16px 0 10px auto; background: var(--g-container); color: var(--g-on); border-radius: var(--g-r-bubble); padding: 10px 15px; font-size: 15px; line-height: 1.5; word-break: break-word; white-space: pre-wrap; }
.vertex-root .vm-audio { width: 100%; }
.vertex-root .vm-h-sec { font-size: 12px; color: var(--g-on-low); margin: 8px 0 10px; }
.vertex-root .vm-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.vertex-root .vm-thumb { position: relative; aspect-ratio: 1; border-radius: 12px; overflow: hidden; background: var(--g-container); }
.vertex-root .vm-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.vertex-root .vm-thumb video { width: 100%; height: 100%; object-fit: cover; display: block; background: #000; }
.vertex-root .vm-del { position: absolute; top: 4px; right: 4px; width: 24px; height: 24px; border-radius: 50%; background: rgba(0,0,0,.55); color: #fff; font-size: 15px; line-height: 1; display: flex; align-items: center; justify-content: center; }
/* 视频缩略图中央播放角标（海报帧 <img> 上叠放） */
.vertex-root .vm-play { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); width: 30px; height: 30px; border-radius: 50%; background: rgba(0,0,0,.45); color: #fff; font-size: 19px; display: flex; align-items: center; justify-content: center; pointer-events: none; }
/* 图像会话"多版本"角标（左下角；layers 图标 + 链上图数，提示这是一条连续修改链） */
.vertex-root .vm-count { position: absolute; left: 5px; bottom: 5px; display: inline-flex; align-items: center; gap: 3px; height: 21px; padding: 0 8px 0 6px; border-radius: 11px; background: rgba(0,0,0,.55); color: #fff; font-size: 12px; font-weight: 600; line-height: 1; pointer-events: none; }
.vertex-root .vm-hrow { display: flex; align-items: center; gap: 11px; padding: 10px 13px; border-radius: 12px; background: var(--g-bright); border: 1px solid var(--g-outline-low); margin-bottom: 8px; }
.vertex-root .vm-hrow-txt { flex: 1; min-width: 0; font-size: 14px; color: var(--g-on); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.vertex-root .vm-dock { flex: none; padding: 6px 12px max(10px, var(--sab)); }
.vertex-root .vm-dock-inner { max-width: 720px; margin: 0 auto; }
.vertex-root .vm-opts { display: flex; gap: 7px; overflow-x: auto; padding: 4px 2px 8px; -webkit-overflow-scrolling: touch; scrollbar-width: none; }
.vertex-root .vm-opts::-webkit-scrollbar { display: none; }
.vertex-root .vm-chip { flex: none; font-size: 13px; color: var(--g-on-variant); padding: 7px 13px; border-radius: var(--g-r-pill); background: var(--g-dim); white-space: nowrap; }
.vertex-root .vm-chip.on { background: var(--g-primary); color: #fff; }
.vertex-root .vm-chip.toggle.on { background: var(--g-accent-c); color: var(--g-primary); }
.vertex-root .vm-input { background: var(--g-bright); border: 1px solid var(--g-outline-low); border-radius: 24px; box-shadow: var(--g-shadow-input); padding: 6px 6px 6px 16px; display: flex; align-items: flex-end; gap: 6px; }
.vertex-root .vm-field { flex: 1; min-height: 38px; max-height: 30vh; overflow-y: auto; padding: 9px 0; font-size: 16px; line-height: 1.5; color: var(--g-on); outline: none; word-break: break-word; }
.vertex-root .vm-field:empty::before { content: attr(data-ph); color: var(--g-placeholder); }
.vertex-root .vm-gen { flex: none; height: 40px; padding: 0 18px; border-radius: var(--g-r-pill); background: var(--g-primary); color: #fff; font-size: 15px; display: flex; align-items: center; gap: 6px; white-space: nowrap; }
.vertex-root .vm-gen:disabled { opacity: .45; }
.vertex-root .vm-gen.stop { background: var(--g-dim); color: var(--g-on); }

/* 媒体生成 composer 的「源图素材」（Nano Banana 贴图编辑 / Veo 图生视频首帧）——
   与聊天 composer 的附件 chip 同款（56px 圆角缩略 + 黑圆 ×），圆形 lumi 加号钮。 */
.vertex-root .vm-atts { display: flex; flex-wrap: wrap; gap: 8px; max-width: 720px; margin: 0 auto 8px; padding: 0 6px; }
.vertex-root .vm-att { position: relative; width: 56px; height: 56px; border-radius: 14px; overflow: hidden; background: var(--g-dim); }
.vertex-root .vm-att img { width: 100%; height: 100%; object-fit: cover; display: block; }
.vertex-root .vm-att.pending { opacity: .55; }
.vertex-root .vm-att-x { position: absolute; top: 3px; right: 3px; width: 18px; height: 18px; border-radius: 50%; background: rgba(0,0,0,.55); color: #fff; font-size: 13px; line-height: 1; display: flex; align-items: center; justify-content: center; }
.vertex-root .vm-att-x::before { content: ''; position: absolute; inset: -7px; }
.vertex-root .vm-att-spin { position: absolute; left: 50%; top: 50%; width: 18px; height: 18px; margin: -9px 0 0 -9px; border-radius: 50%; border: 2px solid rgba(255,255,255,.4); border-top-color: #fff; animation: vmaspin .8s linear infinite; }
@keyframes vmaspin { to { transform: rotate(360deg); } }
.vertex-root .vm-input.has-attach { padding-left: 6px; }
.vertex-root .vm-attach { flex: none; width: 40px; height: 40px; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: var(--g-on-variant); font-size: 26px; }
.vertex-root .vm-attach:active { background: var(--g-hover); }
/* 对话流里：用户轮内显示这轮的源图缩略 */
.vertex-root .ic-src { display: block; width: 56px; height: 56px; object-fit: cover; border-radius: 12px; margin-bottom: 7px; }

/* —— 参数面板（做进分页内：每行 label + 控件，gemini 风 segmented/slider/toggle）—— */
.vertex-root .vp-params { background: var(--g-bright); border: 1px solid var(--g-outline-low); border-radius: 16px; padding: 4px 14px; margin-bottom: 14px; }
.vertex-root .vp-sec { font-size: 12px; font-weight: 500; color: var(--g-on-low); padding: 12px 0 2px; }
.vertex-root .vp-row { display: flex; align-items: center; gap: 12px; padding: 12px 0; border-top: 1px solid var(--g-divider); min-height: 50px; }
.vertex-root .vp-row:first-of-type { border-top: 0; }
.vertex-root .vp-label { flex: none; width: 80px; font-size: 14px; color: var(--g-on-variant); }
.vertex-root .vp-control { flex: 1; min-width: 0; display: flex; justify-content: flex-end; align-items: center; gap: 8px; }
/* segmented control（输出格式 / 分辨率 / 思考强度）*/
.vertex-root .vp-seg { display: inline-flex; background: var(--g-dim); border-radius: var(--g-r-pill); padding: 2px; }
.vertex-root .vp-seg button { font-size: 13px; padding: 6px 13px; border-radius: var(--g-r-pill); color: var(--g-on-variant); white-space: nowrap; transition: background .15s, color .15s; }
.vertex-root .vp-seg button.on { background: var(--g-bright); color: var(--g-on-strong); box-shadow: 0 1px 3px rgba(0,0,0,.14); font-weight: 500; }
/* 比例 chips（右对齐换行）*/
.vertex-root .vp-chips { display: flex; flex-wrap: wrap; gap: 6px; justify-content: flex-end; }
.vertex-root .vp-chip { font-size: 13px; padding: 6px 12px; border-radius: var(--g-r-pill); background: var(--g-dim); color: var(--g-on-variant); }
.vertex-root .vp-chip.on { background: var(--g-primary); color: #fff; }
/* slider（temperature / top_p）*/
.vertex-root .vp-slider { flex: 1; display: flex; align-items: center; gap: 12px; }
.vertex-root .vp-range { flex: 1; -webkit-appearance: none; appearance: none; height: 4px; border-radius: 2px; background: var(--g-outline-low); outline: none; }
.vertex-root .vp-range::-webkit-slider-thumb { -webkit-appearance: none; appearance: none; width: 18px; height: 18px; border-radius: 50%; background: var(--g-primary); cursor: pointer; box-shadow: 0 1px 3px rgba(0,0,0,.25); }
.vertex-root .vp-range::-moz-range-thumb { width: 18px; height: 18px; border: 0; border-radius: 50%; background: var(--g-primary); cursor: pointer; }
.vertex-root .vp-val { flex: none; width: 34px; text-align: right; font-size: 13px; color: var(--g-on); font-variant-numeric: tabular-nums; }
/* toggle 行（工具：联网搜索 / 图片搜索）*/
.vertex-root .vp-toggle { display: flex; align-items: center; justify-content: space-between; padding: 12px 0; border-top: 1px solid var(--g-divider); min-height: 50px; }
.vertex-root .vp-toggle-label { font-size: 14px; color: var(--g-on); }
.vertex-root .vp-toggle-label small { display: block; font-size: 12px; color: var(--g-on-low); margin-top: 1px; }
.vertex-root .vp-sw { width: 40px; height: 24px; border-radius: 12px; background: var(--g-outline-low); position: relative; transition: background .18s; flex: none; }
.vertex-root .vp-sw.on { background: var(--g-primary); }
.vertex-root .vp-sw-knob { position: absolute; top: 2px; left: 2px; width: 20px; height: 20px; border-radius: 50%; background: #fff; transition: transform .18s; box-shadow: 0 1px 3px rgba(0,0,0,.3); }
.vertex-root .vp-sw.on .vp-sw-knob { transform: translateX(16px); }
/* dropdown 选择器（比例 / 分辨率：点击打开小窗选项面板）*/
.vertex-root .vp-dd { position: relative; }
.vertex-root .vp-dd-btn { display: inline-flex; align-items: center; gap: 4px; padding: 7px 10px 7px 14px; border-radius: var(--g-r-pill); background: var(--g-dim); font-size: 14px; color: var(--g-on); }
.vertex-root .vp-dd-btn:active { background: var(--g-hover-strong); }
.vertex-root .vp-dd-btn svg { width: 16px; height: 16px; color: var(--g-on-variant); flex: none; }
.vertex-root .vp-dd-scrim { position: fixed; inset: 0; z-index: 62; }
.vertex-root .vp-dd-menu { position: absolute; top: calc(100% + 6px); right: 0; z-index: 63; min-width: 132px; background: var(--g-bright); border-radius: 14px; box-shadow: var(--g-shadow-pop); padding: 6px; animation: vddPop .14s ease; }
@keyframes vddPop { from { opacity: 0; transform: translateY(-4px); } to { opacity: 1; transform: none; } }
.vertex-root .vp-dd-item { width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 12px; border-radius: 9px; font-size: 14px; color: var(--g-on); text-align: left; }
.vertex-root .vp-dd-item:active { background: var(--g-hover); }
.vertex-root .vp-dd-item.on { color: var(--g-primary); font-weight: 500; }
.vertex-root .vp-dd-item .ck { width: 16px; height: 16px; color: var(--g-primary); flex: none; }
/* 参数面板内的文本输入（音乐负面提示等）*/
.vertex-root .vp-text { flex: 1; min-width: 0; background: var(--g-dim); border: 0; border-radius: 10px; padding: 9px 12px; font-size: 14px; color: var(--g-on); outline: none; font-family: inherit; }
.vertex-root .vp-text::placeholder { color: var(--g-placeholder); }

/* —— 桌面拖放遮罩（对话 / 图像 / 视频 共用）——
   拖文件进面板时浮现的虚线框提示；pointer-events:none 让拖放事件穿透到底层节点，纯视觉层。 */
.vertex-root .g-drop-ov { position: absolute; inset: 8px; z-index: 45; pointer-events: none;
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 12px;
  border-radius: 24px; border: 2px dashed var(--g-primary); color: var(--g-primary);
  background: rgba(253,252,252,.82); -webkit-backdrop-filter: blur(2px); backdrop-filter: blur(2px);
  animation: gDropIn .16s ease; }
.vertex-root.v-dark .g-drop-ov { background: rgba(0,0,0,.72); }
.vertex-root .g-drop-ic { width: 40px; height: 40px; }
.vertex-root .g-drop-tx { font-size: 16px; font-weight: 500; }
.vertex-root .g-drop-sub { font-size: 13px; color: var(--g-on-variant); margin-top: -6px; }
@keyframes gDropIn { from { opacity: 0; } to { opacity: 1; } }

/* —— 视频「粘贴 / 拖入图片 → 选目标槽」小对话（首帧 / 尾帧 / 参考图）—— */
.vertex-root .vd-slot-mask { position: fixed; inset: 0; z-index: 74; background: rgba(0,0,0,.42);
  display: flex; align-items: center; justify-content: center; padding: 24px; animation: amfade .18s; }
.vertex-root .vd-slot-card { width: 100%; max-width: 320px; background: var(--g-bright); border-radius: 24px;
  box-shadow: var(--g-shadow-pop); padding: 18px 18px 14px; animation: vddPop .18s ease; }
.vertex-root .vd-slot-head { display: flex; align-items: center; gap: 12px; margin-bottom: 14px; }
.vertex-root .vd-slot-prev { width: 52px; height: 52px; border-radius: 12px; object-fit: cover; flex: none; background: var(--g-dim); }
.vertex-root .vd-slot-title { font-size: 16px; font-weight: 500; color: var(--g-on); }
.vertex-root .vd-slot-title small { display: block; font-size: 12.5px; font-weight: 400; color: var(--g-on-variant); margin-top: 2px; }
.vertex-root .vd-slot-opts { display: flex; flex-direction: column; gap: 8px; }
.vertex-root .vd-slot-opt { width: 100%; display: flex; align-items: center; gap: 12px; padding: 12px 14px; border-radius: 14px; background: var(--g-dim); color: var(--g-on); text-align: left; }
.vertex-root .vd-slot-opt:active { background: var(--g-hover-strong); }
.vertex-root .vd-slot-opt svg { width: 22px; height: 22px; color: var(--g-on-variant); flex: none; }
.vertex-root .vd-slot-opt b { font-size: 15px; font-weight: 500; }
.vertex-root .vd-slot-opt span { font-size: 12.5px; color: var(--g-on-variant); }
.vertex-root .vd-slot-opt-tx { display: flex; flex-direction: column; gap: 1px; }
.vertex-root .vd-slot-cancel { width: 100%; margin-top: 10px; padding: 11px; border-radius: 14px; font-size: 15px; font-weight: 600; color: var(--g-on); }
.vertex-root .vd-slot-cancel:active { background: var(--g-hover); }
/* ═══════════════════════════════════════════════════════════════
   媒体工坊（vmx）—— vertex 四媒体模块（视频/图片/语音/音乐）新版 UI。
   设计语言：Google 巨扁平（大图标 / 大开大合 / 大圆角 / 极简）。
   零复用 Gemini 克隆页样式；全部规则限定在 .vmx 作用域内。
   排版：移动端纵向流；≥1080px studio（左画布 + 右设置栏 + 底部提示条）。
   ═══════════════════════════════════════════════════════════════ */

/* ——— tokens ——— */
.vmx {
  /* 中性（亮） */
  --bg: #ffffff;
  --sur: #f1f3f4;
  --sur2: #e8eaed;
  --on: #1f1f1f;
  --on2: #5f6368;
  --on3: #9aa0a6;
  --line: #e6e8ea;
  --scrim: rgba(32, 33, 36, .48);
  --err: #c5221f; --err-c: #fce8e6; --err-on: #5c110f;
  --r-xl: 44px; --r-lg: 32px; --r-md: 24px; --r-sm: 16px;
  --hero-r: var(--r-xl);   /* hero 卡片底圆角（≥900 收小、≥1080 顶栏化归零）；mod-body 上缘同步钻入 */
  --vmx-eo: cubic-bezier(.22, 1, .36, 1);      /* 强调减速（入场落位） */
  --vmx-spring: cubic-bezier(.34, 1.5, .64, 1); /* 轻回弹（glyph/pill 弹入） */
  --vmx-font: "Google Sans", "Segoe UI", system-ui, "Microsoft YaHei", "PingFang SC", sans-serif;
}
.vmx.dark {
  --bg: #131314;
  --sur: #1e1f20;
  --sur2: #2a2b2d;
  --on: #e3e3e3;
  --on2: #9aa0a6;
  --on3: #70757a;
  --line: #303134;
  --scrim: rgba(0, 0, 0, .58);
  --err: #f2b8b5; --err-c: #3b1210; --err-on: #f9dedc;
}
/* 模块四色：亮=Google 50 色阶浅底 + 600/800 深字 + logo 原色大图标；暗=深容器 + 粉彩 */
.vmx.m-video { --acc: #0b57d0; --viv: #1a73e8; --cont: #e8f0fe; --oncont: #0b3d91; --onacc: #fff; }
.vmx.m-image { --acc: #137333; --viv: #34a853; --cont: #e6f4ea; --oncont: #0a3818; --onacc: #fff; }
.vmx.m-voice { --acc: #a05a00; --viv: #f9ab00; --cont: #fef7e0; --oncont: #4e3200; --onacc: #fff; }
.vmx.m-music { --acc: #c5221f; --viv: #ea4335; --cont: #fce8e6; --oncont: #5c110f; --onacc: #fff; }
.vmx.dark.m-video { --acc: #a8c7fa; --viv: #a8c7fa; --cont: #14386b; --oncont: #d3e3fd; --onacc: #062e6f; }
.vmx.dark.m-image { --acc: #6dd58c; --viv: #6dd58c; --cont: #0f5223; --oncont: #c4eed0; --onacc: #05320f; }
.vmx.dark.m-voice { --acc: #fdc169; --viv: #fdc169; --cont: #5c4200; --oncont: #feefc3; --onacc: #402d00; }
.vmx.dark.m-music { --acc: #f2b8b5; --viv: #f2b8b5; --cont: #601410; --oncont: #f9dedc; --onacc: #410e0b; }

/* ——— 根：填满 v-stage ——— */
.vmx {
  flex: 1; min-height: 0;
  display: flex; flex-direction: column;
  position: relative;
  font-family: var(--vmx-font);
  background: var(--bg);
  color: var(--on);
  font-size: 16px; line-height: 1.5;
}
.vmx button { font: inherit; color: inherit; background: none; border: 0; cursor: pointer; -webkit-tap-highlight-color: transparent; }
.vmx img { display: block; }
.vmx .ic { display: inline-flex; }
.vmx .ic svg { width: 24px; height: 24px; display: block; }

/* glyph 双色：镂空部分跟随所处底色 */
.vmx .hero-glyph, .vmx .busy-glyph { --kn: var(--cont); }
.vmx .empty-glyph { --kn: var(--bg); }

/* ═══════════ hero（模块页头）═══════════
   移动端：VertexPage 浮动顶栏（汉堡/新建/模块菜单）盖在上方 → 让出 54px；
   模型 pill 在 hero 右上。桌面 v-dt（≥900）无浮动顶栏，右上让位 v-dt-top。 */
.vmx .hero {
  flex: none;
  background: var(--cont); color: var(--oncont);
  border-radius: 0 0 var(--hero-r) var(--hero-r);
  padding: calc(var(--sat, 0px) + 54px) 20px 22px;
  position: relative; z-index: 2;
}
.vmx .hero-head { display: flex; align-items: center; gap: 16px; }
.vmx .hero-glyph { width: 56px; height: 56px; color: var(--viv); flex: none; }
.vmx .hero-glyph svg { width: 100%; height: 100%; }
.vmx .hero-tt { min-width: 0; flex: 1; }
.vmx .hero-tt h2 { font-size: 36px; font-weight: 700; line-height: 1.12; letter-spacing: 1px; margin: 0; }
.vmx .hero-tt p { font-size: 13.5px; opacity: .78; font-weight: 500; margin: 2px 0 0; }
.vmx .model-pill {
  display: flex; align-items: center; gap: 6px;
  height: 48px; padding: 0 14px 0 20px;
  border-radius: 999px;
  background: color-mix(in srgb, var(--oncont) 9%, transparent);
  color: var(--oncont);
  font-size: 15px; font-weight: 600;
  transition: transform .15s;
  min-width: 0; max-width: min(58vw, 300px);
  flex: none; align-self: center;
}
.vmx .model-pill:active { transform: scale(.95); }
.vmx .model-pill .mp-name { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.vmx .model-pill .ic svg { width: 20px; height: 20px; }

/* ═══════════ 主体 ═══════════ */
.vmx .mod-body {
  flex: 1; min-height: 0;
  overflow-y: auto; -webkit-overflow-scrolling: touch;
  /* 上缘钻进 hero 圆角带下方：圆角缺口透出的是滚动中的正文本身，
     不再是一块白底矩形（修复：内容贴近卡片时缺口处露白）。 */
  margin-top: calc(-1 * var(--hero-r));
  padding: calc(var(--hero-r) + 20px) 16px calc(40px + var(--sab, 0px));
}
.vmx .sec-tt { font-size: 20px; font-weight: 700; padding: 14px 8px 2px; letter-spacing: .5px; }
.vmx .sec-tt small { font-size: 12.5px; color: var(--on2); font-weight: 500; margin-left: 10px; letter-spacing: 0; }

/* studio 三区骨架：移动端＝纵向流（栏→输入→画布） */
.vmx .studio { max-width: 720px; margin: 0 auto; display: flex; flex-direction: column; gap: 14px; }
.vmx .st-rail { display: flex; flex-direction: column; gap: 12px; order: 1; min-width: 0; }
.vmx .st-composer { display: flex; flex-direction: column; gap: 14px; order: 2; min-width: 0; }
.vmx .st-canvas { display: flex; flex-direction: column; gap: 14px; order: 3; min-width: 0; }
.vmx .rail-model { display: none; }
.vmx .st-composer.st-sticky { position: sticky; bottom: 0; z-index: 4; }
.vmx .studio .dock { padding: 6px 0 max(8px, var(--sab, 0px)); }
/* 图片页移动端：参数走摘要 chips+sheet（右栏隐藏），画布在上、输入岛钉底 */
.vmx .stu-image { min-height: 100%; }
.vmx .stu-image .st-rail { display: none; }
.vmx .stu-image .st-canvas { order: 1; flex: 1; }
.vmx .stu-image .st-composer { order: 2; }

/* ═══════════ 参数卡 ═══════════ */
.vmx .p-grid { display: flex; flex-direction: column; gap: 12px; }
.vmx .p-card { background: var(--sur); border-radius: var(--r-md); padding: 15px 17px 17px; }
.vmx .p-lab { font-size: 13px; font-weight: 600; color: var(--on2); letter-spacing: .8px; margin-bottom: 11px; display: flex; align-items: center; }
.vmx .p-lab i { font-style: normal; font-weight: 400; margin-left: auto; color: var(--on3); font-size: 12px; letter-spacing: 0; }

.vmx .seg { display: flex; gap: 8px; flex-wrap: wrap; }
.vmx .seg.seg-grid3 { display: grid; grid-template-columns: repeat(3, 1fr); }
.vmx .seg.seg-grid2 { display: grid; grid-template-columns: repeat(2, 1fr); }
/* 时长档：Omni 有 3–10 共 8 档，用小一号的方胶囊，两行就摆得下 */
.vmx .seg.seg-num .seg-b { height: 44px; min-width: 52px; font-size: 14px; }
.vmx .seg-b {
  flex: 1; min-width: 60px;
  height: 52px; border-radius: 999px;
  background: var(--bg); color: var(--on);
  font-size: 15px; font-weight: 600;
  display: flex; align-items: center; justify-content: center; gap: 7px;
  transition: border-radius .28s cubic-bezier(.2, .8, .2, 1), background .2s, color .2s, transform .15s;
  white-space: nowrap; padding: 0 12px;
}
.vmx .seg-b:active { transform: scale(.95); }
.vmx .seg-b.on { background: var(--acc); color: var(--onacc); border-radius: 17px; }
.vmx .seg-b .shp { display: inline-block; border: 2.5px solid currentColor; border-radius: 4px; flex: none; }
.vmx .shp-169 { width: 24px; height: 14px; }
.vmx .shp-916 { width: 14px; height: 24px; }
.vmx .shp-11 { width: 18px; height: 18px; }
.vmx .shp-43 { width: 22px; height: 17px; }
.vmx .shp-34 { width: 17px; height: 22px; }
.vmx .shp-32 { width: 23px; height: 15px; }
.vmx .shp-23 { width: 15px; height: 23px; }
.vmx .shp-54 { width: 21px; height: 17px; }
.vmx .shp-45 { width: 17px; height: 21px; }
.vmx .shp-219 { width: 27px; height: 12px; }

/* 两行胶囊（任务类型：标题 + 一句说明）——比例/时长那种单行 chip 放不下解释 */
.vmx .seg-b.seg-b2 {
  flex-direction: column; gap: 2px; height: auto; min-height: 62px;
  padding: 10px 12px; line-height: 1.25; text-align: center;
}
.vmx .seg-b.seg-b2 b { font-size: 14.5px; font-weight: 700; }
.vmx .seg-b.seg-b2 small { font-size: 11px; font-weight: 400; color: var(--on2); }
.vmx .seg-b.seg-b2.on small { color: var(--onacc); opacity: .78; }

.vmx .tgl {
  width: 100%; height: 58px;
  border-radius: 999px;
  background: var(--bg);
  display: flex; align-items: center; gap: 13px;
  padding: 0 9px 0 19px;
  font-size: 15.5px; font-weight: 600; color: var(--on);
  transition: background .25s, color .25s;
}
.vmx .tgl small { font-weight: 400; font-size: 12px; color: var(--on2); display: block; line-height: 1.3; }
.vmx .tgl .tgl-tx { flex: 1; text-align: left; min-width: 0; }
.vmx .tgl.on { background: var(--acc); color: var(--onacc); }
.vmx .tgl.on small { color: var(--onacc); opacity: .75; }
.vmx .tgl-knob {
  flex: none; width: 42px; height: 42px; border-radius: 50%;
  background: var(--sur2); color: var(--on2);
  display: flex; align-items: center; justify-content: center;
  transition: background .25s, color .25s;
}
.vmx .tgl.on .tgl-knob { background: color-mix(in srgb, var(--onacc) 22%, transparent); color: var(--onacc); }
.vmx .tgl-knob svg { width: 21px; height: 21px; }

.vmx .sld { display: flex; align-items: center; gap: 14px; }
.vmx .sld input[type="range"] {
  -webkit-appearance: none; appearance: none;
  flex: 1; height: 14px; border-radius: 999px;
  background: var(--bg); outline: none; margin: 0; padding: 0; border: 0;
}
.vmx .sld input[type="range"]::-webkit-slider-thumb {
  -webkit-appearance: none; appearance: none;
  width: 28px; height: 28px; border-radius: 50%;
  background: var(--acc); border: 0;
  box-shadow: 0 0 0 5px color-mix(in srgb, var(--acc) 18%, transparent);
}
.vmx .sld-val { flex: none; min-width: 52px; text-align: center; font-size: 15px; font-weight: 700; font-variant-numeric: tabular-nums; background: var(--bg); border-radius: 12px; padding: 8px 0; }

.vmx .p-input {
  width: 100%; height: 54px;
  border: 0; outline: none;
  background: var(--bg); color: var(--on);
  border-radius: 999px;
  padding: 0 20px;
  font: inherit; font-size: 15px;
}
.vmx .p-input::placeholder { color: var(--on3); }

/* 多人对白的两行说话人（名字 + 音色）——点一行即把下方音色网格切给它 */
.vmx .spk-rows { display: flex; flex-direction: column; gap: 8px; margin-top: 10px; }
.vmx .spk-row { display: flex; gap: 8px; align-items: center; border-radius: 999px; padding: 3px; transition: background .2s; }
.vmx .spk-row.on { background: color-mix(in srgb, var(--acc) 14%, transparent); }
.vmx .spk-row .spk-name { flex: 1; min-width: 0; height: 46px; }
.vmx .spk-voice {
  flex: none; min-width: 96px; height: 46px; padding: 0 16px; border-radius: 999px;
  background: var(--bg); color: var(--on); font-size: 14px; font-weight: 600;
  overflow: hidden; white-space: nowrap; text-overflow: ellipsis;
}
.vmx .spk-row.on .spk-voice { background: var(--acc); color: var(--onacc); }

.vmx .idea-row { display: flex; gap: 8px; overflow-x: auto; padding: 2px 2px 6px; scrollbar-width: none; }
.vmx .idea-row::-webkit-scrollbar { display: none; }
.vmx .idea {
  flex: none; height: 44px; padding: 0 19px;
  border-radius: 999px;
  background: var(--sur); color: var(--on);
  font-size: 14px; font-weight: 500;
  transition: transform .15s, background .2s, color .2s;
}
.vmx .idea:active { transform: scale(.94); background: var(--cont); color: var(--oncont); }

/* ═══════════ 素材槽 ═══════════ */
.vmx .slot-row { display: flex; align-items: center; gap: 12px; }
.vmx .slot {
  position: relative;
  width: 100px; height: 100px;
  border-radius: 26px;
  background: var(--bg); color: var(--on2);
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 5px;
  overflow: hidden; flex: none;
  transition: transform .15s, border-radius .25s;
}
.vmx .slot:active { transform: scale(.94); }
.vmx .slot img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.vmx .slot.pending img { opacity: .45; }
.vmx .slot-lb { font-size: 12px; font-weight: 600; }
.vmx .slot .ic svg { width: 28px; height: 28px; }
.vmx .slot.set { border-radius: 19px; }
.vmx .slot-x {
  position: absolute; top: 6px; right: 6px; z-index: 2;
  width: 25px; height: 25px; border-radius: 50%;
  background: rgba(0, 0, 0, .58); color: #fff;
  display: flex; align-items: center; justify-content: center;
}
.vmx .slot-x svg { width: 13px; height: 13px; }
.vmx .swap-b {
  width: 46px; height: 46px; border-radius: 50%;
  background: var(--bg); color: var(--on2);
  display: flex; align-items: center; justify-content: center;
  flex: none; transition: transform .3s;
}
.vmx .swap-b:active { transform: rotate(180deg) scale(.92); }
.vmx .swap-b svg { width: 21px; height: 21px; }
.vmx .ref-row { display: flex; gap: 10px; margin-top: 12px; align-items: center; flex-wrap: wrap; }
.vmx .ref-slot {
  position: relative;
  width: 64px; height: 64px; border-radius: 19px;
  background: var(--bg); color: var(--on3);
  display: flex; align-items: center; justify-content: center;
  overflow: hidden; flex: none;
  transition: transform .15s;
}
.vmx .ref-slot:active { transform: scale(.92); }
.vmx .ref-slot img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.vmx .ref-slot.pending img { opacity: .45; }
.vmx .ref-slot .ic svg { width: 23px; height: 23px; }
.vmx .ref-slot .slot-x { top: 4px; right: 4px; width: 21px; height: 21px; }
.vmx .ref-hint { font-size: 12px; color: var(--on2); padding-left: 2px; }
.vmx .slot-spin {
  position: absolute; z-index: 2; left: 50%; top: 50%; width: 18px; height: 18px; margin: -9px 0 0 -9px;
  border-radius: 50%; border: 2.5px solid rgba(255,255,255,.5); border-top-color: #fff;
  animation: vmxspin .8s linear infinite;
}
@keyframes vmxspin { to { transform: rotate(360deg); } }

/* ═══════════ 提示词 + 生成钮 ═══════════ */
.vmx .prompt-card { background: var(--sur); border-radius: var(--r-lg); padding: 18px 20px; }
.vmx .prompt-field {
  width: 100%; min-height: 72px; max-height: 34vh;
  overflow-y: auto;
  border: 0; outline: none; background: none;
  font-size: 16.5px; line-height: 1.55; color: var(--on);
  word-break: break-word;
}
.vmx .prompt-field:empty::before { content: attr(data-ph); color: var(--on3); }
.vmx .gen-btn {
  width: 100%; height: 64px;
  border-radius: 999px;
  background: var(--acc); color: var(--onacc);
  font-size: 17px; font-weight: 700; letter-spacing: 4px;
  display: flex; align-items: center; justify-content: center; gap: 10px;
  transition: transform .16s, border-radius .3s;
}
.vmx .gen-btn:not(:disabled):active { transform: scale(.97); border-radius: 24px; }
.vmx .gen-btn:disabled { background: var(--sur); color: var(--on3); letter-spacing: 2px; }

/* ═══════════ 生成中 / 空态 / 错误 ═══════════ */
.vmx .busy-hero {
  background: var(--cont); color: var(--oncont);
  border-radius: var(--r-xl);
  padding: 40px 24px 36px;
  display: flex; flex-direction: column; align-items: center; gap: 8px;
  text-align: center; overflow: hidden;
}
.vmx .busy-glyph { width: 70px; height: 70px; color: var(--viv); animation: vmxpulse 1.6s ease-in-out infinite; }
.vmx .busy-glyph svg { width: 100%; height: 100%; }
@keyframes vmxpulse { 0%, 100% { transform: scale(1); opacity: 1; } 50% { transform: scale(.88); opacity: .6; } }
.vmx .busy-time { font-size: 68px; font-weight: 700; font-variant-numeric: tabular-nums; letter-spacing: -1px; line-height: 1.15; margin-top: 6px; }
.vmx .busy-hint { font-size: 14.5px; opacity: .78; font-weight: 500; }

.vmx .empty-hero {
  padding: 44px 20px 34px;
  display: flex; flex-direction: column; align-items: center; gap: 6px;
  text-align: center;
}
.vmx .empty-glyph { width: 120px; height: 120px; color: var(--viv); opacity: .92; margin-bottom: 12px; }
.vmx .empty-glyph svg { width: 100%; height: 100%; }
.vmx .empty-hero h3 { font-size: 24px; font-weight: 700; letter-spacing: 1px; margin: 0; }
.vmx .empty-hero p { font-size: 14px; color: var(--on2); max-width: 300px; margin: 0; }

.vmx .err-card {
  background: var(--err-c); color: var(--err-on);
  border-radius: var(--r-md);
  padding: 17px 19px;
  display: flex; gap: 13px; align-items: flex-start;
  font-size: 14.5px; line-height: 1.5;
}
.vmx .err-card .ic { color: var(--err); flex: none; margin-top: 1px; }

/* ═══════════ 结果卡 ═══════════ */
.vmx .res-card {
  background: var(--sur);
  border-radius: var(--r-lg);
  overflow: hidden;
  animation: vmxin .5s cubic-bezier(.16, 1, .3, 1);
}
@keyframes vmxin { from { opacity: 0; transform: translateY(18px) scale(.97); } to { opacity: 1; transform: none; } }
.vmx .res-media { position: relative; cursor: pointer; background: var(--sur2); }
.vmx .res-media img { width: 100%; height: auto; min-height: 120px; }
.vmx .res-play {
  position: absolute; inset: 0; margin: auto;
  width: 80px; height: 80px; border-radius: 50%;
  background: var(--bg); color: var(--acc);
  display: flex; align-items: center; justify-content: center;
  box-shadow: 0 6px 28px rgba(0, 0, 0, .22);
  pointer-events: none;
}
.vmx .res-play svg { width: 34px; height: 34px; margin-left: 4px; }
.vmx .res-cap { padding: 13px 19px 15px; font-size: 14px; color: var(--on2); display: flex; gap: 10px; align-items: baseline; }
.vmx .res-cap b { color: var(--on); font-weight: 600; flex: 1; min-width: 0; word-break: break-word; }

/* 音频播放器 */
.vmx .player { display: flex; align-items: center; gap: 15px; padding: 6px 0 2px; }
.vmx .pl-btn {
  flex: none;
  width: 70px; height: 70px; border-radius: 50%;
  background: var(--acc); color: var(--onacc);
  display: flex; align-items: center; justify-content: center;
  transition: transform .16s, border-radius .25s;
}
.vmx .pl-btn:active { transform: scale(.92); }
.vmx .pl-btn.playing { border-radius: 24px; }
.vmx .pl-btn svg { width: 28px; height: 28px; }
.vmx .pl-btn:not(.playing) svg { margin-left: 4px; }
.vmx .pl-track-wrap { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 8px; }
.vmx .pl-track { height: 13px; border-radius: 999px; background: var(--bg); overflow: hidden; cursor: pointer; }
.vmx .pl-fill { height: 100%; width: 0%; border-radius: 999px; background: var(--acc); transition: width .2s linear; }
.vmx .pl-time { font-size: 12.5px; color: var(--on2); font-variant-numeric: tabular-nums; display: flex; justify-content: space-between; }
.vmx .player.sm .pl-btn { width: 52px; height: 52px; }
.vmx .player.sm .pl-btn svg { width: 21px; height: 21px; }
.vmx .player.sm .pl-track { height: 10px; }

.vmx .wave { display: flex; align-items: center; gap: 4px; height: 48px; padding: 4px 0 8px; }
.vmx .wave i { flex: 1; border-radius: 999px; background: var(--sur2); transition: background .3s; min-width: 3px; }
.vmx .wave i.lit { background: var(--acc); }

/* ═══════════ 历史 ═══════════ */
.vmx .hist-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; }
.vmx .hist-thumb {
  position: relative;
  border-radius: var(--r-md);
  overflow: hidden;
  background: var(--sur);
  cursor: pointer;
  transition: transform .18s;
  aspect-ratio: 16 / 10;
}
.vmx .hist-thumb:active { transform: scale(.955); }
.vmx .hist-thumb img { width: 100%; height: 100%; object-fit: cover; }
.vmx .hist-play {
  position: absolute; inset: 0; margin: auto;
  width: 44px; height: 44px; border-radius: 50%;
  background: rgba(255, 255, 255, .92); color: var(--acc);
  display: flex; align-items: center; justify-content: center;
  pointer-events: none;
}
.vmx .hist-play svg { width: 19px; height: 19px; margin-left: 2px; }
.vmx .hist-x {
  position: absolute; top: 8px; right: 8px;
  width: 29px; height: 29px; border-radius: 50%;
  background: rgba(0, 0, 0, .52); color: #fff;
  display: flex; align-items: center; justify-content: center;
}
.vmx .hist-x svg { width: 14px; height: 14px; }
.vmx .hist-count {
  position: absolute; left: 10px; bottom: 8px;
  height: 27px; padding: 0 11px;
  border-radius: 999px;
  background: rgba(0, 0, 0, .52); color: #fff;
  font-size: 12px; font-weight: 600;
  display: flex; align-items: center; gap: 5px;
}
.vmx .hist-count svg { width: 13px; height: 13px; }
.vmx .hist-card {
  background: var(--sur);
  border-radius: var(--r-md);
  padding: 15px 17px 13px;
  display: flex; flex-direction: column; gap: 8px;
}
.vmx .hist-card-tt { display: flex; align-items: flex-start; gap: 10px; font-size: 14.5px; }
.vmx .hist-card-tt b { flex: 1; min-width: 0; font-weight: 600; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; word-break: break-word; }
.vmx .hist-card-tt .hist-x { position: static; flex: none; background: var(--sur2); color: var(--on2); }
.vmx .hist-meta { font-size: 12px; color: var(--on2); }
.vmx .hist-list { display: flex; flex-direction: column; gap: 10px; }

/* ═══════════ 图片对话流 ═══════════ */
.vmx .chat-list { display: flex; flex-direction: column; gap: 14px; }
.vmx .chat-user { display: flex; justify-content: flex-end; }
.vmx .chat-user-in {
  max-width: 82%;
  background: var(--cont); color: var(--oncont);
  border-radius: 26px 26px 8px 26px;
  padding: 12px 17px;
  font-size: 15px; line-height: 1.5;
  word-break: break-word; white-space: pre-wrap;
}
.vmx .chat-src { width: 62px; height: 62px; border-radius: 14px; object-fit: cover; margin-bottom: 8px; }
.vmx .chat-img {
  border-radius: var(--r-lg);
  overflow: hidden;
  cursor: zoom-in;
  animation: vmxin .5s cubic-bezier(.16, 1, .3, 1);
  background: var(--sur);
}
.vmx .chat-img img { width: 100%; height: auto; min-height: 100px; }

.vmx .psum-row { display: flex; gap: 8px; overflow-x: auto; padding: 0 2px 4px; scrollbar-width: none; }
.vmx .psum-row::-webkit-scrollbar { display: none; }
.vmx .psum {
  flex: none; height: 46px;
  display: flex; align-items: center; gap: 8px;
  padding: 0 17px;
  border-radius: 999px;
  background: var(--sur); color: var(--on);
  font-size: 14px; font-weight: 600;
  transition: transform .15s;
}
.vmx .psum:active { transform: scale(.94); }
.vmx .psum .ic svg { width: 18px; height: 18px; }
.vmx .psum.lead { background: var(--acc); color: var(--onacc); }

/* 图片 dock（对话输入岛） */
.vmx .dock-in {
  background: var(--sur);
  border-radius: 32px;
  padding: 9px;
  display: flex; flex-direction: column; gap: 8px;
}
.vmx .dock-atts { display: flex; gap: 8px; padding: 4px 6px 0; }
.vmx .dock-att { position: relative; width: 60px; height: 60px; border-radius: 17px; overflow: hidden; flex: none; background: var(--sur2); }
.vmx .dock-att img { width: 100%; height: 100%; object-fit: cover; }
.vmx .dock-att.pending img { opacity: .45; }
.vmx .dock-att .slot-x { top: 4px; right: 4px; width: 21px; height: 21px; }
.vmx .dock-row { display: flex; align-items: flex-end; gap: 8px; }
.vmx .dock-plus {
  flex: none;
  width: 54px; height: 54px; border-radius: 50%;
  background: var(--bg); color: var(--on);
  display: flex; align-items: center; justify-content: center;
  transition: transform .15s;
}
.vmx .dock-plus:active { transform: scale(.9); }
.vmx .dock-field {
  flex: 1; min-width: 0;
  min-height: 54px; max-height: 30vh;
  overflow-y: auto;
  outline: none;
  padding: 14px 8px;
  font-size: 16px; line-height: 1.45;
  word-break: break-word;
}
.vmx .dock-field:empty::before { content: attr(data-ph); color: var(--on3); }
.vmx .dock-send {
  flex: none;
  width: 54px; height: 54px; border-radius: 50%;
  background: var(--acc); color: var(--onacc);
  display: flex; align-items: center; justify-content: center;
  transition: transform .15s, border-radius .2s;
}
.vmx .dock-send:active { transform: scale(.9); }
.vmx .dock-send:disabled { background: var(--sur2); color: var(--on3); }
.vmx .dock-send.busy { border-radius: 17px; }

/* ═══════════ 语音音色 ═══════════ */
.vmx .voice-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; }
.vmx .voice-card {
  display: flex; align-items: center; gap: 12px;
  padding: 13px 13px;
  border-radius: var(--r-md);
  background: var(--sur); color: var(--on);
  text-align: left;
  transition: background .22s, color .22s, border-radius .25s, transform .15s;
}
.vmx .voice-card:active { transform: scale(.96); }
.vmx .voice-card.on { background: var(--acc); color: var(--onacc); border-radius: 18px; }
.vmx .voice-ava {
  flex: none;
  width: 44px; height: 44px; border-radius: 50%;
  background: var(--cont); color: var(--oncont);
  display: flex; align-items: center; justify-content: center;
  font-size: 18px; font-weight: 700;
  transition: background .22s, color .22s;
}
.vmx .voice-card.on .voice-ava { background: color-mix(in srgb, var(--onacc) 20%, transparent); color: var(--onacc); }
.vmx .voice-tx { min-width: 0; }
.vmx .voice-tx b { display: block; font-size: 15.5px; font-weight: 700; }
.vmx .voice-tx small { font-size: 12px; opacity: .72; font-weight: 500; }

/* ═══════════ sheet（模型/来源/参数/工作空间）═══════════ */
.vmx .sh-mask {
  position: fixed; inset: 0; z-index: 74;
  background: var(--scrim);
  display: flex; align-items: flex-end; justify-content: center;
  animation: vmxfade .22s ease;
}
@keyframes vmxfade { from { opacity: 0; } to { opacity: 1; } }
.vmx .sh-card {
  width: 100%; max-width: 640px;
  max-height: 86dvh;
  background: var(--bg);
  border-radius: 36px 36px 0 0;
  padding: 10px 18px calc(20px + var(--sab, 0px));
  display: flex; flex-direction: column;
  animation: vmxup .34s cubic-bezier(.2, .9, .25, 1);
  overflow: hidden;
}
@keyframes vmxup { from { transform: translateY(100%); } to { transform: none; } }
.vmx .sh-grab { flex: none; width: 44px; height: 5px; border-radius: 3px; background: var(--sur2); margin: 6px auto 10px; }
.vmx .sh-tt { flex: none; font-size: 21px; font-weight: 700; padding: 8px 8px 13px; letter-spacing: .5px; display: flex; align-items: center; }
.vmx .sh-tt small { font-size: 12.5px; color: var(--on2); font-weight: 500; margin-left: auto; }
.vmx .sh-body { flex: 1; min-height: 0; overflow-y: auto; -webkit-overflow-scrolling: touch; display: flex; flex-direction: column; gap: 8px; padding-bottom: 6px; }

.vmx .sh-opt {
  display: flex; align-items: center; gap: 14px;
  padding: 14px 15px;
  border-radius: var(--r-md);
  background: var(--sur); color: var(--on);
  text-align: left;
  transition: background .2s, color .2s, transform .13s, border-radius .22s;
}
.vmx .sh-opt:active { transform: scale(.97); }
.vmx .sh-opt.on { background: var(--acc); color: var(--onacc); border-radius: 18px; }
.vmx .sh-opt-ic {
  flex: none;
  width: 50px; height: 50px; border-radius: 15px;
  background: var(--cont); color: var(--oncont);
  display: flex; align-items: center; justify-content: center;
}
.vmx .sh-opt.on .sh-opt-ic { background: color-mix(in srgb, var(--onacc) 18%, transparent); color: var(--onacc); }
.vmx .sh-opt-ic svg { width: 24px; height: 24px; }
.vmx .sh-opt-tx { flex: 1; min-width: 0; }
.vmx .sh-opt-tx b { display: block; font-size: 16px; font-weight: 700; }
.vmx .sh-opt-tx small { font-size: 12.5px; opacity: .72; font-weight: 500; }
.vmx .sh-opt-ck { flex: none; width: 28px; height: 28px; opacity: 0; transition: opacity .2s; }
.vmx .sh-opt.on .sh-opt-ck { opacity: 1; }
.vmx .sh-opt-ck svg { width: 100%; height: 100%; }

/* 工作空间选择器 */
.vmx .ws-crumb { flex: none; display: flex; align-items: center; gap: 6px; padding: 0 8px 12px; overflow-x: auto; white-space: nowrap; font-size: 14px; scrollbar-width: none; }
.vmx .ws-crumb::-webkit-scrollbar { display: none; }
.vmx .ws-crumb button { color: var(--acc); font-weight: 600; flex: none; }
.vmx .ws-crumb .cur { color: var(--on); font-weight: 700; flex: none; }
.vmx .ws-crumb .sep { color: var(--on3); flex: none; }
.vmx .ws-folder {
  display: flex; align-items: center; gap: 13px;
  padding: 13px 15px;
  border-radius: var(--r-sm);
  background: var(--sur); color: var(--on);
  font-size: 15.5px; font-weight: 600;
  text-align: left;
}
.vmx .ws-folder:active { background: var(--sur2); }
.vmx .ws-folder .ic:first-child { color: var(--acc); }
.vmx .ws-folder .ws-fname { flex: 1; min-width: 0; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.vmx .ws-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; padding-top: 4px; }
.vmx .ws-img { aspect-ratio: 1; border-radius: 18px; overflow: hidden; background: var(--sur); transition: transform .15s; padding: 0; }
.vmx .ws-img:active { transform: scale(.93); }
.vmx .ws-img img { width: 100%; height: 100%; object-fit: cover; }
.vmx .ws-empty { text-align: center; color: var(--on3); padding: 40px 0; font-size: 14px; }
.vmx .ws-spin { width: 30px; height: 30px; border-radius: 50%; border: 3px solid var(--sur2); border-top-color: var(--acc); animation: vmxspin .8s linear infinite; margin: 40px auto; }

/* 拖拽高亮 */
.vmx .drop-ov {
  position: absolute; inset: 10px; z-index: 30;
  border: 2.5px dashed var(--acc); border-radius: var(--r-lg);
  background: color-mix(in srgb, var(--cont) 72%, transparent);
  color: var(--oncont);
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px;
  font-size: 16px; font-weight: 600;
  pointer-events: none;
}
.vmx .drop-ov small { font-size: 13px; font-weight: 400; opacity: .8; }

/* ═══════════ 桌面 v-dt（≥900：vertex 桌面 chrome，仍纵排）═══════════ */
@media (min-width: 900px) {
  .vmx { --hero-r: 40px; }
  /* 顶部必须自己让开系统状态栏：≥700 就切 v-dt 桌面 chrome、移动版浮动顶栏被隐藏，
     此前这里把 var(--sat) 一起去掉了 —— 折叠屏展开后标题正好压在状态栏底下。 */
  .vmx .hero { padding: calc(var(--sat, 0px) + 12px) 28px 18px; padding-right: 130px; }
  .vmx .studio { max-width: 720px; }
}

/* ═══════════ studio 横屏排版（≥1080px）═══════════ */
@media (min-width: 1080px) {
  .vmx { --hero-r: 0px; }
  .vmx .hero { padding: calc(var(--sat, 0px) + 10px) 28px 12px; padding-right: 130px; display: flex; align-items: center; gap: 18px; }
  .vmx .hero .model-pill { display: none; }
  .vmx .hero-head { gap: 12px; padding: 0; flex: 1; }
  .vmx .hero-glyph { width: 36px; height: 36px; }
  .vmx .hero-tt h2 { font-size: 22px; letter-spacing: .5px; display: inline; }
  .vmx .hero-tt p { display: inline; margin-left: 10px; font-size: 12.5px; }

  .vmx .mod-body { padding: 0; overflow: hidden; }
  .vmx .studio {
    max-width: none; margin: 0; gap: 0;
    height: 100%;
    display: grid;
    grid-template-columns: minmax(0, 1fr) 396px;
    grid-template-rows: minmax(0, 1fr) auto;
  }
  .vmx .st-canvas {
    grid-area: 1 / 1 / 2 / 2; order: 0;
    overflow-y: auto; -webkit-overflow-scrolling: touch;
    padding: 24px 32px 18px;
    gap: 14px;
  }
  .vmx .st-canvas > * { max-width: 780px; width: 100%; margin-left: auto; margin-right: auto; }
  .vmx .st-composer {
    grid-area: 2 / 1 / 3 / 2; order: 0; position: static;
    padding: 6px 32px calc(18px + var(--sab, 0px));
    flex-direction: row; flex-wrap: wrap; align-items: flex-end; gap: 12px;
  }
  .vmx .st-composer .idea-row { flex: 1 1 100%; padding-bottom: 0; }
  .vmx .st-composer .prompt-card { flex: 1 1 auto; min-width: 0; padding: 14px 20px; }
  .vmx .st-composer .prompt-field { min-height: 30px; max-height: 22vh; }
  .vmx .st-composer .gen-btn { flex: 0 0 auto; width: auto; min-width: 170px; padding: 0 34px; height: 60px; }
  .vmx .st-composer .dock { flex: 1 1 100%; }
  .vmx .st-rail {
    grid-area: 1 / 2 / 3 / 3; order: 0;
    overflow-y: auto; -webkit-overflow-scrolling: touch;
    border-left: 1.5px solid var(--line);
    padding: 20px 20px calc(24px + var(--sab, 0px));
  }
  .vmx .st-rail .sec-tt { padding-top: 10px; }

  .vmx .rail-model {
    display: flex; flex-direction: column; align-items: flex-start; gap: 3px;
    background: var(--cont); color: var(--oncont);
    border-radius: var(--r-md);
    padding: 15px 17px;
    text-align: left;
    transition: transform .15s;
    position: relative;
  }
  .vmx .rail-model:active { transform: scale(.98); }
  .vmx .rail-model b { font-size: 18px; font-weight: 700; }
  .vmx .rail-model small { font-size: 11.5px; opacity: .66; font-family: ui-monospace, Consolas, monospace; word-break: break-all; }
  .vmx .rail-model p { font-size: 12.5px; opacity: .85; line-height: 1.45; margin: 4px 0 0; }
  .vmx .rail-model .rm-chev { position: absolute; top: 13px; right: 12px; opacity: .7; }
  .vmx .rail-model .rm-chev svg { width: 20px; height: 20px; }

  .vmx .psum-row { display: none; }
  .vmx .st-m-only { display: none; }
  .vmx .stu-image .st-rail { display: flex; }
  .vmx .studio .dock { padding: 0; }

  .vmx .empty-hero { padding: 10vh 20px 36px; }
  .vmx .hist-grid { grid-template-columns: repeat(3, 1fr); }

  .vmx .sh-mask { align-items: center; padding: 26px; }
  .vmx .sh-card { border-radius: 34px; max-width: 540px; max-height: 82vh; padding: 8px 18px 20px; animation: vmxpop .3s cubic-bezier(.2, .9, .3, 1.1); }
  @keyframes vmxpop { from { transform: scale(.92); opacity: 0; } to { transform: none; opacity: 1; } }
  .vmx .sh-grab { display: none; }
}

/* ═══════════ 入场 / 离场编排 ═══════════
   进入模块（Gemini 对话 → 四媒体模块，或四模块互切、进页挂载）时：
   hero 彩色卡片从屏顶整体推下，卡内 glyph/标题/模型 pill 跟进弹入；
   正文三区（rail/composer/canvas）自下方按区错峰浮起，区内子块再各错 70ms。
   模块互切由 VertexPage 编排：先给 .v-stage 挂 .v-leaving（旧页 hero 缩回顶部、
   正文下沉淡出 190ms），再换 vs.func 重挂新面板重播入场。
   设置「禁用系统转场动画」(.v-noanim) 与系统减动效偏好整段跳过。 */
@media (prefers-reduced-motion: no-preference) {
  /* —— hero 卡片自顶推下 + 卡内跟进 —— */
  .vmx .hero { animation: vmxHeroDown .6s var(--vmx-eo) backwards; }
  .vmx .hero-glyph { animation: vmxGlyphIn .55s var(--vmx-spring) .14s backwards; }
  .vmx .hero-tt h2 { animation: vmxRise .5s var(--vmx-eo) .2s backwards; }
  .vmx .hero-tt p { animation: vmxRise .5s var(--vmx-eo) .27s backwards; }
  .vmx .hero .model-pill { animation: vmxPillIn .45s var(--vmx-spring) .32s backwards; }

  /* —— 正文三区错峰浮起（--vd 区基准 + --vd2 区内子块递进）—— */
  .vmx :is(.st-rail, .st-composer, .st-canvas) > * {
    animation: vmxRise .55s var(--vmx-eo) backwards;
    animation-delay: calc(var(--vd, .16s) + var(--vd2, 0s));
  }
  .vmx .st-rail > * { --vd: .16s; }
  .vmx .st-composer > * { --vd: .34s; }
  .vmx .st-canvas > * { --vd: .46s; }
  /* 图片页视觉序被 order 反转（画布在上、输入岛钉底）：画布先起、dock 收尾 */
  .vmx .stu-image .st-canvas > * { --vd: .18s; }
  .vmx .stu-image .st-composer > * { --vd: .42s; }
  .vmx :is(.st-rail, .st-composer, .st-canvas) > :nth-child(2) { --vd2: .07s; }
  .vmx :is(.st-rail, .st-composer, .st-canvas) > :nth-child(3) { --vd2: .14s; }
  .vmx :is(.st-rail, .st-composer, .st-canvas) > :nth-child(4) { --vd2: .21s; }
  .vmx :is(.st-rail, .st-composer, .st-canvas) > :nth-child(n + 5) { --vd2: .28s; }

  /* 参数摘要 chips：横向依次滑入（叠加所在行的上浮 → 微斜入场） */
  .vmx .psum { animation: vmxChip .45s var(--vmx-eo) backwards; }
  .vmx .psum:nth-child(1) { animation-delay: .22s; }
  .vmx .psum:nth-child(2) { animation-delay: .27s; }
  .vmx .psum:nth-child(3) { animation-delay: .32s; }
  .vmx .psum:nth-child(4) { animation-delay: .37s; }
  .vmx .psum:nth-child(5) { animation-delay: .42s; }
  .vmx .psum:nth-child(n + 6) { animation-delay: .47s; }

  /* 空态大 glyph 弹性登场；灵感 chips 同 psum 节奏 */
  .vmx .empty-glyph { animation: vmxGlyphIn .6s var(--vmx-spring) .32s backwards; }
  .vmx .idea { animation: vmxChip .45s var(--vmx-eo) backwards; }
  .vmx .idea:nth-child(1) { animation-delay: .3s; }
  .vmx .idea:nth-child(2) { animation-delay: .35s; }
  .vmx .idea:nth-child(3) { animation-delay: .4s; }
  .vmx .idea:nth-child(4) { animation-delay: .45s; }
  .vmx .idea:nth-child(n + 5) { animation-delay: .5s; }

  /* 历史缩略图网格：错峰浮起 */
  .vmx .hist-thumb { animation: vmxThumb .5s var(--vmx-eo) backwards; }
  .vmx .hist-thumb:nth-child(1) { animation-delay: .3s; }
  .vmx .hist-thumb:nth-child(2) { animation-delay: .36s; }
  .vmx .hist-thumb:nth-child(3) { animation-delay: .42s; }
  .vmx .hist-thumb:nth-child(4) { animation-delay: .48s; }
  .vmx .hist-thumb:nth-child(5) { animation-delay: .54s; }
  .vmx .hist-thumb:nth-child(6) { animation-delay: .6s; }
  .vmx .hist-thumb:nth-child(n + 7) { animation-delay: .66s; }

  /* 生成中卡片即时浮现（busy 出现在会话中，不吃入场 stagger）；
     错误卡浮现后轻微横向抖动提示。二者是状态反馈，不受 .v-noanim 关闭。 */
  .vmx .busy-hero { animation: vmxRise .45s var(--vmx-eo); }
  .vmx .err-card { animation: vmxRise .4s var(--vmx-eo), vmxShake .5s ease .3s; }

  /* —— 模块互切离场（.v-leaving 由 VertexPage 挂在 .v-stage 上）—— */
  .v-leaving .vmx .hero { animation: vmxHeroUp .2s cubic-bezier(.4, 0, 1, 1) forwards; }
  .v-leaving .vmx .mod-body { animation: vmxBodyOut .2s ease forwards; }
}
@keyframes vmxHeroDown { from { transform: translateY(-103%); } }
@keyframes vmxHeroUp { to { transform: translateY(-103%); } }
@keyframes vmxBodyOut { to { opacity: 0; transform: translateY(18px); } }
@keyframes vmxRise { from { opacity: 0; transform: translateY(22px); } }
@keyframes vmxGlyphIn {
  0% { opacity: 0; transform: scale(.5) rotate(-8deg); }
  62% { opacity: 1; transform: scale(1.06) rotate(1.5deg); }
  100% { opacity: 1; transform: none; }
}
@keyframes vmxPillIn { from { opacity: 0; transform: scale(.82); } }
@keyframes vmxChip { from { opacity: 0; transform: translateX(-16px); } }
@keyframes vmxThumb { from { opacity: 0; transform: translateY(16px) scale(.94); } }
@keyframes vmxShake {
  0%, 100% { transform: none; }
  20% { transform: translateX(-3px); }
  40% { transform: translateX(3px); }
  60% { transform: translateX(-2px); }
  80% { transform: translateX(2px); }
}

/* 「禁用系统转场动画」：入场编排整段跳过（busy/err 属状态反馈，保留） */
.v-noanim .vmx :is(.hero, .hero-glyph, .hero-tt h2, .hero-tt p, .model-pill, .psum, .idea, .hist-thumb, .empty-glyph),
.v-noanim .vmx :is(.st-rail, .st-composer, .st-canvas) > * { animation: none; }

/* ═══════════ 桌面指针悬停微动效（触屏无 hover，不受影响）═══════════ */
@media (hover: hover) and (pointer: fine) {
  .vmx .hist-thumb { transition: transform .22s var(--vmx-eo), box-shadow .22s; }
  .vmx .hist-thumb:hover { transform: translateY(-3px) scale(1.02); box-shadow: 0 10px 26px rgba(0, 0, 0, .16); }
  .vmx .model-pill:hover { background: color-mix(in srgb, var(--oncont) 16%, transparent); }
  .vmx .seg-b:not(.on):hover, .vmx .psum:not(.lead):hover, .vmx .idea:hover,
  .vmx .tgl:not(.on):hover, .vmx .sh-opt:not(.on):hover, .vmx .voice-card:not(.on):hover,
  .vmx .dock-plus:hover, .vmx .swap-b:hover { background: var(--sur2); }
  .vmx .gen-btn { transition: transform .16s, border-radius .3s, box-shadow .25s; }
  .vmx .gen-btn:not(:disabled):hover { transform: translateY(-2px); box-shadow: 0 8px 22px color-mix(in srgb, var(--acc) 32%, transparent); }
  .vmx .dock-send:not(:disabled):hover { transform: scale(1.07); }
  .vmx .slot-x:hover, .vmx .hist-x:hover { background: rgba(0, 0, 0, .78); }
  .vmx .rail-model:hover { transform: scale(1.012); }
}

  /* 滑动层（fixed 全屏盖主页，translateX 右移露主页；跟手时关过渡）。
     padding-bottom: var(--kb) —— 键盘高度兜底（App.svelte 维护），原生方案生效时恒 0。 */
  .vertex-slide.svelte-yrzdjz { position: fixed; inset: 0; z-index: 40; display: flex; flex-direction: column;
    padding-bottom: var(--kb, 0px);
    /* transform 全程由手势 / 弹簧逐帧驱动（同 ClaudePage），不再挂 CSS 过渡 */
    box-shadow: -10px 0 50px rgba(0,0,0,.18); will-change: transform; }

  /* 顶部浮层（真实 Gemini：透明顶栏，48px 触控目标，模型 pill 紧凑 16px）。
     绝对定位悬浮在内容之上：对话滚动到顶栏下方时被「表面色→透明」的渐变晕开（原版同款），
     greeting 页渐变叠在同色底上不可见，零干扰。 */
  .v-header.svelte-yrzdjz { position: absolute; top: 0; left: 0; right: 0; z-index: 30; display: flex; align-items: center; gap: 2px;
    padding: max(6px, var(--sat)) 8px 14px;
    background: linear-gradient(to bottom, rgba(253,252,252,.97) 0%, rgba(253,252,252,.88) 64%, rgba(253,252,252,0) 100%);
    pointer-events: none; }
  /* 媒体模块（vmx 新版面板）：面板自带彩色 hero 页头，顶栏按钮直接浮在其上，去掉白渐变 */
  .v-header.v-h-media.svelte-yrzdjz { background: none !important; }
  .v-header.svelte-yrzdjz > :where(.svelte-yrzdjz) { pointer-events: auto; }
  .v-left.svelte-yrzdjz, .v-right.svelte-yrzdjz { display: flex; align-items: center; gap: 2px; }
  .v-right.svelte-yrzdjz { margin-left: auto; }
  .v-iconbtn.svelte-yrzdjz { width: 44px; height: 44px; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: var(--g-on); flex: none; }
  .v-iconbtn.svelte-yrzdjz:active { background: var(--g-hover); }
  .v-model-wrap.svelte-yrzdjz, .v-func-wrap.svelte-yrzdjz { position: relative; }
  .v-model.svelte-yrzdjz { display: flex; align-items: center; padding: 7px 8px 7px 12px; border-radius: var(--g-r-pill); }
  .v-model.svelte-yrzdjz:active { background: var(--g-hover); }
  .v-model-main.svelte-yrzdjz { font-size: 16px; font-weight: 500; color: var(--g-on); letter-spacing: 0; }
  .v-model-sub.svelte-yrzdjz { font-size: 16px; color: var(--g-on-variant); margin-left: 5px; max-width: 38vw; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
  .v-chev.svelte-yrzdjz { width: 16px; height: 16px; color: var(--g-on-variant); margin-left: 2px; flex: none; }
  .v-chev-g.svelte-yrzdjz { font-size: 19px; color: var(--g-on-variant); flex: none; }
  .v-func.svelte-yrzdjz { display: flex; align-items: center; gap: 2px; padding: 8px 7px 8px 10px; border-radius: var(--g-r-pill); color: var(--g-on); }
  .v-func.svelte-yrzdjz:active { background: var(--g-hover); }
  /* 输入条上这两颗（模块芯片 / 圆钮）在手机上只有按下态；桌面鼠标划过毫无反应＝很不像原生 app */
  @media (hover: hover) { .v-func.svelte-yrzdjz:hover { background: var(--g-hover); } }

  /* 弹层（模型选择器 / 模块菜单）—— 真实 Gemini 菜单：白卡 radius 20 / padding 8 /
     行=名称 17px + 副题 13px 灰 / 选中右侧 ✓ 黑色（不再用蓝底蓝字）*/
  .v-pop-scrim.svelte-yrzdjz { position: fixed; inset: 0; z-index: 60; }
  .v-picker.svelte-yrzdjz, .v-funcmenu.svelte-yrzdjz { position: absolute; top: calc(100% + 4px); z-index: 61; min-width: 232px; max-height: 70vh; overflow-y: auto;
    background: var(--g-bright); border-radius: 20px; box-shadow: var(--g-shadow-pop); padding: 8px; }
  .v-picker.svelte-yrzdjz { left: 0; }
  .v-funcmenu.svelte-yrzdjz { right: 0; }
  .v-pick-sec.svelte-yrzdjz { font-size: 12px; color: var(--g-on-low); padding: 7px 12px 4px; }
  .v-pick-row.svelte-yrzdjz { width: 100%; display: flex; align-items: center; gap: 11px; padding: 10px 12px; border-radius: 12px; text-align: left; }
  .v-pick-row.svelte-yrzdjz:active { background: var(--g-hover); }
  .v-pick-row.sel.svelte-yrzdjz { background: var(--g-dim); }
  /* (unused) .v-pick-dot { flex: none; display: flex; }*/
  .v-func-ico.svelte-yrzdjz { width: 22px; flex: none; color: var(--g-on-variant); text-align: center; }
  .v-func-logo.svelte-yrzdjz { width: 22px; height: 21px; object-fit: contain; flex: none; display: block; }
  .v-pick-name.svelte-yrzdjz { flex: 1; font-size: 16px; color: var(--g-on); }
  .v-pick-row.sel.svelte-yrzdjz .v-pick-name:where(.svelte-yrzdjz) { font-weight: 540; }
  .v-pick-ck.svelte-yrzdjz { font-size: 19px; color: var(--g-on); flex: none; }
  /* 模型菜单行（照搬真站样式：勾在左 + 名称/说明两行，选中不高亮底、只显勾）*/
  .v-pick-m.svelte-yrzdjz { align-items: center; gap: 8px; }
  .v-pick-m.sel.svelte-yrzdjz { background: transparent; }
  .v-pick-m.svelte-yrzdjz:hover { background: var(--g-hover); }
  .v-pick-ck2.svelte-yrzdjz { width: 20px; flex: none; display: flex; align-items: center; justify-content: center; color: var(--g-on); }
  .v-pick-ck2.svelte-yrzdjz .lumi:where(.svelte-yrzdjz) { font-size: 18px; }
  .v-pick-mtx.svelte-yrzdjz { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 0; }
  .v-pick-mtx.svelte-yrzdjz .v-pick-name:where(.svelte-yrzdjz) { flex: none; font-size: 14px; }
  .v-pick-desc.svelte-yrzdjz { font-size: 12.5px; color: var(--g-on-variant); line-height: 1.35; }
  .v-pick-m.v-think-item.svelte-yrzdjz { padding-left: 20px; }
  .v-pick-div.svelte-yrzdjz { height: 1px; background: var(--g-divider); margin: 6px 10px; }
  /* 思考强度：可展开子列表（当前值灰字缀在标题后；子项缩进 + 勾选） */
  /* (unused) .v-think-cur { font-size: 13px; color: var(--g-on-variant); margin-left: 8px; font-weight: 400; }*/
  .v-think-list.svelte-yrzdjz { animation: svelte-yrzdjz-vddPop2 .16s ease; }
  @keyframes svelte-yrzdjz-vddPop2 { from { opacity: 0; transform: translateY(-3px); } to { opacity: 1; transform: none; } }
  .v-think-item.svelte-yrzdjz { padding-left: 26px; }
  .v-think-item.svelte-yrzdjz .v-pick-name:where(.svelte-yrzdjz) { font-size: 15px; }
  .v-toggle-row.svelte-yrzdjz { width: 100%; display: flex; align-items: center; justify-content: space-between; padding: 9px 11px; font-size: 15px; color: var(--g-on); }
  .v-switch.svelte-yrzdjz { width: 38px; height: 22px; border-radius: 11px; background: var(--g-outline-low); position: relative; transition: background .18s; flex: none; }
  .v-switch.on.svelte-yrzdjz { background: var(--g-primary); }
  .v-knob.svelte-yrzdjz { position: absolute; top: 2px; left: 2px; width: 18px; height: 18px; border-radius: 50%; background: #fff; transition: transform .18s; box-shadow: 0 1px 3px rgba(0,0,0,.3); }
  .v-switch.on.svelte-yrzdjz .v-knob:where(.svelte-yrzdjz) { transform: translateX(16px); }

  /* 主区（真实 Gemini 结构：上方内容区 + 钉底输入条）*/
  .v-stage.svelte-yrzdjz { flex: 1; min-height: 0; position: relative; display: flex; flex-direction: column; }
  /* 对话模块包裹层：同时作为桌面拖放区（相对定位供拖放遮罩绝对铺满），保持原本的纵向 flex 布局 */
  .v-chat.svelte-yrzdjz { flex: 1; min-height: 0; position: relative; display: flex; flex-direction: column; }
  /* 拎着工作空间的文件悬在对话上：整块亮一圈，松手＝挂进输入栏 */
  .v-chat.dnd-on.svelte-yrzdjz::after { content: ''; position: absolute; inset: 8px; border-radius: 18px; pointer-events: none; z-index: 4;
    box-shadow: inset 0 0 0 2px var(--v-accent, #6d7cff); background: rgba(109, 124, 255, .07); }
  /* —— 模块切换动效（对话页侧；媒体面板的入/离场编排在 media-neo.css）——
     入场：整页轻淡入 + 底部光晕升起；离场（.v-leaving，pickFunc 编排）：淡出下沉。 */
  @media (prefers-reduced-motion: no-preference) {
    .v-chat.svelte-yrzdjz { animation: svelte-yrzdjz-vChatIn .32s ease backwards; }
    .v-glow.svelte-yrzdjz { animation: svelte-yrzdjz-vGlowIn .7s ease backwards; }
    .v-stage.v-leaving.svelte-yrzdjz .v-chat:where(.svelte-yrzdjz) { animation: svelte-yrzdjz-vChatOut .2s ease forwards; }
  }
  .v-noanim.svelte-yrzdjz .v-chat:where(.svelte-yrzdjz), .v-noanim.svelte-yrzdjz .v-glow:where(.svelte-yrzdjz) { animation: none; }
  @keyframes svelte-yrzdjz-vChatIn { from { opacity: 0; } }
  @keyframes svelte-yrzdjz-vGlowIn { from { opacity: 0; transform: translateY(30px); } }
  @keyframes svelte-yrzdjz-vChatOut { to { opacity: 0; transform: translateY(14px); } }
  /* greeting：星标 + 问候语居中在剩余空间（输入条已钉底，不再参与居中）*/
  .v-hero.svelte-yrzdjz { flex: 1; min-height: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 0 24px 6vh; }
  .v-greet.svelte-yrzdjz { display: flex; flex-direction: column; align-items: center; gap: 22px; }
  .v-greet-star.svelte-yrzdjz { display: inline-flex; }
  .v-greet.svelte-yrzdjz h1:where(.svelte-yrzdjz) { font-family: var(--g-font); font-weight: 360; font-size: 32px; line-height: 1.3; text-align: center; color: var(--g-on); letter-spacing: 0; }
  /* 底部环境光晕（真实页是巨幅模糊彩虹条；按参考截图加强：更高、更蓝）*/
  .v-glow.svelte-yrzdjz { position: absolute; left: 0; right: 0; bottom: 0; height: 46%; pointer-events: none;
    background: linear-gradient(180deg, rgba(216,231,251,0) 0%, rgba(208,226,252,.5) 55%, rgba(193,217,250,.92) 100%); }

  .v-scroll.svelte-yrzdjz { flex: 1; overflow-y: auto; -webkit-overflow-scrolling: touch; }
  /* 顶栏改悬浮后，对话顶距让出顶栏高度（滚动时内容滑进顶栏渐变下方晕开）；
     底距给悬浮输入条让出高度——末条消息要能滚到胶囊上方读全。 */
  .v-thread.svelte-yrzdjz { max-width: 760px; margin: 0 auto; width: 100%; padding: calc(var(--sat) + 64px) 24px 128px; }
  /* 输入条：悬浮钉底、直接遮挡下方滚动文本（对齐真实 Gemini）。整条不吃指针（让底下文本可滚动），
     仅胶囊本体可交互。对话态额外挂「表面色→透明」的底部渐隐 + 上方留白跑道，文本滑近胶囊时柔和隐去、
     不再有硬白边；greeting 保持透明（胶囊浮在底部光晕上，无渐隐带）。 */
  .v-composer-wrap.svelte-yrzdjz { position: absolute; left: 0; right: 0; bottom: 0; z-index: 10; padding: 6px 16px max(12px, var(--sab)); pointer-events: none; }
  .v-composer-wrap.svelte-yrzdjz .v-composer:where(.svelte-yrzdjz) { max-width: 680px; margin: 0 auto; pointer-events: auto; }
  .v-composer-wrap.v-cw-chat.svelte-yrzdjz { padding-top: 46px; background: linear-gradient(to top, rgba(253,252,252,1) 0%, rgba(253,252,252,.96) 42%, rgba(253,252,252,0) 100%); }

  /* 用户气泡（实测：#f2f0f0 / radius 40 / padding 20px 28px / 右缘距 28→16+12）*/
  .v-turn-user.svelte-yrzdjz { display: flex; justify-content: flex-end; margin: 18px 0; }
  .v-bubble.svelte-yrzdjz { background: var(--g-dim); color: var(--g-on); border-radius: var(--g-r-bubble); padding: 17px 24px; font-size: 16px; line-height: 1.5; max-width: 84%; word-break: break-word; white-space: pre-wrap; }
  .v-b-atts.svelte-yrzdjz { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 8px; }
  .v-b-att.svelte-yrzdjz { display: inline-flex; align-items: center; font-size: 13px; color: var(--g-on-variant); }
  .v-b-att.svelte-yrzdjz img:where(.svelte-yrzdjz) { width: 64px; height: 64px; object-fit: cover; border-radius: 12px; display: block; }
  /* 模型回复：全宽纯文本，无头像（真实 Gemini 移动结构）*/
  .v-turn-model.svelte-yrzdjz { margin: 4px 0 26px; min-width: 0; }
  /* 等待动画：28×28 画布 + 三个等大 4px 黑点（原版规格），运动由 tdots() 的 WAAPI
     关键帧驱动（位置基线即关键帧第一帧，无 CSS 动画）。 */
  .v-tdots.svelte-yrzdjz { position: relative; display: inline-block; width: 28px; height: 28px; margin: 4px 0; }
  .v-tdots.svelte-yrzdjz i:where(.svelte-yrzdjz) { position: absolute; left: 0; top: 0; width: 4px; height: 4px; border-radius: 50%; background: var(--g-on); will-change: transform; }
  @keyframes svelte-yrzdjz-vspin { to { transform: rotate(360deg); } }
  .v-err.svelte-yrzdjz { background: #fce8e6; color: #c5221f; border-radius: 12px; padding: 10px 14px; font-size: 14px; }
  .v-foot.svelte-yrzdjz { color: var(--g-on-low); font-size: 13px; margin-top: 8px; }
  /* 动作排（复制/重试——只放真实可用的；32px 灰图标，gemini 间距）*/
  .v-actions.svelte-yrzdjz { display: flex; gap: 4px; margin: 10px 0 0 -8px; }
  .v-act.svelte-yrzdjz { width: 38px; height: 38px; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: #444746; }
  .v-act.svelte-yrzdjz:active { background: var(--g-hover); }
  .v-act.svelte-yrzdjz:disabled { opacity: .4; }

  /* 媒体模块占位 */
  /* (unused) .v-soon { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 12px; padding: 0 24px 12vh; text-align: center; }*/
  /* (unused) .v-soon h2 { font-size: 24px; font-weight: 400; color: var(--g-on); margin-top: 4px; }*/
  /* (unused) .v-soon-model { font-size: 15px; color: var(--g-on-variant); }*/
  /* (unused) .v-soon-model b { color: var(--g-primary); font-weight: 500; }*/
  /* (unused) .v-soon-dim { font-size: 14px; color: var(--g-on-low); }*/

  /* 输入条（实测+参考截图）：白底无边框 / radius 40 / 软阴影 / 编辑区 17px。
     collapsed：单行 padding 20px、行内 [+][编辑][mic]，总高 80；
     expanded：双层（附件chips + 编辑行 + 按钮排），按钮排 40px。 */
  .v-composer.svelte-yrzdjz { width: 100%; background: var(--g-bright); border: 0; border-radius: var(--g-r-input); box-shadow: var(--g-shadow-input), 0 0 0 .5px rgba(0,0,0,.04); padding: 20px; display: flex; flex-direction: column; gap: 0; }
  .v-c-main.svelte-yrzdjz { display: flex; align-items: center; gap: 12px; }
  .v-field.svelte-yrzdjz { flex: 1; min-height: 24px; max-height: 38vh; overflow-y: auto; font-size: 17px; line-height: 24px; color: var(--g-on); outline: none; word-break: break-word; }
  .v-field.svelte-yrzdjz:empty::before { content: attr(data-ph); color: var(--g-placeholder); }
  /* 圆形图标钮（40×40、28px Luminous 图标、黑色——实测规格）*/
  .v-cir.svelte-yrzdjz { width: 40px; height: 40px; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: var(--g-on-strong); flex: none; transition: background .15s; }
  .v-cir.svelte-yrzdjz:active { background: var(--g-hover); }
  @media (hover: hover) { .v-cir.svelte-yrzdjz:hover:not(:disabled) { background: var(--g-hover); } }
  .v-cir.svelte-yrzdjz:disabled { opacity: .45; }
  /* 停止＝黑圆白方块；发送＝淡蓝圆 #a8c7fa + 深色箭头（均取自参考截图）*/
  .v-stop.svelte-yrzdjz { background: #000; color: #fff; }
  .v-stop.svelte-yrzdjz:active { background: #000; filter: brightness(1.3); }
  .v-go.svelte-yrzdjz { background: #a8c7fa; color: #1a1c1e; }
  .v-go.svelte-yrzdjz:active { filter: brightness(.94); }
  /* expanded 按钮排：编辑行下方 [+] … [mic][发送/停止] */
  .v-c-bar.svelte-yrzdjz { display: none; align-items: center; gap: 8px; margin-top: 10px; }
  .v-c-sp.svelte-yrzdjz { flex: 1; }
  .v-composer.expanded.svelte-yrzdjz .v-c-bar:where(.svelte-yrzdjz) { display: flex; }
  .v-composer.expanded.svelte-yrzdjz .v-row-only:where(.svelte-yrzdjz) { display: none; }
  .v-composer.expanded.svelte-yrzdjz { padding: 16px 16px 12px 20px; }
  /* 附件 chips（expanded 顶部）*/
  .v-c-atts.svelte-yrzdjz { display: flex; flex-wrap: wrap; gap: 7px; padding-bottom: 10px; }
  .v-c-att.svelte-yrzdjz { position: relative; display: flex; align-items: center; height: 52px; border-radius: 14px; overflow: hidden; background: var(--g-dim); }
  .v-c-att.img.svelte-yrzdjz { width: 52px; }
  .v-c-att.svelte-yrzdjz img:where(.svelte-yrzdjz) { width: 52px; height: 52px; object-fit: cover; display: block; }
  .v-c-att-name.svelte-yrzdjz { padding: 0 12px; font-size: 13px; color: var(--g-on); max-width: 160px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
  .v-c-att.pending.svelte-yrzdjz { opacity: .55; }
  .v-c-spin.svelte-yrzdjz { position: absolute; left: 50%; top: 50%; width: 16px; height: 16px; margin: -8px 0 0 -8px; border-radius: 50%; border: 2px solid rgba(0,0,0,.25); border-top-color: var(--g-on); animation: svelte-yrzdjz-vspin .8s linear infinite; }
  .v-c-att-x.svelte-yrzdjz { position: absolute; top: 0; right: 0; width: 17px; height: 17px; border-radius: 50%; background: rgba(0,0,0,.55); color: #fff; font-size: 13px; line-height: 1; display: flex; align-items: center; justify-content: center; }
  .v-c-att-x.svelte-yrzdjz::before { content: ''; position: absolute; inset: -8px; }

  /* 历史抽屉（实测：320px 白底、右缘 16px 圆角、行 17px 高 44、激活=灰胶囊 #f2f0f0 加粗）*/
  .v-scrim.svelte-yrzdjz { position: fixed; inset: 0; background: rgba(0,0,0,.4); opacity: 0; visibility: hidden; transition: opacity .25s, visibility 0s linear .25s; z-index: 50; }
  .v-scrim.open.svelte-yrzdjz { opacity: 1; visibility: visible; transition: opacity .25s; }
  .v-drawer.svelte-yrzdjz { position: fixed; top: 0; left: 0; bottom: 0; width: 85vw; max-width: 320px; background: var(--g-bright); border-radius: 0 16px 16px 0; transform: translateX(-100%); visibility: hidden; transition: transform .26s cubic-bezier(.22,1,.36,1), visibility 0s linear .26s; z-index: 51; display: flex; flex-direction: column; padding: 10px 12px; padding-top: max(10px, var(--sat)); overflow-y: auto; }
  .v-drawer.open.svelte-yrzdjz { transform: none; visibility: visible; transition: transform .26s cubic-bezier(.22,1,.36,1); box-shadow: 0 0 40px rgba(0,0,0,.18); }
  .v-brand.svelte-yrzdjz { display: flex; align-items: center; gap: 10px; padding: 8px 12px 8px; font-size: 20px; color: var(--g-on); }
  .v-d-gear.svelte-yrzdjz { margin-left: auto; }    /* 设置齿轮：抽屉顶 Gemini 大图标右侧（原明暗钮位置） */
  .v-d-gear.on.svelte-yrzdjz { color: var(--g-primary); background: var(--g-hover); }
  /* 设置子栏（齿轮拉开）：仿 Gemini 设置菜单——图标+标题(+副说明)+右侧开关 */
  .v-settings.svelte-yrzdjz { margin: 4px 2px 8px; padding: 5px; border-radius: 16px; background: var(--g-hover); display: flex; flex-direction: column; gap: 2px; }
  .v-set-row.svelte-yrzdjz { width: 100%; display: flex; align-items: center; gap: 11px; padding: 9px 10px; border: 0; background: none; border-radius: 12px; text-align: left; color: var(--g-on); cursor: pointer; }
  .v-set-row.svelte-yrzdjz:active { background: var(--g-hover-strong); }
  .v-set-ic.svelte-yrzdjz { width: 22px; flex: none; display: flex; align-items: center; justify-content: center; color: var(--g-on-variant); }
  .v-set-tx.svelte-yrzdjz { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 1px; font-size: 14.5px; }
  .v-set-tx.svelte-yrzdjz small:where(.svelte-yrzdjz) { font-size: 11px; line-height: 1.35; color: var(--g-on-variant); }
  .v-d-item.svelte-yrzdjz { width: 100%; display: flex; align-items: center; gap: 13px; min-height: 44px; padding: 10px 12px; border-radius: var(--g-r-pill); font-size: 16px; color: var(--g-on); text-align: left; }
  .v-d-item.svelte-yrzdjz:active { background: var(--g-hover); }
  .v-d-ic.svelte-yrzdjz { font-size: 20px; color: var(--g-on); flex: none; width: 22px; text-align: center; }
  .v-d-sec.svelte-yrzdjz { color: var(--g-on-variant); font-size: 15px; padding: 16px 12px 6px; }
  .v-d-list.svelte-yrzdjz { display: flex; flex-direction: column; }
  .v-d-row.svelte-yrzdjz { display: flex; align-items: center; min-height: 44px; border-radius: var(--g-r-pill); }
  .v-d-row.cur.svelte-yrzdjz { background: var(--g-dim); }
  .v-d-row.cur.svelte-yrzdjz .v-d-pick:where(.svelte-yrzdjz) { font-weight: 540; color: var(--g-on-strong); }
  .v-d-pick.svelte-yrzdjz { flex: 1; min-width: 0; padding: 11px 4px 11px 14px; text-align: left; font-size: 16px; color: var(--g-on); overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
  .v-d-del.svelte-yrzdjz { width: 36px; height: 36px; margin-right: 4px; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: var(--g-on-low); flex: none; }
  .v-d-del.svelte-yrzdjz:active { background: var(--g-hover-strong); }
  /* (unused) .v-d-del svg { width: 16px; height: 16px; }*/
  .v-d-empty.svelte-yrzdjz { color: var(--g-on-low); font-size: 14px; padding: 10px 12px; }

  /* ============================================================
     桌面版（.v-dt，窗口 ≥900px）：真实 Gemini 桌面三栏结构。
     左栏折叠 52px 图标竖条 ↔ 展开 276px 带「最近」列表；内容区让开左栏、居中；
     输入胶囊 660px 单行 pill、内嵌模型选择器；顶栏右上功能菜单 + 新对话。
     ============================================================ */
  .vertex-slide.v-dt-slide.svelte-yrzdjz { box-shadow: none; }
  .vertex-root.v-dt.svelte-yrzdjz { position: relative; }
  .v-dt.svelte-yrzdjz .v-header:where(.svelte-yrzdjz), .v-dt.svelte-yrzdjz .v-drawer:where(.svelte-yrzdjz), .v-dt.svelte-yrzdjz .v-scrim:where(.svelte-yrzdjz) { display: none; }   /* 移动版顶栏/抽屉桌面不用 */

  /* —— 左栏 ——
     顶部一律留出 var(--sat)：v-dt 这套桌面 chrome 从 700px 起就生效（layout.side），
     折叠屏展开正好落在这一档 —— 那仍是台手机，上面有系统状态栏。左栏/顶栏/正文
     此前都按"桌面没有状态栏"写死 top:0，展开后菜单钮与标题被状态栏压住。 */
  .v-dt-side.svelte-yrzdjz { position: absolute; left: 0; top: 0; bottom: 0; z-index: 32; width: 52px;
    display: flex; flex-direction: column; padding: calc(var(--sat, 0px) + 8px) 6px 8px; gap: 2px;
    background: var(--g-surface); transition: width .2s cubic-bezier(.4,0,.2,1); overflow: hidden; }
  .v-dt-side.open.svelte-yrzdjz { width: 276px; padding: calc(var(--sat, 0px) + 8px) 12px 8px; background: var(--g-bright); box-shadow: 1px 0 0 var(--g-divider); }
  .v-dt-side-head.svelte-yrzdjz { display: flex; align-items: center; min-height: 44px; margin-bottom: 4px; }
  .v-dt-side.open.svelte-yrzdjz .v-dt-side-head:where(.svelte-yrzdjz) { justify-content: space-between; }
  .v-dt-brand.svelte-yrzdjz { display: flex; align-items: center; gap: 10px; font-size: 20px; color: var(--g-on); padding-left: 4px; }
  .v-dt-ic.svelte-yrzdjz { width: 40px; height: 40px; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: var(--g-on); flex: none; }
  .v-dt-ic.svelte-yrzdjz:hover { background: var(--g-hover); }
  .v-dt-item.svelte-yrzdjz { display: flex; align-items: center; gap: 12px; height: 40px; border-radius: 999px; color: var(--g-on); white-space: nowrap; overflow: hidden; }
  .v-dt-item.svelte-yrzdjz:hover { background: var(--g-hover); }
  .v-dt-side.svelte-yrzdjz:not(.open) .v-dt-item:where(.svelte-yrzdjz) { width: 40px; justify-content: center; padding: 0; }
  .v-dt-side.open.svelte-yrzdjz .v-dt-item:where(.svelte-yrzdjz) { padding: 0 12px; }
  .v-dt-item-ic.svelte-yrzdjz { font-size: 22px; flex: none; width: 24px; text-align: center; }
  .v-dt-item-tx.svelte-yrzdjz { font-size: 14px; }
  .v-dt-side.svelte-yrzdjz:not(.open) .v-dt-item-tx:where(.svelte-yrzdjz) { display: none; }
  .v-dt-recent.svelte-yrzdjz { flex: 1; min-height: 0; overflow-y: auto; margin-top: 10px; }
  .v-dt-sec.svelte-yrzdjz { font-size: 12px; color: var(--g-on-variant); padding: 8px 12px 4px; }
  .v-dt-conv.svelte-yrzdjz { display: flex; align-items: center; border-radius: 999px; }
  .v-dt-conv.svelte-yrzdjz:hover { background: var(--g-hover); }
  .v-dt-conv.cur.svelte-yrzdjz { background: var(--g-dim); }
  .v-dt-conv-pick.svelte-yrzdjz { flex: 1; min-width: 0; text-align: left; padding: 8px 6px 8px 14px; font-size: 14px; color: var(--g-on); overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
  .v-dt-conv-del.svelte-yrzdjz { width: 30px; height: 30px; margin-right: 4px; border-radius: 50%; display: none; align-items: center; justify-content: center; color: var(--g-on-low); flex: none; }
  .v-dt-conv.svelte-yrzdjz:hover .v-dt-conv-del:where(.svelte-yrzdjz) { display: flex; }
  .v-dt-conv-del.svelte-yrzdjz:hover { background: var(--g-hover-strong); }
  .v-dt-empty.svelte-yrzdjz { color: var(--g-on-low); font-size: 13px; padding: 8px 12px; }
  .v-dt-side-foot.svelte-yrzdjz { margin-top: auto; padding-top: 6px; }
  /* (unused) .v-dt-user { display: flex; align-items: center; gap: 10px; height: 44px; padding: 0 4px; }*/
  /* (unused) .v-dt-avatar { width: 28px; height: 28px; border-radius: 50%; background: #0ebc5f; color: #fff; font-size: 13px; display: flex; align-items: center; justify-content: center; flex: none; }*/
  /* (unused) .v-dt-uname { flex: 1; min-width: 0; font-size: 14px; color: var(--g-on); overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }*/
  /* (unused) .v-dt-gear { margin-left: auto; }*/
  /* (unused) .v-dt-side:not(.open) .v-dt-user { justify-content: center; padding: 0; }*/
  /* (unused) .v-dt-side:not(.open) .v-dt-gear { display: none; }*/

  /* 左上 hover 变形：默认 Gemini 星标，悬停 → 「打开边栏」按钮（照搬真站 side-nav-sparkle-button :hover）*/
  .v-dt-sparkbtn.svelte-yrzdjz { position: relative; width: 40px; height: 40px; flex: none; }
  .v-dt-sparkbtn.svelte-yrzdjz .v-dt-spark:where(.svelte-yrzdjz) { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; transition: opacity .15s; }
  .v-dt-sparkbtn.svelte-yrzdjz .v-dt-expand:where(.svelte-yrzdjz) { position: absolute; inset: 0; width: 40px; height: 40px; opacity: 0; transition: opacity .15s; }
  .v-dt-sparkbtn.svelte-yrzdjz:hover .v-dt-spark:where(.svelte-yrzdjz) { opacity: 0; }
  .v-dt-sparkbtn.svelte-yrzdjz:hover .v-dt-expand:where(.svelte-yrzdjz) { opacity: 1; }

  /* 左下设置按钮 + 菜单（照搬真站 desktop-settings-menu / lm-menu-theme：卡 radius20 软阴影 padding8，行 36）*/
  .v-dt-gear-wrap.svelte-yrzdjz { position: relative; }
  .v-dt-side.svelte-yrzdjz:not(.open) .v-dt-gearbtn:where(.svelte-yrzdjz) { width: 40px; justify-content: center; padding: 0; }
  .v-dt-side.svelte-yrzdjz:not(.open) .v-dt-gearbtn:where(.svelte-yrzdjz) .v-dt-item-tx:where(.svelte-yrzdjz) { display: none; }
  .v-dt-gearbtn.svelte-yrzdjz .v-dt-item-ic:where(.svelte-yrzdjz) { color: var(--g-on-variant); }
  /* 放 aside 外、fixed 定位在左下齿轮上方——不被左栏 overflow:hidden 裁掉（即用户说的"分界线后被挡住"）*/
  .v-dt-set-menu.svelte-yrzdjz { position: fixed; left: 10px; bottom: 92px; z-index: 61; width: 260px;
    background: var(--g-bright); border-radius: 20px; box-shadow: var(--g-shadow-pop); padding: 8px; }
  .v-dt-set-sec.svelte-yrzdjz { font-size: 12px; color: var(--g-on-low); padding: 7px 12px 4px; }
  .v-dt-set-opt.svelte-yrzdjz { width: 100%; display: flex; align-items: center; gap: 10px; height: 36px; padding: 0 12px; border-radius: 10px; color: var(--g-on); text-align: left; }
  .v-dt-set-opt.svelte-yrzdjz:hover { background: var(--g-hover); }
  .v-dt-set-ck.svelte-yrzdjz { font-size: 18px; color: var(--g-on); width: 20px; flex: none; visibility: hidden; }
  .v-dt-set-opt.on.svelte-yrzdjz .v-dt-set-ck:where(.svelte-yrzdjz) { visibility: visible; }
  .v-dt-set-lb.svelte-yrzdjz { font-size: 14px; }
  .v-dt-set-div.svelte-yrzdjz { height: 1px; background: var(--g-divider); margin: 6px 8px; }
  .v-dt-set-toggle.svelte-yrzdjz { width: 100%; display: flex; align-items: center; gap: 10px; padding: 8px 12px; border-radius: 10px; color: var(--g-on); text-align: left; }
  .v-dt-set-toggle.svelte-yrzdjz:hover { background: var(--g-hover); }
  .v-dt-set-tt.svelte-yrzdjz { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 1px; font-size: 14px; }
  .v-dt-set-tt.svelte-yrzdjz small:where(.svelte-yrzdjz) { font-size: 11px; line-height: 1.3; color: var(--g-on-variant); }

  /* —— 顶栏（右上）—— */
  .v-dt-top.svelte-yrzdjz { position: absolute; top: 0; right: 0; z-index: 31; display: flex; align-items: center; gap: 4px; padding: calc(var(--sat, 0px) + 12px) 16px 12px; }
  .v-dt-func-wrap.svelte-yrzdjz { position: relative; }
  .v-dt-func-wrap.svelte-yrzdjz .v-funcmenu:where(.svelte-yrzdjz) { right: 0; }

  /* —— 内容区让开左栏（折叠 52 / 展开 276）—— */
  .v-dt.svelte-yrzdjz .v-stage:where(.svelte-yrzdjz) { margin-left: 52px; transition: margin-left .2s cubic-bezier(.4,0,.2,1); }
  .v-dt.side-open.svelte-yrzdjz .v-stage:where(.svelte-yrzdjz) { margin-left: 276px; }
  .v-dt.svelte-yrzdjz .v-thread:where(.svelte-yrzdjz) { padding-top: calc(var(--sat, 0px) + 40px); max-width: 760px; }

  /* —— greeting：问候语 + 输入胶囊一组垂直居中（桌面不钉底）—— */
  .v-chat.v-dt-greet.svelte-yrzdjz { justify-content: center; gap: 30px; padding-top: var(--sat, 0px); }
  .v-chat.v-dt-greet.svelte-yrzdjz .v-hero:where(.svelte-yrzdjz) { flex: none; padding: 0 24px; }
  .v-chat.v-dt-greet.svelte-yrzdjz .v-glow:where(.svelte-yrzdjz) { display: none; }
  .v-chat.v-dt-greet.svelte-yrzdjz .v-composer-wrap:where(.svelte-yrzdjz) { position: static; padding: 0 24px; background: none; }
  /* 桌面问候语：真实 gds-display-m 计算样式（36px / 行高48 / 变量字重 320，很轻，非粗体）*/
  .v-dt.svelte-yrzdjz .v-greet:where(.svelte-yrzdjz) h1:where(.svelte-yrzdjz) { font-size: 36px; line-height: 48px; font-weight: 320; font-variation-settings: "wght" 320; letter-spacing: normal; color: var(--g-on); }
  /* 桌面图标：真站是变量图标字体的「细」字重 wght 320（此前我用默认粗体，显得又粗又大）。尺寸照搬：rail 20 / 胶囊内 22 */
  .v-dt.svelte-yrzdjz .lumi:where(.svelte-yrzdjz) { font-variation-settings: "wght" 320; }
  .v-dt.svelte-yrzdjz .v-dt-item-ic:where(.svelte-yrzdjz) { font-size: 20px; }
  .v-dt.svelte-yrzdjz .v-cir:where(.svelte-yrzdjz) .lumi:where(.svelte-yrzdjz) { font-size: 22px !important; }

  /* 桌面 greeting 极光背景（复刻真实 Gemini 柔光：蓝色主辉 + 极光条十色的紫/粉/橙/青点缀。
     用分层 radial-gradient 天生柔和，不用 filter:blur——大面积 blur 会拖垮渲染。取自真实 gradient-strip 配色）*/
  .v-dt-aura.svelte-yrzdjz { display: none; }
  /* contain:paint 强制把内部（含 blur 辉光）裁在本容器盒内——overflow:hidden 对大 blur 在部分浏览器会漏，
     导致辉光溢到左栏上面；contain 是硬裁，彻底锁在内容区。 */
  .v-dt.svelte-yrzdjz .v-chat.v-dt-greet:where(.svelte-yrzdjz) .v-dt-aura:where(.svelte-yrzdjz) { display: block; position: absolute; inset: 0; overflow: hidden; contain: paint; pointer-events: none; z-index: 0; }
  .v-dt.svelte-yrzdjz .v-chat.v-dt-greet:where(.svelte-yrzdjz) .v-hero:where(.svelte-yrzdjz), .v-dt.svelte-yrzdjz .v-chat.v-dt-greet:where(.svelte-yrzdjz) .v-composer-wrap:where(.svelte-yrzdjz) { position: relative; z-index: 1; }
  /* 照搬真站 nl-blob 星云机制：有机 blob（真实 border-radius）裁剪一张超大的十色彩虹条（真实
     gradient-strip 配色 + 旋转 36°），整体重模糊成柔光。真站 blur 146px，这里取 110px。
     （filter:blur 会让「预览工具」的 CDP 截图卡死——真站自身的 blur 也一样卡截图——但真机渲染正常；
     静态不做旋转动画：blur 只需合成一次，避免每帧重算模糊卡顿。）blob≈1440×766，::before inset-150% ≈5760×3064 与真站同量级。 */
  /* 真站 nebula「效果本身」照搬：有机 blob（真实 border-radius）裁剪十色彩虹条（真实 gradient-strip 配色，
     蓝居中）+ blur(120px)，整层 opacity 0.29（真站 nl-bg-layer 实测值——这才是它「很淡」的关键，
     我此前盲调成 .5 才糊满屏）。静态（不做旋转，blur 只合成一次省性能）。
     注：filter:blur 会卡「预览工具」的截图（真站自身 blur 也一样卡），但真机渲染正常，此处按真参数搭。 */
  .v-dt-aura-blob.svelte-yrzdjz { display: block; position: absolute; left: 50%; top: 49%; width: 1440px; height: 766px; transform: translate(-50%, -50%);
    border-radius: 33.86% 65.71% 57.84% 43.23% / 62.53% 43.83% 58.71% 38.74%; overflow: hidden; filter: blur(120px); opacity: .29;
    /* 径向遮罩把辉光收拢到中心、四周淡出到黑（真站图2 那种胶囊周围一圈、四角发黑的收拢感）*/
    -webkit-mask-image: radial-gradient(ellipse 56% 60% at 50% 50%, #000 30%, transparent 70%);
    mask-image: radial-gradient(ellipse 56% 60% at 50% 50%, #000 30%, transparent 70%); }
  .v-dt-aura-blob.svelte-yrzdjz::before { content: ''; position: absolute; inset: -150%;
    /* 蓝色为主：深蓝 navy → 亮蓝 #3c90ff 居中 → 深蓝，两侧不放青绿/紫暖，避免 blur 糊出杂色（真站可见区就是纯蓝）*/
    background: repeating-linear-gradient(180deg, #101d3a 0%, #1a3670 16%, #2860b8 34%, #3c90ff 50%, #2860b8 66%, #1a3670 84%, #101d3a 100%);
    transform: rotate(36deg); }
  .v-dt.svelte-yrzdjz .v-chat.v-dt-greet:where(.svelte-yrzdjz) .v-dt-aura:where(.svelte-yrzdjz) { background: none; }
  /* (unused) .vertex-root.v-dark .v-dt .v-chat.v-dt-greet .v-dt-aura { background: none; }*/
  .vertex-root.v-dark.svelte-yrzdjz .v-dt-aura-blob:where(.svelte-yrzdjz) { opacity: .34; }

  /* greeting 布局照搬真站：一组垂直中心在视口中线偏上 ~44px（不是正居中）；问候语↔胶囊间距 40px */
  .v-chat.v-dt-greet.svelte-yrzdjz { justify-content: center; gap: 40px; padding-bottom: 88px; }
  /* 桌面输入胶囊高度 64（真站实测）*/
  .v-dt.svelte-yrzdjz .v-composer:where(.svelte-yrzdjz) { border-radius: 32px; padding: 12px 10px; min-height: 64px; justify-content: center; }

  /* —— 桌面输入胶囊：660 单行 pill、圆角 32、内嵌模型选择器 pill —— */
  .v-dt.svelte-yrzdjz .v-composer-wrap:where(.svelte-yrzdjz) .v-composer:where(.svelte-yrzdjz) { width: 660px; max-width: 100%; margin: 0 auto; }
  .v-dt.svelte-yrzdjz .v-composer:where(.svelte-yrzdjz) { border-radius: 32px; padding: 6px 8px; }
  .v-dt.svelte-yrzdjz .v-c-main:where(.svelte-yrzdjz) { gap: 4px; }
  .v-dt.svelte-yrzdjz .v-field:where(.svelte-yrzdjz) { padding: 10px 6px; font-size: 16px; }
  .v-dt-model-wrap.svelte-yrzdjz { position: relative; flex: none; }
  .v-dt-model.svelte-yrzdjz { display: flex; align-items: center; gap: 1px; height: 36px; padding: 0 6px 0 12px; border-radius: 999px; font-size: 14px; font-weight: 500; color: var(--g-on-variant); white-space: nowrap; }
  .v-dt-model.svelte-yrzdjz:hover { background: var(--g-hover); }
  .v-picker.v-picker-up.svelte-yrzdjz { top: auto; bottom: calc(100% + 8px); left: auto; right: 0; }

  .venter.svelte-8pqs04 { position: fixed; inset: 0; z-index: 150; overflow: hidden; pointer-events: auto; }
  .vglass.svelte-8pqs04 { position: fixed; transform-origin: center center; }
  /* 不挂 filter：带滤镜的元素做 scale 动画会每帧按当前渲染尺寸重栅格化滤镜，手机直接掉帧 */
  .vstar.svelte-8pqs04 { position: fixed; left: 0; top: 0; width: 80px; height: 80px; will-change: transform; }

  .axis.svelte-199gqrx {
    position: absolute;
    inset: 0;
    pointer-events: none;
    overflow: hidden;
    contain: strict;
  }
  .g.svelte-199gqrx {
    position: absolute;
    inset: 0;
  }
  .fine.svelte-199gqrx {
    background-image:
      linear-gradient(to right, var(--grid) 1px, transparent 1px),
      linear-gradient(to bottom, var(--grid) 1px, transparent 1px);
    background-size: 26px 26px;
  }
  .major.svelte-199gqrx {
    background-image:
      linear-gradient(to right, var(--grid2) 1px, transparent 1px),
      linear-gradient(to bottom, var(--grid2) 1px, transparent 1px);
    background-size: 130px 130px;
    color: var(--grid2); /* 交叉点十字继承 */
  }
  .major.svelte-199gqrx svg:where(.svelte-199gqrx) {
    position: absolute;
    inset: 0;
    display: block;
  }

  .fog.svelte-199gqrx {
    position: absolute;
    inset: 0;
    background:
      radial-gradient(120% 86% at 50% 30%, transparent 34%, var(--bg) 96%),
      linear-gradient(to bottom, color-mix(in srgb, var(--bg) 34%, transparent), transparent 18%);
  }

  .flash.svelte-199gqrx {
    position: absolute;
    inset: 0;
    background-image:
      linear-gradient(to right, color-mix(in srgb, var(--accent) 30%, transparent) 1px, transparent 1px),
      linear-gradient(to bottom, color-mix(in srgb, var(--accent) 30%, transparent) 1px, transparent 1px);
    background-size: 130px 130px;
    opacity: 0;
    animation: svelte-199gqrx-grid-flash 0.9s var(--ease) both;
  }
  @keyframes svelte-199gqrx-grid-flash {
    0% {
      opacity: 0;
      transform: scale(1.012);
    }
    22% {
      opacity: 1;
    }
    100% {
      opacity: 0;
      transform: scale(1);
    }
  }
  @media (prefers-reduced-motion: reduce) {
    .flash.svelte-199gqrx {
      animation: none;
    }
  }

  .logo.svelte-19wu7tf {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: none;
  }
  .logo.svelte-19wu7tf svg:where(.svelte-19wu7tf) {
    display: block;
  }

  .top.svelte-1n3aevl {
    display: flex;
    align-items: center;
    gap: 2px;
    /* 右内边距吃 --hx-hdr-r（桌面壳窗控占宽，App.svelte 按"是否真的贴着窗口右缘"下发） */
    padding: calc(8px + var(--sat)) calc(10px + var(--hx-hdr-r, 0px)) 8px 10px;
    flex: none;
    position: relative;
  }
  /* 有内容时的底缘 hairline：顶栏与网格底纹分层，滚动区从这条线下面开始 */
  .top.hair.svelte-1n3aevl::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 1px;
    background: var(--border);
    pointer-events: none;
  }

  .tbtn.svelte-1n3aevl {
    width: 36px;
    height: 36px;
    border-radius: var(--r-ctl);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--text2);
    flex: none;
    transition: background var(--t-fast) var(--ease), color var(--t-fast) var(--ease),
      transform var(--t-fast) var(--ease);
  }
  @media (hover: hover) {
    .tbtn.svelte-1n3aevl:hover {
      background: var(--surface2);
      color: var(--text);
    }
  }
  .tbtn.svelte-1n3aevl:active {
    transform: scale(0.9);
  }
  .tbtn.svelte-1n3aevl:disabled {
    opacity: 0.35;
  }
  .tbtn.pane-on.svelte-1n3aevl {
    color: var(--accent);
    background: var(--accent-soft);
  }

  /* ── 厂商节点 ── */
  .vnode.svelte-1n3aevl {
    display: inline-flex;
    align-items: center;
    gap: 1px;
    padding: 3px 5px 3px 3px;
    border-radius: var(--r-ctl);
    min-width: 0;
    transition: background var(--t-fast) var(--ease);
  }
  @media (hover: hover) {
    .vnode.svelte-1n3aevl:hover {
      background: var(--surface2);
    }
    .vnode.svelte-1n3aevl:hover .vchev:where(.svelte-1n3aevl) {
      opacity: 1;
    }
  }
  .vnode.svelte-1n3aevl:active .vbox:where(.svelte-1n3aevl) {
    transform: scale(0.94);
  }
  .vbox.svelte-1n3aevl {
    position: relative;
    width: 30px;
    height: 30px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 8px;
    color: var(--text2); /* dimensio 徽记的 currentColor */
    flex: none;
    transition: transform var(--t-fast) var(--ease);
  }
  /* 运行态：logo 外圈轨道环 */
  .orbit.svelte-1n3aevl {
    position: absolute;
    inset: -4px;
    border-radius: 50%;
    border: 1.5px solid transparent;
    border-top-color: var(--accent);
    animation: spin 1.1s linear infinite;
  }
  .vchev.svelte-1n3aevl {
    display: inline-flex;
    color: var(--text3);
    flex: none;
    opacity: 0.55;
    transition: transform var(--t-med) var(--ease), opacity var(--t-fast) var(--ease);
  }
  .vchev.rot.svelte-1n3aevl {
    transform: rotate(180deg);
    opacity: 1;
  }
  .vnode.open.svelte-1n3aevl {
    background: var(--surface2);
  }

  /* ── 工作空间 ── */
  .sep.svelte-1n3aevl {
    width: 1px;
    height: 14px;
    background: var(--border2);
    margin: 0 3px 0 5px;
    flex: none;
  }
  .wschip.svelte-1n3aevl {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    min-width: 0;
    max-width: 42vw;
    height: 30px;
    padding: 0 9px 0 7px;
    border-radius: var(--r-ctl);
    color: var(--text2);
    transition: background var(--t-fast) var(--ease), color var(--t-fast) var(--ease);
  }
  .wschip.svelte-1n3aevl svg {
    flex: none;
    color: var(--text3);
    transition: color var(--t-fast) var(--ease);
  }
  @media (hover: hover) {
    .wschip.svelte-1n3aevl:hover {
      background: var(--surface2);
      color: var(--text);
    }
    .wschip.svelte-1n3aevl:hover svg {
      color: var(--text2);
    }
  }
  .wschip.svelte-1n3aevl:active {
    transform: scale(0.97);
  }
  .wsname.svelte-1n3aevl {
    font-size: 13px;
    font-weight: 540;
    letter-spacing: -0.004em;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    min-width: 0;
  }

  .tspace.svelte-1n3aevl {
    flex: 1;
  }

  /* ── 后台并行任务徽标 ── */
  .bgtasks.svelte-1n3aevl {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    height: 28px;
    padding: 0 10px;
    margin-right: 2px;
    border-radius: 999px;
    background: var(--accent-soft);
    color: var(--accent);
    flex: none;
    transition: background var(--t-fast) var(--ease), transform var(--t-fast) var(--ease);
  }
  .bgtasks.svelte-1n3aevl:active {
    transform: scale(0.94);
  }
  .bgdot.svelte-1n3aevl {
    width: 5px;
    height: 5px;
    border-radius: 50%;
    background: var(--accent);
    animation: pulse-soft 1.5s ease infinite;
  }
  .bgnum.svelte-1n3aevl {
    font: 600 11px var(--font-mono);
  }

  /* 横屏/桌面：顶栏收进统一顶栏带，控件中心与左侧会话栏、右侧面板头同在 22px 一线
     （桌面壳里这条线正对系统窗控那一排）。 */
  @media (min-width: 700px) {
    .top.svelte-1n3aevl {
      height: calc(var(--hx-band, 44px) + var(--sat));
      padding-top: var(--sat);
      padding-bottom: 0;
    }
    .tbtn.svelte-1n3aevl {
      width: 32px;
      height: 32px;
    }
    .vbox.svelte-1n3aevl {
      width: 28px;
      height: 28px;
    }
  }

  /* 手机端减负：375px 下按钮全家桶必须瘦身 */
  @media (max-width: 600px) {
    .top.svelte-1n3aevl {
      gap: 1px;
      padding-left: 8px;
      padding-right: 8px;
    }
    .vchev.svelte-1n3aevl {
      display: none;
    }
    .vnode.svelte-1n3aevl {
      padding-right: 3px;
    }
    .wschip.svelte-1n3aevl {
      max-width: 40vw;
      padding: 0 8px 0 6px;
    }
  }

  .ctxline.svelte-1n3aevl {
    position: absolute;
    left: 0;
    right: 0;
    bottom: -1px;
    height: 2px;
    pointer-events: auto;
  }
  .ctxline.svelte-1n3aevl span:where(.svelte-1n3aevl) {
    display: block;
    height: 100%;
    background: color-mix(in srgb, var(--accent) 45%, transparent);
    transition: width 0.4s var(--ease);
    border-radius: 0 2px 2px 0;
  }
  .ctxline.svelte-1n3aevl span.hot:where(.svelte-1n3aevl) {
    background: var(--warn);
  }

  .hero.svelte-1us96ac {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
    padding: 12px 22px 10px;
    position: relative;
  }
  /* 灭点辉光：徽记后一团极淡的维度紫 */
  .hero.svelte-1us96ac::before {
    content: "";
    position: absolute;
    left: 50%;
    top: 36%;
    width: min(480px, 76vw);
    aspect-ratio: 1.6;
    transform: translate(-50%, -50%);
    background: radial-gradient(closest-side, color-mix(in srgb, var(--accent) 7%, transparent), transparent 74%);
    pointer-events: none;
  }
  .stage.svelte-1us96ac {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0;
    width: min(640px, 100%);
    margin: 0 auto;
    position: relative;
    /* 视觉重心略高于几何中心：输入框在底部压着，徽记正居中会显得往下坠 */
    padding-bottom: 6vh;
  }

  /* ── 维度徽记 ── */
  .emblem.svelte-1us96ac {
    position: relative;
    width: 96px;
    height: 96px;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 28px;
    animation: pop-in 0.6s var(--ease) both;
  }
  .sq.svelte-1us96ac {
    position: absolute;
    inset: 0;
    border: 1px solid var(--border2);
    border-radius: 14px;
  }
  .sq.a.svelte-1us96ac {
    animation: svelte-1us96ac-slow-cw 56s linear infinite;
  }
  .sq.b.svelte-1us96ac {
    inset: 12px;
    border-color: var(--border);
    border-radius: 10px;
    animation: svelte-1us96ac-slow-ccw 42s linear infinite;
  }
  @keyframes svelte-1us96ac-slow-cw {
    to {
      transform: rotate(360deg);
    }
  }
  @keyframes svelte-1us96ac-slow-ccw {
    from {
      transform: rotate(45deg);
    }
    to {
      transform: rotate(-315deg);
    }
  }
  .core.svelte-1us96ac {
    position: relative;
    display: inline-flex;
    color: var(--text2);
    filter: drop-shadow(0 6px 18px color-mix(in srgb, var(--accent) 18%, transparent));
  }
  @media (prefers-reduced-motion: reduce) {
    .sq.svelte-1us96ac {
      animation: none;
    }
    .sq.b.svelte-1us96ac {
      transform: rotate(45deg);
    }
  }

  .greet.svelte-1us96ac {
    margin: 0;
    font-family: var(--font-ui);
    font-weight: 320;
    font-size: clamp(26px, 5vw, 32px);
    letter-spacing: 0.02em;
    color: var(--text);
    text-align: center;
    line-height: 1.25;
    animation: rise-in 0.55s var(--ease) 0.05s both;
  }
  .coord.svelte-1us96ac {
    margin-top: 10px;
    font-family: var(--font-mono);
    font-size: 10.5px;
    letter-spacing: 0.16em;
    color: var(--text3);
    animation: rise-in 0.55s var(--ease) 0.12s both;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  .hint.svelte-1us96ac {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    color: var(--accent);
    font-size: 13.5px;
    padding: 10px 16px;
    margin-top: 30px;
    border-radius: var(--r-ctl);
    background: var(--accent-soft);
    animation: rise-in 0.5s var(--ease) 0.18s both;
  }
  .hint.svelte-1us96ac:active {
    transform: scale(0.97);
  }
  .hint.err.svelte-1us96ac {
    color: var(--err);
    background: color-mix(in srgb, var(--err) 9%, transparent);
  }

  .dim.svelte-1q0jqw3 {
    display: inline-flex;
    position: relative;
    flex: none;
    perspective: 90px;
    transform-style: preserve-3d;
  }
  .p.svelte-1q0jqw3 {
    position: absolute;
    inset: 0;
    border: 1.4px solid var(--c);
    border-radius: 2.5px;
  }
  .py.svelte-1q0jqw3 {
    animation: dim-y 1.5s linear infinite;
  }
  .px.svelte-1q0jqw3 {
    opacity: 0.55;
    animation: dim-x 2.1s linear infinite;
  }
  @media (prefers-reduced-motion: reduce) {
    .p.svelte-1q0jqw3 {
      animation: none;
    }
    .px.svelte-1q0jqw3 {
      transform: rotateX(60deg);
    }
  }

  .dots.svelte-j8v70v {
    display: grid;
    gap: 2px;
    width: 100%;
    overflow: hidden;
  }
  .dots.fit.svelte-j8v70v {
    width: fit-content;
  }
  .cell.svelte-j8v70v {
    box-sizing: border-box;
    width: 6px;
    height: 6px;
    border-radius: 1.5px;
    border: 1px solid transparent;
    transition: background-color 0.16s, border-color 0.16s;
  }
  .cell.svelte-j8v70v.done {
    background: color-mix(in srgb, var(--text) 24%, transparent);
  }
  .cell.svelte-j8v70v.running {
    background: var(--accent);
    animation: svelte-j8v70v-dot-pulse var(--dur, 2.8s) ease-in-out var(--delay, 0s) infinite;
  }
  .cell.svelte-j8v70v.stalled {
    background: var(--warn);
  }
  .cell.svelte-j8v70v.error {
    background: var(--err);
  }
  .cell.svelte-j8v70v.pending,
  .cell.ghost.svelte-j8v70v {
    border-color: var(--border2);
  }
  .cell.ghost.svelte-j8v70v {
    animation: svelte-j8v70v-dot-ghost 2.2s ease-in-out infinite;
  }
  @keyframes svelte-j8v70v-dot-pulse {
    0%,
    100% {
      opacity: 1;
    }
    50% {
      opacity: 0.5;
    }
  }
  @keyframes svelte-j8v70v-dot-ghost {
    0%,
    100% {
      opacity: 0.3;
    }
    50% {
      opacity: 1;
    }
  }
  @media (prefers-reduced-motion: reduce) {
    .cell.svelte-j8v70v.running,
    .cell.ghost.svelte-j8v70v {
      animation: none;
    }
  }

  .wwrap.svelte-fpzodb {
    display: flex;
    padding: 3px 0;
  }
  .wcard.svelte-fpzodb {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    width: 318px;
    max-width: 100%;
    box-sizing: border-box;
    padding: 9px 8px 10px 10px;
    border: 1px solid color-mix(in srgb, var(--accent) 26%, var(--border));
    border-radius: var(--r-ctl);
    background: color-mix(in srgb, var(--surface) 72%, transparent);
    text-align: left;
    animation: rise-in 0.22s var(--ease) both;
    transition: background var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease),
      transform var(--t-fast) var(--ease);
  }
  @media (hover: hover) {
    .wcard.svelte-fpzodb:hover {
      background: var(--surface2);
      border-color: color-mix(in srgb, var(--accent) 45%, var(--border));
    }
  }
  .wcard.svelte-fpzodb:active {
    transform: scale(0.99);
  }
  .wic.svelte-fpzodb,
  .wcaret.svelte-fpzodb {
    display: inline-flex;
    align-items: center;
    height: 20px;
    flex: none;
    color: var(--text2);
  }
  .wcaret.svelte-fpzodb {
    color: var(--text3);
    opacity: 0.7;
  }
  .wcol.svelte-fpzodb {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 2px;
  }
  .wttl.svelte-fpzodb {
    font-size: 13.5px;
    line-height: 20px;
    font-weight: 560;
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
  }
  .wmeta.svelte-fpzodb {
    display: flex;
    align-items: center;
    gap: 9px;
    min-width: 0;
    font-size: 11.5px;
    line-height: 16px;
    color: var(--text3);
    white-space: nowrap;
    overflow: hidden;
  }
  .wmeta.svelte-fpzodb > span:where(.svelte-fpzodb) {
    flex: none;
  }
  .wmeta.svelte-fpzodb > .wph:where(.svelte-fpzodb) {
    flex: 0 1 auto;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
  }
  .wmeta.svelte-fpzodb b:where(.svelte-fpzodb) {
    font-weight: 560;
    color: var(--text2);
  }
  .num.svelte-fpzodb {
    font-family: var(--font-mono);
    font-size: 11px;
    font-variant-numeric: tabular-nums;
  }
  .wdots.svelte-fpzodb {
    display: block;
    padding: 6px 0 1px;
  }

  /* 文字流光：墨色 58% 两端 → 掺维度紫的高光扫过（明暗两档都成立） */
  .shine.svelte-fpzodb {
    color: var(--text);
    background-image: linear-gradient(
      110deg,
      color-mix(in srgb, var(--text) 58%, transparent) 30%,
      color-mix(in srgb, var(--accent) 55%, var(--text)) 50%,
      color-mix(in srgb, var(--text) 58%, transparent) 70%
    );
    background-size: 220% 100%;
    background-position: 130% 0;
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    animation: svelte-fpzodb-wc-shine 2.6s cubic-bezier(0.5, 0.05, 0.45, 0.95) infinite;
  }
  @keyframes svelte-fpzodb-wc-shine {
    0%,
    18% {
      background-position: 130% 0;
    }
    80%,
    100% {
      background-position: -30% 0;
    }
  }
  @media (prefers-reduced-motion: reduce) {
    .shine.svelte-fpzodb {
      animation: none;
      background-position: 50% 0;
    }
  }

  .awrap.svelte-1v0qlc2 {
    display: flex;
    padding: 3px 0;
  }
  .acard.svelte-1v0qlc2 {
    display: flex;
    align-items: center;
    gap: 8px;
    width: 318px;
    max-width: 100%;
    box-sizing: border-box;
    padding: 7px 8px 7px 10px;
    border: 1px solid var(--border);
    border-radius: var(--r-ctl);
    background: color-mix(in srgb, var(--surface) 72%, transparent);
    text-align: left;
    animation: rise-in 0.22s var(--ease) both;
    transition: background var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease),
      transform var(--t-fast) var(--ease);
  }
  @media (hover: hover) {
    .acard.svelte-1v0qlc2:hover {
      background: var(--surface2);
      border-color: var(--border2);
    }
  }
  .acard.svelte-1v0qlc2:active {
    transform: scale(0.99);
  }
  .aic.svelte-1v0qlc2 {
    display: inline-flex;
    flex: none;
    color: var(--text2);
  }
  .acaret.svelte-1v0qlc2 {
    display: inline-flex;
    flex: none;
    color: var(--text3);
    opacity: 0.7;
  }
  .attl.svelte-1v0qlc2 {
    flex: 1;
    min-width: 0;
    font-size: 13.5px;
    line-height: 20px;
    font-weight: 560;
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
  }
  .chip.svelte-1v0qlc2 {
    flex: none;
    font-family: var(--font-mono);
    font-size: 10px;
    padding: 1px 6px;
    border-radius: 999px;
    color: var(--accent);
    border: 1px solid color-mix(in srgb, var(--accent) 45%, transparent);
  }
  .shine.svelte-1v0qlc2 {
    color: var(--text);
    background-image: linear-gradient(
      110deg,
      color-mix(in srgb, var(--text) 58%, transparent) 30%,
      color-mix(in srgb, var(--accent) 55%, var(--text)) 50%,
      color-mix(in srgb, var(--text) 58%, transparent) 70%
    );
    background-size: 220% 100%;
    background-position: 130% 0;
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    animation: svelte-1v0qlc2-ac-shine 2.6s cubic-bezier(0.5, 0.05, 0.45, 0.95) infinite;
  }
  @keyframes svelte-1v0qlc2-ac-shine {
    0%,
    18% {
      background-position: 130% 0;
    }
    80%,
    100% {
      background-position: -30% 0;
    }
  }
  @media (prefers-reduced-motion: reduce) {
    .shine.svelte-1v0qlc2 {
      animation: none;
      background-position: 50% 0;
    }
  }

  .trow.svelte-1j64soq {
    border-radius: var(--r-ctl);
    animation: rise-in 0.24s var(--ease) both;
    position: relative;
  }
  /* 运行中：一道微光缓缓扫过 */
  .trow.svelte-1j64soq:not(.open):has(.st.running:where(.svelte-1j64soq)) .head:where(.svelte-1j64soq) {
    background: linear-gradient(
      100deg,
      transparent 38%,
      color-mix(in srgb, var(--accent) 8%, transparent) 50%,
      transparent 62%
    );
    background-size: 240% 100%;
    animation: svelte-1j64soq-shimmer 1.9s linear infinite;
  }
  @keyframes svelte-1j64soq-shimmer {
    from {
      background-position: 120% 0;
    }
    to {
      background-position: -120% 0;
    }
  }
  /* 串联轨道线（相邻 trow 之间） */
  .trow.svelte-1j64soq::before {
    content: "";
    position: absolute;
    left: 9px;
    top: -8px;
    height: 8px;
    width: 1px;
    background: var(--border2);
  }
  .feed-item:not(.is-tool) + .feed-item.is-tool .trow.svelte-1j64soq::before,
  .feed-item.is-tool:first-child .trow.svelte-1j64soq::before {
    display: none;
  }

  .head.svelte-1j64soq {
    display: flex;
    align-items: center;
    gap: 9px;
    width: 100%;
    text-align: left;
    padding: 6px 8px 6px 0;
    border-radius: var(--r-ctl);
    min-height: 34px;
    transition: background var(--t-fast) var(--ease);
  }
  @media (hover: hover) {
    .head.svelte-1j64soq:hover {
      background: var(--surface2);
    }
  }
  .head.svelte-1j64soq:active {
    background: var(--surface2);
  }

  /* 方形状态节点（正交语言：方不圆） */
  .st.svelte-1j64soq {
    width: 19px;
    height: 19px;
    border-radius: 5px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: none;
    border: 1.2px solid var(--border2);
    color: var(--text3);
    background: var(--surface);
    z-index: 1;
  }
  .st.ok.svelte-1j64soq {
    color: var(--ok);
    border-color: color-mix(in srgb, var(--ok) 45%, transparent);
  }
  .st.fail.svelte-1j64soq {
    color: var(--err);
    border-color: color-mix(in srgb, var(--err) 45%, transparent);
  }
  .st.denied.svelte-1j64soq {
    color: var(--text3);
  }
  .spin.svelte-1j64soq {
    width: 9px;
    height: 9px;
    border-radius: 2.5px;
    border: 1.5px solid color-mix(in srgb, var(--accent) 30%, transparent);
    border-top-color: var(--accent);
    animation: spin 0.9s linear infinite;
  }

  .ticon.svelte-1j64soq {
    color: var(--text2);
    display: inline-flex;
    flex: none;
  }
  .verb.svelte-1j64soq {
    font-size: 13px;
    font-weight: 560;
    color: var(--text);
    flex: none;
  }
  .arg.svelte-1j64soq {
    font-family: var(--font-mono);
    font-size: 11.5px;
    color: var(--text3);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    flex: 0 1 auto;
    min-width: 0;
  }
  .arg.rich.svelte-1j64soq {
    font-family: var(--font-ui);
    font-size: 12.5px;
    color: var(--text2);
  }
  .sum.live.svelte-1j64soq {
    color: var(--text2);
  }
  .sum.bad.svelte-1j64soq {
    color: var(--err);
  }
  .sum.svelte-1j64soq {
    margin-left: auto;
    font-size: 12px;
    color: var(--text3);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 38%;
    /* 可收缩：分栏拖到很窄时（正文列 ~210px）flex:none 会把整行撑出容器 */
    flex: 0 1 auto;
    min-width: 0;
  }
  .chev.svelte-1j64soq {
    color: var(--text3);
    display: inline-flex;
    flex: none;
    margin-left: 4px;
    transition: transform var(--t-fast) var(--ease);
    opacity: 0.55;
  }
  .chev.rot.svelte-1j64soq {
    transform: rotate(180deg);
  }
  .sum.svelte-1j64soq + .chev:where(.svelte-1j64soq) {
    margin-left: 2px;
  }
  .head.svelte-1j64soq:not(:hover) .chev:where(.svelte-1j64soq) {
    opacity: 0.35;
  }

  .body.svelte-1j64soq {
    padding: 2px 8px 10px 28px;
    animation: rise-in 0.2s var(--ease) both;
  }
  .sec.svelte-1j64soq {
    font-family: var(--font-mono);
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: var(--text3);
    margin: 8px 0 4px;
  }
  .sec.dim.svelte-1j64soq {
    font-family: var(--font-ui);
    text-transform: none;
    letter-spacing: 0;
  }
  .code.svelte-1j64soq {
    margin: 0;
    font-family: var(--font-mono);
    font-size: 12px;
    line-height: 1.55;
    background: var(--code-bg);
    border: 1px solid var(--border);
    border-radius: var(--r-ctl);
    padding: 9px 11px;
    white-space: pre-wrap;
    word-break: break-word;
    max-height: 300px;
    overflow: auto;
  }

  .think-head.svelte-1p91230 {
    display: flex;
    align-items: center;
    gap: 8px;
    width: 100%;
    min-height: 30px;
    text-align: left;
    color: var(--text3);
    padding: 4px 8px 4px 0;
    border-radius: var(--r-ctl);
    transition: color var(--t-fast) var(--ease);
  }
  @media (hover: hover) {
    .think-head.svelte-1p91230:hover {
      color: var(--text2);
    }
  }
  .think-mark.svelte-1p91230 {
    width: 7px;
    height: 7px;
    border: 1.4px solid currentColor;
    border-radius: 2px;
    transform: rotate(45deg);
    opacity: 0.7;
    flex: none;
  }
  .think-label.svelte-1p91230 {
    font-size: 12.5px;
    font-weight: 560;
    flex: none;
  }
  .think-peek.svelte-1p91230 {
    font-size: 12px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    min-width: 0;
    opacity: 0.7;
  }
  .chev.svelte-1p91230 {
    margin-left: auto;
    display: inline-flex;
    transition: transform var(--t-fast) var(--ease);
    opacity: 0.5;
    flex: none;
  }
  .chev.rot.svelte-1p91230 {
    transform: rotate(180deg);
  }
  .think-body.svelte-1p91230 {
    font-size: 13px;
    line-height: 1.68;
    color: var(--text2);
    white-space: pre-wrap;
    overflow-wrap: break-word;
    padding: 4px 10px 10px 14px;
    border-left: 1.5px solid var(--border2);
    margin: 2px 0 4px 3px;
    animation: rise-in 0.2s var(--ease) both;
  }

  .tgroup.svelte-avjp4r {
    border-radius: var(--r-ctl);
    animation: rise-in 0.24s var(--ease) both;
  }

  .ghead.svelte-avjp4r {
    display: flex;
    align-items: center;
    gap: 9px;
    width: 100%;
    text-align: left;
    padding: 6px 8px 6px 0;
    border-radius: var(--r-ctl);
    min-height: 34px;
    transition: background var(--t-fast) var(--ease);
  }
  @media (hover: hover) {
    .ghead.svelte-avjp4r:hover {
      background: var(--surface2);
    }
  }
  .ghead.svelte-avjp4r:active {
    background: var(--surface2);
  }

  /* 方形状态节点（与工具行同语言） */
  .gst.svelte-avjp4r {
    width: 19px;
    height: 19px;
    border-radius: 5px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: none;
    border: 1.2px solid var(--border2);
    color: var(--text3);
    background: var(--surface);
    z-index: 1;
  }
  .gst.ok.svelte-avjp4r {
    color: var(--ok);
    border-color: color-mix(in srgb, var(--ok) 45%, transparent);
  }
  .gst.bad.svelte-avjp4r {
    color: var(--err);
    border-color: color-mix(in srgb, var(--err) 45%, transparent);
  }
  .gst.live.svelte-avjp4r {
    border-color: color-mix(in srgb, var(--accent) 45%, transparent);
  }
  .gspin.svelte-avjp4r {
    width: 9px;
    height: 9px;
    border-radius: 2.5px;
    border: 1.5px solid color-mix(in srgb, var(--accent) 30%, transparent);
    border-top-color: var(--accent);
    animation: spin 0.9s linear infinite;
  }

  .gicons.svelte-avjp4r {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    color: var(--text2);
    flex: none;
  }
  .gi.svelte-avjp4r {
    display: inline-flex;
  }
  .gi.svelte-avjp4r + .gi:where(.svelte-avjp4r) {
    opacity: 0.75;
  }
  .glabel.svelte-avjp4r {
    font-size: 13px;
    font-weight: 560;
    color: var(--text);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    min-width: 0;
  }
  .gfail.svelte-avjp4r {
    font-size: 11.5px;
    color: var(--err);
    white-space: nowrap;
    flex: none;
  }
  .gchev.svelte-avjp4r {
    color: var(--text3);
    display: inline-flex;
    flex: none;
    margin-left: auto;
    transition: transform var(--t-fast) var(--ease);
    opacity: 0.55;
  }
  .gchev.rot.svelte-avjp4r {
    transform: rotate(180deg);
  }
  .ghead.svelte-avjp4r:not(:hover) .gchev:where(.svelte-avjp4r) {
    opacity: 0.35;
  }

  /* 展开体：连续左轨串起所有步骤；行自带的小竖tick交给轨道线 */
  .gbody.svelte-avjp4r,
  .gtail.svelte-avjp4r {
    position: relative;
    padding-bottom: 2px;
  }
  .gbody.svelte-avjp4r::before,
  .gtail.svelte-avjp4r::before {
    content: "";
    position: absolute;
    left: 9px;
    top: -6px;
    bottom: 10px;
    width: 1px;
    background: var(--border2);
  }
  .gtail.svelte-avjp4r::before {
    bottom: auto;
    height: 10px;
  }
  .gbody.svelte-avjp4r .trow::before,
  .gtail.svelte-avjp4r .trow::before {
    display: none;
  }
  /* 组内思考行让位左轨（与工具行文字起点对齐） */
  .gbody.svelte-avjp4r .think-head,
  .gtail.svelte-avjp4r .think-head {
    padding-left: 28px;
  }
  .gbody.svelte-avjp4r .think-body,
  .gtail.svelte-avjp4r .think-body {
    margin-left: 28px;
  }

  .askcard.svelte-72q6gd {
    border: 1px solid color-mix(in srgb, var(--accent) 30%, var(--border2));
    border-radius: var(--r-card);
    background: color-mix(in srgb, var(--accent) 4%, var(--surface));
    padding: 13px 14px 14px;
    display: flex;
    flex-direction: column;
    gap: 12px;
    box-shadow: var(--shadow-sm);
    animation: rise-in 0.3s var(--ease) both;
  }
  /* 交互态：一道左轨强调 + 轻微呼吸边，提示“正在等你” */
  .askcard.live.svelte-72q6gd {
    border-color: color-mix(in srgb, var(--accent) 46%, transparent);
    box-shadow: 0 0 0 1px color-mix(in srgb, var(--accent) 20%, transparent), var(--shadow-sm);
  }
  .askcard.answered.svelte-72q6gd {
    background: var(--surface);
    border-color: var(--border);
  }

  .ask-head.svelte-72q6gd {
    display: flex;
    align-items: center;
    gap: 8px;
  }
  .ask-glyph.svelte-72q6gd {
    width: 22px;
    height: 22px;
    flex: none;
    display: grid;
    place-items: center;
    border-radius: 6px;
    background: color-mix(in srgb, var(--accent) 85%, #3b82f6);
    color: #fff;
  }
  .ask-glyph.resolved.svelte-72q6gd {
    background: color-mix(in srgb, var(--ok) 16%, transparent);
    color: var(--ok);
  }
  .ask-title.svelte-72q6gd {
    font-size: 13px;
    font-weight: 640;
    color: var(--text);
  }

  .q.svelte-72q6gd {
    display: flex;
    flex-direction: column;
    gap: 7px;
  }
  .q.svelte-72q6gd + .q:where(.svelte-72q6gd) {
    padding-top: 11px;
    border-top: 1px solid var(--border);
  }
  .q-top.svelte-72q6gd {
    display: flex;
    align-items: center;
    gap: 8px;
  }
  .q-hdr.svelte-72q6gd {
    font-family: var(--font-mono);
    font-size: 10.5px;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--accent);
    background: color-mix(in srgb, var(--accent) 12%, transparent);
    padding: 2px 7px;
    border-radius: 5px;
  }
  .answered.svelte-72q6gd .q-hdr:where(.svelte-72q6gd) {
    color: var(--text3);
    background: var(--surface2);
  }
  .q-multi.svelte-72q6gd {
    font-size: 10.5px;
    color: var(--text3);
  }
  .q-text.svelte-72q6gd {
    font-size: 14px;
    line-height: 1.55;
    color: var(--text);
    font-weight: 520;
  }

  .opts.svelte-72q6gd {
    display: flex;
    flex-direction: column;
    gap: 6px;
    margin-top: 1px;
  }
  .opt.svelte-72q6gd {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    width: 100%;
    text-align: left;
    padding: 9px 11px;
    border: 1px solid var(--border2);
    border-radius: var(--r-ctl);
    background: var(--surface);
    color: var(--text);
    transition: border-color var(--t-fast) var(--ease), background var(--t-fast) var(--ease),
      transform var(--t-fast) var(--ease), opacity var(--t-fast) var(--ease);
  }
  @media (hover: hover) {
    .opt.svelte-72q6gd:not(:disabled):hover {
      border-color: color-mix(in srgb, var(--accent) 40%, var(--border2));
      background: var(--surface2);
    }
  }
  .opt.svelte-72q6gd:not(:disabled):active {
    transform: scale(0.99);
  }
  .opt.sel.svelte-72q6gd {
    border-color: var(--accent);
    background: color-mix(in srgb, var(--accent) 10%, var(--surface));
  }
  .opt.dim.svelte-72q6gd {
    opacity: 0.45;
  }
  .opt.svelte-72q6gd:disabled {
    cursor: default;
  }

  /* 方形选择标记：单选=实心方点，多选=打勾方框（正交语言） */
  .mark.svelte-72q6gd {
    width: 17px;
    height: 17px;
    flex: none;
    margin-top: 1px;
    border-radius: 5px;
    border: 1.4px solid var(--border2);
    display: grid;
    place-items: center;
    color: #fff;
    transition: background var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease);
  }
  .opt.sel.svelte-72q6gd .mark:where(.svelte-72q6gd) {
    background: var(--accent);
    border-color: var(--accent);
  }
  .mark.svelte-72q6gd:not(.multi) {
    border-radius: 5px;
  }

  .opt-body.svelte-72q6gd {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
  }
  .opt-label.svelte-72q6gd {
    font-size: 13.5px;
    font-weight: 560;
    line-height: 1.35;
  }
  .opt-desc.svelte-72q6gd {
    font-size: 12px;
    color: var(--text3);
    line-height: 1.45;
  }
  .opt.other.svelte-72q6gd .opt-label:where(.svelte-72q6gd) {
    color: var(--text2);
  }

  .other-input.svelte-72q6gd {
    width: 100%;
    padding: 9px 11px;
    border: 1px solid color-mix(in srgb, var(--accent) 40%, var(--border2));
    border-radius: var(--r-ctl);
    background: var(--surface);
    color: var(--text);
    font-size: 13.5px;
    font-family: inherit;
    outline: none;
    transition: border-color var(--t-fast) var(--ease);
  }
  .other-input.svelte-72q6gd:focus {
    border-color: var(--accent);
  }

  .custom-chip.svelte-72q6gd {
    align-self: flex-start;
    font-size: 12.5px;
    color: var(--text);
    background: color-mix(in srgb, var(--accent) 12%, var(--surface2));
    border: 1px solid color-mix(in srgb, var(--accent) 26%, transparent);
    padding: 4px 9px;
    border-radius: 7px;
  }

  .submit.svelte-72q6gd {
    align-self: flex-end;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 8px 16px;
    border-radius: var(--r-ctl);
    background: var(--accent);
    color: #fff;
    font-size: 13px;
    font-weight: 620;
    transition: opacity var(--t-fast) var(--ease), transform var(--t-fast) var(--ease);
  }
  .submit.svelte-72q6gd:disabled {
    opacity: 0.4;
  }
  .submit.svelte-72q6gd:not(:disabled):active {
    transform: scale(0.97);
  }

  .skipped.svelte-72q6gd {
    font-size: 12px;
    color: var(--text3);
    line-height: 1.5;
  }

  .permcard.svelte-hosxf5 {
    border: 1px solid var(--border);
    border-radius: var(--r-card, 12px);
    background: var(--surface);
    padding: 11px 13px;
    margin: 6px 0;
    font-size: 13.5px;
  }
  .permcard.live.svelte-hosxf5 { border-color: var(--accent, #7c8cff); }
  .permcard.denied.svelte-hosxf5 { opacity: 0.7; }
  .head.svelte-hosxf5 { display: flex; align-items: center; gap: 8px; }
  .glyph.svelte-hosxf5 { display: inline-flex; color: var(--text2); }
  .glyph.on.svelte-hosxf5 { color: var(--ok, #59b37a); }
  .title.svelte-hosxf5 { font-weight: 500; }
  .rule.svelte-hosxf5 {
    margin-inline-start: auto; font-size: 11.5px; color: var(--text2);
    font-family: var(--mono, ui-monospace, monospace); opacity: 0.8;
  }
  .body.svelte-hosxf5 { display: flex; align-items: baseline; gap: 8px; margin: 7px 0 2px; flex-wrap: wrap; }
  .tool.svelte-hosxf5 { font-weight: 500; }
  .subject.svelte-hosxf5 {
    font-family: var(--mono, ui-monospace, monospace); font-size: 12.5px;
    color: var(--text2); word-break: break-all; max-width: 100%;
  }
  .acts.svelte-hosxf5 { display: flex; align-items: center; gap: 8px; margin-top: 10px; }
  .sp.svelte-hosxf5 { flex: 1; }
  .acts.svelte-hosxf5 button:where(.svelte-hosxf5) {
    font-size: 13px; padding: 6px 12px; border-radius: 9px;
    border: 1px solid var(--border); color: var(--text);
  }
  .acts.svelte-hosxf5 .once:where(.svelte-hosxf5) { background: var(--text); color: var(--bg); border-color: var(--text); }
  .acts.svelte-hosxf5 .deny:where(.svelte-hosxf5) { color: var(--err, #d98a6a); }
  .acts.svelte-hosxf5 button:where(.svelte-hosxf5):active { transform: scale(0.98); }

  .plancard.svelte-pcoc8p {
    border: 1px solid var(--border);
    border-radius: var(--r-card, 12px);
    background: var(--surface);
    padding: 11px 13px;
    margin: 6px 0;
  }
  .plancard.live.svelte-pcoc8p { border-color: var(--accent, #7c8cff); }
  .plancard.approved.svelte-pcoc8p { opacity: 0.82; }
  .head.svelte-pcoc8p { display: flex; align-items: center; gap: 8px; font-size: 13.5px; }
  .glyph.svelte-pcoc8p { display: inline-flex; color: var(--text2); }
  .title.svelte-pcoc8p { font-weight: 500; }
  .plan.svelte-pcoc8p { margin: 8px 0 2px; font-size: 14px; line-height: 1.62; }
  .plan.svelte-pcoc8p p { margin: 5px 0; }
  .plan.svelte-pcoc8p ul, .plan.svelte-pcoc8p ol { margin: 5px 0; padding-inline-start: 20px; }
  .plan.svelte-pcoc8p code { font-family: var(--mono, ui-monospace, monospace); font-size: 12.8px; }
  .note.svelte-pcoc8p {
    width: 100%; margin-top: 8px; padding: 7px 10px; font-size: 13px;
    border: 1px solid var(--border); border-radius: 9px; background: var(--bg); color: var(--text);
  }
  .acts.svelte-pcoc8p { display: flex; align-items: center; gap: 8px; margin-top: 10px; }
  .sp.svelte-pcoc8p { flex: 1; }
  .acts.svelte-pcoc8p button:where(.svelte-pcoc8p) {
    font-size: 13px; padding: 6px 13px; border-radius: 9px;
    border: 1px solid var(--border); color: var(--text);
  }
  .acts.svelte-pcoc8p .go:where(.svelte-pcoc8p) { background: var(--text); color: var(--bg); border-color: var(--text); }
  .acts.svelte-pcoc8p button:where(.svelte-pcoc8p):active { transform: scale(0.98); }

  .feedwrap.svelte-h4hka4 {
    flex: 1;
    overflow-y: auto;
    overscroll-behavior: contain;
  }
  .feed.svelte-h4hka4 {
    max-width: 780px;
    margin: 0 auto;
    padding: 22px 18px 30px;
    display: flex;
    flex-direction: column;
    gap: 14px;
  }
  @media (max-width: 600px) {
    .feed.svelte-h4hka4 {
      padding: 16px 14px 24px;
    }
  }
  .feed-item.svelte-h4hka4 {
    position: relative;
  }
  .feed-item.is-tool.svelte-h4hka4 {
    margin: -6px 0;
  }
  /* 回合节奏：新一轮用户消息前留出更大的段落间隙（首条除外） */
  .feed-item.is-user.svelte-h4hka4:not(:first-child) {
    margin-top: 12px;
  }

  /* 用户消息：右对齐悬浮平面（右上角小切角作方向暗示） */
  .user.svelte-h4hka4 {
    display: flex;
    justify-content: flex-end;
    animation: rise-in 0.3s var(--ease) both;
    padding: 2px 0;
  }
  .bubble.svelte-h4hka4 {
    background: var(--user-bubble);
    color: var(--on-user-bubble);
    border: 1px solid var(--border);
    padding: 9px 14px;
    border-radius: var(--r-bubble);
    border-start-end-radius: 4px;
    max-width: 84%;
    overflow-wrap: break-word;
    line-height: 1.6;
    font-size: 14.5px;
  }
  /* 插话气泡：左侧竖条 + 小标签，与「新一轮任务」区分开 */
  .bubble.steer.svelte-h4hka4 { border-inline-start: 2px solid var(--accent, #7c8cff); }
  .steer-tag.svelte-h4hka4 {
    font-size: 11px; letter-spacing: .02em; opacity: .62;
    margin-bottom: 3px;
  }
  /* pre-wrap 只许挂在正文节点上——挂容器会把模板缩进的空白
     文本节点渲染成幽灵空行（气泡凭空厚一行的事故） */
  .user-text.svelte-h4hka4 {
    white-space: pre-wrap;
  }
  .user-text.svelte-h4hka4 + .user-attachments:where(.svelte-h4hka4) {
    margin-top: 8px;
  }
  .user-attachments.svelte-h4hka4 {
    display: flex;
    flex-wrap: wrap;
    gap: 5px;
  }
  .user-attachment.svelte-h4hka4 {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    max-width: 220px;
    padding: 4px 7px;
    border-radius: 7px;
    background: color-mix(in srgb, currentColor 8%, transparent);
    font-family: var(--font-mono);
    font-size: 11px;
  }
  .user-attachment.svelte-h4hka4 span:where(.svelte-h4hka4) {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  .assistant.svelte-h4hka4 {
    font-size: 15px;
    line-height: 1.75;
    color: var(--text);
    padding: 1px 0;
    /* 撑满列宽：flex-start 容器会让本项收缩到 min-content，
       markdown 表格（thead nowrap）的 min-content 能顶破视口造成整页横滚 */
    align-self: stretch;
    min-width: 0;
  }
  .assistant-turn.svelte-h4hka4 {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 11px;
  }
  .artifact-list.svelte-h4hka4 {
    width: min(350px, 100%);
    display: flex;
    flex-direction: column;
    gap: 7px;
    animation: rise-in 0.28s var(--ease) both;
  }
  .artifact-card.svelte-h4hka4 {
    width: 100%;
    min-height: 68px;
    display: flex;
    align-items: center;
    gap: 11px;
    padding: 8px;
    border: 1px solid var(--border2);
    border-radius: 15px;
    background: color-mix(in srgb, var(--surface) 94%, transparent);
    color: var(--text);
    text-align: left;
    box-shadow: var(--shadow-sm);
    transition: transform var(--t-fast) var(--ease), background var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease);
  }
  @media (hover: hover) {
    .artifact-card.svelte-h4hka4:hover {
      background: var(--surface2);
      border-color: color-mix(in srgb, var(--accent) 28%, var(--border2));
      transform: translateY(-1px);
    }
  }
  .artifact-card.svelte-h4hka4:active { transform: scale(0.985); }
  .artifact-glyph.svelte-h4hka4 {
    width: 50px;
    height: 50px;
    flex: none;
    display: grid;
    place-items: center;
    border-radius: 12px;
    background: color-mix(in srgb, var(--accent) 84%, #3b82f6);
    color: white;
  }
  .artifact-glyph.is-pdf.svelte-h4hka4 { background: #e34b4b; }
  .artifact-glyph.is-office.svelte-h4hka4 { background: #16a46a; }
  .artifact-copy.svelte-h4hka4 {
    min-width: 0;
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 3px;
  }
  .artifact-copy.svelte-h4hka4 strong:where(.svelte-h4hka4) {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 14px;
    font-weight: 650;
  }
  .artifact-copy.svelte-h4hka4 small:where(.svelte-h4hka4) {
    color: var(--text3);
    font-size: 11.5px;
  }
  .artifact-open.svelte-h4hka4 {
    flex: none;
    display: inline-flex;
    color: var(--text3);
    padding-right: 4px;
  }

  @media (max-width: 600px) {
    .artifact-list.svelte-h4hka4 { width: min(310px, 100%); }
    .artifact-card.svelte-h4hka4 { min-height: 62px; border-radius: 14px; }
    .artifact-glyph.svelte-h4hka4 { width: 44px; height: 44px; border-radius: 11px; }
  }

  .act-row.svelte-h4hka4 {
    display: flex;
    gap: 4px;
    margin-top: 6px;
    animation: rise-in 0.25s var(--ease) both;
  }
  .act.svelte-h4hka4 {
    width: 28px;
    height: 28px;
    border-radius: 7px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--text3);
    transition: all var(--t-fast) var(--ease);
  }
  @media (hover: hover) {
    .act.svelte-h4hka4:hover {
      background: var(--surface2);
      color: var(--text);
    }
  }
  .act.svelte-h4hka4:active {
    transform: scale(0.9);
  }

  .errcard.svelte-h4hka4 {
    display: flex;
    gap: 9px;
    align-items: flex-start;
    background: color-mix(in srgb, var(--err) 8%, transparent);
    border: 1px solid color-mix(in srgb, var(--err) 26%, transparent);
    color: var(--err);
    border-radius: var(--r-card);
    padding: 11px 14px;
    font-size: 13.5px;
    line-height: 1.5;
    animation: rise-in 0.3s var(--ease) both;
  }
  .errcard.svelte-h4hka4 svg {
    flex: none;
    margin-top: 2px;
  }

  /* notice：mono 小字，两侧 hairline 轨道线 */
  .notice.svelte-h4hka4 {
    display: flex;
    align-items: center;
    gap: 12px;
    font-family: var(--font-mono);
    font-size: 10.5px;
    letter-spacing: 0.1em;
    color: var(--text3);
    animation: pop-in 0.3s var(--ease) both;
    padding: 2px 0;
  }
  .nline.svelte-h4hka4 {
    flex: 1;
    height: 1px;
    background: var(--border);
  }

  .shot.svelte-h4hka4 {
    border-radius: var(--r-card);
    overflow: hidden;
    background: var(--surface);
    box-shadow: var(--shadow-sm);
    border: 1px solid var(--border);
    animation: rise-in 0.3s var(--ease) both;
  }
  .shot-img.svelte-h4hka4 {
    display: block;
    width: 100%;
    padding: 0;
  }
  .shot-img.svelte-h4hka4 img:where(.svelte-h4hka4) {
    display: block;
    width: 100%;
    max-height: 400px;
    object-fit: contain;
    background: var(--code-bg);
  }
  .shot-meta.svelte-h4hka4 {
    padding: 9px 13px;
    font-size: 12px;
    border-top: 1px solid var(--border);
  }
  .shot-url.svelte-h4hka4 {
    color: var(--text3);
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-family: var(--font-mono);
    font-size: 11px;
    word-break: break-all;
  }
  .shot-verdict.svelte-h4hka4 {
    margin-top: 7px;
    color: var(--text2);
    font-size: 13px;
    white-space: pre-wrap;
    line-height: 1.55;
  }

  .working.svelte-h4hka4 {
    display: flex;
    align-items: center;
    gap: 10px;
    color: var(--text3);
    font-size: 13px;
    padding: 2px 0 6px;
    animation: rise-in 0.25s var(--ease) both;
  }

  .jump.svelte-h4hka4 {
    position: absolute;
    right: 18px;
    bottom: 132px;
    width: 38px;
    height: 38px;
    border-radius: var(--r-ctl);
    background: var(--surface);
    border: 1px solid var(--border2);
    color: var(--text2);
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: var(--shadow-pop);
    animation: pop-in 0.25s var(--ease) both;
    z-index: 5;
  }
  .jump.svelte-h4hka4:active {
    transform: scale(0.92);
  }

  .pop.svelte-d0jqn {
    position: fixed;
    z-index: 70;
    background: var(--surface);
    border: 1px solid var(--border2);
    border-radius: var(--r-card);
    box-shadow: var(--shadow-pop, 0 12px 40px rgba(0, 0, 0, 0.16));
    padding: 5px;
    animation: plane-in 0.18s var(--ease) both;
    max-height: min(420px, 72vh);
    overflow-y: auto;
  }

  .sec.svelte-1ivx7xa {
    font-family: var(--font-mono);
    font-size: 9.5px;
    font-weight: 500;
    letter-spacing: 0.16em;
    color: var(--text3);
    padding: 8px 11px 5px;
  }
  .sec.top.svelte-1ivx7xa {
    margin-top: 5px;
    border-top: 1px solid var(--border);
  }
  .opt.svelte-1ivx7xa {
    display: flex;
    align-items: center;
    gap: 10px;
    width: 100%;
    text-align: left;
    padding: 8px 11px;
    border-radius: var(--r-item);
    color: var(--text);
    transition: background var(--t-fast) var(--ease);
  }
  @media (hover: hover) {
    .opt.svelte-1ivx7xa:hover {
      background: var(--surface2);
    }
  }
  .opt.svelte-1ivx7xa:active {
    background: var(--surface2);
  }
  .opt.sel.svelte-1ivx7xa {
    color: var(--accent);
  }
  /* 左侧维度刻度：选中亮 accent 竖杠 */
  .tick.svelte-1ivx7xa {
    width: 2px;
    height: 16px;
    border-radius: 1px;
    background: var(--border);
    flex: none;
    transition: background var(--t-fast) var(--ease);
  }
  .tick.on.svelte-1ivx7xa {
    background: var(--accent);
  }
  .opt-main.svelte-1ivx7xa {
    display: flex;
    flex-direction: column;
    gap: 1px;
    min-width: 0;
    flex: 1;
  }
  .opt-label.svelte-1ivx7xa {
    font-size: 13.5px;
    font-weight: 560;
  }
  .opt-note.svelte-1ivx7xa {
    font-size: 11.5px;
    color: var(--text3);
  }

  .efforts.svelte-1ivx7xa {
    display: flex;
    gap: 4px;
    padding: 4px 8px 8px;
  }
  .eff.svelte-1ivx7xa {
    flex: 1;
    padding: 7px 4px;
    font-size: 11.5px;
    font-family: var(--font-mono);
    color: var(--text2);
    border-radius: var(--r-item);
    border: 1px solid var(--border);
    transition: all var(--t-fast) var(--ease);
    white-space: nowrap;
  }
  .eff.sel.svelte-1ivx7xa {
    background: var(--accent-soft);
    border-color: color-mix(in srgb, var(--accent) 50%, transparent);
    color: var(--accent);
    font-weight: 600;
  }
  .eff.svelte-1ivx7xa:active {
    transform: scale(0.95);
  }

  .sec.svelte-13kpuvc {
    font-family: var(--font-mono);
    font-size: 9.5px;
    font-weight: 500;
    letter-spacing: 0.16em;
    color: var(--text3);
    padding: 8px 11px 5px;
  }
  .sec.top.svelte-13kpuvc {
    margin-top: 5px;
    border-top: 1px solid var(--border);
  }
  .opt.svelte-13kpuvc {
    display: flex;
    align-items: center;
    gap: 9px;
    width: 100%;
    text-align: left;
    padding: 8px 11px;
    border-radius: var(--r-item);
    color: var(--text);
    transition: background var(--t-fast) var(--ease);
  }
  @media (hover: hover) {
    .opt.svelte-13kpuvc:hover {
      background: var(--surface2);
    }
  }
  .opt.svelte-13kpuvc:active {
    background: var(--surface2);
  }
  .opt.sel.svelte-13kpuvc {
    color: var(--accent);
  }
  /* 与模型菜单同构的左侧刻度 */
  .tick.svelte-13kpuvc {
    width: 2px;
    height: 26px;
    border-radius: 1px;
    background: var(--border);
    flex: none;
    transition: background var(--t-fast) var(--ease);
  }
  .tick.on.svelte-13kpuvc {
    background: var(--accent);
  }
  .ico.svelte-13kpuvc {
    display: inline-flex;
    color: var(--text3);
    flex: none;
  }
  .opt.sel.svelte-13kpuvc .ico:where(.svelte-13kpuvc) {
    color: var(--accent);
  }
  .opt-main.svelte-13kpuvc {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
    flex: 1;
  }
  .opt-label.svelte-13kpuvc {
    font-size: 13.5px;
    font-weight: 560;
  }
  .opt-note.svelte-13kpuvc {
    font-size: 11.5px;
    line-height: 1.4;
    color: var(--text3);
  }
  .live.svelte-13kpuvc {
    margin: 4px 11px 9px;
    padding-top: 7px;
    border-top: 1px solid var(--border);
    font-size: 11px;
    line-height: 1.45;
    color: var(--text3);
  }

  .lchip.svelte-1opc4a5 {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 12.5px;
    font-weight: 540;
    color: var(--text2);
    height: 32px;
    padding: 0 9px;
    border-radius: var(--r-ctl);
    flex: none;
    white-space: nowrap;
    transition: background var(--t-fast) var(--ease), color var(--t-fast) var(--ease),
      transform var(--t-fast) var(--ease);
  }
  @media (hover: hover) {
    .lchip.svelte-1opc4a5:hover {
      color: var(--text);
      background: var(--surface2);
    }
  }
  .lchip.svelte-1opc4a5:active {
    transform: scale(0.96);
  }
  .lchip.svelte-1opc4a5 svg {
    color: var(--text3);
    opacity: 0.8;
  }
  .ltext.svelte-1opc4a5 {
    font-size: 12px;
  }

  .dot.svelte-1opc4a5 {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: var(--text3);
    flex: none;
  }
  .dot.on.svelte-1opc4a5 {
    background: var(--ok);
    box-shadow: 0 0 6px color-mix(in srgb, var(--ok) 65%, transparent);
  }
  .dot.loading.svelte-1opc4a5 {
    background: var(--warn);
    animation: svelte-1opc4a5-dot-pulse 1.1s var(--ease) infinite;
  }
  @keyframes svelte-1opc4a5-dot-pulse {
    50% {
      opacity: 0.35;
    }
  }

  .sec.svelte-14ybbv2 {
    font-family: var(--font-mono);
    font-size: 9.5px;
    font-weight: 500;
    letter-spacing: 0.16em;
    color: var(--text3);
    padding: 8px 11px 5px;
  }
  .panel.svelte-14ybbv2 {
    padding: 2px 11px 10px;
    display: flex;
    flex-direction: column;
    gap: 7px;
  }
  .row.svelte-14ybbv2 {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 14px;
    font-size: 12.5px;
  }
  .k.svelte-14ybbv2 {
    color: var(--text3);
  }
  .v.svelte-14ybbv2 {
    color: var(--text);
    font-weight: 540;
  }
  .v.ok.svelte-14ybbv2 {
    color: var(--ok);
  }
  .v.warn.svelte-14ybbv2 {
    color: var(--warn);
  }
  .mono.svelte-14ybbv2 {
    font-family: var(--font-mono);
    font-size: 11.5px;
  }
  .errline.svelte-14ybbv2 {
    font-size: 11.5px;
    color: var(--err);
    word-break: break-all;
  }
  .hint.svelte-14ybbv2 {
    font-size: 11px;
    color: var(--text3);
    line-height: 1.5;
  }
  .act.svelte-14ybbv2 {
    margin-top: 2px;
    padding: 8px 10px;
    border-radius: var(--r-item);
    border: 1px solid color-mix(in srgb, var(--accent) 45%, transparent);
    background: var(--accent-soft);
    color: var(--accent);
    font-size: 12.5px;
    font-weight: 600;
    transition: opacity var(--t-fast) var(--ease), transform var(--t-fast) var(--ease);
  }
  .act.stop.svelte-14ybbv2 {
    border-color: color-mix(in srgb, var(--err) 45%, transparent);
    background: color-mix(in srgb, var(--err) 12%, transparent);
    color: var(--err);
  }
  .act.svelte-14ybbv2:disabled {
    opacity: 0.45;
  }
  .act.svelte-14ybbv2:not(:disabled):active {
    transform: scale(0.97);
  }

  .zone.svelte-13p0v7u {
    padding: 0 14px calc(12px + var(--sab));
    position: relative;
  }

  .chips.svelte-13p0v7u {
    max-width: 780px;
    margin: 0 auto 8px;
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
  }
  .chip.svelte-13p0v7u {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: 7px;
    padding: 4px 5px 4px 10px;
    font-size: 12px;
    font-family: var(--font-mono);
    color: var(--text2);
    max-width: 240px;
    animation: pop-in 0.22s var(--ease) both;
  }
  .chip-name.svelte-13p0v7u {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .chip-x.svelte-13p0v7u {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 18px;
    height: 18px;
    border-radius: 5px;
    color: var(--text3);
  }
  .chip-x.svelte-13p0v7u:hover {
    color: var(--err);
  }
  .chip.up.svelte-13p0v7u {
    color: var(--text3);
    border-style: dashed;
  }
  .ring.svelte-13p0v7u {
    width: 11px;
    height: 11px;
    border-radius: 50%;
    border: 1.5px solid var(--border2);
    border-top-color: var(--accent);
    animation: svelte-13p0v7u-ring-spin 0.8s linear infinite;
    flex: none;
  }
  @keyframes svelte-13p0v7u-ring-spin {
    to {
      transform: rotate(360deg);
    }
  }

  /* ── 拖拽悬停遮罩（pointer-events:none，drop 由 window 监听接住） ── */
  .dropzone.svelte-13p0v7u {
    position: fixed;
    inset: 0;
    z-index: 260;
    pointer-events: none;
    display: flex;
    align-items: center;
    justify-content: center;
    background: color-mix(in srgb, var(--bg) 55%, transparent);
    backdrop-filter: blur(2px);
  }
  .drop-card.svelte-13p0v7u {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    padding: 26px 36px;
    border: 1.5px dashed color-mix(in srgb, var(--accent) 60%, transparent);
    border-radius: var(--r-card);
    background: var(--surface);
    color: var(--accent);
    box-shadow: var(--shadow-pop);
    animation: pop-in 0.22s var(--ease) both;
  }
  .drop-t.svelte-13p0v7u {
    font-size: 14.5px;
    font-weight: 620;
    color: var(--text);
  }
  .drop-s.svelte-13p0v7u {
    font-size: 11.5px;
    color: var(--text3);
  }

  textarea.svelte-13p0v7u {
    display: block;
    width: 100%;
    resize: none;
    background: none;
    border: 0;
    outline: 0;
    font-size: 15px;
    line-height: 1.55;
    color: var(--text);
    max-height: 38vh;
    field-sizing: content;
    padding: 2px 4px 8px;
    min-height: 42px;
  }
  textarea.svelte-13p0v7u::placeholder {
    color: var(--text3);
  }

  /* ── 悬浮平面 ── */
  .box.svelte-13p0v7u {
    position: relative;
    max-width: 780px;
    margin: 0 auto;
    background: var(--surface);
    border: 1px solid color-mix(in srgb, var(--border2) 85%, transparent);
    border-radius: 18px;
    padding: 12px 12px 8px;
    box-shadow: var(--shadow-sm);
    transition: border-color var(--t-med) var(--ease), box-shadow var(--t-med) var(--ease),
      transform var(--t-med) var(--ease);
  }
  .box.svelte-13p0v7u:focus-within {
    border-color: color-mix(in srgb, var(--accent) 38%, var(--border2));
    box-shadow: var(--shadow-sm), 0 0 0 3px color-mix(in srgb, var(--accent) 7%, transparent);
    transform: translateY(-1px);
  }
  .box.svelte-13p0v7u:focus-within > .hxframe {
    opacity: 1;
    transform: scale(1);
  }
  .box.running.svelte-13p0v7u {
    border-color: color-mix(in srgb, var(--accent) 30%, var(--border));
  }

  .bar.svelte-13p0v7u {
    display: flex;
    align-items: center;
    gap: 7px;
    min-height: 34px;
  }
  .sp.svelte-13p0v7u {
    flex: 1;
  }

  /* 底行控件统一「无框」：静态只有文字和图标，hover / 按下才浮出底色。
     此前每颗都描一圈 hairline，底行像一排小盒子，跟上面素净的输入区打架。 */
  .iconb.svelte-13p0v7u {
    width: 32px;
    height: 32px;
    border-radius: var(--r-ctl);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--text2);
    flex: none;
    transition: background var(--t-fast) var(--ease), transform var(--t-fast) var(--ease),
      color var(--t-fast) var(--ease);
  }
  @media (hover: hover) {
    .iconb.svelte-13p0v7u:hover {
      background: var(--surface2);
      color: var(--text);
    }
  }
  .iconb.svelte-13p0v7u:active {
    transform: scale(0.88);
  }

  /* 模型·思考 合并胶囊 */
  .mchip.svelte-13p0v7u {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 12.5px;
    font-weight: 540;
    letter-spacing: -0.003em;
    color: var(--text2);
    height: 32px;
    padding: 0 8px 0 10px;
    border-radius: var(--r-ctl);
    flex: 0 1 auto;
    min-width: 0;
    max-width: 52vw;
    white-space: nowrap;
    transition: background var(--t-fast) var(--ease), color var(--t-fast) var(--ease),
      transform var(--t-fast) var(--ease);
  }
  .mlabel.svelte-13p0v7u {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    min-width: 0;
  }
  @media (hover: hover) {
    .mchip.svelte-13p0v7u:hover {
      color: var(--text);
      background: var(--surface2);
    }
  }
  .mchip.svelte-13p0v7u:active {
    transform: scale(0.96);
  }
  .mchip.svelte-13p0v7u .eff:where(.svelte-13p0v7u) {
    color: var(--accent);
    font-family: var(--font-mono);
    font-size: 11px;
    font-weight: 500;
  }
  .mchip.svelte-13p0v7u svg {
    color: var(--text3);
    opacity: 0.8;
  }

  /* 运行档位 / 访问范围胶囊：与模型胶囊同族，但恒定宽度不参与收缩（状态优先于模型名）。
     非 auto 档、或范围放到整机，着 accent —— 那是「闸拉着 / 闸拉开」的状态，不能低调。 */
  .pchip.svelte-13p0v7u {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    font-size: 12.5px;
    font-weight: 540;
    color: var(--text2);
    height: 32px;
    padding: 0 10px 0 9px;
    border-radius: var(--r-ctl);
    flex: none;
    white-space: nowrap;
    transition: background var(--t-fast) var(--ease), color var(--t-fast) var(--ease),
      transform var(--t-fast) var(--ease);
  }
  .pchip.svelte-13p0v7u svg {
    color: var(--text3);
  }
  @media (hover: hover) {
    .pchip.svelte-13p0v7u:hover {
      color: var(--text);
      background: var(--surface2);
    }
  }
  .pchip.svelte-13p0v7u:active {
    transform: scale(0.96);
  }
  .pchip.alt.svelte-13p0v7u {
    color: var(--accent);
    background: var(--accent-soft);
    font-weight: 600;
  }
  .pchip.alt.svelte-13p0v7u svg {
    color: var(--accent);
  }
  .pchip.svelte-13p0v7u .scope:where(.svelte-13p0v7u) {
    font-weight: 500;
    opacity: 0.85;
  }

  /* 发送：单色反相方块；运行中变形为停止（描边 + 脉冲外圈） */
  .sendb.svelte-13p0v7u {
    width: 34px;
    height: 34px;
    border-radius: 10px;
    background: var(--primary);
    color: var(--on-primary);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: none;
    transition: transform var(--t-fast) var(--ease), opacity var(--t-fast) var(--ease),
      background-color var(--t-med) var(--ease), color var(--t-med) var(--ease),
      box-shadow var(--t-med) var(--ease), filter var(--t-med) var(--ease);
  }
  .sendb.svelte-13p0v7u:disabled {
    opacity: 0.26;
  }
  /* 鼠标反馈（手机端没有，桌面上一个没反馈的主按钮很掉价） */
  @media (hover: hover) {
    .sendb.svelte-13p0v7u:not(:disabled):hover {
      box-shadow: 0 2px 10px color-mix(in srgb, var(--primary) 34%, transparent);
      filter: brightness(1.08);
    }
    .sendb.stop.svelte-13p0v7u:not(:disabled):hover {
      filter: none;
      background: var(--accent-soft);
    }
  }
  .sendb.svelte-13p0v7u:not(:disabled):active {
    transform: scale(0.88);
  }
  .sendb.svelte-13p0v7u svg[stroke-width="0"] {
    fill: currentColor;
  }
  .sendb.stop.svelte-13p0v7u {
    background: transparent;
    color: var(--accent);
    box-shadow: inset 0 0 0 1.5px color-mix(in srgb, var(--accent) 55%, transparent);
    animation: svelte-13p0v7u-stop-pulse 1.8s var(--ease) infinite;
  }
  @keyframes svelte-13p0v7u-stop-pulse {
    50% {
      box-shadow: inset 0 0 0 1.5px color-mix(in srgb, var(--accent) 55%, transparent),
        0 0 0 5px color-mix(in srgb, var(--accent) 9%, transparent);
    }
  }

  /* 状态行（App .striprow）里的弹性子项：宽度由行容器分配，不再自居中 */
  .strip.svelte-ns4daq {
    flex: 1;
    min-width: 0;
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: var(--r-card);
    overflow: hidden;
    box-shadow: var(--shadow-sm);
    animation: rise-in 0.3s var(--ease) both;
  }
  .head.svelte-ns4daq {
    display: flex;
    align-items: center;
    gap: 9px;
    width: 100%;
    text-align: left;
    padding: 9px 13px;
    font-size: 12.5px;
    color: var(--text2);
    min-height: 36px;
  }
  .ring.svelte-ns4daq {
    flex: none;
  }
  .label.svelte-ns4daq {
    flex: 1;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-weight: 530;
  }
  .label.svelte-ns4daq .mono:where(.svelte-ns4daq) {
    font-family: var(--font-mono);
    font-size: 11px;
  }
  .chev.svelte-ns4daq {
    display: inline-flex;
    color: var(--text3);
    transition: transform var(--t-fast) var(--ease);
    flex: none;
  }
  .chev.rot.svelte-ns4daq {
    transform: rotate(180deg);
  }

  .list.svelte-ns4daq {
    list-style: none;
    margin: 0;
    padding: 2px 13px 10px 13px;
    display: flex;
    flex-direction: column;
    gap: 6px;
    max-height: 200px;
    overflow-y: auto;
  }
  .todo.svelte-ns4daq {
    display: flex;
    align-items: flex-start;
    gap: 9px;
    font-size: 13px;
    color: var(--text2);
    animation: rise-in 0.22s var(--ease) both;
  }
  .tick.svelte-ns4daq {
    width: 16px;
    height: 16px;
    border-radius: 5px;
    border: 1.5px solid var(--border);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: none;
    margin-top: 2px;
    transition: all var(--t-med) var(--ease);
  }
  .todo.in_progress.svelte-ns4daq .tick:where(.svelte-ns4daq) {
    border-color: var(--accent);
  }
  .todo.in_progress.svelte-ns4daq .txt:where(.svelte-ns4daq) {
    color: var(--text);
    font-weight: 550;
  }
  .dot.svelte-ns4daq {
    width: 6px;
    height: 6px;
    border-radius: 2px;
    background: var(--accent);
    animation: pulse-soft 1.4s ease infinite;
  }
  .todo.completed.svelte-ns4daq .tick:where(.svelte-ns4daq) {
    background: var(--ok);
    border-color: var(--ok);
    color: #fff;
  }
  .todo.completed.svelte-ns4daq .txt:where(.svelte-ns4daq) {
    color: var(--text3);
    text-decoration: line-through;
    text-decoration-color: color-mix(in srgb, var(--text3) 60%, transparent);
  }
  .txt.svelte-ns4daq {
    line-height: 1.45;
  }

  .pv-pill.svelte-vg2emd {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    flex: none;
    font-size: 12.5px;
    color: var(--text);
    background: var(--surface);
    border: 1px solid var(--border2);
    border-radius: var(--r-ctl);
    padding: 8px 13px;
    min-height: 36px;
    box-shadow: var(--shadow-sm);
    animation: pop-in 0.3s var(--ease) both;
    white-space: nowrap;
    transition: background var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease);
  }
  @media (hover: hover) {
    .pv-pill.svelte-vg2emd:hover {
      background: var(--surface2);
    }
  }
  .pv-pill.svelte-vg2emd:active {
    transform: scale(0.96);
  }
  .pv-pill.svelte-vg2emd svg:last-child {
    color: var(--text3);
  }
  .live-dot.svelte-vg2emd {
    width: 7px;
    height: 7px;
    border-radius: 2px;
    background: var(--ok);
    animation: pulse-soft 1.6s ease infinite;
  }

  /* 首钮中心落在统一顶栏带的 22px 基线上（36px 钮 → 上留 4px），
     与顶栏、工作区 rail、面板头同一条线。 */
  .rail-mini.svelte-1wvyomw {
    width: 56px; height: 100%; display: flex; flex-direction: column; align-items: center; gap: 2px;
    padding: calc((var(--hx-band, 44px) - 36px) / 2 + var(--sat)) 0 calc(14px + var(--sab));
    border-right: 1px solid var(--border);
  }
  .mbtn.svelte-1wvyomw, .hbtn.svelte-1wvyomw, .project-add.svelte-1wvyomw, .project-new.svelte-1wvyomw, .project-more.svelte-1wvyomw {
    display: inline-flex; align-items: center; justify-content: center; border-radius: var(--r-ctl);
    color: var(--text3);
    transition: background var(--t-fast) var(--ease), color var(--t-fast) var(--ease),
      transform var(--t-fast) var(--ease), opacity var(--t-fast) var(--ease);
  }
  .mbtn.svelte-1wvyomw { width: 36px; height: 36px; color: var(--text2); }
  .mbtn.svelte-1wvyomw:active, .hbtn.svelte-1wvyomw:active, .project-add.svelte-1wvyomw:active, .project-new.svelte-1wvyomw:active, .project-more.svelte-1wvyomw:active { transform: scale(0.9); }
  .mbtn.svelte-1wvyomw:disabled, .project-add.svelte-1wvyomw:disabled, .project-new.svelte-1wvyomw:disabled { opacity: 0.35; }
  .msp.svelte-1wvyomw { flex: 1; }

  .panel.svelte-1wvyomw { position: relative; display: flex; flex-direction: column; height: 100%; width: 100%; background: var(--bg); overflow: hidden; }
  /* 定宽（= .rail 展开宽）而不是 100%：收起/展开时外层 .rail 宽度在动画，
     百分比宽会让整块面板每帧重排（文字反复折行），定宽则是被裁切着滑出来。 */
  .panel.docked.svelte-1wvyomw {
    width: 288px; border-right: 1px solid var(--border);
    background: color-mix(in srgb, var(--surface) 40%, transparent);
  }
  .head.svelte-1wvyomw { display: flex; align-items: center; justify-content: space-between; padding: calc(13px + var(--sat)) 10px 8px 16px; }
  /* 桌面展开态：头部即顶栏带，标题与折叠钮落在 22px 基线上 */
  .panel.docked.svelte-1wvyomw .head:where(.svelte-1wvyomw) {
    height: calc(var(--hx-band, 44px) + var(--sat));
    padding: var(--sat) 10px 0 16px;
  }
  .brand.svelte-1wvyomw { display: inline-flex; align-items: center; gap: 8px; min-width: 0; color: var(--text2); }
  .bmark.svelte-1wvyomw { display: inline-flex; }
  .brand-name.svelte-1wvyomw { font-size: 11px; font-weight: 640; letter-spacing: 0.2em; color: var(--text2); }
  .hbtn.svelte-1wvyomw { width: 32px; height: 32px; }

  /* 返回主页：抽屉顶部第一条（仿 Gemini 页），与 foot 同语言 */
  .home.svelte-1wvyomw {
    display: flex; align-items: center; gap: 9px; margin: 0 10px 4px;
    padding: 7px 10px; border-radius: var(--r-item); font-size: 13px; color: var(--text2);
    transition: background var(--t-fast) var(--ease), color var(--t-fast) var(--ease);
  }
  .home.svelte-1wvyomw:active { transform: scale(0.98); }
  .home.svelte-1wvyomw svg { color: var(--text3); flex: none; }

  /* 搜索：无描边的浅底槽，聚焦只亮一圈内描边 */
  .search.svelte-1wvyomw {
    display: flex; align-items: center; gap: 8px; margin: 2px 10px 10px; height: 34px; padding: 0 11px;
    border-radius: 10px; background: var(--surface2); color: var(--text3);
    transition: box-shadow var(--t-fast) var(--ease);
  }
  .search.svelte-1wvyomw:focus-within { box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent) 45%, transparent); }
  .search.svelte-1wvyomw input:where(.svelte-1wvyomw) { flex: 1; min-width: 0; background: none; border: 0; outline: 0; font-size: 13px; color: var(--text); }
  .search.svelte-1wvyomw input:where(.svelte-1wvyomw)::placeholder { color: var(--text3); }
  .clr.svelte-1wvyomw { display: inline-flex; align-items: center; justify-content: center; width: 18px; height: 18px; border-radius: 5px; color: var(--text3); }

  .project-tools.svelte-1wvyomw {
    position: relative; display: flex; align-items: center; justify-content: space-between;
    padding: 2px 8px 2px 16px; color: var(--text3); font-size: 11px; font-weight: 600; letter-spacing: 0.06em;
  }
  .project-add.svelte-1wvyomw { width: 28px; height: 28px; }

  .list.svelte-1wvyomw { flex: 1; overflow-y: auto; padding: 0 8px 8px; display: flex; flex-direction: column; gap: 2px; }
  .hint.svelte-1wvyomw { color: var(--text3); font-size: 12.5px; padding: 14px 8px; line-height: 1.6; }
  .project.svelte-1wvyomw { flex: none; min-width: 0; }
  .project-row.svelte-1wvyomw {
    display: flex; align-items: center; min-width: 0; height: 34px; border-radius: var(--r-item);
    transition: background var(--t-fast) var(--ease);
  }
  .project-row.missing.svelte-1wvyomw { opacity: 0.58; }
  .project-main.svelte-1wvyomw { flex: 1; min-width: 0; display: flex; align-items: center; gap: 8px; height: 100%; padding: 0 2px 0 8px; text-align: left; }
  .project-folder.svelte-1wvyomw { display: inline-flex; color: var(--text3); flex: none; transition: color var(--t-fast) var(--ease); }
  /* 当前项目：只让文件夹图标着 accent，不再整块反白 */
  .project.active.svelte-1wvyomw .project-folder:where(.svelte-1wvyomw) { color: var(--accent); }
  .project-name.svelte-1wvyomw { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 13.5px; font-weight: 560; color: var(--text); }
  .project.active.svelte-1wvyomw .project-name:where(.svelte-1wvyomw) { font-weight: 620; }
  .project-count.svelte-1wvyomw { color: var(--text3); font: 10.5px var(--font-mono); flex: none; }
  .project-chevron.svelte-1wvyomw { display: inline-flex; color: var(--text3); opacity: 0.7; transition: transform 0.2s var(--ease), opacity var(--t-fast) var(--ease); }
  .project-chevron.closed.svelte-1wvyomw { transform: rotate(-90deg); }
  .project-new.svelte-1wvyomw, .project-more.svelte-1wvyomw { width: 28px; height: 28px; flex: none; }
  .project-more.svelte-1wvyomw { margin-right: 2px; }
  .project-more.on.svelte-1wvyomw { background: var(--surface2); color: var(--text); opacity: 1; }
  /* 置顶标记：跟在项目名后面的小图钉（排序已把它顶到最前，这里只是说明理由） */
  .project-pin.svelte-1wvyomw { display: inline-flex; color: var(--accent); flex: none; opacity: 0.9; }
  /* 会话缩进挂在一条 hairline 导引线下（树感），不再靠大缩进撑层级 */
  .project-sessions.svelte-1wvyomw { margin: 1px 0 6px 18px; padding-left: 8px; border-left: 1px solid var(--border); }
  .project-empty.svelte-1wvyomw { color: var(--text3); font-size: 11.5px; padding: 6px 8px 8px 10px; }

  /* 已隐藏区：列表最底下的回收入口 —— 隐藏不删任何东西，必须有地方找回来 */
  .hidden-zone.svelte-1wvyomw { flex: none; margin-top: 4px; padding-top: 6px; border-top: 1px solid var(--border); }
  .hidden-head.svelte-1wvyomw {
    display: flex; align-items: center; gap: 8px; width: 100%; height: 32px; padding: 0 8px;
    border-radius: var(--r-item); color: var(--text3); text-align: left;
    transition: background var(--t-fast) var(--ease), color var(--t-fast) var(--ease);
  }
  .hidden-head.svelte-1wvyomw svg { flex: none; }
  .hidden-title.svelte-1wvyomw { flex: 1; min-width: 0; font-size: 12.5px; font-weight: 540; }
  .hidden-row.svelte-1wvyomw {
    display: flex; align-items: center; gap: 8px; padding: 5px 8px 5px 26px;
    animation: rise-in 0.24s var(--ease) both;
  }
  .hidden-name.svelte-1wvyomw {
    flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
    font-size: 13px; color: var(--text2);
  }
  .hidden-restore.svelte-1wvyomw {
    flex: none; padding: 3px 10px; border-radius: 7px; background: var(--surface2);
    font-size: 11.5px; color: var(--text2);
    transition: background var(--t-fast) var(--ease), color var(--t-fast) var(--ease);
  }
  .hidden-restore.svelte-1wvyomw:active { transform: scale(0.95); }

  /* 项目溢出菜单（Popover 里的行；样式归声明它的本组件） */
  .mi.svelte-1wvyomw {
    display: flex; align-items: center; gap: 11px; width: 100%; padding: 9px 11px;
    border-radius: var(--r-item); color: var(--text); font-size: 13.5px; font-weight: 530; text-align: left;
    transition: background var(--t-fast) var(--ease);
  }
  .mi.svelte-1wvyomw svg { color: var(--text2); flex: none; }
  .mi.svelte-1wvyomw:active { background: var(--surface2); }
  .mi-note.svelte-1wvyomw {
    max-width: 214px; padding: 6px 11px 5px; margin-top: 3px; border-top: 1px solid var(--border);
    color: var(--text3); font-size: 11px; line-height: 1.5;
  }

  .row-wrap.svelte-1wvyomw { position: relative; border-radius: var(--r-item); overflow: hidden; animation: rise-in 0.28s var(--ease) both; flex: none; }
  .row-del.svelte-1wvyomw {
    position: absolute; inset: 0 0 0 auto; width: 60px; display: flex; align-items: center;
    justify-content: center; background: var(--err); opacity: 0; visibility: hidden; pointer-events: none;
  }
  .row-wrap.svelte-1wvyomw.revealing .row-del:where(.svelte-1wvyomw) { opacity: 1; visibility: visible; pointer-events: auto; }
  .del-btn.svelte-1wvyomw { color: #fff; width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; }
  .row.svelte-1wvyomw { position: relative; border-radius: var(--r-item); touch-action: pan-y; background: transparent; }
  .row.active.svelte-1wvyomw { background: var(--surface2); }
  .row-main.svelte-1wvyomw {
    display: flex; align-items: center; gap: 8px; width: 100%; min-width: 0; text-align: left;
    height: 32px; padding: 0 8px; border-radius: var(--r-item); transition: background var(--t-fast) var(--ease);
  }
  .row-v.svelte-1wvyomw { display: inline-flex; color: var(--text3); flex: none; opacity: 0.8; transition: color var(--t-fast) var(--ease); }
  .row.active.svelte-1wvyomw .row-v:where(.svelte-1wvyomw) { color: var(--accent); opacity: 1; }
  .row-title.svelte-1wvyomw { flex: 1; min-width: 0; font-size: 13px; color: var(--text2); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; transition: color var(--t-fast) var(--ease); }
  .row.active.svelte-1wvyomw .row-title:where(.svelte-1wvyomw) { color: var(--text); font-weight: 560; }
  .row-meta.svelte-1wvyomw { flex: none; color: var(--text3); font: 10px var(--font-mono); transition: opacity var(--t-fast) var(--ease); }
  .running.svelte-1wvyomw { display: inline-flex; align-items: center; gap: 4px; color: var(--accent); font-weight: 560; }
  .rdot.svelte-1wvyomw { width: 5px; height: 5px; border-radius: 50%; background: var(--accent); animation: pulse-soft 1.5s ease infinite; }
  .row-x.svelte-1wvyomw {
    display: none; position: absolute; z-index: 2; right: 4px; top: 50%; transform: translateY(-50%);
    width: 26px; height: 26px; border-radius: 7px; align-items: center; justify-content: center;
    color: var(--text3); background: var(--surface2); opacity: 0; visibility: hidden; pointer-events: none;
    transition: opacity var(--t-fast) var(--ease), color var(--t-fast) var(--ease);
  }
  .row-x.svelte-1wvyomw:hover { color: var(--err); }

  .foot.svelte-1wvyomw {
    display: flex; align-items: center; gap: 9px; margin: 4px 10px calc(12px + var(--sab));
    padding: 8px 10px; border-radius: var(--r-item); font-size: 13px; color: var(--text2);
    transition: background var(--t-fast) var(--ease), color var(--t-fast) var(--ease); position: relative;
  }
  .foot.svelte-1wvyomw svg { color: var(--text3); }
  .foot.svelte-1wvyomw:active { transform: scale(0.98); }
  .more.svelte-1wvyomw {
    display: block; width: calc(100% - 16px); margin: 6px 8px 2px; padding: 8px 12px;
    border-radius: var(--r-item); font-size: 12.5px; color: var(--text2);
    background: var(--surface2); text-align: center;
    transition: background var(--t-fast) var(--ease), color var(--t-fast) var(--ease);
  }
  .more.svelte-1wvyomw:disabled { opacity: 0.55; }
  .more.svelte-1wvyomw:not(:disabled):active { transform: scale(0.99); }
  .warn-dot.svelte-1wvyomw { width: 7px; height: 7px; border-radius: 50%; background: var(--warn); margin-left: auto; }

  @media (hover: hover) {
    .mbtn.svelte-1wvyomw:hover, .hbtn.svelte-1wvyomw:hover, .project-add.svelte-1wvyomw:hover, .project-new.svelte-1wvyomw:hover, .project-more.svelte-1wvyomw:hover { background: var(--surface2); color: var(--text); }
    .home.svelte-1wvyomw:hover { background: var(--surface2); color: var(--text); }
    .project-row.svelte-1wvyomw:hover { background: var(--surface2); }
    .project-row.svelte-1wvyomw:hover .project-folder:where(.svelte-1wvyomw) { color: var(--text2); }
    .project.active.svelte-1wvyomw .project-row:where(.svelte-1wvyomw):hover .project-folder:where(.svelte-1wvyomw) { color: var(--accent); }
    .hidden-head.svelte-1wvyomw:hover { background: var(--surface2); color: var(--text2); }
    .hidden-restore.svelte-1wvyomw:hover { color: var(--text); }
    .mi.svelte-1wvyomw:hover { background: var(--surface2); }
    .row.svelte-1wvyomw:not(.active) .row-main:where(.svelte-1wvyomw):hover { background: var(--surface2); }
    .row.svelte-1wvyomw:not(.active) .row-main:where(.svelte-1wvyomw):hover .row-title:where(.svelte-1wvyomw) { color: var(--text); }
    .foot.svelte-1wvyomw:hover { background: var(--surface2); color: var(--text); }
    .foot.svelte-1wvyomw:hover svg { color: var(--text); }
  }
  @media (hover: hover) and (pointer: fine) {
    /* 桌面：行内动作 hover 才浮现（占位不变，布局不跳）；触屏常显 */
    .project-new.svelte-1wvyomw, .project-more.svelte-1wvyomw { opacity: 0; }
    .project-row.svelte-1wvyomw:hover .project-new:where(.svelte-1wvyomw), .project-row.svelte-1wvyomw:hover .project-more:where(.svelte-1wvyomw),
    .project-row.svelte-1wvyomw:focus-within .project-new:where(.svelte-1wvyomw), .project-row.svelte-1wvyomw:focus-within .project-more:where(.svelte-1wvyomw) { opacity: 1; }
    .row-x.svelte-1wvyomw { display: inline-flex; }
    .row.svelte-1wvyomw:hover .row-x:where(.svelte-1wvyomw), .row.svelte-1wvyomw:focus-within .row-x:where(.svelte-1wvyomw) { opacity: 1; visibility: visible; pointer-events: auto; }
    .row.svelte-1wvyomw:hover .row-meta:where(.svelte-1wvyomw), .row.svelte-1wvyomw:focus-within .row-meta:where(.svelte-1wvyomw) { opacity: 0; }
  }

  .layer.svelte-1uo5ew6 {
    position: fixed;
    inset: 0;
    z-index: 58;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: calc(16px + var(--sat, 0px)) 16px calc(16px + var(--sab, 0px));
  }
  .scrim.svelte-1uo5ew6 {
    position: absolute;
    inset: 0;
    background: var(--scrim);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    animation: svelte-1uo5ew6-fade-bd 0.24s var(--ease) both;
  }
  @keyframes svelte-1uo5ew6-fade-bd {
    from {
      opacity: 0;
    }
  }

  /* 面板不许高过视口：七家在手机上排不进一屏时，滚的是 .tiles 这一层，头尾钉住。
     此前面板无上限、浮层又是 flex 居中，超高时上下两头一起顶出屏幕且无处可滚。 */
  .panel.svelte-1uo5ew6 {
    position: relative;
    width: min(540px, 100%);
    max-height: 100%;
    display: flex;
    flex-direction: column;
    min-height: 0;
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: var(--r-card);
    box-shadow: var(--shadow-pop);
    padding: 18px 18px 14px;
    animation: plane-in 0.3s var(--ease) both;
  }

  .head.svelte-1uo5ew6 {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 10px;
    padding: 0 2px 14px;
  }
  .title.svelte-1uo5ew6 {
    font-size: 15px;
    font-weight: 620;
    letter-spacing: 0.01em;
    color: var(--text);
  }
  .sub.svelte-1uo5ew6 {
    font-family: var(--font-mono);
    font-size: 10px;
    letter-spacing: 0.14em;
    color: var(--text3);
  }

  .tiles.svelte-1uo5ew6 {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(146px, 1fr));
    gap: 10px;
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
    /* 滚动区自己留一点内边距，选中态的取景框角标（inset -1px）才不会被裁掉 */
    padding: 2px;
    margin: -2px;
  }
  /* 手机：auto-fill 在 ≈300px 宽里只排得下一列，七张卡叠成一长条；固定两列 */
  @media (max-width: 600px) {
    .tiles.svelte-1uo5ew6 {
      grid-template-columns: repeat(2, minmax(0, 1fr));
      gap: 8px;
    }
    .tile.svelte-1uo5ew6 {
      padding: 12px 12px 10px;
    }
  }
  .tile.svelte-1uo5ew6 {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 3px;
    text-align: left;
    padding: 14px 14px 12px;
    border: 1px solid var(--border);
    border-radius: 10px;
    background: var(--bg);
    animation: rise-in 0.36s var(--ease) both;
    transition: border-color var(--t-fast) var(--ease), background var(--t-fast) var(--ease),
      transform var(--t-fast) var(--ease);
  }
  @media (hover: hover) {
    .tile.svelte-1uo5ew6:hover {
      border-color: var(--border2);
      background: var(--surface2);
      transform: translateY(-1px);
    }
    .tile.svelte-1uo5ew6:hover .hxframe {
      opacity: 1;
      transform: scale(1);
      --fr-c: var(--text3);
    }
  }
  .tile.svelte-1uo5ew6:active {
    transform: scale(0.97);
  }
  .tile.cur.svelte-1uo5ew6 {
    border-color: color-mix(in srgb, var(--accent) 45%, transparent);
  }

  .tlogo.svelte-1uo5ew6 {
    display: inline-flex;
    margin-bottom: 7px;
  }
  .tname.svelte-1uo5ew6 {
    font-size: 14px;
    font-weight: 620;
    color: var(--text);
  }
  .tco.svelte-1uo5ew6 {
    font-size: 11px;
    color: var(--text3);
  }
  .tmodels.svelte-1uo5ew6 {
    font-family: var(--font-mono);
    font-size: 9.5px;
    letter-spacing: 0.1em;
    color: var(--text3);
    margin-top: 7px;
    opacity: 0.85;
  }
  .tag.svelte-1uo5ew6 {
    position: absolute;
    top: 10px;
    right: 10px;
    font-size: 10px;
    font-weight: 620;
    color: var(--accent);
    background: var(--accent-soft);
    border-radius: 5px;
    padding: 2px 7px;
  }

  .foot.svelte-1uo5ew6 {
    padding: 13px 2px 2px;
    font-size: 11.5px;
    color: var(--text3);
  }

  .overlay.svelte-1i7kka1 {
    position: fixed;
    inset: 0;
    z-index: 60;
    display: flex;
    align-items: flex-end;
    justify-content: center;
  }
  .backdrop.svelte-1i7kka1 {
    position: absolute;
    inset: 0;
    background: var(--scrim);
    animation: svelte-1i7kka1-fade-bd 0.26s var(--ease) both;
  }
  @keyframes svelte-1i7kka1-fade-bd {
    from {
      opacity: 0;
    }
  }

  .sheet.svelte-1i7kka1 {
    position: relative;
    width: 100%;
    max-height: calc(100dvh - 48px - var(--sat));
    background: var(--surface);
    border: 1px solid var(--border);
    border-bottom: 0;
    border-radius: 18px 18px 0 0;
    display: flex;
    flex-direction: column;
    animation: svelte-1i7kka1-sheet-up 0.34s cubic-bezier(0.32, 0.9, 0.35, 1) both;
    transition: transform 0.3s cubic-bezier(0.32, 0.9, 0.35, 1);
    touch-action: none;
    box-shadow: 0 -8px 42px rgba(0, 0, 0, 0.3);
  }
  @keyframes svelte-1i7kka1-sheet-up {
    from {
      transform: translateY(46%);
      opacity: 0.6;
    }
  }

  .grip-zone.svelte-1i7kka1 {
    flex: none;
    cursor: grab;
  }
  .grip.svelte-1i7kka1 {
    display: block;
    width: 38px;
    height: 4.5px;
    border-radius: 3px;
    background: var(--border);
    margin: 9px auto 0;
  }
  .head.svelte-1i7kka1 {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 8px 18px 10px;
  }
  .title.svelte-1i7kka1 {
    font-size: 16px;
    font-weight: 640;
  }
  .x.svelte-1i7kka1 {
    width: 32px;
    height: 32px;
    border-radius: var(--r-ctl);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--text3);
    background: var(--surface2);
  }
  .x.svelte-1i7kka1:active {
    transform: scale(0.9);
  }

  .content.svelte-1i7kka1 {
    overflow-y: auto;
    overscroll-behavior: contain;
    padding: 2px 18px calc(20px + var(--sab));
    touch-action: pan-y;
  }

  /* 横屏 / 桌面：居中卡片弹层 */
  @media (min-width: 700px) {
    .overlay.svelte-1i7kka1 {
      align-items: center;
      padding: 32px;
    }
    .sheet.svelte-1i7kka1 {
      width: 460px;
      max-height: min(680px, calc(100vh - 96px));
      border: 1px solid var(--border);
      border-radius: var(--r-card);
      animation: plane-in 0.26s var(--ease) both;
      touch-action: auto;
      box-shadow: var(--shadow-pop);
    }
    .sheet.wide.svelte-1i7kka1 {
      width: 720px;
    }
    .grip.svelte-1i7kka1 {
      display: none;
    }
    .grip-zone.svelte-1i7kka1 {
      cursor: default;
    }
    .head.svelte-1i7kka1 {
      padding-top: 16px;
    }
    .content.svelte-1i7kka1 {
      padding-bottom: 22px;
    }
  }

  .brandrow.svelte-ppe248 {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px 13px;
    background: var(--surface2);
    border-radius: var(--r-card);
    margin-bottom: 6px;
  }
  .brandinfo.svelte-ppe248 {
    display: flex;
    flex-direction: column;
    gap: 1px;
    flex: 1;
    min-width: 0;
  }
  .bname.svelte-ppe248 {
    font-weight: 640;
    font-size: 15px;
  }
  .bco.svelte-ppe248 {
    font-size: 12px;
    color: var(--text3);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .tag.svelte-ppe248 {
    font-size: 11px;
    font-weight: 600;
    padding: 3px 9px;
    border-radius: 999px;
    flex: none;
  }
  .tag.ok.svelte-ppe248 {
    color: var(--ok);
    background: color-mix(in srgb, var(--ok) 12%, transparent);
  }
  .tag.warn.svelte-ppe248 {
    color: var(--warn);
    background: color-mix(in srgb, var(--warn) 14%, transparent);
  }

  .lbl.svelte-ppe248 {
    display: block;
    font-size: 12px;
    font-weight: 600;
    color: var(--text2);
    margin: 16px 2px 7px;
  }
  input.svelte-ppe248 {
    width: 100%;
    background: var(--bg);
    border: 1px solid var(--border);
    border-radius: var(--r-ctl);
    padding: 11px 13px;
    font-size: 14px;
    outline: none;
    transition: border-color var(--t-fast) var(--ease), box-shadow var(--t-fast) var(--ease);
  }
  /* 权限规则编辑：与 input 同材质，等宽字体读规则更清楚 */
  .rules.svelte-ppe248 {
    width: 100%;
    background: var(--bg);
    border: 1px solid var(--border);
    border-radius: var(--r-ctl);
    padding: 10px 12px;
    font-size: 12.5px;
    font-family: var(--mono, ui-monospace, SFMono-Regular, Menlo, monospace);
    line-height: 1.5;
    color: var(--text);
    outline: none;
    resize: vertical;
    transition: border-color var(--t-fast) var(--ease), box-shadow var(--t-fast) var(--ease);
  }
  .rules.svelte-ppe248:focus {
    border-color: color-mix(in srgb, var(--accent) 60%, transparent);
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 10%, transparent);
  }
  input.svelte-ppe248:focus {
    border-color: color-mix(in srgb, var(--accent) 60%, transparent);
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 10%, transparent);
  }
  .note.svelte-ppe248 {
    font-size: 11.5px;
    color: var(--text3);
    margin: 6px 2px 0;
    line-height: 1.5;
  }
  .route.svelte-ppe248 {
    font-size: 10.5px;
    font-weight: 650;
    color: var(--accent);
    background: var(--accent-soft);
    border-radius: 999px;
    padding: 2px 9px;
    margin-left: 8px;
    vertical-align: 1px;
  }
  .probe.svelte-ppe248 {
    margin-top: 8px;
    font-size: 12.5px;
    font-weight: 560;
    color: var(--accent);
    padding: 7px 12px;
    border-radius: var(--r-ctl);
    background: var(--accent-soft);
  }
  .probe.svelte-ppe248:active {
    transform: scale(0.97);
  }
  .probe.svelte-ppe248:disabled {
    opacity: 0.6;
  }

  .seg.svelte-ppe248 {
    display: flex;
    gap: 6px;
    background: var(--surface2);
    padding: 4px;
    border-radius: calc(var(--r-ctl) + 4px);
  }
  .seg.svelte-ppe248 button:where(.svelte-ppe248) {
    flex: 1;
    padding: 9px 6px;
    font-size: 13px;
    color: var(--text3);
    border-radius: var(--r-ctl);
    transition: all var(--t-fast) var(--ease);
    white-space: nowrap;
  }
  .seg.svelte-ppe248 button.on:where(.svelte-ppe248) {
    background: var(--surface);
    color: var(--text);
    font-weight: 560;
    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.07);
  }
  .seg.svelte-ppe248 button:where(.svelte-ppe248):active {
    transform: scale(0.96);
  }

  .meta.svelte-ppe248 {
    display: flex;
    align-items: center;
    gap: 7px;
    margin-top: 18px;
    font-size: 11.5px;
    color: var(--text3);
    overflow: hidden;
  }
  .dotsep.svelte-ppe248 {
    flex: none;
  }
  .mono.svelte-ppe248 {
    font-family: var(--font-mono);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  /* ── 工作空间选择器 ── */
  .wsrow.svelte-ppe248 {
    display: flex;
    align-items: center;
    gap: 8px;
    background: var(--bg);
    border: 1px solid var(--border);
    border-radius: var(--r-ctl);
    padding: 9px 11px;
  }
  .wspath.svelte-ppe248 {
    flex: 1;
    min-width: 0;
    font-family: var(--font-mono);
    font-size: 12px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    direction: rtl; /* 长路径优先露出尾部（真正区分目录的那截） */
    text-align: left;
  }
  .wsbtn.svelte-ppe248 {
    flex: none;
    font-size: 12px;
    font-weight: 600;
    color: var(--accent);
    background: var(--accent-soft);
    border-radius: 999px;
    padding: 5px 12px;
  }
  .wsbtn.svelte-ppe248:active {
    transform: scale(0.96);
  }
  .wsbtn.ghost.svelte-ppe248 {
    color: var(--text2);
    background: var(--surface2);
  }
  .wsbtn.primary.svelte-ppe248 {
    color: var(--on-accent);
    background: var(--accent);
  }
  .wsnav.svelte-ppe248 {
    margin-top: 8px;
    border: 1px solid var(--border);
    border-radius: var(--r-card);
    background: var(--surface);
    padding: 8px;
  }
  .drives.svelte-ppe248 {
    display: flex;
    flex-wrap: wrap;
    gap: 5px;
    margin-bottom: 7px;
  }
  .drive.svelte-ppe248 {
    font-size: 11.5px;
    font-weight: 620;
    font-family: var(--font-mono);
    color: var(--text2);
    background: var(--surface2);
    border-radius: 7px;
    padding: 4px 9px;
  }
  .drive.cur.svelte-ppe248 {
    color: var(--accent);
    background: var(--accent-soft);
  }
  .navhead.svelte-ppe248 {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 5px;
  }
  .up.svelte-ppe248 {
    display: inline-flex;
    align-items: center;
    gap: 3px;
    flex: none;
    font-size: 12px;
    color: var(--text2);
    background: var(--surface2);
    border-radius: 7px;
    padding: 4px 9px;
  }
  .up.svelte-ppe248 svg {
    transform: rotate(180deg);
  }
  .up.svelte-ppe248:disabled {
    opacity: 0.4;
  }
  .curpath.svelte-ppe248 {
    flex: 1;
    min-width: 0;
    font-family: var(--font-mono);
    font-size: 11px;
    color: var(--text3);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    direction: rtl;
    text-align: left;
  }
  .dirlist.svelte-ppe248 {
    max-height: 190px;
    overflow-y: auto;
    display: flex;
    flex-direction: column;
  }
  .diritem.svelte-ppe248 {
    display: flex;
    align-items: center;
    gap: 8px;
    text-align: left;
    font-size: 13px;
    padding: 7px 8px;
    border-radius: 8px;
    color: var(--text);
    min-width: 0;
  }
  .diritem.svelte-ppe248:hover {
    background: var(--surface2);
  }
  .diritem.svelte-ppe248 svg {
    flex: none;
    color: var(--text3);
  }
  .diritem.svelte-ppe248 span:where(.svelte-ppe248) {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .empty.svelte-ppe248 {
    font-size: 12px;
    color: var(--text3);
    padding: 10px 8px;
  }
  .wserr.svelte-ppe248 {
    font-size: 12px;
    color: var(--warn);
    padding: 6px 8px 2px;
  }
  .wsops.svelte-ppe248 {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 6px;
    margin-top: 7px;
    padding-top: 7px;
    border-top: 1px solid var(--border);
  }
  .newname.svelte-ppe248 {
    flex: 1;
    min-width: 0;
    padding: 7px 10px;
    font-size: 13px;
  }

  .save.svelte-ppe248 {
    width: 100%;
    margin-top: 20px;
    background: var(--primary);
    color: var(--on-primary);
    border-radius: var(--r-ctl);
    padding: 12px;
    font-size: 14px;
    font-weight: 640;
    transition: transform var(--t-fast) var(--ease), opacity var(--t-fast) var(--ease);
  }
  .save.svelte-ppe248:active {
    transform: scale(0.98);
  }
  .save.svelte-ppe248:disabled {
    opacity: 0.6;
  }

  .tabs.svelte-pbkpus {
    display: flex;
    gap: 6px;
    background: var(--surface2);
    padding: 4px;
    border-radius: calc(var(--r-ctl) + 4px);
    margin-bottom: 14px;
  }
  .tabs.svelte-pbkpus button:where(.svelte-pbkpus) {
    flex: 1;
    padding: 9px;
    font-size: 13px;
    color: var(--text3);
    border-radius: var(--r-ctl);
    transition: all var(--t-fast) var(--ease);
  }
  .tabs.svelte-pbkpus button.on:where(.svelte-pbkpus) {
    background: var(--surface);
    color: var(--text);
    font-weight: 560;
    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.07);
  }

  .pickers.svelte-pbkpus {
    display: flex;
    gap: 10px;
  }
  .pick.svelte-pbkpus {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    padding: 22px 10px;
    border: 1.5px dashed var(--border);
    border-radius: var(--r-card);
    color: var(--text2);
    font-size: 13px;
    transition: all var(--t-fast) var(--ease);
  }
  .pick.svelte-pbkpus:hover {
    border-color: color-mix(in srgb, var(--accent) 55%, transparent);
    color: var(--text);
    background: var(--accent-soft);
  }
  .pick.svelte-pbkpus:active {
    transform: scale(0.97);
  }
  .pick.svelte-pbkpus:disabled {
    opacity: 0.5;
  }

  .prog.svelte-pbkpus {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-top: 14px;
  }
  .prog-bar.svelte-pbkpus {
    flex: 1;
    height: 5px;
    border-radius: 3px;
    background: var(--surface2);
    overflow: hidden;
  }
  .prog-bar.svelte-pbkpus span:where(.svelte-pbkpus) {
    display: block;
    height: 100%;
    background: var(--accent);
    transition: width 0.25s var(--ease);
    border-radius: 3px;
  }
  .prog-txt.svelte-pbkpus {
    font-size: 12px;
    color: var(--text2);
    white-space: nowrap;
  }
  .fails.svelte-pbkpus {
    margin-top: 10px;
    font-size: 12.5px;
    color: var(--err);
    line-height: 1.5;
    word-break: break-all;
  }
  .note.svelte-pbkpus {
    font-size: 11.5px;
    color: var(--text3);
    margin-top: 12px;
    line-height: 1.5;
  }

  .crumbs.svelte-pbkpus {
    display: flex;
    align-items: center;
    gap: 2px;
    flex-wrap: wrap;
    margin-bottom: 8px;
  }
  .crumb.svelte-pbkpus {
    font-size: 12.5px;
    color: var(--text2);
    padding: 4px 7px;
    border-radius: 7px;
  }
  .crumb.svelte-pbkpus:hover {
    background: var(--surface2);
  }
  .crumb.cur.svelte-pbkpus {
    color: var(--text);
    font-weight: 600;
  }
  .csep.svelte-pbkpus {
    color: var(--text3);
    display: inline-flex;
  }

  .files.svelte-pbkpus {
    display: flex;
    flex-direction: column;
    min-height: 160px;
    max-height: 46vh;
    overflow-y: auto;
    border: 1px solid var(--border);
    border-radius: var(--r-card);
    padding: 4px;
  }
  .fr.svelte-pbkpus {
    display: flex;
    align-items: center;
    border-radius: var(--r-ctl);
    transition: background var(--t-fast) var(--ease);
  }
  .fr.sel.svelte-pbkpus {
    background: var(--accent-soft);
  }
  .fr.svelte-pbkpus:not(.sel):hover {
    background: var(--surface2);
  }
  .fr-check.svelte-pbkpus {
    padding: 9px 4px 9px 9px;
    display: inline-flex;
  }
  .cbx.svelte-pbkpus {
    width: 17px;
    height: 17px;
    border-radius: 5px;
    border: 1.5px solid var(--border);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--on-accent);
    transition: all var(--t-fast) var(--ease);
  }
  .fr.sel.svelte-pbkpus .cbx:where(.svelte-pbkpus) {
    background: var(--accent);
    border-color: var(--accent);
  }
  .fr-main.svelte-pbkpus {
    flex: 1;
    display: flex;
    align-items: center;
    gap: 9px;
    text-align: left;
    padding: 9px 10px 9px 5px;
    min-width: 0;
    color: var(--text2);
  }
  .fr-name.svelte-pbkpus {
    color: var(--text);
    font-size: 13.5px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    flex: 1;
    min-width: 0;
  }
  .fr-size.svelte-pbkpus {
    font-size: 11.5px;
    color: var(--text3);
    flex: none;
  }
  .fr-arrow.svelte-pbkpus {
    display: inline-flex;
    color: var(--text3);
    flex: none;
  }

  .add.svelte-pbkpus {
    width: 100%;
    margin-top: 14px;
    background: var(--accent);
    color: var(--on-accent);
    border-radius: var(--r-ctl);
    padding: 12px;
    font-size: 14px;
    font-weight: 640;
    transition: transform var(--t-fast) var(--ease), opacity var(--t-fast) var(--ease);
  }
  .add.svelte-pbkpus:active {
    transform: scale(0.98);
  }
  .add.svelte-pbkpus:disabled {
    opacity: 0.4;
  }

  .hint.svelte-ukn776 {
    color: var(--text3);
    font-size: 13px;
    padding: 22px 4px;
    text-align: center;
  }
  .list.svelte-ukn776 {
    display: flex;
    flex-direction: column;
    gap: 3px;
  }
  .cp.svelte-ukn776 {
    display: flex;
    align-items: center;
    gap: 12px;
    width: 100%;
    text-align: left;
    padding: 11px 12px;
    border-radius: var(--r-ctl);
    color: var(--text3);
    transition: background var(--t-fast) var(--ease);
    animation: rise-in 0.3s var(--ease) both;
  }
  @media (hover: hover) {
    .cp.svelte-ukn776:hover {
      background: var(--surface2);
    }
  }
  .cp.svelte-ukn776:active {
    background: var(--surface2);
  }
  .cp-n.svelte-ukn776 {
    font-family: var(--font-mono);
    font-size: 12px;
    color: var(--text3);
    flex: none;
    width: 34px;
  }
  .cp-body.svelte-ukn776 {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 1px;
  }
  .cp-label.svelte-ukn776 {
    font-size: 13.5px;
    color: var(--text);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .cp-time.svelte-ukn776 {
    font-size: 11.5px;
    color: var(--text3);
  }
  .note.svelte-ukn776 {
    font-size: 11.5px;
    color: var(--text3);
    margin: 12px 4px 0;
    line-height: 1.55;
  }

  .back.svelte-ukn776 {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    font-size: 13px;
    font-weight: 560;
    color: var(--text2);
    padding: 7px 10px;
    border-radius: var(--r-ctl);
    margin-bottom: 10px;
    max-width: 100%;
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
  }
  @media (hover: hover) {
    .back.svelte-ukn776:hover {
      background: var(--surface2);
    }
  }

  .diffbox.svelte-ukn776 {
    border: 1px solid var(--border);
    border-radius: var(--r-card);
    background: var(--code-bg);
    max-height: 46vh;
    overflow: auto;
  }
  .diff.svelte-ukn776 {
    margin: 0;
    padding: 12px 14px;
    font-family: var(--font-mono);
    font-size: 12px;
    line-height: 1.6;
    white-space: pre;
    min-width: 100%;
    width: max-content;
  }
  .diff.svelte-ukn776 .da {
    color: var(--ok);
    background: color-mix(in srgb, var(--ok) 8%, transparent);
    display: inline-block;
    width: 100%;
  }
  .diff.svelte-ukn776 .dr {
    color: var(--err);
    background: color-mix(in srgb, var(--err) 7%, transparent);
    display: inline-block;
    width: 100%;
  }
  .diff.svelte-ukn776 .dh {
    color: var(--accent);
  }
  .diff.svelte-ukn776 .dm {
    color: var(--text3);
  }

  .do.svelte-ukn776 {
    width: 100%;
    margin-top: 14px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    background: var(--accent);
    color: var(--on-accent);
    border-radius: var(--r-ctl);
    padding: 12px;
    font-size: 14px;
    font-weight: 640;
    transition: transform var(--t-fast) var(--ease), opacity var(--t-fast) var(--ease);
  }
  .do.svelte-ukn776:active {
    transform: scale(0.98);
  }
  .do.svelte-ukn776:disabled {
    opacity: 0.5;
  }

  .setup.svelte-1xsbho {
    position: fixed;
    inset: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 13px;
    padding: 32px 26px calc(32px + var(--sab));
    background: var(--bg);
    z-index: 100;
  }
  .logos.svelte-1xsbho {
    display: flex;
    gap: 14px;
    margin-bottom: 8px;
  }
  .lg.svelte-1xsbho {
    display: inline-flex;
    color: var(--text3);
    animation: pop-in 0.5s var(--ease) both;
  }
  h1.svelte-1xsbho {
    margin: 0 0 8px;
    font-size: 26px;
    font-weight: 330;
    letter-spacing: 0.02em;
  }
  .field.svelte-1xsbho {
    width: min(380px, 100%);
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: var(--r-ctl);
    padding: 13px 15px;
    font-size: 14.5px;
    font-family: var(--font-mono);
    outline: none;
    text-align: center;
    transition: border-color var(--t-fast) var(--ease);
  }
  .field.svelte-1xsbho:focus {
    border-color: color-mix(in srgb, var(--accent) 60%, transparent);
  }
  .err.svelte-1xsbho {
    color: var(--err);
    font-size: 12.5px;
    margin: -3px 0 0;
    max-width: 380px;
    text-align: center;
    line-height: 1.5;
  }
  .go.svelte-1xsbho {
    width: min(380px, 100%);
    background: var(--primary);
    color: var(--on-primary);
    border-radius: var(--r-ctl);
    padding: 13px;
    font-size: 15px;
    font-weight: 640;
    transition: transform var(--t-fast) var(--ease), opacity var(--t-fast) var(--ease);
  }
  .go.svelte-1xsbho:active {
    transform: scale(0.97);
  }
  .go.svelte-1xsbho:disabled {
    opacity: 0.6;
  }
  .tip.svelte-1xsbho {
    font-size: 11.5px;
    color: var(--text3);
    max-width: 360px;
    text-align: center;
    line-height: 1.6;
    margin: 2px 0 0;
  }

  .overlay.svelte-qwyx3n {
    position: fixed;
    inset: 0;
    z-index: 72;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 22px;
  }
  .backdrop.svelte-qwyx3n {
    position: absolute;
    inset: 0;
    background: var(--scrim);
    animation: svelte-qwyx3n-fade-in 0.2s ease both;
  }
  @keyframes svelte-qwyx3n-fade-in { from { opacity: 0; } }
  .dialog.svelte-qwyx3n {
    position: relative;
    width: min(520px, 100%);
    border: 1px solid var(--border);
    border-radius: 22px;
    background: var(--surface);
    box-shadow: var(--shadow-pop);
    padding: 28px 30px 26px;
    animation: svelte-qwyx3n-dialog-in 0.24s var(--ease-pop) both;
  }
  .dialog.picker.svelte-qwyx3n { width: min(620px, 100%); }
  @keyframes svelte-qwyx3n-dialog-in {
    from { opacity: 0; transform: translateY(10px) scale(0.98); }
  }
  .head.svelte-qwyx3n {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 18px;
    margin-bottom: 24px;
  }
  h2.svelte-qwyx3n { font-size: 26px; line-height: 1.2; font-weight: 690; letter-spacing: -0.025em; }
  p.svelte-qwyx3n { margin-top: 7px; color: var(--text3); font-size: 14px; }
  .close.svelte-qwyx3n {
    width: 36px;
    height: 36px;
    border-radius: var(--r-ctl);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--text2);
  }
  .close.svelte-qwyx3n:hover { background: var(--surface2); color: var(--text); }
  .actions.svelte-qwyx3n {
    display: flex;
    justify-content: flex-end;
    gap: 10px;
    margin-top: 22px;
  }
  .actions.svelte-qwyx3n button:where(.svelte-qwyx3n) {
    min-width: 92px;
    height: 44px;
    border-radius: 12px;
    padding: 0 18px;
    font-size: 14px;
    font-weight: 620;
  }
  .cancel.svelte-qwyx3n { border: 1px solid var(--border2); color: var(--text2); }
  .cancel.svelte-qwyx3n:hover { background: var(--surface2); color: var(--text); }
  .primary.svelte-qwyx3n { background: var(--primary); color: var(--on-primary); }
  .primary.svelte-qwyx3n:disabled { opacity: 0.45; }
  .drives.svelte-qwyx3n { display: flex; gap: 6px; flex-wrap: wrap; margin: -4px 0 10px; }
  .drives.svelte-qwyx3n button:where(.svelte-qwyx3n) {
    padding: 5px 10px;
    border-radius: 8px;
    background: var(--surface2);
    color: var(--text2);
    font: 600 12px var(--font-mono);
  }
  .drives.svelte-qwyx3n button.active:where(.svelte-qwyx3n) { color: var(--accent); background: var(--accent-soft); }
  .pathbar.svelte-qwyx3n {
    display: flex;
    align-items: center;
    gap: 9px;
    min-height: 42px;
    padding: 5px 10px 5px 6px;
    border: 1px solid var(--border);
    border-radius: 11px;
    background: var(--bg);
  }
  .up.svelte-qwyx3n {
    width: 30px;
    height: 30px;
    border-radius: 8px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--text2);
    background: var(--surface2);
    flex: none;
  }
  .up.svelte-qwyx3n:disabled { opacity: 0.35; }
  .pathbar.svelte-qwyx3n span:where(.svelte-qwyx3n) {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font: 12px var(--font-mono);
    color: var(--text2);
  }
  .dirlist.svelte-qwyx3n {
    height: min(330px, 42vh);
    margin-top: 9px;
    overflow-y: auto;
    border: 1px solid var(--border);
    border-radius: 12px;
    padding: 5px;
  }
  .dir.svelte-qwyx3n {
    width: 100%;
    min-width: 0;
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 9px 10px;
    border-radius: 9px;
    color: var(--text);
    text-align: left;
  }
  .dir.svelte-qwyx3n:hover { background: var(--surface2); }
  .dir.svelte-qwyx3n svg { color: var(--text3); flex: none; }
  .dir.svelte-qwyx3n span:where(.svelte-qwyx3n) { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .empty.svelte-qwyx3n { padding: 18px 12px; color: var(--text3); font-size: 13px; }
  .error.svelte-qwyx3n { color: var(--warn); font-size: 12px; margin-top: 8px; }

  @media (max-width: 599px) {
    .overlay.svelte-qwyx3n { align-items: flex-end; padding: 0; }
    .dialog.svelte-qwyx3n, .dialog.picker.svelte-qwyx3n {
      width: 100%;
      max-height: calc(100dvh - var(--sat) - 20px);
      border-radius: 22px 22px 0 0;
      border-bottom: 0;
      padding: 24px 20px calc(20px + var(--sab));
    }
    h2.svelte-qwyx3n { font-size: 23px; }
    .dirlist.svelte-qwyx3n { height: min(360px, 40vh); }
  }

  .rv.svelte-1b1dmb2 {
    flex: 1;
    min-height: 0;
    display: flex;
    flex-direction: column;
  }
  .rv-scroll.svelte-1b1dmb2 {
    flex: 1;
    min-height: 0;
    display: flex;
    flex-direction: column;
    overflow-y: auto;
    padding: 4px 10px 16px;
  }

  .rv-empty.svelte-1b1dmb2 {
    flex: none;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    color: var(--text3);
    font-size: 13.5px;
    padding: 48px 16px;
    text-align: center;
  }
  .rv-nogit.svelte-1b1dmb2 {
    flex-direction: column;
    gap: 14px;
    flex: 1;
    padding: 0 16px;
  }
  .rv-retry.svelte-1b1dmb2 {
    color: var(--accent);
    padding: 4px 10px;
    border-radius: 8px;
    transition: background var(--t-fast) var(--ease);
  }
  @media (hover: hover) {
    .rv-retry.svelte-1b1dmb2:hover {
      background: var(--accent-soft);
    }
  }
  .rv-retry.svelte-1b1dmb2:active {
    transform: scale(0.94);
  }

  /* 高度 = 统一顶栏带（与标签条/面包屑/终端头同线）；右内边距吃 --hx-pane-r */
  .rv-head.svelte-1b1dmb2 {
    display: flex;
    align-items: center;
    gap: 7px;
    height: var(--hx-band, 44px);
    padding: 0 calc(8px + var(--hx-pane-r, 0px)) 0 8px;
    border-bottom: 1px solid var(--border);
    font-size: 12px;
    color: var(--text2);
    font-family: var(--font-mono);
    flex: none;
  }
  .rv-branch.svelte-1b1dmb2 {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    min-width: 0;
    color: var(--text2);
  }
  .rv-branch.svelte-1b1dmb2 svg {
    color: var(--text3);
    flex: none;
  }
  .rv-base.svelte-1b1dmb2 {
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
    max-width: 180px;
  }
  .rv-arrow.svelte-1b1dmb2 {
    color: var(--text3);
    flex: none;
  }
  .rv-wt.svelte-1b1dmb2 {
    color: var(--text3);
    flex: none;
  }
  .rv-total.svelte-1b1dmb2 {
    margin-left: auto;
    display: inline-flex;
    gap: 8px;
    flex: none;
    font-variant-numeric: tabular-nums;
  }
  .rv-total.svelte-1b1dmb2 em:where(.svelte-1b1dmb2) {
    font-style: normal;
  }
  .rv-total.svelte-1b1dmb2 .add:where(.svelte-1b1dmb2) {
    color: var(--ok);
  }
  .rv-total.svelte-1b1dmb2 .del:where(.svelte-1b1dmb2) {
    color: var(--err);
  }
  .rv-iconbtn.svelte-1b1dmb2 {
    width: 28px;
    height: 28px;
    border-radius: 8px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--text3);
    flex: none;
    transition: background var(--t-fast) var(--ease), color var(--t-fast) var(--ease),
      transform var(--t-fast) var(--ease);
  }
  @media (hover: hover) {
    .rv-iconbtn.svelte-1b1dmb2:hover {
      background: var(--surface2);
      color: var(--text);
    }
  }
  .rv-iconbtn.svelte-1b1dmb2:active {
    transform: scale(0.9);
  }

  .rv-note.svelte-1b1dmb2 {
    color: var(--warn);
    font-size: 11.5px;
    padding: 0 6px 8px;
    flex: none;
  }

  .rv-list.svelte-1b1dmb2 {
    display: flex;
    flex-direction: column;
    gap: 2px;
  }
  .rv-row.svelte-1b1dmb2 {
    width: 100%;
    display: flex;
    align-items: center;
    gap: 7px;
    padding: 7px 8px;
    border-radius: var(--r-item);
    font-size: 13px;
    color: var(--text2);
    text-align: left;
    transition: background var(--t-fast) var(--ease), color var(--t-fast) var(--ease);
  }
  @media (hover: hover) {
    .rv-row.svelte-1b1dmb2:hover {
      background: var(--surface2);
      color: var(--text);
    }
  }
  .rv-row.svelte-1b1dmb2:active {
    background: var(--surface2);
  }
  .chev.svelte-1b1dmb2 {
    width: 14px;
    height: 14px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: none;
    color: var(--text3);
    transition: transform var(--t-med) var(--ease);
  }
  .chev.open.svelte-1b1dmb2 {
    transform: rotate(90deg);
  }
  /* st 徽标：小色块 + 状态字。st-* 是模板插值拼的，scoped 规则必须 :global 保住 */
  .stb.svelte-1b1dmb2 {
    flex: none;
    font-size: 10.5px;
    font-weight: 600;
    padding: 1.5px 6px;
    border-radius: 6px;
    background: var(--surface2);
    color: var(--text3);
    letter-spacing: 0.02em;
  }
  .stb.svelte-1b1dmb2.st-A,
  .stb.svelte-1b1dmb2.st-U {
    color: var(--ok);
    background: color-mix(in srgb, var(--ok) 12%, transparent);
  }
  .stb.svelte-1b1dmb2.st-D {
    color: var(--err);
    background: color-mix(in srgb, var(--err) 12%, transparent);
  }
  .stb.svelte-1b1dmb2.st-M,
  .stb.svelte-1b1dmb2.st-C {
    color: var(--warn);
    background: color-mix(in srgb, var(--warn) 12%, transparent);
  }
  .stb.svelte-1b1dmb2.st-R {
    color: var(--accent);
    background: var(--accent-soft);
  }
  .rv-name.svelte-1b1dmb2 {
    flex: 1;
    min-width: 0;
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
    direction: rtl;
    text-align: left;
    font-family: var(--font-mono);
    font-size: 12px;
  }
  .rv-name.svelte-1b1dmb2::after {
    content: "\200e";
  }
  .rv-from.svelte-1b1dmb2 {
    color: var(--text3);
  }
  .rv-bin.svelte-1b1dmb2 {
    flex: none;
    font-size: 11.5px;
    color: var(--text3);
  }
  .rv-count.svelte-1b1dmb2 {
    flex: none;
    font-size: 12px;
    font-variant-numeric: tabular-nums;
    font-family: var(--font-mono);
  }
  .rv-count.add.svelte-1b1dmb2 {
    color: var(--ok);
  }
  .rv-count.del.svelte-1b1dmb2 {
    color: var(--err);
  }

  .rv-diff.svelte-1b1dmb2 {
    margin: 2px 0 8px 20px;
    border: 1px solid var(--border);
    border-radius: var(--r-ctl);
    overflow: hidden;
    background: var(--code-bg);
  }
  .rv-dload.svelte-1b1dmb2 {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    color: var(--text3);
    font-size: 12.5px;
    padding: 16px;
  }
  .rv-code.svelte-1b1dmb2 {
    overflow-x: auto;
    font-family: var(--font-mono);
    font-size: 12px;
    line-height: 1.5;
    padding: 6px 0;
  }
  .dl.svelte-1b1dmb2 {
    white-space: pre;
    padding: 0 10px;
    min-width: max-content;
    color: var(--text2);
  }
  /* dl 行类同样是插值拼的（da/dd/dh/dm）——:global 防剪 */
  .dl.svelte-1b1dmb2.da {
    background: color-mix(in srgb, var(--ok) 11%, transparent);
    color: var(--text);
  }
  .dl.svelte-1b1dmb2.dd {
    background: color-mix(in srgb, var(--err) 10%, transparent);
    color: var(--text);
  }
  .dl.svelte-1b1dmb2.dh {
    color: var(--accent);
    background: var(--accent-soft);
    padding-top: 2px;
    padding-bottom: 2px;
  }
  .dl.svelte-1b1dmb2.dm {
    color: var(--text3);
  }

  .spin.svelte-1b1dmb2 {
    width: 14px;
    height: 14px;
    border: 2px solid var(--border2);
    border-top-color: var(--accent);
    border-radius: 50%;
    animation: spin 0.8s linear infinite;
    flex: none;
  }
/**
 * Copyright (c) 2014 The xterm.js authors. All rights reserved.
 * Copyright (c) 2012-2013, Christopher Jeffrey (MIT License)
 * https://github.com/chjj/term.js
 * @license MIT
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 *
 * Originally forked from (with the author's permission):
 *   Fabrice Bellard's javascript vt100 for jslinux:
 *   http://bellard.org/jslinux/
 *   Copyright (c) 2011 Fabrice Bellard
 *   The original design remains. The terminal itself
 *   has been extended to include xterm CSI codes, among
 *   other features.
 */

/**
 *  Default styles for xterm.js
 */

.xterm {
    cursor: text;
    position: relative;
    user-select: none;
    -ms-user-select: none;
    -webkit-user-select: none;
}

.xterm.focus,
.xterm:focus {
    outline: none;
}

.xterm .xterm-helpers {
    position: absolute;
    top: 0;
    /**
     * The z-index of the helpers must be higher than the canvases in order for
     * IMEs to appear on top.
     */
    z-index: 5;
}

.xterm .xterm-helper-textarea {
    padding: 0;
    border: 0;
    margin: 0;
    /* Move textarea out of the screen to the far left, so that the cursor is not visible */
    position: absolute;
    opacity: 0;
    left: -9999em;
    top: 0;
    width: 0;
    height: 0;
    z-index: -5;
    /** Prevent wrapping so the IME appears against the textarea at the correct position */
    white-space: nowrap;
    overflow: hidden;
    resize: none;
}

.xterm .composition-view {
    /* TODO: Composition position got messed up somewhere */
    background: #000;
    color: #FFF;
    display: none;
    position: absolute;
    white-space: nowrap;
    z-index: 1;
}

.xterm .composition-view.active {
    display: block;
}

.xterm .xterm-viewport {
    /* On OS X this is required in order for the scroll bar to appear fully opaque */
    background-color: #000;
    overflow-y: scroll;
    cursor: default;
    position: absolute;
    right: 0;
    left: 0;
    top: 0;
    bottom: 0;
}

.xterm .xterm-screen {
    position: relative;
}

.xterm .xterm-screen canvas {
    position: absolute;
    left: 0;
    top: 0;
}

.xterm .xterm-scroll-area {
    visibility: hidden;
}

.xterm-char-measure-element {
    display: inline-block;
    visibility: hidden;
    position: absolute;
    top: 0;
    left: -9999em;
    line-height: normal;
}

.xterm.enable-mouse-events {
    /* When mouse events are enabled (eg. tmux), revert to the standard pointer cursor */
    cursor: default;
}

.xterm.xterm-cursor-pointer,
.xterm .xterm-cursor-pointer {
    cursor: pointer;
}

.xterm.column-select.focus {
    /* Column selection mode */
    cursor: crosshair;
}

.xterm .xterm-accessibility:not(.debug),
.xterm .xterm-message {
    position: absolute;
    left: 0;
    top: 0;
    bottom: 0;
    right: 0;
    z-index: 10;
    color: transparent;
    pointer-events: none;
}

.xterm .xterm-accessibility-tree:not(.debug) *::selection {
  color: transparent;
}

.xterm .xterm-accessibility-tree {
  user-select: text;
  white-space: pre;
}

.xterm .live-region {
    position: absolute;
    left: -9999px;
    width: 1px;
    height: 1px;
    overflow: hidden;
}

.xterm-dim {
    /* Dim should not apply to background, so the opacity of the foreground color is applied
     * explicitly in the generated class and reset to 1 here */
    opacity: 1 !important;
}

.xterm-underline-1 { text-decoration: underline; }
.xterm-underline-2 { text-decoration: double underline; }
.xterm-underline-3 { text-decoration: wavy underline; }
.xterm-underline-4 { text-decoration: dotted underline; }
.xterm-underline-5 { text-decoration: dashed underline; }

.xterm-overline {
    text-decoration: overline;
}

.xterm-overline.xterm-underline-1 { text-decoration: overline underline; }
.xterm-overline.xterm-underline-2 { text-decoration: overline double underline; }
.xterm-overline.xterm-underline-3 { text-decoration: overline wavy underline; }
.xterm-overline.xterm-underline-4 { text-decoration: overline dotted underline; }
.xterm-overline.xterm-underline-5 { text-decoration: overline dashed underline; }

.xterm-strikethrough {
    text-decoration: line-through;
}

.xterm-screen .xterm-decoration-container .xterm-decoration {
	z-index: 6;
	position: absolute;
}

.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer {
	z-index: 7;
}

.xterm-decoration-overview-ruler {
    z-index: 8;
    position: absolute;
    top: 0;
    right: 0;
    pointer-events: none;
}

.xterm-decoration-top {
    z-index: 2;
    position: relative;
}

  .tm.svelte-1amwip8 {
    flex: 1;
    min-height: 0;
    display: flex;
    flex-direction: column;
  }

  /* 面板头（与标签条/面包屑/审阅头同一条顶栏带） */
  .tm-head.svelte-1amwip8 {
    display: flex;
    align-items: center;
    gap: 7px;
    height: var(--hx-band, 44px);
    padding: 0 calc(8px + var(--hx-pane-r, 0px)) 0 10px;
    border-bottom: 1px solid var(--border);
    flex: none;
    color: var(--text3);
  }
  .tm-title.svelte-1amwip8 {
    font-family: var(--font-mono);
    font-size: 12px;
    color: var(--text2);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    min-width: 0;
  }
  .tm-dot.svelte-1amwip8 {
    width: 6px;
    height: 6px;
    border-radius: 2px;
    background: var(--border2);
    flex: none;
    transition: background var(--t-med) var(--ease);
  }
  .tm-dot.on.svelte-1amwip8 {
    background: var(--ok);
  }
  .tm-dot.off.svelte-1amwip8 {
    background: var(--warn);
  }
  .tm-sp.svelte-1amwip8 {
    flex: 1;
  }
  .tm-hbtn.svelte-1amwip8 {
    width: 28px;
    height: 28px;
    border-radius: 8px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--text3);
    flex: none;
    transition: background var(--t-fast) var(--ease), color var(--t-fast) var(--ease),
      transform var(--t-fast) var(--ease);
  }
  @media (hover: hover) {
    .tm-hbtn.svelte-1amwip8:hover {
      background: var(--surface2);
      color: var(--text);
    }
  }
  .tm-hbtn.svelte-1amwip8:active {
    transform: scale(0.9);
  }

  .tm-stage.svelte-1amwip8 {
    flex: 1;
    min-height: 0;
    display: flex;
    flex-direction: column;
    position: relative;
    padding: 6px 6px 0;
  }
  .tm-body.svelte-1amwip8 {
    flex: 1;
    min-height: 0;
    border-radius: var(--r-ctl);
    overflow: hidden;
    background: var(--code-bg);
    border: 1px solid var(--border);
    padding: 6px 0 0 8px;
  }
  .tm-body.svelte-1amwip8 .xterm {
    height: 100%;
  }
  .tm-body.svelte-1amwip8 .xterm-viewport {
    background: transparent !important;
  }
  @media (pointer: fine) {
    .tm-body.svelte-1amwip8 .xterm-viewport::-webkit-scrollbar {
      width: 6px;
    }
    .tm-body.svelte-1amwip8 .xterm-viewport::-webkit-scrollbar-thumb {
      background: color-mix(in srgb, var(--text3) 38%, transparent);
      border-radius: 999px;
    }
  }

  .tm-veil.svelte-1amwip8 {
    position: absolute;
    inset: 6px 6px 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: color-mix(in srgb, var(--code-bg) 82%, transparent);
    backdrop-filter: blur(2px);
    color: var(--text3);
    font-size: 13px;
    border-radius: var(--r-ctl);
    z-index: 2;
  }
  .tm-exit-t.svelte-1amwip8 {
    color: var(--text2);
  }
  .tm-restart.svelte-1amwip8 {
    padding: 7px 16px;
    border-radius: var(--r-ctl);
    background: var(--primary);
    color: var(--on-primary);
    font-size: 13px;
    font-weight: 550;
    transition: transform var(--t-fast) var(--ease), opacity var(--t-fast) var(--ease);
  }
  @media (hover: hover) {
    .tm-restart.svelte-1amwip8:hover {
      opacity: 0.88;
    }
  }
  .tm-restart.svelte-1amwip8:active {
    transform: scale(0.95);
  }

  /* 移动快捷键条（桌面 pointer:fine 隐藏） */
  .tq.svelte-1amwip8 {
    flex: none;
    display: flex;
    align-items: center;
    gap: 5px;
    padding: 6px 8px;
    overflow-x: auto;
    scrollbar-width: none;
  }
  .tq.svelte-1amwip8::-webkit-scrollbar {
    display: none;
  }
  .tqk.svelte-1amwip8 {
    flex: none;
    padding: 5px 11px;
    border-radius: 8px;
    background: var(--surface2);
    color: var(--text2);
    font-size: 12px;
    font-family: var(--font-mono);
    transition: background var(--t-fast) var(--ease), color var(--t-fast) var(--ease),
      transform var(--t-fast) var(--ease);
  }
  .tqk.svelte-1amwip8:active {
    transform: scale(0.94);
    color: var(--text);
  }
  @media (hover: hover) {
    .tqk.svelte-1amwip8:hover {
      color: var(--text);
    }
  }
  @media (pointer: fine) {
    .tq.svelte-1amwip8 {
      display: none;
    }
  }

  .spin.svelte-1amwip8 {
    width: 14px;
    height: 14px;
    border: 2px solid var(--border2);
    border-top-color: var(--accent);
    border-radius: 50%;
    animation: spin 0.8s linear infinite;
  }

  .bview.svelte-ozn49b {
    flex: 1;
    min-height: 0;
    display: flex;
    flex-direction: column;
  }

  /* 导航行（Claude Desktop 式：左箭头组 + 居中药丸地址栏） */
  .nav.svelte-ozn49b {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 7px 10px;
    border-bottom: 1px solid var(--border);
    flex: none;
  }
  .nbtn.svelte-ozn49b {
    width: 28px;
    height: 28px;
    border-radius: 8px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--text3);
    flex: none;
    transition: all var(--t-fast) var(--ease);
  }
  .nbtn.fwd.svelte-ozn49b svg {
    transform: scaleX(-1);
  }
  @media (hover: hover) {
    .nbtn.svelte-ozn49b:hover {
      background: var(--surface2);
      color: var(--text);
    }
  }
  .nbtn.svelte-ozn49b:active {
    transform: scale(0.9);
  }
  .urlbar.svelte-ozn49b {
    flex: 1;
    display: flex;
    align-items: center;
    gap: 8px;
    background: var(--surface2);
    border-radius: 999px;
    padding: 0 12px;
    height: 30px;
    min-width: 0;
  }
  .urlbar.svelte-ozn49b input:where(.svelte-ozn49b) {
    flex: 1;
    border: 0;
    background: none;
    color: var(--text);
    font-size: 12.5px;
    font-family: var(--font-mono);
    min-width: 0;
    outline: none;
  }
  .live-ind.svelte-ozn49b {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: var(--border);
    flex: none;
    transition: background var(--t-fast) var(--ease);
  }
  .live-ind.on.svelte-ozn49b {
    background: var(--ok);
    animation: pulse-soft 1.8s ease infinite;
  }

  /* 「预览」：dev server 在跑时的一键入口；on = 当前页就在预览应用上 */
  .pv.svelte-ozn49b {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    height: 30px;
    padding: 0 11px;
    border-radius: 999px;
    background: var(--surface2);
    color: var(--text2, var(--text3));
    font-size: 12px;
    font-weight: 600;
    flex: none;
    transition: all var(--t-fast) var(--ease);
  }
  @media (hover: hover) {
    .pv.svelte-ozn49b:hover {
      color: var(--text);
    }
  }
  .pv.svelte-ozn49b:active {
    transform: scale(0.94);
  }
  .pv.on.svelte-ozn49b {
    background: color-mix(in srgb, var(--accent) 14%, transparent);
    color: var(--accent);
  }
  .pv-ext.svelte-ozn49b {
    padding: 0 9px;
  }

  /* 画布区：contain 适配 —— 帧整屏可见并居中，竖屏手机帧是悬浮的"手机"，
     不再撑满面板宽度爆出滚动条 */
  .stage.svelte-ozn49b {
    flex: 1;
    min-height: 0;
    overflow: hidden;
    background: var(--surface2);
    position: relative;
    outline: none;
    display: flex;
    align-items: center;
    justify-content: center;
  }
  .stage.svelte-ozn49b:focus-visible {
    box-shadow: inset 0 0 0 2px var(--accent);
  }
  .cwrap.svelte-ozn49b {
    position: relative;
    flex: none;
    overflow: hidden;
    transition: width 0.28s var(--ease), height 0.28s var(--ease);
  }
  .cwrap.portrait.svelte-ozn49b {
    border-radius: 16px;
    border: 1px solid var(--border);
    box-shadow: 0 10px 34px rgba(0, 0, 0, 0.25);
  }
  .cwrap.hide.svelte-ozn49b {
    visibility: hidden;
    position: absolute;
  }
  canvas.svelte-ozn49b {
    width: 100%;
    height: 100%;
    display: block;
    cursor: crosshair;
  }

  /* 视口档位按钮组（当前档高亮；agent resize 后靠帧尺寸自动点亮） */
  .devs.svelte-ozn49b {
    display: inline-flex;
    align-items: center;
    gap: 1px;
    background: var(--surface2);
    border-radius: 999px;
    padding: 2px;
    flex: none;
    transition: opacity var(--t-fast) var(--ease);
  }
  .devs.off.svelte-ozn49b {
    opacity: 0.45;
  }
  .dbtn.svelte-ozn49b {
    width: 26px;
    height: 26px;
    border-radius: 999px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--text3);
    transition: all var(--t-fast) var(--ease);
  }
  @media (hover: hover) {
    .dbtn.svelte-ozn49b:hover:not(:disabled) {
      color: var(--text);
    }
  }
  .dbtn.svelte-ozn49b:active:not(:disabled) {
    transform: scale(0.9);
  }
  .dbtn.on.svelte-ozn49b {
    background: var(--surface);
    color: var(--accent);
    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.12);
  }

  /* 当前视口尺寸角标 */
  .vpsize.svelte-ozn49b {
    position: absolute;
    right: 8px;
    bottom: 7px;
    font-family: var(--font-mono);
    font-size: 10.5px;
    color: var(--text3);
    background: color-mix(in srgb, var(--surface) 72%, transparent);
    backdrop-filter: blur(6px);
    padding: 2px 7px;
    border-radius: 999px;
    pointer-events: none;
    z-index: 4;
  }

  /* agent 光标（帧坐标按百分比映射，随面板宽度自适应） */
  .aptr.svelte-ozn49b {
    position: absolute;
    pointer-events: none;
    opacity: 0;
    transition: opacity 0.3s var(--ease), left 0.12s linear, top 0.12s linear;
    z-index: 3;
    filter: drop-shadow(0 1px 3px rgba(0, 0, 0, 0.35));
  }
  .aptr.on.svelte-ozn49b {
    opacity: 1;
  }
  .aptr-tag.svelte-ozn49b {
    position: absolute;
    left: 14px;
    top: 15px;
    background: var(--accent);
    color: #fff;
    font-size: 9.5px;
    font-weight: 650;
    line-height: 1;
    padding: 3px 6px;
    border-radius: 999px;
    letter-spacing: 0.03em;
    white-space: nowrap;
  }
  .ripple.svelte-ozn49b {
    position: absolute;
    width: 36px;
    height: 36px;
    margin: -18px 0 0 -18px;
    border-radius: 50%;
    border: 2.5px solid var(--accent);
    pointer-events: none;
    z-index: 2;
    animation: svelte-ozn49b-ripple-out 0.55s var(--ease) both;
  }
  @keyframes svelte-ozn49b-ripple-out {
    from {
      transform: scale(0.25);
      opacity: 0.95;
    }
    to {
      transform: scale(1.15);
      opacity: 0;
    }
  }

  .empty.svelte-ozn49b {
    position: absolute;
    inset: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 8px;
    color: var(--text3);
    text-align: center;
    padding: 24px;
  }
  .empty.svelte-ozn49b p:where(.svelte-ozn49b) {
    font-size: 13.5px;
    font-weight: 550;
    color: var(--text2, var(--text3));
  }
  .empty.svelte-ozn49b span:where(.svelte-ozn49b) {
    font-size: 12px;
    max-width: 260px;
    line-height: 1.6;
  }
  .spin.svelte-ozn49b {
    width: 18px;
    height: 18px;
    border-radius: 50%;
    border: 2px solid var(--border);
    border-top-color: var(--text3);
    animation: svelte-ozn49b-rot 0.8s linear infinite;
  }
  @keyframes svelte-ozn49b-rot {
    to {
      transform: rotate(360deg);
    }
  }

  .bpane.svelte-1ulvm7s {
    flex: 1;
    min-height: 0;
    display: flex;
    flex-direction: column;
    min-width: 0;
  }
  .bbody.svelte-1ulvm7s {
    flex: 1;
    min-height: 0;
    display: flex;
    flex-direction: column;
  }

  /* Claude Desktop 式标签条 —— 四个工具面板共用同一条顶栏带高度；
     右内边距吃 --hx-pane-r（桌面壳里面板贴着窗口右缘，让开系统窗控） */
  .tabstrip.svelte-1ulvm7s {
    display: flex;
    align-items: center;
    gap: 4px;
    height: var(--hx-band, 44px);
    padding: 0 calc(8px + var(--hx-pane-r, 0px)) 0 8px;
    border-bottom: 1px solid var(--border);
    flex: none;
    min-width: 0;
  }
  .tabs.svelte-1ulvm7s {
    display: flex;
    align-items: center;
    gap: 4px;
    min-width: 0;
    overflow-x: auto;
    scrollbar-width: none;
    flex: none;
    max-width: 100%;
  }
  .tabs.svelte-1ulvm7s::-webkit-scrollbar {
    display: none;
  }
  .tab.svelte-1ulvm7s {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    height: 30px;
    padding: 0 6px 0 11px;
    border-radius: 9px;
    color: var(--text3);
    font-size: 12.5px;
    font-weight: 550;
    min-width: 0;
    max-width: 168px;
    flex: none;
    cursor: pointer;
    user-select: none;
    transition: all var(--t-fast) var(--ease);
  }
  @media (hover: hover) {
    .tab.svelte-1ulvm7s:hover {
      background: color-mix(in srgb, var(--surface2) 60%, transparent);
      color: var(--text2, var(--text3));
    }
  }
  .tab.active.svelte-1ulvm7s {
    background: var(--surface2);
    color: var(--text);
  }
  .tab-t.svelte-1ulvm7s {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    min-width: 0;
  }
  .tabx.svelte-1ulvm7s {
    width: 18px;
    height: 18px;
    border-radius: 6px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--text3);
    flex: none;
    opacity: 0.55;
    transition: all var(--t-fast) var(--ease);
  }
  @media (hover: hover) {
    .tabx.svelte-1ulvm7s:hover {
      background: var(--border);
      color: var(--text);
      opacity: 1;
    }
  }
  .tabx.svelte-1ulvm7s:active {
    transform: scale(0.85);
  }
  .tabplus.svelte-1ulvm7s {
    flex: none;
  }
  .spacer.svelte-1ulvm7s {
    flex: 1;
  }

  .pbtn.svelte-1ulvm7s {
    width: 28px;
    height: 28px;
    border-radius: 8px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--text3);
    flex: none;
    transition: all var(--t-fast) var(--ease);
  }
  @media (hover: hover) {
    .pbtn.svelte-1ulvm7s:hover {
      background: var(--surface2);
      color: var(--text);
    }
  }
  .pbtn.svelte-1ulvm7s:active {
    transform: scale(0.9);
  }

  .wd.svelte-1ysgnkc {
    display: flex;
    flex-direction: column;
    gap: 14px;
    border: 1px solid var(--border);
    border-radius: var(--r-card);
    background: var(--surface);
    padding: 11px 11px 12px;
    min-width: 0;
  }
  .wd.live.svelte-1ysgnkc {
    border-color: color-mix(in srgb, var(--accent) 30%, var(--border));
  }
  /* 从对话里点进来定位到的那张：维度紫描边一闪 */
  .wd.focused.svelte-1ysgnkc {
    animation: svelte-1ysgnkc-wd-focus 1.6s ease-out;
  }
  @keyframes svelte-1ysgnkc-wd-focus {
    0%,
    40% {
      box-shadow: 0 0 0 2px color-mix(in srgb, var(--accent) 55%, transparent);
    }
    100% {
      box-shadow: 0 0 0 0 transparent;
    }
  }

  .wd-head.svelte-1ysgnkc {
    display: flex;
    flex-direction: column;
    gap: 5px;
    min-width: 0;
  }
  .wd-trow.svelte-1ysgnkc {
    display: flex;
    align-items: flex-start;
    gap: 7px;
    min-width: 0;
  }
  .wd-ic.svelte-1ysgnkc {
    display: inline-flex;
    align-items: center;
    height: 20px;
    color: var(--text2);
    flex: none;
  }
  .wd-title.svelte-1ysgnkc {
    flex: 1;
    min-width: 0;
    font-size: 14px;
    line-height: 20px;
    font-weight: 600;
    color: var(--text);
    overflow-wrap: anywhere;
  }
  .wd-dur.svelte-1ysgnkc {
    flex: none;
    line-height: 20px;
    color: var(--text3);
  }
  .wd-meta.svelte-1ysgnkc {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    column-gap: 9px;
    row-gap: 2px;
    padding-left: 21px;
    font-size: 12px;
    line-height: 16px;
    color: var(--text3);
  }
  .wd-meta.svelte-1ysgnkc b:where(.svelte-1ysgnkc) {
    font-weight: 560;
    color: var(--text2);
  }
  .wd-desc.svelte-1ysgnkc {
    margin: 2px 0 0 21px;
    font-size: 12px;
    line-height: 17px;
    color: var(--text3);
    overflow-wrap: anywhere;
  }
  .wd-reason.svelte-1ysgnkc {
    display: flex;
    flex-direction: column;
    gap: 3px;
    margin: 4px 0 0 21px;
    padding: 7px 9px 8px;
    border-radius: 7px;
    background: var(--surface2);
  }
  .wd-reason.bad.svelte-1ysgnkc {
    background: color-mix(in srgb, var(--err) 9%, transparent);
  }
  .wd-rh.svelte-1ysgnkc {
    font-size: 11.5px;
    color: var(--text3);
  }
  .wd-reason.bad.svelte-1ysgnkc .wd-rh:where(.svelte-1ysgnkc) {
    color: var(--err);
  }
  .wd-rb.svelte-1ysgnkc {
    display: block;
    max-height: 120px;
    overflow-y: auto;
    font-size: 12px;
    line-height: 17px;
    color: var(--text2);
    white-space: pre-wrap;
    overflow-wrap: anywhere;
    user-select: text;
  }

  /* 阶段树 */
  .wd-phases.svelte-1ysgnkc {
    display: flex;
    flex-direction: column;
    gap: 5px;
  }
  .wd-ph-h.svelte-1ysgnkc {
    font-family: var(--font-mono);
    font-size: 10px;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--text3);
    padding-left: 2px;
  }
  .ph-list.svelte-1ysgnkc {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 2px;
  }
  .ph.svelte-1ysgnkc {
    display: flex;
    flex-direction: column;
    gap: 7px;
  }
  .ph.open.svelte-1ysgnkc {
    padding-bottom: 10px;
  }
  .ph-btn.svelte-1ysgnkc {
    width: 100%;
    display: flex;
    flex-direction: column;
    gap: 5px;
    padding: 5px 8px 7px;
    border-radius: 7px;
    text-align: left;
    transition: background var(--t-fast) var(--ease);
  }
  .ph-btn.open.svelte-1ysgnkc {
    background: var(--surface2);
  }
  @media (hover: hover) {
    .ph-btn.svelte-1ysgnkc:not(.open):hover {
      background: var(--surface2);
    }
  }
  .ph-row.svelte-1ysgnkc {
    display: flex;
    align-items: center;
    gap: 8px;
    min-width: 0;
  }
  /* 阶段节点：方形小格，状态修饰类是插值拼的 → :global */
  .ph-node.svelte-1ysgnkc {
    width: 7px;
    height: 7px;
    border-radius: 2px;
    flex: none;
    background: var(--border2);
  }
  .ph-node.svelte-1ysgnkc.done {
    background: var(--ok);
  }
  .ph-node.svelte-1ysgnkc.running {
    background: var(--accent);
    animation: svelte-1ysgnkc-ph-pulse 1.2s ease-in-out infinite;
  }
  .ph-node.svelte-1ysgnkc.error {
    background: var(--err);
  }
  @keyframes svelte-1ysgnkc-ph-pulse {
    50% {
      opacity: 0.35;
    }
  }
  .ph-title.svelte-1ysgnkc {
    flex: 1;
    min-width: 0;
    font-size: 12.5px;
    line-height: 18px;
    font-weight: 560;
    color: var(--text);
    overflow-wrap: anywhere;
  }
  .ph-title.dim.svelte-1ysgnkc {
    color: var(--text2);
    font-weight: 500;
  }
  .ph-title.warn.svelte-1ysgnkc {
    color: var(--warn);
  }
  .ph-title.bad.svelte-1ysgnkc {
    color: var(--err);
  }
  .ph-count.svelte-1ysgnkc {
    flex: none;
    color: var(--text3);
  }
  .ph-chev.svelte-1ysgnkc {
    display: inline-flex;
    flex: none;
    color: var(--text3);
    opacity: 0.7;
    transition: transform var(--t-fast) var(--ease);
  }
  .ph-chev.svelte-1ysgnkc:not(.rot) {
    transform: rotate(-90deg);
  }
  .ph-detail.svelte-1ysgnkc {
    padding-left: 15px;
    font-size: 11.5px;
    line-height: 16px;
    color: var(--text3);
    overflow-wrap: anywhere;
  }
  .ph-dots.svelte-1ysgnkc {
    display: block;
    padding-left: 15px;
  }

  /* 四列 agent 表 */
  .ag-empty.svelte-1ysgnkc {
    padding-left: 23px;
    font-size: 12px;
    line-height: 16px;
    color: var(--text3);
  }
  .ag-grid.svelte-1ysgnkc {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, max-content) 50px minmax(48px, max-content);
    grid-auto-rows: 20px;
    align-items: center;
    column-gap: 10px;
    row-gap: 2px;
    padding: 0 8px 0 10px;
    font-size: 12px;
    line-height: 16px;
  }
  .ag-h.svelte-1ysgnkc {
    font-size: 11px;
    color: var(--text3);
    white-space: nowrap;
  }
  .r.svelte-1ysgnkc {
    text-align: right;
    justify-self: end;
  }
  .ag-name.svelte-1ysgnkc {
    display: flex;
    align-items: center;
    gap: 7px;
    min-width: 0;
    height: 20px;
    padding: 0;
    border-radius: 4px;
    text-align: left;
    color: var(--text);
  }
  .ag-name.dim.svelte-1ysgnkc {
    color: var(--text2);
  }
  .ag-lbl.svelte-1ysgnkc {
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
    text-decoration: underline;
    text-decoration-color: transparent;
    text-underline-offset: 2px;
    transition: text-decoration-color var(--t-fast) var(--ease);
  }
  @media (hover: hover) {
    .ag-name.svelte-1ysgnkc:hover .ag-lbl:where(.svelte-1ysgnkc) {
      text-decoration-color: currentColor;
      color: var(--text);
    }
  }
  .ag-st.svelte-1ysgnkc {
    width: 6px;
    height: 6px;
    border-radius: 1.5px;
    flex: none;
    border: 1px solid transparent;
  }
  .ag-st.svelte-1ysgnkc.done {
    background: var(--ok);
  }
  .ag-st.svelte-1ysgnkc.running {
    background: var(--accent);
  }
  .ag-st.svelte-1ysgnkc.stalled {
    background: var(--warn);
  }
  .ag-st.svelte-1ysgnkc.error {
    background: var(--err);
  }
  .ag-st.svelte-1ysgnkc.pending {
    border-color: var(--border2);
  }
  .ag-c.svelte-1ysgnkc {
    min-width: 0;
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
    color: var(--text2);
  }
  .ag-c.dim.svelte-1ysgnkc {
    color: var(--text3);
  }
  .ag-err.svelte-1ysgnkc {
    grid-column: span 3;
    justify-self: end;
    color: var(--err);
    cursor: default;
  }

  .wd-logs.svelte-1ysgnkc {
    display: flex;
    flex-direction: column;
    gap: 4px;
  }
  .wd-tog.svelte-1ysgnkc {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    align-self: flex-start;
    font-size: 11.5px;
    color: var(--text3);
    padding: 2px 4px 2px 2px;
    border-radius: 5px;
  }
  .wd-tchev.svelte-1ysgnkc {
    display: inline-flex;
    transition: transform var(--t-fast) var(--ease);
  }
  .wd-tchev.rot.svelte-1ysgnkc {
    transform: rotate(-90deg);
  }
  .wd-loglist.svelte-1ysgnkc {
    display: flex;
    flex-direction: column;
    gap: 2px;
    max-height: 220px;
    overflow-y: auto;
  }
  .wd-log.svelte-1ysgnkc {
    font-family: var(--font-mono);
    font-size: 11px;
    line-height: 16px;
    color: var(--text3);
    white-space: pre-wrap;
    overflow-wrap: anywhere;
  }
  .wd-log.tail.svelte-1ysgnkc {
    padding-left: 18px;
  }

  .wd-result.svelte-1ysgnkc summary:where(.svelte-1ysgnkc) {
    font-size: 11.5px;
    color: var(--text3);
    cursor: pointer;
  }
  .wd-result.svelte-1ysgnkc pre:where(.svelte-1ysgnkc) {
    margin: 6px 0 0;
    font-family: var(--font-mono);
    font-size: 11.5px;
    line-height: 1.5;
    background: var(--code-bg);
    border: 1px solid var(--border);
    border-radius: var(--r-ctl);
    padding: 8px 10px;
    white-space: pre-wrap;
    overflow-wrap: anywhere;
    max-height: 260px;
    overflow: auto;
  }

  .num.svelte-1ysgnkc {
    font-family: var(--font-mono);
    font-size: 11px;
    font-variant-numeric: tabular-nums;
  }
  .bad.svelte-1ysgnkc {
    color: var(--err);
  }

  .shine.svelte-1ysgnkc {
    color: var(--text);
    background-image: linear-gradient(
      110deg,
      color-mix(in srgb, var(--text) 58%, transparent) 30%,
      color-mix(in srgb, var(--accent) 55%, var(--text)) 50%,
      color-mix(in srgb, var(--text) 58%, transparent) 70%
    );
    background-size: 220% 100%;
    background-position: 130% 0;
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    animation: svelte-1ysgnkc-wd-shine 2.6s cubic-bezier(0.5, 0.05, 0.45, 0.95) infinite;
  }
  @keyframes svelte-1ysgnkc-wd-shine {
    0%,
    18% {
      background-position: 130% 0;
    }
    80%,
    100% {
      background-position: -30% 0;
    }
  }
  @media (prefers-reduced-motion: reduce) {
    .shine.svelte-1ysgnkc,
    .wd.focused.svelte-1ysgnkc,
    .ph-node.svelte-1ysgnkc.running {
      animation: none;
    }
  }

  .tk.svelte-1o67we1 {
    display: flex;
    flex-direction: column;
    gap: 5px;
    border: 1px solid var(--border);
    border-radius: var(--r-card);
    background: var(--surface);
    padding: 10px 11px 9px;
    min-width: 0;
  }
  .tk.live.svelte-1o67we1 {
    border-color: color-mix(in srgb, var(--accent) 30%, var(--border));
  }
  .tk.focused.svelte-1o67we1 {
    animation: svelte-1o67we1-tk-focus 1.6s ease-out;
  }
  @keyframes svelte-1o67we1-tk-focus {
    0%,
    40% {
      box-shadow: 0 0 0 2px color-mix(in srgb, var(--accent) 55%, transparent);
    }
    100% {
      box-shadow: 0 0 0 0 transparent;
    }
  }
  .tk-top.svelte-1o67we1 {
    display: flex;
    align-items: flex-start;
    gap: 7px;
    width: 100%;
    min-width: 0;
    text-align: left;
  }
  .tk-ic.svelte-1o67we1,
  .tk-chev.svelte-1o67we1 {
    display: inline-flex;
    align-items: center;
    height: 20px;
    flex: none;
    color: var(--text2);
  }
  .tk-chev.svelte-1o67we1 {
    color: var(--text3);
    opacity: 0.7;
    transition: transform var(--t-fast) var(--ease);
  }
  .tk-chev.svelte-1o67we1:not(.rot) {
    transform: rotate(-90deg);
  }
  .tk-title.svelte-1o67we1 {
    flex: 1;
    min-width: 0;
    font-size: 14px;
    line-height: 20px;
    font-weight: 600;
    color: var(--text);
    overflow-wrap: anywhere;
  }
  .tk-meta.svelte-1o67we1 {
    display: flex;
    flex-direction: column;
    gap: 3px;
    padding-left: 21px;
    font-size: 12px;
    line-height: 16px;
    color: var(--text3);
  }
  .tk-row.svelte-1o67we1 {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    column-gap: 9px;
    row-gap: 2px;
    min-width: 0;
  }
  .tk-row.svelte-1o67we1 b:where(.svelte-1o67we1) {
    font-weight: 560;
    color: var(--text2);
  }
  .t2.svelte-1o67we1 {
    color: var(--text2);
  }
  .chip.svelte-1o67we1 {
    font-family: var(--font-mono);
    font-size: 10px;
    line-height: 14px;
    padding: 0 6px;
    border-radius: 999px;
    border: 1px solid var(--border2);
    color: var(--text3);
  }
  .chip.coder.svelte-1o67we1 {
    color: var(--accent);
    border-color: color-mix(in srgb, var(--accent) 45%, transparent);
  }
  .tk-cur.svelte-1o67we1 {
    max-width: 100%;
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
    color: var(--text2);
  }
  .mono.svelte-1o67we1 {
    font-family: var(--font-mono);
    font-size: 11px;
    color: var(--text3);
  }
  .tk-link.svelte-1o67we1 {
    font-size: 12px;
    line-height: 16px;
    color: var(--accent);
    padding: 0;
    border-radius: 3px;
  }
  @media (hover: hover) {
    .tk-link.svelte-1o67we1:hover {
      text-decoration: underline;
      text-underline-offset: 2px;
    }
  }
  .tk-body.svelte-1o67we1 {
    display: flex;
    flex-direction: column;
    gap: 7px;
    padding: 4px 0 3px 21px;
    user-select: text;
  }
  .tk-pre.svelte-1o67we1 {
    margin: 0;
    font-family: var(--font-mono);
    font-size: 11.5px;
    line-height: 1.5;
    background: var(--code-bg);
    border: 1px solid var(--border);
    border-radius: var(--r-ctl);
    padding: 8px 10px;
    white-space: pre-wrap;
    overflow-wrap: anywhere;
    max-height: 200px;
    overflow: auto;
    color: var(--text2);
  }
  .tk-out.svelte-1o67we1 {
    font-size: 12.5px;
    line-height: 18px;
    color: var(--text2);
    white-space: pre-wrap;
    overflow-wrap: anywhere;
    max-height: 240px;
    overflow: auto;
  }
  .tk-note.svelte-1o67we1 {
    font-size: 12.5px;
    color: var(--text3);
  }
  .num.svelte-1o67we1 {
    font-family: var(--font-mono);
    font-size: 11px;
    font-variant-numeric: tabular-nums;
  }
  .bad.svelte-1o67we1 {
    color: var(--err);
  }
  .shine.svelte-1o67we1 {
    color: var(--text);
    background-image: linear-gradient(
      110deg,
      color-mix(in srgb, var(--text) 58%, transparent) 30%,
      color-mix(in srgb, var(--accent) 55%, var(--text)) 50%,
      color-mix(in srgb, var(--text) 58%, transparent) 70%
    );
    background-size: 220% 100%;
    background-position: 130% 0;
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    animation: svelte-1o67we1-tk-shine 2.6s cubic-bezier(0.5, 0.05, 0.45, 0.95) infinite;
  }
  @keyframes svelte-1o67we1-tk-shine {
    0%,
    18% {
      background-position: 130% 0;
    }
    80%,
    100% {
      background-position: -30% 0;
    }
  }
  @media (prefers-reduced-motion: reduce) {
    .shine.svelte-1o67we1,
    .tk.focused.svelte-1o67we1 {
      animation: none;
    }
  }

  .tr.svelte-yuycvx {
    display: flex;
    flex-direction: column;
    gap: 10px;
    min-width: 0;
    overflow-wrap: anywhere;
  }
  .tr-model.svelte-yuycvx {
    margin: 0;
    font-size: 12px;
    line-height: 16px;
    color: var(--text3);
  }
  .t2.svelte-yuycvx {
    color: var(--text2);
    font-family: var(--font-mono);
    font-size: 11.5px;
  }
  .tr-user.svelte-yuycvx {
    display: flex;
    justify-content: flex-end;
  }
  /* prompt 气泡 = 时间线用户气泡同款（右上小切角） */
  .bubble.svelte-yuycvx {
    background: var(--user-bubble);
    color: var(--on-user-bubble);
    border: 1px solid var(--border);
    border-radius: var(--r-bubble);
    border-start-end-radius: 4px;
    padding: 8px 12px;
    font-size: 13px;
    line-height: 1.55;
    max-width: 92%;
    white-space: pre-wrap;
    max-height: 260px;
    overflow: auto;
  }

  .tr-steps.svelte-yuycvx {
    display: flex;
    flex-direction: column;
    gap: 1px;
    border: 1px solid var(--border);
    border-radius: var(--r-ctl);
    padding: 5px 8px;
    background: color-mix(in srgb, var(--surface) 70%, transparent);
  }
  .step.svelte-yuycvx {
    display: flex;
    align-items: center;
    gap: 7px;
    font-size: 12px;
    min-height: 23px;
    min-width: 0;
  }
  .sst.svelte-yuycvx {
    width: 6px;
    height: 6px;
    border-radius: 2px;
    background: var(--border2);
    flex: none;
  }
  .sst.svelte-yuycvx.ok {
    background: var(--ok);
  }
  .sst.svelte-yuycvx.fail,
  .sst.svelte-yuycvx.denied {
    background: var(--err);
  }
  .sst.svelte-yuycvx.running {
    background: var(--accent);
    animation: svelte-yuycvx-st-pulse 1s ease-in-out infinite;
  }
  @keyframes svelte-yuycvx-st-pulse {
    50% {
      opacity: 0.35;
    }
  }
  .sicon.svelte-yuycvx {
    color: var(--text2);
    display: inline-flex;
    flex: none;
  }
  .sverb.svelte-yuycvx {
    color: var(--text);
    flex: none;
  }
  .sarg.svelte-yuycvx {
    font-family: var(--font-mono);
    font-size: 11px;
    color: var(--text3);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    min-width: 0;
    flex: 0 1 auto;
  }
  .ssum.svelte-yuycvx {
    margin-left: auto;
    padding-left: 6px;
    font-size: 11px;
    color: var(--text3);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 40%;
    flex: 0 1 auto;
  }

  .sec.svelte-yuycvx {
    font-family: var(--font-mono);
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: var(--text3);
    margin-bottom: -4px;
  }
  .code.svelte-yuycvx {
    margin: 0;
    font-family: var(--font-mono);
    font-size: 11.5px;
    line-height: 1.5;
    background: var(--code-bg);
    border: 1px solid var(--border);
    border-radius: var(--r-ctl);
    padding: 8px 10px;
    white-space: pre-wrap;
    word-break: break-word;
    max-height: 320px;
    overflow: auto;
  }
  .tr-md.svelte-yuycvx {
    font-size: 13.5px;
    line-height: 1.65;
    color: var(--text);
    min-width: 0;
  }
  .tr-err.svelte-yuycvx {
    margin: 0;
    font-size: 12.5px;
    line-height: 18px;
    color: var(--err);
    white-space: pre-wrap;
  }
  .tr-live.svelte-yuycvx {
    display: flex;
    align-items: center;
    gap: 9px;
    font-size: 12.5px;
    color: var(--text3);
  }
  .tr-note.svelte-yuycvx {
    font-size: 12.5px;
    line-height: 18px;
    color: var(--text3);
  }
  .tr-status.svelte-yuycvx {
    margin: 2px 0 0;
    padding-top: 9px;
    border-top: 1px solid var(--border);
    font-size: 12px;
    line-height: 16px;
    color: var(--text3);
    font-variant-numeric: tabular-nums;
  }

  .tp.svelte-m0gssc {
    flex: 1;
    min-height: 0;
    display: flex;
    flex-direction: column;
  }
  /* 面板头 = 与审阅/终端/浏览器同一条顶栏带 */
  .tp-head.svelte-m0gssc {
    display: flex;
    align-items: center;
    gap: 8px;
    height: var(--hx-band, 44px);
    padding: 0 calc(10px + var(--hx-pane-r, 0px)) 0 12px;
    border-bottom: 1px solid var(--border);
    flex: none;
    min-width: 0;
  }
  .tp-hic.svelte-m0gssc {
    display: inline-flex;
    color: var(--text3);
  }
  .tp-title.svelte-m0gssc {
    font-size: 13px;
    font-weight: 600;
    color: var(--text);
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
    min-width: 0;
  }
  .tp-count.svelte-m0gssc {
    margin-left: auto;
    font-family: var(--font-mono);
    font-size: 11px;
    color: var(--text3);
    white-space: nowrap;
    flex: none;
  }
  .tp-back.svelte-m0gssc {
    width: 30px;
    height: 30px;
    margin-left: -6px;
    border-radius: var(--r-ctl);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--text2);
    flex: none;
    transition: background var(--t-fast) var(--ease), transform var(--t-fast) var(--ease);
  }
  @media (hover: hover) {
    .tp-back.svelte-m0gssc:hover {
      background: var(--surface2);
      color: var(--text);
    }
  }
  .tp-back.svelte-m0gssc:active {
    transform: scale(0.92);
  }
  .tp-tag.svelte-m0gssc {
    margin-left: auto;
    flex: none;
    font-size: 11px;
    color: var(--text3);
    border: 1px solid var(--border2);
    border-radius: 999px;
    padding: 1px 8px;
  }

  .tp-scroll.svelte-m0gssc {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
    padding: 12px 12px 28px;
    display: flex;
    flex-direction: column;
    gap: 18px;
  }
  .tp-tr.svelte-m0gssc {
    padding-top: 14px;
  }

  .tp-sec.svelte-m0gssc {
    display: flex;
    flex-direction: column;
    gap: 8px;
  }
  .tp-sech.svelte-m0gssc {
    display: flex;
    align-items: center;
    gap: 6px;
    min-height: 24px;
    padding: 0 2px;
  }
  .tp-sech.svelte-m0gssc h3:where(.svelte-m0gssc) {
    margin: 0;
    font-size: 12px;
    font-weight: 560;
    color: var(--text2);
  }
  .tp-n.svelte-m0gssc {
    font-family: var(--font-mono);
    font-size: 11px;
    color: var(--text3);
  }
  .tp-fold.svelte-m0gssc {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 2px 4px;
    margin-left: -4px;
    border-radius: 6px;
  }
  .tp-chev.svelte-m0gssc {
    display: inline-flex;
    color: var(--text3);
    transition: transform var(--t-fast) var(--ease);
  }
  .tp-chev.rot.svelte-m0gssc {
    transform: rotate(-90deg);
  }
  .tp-clear.svelte-m0gssc {
    margin-left: auto;
    font-size: 12px;
    color: var(--text3);
    padding: 3px 8px;
    border-radius: 7px;
  }
  @media (hover: hover) {
    .tp-fold.svelte-m0gssc:hover h3:where(.svelte-m0gssc) {
      color: var(--text);
    }
    .tp-clear.svelte-m0gssc:hover {
      background: var(--surface2);
      color: var(--text);
    }
  }
  .tp-list.svelte-m0gssc {
    display: flex;
    flex-direction: column;
    gap: 8px;
  }

  .tp-empty.svelte-m0gssc {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 12px;
    padding: 40px 24px;
    text-align: center;
    color: var(--text3);
  }
  .tp-empty.svelte-m0gssc p:where(.svelte-m0gssc) {
    margin: 0;
    font-size: 13.5px;
    line-height: 20px;
    color: var(--text2);
    max-width: 28ch;
  }

  /* ── 横屏：右侧分栏 ── */
  .dock.svelte-15qnci3 {
    height: 100%;
    box-sizing: border-box;
    display: flex;
    border-left: 1px solid var(--border);
    background: var(--surface);
    animation: svelte-15qnci3-dk-in 0.32s var(--ease) both;
    min-width: 0;
    /* 顶部的「别人的地盘」由侧列根部一次性让掉，子树里再也不用各自避让（同 bridge Claude 工作台）：
       · 手机/折叠屏：系统状态栏 --sat。此前 rail 首钮只按顶栏带算位置，折叠屏展开后「审阅」钮
         被状态栏盖住；内嵌文件页倒是自己加了 --sat，各算各的。
       · 桌面壳（WCO）：整条让出第一行当标题栏带（高 = 窗控带），带里只有系统窗控，其余是拖拽区；
         面板头、内嵌文件工具栏都从第二行起全宽排版，不再横向给窗控留 137px。 */
    padding-top: var(--sat, 0px);
  }
  html[data-wco="1"] .dock.svelte-15qnci3 {
    padding-top: var(--wco-h, 40px);
  }
  /* 根部已经让过了：子树里的状态栏 / 窗控占宽归零（变量在自身声明里引用会拿到自己的值，
     所以挂在两个子节点上而不是 .dock 本身） */
  .dock.svelte-15qnci3 > .rail:where(.svelte-15qnci3),
  .dock.svelte-15qnci3 > .dbody:where(.svelte-15qnci3) {
    --sat: 0px;
    --wco-right: 0px;
  }
  @keyframes svelte-15qnci3-dk-in {
    from {
      transform: translateX(32px);
      opacity: 0;
    }
  }

  .rail.svelte-15qnci3 {
    width: 48px;
    flex: none;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 4px;
    /* 首钮中心落在统一顶栏带的 22px 基线上（36px 钮 → 上留 4px） */
    padding: calc((var(--hx-band, 44px) - 36px) / 2) 0 8px;
    border-right: 1px solid var(--border);
    position: relative;
  }
  .rail-sp.svelte-15qnci3 {
    flex: 1;
  }
  /* 选中指示块：跟着当前工具滑（步距 = 36 钮 + 4 间距） */
  .rail-ind.svelte-15qnci3 {
    position: absolute;
    top: calc((var(--hx-band, 44px) - 36px) / 2);
    left: 6px;
    width: 36px;
    height: 36px;
    border-radius: var(--r-ctl);
    background: var(--accent-soft);
    transition: transform 0.34s cubic-bezier(0.34, 1.2, 0.44, 1);
    pointer-events: none;
  }
  .rbtn.svelte-15qnci3 {
    width: 36px;
    height: 36px;
    border-radius: var(--r-ctl);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--text3);
    flex: none;
    position: relative;
    transition: background var(--t-fast) var(--ease), color var(--t-fast) var(--ease),
      transform var(--t-fast) var(--ease);
  }
  @media (hover: hover) {
    .rbtn.svelte-15qnci3:hover {
      background: var(--surface2);
      color: var(--text);
    }
  }
  .rbtn.svelte-15qnci3:active {
    transform: scale(0.9);
  }
  .rbtn.on.svelte-15qnci3 {
    color: var(--accent);
    background: transparent; /* 底色交给会滑动的 .rail-ind */
  }
  @media (hover: hover) {
    .rbtn.on.svelte-15qnci3:hover {
      background: transparent;
      color: var(--accent);
    }
  }

  .livedot.svelte-15qnci3 {
    position: absolute;
    top: 5px;
    right: 5px;
    width: 6px;
    height: 6px;
    border-radius: 2px;
    background: var(--ok);
    animation: pulse-soft 1.6s ease infinite;
  }
  .livedot.acc.svelte-15qnci3 {
    background: var(--accent);
  }

  .dbody.svelte-15qnci3 {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    min-height: 0;
  }
  /* 切工具时面板淡入（只动 opacity：位移会让原生浏览器视图按错位的 rect 落座） */
  .dfade.svelte-15qnci3 {
    flex: 1;
    min-width: 0;
    min-height: 0;
    display: flex;
    flex-direction: column;
    animation: svelte-15qnci3-dk-tool 0.2s var(--ease) both;
  }
  @keyframes svelte-15qnci3-dk-tool {
    from {
      opacity: 0;
    }
  }

  .dk-wait.svelte-15qnci3 {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--text3);
    font-size: 13.5px;
    padding: 0 24px;
    text-align: center;
  }

  /* 宿主注入的文件视图：transform 把其 fixed 布局（根/浮层/菜单）圈进面板区 */
  .fembed.svelte-15qnci3 {
    flex: 1;
    min-width: 0;
    min-height: 0;
    position: relative;
    overflow: hidden;
    transform: translateZ(0);
    display: flex;
    flex-direction: column;
  }

  /* ── 竖屏：底部 sheet（同原 PaneHost 几何）── */
  .sheetwrap.svelte-15qnci3 {
    position: fixed;
    inset: 0;
    z-index: 55;
    display: flex;
    align-items: flex-end;
  }
  .psheet.svelte-15qnci3 {
    width: 100%;
    height: calc(100dvh - 52px - var(--sat));
    background: var(--surface);
    border-radius: 20px 20px 0 0;
    display: flex;
    flex-direction: column;
    animation: svelte-15qnci3-sheet-up 0.36s cubic-bezier(0.32, 0.9, 0.35, 1) both;
    transition: transform 0.3s cubic-bezier(0.32, 0.9, 0.35, 1);
    box-shadow: 0 -10px 44px rgba(0, 0, 0, 0.22);
    overflow: hidden;
  }
  @keyframes svelte-15qnci3-sheet-up {
    from {
      transform: translateY(52%);
      opacity: 0.7;
    }
  }
  .grip-zone.svelte-15qnci3 {
    flex: none;
    touch-action: none;
  }
  .grip.svelte-15qnci3 {
    display: block;
    width: 38px;
    height: 4.5px;
    border-radius: 3px;
    background: var(--border);
    margin: 8px auto 2px;
  }

  /* 工具 chips 直切条（横滑，无菜单层级） */
  .chips.svelte-15qnci3 {
    display: flex;
    align-items: center;
    gap: 5px;
    padding: 6px 10px 9px;
    overflow-x: auto;
    scrollbar-width: none;
    border-bottom: 1px solid var(--border);
  }
  .chips.svelte-15qnci3::-webkit-scrollbar {
    display: none;
  }
  .chip.svelte-15qnci3 {
    flex: none;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    height: 32px;
    padding: 0 12px;
    border-radius: var(--r-ctl);
    color: var(--text3);
    font-size: 12.5px;
    font-weight: 550;
    position: relative;
    transition: background var(--t-fast) var(--ease), color var(--t-fast) var(--ease),
      transform var(--t-fast) var(--ease);
  }
  .chip.svelte-15qnci3:active {
    transform: scale(0.96);
  }
  .chip.on.svelte-15qnci3 {
    background: var(--accent-soft);
    color: var(--accent);
  }
  .chip.fold.svelte-15qnci3 {
    margin-left: auto;
    width: 32px;
    padding: 0;
    justify-content: center;
  }
  @media (hover: hover) {
    .chip.svelte-15qnci3:hover {
      background: var(--surface2);
      color: var(--text);
    }
    .chip.on.svelte-15qnci3:hover {
      background: var(--accent-soft);
      color: var(--accent);
    }
  }

  .hxroot.svelte-1k26mme {
    display: contents; /* 只做主题根（变量/attr 挂点），不产生盒子 */
    /* display:contents 不产生盒子但照常参与继承：渲染在 .shell 之外的浮层（厂商切换 /
       抽屉 / sheet / 灯箱）要从这里拿到字色与字体，否则嵌入 bridge 时继承的是宿主 body
       的字色——bridge 深色主题 + dimensio 浅色档，厂商浮层标题「模型服务」就是白字落白底。 */
    color: var(--text);
    font-family: var(--font-ui);
    -webkit-font-smoothing: antialiased;
    /* 顶栏带：会话栏 / 顶栏 / 工作区面板头三栏首行控件共用的高度，控件中心恒在
       band/2 = 22px 一条线上（此前四栏各算各的，20/22/26/28/30 五级台阶，
       在桌面壳里就成了"右上角窗控斜下面挂着一排钮"）。 */
    --hx-band: 44px;
  }
  .shell.svelte-1k26mme {
    /* 桌面壳（WCO frameless）右上角被系统窗控按钮占着，**只有真的贴着窗口右缘的
       那一栏**才需要让位：dock 展开时右缘归面板，顶栏再让就成了隔空悬浮的钮。
       非桌面壳环境 --wco-right 不存在 → 两个变量恒为 0，规则整体惰性。 */
    --hx-hdr-r: var(--wco-right, 0px);
    --hx-pane-r: 0px;
    height: 100dvh;
    display: flex;
    overflow: hidden;
    position: relative; /* AxisGrid 的定位场 */
    background: var(--bg);
    color: var(--text);
    font-family: var(--font-ui);
    font-size: 15px;
    line-height: 1.55;
    -webkit-font-smoothing: antialiased;
    transition: background-color var(--t-slow) var(--ease), color var(--t-slow) var(--ease);
  }
  /* 工作区展开时右缘归工作区：顶栏不再让位。工作区自己在桌面壳里把第一行整条让给窗控当标题栏带
     （Dock.svelte），面板头因此不再需要 --hx-pane-r 横向避让，它恒为 0（变量保留作组件钩子）。 */
  .shell.docked.svelte-1k26mme {
    --hx-hdr-r: 0px;
  }
  .shell.embedded.svelte-1k26mme {
    position: fixed;
    inset: 0;
    z-index: 30; /* 盖过 bridge 主页内容层（bridge 全屏分页惯例） */
  }

  /* 内容三栏浮在网格之上 */
  .rail.svelte-1k26mme,
  .main.svelte-1k26mme,
  .pv-col.svelte-1k26mme {
    position: relative;
    z-index: 1;
  }

  .rail.svelte-1k26mme {
    width: 288px;
    flex: none;
    min-width: 0;
    transition: width 0.28s var(--ease);
    overflow: hidden;
  }
  .rail.mini.svelte-1k26mme {
    width: 56px;
  }

  .main.svelte-1k26mme {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    height: 100%;
  }

  /* 状态行：计划条（弹性）+ 预览胶囊（定宽），底缘对齐悬在输入区上方 */
  .striprow.svelte-1k26mme {
    width: calc(100% - 28px);
    max-width: 780px;
    margin: 0 auto 8px;
    display: flex;
    align-items: flex-end;
    gap: 8px;
    flex: none;
  }
  /* 只有胶囊没有计划条时靠右停靠（不占满行宽） */
  .striprow.svelte-1k26mme > .pv-pill:only-child {
    margin-left: auto;
  }

  .pv-col.svelte-1k26mme {
    min-width: 0;
    flex: none;
  }

  /* 分栏拖拽手柄：5px 透明热区，hover/拖动时露出accent细线 */
  .splitter.svelte-1k26mme {
    width: 5px;
    flex: none;
    cursor: col-resize;
    position: relative;
    z-index: 2;
    touch-action: none;
    /* 桌面壳顶部 40px 是窗口拖拽区；手柄是 div 不在全局免拖名单里，不打洞的话顶端拖不动分栏 */
    -webkit-app-region: no-drag;
  }
  .splitter.svelte-1k26mme::after {
    content: "";
    position: absolute;
    top: 0;
    bottom: 0;
    left: 2px;
    width: 1.5px;
    border-radius: 1px;
    background: transparent;
    transition: background 0.15s var(--ease);
  }
  .splitter.svelte-1k26mme:hover::after,
  .splitter.svelte-1k26mme:active::after {
    background: var(--accent);
  }

  /* 竖屏抽屉 */
  .drawer-layer.svelte-1k26mme {
    position: fixed;
    inset: 0;
    z-index: 50;
  }
  .scrim.svelte-1k26mme {
    position: absolute;
    inset: 0;
    background: var(--scrim);
    transition: opacity 0.24s var(--ease);
  }
  .drawer.svelte-1k26mme {
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    width: 296px;
    max-width: 86vw;
    background: var(--bg);
    border-right: 1px solid var(--border);
    box-shadow: 0 0 48px rgba(0, 0, 0, 0.3);
    animation: svelte-1k26mme-drawer-in 0.3s cubic-bezier(0.32, 0.9, 0.35, 1) both;
    touch-action: pan-y;
  }
  .drawer.dragging.svelte-1k26mme {
    animation: none;
    transition: none;
  }
  @keyframes svelte-1k26mme-drawer-in {
    from {
      transform: translateX(-100%);
    }
    to {
      transform: translateX(0);
    }
  }

  /* 灯箱 */
  .lightbox.svelte-1k26mme {
    position: fixed;
    inset: 0;
    z-index: 80;
    background: rgba(2, 2, 6, 0.85);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    animation: svelte-1k26mme-fade-bd 0.2s ease both;
  }
  @keyframes svelte-1k26mme-fade-bd {
    from {
      opacity: 0;
    }
  }
  .lb-body.svelte-1k26mme {
    max-width: 94vw;
    max-height: 84vh;
    display: flex;
  }
  .lb-body.svelte-1k26mme img:where(.svelte-1k26mme) {
    max-width: 100%;
    max-height: 84vh;
    object-fit: contain;
    border-radius: 8px;
    animation: pop-in 0.25s var(--ease) both;
  }
  .lb-close.svelte-1k26mme {
    position: absolute;
    top: calc(14px + var(--sat));
    right: 16px;
    width: 40px;
    height: 40px;
    border-radius: 10px;
    background: rgba(255, 255, 255, 0.1);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
  }
  .lb-cap.svelte-1k26mme {
    color: rgba(255, 255, 255, 0.75);
    font-size: 12px;
    font-family: var(--font-mono);
    margin-top: 12px;
    max-width: 90vw;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  /* Toast */
  .toast.svelte-1k26mme {
    position: fixed;
    top: calc(16px + var(--sat));
    left: 50%;
    transform: translateX(-50%);
    background: var(--primary);
    color: var(--on-primary);
    font-size: 13px;
    font-weight: 550;
    padding: 9px 18px;
    border-radius: var(--r-ctl);
    z-index: 90;
    box-shadow: 0 8px 28px rgba(0, 0, 0, 0.25);
    animation: svelte-1k26mme-toast-in 0.32s var(--ease-pop) both;
    max-width: 86vw;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  @keyframes svelte-1k26mme-toast-in {
    from {
      transform: translate(-50%, -14px);
      opacity: 0;
    }
  }
/* dimensio 基础层：重置 / 字体 / 全局动效 / markdown。
   视觉 token 全部来自 theme.ts 写入的 CSS 变量，组件样式只引用变量。
   身兼两种宿主：独立跑（main.ts 设 html[data-hx-standalone]，body 级样式生效）
   / 嵌入 bridge 分页（body 级一律不碰，.hxroot 自持背景字体）。
   【铁律】不写裸 :root —— 本文件会随 @hx 打进 bridge 全局 bundle，裸 :root 与宿主
   app.css 的 :root 同特异性、按源顺序后者覆盖前者，曾把 bridge 暗色 token 全局
   改浅（apk218 修过的事故）。 */

/* ── 字体：Geist 变量字型（latin，~58KB×2，两种宿主都要 → 放这里而非 fonts.css）── */
@font-face {
  font-family: "Geist";
  src: url("/app/assets/geist-var-C_ya05Eu.woff2") format("woff2");
  font-weight: 100 900;
  font-display: swap;
}
@font-face {
  font-family: "Geist Mono";
  src: url("/app/assets/geist-mono-var-BJ0bRpLQ.woff2") format("woff2");
  font-weight: 100 900;
  font-display: swap;
}

.hxroot *,
.hxroot *::before,
.hxroot *::after {
  box-sizing: border-box;
}

html[data-hx-standalone],
html[data-hx-standalone] body {
  margin: 0;
  padding: 0;
  height: 100%;
}

/* 安全边距：仅独立运行声明（浏览器走 env()，安卓壳注入 --sat/--sab 真值内联覆盖）。
   嵌入 bridge 时【绝不能】在 .hxroot 上重声明——会遮蔽宿主注入到 <html> 的真值。 */
html[data-hx-standalone] {
  --sat: env(safe-area-inset-top, 0px);
  --sab: env(safe-area-inset-bottom, 0px);
}

/* 兜底 token（theme.ts 启动即覆盖；首帧给 dimensio 暗底，避免白闪）。 */
html[data-hx-standalone],
.hxroot {
  --bg: #0a0a0d;
  --surface: #121216;
  --surface2: #1b1b22;
  --text: #ededf2;
  --text2: #a0a0ad;
  --text3: #616170;
  --border: rgba(228, 230, 255, 0.08);
  --border2: rgba(228, 230, 255, 0.16);
  --grid: rgba(228, 230, 255, 0.03);
  --grid2: rgba(228, 230, 255, 0.058);
  --accent: #8a8dff;
  --on-accent: #0a0a0d;
  --accent-soft: rgba(138, 141, 255, 0.13);
  --primary: #ededf2;
  --on-primary: #101014;
  --ok: #53c98b;
  --warn: #e2b34d;
  --err: #f07b73;
  --user-bubble: #17171d;
  --on-user-bubble: #ededf2;
  --code-bg: #0e0e12;
  --scrim: rgba(4, 4, 9, 0.62);
  --shadow-sm: 0 4px 20px rgba(0, 0, 0, 0.28);
  --shadow-pop: 0 18px 56px rgba(0, 0, 0, 0.5);
  --font-ui: "Geist", "PingFang SC", "HarmonyOS Sans SC", "MiSans", "Microsoft YaHei UI", sans-serif;
  --font-mono: "Geist Mono", ui-monospace, Consolas, monospace;
  --r-card: 12px;
  --r-bubble: 12px;
  --r-input: 16px;
  --r-ctl: 9px;
  --r-item: 8px;
  --ease: cubic-bezier(0.22, 0.85, 0.32, 1);
  --ease-pop: cubic-bezier(0.3, 1.3, 0.45, 1);
  --t-fast: 120ms;
  --t-med: 220ms;
  --t-slow: 400ms;
}

html[data-hx-standalone] body {
  background: var(--bg);
  color: var(--text);
  font-family: var(--font-ui);
  text-rendering: optimizeLegibility;
  overscroll-behavior: none;
  transition: background-color var(--t-slow) var(--ease), color var(--t-slow) var(--ease);
}

html[data-hx-standalone] #app {
  height: 100%;
}

.hxroot button {
  font: inherit;
  color: inherit;
  background: none;
  border: 0;
  padding: 0;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  touch-action: manipulation;
}
.hxroot input,
.hxroot textarea,
.hxroot select {
  font: inherit;
  color: inherit;
}
.hxroot a {
  color: var(--accent);
}

.hxroot ::selection {
  background: color-mix(in srgb, var(--accent) 26%, transparent);
}

/* 细滚动条（桌面） */
@media (pointer: fine) {
  .hxroot * {
    scrollbar-width: thin;
    scrollbar-color: color-mix(in srgb, var(--text3) 45%, transparent) transparent;
  }
}

/* ── 取景框角标（dimensio 签名元素）─────────────────────────────
   用法：容器 position:relative，内放 <span class="hxframe"></span>，
   由组件在 hover / focus-within / 激活态把 opacity 拉起。
   8 条微渐变画 4 个 L 角，颜色/尺寸可用 --fr-c / --fr-s 覆盖。 */
.hxroot .hxframe {
  --fr-c: var(--accent);
  --fr-s: 8px;
  --fr-w: 1.5px;
  position: absolute;
  inset: -1px;
  pointer-events: none;
  opacity: 0;
  transition: opacity var(--t-med) var(--ease), transform var(--t-med) var(--ease);
  transform: scale(1.035);
  background:
    linear-gradient(var(--fr-c), var(--fr-c)) left top / var(--fr-s) var(--fr-w),
    linear-gradient(var(--fr-c), var(--fr-c)) left top / var(--fr-w) var(--fr-s),
    linear-gradient(var(--fr-c), var(--fr-c)) right top / var(--fr-s) var(--fr-w),
    linear-gradient(var(--fr-c), var(--fr-c)) right top / var(--fr-w) var(--fr-s),
    linear-gradient(var(--fr-c), var(--fr-c)) left bottom / var(--fr-s) var(--fr-w),
    linear-gradient(var(--fr-c), var(--fr-c)) left bottom / var(--fr-w) var(--fr-s),
    linear-gradient(var(--fr-c), var(--fr-c)) right bottom / var(--fr-s) var(--fr-w),
    linear-gradient(var(--fr-c), var(--fr-c)) right bottom / var(--fr-w) var(--fr-s);
  background-repeat: no-repeat;
}
.hxroot .hxframe.on {
  opacity: 1;
  transform: scale(1);
}

/* ── 全局关键帧 ─────────────────────────────── */

/* 流式吐字渐入（fade.ts 包裹的 span） */
.hxroot span.f-in {
  animation: f-in 0.4s linear both;
}
@keyframes f-in {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}
@media (prefers-reduced-motion: reduce) {
  .hxroot span.f-in {
    animation: none;
  }
}

@keyframes spin {
  to {
    transform: rotate(360deg);
  }
}
@keyframes pulse-soft {
  50% {
    opacity: 0.35;
  }
}
/* 消息 / 行条目：沿 Y 轴浮起 */
@keyframes rise-in {
  from {
    opacity: 0;
    transform: translateY(8px);
  }
}
/* 弹层 / 徽章：从 Z 轴逼近 */
@keyframes pop-in {
  from {
    opacity: 0;
    transform: scale(0.94);
  }
}
/* 平面入场：Z 逼近 + Y 浮起（sheet / 浮层面板） */
@keyframes plane-in {
  from {
    opacity: 0;
    transform: translateY(10px) scale(0.97);
  }
}
/* 正交自旋（DimSpinner 两平面） */
@keyframes dim-y {
  from {
    transform: rotateY(0deg);
  }
  to {
    transform: rotateY(360deg);
  }
}
@keyframes dim-x {
  from {
    transform: rotateX(0deg);
  }
  to {
    transform: rotateX(-360deg);
  }
}

/* ── markdown 输出（Feed 内 {@html}，需全局作用域）── */
.hxroot .md {
  overflow-wrap: break-word;
}
.hxroot .md p {
  margin: 0 0 0.7em;
}
.hxroot .md p:last-child {
  margin-bottom: 0;
}
.hxroot .md .md-h {
  font-weight: 620;
  margin: 1.05em 0 0.45em;
  line-height: 1.3;
  letter-spacing: -0.01em;
}
.hxroot .md h3.md-h {
  font-size: 1.15em;
}
.hxroot .md h4.md-h {
  font-size: 1.05em;
}
.hxroot .md h5.md-h,
.hxroot .md h6.md-h {
  font-size: 1em;
}
.hxroot .md ul,
.hxroot .md ol {
  margin: 0.3em 0 0.8em;
  padding-left: 1.5em;
}
.hxroot .md li {
  margin: 0.22em 0;
}
.hxroot .md li::marker {
  color: var(--text3);
}
.hxroot .md code.ic {
  font-family: var(--font-mono);
  font-size: 0.85em;
  background: var(--surface2);
  border: 1px solid var(--border);
  border-radius: 5px;
  padding: 0.08em 0.36em;
}
.hxroot .md blockquote {
  margin: 0.6em 0;
  padding: 0.1em 0 0.1em 0.9em;
  border-left: 2px solid var(--border2);
  color: var(--text2);
}
.hxroot .md hr {
  border: 0;
  border-top: 1px solid var(--border);
  margin: 1.1em 0;
}
.hxroot .md a {
  color: var(--accent);
  text-underline-offset: 2px;
}
.hxroot .md .tbl-wrap {
  overflow-x: auto;
  margin: 0.6em 0 0.9em;
  border: 1px solid var(--border);
  border-radius: var(--r-ctl);
}
.hxroot .md table {
  border-collapse: collapse;
  font-size: 0.92em;
  min-width: 100%;
}
.hxroot .md th,
.hxroot .md td {
  text-align: left;
  padding: 7px 12px;
  border-bottom: 1px solid var(--border);
}
.hxroot .md thead th {
  background: var(--surface2);
  font-weight: 600;
  white-space: nowrap;
}
.hxroot .md tbody tr:last-child td {
  border-bottom: 0;
}

/* 代码块：内凹平面 + mono 语言标 */
.hxroot .md .cb {
  margin: 0.65em 0 0.95em;
  border: 1px solid var(--border);
  border-radius: var(--r-ctl);
  overflow: hidden;
  background: var(--code-bg);
}
.hxroot .md .cb-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 5px 12px;
  border-bottom: 1px solid var(--border);
  font-size: 11px;
  color: var(--text3);
}
.hxroot .md .cb-lang {
  font-family: var(--font-mono);
  letter-spacing: 0.06em;
  text-transform: uppercase;
}
.hxroot .md .cb-copy {
  color: var(--text3);
  font-size: 11.5px;
  padding: 2px 6px;
  border-radius: 6px;
}
.hxroot .md .cb-copy:hover {
  color: var(--text);
  background: var(--surface2);
}
.hxroot .md .cb pre {
  margin: 0;
  padding: 11px 13px;
  overflow-x: auto;
}
.hxroot .md .cb code {
  font-family: var(--font-mono);
  font-size: 12.5px;
  line-height: 1.6;
  white-space: pre;
}

  .brand.svelte-1c5q7gr {
    position: fixed; z-index: 210; pointer-events: none; color: #fff; opacity: 0;
    font-family: var(--serif-stack); font-weight: 300; display: flex; flex-direction: column;
    top: 50%; left: 50%; transform: translate(-50%, -50%); align-items: flex-start;
    font-size: 26px; line-height: 1.16; letter-spacing: .2em; gap: 1px; padding-left: .2em;
    text-shadow: 0 1px 10px rgba(0,0,0,.5);
    /* 归位飞行与预载方块展开【同时长同曲线】才读作一个动作（此前 .82s vs 现在的方块
       420ms，标题会孤零零地继续飞半秒）。全部走运动令牌。 */
    transition: top var(--mo-page) var(--ea-decel), left var(--mo-page) var(--ea-decel),
                transform var(--mo-page) var(--ea-decel), font-size var(--mo-page) var(--ea-decel),
                letter-spacing var(--mo-page) var(--ea-decel), gap var(--mo-page) var(--ea-decel),
                padding-left var(--mo-page) var(--ea-decel),
                opacity var(--mo-base) var(--ea-fade), color var(--mo-hero) var(--ea-fade);
  }
  .brand.show.svelte-1c5q7gr { opacity: 1; }
  .brand.tappable.svelte-1c5q7gr { pointer-events: auto; cursor: pointer; }
  /* 桌面：可点的标题得有悬停反馈，否则鼠标划过完全看不出这里能按（手机没鼠标所以一直没做）。
     注意别在这里写 transition —— .brand 那条长 transition 是「居中→左上」的飞入动画，
     被同等或更高特异性的规则整条替换掉飞入就变瞬移了。 */
  @media (hover: hover) {
    .brand.tappable.corner.svelte-1c5q7gr:hover { text-shadow: 0 1px 14px rgba(255,255,255,.5), 0 1px 10px rgba(0,0,0,.5); }
  }
  /* 「THE」左对齐↔居中用 transform 平滑过渡（替代 align-items 瞬切），与标题移动/缩放同步 */
  .l1.svelte-1c5q7gr { display: inline-block; transition: transform var(--mo-page) var(--ea-decel); }
  .brand.corner.svelte-1c5q7gr {
    top: max(16px, var(--sat)); left: 18px; transform: none;
    font-size: 14px; letter-spacing: .14em; gap: 0; padding-left: 0;
  }

  .tt.svelte-amtxgq { position: fixed; inset: 0; z-index: 205; pointer-events: none; overflow: hidden; }
  .veil.svelte-amtxgq { position: fixed; inset: 0; opacity: 0; }
  /* 中间镂空方块（自身透明，露出下层白幕/粒子画布），box-shadow 把四周撑满 ring 色 → 形成「黑/白边」 */
  .hole.svelte-amtxgq { position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%);
          width: 150vmax; height: 150vmax; border-radius: 0; background: transparent; }

  .sc-mask.svelte-1hli4af { position: fixed; inset: 0; z-index: 100; display: flex; align-items: center; justify-content: center; padding: 24px; background: #0a0a0a; }
  .sc-card.svelte-1hli4af { width: 100%; max-width: 360px; display: flex; flex-direction: column; gap: 13px; }
  .sc-card.svelte-1hli4af h2:where(.svelte-1hli4af) { font-size: 24px; font-weight: 800; color: #f2f2f2; margin-bottom: 2px; }
  .sc-hint.svelte-1hli4af { font-size: 14px; line-height: 1.55; color: #9a9a9a; margin-bottom: 4px; }
  .sc-err.svelte-1hli4af { background: rgba(217,106,90,.16); color: #e0816f; font-size: 13px; padding: 10px 13px; border-radius: 11px; }
  .sc-in.svelte-1hli4af { width: 100%; height: 50px; border: none; outline: none; border-radius: 14px; background: rgba(255,255,255,.08); box-shadow: inset 0 0 0 .5px rgba(255,255,255,.14); padding: 0 16px; font-size: 16px; color: #f2f2f2; }
  .sc-in.svelte-1hli4af::placeholder { color: #6c6c6c; }
  .sc-btn.svelte-1hli4af { width: 100%; height: 52px; border-radius: 26px; background: #2f6fed; color: #fff; font-size: 17px; font-weight: 700; margin-top: 5px; transition: transform var(--mo-tap) var(--ea-out); }
  .sc-btn.svelte-1hli4af:disabled { opacity: .6; }
  .sc-btn.svelte-1hli4af:active { transform: scale(.98); }

  /* 全屏系统材质罩：整页唯一一层 backdrop。舞台(.staged)/拖滑块(.previewing)时罩退散露出主页实景。 */
  .settings.svelte-1u3w06f {
    position: fixed; inset: 0; z-index: 60; display: flex; justify-content: flex-end;
    background: rgba(9, 11, 16, .44);
    backdrop-filter: blur(26px) saturate(1.5); -webkit-backdrop-filter: blur(26px) saturate(1.5);
    animation: svelte-1u3w06f-set-in var(--mo-base) var(--ea-fade);
    transition: backdrop-filter var(--mo-base) var(--ea-fade), -webkit-backdrop-filter var(--mo-base) var(--ea-fade), background-color var(--mo-base) var(--ea-fade);
  }
  @keyframes svelte-1u3w06f-set-in { from { opacity: 0; } to { opacity: 1; } }
  .settings.closing.svelte-1u3w06f { background: transparent; backdrop-filter: blur(0) saturate(1); -webkit-backdrop-filter: blur(0) saturate(1); animation: none; }
  .settings.previewing.svelte-1u3w06f, .settings.staged.svelte-1u3w06f { background: transparent; backdrop-filter: blur(0) saturate(1); -webkit-backdrop-filter: blur(0) saturate(1); }

  .sheet.svelte-1u3w06f {
    width: 100%; max-width: 440px; height: 100%; display: flex; flex-direction: column;
    padding: max(18px, var(--sat)) 20px max(16px, var(--sab));
    transition: transform var(--mo-base) var(--ea-std), opacity var(--mo-quick) var(--ea-fade);
  }
  /* 跟手期切断 transform 过渡：位移由手势/弹簧逐帧下发，过渡再插一手就是"慢半拍地黏着手指" */
  .sheet.dragging.svelte-1u3w06f { transition: opacity var(--mo-quick) var(--ea-fade); }
  .settings.closing.svelte-1u3w06f .sheet:where(.svelte-1u3w06f) { transform: translateX(100%); }
  .sheet.hid.svelte-1u3w06f { opacity: 0; pointer-events: none; }

  /* —— 玻璃 chrome（返回钮 / tab 胶囊 / 滑柱 / 舞台件）：半透白 + 上亮下暗发丝边 + 投影。
     内容卡片(.group)刻意更素——层级：chrome 亮、内容静，这正是 iOS 26 的材质秩序。 */
  .back.svelte-1u3w06f, .srv.svelte-1u3w06f, .vtrack.svelte-1u3w06f, .seg.svelte-1u3w06f, .stage-pill.svelte-1u3w06f, .sp-panel.svelte-1u3w06f {
    background: rgba(255,255,255,.12);
    box-shadow: inset 0 0 0 .5px rgba(255,255,255,.28), inset 0 1px 1px rgba(255,255,255,.32), 0 6px 20px rgba(0,0,0,.22);
  }

  .back.svelte-1u3w06f { width: 40px; height: 40px; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: #fff; flex: none; }
  .back.svelte-1u3w06f svg { width: 22px; height: 22px; }
  .back.svelte-1u3w06f:active { background: rgba(255,255,255,.2); }

  /* 顶部行：左返回 + 右「服务端设置」（仅桌面服务端形态出现） */
  .tophdr.svelte-1u3w06f { display: flex; align-items: center; justify-content: space-between; transition: opacity .2s ease; }
  .srv.svelte-1u3w06f { position: relative; width: 40px; height: 40px; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: #fff; flex: none; animation: svelte-1u3w06f-srv-in var(--mo-quick) var(--ea-decel) backwards; }
  @keyframes svelte-1u3w06f-srv-in { from { opacity: 0; transform: scale(.8); } }
  .srv.svelte-1u3w06f svg { width: 20px; height: 20px; }
  .srv.svelte-1u3w06f:active { background: rgba(255,255,255,.2); transform: scale(.94); }
  .srv-dot.svelte-1u3w06f { position: absolute; right: 1px; top: 1px; width: 9px; height: 9px; border-radius: 50%; background: #34c759;
    box-shadow: 0 0 0 2px rgba(20,22,28,.55), 0 0 7px rgba(52,199,89,.8); }

  /* 服务端控制台盖在上面时：只藏 sheet、不撤罩——控制台自身不开 backdrop，磨砂靠本层（同屏单层铁律） */
  .settings.covered.svelte-1u3w06f .sheet:where(.svelte-1u3w06f) { opacity: 0; pointer-events: none; }

  /* 分区翻页：单页渲染，新页从切换方向淡入滑移（iOS 设置风） */
  .panels-wrap.svelte-1u3w06f { flex: 1; min-height: 0; overflow: hidden; margin: 0 -6px; }
  .panel.svelte-1u3w06f { width: 100%; height: 100%; overflow-y: auto; padding: 6px 6px 14px; scrollbar-width: none; overscroll-behavior: contain; }
  .panel.svelte-1u3w06f::-webkit-scrollbar { width: 0; }
  .page.svelte-1u3w06f { animation: svelte-1u3w06f-page-in var(--mo-base) var(--ea-decel) backwards; }
  @keyframes svelte-1u3w06f-page-in { from { opacity: 0; transform: translateX(var(--dx, 22px)) scale(.992); } }

  /* iOS 大标题：每页页首，随翻页动画一起进场 */
  .big-title.svelte-1u3w06f { font-size: 32px; font-weight: 700; letter-spacing: .2px; color: #fff; padding: 4px 12px 14px; }

  /* 小节头 + 组底脚注：iOS 分组列表的呼吸节奏 */
  .sec-h.svelte-1u3w06f { display: flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 600; color: rgba(255,255,255,.55);
    padding: 0 16px 7px; margin-top: 24px; transition: opacity .2s ease; }
  .sec-h.first.svelte-1u3w06f { margin-top: 2px; }
  .sec-h.svelte-1u3w06f .sec-in:where(.svelte-1u3w06f) { font-size: 13px; }
  .sec-h.dim.svelte-1u3w06f { opacity: 0; }
  .sec-sub.svelte-1u3w06f { font-size: 11px; font-weight: 500; color: rgba(255,255,255,.35); }
  .gfoot.svelte-1u3w06f { font-size: 12px; line-height: 1.5; color: rgba(255,255,255,.42); padding: 7px 16px 0; transition: opacity .2s ease; }
  .gfoot.dim.svelte-1u3w06f { opacity: 0; }

  /* —— iOS 分组卡片 —— */
  .group.svelte-1u3w06f { border-radius: 22px; padding: 0 16px; background: rgba(255,255,255,.085);
    box-shadow: inset 0 0 0 .5px rgba(255,255,255,.08); transition: opacity .2s ease; }
  .group.dim.svelte-1u3w06f { opacity: 0; pointer-events: none; }
  .group.svelte-1u3w06f + .gfoot:where(.svelte-1u3w06f) + .sec-h:where(.svelte-1u3w06f) { margin-top: 24px; }
  .row.svelte-1u3w06f { position: relative; display: flex; align-items: center; gap: 12px; padding: 12px 0; min-height: 50px;
    width: 100%; background: none; border: 0; font: inherit; color: inherit; text-align: left; cursor: pointer; }
  .row.svelte-1u3w06f:disabled { opacity: .6; cursor: default; }
  /* 发丝分隔线：从文字列起（图标方块之后），iOS 同款内缩 */
  .row.svelte-1u3w06f + .row:where(.svelte-1u3w06f)::before {
    content: ''; position: absolute; top: 0; left: 41px; right: -16px; height: .5px; background: rgba(255,255,255,.1);
  }
  .row.nochip.svelte-1u3w06f + .row.nochip:where(.svelte-1u3w06f)::before { left: 0; }
  .row-tx.svelte-1u3w06f { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; font-size: 16px; color: #fff; }
  .row-tx.svelte-1u3w06f small:where(.svelte-1u3w06f) { font-size: 12px; line-height: 1.45; color: rgba(255,255,255,.5); }

  /* 行首彩色图标方块（29×29，iOS 系统色） */
  .chip.svelte-1u3w06f { width: 29px; height: 29px; border-radius: 7.5px; flex: none; display: flex; align-items: center; justify-content: center;
    background: var(--c, #8e8e93); box-shadow: inset 0 .5px .5px rgba(255,255,255,.28), inset 0 -.5px .5px rgba(0,0,0,.12); }
  .chip.svelte-1u3w06f svg { width: 17px; height: 17px; }

  /* 行尾：值 / chevron / 已授权勾 / 蓝色单选勾 / 下载进度环 */
  .val.svelte-1u3w06f { display: flex; align-items: center; gap: 6px; flex: none; max-width: 46%; font-size: 15px; color: rgba(255,255,255,.5);
    overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
  .val.err.svelte-1u3w06f { color: #ff9b9b; }
  .addr-val.svelte-1u3w06f { direction: rtl; }   /* 长地址显示尾部（域名段） */
  .chev.svelte-1u3w06f { flex: none; width: 16px; height: 16px; color: rgba(255,255,255,.3); display: flex; }
  .chev.svelte-1u3w06f svg { width: 16px; height: 16px; }
  .ok.svelte-1u3w06f { flex: none; color: #34c759; font-weight: 700; font-size: 16px; }
  .radio-ck.svelte-1u3w06f { flex: none; width: 22px; color: #0a84ff; display: flex; }
  .radio-ck.svelte-1u3w06f svg { width: 20px; height: 20px; }
  .ring.svelte-1u3w06f { flex: none; width: 22px; height: 22px; border-radius: 50%;
    background: conic-gradient(#34c759 var(--p, 0deg), rgba(255,255,255,.18) 0);
    -webkit-mask: radial-gradient(farthest-side, transparent calc(100% - 3px), #000 calc(100% - 2.5px));
    mask: radial-gradient(farthest-side, transparent calc(100% - 3px), #000 calc(100% - 2.5px)); }

  /* iOS 开关（绿）*/
  .sw.svelte-1u3w06f { position: relative; width: 51px; height: 31px; border-radius: 16px; background: rgba(120,120,128,.36); transition: background .22s ease; flex: none;
    box-shadow: inset 0 0 0 .5px rgba(255,255,255,.14); border: 0; cursor: pointer; }
  .sw.on.svelte-1u3w06f { background: #34c759; }
  .sw-knob.svelte-1u3w06f { position: absolute; top: 2px; left: 2px; width: 27px; height: 27px; border-radius: 50%; background: #fff; box-shadow: 0 2px 6px rgba(0,0,0,.3), 0 0 .5px rgba(0,0,0,.2); transition: transform var(--mo-quick) cubic-bezier(.32,.72,0,1); }
  .sw.on.svelte-1u3w06f .sw-knob:where(.svelte-1u3w06f) { transform: translateX(20px); }

  /* 推理强度分段（行内小分段） */
  .effseg.svelte-1u3w06f { flex: none; display: flex; gap: 4px; background: rgba(120,120,128,.22); border-radius: 11px; padding: 3px; }
  .effbtn.svelte-1u3w06f { border: 0; background: none; color: rgba(255,255,255,.68); font: inherit; font-size: 13px; padding: 5px 13px; border-radius: 8px; cursor: pointer; transition: background .18s ease, color .18s ease; }
  .effbtn.on.svelte-1u3w06f { background: rgba(255,255,255,.92); color: #16171a; font-weight: 600; }

  /* —— 个性化：玻璃滑柱三连（保留拖动透视主页机制）—— */
  .controls.svelte-1u3w06f { display: flex; align-items: flex-start; justify-content: space-around; margin: 0 0 2px; }
  .vslot.svelte-1u3w06f { display: flex; flex-direction: column; align-items: center; gap: 9px; transition: opacity .2s ease; }
  .vtrack.svelte-1u3w06f { position: relative; width: 62px; height: 132px; border-radius: 31px; overflow: hidden; cursor: pointer; touch-action: none; }
  .vfill.svelte-1u3w06f { position: absolute; left: 0; right: 0; bottom: 0; background: rgba(255,255,255,.9); }
  .vlabel.svelte-1u3w06f { font-size: 12.5px; font-weight: 500; color: rgba(255,255,255,.72); }
  .vslot.off.svelte-1u3w06f { opacity: .35; pointer-events: none; }
  .settings.previewing.svelte-1u3w06f .vslot:where(.svelte-1u3w06f):not(.active) { opacity: 0; }
  .settings.previewing.svelte-1u3w06f .vslot.active:where(.svelte-1u3w06f) .vlabel:where(.svelte-1u3w06f) { opacity: 0; }
  .settings.previewing.svelte-1u3w06f .group:where(.svelte-1u3w06f), .settings.previewing.svelte-1u3w06f .gfoot:where(.svelte-1u3w06f), .settings.previewing.svelte-1u3w06f .tabbar:where(.svelte-1u3w06f),
  .settings.previewing.svelte-1u3w06f .tophdr:where(.svelte-1u3w06f), .settings.previewing.svelte-1u3w06f .big-title:where(.svelte-1u3w06f), .settings.previewing.svelte-1u3w06f .sec-h:where(.svelte-1u3w06f) { opacity: 0; pointer-events: none; transition: opacity .2s ease; }

  /* —— 玻璃分段（画质预设 + 底部 tab 胶囊共用骨架）—— */
  .seg.svelte-1u3w06f { position: relative; display: grid; grid-template-columns: repeat(var(--n), 1fr); border-radius: 999px; padding: 5px; transition: opacity .2s ease; }
  .seg.dim.svelte-1u3w06f { opacity: 0; pointer-events: none; }
  .seg-knob.svelte-1u3w06f { position: absolute; top: 5px; left: 5px; width: calc((100% - 10px) / var(--n)); height: calc(100% - 10px);
    background: rgba(255,255,255,.88); border-radius: 999px;
    box-shadow: inset 0 .5px 1px rgba(255,255,255,.9), 0 3px 10px rgba(0,0,0,.28);
    transition: transform var(--mo-base) cubic-bezier(.32,.72,0,1); }
  .seg-btn.svelte-1u3w06f { position: relative; z-index: 1; display: flex; flex-direction: column; align-items: center; gap: 3px; padding: 7px 4px;
    color: rgba(255,255,255,.66); border: 0; background: none; cursor: pointer; transition: color .25s ease; }
  .seg-btn.on.svelte-1u3w06f { color: #101114; }
  .seg-ico.svelte-1u3w06f { display: flex; }
  .seg-ico.svelte-1u3w06f svg { width: 22px; height: 22px; }
  .seg-lbl.svelte-1u3w06f { font-size: 12px; font-weight: 600; }
  .tabbar.svelte-1u3w06f { margin-top: 12px; flex: none; }

  /* —— 壁纸分区（沿用布局，材质对齐新语言）—— */
  .wp-prev.svelte-1u3w06f { position: relative; height: 168px; border-radius: 24px; overflow: hidden; flex: none;
    box-shadow: inset 0 0 0 .5px rgba(255,255,255,.22), 0 10px 26px rgba(0,0,0,.3); }
  .wp-half.svelte-1u3w06f { position: absolute; inset: 0; padding: 0; border: 0; cursor: pointer; background: none; }
  .wp-half.light.svelte-1u3w06f { clip-path: polygon(0 0, 100% 0, 0 100%); }
  .wp-half.dark.svelte-1u3w06f { clip-path: polygon(100% 0, 100% 100%, 0 100%); }
  .wp-half-bg.svelte-1u3w06f { position: absolute; inset: 0; }
  .wp-half-bg.dim.svelte-1u3w06f { filter: brightness(.72); }
  .wp-half-cap.svelte-1u3w06f { position: absolute; display: flex; flex-direction: column; gap: 2px; pointer-events: none; }
  .wp-half-cap.tl.svelte-1u3w06f { left: 13px; top: 11px; align-items: flex-start; }
  .wp-half-cap.br.svelte-1u3w06f { right: 13px; bottom: 11px; align-items: flex-end; }
  .wp-cap-line.svelte-1u3w06f { display: flex; align-items: center; gap: 6px; color: #fff; }
  .wp-cap-line.svelte-1u3w06f b:where(.svelte-1u3w06f) { font-size: 12px; font-weight: 700; text-shadow: 0 1px 4px rgba(0,0,0,.6); }
  .wp-half-cap.svelte-1u3w06f small:where(.svelte-1u3w06f) { font-size: 10px; font-weight: 500; color: rgba(255,255,255,.85); text-shadow: 0 1px 3px rgba(0,0,0,.6); }
  .wp-slash.svelte-1u3w06f { position: absolute; left: -10%; top: 50%; width: 120%; height: 1.5px; background: rgba(255,255,255,.7); transform: rotate(-25.7deg); pointer-events: none; }
  .wp-ring.svelte-1u3w06f { position: absolute; inset: 0; border-radius: 24px; pointer-events: none; }
  .wp-ring.light.svelte-1u3w06f { box-shadow: inset 0 0 0 2.5px #0a84ff; clip-path: polygon(0 0, 100% 0, 0 100%); }
  .wp-ring.dark.svelte-1u3w06f { box-shadow: inset 0 0 0 2.5px #5e5ce6; clip-path: polygon(100% 0, 100% 100%, 0 100%); }

  .wp-grid.svelte-1u3w06f { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
  .wp-card.svelte-1u3w06f { position: relative; height: 136px; border-radius: 18px; overflow: hidden; padding: 0; border: 0; background: #11141d; cursor: pointer;
    box-shadow: 0 4px 12px rgba(0,0,0,.25); transition: transform var(--mo-micro) cubic-bezier(.34,1.3,.5,1); }
  .wp-card.svelte-1u3w06f:active { transform: scale(.94); }
  .wp-card-bg.svelte-1u3w06f { position: absolute; inset: 0; }
  .wp-card-shade.svelte-1u3w06f { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0,0,0,0) 62%, rgba(0,0,0,.42) 100%); pointer-events: none; }
  .wp-card-name.svelte-1u3w06f { position: absolute; left: 8px; bottom: 7px; font-size: 10.5px; font-weight: 600; color: #fff; text-shadow: 0 1px 3px rgba(0,0,0,.6); pointer-events: none; }
  .wp-dyn.svelte-1u3w06f { position: absolute; top: 7px; left: 7px; font-size: 9.5px; font-weight: 700; padding: 2px 7px; border-radius: 8px; background: rgba(255,255,255,.26); color: #fff; pointer-events: none; }
  .wp-sel.svelte-1u3w06f { position: absolute; inset: 0; border-radius: 18px; box-shadow: inset 0 0 0 3px var(--ac), inset 0 0 0 5px rgba(255,255,255,.85); pointer-events: none; }
  .wp-ck.svelte-1u3w06f { position: absolute; top: 7px; right: 7px; width: 22px; height: 22px; border-radius: 50%; background: var(--ac); display: flex; align-items: center; justify-content: center; box-shadow: 0 2px 6px rgba(0,0,0,.35); pointer-events: none; }
  .wp-ck.svelte-1u3w06f svg { width: 13px; height: 13px; }
  .wp-upl.svelte-1u3w06f { height: 136px; border-radius: 18px; border: 1.5px dashed rgba(255,255,255,.45); background: rgba(255,255,255,.07); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 7px; cursor: pointer; color: rgba(255,255,255,.9); }
  .wp-upl.svelte-1u3w06f span:where(.svelte-1u3w06f) { font-size: 11px; font-weight: 600; }

  /* —— 实景舞台 —— */
  .stage.svelte-1u3w06f { position: absolute; inset: 0; display: flex; flex-direction: column; animation: svelte-1u3w06f-stage-in var(--mo-base) cubic-bezier(.32,.72,0,1); }
  @keyframes svelte-1u3w06f-stage-in { from { opacity: 0; transform: translateY(26px); } to { opacity: 1; transform: none; } }
  .stage-top.svelte-1u3w06f { display: flex; align-items: center; gap: 10px; padding: max(14px, var(--sat)) 14px 0; }
  .stage-top.svelte-1u3w06f .back:where(.svelte-1u3w06f) { margin-bottom: 0; background: rgba(255,255,255,.16); }
  .stage-done.svelte-1u3w06f { height: 40px; padding: 0 18px; border-radius: 999px; display: flex; align-items: center; gap: 7px; border: 0; cursor: pointer;
    background: rgba(10,132,255,.92); color: #fff; font-size: 13.5px; font-weight: 700;
    box-shadow: inset 0 0 0 .5px rgba(255,255,255,.3), 0 4px 14px rgba(10,132,255,.35); }
  .stage-done.svelte-1u3w06f:active { transform: scale(.94); }
  .stage-pill.svelte-1u3w06f { position: relative; align-self: center; margin-top: 22px; display: grid; grid-template-columns: 1fr 1fr; width: 236px; border-radius: 999px; padding: 4px; }
  .stage-pill-knob.svelte-1u3w06f { position: absolute; top: 4px; left: 4px; width: calc((100% - 8px) / 2); height: calc(100% - 8px); border-radius: 999px; box-shadow: 0 2px 8px rgba(0,0,0,.22); transition: transform var(--mo-base) var(--ea-std), background var(--mo-base) var(--ea-fade); }
  .stage-pill-knob.right.svelte-1u3w06f { transform: translateX(100%); }
  .stage-pill-btn.svelte-1u3w06f { position: relative; z-index: 1; display: flex; align-items: center; justify-content: center; gap: 6px; height: 34px; font-size: 13px; font-weight: 700; color: rgba(255,255,255,.92); border: 0; background: none; cursor: pointer; }
  .stage-pill-btn.lit.svelte-1u3w06f { color: #1f2127; }
  .stage-pill-btn.white.lit.svelte-1u3w06f { color: #fff; }
  .sp-panel.svelte-1u3w06f { margin: 0 14px max(16px, var(--sab)); border-radius: 22px; padding: 3px 16px; align-self: stretch; }
  .sp-row.svelte-1u3w06f { display: flex; align-items: center; gap: 12px; padding: 10px 0; }
  .sp-tx.svelte-1u3w06f { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; font-size: 15px; color: #fff; text-shadow: 0 1px 4px rgba(0,0,0,.35); }
  .sp-tx.svelte-1u3w06f small:where(.svelte-1u3w06f) { font-size: 11.5px; font-weight: 400; color: rgba(255,255,255,.7); }
  .sp-amp.svelte-1u3w06f { display: flex; align-items: center; gap: 12px; padding: 10px 0; border-top: .5px solid rgba(255,255,255,.16); animation: svelte-1u3w06f-sp-in var(--mo-base) cubic-bezier(.32,.72,0,1); }
  .sp-amp-lbl.svelte-1u3w06f { flex: none; font-size: 13px; color: rgba(255,255,255,.92); text-shadow: 0 1px 4px rgba(0,0,0,.35); }
  @keyframes svelte-1u3w06f-sp-in { from { opacity: 0; transform: translateY(-5px); } }
  .sp-spin.svelte-1u3w06f { width: 22px; height: 22px; flex: none; border-radius: 50%; border: 2.5px solid rgba(255,255,255,.26); border-top-color: #fff; animation: svelte-1u3w06f-sp-rot .7s linear infinite; }
  @keyframes svelte-1u3w06f-sp-rot { to { transform: rotate(360deg); } }
  .sp-err.svelte-1u3w06f { padding: 4px 0 8px; font-size: 12px; color: #ff9b9b; text-shadow: 0 1px 3px rgba(0,0,0,.45); }

  /* 「已空间化」标记：卡片左上角波点切角 */
  .wp-spatial-badge.svelte-1u3w06f { position: absolute; top: 0; left: 0; width: 40px; height: 40px; pointer-events: none; z-index: 3;
    clip-path: polygon(0 0, 100% 0, 0 100%);
    background:
      radial-gradient(rgba(255,255,255,.95) 1.1px, transparent 1.7px) 0 0 / 5px 5px,
      linear-gradient(135deg, rgba(8,10,18,.52), rgba(8,10,18,0) 76%);
    -webkit-mask: linear-gradient(135deg, #000 40%, transparent 64%);
    mask: linear-gradient(135deg, #000 40%, transparent 64%); }

  /* 上传壁纸管理菜单 */
  .wp-menu-scrim.svelte-1u3w06f { position: fixed; inset: 0; z-index: 200; background: transparent; border: 0; padding: 0; cursor: default; }
  .wp-menu.svelte-1u3w06f { position: fixed; z-index: 201; width: 176px; padding: 6px; border-radius: 16px; transform-origin: top center;
    background: rgba(38,38,44,.9);
    box-shadow: inset 0 0 0 .5px rgba(255,255,255,.14), 0 14px 44px rgba(0,0,0,.5); animation: svelte-1u3w06f-wp-menu-in var(--mo-quick) cubic-bezier(.2,.9,.3,1.1); }
  @keyframes svelte-1u3w06f-wp-menu-in { from { opacity: 0; transform: scale(.85); } }
  .wp-menu-title.svelte-1u3w06f { font-size: 11px; color: rgba(255,255,255,.55); padding: 5px 10px 6px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .wp-menu-item.svelte-1u3w06f { display: flex; align-items: center; gap: 10px; width: 100%; padding: 10px; border: 0; border-radius: 11px; background: none; color: #fff; font: inherit; font-size: 14.5px; cursor: pointer; text-align: left; }
  .wp-menu-item.svelte-1u3w06f:hover, .wp-menu-item.svelte-1u3w06f:active { background: rgba(255,255,255,.12); }
  .wp-menu-item.danger.svelte-1u3w06f { color: #ff6b6b; }

  /* —— 帮助：版本页脚 —— */
  .conn-dot.svelte-1u3w06f { width: 7px; height: 7px; border-radius: 50%; background: rgba(255,255,255,.4); flex: none; }
  .conn-dot.lan.svelte-1u3w06f { background: #34c759; box-shadow: 0 0 6px rgba(52,199,89,.6); }
  .ver-foot.svelte-1u3w06f { margin-top: 28px; text-align: center; font-size: 12px; color: rgba(255,255,255,.35); }

  /* —— 弹窗（反馈 / 服务器地址）—— */
  .addr-mask.svelte-1u3w06f { position: fixed; inset: 0; z-index: 70; background: rgba(0,0,0,.5); border: 0; cursor: default; }
  .addr-card.svelte-1u3w06f { position: fixed; z-index: 71; left: 50%; top: 50%; transform: translate(-50%,-50%); width: calc(100% - 48px); max-width: 360px;
    background: rgba(30,30,34,.96); border-radius: 24px; padding: 22px; display: flex; flex-direction: column; gap: 12px;
    box-shadow: inset 0 0 0 .5px rgba(255,255,255,.12), 0 18px 50px rgba(0,0,0,.55); animation: svelte-1u3w06f-addrPop var(--mo-quick) ease; }
  @keyframes svelte-1u3w06f-addrPop { from { opacity: 0; transform: translate(-50%,-46%); } to { opacity: 1; transform: translate(-50%,-50%); } }
  .addr-card.svelte-1u3w06f h3:where(.svelte-1u3w06f) { font-size: 19px; font-weight: 700; color: #f2f2f2; }
  .addr-card.svelte-1u3w06f p:where(.svelte-1u3w06f) { font-size: 13.5px; line-height: 1.5; color: #9a9a9a; }
  .addr-err.svelte-1u3w06f { background: rgba(217,106,90,.18); color: #e0816f; font-size: 13px; padding: 9px 12px; border-radius: 10px; }
  .addr-in.svelte-1u3w06f { width: 100%; height: 48px; border: none; outline: none; border-radius: 13px; background: rgba(255,255,255,.08); box-shadow: inset 0 0 0 .5px rgba(255,255,255,.14); padding: 0 14px; font-size: 16px; color: #f2f2f2; }
  .addr-in.svelte-1u3w06f::placeholder { color: #6c6c6c; }
  .addr-btns.svelte-1u3w06f { display: flex; gap: 10px; margin-top: 4px; }
  .addr-cancel.svelte-1u3w06f { flex: 1; height: 48px; border-radius: 24px; background: rgba(255,255,255,.1); color: #f2f2f2; font-size: 16px; border: 0; cursor: pointer; }
  .addr-go.svelte-1u3w06f { flex: 2; height: 48px; border-radius: 24px; background: #0a84ff; color: #fff; font-size: 16px; font-weight: 700; border: 0; cursor: pointer; }
  .addr-go.svelte-1u3w06f:disabled { opacity: .6; }
  .fb-ta.svelte-1u3w06f { width: 100%; min-height: 120px; max-height: 40vh; resize: none; border: none; outline: none; border-radius: 13px; background: rgba(255,255,255,.08); box-shadow: inset 0 0 0 .5px rgba(255,255,255,.14); padding: 12px 14px; font: inherit; font-size: 16px; line-height: 1.5; color: #f2f2f2; }
  .fb-ta.svelte-1u3w06f::placeholder { color: #6c6c6c; }
  .fb-atts.svelte-1u3w06f { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
  .fb-att.svelte-1u3w06f { position: relative; width: 60px; height: 60px; border-radius: 10px; overflow: hidden; background: rgba(255,255,255,.08); box-shadow: inset 0 0 0 .5px rgba(255,255,255,.14); display: flex; align-items: center; justify-content: center; }
  .fb-att.svelte-1u3w06f img:where(.svelte-1u3w06f) { width: 100%; height: 100%; object-fit: cover; }
  .fb-att-ico.svelte-1u3w06f { font-size: 24px; }
  .fb-att-up.svelte-1u3w06f { position: absolute; inset: 0; background: rgba(0,0,0,.45); animation: svelte-1u3w06f-fbpulse 1s ease-in-out infinite; display: flex; align-items: center; justify-content: center; color: #fff; font-size: 12px; font-weight: 600; }
  @keyframes svelte-1u3w06f-fbpulse { 0%,100% { opacity: .45; } 50% { opacity: .2; } }
  .fb-att-x.svelte-1u3w06f { position: absolute; top: 1px; right: 1px; width: 18px; height: 18px; border-radius: 50%; background: rgba(0,0,0,.6); color: #fff; font-size: 13px; line-height: 1; display: flex; align-items: center; justify-content: center; border: 0; cursor: pointer; }
  .fb-add.svelte-1u3w06f { flex: none; width: 52px; height: 48px; border-radius: 24px; background: rgba(255,255,255,.1); color: #f2f2f2; font-size: 26px; line-height: 1; display: flex; align-items: center; justify-content: center; border: 0; cursor: pointer; }
  .fb-add.svelte-1u3w06f:active { background: rgba(255,255,255,.16); }

  /* —— flux 壁纸参数（个性化，仅暗主题）—— */
  .wpp.svelte-1u3w06f { display: flex; flex-direction: column; transition: opacity .2s ease; }
  .settings.previewing.svelte-1u3w06f .wpp:where(.svelte-1u3w06f) { opacity: 1; pointer-events: auto; }
  .wpp-cm.svelte-1u3w06f { display: grid; grid-template-columns: repeat(4, 1fr); gap: 7px; margin-bottom: 10px; }
  .wpp-cm-btn.svelte-1u3w06f { height: 38px; border-radius: 12px; background: rgba(255,255,255,.085); color: rgba(255,255,255,.75);
    font-size: 13px; font-weight: 600; border: 0; cursor: pointer; box-shadow: inset 0 0 0 .5px rgba(255,255,255,.08); transition: background .2s ease, color .2s ease; }
  .wpp-cm-btn.on.svelte-1u3w06f { background: rgba(255,255,255,.88); color: #16171a; box-shadow: 0 3px 10px rgba(0,0,0,.24); }
  .wpp-card.svelte-1u3w06f { padding: 2px 16px; }
  .wpp-grp.svelte-1u3w06f { position: relative; font-size: 12px; font-weight: 600; color: rgba(255,255,255,.45); padding: 12px 0 4px; }
  .wpp-grp.svelte-1u3w06f::before { content: ''; position: absolute; top: 0; left: 0; right: -16px; height: .5px; background: rgba(255,255,255,.1); }
  .row.slim.svelte-1u3w06f { min-height: 42px; padding: 8px 0; }
  .row.slim.svelte-1u3w06f + .row.slim:where(.svelte-1u3w06f)::before { left: 0; }
  .wpp-lbl.svelte-1u3w06f { width: 74px; flex: none; font-size: 14px; color: #fff; }
  .wpp-range.svelte-1u3w06f { flex: 1; min-width: 0; -webkit-appearance: none; appearance: none; height: 4px; border-radius: 2px; background: rgba(255,255,255,.24); outline: none; touch-action: none; }
  .wpp-range.svelte-1u3w06f::-webkit-slider-thumb { -webkit-appearance: none; appearance: none; width: 21px; height: 21px; border-radius: 50%; background: #fff; box-shadow: 0 1.5px 5px rgba(0,0,0,.35), 0 0 .5px rgba(0,0,0,.2); cursor: pointer; }
  .wpp-val.svelte-1u3w06f { width: 42px; flex: none; text-align: right; font-size: 13px; font-variant-numeric: tabular-nums; color: rgba(255,255,255,.55); }
  .wpp-reset.svelte-1u3w06f { margin-top: 12px; height: 46px; border-radius: 22px; background: rgba(255,255,255,.085); color: #0a84ff; font-size: 15px; font-weight: 600; border: 0; cursor: pointer; box-shadow: inset 0 0 0 .5px rgba(255,255,255,.08); }
  .wpp-reset.svelte-1u3w06f:active { background: rgba(255,255,255,.14); }
/* ═══════════════════════════════════════════════════════════════════════
   bridge 桌面形态设计令牌（批1 基座）。
   与手机端 app.css 的 --bg/--card 等旧令牌完全独立：全部 --dsk- 前缀 +
   scoped 到 html[data-desktop="1"]（手机/网页永不匹配，零成本零污染；
   也规避「嵌入宿主的子应用 CSS 禁裸 :root」那课）。
   暗色为默认，html[data-theme="light"] 提供完整第二主题。
   组件规则：桌面组件只允许引用这里的令牌，禁止硬编码颜色/圆角/时长。
   ═══════════════════════════════════════════════════════════════════════ */

html[data-desktop="1"] {
  /* —— 字阶（品牌字体沿用 Anthropic Sans；字号桌面梯，默认 UI 13px）—— */
  --dsk-font: "Anthropic Sans", system-ui, "Segoe UI", "Microsoft YaHei UI", sans-serif;
  --dsk-fs-caption: 11px;   /* 组标签 / 脚注 */
  --dsk-fs-sm: 12px;        /* 次要说明 */
  --dsk-fs-ui: 13px;        /* 控件 / 行标题（桌面默认） */
  --dsk-fs-body: 14px;      /* 正文 */
  --dsk-fs-md: 15px;        /* 强调行 */
  --dsk-fs-lg: 17px;        /* 小标题 */
  --dsk-fs-title: 21px;     /* 面板标题 */
  --dsk-fs-hero: 27px;      /* 页面大标题 */

  /* —— 间距（4pt 梯）—— */
  --dsk-s1: 4px; --dsk-s2: 8px; --dsk-s3: 12px; --dsk-s4: 16px;
  --dsk-s5: 20px; --dsk-s6: 24px; --dsk-s7: 32px; --dsk-s8: 40px;

  /* —— 圆角梯（告别单一 16px）—— */
  --dsk-r-xs: 6px;   /* 小控件（field / 小按钮） */
  --dsk-r-sm: 9px;   /* 按钮 / segmented */
  --dsk-r-md: 12px;  /* 弹出层 / 行内卡 */
  --dsk-r-lg: 16px;  /* 分组卡 */
  --dsk-r-xl: 22px;  /* 面板 / 大卡 */
  --dsk-r-full: 999px;

  /* —— 尺寸 —— */
  --dsk-row-h: 38px;   /* 设置行 */
  --dsk-ctl-h: 28px;   /* 标准控件高 */
  --dsk-titlebar: 40px;

  /* —— 颜色（暗色默认）—— */
  --dsk-bg: #171716;
  --dsk-bg-raised: #201f1e;
  --dsk-panel: rgba(255, 255, 255, .055);
  --dsk-panel-strong: rgba(255, 255, 255, .09);
  --dsk-ink: #f5f5f2;
  --dsk-ink-2: rgba(245, 245, 242, .62);
  --dsk-ink-3: rgba(245, 245, 242, .40);
  --dsk-line: rgba(255, 255, 255, .075);
  --dsk-line-strong: rgba(255, 255, 255, .15);
  --dsk-hover: rgba(255, 255, 255, .06);
  --dsk-active: rgba(255, 255, 255, .10);
  --dsk-sel: rgba(217, 119, 87, .16);
  --dsk-accent: #d97757;
  --dsk-accent-hover: #e0835f;
  --dsk-accent-ink: #ffffff;
  --dsk-ok: #5aa468; --dsk-warn: #d9a441; --dsk-crit: #d96a5a;
  --dsk-ctl: rgba(255, 255, 255, .14);        /* switch 关轨 / slider 余轨 */
  --dsk-knob: #ffffff;

  /* —— 材质（DOM 假玻璃：半透填充 + 发丝描边 + 顶部内高光；真折射归批2引擎）—— */
  --dsk-glass-fill: rgba(32, 31, 30, .58);
  --dsk-glass-stroke: rgba(255, 255, 255, .13);
  --dsk-glass-hi: rgba(255, 255, 255, .10);
  /* 设置页侧栏（macOS Tahoe 式半透明磨砂列）：底色 + 模糊量。整页唯一 backdrop 载体。 */
  --dsk-sidebar-bg: rgba(26, 25, 24, .52);
  --dsk-sidebar-blur: blur(52px) saturate(1.5);

  /* —— 层级投影 —— */
  --dsk-sh-1: 0 1px 2px rgba(0, 0, 0, .28), 0 0 0 1px var(--dsk-line);
  --dsk-sh-2: 0 10px 28px rgba(0, 0, 0, .38), 0 2px 6px rgba(0, 0, 0, .24), 0 0 0 1px var(--dsk-line-strong);
  --dsk-sh-3: 0 28px 72px rgba(0, 0, 0, .5), 0 6px 18px rgba(0, 0, 0, .3), 0 0 0 1px var(--dsk-line-strong);

  /* —— 动效 —— */
  --dsk-t-fast: 110ms;
  --dsk-t-med: 190ms;
  --dsk-t-slow: 280ms;
  --dsk-ease: cubic-bezier(.2, .8, .2, 1);
  --dsk-ease-out: cubic-bezier(.05, .7, .1, 1);
  --dsk-ease-spring: cubic-bezier(.32, 1.36, .4, 1);

  /* —— 焦点环（键盘可达性统一走这一个）—— */
  --dsk-focus: 0 0 0 2px color-mix(in srgb, var(--dsk-accent) 85%, transparent);
}

html[data-desktop="1"][data-theme="light"] {
  --dsk-bg: #f2f2ef;
  --dsk-bg-raised: #ffffff;
  --dsk-panel: rgba(255, 255, 255, .82);
  --dsk-panel-strong: #ffffff;
  --dsk-ink: #191918;
  --dsk-ink-2: rgba(25, 25, 24, .60);
  --dsk-ink-3: rgba(25, 25, 24, .38);
  --dsk-line: rgba(25, 25, 24, .08);
  --dsk-line-strong: rgba(25, 25, 24, .16);
  --dsk-hover: rgba(25, 25, 24, .05);
  --dsk-active: rgba(25, 25, 24, .09);
  --dsk-sel: rgba(217, 119, 87, .13);
  --dsk-ctl: rgba(25, 25, 24, .16);
  --dsk-glass-fill: rgba(255, 255, 255, .62);
  --dsk-glass-stroke: rgba(255, 255, 255, .55);
  --dsk-glass-hi: rgba(255, 255, 255, .65);
  --dsk-sidebar-bg: rgba(242, 242, 239, .58);
  --dsk-sidebar-blur: blur(52px) saturate(1.7);
  --dsk-sh-1: 0 1px 2px rgba(25, 25, 24, .07), 0 0 0 1px var(--dsk-line);
  --dsk-sh-2: 0 10px 28px rgba(25, 25, 24, .14), 0 2px 6px rgba(25, 25, 24, .08), 0 0 0 1px var(--dsk-line);
  --dsk-sh-3: 0 28px 72px rgba(25, 25, 24, .22), 0 6px 18px rgba(25, 25, 24, .10), 0 0 0 1px var(--dsk-line);
}

/* —— 全局工具提示（use:tooltip action 创建的浮层是脱离组件树的单例，样式只能放全局；
      dsk- 前缀 + 仅 action 会挂这个类，不影响任何既有样式）—— */
.dsk-tip {
  position: fixed; z-index: 4000; pointer-events: none;
  max-width: 260px; padding: 5px 9px; border-radius: var(--dsk-r-xs, 6px);
  background: var(--dsk-bg-raised, #2a2a28); color: var(--dsk-ink, #f5f5f2);
  font-family: var(--dsk-font, system-ui); font-size: var(--dsk-fs-sm, 12px); line-height: 1.45;
  box-shadow: var(--dsk-sh-2, 0 10px 28px rgba(0, 0, 0, .38));
  opacity: 0; transform: translateY(3px);
  transition: opacity var(--dsk-t-fast, 110ms) ease, transform var(--dsk-t-fast, 110ms) ease;
}
.dsk-tip.show { opacity: 1; transform: none; }

  .grp.svelte-1o1b3y8 { display: block; }
  /* macOS System Settings 语气：组标签小号常规大小写（旧 uppercase 追踪距是 iOS 语汇） */
  .glabel.svelte-1o1b3y8 {
    margin: 0 var(--dsk-s3) var(--dsk-s2);
    font-size: var(--dsk-fs-sm); font-weight: 600;
    color: var(--dsk-ink-2);
  }
  .gcard.svelte-1o1b3y8 {
    border-radius: var(--dsk-r-lg); background: var(--dsk-panel);
    box-shadow: 0 0 0 1px var(--dsk-line); overflow: hidden;
  }
  /* 行间分隔线从文字列起（左端内缩），不再整宽贯穿——macOS 分组卡的画法 */
  .gcard.svelte-1o1b3y8 .drow + .drow { position: relative; }
  .gcard.svelte-1o1b3y8 .drow + .drow::before {
    content: ''; position: absolute; top: 0; left: var(--dsk-s3); right: 0; height: 1px;
    background: var(--dsk-line);
  }
  .gfoot.svelte-1o1b3y8 {
    margin: var(--dsk-s2) var(--dsk-s3) 0;
    font-size: var(--dsk-fs-sm); line-height: 1.5; color: var(--dsk-ink-3);
  }

  .drow.svelte-1c91zzn {
    display: flex; align-items: center; gap: var(--dsk-s3); width: 100%;
    min-height: var(--dsk-row-h); padding: var(--dsk-s2) var(--dsk-s3);
    font-family: var(--dsk-font); text-align: left; color: var(--dsk-ink);
  }
  .drow.act.svelte-1c91zzn { cursor: pointer; transition: background var(--dsk-t-fast) var(--dsk-ease); }
  .drow.act.svelte-1c91zzn:hover { background: var(--dsk-hover); }
  .drow.act.svelte-1c91zzn:active { background: var(--dsk-active); }
  .drow.act.svelte-1c91zzn:focus-visible { outline: none; box-shadow: inset var(--dsk-focus); }
  /* macOS 式渐变图标方块：底色走 style:background-color（shorthand 会把渐变层冲掉，
     必须用 longhand），上亮下暗的渐变 + 顶部高光发丝 + 微投影由这里统一叠加。 */
  .chip.svelte-1c91zzn {
    width: 24px; height: 24px; border-radius: 6.5px; flex: none;
    display: inline-flex; align-items: center; justify-content: center;
    color: #fff;
    background-image: linear-gradient(180deg, rgba(255, 255, 255, .30) 0%, rgba(255, 255, 255, .05) 46%, rgba(0, 0, 0, .12) 100%);
    box-shadow: inset 0 .5px .5px rgba(255, 255, 255, .45), inset 0 0 0 .5px rgba(255, 255, 255, .12),
                0 .5px 1.5px rgba(0, 0, 0, .3);
  }
  .txt.svelte-1c91zzn { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 1px; }
  .t.svelte-1c91zzn { font-size: var(--dsk-fs-ui); line-height: 1.35; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .s.svelte-1c91zzn { font-size: var(--dsk-fs-sm); line-height: 1.35; color: var(--dsk-ink-3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .tr.svelte-1c91zzn { flex: none; display: inline-flex; align-items: center; gap: var(--dsk-s2); color: var(--dsk-ink-2); font-size: var(--dsk-fs-ui); }
  .chev.svelte-1c91zzn { flex: none; color: var(--dsk-ink-3); }
  .danger.svelte-1c91zzn .t:where(.svelte-1c91zzn) { color: var(--dsk-crit); }
  .hl.svelte-1c91zzn { animation: svelte-1c91zzn-drow-flash 1.5s var(--dsk-ease) 1; }
  @keyframes svelte-1c91zzn-drow-flash {
    0%, 70% { background: var(--dsk-sel); }
    100% { background: transparent; }
  }

  .sw.svelte-4xvfpn {
    width: 38px; height: 22px; border-radius: var(--dsk-r-full); position: relative; flex: none;
    background: var(--dsk-ctl); padding: 0;
    transition: background var(--dsk-t-med) var(--dsk-ease);
  }
  .sw.on.svelte-4xvfpn { background: var(--dsk-accent); }
  .sw.svelte-4xvfpn:disabled { opacity: .4; cursor: default; }
  .sw.svelte-4xvfpn:focus-visible { outline: none; box-shadow: var(--dsk-focus); }
  .knob.svelte-4xvfpn {
    position: absolute; top: 2px; left: 2px; width: 18px; height: 18px; border-radius: var(--dsk-r-full);
    background: var(--dsk-knob); box-shadow: 0 1px 2.5px rgba(0, 0, 0, .35), 0 0 0 .5px rgba(0, 0, 0, .06);
    transition: transform var(--dsk-t-med) var(--dsk-ease-spring), width var(--dsk-t-fast) var(--dsk-ease);
  }
  .sw.on.svelte-4xvfpn .knob:where(.svelte-4xvfpn) { transform: translateX(16px); }
  /* 按住时 knob 拉长（iOS 手感）；开态从右侧拉长，位移同步左移保持贴边 */
  .sw.svelte-4xvfpn:active:not(:disabled) .knob:where(.svelte-4xvfpn) { width: 22px; }
  .sw.on.svelte-4xvfpn:active:not(:disabled) .knob:where(.svelte-4xvfpn) { transform: translateX(12px); }

  .seg.svelte-1wxspzb {
    position: relative; display: grid; grid-auto-flow: column; grid-auto-columns: 1fr;
    height: var(--dsk-ctl-h); padding: 2px; border-radius: var(--dsk-r-sm);
    background: var(--dsk-ctl); user-select: none;
  }
  .seg.disabled.svelte-1wxspzb { opacity: .4; pointer-events: none; }
  .thumb.svelte-1wxspzb {
    position: absolute; top: 2px; bottom: 2px; left: 2px;
    width: calc((100% - 4px) / var(--n));
    transform: translateX(calc(var(--i) * 100%));
    border-radius: calc(var(--dsk-r-sm) - 2px);
    background: var(--dsk-bg-raised);
    box-shadow: 0 1px 3px rgba(0, 0, 0, .25), 0 0 0 .5px var(--dsk-line);
    transition: transform var(--dsk-t-med) var(--dsk-ease);
  }
  .cell.svelte-1wxspzb {
    position: relative; z-index: 1; padding: 0 var(--dsk-s3);
    font-family: var(--dsk-font); font-size: var(--dsk-fs-sm); font-weight: 500; line-height: 1;
    color: var(--dsk-ink-2); border-radius: calc(var(--dsk-r-sm) - 2px);
    transition: color var(--dsk-t-fast) var(--dsk-ease);
    white-space: nowrap;
  }
  .cell.svelte-1wxspzb:hover:not(.sel) { color: var(--dsk-ink); }
  .cell.sel.svelte-1wxspzb { color: var(--dsk-ink); font-weight: 600; }
  .cell.svelte-1wxspzb:focus-visible { outline: none; box-shadow: var(--dsk-focus); }

  .trg.svelte-11hq2n7 {
    display: inline-flex; align-items: center; gap: var(--dsk-s2);
    height: var(--dsk-ctl-h); padding: 0 var(--dsk-s2) 0 var(--dsk-s3);
    border-radius: var(--dsk-r-sm); background: var(--dsk-panel-strong);
    box-shadow: 0 0 0 1px var(--dsk-line);
    font-family: var(--dsk-font); font-size: var(--dsk-fs-ui); color: var(--dsk-ink);
    transition: background var(--dsk-t-fast) var(--dsk-ease);
    user-select: none;
  }
  .trg.svelte-11hq2n7:hover:not(:disabled) { background: var(--dsk-active); }
  .trg.svelte-11hq2n7:disabled { opacity: .4; cursor: default; }
  .trg.svelte-11hq2n7:focus-visible { outline: none; box-shadow: var(--dsk-focus); }
  .lbl.svelte-11hq2n7 { flex: 1; text-align: left; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .chev.svelte-11hq2n7 { color: var(--dsk-ink-3); transition: transform var(--dsk-t-med) var(--dsk-ease); flex: none; }
  .chev.up.svelte-11hq2n7 { transform: rotate(180deg); }

  .pop.svelte-11hq2n7 {
    position: fixed; z-index: 3000; padding: 4px;
    max-height: 278px; overflow: auto;
    border-radius: var(--dsk-r-md); background: var(--dsk-bg-raised);
    box-shadow: var(--dsk-sh-2);
    animation: svelte-11hq2n7-pop-in var(--dsk-t-fast) var(--dsk-ease-out);
  }
  @keyframes svelte-11hq2n7-pop-in { from { opacity: 0; transform: translateY(-3px) scale(.985); } }
  .opt.svelte-11hq2n7 {
    display: flex; align-items: center; gap: var(--dsk-s2); width: 100%;
    height: 30px; padding: 0 var(--dsk-s3) 0 var(--dsk-s2); border-radius: var(--dsk-r-xs);
    font-family: var(--dsk-font); font-size: var(--dsk-fs-ui); color: var(--dsk-ink);
    text-align: left; white-space: nowrap;
  }
  .opt.hi.svelte-11hq2n7 { background: var(--dsk-hover); }
  .opt.svelte-11hq2n7:active { background: var(--dsk-active); }
  .tick.svelte-11hq2n7 { width: 12px; color: var(--dsk-accent); opacity: 0; flex: none; display: inline-flex; }
  .tick.on.svelte-11hq2n7 { opacity: 1; }

  .sl.svelte-d8rk38 {
    -webkit-appearance: none; appearance: none; width: 100%; height: 20px;
    background: transparent; margin: 0; cursor: pointer;
  }
  .sl.svelte-d8rk38:disabled { opacity: .4; cursor: default; }
  .sl.svelte-d8rk38::-webkit-slider-runnable-track {
    height: 4px; border-radius: var(--dsk-r-full);
    background: linear-gradient(to right, var(--dsk-accent) var(--pct), var(--dsk-ctl) var(--pct));
  }
  .sl.svelte-d8rk38::-webkit-slider-thumb {
    -webkit-appearance: none; appearance: none;
    width: 16px; height: 16px; margin-top: -6px; border-radius: var(--dsk-r-full);
    background: var(--dsk-knob);
    box-shadow: 0 1px 3px rgba(0, 0, 0, .35), 0 0 0 .5px rgba(0, 0, 0, .08);
    transition: transform var(--dsk-t-fast) var(--dsk-ease);
  }
  .sl.svelte-d8rk38:hover:not(:disabled)::-webkit-slider-thumb { transform: scale(1.12); }
  .sl.svelte-d8rk38:active:not(:disabled)::-webkit-slider-thumb { transform: scale(1.2); }
  .sl.svelte-d8rk38:focus-visible { outline: none; }
  .sl.svelte-d8rk38:focus-visible::-webkit-slider-thumb { box-shadow: var(--dsk-focus), 0 1px 3px rgba(0, 0, 0, .35); }

  .btn.svelte-v3urqr {
    display: inline-flex; align-items: center; justify-content: center; gap: 6px;
    height: var(--dsk-ctl-h); padding: 0 var(--dsk-s3); border-radius: var(--dsk-r-sm);
    font-family: var(--dsk-font); font-size: var(--dsk-fs-ui); font-weight: 500; line-height: 1;
    color: var(--dsk-ink); white-space: nowrap; user-select: none;
    transition: background var(--dsk-t-fast) var(--dsk-ease), color var(--dsk-t-fast) var(--dsk-ease),
                transform var(--dsk-t-fast) var(--dsk-ease), box-shadow var(--dsk-t-fast) var(--dsk-ease);
  }
  .btn.sm.svelte-v3urqr { height: 24px; padding: 0 var(--dsk-s2); font-size: var(--dsk-fs-sm); border-radius: var(--dsk-r-xs); }
  .btn.svelte-v3urqr:active:not(:disabled) { transform: scale(.97); }
  .btn.svelte-v3urqr:disabled { opacity: .4; cursor: default; }
  .btn.svelte-v3urqr:focus-visible { outline: none; box-shadow: var(--dsk-focus); }

  .primary.svelte-v3urqr { background: var(--dsk-accent); color: var(--dsk-accent-ink); }
  .primary.svelte-v3urqr:hover:not(:disabled) { background: var(--dsk-accent-hover); }

  .secondary.svelte-v3urqr { background: var(--dsk-panel-strong); box-shadow: 0 0 0 1px var(--dsk-line); }
  .secondary.svelte-v3urqr:hover:not(:disabled) { background: var(--dsk-active); }

  .ghost.svelte-v3urqr { background: transparent; color: var(--dsk-ink-2); }
  .ghost.svelte-v3urqr:hover:not(:disabled) { background: var(--dsk-hover); color: var(--dsk-ink); }

  .danger.svelte-v3urqr { background: color-mix(in srgb, var(--dsk-crit) 16%, transparent); color: var(--dsk-crit); }
  .danger.svelte-v3urqr:hover:not(:disabled) { background: color-mix(in srgb, var(--dsk-crit) 26%, transparent); }

  .fld.svelte-8v1zqr {
    height: var(--dsk-ctl-h); padding: 0 var(--dsk-s3);
    border: none; border-radius: var(--dsk-r-sm);
    background: var(--dsk-panel); box-shadow: 0 0 0 1px var(--dsk-line);
    font-family: var(--dsk-font); font-size: var(--dsk-fs-ui); color: var(--dsk-ink);
    transition: box-shadow var(--dsk-t-fast) var(--dsk-ease), background var(--dsk-t-fast) var(--dsk-ease);
  }
  .fld.svelte-8v1zqr::placeholder { color: var(--dsk-ink-3); }
  .fld.svelte-8v1zqr:hover:not(:disabled):not(:focus) { background: var(--dsk-panel-strong); }
  .fld.svelte-8v1zqr:focus { outline: none; box-shadow: var(--dsk-focus); background: var(--dsk-panel-strong); }
  .fld.svelte-8v1zqr:disabled { opacity: .4; }

  .rec.svelte-coz50 {
    display: inline-flex; align-items: center; gap: 3px;
    min-width: 120px; min-height: 26px; justify-content: center;
    padding: 3px 8px; border-radius: var(--dsk-r-sm);
    background: var(--dsk-hover);
    box-shadow: 0 0 0 1px transparent;
    font-family: var(--dsk-font); color: var(--dsk-ink);
    transition: background-color var(--dsk-t-fast) var(--dsk-ease), box-shadow var(--dsk-t-fast) var(--dsk-ease);
  }
  .rec.svelte-coz50:hover { background: var(--dsk-active); }
  .rec.on.svelte-coz50 {
    background: transparent;
    box-shadow: 0 0 0 1.5px var(--dsk-accent);
  }
  kbd.svelte-coz50 {
    font: inherit; font-size: var(--dsk-fs-sm); line-height: 1.6;
    padding: 0 5px; border-radius: 5px;
    background: var(--dsk-panel-strong);
    box-shadow: 0 0 0 1px var(--dsk-line-strong);
  }
  .sep.svelte-coz50 { font-size: 11px; color: var(--dsk-ink-3); }
  .tip.svelte-coz50 { font-size: var(--dsk-fs-sm); color: var(--dsk-accent); }
  .tip.off.svelte-coz50 { color: var(--dsk-ink-3); }

  /* macOS Tahoe 双栏：根透明，磨砂只在侧栏（整页唯一 backdrop，铁律不破）；
     详情列不透明。首行折进标题栏带（macOS 系统设置同款：工具栏就是标题栏）：
     两栏首行同高（--sd-hd）在 WCO 带内垂直居中——控件中心对齐系统窗控中心，
     顶部不再空出一整条带（改前首行顶在 52px，上方全是空白）。--sd-band 由
     script 侧按 wcoActive 分支下发。首行钮的 no-drag 洞由 data-wco 全局规则管。 */
  .sd.svelte-16lraen {
    position: fixed; inset: 0; z-index: 60;
    display: grid; grid-template-columns: 236px 1fr;
    color: var(--dsk-ink);
    font-family: var(--dsk-font); font-size: var(--dsk-fs-ui);
    animation: svelte-16lraen-sd-in .2s var(--dsk-ease-out);
    --sd-hd: 34px;
  }
  @keyframes svelte-16lraen-sd-in { from { opacity: 0; transform: scale(.995); } }
  .sd.closing.svelte-16lraen { opacity: 0; transform: scale(.995); transition: opacity .17s ease, transform .17s ease; pointer-events: none; }

  /* —— 侧栏：半透明磨砂列（延伸到窗口顶，标题栏带压在其上）—— */
  .side.svelte-16lraen {
    display: flex; flex-direction: column; gap: var(--dsk-s3); min-height: 0;
    padding: var(--sd-band) var(--dsk-s3) var(--dsk-s3);
    background: var(--dsk-sidebar-bg);
    -webkit-backdrop-filter: var(--dsk-sidebar-blur); backdrop-filter: var(--dsk-sidebar-blur);
    border-right: 1px solid var(--dsk-line);
  }
  .back.svelte-16lraen {
    display: inline-flex; align-items: center; gap: 7px; align-self: flex-start;
    min-height: var(--sd-hd); padding: 0 10px 0 8px; border-radius: var(--dsk-r-sm);
    color: var(--dsk-ink-2); font-size: var(--dsk-fs-ui); font-weight: 500;
    transition: background var(--dsk-t-fast) var(--dsk-ease), color var(--dsk-t-fast) var(--dsk-ease);
  }
  .back.svelte-16lraen:hover { background: var(--dsk-hover); color: var(--dsk-ink); }
  .srch.svelte-16lraen { position: relative; }
  .srch.svelte-16lraen .si:where(.svelte-16lraen) { position: absolute; left: 9px; top: 50%; transform: translateY(-50%); color: var(--dsk-ink-3); pointer-events: none; }
  .srch.svelte-16lraen input:where(.svelte-16lraen) {
    width: 100%; height: var(--dsk-ctl-h); padding: 0 var(--dsk-s2) 0 28px;
    border: none; border-radius: var(--dsk-r-sm);
    background: var(--dsk-panel); box-shadow: 0 0 0 1px var(--dsk-line);
    font-family: inherit; font-size: var(--dsk-fs-ui); color: var(--dsk-ink);
  }
  .srch.svelte-16lraen input:where(.svelte-16lraen)::placeholder { color: var(--dsk-ink-3); }
  .srch.svelte-16lraen input:where(.svelte-16lraen):focus { outline: none; box-shadow: var(--dsk-focus); background: var(--dsk-panel-strong); }

  /* 账户行（登录状态入口）：头像 + 名字/身份，选中同导航一致走 accent */
  .acct.svelte-16lraen {
    display: flex; align-items: center; gap: var(--dsk-s3);
    padding: 7px var(--dsk-s2); border-radius: var(--dsk-r-md);
    font-family: inherit; text-align: left; color: var(--dsk-ink);
    transition: background var(--dsk-t-fast) var(--dsk-ease);
  }
  .acct.svelte-16lraen:hover:not(.on) { background: var(--dsk-hover); }
  .acct.on.svelte-16lraen { background: var(--dsk-accent); color: var(--dsk-accent-ink); }
  .ava.svelte-16lraen {
    width: 32px; height: 32px; border-radius: 50%; flex: none;
    display: inline-flex; align-items: center; justify-content: center;
    background: linear-gradient(180deg, #74b9ff, #2f6fed);
    color: #fff; font-size: 14px; font-weight: 700;
    box-shadow: inset 0 .5px .5px rgba(255, 255, 255, .5), 0 .5px 2px rgba(0, 0, 0, .3);
  }
  .atxt.svelte-16lraen { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
  .atxt.svelte-16lraen b:where(.svelte-16lraen) { font-size: var(--dsk-fs-ui); font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .atxt.svelte-16lraen i:where(.svelte-16lraen) { font-style: normal; font-size: var(--dsk-fs-caption); color: var(--dsk-ink-3); }
  .acct.on.svelte-16lraen .atxt:where(.svelte-16lraen) i:where(.svelte-16lraen) { color: color-mix(in srgb, var(--dsk-accent-ink) 75%, transparent); }

  /* 导航：macOS 分组（组间留空），行=渐变图标方块+标签 */
  .nav.svelte-16lraen { display: flex; flex-direction: column; gap: var(--dsk-s4); overflow-y: auto; min-height: 0; }
  .ngrp.svelte-16lraen { display: flex; flex-direction: column; gap: 1px; }
  .nit.svelte-16lraen {
    display: flex; align-items: center; gap: var(--dsk-s2);
    height: 30px; padding: 0 var(--dsk-s2); border-radius: var(--dsk-r-sm);
    font-family: inherit; font-size: var(--dsk-fs-ui); color: var(--dsk-ink); text-align: left;
    transition: background var(--dsk-t-fast) var(--dsk-ease);
  }
  .nit.svelte-16lraen:hover:not(.on) { background: var(--dsk-hover); }
  .nit.on.svelte-16lraen { background: var(--dsk-accent); color: var(--dsk-accent-ink); font-weight: 600; }
  /* 渐变图标方块（对「纯色分块」的答案）：基色 --gc + 上亮下暗渐变 + 高光发丝 + 微投影 */
  .gico.svelte-16lraen {
    width: 22px; height: 22px; border-radius: 6px; flex: none;
    display: inline-flex; align-items: center; justify-content: center;
    background-color: var(--gc);
    background-image: linear-gradient(180deg, rgba(255, 255, 255, .30) 0%, rgba(255, 255, 255, .05) 46%, rgba(0, 0, 0, .12) 100%);
    box-shadow: inset 0 .5px .5px rgba(255, 255, 255, .45), inset 0 0 0 .5px rgba(255, 255, 255, .12),
                0 .5px 1.5px rgba(0, 0, 0, .3);
  }

  .hits.svelte-16lraen { display: flex; flex-direction: column; gap: 2px; overflow-y: auto; min-height: 0; }
  .hit.svelte-16lraen {
    display: flex; align-items: center; justify-content: space-between; gap: var(--dsk-s2);
    padding: 7px var(--dsk-s2); border-radius: var(--dsk-r-sm);
    font-family: inherit; font-size: var(--dsk-fs-ui); color: var(--dsk-ink); text-align: left;
  }
  .hit.svelte-16lraen:hover { background: var(--dsk-hover); }
  .hit.svelte-16lraen .hs:where(.svelte-16lraen) { color: var(--dsk-ink-3); font-size: var(--dsk-fs-caption); flex: none; }
  .ver.svelte-16lraen { margin-top: auto; padding: var(--dsk-s2) var(--dsk-s2) 0; color: var(--dsk-ink-3); font-size: var(--dsk-fs-caption); }

  /* —— 详情列：不透明底 + 工具栏（‹ › + 居中标题）+ 居中内容列 —— */
  .det.svelte-16lraen {
    display: flex; flex-direction: column; min-width: 0; min-height: 0;
    background: var(--dsk-bg);
  }
  .dhd.svelte-16lraen {
    position: relative; flex: none;
    display: flex; align-items: center;
    height: var(--sd-hd); margin-top: var(--sd-band);
    padding: 0 var(--dsk-s4);
    transition: box-shadow var(--dsk-t-fast) ease;
  }
  .dhd.scrolled.svelte-16lraen { box-shadow: 0 1px 0 var(--dsk-line); }
  .hnav.svelte-16lraen { display: inline-flex; gap: 2px; }
  .hbtn.svelte-16lraen {
    width: 28px; height: 26px; border-radius: var(--dsk-r-xs);
    display: inline-flex; align-items: center; justify-content: center;
    color: var(--dsk-ink-2);
    transition: background var(--dsk-t-fast) var(--dsk-ease), color var(--dsk-t-fast) var(--dsk-ease);
  }
  .hbtn.svelte-16lraen:hover:not(:disabled) { background: var(--dsk-hover); color: var(--dsk-ink); }
  .hbtn.svelte-16lraen:disabled { color: var(--dsk-ink-3); opacity: .45; cursor: default; }
  .htitle.svelte-16lraen {
    position: absolute; left: 50%; transform: translateX(-50%);
    font-size: var(--dsk-fs-md); font-weight: 700; letter-spacing: -.01em;
    max-width: 60%; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  }
  .scroll.svelte-16lraen {
    flex: 1; min-height: 0; overflow-y: auto;
    padding: var(--dsk-s5) var(--dsk-s7) 64px;
  }
  .scroll.svelte-16lraen > * { max-width: 620px; margin-left: auto; margin-right: auto; }
  .scroll.svelte-16lraen section.grp { margin-bottom: var(--dsk-s5); }

  /* 账户 hero：大头像 + 名字 + 身份（macOS Apple 账户页的开场） */
  .ahero.svelte-16lraen { display: flex; flex-direction: column; align-items: center; gap: 6px; margin: var(--dsk-s3) auto var(--dsk-s5); }
  .ava.xl.svelte-16lraen { width: 68px; height: 68px; font-size: 28px; }
  .ava.xl.svelte-16lraen svg { width: 34px; height: 34px; }
  .ava.dim.svelte-16lraen { background: linear-gradient(180deg, #9a9aa0, #6c6c72); }
  .ahero.svelte-16lraen h2:where(.svelte-16lraen) { font-size: var(--dsk-fs-title); font-weight: 700; letter-spacing: -.01em; }
  .ahero.svelte-16lraen p:where(.svelte-16lraen) { font-size: var(--dsk-fs-sm); color: var(--dsk-ink-3); }

  /* 额度条 */
  .usage.svelte-16lraen { display: flex; flex-direction: column; gap: var(--dsk-s3); padding: var(--dsk-s3); }
  .u.svelte-16lraen { display: flex; align-items: center; gap: var(--dsk-s3); }
  .ul.svelte-16lraen { flex: none; width: 84px; font-size: var(--dsk-fs-ui); }
  .ubar.svelte-16lraen { flex: 1; height: 5px; border-radius: var(--dsk-r-full); background: var(--dsk-ctl); overflow: hidden; }
  .ubar.svelte-16lraen i:where(.svelte-16lraen) {
    display: block; height: 100%; border-radius: var(--dsk-r-full);
    background: var(--dsk-accent); min-width: 2px;
    transition: width var(--dsk-t-slow) var(--dsk-ease);
  }
  .ubar.svelte-16lraen i.hot:where(.svelte-16lraen) { background: var(--dsk-crit); }
  .uv.svelte-16lraen { flex: none; width: 42px; text-align: right; font-size: var(--dsk-fs-sm); color: var(--dsk-ink-2); font-variant-numeric: tabular-nums; }

  /* 扩展三类行的数量值（trailing 灰值，macOS 行值语气） */
  .cnt.svelte-16lraen { color: var(--dsk-ink-3); font-size: var(--dsk-fs-ui); font-variant-numeric: tabular-nums; }

  /* 登录表单（卡内）：窄列居中，macOS 登录卡的份量 */
  .lwrap.svelte-16lraen { max-width: 400px; }
  .lform.svelte-16lraen { display: flex; flex-direction: column; gap: var(--dsk-s2); padding: var(--dsk-s3); }
  .lacts.svelte-16lraen { display: flex; align-items: center; gap: var(--dsk-s2); margin-top: var(--dsk-s1); flex-wrap: wrap; }
  /* 扫码登录：白底码块（明暗主题下都可读）+ 状态盖层 */
  .qrpane.svelte-16lraen { display: flex; flex-direction: column; gap: var(--dsk-s2); padding: var(--dsk-s3); align-items: flex-start; }
  .qrbox.svelte-16lraen { position: relative; width: 208px; height: 208px; padding: 12px; border-radius: var(--dsk-r-lg); background: #fff; box-shadow: 0 0 0 1px var(--dsk-line); }
  .qrbox.svelte-16lraen svg { display: block; width: 100%; height: 100%; }
  .qrbox.dim.svelte-16lraen svg { opacity: .1; }
  .qrov.svelte-16lraen { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; text-align: center; padding: 16px; border: 0; border-radius: inherit; background: transparent; color: #15171c; font: inherit; font-size: var(--dsk-fs-ui); font-weight: 600; cursor: pointer; }
  .qrov.svelte-16lraen:disabled { cursor: default; color: #5a5e68; }

  .sldw.svelte-16lraen { display: inline-flex; align-items: center; gap: var(--dsk-s2); width: 230px; }
  .sldw.svelte-16lraen input { flex: 1; }
  .sldw.svelte-16lraen i:where(.svelte-16lraen) { font-style: normal; color: var(--dsk-ink-3); font-size: var(--dsk-fs-sm); width: 38px; text-align: right; flex: none; }

  /* 壁纸网格（嵌进 DGroup 卡里）。缩略图比例＝桌面窗口的横向比例：9/16 竖屏片
     是手机版直接搬过来的，在横向窗口上既不像预览也白占高度。 */
  .wpgrid.svelte-16lraen { display: grid; grid-template-columns: repeat(auto-fill, minmax(148px, 1fr)); gap: var(--dsk-s2); padding: var(--dsk-s3); }
  .wpc.svelte-16lraen { position: relative; }
  .wpbg.svelte-16lraen {
    display: block; width: 100%; aspect-ratio: 16 / 10; border-radius: var(--dsk-r-md);
    background: var(--dsk-panel-strong); box-shadow: 0 0 0 1px var(--dsk-line);
    transition: transform var(--dsk-t-fast) var(--dsk-ease), box-shadow var(--dsk-t-fast) var(--dsk-ease);
  }
  .wpc.svelte-16lraen:hover .wpbg:where(.svelte-16lraen) { transform: scale(1.02); }
  .wpc.sel.svelte-16lraen .wpbg:where(.svelte-16lraen) { box-shadow: 0 0 0 2px var(--dsk-accent), 0 0 0 4px color-mix(in srgb, var(--dsk-accent) 30%, transparent); }
  .wpx.svelte-16lraen {
    position: absolute; top: -6px; right: -6px; width: 20px; height: 20px; border-radius: 50%;
    background: var(--dsk-crit); color: #fff; font-size: 13px; line-height: 1;
    opacity: 0; transition: opacity var(--dsk-t-fast) ease;
    box-shadow: 0 1px 4px rgba(0,0,0,.4);
  }
  .wpc.svelte-16lraen:hover .wpx:where(.svelte-16lraen) { opacity: 1; }
  .wadd.svelte-16lraen {
    aspect-ratio: 16 / 10; border-radius: var(--dsk-r-md); font-size: 22px; color: var(--dsk-ink-3);
    background: var(--dsk-panel); box-shadow: 0 0 0 1px var(--dsk-line);
    transition: background var(--dsk-t-fast) ease, color var(--dsk-t-fast) ease;
  }
  .wadd.svelte-16lraen:hover { background: var(--dsk-hover); color: var(--dsk-ink); }

  .addr-line.svelte-16lraen { display: flex; gap: var(--dsk-s2); padding: var(--dsk-s3); align-items: center; }
  .addr-line.svelte-16lraen input { flex: 1; }
  .err.svelte-16lraen { color: var(--dsk-crit); font-size: var(--dsk-fs-sm); margin: var(--dsk-s2) var(--dsk-s3); }
  .ok.svelte-16lraen { color: var(--dsk-ok); font-size: var(--dsk-fs-sm); }
  .hl-line.svelte-16lraen { animation: svelte-16lraen-line-flash 1.5s var(--dsk-ease) 1; border-radius: var(--dsk-r-md); }
  @keyframes svelte-16lraen-line-flash { 0%, 70% { background: var(--dsk-sel); } 100% { background: transparent; } }

  /* 反馈 */
  .fb.svelte-16lraen { display: flex; flex-direction: column; gap: var(--dsk-s3); padding: var(--dsk-s3); }
  .fb.svelte-16lraen textarea:where(.svelte-16lraen) {
    width: 100%; resize: vertical; min-height: 88px;
    padding: var(--dsk-s2) var(--dsk-s3); border: none; border-radius: var(--dsk-r-sm);
    background: var(--dsk-panel); box-shadow: 0 0 0 1px var(--dsk-line);
    font-family: inherit; font-size: var(--dsk-fs-ui); line-height: 1.6; color: var(--dsk-ink);
  }
  .fb.svelte-16lraen textarea:where(.svelte-16lraen):focus { outline: none; box-shadow: var(--dsk-focus); }
  .fb-atts.svelte-16lraen { display: flex; flex-wrap: wrap; gap: var(--dsk-s2); }
  .fba.svelte-16lraen {
    display: inline-flex; align-items: center; gap: 6px; padding: 3px 8px;
    border-radius: var(--dsk-r-full); background: var(--dsk-panel-strong);
    font-size: var(--dsk-fs-sm); color: var(--dsk-ink-2); box-shadow: 0 0 0 1px var(--dsk-line);
  }
  .fba.pending.svelte-16lraen { opacity: .55; }
  .fba.svelte-16lraen button:where(.svelte-16lraen) { color: var(--dsk-ink-3); font-size: 13px; }
  .fba.svelte-16lraen button:where(.svelte-16lraen):hover { color: var(--dsk-crit); }
  .fb-acts.svelte-16lraen { display: flex; align-items: center; gap: var(--dsk-s2); }
  .fb-acts.svelte-16lraen .sp:where(.svelte-16lraen) { flex: 1; }

  .gs.svelte-1coop8v { position: absolute; inset: 0; width: 100%; height: 100%; display: block; }

  .bd.svelte-3leuc2 { position: fixed; inset: 0; z-index: 80; background: rgba(0, 0, 0, .34); cursor: default; }
  .cp.svelte-3leuc2 {
    position: fixed; z-index: 81; left: 50%; top: 22%; transform: translateX(-50%);
    width: min(560px, 86vw); overflow: hidden;
    font-family: var(--dsk-font); color: #fff;
    box-shadow: 0 30px 80px rgba(0, 0, 0, .45);
    animation: svelte-3leuc2-cp-in .16s var(--dsk-ease-out);
  }
  @keyframes svelte-3leuc2-cp-in { from { opacity: 0; transform: translateX(-50%) translateY(-6px) scale(.99); } }
  .in.svelte-3leuc2 { display: flex; align-items: center; gap: 10px; padding: 13px 15px; border-bottom: 1px solid rgba(255, 255, 255, .12); color: rgba(255, 255, 255, .65); }
  .in.svelte-3leuc2 input:where(.svelte-3leuc2) {
    flex: 1; background: none; border: none; outline: none;
    font-family: inherit; font-size: 15px; color: #fff;
  }
  .in.svelte-3leuc2 input:where(.svelte-3leuc2)::placeholder { color: rgba(255, 255, 255, .42); }
  kbd.svelte-3leuc2 {
    padding: 2px 6px; border-radius: 5px; font-family: inherit; font-size: 10.5px;
    background: rgba(255, 255, 255, .1); color: rgba(255, 255, 255, .6);
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .12);
  }
  .list.svelte-3leuc2 { padding: 6px; max-height: 340px; overflow: auto; }
  .it.svelte-3leuc2 {
    display: flex; align-items: center; gap: 10px; width: 100%;
    padding: 8px 10px; border-radius: 10px; text-align: left;
    font-family: inherit; font-size: 13.5px; color: rgba(255, 255, 255, .92);
  }
  .it.hi.svelte-3leuc2 { background: rgba(255, 255, 255, .14); }
  .dot.svelte-3leuc2 { width: 7px; height: 7px; border-radius: 50%; background: var(--dsk-accent, #d97757); flex: none; }
  .dot.ses.svelte-3leuc2 { background: #64d2ff; }
  .dot.set.svelte-3leuc2 { background: #bf5af2; }
  .lb.svelte-3leuc2 { flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .none.svelte-3leuc2 { padding: 16px; text-align: center; color: rgba(255, 255, 255, .45); font-size: 13px; }

  .dh.svelte-bsq5sx { position: fixed; inset: 0; background: #0a0a0a; overflow: hidden;
        transition: opacity var(--mo-quick) var(--ea-fade); }
  /* claude 入场：主页退到后面去。比转场本身快（200ms），否则前半段还亮着、纵深白让 */
  .dh.entering.svelte-bsq5sx { opacity: .5; }
  /* 设置逻辑板全屏且不透明，盖住期间禁掉主页 backdrop（多 backdrop 互毁课，沿袭手机端） */
  .dh.dimbg.svelte-bsq5sx .lg, .dh.dimbg.svelte-bsq5sx .card, .dh.dimbg.svelte-bsq5sx .dock.domglass:where(.svelte-bsq5sx) {
    backdrop-filter: none !important; -webkit-backdrop-filter: none !important;
  }
  .wp.svelte-bsq5sx { position: fixed; top: 0; left: 0; width: 100vw; height: 100dvh; border: 0; z-index: 0; pointer-events: none; }
  .wp-veil.svelte-bsq5sx { position: fixed; inset: 0; z-index: 1; pointer-events: none;
             background: radial-gradient(125% 95% at 50% 42%, rgba(0,0,0,0) 55%, rgba(0,0,0,.34) 100%); }

  .dock-wrap.svelte-bsq5sx { position: fixed; left: 0; right: 0; bottom: 22px; z-index: 6; display: flex; justify-content: center; pointer-events: none; }
  .dock.svelte-bsq5sx {
    pointer-events: auto;
    display: flex; align-items: center; gap: 10px;
    height: 68px; padding: 0 16px; border-radius: 30px;
  }
  .ditem.svelte-bsq5sx {
    width: 52px; height: 52px; display: grid; place-items: center;
    transform: scale(var(--s, 1)); transform-origin: 50% 100%;
    transition: transform .22s cubic-bezier(.32, 1.36, .4, 1);
  }
  .ditem.svelte-bsq5sx:active { transform: scale(calc(var(--s, 1) * .9)); }
  .dico.svelte-bsq5sx { width: 42px; height: 42px; object-fit: contain; filter: drop-shadow(0 3px 8px rgba(0, 0, 0, .38)); }
  .dico.handoff.svelte-bsq5sx { visibility: hidden; }
  .dsvg.svelte-bsq5sx { width: 40px; height: 40px; }
  .dsep.svelte-bsq5sx { width: 1px; height: 36px; background: rgba(255, 255, 255, .22); margin: 0 4px; flex: none; }

  .hint.svelte-bsq5sx {
    position: fixed; right: 20px; bottom: 30px; z-index: 5; pointer-events: none;
    font-family: var(--dsk-font); font-size: 11.5px; letter-spacing: .05em;
    color: rgba(255, 255, 255, .5); text-shadow: 0 1px 5px rgba(0, 0, 0, .4);
  }
/* ═══ 服务端控制台 · 设计系统（.sa-*，全局类） ═══════════════════════════════
   审美语言与设置页 v3 同源：iOS 26 液态玻璃——
   · 整页唯一一层 backdrop（罩在 ServerAdmin 根上），下层设置页的 backdrop 被 .covered 关闭；
   · chrome（侧栏/圆钮/胶囊）亮玻璃 = 半透白 + 上亮下暗发丝边；内容卡片刻意更素；
   · 行首 29×29 彩色图标方块、iOS 系统色板、绿色开关、蓝色主按钮。
   页面组件只放布局性的 scoped 样式，材质与控件一律用这里的令牌类。 */

.sa-root {
  --sa-blue: #0a84ff; --sa-green: #34c759; --sa-red: #ff453a; --sa-amber: #ff9f0a;
  --sa-purple: #bf5af2; --sa-teal: #64d2ff; --sa-gray: #8e8e93;
  --sa-tx: #fff; --sa-tx2: rgba(255,255,255,.58); --sa-tx3: rgba(255,255,255,.36);
  --sa-card: rgba(255,255,255,.085);
  --sa-hair: inset 0 0 0 .5px rgba(255,255,255,.08);
  --sa-chrome: rgba(255,255,255,.11);
  --sa-chrome-hair: inset 0 0 0 .5px rgba(255,255,255,.26), inset 0 1px 1px rgba(255,255,255,.3), 0 6px 20px rgba(0,0,0,.22);
  --sa-mono: ui-monospace, "SF Mono", "Cascadia Code", Consolas, monospace;
  color: var(--sa-tx);
  font-size: 14px;
}

/* —— 卡片 / 分组（对齐设置页 .group）—— */
.sa-card { background: var(--sa-card); box-shadow: var(--sa-hair); border-radius: 22px; }
.sa-card-h { display: flex; align-items: center; gap: 8px; padding: 14px 18px 0; font-size: 13px; font-weight: 600; color: var(--sa-tx2); }
.sa-card-h .sa-sp { flex: 1; }
.sa-foot { font-size: 12px; line-height: 1.55; color: var(--sa-tx3); padding: 7px 18px 0; }

/* —— 列表行（发丝分隔，对齐设置页 .row）—— */
.sa-rows { padding: 0 18px; }
.sa-row { position: relative; display: flex; align-items: center; gap: 12px; padding: 11px 0; min-height: 48px; width: 100%;
  background: none; border: 0; font: inherit; color: inherit; text-align: left; }
.sa-row + .sa-row::before { content: ''; position: absolute; top: 0; left: 0; right: -18px; height: .5px; background: rgba(255,255,255,.09); }
/* text-align 必须显式左对齐：这块常常是 <button>（浏览器默认 text-align:center），
   窄屏上每行文字都占满宽度看不出来，桌面宽窗一拉开标题就飘到行中间去了。 */
.sa-row-tx { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; font-size: 14.5px; color: var(--sa-tx); text-align: left; }
.sa-row-tx small { font-size: 12px; line-height: 1.45; color: var(--sa-tx2); overflow: hidden; text-overflow: ellipsis; }

/* —— 29×29 彩色图标方块（iOS 设置招牌）—— */
.sa-chip { width: 29px; height: 29px; border-radius: 7.5px; flex: none; display: flex; align-items: center; justify-content: center;
  background: var(--c, #8e8e93); box-shadow: inset 0 .5px .5px rgba(255,255,255,.28), inset 0 -.5px .5px rgba(0,0,0,.12); }
.sa-chip svg { width: 17px; height: 17px; }

/* —— 徽章 —— */
.sa-badge { display: inline-flex; align-items: center; gap: 5px; padding: 2.5px 9px; border-radius: 20px;
  font-size: 11.5px; font-weight: 650; font-family: var(--sa-mono); white-space: nowrap; }
.sa-badge.green { background: rgba(52,199,89,.17); color: #4cd964; }
.sa-badge.red { background: rgba(255,69,58,.17); color: #ff6961; }
.sa-badge.amber { background: rgba(255,159,10,.17); color: #ffb340; }
.sa-badge.blue { background: rgba(10,132,255,.2); color: #6cb2ff; }
.sa-badge.purple { background: rgba(191,90,242,.18); color: #d59bf5; }
.sa-badge.gray { background: rgba(142,142,147,.2); color: rgba(255,255,255,.55); }

/* 呼吸圆点（运行中） */
.sa-live { width: 7px; height: 7px; border-radius: 50%; background: var(--sa-green); display: inline-block; flex: none;
  animation: sa-pulse 1.6s infinite; }
@keyframes sa-pulse { 0% { box-shadow: 0 0 0 0 rgba(52,199,89,.5); } 70% { box-shadow: 0 0 0 7px rgba(52,199,89,0); } 100% { box-shadow: 0 0 0 0 rgba(52,199,89,0); } }
.sa-dot { width: 8px; height: 8px; border-radius: 50%; display: inline-block; flex: none; background: var(--sa-gray); }
.sa-dot.ok { background: var(--sa-green); box-shadow: 0 0 0 3px rgba(52,199,89,.18); }
.sa-dot.bad { background: var(--sa-red); box-shadow: 0 0 0 3px rgba(255,69,58,.18); }

/* —— 按钮 —— */
.sa-btn { display: inline-flex; align-items: center; justify-content: center; gap: 6px; padding: 8px 15px; border-radius: 999px;
  background: rgba(255,255,255,.1); color: var(--sa-tx); font: inherit; font-size: 13px; font-weight: 600; border: 0; cursor: pointer;
  box-shadow: inset 0 0 0 .5px rgba(255,255,255,.16); transition: background .15s ease, transform .12s ease, opacity .15s ease; white-space: nowrap; }
.sa-btn:hover { background: rgba(255,255,255,.16); }
.sa-btn:active { transform: scale(.96); }
.sa-btn:disabled { opacity: .4; cursor: default; }
.sa-btn.pri { background: var(--sa-blue); box-shadow: inset 0 0 0 .5px rgba(255,255,255,.3), 0 4px 14px rgba(10,132,255,.3); }
.sa-btn.pri:hover { background: #2492ff; }
.sa-btn.dgr { background: rgba(255,69,58,.15); color: #ff8078; box-shadow: inset 0 0 0 .5px rgba(255,69,58,.4); }
.sa-btn.dgr:hover { background: rgba(255,69,58,.9); color: #fff; }
.sa-btn.sm { padding: 5.5px 11px; font-size: 12px; }
.sa-btn.ghost { background: transparent; box-shadow: none; color: var(--sa-tx2); }
.sa-btn.ghost:hover { background: rgba(255,255,255,.1); color: var(--sa-tx); }

/* 圆形玻璃钮（关闭/刷新，对齐设置页 .back） */
.sa-cbtn { width: 38px; height: 38px; border-radius: 50%; display: flex; align-items: center; justify-content: center; flex: none;
  color: #fff; border: 0; cursor: pointer; background: var(--sa-chrome); box-shadow: var(--sa-chrome-hair); transition: background .15s ease, transform .12s ease; }
.sa-cbtn:hover { background: rgba(255,255,255,.18); }
.sa-cbtn:active { transform: scale(.93); }
.sa-cbtn svg { width: 19px; height: 19px; }

/* —— iOS 开关（对齐设置页 .sw）—— */
.sa-sw { position: relative; width: 46px; height: 28px; border-radius: 15px; background: rgba(120,120,128,.36); transition: background .22s ease; flex: none;
  box-shadow: inset 0 0 0 .5px rgba(255,255,255,.14); border: 0; cursor: pointer; }
.sa-sw.on { background: var(--sa-green); }
.sa-sw-knob { position: absolute; top: 2px; left: 2px; width: 24px; height: 24px; border-radius: 50%; background: #fff;
  box-shadow: 0 2px 6px rgba(0,0,0,.3); transition: transform .22s cubic-bezier(.32,.72,0,1); }
.sa-sw.on .sa-sw-knob { transform: translateX(18px); }

/* —— 玻璃分段胶囊（对齐设置页 .seg）—— */
.sa-seg { position: relative; display: grid; grid-template-columns: repeat(var(--n), 1fr); border-radius: 999px; padding: 4px;
  background: var(--sa-chrome); box-shadow: var(--sa-chrome-hair); width: max-content; }
.sa-seg-knob { position: absolute; top: 4px; left: 4px; width: calc((100% - 8px) / var(--n)); height: calc(100% - 8px);
  background: rgba(255,255,255,.88); border-radius: 999px; box-shadow: inset 0 .5px 1px rgba(255,255,255,.9), 0 3px 10px rgba(0,0,0,.28);
  transition: transform .32s cubic-bezier(.32,.72,0,1); }
.sa-seg-btn { position: relative; z-index: 1; padding: 6px 16px; color: rgba(255,255,255,.66); border: 0; background: none; cursor: pointer;
  font: inherit; font-size: 12.5px; font-weight: 650; transition: color .25s ease; white-space: nowrap; }
.sa-seg-btn.on { color: #101114; }

/* 小分段（行内、非胶囊主导航用，对齐 .effseg） */
.sa-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.sa-chip-btn { padding: 6px 13px; border-radius: 999px; background: rgba(255,255,255,.08); color: rgba(255,255,255,.7);
  font: inherit; font-size: 12.5px; font-weight: 600; border: 0; cursor: pointer; box-shadow: inset 0 0 0 .5px rgba(255,255,255,.1);
  transition: background .18s ease, color .18s ease; white-space: nowrap; }
.sa-chip-btn:hover { background: rgba(255,255,255,.14); color: #fff; }
.sa-chip-btn.on { background: rgba(255,255,255,.9); color: #16171a; }

/* —— 统计瓦片 —— */
.sa-stat { padding: 15px 18px; }
.sa-stat .k { font-size: 12px; color: var(--sa-tx2); margin-bottom: 7px; }
.sa-stat .v { font-size: 27px; font-weight: 700; font-family: var(--sa-mono); line-height: 1.05; font-variant-numeric: tabular-nums; }
.sa-stat .x { font-size: 11.5px; color: var(--sa-tx3); margin-top: 6px; }

/* —— 表格化网格行（用户/定时等多列数据）—— */
.sa-thead { display: grid; gap: 10px; padding: 12px 18px 8px; font-size: 11.5px; font-weight: 650; color: var(--sa-tx3); letter-spacing: .3px; }
.sa-tr { display: grid; gap: 10px; align-items: center; padding: 11px 18px; position: relative; font-size: 13.5px; }
.sa-tr::before { content: ''; position: absolute; top: 0; left: 18px; right: 0; height: .5px; background: rgba(255,255,255,.08); }
.sa-tr:hover { background: rgba(255,255,255,.04); }

.sa-mono { font-family: var(--sa-mono); font-variant-numeric: tabular-nums; }
.sa-mut { color: var(--sa-tx2); }
.sa-dim { color: var(--sa-tx3); }
.sa-trunc { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
.sa-empty { padding: 34px 18px; text-align: center; color: var(--sa-tx3); font-size: 13px; }
.sa-sp { flex: 1; }
.sa-hrow { display: flex; align-items: center; gap: 10px; }

/* —— 额度圆环 —— */
.sa-ring { --p: 0; width: 74px; height: 74px; border-radius: 50%; flex: none;
  background: conic-gradient(var(--rc, var(--sa-blue)) calc(var(--p) * 1%), rgba(255,255,255,.12) 0); position: relative; }
.sa-ring::after { content: attr(data-l); position: absolute; inset: 7px; border-radius: 50%; background: rgba(24,27,34,.92);
  display: flex; align-items: center; justify-content: center; font-family: var(--sa-mono); font-size: 14.5px; font-weight: 700; }

/* —— 弹窗（对齐设置页 .addr-card）—— */
.sa-mask { position: fixed; inset: 0; z-index: 80; background: rgba(0,0,0,.5); border: 0; cursor: default; padding: 0; }
.sa-modal { position: fixed; z-index: 81; left: 50%; top: 50%; transform: translate(-50%,-50%); width: calc(100% - 48px); max-width: 400px;
  background: rgba(30,30,34,.97); border-radius: 24px; padding: 22px; display: flex; flex-direction: column; gap: 12px;
  box-shadow: inset 0 0 0 .5px rgba(255,255,255,.12), 0 18px 50px rgba(0,0,0,.55); animation: sa-pop .16s ease; }
@keyframes sa-pop { from { opacity: 0; transform: translate(-50%,-46%); } to { opacity: 1; transform: translate(-50%,-50%); } }
.sa-modal h3 { font-size: 18px; font-weight: 700; color: #f2f2f2; }
.sa-modal p { font-size: 13px; line-height: 1.55; color: #9a9a9a; }
.sa-modal .acts { display: flex; gap: 10px; margin-top: 4px; }
.sa-modal .acts .sa-btn { flex: 1; height: 44px; border-radius: 22px; font-size: 14.5px; }
.sa-in { width: 100%; height: 44px; border: none; outline: none; border-radius: 13px; background: rgba(255,255,255,.08);
  box-shadow: inset 0 0 0 .5px rgba(255,255,255,.14); padding: 0 14px; font: inherit; font-size: 14.5px; color: #f2f2f2; }
.sa-in::placeholder { color: #6c6c6c; }
.sa-in:focus { box-shadow: inset 0 0 0 1px rgba(10,132,255,.7); }
.sa-lab { font-size: 12px; font-weight: 600; color: var(--sa-tx2); margin: 2px 2px -6px; }
.sa-err { background: rgba(255,69,58,.16); color: #ff8078; font-size: 12.5px; padding: 9px 12px; border-radius: 10px; }

/* —— 媒体宫格 —— */
.sa-media-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(148px, 1fr)); gap: 10px; }
.sa-media-grid img, .sa-media-grid video { width: 100%; aspect-ratio: 1; object-fit: cover; border-radius: 14px;
  background: rgba(0,0,0,.4); box-shadow: inset 0 0 0 .5px rgba(255,255,255,.1); display: block; }

/* —— toast —— */
.sa-toast { position: fixed; bottom: 26px; left: 50%; transform: translateX(-50%) translateY(16px); z-index: 90;
  background: rgba(38,38,44,.96); border-radius: 999px; padding: 11px 20px; font-size: 13px; color: #fff; opacity: 0; pointer-events: none;
  transition: all .25s ease; box-shadow: inset 0 0 0 .5px rgba(255,255,255,.16), 0 10px 34px rgba(0,0,0,.5); white-space: nowrap; }
.sa-toast.on { opacity: 1; transform: translateX(-50%) translateY(0); }
.sa-toast.err { color: #ffb3ad; box-shadow: inset 0 0 0 .5px rgba(255,90,80,.5), 0 10px 34px rgba(0,0,0,.5); }

/* —— 滚动条（细、玻璃）—— */
.sa-root ::-webkit-scrollbar { width: 6px; height: 6px; }
.sa-root ::-webkit-scrollbar-thumb { background: rgba(255,255,255,.16); border-radius: 3px; }
.sa-root ::-webkit-scrollbar-thumb:hover { background: rgba(255,255,255,.28); }
.sa-root ::-webkit-scrollbar-track { background: transparent; }

  .glist.svelte-jl0eq5 { padding: 4px 18px 8px; display: flex; flex-direction: column; }
  .grow.svelte-jl0eq5 { display: flex; align-items: center; gap: 12px; padding: 10px 0; position: relative; font-size: 13.5px; }
  .grow.svelte-jl0eq5 + .grow:where(.svelte-jl0eq5)::before { content: ''; position: absolute; top: 0; left: 0; right: -18px; height: .5px; background: rgba(255,255,255,.08); }
  .sid.svelte-jl0eq5 { width: 72px; flex: none; }
  .req.svelte-jl0eq5 { flex: 1; min-width: 0; color: rgba(255,255,255,.85); }
  .elapsed.svelte-jl0eq5 { flex: none; display: inline-flex; align-items: center; gap: 7px; }
  .subs.svelte-jl0eq5 { width: 22px; text-align: right; flex: none; }

  .tiles.svelte-6qh9yh { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-bottom: 12px; }
  .two.svelte-6qh9yh { display: grid; grid-template-columns: 1.4fr 1fr; gap: 12px; }
  .rings.svelte-6qh9yh { display: flex; flex-direction: column; gap: 16px; padding: 14px 18px 18px; }
  .ring-row.svelte-6qh9yh { display: flex; align-items: center; gap: 16px; }
  @media (max-width: 1080px) { .tiles.svelte-6qh9yh { grid-template-columns: repeat(2, 1fr); } .two.svelte-6qh9yh { grid-template-columns: 1fr; } }

  .two.svelte-12ngrpy { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 12px; }
  @media (max-width: 1080px) { .two.svelte-12ngrpy { grid-template-columns: 1fr; } }

  .sa-root .ucols.svelte-54ux8k { grid-template-columns: minmax(90px, 1fr) 64px 76px minmax(120px, 1.1fr) 72px auto; }
  .sa-root .icols.svelte-54ux8k { grid-template-columns: minmax(180px, 1.4fr) 64px minmax(100px, 1fr) 90px; }
  .acts.svelte-54ux8k { display: flex; gap: 6px; flex-wrap: wrap; justify-content: flex-end; }
  .invite-code.svelte-54ux8k { flex: 1; font-size: 17px; background: rgba(255,255,255,.07); padding: 11px 14px; border-radius: 12px;
    box-shadow: inset 0 0 0 .5px rgba(255,255,255,.14); letter-spacing: .5px; }
  .purge.svelte-54ux8k { display: flex; align-items: center; gap: 9px; font-size: 13.5px; color: #e8e8e8; cursor: pointer; }
  .purge.svelte-54ux8k input:where(.svelte-54ux8k) { width: 17px; height: 17px; accent-color: var(--sa-red); }
  @media (max-width: 1080px) {
    .sa-root .ucols.svelte-54ux8k { grid-template-columns: minmax(80px, 1fr) 60px 70px auto; }
    .sa-root .ucols.svelte-54ux8k > :where(.svelte-54ux8k):nth-child(4), .sa-root .ucols.svelte-54ux8k > :where(.svelte-54ux8k):nth-child(5) { display: none; }
  }

  .wrap.svelte-3dw8xj { display: grid; grid-template-columns: 190px 260px 1fr; gap: 12px; height: 100%; min-height: 420px; }
  .col.svelte-3dw8xj { display: flex; flex-direction: column; overflow: hidden; }
  .colh.svelte-3dw8xj { flex: none; font-size: 12.5px; font-weight: 650; color: var(--sa-tx2); padding: 13px 16px 10px; border-bottom: .5px solid rgba(255,255,255,.09); }
  .list.svelte-3dw8xj { flex: 1; overflow-y: auto; padding: 6px; }
  .li.svelte-3dw8xj { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; width: 100%; padding: 9px 11px; border-radius: 12px;
    border: 0; background: none; color: #fff; font: inherit; font-size: 13.5px; cursor: pointer; text-align: left; transition: background .13s ease; }
  .li.svelte-3dw8xj:hover { background: rgba(255,255,255,.08); }
  .li.on.svelte-3dw8xj { background: rgba(10,132,255,.22); box-shadow: inset 0 0 0 .5px rgba(10,132,255,.5); }
  .ucol.svelte-3dw8xj .li:where(.svelte-3dw8xj) { flex-direction: row; align-items: center; gap: 8px; }
  .lt.svelte-3dw8xj { width: 100%; }
  .lm.svelte-3dw8xj { font-size: 10.5px; color: var(--sa-tx3); }

  .thread.svelte-3dw8xj { flex: 1; overflow-y: auto; padding: 14px 16px; display: flex; flex-direction: column; gap: 14px; }
  .msg.svelte-3dw8xj { max-width: 92%; }
  .msg.mine.svelte-3dw8xj { align-self: flex-end; }
  .who.svelte-3dw8xj { font-size: 10.5px; font-weight: 650; letter-spacing: .4px; color: var(--sa-tx3); margin-bottom: 4px; }
  .msg.mine.svelte-3dw8xj .who:where(.svelte-3dw8xj) { text-align: right; }
  .bubble.svelte-3dw8xj { white-space: pre-wrap; word-break: break-word; font-size: 13.5px; line-height: 1.55; color: rgba(255,255,255,.88); }
  .msg.mine.svelte-3dw8xj .bubble:where(.svelte-3dw8xj) { background: rgba(255,255,255,.1); box-shadow: inset 0 0 0 .5px rgba(255,255,255,.12); border-radius: 14px; padding: 9px 13px; }
  .typing.svelte-3dw8xj { color: var(--sa-tx3); animation: svelte-3dw8xj-blink 1.2s ease-in-out infinite; }
  @keyframes svelte-3dw8xj-blink { 0%, 100% { opacity: .4; } 50% { opacity: 1; } }

  .foot.svelte-3dw8xj { flex: none; display: flex; gap: 8px; padding: 10px; border-top: .5px solid rgba(255,255,255,.09); }
  .foot.svelte-3dw8xj textarea:where(.svelte-3dw8xj) { flex: 1; resize: none; background: rgba(255,255,255,.07); box-shadow: inset 0 0 0 .5px rgba(255,255,255,.14);
    border: 0; outline: none; border-radius: 12px; padding: 10px 13px; color: #fff; font: inherit; font-size: 13.5px; max-height: 120px; }
  .foot.svelte-3dw8xj textarea:where(.svelte-3dw8xj):focus { box-shadow: inset 0 0 0 1px rgba(10,132,255,.65); }

  .qsep.svelte-3dw8xj { height: .5px; background: rgba(255,255,255,.12); margin: 6px 0; }
  .qopt.svelte-3dw8xj { display: flex; align-items: flex-start; gap: 9px; padding: 6px 2px; font-size: 13.5px; color: #e8e8e8; cursor: pointer; }
  .qopt.svelte-3dw8xj input:where(.svelte-3dw8xj) { margin-top: 2px; accent-color: var(--sa-blue); }
  .qopt.svelte-3dw8xj small:where(.svelte-3dw8xj) { color: #9a9a9a; }

  @media (max-width: 1080px) {
    .wrap.svelte-3dw8xj { grid-template-columns: 1fr; grid-template-rows: auto auto 1fr; min-height: 0; }
    .ucol.svelte-3dw8xj .list:where(.svelte-3dw8xj) { display: flex; flex-wrap: wrap; gap: 4px; }
    .ucol.svelte-3dw8xj .li:where(.svelte-3dw8xj) { width: auto; }
    .scol.svelte-3dw8xj { max-height: 200px; }
    .tcol.svelte-3dw8xj { min-height: 320px; }
  }

  .rcols.svelte-1vl57ar { grid-template-columns: minmax(110px, 1fr) 92px 110px 70px 84px minmax(140px, 1.3fr); }
  @media (max-width: 1080px) {
    .rcols.svelte-1vl57ar { grid-template-columns: minmax(100px, 1fr) 90px 84px; }
    .rcols.svelte-1vl57ar > :where(.svelte-1vl57ar):nth-child(3), .rcols.svelte-1vl57ar > :where(.svelte-1vl57ar):nth-child(4), .rcols.svelte-1vl57ar > :where(.svelte-1vl57ar):nth-child(6) { display: none; }
  }

  .alist.svelte-9zra78 { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 10px; }
  .arow.svelte-9zra78 { padding: 12px 14px; display: flex; flex-direction: column; gap: 8px; }
  .arow.svelte-9zra78 audio:where(.svelte-9zra78) { width: 100%; height: 36px; }

  .grid2.svelte-5r2mjt { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; align-items: start; }
  .pcode.svelte-5r2mjt { font-size: 16px; background: rgba(255,255,255,.07); padding: 8px 13px; border-radius: 11px;
    box-shadow: inset 0 0 0 .5px rgba(255,255,255,.14); letter-spacing: .5px; }
  .lanlist.svelte-5r2mjt { display: flex; flex-direction: column; align-items: flex-end; gap: 2px; font-size: 12.5px; }
  @media (max-width: 1080px) { .grid2.svelte-5r2mjt { grid-template-columns: 1fr; } }

  /* 全屏深色 tint：磨砂来自下层设置页的罩（本页不再开 backdrop，同屏单层铁律） */
  .sadm.svelte-iv7o4i {
    position: fixed; inset: 0; z-index: 62; display: flex;
    background: rgba(9, 11, 16, .38);
    animation: svelte-iv7o4i-sadm-in var(--mo-base) var(--ea-fade);
    transition: opacity var(--mo-quick) var(--ea-fade);
  }
  @keyframes svelte-iv7o4i-sadm-in { from { opacity: 0; } }
  .sadm.closing.svelte-iv7o4i { opacity: 0; pointer-events: none; }

  .frame.svelte-iv7o4i { flex: 1; display: flex; min-width: 0; padding: max(14px, var(--sat)) 16px max(14px, var(--sab)); gap: 14px; }

  /* —— 左侧玻璃导航 —— */
  .rail.svelte-iv7o4i {
    width: 224px; flex: none; display: flex; flex-direction: column; border-radius: 26px; padding: 16px 10px 12px;
    background: var(--sa-chrome); box-shadow: var(--sa-chrome-hair);
    animation: svelte-iv7o4i-rail-in var(--mo-base) var(--ea-decel) backwards;
  }
  @keyframes svelte-iv7o4i-rail-in { from { opacity: 0; transform: translateX(-14px); } }
  .brand.svelte-iv7o4i { display: flex; align-items: center; gap: 9px; padding: 2px 10px 1px; }
  .brand-tx.svelte-iv7o4i { font-size: 15.5px; font-weight: 700; letter-spacing: .2px; }
  .brand-sub.svelte-iv7o4i { font-size: 10.5px; color: var(--sa-tx3); padding: 3px 10px 12px 26px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .nav.svelte-iv7o4i { display: flex; flex-direction: column; gap: 2px; overflow-y: auto; }
  .nitem.svelte-iv7o4i { display: flex; align-items: center; gap: 10px; padding: 7px 9px; border-radius: 13px; border: 0; background: none;
    color: rgba(255,255,255,.88); font: inherit; font-size: 13.5px; cursor: pointer; text-align: left;
    transition: background var(--mo-micro) var(--ea-fade); min-height: 43px; }
  .nitem.svelte-iv7o4i:hover { background: rgba(255,255,255,.09); }
  .nitem.on.svelte-iv7o4i { background: var(--sa-blue); color: #fff; font-weight: 600; box-shadow: inset 0 .5px .5px rgba(255,255,255,.3), 0 4px 14px rgba(10,132,255,.28); }
  .nlab.svelte-iv7o4i { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .npill.svelte-iv7o4i { min-width: 19px; height: 19px; padding: 0 5px; border-radius: 10px; background: rgba(255,255,255,.2); color: #fff;
    font-size: 11px; font-weight: 700; font-family: var(--sa-mono); display: flex; align-items: center; justify-content: center; flex: none; }
  .npill.green.svelte-iv7o4i { background: var(--sa-green); }
  .nitem.on.svelte-iv7o4i .npill:where(.svelte-iv7o4i) { background: rgba(255,255,255,.28); }
  .ntag.svelte-iv7o4i { max-width: 64px; font-size: 10.5px; color: rgba(255,255,255,.6); flex: none; }
  .nitem.on.svelte-iv7o4i .ntag:where(.svelte-iv7o4i) { color: rgba(255,255,255,.85); }
  .rail-foot.svelte-iv7o4i { margin-top: auto; padding: 10px 10px 2px; font-size: 10.5px; color: var(--sa-tx3); border-top: .5px solid rgba(255,255,255,.1); }

  /* —— 主区 —— */
  .main.svelte-iv7o4i { flex: 1; min-width: 0; display: flex; flex-direction: column; }
  .top.svelte-iv7o4i { flex: none; display: flex; align-items: center; gap: 12px; padding: 4px 4px 12px; }
  .big.svelte-iv7o4i { font-size: 28px; font-weight: 700; letter-spacing: .2px; color: #fff; }
  .sub.svelte-iv7o4i { font-size: 12.5px; color: var(--sa-tx3); padding-top: 8px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .body.svelte-iv7o4i { flex: 1; min-height: 0; overflow-y: auto; padding: 2px 4px 10px; overscroll-behavior: contain; }

  /* —— 窄屏（竖窗/半屏）：侧栏变顶部横滑条 —— */
  @media (max-width: 880px) {
    .frame.svelte-iv7o4i { flex-direction: column; gap: 10px; padding: max(12px, var(--sat)) 12px max(12px, var(--sab)); }
    .rail.svelte-iv7o4i { width: 100%; flex-direction: row; align-items: center; border-radius: 20px; padding: 8px 10px; gap: 4px; }
    .brand.svelte-iv7o4i, .brand-sub.svelte-iv7o4i, .rail-foot.svelte-iv7o4i { display: none; }
    .nav.svelte-iv7o4i { flex-direction: row; overflow-x: auto; overflow-y: hidden; scrollbar-width: none; flex: 1; }
    .nav.svelte-iv7o4i::-webkit-scrollbar { display: none; }
    .nitem.svelte-iv7o4i { flex: none; min-height: 38px; padding: 5px 10px; }
    .ntag.svelte-iv7o4i { display: none; }
    .big.svelte-iv7o4i { font-size: 22px; }
  }

  /* 全屏深色 tint：磨砂来自下层设置页的罩（同屏单层 backdrop 铁律） */
  .extp.svelte-n5k9rr {
    position: fixed; inset: 0; z-index: 62; display: flex;
    background: rgba(9, 11, 16, .38);
    animation: svelte-n5k9rr-extp-in var(--mo-base) var(--ea-fade);
    transition: opacity var(--mo-quick) var(--ea-fade);
  }
  @keyframes svelte-n5k9rr-extp-in { from { opacity: 0; } }
  .extp.closing.svelte-n5k9rr { opacity: 0; pointer-events: none; }

  .frame.svelte-n5k9rr { flex: 1; display: flex; min-width: 0; padding: max(14px, var(--sat)) 16px max(14px, var(--sab)); gap: 14px; }

  /* —— 左侧玻璃导航（ServerAdmin 同款）—— */
  .rail.svelte-n5k9rr {
    width: 212px; flex: none; display: flex; flex-direction: column; border-radius: 26px; padding: 16px 10px 12px;
    background: var(--sa-chrome); box-shadow: var(--sa-chrome-hair);
    animation: svelte-n5k9rr-extp-rail var(--mo-base) var(--ea-decel) backwards;
  }
  @keyframes svelte-n5k9rr-extp-rail { from { opacity: 0; transform: translateX(-14px); } }
  .brand.svelte-n5k9rr { display: flex; align-items: center; gap: 9px; padding: 2px 10px 1px; }
  .brand-tx.svelte-n5k9rr { font-size: 15.5px; font-weight: 700; letter-spacing: .2px; }
  .brand-sub.svelte-n5k9rr { font-size: 10.5px; color: var(--sa-tx3); padding: 3px 10px 12px; }
  .nav.svelte-n5k9rr { display: flex; flex-direction: column; gap: 2px; overflow-y: auto; }
  .nitem.svelte-n5k9rr { display: flex; align-items: center; gap: 10px; padding: 7px 9px; border-radius: 13px; border: 0; background: none;
    color: rgba(255,255,255,.88); font: inherit; font-size: 13.5px; cursor: pointer; text-align: left;
    transition: background var(--mo-micro) var(--ea-fade); min-height: 43px; }
  .nitem.svelte-n5k9rr:hover { background: rgba(255,255,255,.09); }
  .nitem.on.svelte-n5k9rr { background: var(--sa-blue); color: #fff; font-weight: 600; box-shadow: inset 0 .5px .5px rgba(255,255,255,.3), 0 4px 14px rgba(10,132,255,.28); }
  .nlab.svelte-n5k9rr { flex: 1; min-width: 0; }
  .npill.svelte-n5k9rr { min-width: 19px; height: 19px; padding: 0 5px; border-radius: 10px; background: rgba(255,255,255,.2); color: #fff;
    font-size: 11px; font-weight: 700; font-family: var(--sa-mono); display: flex; align-items: center; justify-content: center; flex: none; }
  .nitem.on.svelte-n5k9rr .npill:where(.svelte-n5k9rr) { background: rgba(255,255,255,.28); }
  .rail-foot.svelte-n5k9rr { margin-top: auto; padding: 10px 10px 2px; font-size: 10.5px; line-height: 1.5; color: var(--sa-tx3); border-top: .5px solid rgba(255,255,255,.1); }

  /* —— 主区 —— */
  /* min-height:0 必须有：窄屏 .frame 转纵向后 .main 是纵向 flex 子项，min-height 默认 auto
     会被列表内容撑破视口，.body 的 overflow-y 永远不触发（手机端扩展页滚不动的元凶）。 */
  .main.svelte-n5k9rr { flex: 1; min-width: 0; min-height: 0; display: flex; flex-direction: column; }
  .top.svelte-n5k9rr { flex: none; display: flex; align-items: center; gap: 12px; padding: 4px 4px 12px; }
  .big.svelte-n5k9rr { font-size: 28px; font-weight: 700; letter-spacing: .2px; color: #fff; min-width: 0; }
  .sub.svelte-n5k9rr { font-size: 12.5px; color: var(--sa-tx3); padding-top: 8px; white-space: nowrap; }
  .body.svelte-n5k9rr { flex: 1; min-height: 0; overflow-y: auto; padding: 2px 4px 10px; overscroll-behavior: contain; }

  /* —— 列表行 —— */
  .rowbtn.svelte-n5k9rr { border: 0; background: none; cursor: pointer; padding: 0; font: inherit; }
  .rowname.svelte-n5k9rr { font-size: 14.5px; font-weight: 600; }
  .agrow.svelte-n5k9rr { display: flex; gap: 5px; margin-top: 1px; flex-wrap: wrap; }
  .agtag.svelte-n5k9rr { font-size: 10px; font-weight: 650; padding: 1.5px 7px; border-radius: 20px; background: rgba(10,132,255,.16); color: #79b8ff; }
  .agtag.mixed.svelte-n5k9rr { background: rgba(255,214,10,.16); color: #ffd60a; }
  .rowchev.svelte-n5k9rr { border: 0; background: none; color: var(--sa-tx3); cursor: pointer; padding: 4px; flex: none; display: flex; }

  /* —— 包卡片网格（参考 kimi 插件页：包为管理单位）—— */
  .pkggrid.svelte-n5k9rr { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 10px; margin-bottom: 4px; }
  .pkgcard.svelte-n5k9rr { display: flex; align-items: center; gap: 12px; padding: 14px 15px; }
  .pkgcard.svelte-n5k9rr .sa-row-tx:where(.svelte-n5k9rr) { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; text-align: left; }
  .pkg-chip.svelte-n5k9rr { width: 40px; height: 40px; border-radius: 11px; flex: none; }
  .pkg-chip.svelte-n5k9rr svg { width: 22px; height: 22px; }
  .pkglink.svelte-n5k9rr { border: 0; background: none; color: #79b8ff; cursor: pointer; font: inherit; padding: 0; }
  .pkglink.svelte-n5k9rr:hover { text-decoration: underline; }
  .ack.mixed.svelte-n5k9rr { background: rgba(10,132,255,.45); box-shadow: inset 0 .5px .5px rgba(255,255,255,.4); }
  .ack-dash.svelte-n5k9rr { width: 10px; height: 2.4px; border-radius: 2px; background: #fff; }

  /* —— 空态 —— */
  .empty-card.svelte-n5k9rr { display: flex; flex-direction: column; align-items: center; gap: 10px; padding: 44px 24px; text-align: center; }
  .empty-ico.svelte-n5k9rr { width: 54px; height: 54px; border-radius: 14px; background: var(--c); display: flex; align-items: center; justify-content: center;
    box-shadow: inset 0 .5px .5px rgba(255,255,255,.28), 0 8px 24px rgba(0,0,0,.3); margin-bottom: 2px; }
  .empty-ico.svelte-n5k9rr svg { width: 30px; height: 30px; }
  .empty-t.svelte-n5k9rr { font-size: 16.5px; font-weight: 700; }
  .empty-d.svelte-n5k9rr { font-size: 12.5px; line-height: 1.6; color: var(--sa-tx2); max-width: 320px; margin-bottom: 8px; }

  /* —— 详情 —— */
  .det.svelte-n5k9rr { max-width: 760px; }
  .det-head.svelte-n5k9rr { display: flex; align-items: center; gap: 13px; padding: 16px 18px; }
  .det-chip.svelte-n5k9rr { width: 44px; height: 44px; border-radius: 11px; }
  .det-chip.svelte-n5k9rr svg { width: 25px; height: 25px; }
  .det-head-tx.svelte-n5k9rr { flex: 1; min-width: 0; }
  .det-name.svelte-n5k9rr { font-size: 17px; font-weight: 700; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .det-meta.svelte-n5k9rr { font-size: 11.5px; color: var(--sa-tx3); margin-top: 3px; }
  .det-desc.svelte-n5k9rr { font-size: 13px; line-height: 1.65; color: var(--sa-tx2); padding: 12px 6px 0; }
  .det-sec.svelte-n5k9rr { padding: 20px 6px 8px; }
  .det-fcount.svelte-n5k9rr { font-size: 11px; font-weight: 700; font-family: var(--sa-mono); color: var(--sa-tx3); padding-left: 7px; }
  .det-cmd.svelte-n5k9rr { word-break: break-all; font-size: 12.5px; }

  /* agent 勾选行 */
  .ag-row.svelte-n5k9rr { cursor: pointer; }
  .ag-row.dis.svelte-n5k9rr { cursor: default; }
  .ag-row.dis.svelte-n5k9rr .sa-row-tx:where(.svelte-n5k9rr) { opacity: .38; }
  .ack.svelte-n5k9rr { width: 24px; height: 24px; border-radius: 50%; flex: none; display: flex; align-items: center; justify-content: center;
    box-shadow: inset 0 0 0 1.6px rgba(255,255,255,.28); transition: background var(--mo-micro) var(--ea-fade), box-shadow var(--mo-micro) var(--ea-fade); }
  .ack.on.svelte-n5k9rr { background: var(--sa-blue); box-shadow: inset 0 .5px .5px rgba(255,255,255,.4), 0 2px 8px rgba(10,132,255,.4); }
  .ack.svelte-n5k9rr svg { width: 13px; height: 13px; }
  .ag-row.dis.svelte-n5k9rr .ack:where(.svelte-n5k9rr) { box-shadow: inset 0 0 0 1.6px rgba(255,255,255,.12); }

  /* 文件预览 */
  .fchips.svelte-n5k9rr { display: flex; gap: 6px; overflow-x: auto; padding: 0 2px 8px; scrollbar-width: none; }
  .fchips.svelte-n5k9rr::-webkit-scrollbar { display: none; }
  .fchips.svelte-n5k9rr .sa-chip-btn { font-family: var(--sa-mono); font-size: 11.5px; font-weight: 500; flex: none; }
  .fmore.svelte-n5k9rr { font-size: 11px; color: var(--sa-tx3); align-self: center; flex: none; padding: 0 4px; }
  .fprev.svelte-n5k9rr { padding: 4px 18px; max-height: 46vh; overflow-y: auto; overscroll-behavior: contain; }
  .fpre.svelte-n5k9rr { font-family: var(--sa-mono); font-size: 12px; line-height: 1.6; color: rgba(255,255,255,.82); white-space: pre-wrap; word-break: break-word; padding: 12px 0; }

  /* md 渲染（自带小型排版，不依赖聊天气泡样式） */
  .extp-md.svelte-n5k9rr { padding: 14px 0 16px; font-size: 13.5px; line-height: 1.7; color: rgba(255,255,255,.88); }
  .extp-md.svelte-n5k9rr h1 { font-size: 19px; font-weight: 700; margin: 14px 0 8px; }
  .extp-md.svelte-n5k9rr h2 { font-size: 16px; font-weight: 700; margin: 14px 0 7px; }
  .extp-md.svelte-n5k9rr h3, .extp-md.svelte-n5k9rr h4 { font-size: 14px; font-weight: 650; margin: 12px 0 6px; }
  .extp-md.svelte-n5k9rr p { margin: 7px 0; }
  .extp-md.svelte-n5k9rr ul, .extp-md.svelte-n5k9rr ol { margin: 7px 0; padding-left: 22px; }
  .extp-md.svelte-n5k9rr li { margin: 3px 0; }
  .extp-md.svelte-n5k9rr code { font-family: var(--sa-mono); font-size: 12px; background: rgba(255,255,255,.1); border-radius: 5px; padding: 1.5px 5px; }
  .extp-md.svelte-n5k9rr pre { background: rgba(0,0,0,.35); border-radius: 12px; padding: 12px 14px; overflow-x: auto; margin: 9px 0; box-shadow: inset 0 0 0 .5px rgba(255,255,255,.08); }
  .extp-md.svelte-n5k9rr pre code { background: none; padding: 0; }
  .extp-md.svelte-n5k9rr blockquote { border-left: 3px solid rgba(255,255,255,.22); margin: 8px 0; padding: 2px 0 2px 12px; color: var(--sa-tx2); }
  .extp-md.svelte-n5k9rr table { border-collapse: collapse; margin: 9px 0; font-size: 12.5px; }
  .extp-md.svelte-n5k9rr th, .extp-md.svelte-n5k9rr td { border: .5px solid rgba(255,255,255,.16); padding: 5px 10px; }
  .extp-md.svelte-n5k9rr a { color: #79b8ff; }
  .extp-md.svelte-n5k9rr hr { border: 0; border-top: .5px solid rgba(255,255,255,.14); margin: 12px 0; }

  /* 操作行 */
  .actrow.svelte-n5k9rr { cursor: pointer; }
  .actrow.svelte-n5k9rr:hover { background: rgba(255,255,255,.04); }
  .actrow.dgr.svelte-n5k9rr .sa-row-tx:where(.svelte-n5k9rr) > span:where(.svelte-n5k9rr) { color: #ff8078; }

  /* —— 上传弹窗 —— */
  .drop.svelte-n5k9rr { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px; min-height: 148px;
    border-radius: 16px; border: 1.6px dashed rgba(255,255,255,.28); background: rgba(255,255,255,.05);
    color: var(--sa-tx2); font: inherit; cursor: pointer; transition: all var(--mo-micro) var(--ea-fade); }
  .drop.svelte-n5k9rr:hover, .drop.drag.svelte-n5k9rr { border-color: var(--sa-blue); background: rgba(10,132,255,.1); color: #fff; }
  .drop.busy.svelte-n5k9rr { pointer-events: none; opacity: .8; }
  .drop-t.svelte-n5k9rr { font-size: 13px; font-weight: 600; }
  .drop-busy.svelte-n5k9rr { width: 26px; height: 26px; border-radius: 50%; border: 2.5px solid rgba(255,255,255,.2); border-top-color: #fff;
    animation: svelte-n5k9rr-extp-spin .8s linear infinite; }
  @keyframes svelte-n5k9rr-extp-spin { to { transform: rotate(360deg); } }
  .req.svelte-n5k9rr { font-size: 11.5px !important; line-height: 1.6 !important; }

  /* 连接器表单 */
  .conn-modal.svelte-n5k9rr { max-height: calc(100dvh - 90px); overflow-y: auto; }
  .ta.svelte-n5k9rr { height: auto; padding: 10px 14px; resize: vertical; line-height: 1.5; font-size: 13px; }

  /* —— 窄屏（手机 / 竖窗）：侧栏变顶部横滑条 —— */
  @media (max-width: 880px) {
    .frame.svelte-n5k9rr { flex-direction: column; gap: 10px; padding: max(12px, var(--sat)) 12px max(12px, var(--sab)); }
    .rail.svelte-n5k9rr { width: 100%; flex-direction: row; align-items: center; border-radius: 20px; padding: 8px 10px; gap: 4px; }
    .brand.svelte-n5k9rr, .brand-sub.svelte-n5k9rr, .rail-foot.svelte-n5k9rr { display: none; }
    .nav.svelte-n5k9rr { flex-direction: row; overflow-x: auto; overflow-y: hidden; scrollbar-width: none; flex: 1; }
    .nav.svelte-n5k9rr::-webkit-scrollbar { display: none; }
    .nitem.svelte-n5k9rr { flex: none; min-height: 38px; padding: 5px 10px; }
    .big.svelte-n5k9rr { font-size: 22px; }
    .top.svelte-n5k9rr { flex-wrap: wrap; row-gap: 8px; }
    .det.svelte-n5k9rr { max-width: none; }
    .fprev.svelte-n5k9rr { max-height: 54vh; }
    .pkggrid.svelte-n5k9rr { grid-template-columns: 1fr; }
  }

  .zone.svelte-fk77m { position: fixed; z-index: 122; touch-action: none; -webkit-user-select: none; user-select: none; }

  /* 玻璃体定位：顶 = 挖孔上沿；水平居中挖孔中心；向下生长 */
  .orbpos.svelte-fk77m { position: fixed; z-index: 121; transform: translateX(-50%); pointer-events: none; }
  .glass.svelte-fk77m {
    position: relative; pointer-events: auto; overflow: hidden; touch-action: none;
    transition:
      width .4s cubic-bezier(.32,.9,.3,1),
      height .4s cubic-bezier(.32,.9,.3,1),
      border-radius .4s cubic-bezier(.32,.9,.3,1),
      transform .24s cubic-bezier(.34,1.5,.5,1);
  }
  /* 下拉跟手时禁 transition（1:1 跟手）；松手恢复 transition → 弹回/吸附 */
  .glass.dragging.svelte-fk77m { transition: none; }
  /* 挖孔膨胀生长：尺寸用 overshoot 缓动从挖孔长成球，全程保持正圆（border-radius:50%） */
  .glass.spawning.svelte-fk77m {
    border-radius: 50% !important;
    transition:
      width .56s cubic-bezier(.3,1.42,.5,1),
      height .56s cubic-bezier(.3,1.42,.5,1);
  }
  /* 退出：当前窗口原地 transform 缩放 + 淡出，缩回挖孔——不改尺寸/不换形状/不 snap 圆角，
     朝挖孔中心收（transform-origin）。比起改 width/height + 强切圆，这样形变自然不诡异。 */
  .glass.retracting.svelte-fk77m {
    transform: scale(0.08);
    transform-origin: 50% calc(var(--asst-hole, 24px) / 2);
    opacity: 0;
    pointer-events: none;
    transition: transform .34s cubic-bezier(.5,0,.84,.32), opacity .3s ease-in .03s;
  }
  .glass.listening.svelte-fk77m { animation: svelte-fk77m-pulse 1.1s ease-in-out infinite; }
  @keyframes svelte-fk77m-pulse { 0%,100% { transform: scale(1); } 50% { transform: scale(1.06); } }

  /* 纯黑圆：挖孔本体。生长时淡出露折射、退出时淡入盖住——opacity 由 holeOpacity 内联驱动 */
  .hole.svelte-fk77m {
    position: absolute; inset: 0; border-radius: inherit; pointer-events: none; z-index: 6;
    background: #070708; transition: opacity .42s ease;
  }

  /* 暗罩 = 「盖挖孔的黑帽」：只盖玻璃体顶部 var(--asst-hole)(=挖孔高)区域，下边羽化到全透 →
     球下半部纯净折射、不发黑发脏。orb 态只有黑帽；input/answering 态黑帽下再补一层可读暗罩。 */
  .dark.svelte-fk77m {
    position: absolute; inset: 0; border-radius: inherit; pointer-events: none; z-index: 1;
    background: linear-gradient(to bottom,
      rgba(6,6,8,.98) 0,
      rgba(6,6,8,.98) var(--asst-hole, 24px),
      rgba(6,6,8,0) calc(var(--asst-hole, 24px) + 42px));
  }
  /* 输入态：黑帽盖挖孔后，往下长而柔地过渡到一层【较淡】暗罩（够托住输入文字、又不发黑） */
  .glass.inputstage.svelte-fk77m .dark:where(.svelte-fk77m) {
    background: linear-gradient(to bottom,
      rgba(6,6,8,.97) 0,
      rgba(6,6,8,.95) var(--asst-hole, 24px),
      rgba(8,8,11,.28) calc(var(--asst-hole, 24px) + 30px),
      rgba(8,8,11,.28) 100%);
  }
  /* 回复态药丸高：实黑盖到挖孔下沿(var(--asst-hole)，覆盖挖孔下半部分、对齐)，再【长】渐变到可读
     暗罩（折射仍隐约透出），保证文字清晰。渐变范围拉大(~44px)更柔。 */
  .glass.answering.svelte-fk77m .dark:where(.svelte-fk77m) {
    background: linear-gradient(to bottom,
      rgba(6,6,8,.98) 0,
      rgba(6,6,8,.98) var(--asst-hole, 24px),
      rgba(8,8,11,.6) calc(var(--asst-hole, 24px) + 44px),
      rgba(8,8,11,.6) 100%);
  }
  .wave.svelte-fk77m { position: absolute; inset: 0; width: 100%; height: 100%; border-radius: inherit; pointer-events: none; z-index: 2; }

  /* 立体感靠球轮廓的折射打光（无中心高光、无硬亮边）：边缘柔光过渡（圆润丝滑）+ 边缘暗环体现曲面，
     中心保持清透折射；亮边轮廓改由 canvas 的「边缘折射亮环」画（赤道两端亮，模拟边缘折射） */
  .sphere.svelte-fk77m {
    position: absolute; inset: 0; border-radius: inherit; pointer-events: none; z-index: 2;
    box-shadow:
      inset 0 0 7px rgba(255,255,255,.12),
      inset 0 0 16px 2px rgba(255,255,255,.045),
      inset 0 0 22px 7px rgba(0,0,0,.13);
  }

  /* 思考层：圆点夹在折射背景和暗罩之间，单独一档虚化（背景磨砂不变；blur 量由 inline --DOT_BLUR 设） */
  .mid.svelte-fk77m { position: absolute; inset: 0; pointer-events: none; }
  /* 8 点思考：旋转 + 一圈律动（亮度/辉光波浪绕圈跑） */
  .dots.svelte-fk77m { position: absolute; left: 50%; top: 50%; width: 0; height: 0; animation: svelte-fk77m-spin 2.8s linear infinite; pointer-events: none; }
  .dots.svelte-fk77m i:where(.svelte-fk77m) { position: absolute; left: -3.5px; top: -3.5px; width: 7px; height: 7px; border-radius: 50%; background: #fff; animation: svelte-fk77m-dotpulse 1.25s ease-in-out infinite; }
  .dots.svelte-fk77m i:where(.svelte-fk77m):nth-child(1){transform:rotate(0) translateY(-24px);animation-delay:0s}
  .dots.svelte-fk77m i:where(.svelte-fk77m):nth-child(2){transform:rotate(45deg) translateY(-24px);animation-delay:-.156s}
  .dots.svelte-fk77m i:where(.svelte-fk77m):nth-child(3){transform:rotate(90deg) translateY(-24px);animation-delay:-.312s}
  .dots.svelte-fk77m i:where(.svelte-fk77m):nth-child(4){transform:rotate(135deg) translateY(-24px);animation-delay:-.469s}
  .dots.svelte-fk77m i:where(.svelte-fk77m):nth-child(5){transform:rotate(180deg) translateY(-24px);animation-delay:-.625s}
  .dots.svelte-fk77m i:where(.svelte-fk77m):nth-child(6){transform:rotate(225deg) translateY(-24px);animation-delay:-.781s}
  .dots.svelte-fk77m i:where(.svelte-fk77m):nth-child(7){transform:rotate(270deg) translateY(-24px);animation-delay:-.938s}
  .dots.svelte-fk77m i:where(.svelte-fk77m):nth-child(8){transform:rotate(315deg) translateY(-24px);animation-delay:-1.094s}
  .dotc.svelte-fk77m { position: absolute; left: 50%; top: 50%; width: 8px; height: 8px; margin: -4px 0 0 -4px; border-radius: 50%; background: #fff; pointer-events: none; animation: svelte-fk77m-dotcpulse 1.6s ease-in-out infinite; }
  @keyframes svelte-fk77m-spin { to { transform: rotate(360deg); } }
  @keyframes svelte-fk77m-dotpulse { 0%,100% { opacity:.45; box-shadow:0 0 5px 1px rgba(255,255,255,.6) } 50% { opacity:1; box-shadow:0 0 16px 5px rgba(255,255,255,1) } }
  @keyframes svelte-fk77m-dotcpulse { 0%,100% { opacity:.55; box-shadow:0 0 6px 1px rgba(255,255,255,.6) } 50% { opacity:1; box-shadow:0 0 15px 4px rgba(255,255,255,1) } }

  /* 等待挂起的转交任务：圆点不转圈，改「心跳闪烁」——中间先闪一下、外围紧接着闪一圈，然后歇拍循环。
     环点只动 opacity/辉光（transform 用于定位，不能碰）；中心点可顺带缩放。 */
  .dots.waiting.svelte-fk77m { animation: none !important; }
  .dots.waiting.svelte-fk77m i:where(.svelte-fk77m) { animation: svelte-fk77m-ringbeat 1.6s ease-in-out infinite !important; }
  .dotc.waiting.svelte-fk77m { animation: svelte-fk77m-centerbeat 1.6s ease-in-out infinite !important; }
  @keyframes svelte-fk77m-centerbeat {
    0%, 32%, 100% { opacity:.32; transform: scale(1); box-shadow:0 0 5px 1px rgba(255,255,255,.4) }
    12% { opacity:1; transform: scale(1.4); box-shadow:0 0 18px 6px rgba(255,255,255,1) }
  }
  @keyframes svelte-fk77m-ringbeat {
    0%, 30%, 100% { opacity:.26; box-shadow:0 0 4px 1px rgba(255,255,255,.32) }
    48% { opacity:1; box-shadow:0 0 15px 5px rgba(255,255,255,.95) }
    72% { opacity:.3; box-shadow:0 0 5px 1px rgba(255,255,255,.38) }
  }

  /* 回复文字：玻璃体内，顶部偏移挖孔高度（=挖孔下沿，切下弧）；hug 文字、超长内部滚动 */
  .ans.svelte-fk77m {
    position: absolute; top: var(--asst-hole, 24px); left: 50%; transform: translateX(-50%); z-index: 3;
    width: max-content; max-width: min(320px, 76vw); max-height: 54vh;
    overflow-y: auto; overflow-x: hidden; -webkit-overflow-scrolling: touch; scrollbar-width: none;
    padding: 2px 2px 0;
    color: #f4f4f2; font-family: var(--sans); font-size: 16px; line-height: 1.5; letter-spacing: .1px;
    text-align: left; word-break: break-word;
    text-shadow: 0 1px 3px rgba(0,0,0,.5);
    animation: svelte-fk77m-fade .35s ease;
  }
  .ans.svelte-fk77m::-webkit-scrollbar { display: none; }
  .ans.svelte-fk77m p { margin: .3em 0; }
  .ans.svelte-fk77m p:first-child { margin-top: 0; }
  .ans.svelte-fk77m ul, .ans.svelte-fk77m ol { margin: .3em 0; padding-left: 1.2em; }
  .ans.svelte-fk77m strong { font-weight: 650; }
  .ans.svelte-fk77m a { color: #9ab4ff; text-decoration: underline; }
  .ans.svelte-fk77m code { font-family: ui-monospace, monospace; background: rgba(255,255,255,.14); padding: .05em .35em; border-radius: 5px; font-size: .9em; }
  .err.svelte-fk77m { color: #f0a48f; }
  .caret.svelte-fk77m { display: inline-block; width: 7px; height: 1.05em; vertical-align: -2px; margin-left: 2px; background: #cfcfd6; border-radius: 1px; animation: svelte-fk77m-blink 1s steps(2) infinite; }
  @keyframes svelte-fk77m-blink { 50% { opacity: 0; } }

  /* 输入药丸：DOM 输入框叠在玻璃药丸中心 */
  .pill.svelte-fk77m {
    position: fixed; z-index: 123;
    left: var(--asst-cx, 50vw); top: var(--asst-cy, 14vh);
    transform: translate(-50%, -50%);
    width: calc(var(--asst-barw, 280px) - 34px); height: var(--asst-barh, 52px);   /* 宽高都跟随玻璃条（多行自适应） */
    display: flex; align-items: center; gap: 8px;
    /* touch-action:none —— 让「上拉退出」手势在输入栏上也能被识别（否则聚焦的 textarea 把竖向拖动当成滚动/选词吞掉） */
    touch-action: none;
    animation: svelte-fk77m-fade .3s ease; transition: height .4s cubic-bezier(.32,.9,.3,1), opacity .26s ease;
  }
  .pill.closing.svelte-fk77m { opacity: 0; pointer-events: none; }   /* 退出时随玻璃条一起淡出 */
  .pill.svelte-fk77m textarea:where(.svelte-fk77m) { flex: 1; resize: none; border: none; outline: none; background: none; color: #fff; font-family: var(--sans); font-size: 16px; line-height: 1.4; max-height: 120px; padding: 6px 0; caret-color: #fff; touch-action: none; }
  .pill.svelte-fk77m textarea:where(.svelte-fk77m)::placeholder { color: rgba(255,255,255,.42); }
  .send.svelte-fk77m { flex: none; align-self: flex-end; margin-bottom: 8px; width: 36px; height: 36px; border-radius: 50%; display: flex; align-items: center; justify-content: center; background: #fff; color: #161618; }
  .send.svelte-fk77m:disabled { opacity: .4; }

  .hint.svelte-fk77m {
    position: fixed; z-index: 123; pointer-events: none;
    left: var(--asst-cx, 50vw); top: calc(var(--asst-cy, 14vh) + 78px);
    transform: translateX(-50%); white-space: nowrap;
    color: rgba(255,255,255,.8); font-family: var(--sans); font-size: 14px; letter-spacing: .2px;
    text-shadow: 0 1px 8px rgba(0,0,0,.5); animation: svelte-fk77m-fade .3s ease;
  }

  @keyframes svelte-fk77m-fade { from { opacity: 0; } to { opacity: 1; } }

  /* 助手 toast：固定屏底的轻反馈条（保存结果等） */
  .asst-toast.svelte-fk77m {
    position: fixed; z-index: 130; left: 50%; bottom: calc(env(safe-area-inset-bottom, 0px) + 34px);
    transform: translateX(-50%); max-width: 80vw;
    padding: 10px 16px; border-radius: 14px;
    background: rgba(20,20,22,.92); color: #f4f4f2;
    font-family: var(--sans); font-size: 14px; line-height: 1.4; text-align: center; word-break: break-word;
    box-shadow: 0 8px 26px rgba(0,0,0,.42); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
    animation: svelte-fk77m-fade .25s ease;
  }
  .asst-toast.err.svelte-fk77m { background: rgba(74,28,24,.94); color: #f6c9bd; }

  /* 挖孔手动校准层：全屏接管指针（拖动移动绿环），底部卡片调直径/微调/保存 */
  .calwrap.svelte-fk77m { position: fixed; inset: 0; z-index: 400; background: rgba(0, 0, 0, .28); touch-action: none; }
  .calring.svelte-fk77m {
    position: fixed; border-radius: 50%; border: 1.5px solid #30d158; pointer-events: none;
    box-shadow: 0 0 0 1px rgba(0, 0, 0, .55), 0 0 14px rgba(48, 209, 88, .8), inset 0 0 8px rgba(48, 209, 88, .35);
  }
  .calcard.svelte-fk77m {
    position: fixed; left: 12px; right: 12px; bottom: calc(var(--sab, 0px) + 20px);
    background: rgba(20, 20, 22, .95); border: 1px solid rgba(255, 255, 255, .1); border-radius: 16px;
    padding: 12px 14px; color: #eee; font-size: 13px; display: flex; flex-direction: column; gap: 10px;
  }
  .calhint.svelte-fk77m { color: #9a9a9e; font-size: 12px; line-height: 1.5; }
  .calrow.svelte-fk77m { display: flex; align-items: center; gap: 8px; }
  .callab.svelte-fk77m { flex: none; font-variant-numeric: tabular-nums; }
  .calv.svelte-fk77m { margin-left: auto; color: #9a9a9e; font-size: 12px; }
  .calrange.svelte-fk77m { flex: 1; accent-color: #30d158; min-width: 0; }
  .calb.svelte-fk77m {
    flex: none; min-width: 40px; height: 34px; border-radius: 10px; border: 1px solid rgba(255, 255, 255, .14);
    background: rgba(255, 255, 255, .08); color: #eee; font-size: 14px;
  }
  .calb.svelte-fk77m:active { background: rgba(255, 255, 255, .2); }
  .calb.wide.svelte-fk77m { flex: 1; }
  .calb.save.svelte-fk77m { background: #30d158; border-color: #30d158; color: #04120a; font-weight: 600; }

  /* 挖孔定位诊断叠层（设置页开关）：全屏 SVG 画挖孔检测框 + 数值读出，穿透不挡操作 */
  .cutdbg.svelte-fk77m { position: fixed; inset: 0; width: 100vw; height: 100vh; z-index: 200; pointer-events: none; }
  .cutdbgtxt.svelte-fk77m {
    position: fixed; z-index: 201; left: 50%; top: 34%; transform: translateX(-50%);
    pointer-events: none; white-space: nowrap; text-align: center;
    font-family: ui-monospace, monospace; font-size: 11px; line-height: 1.6; color: #eee;
    background: rgba(0,0,0,.66); padding: 5px 9px; border-radius: 8px;
  }

  .drag.svelte-1wh1v5h {
    position: fixed; top: 0; left: 0; right: 0; z-index: 5;
    -webkit-app-region: drag; pointer-events: none;
  }
  /* 顶带内既有交互元素的免拖洞（属性门控：data-wco 只在 WCO 壳里出现，
     手机/网页永不匹配，规则零成本）。 */
  html[data-wco="1"] .brand,
  html[data-wco="1"] .plabel,
  html[data-wco="1"] .card,
  html[data-wco="1"] .card-bd {
    -webkit-app-region: no-drag;
  }

  .dnd-layer.svelte-7mmf3r { position: fixed; inset: 0; z-index: 4000; pointer-events: none; }

  /* 卡片刻意做成「浅色实体」而不是跟随主题：它要同时压在浅色的工作空间页和深色的 Claude
     会话页上都读得出来，跟主题走反而两头不讨好。 */
  .dnd-card.svelte-7mmf3r {
    position: absolute; transform: translate(-50%, calc(-50% - 22px)) scale(1);
    display: flex; align-items: center; gap: 8px; max-width: 62vw;
    padding: 7px 12px 7px 8px; border-radius: 13px;
    background: rgba(255, 255, 255, .94); color: #1d1d1f;
    box-shadow: 0 10px 30px rgba(0, 0, 0, .28), 0 1px 0 rgba(255, 255, 255, .7) inset;
    backdrop-filter: blur(14px) saturate(150%); -webkit-backdrop-filter: blur(14px) saturate(150%);
    animation: svelte-7mmf3r-dndLift .24s cubic-bezier(.2, .9, .3, 1.25);
    transition: transform .12s ease, box-shadow .12s ease;
    will-change: left, top;
  }
  .dnd-card.over.svelte-7mmf3r { transform: translate(-50%, calc(-50% - 22px)) scale(1.045); box-shadow: 0 14px 38px rgba(0, 0, 0, .34); }
  /* 从原位抬起来：--ox/--oy 把卡片先摆回原位中心，再弹到手指上方 */
  @keyframes svelte-7mmf3r-dndLift {
    from { transform: translate(calc(-50% + var(--ox, 0px)), calc(-50% + var(--oy, 0px))) scale(.86); opacity: .55; box-shadow: 0 2px 6px rgba(0, 0, 0, .12); }
  }
  /* 落进落点：缩进去、淡掉；取消：飞回原位。left/top 只在这两段挂过渡。 */
  .dnd-card.drop.svelte-7mmf3r, .dnd-card.cancel.svelte-7mmf3r { animation: none; transition: left .22s cubic-bezier(.3, .7, .2, 1), top .22s cubic-bezier(.3, .7, .2, 1), transform .22s cubic-bezier(.3, .7, .2, 1), opacity .2s ease .04s; }
  .dnd-card.drop.svelte-7mmf3r { transform: translate(-50%, -50%) scale(.22); opacity: 0; }
  .dnd-card.cancel.svelte-7mmf3r { transform: translate(-50%, -50%) scale(.72); opacity: 0; }

  /* 叠放：后面再垫两张，像 iOS 一样歪着露个角 */
  .dnd-under.svelte-7mmf3r { position: absolute; inset: 0; border-radius: 13px; background: rgba(255, 255, 255, .88); box-shadow: 0 6px 20px rgba(0, 0, 0, .18); z-index: -1; }
  .dnd-under.u1.svelte-7mmf3r { transform: translate(5px, 6px) rotate(3deg); }
  .dnd-under.u2.svelte-7mmf3r { transform: translate(-4px, 11px) rotate(-4deg); opacity: .85; }

  .dnd-ic.svelte-7mmf3r { width: 26px; height: 26px; flex: none; display: flex; align-items: center; justify-content: center; color: #007aff; }
  .dnd-ic.svelte-7mmf3r img:where(.svelte-7mmf3r) { width: 100%; height: 100%; object-fit: cover; border-radius: 5px; }
  .dnd-ic.svelte-7mmf3r svg { width: 100%; height: 100%; }
  .dnd-nm.svelte-7mmf3r { font: 500 13.5px/1.2 -apple-system, 'Segoe UI', 'Microsoft YaHei UI', sans-serif; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .dnd-n.svelte-7mmf3r { flex: none; min-width: 19px; height: 19px; padding: 0 5px; border-radius: 10px; background: #ff383c; color: #fff;
    font: 700 11.5px/19px -apple-system, sans-serif; text-align: center; }
  .dnd-badge.svelte-7mmf3r { position: absolute; right: -7px; bottom: -7px; width: 21px; height: 21px; border-radius: 50%;
    display: grid; place-items: center; background: #0088ff; color: #fff; box-shadow: 0 2px 7px rgba(0, 0, 0, .3); }
  .dnd-badge.send.svelte-7mmf3r { background: #c96442; }
  .dnd-badge.copy.svelte-7mmf3r { background: #34c759; }
  .dnd-badge.svelte-7mmf3r svg:where(.svelte-7mmf3r) { width: 12px; height: 12px; }

  /* 弹簧倒计时环：stroke-dashoffset 从整圈走到 0，时长与 SPRING_MS 同步 */
  .dnd-spring.svelte-7mmf3r { position: absolute; left: -9px; top: -9px; width: 22px; height: 22px; transform: rotate(-90deg); }
  .dnd-spring.svelte-7mmf3r circle:where(.svelte-7mmf3r) { fill: rgba(255, 255, 255, .95); stroke: #0088ff; stroke-width: 2.6; stroke-linecap: round;
    stroke-dasharray: 59.7; stroke-dashoffset: 59.7; animation: svelte-7mmf3r-dndSpring var(--spring-ms, 650ms) linear forwards; }
  @keyframes svelte-7mmf3r-dndSpring { to { stroke-dashoffset: 0; } }

  .dnd-hint.svelte-7mmf3r {
    position: absolute; transform: translate(-50%, 16px); max-width: 70vw;
    padding: 4px 11px; border-radius: 20px; background: rgba(20, 20, 22, .82); color: #fff;
    font: 500 11.5px/1.5 -apple-system, 'Segoe UI', 'Microsoft YaHei UI', sans-serif;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
    animation: svelte-7mmf3r-dndHint .16s ease;
  }
  @keyframes svelte-7mmf3r-dndHint { from { opacity: 0; transform: translate(-50%, 22px); } }

  .dnd-toast.svelte-7mmf3r {
    position: fixed; left: 50%; bottom: calc(var(--sab, 0px) + 92px); transform: translateX(-50%);
    z-index: 4001; pointer-events: none; max-width: 82vw;
    padding: 9px 16px; border-radius: 22px; background: rgba(20, 20, 22, .88); color: #fff;
    font: 500 13px/1.4 -apple-system, 'Segoe UI', 'Microsoft YaHei UI', sans-serif;
    box-shadow: 0 8px 26px rgba(0, 0, 0, .3); text-align: center;
    animation: svelte-7mmf3r-dndToastIn .2s cubic-bezier(.2, .9, .3, 1.2);
  }
  @keyframes svelte-7mmf3r-dndToastIn { from { opacity: 0; transform: translate(-50%, 10px); } }

  .ps.svelte-y69xvf { position: fixed; inset: 0; z-index: 400; background: #0a0a0a; color: #fff; overflow: hidden; }
  .cam.svelte-y69xvf { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; background: #000; }
  /* 取景框外的四周压暗：用一个巨大的 box-shadow 挖出中间的正方形 */
  .mask.svelte-y69xvf { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; pointer-events: none; }
  .frame.svelte-y69xvf { position: relative; width: min(66vw, 300px); aspect-ratio: 1; border-radius: 22px; box-shadow: 0 0 0 200vmax rgba(0,0,0,.52); }
  .c.svelte-y69xvf { position: absolute; width: 26px; height: 26px; border: 3px solid #fff; }
  .c.tl.svelte-y69xvf { left: -2px; top: -2px; border-right: 0; border-bottom: 0; border-top-left-radius: 18px; }
  .c.tr.svelte-y69xvf { right: -2px; top: -2px; border-left: 0; border-bottom: 0; border-top-right-radius: 18px; }
  .c.bl.svelte-y69xvf { left: -2px; bottom: -2px; border-right: 0; border-top: 0; border-bottom-left-radius: 18px; }
  .c.br.svelte-y69xvf { right: -2px; bottom: -2px; border-left: 0; border-top: 0; border-bottom-right-radius: 18px; }
  .beam.svelte-y69xvf { position: absolute; left: 10px; right: 10px; top: 0; height: 2px; border-radius: 2px;
    background: linear-gradient(90deg, transparent, rgba(120,170,255,.95), transparent);
    box-shadow: 0 0 14px rgba(120,170,255,.8); animation: svelte-y69xvf-beam 2.2s ease-in-out infinite; }
  @keyframes svelte-y69xvf-beam { 0% { transform: translateY(6px); } 50% { transform: translateY(calc(min(66vw, 300px) - 8px)); } 100% { transform: translateY(6px); } }
  .top.svelte-y69xvf { position: absolute; top: 0; left: 0; right: 0; padding: calc(var(--sat, 0px) + 10px) 12px 0; display: flex; align-items: center; gap: 10px; }
  .x.svelte-y69xvf { width: 40px; height: 40px; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: #fff; background: rgba(0,0,0,.35); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); }
  .title.svelte-y69xvf { font-size: 17px; font-weight: 700; text-shadow: 0 1px 3px rgba(0,0,0,.5); }
  .bot.svelte-y69xvf { position: absolute; left: 0; right: 0; bottom: 0; padding: 0 24px calc(var(--sab, 0px) + 36px); display: flex; flex-direction: column; align-items: center; gap: 18px; }
  .hint.svelte-y69xvf { font-size: 15px; color: rgba(255,255,255,.85); text-align: center; text-shadow: 0 1px 3px rgba(0,0,0,.5); transition: color .2s; }
  .hint.warn.svelte-y69xvf { color: #ffb4a6; }
  .alt.svelte-y69xvf { height: 40px; padding: 0 20px; border-radius: 20px; color: #fff; font-size: 14px; font-weight: 600; background: rgba(255,255,255,.14); box-shadow: inset 0 0 0 .5px rgba(255,255,255,.3); }
  .file.svelte-y69xvf { position: absolute; width: 0; height: 0; opacity: 0; pointer-events: none; }

  .bd.svelte-y69xvf { position: absolute; inset: 0; background: rgba(0,0,0,.5); border: 0; padding: 0; }
  .sheet.svelte-y69xvf { position: absolute; left: 12px; right: 12px; bottom: calc(var(--sab, 0px) + 12px); max-width: 420px; margin: 0 auto;
    border-radius: 30px; padding: 28px 22px calc(22px); background: rgba(240,243,250,.97); color: #15171c;
    box-shadow: 0 30px 90px rgba(0,0,0,.5), inset 0 1px 1px rgba(255,255,255,.7); display: flex; flex-direction: column; gap: 10px; }
  .glyph.svelte-y69xvf { width: 68px; height: 68px; border-radius: 22px; display: flex; align-items: center; justify-content: center; color: #2f6fed; background: rgba(47,111,237,.12); margin-bottom: 4px; }
  .glyph.ok.svelte-y69xvf { color: #2f9e5b; background: rgba(47,158,91,.13); }
  .glyph.bad.svelte-y69xvf { color: #b13b2a; background: rgba(217,106,90,.14); }
  .sheet.svelte-y69xvf h3:where(.svelte-y69xvf) { font-size: 23px; font-weight: 800; }
  .sub.svelte-y69xvf { font-size: 14.5px; color: #4b4f58; line-height: 1.45; }
  .rows.svelte-y69xvf { display: flex; flex-direction: column; border-radius: 14px; background: rgba(255,255,255,.7); box-shadow: inset 0 0 0 .5px rgba(0,0,0,.08); overflow: hidden; margin-top: 4px; }
  .row.svelte-y69xvf { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 12px 14px; font-size: 15px; }
  .row.svelte-y69xvf + .row:where(.svelte-y69xvf) { border-top: .5px solid rgba(0,0,0,.08); }
  .row.svelte-y69xvf span:where(.svelte-y69xvf) { color: #6b6f78; flex: none; }
  .row.svelte-y69xvf b:where(.svelte-y69xvf) { font-weight: 600; text-align: right; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .foot.svelte-y69xvf { font-size: 12.5px; color: #82858d; }
  .acts.svelte-y69xvf { display: flex; flex-direction: column; gap: 10px; margin-top: 8px; }
  .act.svelte-y69xvf { width: 100%; height: 50px; border-radius: 25px; font-size: 17px; font-weight: 700; display: flex; align-items: center; justify-content: center; transition: transform var(--mo-tap, .12s) var(--ea-out, ease-out); }
  .act.svelte-y69xvf:active { transform: scale(.97); }
  .act.primary.svelte-y69xvf { background: #2f6fed; color: #fff; box-shadow: 0 6px 16px rgba(47,111,237,.4); }
  .act.primary.svelte-y69xvf:disabled { opacity: .6; }
  .act.ghost.svelte-y69xvf { background: rgba(0,0,0,.05); color: #2f6fed; font-weight: 600; height: 46px; }
  .act.link.svelte-y69xvf { background: none; color: #5a5e68; font-weight: 500; height: 38px; font-size: 14px; }

  .offline-banner.svelte-1n46o8q {
    position: fixed; top: 0; left: 0; right: 0; z-index: 100;
    padding: calc(var(--sat) + 3px) 10px 4px;
    background: rgba(24,24,27,.92); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px);
    color: #e8c07a; font-size: 12.5px; text-align: center; pointer-events: none;
  }
  /* 条本身不吃点击（免得挡住下面的界面），只有这颗按钮收回指针事件。 */
  .ob-btn.svelte-1n46o8q {
    pointer-events: auto; margin-left: 10px; padding: 2px 10px; border-radius: 999px;
    border: 1px solid rgba(232,192,122,.5); background: rgba(232,192,122,.12);
    color: #f0d8a8; font: inherit; font-size: 12px; cursor: pointer;
  }
  .ob-btn.svelte-1n46o8q:hover { background: rgba(232,192,122,.22); }

  .share-shell.svelte-5b30ug { position: fixed; inset: 0; }

  /* 顶栏已去除：安全区顶距挪到根容器，内容不顶进状态栏（hero 绝对定位于 stage、scroll 常规流，都随之下移）。 */
  .snap-root.svelte-1csy5nh { position: fixed; inset: 0; display: flex; flex-direction: column; background: var(--bg); color: var(--text);
    padding-top: var(--sat, 0px); padding-bottom: var(--kb, 0px); }
  /* 宽屏且工作台开着：对话列 + 工作台列并排（窄屏工作台是覆盖式底部 sheet，不占位） */
  .snap-root.wide.svelte-1csy5nh { flex-direction: row; }
  .col.svelte-1csy5nh { flex: 1; min-width: 0; min-height: 0; display: flex; flex-direction: column; position: relative; }

  .stage.svelte-1csy5nh { flex: 1; position: relative; min-height: 0; display: flex; flex-direction: column; }
  .hero.svelte-1csy5nh { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: flex-start;
    padding: 13vh 16px 24px; }
  .greeting.svelte-1csy5nh { display: flex; align-items: center; gap: 10px; margin-bottom: 22px; }
  .snap-hero-logo.svelte-1csy5nh { display: inline-flex; flex: none; }
  .greeting.svelte-1csy5nh h1:where(.svelte-1csy5nh) { font-family: var(--serif-stack); font-weight: 290; font-size: 27px; line-height: 1.12; color: var(--serif); }
  .hero-composer.svelte-1csy5nh { width: 100%; max-width: 760px; }
  .hero-note.svelte-1csy5nh { margin-top: 16px; max-width: 560px; text-align: center; color: var(--muted); font-size: 12px; line-height: 1.7; padding: 0 10px; }

  .scroll.svelte-1csy5nh { flex: 1; overflow-y: auto; -webkit-overflow-scrolling: touch; padding-bottom: calc(var(--composer-h, 84px) + 8px); }
  /* 正文滚条=Claude 分页同款 6px 细滚条（只用 webkit 伪元素——别设标准 scrollbar-width/
     scrollbar-color，Chromium 里标准属性一出现伪元素即整体失效） */
  .scroll.svelte-1csy5nh::-webkit-scrollbar { width: 6px; }
  .scroll.svelte-1csy5nh::-webkit-scrollbar-track { background: transparent; }
  .scroll.svelte-1csy5nh::-webkit-scrollbar-thumb { background: color-mix(in srgb, var(--muted) 38%, transparent); border-radius: 999px; }
  @media (hover: hover) { .scroll.svelte-1csy5nh::-webkit-scrollbar-thumb:hover { background: color-mix(in srgb, var(--muted) 62%, transparent); } }
  .composer-wrap.svelte-1csy5nh { position: absolute; left: 0; right: 0; bottom: 0; z-index: 5;
    padding: 6px 8px max(10px, var(--sab, 0px)); background: transparent; pointer-events: none; }
  .composer-inner.svelte-1csy5nh { max-width: 760px; margin: 0 auto; pointer-events: auto; }

  .dead-banner.svelte-1csy5nh { background: var(--card); border-radius: 18px; box-shadow: var(--card-shadow); padding: 15px 18px;
    color: var(--muted); font-size: 13.5px; text-align: center; line-height: 1.6; }

  .dead.svelte-1csy5nh { flex: 1; display: grid; place-items: center; padding: 24px; }
  .dead-card.svelte-1csy5nh { text-align: center; max-width: 420px; }
  .dead-icon.svelte-1csy5nh { font-size: 40px; margin-bottom: 14px; }
  .dead-card.svelte-1csy5nh h2:where(.svelte-1csy5nh) { font-family: var(--serif-stack); font-weight: 500; font-size: 22px; color: var(--text); margin-bottom: 10px; }
  .dead-sub.svelte-1csy5nh { color: var(--muted); font-size: 14px; line-height: 1.7; }
  .dead-reason.svelte-1csy5nh { margin-top: 8px; color: var(--muted); font-size: 13px; }
  .dead-hint.svelte-1csy5nh { margin-top: 16px; color: var(--muted); font-size: 12.5px; }

  /* 无顶栏：安全区顶距挪到根容器，内容不顶进状态栏（同 SnapPage）。 */
  .q-root.svelte-t3rc5w { position: fixed; inset: 0; display: flex; flex-direction: column; background: var(--bg); color: var(--text);
    padding-top: var(--sat, 0px); padding-bottom: var(--kb, 0px); }
  /* 宽屏且工作台开着：对话列 + 工作台列并排（窄屏工作台是覆盖式底部 sheet，不占位） */
  .q-root.wide.svelte-t3rc5w { flex-direction: row; }
  .col.svelte-t3rc5w { flex: 1; min-width: 0; min-height: 0; display: flex; flex-direction: column; position: relative; }

  /* 左上「新建快照」：TopBar 那颗圆钮的同款毛玻璃材质（图标=侧栏「新建快照」同一枚
     Anthropicons 闪电 U+E098）。 */
  .q-new.svelte-t3rc5w {
    position: absolute; z-index: 30; left: 10px; top: 10px; width: 44px; height: 44px; border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    font-family: var(--icons); font-size: 20px; color: var(--serif);
    background: rgba(32, 32, 30, .42);
    -webkit-backdrop-filter: blur(18px) saturate(1.5); backdrop-filter: blur(18px) saturate(1.5);
  }
  html[data-theme="light"] .q-new.svelte-t3rc5w { background: rgba(248, 248, 246, .5); }
  .q-new.svelte-t3rc5w:active { background: rgba(32, 32, 30, .6); }
  html[data-theme="light"] .q-new.svelte-t3rc5w:active { background: rgba(235, 235, 230, .7); }
  .q-new.svelte-t3rc5w:disabled { opacity: .5; }

  .stage.svelte-t3rc5w { flex: 1; position: relative; min-height: 0; display: flex; flex-direction: column; }
  .hero.svelte-t3rc5w { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: flex-start;
    padding: 13vh 16px 24px; }
  .greeting.svelte-t3rc5w { display: flex; align-items: center; gap: 10px; margin-bottom: 22px; }
  .q-hero-logo.svelte-t3rc5w { display: inline-flex; flex: none; }
  .greeting.svelte-t3rc5w h1:where(.svelte-t3rc5w) { font-family: var(--serif-stack); font-weight: 290; font-size: 27px; line-height: 1.12; color: var(--serif); }
  .hero-composer.svelte-t3rc5w { width: 100%; max-width: 760px; }
  .hero-note.svelte-t3rc5w { margin-top: 16px; max-width: 560px; text-align: center; color: var(--muted); font-size: 12px; line-height: 1.7; padding: 0 10px; }

  .scroll.svelte-t3rc5w { flex: 1; overflow-y: auto; -webkit-overflow-scrolling: touch; padding-bottom: calc(var(--composer-h, 84px) + 8px); }
  /* 正文滚条=Claude 分页同款 6px 细滚条（只用 webkit 伪元素——标准 scrollbar-width 一出现伪元素即失效） */
  .scroll.svelte-t3rc5w::-webkit-scrollbar { width: 6px; }
  .scroll.svelte-t3rc5w::-webkit-scrollbar-track { background: transparent; }
  .scroll.svelte-t3rc5w::-webkit-scrollbar-thumb { background: color-mix(in srgb, var(--muted) 38%, transparent); border-radius: 999px; }
  @media (hover: hover) { .scroll.svelte-t3rc5w::-webkit-scrollbar-thumb:hover { background: color-mix(in srgb, var(--muted) 62%, transparent); } }

  .composer-wrap.svelte-t3rc5w { position: absolute; left: 0; right: 0; bottom: 0; z-index: 5;
    padding: 6px 8px max(10px, var(--sab, 0px)); background: transparent; pointer-events: none; }
  .composer-inner.svelte-t3rc5w { max-width: 760px; margin: 0 auto; pointer-events: auto; }
  /* 回退横条的槽：与输入框卡片同宽同轴；RefusalBand 没东西显示时自己不渲染，槽随之塌陷。 */
  .band-slot.svelte-t3rc5w { max-width: 760px; margin: 0 auto; pointer-events: auto; }

  .mid.svelte-t3rc5w { flex: 1; display: grid; place-items: center; padding: 24px; }
  .card.svelte-t3rc5w { width: 100%; max-width: 320px; display: flex; flex-direction: column; gap: 10px; text-align: center; }
  .card.svelte-t3rc5w h2:where(.svelte-t3rc5w) { font-family: var(--serif-stack); font-weight: 500; font-size: 22px; color: var(--text); }
  .mid-sub.svelte-t3rc5w { color: var(--muted); font-size: 13.5px; line-height: 1.7; }
  .f.svelte-t3rc5w { width: 100%; padding: 11px 14px; border-radius: 14px; border: 1px solid var(--line, rgba(128,128,128,.28));
    background: var(--card); color: var(--text); font: inherit; font-size: 14px; }
  .f.svelte-t3rc5w:focus { outline: none; border-color: color-mix(in srgb, var(--serif) 45%, transparent); }
  .err.svelte-t3rc5w { color: var(--err, #d66); font-size: 13px; }
  .go.svelte-t3rc5w { margin-top: 4px; padding: 11px 14px; border-radius: 14px; background: var(--serif); color: var(--bg);
    font: inherit; font-size: 14px; font-weight: 600; }
  .go.svelte-t3rc5w:disabled { opacity: .6; }
  .alt.svelte-t3rc5w { color: var(--muted); font: inherit; font-size: 12.5px; padding: 4px; }
