@sensiblestats/widget-react 0.53.0 → 0.54.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/CHANGELOG.md +11 -0
- package/dist/index.cjs +61 -72
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +61 -72
- package/dist/index.js.map +1 -1
- package/dist/styles.css +22 -20
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# @sensiblestats/widget-react
|
|
2
2
|
|
|
3
|
+
## 0.54.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- c013151: Rebuild the daily game screens to match the design artifact:
|
|
8
|
+
|
|
9
|
+
- Guess the XI now renders a real formation on the pitch (GK line at the back → forwards forward), so each flag's position is legible instead of a scatter; cut to 3 guesses.
|
|
10
|
+
- Career Path wraps the club-crest sequence instead of scrolling/truncating with "+N more"; loans read as "(loan)" and years are compact.
|
|
11
|
+
- Higher or Lower drops the answered-history list for the artifact's clean pair + footer chips.
|
|
12
|
+
- Mystery Tiger's first load shows the five-attribute legend instead of a bare search box.
|
|
13
|
+
|
|
3
14
|
## 0.53.0
|
|
4
15
|
|
|
5
16
|
### Minor Changes
|
package/dist/index.cjs
CHANGED
|
@@ -4386,6 +4386,13 @@ function MysteryTigerGame({
|
|
|
4386
4386
|
" left"
|
|
4387
4387
|
] })
|
|
4388
4388
|
] }),
|
|
4389
|
+
guessResults.length === 0 && !isOver && /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "ss-w-gt-legend", children: [
|
|
4390
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)("div", { className: "ss-w-gt-legend-lead", children: "Guess any squad player \u2014 each guess reveals how close you are:" }),
|
|
4391
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)("div", { className: "ss-w-gtrow", children: ATTR_KEYS.map((key) => /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "ss-w-gtile ss-w-gtile--legend", children: [
|
|
4392
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)("span", { className: "ss-w-gtile-lab", children: ATTR_LABELS[key] }),
|
|
4393
|
+
/* @__PURE__ */ (0, import_jsx_runtime55.jsx)("span", { className: "ss-w-gtile-v", "aria-hidden": "true", children: "\xB7" })
|
|
4394
|
+
] }, key)) })
|
|
4395
|
+
] }),
|
|
4389
4396
|
guessResults.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("div", { className: "ss-w-gtrows", children: guessResults.map((gr, i) => {
|
|
4390
4397
|
const player = config.squadPlayers.find((p) => p.id === gr.playerId);
|
|
4391
4398
|
return /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "ss-w-gtguess", children: [
|
|
@@ -4470,6 +4477,7 @@ function MysteryTigerGame({
|
|
|
4470
4477
|
|
|
4471
4478
|
// src/components/games/HigherOrLowerGame.tsx
|
|
4472
4479
|
var import_jsx_runtime56 = require("react/jsx-runtime");
|
|
4480
|
+
var POINTS_PER_CORRECT = 10;
|
|
4473
4481
|
function parseClientState2(json) {
|
|
4474
4482
|
if (!json) return null;
|
|
4475
4483
|
try {
|
|
@@ -4561,39 +4569,25 @@ function HigherOrLowerGame({
|
|
|
4561
4569
|
] })
|
|
4562
4570
|
] })
|
|
4563
4571
|
] }),
|
|
4572
|
+
!isOver && /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("div", { className: "ss-w-hl-foot", children: [
|
|
4573
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("span", { className: "ss-w-hl-chip", children: [
|
|
4574
|
+
score,
|
|
4575
|
+
" pts"
|
|
4576
|
+
] }),
|
|
4577
|
+
/* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("span", { className: "ss-w-hl-chip ss-w-hl-chip--green", children: [
|
|
4578
|
+
"+",
|
|
4579
|
+
POINTS_PER_CORRECT,
|
|
4580
|
+
" / correct"
|
|
4581
|
+
] })
|
|
4582
|
+
] }),
|
|
4564
4583
|
isOver && /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("div", { className: "ss-w-hl-over", children: [
|
|
4565
4584
|
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { className: "ss-w-hl-over-title", children: runEndedWrong ? "Run over" : "Nice run!" }),
|
|
4566
4585
|
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { className: "ss-w-hl-over-score", children: score }),
|
|
4567
4586
|
/* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("div", { className: "ss-w-hl-over-sub", children: [
|
|
4568
4587
|
correctCount,
|
|
4569
|
-
" correct"
|
|
4570
|
-
correctCount === 1 ? "" : "",
|
|
4571
|
-
" \xB7 come back tomorrow for a new run"
|
|
4588
|
+
" correct \xB7 come back tomorrow for a new run"
|
|
4572
4589
|
] })
|
|
4573
|
-
] })
|
|
4574
|
-
answeredPairs.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime56.jsx)("div", { className: "ss-w-hlresults", children: answeredPairs.map((answered) => {
|
|
4575
|
-
const pair = config.pairs.find((p) => p.pairIndex === answered.pairIndex);
|
|
4576
|
-
return /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(
|
|
4577
|
-
"div",
|
|
4578
|
-
{
|
|
4579
|
-
className: `ss-w-hlrrow ss-w-hlrrow--${answered.wasCorrect ? "correct" : "wrong"}`,
|
|
4580
|
-
children: [
|
|
4581
|
-
/* @__PURE__ */ (0, import_jsx_runtime56.jsxs)("span", { className: "ss-w-hlrrow-names", children: [
|
|
4582
|
-
pair?.playerAName ?? "?",
|
|
4583
|
-
" ",
|
|
4584
|
-
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("b", { className: "ss-w-hlrrow-val", children: pair?.playerAValue }),
|
|
4585
|
-
" vs ",
|
|
4586
|
-
pair?.playerBName ?? "?",
|
|
4587
|
-
" ",
|
|
4588
|
-
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("b", { className: "ss-w-hlrrow-val", children: answered.playerBValue })
|
|
4589
|
-
] }),
|
|
4590
|
-
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { className: "ss-w-hlrrow-pick", children: answered.pick }),
|
|
4591
|
-
/* @__PURE__ */ (0, import_jsx_runtime56.jsx)("span", { className: "ss-w-hlrrow-icon", children: answered.wasCorrect ? "\u2713" : "\u2717" })
|
|
4592
|
-
]
|
|
4593
|
-
},
|
|
4594
|
-
answered.pairIndex
|
|
4595
|
-
);
|
|
4596
|
-
}) })
|
|
4590
|
+
] })
|
|
4597
4591
|
] })
|
|
4598
4592
|
] });
|
|
4599
4593
|
}
|
|
@@ -4610,18 +4604,22 @@ function parseClientState3(json) {
|
|
|
4610
4604
|
}
|
|
4611
4605
|
}
|
|
4612
4606
|
function spellYears(spell) {
|
|
4613
|
-
|
|
4614
|
-
|
|
4615
|
-
if (spell.endYear
|
|
4616
|
-
|
|
4607
|
+
if (!spell.startYear) return "";
|
|
4608
|
+
const yy = (y) => `'${String(y % 100).padStart(2, "0")}`;
|
|
4609
|
+
if (spell.endYear && spell.endYear !== spell.startYear) {
|
|
4610
|
+
return `${yy(spell.startYear)}\u2013${String(spell.endYear % 100).padStart(2, "0")}`;
|
|
4611
|
+
}
|
|
4612
|
+
return yy(spell.startYear);
|
|
4617
4613
|
}
|
|
4618
4614
|
function ClubSpellCard({ spell }) {
|
|
4619
4615
|
const years = spellYears(spell);
|
|
4620
4616
|
return /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: `ss-w-cpath-club${spell.isLoan ? " ss-w-cpath-club--loan" : ""}`, children: [
|
|
4621
4617
|
spell.crestUrl ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("img", { src: spell.crestUrl, alt: "", className: "ss-w-cpath-crest", loading: "lazy" }) : /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "ss-w-cpath-crest ss-w-cpath-crest--fallback", "aria-hidden": "true", children: spell.clubName.slice(0, 3).toUpperCase() }),
|
|
4622
|
-
/* @__PURE__ */ (0, import_jsx_runtime57.
|
|
4623
|
-
|
|
4624
|
-
|
|
4618
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("span", { className: "ss-w-cpath-club-name", children: [
|
|
4619
|
+
spell.clubName,
|
|
4620
|
+
spell.isLoan && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "ss-w-cpath-loan-note", children: " (loan)" })
|
|
4621
|
+
] }),
|
|
4622
|
+
years && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "ss-w-cpath-spell-yr", children: years })
|
|
4625
4623
|
] });
|
|
4626
4624
|
}
|
|
4627
4625
|
function CareerPathGame({
|
|
@@ -4636,8 +4634,6 @@ function CareerPathGame({
|
|
|
4636
4634
|
const alreadyGuessedIds = new Set(clientState?.guessResults.map((g) => g.playerId) ?? []);
|
|
4637
4635
|
const isOver = result?.alreadyPlayed === true || clientState?.solved === true || clientState?.failed === true;
|
|
4638
4636
|
const visiblePath = clientState?.visiblePath ?? config?.initialPath ?? [];
|
|
4639
|
-
const totalClubs = clientState?.totalClubs ?? config?.totalClubs ?? visiblePath.length;
|
|
4640
|
-
const hiddenCount = Math.max(0, totalClubs - visiblePath.length);
|
|
4641
4637
|
const filtered = config && !isOver ? config.typeaheadPool.filter(
|
|
4642
4638
|
(p) => !alreadyGuessedIds.has(p.id) && p.name.toLowerCase().includes(query.toLowerCase())
|
|
4643
4639
|
) : [];
|
|
@@ -4661,20 +4657,10 @@ function CareerPathGame({
|
|
|
4661
4657
|
" left"
|
|
4662
4658
|
] })
|
|
4663
4659
|
] }),
|
|
4664
|
-
/* @__PURE__ */ (0, import_jsx_runtime57.
|
|
4665
|
-
|
|
4666
|
-
|
|
4667
|
-
|
|
4668
|
-
] }, `${spell.clubName}-${i}`)),
|
|
4669
|
-
hiddenCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_jsx_runtime57.Fragment, { children: [
|
|
4670
|
-
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "ss-w-cpath-arrow", "aria-hidden": "true", children: "\u2192" }),
|
|
4671
|
-
/* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "ss-w-cpath-hidden", children: [
|
|
4672
|
-
"+",
|
|
4673
|
-
hiddenCount,
|
|
4674
|
-
" more"
|
|
4675
|
-
] })
|
|
4676
|
-
] })
|
|
4677
|
-
] }),
|
|
4660
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)("div", { className: "ss-w-cpath-seq", children: visiblePath.map((spell, i) => /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_react30.Fragment, { children: [
|
|
4661
|
+
i > 0 && /* @__PURE__ */ (0, import_jsx_runtime57.jsx)("span", { className: "ss-w-cpath-arrow", "aria-hidden": "true", children: "\u203A" }),
|
|
4662
|
+
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(ClubSpellCard, { spell })
|
|
4663
|
+
] }, `${spell.clubName}-${i}`)) }),
|
|
4678
4664
|
clientState?.hintLine && !isOver && /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)("div", { className: "ss-w-cpath-hint", children: [
|
|
4679
4665
|
"\u{1F4A1} ",
|
|
4680
4666
|
clientState.hintLine
|
|
@@ -4925,6 +4911,7 @@ function BeatTheGridGame({
|
|
|
4925
4911
|
// src/components/games/GuessTheXiGame.tsx
|
|
4926
4912
|
var import_react32 = require("react");
|
|
4927
4913
|
var import_jsx_runtime59 = require("react/jsx-runtime");
|
|
4914
|
+
var MAX_GUESSES = 3;
|
|
4928
4915
|
function parseClientState5(json) {
|
|
4929
4916
|
if (!json) return null;
|
|
4930
4917
|
try {
|
|
@@ -4980,12 +4967,12 @@ function GuessTheXiGame({
|
|
|
4980
4967
|
/* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("div", { children: [
|
|
4981
4968
|
/* @__PURE__ */ (0, import_jsx_runtime59.jsx)("div", { className: "ss-w-gxi-title", children: "Guess the XI" }),
|
|
4982
4969
|
/* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("div", { className: "ss-w-gxi-sub", children: [
|
|
4983
|
-
"Which team? \xB7 ",
|
|
4970
|
+
"Which team? \xB7 flags only \xB7 ",
|
|
4984
4971
|
config.poolLabel
|
|
4985
4972
|
] })
|
|
4986
4973
|
] }),
|
|
4987
4974
|
clientState && !isOver && /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)("span", { className: "ss-w-gxi-left", children: [
|
|
4988
|
-
Math.max(0,
|
|
4975
|
+
Math.max(0, MAX_GUESSES - clientState.guessesUsed),
|
|
4989
4976
|
" left"
|
|
4990
4977
|
] })
|
|
4991
4978
|
] }),
|
|
@@ -6993,6 +6980,11 @@ var WIDGET_CSS = `.ss-w-root { all: revert; }
|
|
|
6993
6980
|
.ss-w-gt-left { margin-left: auto; flex: none; font-size: 11px; font-weight: 700; color: var(--ss-w-accent); background: color-mix(in srgb, var(--ss-w-accent) 11%, var(--ss-w-panel)); border: 1px solid color-mix(in srgb, var(--ss-w-accent) 22%, var(--ss-w-line)); border-radius: 999px; padding: 4px 10px; white-space: nowrap; }
|
|
6994
6981
|
/* Guess rows \u2014 one labelled block per guess */
|
|
6995
6982
|
.ss-w-gtrows { display: flex; flex-direction: column; gap: 8px; }
|
|
6983
|
+
/* First-load legend (empty state) */
|
|
6984
|
+
.ss-w-gt-legend { display: flex; flex-direction: column; gap: 8px; }
|
|
6985
|
+
.ss-w-gt-legend-lead { font-size: 11.5px; color: var(--ss-w-faint); line-height: 1.35; }
|
|
6986
|
+
.ss-w-gtile--legend { background: var(--ss-w-bubble); border: 1px dashed var(--ss-w-line); color: var(--ss-w-faint); }
|
|
6987
|
+
.ss-w-gtile--legend .ss-w-gtile-lab { opacity: .9; }
|
|
6996
6988
|
.ss-w-gtguess { display: flex; flex-direction: column; gap: 4px; }
|
|
6997
6989
|
.ss-w-gtguess-nm { font-size: 11px; font-weight: 600; color: var(--ss-w-faint); }
|
|
6998
6990
|
.ss-w-gtrow { display: grid; grid-template-columns: repeat(5, 1fr); gap: 5px; }
|
|
@@ -7045,16 +7037,10 @@ var WIDGET_CSS = `.ss-w-root { all: revert; }
|
|
|
7045
7037
|
.ss-w-hl-over-score { font-size: 34px; font-weight: 800; color: var(--ss-w-accent); line-height: 1; font-variant-numeric: tabular-nums; }
|
|
7046
7038
|
.ss-w-hl-over-sub { font-size: 11px; color: var(--ss-w-faint); }
|
|
7047
7039
|
/* Answered history \u2014 clean single-line rows with the revealed value */
|
|
7048
|
-
|
|
7049
|
-
.ss-w-
|
|
7050
|
-
.ss-w-
|
|
7051
|
-
.ss-w-
|
|
7052
|
-
.ss-w-hlrrow-names { flex: 1; min-width: 0; font-weight: 600; color: var(--ss-w-ink); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
7053
|
-
.ss-w-hlrrow-val { font-weight: 800; color: var(--ss-w-accent); font-variant-numeric: tabular-nums; }
|
|
7054
|
-
.ss-w-hlrrow-pick { font-size: 10px; font-weight: 700; text-transform: uppercase; color: var(--ss-w-faint); flex: none; }
|
|
7055
|
-
.ss-w-hlrrow-icon { font-size: 14px; flex: none; }
|
|
7056
|
-
.ss-w-hlrrow--correct .ss-w-hlrrow-icon { color: var(--ss-w-correct); }
|
|
7057
|
-
.ss-w-hlrrow--wrong .ss-w-hlrrow-icon { color: var(--ss-w-cta); }
|
|
7040
|
+
/* In-progress footer chips (artifact) */
|
|
7041
|
+
.ss-w-hl-foot { display: flex; align-items: center; gap: 8px; }
|
|
7042
|
+
.ss-w-hl-chip { font-size: 11px; font-weight: 600; color: var(--ss-w-faint); background: var(--ss-w-bubble); border: 1px solid var(--ss-w-line); border-radius: 999px; padding: 4px 10px; }
|
|
7043
|
+
.ss-w-hl-chip--green { margin-left: auto; color: var(--ss-w-correct); background: color-mix(in srgb, var(--ss-w-correct) 10%, var(--ss-w-panel)); border-color: color-mix(in srgb, var(--ss-w-correct) 26%, var(--ss-w-line)); }
|
|
7058
7044
|
|
|
7059
7045
|
/* ---- Career Path game screen (D3) \u2014 artifact cpath/club/cto layout ---- */
|
|
7060
7046
|
.ss-w-cpath { display: flex; flex-direction: column; gap: 12px; }
|
|
@@ -7064,18 +7050,16 @@ var WIDGET_CSS = `.ss-w-root { all: revert; }
|
|
|
7064
7050
|
.ss-w-cpath-sub { font-size: 11px; color: var(--ss-w-faint); margin-top: 4px; }
|
|
7065
7051
|
.ss-w-cpath-left { margin-left: auto; flex: none; font-size: 11px; font-weight: 700; color: var(--ss-w-accent); background: color-mix(in srgb, var(--ss-w-accent) 11%, var(--ss-w-panel)); border: 1px solid color-mix(in srgb, var(--ss-w-accent) 22%, var(--ss-w-line)); border-radius: 999px; padding: 4px 10px; white-space: nowrap; }
|
|
7066
7052
|
/* Career sequence \u2014 horizontal crests with arrows */
|
|
7067
|
-
.ss-w-cpath-seq { display: flex; flex-wrap:
|
|
7068
|
-
.ss-w-cpath-arrow { align-self:
|
|
7053
|
+
.ss-w-cpath-seq { display: flex; flex-wrap: wrap; align-items: flex-start; gap: 6px 4px; background: var(--ss-w-panel); border: 1px solid var(--ss-w-line); border-radius: 14px; padding: 13px 11px; }
|
|
7054
|
+
.ss-w-cpath-arrow { align-self: flex-start; flex: none; color: var(--ss-w-faint); font-size: 13px; padding-top: 9px; }
|
|
7069
7055
|
/* Single club \u2014 small vertical card */
|
|
7070
7056
|
.ss-w-cpath-club { display: flex; flex-direction: column; align-items: center; gap: 3px; width: 56px; flex: none; }
|
|
7071
7057
|
.ss-w-cpath-crest { width: 34px; height: 34px; object-fit: contain; flex: none; border-radius: 8px; }
|
|
7072
7058
|
.ss-w-cpath-crest--fallback { background: var(--ss-w-bubble); border: 1px solid var(--ss-w-line); display: grid; place-items: center; font-size: 9px; font-weight: 800; letter-spacing: .02em; color: var(--ss-w-faint); }
|
|
7073
|
-
.ss-w-cpath-club-name { font-size: 9px; font-weight: 600; color: var(--ss-w-ink); text-align: center; line-height: 1.15; max-width: 56px;
|
|
7059
|
+
.ss-w-cpath-club-name { font-size: 9px; font-weight: 600; color: var(--ss-w-ink); text-align: center; line-height: 1.15; max-width: 56px; overflow-wrap: anywhere; }
|
|
7074
7060
|
.ss-w-cpath-spell-yr { font-size: 8px; color: var(--ss-w-faint); font-weight: 500; white-space: nowrap; }
|
|
7075
|
-
.ss-w-cpath-loan-
|
|
7061
|
+
.ss-w-cpath-loan-note { display: block; color: var(--ss-w-faint); font-weight: 500; }
|
|
7076
7062
|
.ss-w-cpath-club--loan .ss-w-cpath-crest { border: 1px dashed color-mix(in srgb, var(--ss-w-accent) 40%, var(--ss-w-line)); }
|
|
7077
|
-
/* Hidden clubs chip */
|
|
7078
|
-
.ss-w-cpath-hidden { align-self: center; flex: none; white-space: nowrap; font-size: 9px; font-weight: 700; color: var(--ss-w-faint); background: var(--ss-w-bubble); border: 1px dashed var(--ss-w-line); border-radius: 8px; padding: 6px 8px; }
|
|
7079
7063
|
/* Hint line */
|
|
7080
7064
|
.ss-w-cpath-hint { font-size: 11.5px; color: var(--ss-w-faint); text-align: center; padding: 6px 10px; border-radius: 10px; background: color-mix(in srgb, var(--ss-w-accent) 8%, var(--ss-w-panel)); border: 1px dashed color-mix(in srgb, var(--ss-w-accent) 30%, var(--ss-w-line)); }
|
|
7081
7065
|
/* Terminal outcome */
|
|
@@ -7139,10 +7123,15 @@ var WIDGET_CSS = `.ss-w-root { all: revert; }
|
|
|
7139
7123
|
.ss-w-gxi-title { font-size: 18px; font-weight: 800; text-transform: uppercase; letter-spacing: .02em; color: var(--ss-w-ink); line-height: 1; }
|
|
7140
7124
|
.ss-w-gxi-sub { font-size: 11px; color: var(--ss-w-faint); margin-top: 4px; }
|
|
7141
7125
|
.ss-w-gxi-left { margin-left: auto; flex: none; font-size: 11px; font-weight: 700; color: var(--ss-w-accent); background: color-mix(in srgb, var(--ss-w-accent) 11%, var(--ss-w-panel)); border: 1px solid color-mix(in srgb, var(--ss-w-accent) 22%, var(--ss-w-line)); border-radius: 999px; padding: 4px 10px; white-space: nowrap; }
|
|
7142
|
-
/* Pitch: a flag per slot laid out in formation rows on a green field
|
|
7143
|
-
|
|
7144
|
-
|
|
7145
|
-
.ss-w-gxi-
|
|
7126
|
+
/* Pitch: a flag per slot laid out in formation rows on a green field. A real min-height plus
|
|
7127
|
+
space-between distributes the formation lines top\u2192bottom like a pitch (GK at the back, forwards
|
|
7128
|
+
forward); yard-line stripes reinforce the read. Without a height the lines collapse together. */
|
|
7129
|
+
.ss-w-gxi-pitch { display: flex; flex-direction: column; justify-content: space-between; gap: 8px; min-height: 300px; padding: 18px 10px; border-radius: 14px; border: 1px solid color-mix(in srgb, var(--ss-w-correct) 22%, var(--ss-w-line));
|
|
7130
|
+
background:
|
|
7131
|
+
linear-gradient(180deg, color-mix(in srgb, var(--ss-w-correct) 12%, var(--ss-w-panel)), color-mix(in srgb, var(--ss-w-correct) 4%, var(--ss-w-panel))),
|
|
7132
|
+
repeating-linear-gradient(180deg, transparent 0 40px, color-mix(in srgb, var(--ss-w-ink) 4%, transparent) 40px 80px); }
|
|
7133
|
+
.ss-w-gxi-prow { display: flex; justify-content: center; align-items: center; gap: 14px; }
|
|
7134
|
+
.ss-w-gxi-flag { width: 36px; height: 36px; flex: none; border-radius: 50%; display: grid; place-items: center; font-size: 20px; line-height: 1; background: var(--ss-w-panel); border: 1px solid var(--ss-w-line); box-shadow: 0 1px 3px rgba(0,0,0,.14); overflow: hidden; }
|
|
7146
7135
|
/* Wrong-guess trail */
|
|
7147
7136
|
.ss-w-gxi-wrong { display: flex; flex-wrap: wrap; gap: 6px; }
|
|
7148
7137
|
.ss-w-gxi-wrong-pill { font-size: 11px; font-weight: 600; padding: 3px 9px; border-radius: 999px; background: color-mix(in srgb, var(--ss-w-wrong) 10%, var(--ss-w-panel)); border: 1px solid var(--ss-w-line); color: var(--ss-w-faint); text-decoration: line-through; }
|