/* 2026-10 type and color system. Loads after every other stylesheet; screen only, print and exported reports unchanged.
   Sizes: 12 caption · 13 secondary · 14 controls/tables · 15 body · 17 card title · 20 section · 26 page title.
   Text: ink / ink-2 / ink-3 (ink-3 #6f6c66 since 2026-11-01: 5.2:1 on white, the old #8d8a83 was 3.45; amber #7f5a1a for the same reason).
   One accent (青枫蓝) plus red, amber, green for states. */
@media screen{
 :root:has(body.qf-ui){
  --qf-bg:#f7f7f5;--qf-card:#fff;--qf-soft:#f3f2ef;--qf-line:#e7e5e0;--qf-line-2:#d8d5ce;
  --qf-ink:#262624;--qf-ink-2:#5f5d58;--qf-ink-3:#6f6c66;
  --qf-accent:#3f6c86;--qf-accent-hover:#325a71;--qf-accent-soft:#edf1f3;
  --qf-red:#ad3f3b;--qf-red-soft:#f8eceb;--qf-amber:#7f5a1a;--qf-amber-soft:#f7f0e2;--qf-green:#3b7553;--qf-green-soft:#ebf3ee;
  --ink:var(--qf-ink);--muted:var(--qf-ink-2);--accent:var(--qf-accent);--line:var(--qf-line);--surface:var(--qf-bg);
  font-size:15px
 }
 body.qf-ui{
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Segoe UI","Microsoft YaHei",sans-serif;
  font-size:15px;line-height:1.65;color:var(--qf-ink);background:var(--qf-bg);
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
  --form-ink:var(--qf-ink);--form-muted:var(--qf-ink-3);--form-line:var(--qf-line-2);--form-line-hover:#b9b5ac;
  --form-focus:var(--qf-accent);--form-focus-ring:#dde7ed;--form-soft:var(--qf-soft)
 }

 /* Headings and text levels */
 .qf-ui h1,.qf-ui h2,.qf-ui h3{color:var(--qf-ink);letter-spacing:-.01em}
 .qf-ui h1,.qf-ui .main .heading h1{font-size:26px;font-weight:600;line-height:1.35}
 .qf-ui h2{font-size:18px;font-weight:600;line-height:1.45}
 .qf-ui h3{font-size:15px;font-weight:600;line-height:1.5}
 .qf-ui p{line-height:1.65}
 .qf-ui .muted,.qf-ui .heading p,.qf-ui .main .heading p{color:var(--qf-ink-2);font-size:14px;line-height:1.6}
 .qf-ui small{font-size:12px;line-height:1.5;color:var(--qf-ink-3)}
 .qf-ui strong{font-weight:600}
 .qf-ui a{color:var(--qf-accent)}

 /* Sidebar and top bar */
 .qf-ui .sidebar{background:var(--qf-card);border-right-color:var(--qf-line);color:var(--qf-ink-2)}
 .qf-ui .sidebar .nav-group-title,.qf-ui .sidebar details.nav-group>summary{color:var(--qf-ink-3);font-size:12px;font-weight:500;letter-spacing:.02em}
 .qf-ui .sidebar .nav-links button,.qf-ui .sidebar .nav-links .publication-nav{color:var(--qf-ink-2);font-size:14px;font-weight:400}
 .qf-ui .sidebar .nav-links button:hover,.qf-ui .sidebar .nav-links .publication-nav:hover{background:var(--qf-soft);color:var(--qf-ink)}
 .qf-ui .sidebar .nav-links button.active{background:var(--qf-accent-soft);color:var(--qf-accent);font-weight:500}
 .qf-ui .sidebar .bottom,.qf-ui .sidebar .bottom a{color:var(--qf-ink-3)}
 .qf-ui .sidebar .nav-system,.qf-ui .sidebar .bottom{border-color:var(--qf-line)}
 .qf-ui .topbar{background:var(--qf-card);border-bottom-color:var(--qf-line)}
 .qf-ui .topbar>span:first-child{color:var(--qf-ink-3);font-size:13px}
 .qf-ui .topbar .qf-security-entry{color:var(--qf-ink-3);font-size:13px}
 .qf-ui .account-menu>summary{color:var(--qf-ink-2);font-size:13px}

 /* Cards */
 .qf-ui .main .panel,.qf-ui .main .stat,.qf-ui .studio-focus,.qf-ui .studio-tasks,.qf-ui .studio-tools>a{background:var(--qf-card);border-color:var(--qf-line);box-shadow:none}
 .qf-ui .stat span{color:var(--qf-ink-2);font-size:13px}
 .qf-ui .main .stat strong{color:var(--qf-ink);font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:-.01em}
 .qf-ui .panel-title h2{font-size:17px}
 .qf-ui .section-kicker{color:var(--qf-ink-3);font-size:13px;letter-spacing:0}

 /* Tables */
 .qf-ui th,.qf-ui .main th{background:#fafaf8;color:var(--qf-ink-3);font-size:12px;font-weight:500;letter-spacing:.02em}
 .qf-ui td{font-size:14px;color:var(--qf-ink);font-variant-numeric:tabular-nums}
 .qf-ui .table-wrap td,.qf-ui td,.qf-ui th{border-color:var(--qf-line)}
 .qf-ui td .title{color:var(--qf-ink);font-weight:500}
 .qf-ui td .title:hover{color:var(--qf-accent)}
 .qf-ui td small,.qf-ui .progress-cell small{color:var(--qf-ink-3)}
 .qf-ui .progress-bar,.qf-ui .progress-bar::-webkit-progress-bar{background:#ebe9e4}
 .qf-ui .progress-bar::-webkit-progress-value{background:var(--qf-accent)}
 .qf-ui .progress-bar::-moz-progress-bar{background:var(--qf-accent)}

 /* Status tags */
 .qf-ui .pill{font-size:12px;font-weight:500;border-radius:6px;padding:3px 8px;background:var(--qf-soft);color:var(--qf-ink-2)}
 .qf-ui .pill.active,.qf-ui .pill.working{background:var(--qf-accent-soft);color:var(--qf-accent)}
 .qf-ui .pill.paused,.qf-ui .pill.review{background:var(--qf-amber-soft);color:var(--qf-amber)}
 .qf-ui .pill.terminated{background:var(--qf-red-soft);color:var(--qf-red)}
 .qf-ui .pill.archived,.qf-ui .pill.done{background:var(--qf-green-soft);color:var(--qf-green)}
 .qf-ui .overdue,.qf-ui td.overdue{color:var(--qf-red)}

 /* Buttons and fields */
 .qf-ui button.primary:not(:disabled),.qf-ui button.iw-primary:not(:disabled){background:var(--qf-accent);border-color:var(--qf-accent);color:#fff;font-weight:500}
 .qf-ui button.primary:not(:disabled):hover,.qf-ui button.iw-primary:not(:disabled):hover{background:var(--qf-accent-hover);border-color:var(--qf-accent-hover)}
 .qf-ui button.danger{color:var(--qf-red)}
 .qf-ui label,.qf-ui .main label,.qf-ui dialog label{color:var(--qf-ink-2);font-size:13px;font-weight:500}
 .qf-ui :is(input,select,textarea){font-weight:400}
 /* Where a file dragged over from the computer may be dropped (file-drop.js): outlined only while one is over the window, filled where it is over the place itself. */
 .qf-ui .qf-drop-ready{outline:1.5px dashed var(--qf-accent);outline-offset:3px;border-radius:8px}
 .qf-ui .qf-drop-over{outline-style:solid;background-color:var(--qf-accent-soft)}
 /* What a box that takes several files holds (file-drop.js): one to a line just under it - the name cut short where long, its size, 移除 in small words. */
 .qf-ui .qf-picked{display:grid;gap:2px;margin:-10px 0 14px;font-size:13px;line-height:1.6;color:var(--qf-ink-2);min-width:0}
 .qf-ui .qf-picked-file{display:flex;align-items:baseline;gap:8px;min-width:0}
 .qf-ui .qf-picked-file span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
 .qf-ui .qf-picked-file small{flex:none;font-size:12px;color:var(--qf-ink-3)}
 .qf-ui .qf-picked .qf-picked-file>button{flex:none;min-height:0;height:auto;margin:0;padding:0;border:0;background:none;box-shadow:none;font-size:12px;font-weight:400;line-height:1.6;color:var(--qf-red);cursor:pointer}
 /* The small window that 上传合同 and the like open (file-drop.js): a file box in sight, as the window of 上传成果 has, with 取消 and 上传. */
 .qf-ui dialog.qf-pick{width:min(460px,calc(100vw - 24px));box-sizing:border-box;padding:24px;border:1px solid var(--qf-line-2);border-radius:18px;background:var(--qf-card);color:var(--qf-ink)}
 .qf-ui dialog.qf-pick::backdrop{background:rgb(38 38 36 / .24)}
 .qf-ui dialog.qf-pick h2{margin:0 0 16px;font-size:20px;color:var(--qf-ink)}
 .qf-ui dialog.qf-pick label{display:flex;flex-direction:column;gap:8px}
 .qf-ui dialog.qf-pick input[type=file]{width:100%;max-width:100%}
 .qf-ui dialog.qf-pick .actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}
 /* A dropdown is drawn by the page itself. Left to the system, the browsers of Apple's make (Safari, and the one inside WeCom on a Mac) draw theirs
    some 22px high whatever height is asked, beside fields of 42. The mark at its right is the two halves of a small triangle, made of color alone:
    the page's policy lets in no picture but the site's own files. The four :not() match the weight of the rule of fields in form-design.css. */
 .qf-ui select:not([multiple]):not([size]):not([type=file]):not([type=hidden]){-webkit-appearance:none;appearance:none;padding-right:32px!important;background-image:linear-gradient(45deg,transparent 50%,var(--qf-ink-2) 50%),linear-gradient(135deg,var(--qf-ink-2) 50%,transparent 50%);background-position:right 16px center,right 11px center;background-size:5px 5px;background-repeat:no-repeat}
 .qf-ui :is(input,textarea)::placeholder{color:#a9a69f}
 .qf-ui .more-actions>summary,.qf-ui .button-link{border-color:var(--qf-line-2);color:var(--qf-ink)}
 .qf-ui .quiet,.qf-ui summary{color:var(--qf-accent)}
 .qf-ui .task-tabs{background:var(--qf-soft)}
 .qf-ui .task-tabs button{color:var(--qf-ink-2)}
 .qf-ui .task-tabs button[aria-pressed=true]{color:var(--qf-ink);font-weight:500}

 /* Overview */
 .qf-ui .studio-greeting h1{font-size:30px;font-weight:600;letter-spacing:-.02em}
 .qf-ui .studio-greeting mark{background:transparent;color:var(--qf-ink);padding:0}
 .qf-ui .main .studio-greeting>p{color:var(--qf-ink-3);font-size:20px;font-weight:400}
 .qf-ui .studio-date{color:var(--qf-ink-3);font-size:13px}
 .qf-ui .studio-search{border-color:var(--qf-line);box-shadow:0 1px 3px #2626240a,0 6px 20px #26262408}
 .qf-ui .studio-search>svg{color:var(--qf-ink-3)}
 .qf-ui .studio-search input::placeholder{color:#a9a69f}
 .qf-ui .main .studio-search button{background:var(--qf-soft);color:var(--qf-ink-2)}
 .qf-ui .studio-note{background:#fcfbf6;border-color:#eeeadf;box-shadow:none;transform:none}
 .qf-ui .studio-note h2,.qf-ui .studio-focus h2,.qf-ui .studio-tasks h2{color:var(--qf-ink);font-size:15px;font-weight:600}
 .qf-ui .studio-tools small{color:var(--qf-ink-3);font-size:12px}
 .qf-ui .studio-tools strong{color:var(--qf-ink);font-size:15px;font-weight:500}
 .qf-ui .studio-tools>a:hover{background:#fcfcfb;border-color:var(--qf-line-2)}
 .qf-ui .studio-status>button{color:var(--qf-ink-2);font-size:14px}
 .qf-ui .studio-status strong{color:var(--qf-ink);font-weight:600}
 .qf-ui .studio-attention{color:var(--qf-ink-2);font-size:14px;border-color:var(--qf-line)}
 .qf-ui .studio-empty,.qf-ui .row-context{color:var(--qf-ink-3)}
 .qf-ui .work-row strong{color:var(--qf-ink);font-size:15px;font-weight:500}
 .qf-ui .row-context{font-size:13px}
 .qf-ui .work-row{border-color:var(--qf-line)}
 .qf-ui .work-row:hover{background:#fafaf8}

 /* Project detail */
 .qf-ui .project-meta{color:var(--qf-ink-2);font-size:14px}
 .qf-ui .summary-fields span{color:var(--qf-ink-3);font-size:13px}
 .qf-ui .summary-fields strong{color:var(--qf-ink);font-size:16px;font-weight:500;font-variant-numeric:tabular-nums}
 .qf-ui .node-number{background:var(--qf-soft);color:var(--qf-ink-2)}
 .qf-ui .node p,.qf-ui .compact-node>summary{color:var(--qf-ink-2)}
 .qf-ui .node-head h3{color:var(--qf-ink)}
 .qf-ui .compact-node>summary,.qf-ui .node{border-color:var(--qf-line)}
 .qf-ui .finance-figure{background:var(--qf-soft)}
 .qf-ui .finance-figure small{color:var(--qf-ink-3)}
 .qf-ui .finance-figure strong{color:var(--qf-ink);font-variant-numeric:tabular-nums}
 .qf-ui .finance-invoice{color:var(--qf-ink-2)}
 .qf-ui .submission,.qf-ui .node-input{background:#fafaf8;border-color:var(--qf-line)}
 .qf-ui .alert{background:var(--qf-amber-soft);color:#6f5021}

 /* Dialogs and menus */
 .qf-ui dialog{border-color:var(--qf-line);box-shadow:0 24px 64px #2626241f}
 .qf-ui dialog::backdrop{background:rgb(38 38 36 / 28%)}
 .qf-ui dialog form>h2,.qf-ui dialog h2{font-size:20px;font-weight:600}
 .qf-ui .account-menu-list,.qf-ui .more-actions-list,.qf-ui .qf-picker-list{border-color:var(--qf-line);box-shadow:0 12px 32px #2626241a}
 .qf-ui .account-menu-list button,.qf-ui .more-actions-list button,.qf-ui .qf-picker-list button{color:var(--qf-ink)}
 .qf-ui .account-menu-list button:hover,.qf-ui .more-actions-list button:hover,.qf-ui .qf-picker-list button:hover,.qf-ui .qf-picker-list button[aria-selected=true]{background:var(--qf-soft)}
 .qf-ui .qf-picker-list button small,.qf-ui .qf-picker-list p{color:var(--qf-ink-3)}

 /* Account security heading keeps one line; the member filter takes the remaining width */
 .qf-ui .security-section-heading h2{flex-shrink:0;white-space:nowrap}

 /* Publication admin shares the public site's stylesheet, so its internal skin is overridden here */
 body.qf-ui.internal-publication-manage{background:var(--qf-bg);color:var(--qf-ink);--ink:var(--qf-ink);--blue:var(--qf-accent);--line:var(--qf-line);--muted:var(--qf-ink-2)}
 body.qf-ui.internal-publication-manage h1{color:var(--qf-ink);font-weight:600}
 body.qf-ui.internal-publication-manage button{background:var(--qf-accent);border-color:var(--qf-accent);color:#fff}
 body.qf-ui.internal-publication-manage button.secondary{background:var(--qf-card);color:var(--qf-accent);border-color:var(--qf-line-2)}
 body.qf-ui.internal-publication-manage :is(.notice,.correction){background:var(--qf-accent-soft)}
 body.qf-ui.internal-publication-manage :is(article,.pub-row,.filters){border-color:var(--qf-line)}
 body.qf-ui.internal-publication-manage fieldset{background:#fafaf8}
 body.qf-ui.internal-publication-manage .pub-header{border-color:var(--qf-line)}

 /* Phone tab bar */
 .qf-ui .tabbar{border-top-color:var(--qf-line)}
 .qf-ui .tabbar button,.qf-ui .tabbar a{color:var(--qf-ink-3)}
 .qf-ui .tabbar .active{color:var(--qf-accent);background:var(--qf-accent-soft)}
 .qf-ui .sidebar .nav-toggle{background:var(--qf-soft);color:var(--qf-ink)}
}
@media screen and (max-width:700px){
 .qf-ui h1,.qf-ui .main .heading h1{font-size:23px}
 .qf-ui .studio-greeting h1{font-size:25px}
 .qf-ui .main .studio-greeting>p{font-size:18px}
}
@media screen and (prefers-contrast:more){
 :root:has(body.qf-ui){--qf-ink-2:#3f3d39;--qf-ink-3:#55524c;--qf-line:#9c988f;--qf-line-2:#77736b}
}

/* Corners in four steps (2026-10-17, style A "温润纸感", of the research: the pages' corners went 8 to 26, as if made by several hands):
   6 a tag · 10 a control, a table's frame · 14 a card, a panel, a figure · 18 a dialog. A card lying on the page has no shadow, a line
   only (above); a menu and a dialog keep theirs. Only the look: sizes, heights and layout are as they were. */
@media screen{
 :root:has(body.qf-ui){--qf-r-tag:6px;--qf-r-control:10px;--qf-r-card:14px;--qf-r-dialog:18px}
 .qf-ui .panel,.qf-ui .main .panel,.qf-ui .stat,.qf-ui .main .stat,.qf-ui .summary article,.qf-ui .summary .todo-card,.qf-ui .studio-focus,.qf-ui .studio-tasks,.qf-ui .studio-note,.qf-ui .studio-tools>a,.qf-ui .estimate-sums article{border-radius:var(--qf-r-card)}
 .qf-ui dialog,.qf-ui dialog.qf-pick{border-radius:var(--qf-r-dialog)}
 .qf-ui .pill,.qf-ui .badge{border-radius:var(--qf-r-tag)}
 .qf-ui .table-wrap{border-radius:var(--qf-r-control)}   /* the buttons keep their own (9, and the round ones round) */
}
