/* ───────── 设计变量 + 基础样式 ─────────
   规则见 docs/产品重设计方案_2026-10-10.html 第 06 节。组件里不写字面颜色，只引用这里的变量。
   颜色跟官网 moledao.io 一套；跟官网不一样的地方都是为了过 WCAG AA 4.5:1：
   - 文字四级灰（10-10 设计对标，照飞书、Linear 拉开级差，往冷色偏一点）：
       主 #1F2329 / 次 #4A4F58 / 辅助 #646A73（白底 5.4、悬停底 4.7，时间、来源、计数这类）/ 第四级 #868B95
     第四级白底只有 3.4，只给占位字、禁用、图标、悬停边线，正文和能点的字都不用（check_ui 会查）
   - 品牌红 #F44527 白底只有 3.7，只做色块、指示条、图标；红色的字用 #C2361C
   - 主按钮用深灰 #1F2329（官网橙红渐变配白字对比度不够） */

/* 后面的层盖前面的：组件（ui）→ 业务组件（domain）→ 页面（pages） */
@layer base, ui, domain, pages;

@font-face{
  font-family:Inter;src:url(/inter-latin.woff2) format('woff2');
  font-weight:400 700;font-style:normal;font-display:swap;
  /* 只盖拉丁字母和数字，中文交给 --font 里后面的中文字体（Windows 上是自托管的思源黑体，Mac 上是苹方）。
     双引号 “ ” 、破折号 —、省略号 … 不归 Inter：中文里用到它们，要中文字体的全宽字形，
     不然「“候选人”」「……」会被画成挤在一起的窄字形（10-10 设计对标查出来的，飞书也是这么处理）。
     单弯引号 ‘ ’（U+2018–2019）归 Inter：英文撇号就是它，领英原文、英文 JD 里到处都是，落到中文字体会画成全角，
     「KAST’s」「Bachelor’s」中间空出半个字（走查 R7V-03）。界面里的中文引号用「」，单弯引号在中文里几乎不出现，接受这个取舍 */
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,
                U+2000-2013,U+2015-201B,U+201E-2025,U+2027-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}

:root{
  /* 中性色 */
  --bg:#F7F7F8; --surface:#fff; --fill:#F4F4F5; --hover:#EFEFF1;
  --ink:#1F2329; --ink-2:#4A4F58; --ink-3:#646A73; --ink-4:#868B95;
  --line:#E9EAEC; --line-2:#F2F2F4; --line-strong:#D5D7DC;
  /* 控件的边线（输入框、次要按钮、筛选标签）：灰底上也要看得出轮廓；开关关闭态的轨道没有别的轮廓可靠，到 3:1（走查 R4C-10） */
  --line-control:#B4B9C1; --track-off:#8A9099;
  /* 开关打开时的轨道：浅色就是主文字色；深色下实心浅灰一列排开是全屏最亮的东西，单独压暗（走查 R6V-16） */
  --switch-on:#1F2329;
  /* 浮层（菜单、弹出层、弹窗、命令面板）：浅色下和卡片一样白；深色下比抽屉、卡片亮一档，不然菜单像贴在抽屉上（走查 R6V-15）。
     浮层自己把 --surface / --fill / --hover / --line-2 换成这几个（见 Overlay / Modal / CommandPalette），里面的悬停底、分隔线跟着亮一档 */
  --surface-2:#fff; --fill-2:#F4F4F5; --hover-2:#EFEFF1; --line-2-pop:#F2F2F4;
  /* 浮层的边线（菜单、弹出层有边）和阴影（弹窗、命令面板没有边，深色下靠阴影里那圈线勾出轮廓） */
  --line-pop:#E9EAEC; --sh-pop:0 16px 36px -8px rgba(37,40,45,.16),0 4px 10px -4px rgba(37,40,45,.06);
  /* 下拉框（原生 select）的箭头：select 没有伪元素，箭头只能是背景图，颜色跟着主题换一张（= --ink-3，走查 R6V-17） */
  --select-arrow:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23646A73' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  /* 颜色分工（10-10 设计评审：橙红同时当「当前项」「待处理」「警告」，满屏红橙，小提醒看着像出错）：
     品牌橙红 = 你在哪（侧栏当前项、选中的页签和卡片、聚焦、星标、新增小点）；
     琥珀 --attn = 要你处理（待确认、红点、提醒条、未匹配、快超时）；红 --danger = 出错和危险操作 */
  /* --accent-wash：名单当前行的底。以前 #FFFAF8，和悬停的白底几乎一样，抽屉停靠时两行都是「白」，只剩 3px 红条能分（走查 R7V-14）。
     加深到一眼看得出淡红，比侧栏当前项的 --accent-soft 浅一点；上面的辅助灰字 --ink-3 仍有 5.0 */
  --accent:#F44527; --accent-ink:#C2361C; --accent-soft:#FEF0EB; --accent-line:#FBD3C6; --accent-wash:#FFF2EE;
  /* 待处理：琥珀。字 #B54708 白底 5.4、浅灰底 4.9；点和指示条用 --attn */
  --attn:#F79009; --attn-ink:#B54708; --attn-soft:#FFF6E5; --attn-line:#FEDF89; --attn-wash:#FFFCF5;
  /* 档位：只有档位徽章能用。首推绿、可推蓝、备选紫（走查 R7V-02：以前备选是橙 #AB4E08 / #FFFAEB，和琥珀「待处理」肉眼分不出，
     深色下两组完全同值；备选是评价、不用处理，不能借琥珀）。字在自己的底上：首推 5.7、可推 6.3、备选 6.0；深色 7.6 / 7.0 / 7.9 */
  --tier-a:#0C7148; --tier-a-bg:#ECFDF3; --tier-b:#1554C0; --tier-b-bg:#EFF6FF; --tier-c:#6941C6; --tier-c-bg:#F4F3FF;
  --tier-v:#4A4F58; --tier-d:#646A73; --tier-d-bg:#F1F2F4;
  /* 出错 */
  --danger:#B42318; --danger-bg:#FEF3F2; --danger-line:#F7C9C4; --danger-strong:#7A1F17;
  /* 出错的小标签（名单上的「未记上」「未移出」，第 22 轮 R22V-02）：--danger-bg 和白底、页面底只差 1.09 / 1.01，胶囊看不出来，读起来就是一个红字。
     加深一档底色、加一圈边：底对白 1.21、边对白 1.94（对页面底 1.81、悬停行 1.69、选中行 1.71），字对底 5.45；深色：字对底 5.12、边对卡片 1.75 */
  --danger-tag:#FEE4E2; --danger-tag-line:#FDA29B;
  /* 快超时（跟进中 2–5 天没动）：和「待处理」同一个琥珀 */
  --warn:var(--attn-ink);
  /* 深色底（主按钮、批量条、提示条）上的字和叠层；遮罩 */
  --on-ink:#fff; --on-ink-2:#D5D7DC; --on-ink-hover:rgba(255,255,255,.14); --ink-hover:#14161A;
  --scrim:rgba(20,22,26,.22); --scrim-strong:rgba(20,22,26,.32);
  /* 滚动条悬停、头像描边、吸底栏上方的阴影、定位闪一下的底色：深色模式另给一套 */
  --thumb-hover:#BFC3CA; --av-ring:rgba(0,0,0,.06); --sh-up:0 -10px 18px -14px rgba(37,40,45,.25); --flash:rgba(244,69,39,.35);
  /* 分段选择的选中项（走查 R8V-07，照 Linear：整组 --fill 底，选中的一格浮起来）：浅色白底；
     深色下要比 --fill 亮一档才浮得起来（--surface、--surface-2 都比 --fill 暗或一样）。
     空状态插画背后的圆以前单独有 --ill-halo（品牌浅底），走查 R8V-18 改成直接用 --fill，删了 */
  --seg-on:#fff;
  /* 选中块那一圈和字重（走查 R11V-12：深色下 #34363C 的选中块对 #232428 的槽只有 1.28:1，「全部 586」和旁边两项分不出）。
     浅色照旧：白块 + --line-strong 一圈 + 500；深色单独提亮、描边换成控件边线、字重 600（见下面两段深色） */
  --seg-on-line:#D5D7DC; --seg-on-fw:500;
  /* 选中的筛选胶囊（Choice.js 的 FilterSelect、筛选标签）：浅色是实心黑；深色下实心浅灰是全屏最亮的东西（走查 R11V-12），
     深色换成 --fill-2 底 + 浅色字 + 一圈亮一档的边，不反白 */
  --chip-on:#1F2329; --chip-on-ink:#fff; --chip-on-line:#1F2329; --chip-on-hover:#14161A; --chip-on-sub:#D5D7DC; --chip-on-x:rgba(255,255,255,.14);
  /* 名单勾选行的底（走查 R11V-02：以前和键盘焦点行同一个 --hover 灰，勾选的、焦点停着没勾的两行一个样子）。
     冷色浅底，和焦点行的灰、当前行的浅红按色相分开；辅助灰字 --ink-3 在上面 4.8:1，焦点红描边 3.2:1 */
  --row-sel:#EBF1FC;
  /* 勾选行、焦点行第一格里「刚看过」的灰竖条（DataTable.js 只在这两种底上把第一格的 --line-strong 换成它）：
     --line-strong 叠在 --row-sel / --hover 上只有 1.27 / 1.25:1，换成它是 2.2:1 */
  --row-mark:#9EA3AC;
  color-scheme:light;

  /* 字号（方案第 06 节）：主信息 14（人名、岗位名 600，条件名、类别名 500）、正文 14、次要 13、辅助 12、区块标题 16、页面标题 20、关键数字 20 / 28；
     界面上不出现 12 以下；同一行最多两级 */
  --fs-12:12px; --fs-13:13px; --fs-14:14px; --fs-16:16px; --fs-20:20px; --fs-24:24px; --fs-28:28px;
  --lh-12:18px; --lh-13:20px; --lh-14:22px; --lh-16:24px; --lh-20:28px; --lh-24:32px; --lh-28:36px;
  /* 中文字体排在系统西文字体前面：Segoe UI、苹果系统字体里也有弯引号和破折号，排在前面会把中文里的「“”」「——」画成窄的西文字形。
     思源黑体（public/fonts/，开源 OFL）有 400–900 连续粗细，微软雅黑只有常规和粗体，500 / 600 在 Windows 上分不出主次（10-10 对比稿，用户选的）。
     苹方排在思源前面：Mac 上直接用系统字体，不下载 */
  --font:Inter,"PingFang SC","Hiragino Sans GB","Noto Sans SC Variable",-apple-system,BlinkMacSystemFont,"Segoe UI","Microsoft YaHei",sans-serif;

  /* 间距：4 的倍数 */
  --s-1:4px; --s-2:8px; --s-3:12px; --s-4:16px; --s-5:24px; --s-6:32px; --s-7:48px;
  /* 控件高度 */
  --h-sm:28px; --h-md:32px; --h-lg:36px;
  /* 圆角：控件 6、卡片和弹窗 10、胶囊 999 */
  --r-ctl:6px; --r-card:10px; --r-pill:999px;
  /* 阴影：卡片 / 浮层 / 弹窗 */
  --sh-1:0 1px 2px rgba(37,40,45,.05);
  --sh-2:0 4px 10px -2px rgba(37,40,45,.09),0 2px 4px -2px rgba(37,40,45,.05);
  --sh-3:0 16px 36px -8px rgba(37,40,45,.16),0 4px 10px -4px rgba(37,40,45,.06);
  --ring:0 0 0 3px rgba(244,69,39,.16);
  /* 叠放顺序（第 25 轮 R25S-04 统一定下，从低到高）：
     吸顶 2 < 吸底栏 3 < 抽屉 40 < 菜单、弹出层 50（抽屉里打开的也压在抽屉上，10-10：抽屉里的「记录触达」菜单被盖住）
     < 命令面板 55 < 弹窗、确认框 60 < 弹窗里打开的菜单、下拉 65 < 提示条、ⓘ 气泡 70（弹窗开着时提示条退到遮罩下面，ui/Modal.js）。
     以前弹窗 50、菜单和命令面板都是 55：异步弹出的确认框压不住已经开着的菜单、命令面板。现在弹窗打开时还会先收起它们（app:modal） */
  --z-sticky:2; --z-footer:3; --z-drawer:40; --z-pop:50; --z-cmdk:55; --z-modal:60; --z-modal-pop:65; --z-toast:70;
  /* 动效三档（10-10 设计对标第三批）：快 120ms（菜单、弹出层、小箭头）/ 常规 200ms（弹窗、提示条、换人）/ 面板 250ms（抽屉）。
     进来用 --ease-out（先快后慢），面板用 --ease-panel；出去比进来快。系统设了「减少动态效果」时全部关掉（下面 base 层最后一条） */
  --t-fast:.12s; --t-base:.2s; --ease:cubic-bezier(.2,.7,.2,1);
  /* 手感（10-10 设计对标，照 Linear / Attio）：悬停立刻亮（0）、移开慢慢淡（150ms）；按下 50ms；面板进出 250ms 先快后慢 */
  --t-out:.15s; --t-press:.05s; --t-panel:.25s; --ease-out:cubic-bezier(.33,1,.68,1); --ease-panel:cubic-bezier(.32,.72,0,1);
  /* 弹一下（略微冲过头再回来）：只给「完成了」的小勾用 */
  --ease-pop:cubic-bezier(.34,1.56,.64,1);
  /* 首字母头像的底色：按人固定取一个，饱和度压低，白字对比度都过 4.5 */
  --av-1:#5B6CC7; --av-2:#37806A; --av-3:#B0603A; --av-4:#8A5BB8; --av-5:#3A789F; --av-6:#A44E6E; --av-7:#6F7A3A; --av-8:#5F6B7A;
  /* 主区上下内边距：吸顶 / 吸底的元素按它抵消，不然停在内边距里面、留一条缝 */
  --main-pt:24px; --main-pb:48px; --main-px:28px;
  /* 页面内容的最大宽度，超过就在主区里居中（10-10 用户 2560 宽的屏幕上：限宽又靠左，右边空了一大半）。
     名单页和岗位工作台同宽（2026-10-14 界面评审：岗位列表左边距 327、岗位页 405，来回切换内容左右跳），管理页、说明页更窄。
     工作台里一条条往下看的正文（岗位要求、预估、详细步骤）再收到第二张步骤卡的右边：D = max((2W − 32) / 3, min(W, 802))，见 Requirements.js 的 .req--doc */
  --page-w-list:1600px; --page-w-work:1600px; --page-w-admin:1280px;
  /* 侧栏宽：固定在底部的操作栏、提示条按它让开侧栏 */
  /* --side-full：展开时的宽度（侧栏里的「我的岗位」按它定宽，收起的过程中不跟着重排）；--side-w：现在的宽度（收起时换成 --side-mini） */
  --side-full:264px; --side-w:var(--side-full);
  --side-mini:64px;   /* 侧栏收起后只留图标（Shell.js 的 shell--mini） */
  /* 主区滚动条宽（下面 ::-webkit-scrollbar 的 10px，主区 scrollbar-gutter:stable 一直留着）：固定在视口上的吸底栏右边要多让这么宽（走查 R6V-14） */
  --sb-w:10px;
}
/* 深色模式（10-10 设计评审）：跟随系统，或在左下角账号菜单里固定浅色 / 深色（存在 localStorage crm.theme，index.html 开头就设好 data-theme，不闪）。
   只换颜色变量，组件不用改。不是纯黑：底 #111214、卡片 #1A1B1E，层级靠亮度拉开；字不用纯白，免得刺眼。
   主按钮、提示条、批量条在浅色下是深底白字，深色下反过来成浅底深字。下面两段一模一样：一段给「跟随系统」，一段给「固定深色」 */
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --bg:#111214; --surface:#1A1B1E; --fill:#232428; --hover:#2A2B30;
  --ink:#ECEDEF; --ink-2:#C4C7CD; --ink-3:#9A9FA8; --ink-4:#6E737C;
  --line:#2A2B30; --line-2:#222327; --line-strong:#3A3C42; --line-control:#565961; --track-off:#6E737C;
  --accent:#FF5A3C; --accent-ink:#FF8A70; --accent-soft:#3A1F19; --accent-line:#5E2B20; --accent-wash:#211714;
  --attn:#F79009; --attn-ink:#FDB022; --attn-soft:#33250F; --attn-line:#5A4014; --attn-wash:#1F1A10;
  --tier-a:#47CD89; --tier-a-bg:#0F2A1E; --tier-b:#84ADFF; --tier-b-bg:#152340; --tier-c:#BDB4FE; --tier-c-bg:#2A2342;
  --tier-v:#C4C7CD; --tier-d:#9A9FA8; --tier-d-bg:#26272B;
  --danger:#F97066; --danger-bg:#3A1715; --danger-line:#5C2320; --danger-strong:#FDA29B;
  --danger-tag:#4A1C19; --danger-tag-line:#7A271A;
  --on-ink:#111214; --on-ink-2:#4A4F58; --on-ink-hover:rgba(0,0,0,.08); --ink-hover:#FFFFFF;
  --scrim:rgba(0,0,0,.5); --scrim-strong:rgba(0,0,0,.6);
  --sh-1:0 1px 2px rgba(0,0,0,.4);
  --sh-2:0 4px 12px -2px rgba(0,0,0,.5),0 0 0 1px rgba(255,255,255,.04);
  --sh-3:0 16px 40px -8px rgba(0,0,0,.6),0 0 0 1px rgba(255,255,255,.06);
  --ring:0 0 0 3px rgba(255,90,60,.3);
  --thumb-hover:#565961; --av-ring:rgba(255,255,255,.08); --sh-up:0 -10px 18px -14px rgba(0,0,0,.7); --flash:rgba(255,90,60,.3);
  --seg-on:#43464D; --seg-on-line:#565961; --seg-on-fw:600;
  --chip-on:#2A2B30; --chip-on-ink:#ECEDEF; --chip-on-line:#8A8F98; --chip-on-hover:#313238; --chip-on-sub:#9A9FA8; --chip-on-x:rgba(255,255,255,.08);
  --row-sel:#1C2536; --row-mark:#5E626B;
  --switch-on:#C4C7CD;
  --surface-2:#222327; --fill-2:#2A2B30; --hover-2:#313238; --line-2-pop:#2E2F34;
  --line-pop:#3A3C42; --sh-pop:0 16px 40px -8px rgba(0,0,0,.6),0 0 0 1px #3A3C42;
  --select-arrow:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%239A9FA8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  color-scheme:dark;
}}
:root[data-theme="dark"]{
  --bg:#111214; --surface:#1A1B1E; --fill:#232428; --hover:#2A2B30;
  --ink:#ECEDEF; --ink-2:#C4C7CD; --ink-3:#9A9FA8; --ink-4:#6E737C;
  --line:#2A2B30; --line-2:#222327; --line-strong:#3A3C42; --line-control:#565961; --track-off:#6E737C;
  --accent:#FF5A3C; --accent-ink:#FF8A70; --accent-soft:#3A1F19; --accent-line:#5E2B20; --accent-wash:#211714;
  --attn:#F79009; --attn-ink:#FDB022; --attn-soft:#33250F; --attn-line:#5A4014; --attn-wash:#1F1A10;
  --tier-a:#47CD89; --tier-a-bg:#0F2A1E; --tier-b:#84ADFF; --tier-b-bg:#152340; --tier-c:#BDB4FE; --tier-c-bg:#2A2342;
  --tier-v:#C4C7CD; --tier-d:#9A9FA8; --tier-d-bg:#26272B;
  --danger:#F97066; --danger-bg:#3A1715; --danger-line:#5C2320; --danger-strong:#FDA29B;
  --danger-tag:#4A1C19; --danger-tag-line:#7A271A;
  --on-ink:#111214; --on-ink-2:#4A4F58; --on-ink-hover:rgba(0,0,0,.08); --ink-hover:#FFFFFF;
  --scrim:rgba(0,0,0,.5); --scrim-strong:rgba(0,0,0,.6);
  --sh-1:0 1px 2px rgba(0,0,0,.4);
  --sh-2:0 4px 12px -2px rgba(0,0,0,.5),0 0 0 1px rgba(255,255,255,.04);
  --sh-3:0 16px 40px -8px rgba(0,0,0,.6),0 0 0 1px rgba(255,255,255,.06);
  --ring:0 0 0 3px rgba(255,90,60,.3);
  --thumb-hover:#565961; --av-ring:rgba(255,255,255,.08); --sh-up:0 -10px 18px -14px rgba(0,0,0,.7); --flash:rgba(255,90,60,.3);
  --seg-on:#43464D; --seg-on-line:#565961; --seg-on-fw:600;
  --chip-on:#2A2B30; --chip-on-ink:#ECEDEF; --chip-on-line:#8A8F98; --chip-on-hover:#313238; --chip-on-sub:#9A9FA8; --chip-on-x:rgba(255,255,255,.08);
  --row-sel:#1C2536; --row-mark:#5E626B;
  --switch-on:#C4C7CD;
  --surface-2:#222327; --fill-2:#2A2B30; --hover-2:#313238; --line-2-pop:#2E2F34;
  --line-pop:#3A3C42; --sh-pop:0 16px 40px -8px rgba(0,0,0,.6),0 0 0 1px #3A3C42;
  --select-arrow:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%239A9FA8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  color-scheme:dark;
}
/* logo 两份：浅色用原来的；深色 logo-dark.svg 照官方反白版（品牌素材包 moledao Logo (H) Reversed）：头、眼睛、鼻子不变，只把字换成 #F3F3F3（2026-10-15 用户：以前把头也换成浅色，「暗色模式明明有对应的 logo，不要乱改」） */
.logo-d{display:none}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .logo-l{display:none}:root:not([data-theme="light"]) .logo-d{display:block}}
:root[data-theme="dark"] .logo-l{display:none}
:root[data-theme="dark"] .logo-d{display:block}

/* 窄屏改变量要写在这里：这个文件里的 :root 没有分层，组件 css() 里（在 @layer 里）改 :root 永远压不过它（走查 R3C-01） */
@media (max-width:1099px){:root{--side-full:232px;--main-px:20px}}
/* 侧栏收起（Shell.js 在 html 上挂 side-mini）：只在侧栏是竖着的宽度生效，窄屏顶栏照旧 0 */
@media (min-width:860px){:root.side-mini{--side-w:var(--side-mini)}}
@media (max-width:859px){:root{--side-w:0px;--main-pt:16px;--main-pb:24px;--main-px:16px}}

@layer base{
  *{box-sizing:border-box}
  html,body,#app{margin:0;height:100%}
  /* 组件里每个设了字号的地方都配了同一级的行高（check_ui 会查），这里只管没设字号的 14 号正文（走查 R4C-05、R5C-03） */
  body{font:var(--fs-14)/var(--lh-14) var(--font);color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;font-feature-settings:"cv05","ss01"}
  button,input,select,textarea{font:inherit;color:inherit}
  button{cursor:pointer;background:none;border:0;padding:0;text-align:inherit}
  button:disabled{cursor:default}
  a{color:inherit;text-decoration:none}
  h1,h2,h3,h4,h5,h6,p,ul,ol,dl,dd,figure{margin:0}
  ul,ol{padding:0;list-style:none}
  img,svg{display:block;flex:none}
  /* 产品里没有斜体：结论列的 ✓ ? ✕、「中 / 英」都用 <i>，浏览器默认画成斜体，中文还是硬斜的假斜体（走查 R6V-03） */
  i,em{font-style:normal}
  /* 勾选框、单选框统一 16px（10-10 走查 B1：表格里裸的勾选框是 Chrome 默认的蓝色 13px）。
     选中用主文字色，和选中的筛选标签、分段选择一个样子；品牌红只给「你在哪」（走查 R6V-05：勾选框红色，和当前行混在一起） */
  input[type=checkbox],input[type=radio]{width:16px;height:16px;margin:0;accent-color:var(--ink);cursor:pointer;flex:none}
  /* 折叠块统一用一个转动的小箭头，不用浏览器自带的三角（走查 F2） */
  summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:4px}
  summary::-webkit-details-marker{display:none}
  /* 和可折叠区块用同一个箭头（lucide chevron-right，14px），展开时转 90°（走查 R3C-18） */
  summary::before{content:"";width:14px;height:14px;flex:none;background:currentColor;transition:transform var(--t-fast);
    -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27black%27 stroke-width=%272%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Cpath d=%27m9 18 6-6-6-6%27/%3E%3C/svg%3E") center/14px no-repeat;
    mask:url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27black%27 stroke-width=%272%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3E%3Cpath d=%27m9 18 6-6-6-6%27/%3E%3C/svg%3E") center/14px no-repeat}
  details[open]>summary::before{transform:rotate(90deg)}
  :focus-visible{outline:2px solid var(--accent-ink);outline-offset:2px}
  ::selection{background:var(--accent-soft)}
  *::-webkit-scrollbar{width:10px;height:10px}
  *::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:99px;border:3px solid transparent;background-clip:content-box}
  *::-webkit-scrollbar-thumb:hover{background:var(--thumb-hover);background-clip:content-box;border:3px solid transparent}
  *::-webkit-scrollbar-track{background:transparent}
  [hidden]{display:none !important}
  /* 换页面、切页签：新内容淡入（只动透明度：动 transform 会让里面 position:fixed 的抽屉、吸底栏在动画期间跟着跑） */
  .page-in{animation:page-in var(--t-base) var(--ease-out)}
  @keyframes page-in{from{opacity:0}}
  .num{font-variant-numeric:tabular-nums}
  .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
  @media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms !important;transition-duration:.01ms !important}}
}

/* 「正在处理」的字：一道光从左往右扫过，代替转圈（10-10 设计对标第三批，照 Linear / Attio）。
   不进 @layer：组件里给这段字设的颜色都在 @layer 里，压不过这里，透明字才不会被盖回实色；减少动态效果时变回普通的字 */
.shimmer{background:linear-gradient(90deg,var(--ink-3) 20%,var(--ink) 50%,var(--ink-3) 80%) 0 0/200% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:shimmer 1.6s linear infinite}
@keyframes shimmer{from{background-position:100% 0}to{background-position:-100% 0}}
@media (prefers-reduced-motion:reduce){.shimmer{animation:none;background:none;color:inherit}}
