.rd-module { padding: 18px; background: #f4f7fb; min-height: 100%; }
.rd-module small { font-size:13px; }
.rd-hero { display: flex; align-items: center; justify-content: space-between; gap: 24px; padding: 24px 28px; border: 1px solid #cfe9df; border-radius: 16px; background: linear-gradient(120deg, #f2fcf8, #eef6ff); }
.rd-hero span { color: #168a68; font-size:13px; font-weight: 800; letter-spacing: .12em; }
.rd-hero h2 { margin: 7px 0 5px; font-size: 26px; color: #17352f; }
.rd-hero p { margin: 0; color: #60736e; }
.rd-tabs { display: flex; gap: 7px; margin: 16px 0; padding: 7px; overflow-x: auto; border: 1px solid #dce5ee; border-radius: 12px; background: #fff; }
.rd-tabs button { flex: 0 0 auto; padding: 9px 15px; border: 0; border-radius: 8px; color: #526579; background: transparent; cursor: pointer; }
.rd-tabs button.active { color: #fff; background: #178f6b; box-shadow: 0 5px 12px rgba(23, 143, 107, .18); }
.rd-metrics { display: grid; grid-template-columns: repeat(6, minmax(130px, 1fr)); gap: 12px; }
.rd-metrics article { position: relative; overflow: hidden; padding: 18px; border: 1px solid #dce6ef; border-radius: 12px; background: #fff; }
.rd-metrics article::after { content: ""; position: absolute; right: -22px; bottom: -28px; width: 75px; height: 75px; border-radius: 50%; background: #e2f6ef; }
.rd-metrics span { display: block; color: #718096; font-size: 13px; }
.rd-metrics strong { display: block; margin-top: 7px; color: #193d34; font-size: 28px; }
.rd-work-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-top: 14px; }
.rd-work-list { padding: 8px 18px 18px; }
.rd-work-list p { color: #84929f; font-size: 13px; }
.rd-work-list article { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 12px 0; border-bottom: 1px solid #edf1f5; }
.rd-work-list article span { color: #758493; font-size:13px; }
.rd-list-panel { overflow: hidden; }
/* 项目详情与页面标题保持紧凑衔接，避免两块内容之间出现过大的空白。 */
.rd-workspace > .rd-hero + .rd-list-panel { margin-top: 10px; }
.rd-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 14px 16px; border-bottom: 1px solid #e1e8ef; }
.rd-toolbar > div { display: flex; gap: 8px; }
.rd-view-switch { padding: 3px; border-radius: 8px; background: #edf3f7; }
.rd-view-switch button { padding: 6px 12px; border: 0; border-radius: 6px; color: #65778a; background: transparent; cursor: pointer; }
.rd-view-switch button.active { color: #167d60; background: #fff; box-shadow: 0 2px 6px rgba(24, 57, 76, .1); }
.rd-toolbar input { width: 260px; padding: 9px 11px; border: 1px solid #cfdae5; border-radius: 7px; }
.rd-query-btn { min-width: 92px; }
.data-table .rd-project-group-column { text-align: center; }
.data-table .rd-primary-column { padding-left: 24px; }
.data-table .rd-project-name-column { padding-left: 24px; }
.data-table .rd-requirement-title-column { padding-left: 24px; }
.rd-project-table-wrap { overflow-x: hidden; }
.rd-project-table-wrap .rd-project-table { width: 100%; min-width: 0; table-layout: fixed; }
.rd-project-table th, .rd-project-table td { box-sizing: border-box; padding-right: 8px; padding-left: 8px; overflow: hidden; text-overflow: ellipsis; }
.rd-project-table th:nth-child(1), .rd-project-table td:nth-child(1) { width: 33%; }
.rd-project-table th:nth-child(2), .rd-project-table td:nth-child(2) { width: 17%; }
.rd-project-table th:nth-child(3), .rd-project-table td:nth-child(3) { width: 14%; }
.rd-project-table th:nth-child(4), .rd-project-table td:nth-child(4) { width: 9%; }
.rd-project-table th:nth-child(5), .rd-project-table td:nth-child(5) { width: 9%; }
.rd-project-table th:nth-child(6), .rd-project-table td:nth-child(6) { width: 18%; }
.rd-project-table .rd-project-name-column { padding-left: 24px; }
.rd-project-table .rd-record-link { overflow: hidden; max-width: 100%; text-overflow: ellipsis; white-space: nowrap; }
.rd-project-table .rd-actions { display: table-cell; white-space: nowrap; }
.rd-project-table .rd-action-list { display: flex; align-items: center; flex-wrap: nowrap; gap: 4px; min-width: 0; }
.rd-project-table .rd-actions .link-btn { flex: 0 0 auto; padding: 0; white-space: nowrap; font-size: 13px; }
.rd-table-wrap.rd-requirement-table-wrap { overflow-x: hidden; }
.rd-requirement-table-wrap .rd-requirement-table { width: 100%; min-width: 0; table-layout: fixed; }
.rd-requirement-table th, .rd-requirement-table td { box-sizing: border-box; overflow: hidden; padding-right: 8px; padding-left: 8px; text-overflow: ellipsis; }
.rd-requirement-table th:nth-child(1), .rd-requirement-table td:nth-child(1) { width: 32%; }
.rd-requirement-table th:nth-child(2), .rd-requirement-table td:nth-child(2) { width: 24%; }
.rd-requirement-table th:nth-child(3), .rd-requirement-table td:nth-child(3) { width: 9%; }
.rd-requirement-table th:nth-child(4), .rd-requirement-table td:nth-child(4) { width: 12%; }
.rd-requirement-table th:nth-child(5), .rd-requirement-table td:nth-child(5) { width: 9%; }
.rd-requirement-table th:nth-child(6), .rd-requirement-table td:nth-child(6) { width: 14%; }
.rd-requirement-table .rd-record-link { overflow: hidden; max-width: 100%; text-overflow: ellipsis; white-space: nowrap; }
.rd-requirement-table .rd-actions { display: table-cell; white-space: nowrap; }
.rd-requirement-table .rd-action-list { align-items: center; flex-wrap: nowrap; gap: 6px; min-width: 0; }
.rd-requirement-table .rd-actions .link-btn { flex: 0 0 auto; padding: 0; white-space: nowrap; font-size: 13px; }
.rd-table-wrap.rd-product-table-wrap { overflow-x: hidden; }
.rd-product-table-wrap .rd-product-table { width: 100%; min-width: 0; table-layout: fixed; }
.rd-product-table th, .rd-product-table td { box-sizing: border-box; overflow: hidden; padding-right: 8px; padding-left: 8px; text-overflow: ellipsis; }
.rd-product-table th:nth-child(1), .rd-product-table td:nth-child(1) { width: 32%; }
.rd-product-table th:nth-child(2), .rd-product-table td:nth-child(2) { width: 16%; }
.rd-product-table th:nth-child(3), .rd-product-table td:nth-child(3) { width: 14%; }
.rd-product-table th:nth-child(4), .rd-product-table td:nth-child(4) { width: 14%; }
.rd-product-table th:nth-child(5), .rd-product-table td:nth-child(5) { width: 10%; }
.rd-product-table th:nth-child(6), .rd-product-table td:nth-child(6) { width: 14%; }
.rd-product-table .rd-record-link { overflow: hidden; max-width: 100%; text-overflow: ellipsis; white-space: nowrap; }
.rd-product-table .rd-actions { display: table-cell; white-space: nowrap; }
.rd-product-table .rd-action-list { align-items: center; flex-wrap: nowrap; gap: 6px; min-width: 0; }
.rd-product-table .rd-actions .link-btn { flex: 0 0 auto; padding: 0; white-space: nowrap; font-size: 13px; }
.rd-milestone-table-wrap { overflow-x: hidden; }
.rd-milestone-table-wrap .rd-milestone-table { width: 100%; min-width: 0; table-layout: fixed; }
.rd-milestone-table th, .rd-milestone-table td { box-sizing: border-box; overflow: hidden; padding-right: 8px; padding-left: 8px; text-overflow: ellipsis; }
.rd-milestone-table th:nth-child(1), .rd-milestone-table td:nth-child(1) { width: 23%; }
.rd-milestone-table th:nth-child(2), .rd-milestone-table td:nth-child(2) { width: 16%; }
.rd-milestone-table th:nth-child(3), .rd-milestone-table td:nth-child(3) { width: 11%; }
.rd-milestone-table th:nth-child(4), .rd-milestone-table td:nth-child(4) { width: 12%; }
.rd-milestone-table th:nth-child(5), .rd-milestone-table td:nth-child(5) { width: 10%; }
.rd-milestone-table th:nth-child(4), .rd-milestone-table td:nth-child(4), .rd-milestone-table th:nth-child(5), .rd-milestone-table td:nth-child(5), .rd-milestone-table th:nth-child(6), .rd-milestone-table td:nth-child(6), .rd-milestone-table th:nth-child(7), .rd-milestone-table td:nth-child(7) { text-align: center; }
.rd-milestone-table th:nth-child(6), .rd-milestone-table td:nth-child(6) { width: 10%; }
.rd-milestone-table th:nth-child(7), .rd-milestone-table td:nth-child(7) { width: 18%; }
.rd-milestone-table .rd-action-list { justify-content: center; flex-wrap: nowrap; gap: 8px; }
.rd-milestone-table .rd-complete-milestone { position: relative; margin-right: 10px; padding: 4px 9px; border: 1px solid #b8dfd0; border-radius: 6px; color: #08775c; background: #f1fbf7; font-weight: 700; }
.rd-milestone-table .rd-complete-milestone::after { position: absolute; top: 50%; right: -11px; width: 1px; height: 20px; background: #d7e7e1; content: ""; transform: translateY(-50%); }
.rd-milestone-table .rd-complete-milestone:hover:not(:disabled) { border-color: #61b99b; background: #e5f8f0; }
.rd-complete-milestone:disabled { cursor: wait; opacity: .55; }
.rd-project-picker { position: relative; min-width: 0; margin-right: auto; }
.rd-project-picker-trigger { display: flex; width: min(290px, 32vw); min-height: 38px; align-items: center; gap: 8px; padding: 7px 10px; border: 1px solid #c9dfd6; border-radius: 8px; color: #2e5549; background: #fff; cursor: pointer; font: inherit; text-align: left; }
.rd-project-picker-trigger:hover, .rd-project-picker-trigger.active { border-color: #76bfa6; background: #f2fbf7; box-shadow: 0 0 0 3px rgba(47, 158, 127, .09); }
.rd-project-picker-trigger > span { flex: 0 0 auto; padding-right: 8px; border-right: 1px solid #d8e8e2; color: #5e7c72; font-size:13px; }
.rd-project-picker-trigger strong { overflow: hidden; flex: 1; color: #25483e; font-size: 13px; font-weight: 600; text-overflow: ellipsis; white-space: nowrap; }
.rd-project-picker-trigger i { color: #4d786a; font-size: 17px; font-style: normal; line-height: 1; }
.rd-project-picker-menu { position: absolute; z-index: 60; top: calc(100% + 7px); left: 0; width: min(350px, calc(100vw - 48px)); max-height: 310px; padding: 6px; overflow: auto; box-sizing: border-box; border: 1px solid #8fc8b5; border-bottom-width: 2px; border-radius: 10px; background: #fff; box-shadow: 0 14px 30px rgba(24, 73, 57, .18); }
.rd-project-picker-menu button { display: grid; width: 100%; grid-template-columns: minmax(0, 1fr) auto; gap: 12px; align-items: center; padding: 9px 10px; border: 0; border-radius: 7px; color: #335348; text-align: left; background: transparent; cursor: pointer; font: inherit; }
.rd-project-picker-menu button:hover { background: #eff8f4; }
.rd-project-picker-menu button.active { color: #0a7455; background: #ddf2e9; }
.rd-project-picker-menu b { overflow: hidden; font-size: 13px; font-weight: 600; text-overflow: ellipsis; white-space: nowrap; }
.rd-project-picker-menu small { overflow: hidden; color: #799087; font-size:13px; text-overflow: ellipsis; white-space: nowrap; }
.rd-project-picker-menu button.active small { color: #43806d; }
.rd-project-picker-menu p { margin: 13px 10px; color: #84958f; font-size:13px; text-align: center; }
.rd-project-picker-groups, .rd-project-picker-projects { display: grid; gap: 2px; margin-top: 6px; padding-top: 7px; border-top: 1px solid #e7f0ec; }
.rd-project-picker-groups > span, .rd-project-picker-projects > span { padding: 0 10px 4px; color: #79958b; font-size:13px; font-weight: 700; letter-spacing: .05em; }
.rd-scope-cascade { display: flex; align-items: center; gap: 14px; min-width: 0; margin-left: auto; margin-right: 24px; }
.rd-scope-cascade label { display: flex; align-items: center; gap: 8px; min-width: 0; color: #627c73; font-size: 13px; font-weight: 600; white-space: nowrap; }
.rd-scope-cascade label > span { flex: 0 0 auto; }
.rd-scope-cascade select { height: 38px; padding-left: 14px; border: 1px solid #c9dfd6; border-radius: 8px; color: #294c41; background-color: #fff; font: inherit; font-size: 13px; }
.rd-scope-cascade label:first-child select { width: 150px; min-width: 150px; }
.rd-scope-cascade label:nth-child(2) select { width: 180px; min-width: 180px; }
.rd-scope-cascade select:focus { border-color: #55a98d; outline: 0; box-shadow: 0 0 0 3px rgba(47, 158, 127, .1); }
.rd-scope-cascade select:disabled { color: #a0aea8; background: #f4f7f6; cursor: not-allowed; }
.rd-toolbar-query { align-items: center; }
.rd-scope-reset { height: 38px; min-width: 76px; padding: 0 12px; color: #168260; white-space: nowrap; }
/* 项目选择菜单属于工作区浮层：父容器不能裁切，且要始终盖在列表表格之上。 */
.rd-module, .rd-shell, .rd-workspace, .rd-list-panel { overflow: visible; }
.rd-toolbar { position: relative; z-index: 20; overflow: visible; }
.rd-project-picker { z-index: 30; }
.rd-project-picker-menu { z-index: 60; }
.rd-bug-filter { margin: 0 16px 14px; border: 1px solid #d6e9e2; border-radius: 10px; background: linear-gradient(110deg, #f7fcfa, #fff); }
.rd-project-filter { margin: 12px 16px 16px; overflow: hidden; border: 1px solid #c7e3d8; border-radius: 12px; background: linear-gradient(110deg, #f2fbf7, #fff 68%); box-shadow: 0 5px 14px rgba(31, 100, 75, .05); }
.rd-project-filter-head, .rd-project-filter-footer { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 14px 16px; }
.rd-project-filter-head { border-bottom: 1px solid #dcece5; background: rgba(255, 255, 255, .5); }
.rd-project-filter-head strong { display: block; color: #285248; font-size: 16px; }
.rd-project-filter-head span { display: block; margin-top: 4px; color: #6d887e; font-size: 13px; }
.rd-project-filter-head .link-btn { padding: 6px 10px; border: 1px solid #cde4db; border-radius: 16px; color: #168260; background: #fff; cursor: pointer; font-size: 13px; }
.rd-project-filter-head .link-btn:hover { border-color: #79bfa8; background: #eff9f4; }
.rd-project-filter-fields { display: grid; grid-template-columns: repeat(5, minmax(140px, 1fr)); gap: 16px; padding: 16px; }
.rd-project-filter-fields label { display: grid; min-width: 0; gap: 7px; padding-left: 10px; border-left: 2px solid #d9eee5; color: #48665c; font-size: 13px; font-weight: 600; }
.rd-project-filter-fields label.primary-filter { border-left-color: #22a477; }
.rd-project-filter-fields label small { color: #268263; font-size:13px; font-weight: 500; }
.rd-project-filter-fields select { min-width: 0; min-height: 40px; padding: 8px 10px; border: 1px solid #c6ded4; border-radius: 7px; color: #304c44; background: #fff; font: inherit; font-size: 14px; font-weight: 400; }
.rd-project-filter-fields select:focus { border-color: #2f9e7f; outline: 0; box-shadow: 0 0 0 3px rgba(47, 158, 127, .1); }
.rd-project-filter-footer { justify-content: flex-start; gap: 5px; padding-top: 11px; padding-bottom: 12px; border-top: 1px dashed #d6e8e1; color: #5e7970; font-size: 13px; }
.rd-project-filter-footer b { margin-left: auto; color: #148360; font-size: 18px; line-height: 1; }
.rd-project-filter-footer em { color: #759088; font-size:13px; font-style: normal; }
.rd-project-view-switch { margin-left: auto; }
.rd-project-card-view { border-top: 1px solid #e4ece9; background: #f6faf8; }
.rd-project-card-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; padding: 18px 16px; }
.rd-project-overview-card { display: flex; min-width: 0; min-height: 300px; flex-direction: column; padding: 18px; border: 1px solid #d8e8e2; border-radius: 12px; background: #fff; box-shadow: 0 5px 14px rgba(31, 84, 67, .05); transition: transform .15s ease, border-color .15s ease, box-shadow .15s ease; }
.rd-project-overview-card:hover { transform: translateY(-2px); border-color: #91cbb6; box-shadow: 0 10px 24px rgba(31, 84, 67, .09); }
.rd-project-overview-card > header { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.rd-project-overview-card > header span { padding: 4px 9px; border-radius: 14px; color: #237057; background: #e4f4ed; font-size:13px; font-weight: 700; }
.rd-project-overview-card > header span.is-overdue, .rd-project-overview-card > header span.is-cancelled { color: #c0444d; background: #fcebed; }
.rd-project-overview-card > header span.is-closed { color: #647680; background: #edf1f3; }
.rd-project-overview-card > header small { overflow: hidden; color: #738981; font-size:13px; text-overflow: ellipsis; white-space: nowrap; }
.rd-project-card-title { overflow: hidden; margin-top: 15px; padding: 0; border: 0; color: #087b59; background: transparent; cursor: pointer; font: inherit; font-size: 18px; font-weight: 800; text-align: left; text-overflow: ellipsis; white-space: nowrap; }
.rd-project-card-title:hover { color: #075d46; text-decoration: underline; }
.rd-project-overview-card > p { overflow: hidden; margin: 6px 0 14px; color: #71877f; font-size:13px; text-overflow: ellipsis; white-space: nowrap; }
.rd-project-overview-card dl { display: grid; gap: 9px; margin: 0; }
.rd-project-overview-card dl div { display: grid; grid-template-columns: 64px minmax(0, 1fr); gap: 8px; font-size: 13px; }
.rd-project-overview-card dt { color: #778b84; }
.rd-project-overview-card dd { overflow: hidden; margin: 0; color: #345249; text-overflow: ellipsis; white-space: nowrap; }
.rd-project-overview-card > section { display: grid; grid-template-columns: 1fr auto; gap: 7px 12px; margin-top: auto; padding-top: 16px; color: #59736a; font-size:13px; }
.rd-project-overview-card > section b { color: #148361; font-size: 15px; }
.rd-project-overview-card > section i { grid-column: 1 / -1; height: 7px; overflow: hidden; border-radius: 7px; background: #e5efeb; }
.rd-project-overview-card > section em { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, #22a477, #61c79f); }
.rd-project-overview-card > footer { display: flex; align-items: center; gap: 9px; margin-top: 16px; padding-top: 13px; border-top: 1px solid #edf3f0; }
.rd-project-overview-card > footer .primary-btn { margin-right: auto; padding: 7px 12px; }
.rd-project-overview-card > footer .link-btn { padding: 0; font-size:13px; }
.rd-project-card-empty { grid-column: 1 / -1; padding: 42px; color: #788e86; text-align: center; }
.rd-quick-search { overflow: hidden; }
.rd-quick-search-head { display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 20px 22px; border-bottom: 1px solid #dcebe5; background: linear-gradient(110deg, #f1fbf7, #f7fbff); }
.rd-quick-search-head small { color: #168a68; font-weight: 800; letter-spacing: .1em; }
.rd-quick-search-head h3 { margin: 5px 0 4px; color: #173f35; font-size: 21px; }
.rd-quick-search-head p { margin: 0; color: #678078; font-size: 13px; }
.rd-quick-search-head > strong { flex: 0 0 auto; padding: 7px 12px; border-radius: 16px; color: #087b59; background: #dff5eb; font-size: 14px; }
.rd-quick-search-summary { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; padding: 14px 18px 0; }
.rd-quick-search-summary button { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; min-height: 62px; padding: 12px 14px; border: 1px solid #d6e8e1; border-radius: 10px; color: #44695e; background: #f9fcfb; cursor: pointer; text-align: left; }
.rd-quick-search-summary button:hover, .rd-quick-search-summary button.active { border-color: #55ae91; color: #087b59; background: #e6f6ef; box-shadow: 0 0 0 2px rgba(47, 158, 127, .08); }
.rd-quick-search-summary span { font-size: 13px; font-weight: 700; }
.rd-quick-search-summary b { color: #087b59; font-size: 24px; line-height: 1; }
.rd-quick-search-risk { display: flex; align-items: center; justify-content: space-between; gap: 18px; margin: 14px 18px 0; padding: 11px 13px; border: 1px solid #d9e8e2; border-radius: 10px; background: #fbfdfc; }
.rd-quick-search-risk.active { border-color: #e4ba76; background: #fffaf1; }
.rd-quick-search-risk > div:first-child { display: grid; gap: 3px; min-width: 0; }
.rd-quick-search-risk strong { color: #294b42; font-size: 14px; }
.rd-quick-search-risk > div:first-child span { color: #778c85; font-size: 13px; }
.rd-quick-search-risk-actions { display: flex; align-items: center; flex-wrap: wrap; justify-content: flex-end; gap: 8px; }
.rd-quick-search-risk-actions > button:not(.link-btn) { display: inline-flex; align-items: center; gap: 7px; padding: 6px 9px; border: 1px solid #dbe8e3; border-radius: 7px; color: #547168; background: #fff; cursor: pointer; }
.rd-quick-search-risk-actions > button:not(.link-btn):hover, .rd-quick-search-risk-actions > button.active { box-shadow: 0 0 0 2px rgba(47, 158, 127, .08); }
.rd-quick-search-risk-actions .risk-overdue { border-color: #efb5ac !important; color: #b6453b !important; background: #fff5f3 !important; }
.rd-quick-search-risk-actions .risk-today { border-color: #eccb91 !important; color: #a96813 !important; background: #fff9ed !important; }
.rd-quick-search-risk-actions .risk-soon { border-color: #9bcfbd !important; color: #167b5d !important; background: #f0fbf6 !important; }
.rd-quick-search-risk-actions b { font-size: 13px; }
.rd-quick-search-risk-actions span { font-size: 13px; }
.rd-quick-search-controls { display: grid; grid-template-columns: 190px 190px minmax(280px, 1fr) auto; gap: 12px; align-items: end; padding: 16px 18px 12px; }
.rd-quick-search-controls label { display: grid; gap: 6px; min-width: 0; color: #526d64; font-size: 13px; font-weight: 700; }
.rd-quick-search-controls select, .rd-quick-search-controls input { width: 100%; min-width: 0; height: 40px; box-sizing: border-box; padding: 8px 14px; border: 1px solid #c7ddd5; border-radius: 8px; color: #29483f; background-color: #fff; font: inherit; font-weight: 400; }
.rd-quick-search-controls > button { height: 40px; white-space: nowrap; }
.rd-quick-search-types { display: grid; grid-template-columns: repeat(8, minmax(78px, 1fr)); gap: 8px; padding: 0 18px 16px; }
.rd-quick-search-types button { display: flex; align-items: center; justify-content: space-between; gap: 8px; min-width: 0; padding: 8px 10px; border: 1px solid #d2e5de; border-radius: 8px; color: #537068; background: #fff; cursor: pointer; }
.rd-quick-search-types button.active { border-color: #58ad91; color: #0b7457; background: #e8f7f1; box-shadow: 0 0 0 2px rgba(47, 158, 127, .08); }
.rd-quick-search-types button span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rd-quick-search-types button b { color: #168b65; }
.rd-quick-search-table-wrap { overflow-x: hidden; border-top: 1px solid #e1ebe7; }
.rd-quick-search-table { width: 100%; min-width: 0; table-layout: fixed; }
.rd-quick-search-table th:nth-child(1), .rd-quick-search-table td:nth-child(1) { width: 7%; text-align: center; }
.rd-quick-search-table th:nth-child(2), .rd-quick-search-table td:nth-child(2) { width: 21%; }
.rd-quick-search-table th:nth-child(3), .rd-quick-search-table td:nth-child(3) { width: 16%; }
.rd-quick-search-table th:nth-child(4), .rd-quick-search-table td:nth-child(4) { width: 11%; text-align: center; }
.rd-quick-search-table th:nth-child(5), .rd-quick-search-table td:nth-child(5) { width: 13%; text-align: center; }
.rd-quick-search-table th:nth-child(6), .rd-quick-search-table td:nth-child(6) { width: 11%; }
.rd-quick-search-table th:nth-child(7), .rd-quick-search-table td:nth-child(7) { width: 10%; text-align: center; }
.rd-quick-search-table th:nth-child(8), .rd-quick-search-table td:nth-child(8) { width: 11%; text-align: center; }
.rd-quick-search-table th, .rd-quick-search-table td { overflow: hidden; box-sizing: border-box; text-overflow: ellipsis; white-space: nowrap; }
.rd-quick-search-title { color: #087b59; font-weight: 700; }
.rd-quick-search-type { display: inline-flex; padding: 3px 8px; border-radius: 12px; color: #3a6f60; background: #e7f4ef; font-size:13px; }
.rd-quick-search-relation { display: inline-flex; max-width: 100%; padding: 3px 8px; overflow: hidden; border-radius: 12px; color: #4a6f65; background: #eef6f3; font-size: 13px; text-overflow: ellipsis; white-space: nowrap; }
.rd-quick-search-deadline { display: grid; gap: 2px; justify-items: center; color: #526d64; }
.rd-quick-search-deadline b { font-size: 13px; font-weight: 600; }
.rd-quick-search-deadline small { font-size: 13px; }
.rd-quick-search-deadline.risk-overdue { color: #bd473d; }
.rd-quick-search-deadline.risk-today { color: #ab6c14; }
.rd-quick-search-deadline.risk-soon { color: #178161; }
.rd-group-project-link { color: #168260; font-weight: 600; text-decoration: none; }
.rd-bug-filter-head, .rd-bug-filter-footer { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 12px 14px; }
.rd-bug-filter-head { border-bottom: 1px solid #e5f0ec; }
.rd-bug-filter-head strong { display: block; color: #285248; font-size: 14px; }
.rd-bug-filter-head span { display: block; margin-top: 3px; color: #7a918a; font-size:13px; }
.rd-bug-filter-head .link-btn { border: 0; color: #168260; background: transparent; cursor: pointer; }
.rd-bug-filter-fields { display: grid; grid-template-columns: repeat(5, minmax(140px, 1fr)); gap: 10px; padding: 14px; }
.rd-bug-filter-fields label { display: grid; gap: 6px; min-width: 0; color: #607a72; font-size:13px; }
.rd-bug-filter-fields select { min-width: 0; padding: 8px 9px; border: 1px solid #cfdfda; border-radius: 6px; color: #304c44; background: #fff; font: inherit; }
.rd-bug-filter-fields select:focus { border-color: #2f9e7f; outline: 0; box-shadow: 0 0 0 3px rgba(47, 158, 127, .1); }
.rd-bug-filter-footer { padding-top: 0; color: #7b8e88; font-size:13px; }
.rd-bug-status-shortcuts { display: flex; flex-wrap: wrap; gap: 5px; }
.rd-bug-status-shortcuts button { padding: 5px 10px; border: 1px solid #d8e8e2; border-radius: 14px; color: #57736a; background: #fff; cursor: pointer; font-size:13px; }
.rd-bug-status-shortcuts button.active { border-color: #168b65; color: #fff; background: #168b65; }
.rd-table-section { min-width: 0; }
.rd-table-wrap { overflow: auto; }
.rd-table-wrap td { white-space: nowrap; }
.rd-action-list { display: flex; gap: 10px; }
.rd-actions .link-btn { border: 0; color: #137f61; background: transparent; cursor: pointer; }
.rd-actions .link-btn.danger { color: #d44949; }
.rd-milestone-table .rd-actions .rd-complete-milestone { margin-right: 10px; padding: 4px 9px; border: 1px solid #b8dfd0; border-radius: 6px; color: #08775c; background: #f1fbf7; }
.rd-pagination { display: flex; min-height: 58px; align-items: center; justify-content: flex-end; gap: 18px; box-sizing: border-box; padding: 10px 16px; border-top: 1px solid #e3eaf0; color: #667983; background: #fff; font-size: 13px; }
.rd-pagination > span { margin-right: auto; }
.rd-pagination label, .rd-pagination > div { display: flex; align-items: center; gap: 8px; }
.rd-pagination select, .rd-pagination button { height: 34px; box-sizing: border-box; padding: 0 11px; border: 1px solid #cfdae5; border-radius: 7px; color: #36514a; background: #fff; font: inherit; }
.rd-pagination select { appearance: none; padding-right: 32px; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M2 2l4 4 4-4' fill='none' stroke='%2336514a' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 10px center; background-size: 12px 8px; }
.rd-pagination button { cursor: pointer; }
.rd-pagination button:hover:not(:disabled) { border-color: #6fbaa2; color: #137f61; background: #f2faf7; }
.rd-pagination button:disabled { cursor: not-allowed; opacity: .45; }
.rd-pagination b { min-width: 58px; color: #25483e; text-align: center; }
.rd-task-board { display: grid; grid-template-columns: repeat(4, minmax(220px, 1fr)); gap: 12px; padding: 15px; overflow-x: auto; background: #f5f8fb; }
.rd-task-board > section { min-height: 310px; padding: 11px; border-radius: 10px; background: #eaf0f5; }
.rd-task-board > section > header { display: flex; justify-content: space-between; padding: 3px 3px 10px; }
.rd-task-board > section > header span { min-width: 22px; padding: 2px 5px; border-radius: 12px; color: #547080; text-align: center; background: #d8e4eb; }
.rd-task-board article { margin-bottom: 9px; padding: 12px; border: 1px solid #dbe4ec; border-radius: 9px; background: #fff; box-shadow: 0 3px 9px rgba(38, 68, 87, .06); }
.rd-task-board article > b, .rd-task-board article > small { display: block; }
.rd-task-board article > small { margin-top: 6px; color: #7a8996; }
.rd-task-board article footer { display: flex; justify-content: space-between; margin-top: 12px; color: #657889; font-size:13px; }
.rd-task-board section > p { color: #8a99a6; text-align: center; }
.rd-gantt { padding: 15px; overflow: auto; }
.rd-gantt-head, .rd-gantt-row { display: grid; grid-template-columns: 230px minmax(560px, 1fr); min-width: 800px; }
.rd-gantt-head { color: #6f8090; font-size:13px; }
.rd-gantt-head > span, .rd-gantt-row > strong, .rd-gantt-track { padding: 10px; border-bottom: 1px solid #e5ebf0; }
.rd-gantt-row > strong { display: flex; min-height: 58px; box-sizing: border-box; justify-content: center; flex-direction: column; gap: 4px; font-size: 13px; }
.rd-gantt-row > strong span { overflow: hidden; max-width: 100%; text-overflow: ellipsis; white-space: nowrap; }
.rd-gantt-row > strong small { color: #718393; font-size: 12px; font-weight: 400; white-space: nowrap; }
.rd-gantt-axis { position: relative; min-height: 34px; border-bottom: 1px solid #e5ebf0; background: #f8fafc; }
.rd-gantt-axis span { position: absolute; bottom: 8px; transform: translateX(-50%); color: #687b8c; font-size:13px; white-space: nowrap; }
.rd-gantt-axis span:first-child { transform: none; }
.rd-gantt-axis span:last-child { transform: translateX(-100%); }
.rd-gantt-axis em { display: block; padding: 10px; color: #7a8996; font-style: normal; }
.rd-gantt-track { position: relative; min-height: 58px; box-sizing: border-box; background: repeating-linear-gradient(90deg, transparent 0, transparent calc(10% - 1px), #edf1f4 calc(10% - 1px), #edf1f4 10%); }
.rd-gantt-track i { position: absolute; top: 50%; transform: translateY(-50%); height: 16px; min-width: 6px; border-radius: 8px; background: linear-gradient(90deg, #168e69, #49b896); box-shadow: 0 2px 6px rgba(22, 142, 105, .22); }
.rd-modal-mask { position: fixed; z-index: 1200; inset: 0; display: grid; place-items: center; padding: 24px; background: rgba(18, 31, 45, .48); }
.rd-modal { width: min(880px, 94vw); max-height: 90vh; overflow: auto; border-radius: 14px; background: #fff; box-shadow: 0 24px 70px rgba(15, 35, 51, .28); }
.rd-modal header { display: flex; align-items: center; justify-content: space-between; padding: 18px 22px; border-bottom: 1px solid #e4eaf0; }
.rd-modal-draggable { will-change: transform; }
.rd-modal-draggable > header { cursor: grab; user-select: none; }
.rd-modal-draggable.dragging > header { cursor: grabbing; }
.rd-modal header small { color: #168a68; font-weight: 700; }
.rd-modal header h3 { margin: 4px 0 0; }
.rd-modal header button { border: 0; font-size: 23px; background: transparent; cursor: pointer; }
.rd-form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 15px; padding: 22px; }
.rd-form-grid .rd-field { position: relative; display: grid; min-width: 0; gap: 7px; color: #34495e; font-size: 13px; }
.rd-form-grid .rd-field.wide { grid-column: 1 / -1; }
.rd-form-grid em { color: #d34b4b; font-style: normal; }
.rd-form-grid .rd-field > input, .rd-form-grid .rd-field > select, .rd-form-grid .rd-field > textarea { width: 100%; box-sizing: border-box; padding: 10px 11px; border: 1px solid #ced9e4; border-radius: 7px; color: #26384a; background: #fff; }
.rd-cascade-select { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); gap: 8px; }
.rd-cascade-select select { min-width: 0; width: 100%; box-sizing: border-box; padding: 10px 11px; border: 1px solid #ced9e4; border-radius: 7px; color: #26384a; background: #fff; }
.rd-cascade-select select:focus { border-color: #2f9e7f; outline: 0; box-shadow: 0 0 0 3px rgba(47, 158, 127, .1); }
.rd-cascade-select select:disabled { cursor: not-allowed; color: #9aa8b4; background: #f5f8fa; }
.rd-form-grid textarea { resize: vertical; }
.rd-team-select { position: relative; }
.rd-team-cascade-select { display: grid; grid-template-columns: minmax(180px, .9fr) minmax(0, 1.6fr); gap: 9px; }
.rd-team-cascade-select > select { min-width: 0; width: 100%; box-sizing: border-box; padding: 10px 11px; border: 1px solid #ced9e4; border-radius: 7px; color: #26384a; background: #fff; font: inherit; }
.rd-team-cascade-select > select:focus { border-color: #2f9e7f; outline: 0; box-shadow: 0 0 0 3px rgba(47, 158, 127, .1); }
.rd-team-select-trigger { display: flex; width: 100%; min-height: 42px; box-sizing: border-box; align-items: center; justify-content: space-between; gap: 10px; padding: 6px 10px; border: 1px solid #ced9e4; border-radius: 7px; color: #26384a; text-align: left; background: #fff; cursor: pointer; }
.rd-team-select-trigger:hover, .rd-team-select-trigger[aria-expanded="true"], .rd-team-select-trigger:focus { border-color: #2f9e7f; outline: 0; box-shadow: 0 0 0 3px rgba(47, 158, 127, .1); }
.rd-team-select-trigger.disabled { cursor: not-allowed; color: #9aa8b4; background: #f5f8fa; }
.rd-team-select-trigger .placeholder { color: #91a0ad; }
.rd-team-select-tags { display: flex; min-width: 0; flex: 1; flex-wrap: wrap; align-items: center; gap: 5px; }
.rd-team-member-tag { display: inline-flex; max-width: 100%; align-items: center; gap: 5px; padding: 3px 7px; border-radius: 4px; color: #236d59; background: #e8f7f1; font-size: 13px; line-height: 1.25; }
.rd-team-member-tag button { width: 16px; height: 16px; padding: 0; border: 0; border-radius: 50%; color: #437b6d; background: transparent; font: inherit; font-size: 16px; line-height: 14px; cursor: pointer; }
.rd-team-member-tag button:hover { color: #fff; background: #2f9e7f; }
.rd-team-select-arrow { flex: 0 0 auto; color: #67808e; }
.rd-team-select-menu { position: absolute; z-index: 10; right: 0; left: 0; margin-top: 5px; overflow: hidden; border: 1px solid #7caaf4; border-radius: 7px; background: #fff; box-shadow: 0 12px 28px rgba(29, 58, 82, .18); }
.rd-team-select-menu > header { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 12px; border-bottom: 1px solid #e6ebef; background: #f7fbf9; }
.rd-team-select-menu > header strong { color: #2d5146; font-size: 13px; }
.rd-team-select-menu > header span { color: #5d7e73; font-size: 13px; }
.rd-team-select-options { max-height: min(230px, calc(100vh - 440px)); overflow-y: auto; padding: 6px 8px; overscroll-behavior: contain; }
.rd-team-select-options label { display: flex; min-width: 0; align-items: center; gap: 9px; padding: 8px; border-radius: 5px; cursor: pointer; }
.rd-team-select-options label:hover, .rd-team-select-options label:has(input:checked) { color: #fff; background: #347ff0; }
.rd-team-select-options input { flex: 0 0 auto; accent-color: #fff; }
.rd-team-select-options label > span { display: grid; min-width: 0; gap: 2px; }
.rd-team-select-options b, .rd-team-select-options small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rd-team-select-options b { font-size:13px; }
.rd-team-select-options small { color: #84938e; font-size: 12px; }
.rd-team-select-options label:has(input:checked) small { color: rgba(255, 255, 255, .82); }
.rd-team-select-options p { margin: 12px 8px; color: #84938e; }
.rd-team-select-menu footer { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 8px 12px; border-top: 1px solid #e6ebef; }
.rd-team-select-menu footer > span { display: flex; gap: 14px; }
.rd-team-select-menu footer button { padding: 0; border: 0; color: #526a80; background: transparent; cursor: pointer; }
.rd-team-select-menu footer button:hover { color: #167d60; }
.rd-team-select-menu footer button:disabled { cursor: not-allowed; opacity: .45; }
.rd-team-select-menu footer .rd-team-confirm-btn { padding: 6px 14px; border-radius: 5px; color: #fff; background: #168d6a; }
.rd-team-select-menu footer .rd-team-confirm-btn:hover { color: #fff; background: #0e7959; }
.rd-team-select-help { display: block; margin-top: 7px; color: #71858f; font-size:13px; line-height: 1.45; }
.rd-derived-product { display: block; }
.rd-derived-product input { width: 100%; min-height: 38px; box-sizing: border-box; padding: 10px 11px; border: 1px solid #d7e3e1; border-radius: 7px; color: #5d726c; background: #f5faf8; font: inherit; }
.rd-richtext-editor { overflow: hidden; border: 1px solid #ced9e4; border-radius: 7px; background: #fff; }
.rd-richtext-editor:focus-within { border-color: #2f9e7f; box-shadow: 0 0 0 3px rgba(47, 158, 127, .1); }
.rd-richtext-toolbar { display: flex; flex-wrap: wrap; gap: 4px; padding: 7px 8px; border-bottom: 1px solid #e2e9ef; background: #f7fafc; }
.rd-richtext-toolbar button { min-width: 30px; height: 28px; padding: 0 7px; border: 1px solid transparent; border-radius: 4px; color: #426072; background: transparent; cursor: pointer; }
.rd-richtext-toolbar button:hover { border-color: #cbd9e4; color: #137f61; background: #fff; }
.rd-richtext-content { min-height: 130px; padding: 11px; outline: 0; color: #26384a; line-height: 1.65; }
.rd-richtext-content:empty::before { content: attr(data-placeholder); color: #98a6b2; pointer-events: none; }
.rd-richtext-content > :first-child { margin-top: 0; }
.rd-richtext-content > :last-child { margin-bottom: 0; }
.rd-detail-richtext { color: #4d625c; line-height: 1.7; overflow-wrap: anywhere; }
.rd-detail-richtext > :first-child { margin-top: 0; }
.rd-detail-richtext > :last-child { margin-bottom: 0; }
.rd-modal footer { display: flex; justify-content: flex-end; gap: 10px; padding: 14px 22px; border-top: 1px solid #e4eaf0; }
.rd-confirm-mask { z-index: 1250; }
.rd-confirm-modal { display: grid; width: min(430px, calc(100vw - 40px)); box-sizing: border-box; grid-template-columns: 44px minmax(0, 1fr); gap: 14px 16px; padding: 24px; border-radius: 14px; background: #fff; box-shadow: 0 24px 70px rgba(15, 35, 51, .28); }
.rd-confirm-icon { display: grid; width: 44px; height: 44px; place-items: center; border-radius: 50%; color: #c63838; background: #fff0f0; font-size: 24px; font-weight: 800; }
.rd-confirm-content { min-width: 0; }
.rd-confirm-content h3 { margin: 1px 0 9px; color: #1e3040; font-size: 18px; }
.rd-confirm-content p { margin: 0 0 7px; overflow-wrap: anywhere; color: #354b5d; line-height: 1.65; }
.rd-confirm-content small { color: #7a8b99; line-height: 1.5; }
.rd-confirm-modal footer { display: flex; grid-column: 1 / -1; justify-content: flex-end; gap: 10px; padding-top: 8px; }
.rd-confirm-modal.rd-modal-draggable { cursor: grab; user-select: none; }
.rd-confirm-modal.rd-modal-draggable.dragging { cursor: grabbing; }
.rd-module select { appearance: none; box-sizing: border-box; padding-right: 38px !important; padding-left: 14px !important; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M2 2l4 4 4-4' fill='none' stroke='%2336514a' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") !important; background-repeat: no-repeat !important; background-position: right 14px center !important; background-size: 12px 8px !important; }
.rd-delete-confirm-btn { min-width: 90px; padding: 8px 16px; border: 1px solid #d84646; border-radius: 7px; color: #fff; background: #d84646; cursor: pointer; }
.rd-delete-confirm-btn:hover { border-color: #bd3030; background: #bd3030; }
.rd-delete-confirm-btn:disabled, .rd-confirm-modal button:disabled { cursor: not-allowed; opacity: .55; }
.rd-milestone-date { display: inline-flex; min-width: 88px; flex-direction: column; align-items: center; gap: 2px; padding: 4px 7px; border-radius: 7px; color: #42566a; line-height: 1.2; }
.rd-milestone-date b { font-size: 13px; }
.rd-milestone-date small { font-size: 12px; font-weight: 600; }
.rd-milestone-date.is-upcoming { color: #946200; background: #fff8dc; }
.rd-milestone-date.is-today { color: #9a5500; background: #fff0d6; }
.rd-milestone-date.is-overdue { color: #bd2d39; background: #fff0f1; }
.rd-milestone-status { display: inline-flex; align-items: center; padding: 3px 9px; border-radius: 999px; color: #526579; background: #eef3f6; font-size:13px; white-space: nowrap; }
.rd-milestone-status.is-active { color: #08775c; background: #e7f7f1; }
.rd-milestone-status.is-achieved, .rd-milestone-status.is-done, .rd-milestone-status.is-closed { color: #166534; background: #dcfce7; }
.rd-milestone-status.is-delayed { color: #b4232e; background: #feecee; }
.rd-milestone-status.is-cancelled { color: #657381; background: #edf0f2; }
.rd-progress-modal { width: min(520px, 94vw); overflow: hidden; }
.rd-progress-modal-body { display: grid; gap: 14px; padding: 22px; color: #536b63; }
.rd-progress-modal-body p { margin: 0; line-height: 1.65; }
.rd-progress-modal-body p strong { color: #138260; font-size: 20px; }
.rd-progress-modal-body label { display: grid; gap: 8px; color: #34495e; font-size: 13px; }
.rd-progress-modal-body input { width: 100%; box-sizing: border-box; padding: 10px 11px; border: 1px solid #b9d9cd; border-radius: 7px; color: #26384a; font: inherit; }
.rd-progress-modal-body input:focus { border-color: #2f9e7f; outline: 0; box-shadow: 0 0 0 3px rgba(47, 158, 127, .1); }
.rd-progress-modal-body small { color: #7b8e88; font-size:13px; line-height: 1.6; }
.rd-requirement-detail-modal { width: min(760px, 94vw); }
.rd-requirement-detail-body { padding: 22px; color: #3b5260; }
.rd-requirement-detail-body dl { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px 22px; margin: 0 0 22px; }
.rd-requirement-detail-body dl div { padding: 11px 12px; border: 1px solid #e4eee9; border-radius: 8px; background: #f8fcfa; }
.rd-requirement-detail-body dt { color: #71878d; font-size:13px; }
.rd-requirement-detail-body dd { margin: 5px 0 0; color: #25443e; font-weight: 600; }
.rd-requirement-detail-body section + section { margin-top: 18px; }
.rd-requirement-detail-body h4 { margin: 0 0 8px; color: #245749; font-size: 14px; }
.rd-requirement-detail-body .rd-detail-richtext { min-height: 44px; padding: 12px; border: 1px solid #e4eee9; border-radius: 8px; background: #fff; }
.rd-requirement-detail-body .rd-detail-richtext p { margin: 0 0 10px; }
@media (max-width: 1200px) { .rd-metrics { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 1280px) { .rd-project-card-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 1120px) { .rd-bug-filter-fields, .rd-project-filter-fields { grid-template-columns: repeat(3, minmax(140px, 1fr)); } }
@media (max-width: 760px) { .rd-module { padding: 10px; } .rd-hero { align-items: flex-start; flex-direction: column; } .rd-metrics, .rd-work-grid, .rd-form-grid { grid-template-columns: 1fr; } .rd-form-grid .rd-field.wide { grid-column: auto; } .rd-cascade-select, .rd-team-cascade-select { grid-template-columns: 1fr; } .rd-toolbar { align-items: stretch; flex-direction: column; } .rd-toolbar input { width: 100%; } .rd-task-board { grid-template-columns: repeat(4, 240px); } .rd-project-card-grid { grid-template-columns: 1fr; } .rd-pagination { align-items: flex-start; flex-direction: column; gap: 10px; } .rd-pagination > span { margin-right: 0; } .rd-quick-search-head, .rd-quick-search-risk { align-items: flex-start; flex-direction: column; } .rd-quick-search-risk-actions { justify-content: flex-start; } .rd-quick-search-summary, .rd-quick-search-controls { grid-template-columns: 1fr; } .rd-quick-search-types { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 761px) and (max-width: 1120px) { .rd-quick-search-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); } .rd-quick-search-controls { grid-template-columns: repeat(2, minmax(0, 1fr)); } .rd-quick-search-controls .rd-quick-search-keyword { grid-column: span 2; } .rd-quick-search-types { grid-template-columns: repeat(4, minmax(0, 1fr)); } }

/* 两栏式研发工作台：继承系统统一 10px 内容边距，研发二级导航独立位于工作区顶部。 */
.rd-module { width: 100%; min-width: 0; max-width: none; margin: 0; padding: 0; overflow-x: hidden; box-sizing: border-box; }
/* 工作区位于 62px 顶栏及 content 的上下内边距内，扣除这些固定高度，避免刚好一屏的页面产生伪滚动。 */
.rd-shell { width: 100%; min-width: 0; max-width: 100%; min-height: calc(100vh - 88px); min-height: calc(100dvh - 88px); }
.rd-workspace { min-width: 0; padding: 0 0 18px 0; }
.rd-hero { display: block; padding: 22px 26px; }
.rd-hero-top { display: flex; align-items: center; justify-content: space-between; gap: 24px; }
.rd-secondary-nav { display: flex; min-height: 54px; align-items: center; flex-wrap: wrap; gap: 8px 16px; margin-bottom: 10px; padding: 7px 14px; border: 1px solid #cfe4dc; border-radius: 10px; background: linear-gradient(105deg, #f3fbf8, #fff 40%); box-shadow: 0 4px 12px rgba(29, 93, 70, .06); }
.rd-secondary-nav-brand { display: flex; align-items: center; gap: 8px; padding-right: 14px; border-right: 1px solid #d6e9e1; }
.rd-secondary-nav-brand i { display: grid; width: 28px; height: 28px; place-items: center; border-radius: 8px; color: #fff; background: linear-gradient(135deg, #118665, #35ad86); box-shadow: 0 4px 9px rgba(17, 134, 101, .2); font-size: 13px; font-style: normal; font-weight: 800; }
.rd-secondary-nav-brand span { display: grid; gap: 1px; }.rd-secondary-nav-brand strong { color: #214d41; font-size: 14px; }.rd-secondary-nav-brand small { color: #6d8b80; font-size: 12px; letter-spacing: .06em; }
.rd-secondary-nav section { display: flex; align-items: center; gap: 5px; }
.rd-secondary-nav h3 { margin: 0 3px 0 0; color: #258062; font-size:13px; font-weight: 800; letter-spacing: .06em; }
.rd-secondary-nav button { padding: 7px 10px; border: 1px solid transparent; border-radius: 7px; color: #416259; background: transparent; cursor: pointer; white-space: nowrap; }
.rd-secondary-nav button:hover { border-color: #abdcca; color: #0c7759; background: #fff; }
.rd-secondary-nav button.active { border-color: #168c69; color: #fff; background: #168c69; box-shadow: 0 3px 8px rgba(22, 140, 105, .18); }
.rd-secondary-nav button b { font-size: 14px; font-weight: 600; }
.rd-hero-actions { display: flex; flex: 0 0 auto; gap: 8px; }
.rd-overview { margin-top: 15px; }
.rd-workflow-panel { margin-top: 14px; }
.rd-workflow-panel .panel-head > span { color: #8a9994; font-size:13px; }
.rd-workflow-stages { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 10px; padding: 14px 16px 16px; }
.rd-workflow-stages button { position: relative; display: grid; min-width: 0; gap: 5px; padding: 13px 12px; border: 1px solid #dce8e4; border-radius: 10px; color: #314a42; text-align: left; background: linear-gradient(145deg, #f7fbfa, #eef7f4); cursor: pointer; }
.rd-workflow-stages button:hover { border-color: #8fcbb8; box-shadow: 0 5px 14px rgba(28, 118, 91, .1); transform: translateY(-1px); }
.rd-workflow-stages button > span { color: #83a69a; font-size:13px; font-weight: 800; letter-spacing: .08em; }
.rd-workflow-stages button > b { overflow: hidden; font-size: 14px; text-overflow: ellipsis; white-space: nowrap; }
.rd-workflow-stages button > strong { color: #118060; font-size: 23px; line-height: 1; }
.rd-workflow-stages button > small { color: #81908b; font-size: 13px; }
.rd-overview-lower { display: grid; grid-template-columns: 1.15fr .8fr 1.15fr; gap: 14px; margin-top: 14px; }
.panel-head button { border: 0; color: #178365; font-size:13px; background: transparent; cursor: pointer; }
.rd-compact-list { padding: 5px 16px 14px; }
.rd-compact-list article { display: flex; min-height: 56px; align-items: center; justify-content: space-between; gap: 12px; padding: 14px 0; border-bottom: 1px solid #edf1f3; }
.rd-compact-list article > span { display: grid; min-width: 0; gap: 7px; }
.rd-compact-list article b { overflow: hidden; color: #334a43; font-size: 13px; text-overflow: ellipsis; white-space: nowrap; }
.rd-compact-list article small { color: #899792; font-size:13px; }
.rd-compact-list time { flex: 0 0 auto; color: #6e817a; font-size:13px; }
.rd-compact-list p { padding: 10px 0; color: #8b9995; font-size: 13px; }
.rd-quality-card > div:last-child { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; padding: 16px; }
.rd-quality-card article { display: grid; gap: 5px; padding: 13px 8px; border-radius: 9px; text-align: center; background: #f2f8f6; }
.rd-quality-card article strong { color: #13775b; font-size: 22px; }
.rd-quality-card article span { color: #7c8d87; font-size:13px; }
.rd-modal { display: flex; overflow: hidden; flex-direction: column; }
.rd-product-editor-modal { height: min(720px, calc(100vh - 48px)); max-height: calc(100vh - 48px); }
.rd-modal .rd-form-grid { min-height: 0; flex: 1 1 auto; overflow-y: auto; }
.rd-modal-draggable .rd-form-grid--picker-open { overflow-y: hidden; }
.rd-modal > header, .rd-modal > footer { flex: 0 0 auto; background: #fff; }
.rd-task-attachments { flex: 0 0 auto; margin: 0 20px 16px; padding: 14px; border: 1px dashed #a8d9c6; border-radius: 10px; background: #f8fcfa; }
.rd-task-attachments > header { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 0; border: 0; background: transparent; }
.rd-task-attachments header b, .rd-task-attachments header small { display: block; }.rd-task-attachments header b { color: #245548; font-size: 14px; }.rd-task-attachments header small { margin-top: 4px; color: #748b83; font-size: 12px; }
.rd-task-attachments label { cursor: pointer; white-space: nowrap; }.rd-task-attachments label input { display: none; }
.rd-task-attachment-list { display: grid; gap: 8px; margin-top: 12px; }.rd-task-attachment-list article { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 9px 10px; border: 1px solid #deede7; border-radius: 8px; background: #fff; }
.rd-task-attachment-list article > div:first-child { min-width: 0; }.rd-task-attachment-list b, .rd-task-attachment-list small { display: block; }.rd-task-attachment-list b { overflow: hidden; color: #30564a; font-size: 13px; text-overflow: ellipsis; white-space: nowrap; }.rd-task-attachment-list small { margin-top: 3px; color: #7d928a; font-size: 12px; }
.rd-task-attachment-actions { display: flex; flex: 0 0 auto; align-items: center; gap: 8px; }.rd-task-attachment-actions i { width: 72px; height: 5px; overflow: hidden; border-radius: 4px; background: #e2eee9; }.rd-task-attachment-actions i em { display: block; height: 100%; border-radius: inherit; background: #18a06f; }.rd-task-attachment-actions button { padding: 0; }
.rd-task-existing-attachments { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; margin-top: 12px; padding-top: 11px; border-top: 1px solid #e0eee8; }.rd-task-existing-attachments b { color: #42695d; font-size: 13px; }.rd-task-existing-attachments a { color: #148260; font-size: 13px; text-decoration: none; }.rd-task-existing-attachments a:hover { text-decoration: underline; }
.rd-detail-panel header, .rd-detail-stats, .rd-detail-panel dl { display: flex; align-items: center; gap: 14px; }
.rd-product-project-context { display: flex; align-items: center; justify-content: space-between; gap: 20px; margin: 16px 16px 0; padding: 14px 16px; border: 1px solid #cfe7de; border-radius: 10px; background: linear-gradient(90deg, #f4fbf8, #fbfefd); }
.rd-project-return-bar { display: flex; align-items: center; justify-content: space-between; gap: 18px; margin: 14px 16px 0; padding: 12px 16px; border: 1px solid #9ed6c2; border-radius: 10px; background: linear-gradient(90deg, #e9f8f1, #fafffd); }
.rd-project-return-bar small,.rd-project-return-bar strong,.rd-project-return-bar span { display: inline-block; }.rd-project-return-bar small { margin-right: 9px; color: #168b65; font-size:13px; font-weight: 800; letter-spacing: .06em; }.rd-project-return-bar strong { margin-right: 9px; color: #214d41; font-size: 16px; }.rd-project-return-bar span { color: #718980; font-size:13px; }.rd-project-return-bar button { padding: 8px 13px; border: 0; border-radius: 7px; color: #fff; background: #168b65; cursor: pointer; font-weight: 700; }
.rd-product-project-context small { color: #168b65; font-size:13px; font-weight: 700; letter-spacing: .08em; }
.rd-product-project-context h3 { margin: 4px 0 2px; color: #244d47; font-size: 16px; }
.rd-product-project-context p { margin: 0; color: #728982; font-size:13px; }
.rd-record-link { padding: 0; font-weight: 600; text-align: left; }
.rd-detail-panel { margin-bottom: 16px; padding: 20px; border: 1px solid #cfe7de; border-radius: 12px; background: #f7fcfa; }
.rd-detail-panel header { justify-content: space-between; align-items: flex-start; }
.rd-detail-panel h3 { margin: 4px 0; font-size: 20px; }
.rd-detail-panel p { margin: 0; color: #66808a; }
.rd-detail-panel dl { flex-wrap: wrap; margin: 18px 0 10px; }
.rd-detail-panel dl div { min-width: 180px; flex: 1; }
.rd-detail-panel dt { color: #6d8290; font-size:13px; }
.rd-detail-panel dd { margin: 5px 0 0; font-weight: 600; }
.rd-detail-objective { padding-top: 12px; border-top: 1px solid #dceee7; }
.rd-detail-stats { flex-wrap: wrap; margin-top: 16px; }
.rd-detail-stats button { min-width: 88px; padding: 10px; border: 1px solid #d5e9e1; border-radius: 8px; background: #fff; color: #37676c; }
.rd-detail-stats b, .rd-detail-stats span { display: block; }
.rd-detail-stats b { color: #168b65; font-size: 18px; }
.rd-detail-stats span { margin-top: 3px; font-size:13px; }
.rd-project-quick-nav { margin-top: 18px; padding: 16px; border: 1px solid #bfe2d5; border-radius: 12px; background: linear-gradient(120deg, #eefaf5, #fbfefd); }
.rd-project-quick-nav header { display: block; margin-bottom: 12px; }
.rd-project-quick-nav header small { color: #198967; font-size: 12px; font-weight: 800; letter-spacing: .1em; }
.rd-project-quick-nav h4 { margin: 3px 0; color: #1f4e42; font-size: 17px; }
.rd-project-quick-nav p { color: #6c857d; font-size:13px; }
.rd-project-quick-nav-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 10px; }
.rd-project-quick-nav-grid button { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 8px; align-items: center; min-height: 62px; padding: 10px; border: 1px solid #b4e2ce; border-radius: 9px; color: #31554a; background: #d9f2e5; cursor: pointer; text-align: left; transition: transform .15s ease, box-shadow .15s ease, border-color .15s ease, background .15s ease; }
.rd-project-quick-nav-grid button:hover { transform: translateY(-2px); border-color: #58ae8d; background: #ccebdc; box-shadow: 0 8px 16px rgba(30, 109, 80, .11); }
.rd-project-quick-nav-grid i { display: grid; width: 28px; height: 28px; place-items: center; border-radius: 8px; color: #087052; background: #c1e8d5; font-size: 13px; font-style: normal; font-weight: 800; }
.rd-project-quick-nav-grid span { min-width: 0; }.rd-project-quick-nav-grid b { display: block; overflow: hidden; color: #285146; font-size: 14px; text-overflow: ellipsis; white-space: nowrap; }.rd-project-quick-nav-grid strong { grid-column: 2; color: #168b65; font-size: 18px; }
.rd-project-summary-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); margin: 20px -20px 0; border-top: 1px solid #dceee7; border-bottom: 1px solid #dceee7; background: #fff; }
.rd-project-summary-grid article { min-height: 112px; padding: 16px 20px; border-right: 1px solid #e2eee9; }
.rd-project-summary-grid article:last-child { border-right: 0; }
.rd-project-summary-grid h4, .rd-project-card h4 { margin: 0 0 12px; color: #244d47; font-size: 14px; }
.rd-project-summary-grid p { margin: 8px 0; color: #607a80; font-size:13px; }
.rd-project-summary-grid b { color: #148361; font-size: 15px; }
.rd-project-attention { margin: 16px 0 0; padding: 16px; border: 1px solid #c8e5d9; border-radius: 10px; background: linear-gradient(105deg, #effaf5, #fbfefd); }
.rd-project-attention > header { display: block; margin-bottom: 12px; }
.rd-project-attention header small { color: #198967; font-size: 12px; font-weight: 800; letter-spacing: .09em; }
.rd-project-attention h4 { margin: 3px 0; color: #214f43; font-size: 16px; }
.rd-project-attention p { margin: 0; color: #668178; font-size:13px; }
.rd-project-attention-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; }
.rd-project-attention-grid button { min-height: 94px; padding: 13px 14px; border: 1px solid #cde7dc; border-radius: 9px; color: #365c51; background: #fff; cursor: pointer; text-align: left; transition: transform .15s ease, box-shadow .15s ease, border-color .15s ease; }
.rd-project-attention-grid button:hover { transform: translateY(-2px); border-color: #76bea4; box-shadow: 0 8px 16px rgba(23, 108, 78, .1); }
.rd-project-attention-grid button.is-overdue { border-color: #f0c8bd; background: #fffafa; }
.rd-project-attention-grid button.is-soon { border-color: #edd9a9; background: #fffdf7; }
.rd-project-attention-grid span, .rd-project-attention-grid b, .rd-project-attention-grid small { display: block; }
.rd-project-attention-grid span { color: #547068; font-size:13px; font-weight: 700; }
.rd-project-attention-grid b { margin: 5px 0; color: #087b59; font-size: 26px; line-height: 1; }
.rd-project-attention-grid .is-overdue b { color: #bf5340; }
.rd-project-attention-grid .is-soon b { color: #b7791f; }
.rd-project-attention-grid small { color: #7a9088; font-size:13px; line-height: 1.45; }
.rd-project-overdue-list { min-height: 0; margin-top: 14px; border-color: #f0cec6; }
.rd-project-overdue-list header > div { display: grid; gap: 4px; }
.rd-project-overdue-list header span { color: #95665d; }
.rd-overdue-items { padding: 0 16px; }
.rd-overdue-items article { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 12px; padding: 12px 0; border-bottom: 1px solid #f7e5e0; }
.rd-overdue-items article:last-child { border-bottom: 0; }
.rd-overdue-type { padding: 4px 8px; border-radius: 999px; color: #b54f3f; background: #fff0ed; font-size: 12px; font-weight: 700; }
.rd-overdue-items div { display: grid; gap: 4px; min-width: 0; }
.rd-overdue-items b { color: #3c4f4a; font-size: 14px; }
.rd-overdue-items small { color: #a45b4c; font-size: 13px; }
.rd-overdue-items .link-btn { color: #168b65; white-space: nowrap; }
.rd-project-overdue-list > .empty { padding: 22px 16px; margin: 0; color: #7e918b; text-align: center; }
.rd-project-detail-grid { display: grid; grid-template-columns: 1.35fr 1fr; gap: 14px; margin-top: 16px; }
.rd-project-delivery-grid { margin-top: 14px; }
.rd-project-card { min-height: 180px; overflow: hidden; border: 1px solid #dbece6; border-radius: 10px; background: #fff; }
.rd-project-card header { display: flex; justify-content: space-between; padding: 14px 16px; border-bottom: 1px solid #edf3f0; }
.rd-project-card header h4 { margin: 0; }
.rd-project-card header span { color: #168b65; font-size:13px; }
.rd-project-card header .link-btn { padding: 0; color: #168b65; font-size:13px; }
.rd-iteration-metrics { display: flex; align-items: baseline; gap: 7px; padding: 14px 16px; }
.rd-iteration-metrics b { color: #148361; font-size: 24px; }.rd-iteration-metrics span { margin-right: 10px; color: #80918c; font-size:13px; }
.rd-project-card table { width: 100%; border-collapse: collapse; font-size:13px; }.rd-project-card th,.rd-project-card td { padding: 9px 14px; border-top: 1px solid #edf3f0; text-align: left; }.rd-project-card th { color: #6c827d; font-weight: 600; background: #fbfdfc; }
.rd-detail-list { margin: 0; padding: 5px 16px; list-style: none; }.rd-detail-list li { display: grid; gap: 5px; padding: 12px 0; border-bottom: 1px solid #edf3f0; }.rd-detail-list li:last-child { border-bottom: 0; }.rd-detail-list b { color: #35534d; font-size: 14px; line-height: 1.45; }.rd-detail-list small { color: #71878d; font-size:13px; line-height: 1.45; }.rd-detail-list .empty { display: block; padding: 38px 0; color: #8b9995; text-align: center; }
.rd-project-activity-card { min-height: 0; margin-top: 14px; }
.rd-project-activity-list { padding: 0 16px; }
.rd-project-activity-list article { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 12px; padding: 12px 0; border-bottom: 1px solid #edf3f0; }
.rd-project-activity-list article:last-child { border-bottom: 0; }
.rd-project-activity-list span { padding: 3px 7px; border-radius: 999px; color: #168b65; background: #e9f8f1; font-size:13px; font-weight: 700; }
.rd-project-activity-list b { overflow: hidden; color: #36544c; font-size: 14px; text-overflow: ellipsis; white-space: nowrap; }
.rd-project-activity-list time { color: #788d86; font-size:13px; white-space: nowrap; }
.rd-project-activity-list > p { padding: 28px 0; color: #8b9995; font-size:13px; text-align: center; }
.rd-waterfall { display: flex; justify-content: space-between; gap: 8px; padding: 34px 18px; }
.rd-waterfall div { flex: 1; display: grid; gap: 8px; color: #9aaba5; font-size:13px; text-align: center; }
.rd-waterfall i { height: 5px; border-radius: 5px; background: #dce9e4; }
.rd-waterfall .done { color: #167d60; }
.rd-waterfall .done i { background: #22aa7b; }
.rd-kanban-summary { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; padding: 30px 16px; }
.rd-kanban-summary div { padding: 13px 6px; border-radius: 8px; background: #f1f8f5; text-align: center; }
.rd-kanban-summary b, .rd-kanban-summary span { display: block; }
.rd-kanban-summary b { color: #168b65; font-size: 22px; }
.rd-kanban-summary span { margin-top: 5px; color: #6f857e; font-size:13px; }

@media (max-width: 1380px) {
  .rd-secondary-nav { gap: 8px 14px; }
  .rd-secondary-nav button { padding-right: 9px; padding-left: 9px; }
  .rd-workflow-stages { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .rd-overview-lower { grid-template-columns: 1fr 1fr; }
  .rd-project-summary-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .rd-project-attention-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .rd-project-detail-grid { grid-template-columns: 1fr; }
  .rd-project-return-bar { align-items: flex-start; flex-direction: column; }
  .rd-project-quick-nav-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .rd-requirement-detail-body dl { grid-template-columns: 1fr; }
  .rd-overview-lower > section:last-child { grid-column: 1 / -1; }
}
@media (max-width: 960px) {
  .rd-workspace { padding: 0 0 12px 0; }
}
@media (max-width: 760px) {
  .rd-module { width: 100%; max-width: 100%; margin-top: -8px; margin-left: 0; padding: 0; }
  .rd-workspace { padding: 0 10px 10px; }
  .rd-hero { padding: 18px 16px; }
  .rd-hero-top { align-items: flex-start; flex-direction: column; gap: 12px; }
  .rd-secondary-nav { min-height: 48px; flex-wrap: nowrap; width: auto; margin-bottom: 10px; padding: 7px 10px; overflow-x: auto; }
  .rd-secondary-nav-brand { flex: 0 0 auto; padding-right: 10px; }
  .rd-secondary-nav section { flex: 0 0 auto; }
  .rd-workflow-stages { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .rd-overview-lower { grid-template-columns: 1fr; }
  .rd-overview-lower > section:last-child { grid-column: auto; }
  .rd-bug-filter, .rd-project-filter { margin-right: 10px; margin-left: 10px; }
  .rd-project-picker { width: 100%; }
  .rd-scope-cascade { width: 100%; flex-wrap: wrap; margin-right: 0; }
  .rd-scope-cascade label { flex: 1 1 260px; }
  .rd-scope-cascade select, .rd-scope-cascade label:first-child select, .rd-scope-cascade label:nth-child(2) select { width: 100%; min-width: 0; flex: 1 1 auto; }
  .rd-project-picker-trigger { width: 100%; }
  .rd-project-picker-menu { width: 100%; box-sizing: border-box; }
  .rd-bug-filter-fields, .rd-project-filter-fields { grid-template-columns: 1fr; }
  .rd-bug-filter-head, .rd-bug-filter-footer, .rd-project-filter-head, .rd-project-filter-footer { align-items: flex-start; flex-direction: column; }
  .rd-project-attention-grid { grid-template-columns: 1fr; }
  .rd-project-activity-list article { grid-template-columns: auto minmax(0, 1fr); }
  .rd-project-activity-list time { grid-column: 2; }
}
