/* 需求追溯页（web/onto-req.js，.rq-）。配色沿用 style.css 的变量。 */
.rq-root{display:flex;flex-direction:column;gap:10px;min-width:0;font-size:13px;color:var(--ink)}
.rq-root *:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.rq-top{display:flex;flex-direction:column;gap:6px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:var(--panel2)}
.rq-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}
.rq-spacer{flex:1}
.rq-cnt b{font-size:15px}
.rq-muted{color:var(--muted);font-size:12px}
.rq-warn{color:var(--warn);font-size:12px;font-weight:600}
.rq-btn{display:inline-flex;align-items:center;padding:6px 12px;border:1px solid var(--accent);border-radius:7px;background:var(--accent);color:#fff;cursor:pointer;text-decoration:none;min-height:34px;white-space:nowrap}
.rq-btn.ghost{background:var(--panel);color:var(--ink);border-color:var(--line)}
.rq-tabs{display:flex;gap:4px;flex-wrap:wrap}
.rq-tab{min-height:30px;padding:4px 12px;background:var(--panel);border:1px solid var(--line);border-radius:6px}
.rq-tab-on,.rq-tab-on:hover{background:var(--ink);color:#fff;border-color:var(--ink)}
.rq-msg{padding:6px 10px;border-radius:6px;border:1px solid var(--line);background:var(--panel)}
.rq-msg-err{border-color:var(--err);color:var(--err)}
.rq-msg-warn{border-color:var(--warn);color:var(--warn)}
.rq-msg-ok{border-color:var(--ok);color:var(--ok)}
.rq-card{border:1px solid var(--line);border-radius:8px;background:var(--panel);padding:10px 12px;min-width:0}
.rq-card h3{margin:0 0 8px;font-size:15px}
.rq-card h4{margin:12px 0 6px;font-size:13px}
.rq-preview{border-color:var(--accent);background:var(--accent-soft)}
.rq-ul{margin:4px 0;padding-left:18px}
.rq-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.rq-grid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:12px;align-items:start;min-width:0}
.rq-left{display:flex;flex-direction:column;gap:8px}
.rq-right{position:sticky;top:60px;max-height:calc(100vh - 80px);overflow:auto}
.rq-filters{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.rq-filters input,.rq-filters select,.rq-form select,.rq-form input,.rq-form textarea,.rq-table input,.rq-table select{padding:4px 6px;border:1px solid var(--line);border-radius:6px;background:#fff;max-width:100%}
.rq-filters input[type=search]{min-width:200px;flex:1}
.rq-tablewrap{overflow:auto;max-height:calc(100vh - 260px)}
.rq-table{width:100%;border-collapse:collapse;font-size:12.5px}
.rq-table th{position:sticky;top:0;background:var(--panel2);text-align:left;font-weight:600;padding:5px 6px;border-bottom:1px solid var(--line)}
.rq-table td{padding:5px 6px;border-bottom:1px solid var(--line2);vertical-align:top}
.rq-tr{cursor:pointer}
.rq-tr:hover{background:var(--panel2)}
.rq-tr-on,.rq-tr-on:hover{background:var(--accent-soft)}
.rq-id{white-space:nowrap;font-family:var(--mono);font-size:11.5px}
.rq-code{font-family:var(--mono);font-size:11.5px}
.rq-chip{display:inline-block;margin:0 4px 2px 0;padding:1px 7px;border:1px solid var(--line);border-radius:10px;background:var(--panel);font-size:11.5px;min-height:0;cursor:default}
button.rq-chip{cursor:pointer}
.rq-chips{display:flex;flex-wrap:wrap;gap:4px;margin:6px 0}
.rq-chip-on{background:var(--accent-soft);border-color:var(--accent);color:var(--accent);font-weight:600}
.rq-b{display:inline-block;padding:0 6px;border-radius:4px;font-size:11.5px;border:1px solid var(--line);background:var(--panel2);white-space:nowrap}
.rq-b-ok,.rq-b-confirmed{color:var(--ok);border-color:var(--ok)}
.rq-b-ext{color:var(--muted)}
.rq-b-tbc,.rq-b-proposed{color:var(--warn);border-color:var(--warn)}
.rq-b-rejected{color:var(--muted);text-decoration:line-through}
.rq-b-cS,.rq-b-cA{color:var(--ok);border-color:var(--ok)}
.rq-b-cE{color:var(--muted)}
.rq-b-cX,.rq-b-cN,.rq-b-cD{color:var(--warn);border-color:var(--warn)}
.rq-b-cu{color:var(--err);border-color:var(--err)}
.rq-diff{color:var(--err);font-size:11.5px}
.rq-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--warn);vertical-align:middle}
.rq-f{display:grid;grid-template-columns:96px minmax(0,1fr);gap:8px;padding:4px 0;border-bottom:1px solid var(--line2)}
.rq-fk{color:var(--muted);font-size:12px}
.rq-objs{margin:6px 0}
.rq-cmp{display:flex;flex-direction:column;gap:2px;padding:6px 8px;border:1px dashed var(--line);border-radius:6px}
.rq-reason{margin:6px 0;color:var(--ink)}
.rq-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:8px;border:1px solid var(--line);border-radius:8px;background:var(--panel2)}
.rq-form label{display:flex;flex-direction:column;gap:2px;font-size:12px;color:var(--muted)}
.rq-form .rq-wide,.rq-form .rq-actions,.rq-form > .rq-muted{grid-column:1 / -1}
.rq-a{border:0;background:none;padding:0;min-height:0;color:var(--accent);cursor:pointer;text-decoration:underline;font-size:12px}
.rq-cov td:first-child{min-width:240px}
.rq-cov td:nth-child(2){white-space:nowrap}
.rq-bar{display:inline-block;width:80px;height:6px;border-radius:3px;background:var(--line2);vertical-align:middle;overflow:hidden}
.rq-bar span{display:block;height:100%;background:var(--accent)}
@media (max-width:1100px){.rq-grid{grid-template-columns:minmax(0,1fr)}.rq-right{position:static;max-height:none}}
.rq-b-llm{color:var(--accent);border-color:var(--accent)}
.rq-sysgrid{grid-template-columns:minmax(0,0.75fr) minmax(0,1.25fr)}
.rq-map{max-height:620px}
.rq-map{width:100%;height:auto;border:1px solid var(--line2);border-radius:8px;background:var(--panel2)}
.rq-map .rq-edge line{stroke:var(--tan);fill:none}
.rq-map .rq-edge .rq-hit{stroke:transparent;stroke-width:14px;cursor:pointer}
.rq-map .rq-edge text{font-size:11px;fill:var(--muted);text-anchor:middle;pointer-events:none}
.rq-map .rq-edge:hover line:first-child,.rq-map .rq-edge-on line:first-child{stroke:var(--accent)}
.rq-map .rq-edge:focus-visible{outline:none}
.rq-map .rq-edge:focus-visible line:first-child{stroke:var(--accent)}
.rq-map .rq-node rect{fill:var(--panel);stroke:var(--line);stroke-width:1.5px}
.rq-map .rq-node text{font-size:12.5px;fill:var(--ink);text-anchor:middle;pointer-events:none}
.rq-map .rq-node .rq-nsub{font-size:10px;fill:var(--muted)}
.rq-map .rq-n-sap rect{fill:var(--accent-soft);stroke:var(--accent)}
.rq-map .rq-n-replaced rect{fill:var(--accent-soft);stroke:var(--accent);stroke-dasharray:5 3}
.rq-map .rq-n-external rect{fill:var(--panel)}
.rq-map .rq-n-tbd rect{stroke:var(--warn);stroke-dasharray:3 3}
.rq-edgepanel h4:first-child{margin-top:0}
.rq-table td input{width:100%;margin-bottom:2px}
.rq-areas td:first-child{min-width:200px}.rq-areas td:nth-child(2){min-width:260px}.rq-areas td:nth-child(3){min-width:160px}
/* 第三期：公司库链接失效、实施进度、开发清单、条目卡片上的需求引用角标（角标也用在公司库页和工作台卡片上，不在 .rq-root 里） */
.rq-b-broken{color:var(--err);border-color:var(--err)}
.rq-b-dev{font-family:var(--mono);min-width:18px;text-align:center;color:var(--accent);border-color:var(--accent)}
.rq-warnbtn{min-height:0;padding:1px 8px;border:1px solid var(--err);border-radius:6px;background:var(--panel);color:var(--err);font-size:12px;font-weight:600;cursor:pointer}
.rq-stage{margin-top:2px;font-size:11.5px;color:var(--ok)}
.rq-stageform select,.rq-stageform input{padding:4px 6px;border:1px solid var(--line);border-radius:6px;background:#fff;max-width:100%}
.rq-stageform input{flex:1;min-width:180px}
.rq-dev td:nth-child(2){min-width:220px}
.rq-clip{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.rq-refbadge{min-height:0;padding:1px 8px;border:1px solid var(--accent);border-radius:10px;background:var(--accent-soft);color:var(--accent);font-size:12px;cursor:pointer}
.rq-reflist{margin:4px 0 0;padding-left:18px;font-size:12.5px;max-height:220px;overflow:auto}
.rq-reflist li{margin:1px 0}
