:root{--navy:#06346c;--blue:#0667bd;--line:#ccdaea;--canvas:#f2f6fb;--text:#14233b;--green:#249856;--orange:#ff6a13;--red:#ec4238;--purple:#6257bd;font-family:"PingFang SC","Microsoft YaHei",Arial,sans-serif;color:var(--text)}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--canvas)}body{font-size:13px}
body.live-loading .kpi-panel .q-kpi-value,body.live-loading .kpi-panel .q-kpi-unit,body.live-loading .kpi-panel .q-kpi-meta,body.live-loading .trend-panel .chart-wrap,body.live-loading .trend-panel .panel-note,body.live-loading .pie-panel .pie-wrap,body.live-loading .highlights-panel .highlights-list,body.live-loading .version-panel .data-table,body.live-loading .plans-panel .q-plan-item:first-child{visibility:hidden}
body.live-ready .kpi-panel .q-kpi-value,body.live-ready .kpi-panel .q-kpi-unit,body.live-ready .kpi-panel .q-kpi-meta,body.live-ready .highlights-panel .highlights-list,body.live-ready .version-panel .data-table,body.live-ready .plans-panel .q-plan-item:first-child{animation:q-data-reveal 360ms ease-out both}
@keyframes q-data-reveal{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){body.live-ready .kpi-panel .q-kpi-value,body.live-ready .kpi-panel .q-kpi-unit,body.live-ready .kpi-panel .q-kpi-meta,body.live-ready .version-panel .data-table,body.live-ready .plans-panel .q-plan-item:first-child{animation:none}}
.q-header{height:95px;padding:14px 24px;display:flex;align-items:center;color:#fff;background:linear-gradient(115deg,#063d7c 0%,#062f63 58%,#041f45 100%);box-shadow:0 2px 8px rgb(5 38 79/24%)}
.brand-mark{width:68px;height:64px;padding-right:18px;border-right:1px solid rgb(255 255 255/24%)}.brand-mark svg{width:52px;height:52px;fill:none;stroke:#fff;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round}
.brand-copy{padding-left:18px}.brand-copy h1{margin:0;font-size:clamp(23px,2.05vw,32px);line-height:1.2;letter-spacing:.5px}.brand-copy p{margin:9px 0 0;font-size:15px;font-weight:600;letter-spacing:.3px}
.header-meta{margin-left:auto;min-width:290px;text-align:right;font-size:14px;line-height:1.65;font-variant-numeric:tabular-nums}.header-meta strong{font-size:17px}.header-meta b{margin-left:18px;color:#ffe754;font-size:17px}
.dashboard-grid{min-height:calc(100vh - 95px);padding:11px 16px 9px;display:grid;grid-template-columns:1.1fr .85fr 1fr;grid-template-rows:252px 316px 280px auto auto;grid-template-areas:"kpi kpi target" "trend pie highlights" "version verify plans" "issues issues issues" "footer footer footer";gap:8px}
.panel{min-width:0;overflow:hidden;background:#fff;border:1px solid #e0e8f2;border-radius:7px;box-shadow:0 2px 8px rgb(35 70 110/8%);padding:10px 13px}.panel h2{margin:0 0 9px;color:#073675;font-size:18px;line-height:1.2}.panel h2 small{font-size:14px;font-weight:700}
.kpi-panel{grid-area:kpi}.target-panel{grid-area:target}.trend-panel{grid-area:trend}.pie-panel{grid-area:pie}.highlights-panel{grid-area:highlights}.version-panel{grid-area:version}.verify-panel{grid-area:verify}.plans-panel{grid-area:plans}.issues-panel{grid-area:issues;padding:14px 16px}
.kpi-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;height:167px}.q-kpi-card{min-width:0;border:1px solid color-mix(in srgb,var(--accent) 24%,white);border-radius:8px;padding:15px 7px 10px;text-align:center;background:linear-gradient(145deg,color-mix(in srgb,var(--accent-bg) 38%,white),#fff 65%)}
.kpi-heading{display:flex;align-items:center;justify-content:center;gap:8px;min-height:38px;color:#172235;font-weight:500}.q-icon-circle{width:42px;height:42px;flex:0 0 42px;border-radius:50%;display:grid;place-items:center;color:#fff;background:var(--accent);box-shadow:inset 0 0 0 5px rgb(255 255 255/16%);font-size:20px;font-weight:800}
.q-kpi-value{display:inline-block;margin-top:7px;font:700 30px/1 Arial,sans-serif;color:var(--accent);font-variant-numeric:tabular-nums}.q-kpi-unit{margin-left:3px;font-size:17px;font-weight:700}.q-kpi-meta{margin-top:12px;color:#14233b;font-size:12px;line-height:1.55}.q-kpi-delta{margin-top:8px;font-size:12px}
.q-kpi-meta.metric-up{color:#168b4c;font-weight:700}.q-kpi-meta.metric-down{color:#dc3f35;font-weight:700}
.data-table{width:100%;border-collapse:collapse;font-size:12px;font-variant-numeric:tabular-nums}.data-table th,.data-table td{border:1px solid var(--line);padding:5px 7px;text-align:left;line-height:1.25}.data-table th{color:#063675;background:#f6f9fd;font-weight:700}.data-table .summary td{font-weight:700}
.target-table th:not(:first-child),.target-table td:not(:first-child),.verify-table th:not(:first-child),.verify-table td:not(:first-child){text-align:center}.status.good{color:#188c4a}.status.warn{color:#d94841}.status.info{color:#2974c6}.key-value-table td:first-child{width:30%;color:#063675;font-weight:700;background:#f8fbff}.key-value-table td{padding:3px 7px}
.chart-wrap{height:235px}.target-chart-wrap{height:190px}.pie-wrap{position:relative;height:235px}.pie-center{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;pointer-events:none}.pie-center strong{font:700 26px/1 Arial,sans-serif}.pie-center span{margin-left:36px;margin-top:-16px;font-weight:700}.pie-center em{margin-top:7px;font-style:normal;font-size:14px}.panel-note{margin:7px 3px 0;color:#344259;font-size:11px;line-height:1.45}
.highlights-list,.plans-list{padding:0;margin:0;list-style:none}.q-highlight{display:flex;gap:11px;padding:8px 2px}.q-highlight-icon{width:39px;height:39px;flex:0 0 39px;border-radius:50%;display:grid;place-items:center;color:#fff!important;font-size:19px;font-weight:800}.q-highlight-title{color:#073675;font-size:14px;font-weight:700}.q-highlight-desc{margin-top:3px;color:#28374c;font-size:11px;line-height:1.45}
.highlights-list{max-height:260px;overflow-y:auto}.q-fix-copy{min-width:0}.q-fix-heading{display:flex;align-items:center;gap:7px;flex-wrap:wrap;color:#073675;font-size:13px}.q-type-badge{padding:2px 7px;border-radius:999px;background:#e8f1ff;color:#075aa6;font-size:11px;font-weight:700}.q-module{color:#607086;font-size:11px}.q-highlight-desc{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.q-empty-row{padding:72px 8px;text-align:center;color:#718096;font-size:13px}.q-error-row{color:#dc3f35}
.q-fix-group{padding:6px 2px 8px;border-bottom:1px solid #e8eef6}.q-fix-group:last-child{border-bottom:0}.q-fix-group-title{display:flex;align-items:center;gap:7px;color:#073675;font-size:14px}.q-group-dot{width:10px;height:10px;border-radius:50%;flex:0 0 10px}.q-group-count{padding:1px 7px;border-radius:999px;background:#edf3fa;color:#607086;font-size:10px}.q-fix-cases{margin:4px 0 0 17px;padding:0;list-style:none}.q-fix-case{padding:5px 6px 5px 10px;border-left:2px solid #dbe6f2;border-radius:0 5px 5px 0;cursor:help;transition:background-color 160ms ease}.q-fix-case:hover{background:#f4f8fd}.q-fix-case:focus-visible{outline:2px solid #2573d5;outline-offset:2px;background:#f4f8fd}.q-fix-case+.q-fix-case{margin-top:2px}
.q-case-tooltip{position:fixed;z-index:1000;visibility:hidden;width:max-content;max-width:min(440px,calc(100vw - 24px));max-height:min(260px,calc(100vh - 24px));overflow:auto;padding:11px 13px;border:1px solid rgb(255 255 255/16%);border-radius:8px;background:#10233f;color:#fff;box-shadow:0 10px 30px rgb(8 28 55/28%);font-size:13px;line-height:1.6;white-space:pre-wrap;overflow-wrap:anywhere;pointer-events:none;opacity:0;transform:translateY(-3px);transition:opacity 160ms ease,transform 160ms ease,visibility 160ms}.q-case-tooltip.is-visible{visibility:visible;opacity:1;transform:translateY(0)}
.q-plan-item{display:flex;align-items:flex-start;gap:10px;padding:10px 3px}.q-plan-num{width:27px;height:27px;flex:0 0 27px;display:grid;place-items:center;border-radius:50%;color:#fff;background:#0868bb;font-weight:700;box-shadow:inset 0 -2px 0 rgb(0 0 0/12%)}.q-plan-text{padding-top:3px;font-size:12px;line-height:1.55}
.issues-heading{display:flex;align-items:center;gap:10px}.issues-heading h2{margin-bottom:0}.issues-count{padding:2px 9px;border-radius:999px;background:#edf3fa;color:#49647f;font-size:11px;font-weight:700}.issues-filters{display:grid;grid-template-columns:minmax(220px,1.7fr) repeat(4,minmax(125px,1fr)) auto;gap:9px;align-items:end;margin:13px 0 12px}.issues-filters label{display:flex;min-width:0;flex-direction:column;gap:5px;color:#405169;font-size:11px;font-weight:700}.issues-filters input,.issues-filters select,.issues-filters button{width:100%;height:38px;border:1px solid #bdcde0;border-radius:6px;background:#fff;color:#17263d;font:inherit;padding:0 10px}.issues-filters input:focus,.issues-filters select:focus,.issues-filters button:focus-visible,.issues-pagination button:focus-visible{outline:2px solid #2573d5;outline-offset:2px}.issues-filters button{width:70px;cursor:pointer;border-color:#b8c9dc;background:#f5f8fc;color:#174a83;font-weight:700}.issues-filters button:hover{background:#eaf2fb}.issues-table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:7px}.issues-table{min-width:940px;border:0}.issues-table th{position:sticky;top:0;z-index:1;padding:8px 9px}.issues-table td{padding:8px 9px;vertical-align:top}.issues-table th:first-child{width:130px}.issues-table th:nth-child(2){width:auto}.issues-table th:nth-child(n+3){width:125px}.issues-table tr:hover td{background:#f8fbff}.issue-id{color:#075aa6;font-weight:700;white-space:nowrap}.issue-description summary{cursor:pointer;color:#28374c;line-height:1.5;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.issue-description summary::marker{color:#4d75a2}.issue-description[open] summary{margin-bottom:7px;-webkit-line-clamp:unset}.issue-description-full{max-width:720px;padding:8px 10px;border-left:3px solid #88add5;background:#f5f8fc;color:#26374f;line-height:1.55;white-space:pre-wrap;overflow-wrap:anywhere}.issue-badge{display:inline-block;padding:2px 8px;border-radius:999px;background:#edf3fa;color:#3c5876;font-size:11px;font-weight:700;white-space:nowrap}.issue-badge.severity-p0{background:#fee2e2;color:#b42318}.issue-badge.severity-p1{background:#ffedd5;color:#b54708}.issue-badge.status-closed{background:#dcfce7;color:#147a40}.issues-pagination{display:flex;align-items:center;justify-content:flex-end;gap:10px;margin-top:11px;color:#53657a;font-size:12px}.issues-pagination button{min-width:72px;height:36px;border:1px solid #bdcde0;border-radius:6px;background:#fff;color:#174a83;cursor:pointer;font-weight:700}.issues-pagination button:hover:not(:disabled){background:#edf5fd}.issues-pagination button:disabled{cursor:not-allowed;opacity:.45}
footer{grid-area:footer;position:relative;padding:2px 14px;color:#1e2e43;font-size:11px}footer p{margin:0 0 5px}footer a{position:absolute;right:16px;top:3px;color:#40658e;text-decoration:none}
@media(max-width:1100px){.dashboard-grid{grid-template-columns:1fr 1fr;grid-template-rows:auto;grid-template-areas:"kpi kpi" "target target" "trend pie" "highlights highlights" "version verify" "plans plans" "issues issues" "footer footer"}.panel{min-height:270px}.issues-filters{grid-template-columns:repeat(3,1fr)}.issues-filters button{width:100%}}
@media(max-width:720px){.q-header{height:auto;padding:14px;flex-wrap:wrap}.brand-mark{display:none}.brand-copy{padding:0}.brand-copy h1{font-size:21px}.brand-copy p{font-size:12px}.header-meta{width:100%;margin-top:10px;text-align:left}.dashboard-grid{display:block;padding:8px}.panel{margin-bottom:8px;min-height:0}.kpi-grid{grid-template-columns:1fr;height:auto;gap:8px}.q-kpi-card{min-height:160px}.chart-wrap,.pie-wrap{height:280px}.issues-filters{grid-template-columns:1fr 1fr}.issues-search{grid-column:1/-1}.issues-filters input,.issues-filters select,.issues-filters button{height:44px}.issues-pagination{justify-content:center}}
@media(prefers-reduced-motion:reduce){.q-fix-case,.q-case-tooltip{transition:none}}
