/* Chart wrapper: chips (mobile) above, then the canvas, then the gap note. The canvas has its OWN definite height (Chart.js needs one for maintainAspectRatio: false); the chips and the note flow at their natural size around it rather than competing with it for a fixed outer height — so a longer note (e.g. the KS4 gap caption) or a two-row chip legend can never squash the chart. */ .wrapper { display: flex; flex-direction: column; } .canvasBox { position: relative; height: 380px; } @media (max-width: 640px) { .canvasBox { height: 280px; } } /* 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; }