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-size: 11px;
font-weight: 700; font-weight: 700;
padding: 3px 9px; padding: 3px 9px;
border-radius: 20px; border-radius: 20px;
margin-left: auto;
}
.badge {
background: var(--surface-high); background: var(--surface-high);
color: var(--text-secondary); color: var(--text-secondary);
} }
.badgeUrgent { .countdownUrgent {
background: rgba(254,174,50,0.12); background: rgba(254,174,50,0.12);
color: var(--gold); color: var(--gold);
border: 1px solid rgba(254,174,50,0.2); border: 1px solid rgba(254,174,50,0.2);
animation: pulse 1.5s ease-in-out infinite;
} }
.group { .group {
@@ -95,9 +98,6 @@
0 0 40px rgba(254, 174, 50, 0.15); 0 0 40px rgba(254, 174, 50, 0.15);
} }
.topRowSpacer {
flex: 1;
}
/* VS separator */ /* VS separator */
.vsSeparator { .vsSeparator {
+14 -11
View File
@@ -84,7 +84,7 @@ export default function MatchCard({ match, onTip }: Props) {
return ( return (
<div className={`card ${styles.card} ${styles[`card_${state}`]} ${isLive ? styles.live : ''} ${glowClass}`}> <div className={`card ${styles.card} ${styles[`card_${state}`]} ${isLive ? styles.live : ''} ${glowClass}`}>
{/* Top row: Group + Countdown */} {/* Top row: Status/Group */}
<div className={styles.topRow}> <div className={styles.topRow}>
{(isLive || isFinished) && ( {(isLive || isFinished) && (
<span className={`${styles.status} ${isLive ? styles.statusLive : ''}`}> <span className={`${styles.status} ${isLive ? styles.statusLive : ''}`}>
@@ -97,9 +97,19 @@ export default function MatchCard({ match, onTip }: Props) {
{match.group.replace('GROUP_', 'Gruppe ')} {match.group.replace('GROUP_', 'Gruppe ')}
</span> </span>
)} )}
<span className={styles.topRowSpacer} /> </div>
{(state === 'open' || state === 'tipped') && match.tippable && (
<span className={`${styles.badge} ${remainingMins < 60 ? styles.badgeUrgent : ''} ${remainingMins < 5 ? styles.countdownUrgent : ''}`}> {/* 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 {match.minutesUntilKickoff < 60
? `Noch ${remainingMins} Min!` ? `Noch ${remainingMins} Min!`
: (() => { : (() => {
@@ -110,13 +120,6 @@ export default function MatchCard({ match, onTip }: Props) {
})() })()
} }
</span> </span>
)}
</div>
{/* Kickoff — stadium LED display, centered */}
{!isFinished && !isLive && (
<div className={styles.kickoffRow}>
<span className={styles.kickoffLED}>{formatKickoff(match.utcDate)}</span>
</div> </div>
)} )}