/* ============================================================
   Today Local 视觉第一阶段：对齐原版 Today 1.21.3 设计令牌
   来源：docs/parity-comparison-2026-10-09.md 第 3 节
   （原版 prod.asar 内 CSS 提取值，均为静态可验证规格）
   ============================================================ */

/* 字体：Figtree 变量字体（SIL OFL 1.1，见 fonts/FIGTREE-OFL.txt）。
   原版中文手写字体 AaJinRiHuaQing 打包内未随附许可文本，许可不明，
   按约束不内嵌，中文回退系统字体栈（PingFang SC 等）。 */
@font-face{font-family:'Figtree';src:url('fonts/figtree-variable.woff2') format('woff2');font-weight:300 900;font-style:normal;font-display:swap}

:root{
  /* —— 颜色（报告 3.1 浅色令牌） —— */
  --foreground:#3c3b41;            /* 墨色主文本 / 主色（非彩色） */
  --primary:#3c3b41;
  --background:#dddee3;            /* 内容视口底色 */
  --muted-foreground:#34345166;    /* 次要文本 */
  --card:#ffffff5c;                /* 半透明白卡 */
  --glass-bg:#ffffff5c;
  --glass-border:#fff6;
  --glass-inset-shadow:inset 0 1px 1px #ffffff40;
  --glass-elevated-bg:#fffc;       /* 浮层卡 */
  --glass-elevated-border:#0000001a;
  --glass-elevated-shadow:-4px 8px 28px #6868680a,0 2px 8px #6464640f;
  --border:#0000000d;
  --border-subtle:#3c3b411a;
  --blue:#008aff;                  /* 功能蓝 */
  --violet:#8b5cf6;                /* 功能紫 */
  --success:#30a46c;--success-bg:#e9f9ee;
  --warning:#ffc53d;--warning-bg:#fff7d6;
  --error:#e5484d;--error-bg:#feecee;
  --info:#0090ff;--info-bg:#e6f4ff;
  /* —— 窗口级背景（报告 3.2，原版 JS 常量 TODAY_APP_*） —— */
  --viewport:#ACCDEC;              /* 视口色：浅 #ACCDEC / 深 #1A1A2E */
  --app-gradient:linear-gradient(180deg,#ACCDEC 0%,#E7EBF4 61.54%,#FFDDB9 100%);
  --chat-gradient:#ededed;         /* 浅色聊天区为纯白底（原版实测 237-242）；深色单独覆盖 */
  --pane-bg:transparent;      /* 原版右栏面板透出窗口渐变（色块网格证据） */
  --pane-border:#fff6;
  --profile-gradient:linear-gradient(125deg,#e7f0ff,#fff1e8);
  /* —— 组件语义（浅色） —— */
  --field-bg:#ffffffb3;--field-border:#3c3b411a;--field-focus-border:#008aff;
  /* 用户气泡：交互验收 2026-10-09 Runtime 实测基础色 rgb(0,0,0)、圆角 20/20/17px；
     对报告自带截图逐像素采样，实际渲染为约 8% 黑的浅灰底（基础色以低 alpha 合成）+ 深色字，
     故取 #00000014（8% 黑）。深色模式见 .dark 分支（原版深色未实测）。 */
  --bubble-user-bg:#00000014;
  --bubble-assistant-bg:#ffffff;      /* 助手气泡：实测纯白 rgb(255,255,255)、圆角 16px */
  --send-idle-bg:#0000004d;--send-idle-fg:#fff;  /* 发送钮 idle：实测 rgba(0,0,0,0.3) */
  --conv-item-bg:#ffffff;--conv-item-hover:#f6f7f9;  /* 会话条目卡：原版实测白底 12px 圆角 */
  --send-bg:#3c3b41;--send-fg:#fff;
  --toast-bg:#3c3b41ee;--toast-fg:#fff;
  --switch-bg:#c4c7ce;--switch-on-bg:#30a46c;
  --nav-fg:#34345166;--nav-active-bg:#fffffff0;
  --tabbar-bg:#ffffff80;           /* 原版窄屏 tab 条 bg-white/50 */
  --tab-active-bg:#fff;--tab-active-shadow:0 2px 8px #7c8da020;
  --icon-bg:#e9edf3;--icon-fg:#778393;
  --status-neutral-bg:#3c3b410d;--status-neutral-fg:#77858d;
  --dialog-bg:#fffc;
  --backdrop:#27394b44;
  /* —— 字号（报告 3.3：token 12–36px + 常用任意值 10/11/13/15/17） —— */
  --text-10:10px;--text-11:11px;--text-13:13px;--text-15:15px;--text-17:17px;
  --text-xs:12px;--text-sm:14px;--text-base:16px;--text-lg:18px;
  --text-xl:20px;--text-2xl:24px;--text-3xl:30px;--text-4xl:36px;
  /* —— 间距：4px 基准阶梯 —— */
  --spacing:4px;
  --space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;
  --space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;
  /* —— 圆角：xs 2px – 4xl 32px —— */
  --radius-xs:2px;--radius-sm:4px;--radius-md:6px;--radius-lg:8px;
  --radius-xl:12px;--radius-2xl:16px;--radius-3xl:24px;--radius-4xl:32px;
  /* —— 字体栈 —— */
  --font-sans:'Figtree',-apple-system,BlinkMacSystemFont,'PingFang SC','Hiragino Sans GB',system-ui,sans-serif;
  --font-serif:'Songti SC','Kaiti SC',Georgia,serif;
}

/* 深色模式：报告 3.2 .dark 令牌（success 等背景按 success #4ade8026 同一 alpha 模式推导） */
.dark{
  --foreground:#e8e8ec;--primary:#e8e8ec;
  --background:#1a1a1c;
  --muted-foreground:#e8e8ec99;
  --card:#ffffff0f;
  --glass-bg:#ffffff0f;
  --glass-border:#ffffff1a;
  --glass-inset-shadow:inset 0 1px 1px #ffffff14;
  --glass-elevated-bg:#ffffff1a;
  --glass-elevated-border:#00000000;
  --glass-elevated-shadow:-4px 8px 28px #00000026,0 2px 8px #00000033;
  --border:#ffffff14;--border-subtle:#ffffff1f;
  --success:#4ade80;--success-bg:#4ade8026;
  --warning:#fbbf24;--warning-bg:#fbbf2426;
  --error:#f87171;--error-bg:#f8717126;
  --info:#38bdf8;--info-bg:#38bdf826;
  --viewport:#1A1A2E;
  --app-gradient:linear-gradient(180deg,#1A1A2E 0%,#24233B 61.54%,#3B2A35 100%);
  --chat-gradient:linear-gradient(180deg,#10101E 0%,#171625 50%,#281C24 100%);
  --pane-bg:#24233Bd9;
  --pane-border:#ffffff1a;
  --profile-gradient:linear-gradient(125deg,#2a2a46,#3b2a35);
  --field-bg:#ffffff14;--field-border:#ffffff29;--field-focus-border:#38bdf8;
  --bubble-user-bg:#ffffff1f;         /* 原版深色态未实测，暂用对称的浅底（约 12% 白），待深色实机核对 */
  --bubble-assistant-bg:#ffffff14;
  --send-idle-bg:#ffffff24;--send-idle-fg:#e8e8ec;
  --conv-item-bg:#ffffff1a;--conv-item-hover:#ffffff26;
  --send-bg:#e8e8ec;--send-fg:#1a1a1c;
  --toast-bg:#e8e8ec;--toast-fg:#1a1a1c;
  --switch-bg:#ffffff29;--switch-on-bg:#4ade80;
  --nav-fg:#e8e8ec99;--nav-active-bg:#ffffff1f;
  --tabbar-bg:#ffffff14;
  --tab-active-bg:#ffffff24;--tab-active-shadow:0 2px 8px #00000059;
  --icon-bg:#ffffff14;--icon-fg:#e8e8ec99;
  --status-neutral-bg:#ffffff14;--status-neutral-fg:#e8e8ec99;
  --dialog-bg:#262633f2;
  --backdrop:#00000080;
}

*{box-sizing:border-box}
body{margin:0;font-family:var(--font-sans);font-size:var(--text-base);line-height:1.5;color:var(--foreground);background:var(--viewport)} /* 原版实测 16px/24px */
button,input,textarea,select{font:inherit;color:inherit}
button{cursor:pointer;border:0;background:none}
button:disabled{cursor:wait;opacity:.45}
button:focus-visible,a:focus-visible{outline:2px solid var(--blue);outline-offset:3px}
input,textarea,select{border:1px solid var(--field-border);border-radius:var(--radius-2xl);padding:10px 12px;background:var(--field-bg);outline:none;width:100%}
input:focus,textarea:focus,select:focus{border-color:var(--field-focus-border)}
textarea{resize:vertical}

/* —— 外壳：原版垂直蓝→奶油窗口渐变 —— */
.app-shell{position:relative;height:100dvh;display:flex;overflow:hidden;max-width:1920px;margin:auto;border-radius:var(--radius-3xl);background:var(--app-gradient);transition:background .2s}
.chat-shell{flex:1;min-width:0;display:flex;flex-direction:column;position:relative;padding:var(--space-6) var(--space-8);background:var(--chat-gradient)}
.chat-header{height:104px;position:relative;flex-shrink:0;display:flex;justify-content:center;align-items:center} /* 原版消息约 y100 起（视觉模型比对 2026-10-10） */
.persona-cluster{display:flex;align-items:center;gap:14px}
.persona{position:relative;display:flex;align-items:center;flex-direction:column;padding:0}
.orb{display:block;width:64px;height:64px;outline:2px solid #ffffff59;outline-offset:-1px;border-radius:50%;background:radial-gradient(circle at 72% 35%,#ffddb8 0,#f2a5a8 26%,#e5b5dd 50%,#a8cceb 74%,#d7ebf5 100%);box-shadow:0 5px 20px #8da8c655,inset 0 0 16px #ffffff66}
.orb:after{content:"";display:block;width:32px;height:44px;border-radius:50% 45% 35% 40%;background:#bf899977;transform:translate(24px,16px)}
.persona b{font-size:var(--text-13);font-weight:500;color:var(--foreground);margin-top:4px}
.header-actions{display:flex;gap:10px}
.round{border-radius:50%;width:32px;height:32px;background:var(--glass-elevated-bg);border:1px solid var(--glass-elevated-border);font-size:var(--text-lg);box-shadow:var(--glass-elevated-shadow);display:inline-grid;place-items:center}

/* —— 主导航：原版为右栏顶部 4 个胶囊 tab（Today/任务/记忆/tot），
   左栏聊天区无导航（交互验收 2026-10-09 P0-2） —— */
.main-nav{display:inline-flex;justify-content:center;align-items:center;gap:2px;flex-shrink:0;margin:10px auto 4px;padding:4px 8px;background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:99px;box-shadow:var(--glass-inset-shadow)} /* 原版：半透明胶囊容器（pixel-comparison 2026-10-10 视觉比对） */
.main-nav button{color:var(--nav-fg);padding:4px 14px;border-radius:var(--radius-3xl);font-size:var(--text-15);font-weight:500}
.main-nav button.active{color:var(--foreground);background:var(--nav-active-bg);box-shadow:var(--glass-inset-shadow)}
.messages{flex:1;overflow-y:auto;min-height:0;display:flex;flex-direction:column;gap:var(--space-5);padding:var(--space-3) 0 var(--space-8);scrollbar-width:thin}
.bubble{position:relative;max-width:88%;padding:var(--space-4) var(--space-5);border-radius:16px;background:var(--bubble-assistant-bg);white-space:pre-wrap;font-size:var(--text-base);overflow-wrap:anywhere;box-shadow:var(--glass-inset-shadow)}
/* 用户气泡：原版实测圆角 20px 20px 17px（右下角小），浅灰底深色字（见 :root 注释） */
.bubble.user{align-self:flex-end;background:var(--bubble-user-bg);border-radius:20px 20px 17px 20px}
.bubble.assistant{align-self:flex-start;border-radius:16px}
.bubble small{display:block;color:var(--muted-foreground);font-size:var(--text-10);margin-top:10px}
/* "已思考"折叠（原版同款形态）：默认收起，点开看推理过程 */
.thought{margin:0 0 8px;font-size:var(--text-xs)}
.thought summary{cursor:pointer;color:var(--muted-foreground);list-style:none;display:inline-flex;align-items:center;gap:4px;user-select:none}
.thought summary::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--muted-foreground);opacity:.6}
.thought[open] summary{margin-bottom:6px}
.thought-body{white-space:pre-wrap;overflow-wrap:anywhere;color:var(--muted-foreground);font-size:var(--text-xs);line-height:1.6;border-left:2px solid var(--border-subtle);padding:2px 0 2px 10px;max-height:260px;overflow-y:auto}
.task-card{display:flex;text-align:left;background:var(--card);border:1px solid var(--glass-border);border-radius:var(--radius-2xl);padding:14px;gap:var(--space-3);align-items:center;width:100%;white-space:normal;margin-top:14px}
.task-card .clock{background:var(--icon-bg);color:var(--icon-fg);font-size:var(--text-2xl);width:44px;height:44px;display:grid;place-items:center;border-radius:var(--radius-xl);flex-shrink:0}
.task-card span:nth-child(2){flex:1}
.task-card small{margin:0;font-size:var(--text-xs)}
.composer-wrap{padding-top:10px;flex-shrink:0;position:relative}
/* 灵感悬浮钮：原版为输入框上方右侧 80x40 胶囊（交互验收 P1-5） */
.spark-launcher{position:absolute;top:-44px;right:6px;display:inline-flex;align-items:center;gap:6px;height:40px;padding:0 16px;border-radius:var(--radius-3xl);background:var(--glass-elevated-bg);border:1px solid var(--glass-elevated-border);box-shadow:var(--glass-elevated-shadow);font-size:var(--text-13);color:var(--foreground)}
.spark-launcher .glyph{font-size:var(--text-sm)}
.composer{display:flex;align-items:center;background:var(--glass-elevated-bg);border-radius:var(--radius-4xl);padding:8px;gap:8px;border:1px solid var(--glass-border);box-shadow:var(--glass-inset-shadow),var(--glass-elevated-shadow)}
.composer textarea{border:0;background:transparent;padding:6px 0;resize:none;max-height:140px;flex:1;min-width:0;outline:none}
.attach,.voice,.send{width:36px;height:36px;border-radius:50%;font-size:var(--text-2xl);background:var(--send-idle-bg);color:var(--send-idle-fg);display:grid;place-items:center;flex-shrink:0}
.voice{font-size:var(--text-lg)}
.send{background:var(--send-idle-bg);color:var(--send-idle-fg)}
.send.ready{background:var(--send-bg);color:var(--send-fg)}
.composer-meta{display:flex;justify-content:space-between;padding:6px 14px;font-size:var(--text-10);color:var(--muted-foreground)}
.composer-meta button{font-size:var(--text-10);color:var(--muted-foreground)}

/* —— 会话列表抽屉：原版实测形态（350px 全高滑入、白卡条目 radius 12px 高 56px、单行标题 16px/400、右箭头 40% 黑） —— */
.conv-backdrop{position:absolute;inset:0;z-index:11;background:var(--backdrop)}
.conv-drawer{position:absolute;top:0;bottom:0;left:0;width:350px;max-width:86%;z-index:12;display:flex;flex-direction:column;padding:var(--space-5);background:var(--glass-elevated-bg);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);border-right:1px solid var(--glass-elevated-border);box-shadow:var(--glass-elevated-shadow);transform:translateX(-14px);opacity:0;transition:transform .22s ease,opacity .22s ease;pointer-events:none}
.conv-drawer.open{transform:none;opacity:1;pointer-events:auto}
.conv-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-3)}
.conv-header h2{margin:0;font-size:var(--text-lg);font-weight:500}
.conv-new{flex-shrink:0;height:44px;border-radius:var(--radius-2xl);background:var(--send-bg);color:var(--send-fg);font-size:var(--text-sm);margin-bottom:var(--space-3)}
.conv-list{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:6px;padding:2px 0 12px;scrollbar-width:thin}
.conv-item{display:flex;align-items:center;gap:10px;min-height:56px;padding:0 12px;border-radius:12px;background:var(--conv-item-bg);box-shadow:var(--glass-inset-shadow);text-align:left;color:var(--foreground);transition:background .12s}
.conv-item:hover{background:var(--conv-item-hover)}
.conv-item.active{box-shadow:var(--glass-inset-shadow),0 0 0 2px var(--border-subtle)}
.conv-glyph{width:22px;color:var(--icon-fg);font-size:var(--text-base);flex-shrink:0;text-align:center;line-height:1}
.conv-title{flex:1;min-width:0;font-size:var(--text-base);font-weight:400;line-height:24px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.conv-chevron{color:#00000066;font-size:var(--text-xl);flex-shrink:0}
.conv-empty{padding:38px 18px;text-align:center;color:var(--muted-foreground);font-size:var(--text-13)}
.dark .conv-item{background:var(--glass-elevated-bg)}
.dark .conv-item:hover{background:#ffffff26}
.dark .conv-chevron{color:#ffffff66}

/* —— Today 动态卡片信息流（原版实机形态：时间标签 + 卡片流 + 编号列表 + 标签胶囊 + 行动按钮） —— */
.feed-time{text-align:center;color:var(--muted-foreground);font-size:var(--text-13);margin:4px 0 14px}
.feed-card{background:var(--card);border:1px solid var(--glass-border);border-radius:var(--radius-3xl);padding:var(--space-5);margin-bottom:var(--space-4);box-shadow:var(--glass-inset-shadow)}
.feed-head{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.feed-head h3{margin:0;font-size:var(--text-base);font-weight:500}
.feed-ico{color:var(--blue);font-size:var(--text-sm)}
.feed-headline{font-size:var(--text-sm);margin:0 0 12px}
.feed-items{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.feed-items li{display:flex;gap:10px;align-items:flex-start}
.feed-items b{color:var(--blue);font-size:var(--text-sm);font-weight:600;min-width:20px}
.feed-items .fi{flex:1;min-width:0}
.feed-items strong{display:block;font-size:var(--text-sm);font-weight:500}
.feed-items small{display:block;color:var(--muted-foreground);font-size:var(--text-xs)}
.feed-items .mini-link{flex-shrink:0;align-self:center}
.feed-scope{margin-top:12px;padding-top:10px;border-top:1px dashed var(--border-subtle)}
.feed-scope header{font-size:var(--text-11);color:var(--muted-foreground);margin-bottom:6px}
.tag-row{display:flex;gap:6px;flex-wrap:wrap}
.tag-row span{font-size:var(--text-11);padding:3px 10px;border-radius:99px;background:var(--status-neutral-bg);color:var(--muted-foreground)}
.feed-cta{display:block;width:100%;height:44px;margin-top:14px;border-radius:14px;background:var(--blue);color:#fff;font-size:var(--text-sm);box-shadow:0 4px 12px #008aff33}
.feed-gen{display:block;width:100%;height:40px;margin:0 0 var(--space-4);border-radius:12px;background:var(--glass-elevated-bg);border:1px dashed var(--border-subtle);color:var(--muted-foreground);font-size:var(--text-13)}
/* 流式实时气泡：光标闪烁 + 工具状态行 */
.streaming .stream-text:after{content:'▍';color:var(--muted-foreground);animation:stream-blink 1s step-start infinite}
.streaming .stream-text:empty{display:none}
.streaming .stream-status{display:block;color:var(--muted-foreground);font-size:var(--text-10);margin-top:8px}
@keyframes stream-blink{50%{opacity:0}}
/* 聊天动作描写行：（抬头看你一眼）单独成行灰字，原版同款表达层 */
.action-line{display:block;color:var(--muted-foreground);font-size:var(--text-13);margin-top:6px}

/* —— 右侧内容 pane：原版无统一标题栏，tab 下直接内容流（交互验收 P0-3） —— */
.panel{width:48%;max-width:780px;margin:8px 8px 8px 0;border-radius:var(--radius-3xl);background:var(--pane-bg);border:1px solid var(--pane-border);display:flex;flex-direction:column;min-width:340px;box-shadow:var(--glass-inset-shadow);backdrop-filter:blur(2px)}
/* 任务文档模式：任务打开时左栏聊天压缩约 44%、右栏扩展占余下宽度（原版实机三栏形态）。
   只改 panel 宽度（48%→56% 均为可插值长度，过渡平滑），chat-shell 的 flex:1 自动吸收剩余 44%；
   窄屏（<801px）由底部媒体查询回退为 panel 全屏覆盖。 */
.panel{transition:width .2s ease,max-width .2s ease}
.app-shell.task-mode .panel{width:calc(56% - 8px);max-width:100vw}
.panel.closed{display:none}
/* settings 抽屉形态：约 560px 收窄 + 顶部浅蓝渐变标题区（原版实测渐变 #b5cee9→#dce8f6，内容区自 y≈165 起） */
.panel.drawer{width:min(560px,48vw);max-width:min(560px,48vw);background:linear-gradient(180deg,#b5cee9 0%,#dce8f6 150px,var(--pane-bg) 150px)}
.panel.drawer .main-nav{display:none} /* 原版设置抽屉盖住导航（实测 nav 不可见） */
.drawer-sub{margin:2px 6px 14px;font-size:var(--text-13);color:var(--muted-foreground)}
.dark .panel.drawer{background:linear-gradient(180deg,#2a3350 0%,#24233Bd9 150px,var(--pane-bg) 150px)} /* 深色为对称推导，待实测 */
/* 面板收起/展开悬浮钮：对应原版窗口右缘 32x32 圆钮 */
.panel-toggle{position:absolute;top:20px;right:12px;z-index:15}
.panel-content{padding:var(--space-3) 30px 40px;overflow-y:auto;flex:1;min-height:0;scrollbar-width:thin}
.panel-clock{text-align:center;color:var(--muted-foreground);font-size:var(--text-13);margin:6px 0 0}
.page-head{padding:24px 6px 4px}
.page-head h1{font-size:var(--text-lg);font-weight:500;margin:0}
.page-head p{margin:4px 0 0;font-size:var(--text-13);color:var(--muted-foreground)}
.section-row{display:flex;justify-content:space-between;align-items:baseline;font-size:var(--text-13);font-weight:500;margin:6px 0 10px}
.section-row .muted{font-weight:400}
.model-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3);margin:0 0 6px}
.model-card{background:var(--card);border:1px solid var(--glass-border);border-radius:var(--radius-lg);padding:14px 16px;text-align:left;box-shadow:var(--glass-inset-shadow)}
.model-card b{display:block;font-size:var(--text-13);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.model-card small{display:block;font-size:var(--text-xs);color:var(--muted-foreground);margin-top:4px}
.mini-link{color:var(--blue);font-size:var(--text-13);padding:0}
h2{font-size:var(--text-lg);font-weight:500;margin:var(--space-6) 0 14px}
h3{font-size:var(--text-base);font-weight:500;margin:0}
.sub,.muted{color:var(--muted-foreground);font-size:var(--text-13)}
.group{background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius-3xl);padding:10px 22px;margin-bottom:var(--space-5);box-shadow:var(--glass-inset-shadow)}
.row{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-4) 0;border-bottom:1px solid var(--border-subtle);min-height:62px}
.row:last-child{border-bottom:0}
.row .content{flex:1;min-width:0}
.row .content small{display:block;font-size:var(--text-xs);color:var(--muted-foreground);overflow-wrap:anywhere}
.row .icon{width:36px;height:36px;display:grid;place-items:center;border-radius:var(--radius-xl);background:var(--icon-bg);color:var(--icon-fg);flex-shrink:0;font-size:var(--text-xl)}
.row-action{display:flex;align-items:center;text-align:left;width:100%;gap:var(--space-3)}
.row-action .content{flex:1}
.chevron{color:var(--muted-foreground);font-size:var(--text-xl)}
.profile-card{border-radius:var(--radius-3xl);background:var(--profile-gradient);padding:var(--space-6);margin:var(--space-1) 0 25px;border:1px solid var(--glass-border);min-height:155px;display:flex;align-items:center;gap:var(--space-5)}
.profile-card h2{margin:0;font-size:var(--text-2xl)}
.badge{font-size:var(--text-10);padding:3px 8px;border-radius:var(--radius-xl);border:1px solid var(--border-subtle);color:var(--muted-foreground);display:inline-block}
.button{border-radius:var(--radius-xl);padding:8px 16px;background:var(--glass-elevated-bg);border:1px solid var(--glass-elevated-border);font-size:var(--text-13);display:inline-block;text-decoration:none;color:var(--foreground)}
.button.primary{background:var(--primary);color:#fff;border-color:transparent}
.dark .button.primary{color:#1a1a1c}
.button.danger{color:var(--error)}
.toolbar{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin:10px 0 18px}
.toolbar h2{margin:0}
.tabs{display:flex;background:var(--glass-bg);border-radius:var(--radius-3xl);padding:var(--space-1);gap:3px;margin:10px 0 var(--space-5)}
.tabs button{padding:8px 16px;border-radius:var(--radius-2xl);font-size:var(--text-xs);flex:1}
.tabs button.active{background:var(--tab-active-bg);box-shadow:var(--tab-active-shadow)}
.list-card{background:var(--card);border:1px solid var(--glass-border);padding:var(--space-5);border-radius:var(--radius-3xl);margin-bottom:var(--space-3);box-shadow:var(--glass-inset-shadow)}
.list-card p{font-size:var(--text-13);color:var(--muted-foreground);margin:8px 0;white-space:pre-wrap}
.list-card .footer{display:flex;align-items:center;gap:8px;margin-top:var(--space-4);flex-wrap:wrap}
.list-card .footer span{flex:1}
.status{font-size:var(--text-11);display:inline-block;color:var(--status-neutral-fg);background:var(--status-neutral-bg);border-radius:var(--radius-xl);padding:3px 9px}
.status.completed,.status.active,.status.ready{background:var(--success-bg);color:var(--success)}
.status.failed{background:var(--error-bg);color:var(--error)}
.status.pending,.status.queued,.status.planning,.status.pending_user_answer{background:var(--warning-bg);color:var(--warning)}
.status.running{background:var(--info-bg);color:var(--info)}
.status.stopped{background:var(--error-bg);color:var(--error)}
.empty{padding:38px 18px;text-align:center;color:var(--muted-foreground);font-size:var(--text-13);border:1px dashed var(--border-subtle);border-radius:var(--radius-3xl)}
.empty .symbol{display:block;font-size:var(--text-4xl);color:var(--muted-foreground);margin-bottom:var(--space-3)}
.info{font-size:var(--text-xs);color:var(--muted-foreground);background:var(--card);border-radius:var(--radius-xl);padding:var(--space-3) 14px;margin:14px 0}
.path{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0;font-size:var(--text-xs)}
.path button{color:var(--blue)}
.search{margin-bottom:14px}
.actions{display:flex;gap:8px;flex-wrap:wrap}
.switch{border-radius:var(--radius-3xl);background:var(--switch-bg);width:40px;height:24px;position:relative}
.switch:after{content:"";position:absolute;width:17px;height:17px;top:3px;left:3px;background:#fff;border-radius:50%;transition:transform .15s}
.switch.on{background:var(--switch-on-bg)}
.switch.on:after{transform:translateX(16px)}

/* —— 外观（主题）三选 —— */
.theme-options{display:flex;gap:8px;margin:0 22px 14px}
.theme-option{flex:1;padding:8px 0;border-radius:var(--radius-2xl);border:1px solid var(--border-subtle);color:var(--muted-foreground);font-size:var(--text-13)}
.theme-option.active{background:var(--nav-active-bg);color:var(--foreground);border-color:transparent}

/* —— 弹窗 / 浮层 —— */
dialog{width:520px;max-width:94vw;border-radius:var(--radius-3xl);border:1px solid var(--glass-border);padding:var(--space-6);background:var(--dialog-bg);color:var(--foreground);box-shadow:var(--glass-elevated-shadow)}
dialog::backdrop{background:var(--backdrop);backdrop-filter:blur(5px)}
dialog header{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}
dialog h2{margin:0}
dialog header button{font-size:var(--text-2xl);color:var(--muted-foreground)}
label{display:block;font-size:var(--text-xs);margin:14px 0}
label input,label textarea,label select{margin-top:6px}
form .help{font-size:var(--text-11);color:var(--muted-foreground)}
dialog .actions{justify-content:flex-end;margin-top:var(--space-5)}
.field-row{display:flex;gap:var(--space-3)}
.field-row label{flex:1;min-width:0}
.toast{position:fixed;bottom:30px;left:50%;transform:translateX(-50%);background:var(--toast-bg);color:var(--toast-fg);padding:var(--space-3) var(--space-5);border-radius:var(--radius-2xl);font-size:var(--text-13);opacity:0;pointer-events:none;transition:opacity .2s;z-index:20;max-width:90%}
.toast.show{opacity:1}
.reading{white-space:pre-wrap;overflow-wrap:anywhere;background:var(--card);border-radius:var(--radius-2xl);padding:var(--space-5);font-size:var(--text-sm)}
.attachment-chip{font-size:var(--text-xs);background:var(--card);border-radius:var(--radius-xl);padding:7px var(--space-3);margin-bottom:8px;display:flex;justify-content:space-between}
.check-row{display:flex;gap:var(--space-3);align-items:center}
.check-row input{width:auto}
.grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3)}
.key-metric{background:var(--card);border-radius:var(--radius-3xl);padding:var(--space-5)}
.key-metric b{font-size:var(--text-2xl);display:block;font-weight:500}
.key-metric small{color:var(--muted-foreground);font-size:var(--text-11)}
.recording{background:var(--error);color:#fff}
/* 原版此处为中文手写体 AaJinRiHuaQing（许可不明未内嵌），回退系统宋体/楷体 */
.line-quote{font-family:var(--font-serif);font-size:var(--text-xl);color:var(--muted-foreground);margin:30px 0;text-align:center}

/* —— 任务长文档视图（原版实机形态：引用条 + 白色阅读版式 + 底部追问输入） —— */
.doc-quote{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:10px 0 var(--space-4);padding:10px 16px;background:var(--card);border:1px solid var(--glass-border);border-radius:var(--radius-2xl);font-size:var(--text-13);color:var(--muted-foreground);box-shadow:var(--glass-inset-shadow)}
.doc-quote .dq-text{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.doc-quote .dq-link{color:var(--blue);font-size:var(--text-13);flex-shrink:0}
.doc-back{color:var(--muted-foreground);font-size:var(--text-13);padding:2px 6px 2px 0;margin-bottom:10px}
.doc-paper{background:var(--glass-elevated-bg);border:1px solid var(--glass-elevated-border);border-radius:var(--radius-3xl);padding:var(--space-8) var(--space-6);box-shadow:var(--glass-elevated-shadow)}
.doc-head h1{font-size:23px;font-weight:600;line-height:1.35;margin:0 0 10px;overflow-wrap:anywhere}
.doc-meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:var(--text-xs);color:var(--muted-foreground);margin-bottom:var(--space-4)}
.doc-actions{display:flex;gap:8px;flex-wrap:wrap;padding-bottom:var(--space-5);border-bottom:1px solid var(--border-subtle);margin-bottom:var(--space-5)}
.doc-body{font-size:var(--text-base);line-height:1.8}
.doc-body p{margin:0 0 1em;white-space:pre-wrap;overflow-wrap:anywhere}
.doc-body p:last-child{margin-bottom:0}
.doc-body .doc-pending{color:var(--foreground)}
.doc-body .doc-hint{color:var(--muted-foreground);font-size:var(--text-13)}
.doc-followup{position:sticky;bottom:-40px;margin:var(--space-4) -30px 0;padding:12px 30px 16px;background:var(--pane-bg);border-top:1px solid var(--border-subtle);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-radius:0 0 var(--radius-3xl) var(--radius-3xl);display:flex;gap:8px;align-items:flex-end}
.doc-followup textarea{border:0;background:transparent;resize:none;flex:1;min-width:0;padding:8px 4px;outline:none;max-height:120px}
.doc-followup .followup-send{flex-shrink:0;height:38px}
[hidden]{display:none!important}

/* —— 窄屏底部悬浮 tab 条（原版 <801px，rounded-4xl + bg-white/50 + backdrop-blur-2xl） —— */
.narrow-tabbar{display:none}
@media(min-width:1500px){
  .chat-shell{padding:26px 50px}
  .bubble{font-size:var(--text-lg)}
  .chat-header{height:140px}
  .orb{width:74px;height:74px}
  .panel-content{padding:var(--space-5) 40px 40px}
}
@media(max-width:680px){ /* 原版 756px 窗口实测仍显示顶部导航；手机(≤680)才进窄屏模式 */
  .app-shell{border-radius:0}
  .chat-shell{padding:14px 18px 88px}
  .panel{position:absolute;inset:0;width:100%;max-width:none;margin:0;border-radius:0;border:0;z-index:5;backdrop-filter:none}
  /* 窄屏任务文档模式维持全屏覆盖（task-mode 规则特异性更高，需显式回退） */
  .app-shell.task-mode .panel{width:100%;max-width:none}
  .doc-followup{margin:var(--space-4) -22px 0;padding:12px 22px 16px;border-radius:0}
  .doc-paper{padding:var(--space-6) var(--space-4)}
  .panel-content{padding:14px 22px 40px}
  .chat-header{height:96px}
  .bubble{font-size:var(--text-15);max-width:90%}
  .header-actions{top:3px}
  .grid{grid-template-columns:1fr 1fr}
  .main-nav{display:none}
  .narrow-tabbar{display:flex;position:fixed;bottom:var(--space-3);left:50%;transform:translateX(-50%);gap:var(--space-1);padding:6px;border-radius:var(--radius-4xl);background:var(--tabbar-bg);backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);border:1px solid var(--glass-border);box-shadow:var(--glass-elevated-shadow);z-index:30;max-width:calc(100vw - 16px)}
  .narrow-tabbar button{display:flex;flex-direction:column;align-items:center;gap:2px;min-width:52px;padding:6px 8px;border-radius:var(--radius-3xl);font-size:var(--text-10);color:var(--nav-fg)}
  .narrow-tabbar button .glyph{font-size:var(--text-xl);line-height:1}
  .narrow-tabbar button.active{background:var(--nav-active-bg);color:var(--foreground)}
}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}
