.candidate-shot-controls{display:grid;gap:.65rem;width:100%;min-width:0;grid-column:1 / -1;color:var(--ink);font:400 .8rem/1.4 var(--type-ui)}
.candidate-parameter-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,9rem),1fr));align-items:stretch;gap:.65rem;min-width:0}
.candidate-shot-controls .candidate-parameter{display:grid;align-content:start;justify-items:center;gap:.35rem;min-width:0;padding:.6rem;border:1px solid var(--rule);border-radius:var(--radius-small);background:var(--panel-tint)}
.candidate-shot-controls .candidate-parameter-title{margin:0;justify-self:start;color:var(--muted);font:700 .75rem/1.3 var(--type-ui)}
.candidate-shot-controls p{margin:0;max-width:100%;text-align:center;overflow-wrap:anywhere}
.candidate-shot-controls .candidate-parameter-number{font-size:.75rem;font-variant-numeric:tabular-nums}
.candidate-shot-controls .candidate-parameter-keyword{font-weight:700;color:var(--accent-2)}
.candidate-shot-controls .candidate-parameter-detail{font-size:.7rem;color:var(--muted);font-variant-numeric:tabular-nums}
.candidate-shot-controls .candidate-parameter-unavailable{padding:.6rem 0;color:var(--muted);font-size:.75rem}
.candidate-shot-controls .contact-picker-pad{max-width:12rem;cursor:default;touch-action:auto;user-select:auto}
.candidate-shot-controls .candidate-tip-pad{width:100%;height:auto;max-width:10rem;aspect-ratio:1;cursor:default;touch-action:auto;user-select:auto}
.candidate-shot-controls .candidate-speed-meter{position:relative;box-sizing:border-box;width:calc(100% - .75rem);height:.5rem;margin:1.35rem .375rem 1rem;border-radius:1rem;background:var(--shot-speed-gradient)}
.candidate-shot-controls .candidate-speed-marker{position:absolute;top:50%;box-sizing:border-box;width:1rem;height:1rem;transform:translate(-50%,-50%);border:2px solid white;border-radius:50%;background:var(--ink);box-shadow:0 0 0 1px var(--ink)}
.candidate-shot-controls .cue-elevation{width:100%;max-width:16rem;min-width:0;pointer-events:none}
.candidate-shot-controls .candidate-aim-disclaimer{grid-column:1 / -1;text-align:left;color:var(--muted);font-size:.7rem}

/* Inside a ranked row the cards are a reference, not the main instrument: the
   diagrams shrink so an expanded row stays scannable. The winner's cards above
   the list keep their full size. */
.candidate-parameters .candidate-shot-controls{gap:.4rem}
.candidate-parameters .candidate-parameter-grid{gap:.4rem;grid-template-columns:repeat(auto-fit,minmax(min(100%,7.5rem),1fr))}
.candidate-parameters .candidate-shot-controls .candidate-parameter{gap:.25rem;padding:.4rem}
.candidate-parameters .candidate-shot-controls .contact-picker-pad{max-width:8rem}
.candidate-parameters .candidate-shot-controls .candidate-tip-pad{max-width:6rem}
.candidate-parameters .candidate-shot-controls .cue-elevation{max-width:11rem}
.candidate-parameters .candidate-shot-controls .candidate-speed-meter{margin:.9rem .375rem .75rem}
