/* M-104 练习单线上作答（教师端）：发出弹层里的「判分用的答案」和已发出练习单里的「线上作答」一块。颜色都取 tokens.css：主色 = 选中，绿 = 对，琥珀只给「没答」。 */
.so{margin:8px 0 0}
.so-keys{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0}
.so-keys.dim{opacity:.55}
.so-key{min-height:44px;min-width:56px;padding:6px 12px;border-radius:var(--r-pill);border:1px solid var(--pri-b);background:var(--pri-s);color:var(--pri-t);font-size:14px;font-weight:600;font-variant-numeric:tabular-nums;cursor:pointer}
.so-key.off{background:var(--panel);border-color:var(--line);color:var(--faint);text-decoration:line-through}
.so-t td.num{font-variant-numeric:tabular-nums;white-space:nowrap}
.so-dist span{font-variant-numeric:tabular-nums}
.so-dist .ok{color:var(--ok);font-weight:600}
.so-dist .top{font-weight:700;color:var(--ink)}
.so-act{margin:12px 0 4px}
/* 组题「练习单」步：每题能不能线上作答（主色浅底 = 可线上作答，中性灰 = 仅打印），列表上面一行汇总 */
.so-tag{display:inline-block;padding:1px 8px;border-radius:var(--r-pill);font-size:12px;line-height:1.6;background:var(--line);color:var(--muted)}
.so-tag.on{background:var(--pri-s);color:var(--pri-t)}
.so-sum{margin:0 0 8px;color:var(--ink)}
