Skip to content

Commit f8a5c30

Browse files
committed
design: group each matchup as a fixture card (clear opponent pairing)
The round of 32 read as an ambiguous grid — equal gaps in both directions meant you couldn't tell which two chips formed one match. Now each matchup is a single rounded fixture card holding its two teams split by a halfway 'vs' line (winner's half lit yellow); card borders + gaps separate matches. Reads like a football scoreboard and is consistent across every round. - 40/40 tests, tsc clean
1 parent bca3ee6 commit f8a5c30

1 file changed

Lines changed: 21 additions & 19 deletions

File tree

src/styles.css

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -296,47 +296,49 @@ a { color: inherit; text-decoration: none; }
296296
.cx { stroke: rgba(255, 255, 255, 0.28); stroke-width: 1.2; vector-effect: non-scaling-stroke; }
297297
.cx--on { stroke: var(--yellow); stroke-width: 2.4; vector-effect: non-scaling-stroke; }
298298

299+
/* one matchup = one fixture card: the two opponents stacked and split by a
300+
halfway line, so a pair always reads as a single match (and the gap +
301+
border separate it from neighbouring matches) */
299302
.match-slot {
300303
display: flex;
301304
flex-direction: column;
302-
gap: 7px; /* space between the two opponents */
303-
width: 86px; /* every country cell is exactly this wide */
305+
gap: 0;
306+
width: 84px;
307+
margin: 0 auto;
308+
border-radius: 10px;
309+
overflow: hidden;
310+
border: 1px solid rgba(255, 255, 255, 0.32);
311+
background: rgba(255, 255, 255, 0.97);
312+
box-shadow: 0 3px 8px -3px rgba(8, 20, 45, 0.5);
304313
}
305314

306-
/* chip = stacked flag over name. Fixed width & height for EVERY cell; long
307-
names wrap to (at most) two lines inside that height — never stretch it */
308315
.team-cell {
316+
position: relative;
309317
display: flex;
310318
flex-direction: column;
311319
align-items: center;
312320
justify-content: center;
313-
gap: 2px;
321+
gap: 1px;
314322
width: 100%;
315-
height: 46px;
316-
padding: 4px 5px;
317-
border: 1px solid rgba(255, 255, 255, 0.18);
318-
border-radius: 8px;
319-
background: rgba(255, 255, 255, 0.96);
323+
height: 43px;
324+
padding: 4px 4px;
325+
border: none;
326+
background: transparent;
320327
color: var(--ink);
321328
cursor: pointer;
322329
line-height: 1.05;
323-
transition: background 0.15s, transform 0.1s, box-shadow 0.15s;
330+
transition: background 0.15s;
324331
-webkit-tap-highlight-color: transparent;
325332
touch-action: manipulation;
326333
}
327-
.team-cell:active { transform: scale(0.96); }
334+
/* the halfway 'vs' line between the two opponents of a match */
335+
.team-cell + .team-cell { border-top: 1px solid rgba(24, 37, 74, 0.16); }
328336
.team-cell--selected {
329337
background: var(--yellow);
330338
color: #43320a;
331-
box-shadow: 0 0 0 1.5px var(--yellow), var(--shadow-sticker);
332339
}
333340
.team-cell--selected .team-cell__name { font-weight: 800; }
334-
.team-cell--empty {
335-
background: rgba(255, 255, 255, 0.08);
336-
border-style: dashed;
337-
border-color: rgba(255, 255, 255, 0.22);
338-
cursor: default;
339-
}
341+
.team-cell--empty { color: var(--ink-faint); cursor: default; }
340342
.team-cell__flag { font-size: 18px; line-height: 1; }
341343
.team-cell__name {
342344
font-size: 12px;

0 commit comments

Comments
 (0)