.viz-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}
.viz-box {
  align-content: start;
  border: none;
  background: none;
  padding: 0;
}
.viz-head {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: baseline;
}
.alloc-visual {
  width: 100%;
  display: block;
}
.alloc-treemap {
  aspect-ratio: 5 / 3;
}
.alloc-curve {
  aspect-ratio: 2 / 1;
}
.visual-left .treemap-tile {
  fill: #cadeff;
}
.visual-right .treemap-tile {
  fill: #d8efdf;
}
.treemap-tile {
  stroke: rgba(17, 17, 17, 0.25);
  stroke-width: 0.5;
  transition: opacity 120ms ease;
}
.treemap-group {
  cursor: pointer;
}
.treemap-group:hover .treemap-tile {
  opacity: 0.7;
  stroke: var(--ink);
  stroke-width: 1;
}
.tile-label,
.tile-value {
  fill: var(--ink);
  pointer-events: none;
}
.treemap-tooltip {
  position: fixed;
  z-index: 100;
  pointer-events: none;
  padding: 6px 10px;
  border: 2px solid var(--line);
  background: var(--paper);
  box-shadow: 3px 3px 0 var(--line);
  font: 0.82rem/1.4 "IBM Plex Mono", monospace;
  white-space: nowrap;
}
.treemap-tooltip strong {
  display: block;
}
.tile-label {
  font-size: 3px;
  font-weight: 700;
}
.tile-value {
  font-size: 2.4px;
  fill: var(--muted);
}
.treemap-rest .treemap-tile {
  fill: rgba(17, 17, 17, 0.06);
  stroke-dasharray: 1.5 0.8;
}
.treemap-rest .tile-label,
.treemap-rest .tile-value {
  fill: var(--muted);
  font-weight: 400;
}
.curve-area {
  opacity: 0.18;
}
.visual-left .curve-area {
  fill: var(--accent);
}
.visual-right .curve-area {
  fill: var(--good);
}
.visual-left .curve-line {
  stroke: var(--accent);
}
.visual-right .curve-line {
  stroke: var(--good);
}
.curve-line {
  fill: none;
  stroke-width: 1.5;
}
.treemap-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
}
.chart-empty {
  display: grid;
  place-items: center;
  min-height: 120px;
  border: 2px dashed var(--line);
}
@media (max-width: 980px) {
  .viz-grid,
  .treemap-grid {
    grid-template-columns: 1fr;
  }
}
