/* The live-number strip shared by the guide articles that carry one.
   Pulled out of the two page-local <style> blocks it started in (grad-rate
   and three-school-floor) once a third page needed the same six selectors.
   Deliberately NOT folded into costs.css: that file is loaded by 835 pages
   (every cost page and every other guide), so adding strip-only selectors
   there would restamp and redeploy all of them. The panel itself still
   reuses costs.css's .calc / .calc-grid / .calc-f / .calc-out unchanged. */
.gs-cells { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }
.gs-cell { min-width: 0; }
/* Two lines reserved so the three values sit on one baseline even when a
   label wraps — the strip is a row of numbers, not three independently-
   flowing columns. */
.gs-cell .micro { margin-bottom: 8px; line-height: 1.4; min-height: 2.8em; }
.gs-val {
  font-family: var(--display); font-weight: 700; font-size: 30px;
  line-height: 1; color: var(--green); font-variant-numeric: tabular-nums;
}
.gs-val.dim { color: var(--text-faint); font-weight: 500; }
.gs-val .gs-name { color: var(--text); font-weight: 500; font-size: 16px; }
@media (max-width: 680px) {
  .gs-cells { grid-template-columns: 1fr; gap: 16px; }
  .gs-cells + .micro { margin-top: 12px; }
  .gs-cell .micro { min-height: 0; }
}

/* Touch floors for the strip's one control. costs.css sizes .calc-f fields
   at 15px / ~38px tall, which is under the 16px iOS zoom-on-focus floor and
   under the 44px comfortable tap box — the same two floors signal-app.css
   fixes for the app's own fields. The app's rule can't reach here (that
   stylesheet is only loaded on pages with #app), so the strip pages carry
   their own copy of it, scoped to the panel and to coarse pointers so
   desktop stays exactly as it was. */
@media (pointer: coarse) and (max-width: 680px) {
  .calc-f input, .calc-f select {
    font-size: 16px; min-height: 44px; padding-top: 11px; padding-bottom: 11px;
  }
}
