/* 跨行业造价看板；沿用工作区主题与本地图表配色。 */
.cv-dashboard {
    --cv-chart-1: var(--cv-primary); --cv-chart-2: #13a6a0; --cv-chart-3: #8570e4; --cv-chart-4: #eda844; --cv-chart-5: #e17e9b; --cv-chart-6: #58a5d8; --cv-chart-7: #53aa7c; --cv-chart-8: #b997cd; --cv-chart-9: #7993b1;
    --cv-chart-track: color-mix(in srgb, var(--cv-muted) 8%, var(--cv-paper));
    flex: 1; min-height: 0; min-width: 0; overflow: auto; box-sizing: border-box; padding: 24px; color: var(--cv-ink); background: var(--cv-page); container-type: inline-size; container-name: dashboard;
}
:root[data-theme="dark"] .cv-dashboard { --cv-chart-2: #45c4be; --cv-chart-3: #a497f3; --cv-chart-4: #ecb764; --cv-chart-5: #e797b0; --cv-chart-6: #72b4e0; --cv-chart-7: #75bc97; --cv-chart-8: #bba4d1; --cv-chart-9: #8da9c7; }
.cv-dashboard-heading { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 18px; }
.cv-dashboard-heading > div { min-width: 0; }
.cv-dashboard-eyebrow { color: var(--cv-primary); font-size: 12px; letter-spacing: .12em; }
.cv-dashboard-heading h2 { margin: 6px 0; font-size: clamp(19px, 1.65vw, 25px); line-height: 1.5; font-weight: 600; overflow-wrap: anywhere; }
.cv-dashboard-heading p { margin: 0; font-size: 12px; color: var(--cv-muted); }
.cv-dashboard-badge { flex: none; padding: 6px 10px; border-radius: 5px; color: var(--cv-primary); background: var(--cv-primary-soft); font-size: 12px; }
.cv-dashboard-hero { display: grid; grid-template-columns: 1.3fr 1fr; gap: 24px; margin-bottom: 12px; padding: 20px; border: 1px solid var(--cv-card-line); border-radius: 12px; color: var(--cv-ink); background: var(--cv-paper); box-shadow: var(--cv-card-shadow); }
.cv-dashboard-hero > div { min-width: 0; }
.cv-dashboard-hero span, .cv-dashboard-hero p { display: block; font-size: 14px; color: var(--cv-muted); }
.cv-dashboard-hero strong { display: block; margin-top: 8px; font-size: clamp(28px, 2.8vw, 36px); font-weight: 600; letter-spacing: -.025em; font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.cv-dashboard-hero strong small { display: inline-block; margin-left: 8px; font-size: 13px; font-weight: 400; letter-spacing: 0; opacity: .88; }
.cv-dashboard-hero p { margin: 9px 0 0; overflow-wrap: anywhere; }
.cv-dashboard-hero dl { display: grid; grid-template-columns: auto minmax(0,1fr); align-content: center; gap: 12px 19px; margin: 0; font-size: 12px; }
.cv-dashboard-hero dt { color: var(--cv-muted); }.cv-dashboard-hero dd { margin: 0; overflow-wrap: anywhere; }
.cv-dashboard button, .cv-dashboard select { box-sizing: border-box; max-width: 100%; min-height: 32px; padding: 4px 9px; border: 1px solid var(--cv-line); border-radius: 6px; color: var(--cv-ink); background: var(--cv-paper); font: inherit; cursor: pointer; }
.cv-dashboard button:hover { color: var(--cv-primary); border-color: var(--cv-primary); background: var(--cv-primary-soft); }
.cv-dashboard button:disabled { opacity: .65; cursor: not-allowed; }
.cv-dashboard :is(button,select,[data-chart], [data-fee-details], [data-material-details]):focus-visible { outline: 2px solid var(--cv-primary); outline-offset: 3px; }
.cv-dashboard-overview { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1.4fr); gap: 12px; margin-top: 12px; }
.cv-dashboard-overview.single { grid-template-columns: minmax(0,1fr); }
.cv-dashboard-overview > :only-child { grid-column: 1 / -1; }
.cv-dashboard-charts, .cv-dashboard-details { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 12px; margin-top: 12px; }
.cv-dashboard-charts > :only-child, .cv-dashboard-details > :only-child { grid-column: 1 / -1; }
.cv-dashboard-overview:empty, .cv-dashboard-charts:empty, .cv-dashboard-details:empty { display: none; }
.cv-dashboard-panel { min-width: 0; box-sizing: border-box; padding: 20px; border: 1px solid var(--cv-card-line); border-radius: 12px; background: var(--cv-paper); box-shadow: var(--cv-card-shadow); }
.cv-dashboard-panel h3 { display: flex; align-items: center; flex-wrap: wrap; gap: 9px; margin: 0 0 14px; font-size: 15px; font-weight: 500; line-height: 1.6; }
.cv-dashboard-panel h3 > .ui-icon { color: var(--cv-primary); }
.cv-dashboard-panel h3 small { margin-left: auto; color: var(--cv-muted); font-size: 11px; font-weight: 400; }
.cv-dashboard-chart { width: 100%; min-width: 0; height: 320px; }
.cv-dashboard-structure .cv-dashboard-chart { height: 345px; }
.cv-dashboard-composition { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1.3fr); align-items: center; gap: 25px; }
.cv-dashboard-usage { height: 260px; }
.cv-dashboard-direct { margin-top: 12px; }
.cv-dashboard-legend { display: grid; gap: 0; min-width: 0; }
.cv-dashboard-legend-row { display: grid; grid-template-columns: minmax(0,1fr) auto auto; align-items: center; gap: 8px 10px; padding: 8px 0; border-bottom: 1px solid color-mix(in srgb,var(--cv-line) 65%,transparent); font-size: 12px; }
.cv-dashboard-legend-row:last-child { border-bottom: 0; }
.cv-dashboard-legend-row > span { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
.cv-dashboard-legend-row small { color: var(--cv-muted); font-size: 11px; font-variant-numeric: tabular-nums; }
.cv-dashboard-legend-row > span small { margin-left: 4px; }
.cv-dashboard-legend-row > small { min-width: 42px; text-align: right; white-space: nowrap; }
.cv-dashboard-legend-row button small { display: block; margin-top: 2px; }
.cv-dashboard .cv-dashboard-link { padding: 0; min-height: 0; border: 0; color: var(--cv-primary); background: transparent; text-align: left; line-height: 1.6; overflow-wrap: anywhere; }
.cv-dashboard .cv-dashboard-link:hover { background: transparent; text-decoration: underline; text-underline-offset: 3px; }
.cv-dashboard-chart-caption { margin: 10px 0 0; color: var(--cv-muted); font-size: 11px; line-height: 1.8; overflow-wrap: anywhere; }
.cv-dashboard-insight { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 18px; margin-top: 12px; padding: 12px 14px; border-left: 3px solid var(--cv-chart-2); border-radius: 5px; background: var(--cv-chart-track); }
.cv-dashboard-insight > div { flex: 1; min-width: 100px; }.cv-dashboard-insight span, .cv-dashboard-insight small { display: block; color: var(--cv-muted); font-size: 12px; line-height: 1.7; }
.cv-dashboard-insight button { font-size: 12px; }.cv-dashboard-insight b, .cv-dashboard-insight em { flex: none; color: var(--cv-ink); font-size: 17px; font-weight: 500; font-style: normal; text-align: right; font-variant-numeric: tabular-nums; }.cv-dashboard-insight b small { display: inline; margin-left: 3px; }
.cv-dashboard-charts .cv-dashboard-legend.compact { max-height: 220px; overflow: auto; scrollbar-width: thin; padding-right: 5px; }
.cv-dashboard-path { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin: 0 0 10px; font-size: 11px; }
.cv-dashboard-note, .cv-dashboard-material-note { margin: 10px 0; padding: 9px 12px; border-radius: 6px; color: var(--cv-muted); background: var(--cv-primary-soft); font-size: 12px; line-height: 1.8; }
.cv-dashboard-empty { display: grid; justify-items: center; align-content: center; min-height: 240px; color: var(--cv-muted); font-size: 13px; }
.cv-dashboard-table-wrap { overflow: auto; max-width: 100%; }
.cv-dashboard table { width: 100%; border-collapse: collapse; font-size: 14px; }
.cv-dashboard th, .cv-dashboard td { padding: 8px; border: 1px solid var(--cv-line); vertical-align: middle; }
.cv-dashboard th { text-align: center; background: var(--cv-header); white-space: nowrap; font-weight: 600; }
.cv-dashboard th:first-child { min-width: 36px; }
.cv-dashboard td { overflow-wrap: anywhere; line-height: 1.6; }.cv-dashboard td.number { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }.cv-dashboard td.center { text-align: center; white-space: nowrap; }
.cv-dashboard td.center .cv-dashboard-link + .cv-dashboard-link { margin-left: 8px; }
.cv-dashboard tbody tr:hover td { background: var(--cv-chart-track); }
.cv-dashboard-pager { display: flex; flex-wrap: wrap; justify-content: flex-end; align-items: center; gap: 8px; margin-top: 10px; color: var(--cv-muted); font-size: 11px; }
.cv-dashboard-pager button { display: inline-flex; padding: 4px; }
.cv-dashboard-material-controls { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 14px; margin: 0 0 8px; font-size: 12px; }
.cv-dashboard-material-controls label { display: inline-flex; align-items: center; gap: 6px; min-width: 0; color: var(--cv-muted); }
.cv-dashboard-material-controls select { max-width: 170px; min-width: 0; }
.cv-dashboard-segment { display: inline-flex; gap: 5px; }
.cv-dashboard-segment button[aria-pressed="true"] { border-color: var(--cv-primary); color: var(--cv-primary); background: var(--cv-primary-soft); }
.cv-dashboard-color-probe { position: absolute; visibility: hidden; pointer-events: none; }
.cv-dashboard-bubble { position: fixed; z-index: 95; width: 300px; max-width: calc(100vw - 24px); max-height: calc(100dvh - 24px); overflow: auto; box-sizing: border-box; padding: 20px; border: 1px solid var(--cv-line); border-radius: 12px; color: var(--cv-ink); background: var(--cv-elevated); box-shadow: var(--cv-menu-shadow); }
.cv-dashboard-bubble button { font: inherit; cursor: pointer; }
.cv-dashboard-bubble button:focus-visible { outline: 2px solid var(--cv-primary); outline-offset: 3px; }
.cv-dashboard-bubble-close { position: absolute; top: 7px; right: 8px; padding: 0; width: 28px; height: 28px; border: 0; border-radius: 6px; color: var(--cv-muted); background: transparent; font-size: 22px !important; }
.cv-dashboard-bubble-close:hover { color: var(--cv-primary); background: var(--cv-primary-soft); }
.cv-dashboard-bubble-kind { color: var(--cv-primary); font-size: 11px; }
.cv-dashboard-bubble-title { margin: 9px 20px 13px 0; font-size: 15px; font-weight: 500; line-height: 1.6; overflow-wrap: anywhere; }
.cv-dashboard-bubble-amount { display: block; font-size: 25px; font-weight: 500; font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.cv-dashboard-bubble-share { margin: 9px 0; color: var(--cv-muted); font-size: 12px; }
.cv-dashboard-bubble-code { margin: 7px 0; color: var(--cv-muted); font-size: 12px; line-height: 1.6; overflow-wrap: anywhere; }
.cv-dashboard-bubble-action { display: block; width: 100%; margin-top: 10px; padding: 8px 10px; border: 1px solid var(--cv-primary); border-radius: 6px; color: var(--cv-primary); background: var(--cv-primary-soft); font-size: 12px !important; }
@container dashboard (max-width: 900px) { .cv-dashboard-overview { grid-template-columns: minmax(0,1fr); }.cv-dashboard-panel { padding: 16px; }.cv-dashboard-hero { grid-template-columns: 1.1fr 1fr; gap: 20px; } }
@container dashboard (max-width: 640px) { .cv-dashboard-charts, .cv-dashboard-details { grid-template-columns: minmax(0,1fr); }.cv-dashboard-hero { grid-template-columns: minmax(0,1fr); gap: 19px; padding: 21px; }.cv-dashboard-composition { grid-template-columns: minmax(0,1fr); gap: 8px; }.cv-dashboard-heading { align-items: flex-start; }.cv-dashboard-badge { max-width: 120px; } }
@container dashboard (max-width: 380px) { .cv-dashboard-panel { padding: 13px; }.cv-dashboard-heading h2 { font-size: 18px; }.cv-dashboard-legend-row { grid-template-columns: minmax(0,1fr) auto; gap: 5px; }.cv-dashboard-legend-row > small { grid-column: 2; }.cv-dashboard-hero strong { font-size: 28px; } }
@media (max-width: 1050px) { .cv-dashboard { padding: 16px; } }
@media (prefers-reduced-motion: reduce) { .cv-dashboard *, .cv-dashboard *::before, .cv-dashboard *::after { transition: none !important; animation: none !important; } }
