/* ============================================================
   AI 会计工作台 — 设计系统层（Design System）
   ------------------------------------------------------------
   本文件在 style.css 之后加载，负责：
   1. 设计令牌（色板 / 字阶 / 间距 / 圆角 / 阴影层级）
   2. 暗色模式（data-theme="dark"，整站变量覆写）
   3. 组件精修（顶栏 / Tab / 面板 / 卡片 / 按钮 / 表单 / 表格 / 徽章）
   4. 微交互与动效（尊重 prefers-reduced-motion）
   5. 新增组件（图表 / 甘特式时间线 / 命令面板 / 骨架屏 / 空状态）
   所有覆盖均带 !important 或更高特异性，不改动 style.css 原逻辑，
   保证「改 A 不破坏 B」。
   ============================================================ */

/* ---------- 1. 令牌 ---------- */
:root{
  /* 品牌与语义色（浅色） */
  --brand:#2b5cd9;      --brand-600:#2450c4;  --brand-700:#1d43a6;
  --brand-100:#dbe4fd;  --brand-50:#eef2fe;
  --ok:#0f9d58;         --ok-50:#e8f6ee;      --ok-100:#ccebdb;
  --warn:#c77700;       --warn-50:#fff6e5;    --warn-100:#fdeac4;
  --err:#d93025;        --err-50:#fdecea;     --err-100:#f8d4d0;
  --info:#0b7285;       --info-50:#e3f5f8;
  --violet:#6b46c1;     --violet-50:#f0e9fc;

  /* 中性色 */
  --bg:#f4f6fa;
  --bg-grad-1:#eef2fe; --bg-grad-2:#f4f6fa;
  --panel:#ffffff;
  --panel-2:#fafbfd;    /* 表头 / 次级面板 */
  --panel-3:#f5f7fa;    /* 三级 / hover */
  --line:#e6e9ef;
  --line-2:#eff1f5;     /* 更淡的分隔线 */
  --line-strong:#d3d8e2;
  --txt:#171b22;        /* 主文字 */
  --txt-2:#4a5262;      /* 次要文字 */
  --txt-3:#7c8598;      /* 弱化文字 */
  --txt-4:#a3abbb;      /* 占位符 */

  /* 字阶 */
  --f-11:11px; --f-12:12px; --f-13:13px; --f-14:14px;
  --f-15:15px; --f-16:16px; --f-18:18px; --f-21:21px;
  --f-26:26px; --f-32:32px;
  --lh-tight:1.25; --lh-normal:1.6; --lh-loose:1.75;

  /* 间距（4 的倍数） */
  --s1:4px; --s2:8px; --s3:12px; --s4:16px;
  --s5:20px; --s6:24px; --s8:32px; --s10:40px;

  /* 圆角 */
  --r-xs:5px; --r-sm:7px; --r-md:10px; --r-lg:14px; --r-xl:20px; --r-full:999px;

  /* 阴影层级 */
  --sh-1:0 1px 2px rgba(16,24,40,.05);
  --sh-2:0 1px 3px rgba(16,24,40,.06),0 1px 2px rgba(16,24,40,.04);
  --sh-3:0 4px 10px -2px rgba(16,24,40,.08),0 2px 6px -2px rgba(16,24,40,.05);
  --sh-4:0 12px 28px -8px rgba(16,24,40,.16),0 4px 10px -4px rgba(16,24,40,.08);
  --sh-brand:0 4px 14px -4px rgba(43,92,217,.45);

  /* 动效 */
  --ease:cubic-bezier(.4,0,.2,1);
  --ease-out:cubic-bezier(.16,1,.3,1);
  --dur-1:120ms; --dur-2:180ms; --dur-3:280ms;

  --topbar-h:64px;

  /* 旧版令牌 → 新令牌映射（让 style.css 里所有 var(--xxx) 自动跟随） */
  --brand-l:var(--brand-50);
  --ok-l:var(--ok-50);
  --warn-l:var(--warn-50);
  --err-l:var(--err-50);
  --sub:var(--txt-3);
  --text:var(--txt);
  --shadow:var(--sh-2);
}

/* ---------- 2. 暗色模式 ---------- */
:root[data-theme="dark"]{
  --brand:#6d94f5;      --brand-600:#5b83ee;  --brand-700:#4d74e0;
  --brand-100:#22304f;  --brand-50:#1a2439;
  --ok:#4ec27f;         --ok-50:#12291d;      --ok-100:#1a3a28;
  --warn:#e0a13c;       --warn-50:#2e2413;    --warn-100:#3d3018;
  --err:#f0776c;        --err-50:#2e1917;     --err-100:#402220;
  --info:#4cb8cf;       --info-50:#0f2529;
  --violet:#a98af0;     --violet-50:#221a33;

  --bg:#0e1116;
  --bg-grad-1:#141a24; --bg-grad-2:#0e1116;
  --panel:#161b23;
  --panel-2:#1b212b;
  --panel-3:#212836;
  --line:#262d3a;
  --line-2:#1f2530;
  --line-strong:#364052;
  --txt:#e8ecf3;
  --txt-2:#b3bcca;
  --txt-3:#8590a3;
  --txt-4:#5f6a7d;

  --sh-1:0 1px 2px rgba(0,0,0,.4);
  --sh-2:0 1px 3px rgba(0,0,0,.45),0 1px 2px rgba(0,0,0,.3);
  --sh-3:0 4px 12px -2px rgba(0,0,0,.55);
  --sh-4:0 14px 32px -8px rgba(0,0,0,.7),0 4px 10px -4px rgba(0,0,0,.5);
  --sh-brand:0 4px 14px -4px rgba(109,148,245,.4);
}

/* 主题跟随系统（仅在用户未显式选择时生效） */
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]):not([data-theme="dark"]){
    color-scheme:dark;
  }
}

:root[data-theme="dark"] body,
:root[data-theme="dark"] .topbar,
:root[data-theme="dark"] .tabs{ background:var(--panel); }
:root[data-theme="dark"] body{ background:var(--bg); }
:root[data-theme="dark"] .logo{ background:linear-gradient(135deg,var(--brand),var(--violet)); }

/* ---------- 2b. 暗色模式：定向覆盖 style.css 中的硬编码色 ---------- */
:root[data-theme="dark"] .gsearch-bar{ background:transparent; }
:root[data-theme="dark"] .gs-panel{ background:var(--panel); border-color:var(--line); }
:root[data-theme="dark"] .more-menu{ background:var(--panel); border-color:var(--line); box-shadow:var(--sh-4); }
:root[data-theme="dark"] .mm-i:hover{ background:var(--brand-50); }
:root[data-theme="dark"] .ver-badge{ background:var(--brand-50); color:var(--brand); }
:root[data-theme="dark"] .gs-hint{ color:var(--txt-4); }
:root[data-theme="dark"] .deduct-tbl td{ border-color:var(--line-2); }
:root[data-theme="dark"] .deduct-sum{ background:var(--ok-50); }
:root[data-theme="dark"] .deduct-sum b{ color:var(--ok); }
:root[data-theme="dark"] .need{ background:var(--ok-50); }
:root[data-theme="dark"] .warn{ background:var(--warn-50); }
:root[data-theme="dark"] .si-warn{ background:var(--warn-50); }
:root[data-theme="dark"] .imp-total{ background:var(--err-50); }
:root[data-theme="dark"] .btn.ghost:hover{ background:var(--panel-3); }
:root[data-theme="dark"] .modal-box{ background:var(--panel); border-color:var(--line); }
:root[data-theme="dark"] .modal-head,
:root[data-theme="dark"] .modal-foot{ border-color:var(--line); background:var(--panel-2); }
:root[data-theme="dark"] .modal-body{ color:var(--txt-2); }
/* 模态内容默认按普通段落排版；需要保留原格式的地方用 <pre class="pre"> */
.modal-body{ white-space:normal; }
.modal-body p{ margin:0 0 9px; line-height:1.7; }
.modal-body p:last-child{ margin-bottom:0; }
.modal-body b{ color:var(--txt); }
.modal-body .pre{ white-space:pre-wrap; font-family:inherit; }
.modal-body ul,.modal-body ol{ margin:0 0 9px; padding-left:20px; line-height:1.75; }
:root[data-theme="dark"] .cm-box{ background:var(--panel); border-color:var(--line); box-shadow:var(--sh-4); }
:root[data-theme="dark"] .cm-t{ border-color:var(--line); }
:root[data-theme="dark"] .cl-box{ background:var(--panel); border-color:var(--line); }
:root[data-theme="dark"] input[type=checkbox],:root[data-theme="dark"] input[type=radio]{
  accent-color:var(--brand); }
:root[data-theme="dark"] textarea,
:root[data-theme="dark"] select{ background-color:var(--panel); color:var(--txt); }
:root[data-theme="dark"] option{ background:var(--panel); color:var(--txt); }
:root[data-theme="dark"] ::placeholder{ color:var(--txt-4); opacity:1; }
:root[data-theme="dark"] img{ filter:brightness(.92); }

/* ---------- 3. 基础排版 ---------- */
html{ -webkit-text-size-adjust:100%; }
body{
  font:400 var(--f-14)/var(--lh-normal) -apple-system,BlinkMacSystemFont,"Segoe UI",
       "PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  background:
    radial-gradient(1100px 520px at 12% -8%,var(--bg-grad-1) 0%,transparent 60%),
    radial-gradient(900px 480px at 100% 0%,var(--bg-grad-2) 0%,transparent 55%),
    var(--bg);
  background-attachment:fixed;
  color:var(--txt);
  letter-spacing:.01em;
  font-variant-numeric:tabular-nums;
}
::selection{ background:var(--brand-100); color:var(--txt); }

/* 滚动条 */
*::-webkit-scrollbar{ width:10px; height:10px; }
*::-webkit-scrollbar-track{ background:transparent; }
*::-webkit-scrollbar-thumb{ background:var(--line-strong); border-radius:99px;
  border:3px solid transparent; background-clip:content-box; }
*::-webkit-scrollbar-thumb:hover{ background:var(--txt-4); background-clip:content-box; }

/* 焦点可见性（键盘可达） */
:focus-visible{ outline:2px solid var(--brand); outline-offset:2px; border-radius:var(--r-xs); }

/* 标题层级 */
.panel h3{ font-size:var(--f-15); font-weight:650; letter-spacing:-.01em;
  color:var(--txt); display:flex; align-items:center; gap:8px; }
.muted{ color:var(--txt-3); font-size:var(--f-13); }
.hint{ color:var(--txt-3); font-size:var(--f-12); }
code{ font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace; font-size:.92em;
  background:var(--panel-3); padding:1px 5px; border-radius:var(--r-xs); color:var(--brand); }

/* ---------- 4. 顶栏 ---------- */
.topbar{
  padding:0 var(--s6); height:var(--topbar-h);
  background:color-mix(in srgb,var(--panel) 88%,transparent);
  backdrop-filter:saturate(180%) blur(14px);
  -webkit-backdrop-filter:saturate(180%) blur(14px);
  border-bottom:1px solid var(--line);
  box-shadow:var(--sh-1);
}
.brand{ gap:11px; min-width:0; }
.logo{
  width:36px; height:36px; border-radius:var(--r-md);
  background:linear-gradient(135deg,var(--brand) 0%,#5b8def 55%,var(--violet) 100%);
  font-size:var(--f-18); box-shadow:var(--sh-brand); flex-shrink:0;
  transition:transform var(--dur-2) var(--ease-out);
}
.brand:hover .logo{ transform:translateY(-1px) rotate(-4deg) scale(1.04); }
.topbar h1{ font-size:var(--f-16); font-weight:700; letter-spacing:-.015em; }
.topbar .sub{ font-size:var(--f-11); color:var(--txt-3); letter-spacing:.02em; }
.top-right{ gap:var(--s2); }
.badge{
  background:var(--panel-3); color:var(--txt-2); border:1px solid var(--line);
  padding:5px 12px; font-size:var(--f-12); font-weight:600;
  transition:all var(--dur-1) var(--ease);
}
.badge:hover{ border-color:var(--brand); color:var(--brand); }

/* 主题切换按钮 */
.theme-btn{
  width:34px; height:34px; border-radius:var(--r-sm); border:1px solid var(--line);
  background:var(--panel); color:var(--txt-2); cursor:pointer; font-size:15px;
  display:grid; place-items:center; transition:all var(--dur-1) var(--ease);
}
.theme-btn:hover{ background:var(--panel-3); color:var(--brand); border-color:var(--brand);
  transform:rotate(-15deg); }

/* ---------- 5. 搜索区 ---------- */
.searchwrap{ padding:var(--s3) var(--s6) 0; }
.search-box input{
  padding:12px 40px 12px var(--s4); border-radius:var(--r-md);
  border:1px solid var(--line); background:var(--panel); box-shadow:var(--sh-1);
  transition:all var(--dur-2) var(--ease);
}
.search-box input:hover{ border-color:var(--line-strong); }
.search-box input:focus{ border-color:var(--brand); box-shadow:0 0 0 4px var(--brand-50); }
.search-ico{ right:var(--s4); color:var(--txt-4); transition:color var(--dur-1); }
.search-box input:focus ~ .search-ico{ color:var(--brand); }

/* ---------- 6. Tab ---------- */
.tabs{
  padding:0 var(--s6); gap:var(--s1); background:transparent; border:0;
  position:sticky; top:calc(var(--topbar-h) + var(--gsearch-h, 86px)); z-index:60;
  backdrop-filter:saturate(180%) blur(14px);
  -webkit-backdrop-filter:saturate(180%) blur(14px);
  background:color-mix(in srgb,var(--panel) 82%,transparent);
  box-shadow:inset 0 -1px 0 var(--line);
}
.tab{
  padding:13px var(--s3) 12px; font-size:var(--f-13); font-weight:500;
  color:var(--txt-3); border-radius:var(--r-sm) var(--r-sm) 0 0; position:relative;
  transition:color var(--dur-1) var(--ease),background var(--dur-1) var(--ease);
}
.tab:hover{ color:var(--txt); background:var(--panel-3); }
.tab.active{ color:var(--brand); font-weight:650; background:transparent; }
.tab.active::after{
  content:''; position:absolute; left:var(--s2); right:var(--s2); bottom:0; height:2.5px;
  border-radius:99px 99px 0 0; background:linear-gradient(90deg,var(--brand),var(--violet));
  animation:tabIn var(--dur-3) var(--ease-out);
}
@keyframes tabIn{ from{ transform:scaleX(.3); opacity:0 } to{ transform:scaleX(1); opacity:1 } }

/* ---------- 7. 面板 ---------- */
main{ padding:var(--s6) var(--s6) var(--s10); max-width:1600px; }
.panel{
  background:var(--panel); border:1px solid var(--line); border-radius:var(--r-lg);
  padding:var(--s6); margin-bottom:var(--s5); box-shadow:var(--sh-2);
  transition:box-shadow var(--dur-2) var(--ease),transform var(--dur-2) var(--ease),
             border-color var(--dur-2) var(--ease);
}
.panel:hover{ box-shadow:var(--sh-3); }
.panel.narrow{ max-width:660px; }
.panel > h3:first-child{ padding-bottom:var(--s3); margin-bottom:var(--s4);
  border-bottom:1px solid var(--line-2); }

/* 页面进入动效 */
.page.active > *{ animation:pageUp var(--dur-3) var(--ease-out) both; }
.page.active > *:nth-child(2){ animation-delay:40ms }
.page.active > *:nth-child(3){ animation-delay:80ms }
.page.active > *:nth-child(4){ animation-delay:120ms }
@keyframes pageUp{ from{ opacity:0; transform:translateY(8px) } to{ opacity:1; transform:none } }

/* ---------- 8. KPI 卡片 ---------- */
.stat-grid{ gap:var(--s3); margin-bottom:var(--s5); }
.stat{
  position:relative; padding:var(--s4) var(--s5); border-radius:var(--r-md);
  overflow:hidden; border:1px solid var(--line); background:var(--panel);
  box-shadow:var(--sh-1); transition:all var(--dur-2) var(--ease);
}
.stat::before{
  content:''; position:absolute; left:0; top:0; bottom:0; width:3px;
  background:linear-gradient(180deg,var(--brand),var(--brand-600)); opacity:.9;
}
.stat:hover{ transform:translateY(-2px); box-shadow:var(--sh-3); border-color:var(--line-strong); }
.stat .lbl{ font-size:var(--f-12); color:var(--txt-3); margin-bottom:7px; font-weight:500;
  display:flex; align-items:center; gap:5px; }
.stat .val{ font-size:var(--f-26); font-weight:700; letter-spacing:-.03em; line-height:1.1;
  color:var(--txt); }
.stat .unit{ font-size:var(--f-12); color:var(--txt-3); font-weight:500; margin-left:3px; }
.stat .sub2{ font-size:var(--f-11); color:var(--txt-4); margin-top:6px; }
.stat.g::before{ background:linear-gradient(180deg,var(--ok),#0b7a44); }
.stat.w::before{ background:linear-gradient(180deg,var(--warn),#a86200); }
.stat.r::before{ background:linear-gradient(180deg,var(--err),#ab261d); }
.stat.g .val{ color:var(--ok) } .stat.w .val{ color:var(--warn) } .stat.r .val{ color:var(--err) }

/* KPI 行（工作台主指标，与 .stat 同源的另一套类名） */
.kpi{ gap:var(--s3); margin-bottom:var(--s5); }
.kpi-c{
  position:relative; overflow:hidden; padding:var(--s4) var(--s5);
  border-radius:var(--r-md); background:var(--panel); border:1px solid var(--line);
  box-shadow:var(--sh-1); transition:all var(--dur-2) var(--ease);
}
.kpi-c::before{
  content:''; position:absolute; left:0; top:0; bottom:0; width:3px;
  background:linear-gradient(180deg,var(--brand),var(--brand-600));
}
.kpi-c:hover{ transform:translateY(-2px); box-shadow:var(--sh-3); border-color:var(--line-strong); }
.kpi-c .lbl{ font-size:var(--f-12); color:var(--txt-3); margin-bottom:7px; font-weight:500; }
.kpi-c .val{ font-size:var(--f-26); font-weight:700; letter-spacing:-.03em; line-height:1.1;
  color:var(--txt); }
.kpi-c .val .unit{ font-size:var(--f-12); font-weight:500; color:var(--txt-3); margin-left:3px; }
.kpi-c .sub{ font-size:var(--f-11); color:var(--txt-4); margin-top:6px; }
.kpi-c.g::before{ background:linear-gradient(180deg,var(--ok),#0b7a44); }
.kpi-c.w::before{ background:linear-gradient(180deg,var(--warn),#a86200); }
.kpi-c.r::before{ background:linear-gradient(180deg,var(--err),#ab261d); }
.kpi-c.g .val{ color:var(--ok) } .kpi-c.w .val{ color:var(--warn) } .kpi-c.r .val{ color:var(--err) }

/* ---------- 9. 按钮 ---------- */
.btn{
  padding:8px var(--s4); border-radius:var(--r-sm); font-size:var(--f-13); font-weight:500;
  border:1px solid var(--line); background:var(--panel); color:var(--txt-2);
  box-shadow:var(--sh-1); transition:all var(--dur-1) var(--ease); position:relative;
}
.btn:hover{ background:var(--panel-3); border-color:var(--line-strong); color:var(--txt);
  transform:translateY(-1px); box-shadow:var(--sh-2); }
.btn:active{ transform:translateY(0); box-shadow:var(--sh-1); }
.btn.primary{
  background:linear-gradient(180deg,var(--brand) 0%,var(--brand-600) 100%);
  color:#fff; border-color:var(--brand-600); box-shadow:var(--sh-brand); font-weight:600;
}
.btn.primary:hover{ filter:brightness(1.08); box-shadow:0 6px 18px -4px rgba(43,92,217,.55); }
.btn.danger{ color:var(--err); border-color:var(--err-100); background:var(--err-50); }
.btn.danger:hover{ background:var(--err); color:#fff; border-color:var(--err); }
.btn.sm{ padding:5px 11px; font-size:var(--f-12); border-radius:var(--r-xs); }
.btn.ghost{ background:transparent; box-shadow:none; }
.btn[disabled],.btn:disabled{ opacity:.5; pointer-events:none; }
.btn-row{ gap:var(--s2); }
.icon-btn{ transition:all var(--dur-1) var(--ease); border-radius:var(--r-xs); }
.icon-btn:hover{ background:var(--brand-50); color:var(--brand); transform:translateY(-1px); }

/* ---------- 10. 表单 ---------- */
.field{ margin-bottom:var(--s4); }
.field label{ font-size:var(--f-12); color:var(--txt-2); margin-bottom:6px; font-weight:600;
  letter-spacing:.01em; }
.field input,.field select,.field textarea,#filingInput{
  padding:9px var(--s3); border-radius:var(--r-sm); font-size:var(--f-13);
  border:1px solid var(--line); background:var(--panel); color:var(--txt);
  transition:all var(--dur-1) var(--ease);
}
.field input:hover,.field select:hover,.field textarea:hover{ border-color:var(--line-strong); }
.field input:focus,.field select:focus,.field textarea:focus,#filingInput:focus{
  border-color:var(--brand); box-shadow:0 0 0 3.5px var(--brand-50); }
.field input::placeholder,.field textarea::placeholder{ color:var(--txt-4); }
select{ appearance:none; cursor:pointer;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'><path d='M2.5 4.5L6 8l3.5-3.5' fill='none' stroke='%237c8598' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/></svg>");
  background-repeat:no-repeat; background-position:right 11px center; padding-right:32px !important; }
.type-tip{ background:var(--brand-50); color:var(--brand-700); border:1px solid var(--brand-100);
  padding:11px var(--s3); border-radius:var(--r-sm); font-size:var(--f-12); line-height:1.65; }

/* 「我不会填」按钮 */
.recommend-btn{
  display:inline-flex; align-items:center; gap:5px; padding:5px 11px; border-radius:var(--r-full);
  border:1px dashed var(--brand); background:var(--brand-50); color:var(--brand);
  font-size:var(--f-12); font-weight:600; cursor:pointer; font-family:inherit;
  transition:all var(--dur-1) var(--ease);
}
.recommend-btn:hover{ background:var(--brand); color:#fff; border-style:solid;
  transform:translateY(-1px); box-shadow:var(--sh-brand); }

/* 问号解释 */
.help-q,.q-mark{
  display:inline-grid; place-items:center; width:16px; height:16px; border-radius:50%;
  background:var(--panel-3); color:var(--txt-3); font-size:10px; font-weight:700; cursor:help;
  border:1px solid var(--line); vertical-align:middle; flex-shrink:0;
  transition:all var(--dur-1) var(--ease);
}
.help-q:hover,.q-mark:hover{ background:var(--brand); color:#fff; border-color:var(--brand);
  transform:scale(1.15); }

/* ---------- 11. 表格 ---------- */
.tbl-wrap{ border-radius:var(--r-md); border:1px solid var(--line); background:var(--panel);
  box-shadow:var(--sh-1); }
th{
  background:var(--panel-2); padding:11px var(--s3); font-size:var(--f-12); font-weight:650;
  color:var(--txt-3); letter-spacing:.02em; position:sticky; top:0; z-index:2;
  border-bottom:1px solid var(--line);
}
td{ padding:11px var(--s3); border-bottom:1px solid var(--line-2); font-size:var(--f-13);
  color:var(--txt-2); }
tbody tr{ transition:background var(--dur-1) var(--ease); }
tbody tr:hover td{ background:var(--brand-50); color:var(--txt); }
tbody tr:last-child td{ border-bottom:none; }
.num{ font-weight:600; color:var(--txt); }
.d-badge{ padding:3px 9px; border-radius:var(--r-full); font-size:var(--f-11); font-weight:650;
  letter-spacing:.01em; }
.d-yes{ background:var(--ok-50); color:var(--ok); box-shadow:inset 0 0 0 1px var(--ok-100); }
.d-no{ background:var(--panel-3); color:var(--txt-3); }
.d-calc{ background:var(--warn-50); color:var(--warn); box-shadow:inset 0 0 0 1px var(--warn-100); }
.tag{ background:var(--panel-3); color:var(--txt-3); border-radius:var(--r-xs); font-size:var(--f-11);
  font-weight:500; }

/* ---------- 12. 待办 / 提示块 ---------- */
.todo{ padding:var(--s3) 0; border-bottom:1px solid var(--line-2); border-radius:0; }
.todo:hover{ background:var(--panel-2); }
.todo:last-child{ border-bottom:none; }
.todo-ic{ width:22px; height:22px; font-size:var(--f-11); }
.todo.e .todo-ic{ background:var(--err-50); color:var(--err); }
.todo.w .todo-ic{ background:var(--warn-50); color:var(--warn); }
.todo.i .todo-ic{ background:var(--brand-50); color:var(--brand); }

/* ---------- 13. 空状态 ---------- */
.empty{
  padding:52px var(--s5); text-align:center; color:var(--txt-3); font-size:var(--f-13);
  border:1px dashed var(--line-strong); border-radius:var(--r-md); background:var(--panel-2);
}
.empty::before{
  content:'📋'; display:block; font-size:34px; margin-bottom:var(--s3); opacity:.55;
  filter:saturate(.7);
}
.empty b{ color:var(--txt-2); }
.empty .btn{ margin-top:var(--s4); }

/* ---------- 14. 提示块 / callout ---------- */
.callout{
  background:var(--brand-50); border:1px solid var(--brand-100); border-left:3px solid var(--brand);
  border-radius:var(--r-sm); padding:var(--s3) var(--s4); font-size:var(--f-13);
  line-height:1.7; color:var(--txt-2); margin-bottom:var(--s4);
}
.callout b{ color:var(--txt); }
.tip{ background:var(--warn-50); border:1px solid var(--warn-100); border-radius:var(--r-sm);
  padding:10px var(--s3); font-size:var(--f-12); color:var(--txt-2); line-height:1.6; }
.tip.ok{ background:var(--ok-50); border-color:var(--ok-100); }
.tip.err{ background:var(--err-50); border-color:var(--err-100); }

/* ---------- 15. 骨架屏 ---------- */
.skeleton{ background:linear-gradient(90deg,var(--panel-3) 25%,var(--panel-2) 37%,var(--panel-3) 63%);
  background-size:400% 100%; animation:shimmer 1.3s ease-in-out infinite;
  border-radius:var(--r-xs); }
@keyframes shimmer{ 0%{ background-position:100% 50% } 100%{ background-position:0 50% } }
.sk-line{ height:13px; margin-bottom:9px; }
.sk-card{ height:86px; border-radius:var(--r-md); }

/* ---------- 16. 图表（纯 SVG） ---------- */
.chart-card{
  background:var(--panel); border:1px solid var(--line); border-radius:var(--r-md);
  padding:var(--s4) var(--s5) var(--s3); box-shadow:var(--sh-1);
  transition:box-shadow var(--dur-2) var(--ease);
}
.chart-card:hover{ box-shadow:var(--sh-3); }
.chart-head{ display:flex; align-items:baseline; justify-content:space-between;
  gap:var(--s3); margin-bottom:var(--s3); }
.chart-title{ font-size:var(--f-13); font-weight:650; color:var(--txt); }
.chart-sub{ font-size:var(--f-11); color:var(--txt-4); }
.chart-svg{ width:100%; height:auto; display:block; overflow:visible; }
.chart-grid line{ stroke:var(--line-2); stroke-width:1; }
.chart-axis text{ fill:var(--txt-4); font-size:10px; font-family:inherit; }
.bar{ transition:opacity var(--dur-1) var(--ease); cursor:pointer; }
.bar:hover{ opacity:.78; }
.chart-legend{ display:flex; gap:var(--s4); flex-wrap:wrap; margin-top:var(--s3);
  font-size:var(--f-11); color:var(--txt-3); }
.chart-legend i{ width:9px; height:9px; border-radius:3px; display:inline-block;
  margin-right:5px; vertical-align:-1px; }
.chart-tip{ position:absolute; pointer-events:none; z-index:20; background:var(--txt);
  color:var(--panel); font-size:var(--f-11); padding:5px 9px; border-radius:var(--r-xs);
  box-shadow:var(--sh-3); white-space:nowrap; opacity:0; transition:opacity var(--dur-1); }
.chart-wrap{ position:relative; }

/* 环形进度 */
.ring-wrap{ display:flex; align-items:center; gap:var(--s4); flex-wrap:wrap; }
.ring-text{ font-size:var(--f-11); fill:var(--txt-3); }
.ring-track{ stroke:var(--panel-3); }

/* ---------- 17. 申报日历 / 时间线 ---------- */
.cal-head{ display:grid; grid-template-columns:repeat(7,1fr); gap:6px; margin-bottom:6px; }
.cal-head span{ text-align:center; font-size:var(--f-11); color:var(--txt-4); font-weight:650;
  padding:4px 0; }
.cal-grid{ display:grid; grid-template-columns:repeat(7,1fr); gap:6px; }
.cal-cell{
  aspect-ratio:1/.86; border-radius:var(--r-sm); border:1px solid var(--line);
  background:var(--panel-2); padding:5px 6px; display:flex; flex-direction:column;
  gap:3px; font-size:var(--f-11); transition:all var(--dur-1) var(--ease); cursor:default;
  min-height:52px;
}
.cal-cell.dim{ opacity:.4; }
.cal-cell.today{ border-color:var(--brand); box-shadow:0 0 0 2px var(--brand-50); }
.cal-cell.has{ cursor:pointer; background:var(--panel); }
.cal-cell.has:hover{ border-color:var(--brand); box-shadow:var(--sh-2); transform:translateY(-1px); }
.cal-d{ font-weight:700; color:var(--txt-2); font-size:var(--f-12); }
.cal-cell.today .cal-d{ color:var(--brand); }
.cal-dot{ width:100%; font-size:9.5px; line-height:1.25; padding:2px 4px; border-radius:3px;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.cal-dot.due{ background:var(--err-50); color:var(--err); font-weight:650; }
.cal-dot.next{ background:var(--warn-50); color:var(--warn); font-weight:650; }
.cal-dot.done{ background:var(--ok-50); color:var(--ok); }

/* 申报状态列表 */
.filerow{
  display:grid; grid-template-columns:76px 1fr auto; gap:var(--s3); align-items:center;
  padding:var(--s3) 0; border-bottom:1px solid var(--line-2);
}
.filerow:last-child{ border-bottom:none; }
.cd{ text-align:center; }
.cd .m{ font-size:var(--f-11); color:var(--txt-4); font-weight:600; }
.cd .d{ font-size:var(--f-18); font-weight:750; letter-spacing:-.03em; line-height:1.1; }
.cd.today .d{ color:var(--brand); }
.cd.past .d{ color:var(--txt-4); }
.cd.past{ opacity:.6; }
.filerow .nm{ font-size:var(--f-13); font-weight:600; color:var(--txt); }
.filerow .ds{ font-size:var(--f-11); color:var(--txt-3); margin-top:2px; }
.days-left{ font-size:var(--f-11); font-weight:700; padding:3px 9px; border-radius:var(--r-full);
  white-space:nowrap; }
.days-left.d0{ background:var(--err-50); color:var(--err); }
.days-left.d3{ background:var(--warn-50); color:var(--warn); }
.days-left.d7{ background:var(--brand-50); color:var(--brand); }
.days-left.dfar{ background:var(--panel-3); color:var(--txt-3); }

/* ---------- 18. 命令面板 ---------- */
.cmdk-mask{
  position:fixed; inset:0; background:rgba(15,20,28,.45); backdrop-filter:blur(3px);
  z-index:900; display:flex; align-items:flex-start; justify-content:center;
  padding:12vh var(--s5) var(--s5); animation:fadeIn var(--dur-2) var(--ease);
}
@keyframes fadeIn{ from{opacity:0} to{opacity:1} }
.cmdk{
  width:100%; max-width:600px; background:var(--panel); border:1px solid var(--line);
  border-radius:var(--r-lg); box-shadow:var(--sh-4); overflow:hidden;
  animation:cmdkIn var(--dur-3) var(--ease-out);
}
@keyframes cmdkIn{ from{ opacity:0; transform:translateY(-14px) scale(.98) } to{ opacity:1; transform:none } }
.cmdk-in{ display:flex; align-items:center; gap:var(--s3); padding:var(--s4) var(--s5);
  border-bottom:1px solid var(--line); }
.cmdk-in input{ flex:1; border:none; outline:none; background:none; font-size:var(--f-15);
  font-family:inherit; color:var(--txt); }
.cmdk-in input::placeholder{ color:var(--txt-4); }
.cmdk-list{ max-height:52vh; overflow-y:auto; padding:var(--s2); }
.cmdk-item{ display:flex; align-items:center; gap:var(--s3); padding:10px var(--s3);
  border-radius:var(--r-sm); cursor:pointer; transition:background var(--dur-1); }
.cmdk-item:hover,.cmdk-item.on{ background:var(--brand-50); }
.cmdk-item .ci{ width:26px; height:26px; border-radius:var(--r-xs); display:grid; place-items:center;
  background:var(--panel-3); font-size:13px; flex-shrink:0; }
.cmdk-item .cn{ font-size:var(--f-13); font-weight:600; color:var(--txt); }
.cmdk-item .cd2{ font-size:var(--f-11); color:var(--txt-3); }
.cmdk-item .ck{ margin-left:auto; font-size:10px; color:var(--txt-4); border:1px solid var(--line);
  padding:2px 6px; border-radius:var(--r-xs); font-family:ui-monospace,monospace; }
.cmdk-group{ font-size:var(--f-11); color:var(--txt-4); font-weight:700; padding:10px var(--s3) 5px;
  letter-spacing:.05em; text-transform:uppercase; }
.cmdk-foot{ display:flex; gap:var(--s4); padding:10px var(--s5); border-top:1px solid var(--line);
  font-size:var(--f-11); color:var(--txt-4); background:var(--panel-2); }

/* 全局快捷键提示 */
kbd{ font-family:ui-monospace,Menlo,Consolas,monospace; font-size:10px; padding:2px 6px;
  border:1px solid var(--line-strong); border-bottom-width:2px; border-radius:var(--r-xs);
  background:var(--panel-2); color:var(--txt-3); }

/* ---------- 19. 快照 / 备份列表 ---------- */
.snap-item{
  display:flex; align-items:center; gap:var(--s3); padding:var(--s3) var(--s4);
  border:1px solid var(--line); border-radius:var(--r-sm); background:var(--panel-2);
  margin-bottom:var(--s2); transition:all var(--dur-1) var(--ease);
}
.snap-item:hover{ border-color:var(--brand); box-shadow:var(--sh-2); background:var(--panel); }
.snap-item .si{ font-size:18px; }
.snap-item .sm2{ font-size:var(--f-12); font-weight:600; color:var(--txt); }
.snap-item .st{ font-size:var(--f-11); color:var(--txt-3); margin-top:2px; }
.usage-bar{ height:9px; border-radius:99px; background:var(--panel-3); overflow:hidden;
  display:flex; margin:var(--s3) 0 var(--s2); }
.usage-bar i{ display:block; height:100%; transition:width var(--dur-3) var(--ease-out); }

/* ---------- 20. 模态框 ---------- */
.mask{ background:rgba(15,20,28,.5); backdrop-filter:blur(4px); animation:fadeIn var(--dur-2); }
.modal{ border-radius:var(--r-lg); box-shadow:var(--sh-4); border:1px solid var(--line);
  animation:cmdkIn var(--dur-3) var(--ease-out); max-height:88vh; }
.modal .modal-h{ padding:var(--s5) var(--s6); border-bottom:1px solid var(--line); }
.modal .modal-b{ padding:var(--s5) var(--s6); }
.modal .modal-f{ padding:var(--s4) var(--s6); border-top:1px solid var(--line); background:var(--panel-2); }

/* ---------- 21. 分割与分组标签 ---------- */
.tab-group-label{ font-size:var(--f-11); color:var(--txt-4); font-weight:700; letter-spacing:.05em; }
.mm-i{ border-radius:var(--r-sm); transition:all var(--dur-1) var(--ease); }
.mm-i:hover{ background:var(--brand-50); color:var(--brand); padding-left:14px; }

/* ---------- 21b. 图表栅格 / 双列 / 开关 ---------- */
.chart-grid2{
  display:grid; grid-template-columns:repeat(auto-fit,minmax(340px,1fr));
  gap:var(--s3); margin-bottom:var(--s5);
}
.chart-grid2 .chart-card{ margin:0; }
.grid2{ display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:var(--s3); }

/* 开关式勾选 */
label.sw{ display:flex; gap:10px; align-items:flex-start; padding:12px var(--s3);
  border:1px solid var(--line); border-radius:var(--r-sm); background:var(--panel-2);
  cursor:pointer; transition:all var(--dur-1) var(--ease); font-size:var(--f-13); color:var(--txt-2); }
label.sw:hover{ border-color:var(--brand); background:var(--brand-50); }
label.sw input{ width:auto !important; margin-top:2px; accent-color:var(--brand);
  width:16px !important; height:16px; flex-shrink:0; }

/* 快捷键提示条 */
.kbd-hint{
  display:flex; gap:var(--s4); flex-wrap:wrap; align-items:center;
  font-size:var(--f-12); color:var(--txt-3);
}
.kbd-hint b{ color:var(--txt-2); font-weight:600; }
.h-sub{ font-size:var(--f-11); color:var(--txt-4); font-weight:400; }

/* 工作台两列 */
.dash-grid{ display:grid; grid-template-columns:1fr 1fr; gap:var(--s4); }
@media(max-width:1100px){ .dash-grid{ grid-template-columns:1fr; } }
@media(max-width:1100px){ .chart-grid2{ grid-template-columns:1fr; } }
@media(max-width:640px){
  .chart-grid2{ grid-template-columns:1fr; }
  .cmdk-foot span:nth-child(n+3){ display:none; }
}

/* ---------- 22. 打印 ---------- */
@media print{
  :root{ --bg:#fff; --panel:#fff; --line:#ddd; }
  body{ background:#fff !important; color:#000; font-size:11pt; }
  .topbar,.tabs,.searchwrap,.no-print,.theme-btn,.btn-row,.icon-btn,.row-act{ display:none !important; }
  main{ padding:0; max-width:none; }
  .panel{ box-shadow:none; border:1px solid #ddd; break-inside:avoid; margin-bottom:10pt; }
  .page{ display:block !important; }
  a[href^="http"]::after{ content:' (' attr(href) ')'; font-size:8pt; color:#666; }
}

/* ---------- 23. 响应式 ---------- */
/* ---------- 22b. 风险中心 AI 解读 ---------- */
.risk-ai{
  background:linear-gradient(135deg,var(--brand-50) 0%,var(--violet-50) 100%);
  border:1px solid var(--brand-100); border-radius:var(--r-md);
  padding:var(--s5); margin-bottom:var(--s4);
}
:root[data-theme="dark"] .risk-ai{ background:linear-gradient(135deg,#16203a 0%,#1b1730 100%); border-color:#2c3550; }
.rai-head{ display:flex; align-items:center; justify-content:space-between; gap:var(--s4);
  flex-wrap:wrap; }
.rai-t{ font-size:var(--f-15); font-weight:700; color:var(--txt); letter-spacing:-.01em; }
.rai-d{ font-size:var(--f-12); color:var(--txt-3); margin-top:3px; }
.rai-head2{ display:flex; align-items:center; gap:var(--s2); margin:14px 0 10px;
  padding-top:12px; border-top:1px dashed var(--brand-100); }
.rai-body{ font-size:var(--f-13); line-height:1.85; color:var(--txt-2); }
.rai-body h3,.rai-body h4{ font-size:var(--f-14); font-weight:700; color:var(--txt); margin:14px 0 6px; }
.rai-body strong{ color:var(--txt); }
.rai-body ul,.rai-body ol{ padding-left:20px; margin:6px 0; }
.rai-body li{ margin:4px 0; }
.rai-body p{ margin:6px 0; }
.rai-body hr{ border:0; border-top:1px solid var(--line-2); margin:12px 0; }
.rai-body table{ width:100%; border-collapse:collapse; margin:8px 0; font-size:12px; }
.rai-body td,.rai-body th{ border:1px solid var(--line); padding:6px 8px; text-align:left; }
.rai-body th{ background:var(--panel-2); font-weight:650; }
@media(max-width:640px){ .rai-head{ flex-direction:column; align-items:stretch; } }
@media(max-width:1100px){
  main{ padding:var(--s5) var(--s4) var(--s10); }
  .topbar,.tabs,.searchwrap{ padding-left:var(--s4); padding-right:var(--s4); }
  .panel{ padding:var(--s5); }
  .stat .val{ font-size:var(--f-21); }
}
@media(max-width:760px){
  :root{ --topbar-h:56px; }
  .topbar{ padding:0 var(--s3); }
  .topbar h1{ font-size:var(--f-14); }
  .topbar .sub{ display:none; }
  .logo{ width:32px; height:32px; font-size:var(--f-15); }
  main{ padding:var(--s4) var(--s3) var(--s10); }
  .panel{ padding:var(--s4); border-radius:var(--r-md); }
  .row,.row.three{ grid-template-columns:1fr; }
  .stat-grid{ grid-template-columns:repeat(auto-fit,minmax(132px,1fr)); gap:var(--s2); }
  .stat{ padding:var(--s3); }
  .stat .val{ font-size:var(--f-18); }
  .cal-cell{ min-height:42px; font-size:10px; }
  .filerow{ grid-template-columns:56px 1fr; }
  .filerow .days-left{ grid-column:1/-1; justify-self:start; }
  .badge{ padding:4px 9px; white-space:nowrap; }
  .cmdk{ border-radius:var(--r-md); }
  .page.active > *{ animation:none; }
}
@media(max-width:420px){
  .stat-grid{ grid-template-columns:1fr 1fr; }
  .btn{ padding:7px 11px; font-size:var(--f-12); }
  main{ padding:var(--s3) 10px var(--s10); }
  .panel{ padding:var(--s3); }
}

/* ---------- 23b. 工商年报模块 ---------- */
.an-tip{
  margin-top:8px; padding:10px var(--s3); border-radius:var(--r-sm);
  background:var(--brand-50); border:1px solid var(--brand-100);
  font-size:var(--f-12); line-height:1.75; color:var(--txt-2);
  animation:pageUp var(--dur-2) var(--ease-out);
}
.an-tip b{ color:var(--txt); }
.field .u-flex select,.field .u-flex input,.field .u-flex textarea{ width:100%; }

/* 年报字段：标签与必填标记同排 */
.an-field label{ display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
.an-req{ margin-left:0; font-weight:600; }
.an-field textarea{ font-family:inherit; line-height:1.7; resize:vertical; }

/* 自检结果行 */
.ckrow{
  padding:10px var(--s3); border-radius:var(--r-sm); margin-bottom:6px;
  font-size:var(--f-13); border-left:3px solid;
}
.ckrow.bad{ background:var(--err-50); border-color:var(--err); color:var(--txt); }
.ckrow.warn{ background:var(--warn-50); border-color:var(--warn); color:var(--txt); }

/* 步骤列表 */
.step-ol{ list-style:none; counter-reset:s; }
.step-ol li{
  display:flex; gap:var(--s3); align-items:flex-start; padding:var(--s3) 0;
  border-bottom:1px solid var(--line-2);
}
.step-ol li:last-child{ border-bottom:none; }
.step-ol .sn{
  counter-increment:s; flex-shrink:0; width:24px; height:24px; border-radius:50%;
  background:var(--brand-50); color:var(--brand); font-size:var(--f-12); font-weight:700;
  display:grid; place-items:center; border:1px solid var(--brand-100);
}
.step-ol .sn::before{ content:counter(s); }
.step-ol b{ font-size:var(--f-13); color:var(--txt); }

/* 自查清单（沿用并增强） */
.selfchk{ display:grid; gap:var(--s2); }
.selfchk-i{ display:flex; gap:10px; align-items:flex-start; padding:10px var(--s3);
  border-radius:var(--r-sm); background:var(--panel-2); border:1px solid var(--line); }
.selfchk-i .dot{ width:7px; height:7px; border-radius:50%; background:var(--warn);
  margin-top:6px; flex-shrink:0; }
.selfchk-i b{ font-size:var(--f-13); color:var(--txt); }
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{ animation-duration:.01ms !important; animation-iteration-count:1 !important;
    transition-duration:.01ms !important; scroll-behavior:auto !important; }
}
@media print{ .page.active > *{ animation:none; } }

/* 高对比偏好 */
@media(prefers-contrast:more){
  :root{ --line:#b9c0cc; --txt-2:#333a47; --txt-3:#4d5566; }
  .panel,.stat,.btn{ border-width:1.5px; }
}

/* 通用工具类 */
.u-hide{ display:none !important; }
.u-mt0{ margin-top:0 } .u-mt2{ margin-top:var(--s2) } .u-mt3{ margin-top:var(--s3) }
.u-mt4{ margin-top:var(--s4) } .u-mb0{ margin-bottom:0 } .u-mb3{ margin-bottom:var(--s3) }
.u-flex{ display:flex } .u-gap2{ gap:var(--s2) } .u-gap3{ gap:var(--s3) }
.u-center{ display:flex; align-items:center; justify-content:center }
.u-right{ text-align:right } .u-nowrap{ white-space:nowrap }
.u-mono{ font-variant-numeric:tabular-nums; font-feature-settings:"tnum" }
.u-sm{ font-size:var(--f-12) } .u-xs{ font-size:var(--f-11) }
.u-b{ font-weight:650 } .u-c-ok{ color:var(--ok) } .u-c-warn{ color:var(--warn) }
.u-c-err{ color:var(--err) } .u-c-brand{ color:var(--brand) } .u-c-3{ color:var(--txt-3) }

/* ============ 账簿报表（v2.4.0） ============ */
.pl-sub-total td{ border-top:1.5px solid var(--line); font-weight:650; }
.pl-total td{ border-top:2px solid var(--txt-2); font-weight:750; font-size:1.05em; }
.pl-total td:last-child{ color:var(--brand); }

/* 环比涨跌徽标（v2.7.0） */
.rp-delta{ font-size:12px; font-weight:650; margin-left:8px; padding:1px 8px; border-radius:999px; white-space:nowrap; }
.rp-delta i{ font-style:normal; font-weight:500; opacity:.75; margin-left:3px; font-size:11px; }
.rp-delta.up{ color:var(--ok); background:color-mix(in srgb, var(--ok) 12%, transparent); }
.rp-delta.down{ color:var(--err); background:color-mix(in srgb, var(--err) 12%, transparent); }

/* 往来分析占比条 + 季度免征进度条（v2.9.0） */
.rp-bar-row{ display:flex; align-items:center; gap:10px; padding:4px 0; }
.rp-bar-name{ width:130px; flex:none; font-size:13px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.rp-bar-track{ flex:1; height:10px; border-radius:999px; background:color-mix(in srgb, var(--brand) 8%, transparent); overflow:hidden; }
.rp-bar-track i{ display:block; height:100%; border-radius:999px; background:linear-gradient(90deg, color-mix(in srgb, var(--brand) 65%, transparent), var(--brand)); }
.rp-bar-val{ flex:none; width:150px; text-align:right; font-size:12.5px; }
.rp-bar-val em{ font-style:normal; color:var(--txt-3); margin-left:4px; }
.rp-q-track{ height:14px; border-radius:999px; background:color-mix(in srgb, var(--txt-3) 12%, transparent); overflow:hidden; margin-top:12px; }
.rp-q-track i{ display:block; height:100%; border-radius:999px; background:var(--ok); transition:width .3s; }
.rp-q-track i.over{ background:var(--err); }



/* ============================================================
   v2.4 AI 问账（ledgerchat.js · page-ask）
   ============================================================ */
.ask-sub{ color:var(--txt-2); font-size:13px; margin:6px 0 14px; line-height:1.7; }
.ask-bar{ display:flex; gap:10px; }
.ask-bar input{
  flex:1; padding:11px 14px; border:1px solid var(--line); border-radius:10px;
  background:var(--card-bg,#fff); color:var(--txt); font-size:14px; outline:none;
  transition:border-color .15s, box-shadow .15s;
}
:root[data-theme="dark"] .ask-bar input{ background:var(--bg-grad-1); }
.ask-bar input:focus{ border-color:var(--brand); box-shadow:0 0 0 3px var(--brand-50); }
.ask-bar .btn{ white-space:nowrap; }
.ask-chips{ display:flex; flex-wrap:wrap; gap:8px; margin-top:12px; }
.ask-chip{
  padding:6px 13px; border-radius:999px; border:1px solid var(--line);
  background:transparent; color:var(--txt-2); font-size:13px; cursor:pointer;
  transition:all .15s;
}
.ask-chip:hover{ border-color:var(--brand); color:var(--brand); background:var(--brand-50); }
.ask-out{ margin-top:16px; }
.ask-empty{ color:var(--txt-3); font-size:13px; padding:14px 0; }
.ask-loading{ color:var(--txt-3); font-size:13px; padding:14px 0; animation:askPulse 1.2s ease-in-out infinite; }
@keyframes askPulse{ 0%,100%{ opacity:.55; } 50%{ opacity:1; } }
.ask-ans{
  border:1px solid var(--line); border-radius:12px; padding:16px 18px;
  background:var(--brand-50); margin-top:4px; line-height:1.85; font-size:14px;
}
:root[data-theme="dark"] .ask-ans{ background:var(--bg-grad-1); }
.ask-text{ color:var(--txt); word-break:break-word; }
.ask-src{
  display:inline-block; font-size:12px; padding:2px 10px; border-radius:999px;
  background:var(--line-2); color:var(--txt-3); margin-bottom:10px;
}
.ask-src.ai{ background:var(--ok-50); color:var(--ok); }
.ask-src.fb{ background:var(--warn-50); color:var(--warn); }
.ask-warn{
  font-size:12.5px; color:var(--warn); background:var(--warn-50);
  border-radius:8px; padding:6px 10px; margin-bottom:10px;
}
@media print{ .ask-bar,.ask-chips{ display:none; } }

/* ============================================================
   智能报账（reportit）
   ============================================================ */
#riText{
  width:100%; box-sizing:border-box; border:1.5px solid var(--line); border-radius:var(--r-md);
  padding:12px 14px; font-size:13.5px; line-height:1.8; font-family:inherit;
  background:var(--panel); color:var(--txt); resize:vertical;
}
#riText:focus{ outline:none; border-color:var(--brand); box-shadow:0 0 0 3px var(--brand-50); }
.ri-input-btns{ display:flex; gap:10px; align-items:center; flex-wrap:wrap; margin-top:10px; }
.ri-dir{ margin-left:auto; display:flex; align-items:center; gap:6px; font-size:12.5px; color:var(--txt-2); }
.ri-dir select{ font-size:12.5px; padding:5px 8px; border:1px solid var(--line); border-radius:var(--r-sm); background:var(--panel); color:var(--txt); }
/* 税局填表模式：视图切换 + 申报表样式 */
.ri-vbar{ padding:10px 14px; }
.ri-vseg{ display:inline-flex; gap:4px; background:var(--panel-3); border-radius:var(--r-full); padding:4px; }
.ri-vbtn{ border:none; background:transparent; font-size:13px; font-weight:600; color:var(--txt-2); border-radius:var(--r-full); padding:6px 16px; cursor:pointer; font-family:inherit; }
.ri-vbtn.on{ background:var(--panel); color:var(--brand); box-shadow:var(--sh-1); }
.ri-taxtbl{ width:100%; border-collapse:collapse; margin-top:10px; font-variant-numeric:tabular-nums; }
.ri-taxtbl th, .ri-taxtbl td{ border:1px solid var(--line); padding:8px 12px; font-size:13px; text-align:left; }
.ri-taxtbl th{ background:var(--panel-2); font-weight:600; color:var(--txt-2); font-size:12.5px; }
.ri-taxtbl .ri-tno{ width:56px; text-align:center; color:var(--txt-3); font-weight:600; }
.ri-taxtbl .ri-tname{ color:var(--txt); }
.ri-taxtbl .ri-tval{ text-align:right; font-weight:700; color:var(--txt); white-space:nowrap; }
.ri-taxtbl .ri-tblank{ color:var(--txt-3); }
/* 税局模式：目的速选条 + 补票假设 */
.ri-tpurp{ display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
.ri-tpurp-k{ font-size:12px; color:var(--txt-3); font-weight:600; }
.ri-pchip{ border:1px solid var(--line); background:var(--panel); color:var(--txt-2); font-size:12.5px; font-weight:600; border-radius:var(--r-full); padding:5px 13px; cursor:pointer; font-family:inherit; }
.ri-pchip.on{ border-color:var(--brand); color:var(--brand); background:var(--brand-50); }
.ri-taxassump{ display:grid; gap:8px; margin-top:8px; }
.ri-taxassump input{ width:130px; font-size:13px; padding:5px 8px; border:1.5px solid var(--line); border-radius:var(--r-sm); background:var(--panel); color:var(--txt); font-family:inherit; text-align:right; }
.ri-taxassump input:focus{ outline:none; border-color:var(--brand); box-shadow:0 0 0 3px var(--brand-50); }
.ri-taxfx{ font-size:12.5px; color:var(--txt-2); line-height:1.9; background:var(--panel-2); border-radius:var(--r-md); padding:9px 12px; }
.ri-taxfx b{ color:var(--txt); }
.ri-sum{ display:flex; gap:24px; flex-wrap:wrap; font-size:13.5px; color:var(--txt-2); margin:8px 0; }
.ri-sum b{ color:var(--txt); font-size:15px; }
.ri-notes{ font-size:12px; color:var(--txt-3); line-height:1.9; margin-top:6px; }
.ri-warnline{
  font-size:12.5px; color:var(--warn); background:var(--warn-50);
  border-radius:8px; padding:8px 12px; margin-top:8px; line-height:1.7;
}
.ri-err{ color:var(--err); font-size:13px; margin-top:8px; }
.ri-row{
  border:1px solid var(--line); border-radius:var(--r-md); padding:12px 14px; margin-bottom:10px;
  background:var(--panel); transition:border-color var(--ease);
}
.ri-row:hover{ border-color:var(--line-strong); }
.ri-row.ri-done{ opacity:.55; }
.ri-row-head{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-bottom:8px; }
.ri-tag{ font-size:11.5px; font-weight:700; border-radius:var(--r-full); padding:2px 9px; }
.ri-out{ background:var(--brand-50); color:var(--brand); }
.ri-in{ background:var(--ok-50); color:var(--ok); }
.ri-desc{ font-size:14px; max-width:46%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ri-amt{ margin-left:auto; font-weight:700; font-size:15px; color:var(--txt); font-variant-numeric:tabular-nums; }
.ri-date{ font-size:12px; color:var(--txt-3); }
.ri-row-body{ display:grid; gap:7px; }
.ri-line{ display:flex; gap:10px; align-items:flex-start; font-size:13px; line-height:1.7; }
.ri-k{ flex:0 0 34px; font-size:12px; color:var(--txt-3); padding-top:2px; }
.ri-line select{ font-size:12.5px; padding:4px 8px; border:1px solid var(--line); border-radius:var(--r-sm); background:var(--panel); color:var(--txt); max-width:280px; }
.ri-deduct{ font-size:11.5px; font-weight:700; border-radius:var(--r-full); padding:1px 8px; }
.ri-yes{ background:var(--ok-50); color:var(--ok); }
.ri-no{ background:var(--err-50); color:var(--err); }
.ri-why{ font-size:12px; color:var(--txt-2); background:var(--panel-3); border-radius:var(--r-sm); padding:7px 10px; line-height:1.8; }
.ri-entry{ font-size:12.5px; color:var(--txt-2); line-height:1.8; }
.ri-note{ font-size:12px; color:var(--txt-3); margin-top:3px; }
.ri-row-foot{ margin-top:8px; text-align:right; }
.ri-sel{ font-size:12.5px; color:var(--txt-2); cursor:pointer; user-select:none; }
.ri-okmark{ font-size:12.5px; color:var(--ok); font-weight:600; }
.ri-actions{ display:flex; gap:10px; flex-wrap:wrap; margin-top:14px; }
.ri-list{ display:grid; gap:10px; }
.ri-li{ font-size:13px; line-height:1.9; color:var(--txt-2); background:var(--panel-2); border-radius:var(--r-md); padding:10px 14px; }
.ri-li b{ color:var(--txt); }
.ri-ai{ margin-top:14px; border-top:1px dashed var(--line-strong); padding-top:12px; font-size:13px; line-height:1.9; color:var(--txt-2); }
.ri-ai-tag{ font-size:11.5px; font-weight:700; color:var(--violet); background:var(--violet-50); display:inline-block; border-radius:var(--r-full); padding:2px 10px; margin-bottom:8px; }
@media (max-width:720px){ .ri-desc{ max-width:100%; } .ri-amt{ margin-left:0; } }

/* ============================================================
   申报指导：正常填报数据参考示例（filing sample）
   ============================================================ */
.filing-sample{
  margin-top:14px; border:1px dashed var(--line-strong); border-radius:var(--r-md);
  padding:12px 14px; background:var(--panel-2);
}
.fs-t{ font-weight:700; font-size:13.5px; margin-bottom:6px; }
.filing-sample pre{
  white-space:pre-wrap; font-size:12.5px; line-height:1.9; color:var(--txt-2);
  margin:0 0 8px; font-family:inherit;
}
.filing-sample .hint{ font-size:11.5px; color:var(--txt-3); margin-left:10px; }

/* 申报指导多选：指引块分隔线 */
.filing-div{ height:1px; background:var(--line-strong); margin:22px 0; border-radius:1px; }

/* ============================================================
   「我不会填」问答：多选题（inputhelp.js step.multi）
   ============================================================ */
.hm-q-multi{ font-size:12px; font-weight:700; color:var(--violet, #2b5cd9); margin-left:6px; }
.hm-opt.on{ border-color:#2b5cd9; background:#eef4ff; box-shadow:inset 0 0 0 1px #2b5cd9; }
.hm-opt.on .hm-opt-t{ color:#1d47b8; font-weight:600; }
.hm-opt.on .hm-opt-tip{ color:#6d87d8; }
.hm-multi-bar{ display:flex; align-items:center; justify-content:flex-end; gap:12px; margin-top:12px; }
.hm-multi-n{ font-size:12px; color:#9aa1ad; margin-right:auto; }

/* ---------- 申报事项按执照类型分组（v2.23） ---------- */
.fp-grp-t{ font-size:12.5px; font-weight:650; color:var(--txt-3); margin:14px 0 8px; }
.fp-grp-t:first-child{ margin-top:0; }
.fp .fp-when{ font-size:11px; color:var(--txt-4); margin-top:5px; }
details.fp-other{ margin-top:14px; border:1px dashed var(--line); border-radius:var(--r-md,10px); padding:10px 12px; }
details.fp-other summary{ font-size:12.5px; color:var(--txt-3); cursor:pointer; user-select:none; }
details.fp-other .filing-picker{ margin-top:10px; opacity:.72; }

/* ============================================================
   简化报税面板（js/taxnow.js，申报指导页顶部）
   ============================================================ */
.tn-head{ display:flex; align-items:flex-start; justify-content:space-between; gap:14px; }
.tn-pt{ display:flex; align-items:center; gap:10px; margin:10px 0; flex-wrap:wrap; }
.tn-pt select{ padding:6px 10px; border:1px solid var(--line); border-radius:var(--r-md, 8px); background:var(--panel-2, #fff); }
.tn-grid{ display:grid; grid-template-columns:repeat(auto-fill, minmax(200px, 1fr)); gap:10px 14px; }
.tn-grid .h-sub, .tn-pt .h-sub{ font-size:11.5px; color:var(--txt-3, #9aa1ad); margin-left:6px; }
.tn-block{ border:1px solid var(--line); border-radius:var(--r-md, 10px); padding:12px 14px; margin-top:12px; background:var(--panel-2, #fff); }
.tn-block.skip{ opacity:.72; }
.tn-hd{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-bottom:8px; }
.tn-hd b{ font-size:13.5px; }
.tn-due{ font-size:11.5px; color:var(--txt-3, #9aa1ad); margin-left:auto; }
.tn-tb{ width:100%; border-collapse:collapse; font-size:12.5px; }
.tn-tb th, .tn-tb td{ border-top:1px solid var(--line); padding:6px 8px; text-align:left; vertical-align:top; line-height:1.7; }
.tn-tb th{ border-top:none; color:var(--txt-3, #9aa1ad); font-weight:600; font-size:11.5px; white-space:nowrap; }
.tn-tb .tn-val{ font-weight:700; white-space:nowrap; }
.tn-total td{ background:var(--panel-2, #f7faff); font-size:13px; }
.tn-note{ font-size:12px; color:var(--txt-2, #5b6472); line-height:1.8; margin-top:8px; }
.tn-sum{ border:1px solid var(--line-strong); border-radius:var(--r-md, 10px); padding:12px 14px; margin-top:12px; background:var(--panel-2, #fff); }
.tn-sum-t{ font-weight:700; font-size:13.5px; margin-bottom:8px; }

/* ---------- 多主体切换条 + 小白办事入口（v2.27） ---------- */
.fp-co-bar{ border:1px solid var(--brand-50,#e8eefc); background:var(--brand-50,#f3f6ff); border-radius:var(--r-md,10px); padding:10px 12px; margin-bottom:12px; }
.fp-co-t{ font-size:12.5px; color:var(--txt-2); margin-bottom:8px; }
.fp-co-chips{ display:flex; flex-wrap:wrap; gap:8px; }
.co-chip{ border:1px solid var(--line); background:#fff; border-radius:8px; padding:7px 11px; cursor:pointer; font-size:12.5px; font-weight:650; color:var(--txt-2); transition:all .15s; }
.co-chip:hover{ border-color:var(--brand); }
.co-chip.on{ border-color:var(--brand); background:var(--brand); color:#fff; }
.co-chip .co-chip-t{ display:block; font-size:10.5px; font-weight:500; color:var(--txt-4); margin-top:2px; }
.co-chip.on .co-chip-t{ color:rgba(255,255,255,.85); }
details.fp-entry{ border:1px solid var(--line); border-radius:var(--r-md,10px); padding:10px 12px; margin-bottom:14px; }
details.fp-entry summary{ font-size:13px; font-weight:650; color:var(--brand); cursor:pointer; user-select:none; }
.fp-entry-grid{ display:grid; grid-template-columns:repeat(auto-fit,minmax(250px,1fr)); gap:10px; margin-top:12px; }
.fp-entry-card{ border:1px solid var(--line); border-radius:9px; padding:11px 12px; background:var(--panel-2,#fafafa); display:flex; flex-direction:column; gap:6px; }
.fp-entry-card .fec-t{ font-size:12.8px; font-weight:700; color:var(--txt-2); }
.fp-entry-card .fec-site{ font-size:11.5px; font-weight:650; color:var(--brand); }
.fp-entry-card .fec-steps{ font-size:11.5px; line-height:1.7; color:var(--txt-3); }
.fp-entry-card .fec-who{ font-size:10.5px; color:var(--txt-4); }
.fp-entry-card .btn{ align-self:flex-start; text-decoration:none; }

/* 简化报税 v2.27：日历横幅 / 智能提醒 / AI 解读 */
.tn-banner{ border:1px solid var(--line-strong); border-left:4px solid var(--violet, #2b5cd9); border-radius:var(--r-md, 8px); padding:10px 12px; margin:12px 0 0; font-size:12.5px; line-height:1.8; background:var(--panel-2, #fff); }
.tn-remind{ border:1px solid #f0d9a8; background:#fffbf0; border-radius:var(--r-md, 10px); padding:12px 14px; margin-top:12px; }
.tn-remind-t{ font-weight:700; font-size:13px; margin-bottom:6px; }
.tn-remind-i{ font-size:12.5px; line-height:1.8; padding:5px 0; border-top:1px dashed #f0e2c0; }
.tn-remind-i:first-of-type{ border-top:none; }
.tn-remind-i.w{ color:#8a5b00; }
.tn-remind-i.ok{ color:#1d7a46; }
.tn-remind-i.i{ color:var(--txt-2, #5b6472); }
.tn-ai{ border:1px solid var(--line-strong); border-radius:var(--r-md, 10px); padding:12px 14px; margin-top:12px; background:var(--panel-2, #fff); }
.tn-ai .tn-remind-t{ margin-bottom:4px; }

/* 简化报税：主体类型 500 万线说明（taxnow） */
.tn-help{
  margin-top:8px; font-size:12.5px; border:1px dashed var(--line-strong);
  border-radius:var(--r-sm); background:var(--panel-2); padding:6px 10px;
}
.tn-help summary{ cursor:pointer; color:var(--brand); font-weight:600; }
.tn-help > div{ margin-top:6px; line-height:1.9; color:var(--txt-2); }

/* 类目助手：税率白话解释 + 降税负路径（小白向） */
.q-help{
  margin-top:8px; font-size:12.5px; border:1px dashed var(--line-strong);
  border-radius:var(--r-sm); background:var(--panel-2); padding:6px 10px;
}
.q-help summary{ cursor:pointer; color:var(--brand); font-weight:600; }
.q-help > div{ margin-top:6px; line-height:1.9; color:var(--txt-2); }

/* ---------- 搜索升级：AI 回答 / 直达功能（v2.31） ---------- */
.gs-ai{ border:1px solid var(--brand); box-shadow:0 0 0 2px var(--brand-50); border-radius:var(--r-md,10px); padding:10px 12px; margin-bottom:12px; background:linear-gradient(180deg, var(--brand-50), transparent); }
.gs-ai .gs-gt{ color:var(--brand); }
.gs-ai-body{ font-size:13px; line-height:1.8; color:var(--txt-2); margin-top:6px; }
.gs-ai-note{ font-size:10.5px; color:var(--txt-4); margin-top:8px; }
.gs-item[data-route^="tab:"]{ border-left:3px solid var(--brand); }
.gs-item[data-route^="tab:"] .gs-t::after{ content:"⚡ 直达"; font-size:10px; margin-left:6px; color:var(--brand); }

/* ---- v2.34.0 向导①按目的识别：避开高门槛证件行业 ---- */
.wz-nolic{ display:flex; align-items:flex-start; gap:6px; margin-top:8px; font-size:12.5px; cursor:pointer; color:var(--txt-1); line-height:1.6; }
.wz-nolic input[type="checkbox"]{ width:15px; height:15px; margin-top:2px; accent-color:var(--brand); flex:none; }
.cat.blocked{ opacity:.62; border-style:dashed; }
.cat.blocked .rec-badge{ background:var(--warn-bg, #fff4e5); color:#b26a00; }
