@sensiblestats/widget-react 0.94.0 → 0.95.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -19,6 +19,8 @@ var NBA_STAT_EN = { points: "Points", rebounds: "Rebounds", assists: "Assists",
19
19
  var NBA_STAT_TR = { points: "Say\u0131", rebounds: "Ribaund", assists: "Asist", threes: "\xDC\xE7l\xFCk", steals: "Top \xE7alma", blocks: "Blok" };
20
20
  var NBA_STAT_SHORT_EN = { points: "PTS", rebounds: "REB", assists: "AST", threes: "3PM" };
21
21
  var NBA_STAT_SHORT_TR = { points: "SAY", rebounds: "RIB", assists: "AST", threes: "3SY" };
22
+ var NBA_POSITION_EN = { G: "guards", F: "forwards", C: "centers" };
23
+ var NBA_POSITION_TR = { G: "guard", F: "forvet", C: "pivot" };
22
24
  var NBA_STATUS_TR = { Out: "Oynamayacak", Doubtful: "\u015E\xFCpheli", Questionable: "Belirsiz", Probable: "Muhtemel" };
23
25
  var signed = (line) => line.replace(/^-/, "\u2212");
24
26
  var GROUP_NOUN_EN = { G: "goalkeepers", D: "defenders", M: "midfielders", F: "forwards" };
@@ -334,7 +336,26 @@ var STRINGS = {
334
336
  propsLast5: "Last 5 games",
335
337
  propsLadderOnly: "Ladder only",
336
338
  propsMarkets: (n) => `${n} markets`,
337
- propsStatShort: (stat) => NBA_STAT_SHORT_EN[stat] ?? stat
339
+ propsStatShort: (stat) => NBA_STAT_SHORT_EN[stat] ?? stat,
340
+ matchupPace: "Pace",
341
+ matchupOffRating: "Offensive rating",
342
+ matchupDefRating: "Defensive rating",
343
+ rankOf: (r, n) => `rank ${r} of ${n}`,
344
+ daysRest: (d) => `${d} ${d === 1 ? "day" : "days"} rest`,
345
+ backToBack: "Back-to-back",
346
+ allowsToPosition: (team, v, stat, pos, avg) => `${team} allows ${v} ${(NBA_STAT_EN[stat] ?? stat).toLowerCase()} per game to ${NBA_POSITION_EN[pos] ?? pos} (league average ${avg})`,
347
+ quarterWindow1q: "First quarter",
348
+ quarterWindowFirst3: "First 3 min",
349
+ hitsOf: (h, n) => `${h} of ${n}`,
350
+ settled: "Settled",
351
+ actual: "Actual",
352
+ resultOver: "Over",
353
+ resultUnder: "Under",
354
+ resultPush: "Push",
355
+ resultVoid: "Void",
356
+ lastLineBeforeTip: "Last line before tip",
357
+ morePlayers: (n) => `+${n} more players`,
358
+ smallSample: "Small sample"
338
359
  },
339
360
  games: {
340
361
  lang: "en",
@@ -844,7 +865,26 @@ var STRINGS = {
844
865
  propsLast5: "Son 5 ma\xE7",
845
866
  propsLadderOnly: "Sadece alternatif",
846
867
  propsMarkets: (n) => `${n} market`,
847
- propsStatShort: (stat) => NBA_STAT_SHORT_TR[stat] ?? stat
868
+ propsStatShort: (stat) => NBA_STAT_SHORT_TR[stat] ?? stat,
869
+ matchupPace: "Tempo",
870
+ matchupOffRating: "H\xFCcum reytingi",
871
+ matchupDefRating: "Savunma reytingi",
872
+ rankOf: (r, n) => `${n} tak\u0131mda ${r}. s\u0131ra`,
873
+ daysRest: (d) => `${d} g\xFCn dinlenme`,
874
+ backToBack: "Arka arkaya ma\xE7",
875
+ allowsToPosition: (team, v, stat, pos, avg) => `${team}, ${NBA_POSITION_TR[pos] ?? pos} oyunculara ma\xE7 ba\u015F\u0131na ${v} ${(NBA_STAT_TR[stat] ?? stat).toLocaleLowerCase("tr-TR")} veriyor (lig ortalamas\u0131 ${avg})`,
876
+ quarterWindow1q: "\u0130lk \xE7eyrek",
877
+ quarterWindowFirst3: "\u0130lk 3 dakika",
878
+ hitsOf: (h, n) => `${n} ma\xE7ta ${h}`,
879
+ settled: "Sonu\xE7land\u0131",
880
+ actual: "Ger\xE7ek",
881
+ resultOver: "\xDCst",
882
+ resultUnder: "Alt",
883
+ resultPush: "\u0130ade",
884
+ resultVoid: "\u0130ptal",
885
+ lastLineBeforeTip: "Ma\xE7 \xF6ncesi son baraj",
886
+ morePlayers: (n) => `+${n} oyuncu daha`,
887
+ smallSample: "Az ma\xE7"
848
888
  },
849
889
  games: {
850
890
  lang: "tr",
@@ -1059,7 +1099,7 @@ function isEnglishLocale(locale) {
1059
1099
  }
1060
1100
 
1061
1101
  // src/version.generated.ts
1062
- var WIDGET_REACT_VERSION = "0.94.0";
1102
+ var WIDGET_REACT_VERSION = "0.95.0";
1063
1103
 
1064
1104
  // src/config.ts
1065
1105
  function normalizeUi(cfg) {
@@ -1654,6 +1694,27 @@ function comboLegToSlipSelection(leg, conversationId) {
1654
1694
  if (conversationId !== void 0) selection.conversationId = conversationId;
1655
1695
  return selection;
1656
1696
  }
1697
+ var isNum = (v) => typeof v === "number" && Number.isFinite(v);
1698
+ var isObj = (v) => typeof v === "object" && v !== null;
1699
+ var numOrNull = (v) => v === null || v === void 0 || isNum(v);
1700
+ function validMatchupTeam(t) {
1701
+ return isObj(t) && typeof t.name === "string" && typeof t.abbr === "string" && isNum(t.pace) && isNum(t.offRating) && isNum(t.defRating) && isNum(t.n) && isNum(t.teamsRanked) && numOrNull(t.daysRest) && numOrNull(t.paceRank) && numOrNull(t.offRatingRank) && numOrNull(t.defRatingRank);
1702
+ }
1703
+ function validMatchupPosition(p) {
1704
+ return isObj(p) && typeof p.defendingTeamAbbr === "string" && typeof p.position === "string" && typeof p.stat === "string" && isNum(p.allowedPerGame) && isNum(p.leagueAvg) && isNum(p.rank) && isNum(p.teamsRanked) && isNum(p.n);
1705
+ }
1706
+ function sanitizeMatchup(m) {
1707
+ if (!m || !Array.isArray(m.teams) || m.teams.length !== 2 || !m.teams.every(validMatchupTeam)) return null;
1708
+ const teams = m.teams.map((t) => ({ ...t, daysRest: t.daysRest ?? null, paceRank: t.paceRank ?? null, offRatingRank: t.offRatingRank ?? null, defRatingRank: t.defRatingRank ?? null }));
1709
+ return { teams, position: validMatchupPosition(m.position) ? m.position : null };
1710
+ }
1711
+ function validQuarterLadder(q) {
1712
+ return !!q && (q.window === "1q" || q.window === "first3min") && Array.isArray(q.stats) && q.stats.every((st) => isObj(st) && Array.isArray(st.rungs) && st.rungs.every((r) => isObj(r) && typeof r.at === "string" && isNum(r.hits) && isNum(r.n)));
1713
+ }
1714
+ var SETTLE_RESULTS = ["over", "under", "push", "void"];
1715
+ function validSettleRecap(sr) {
1716
+ return !!sr && isObj(sr.summary) && isNum(sr.summary.over) && isNum(sr.summary.under) && isNum(sr.summary.pushes) && isNum(sr.summary.voids) && Array.isArray(sr.players) && sr.players.every((p) => isObj(p) && Array.isArray(p.lines) && p.lines.every((l) => isObj(l) && typeof l.line === "string" && (l.actual === null || typeof l.actual === "string") && SETTLE_RESULTS.includes(l.result)));
1717
+ }
1657
1718
  function nbaEvidence(insight) {
1658
1719
  switch (insight.kind) {
1659
1720
  case "prop_reason":
@@ -1666,6 +1727,14 @@ function nbaEvidence(insight) {
1666
1727
  return insight.coHit && insight.coHit.legs.length === 2 ? { kind: "co_hit", coHit: insight.coHit } : null;
1667
1728
  case "ladder":
1668
1729
  return insight.ladder ? { kind: "ladder", ladder: insight.ladder } : null;
1730
+ case "matchup": {
1731
+ const matchup = sanitizeMatchup(insight.matchup);
1732
+ return matchup ? { kind: "matchup", matchup } : null;
1733
+ }
1734
+ case "quarter_ladder":
1735
+ return validQuarterLadder(insight.quarterLadder) ? { kind: "quarter_ladder", quarterLadder: insight.quarterLadder } : null;
1736
+ case "settle_recap":
1737
+ return validSettleRecap(insight.settleRecap) ? { kind: "settle_recap", settleRecap: insight.settleRecap } : null;
1669
1738
  default:
1670
1739
  return null;
1671
1740
  }
@@ -2612,7 +2681,7 @@ function clearConversation(storageKey) {
2612
2681
  }
2613
2682
 
2614
2683
  // src/presets.ts
2615
- var CLIENT_CAPABILITIES = ["price_presets", "price_presets_open", "limit_notice", "nba_insight"];
2684
+ var CLIENT_CAPABILITIES = ["price_presets", "price_presets_open", "limit_notice", "nba_insight", "nba_insight_v2"];
2616
2685
  var PRICE_TILE_PREFIX = "goal-preset-";
2617
2686
  function isPriceTile(tile) {
2618
2687
  const id = tile.signal?.entityId;
@@ -5053,19 +5122,23 @@ function NbaPrice({ vm, selectionKey, label, ui, slip }) {
5053
5122
  function Head({ vm, chip, ui, monitor }) {
5054
5123
  const fixture = vm.homeTeamName && vm.awayTeamName ? `${vm.homeTeamName} vs ${vm.awayTeamName}` : vm.competition;
5055
5124
  const meta = [fixture, vm.kickoffLabel].filter(Boolean).join(" \xB7 ");
5125
+ const pinnable = monitor?.enabled === true && vm.evidence.kind !== "settle_recap";
5056
5126
  return /* @__PURE__ */ jsxs13("div", { className: "ss-w-nba-head", children: [
5057
5127
  /* @__PURE__ */ jsxs13("div", { className: "ss-w-nba-head-l", children: [
5058
5128
  meta ? /* @__PURE__ */ jsx17("p", { className: "ss-w-nba-meta", children: meta }) : null,
5059
5129
  /* @__PURE__ */ jsx17("p", { className: "ss-w-nba-title", children: vm.title })
5060
5130
  ] }),
5061
- chip || monitor?.enabled ? /* @__PURE__ */ jsxs13("span", { className: "ss-w-bi-meta-right", children: [
5131
+ chip || pinnable ? /* @__PURE__ */ jsxs13("span", { className: "ss-w-bi-meta-right", children: [
5062
5132
  chip ? /* @__PURE__ */ jsx17("span", { className: "ss-w-nba-chip", children: chip }) : null,
5063
- monitor?.enabled ? /* @__PURE__ */ jsx17(PinToggle, { ui, monitor, pin: { kind: "match", matchId: vm.matchId, sport: "basketball" } }) : null
5133
+ pinnable && monitor ? /* @__PURE__ */ jsx17(PinToggle, { ui, monitor, pin: { kind: "match", matchId: vm.matchId, sport: "basketball" } }) : null
5064
5134
  ] }) : null
5065
5135
  ] });
5066
5136
  }
5067
5137
  function Foot({ vm, ui, lines }) {
5068
- return /* @__PURE__ */ jsx17("div", { className: "ss-w-nba-foot", children: [...lines, ui.nba.quoted(clock(vm.quotedAtUtc)), ...vm.disclaimer ? [vm.disclaimer] : []].join(" ") });
5138
+ const quoted = Object.keys(vm.selections).length > 0 ? [ui.nba.quoted(clock(vm.quotedAtUtc))] : [];
5139
+ const parts = [...lines, ...quoted, ...vm.disclaimer ? [vm.disclaimer] : []];
5140
+ if (parts.length === 0) return null;
5141
+ return /* @__PURE__ */ jsx17("div", { className: "ss-w-nba-foot", children: parts.join(" ") });
5069
5142
  }
5070
5143
  function PropReason({ vm, pr, ui, slip }) {
5071
5144
  const nba = ui.nba;
@@ -5134,6 +5207,117 @@ function Ladder({ vm, ld, ui, slip }) {
5134
5207
  ] })
5135
5208
  ] }, `${st.stat}:${si}`)) });
5136
5209
  }
5210
+ function SmallSample({ ui }) {
5211
+ return /* @__PURE__ */ jsx17("span", { className: "ss-w-nba-small", children: ui.nba.smallSample });
5212
+ }
5213
+ function NbaMatchupBody({ mu, ui }) {
5214
+ const nba = ui.nba;
5215
+ const metrics = [
5216
+ { label: nba.matchupPace, value: (t) => t.pace, rank: (t) => t.paceRank },
5217
+ { label: nba.matchupOffRating, value: (t) => t.offRating, rank: (t) => t.offRatingRank },
5218
+ { label: nba.matchupDefRating, value: (t) => t.defRating, rank: (t) => t.defRatingRank }
5219
+ ];
5220
+ const pos = mu.position;
5221
+ return /* @__PURE__ */ jsxs13(Fragment2, { children: [
5222
+ /* @__PURE__ */ jsxs13("div", { className: "ss-w-nba-mu", children: [
5223
+ /* @__PURE__ */ jsx17("span", {}),
5224
+ mu.teams.map((t) => /* @__PURE__ */ jsxs13("span", { className: "ss-w-nba-mu-team", title: t.name, children: [
5225
+ /* @__PURE__ */ jsx17("b", { children: t.abbr }),
5226
+ /* @__PURE__ */ jsx17("span", { className: "ss-w-nba-hd", children: nba.lastN(t.n) }),
5227
+ t.smallSample ? /* @__PURE__ */ jsx17(SmallSample, { ui }) : null
5228
+ ] }, `h:${t.teamId}`)),
5229
+ metrics.map((m) => /* @__PURE__ */ jsxs13("div", { className: "ss-w-nba-row", children: [
5230
+ /* @__PURE__ */ jsx17("span", { className: "ss-w-nba-hd", children: m.label }),
5231
+ mu.teams.map((t) => {
5232
+ const r = m.rank(t);
5233
+ return /* @__PURE__ */ jsxs13("span", { className: "ss-w-nba-mu-v", children: [
5234
+ /* @__PURE__ */ jsx17("b", { children: oneDecimal(m.value(t), ui) }),
5235
+ r !== null ? /* @__PURE__ */ jsx17("span", { children: nba.rankOf(r, t.teamsRanked) }) : null
5236
+ ] }, `${m.label}:${t.teamId}`);
5237
+ })
5238
+ ] }, m.label)),
5239
+ mu.teams.some((t) => t.daysRest !== null || t.backToBack) ? /* @__PURE__ */ jsxs13("div", { className: "ss-w-nba-row", children: [
5240
+ /* @__PURE__ */ jsx17("span", {}),
5241
+ mu.teams.map((t) => /* @__PURE__ */ jsxs13("span", { className: "ss-w-nba-mu-rest", children: [
5242
+ t.daysRest !== null ? nba.daysRest(t.daysRest) : "",
5243
+ t.daysRest !== null && t.backToBack ? " \xB7 " : "",
5244
+ t.backToBack ? /* @__PURE__ */ jsx17("span", { className: "ss-w-nba-b2b", children: nba.backToBack }) : null
5245
+ ] }, `rest:${t.teamId}`))
5246
+ ] }) : null
5247
+ ] }),
5248
+ pos ? /* @__PURE__ */ jsxs13("p", { className: "ss-w-nba-mu-pos", children: [
5249
+ nba.allowsToPosition(pos.defendingTeamAbbr, oneDecimal(pos.allowedPerGame, ui), pos.stat, pos.position, oneDecimal(pos.leagueAvg, ui)),
5250
+ " ",
5251
+ /* @__PURE__ */ jsx17("span", { className: "ss-w-nba-note", children: nba.rankOf(pos.rank, pos.teamsRanked) }),
5252
+ pos.smallSample ? /* @__PURE__ */ jsx17(SmallSample, { ui }) : null
5253
+ ] }) : null
5254
+ ] });
5255
+ }
5256
+ function NbaQuarterLadderBody({ vm, ql, ui, slip }) {
5257
+ const nba = ui.nba;
5258
+ const windowLabel = ql.window === "1q" ? nba.quarterWindow1q : ql.window === "first3min" ? nba.quarterWindowFirst3 : "";
5259
+ return /* @__PURE__ */ jsx17(Fragment2, { children: ql.stats.map((st, si) => /* @__PURE__ */ jsxs13("div", { className: "ss-w-nba-stat", children: [
5260
+ /* @__PURE__ */ jsxs13("div", { className: "ss-w-nba-stathd", children: [
5261
+ /* @__PURE__ */ jsx17("b", { children: nba.stat(st.stat) }),
5262
+ /* @__PURE__ */ jsx17("span", { children: windowLabel }),
5263
+ st.rungs.some((r) => r.n < 5) ? /* @__PURE__ */ jsx17(SmallSample, { ui }) : null
5264
+ ] }),
5265
+ /* @__PURE__ */ jsxs13("div", { className: "ss-w-nba-ladder ss-w-nba-ladder--q", children: [
5266
+ /* @__PURE__ */ jsxs13("div", { className: "ss-w-nba-row", children: [
5267
+ /* @__PURE__ */ jsx17("span", { className: "ss-w-nba-hd", children: nba.line }),
5268
+ /* @__PURE__ */ jsx17("span", {}),
5269
+ /* @__PURE__ */ jsx17("span", {}),
5270
+ /* @__PURE__ */ jsx17("span", { className: "ss-w-nba-hd ss-w-nba-n", children: nba.price })
5271
+ ] }),
5272
+ st.rungs.map((r, ri) => /* @__PURE__ */ jsxs13("div", { className: "ss-w-nba-row", children: [
5273
+ /* @__PURE__ */ jsx17("span", { className: "ss-w-nba-at", children: nba.over(nba.lineText(r.at)) }),
5274
+ /* @__PURE__ */ jsx17("span", { className: "ss-w-nba-meter", children: /* @__PURE__ */ jsx17("span", { style: { width: r.n > 0 ? `${r.hits / r.n * 100}%` : "0%" } }) }),
5275
+ /* @__PURE__ */ jsx17("span", { className: "ss-w-nba-n", children: nba.hitsOf(r.hits, r.n) }),
5276
+ /* @__PURE__ */ jsx17("span", { className: "ss-w-nba-pcell", children: /* @__PURE__ */ jsx17(NbaPrice, { vm, selectionKey: r.selectionKey, ui, slip }) })
5277
+ ] }, `${r.selectionKey}:${ri}`))
5278
+ ] })
5279
+ ] }, `${st.stat}:${si}`)) });
5280
+ }
5281
+ function NbaSettleRecapBody({ sr, ui }) {
5282
+ const nba = ui.nba;
5283
+ const result = { over: nba.resultOver, under: nba.resultUnder, push: nba.resultPush, void: nba.resultVoid };
5284
+ const { over, under, pushes, voids } = sr.summary;
5285
+ const summary = [
5286
+ `${nba.resultOver} ${over}`,
5287
+ `${nba.resultUnder} ${under}`,
5288
+ ...pushes > 0 ? [`${nba.resultPush} ${pushes}`] : [],
5289
+ ...voids > 0 ? [`${nba.resultVoid} ${voids}`] : []
5290
+ ].join(" \xB7 ");
5291
+ return /* @__PURE__ */ jsxs13(Fragment2, { children: [
5292
+ /* @__PURE__ */ jsxs13("div", { className: "ss-w-nba-stathd", children: [
5293
+ /* @__PURE__ */ jsxs13("b", { children: [
5294
+ nba.settled,
5295
+ " ",
5296
+ sr.finalScore
5297
+ ] }),
5298
+ sr.lineBasis === "last_before_tip" ? /* @__PURE__ */ jsx17("span", { children: nba.lastLineBeforeTip }) : null
5299
+ ] }),
5300
+ sr.players.map((p) => /* @__PURE__ */ jsxs13("div", { className: "ss-w-nba-sr-player", children: [
5301
+ /* @__PURE__ */ jsx17("p", { className: "ss-w-nba-who", children: p.playerName }),
5302
+ /* @__PURE__ */ jsxs13("div", { className: "ss-w-nba-sr", children: [
5303
+ /* @__PURE__ */ jsxs13("div", { className: "ss-w-nba-row", children: [
5304
+ /* @__PURE__ */ jsx17("span", {}),
5305
+ /* @__PURE__ */ jsx17("span", { className: "ss-w-nba-hd ss-w-nba-n", children: nba.line }),
5306
+ /* @__PURE__ */ jsx17("span", { className: "ss-w-nba-hd ss-w-nba-n", children: nba.actual }),
5307
+ /* @__PURE__ */ jsx17("span", {})
5308
+ ] }),
5309
+ p.lines.map((l, i) => /* @__PURE__ */ jsxs13("div", { className: "ss-w-nba-sr-line", children: [
5310
+ /* @__PURE__ */ jsx17("span", { children: nba.stat(l.stat) }),
5311
+ /* @__PURE__ */ jsx17("span", { className: "ss-w-nba-n", children: nba.lineText(l.line) }),
5312
+ /* @__PURE__ */ jsx17("span", { className: "ss-w-nba-n", children: l.actual === null ? "\u2014" : nba.lineText(l.actual) }),
5313
+ /* @__PURE__ */ jsx17("span", { className: "ss-w-nba-res", "data-result": l.result, children: result[l.result] })
5314
+ ] }, `${l.stat}:${i}`))
5315
+ ] })
5316
+ ] }, p.playerId)),
5317
+ sr.morePlayers > 0 ? /* @__PURE__ */ jsx17("p", { className: "ss-w-nba-more", children: nba.morePlayers(sr.morePlayers) }) : null,
5318
+ /* @__PURE__ */ jsx17("p", { className: "ss-w-nba-sr-sum", children: summary })
5319
+ ] });
5320
+ }
5137
5321
  function TeammateOut({ vm, to, ui, slip }) {
5138
5322
  const nba = ui.nba;
5139
5323
  const first = to.rows[0];
@@ -5320,6 +5504,20 @@ function NbaCard({ vm, ui, slip, monitor }) {
5320
5504
  body = /* @__PURE__ */ jsx17(LineMove, { vm, lm: ev.lineMove, ui, slip });
5321
5505
  foot = [nba.lineMoveKey];
5322
5506
  break;
5507
+ case "matchup":
5508
+ body = /* @__PURE__ */ jsx17(NbaMatchupBody, { mu: ev.matchup, ui });
5509
+ foot = [];
5510
+ break;
5511
+ case "quarter_ladder":
5512
+ body = /* @__PURE__ */ jsx17(NbaQuarterLadderBody, { vm, ql: ev.quarterLadder, ui, slip });
5513
+ foot = [];
5514
+ break;
5515
+ case "settle_recap":
5516
+ body = /* @__PURE__ */ jsx17(NbaSettleRecapBody, { sr: ev.settleRecap, ui });
5517
+ foot = [];
5518
+ break;
5519
+ default:
5520
+ return null;
5323
5521
  }
5324
5522
  return /* @__PURE__ */ jsxs13("div", { className: "ss-w-nba-card", "data-kind": ev.kind, children: [
5325
5523
  /* @__PURE__ */ jsx17(Head, { vm, chip, ui, monitor }),
@@ -12885,6 +13083,28 @@ var WIDGET_CSS = `.ss-w-root { all: revert; }
12885
13083
  .ss-w-nba-nowrow { display: grid; grid-template-columns: minmax(0,1fr) auto auto; align-items: center; gap: 10px; font-size: 13px; }
12886
13084
  .ss-w-nba-foot{font-size:11px;color:var(--ss-w-faint);line-height:1.4;border-top:1px solid var(--ss-w-line);padding-top:10px}
12887
13085
  .ss-w-nba-card .ss-w-combo-addall { align-self: stretch; }
13086
+ /* matchup, quarter ladder and settle recap (u564 lane B): the same card, ladder grid and figures as above. */
13087
+ .ss-w-nba-ladder--q{grid-template-columns:70px minmax(0,1fr) 62px 74px}
13088
+ .ss-w-nba-mu,.ss-w-nba-sr{display:grid;align-items:start;gap:8px 6px;font-size:13px;font-variant-numeric:tabular-nums}
13089
+ .ss-w-nba-mu{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr) minmax(0,1fr)}
13090
+ .ss-w-nba-mu .ss-w-nba-hd{white-space:normal}
13091
+ .ss-w-nba-mu-team { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 6px; font-size: 14px; color: var(--ss-w-ink); }
13092
+ .ss-w-nba-mu-v { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
13093
+ .ss-w-nba-mu-v b { font-size: 15px; font-weight: 700; color: var(--ss-w-ink); }
13094
+ .ss-w-nba-mu-v span, .ss-w-nba-mu-rest { font-size: 10.5px; line-height: 1.3; color: var(--ss-w-faint); }
13095
+ .ss-w-nba-mu-rest { overflow-wrap: anywhere; }
13096
+ .ss-w-nba-b2b { white-space: nowrap; }
13097
+ .ss-w-nba-mu-pos { margin: 0; font-size: 12px; line-height: 1.45; color: var(--ss-w-ink); }
13098
+ .ss-w-nba-small { display: inline-block; font-size: 10px; font-weight: 600; line-height: 1.3; color: var(--ss-w-warn); border: 1px solid var(--ss-w-warn); border-radius: 999px; padding: 0 6px; white-space: nowrap; }
13099
+ .ss-w-nba-mu-pos .ss-w-nba-small { margin-left: 6px; }
13100
+ .ss-w-nba-sr-player { display: flex; flex-direction: column; gap: 6px; }
13101
+ .ss-w-nba-sr{grid-template-columns:minmax(0,1fr) 44px 44px 54px;align-items:center}
13102
+ .ss-w-nba-sr-line { display: contents; }
13103
+ .ss-w-nba-sr .ss-w-nba-n { text-align: right; }
13104
+ .ss-w-nba-res { justify-self: end; font-size: 11px; font-weight: 600; line-height: 1.3; color: var(--ss-w-ink); border: 1px solid var(--ss-w-line); border-radius: 999px; padding: 1px 8px; white-space: nowrap; }
13105
+ .ss-w-nba-res[data-result="push"], .ss-w-nba-res[data-result="void"] { color: var(--ss-w-faint); }
13106
+ .ss-w-nba-more, .ss-w-nba-sr-sum { margin: 0; font-size: 12px; line-height: 1.4; color: var(--ss-w-faint); }
13107
+ .ss-w-nba-sr-sum { font-weight: 600; color: var(--ss-w-ink); }
12888
13108
 
12889
13109
  /* market odds card */
12890
13110
  .ss-w-mocards { display: flex; flex-direction: column; gap: 7px; }