/* Exact values and units remain visible; charts never invent progress. */
.visual-dashboard{background:var(--surface);padding:24px;margin-bottom:22px;border-radius:14px}
.visual-dashboard-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:20px}
.visual-dashboard h2{font-size:18px;margin:0;font-weight:600}
.visual-dashboard-heading p,.visual-note{color:var(--muted);font-size:14px;line-height:1.75;margin:8px 0 14px;overflow-wrap:anywhere}
.visual-dashboard-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px;margin:22px 0}
.visual-dashboard .visual-dashboard-grid{grid-template-columns:1fr;gap:28px;margin:0 0 24px}
.visual-figure{min-width:0;margin:0;padding:22px;background:var(--surface);color:var(--ink);border-radius:12px}
.visual-dashboard .visual-figure{padding:0;background:transparent;border-radius:0}
.visual-figure figcaption{font-size:16px;font-weight:500;line-height:1.65;overflow-wrap:anywhere;margin-bottom:20px}
.visual-bars{display:grid;gap:16px;list-style:none;padding:0;margin:0}
.visual-dashboard .visual-bars{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
.visual-bars li{padding:0;margin:0;min-width:0}
.visual-bar-label{display:flex;justify-content:space-between;gap:16px;font-size:14px;line-height:1.65;margin-bottom:7px}
.visual-bar-label>span,.visual-bar-label>a{min-width:0;overflow-wrap:anywhere;color:var(--muted)}
.visual-bar-label>strong{font-variant-numeric:tabular-nums;flex-shrink:0;font-size:15px;font-weight:500}
.visual-track{display:block;width:100%;height:6px;overflow:hidden;border-radius:3px}
.visual-track-background{fill:var(--line)}
.visual-fill{fill:var(--chart-primary)}
.visual-bars li:nth-child(2n) .visual-fill:not(.is-overdue):not(.is-urgent){fill:var(--chart-secondary)}
.visual-fill.is-overdue{fill:var(--danger)}
.visual-fill.is-urgent{fill:var(--amber)}
.visual-empty{font-size:15px;line-height:1.75;color:var(--muted);padding:20px 0}
.visual-detail-link{display:inline-flex;align-items:center;min-height:44px;font-size:14px;color:var(--accent);text-decoration:none}
.visual-definition{margin-top:14px}
.visual-definition>summary{font-size:14px;line-height:1.65;min-height:44px;display:list-item;align-content:center;cursor:pointer;color:var(--muted)}
.visual-definition .visual-note{margin:4px 0 0}
.visual-composition-layout{display:grid;grid-template-columns:minmax(100px,130px) minmax(0,1fr);align-items:center;gap:22px}
.visual-ring{position:relative;width:100%;max-width:130px;aspect-ratio:1}
.visual-ring>svg{display:block;width:100%;height:100%;transform:rotate(-90deg)}
.visual-ring-track,.visual-segment{fill:none;stroke-width:14}
.visual-ring-track{stroke:var(--line)}
.visual-segment{stroke:var(--chart-tone)}
.tone-0{--chart-tone:var(--chart-primary)}
.tone-1{--chart-tone:var(--chart-secondary)}
.tone-2{--chart-tone:var(--chart-tertiary)}
.tone-3{--chart-tone:var(--chart-warm)}
.tone-4{--chart-tone:var(--chart-muted)}
.tone-5{--chart-tone:var(--chart-faint)}
.visual-ring-total{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;pointer-events:none}
.visual-ring-total strong{font-size:32px;line-height:1.2;font-weight:500;font-variant-numeric:tabular-nums}
.visual-ring-total span{font-size:14px;color:var(--muted);margin-top:4px}
.visual-legend{list-style:none;display:grid;gap:8px;margin:0;padding:0}
.visual-legend li{display:grid;grid-template-columns:8px minmax(0,1fr) auto;gap:8px;align-items:center;min-width:0;font-size:14px;line-height:1.6}
.visual-legend li>span:not(.visual-swatch){overflow-wrap:anywhere;color:var(--muted)}
.visual-legend strong{font-size:15px;font-weight:500;font-variant-numeric:tabular-nums}
.visual-swatch{width:8px;height:8px;border-radius:50%;background:var(--chart-tone)}
.visual-period-amount{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px 12px;min-width:0;padding:20px;background:var(--accent-soft);border-radius:10px;text-decoration:none;font-size:14px;color:var(--muted)}
.visual-period-amount>span:first-child{grid-column:1/-1}
.visual-period-amount strong{font-size:26px;line-height:1.3;font-weight:500;color:var(--ink);font-variant-numeric:tabular-nums;white-space:nowrap}
.visual-period-amount>span:last-child{font-size:20px;color:var(--accent)}
.visual-pool-link{display:inline-flex;align-items:center;gap:8px;min-height:44px;font-size:15px;color:var(--accent)}
.visual-stats-total{margin-top:26px}
.visual-stats-total>span{font-size:14px;color:var(--muted)}
.visual-stats-total strong{display:block;font-size:34px;font-weight:500;line-height:1.4;font-variant-numeric:tabular-nums;white-space:nowrap;margin-top:6px}
.visual-stats-total+p{font-size:14px;color:var(--muted);margin-top:4px}
.visual-stats-details{margin-top:20px}
.visual-stats-details>summary{font-size:15px;min-height:44px;align-content:center;cursor:pointer}
.platform-chart-grid>.card{min-width:0;align-self:start}
.platform-chart-grid .visual-figure{margin-bottom:18px;padding:0}
.platform-chart-grid .chart-holder{height:280px}
.platform-chart-grid>.card:has([data-platform-chart="trend"]){grid-column:1/-1}
.platform-chart-grid .metric-details{margin:10px 0 0}
.platform-chart-grid .metric-details>summary{min-height:44px;cursor:pointer;font-size:15px;line-height:1.6}
.visual-dashboard-grid>.visual-figure:only-child{grid-column:1/-1}
@media(max-width:700px){
 .visual-dashboard{padding:18px}
 .visual-dashboard-heading{gap:8px}
 .visual-dashboard-grid{grid-template-columns:minmax(0,1fr);gap:24px}
 .visual-figure{padding:0}
 .visual-bar-label{flex-wrap:wrap;gap:4px 12px}
 .visual-bar-label>strong{margin-left:auto}
}
@media(max-width:480px){
 .visual-composition-layout{grid-template-columns:minmax(0,1fr);gap:20px}
 .visual-ring{width:130px;justify-self:center}
 .visual-legend{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 12px}
 .visual-legend li{gap:6px}
 .visual-period-amount strong{font-size:24px}
 .visual-stats-total strong{font-size:clamp(22px,7vw,32px)}
 .kpis .kpi-money{grid-column:1/-1}
 .kpi-money strong{white-space:nowrap;font-size:clamp(18px,5.8vw,26px)}
}
@media(forced-colors:active){.visual-track{border:1px solid CanvasText}.visual-fill{fill:CanvasText;forced-color-adjust:none}.visual-ring-track{stroke:GrayText}.visual-segment{stroke:CanvasText}.visual-swatch{background:CanvasText;forced-color-adjust:none}}
