/* Chart wrapper: chips (mobile) above, canvas filling the rest of the parent .chartContainer, whose fixed height drives Chart.js sizing via maintainAspectRatio: false. */ .wrapper { display: flex; flex-direction: column; height: 100%; } .canvasBox { position: relative; flex: 1 1 auto; min-height: 0; } /* School chips: mobile-only legend + tap-to-focus control. Desktop keeps Chart.js's built-in legend (with per-school point shapes). */ .chips { display: none; } @media (max-width: 640px) { .chips { /* Two chips per row so long school names don't crowd into a single line; each chip fills its column and truncates with an ellipsis. */ display: grid; grid-template-columns: 1fr 1fr; gap: 6px; padding-bottom: 8px; } .chip { display: inline-flex; align-items: center; gap: 6px; min-height: 40px; min-width: 0; padding: 4px 10px; border: 1px solid rgba(0, 0, 0, .12); border-radius: 999px; background: transparent; cursor: pointer; font-size: 12px; font-weight: 600; } .chip[aria-pressed="true"] { background: rgba(0, 0, 0, .06); border-color: rgba(0, 0, 0, .35); } .chipDot { flex: 0 0 auto; width: 10px; height: 10px; border-radius: 50%; } .chipName { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; /* min-width:0 lets the name shrink inside the grid cell so the ellipsis kicks in instead of overflowing. */ min-width: 0; } } .chartNote { font-size: 0.78rem; color: var(--text-muted); margin: 0.5rem 0 0; }