···4848 const hasDetail = score && score.state !== "unknown";
49495050 // Opacity fades covered talks into the background.
5151- // Range: 1.0 at intensity 1 → 0.5 at intensity 0.
5252- const opacity = 0.5 + glow * 0.5;
5151+ // Range: 1.0 at intensity 1 → 0.2 at intensity 0, with a quadratic curve so
5252+ // low-glow (heavily covered) talks fall off fast — at glow 0.3 the card is
5353+ // already near 0.27 opacity, at glow 0.7 it's at 0.59. Combined with the
5454+ // translucent bg below, this lets covered cards visually recede into the
5555+ // page background while missed talks stay vivid. The wider range and steeper
5656+ // curve are deliberate: the previous linear 0.5–1.0 range left even fully
5757+ // covered cards too solid to read as "faded."
5858+ const opacity = 0.2 + glow * glow * 0.8;
53595460 return (
5561 <div
5662 className={[
5763 "group relative rounded-lg lume-card-contain",
5858- "bg-surface-container-low",
6464+ // Translucent (no backdrop-blur — that was removed in #39 because
6565+ // the compositor cost on 145 stacked cards killed scroll perf).
6666+ // Plain alpha is virtually free at paint time and gives the fade
6767+ // somewhere to dissolve into.
6868+ "bg-surface-container-low/70",
5969 "border-t-2",
6070 glow > 0.3
6171 ? "border-primary-fixed-dim"