/* 轻盈白 (2026-10-29 evening, the owner, with a dozen dashboards he likes and his own 经营看板: a light ground, white cards of one radius with a
   hairline, big tabular figures with a small grey line under them, one accent and three state colours, headings with room). The skin sits last
   and only restates size, radius, colour and spacing; nothing of what the pages do. */
.qf-ui .main{font-variant-numeric:tabular-nums}
.qf-ui .main .panel{border-radius:14px;padding:20px 22px;border:1px solid #e7e5e0;box-shadow:0 1px 2px rgba(38,38,36,.03)}
.qf-ui .main .heading h1{font-size:28px;font-weight:600;letter-spacing:-.01em;line-height:1.25}
.qf-ui .main .heading>div>p{margin:4px 0 0;font-size:14px;color:var(--qf-ink-3)}
.qf-ui .main .panel>h2,.qf-ui .main .panel .panel-title h2,.qf-ui .main .panel>.heading h2{font-size:17px;font-weight:600}
/* figures in cards (项目台账, and the overview's as they are) */
.qf-ui .stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:0 0 16px}
.qf-ui .stats .stat{display:block;text-align:left;border-radius:14px;padding:14px 16px;background:#fff;border:1px solid #e7e5e0;box-shadow:0 1px 2px rgba(38,38,36,.03)}
.qf-ui .stats .stat>span{display:flex;align-items:center;gap:8px;font-size:13px;color:#5f5d58}
.qf-ui .stats .stat>strong{display:block;margin-top:6px;font-size:28px;font-weight:600;line-height:1.2;color:#262624}
.qf-ui .stats .stat>small{display:block;margin-top:4px;font-size:13px;color:var(--qf-ink-3);line-height:1.5;font-weight:400}
.qf-ui .stats .stat.todo-stat>span{color:var(--qf-amber)}
.qf-ui .studio-stats .stat strong{font-size:28px}
/* tables */
.qf-ui .main th{background:#f7f7f5;color:var(--qf-ink-3);font-weight:500;font-size:13px}
.qf-ui .main tbody tr:hover td{background:#fbfbfa}
/* state labels */
.qf-ui .pill{border-radius:999px;padding:3px 10px;font-size:12px;font-weight:500;line-height:1.5}
.qf-ui .pill.done{background:#e8f1ec;color:#2f6b4a}
.qf-ui .pill.archived,.qf-ui .pill.queued,.qf-ui .pill.draft{background:#f1f0ec;color:#5f5d58}
.qf-ui .main .primary{box-shadow:0 1px 2px rgba(50,90,113,.25)}
/* a project's head: its facts in a card of their own */
.qf-ui .main .project-meta{background:#fff;border:1px solid #e7e5e0;border-radius:14px;padding:14px 18px;margin-top:16px}
/* nothing to show */
.qf-ui .main .empty{padding:48px 16px;color:var(--qf-ink-3)}.qf-ui .main .empty h2{font-size:15px;font-weight:500;color:#5f5d58}
/* 经营财务: the year's profit as figures */
.qf-ui .fin-tiles{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin:4px 0 12px}
.qf-ui .fin-tile{background:#fff;border:1px solid #e7e5e0;border-radius:14px;padding:14px 16px;min-width:0}
.qf-ui .fin-tile>span{display:flex;align-items:center;gap:8px;font-size:13px;color:#5f5d58}
.qf-ui .fin-tile>strong{display:block;margin-top:6px;font-size:24px;font-weight:600;line-height:1.3;overflow-wrap:anywhere;color:#262624}
.qf-ui .fin-tile>strong i{margin-left:4px;font-style:normal;font-size:13px;font-weight:400;color:var(--qf-ink-3)}
.qf-ui .fin-tile>small{display:block;margin-top:4px;font-size:13px;color:var(--qf-ink-3)}
.qf-ui .fin-formula{margin:0;font-size:13px;color:var(--qf-ink-3)}
@media(max-width:1100px){.qf-ui .fin-tiles{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:700px){.qf-ui .stats{grid-template-columns:repeat(2,minmax(0,1fr))}.qf-ui .fin-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}.qf-ui .main .heading h1{font-size:24px}.qf-ui .main .panel{padding:16px}.qf-ui .main .project-meta{padding:12px 14px}}
/* the same, said with the weight the older rules carry */
.qf-ui .main .stats .stat,.qf-ui .main .stats button.stat{display:block;text-align:left;padding:14px 16px;border-radius:14px}
.qf-ui .main .stats .stat>span{display:flex;flex-direction:row;align-items:center;gap:8px;font-size:13px;color:#5f5d58}
.qf-ui .main .stats .stat>strong{display:block;margin-top:6px;font-size:28px;font-weight:600;line-height:1.2}
.qf-ui .main .stats .stat>small{display:block;margin-top:4px;font-size:13px;color:var(--qf-ink-3);line-height:1.5}
.qf-ui .main .stats .stat .stat-badge{display:inline-flex;grid-row:auto;width:30px;height:30px;margin:0;border-radius:9px}
.qf-ui .main .stats .stat .stat-badge svg,.qf-ui .main .panel .fin-tile .sk-badge svg,.qf-ui .main .sk-badge svg{width:16px;height:16px;max-width:16px;max-height:16px}
.qf-ui .main .sk-badge{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;flex:none;border-radius:9px}
.sk-badge-blue{background:#edf1f3;color:#3f6c86}.sk-badge-amber{background:#f7f0e2;color:var(--qf-amber)}.sk-badge-green{background:#ebf3ee;color:#3b7553}.sk-badge-red{background:#f8eceb;color:#ad3f3b}
.qf-ui .main .stats .stat.todo-stat{text-align:left}
@media(max-width:700px){.qf-ui .main .stats .stat{padding:12px 14px}.qf-ui .main .stats .stat>strong{font-size:24px}}
/* second batch (2026-10-30): the pages of their own wear the skin where they link it; the ledger's four figures as cards; four tiles in a row */
.qf-ui main .panel{border-radius:14px;border:1px solid #e7e5e0;box-shadow:0 1px 2px rgba(38,38,36,.03)}
.qf-ui main .heading h1{font-size:28px;font-weight:600;letter-spacing:-.01em;line-height:1.25}
.qf-ui main th{background:#f7f7f5;color:var(--qf-ink-3);font-weight:500;font-size:13px}
.qf-ui .invoice-shell .metrics{gap:12px}.qf-ui .invoice-shell .metrics article{background:#fff;border:1px solid #e7e5e0;border-radius:14px;padding:14px 16px;box-shadow:0 1px 2px rgba(38,38,36,.03)}
.qf-ui .invoice-shell .metrics span{font-size:13px;color:#5f5d58}.qf-ui .invoice-shell .metrics strong{font-size:26px;font-weight:600;margin-top:6px}
.qf-ui .fin-tiles.four{grid-template-columns:repeat(4,minmax(0,1fr))}
.qf-ui .main .stats .stat.red>strong{color:#ad3f3b}
@media(max-width:1100px){.qf-ui .fin-tiles.four{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){.qf-ui .invoice-shell .metrics{grid-template-columns:repeat(2,1fr);gap:8px}.qf-ui .invoice-shell .metrics strong{font-size:22px}.qf-ui main .heading h1{font-size:24px}}
/* third batch (2026-10-30 afternoon, "开始做皮肤第三批"): the pages of their own - 报价, 合同, 年度检测台账, 介绍佣金, 付款申请, 检测报价, 开票申请,
   用章申请, 绩效申请, 员工业绩, 账号安全 - in the same cards, headings, figures and labels as the workplace; what they show and do is untouched */
.qf-ui .shell main{font-variant-numeric:tabular-nums}
.qf-ui .shell main .panel,.qf-ui .shell main .iw-panel,.qf-ui .shell main .pf-panel,.qf-ui .shell main .sr-panel{border-radius:14px;border:1px solid #e7e5e0;box-shadow:0 1px 2px rgba(38,38,36,.03)}
.qf-ui .shell main .iw-panel,.qf-ui .shell main .pf-panel{padding:20px 22px}
.qf-ui .shell main .iw-panel h2,.qf-ui .shell main .pf-panel h2,.qf-ui .shell main .sr-panel h2,.qf-ui .shell main .panel>h2{font-size:17px;font-weight:600}
.qf-ui .shell main .heading h1,.qf-ui .shell main .iw-heading h1,.qf-ui .shell main .pf-heading h1,.qf-ui .shell main .sr-heading h1{font-size:28px;font-weight:600;letter-spacing:-.01em;line-height:1.25}
/* the figures at the head of a page: the name, the figure large, what it is made of under it - as 项目台账's */
.qf-ui .shell main .summary article,.qf-ui .shell main .summary .todo-card,.qf-ui .shell main .sr-stat{border:1px solid #e7e5e0;border-radius:14px;background:#fff;box-shadow:0 1px 2px rgba(38,38,36,.03)}
.qf-ui .shell main .summary span,.qf-ui .shell main .sr-stat span{color:#5f5d58}
.qf-ui .shell main .summary strong,.qf-ui .shell main .sr-stat strong{font-weight:600;color:#262624}
.qf-ui .shell main .summary small,.qf-ui .shell main .sr-stat small{color:var(--qf-ink-3)}
.qf-ui .shell main .summary .todo-card:not(:disabled) span,.qf-ui .shell main .summary .todo-card:not(:disabled) strong{color:var(--qf-amber,var(--qf-amber))}
@media(min-width:701px){
 .qf-ui .shell main .summary article,.qf-ui .shell main .summary .todo-card,.qf-ui .shell main .sr-stat{text-align:left;align-items:flex-start;justify-content:flex-start;padding:14px 16px}
 .qf-ui .shell main .summary span,.qf-ui .shell main .sr-stat span{justify-content:flex-start;min-height:0;font-size:13px;line-height:1.5}
 .qf-ui .shell main .summary strong,.qf-ui .shell main .sr-stat strong{margin-top:6px;font-size:28px;line-height:1.2}
 .qf-ui .shell main .summary small,.qf-ui .shell main .sr-stat small{margin-top:4px;font-size:13px}
}
/* state labels: round, as the workplace's */
.qf-ui .shell main .badge,.qf-ui .shell main .iw-tag,.qf-ui .shell main .pf-tag{border-radius:999px;padding:3px 10px;font-size:12px;font-weight:500;line-height:1.5}
.qf-ui .shell main .seal-tag,.qf-ui .shell main .security-current{border-radius:999px;padding:0 8px}
/* lists: a light row under the pointer */
.qf-ui .shell main tbody tr:hover td{background:#fbfbfa}
.qf-ui .shell main .primary{box-shadow:0 1px 2px rgba(50,90,113,.25)}
/* nothing to show: one voice everywhere */
.qf-ui .shell main .empty,.qf-ui .shell main .seal-empty{color:var(--qf-ink-3)}
.qf-ui .shell main .empty h2,.qf-ui .shell main .seal-empty h2{font-size:15px;font-weight:500;color:#5f5d58}
.qf-ui .shell main .sr-empty,.qf-ui .shell main .pay-empty{color:var(--qf-ink-3);font-size:14px}
@media(max-width:700px){.qf-ui .shell main .heading h1,.qf-ui .shell main .iw-heading h1,.qf-ui .shell main .pf-heading h1,.qf-ui .shell main .sr-heading h1{font-size:24px}.qf-ui .shell main .iw-panel,.qf-ui .shell main .pf-panel{padding:16px}}
@media(prefers-contrast:more){.qf-ui .shell main .panel,.qf-ui .shell main .iw-panel,.qf-ui .shell main .pf-panel,.qf-ui .shell main .sr-panel,.qf-ui .shell main .summary article,.qf-ui .shell main .summary .todo-card,.qf-ui .shell main .sr-stat{border-color:var(--qf-ink-3)}}
/* fourth batch (2026-10-30 evening, "工具页也做，先出效果图"): the tools - 报告一致性检查, 编制资料与源强, 水平衡图, 噪声预测, 保护目标识别, 封面打印 - and
   公示管理: what lay on the grey ground sits in a white card as the panels do; the step numbers round. The rules of the third batch serve them too. */
.qf-ui .tool-shell main>section:not(.panel),.qf-ui .tool-shell main>form>fieldset{background:#fff;border:1px solid #e7e5e0;border-radius:14px;box-shadow:0 1px 2px rgba(38,38,36,.03);padding:20px 22px;margin:0 0 16px;min-width:0}
.qf-ui .tool-shell main>form>fieldset>legend{float:left;width:100%;padding:0;margin:0 0 12px;font-size:17px;font-weight:600}.qf-ui .tool-shell main>form>fieldset>legend+*{clear:both}
.qf-ui .tool-shell main>section:not(.panel):empty{display:none}
.qf-ui .tool-shell main .step{border-radius:999px;background:#edf1f3;color:#3f6c86}
@media(max-width:700px){.qf-ui .tool-shell main>section:not(.panel),.qf-ui .tool-shell main>form>fieldset{padding:16px}.qf-ui .tool-shell main>section:not(.panel) :is(label,.qf-picker,input,select,textarea){max-width:100%;min-width:0}}
@media(prefers-contrast:more){.qf-ui .tool-shell main>section:not(.panel),.qf-ui .tool-shell main>form>fieldset{border-color:var(--qf-ink-3)}}
/* the icons of the figures at the head of a page of its own (2026-10-30 evening; shell.js puts them in): as the workplace's */
.qf-ui .shell main :is(.summary>article,.sr-stats>.sr-stat,.metrics>article)>span:first-child{display:flex;align-items:center;gap:8px}
.qf-ui .shell main .stat-badge.sk-icon{display:inline-flex;align-items:center;justify-content:center;flex:none;width:30px;height:30px;margin:0;border-radius:9px;grid-row:auto}
.qf-ui .shell main .stat-badge.sk-icon svg{width:16px;height:16px}
.qf-ui .stat-badge-grey{background:#f1f0ec;color:#5f5d58}
@media(max-width:700px){.qf-ui .shell main .stat-badge.sk-icon{width:26px;height:26px;border-radius:8px}.qf-ui .shell main .stat-badge.sk-icon svg{width:14px;height:14px}}
/* 第五批（2026-10-31，“三组都做，先出效果图”）：A 坏的和怪的；B 页头一套；C 控件两档高度、手机可点区。
   参照：Tabler 的 page-header（小标题＋标题＋右侧操作）；GitHub Primer、Ant Design 的控件高度只用几档（常规 40、表格里 32）；
   WCAG 2.2 的 2.5.8（可点区至少 24px，手机上我们取 40）。 */
/* A1 内容少的页面，手机上左栏不再被拉高（编制资料与源强曾高 258px，logo 挤到中间） */
@media(max-width:700px){.qf-ui .shell{grid-template-rows:auto 1fr;align-content:start}}
/* A3 公示管理：使用方法挪进标题行后，原来的位置不再留白 */
.qf-ui .shell.pub-shell .pub-tools:empty{display:none}
/* A2 水平衡图工具条：按钮靠左挨着排；主按钮和别处一样是圆角方形 */
.qf-ui .tool-shell .toolbar{justify-content:flex-start;flex-wrap:wrap;gap:8px}
.qf-ui #save,.qf-ui #check{border-radius:10px}
/* B 页头：电脑上标题在左、使用方法和操作在右（原样）；手机上标题一律靠左，使用方法同一行在右，操作另起一行铺满 */
@media(max-width:700px){
 .qf-ui :is(main,.main) .heading{flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:flex-start;gap:12px;text-align:left}
 .qf-ui :is(main,.main) .heading>:first-child{flex:1 1 0;min-width:0;text-align:left}
 .qf-ui :is(main,.main) .heading>.qf-usage{order:0;margin-left:auto;align-self:flex-end;flex:none}
 .qf-ui :is(main,.main) .heading>.qf-usage>ol{left:auto;right:0;max-width:calc(100vw - 32px)}
 .qf-ui :is(main,.main) .heading>:not(:first-child):not(.qf-usage){order:2;flex:1 1 auto}
 .qf-ui :is(main,.main) .heading>:is(button,.button,a.button):not(:first-child){flex:1 1 0;justify-content:center;text-align:center;min-height:44px}
 .qf-ui :is(main,.main) .heading:has(>:not(:first-child):not(.qf-usage))::after{content:"";order:1;flex-basis:100%;height:0;margin:-6px 0}
}
/* C 控件高度：电脑上按钮、输入框、下拉统一 40px（原来 38／40／42 三种），只在电脑宽度；手机仍是原来的 44px；圆角照旧（胶囊形的小按钮不动） */
@media(min-width:701px){
 .qf-ui button,.qf-ui .main button,.qf-ui dialog button{min-height:40px}
 .qf-ui input:not([type=checkbox]):not([type=radio]),.qf-ui select,.qf-ui textarea{min-height:40px}
 .qf-ui .toolbar input:not([type=checkbox]):not([type=radio]):not([type=file]),.qf-ui .toolbar select,.qf-ui .toolbar button,.qf-ui .filters input:not([type=checkbox]):not([type=radio]):not([type=file]),.qf-ui .filters select,.qf-ui .filters button,.qf-ui .control-row input:not([type=checkbox]):not([type=radio]):not([type=file]),.qf-ui .control-row select,.qf-ui .control-row button,.qf-ui .main .project-filters input,.qf-ui .main .project-filters select,.qf-ui .main>.actions>button,.qf-ui .main>.actions>.more-actions>summary{height:40px;min-height:40px}
 .qf-ui .heading>.qf-usage>summary,.qf-ui .topbar~main:not(.main) .heading>.qf-usage>summary{min-height:40px}
 /* 本来就小巧的：经营看板红灯黄灯、后台设置的上移下移，照旧 */
 .qf-ui .main .dash-health button,.qf-ui .sort-moves button{min-height:0}
}
/* 二级标题一档：17px 粗 600（原来 15／16.5／17／18 混用；概览卡片标题另有规则保留） */
.qf-ui main h2{font-size:17px;font-weight:600}
/* C 手机：能点的地方至少 40px 高；文字链接样子不变，只把可点范围上下加大（行内链接加上下内边距，块状小按钮用 ::after 向外扩，和进度条节点同一办法） */
@media(max-width:700px){
 .qf-ui .shell main :is(.pay-file,.test-file)>:is(button,.file-preview-button){min-height:40px;padding:0 10px}
 .qf-ui #customer-results .row-acts button.quiet{min-height:40px;padding:0 12px}
 .qf-ui main :is(.pay-file,.test-file) a,.qf-ui main .heading>a:not(.button){padding-block:10px}
 .qf-ui .main a.dash-link{padding-block:10px}
 .qf-ui .main button.dash-link,.qf-ui .project-facts .fact-link,.qf-ui .main .note-head button.quiet{position:relative}
 .qf-ui .main button.dash-link::after,.qf-ui .project-facts .fact-link::after,.qf-ui .main .note-head button.quiet::after{content:"";position:absolute;inset:-9px -4px}
 .qf-ui .main small a,.qf-ui .main li>a{padding-block:12px}   /* li>a: a file in a reference case's list (seen 10-31, 15px) */
 .qf-ui main :is(.sr-note,.sr-name){padding-block:12px}
 .qf-ui .tool-shell main :is(li,.muted,.actions)>a{padding-block:10px}
 .qf-ui .finance-todo .todo-acts a{padding-block:10px}
 .qf-ui .finance-todo .todo-plan{min-height:40px}
 .qf-ui .main .dash-health button{min-height:40px}
}

/* 勾选框可点范围（2026-10-31，界面体检的已知待改；负责人“两条都按这个做”）：表格里单独的勾选框包一层 label.tick（检测报价、年度检测台账、
   后台设置的权限分配和项目类型、项目台账的批量选择），参照 GitHub Primer 的表单，整块都能点。全站 label input 的 margin-top 会落到框上，所以框的外边距交给 label
   （原样 3 3 3 4，检测报价、项目台账是 0），排版一像素不变；手机上 label 四周各加 11px 可点、再用负外边距收回。后台设置“勾选框＋文字”的开关，
   手机上文字的 label 往左盖住勾选框，一起点。电脑不变。 */
.qf-ui label.tick{display:inline-flex;vertical-align:baseline;margin:3px 3px 3px 4px;padding:0;cursor:pointer}
.qf-ui label.tick>input{margin:0}
.qf-ui :is(.price-table .pick,.main .pick) label.tick{margin:0}
.qf-ui :is(.settings-permissions,.settings-kinds) td label.tick,.qf-ui .main .pick label.tick{vertical-align:middle}
@media(max-width:700px){
 .qf-ui label.tick{padding:11px;margin:-8px -8px -8px -7px}
 .qf-ui :is(.price-table .pick,.main .pick) label.tick{margin:-11px}
 .qf-ui .settings-check label{padding:11px 4px 11px 28px;margin:-11px -4px -11px -28px}
}

/* 最后两处折叠条（2026-10-31，界面体检的已知待改；负责人“按这个做”）：项目台账的“列设置”26px、工作概览的“需要关注”31px，手机上可点范围
   用 ::after 上下外扩到 40 以上，样子和位置不动，和看板小按钮、进度条节点一个办法。电脑不变。 */
@media(max-width:700px){
 .qf-ui .col-pick summary,.qf-ui .studio-attention summary{position:relative}
 .qf-ui .col-pick summary::after{content:"";position:absolute;inset:-7px 0}
 .qf-ui .studio-attention summary::after{content:"";position:absolute;inset:-5px 0}
}

/* 行内次要操作收进“···”（2026-10-31，负责人“做第1条和第3条，先出效果图”→“按这个做”）：details.more-menu 一个按钮一个菜单，参照 GitHub Primer
   的 ActionMenu；开关、单开、点外面关、Esc 关在 table-cards.js。客户档案留“编辑档案”，对账单、合并收进去；经营看板留“登记收款”，开票台账收进去。 */
.qf-ui details.more-menu{display:inline-block;position:relative;margin:0;vertical-align:middle}
.qf-ui details.more-menu>summary{list-style:none;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;min-width:40px;min-height:40px;padding:0 8px;border:1px solid #d8d5ce;border-radius:8px;background:#fff;color:#5f5d58;font-weight:700;letter-spacing:1px;font-size:14px;line-height:1}
.qf-ui details.more-menu>summary::-webkit-details-marker{display:none}
.qf-ui details.more-menu[open]>summary{background:#f1f0ec}
.qf-ui details.more-menu>.menu{position:absolute;right:0;top:calc(100% + 4px);z-index:30;background:#fff;border:1px solid #d8d5ce;border-radius:10px;box-shadow:0 8px 24px #26262426;padding:6px;display:grid;min-width:9rem}
.qf-ui details.more-menu>.menu>:is(button,a){display:block;width:100%;text-align:left;border:0;background:none;padding:8px 12px;min-height:40px;border-radius:6px;font-size:14px;font-weight:500;color:#262624;text-decoration:none;white-space:nowrap}
.qf-ui details.more-menu>.menu>:is(button,a):hover{background:#f1f0ec}
.qf-ui .finance-actions .row-actions,.qf-ui .row-acts{display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap}

/* 手机表格改卡片（同一天，第1条）：.table-wrap.cards 的表在手机上一行一张卡，列名由 table-cards.js 写进 data-label；第一格是标题，勾选框
   在右上，客户档案的操作（card-acts）也在右上；电脑上仍是表格。项目台账、人员负荷、客户档案、开票台账、年度检测台账、知识库。 */
@media(max-width:700px){
 .qf-ui .table-wrap.cards{overflow:visible}
 .qf-ui .table-wrap.cards table{width:100%;min-width:0;border-collapse:separate;border-spacing:0}
 .qf-ui .table-wrap.cards table,.qf-ui .table-wrap.cards tbody,.qf-ui .table-wrap.cards tr,.qf-ui .table-wrap.cards td{display:block}
 .qf-ui .table-wrap.cards thead{display:none}
 .qf-ui .table-wrap.cards tr{position:relative;border:1px solid #e7e5e0;border-radius:12px;padding:10px 14px;margin:0 0 10px;background:#fff}
 .qf-ui .table-wrap.cards td{padding:3px 0;border:0;width:auto;min-width:0;max-width:none;white-space:normal;text-align:left;vertical-align:top}
 .qf-ui .table-wrap.cards td[data-label]::before{content:attr(data-label);display:inline-block;min-width:6.5em;color:var(--qf-ink-3);font-size:12px;margin-right:6px;vertical-align:top}
 .qf-ui .table-wrap.cards td.card-lead{padding:0 44px 6px 0;font-size:15px}
 .qf-ui .table-wrap.cards td.card-lead .title{white-space:normal;text-align:left}
 .qf-ui .table-wrap.cards td.pick,.qf-ui .table-wrap.cards td.card-pick,.qf-ui .table-wrap.cards td.card-acts{position:absolute;right:10px;top:8px;padding:0;width:auto}
 .qf-ui .table-wrap.cards tr:has(>td.card-acts) td.card-lead{padding-right:136px}   /* room for 编辑档案 and ··· (seen 10-31: a long name under the buttons) */
 .qf-ui .table-wrap.cards td.row-go{display:none}
 .qf-ui .table-wrap.cards td:empty{display:none}
 .qf-ui .table-wrap.cards .progress-cell{display:inline-flex;align-items:center;gap:6px;vertical-align:middle}
}

/* 手机上的小字（2026-11-01，负责人“按建议继续完善到位”；人员负荷 39 处、工作概览 12 处小于 12px）：最小 12px。电脑不变。 */
@media(max-width:700px){
 .qf-ui .load-table .cal-chip,.qf-ui .studio-gaps .gap-row .ac-chip,.qf-ui .studio-tasks .row-end small,.qf-ui .studio-tasks h2 span,.qf-ui .studio-gaps .gap-row small{font-size:12px}
}
/* 手机长页面默认折叠（同一天）：table-cards.js 把多出的行、组藏起来，按钮“展开其余 N 行”照经营财务“展开其余 N 个”的样子。 */
@media(max-width:700px){
 .qf-ui .fold-hidden{display:none!important}
 .qf-ui .fold-more{display:inline-flex;align-items:center;gap:8px;min-height:40px;padding:2px 4px;margin:4px 0 0;border:0;background:none;box-shadow:none;font:inherit;font-size:13px;color:#3f6c86}
 .qf-ui .fold-more .chev{width:7px;height:7px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(45deg) translateY(-2px)}
}
@media(min-width:701px){.qf-ui .fold-more{display:none}}

/* 第六批（2026-11-01，负责人“三条都做，先出效果图”→“按这个做”）：带边框的按钮一个样——10px 圆角、一种边框灰、14px 字；电脑上一排控件 40px
   （原来工具栏、页头、多选筛选、表格操作、项目类型表、文件按钮是 42，待办页签、行内链接按钮 38），手机仍 44。文字按钮、胶囊、日历块、看板小按钮各有各的样子，不动。 */
.qf-ui :is(main,.main,dialog) :is(button:not([class]),button.primary,.button-link,label.pick-button),.qf-ui .toolbar button,.qf-ui .main>.actions>button{border-radius:10px;font-size:14px}
.qf-ui :is(main,.main,dialog) :is(button:not([class]),.button-link,label.pick-button),.qf-ui .toolbar button:not(.primary),.qf-ui .main>.actions>button:not(.primary){border-color:#d8d5ce}
@media(min-width:701px){
 .qf-ui .toolbar input:not([type=checkbox]):not([type=radio]):not([type=file]),.qf-ui .toolbar select,.qf-ui .toolbar button,.qf-ui .filters input:not([type=checkbox]):not([type=radio]):not([type=file]),.qf-ui .filters select,.qf-ui .filters button,.qf-ui .main>.actions>button,.qf-ui .main>.actions>.more-actions>summary,.qf-ui .settings-kinds td :is(input:not([type=checkbox]),button),.qf-ui label.pick-button,.qf-ui .todo-tabs button,.qf-ui .heading button,.qf-ui .mp-btn,.qf-ui td.acts button,.qf-ui .row-actions .button-link,.qf-ui td>.button-link{height:40px;min-height:40px}
}
/* 第七批：点表头排序 (2026-11-01, 负责人 "按建议执行") */
.qf-ui th.sort-th{cursor:pointer;user-select:none;white-space:nowrap}
.qf-ui th.sort-th:hover{color:var(--qf-ink)}
.qf-ui th.sort-th[aria-sort=ascending]::after{content:" ▲";font-size:10px}
.qf-ui th.sort-th[aria-sort=descending]::after{content:" ▼";font-size:10px}
@media(max-width:700px){.qf-ui .table-wrap.cards th.sort-th{display:none}}
/* 第八批：项目台账列宽、页内目录、全部展开 (2026-11-01, 负责人 "按建议执行") */
@media(min-width:701px){
 /* 项目台账 at 1440 (measured 2026-11-01): the table ran 158px past its box and every name took 3 lines in 270px; the node, type and handler
    columns wrap instead and the name gets 26rem — no sideways scroll, 22 of 39 names on 2 lines, rows 77 → 67px */
 .qf-ui #project-results td.project-name-cell{width:26rem;min-width:26rem;max-width:none}
 .qf-ui #project-results :is(td,th).col-node{white-space:normal;max-width:12rem;overflow-wrap:anywhere}
 .qf-ui #project-results :is(td,th).col-kind{white-space:normal;max-width:8rem}
 .qf-ui #project-results :is(td,th).col-owner{white-space:normal;max-width:5rem}
}
.qf-ui nav.page-toc{position:sticky;top:0;z-index:5;display:flex;gap:4px;flex-wrap:wrap;margin:-8px 0 20px;padding:8px 0;background:var(--qf-bg,#f3f2ef);border-bottom:1px solid var(--qf-line,#e7e5e0)}
.qf-ui nav.page-toc a{display:inline-flex;align-items:center;min-height:32px;padding:0 12px;border-radius:16px;color:var(--qf-ink-2,#5f5d58);font-size:13px;text-decoration:none;white-space:nowrap}
.qf-ui nav.page-toc a:hover{background:#edf1f3;color:var(--qf-ink)}
.qf-ui nav.page-toc a.on{background:var(--qf-accent,#325a71);color:#fff}
@media(max-width:700px){.qf-ui nav.page-toc{flex-wrap:nowrap;overflow-x:auto;margin:0 0 16px}.qf-ui nav.page-toc a{min-height:36px}}
.qf-ui .panel button.fold-all{float:right;margin:-2px 0 0 12px;min-height:32px;padding:0 12px;border:1px solid var(--qf-line-2,#d8d5ce);border-radius:10px;background:#fff;color:var(--qf-ink-2,#5f5d58);font-size:13px}
.qf-ui .panel button.fold-all:hover{background:#edf1f3;color:var(--qf-ink)}
/* 第九批：左栏当前项竖条、检测台账钱的状态 (2026-11-01, 负责人 "都做") */
.qf-ui .sidebar .nav-links button.active,.qf-ui .sidebar .nav-links a.active{background:#f3f2ef;color:var(--qf-ink,#262624);box-shadow:inset 3px 0 0 var(--qf-accent,#325a71);border-radius:0 8px 8px 0}
.qf-ui .sidebar .nav-group{margin:0 0 10px}
.qf-ui .money-state{display:inline-block;margin-top:8px;padding:3px 8px;border-radius:4px;font-size:12px;line-height:1.4;background:#e7e5e0;color:var(--qf-ink-2,#5f5d58);white-space:nowrap}
.qf-ui .money-state.none{background:#f8eceb;color:var(--qf-red,#ad3f3b)}
.qf-ui .money-state.owed{background:#f7f0e2;color:var(--qf-amber,#7f5a1a)}
.qf-ui .money-state.paid{background:#e9f2ec;color:#3f7a55}
/* 第十批：我的待办里“查看用章申请 →”手机上可点范围 (2026-11-02, 体检在有用章待审时量到 18px; 同第五批的 44) */
@media(max-width:700px){.qf-ui .main section.panel>a.button{display:inline-flex;align-items:center;min-height:44px;padding:0 14px}}
/* 铃铛只列还没办的 (2026-11-02, 负责人 "按这个做"): a row read is folded below 已办结 N 条 until 显示 is asked */
.qf-ui .bell-panel .bell-row.done{display:none}
.qf-ui .bell-panel.show-done .bell-row.done{display:grid}
.qf-ui .bell-panel .bell-foot{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 16px;border-top:1px solid #eeede9;font-size:13px;color:var(--qf-ink-2,#5f5d58)}
.qf-ui .bell-panel .bell-foot .bell-done{background:none;border:0;padding:0;min-height:0;font-size:13px;color:var(--qf-accent,#3f6c86);cursor:pointer}
@media(max-width:700px){.qf-ui .bell-panel .bell-foot .bell-done{min-height:44px;padding:0 8px}}
