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:
@@ -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 {
|
||||
|
||||
@@ -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>
|
||||
)}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user