style: countdown badge left-aligned, separate from header

Countdown badge now in its own row, left-aligned to match
the left edge of the flags. Removed from header top row.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Ronny
2026-04-11 23:16:17 +02:00
parent 9cd55f8e28
commit 92f847c075
2 changed files with 23 additions and 20 deletions
+9 -9
View File
@@ -48,23 +48,26 @@
}
.badge, .badgeUrgent {
/* Countdown — left-aligned row */
.countdownRow {
display: flex;
margin-bottom: 4px;
}
.countdownBadge {
font-size: 11px;
font-weight: 700;
padding: 3px 9px;
border-radius: 20px;
margin-left: auto;
}
.badge {
background: var(--surface-high);
color: var(--text-secondary);
}
.badgeUrgent {
.countdownUrgent {
background: rgba(254,174,50,0.12);
color: var(--gold);
border: 1px solid rgba(254,174,50,0.2);
animation: pulse 1.5s ease-in-out infinite;
}
.group {
@@ -95,9 +98,6 @@
0 0 40px rgba(254, 174, 50, 0.15);
}
.topRowSpacer {
flex: 1;
}
/* VS separator */
.vsSeparator {
+14 -11
View File
@@ -84,7 +84,7 @@ export default function MatchCard({ match, onTip }: Props) {
return (
<div className={`card ${styles.card} ${styles[`card_${state}`]} ${isLive ? styles.live : ''} ${glowClass}`}>
{/* Top row: Group + Countdown */}
{/* Top row: Status/Group */}
<div className={styles.topRow}>
{(isLive || isFinished) && (
<span className={`${styles.status} ${isLive ? styles.statusLive : ''}`}>
@@ -97,9 +97,19 @@ export default function MatchCard({ match, onTip }: Props) {
{match.group.replace('GROUP_', 'Gruppe ')}
</span>
)}
<span className={styles.topRowSpacer} />
{(state === 'open' || state === 'tipped') && match.tippable && (
<span className={`${styles.badge} ${remainingMins < 60 ? styles.badgeUrgent : ''} ${remainingMins < 5 ? styles.countdownUrgent : ''}`}>
</div>
{/* Kickoff — stadium LED display, centered */}
{!isFinished && !isLive && (
<div className={styles.kickoffRow}>
<span className={styles.kickoffLED}>{formatKickoff(match.utcDate)}</span>
</div>
)}
{/* Countdown badge — left-aligned */}
{(state === 'open' || state === 'tipped') && match.tippable && (
<div className={styles.countdownRow}>
<span className={`${styles.countdownBadge} ${remainingMins < 60 ? styles.countdownUrgent : ''}`}>
{match.minutesUntilKickoff < 60
? `Noch ${remainingMins} Min!`
: (() => {
@@ -110,13 +120,6 @@ export default function MatchCard({ match, onTip }: Props) {
})()
}
</span>
)}
</div>
{/* Kickoff — stadium LED display, centered */}
{!isFinished && !isLive && (
<div className={styles.kickoffRow}>
<span className={styles.kickoffLED}>{formatKickoff(match.utcDate)}</span>
</div>
)}