/* 提案批复页——仓库设计 token(index.css)的独立投影:本工具不进 app,不共享构建链,
   token 值随仓库主题演进时手动同步(轻量取舍,工具定位) */
:root{
  --bg:#fafafb; --fg:#18181b; --card:#ffffff; --secondary:#f4f4f5;
  --muted-fg:#52525b; --muted-fg-subtle:rgba(82,82,91,.6); --muted-fg-faint:rgba(82,82,91,.4);
  --border:#d4d4d8; --border-soft:rgba(212,212,216,.6); --border-faint:rgba(212,212,216,.4);
  --amber:#d97706; --amber-text:#b45309; --amber-soft:rgba(217,119,6,.08); --amber-soft-strong:rgba(217,119,6,.12);
  --amber-fg:#fff; --success:#16a34a; --success-soft:rgba(22,163,74,.08);
  --destructive:#dc2626; --destructive-soft:rgba(220,38,38,.06);
  --r-2xs:4px; --r-xs:6px; --r-sm:8px; --r-md:10px; --r-lg:12px;
  --font-body:-apple-system,BlinkMacSystemFont,"SF Pro Text","Helvetica Neue",sans-serif;
  --font-mono:"JetBrains Mono",ui-monospace,"SF Mono",Menlo,monospace;
}
:root{
  --c-gap:#2563eb; --c-gap-soft:rgba(37,99,235,.09);
  --c-polish:#7c3aed; --c-polish-soft:rgba(124,58,237,.09);
  --c-simp:#0d9488; --c-simp-soft:rgba(13,148,136,.09);
  --c-debt:#b45309; --c-debt-soft:rgba(180,83,9,.10);
  --c-new:#e11d48; --c-new-soft:rgba(225,29,72,.08);
  --c-misc:#71717a; --c-misc-soft:rgba(113,113,122,.10);
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{background:var(--bg);color:var(--fg);font-family:var(--font-body);font-size:14px}
button{font-family:inherit;cursor:pointer}
#app{height:100vh;display:flex;flex-direction:column;padding:14px 18px 16px;gap:0}

/* 顶栏 */
.pg-h{display:flex;align-items:center;gap:10px;flex:none}
.pg-h h1{font-size:16px;font-weight:650;letter-spacing:-.01em}
.pg-h .sub{font-size:12px;color:var(--muted-fg-subtle)}
.pipe{display:flex;gap:8px;flex:none;margin:12px 0 10px;flex-wrap:wrap}
.pseg{display:flex;align-items:center;gap:8px;padding:7px 12px;border:1px solid var(--border-soft);border-radius:var(--r-md);background:var(--card);font-size:12.5px;color:var(--muted-fg)}
button.pseg{cursor:pointer;font-family:inherit}
button.pseg:hover{border-color:var(--border)}
.pseg b{font-size:14px;font-weight:700;color:var(--fg);font-variant-numeric:tabular-nums}
/* tab 只有两态:未激活白底、激活实心琥珀(页面主强调色);关注段有待办仅计数标琥珀(alert) */
.pseg.alert b{color:var(--amber-text)}
.pseg.on{background:var(--amber);border-color:var(--amber);color:var(--amber-fg);font-weight:600}
.pseg.on,.pseg.on b{color:var(--amber-fg)}
.pseg.on .warn{color:rgba(255,255,255,.85)}
.pseg .warn{color:var(--amber-text);font-size:11.5px}
.pipe .tail{margin-left:auto;display:flex;align-items:center;gap:5px;font-size:12px;color:var(--muted-fg-subtle);background:none;border:none;cursor:pointer;font-family:inherit;padding:7px 10px;border-radius:var(--r-md)}
.pipe .tail:hover{color:var(--muted-fg);background:var(--card);border:1px solid var(--border-faint)}
.pipe .tail b{font-variant-numeric:tabular-nums;font-size:12.5px}
.degraded{display:none;margin:0 0 10px;padding:7px 12px;border:1px solid rgba(217,119,6,.35);background:var(--amber-soft);border-radius:var(--r-md);font-size:12.5px;color:var(--amber-text)}
.degraded.on{display:block}

/* 过滤条 */
.fl{display:flex;gap:6px;flex:none;margin-bottom:12px;align-items:center;flex-wrap:wrap}
/* hidden 属性要压过上面的 display:flex(UA 的 [hidden]{display:none} 输给类选择器)——搜索框只在已完成 tab 显形靠它 */
.fl[hidden]{display:none}
.fchip{font-size:12px;padding:4px 10px;border-radius:999px;border:1px solid var(--border-faint);color:var(--muted-fg);background:var(--card);display:flex;align-items:center;gap:6px}
.fchip i{width:7px;height:7px;border-radius:999px;display:inline-block}
.fchip .c{color:var(--muted-fg-faint);font-variant-numeric:tabular-nums}
.fchip.on{border-color:var(--border);color:var(--fg);background:var(--secondary);font-weight:600}
.fchip:hover{border-color:var(--border)}
.fl .ops{margin-left:auto;display:flex;gap:8px}

/* 双栏 */
.duo{flex:1;min-height:0;display:flex;gap:14px}

/* 队列 */
.queue{width:340px;flex:none;border:1px solid var(--border-soft);border-radius:var(--r-lg);background:var(--card);display:flex;flex-direction:column;overflow:hidden;box-shadow:0 1px 3px rgba(0,0,0,.06)}
.qlist{flex:1;overflow-y:auto}
.qi{padding:9px 12px 9px 14px;border-bottom:1px solid var(--border-faint);display:flex;flex-direction:column;gap:3px;position:relative;cursor:pointer}
.qi:hover{background:var(--secondary)}
.qi .t{font-size:12.5px;font-weight:600;color:var(--fg);line-height:1.4;display:flex;align-items:center;gap:7px}
.qi .t .nm{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qi .s{font-size:11.5px;color:var(--muted-fg-subtle);line-height:1.45;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.qdot{flex:none;width:7px;height:7px;border-radius:999px}
.qi.on{background:var(--amber-soft)}
.qi.on::before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:3px;border-radius:0 3px 3px 0;background:var(--amber)}
.qtag{flex:none;font-size:10px;font-weight:600;color:var(--amber-text);background:var(--amber-soft);border-radius:var(--r-2xs);padding:1px 5px;letter-spacing:.02em}
.qtag.ok{color:var(--success);background:var(--success-soft)}
.qtag.done{color:var(--muted-fg);background:var(--secondary)}
.qcheck{flex:none;width:15px;height:15px;border-radius:var(--r-2xs);border:1.5px solid var(--border);display:flex;align-items:center;justify-content:center;color:#fff;font-size:10px}
.qi.checked .qcheck{background:var(--amber);border-color:var(--amber)}
.qfoot{border-top:1px solid var(--border-faint);padding:6px 12px;font-size:11px;color:var(--muted-fg-faint);display:flex;justify-content:flex-end;background:var(--card)}

/* 详情 */
.detail{flex:1;min-width:0;border:1px solid var(--border-soft);border-radius:var(--r-lg);background:var(--card);display:flex;flex-direction:column;box-shadow:0 1px 3px rgba(0,0,0,.06);overflow:hidden}
.dh{padding:14px 18px 12px;border-bottom:1px solid var(--border-faint)}
.dht{display:flex;align-items:flex-start;gap:10px}
.dht h2{font-size:15.5px;font-weight:650;letter-spacing:-.01em;line-height:1.4;flex:1;min-width:0}
.cp{flex:none;font-size:11px;font-weight:600;color:var(--muted-fg);border:1px solid var(--border-faint);background:var(--bg);border-radius:var(--r-xs);padding:3px 9px;cursor:pointer;margin-top:1px}
.cp:hover{color:var(--fg);border-color:var(--border)}
/* 窄屏返回键(#back-queue,app.js 详情头常驻渲染):桌面藏,文末窄屏媒体查询里显 */
.dh .back{display:none}
.mchips{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px}
.mchip{font-size:11.5px;color:var(--muted-fg);border:1px solid var(--border-faint);border-radius:var(--r-xs);padding:2px 8px;display:flex;align-items:center;gap:6px;background:var(--bg)}
.mchip i{width:7px;height:7px;border-radius:999px;display:inline-block}
.mchip code{font-family:var(--font-mono);font-size:10.5px;color:var(--muted-fg)}
.dbody{flex:1;min-height:0;overflow-y:auto;padding:14px 18px 10px}

/* 整文渲染正文(html 由服务端 markdown-it 渲染下发;段头 `##` → h3,呈小节标签样) */
.doc{display:flex;flex-direction:column;gap:12px}
.doc h3{font-size:11px;font-weight:700;letter-spacing:.08em;color:var(--muted-fg-subtle)}
.doc h4{font-size:12.5px;font-weight:650;color:var(--fg)}
.doc h5{font-size:12px;font-weight:600;color:var(--muted-fg)}
.doc p{font-size:12.5px;line-height:1.66;color:var(--muted-fg)}
.doc li{margin:2px 0 2px 18px;list-style:disc;font-size:12.5px;line-height:1.66;color:var(--muted-fg)}
.doc li::marker{color:var(--muted-fg-faint)}
.doc ol li{list-style:decimal}
.doc ul ul,.doc ol ol,.doc ul ol,.doc ol ul{margin:2px 0}
.doc code{font-family:var(--font-mono);font-size:11px;background:var(--secondary);border-radius:var(--r-2xs);padding:1px 4px;color:var(--fg)}
.doc strong{color:var(--fg)}
.doc a{color:var(--fg);text-decoration:underline;text-decoration-color:var(--border);text-underline-offset:3px}
.doc blockquote{margin:0;padding:2px 0 2px 12px;border-left:2px solid var(--border);color:var(--muted-fg)}
.doc blockquote p{margin:0}
.doc hr{border:none;border-top:1px solid var(--border-faint)}
/* fenced code:块级代码容器,内部 code 退回行内胶囊底色 */
.doc pre{background:var(--secondary);border:1px solid var(--border-faint);border-radius:var(--r-sm);padding:10px 12px;overflow-x:auto}
.doc pre code{background:none;border-radius:0;padding:0;line-height:1.6}
/* GFM 表格 */
.doc table{border-collapse:collapse;font-size:12px;max-width:100%;display:block;overflow-x:auto}
.doc th,.doc td{border:1px solid var(--border-faint);padding:5px 9px;text-align:left;vertical-align:top}
.doc th{background:var(--secondary);font-weight:600;color:var(--fg);white-space:nowrap}
.doc td{color:var(--muted-fg);line-height:1.6}
.doc img.demo-img{display:block;max-width:100%;border:1px solid var(--border-soft);border-radius:var(--r-md);margin:6px 0 2px;background:var(--bg)}

/* 「开发细则」默认折叠:页面在渲染后 DOM 上把该段包进 details */
.doc details{border:1px dashed var(--border);border-radius:var(--r-md);padding:2px 13px;display:flex;flex-direction:column;gap:10px}
.doc details[open]{border-style:solid;border-color:var(--border-soft)}
.doc summary{cursor:pointer;list-style:none;display:flex;align-items:center;gap:9px;font-size:12.5px;color:var(--muted-fg);padding:7px 0}
.doc summary::-webkit-details-marker{display:none}
.doc summary::before{content:"▸";font-size:10px;color:var(--muted-fg-faint)}
.doc details[open] summary::before{content:"▾"}
.doc summary b{color:var(--fg);font-weight:600}
.doc summary .hint{font-size:11px;color:var(--muted-fg-faint)}

/* 已完成 tab:搜索框(静态元素防重渲染丢焦点)与按日分组头 */
.search{font-size:12px;border:1px solid var(--border);border-radius:999px;padding:5px 13px;color:var(--fg);background:var(--card);outline:none;width:280px;font-family:inherit}
.search:focus{border-color:var(--amber)}
.qdate{padding:8px 12px 6px;font-size:10.5px;font-weight:700;letter-spacing:.06em;color:var(--muted-fg-faint);font-variant-numeric:tabular-nums;border-bottom:1px solid var(--border-faint);background:var(--bg);position:sticky;top:0;z-index:1}

/* 动作条 */
.acts{flex:none;border-top:1px solid var(--border-faint);padding:11px 18px;display:flex;align-items:center;gap:10px;background:var(--card)}
.keys{display:flex;align-items:center;gap:8px;font-size:11.5px;color:var(--muted-fg-subtle)}
.keys .sep{color:var(--border)}
.kbd{font-family:var(--font-mono);font-size:10.5px;color:var(--fg);background:var(--secondary);border:1px solid var(--border-soft);border-bottom-width:2px;border-radius:var(--r-2xs);padding:1px 5px}
.acts .sp{flex:1}
.btn{font-size:13px;font-weight:600;border-radius:var(--r-sm);padding:8px 18px;display:inline-flex;align-items:center;gap:8px;border:1px solid transparent}
.btn .kbd{background:rgba(255,255,255,.55);border-color:rgba(0,0,0,.12);color:inherit}
.btn:disabled{opacity:.5;cursor:default}
.b-rej{border-color:var(--border);color:var(--destructive);background:var(--card)}
.b-rej:hover:not(:disabled){background:var(--destructive-soft)}
.b-note{border-color:var(--border);color:var(--muted-fg);background:var(--card)}
.b-note:hover{background:var(--secondary);color:var(--fg)}
.b-shelve{border-color:var(--border);color:var(--amber-text);background:var(--card)}
.b-shelve:hover{background:var(--amber-soft)}
.b-appr{background:var(--success);color:#fff}
.b-appr:hover:not(:disabled){filter:brightness(1.05)}
.b-ghost{font-size:12.5px;font-weight:600;color:var(--muted-fg);background:transparent;border:none;padding:8px 10px}
.b-ghost:hover{color:var(--fg)}
.b-cancel{font-size:12.5px;font-weight:600;color:var(--muted-fg);border:1px solid var(--border);background:var(--card);border-radius:var(--r-sm);padding:7px 13px}
.b-dk{font-size:12.5px;font-weight:600;background:var(--destructive);color:#fff;border-radius:var(--r-sm);padding:7px 15px;display:inline-flex;gap:7px;align-items:center}
.b-dk:hover{filter:brightness(1.05)}

/* 弹层与 toast */
.overlay{position:fixed;inset:0;background:rgba(24,24,27,.32);z-index:40;display:flex;align-items:center;justify-content:center}
.pop{width:480px;max-width:calc(100vw - 48px);max-height:calc(100vh - 96px);overflow-y:auto;background:var(--card);border:1px solid var(--border-soft);border-radius:var(--r-lg);box-shadow:0 16px 48px rgba(0,0,0,.22);padding:16px 18px}
.pop.wide{width:720px}

/* 否决账本表 */
.rtable{margin-top:12px;border:1px solid var(--border-faint);border-radius:var(--r-sm);overflow:hidden;max-height:60vh;overflow-y:auto}
.rrow{display:grid;grid-template-columns:84px 1fr 1.4fr;gap:10px;padding:8px 12px;font-size:12px;line-height:1.5;border-bottom:1px solid var(--border-faint);background:var(--card)}
.rrow:last-child{border-bottom:none}
.rrow .rd{color:var(--muted-fg-faint);font-variant-numeric:tabular-nums;font-size:11px;padding-top:1px}
.rrow .re{color:var(--fg);font-weight:600;word-break:break-word}
.rrow .rr{color:var(--muted-fg);word-break:break-word}
.pop h3{font-size:13.5px;font-weight:650;display:flex;align-items:center;gap:8px}
.pop h3 .cat{font-size:10.5px;font-weight:600;padding:1px 7px;border-radius:var(--r-2xs)}
.pop h3 .tt{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pop .lb{font-size:11.5px;font-weight:600;color:var(--muted-fg);margin:13px 0 6px}
.pop input[type=text]{width:100%;border:1px solid var(--border);border-radius:var(--r-sm);padding:8px 11px;font-size:12.5px;color:var(--fg);font-family:inherit;line-height:1.5;background:var(--bg);outline:none}
.pop input[type=text]:focus{border-color:var(--amber)}
.pop textarea{width:100%;border:1px solid var(--border);border-radius:var(--r-sm);padding:8px 11px;font-size:12.5px;color:var(--fg);font-family:inherit;line-height:1.6;background:var(--bg);outline:none;resize:vertical}
.pop textarea:focus{border-color:var(--amber)}
.lk2{font-size:11px;font-weight:600;color:var(--amber-text);background:none;border:none;padding:0 2px;cursor:pointer}
.lk2:hover{text-decoration:underline}
.ledger{margin-top:10px;border:1px solid var(--border-faint);border-radius:var(--r-sm);background:var(--secondary);padding:8px 11px}
.ledger .lt{font-size:10.5px;font-weight:700;letter-spacing:.06em;color:var(--muted-fg-subtle);display:flex;align-items:center;gap:6px;margin-bottom:5px}
.ledger .row{font-family:var(--font-mono);font-size:10.5px;line-height:1.7;color:var(--muted-fg);word-break:break-all}
.ledger .row em{font-style:normal;color:var(--fg)}
.popbtns{display:flex;align-items:center;gap:8px;margin-top:14px}
.popbtns .b-dk{margin-left:auto}
.pop .ft{font-size:11px;color:var(--muted-fg-faint);margin-top:10px;line-height:1.6}
.plist{margin-top:6px;border:1px solid var(--border-faint);border-radius:var(--r-sm);background:var(--bg);max-height:200px;overflow-y:auto}
.plist li{list-style:none;padding:6px 11px;font-size:12px;border-bottom:1px solid var(--border-faint);color:var(--muted-fg);display:flex;gap:8px;align-items:center}
.plist li:last-child{border-bottom:none}
.toast{position:fixed;top:16px;left:50%;transform:translateX(-50%);z-index:50;background:var(--card);border:1px solid var(--border-soft);border-radius:var(--r-md);box-shadow:0 8px 28px rgba(0,0,0,.16);padding:9px 8px 9px 14px;display:flex;align-items:center;gap:12px;font-size:12.5px;color:var(--fg);max-width:calc(100vw - 48px)}
.toast .msg{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.toast .undo{font-size:12.5px;font-weight:600;color:var(--amber-text);background:var(--amber-soft);border:none;border-radius:var(--r-sm);padding:4px 12px}
.toast .undo:hover{background:var(--amber-soft-strong)}
.toast .tbar{position:absolute;left:0;bottom:0;height:2px;background:var(--amber);border-radius:0 0 0 var(--r-md);animation:tshrink linear forwards}
@keyframes tshrink{from{width:100%}to{width:0}}

/* 空态 */
.empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:0 44px;gap:0}
.empty .ok{width:58px;height:58px;border-radius:999px;background:var(--success-soft);color:var(--success);font-size:26px;display:flex;align-items:center;justify-content:center;margin-bottom:16px}
.empty h3{font-size:16px;font-weight:650}
.empty .st{font-size:12.5px;color:var(--muted-fg);margin-top:7px}
.empty .card2{margin-top:22px;border:1px solid var(--border-soft);border-radius:var(--r-md);padding:12px 18px;font-size:12px;color:var(--muted-fg);line-height:1.7;background:var(--bg)}

/* 批量底条 */
.batch-acts{display:flex;gap:10px;padding:12px 16px;border-top:1px solid var(--border-faint);background:var(--bg)}
.b-bulk{flex:1;text-align:center;font-size:12.5px;font-weight:600;border-radius:var(--r-sm);padding:8px 0}
.bulk-appr{border:1px solid transparent;background:var(--success);color:#fff}
.bulk-appr:disabled{opacity:.5}
.bulk-rej{border:1px solid var(--border);color:var(--destructive);background:var(--card)}
.bulk-rej:disabled{opacity:.5}
.batch-h{display:flex;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid var(--border-faint);font-size:12.5px;color:var(--muted-fg);flex:none}
.batch-h b{font-weight:650;color:var(--fg)}
.batch-h .n{color:var(--amber-text);font-weight:650}
.batch-h .x{margin-left:auto;font-size:12px;color:var(--muted-fg-subtle);border:1px solid var(--border-faint);border-radius:var(--r-xs);padding:3px 9px;background:var(--card)}

/* ── 窄屏(≤720px,手机竖屏)形态:视口切换式 master-detail ────────────────────
   body.detail-open 是唯一视图态(app.js 用户手势挂/清):缺省 = 队列全屏、详情
   隐藏;开类 = 队列隐藏、详情全屏。桌面规则区唯一增量是 .dh .back 的缺省隐藏;
   #app 的 100dvh 在不支持的浏览器回落既有 100vh(声明级联淘汰) */
@media (max-width:720px){
	#app{height:100dvh;padding:10px 12px 12px}
	/* 六段 tab 与过滤行各横滑一行:不折行、不收缩、不显滚动条(截断即滚动暗示) */
	.pipe{flex-wrap:nowrap;overflow-x:auto;margin:8px 0;scrollbar-width:none}
	.pipe::-webkit-scrollbar{display:none}
	.pseg{flex:none;white-space:nowrap;padding:9px 12px}
	.pipe .tail{flex:none;white-space:nowrap;padding:9px 10px}
	.fl{flex-wrap:nowrap;overflow-x:auto;margin-bottom:8px;scrollbar-width:none}
	.fl::-webkit-scrollbar{display:none}
	.fchip{flex:none}
	/* iOS Safari 对 <16px 字号的输入聚焦会自动放大视口——窄屏输入统一 16px */
	.search{width:100%;font-size:16px}
	.duo{flex-direction:column;gap:10px}
	.queue{width:auto;flex:1;min-height:0}
	.detail{display:none}
	body.detail-open .fl{display:none}
	body.detail-open .queue{display:none}
	body.detail-open .detail{display:flex}
	.dh{padding:4px 14px 10px}
	.dh .back{display:flex;align-items:center;min-height:44px;margin:0 0 2px -8px;padding:6px 14px 6px 6px;font-size:15px;font-weight:600;color:var(--fg);background:none;border:none}
	.dbody{padding:12px 14px 8px}
	/* 动作条吸底(detail 列尾,结构既有):按钮均分、触控 ≥44px、底部让位 home 指示条 */
	.acts{gap:8px;padding:10px 12px calc(10px + env(safe-area-inset-bottom))}
	.acts .btn{flex:1;min-width:0;min-height:44px;justify-content:center;padding:10px 12px}
	.acts .sp{display:none}
	.keys{display:none}
	.qi{padding:11px 12px 11px 14px}
	.batch-acts{padding:12px 12px calc(12px + env(safe-area-inset-bottom))}
	.b-bulk{min-height:44px}
	.overlay{padding:12px}
	.pop{width:100%;max-width:none;max-height:calc(100dvh - 24px)}
	.pop.wide{width:100%}
	.pop input[type=text],.pop textarea{font-size:16px}
	.popbtns{flex-wrap:wrap}
	.popbtns>button{min-height:44px}
	/* 否决账本行:日期+本质一行,理由跨行 */
	.rrow{grid-template-columns:auto 1fr;gap:2px 10px;padding:9px 12px}
	.rrow .rr{grid-column:1/-1}
	.toast .undo{padding:10px 14px}
}
