/* Dashboard charts use local SVGs and the application's cached data. */
.dashboard-intro { display:flex; align-items:center; justify-content:space-between; gap:12px; margin:-4px 0 16px; color:var(--ink-m); font-size:11px; }
.dashboard-live { display:inline-flex; align-items:center; gap:8px; color:var(--primary); font-weight:750; }
.dashboard-live i { width:7px; height:7px; border-radius:50%; background:#2b9778; box-shadow:0 0 0 4px #e1f2e9; }
.dashboard-overview { container:dashboard-overview / inline-size; margin-bottom:22px; }
.vbars.overview.dashboard-stats { grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; margin-bottom:12px; }
.dashboard-stats .vbar { container-type:inline-size; min-height:174px; padding:20px; }
.dashboard-stats .vbar-lbl { min-height:30px; line-height:1.5; letter-spacing:.07em; }
.dashboard-money { margin-top:12px; }
.dashboard-currency { display:block; margin-bottom:4px; color:var(--ink-m); font-size:10px; font-weight:750; letter-spacing:.09em; }
.dashboard-stats .vbar-val { margin-top:0; font-size:clamp(18px,7.8cqi,30px); white-space:nowrap; overflow-wrap:normal; word-break:normal; letter-spacing:-.025em; line-height:1.2; }
.dashboard-stats .vbar-sub { min-height:32px; margin-top:12px; line-height:1.5; }
.dashboard-stats .dashboard-balance-card { background:#f0f8f5; border-color:#cde4db; }
.dashboard-activity-strip { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); background:#fff; border:1px solid var(--bd); border-radius:12px; box-shadow:var(--shad); }
.dashboard-activity { display:flex; align-items:center; gap:18px; min-width:0; padding:15px 20px; }
.dashboard-activity + .dashboard-activity { border-left:1px solid var(--bd); }
.dashboard-activity-value { flex:none; min-width:66px; color:var(--primary); font-size:26px; font-weight:780; line-height:1.2; letter-spacing:-.035em; font-variant-numeric:tabular-nums; white-space:nowrap; }
.dashboard-activity strong { display:block; color:var(--ink); font-size:11.5px; font-weight:750; }
.dashboard-activity span { display:block; margin-top:4px; color:var(--ink-m); font-size:11px; line-height:1.5; }
@container dashboard-overview (max-width:600px) {
  .vbars.overview.dashboard-stats { grid-template-columns:1fr; gap:10px; }
  .dashboard-stats .vbar { display:grid; grid-template-columns:minmax(0,1fr) auto; grid-template-areas:"label amount" "detail amount"; align-items:center; column-gap:18px; min-height:105px; padding:17px 20px; }
  .dashboard-stats .vbar-lbl { grid-area:label; min-height:0; }
  .dashboard-money { grid-area:amount; margin:0; text-align:right; }
  .dashboard-stats .vbar-val { font-size:clamp(18px,4.8cqi,27px); }
  .dashboard-stats .vbar-sub { grid-area:detail; min-height:0; margin-top:6px; }
}
@container dashboard-overview (max-width:500px) {
  .dashboard-activity-strip { grid-template-columns:1fr; }
  .dashboard-activity + .dashboard-activity { border-left:0; border-top:1px solid var(--bd); }
}
@container dashboard-overview (max-width:360px) {
  .dashboard-stats .vbar { grid-template-columns:1fr; grid-template-areas:"label" "amount" "detail"; row-gap:8px; }
  .dashboard-money { text-align:left; }
  .dashboard-stats .vbar-val { font-size:clamp(18px,7.8cqi,26px); }
  .dashboard-stats .vbar-sub { margin:0; }
}
.dashboard-stats.overview .vbar:nth-child(3)::before { background:#74b89e; }
.dashboard-quality { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:13px 16px; margin-bottom:20px; border:1px solid #ecd29f; border-radius:12px; background:#fff8e9; color:#765317; font-size:12px; }
.dashboard-quality[hidden], .dashboard-map-status[hidden], #dash-map-retry[hidden], #dash-conflicts-btn[hidden] { display:none; }
.dashboard-quality .btn { flex:none; }
.dashboard-chart-toolbar { display:flex; align-items:center; justify-content:space-between; gap:20px; margin:6px 0 16px; }
.dashboard-chart-toolbar strong { color:var(--ink); font-size:14px; }
.dashboard-chart-toolbar p { margin-top:4px; color:var(--ink-m); font-size:11.5px; line-height:1.5; }
.dashboard-metric-toggle { display:flex; flex:none; gap:4px; padding:4px; border:1px solid var(--bd); border-radius:10px; background:#eaf1ef; }
.dashboard-metric-toggle button { padding:9px 13px; border:0; border-radius:7px; background:transparent; color:var(--ink-s); font-size:11.5px; font-weight:750; white-space:nowrap; }
.dashboard-metric-toggle button.active { color:var(--primary); background:#fff; box-shadow:0 1px 5px rgba(16,45,61,.10); }
.dashboard-metric-toggle button:hover { color:var(--primary); }
.dashboard-charts { display:grid; grid-template-columns:minmax(0,1.9fr) minmax(280px,1fr); gap:20px; align-items:stretch; margin-bottom:20px; }
.dashboard-charts .card { margin-bottom:0; min-width:0; }
.dashboard-card-head { align-items:flex-start; justify-content:space-between; gap:16px; padding:21px 23px; }
.dashboard-card-head h2 { margin:0; font-size:18px; letter-spacing:-.025em; }
.dashboard-card-head .step-sub { margin-top:5px; font-size:11.5px; line-height:1.5; }
.dashboard-eyebrow { color:var(--primary); font-size:9px; font-weight:850; letter-spacing:.15em; margin-bottom:7px; }
.dashboard-control { display:flex; flex-direction:column; gap:5px; flex:none; margin:0; color:var(--ink-m); font-size:10px; font-weight:700; }
.dashboard-control select { width:100%; min-height:35px; padding:6px 28px 6px 10px; font-size:11px; background-color:#fff; }
.dashboard-map-body { display:grid; grid-template-columns:minmax(0,1.4fr) minmax(185px,1fr); align-items:stretch; min-height:445px; }
.dashboard-map-stage { position:relative; min-width:0; padding:12px 14px 14px; background:radial-gradient(ellipse at 45% 40%,#f8fcfb 0%,#eef5f3 78%); border-radius:0 0 0 13px; }
.dashboard-map { display:block; width:100%; height:380px; margin:0 auto; overflow:visible; }
.dashboard-map-region { cursor:pointer; outline:none; }
.dashboard-map-region path { stroke:#fff; stroke-width:1.6; stroke-linejoin:round; vector-effect:non-scaling-stroke; transition:fill .18s; }
.dashboard-map-region text { fill:#264d47; font-family:inherit; font-size:10px; font-weight:800; letter-spacing:.03em; pointer-events:none; }
.dashboard-map-region.dark text { fill:#fff; }
.dashboard-map-region:hover path { stroke:#5a8376; stroke-width:2.4; }
.dashboard-map-region.selected path, .dashboard-map-region:focus-visible path { stroke:#a86e12; stroke-width:3; }
.dashboard-map-region.selected text { paint-order:stroke; stroke:#fff; stroke-width:2; fill:#6f4b12; }
.dashboard-map-status { margin:8px 0; padding:11px; color:var(--ink-m); font-size:12px; text-align:center; }
.dashboard-map-stage:has(.dashboard-map-status:not([hidden])) .dashboard-map { height:270px; }
.dashboard-map-legend { display:flex; align-items:center; gap:8px; max-width:240px; margin:6px auto 0; color:var(--ink-s); font-size:10px; font-variant-numeric:tabular-nums; }
.dashboard-map-gradient { flex:1; height:8px; border-radius:20px; background:linear-gradient(90deg,rgb(239 149 143),rgb(220 170 38),rgb(26 128 77)); }
.dashboard-map-caption { margin:8px auto 0; max-width:270px; color:var(--ink-m); font-size:10px; line-height:1.5; text-align:center; }
.dashboard-attribution { margin:10px 0 0; color:var(--ink-m); font-size:8.5px; line-height:1.5; text-align:center; }
.dashboard-attribution a { color:inherit; text-decoration:underline; text-underline-offset:2px; }
.dashboard-region-panel { display:flex; flex-direction:column; min-width:0; gap:16px; padding:22px 19px; border-left:1px solid var(--bd); background:#fff; border-radius:0 0 13px; }
.dashboard-region-details h3 { margin:0 0 4px; font-size:17px; font-weight:800; color:var(--ink); }
.dashboard-region-details > p { color:var(--ink-m); font-size:10.5px; line-height:1.4; }
.dashboard-region-percent { display:flex; align-items:baseline; flex-wrap:wrap; gap:7px; margin:20px 0 8px; }
.dashboard-region-percent strong { color:var(--primary); font-size:32px; letter-spacing:-.05em; line-height:1; }
.dashboard-region-percent > span { color:var(--ink-m); font-size:11px; }
.dashboard-coverage-track { display:block; height:6px; border-radius:10px; background:#e7efec; overflow:hidden; }
.dashboard-coverage-track > span { display:block; height:100%; border-radius:inherit; background:var(--primary); }
.dashboard-region-counts { margin:20px 0; }
.dashboard-region-counts > div { display:flex; justify-content:space-between; gap:8px; margin:13px 0; color:var(--ink-s); font-size:11px; }
.dashboard-region-counts dt { display:flex; align-items:center; gap:7px; }
.dashboard-region-counts dd { margin:0; color:var(--ink); font-size:13px; font-weight:800; font-variant-numeric:tabular-nums; }
.dashboard-dot { display:inline-block; width:9px; height:9px; flex:none; border-radius:50%; }
.dashboard-dot.allocated { background:var(--primary); }
.dashboard-dot.available { background:#d5b46e; }
.dashboard-region-value { padding-top:14px; border-top:1px solid var(--bd); }
.dashboard-region-value[hidden] { display:none; }
.dashboard-value-mode .dashboard-region-counts > div { display:block; }
.dashboard-value-mode .dashboard-region-counts dd { margin-top:5px; white-space:nowrap; }
.dashboard-region-value span { display:block; }
.dashboard-region-value strong { display:block; margin-top:5px; color:var(--ink); font-size:13px; overflow-wrap:anywhere; }
.dashboard-region-panel > .btn { margin-top:auto; white-space:normal; width:100%; font-size:10.5px; }
.dashboard-status-card { display:flex; flex-direction:column; }
.dashboard-status-body { display:flex; flex:1; flex-direction:column; padding:18px 23px 23px; }
.dashboard-donut-wrap { max-width:230px; width:100%; margin:0 auto 14px; }
.dashboard-donut { display:block; width:100%; height:auto; }
.dashboard-donut circle { fill:none; stroke-width:25; }
.dashboard-donut-track { stroke:#ead9b7; }
.dashboard-donut.empty .dashboard-donut-track { stroke:#e7edef; }
.dashboard-donut-allocated { stroke:var(--primary); }
.dashboard-donut-number { font-family:inherit; font-size:35px; font-weight:800; letter-spacing:-1.5px; fill:var(--ink); }
.dashboard-donut-label { font-family:inherit; font-size:12px; fill:var(--ink-m); }
.dashboard-pie-legend { margin:0 0 20px; }
.dashboard-pie-legend > div { display:flex; align-items:center; justify-content:space-between; gap:15px; padding:12px 0; border-bottom:1px solid var(--bd); }
.dashboard-pie-legend dt { display:flex; align-items:center; gap:8px; color:var(--ink-s); font-size:12px; }
.dashboard-pie-legend dd { margin:0; text-align:right; }
.dashboard-pie-legend dd strong { display:block; font-size:18px; color:var(--ink); font-variant-numeric:tabular-nums; }
.dashboard-pie-legend dd strong { white-space:nowrap; }
.dashboard-value-mode .dashboard-pie-legend > div { flex-wrap:wrap; }
.dashboard-value-mode .dashboard-pie-legend dd { flex-basis:100%; text-align:left; }
.dashboard-value-mode .dashboard-pie-legend dd strong { font-size:17px; }
.dashboard-pie-total { margin:-8px 0 20px; color:var(--ink-m); font-size:10px; }
.dashboard-pie-total strong { display:block; margin-top:5px; color:var(--ink); font-size:13px; font-variant-numeric:tabular-nums; white-space:nowrap; }
.dashboard-pie-legend dd span { display:block; margin-top:3px; font-size:10px; color:var(--ink-m); }
.dashboard-next { margin-top:auto; padding:15px; border-radius:10px; background:#f1f7f4; }
.dashboard-next > strong { display:block; font-size:12px; color:var(--ink); }
.dashboard-next p { margin:5px 0 13px; color:var(--ink-m); font-size:11px; line-height:1.5; }
.dashboard-next .btn { width:100%; justify-content:space-between; font-size:11px; min-height:36px; }
.dashboard-region-table { overflow:hidden; }
.dashboard-region-table table { width:100%; }
.dashboard-region-table tbody th { padding:12px 23px; background:#fff; text-transform:none; letter-spacing:0; }
.dashboard-region-table thead th:first-child { padding-left:23px; }
.dashboard-region-table td { padding:12px 15px; font-size:12px; }
.dashboard-region-table td.num { white-space:nowrap; }
.dashboard-region-table tr.selected td, .dashboard-region-table tr.selected th { background:#edf6f2; }
.dashboard-region-link { padding:0; border:0; background:transparent; color:var(--ink); font-size:12px; font-weight:750; text-align:left; white-space:nowrap; }
.dashboard-region-link:hover { color:var(--primary); text-decoration:underline; text-underline-offset:3px; }
.dashboard-table-coverage { min-width:170px; }
.dashboard-table-coverage .dashboard-coverage-track { display:inline-block; width:85px; margin-right:10px; vertical-align:middle; }
.dashboard-table-coverage > span:last-child { display:inline-block; min-width:40px; color:var(--primary); font-size:11px; font-weight:800; font-variant-numeric:tabular-nums; }
.dashboard-method { margin:8px 0; color:var(--ink-m); font-size:11px; line-height:1.7; }
@media (min-width:1600px) { .dashboard-map { height:425px; } .dashboard-map-body { grid-template-columns:minmax(0,1.65fr) minmax(220px,1fr); } }
@media (max-width:1180px) { .dashboard-charts { grid-template-columns:1fr; } .dashboard-status-body { display:grid; grid-template-columns:220px 1fr 1fr; align-items:center; gap:24px; } .dashboard-donut-wrap, .dashboard-pie-legend { margin:0; } .dashboard-next { margin:0; } .dashboard-map { height:400px; } }
@media (max-width:720px) { .dashboard-intro { flex-wrap:wrap; } .dashboard-card-head { padding:18px; flex-wrap:wrap; } .dashboard-map-body { grid-template-columns:minmax(0,1.25fr) minmax(170px,1fr); } .dashboard-region-panel { padding:18px 14px; } .dashboard-map { height:330px; } .dashboard-status-body { grid-template-columns:minmax(150px,1fr) 1fr; padding:18px; gap:18px; } .dashboard-next { grid-column:1 / -1; } .dashboard-quality { align-items:flex-start; flex-direction:column; } }
@media (max-width:480px) { .dashboard-map-body { grid-template-columns:1fr; } .dashboard-map { height:360px; } .dashboard-region-panel { border-left:0; border-top:1px solid var(--bd); border-radius:0 0 13px 13px; } .dashboard-region-counts > div { margin:10px 0; } .dashboard-region-panel > .btn { min-height:40px; } .dashboard-status-body { grid-template-columns:1fr; } .dashboard-donut-wrap { margin:0 auto; max-width:220px; } .dashboard-next { grid-column:auto; } }
@media (prefers-reduced-motion:reduce) { .dashboard-map-region path { transition:none; } }
@media (max-width:720px) { .dashboard-chart-toolbar { align-items:flex-start; flex-direction:column; gap:12px; } .dashboard-metric-toggle { align-self:flex-start; } }
