/* ============================================================================
   RenewDesk · E 黑白本色 Pure Ink
   参照 MaxLifePlatform docs/ai/05-黑白本色-Pure-Ink.html 规范落地：
   黑白灰 + 唯一蓝 #0071E3；层级靠背景分区与留白，零阴影；
   胶囊控件；表格只有横线；状态 = 灰底 + 7px 色点；圆角只有 28/18/12/胶囊。
   ============================================================================ */
:root{
  /* 墨阶 Ink */
  --ink-000:#000000; --ink-900:#1D1D1F; --ink-700:#424245; --ink-500:#6E6E73;
  --ink-400:#86868B; --ink-300:#A1A1A6; --ink-200:#D2D2D7; --ink-150:#E8E8ED; --ink-100:#F0F0F2;
  /* 纸阶 Paper */
  --paper-000:#FFFFFF; --paper-050:#FAFAFA; --paper-100:#F5F5F7; --paper-150:#EDEDF0;
  /* 唯一强调色 */
  --blue:#0071E3; --blue-hover:#0077ED; --blue-tint:rgba(0,113,227,.10);
  /* 语义色：只做标记不做色块 */
  --sys-green:#248A3D; --sys-red:#D70015; --sys-orange:#BF5600;
  /* 圆角两极 + 胶囊 */
  --r-md:12px; --r-lg:18px; --r-xl:28px; --r-pill:980px;
  /* 阴影只给浮层 */
  --sh-float:0 8px 40px rgba(0,0,0,.14), 0 2px 8px rgba(0,0,0,.06);
  /* 动效 */
  --ease:cubic-bezier(.25,.1,.25,1); --ease-apple:cubic-bezier(.28,.11,.32,1);
  --dur-1:160ms;
  /* 字体：规范系统栈 */
  --sans:"SF Pro Display","SF Pro Text",-apple-system,BlinkMacSystemFont,
         "Segoe UI Variable Display","Segoe UI","PingFang SC","Hiragino Sans GB",
         "Microsoft YaHei UI","Microsoft YaHei",sans-serif;
}

*{box-sizing:border-box;margin:0;padding:0}
/* 禁掉横向滚动条：它悬浮在页面底部会盖住最后一张卡的底边（老内核浏览器兼容） */
html,body{max-width:100%;overflow-x:hidden}
html{-webkit-text-size-adjust:100%}
body{
  font-family:var(--sans);
  font-size:14px;line-height:1.47;letter-spacing:-.008em;
  color:var(--ink-900);background:var(--paper-000);
  -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;
}
a{color:var(--blue);text-decoration:none}
:focus-visible{outline:2px solid var(--blue);outline-offset:2px;border-radius:6px}
.num{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}

/* ================= 应用壳：侧栏 + 毛玻璃顶栏 ================= */
.app{display:flex;min-height:100vh;background:var(--paper-000)}
.app .side{
  width:236px;flex:none;background:var(--paper-050);padding:18px 14px;
  display:flex;flex-direction:column;gap:3px;
}
.app .brand{display:flex;align-items:center;gap:10px;padding:8px 10px;margin-bottom:18px}
.app .brand .logo{width:26px;height:26px;border-radius:7px;background:var(--ink-000);flex:none}
.app .brand b{font-size:15px;font-weight:600;letter-spacing:-.014em}
.app .sec-title{font-size:11px;font-weight:600;letter-spacing:.08em;color:var(--ink-300);padding:14px 10px 6px}
.app .nav{
  display:flex;align-items:center;gap:11px;padding:8px 10px;border-radius:10px;
  font-size:13.5px;color:var(--ink-700);transition:background var(--dur-1) var(--ease),color var(--dur-1) var(--ease);
}
.app .nav i{width:15px;height:15px;border-radius:4px;background:var(--ink-200);flex:none}
.app .nav:hover{background:var(--paper-100)}
.app .nav.on{background:var(--ink-000);color:#fff;font-weight:500}
.app .nav.on i{background:#fff}
.app main{flex:1;min-width:0;display:flex;flex-direction:column;background:var(--paper-000)}
.app .top{
  height:52px;flex:none;display:flex;align-items:center;gap:16px;padding:0 22px;
  background:rgba(255,255,255,.76);-webkit-backdrop-filter:blur(20px) saturate(180%);
  backdrop-filter:blur(20px) saturate(180%);
  border-bottom:1px solid rgba(0,0,0,.07);
  position:sticky;top:0;z-index:40;
}
.app .crumbs{font-size:12.5px;color:var(--ink-400)}
.app .crumbs b{color:var(--ink-000);font-weight:500}
.app .spacer{flex:1}
.app .top .today{font-size:12.5px;color:var(--ink-400)}
.app .body{padding:44px 30px 40px;flex:1}
.app .page{max-width:920px;margin:0 auto}
/* 表格主导的页面放宽到 1080（规范：内容区限宽 920 编辑区 / 1080 表格区） */
.app .page.page-wide{max-width:1080px}

/* minmax(0,1fr)：允许格子收缩到内容以下，防止长词撑破网格把页面撑出横向滚动 */
/* 注意：.ph-row 基础规则必须写在下方断点区之前——同特异性时后者胜，写在断点后会让窄屏列数降级永远失效 */
.ph-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:30px}

/* 视口断点降级（用媒体查询而非容器查询：老内核国产浏览器兼容性更好） */
@media (max-width:1180px){
  .app .side{width:72px;padding:18px 12px}
  .app .brand{justify-content:center;padding:8px 0}
  .app .brand b,.app .sec-title,.app .nav span{display:none}
  .app .nav{justify-content:center;padding:9px}
  .app .body{padding:36px 24px 32px}
}
@media (max-width:900px){
  /* 侧栏不再隐藏：窄屏沿用 1180px 断点的 72px 图标栏（小图标始终可见） */
  .ph-row{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:600px){
  .ph-row{grid-template-columns:minmax(0,1fr)}
  .app .body{padding:24px 16px 28px}
  .app .top{padding:0 14px}
}

/* ================= 页头：大主标是这套的主角 ================= */
.pg-h{margin-bottom:30px}
.pg-h h1{font-size:clamp(26px,2.6vw,38px);font-weight:600;letter-spacing:-.014em;line-height:1.08}
.pg-h p{font-size:15px;color:var(--ink-500);margin-top:8px;letter-spacing:-.006em}
.pg-h .pg-actions{margin-top:14px;display:flex;gap:10px;flex-wrap:wrap}

h2.sec{font-size:19px;font-weight:600;letter-spacing:-.008em;margin:34px 0 14px}

/* ================= 卡片与统计 ================= */
.stat{background:var(--paper-100);border-radius:var(--r-lg);padding:22px 22px 20px}
.stat .k{font-size:12.5px;font-weight:600;letter-spacing:.02em;color:var(--ink-500);margin-bottom:12px}
.stat .v{font-size:36px;font-weight:600;letter-spacing:-.018em;line-height:1.05;font-variant-numeric:tabular-nums}
.stat .v small{font-size:16px;font-weight:600;letter-spacing:-.01em;color:var(--ink-400);margin-left:2px}
.stat .d{font-size:12.5px;color:var(--ink-500);margin-top:10px}
.stat .d b{font-weight:600;font-variant-numeric:tabular-nums}

.card{background:var(--paper-000);border-radius:var(--r-lg);box-shadow:0 0 0 1px var(--ink-150);margin-bottom:20px}
.card-h{padding:16px 20px;border-bottom:1px solid var(--ink-150);display:flex;align-items:center;justify-content:space-between;gap:12px}
.card-h h2{font-size:16px;font-weight:600;letter-spacing:-.007em}
.card-h .sub{font-size:12.5px;color:var(--ink-400);margin-top:3px}
.card-h .tools{display:flex;gap:8px;align-items:center}
.tile-grey{background:var(--paper-100);border-radius:var(--r-lg);padding:20px}

/* ================= 表格：48px 行高、只有横线、tabular 数字 ================= */
.tbl-scroll{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:13.5px}
th{
  text-align:left;font-size:12px;font-weight:600;color:var(--ink-400);padding:11px 20px;
  background:var(--paper-050);border-bottom:1px solid var(--ink-150);white-space:nowrap;letter-spacing:.01em;
}
td{padding:15px 16px;border-bottom:1px solid var(--ink-100);white-space:nowrap;color:var(--ink-700)}
/* 长文本列（客户名/标题）放开换行吸收宽度，让表格始终铺满容器不出现内部横向滚动 */
td.wrap{white-space:normal;min-width:6em}
td.strong{color:var(--ink-000);font-weight:500}
tbody tr:last-child td{border-bottom:none}
tbody tr{transition:background var(--dur-1) var(--ease)}
tbody tr:hover{background:var(--paper-050)}
td.num,th.num{text-align:right;font-variant-numeric:tabular-nums;color:var(--ink-900)}
tfoot td{border-top:1px solid var(--ink-150);border-bottom:none;font-weight:600;color:var(--ink-000)}
td.act a,td.act button{font-size:13px}
.tblfoot{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;font-size:12.5px;color:var(--ink-400)}

/* ================= 状态标记：灰底 + 7px 色点 ================= */
.mk{
  display:inline-flex;align-items:center;gap:7px;font-size:12.5px;font-weight:500;
  color:var(--ink-700);background:var(--paper-100);border-radius:var(--r-pill);padding:4px 12px 4px 10px;
}
.mk .dot{width:7px;height:7px;border-radius:50%;flex:none;background:var(--ink-300)}
.mk.ok .dot{background:var(--sys-green)}
.mk.warn .dot{background:var(--sys-orange)}
.mk.err .dot{background:var(--sys-red)}
.mk.run .dot{background:var(--blue)}
.mk.ghost{background:transparent;box-shadow:inset 0 0 0 1px var(--ink-150)}
.mk.strong.err{color:var(--sys-red)}
.mk.strong.warn{color:var(--sys-orange)}

/* ================= 按钮：胶囊是默认形状 ================= */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:7px;
  font-family:inherit;font-size:14px;font-weight:500;letter-spacing:-.006em;line-height:1;
  height:38px;padding:0 18px;border-radius:var(--r-pill);border:1px solid transparent;
  cursor:pointer;background:var(--paper-100);color:var(--ink-900);
  transition:background var(--dur-1) var(--ease),color var(--dur-1) var(--ease),transform var(--dur-1) var(--ease);
}
.btn:active{transform:scale(.985)}
.btn-primary{background:var(--blue);color:#fff}
.btn-primary:hover{background:var(--blue-hover)}
.btn-black{background:var(--ink-000);color:#fff}
.btn-black:hover{background:var(--ink-700)}
.btn-ghost{background:var(--paper-100);color:var(--ink-900)}
.btn-ghost:hover{background:var(--paper-150)}
.btn-danger{background:var(--sys-red);color:#fff}
.btn-danger:hover{background:#B30012}
.btn-sm{height:32px;font-size:13px;padding:0 15px}
/* 表格行内文字操作：蓝链接 / 红静默 */
.link-btn{
  font-family:inherit;font-size:13px;background:none;border:none;padding:0;cursor:pointer;
  color:var(--blue);letter-spacing:-.006em;
}
.link-btn:hover{text-decoration:underline;text-underline-offset:3px}
.link-btn.danger{color:var(--sys-red)}

/* ================= 表单 ================= */
.field{display:flex;flex-direction:column;gap:7px;max-width:340px;margin-bottom:16px}
.field label{font-size:13px;font-weight:600;letter-spacing:-.005em;color:var(--ink-900)}
.inp{
  font-family:inherit;font-size:14px;height:38px;width:100%;
  padding:0 14px;border:1px solid var(--ink-200);border-radius:var(--r-md);
  background:var(--paper-000);color:var(--ink-900);letter-spacing:-.004em;
  transition:border-color var(--dur-1) var(--ease),box-shadow var(--dur-1) var(--ease);
}
.inp::placeholder{color:var(--ink-300)}
.inp:hover{border-color:var(--ink-300)}
.inp:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 4px var(--blue-tint)}
select.inp{appearance:none;padding-right:34px;cursor:pointer;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'><path d='M1 1.5L6 6.5L11 1.5' stroke='%236E6E73' stroke-width='1.5' fill='none' stroke-linecap='round'/></svg>");
  background-repeat:no-repeat;background-position:right 13px center;}
.form-actions{display:flex;gap:10px;margin-top:20px}
.form-narrow{max-width:480px}

/* ================= 分段控件 Segmented（Apple 招牌），a 与 button 同形 ================= */
.seg{display:inline-flex;background:var(--paper-100);border-radius:var(--r-pill);padding:2px;gap:2px}
.seg button,.seg a{
  font-family:inherit;font-size:13px;font-weight:500;letter-spacing:-.01em;color:var(--ink-700);
  border:none;background:transparent;border-radius:var(--r-pill);padding:7px 18px;cursor:pointer;
  transition:background var(--dur-1) var(--ease),color var(--dur-1) var(--ease),box-shadow var(--dur-1) var(--ease);
  display:inline-block;
}
.seg button:hover,.seg a:hover{color:var(--ink-000)}
.seg button.on,.seg a.on{background:var(--paper-000);color:var(--ink-000);box-shadow:0 0 0 .5px rgba(0,0,0,.06),0 1px 3px rgba(0,0,0,.10)}

/* ================= 任务看板（v0.9） ================= */
.board{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;align-items:start}
.kb-col{background:var(--paper-050);border-radius:var(--r-lg);padding:12px;min-height:120px;transition:background var(--dur-1) var(--ease),box-shadow var(--dur-1) var(--ease)}
.kb-col.over{background:var(--blue-tint);box-shadow:inset 0 0 0 2px var(--blue)}
.kb-head{display:flex;align-items:center;gap:8px;padding:2px 6px 10px;font-size:13.5px;font-weight:600;color:var(--ink-700)}
.kb-count{color:var(--ink-400);font-weight:500}
.kb-add{margin-left:auto;color:var(--ink-400);font-size:16px;text-decoration:none;line-height:1}
.kb-add:hover{color:var(--ink-000)}
.kb-list{display:flex;flex-direction:column;gap:10px;min-height:64px}
.kb-card{background:var(--paper-000);border-radius:var(--r-md);padding:12px 14px;box-shadow:0 0 0 1px var(--ink-150);cursor:grab}
.kb-card.dragging{opacity:.45}
.kb-card:active{cursor:grabbing}
.kb-title{font-size:14px;font-weight:500;letter-spacing:-.006em;margin-bottom:8px}
.kb-title a{color:var(--ink-900)}
.kb-title a:hover{color:var(--blue)}
.kb-meta{display:flex;flex-wrap:wrap;gap:6px}
.kb-fee{font-size:12px;color:var(--ink-500);margin-top:8px}
.kb-empty{border:1px dashed var(--ink-200);border-radius:var(--r-md);padding:18px;text-align:center;color:var(--ink-300);font-size:12.5px}
.kb-fallback{margin-top:10px}
.kb-fallback select{height:32px;font-size:12.5px}

/* 完成弹层（浮层允许阴影，规范 dlg） */
/* margin:auto 必须显式声明：全局 reset（*{margin:0}）会清掉原生 dialog 的 UA 居中，弹窗贴左上角 */
dialog{margin:auto;border:none;border-radius:var(--r-xl);padding:26px;box-shadow:var(--sh-float);width:min(420px,92vw)}
dialog::backdrop{background:rgba(0,0,0,.32)}
dialog h3{font-size:19px;font-weight:600;letter-spacing:-.008em;margin-bottom:6px}

/* ================= 反馈：Alert 左竖条无底色 / 空状态 ================= */
.alert{
  display:flex;gap:14px;padding:16px 18px;border-radius:var(--r-md);
  background:var(--paper-100);border-left:3px solid var(--ink-900);margin-bottom:20px;
}
.alert b{display:block;font-size:14px;font-weight:600;letter-spacing:-.006em;color:var(--ink-000);margin-bottom:3px}
.alert p{font-size:13px;color:var(--ink-500);line-height:1.55}
.alert.err{border-left-color:var(--sys-red)}
.alert ul{margin:4px 0 0 18px;font-size:13px;color:var(--ink-500);line-height:1.7}
.alert.warn{border-left-color:var(--sys-orange)}

.empty{text-align:center;padding:44px 24px}
.empty .glyph{width:44px;height:44px;margin:0 auto 18px;color:var(--ink-200)}
.empty .t{font-size:17px;font-weight:600;letter-spacing:-.007em;margin-bottom:6px}
.empty .m{font-size:13.5px;color:var(--ink-400);margin-bottom:20px;line-height:1.6}

/* 确认页摘要 */
.summary{margin-bottom:20px}
.summary th{width:110px}
.summary td{white-space:normal}

/* ================= 任务清单（v2.9，v2.9.1 扩展） ================= */
/* 徽章：去按钮化 mk 风格；ok=全勾反白，ghost=空清单描边，warn=存在逾期未勾项 */
.ti-badge{font:inherit;font-size:12px;font-weight:500;letter-spacing:.01em;color:var(--ink-700);background:var(--paper-100);border:none;border-radius:var(--r-pill);padding:3px 10px;cursor:pointer}
.ti-badge:hover{background:var(--ink-150)}
.ti-badge.ok{background:var(--ink-000);color:var(--paper-000)}
.ti-badge.ghost{background:transparent;box-shadow:inset 0 0 0 1px var(--ink-150);color:var(--ink-400)}
.ti-badge.warn{color:var(--sys-red)}
.ti-badge.ok.warn{background:var(--sys-red)}
/* 整卡/整行可点开清单（v2.9.1）：标题链接仍是编辑入口 */
.kb-card{cursor:pointer}
.kb-title a{cursor:pointer}
.ti-row{cursor:pointer}
/* 清单行：48px 行高只有横线（同表格口径），操作钮悬停显现 */
.ti-card .card-h{font-weight:600}
.ti-list{display:flex;flex-direction:column}
.ti{display:flex;align-items:center;gap:10px;min-height:48px;padding:6px 20px;border-bottom:1px solid var(--ink-150);font-size:13.5px}
.ti:last-child{border-bottom:none}
.ti .ti-toggle{width:15px;height:15px;flex:none;accent-color:var(--ink-000);cursor:pointer}
.ti .ti-title{flex:1;min-width:0;cursor:text;overflow-wrap:anywhere;line-height:1.5}
.ti.done .ti-title{color:var(--ink-300);text-decoration:line-through}
/* 行内 meta（v2.9.1）：优先级小下拉 + 截止日输入 + 逾期小标 */
.ti-meta{display:flex;align-items:center;gap:8px;flex:none}
.ti-pri{font:inherit;font-size:12px;color:var(--ink-700);background:var(--paper-100);border:none;border-radius:var(--r-pill);padding:3px 6px;cursor:pointer}
.ti-due{font:inherit;font-size:12px;color:var(--ink-700);background:var(--paper-100);border:none;border-radius:var(--r-pill);padding:3px 8px}
.ti-pri:disabled,.ti-due:disabled{color:var(--ink-300);cursor:default}
.ti-late{font-size:12px;font-weight:600;color:var(--sys-red)}
.ti-late.today{color:var(--sys-orange)}
.ti .ti-ops{display:flex;gap:4px;flex:none;opacity:0;transition:opacity .15s}
.ti:hover .ti-ops,.ti:focus-within .ti-ops{opacity:1}
.ti-btn{font:inherit;font-size:12px;width:26px;height:26px;line-height:1;border:none;border-radius:var(--r-pill);background:var(--paper-100);color:var(--ink-700);cursor:pointer}
.ti-btn:hover{background:var(--ink-000);color:var(--paper-000)}
.ti-rename{flex:1;min-width:0;height:32px;font-size:13.5px}
.ti-empty{padding:18px 20px;font-size:13px;color:var(--ink-300)}
.ti-addrow{padding:12px 20px;border-top:1px solid var(--ink-150)}
.ti-addrow .inp{width:100%}
.ti-note{padding:10px 20px;font-size:12.5px;color:var(--ink-500);background:var(--paper-050)}
/* 清单弹层（v2.9.1）：90% 居中大窗，点外部关闭；列表区滚动，快加常驻底部 */
#itemsDlg{width:90vw;height:90vh;max-width:1180px;padding:0}
#itemsDlg .ti-dlg-body{display:flex;flex-direction:column;height:100%;padding:0}
.ti-dlg-h{display:flex;align-items:center;gap:14px;padding:18px 24px;border-bottom:1px solid var(--ink-150)}
.ti-dlg-h h3{margin-bottom:0}
.ti-dlg-edit{font-size:13px;color:var(--ink-400);text-decoration:underline;text-underline-offset:3px}
.ti-dlg-edit:hover{color:var(--ink-000)}
.ti-dlg-x{margin-left:auto;font:inherit;font-size:22px;line-height:1;width:34px;height:34px;border:none;border-radius:var(--r-pill);background:var(--paper-100);color:var(--ink-700);cursor:pointer}
.ti-dlg-x:hover{background:var(--ink-000);color:var(--paper-000)}
#itemsDlgList{flex:1;overflow-y:auto}
.ti-hint{font-size:13px;color:var(--ink-500);background:var(--paper-100);border-radius:var(--r-md);padding:10px 12px;margin-bottom:14px}
/* 触屏无 hover：操作钮常显；窄屏清单行换行（覆盖规则置于基础规则之后，历史教训） */
@media (max-width:600px){
  .ti .ti-ops{opacity:1}
  .ti{flex-wrap:wrap}
}

/* ================= 资产（v3.0）：解锁横幅 / 子资源缩进 / 客户多选 ================= */
.asset-unlock{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 20px;margin-bottom:20px;flex-wrap:wrap}
.asset-unlock b{font-size:14px;letter-spacing:-.006em}
.asset-unlock p{font-size:12.5px;color:var(--ink-500);margin-top:2px}
.asset-child{padding-left:26px;color:var(--ink-700)}
.asset-cust-group{display:flex;flex-wrap:wrap;gap:4px 16px;padding:8px 12px;background:var(--paper-100);border-radius:var(--r-md)}

@media (prefers-reduced-motion:reduce){
  *{transition:none !important}
}

/* ================= 清单视图列头排序（v3.2） ================= */
.th-sort{color:inherit;text-decoration:none}
.th-sort:hover{color:var(--ink-000)}

/* ================= 闪念（v4.0）：速记区 / 卡片列表 ================= */
.note-capture .inp{width:100%;resize:vertical}
.note-capture-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:10px}
#voiceBtn.rec{background:var(--ink-000);color:var(--paper-000)}
.note-live{font-size:12.5px;color:var(--ink-400);margin-top:8px;min-height:18px}
.note-list{display:flex;flex-direction:column;gap:0}
.note-card{margin-bottom:0;border-radius:0;box-shadow:0 0 0 1px var(--ink-150);border-bottom:none}
.note-card:first-of-type{border-radius:var(--r-lg) var(--r-lg) 0 0}
.note-card:last-of-type{border-radius:0 0 var(--r-lg) var(--r-lg);border-bottom:1px solid var(--ink-150);margin-bottom:20px}
.note-card:only-of-type{border-radius:var(--r-lg);border-bottom:1px solid var(--ink-150)}
.note-content{padding:16px 20px 6px;font-size:14px;line-height:1.7;white-space:pre-wrap;overflow-wrap:anywhere}
.note-summary{padding:0 20px;font-size:12.5px;color:var(--ink-500)}
.note-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:10px 20px 14px;font-size:12px;color:var(--ink-400)}
.note-time{margin-left:auto}
.note-actions{display:flex;gap:10px;align-items:center}
.note-actions .link-btn{font-size:12px}

/* ================= PWA 手机工作台（v4.2）：底部标签栏 / 手机任务卡片 ================= */
/* 组件规则在前，显示切换在后（最终裁决）——.m-tasklist 的 display:flex 不得排在 .only-mobile 之后（层叠教训第三次应验） */
.tabbar{display:none}
.m-tasklist{display:flex;flex-direction:column;gap:10px}
/* 手机卡片容器里的卡片（视觉同看板卡片） */
.m-tasklist .kb-card{cursor:pointer}
.only-mobile{display:none}
.only-desktop{}
/* 断点必须写在所有 .side/.ph-row 基础与 1180/900/600 断点规则之后（层叠顺序历史教训） */
@media (max-width:700px){
  .app .side{display:none}
  .tabbar{display:flex;position:fixed;left:0;right:0;bottom:0;height:56px;background:var(--paper-000);box-shadow:0 -1px 0 var(--ink-150);z-index:50;padding:0 8px;padding-bottom:env(safe-area-inset-bottom)}
  .tabbar a{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:11px;color:var(--ink-400);text-decoration:none;border-radius:var(--r-md)}
  .tabbar a i{font-style:normal;font-size:18px;line-height:1.2}
  .tabbar a.on{color:var(--ink-000);font-weight:600}
  .app main{padding-bottom:calc(56px + env(safe-area-inset-bottom))}
  .app .body{padding:16px 14px 24px}
  .only-desktop{display:none}
  .only-mobile{display:block}
}
