- Profile tip history now shows all tips (not just evaluated)
- Pending tips display ⏳ badge in blue instead of hiding
- Fun Facts "Tipps abgegeben" counts all tips (from tips API)
- Added .badgePending CSS style
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Dashboard: 2-column layout (hero left 60%, stats+nudges right 40%)
Spielplan: 2-column grid for match cards on desktop
Profile: wider max-width (900px), 6-column achievement grid
Header: Admin link back in desktop nav, max-width 1200px
All via CSS media queries (min-width: 768px), no HTML restructuring.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
48 country flags downloaded from flagcdn.com (320px PNG, ~55KB total)
stored in frontend/public/flags/{iso-code}.png.
New utility getFlagUrl() maps team names to local flag files.
Applied to MatchCard, DashboardPage, and TipModal.
Falls back to original crest URL if no mapping exists (e.g. TBD).
No external API calls at runtime — all flags served statically.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Cycles: Sun (→ Light) → Monitor (→ System) → Moon (→ Dark)
System mode follows OS prefers-color-scheme and updates live.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Extracted trophy graphic from unofficial logo SVG, removed
"FIFA WORLD CUP", "2026", and country names text.
Works in both dark and light mode (colored on transparent).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Unofficial logo works in both dark and light mode (colored on transparent).
Official and white variants also included as alternatives.
Removed broken SVG files (Cloudflare blocked downloads).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
White SVG logo for dark mode, colored SVG for light mode.
Logo switches automatically based on theme.
Sourced from football-logos.cc (SVG, ~4.5KB each).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Dashboard:
- Hero card: white glass (rgba 255,255,255,0.75) instead of dark glass
- Reduced shadows (no more extreme 40px shadow)
- LED digits: dark gold (#9A6500) with subtle shadow
- Countdown/tip badges: dark gold on light background
- Flag boxes: lighter shadows, no dark glow aura
MatchCards:
- LED time: dark gold for contrast on light bg
- Flag boxes: lighter shadows
BottomNav:
- White background with subtle top border
- Inactive tabs: darker for readability
Global:
- text-muted: 0.45 opacity (was 0.35) — better readability
- text-secondary: 0.65 (was 0.60)
- Gold: #B8740A (darker for light bg contrast)
- shadow-card: much lighter (was too heavy)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Badges: more margin below (10px), better text centering (line-height:1)
- Removed border-top separator between flags and tip area
- Tipped row: full width to align with flag edges
- Reduced card padding for compactness
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- badgeRow now uses same gap (10px) as matchRow for exact alignment
- Theme toggle: removed button box, plain icon like admin gear
- Both icons use text-secondary color, consistent style
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Badge row uses same flex proportions as match row (flex:1 | spacer | flex:1)
so left badge centers over left flag, right badge over right flag.
Full team names restored (no more truncation from 5-column layout).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
MatchCard:
- Badges (group, countdown, LIVE, BEENDET) now vertically centered
to flag height, positioned left/right of the teams
- Removed separate topRow — all in one matchBlock flex layout
Dashboard:
- max-width increased to 800px (matches spielplan width)
Header:
- Theme toggle + admin link moved to headerActions (always visible)
- Theme toggle icon in gold color (was too dark in dark mode)
- Admin link brighter (text-secondary instead of text-muted)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Dashboard: LED digits 20px (was 26px) — less crowded between flags
- MatchCard: topRow margins for better badge alignment
- TipModal: flags now object-fit:cover (fullbleed)
- TipModal: picker buttons less glossy — reduced shine from 55% to 12%,
smaller shadow, subtler hover effect
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Dashboard:
- Flags aligned to top (flex-start) — consistent height regardless of name length
- LED time centered to flag height (64px)
Match Cards:
- Flags fullbleed (object-fit: cover), larger (56px), glassmorphism shine
- LED kickoff time replaces dash separator between flags
- Score appears at same position when Live/Finished
- Removed separate kickoffRow — cards are more compact
- scoreBox height matches flag height for vertical centering
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Removed visible blue border on hero card (now near-invisible white/6%)
- LED kickoff time moved between the two flags (replacing VS text)
- Layout: flag — LED time — flag centered vertically
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Hero card now uses glassmorphism (rgba + backdrop-blur) from Stitch design.
Each flag has individual blur-glow aura behind it.
Rounded corners increased to 2rem. Shadow depth increased.
Stats tiles and nudges also refined with rounder corners.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Hero Card:
- Dramatic gradient background (navy → deep blue)
- Radial glow effect behind team flags (stadium atmosphere)
- LED kickoff time with golden glow
- Larger flag icons (72px) as app-icon style boxes
- Countdown as golden badge with pulsing dot
- Bigger CTA button with gradient and shadow
Bottom Nav:
- Filled/solid SVG icons (home, soccer ball, trophy, person)
instead of Lucide outline icons — more premium feel
Nudges:
- Icon + text layout with hover animation
- Better spacing and visual hierarchy
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- BEENDET as subtle badge on the right (same position as LIVE/countdown)
- Score: 26px default, 32px for live matches
- Score vertically centered to flag height (52px), not flag+name
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- LIVE: pulsing red badge with dot, right-aligned in header (replaces countdown position)
- Live score: 28px instead of 22px for better visibility
- Removed duplicate tip display under live score (tip only shown in footer)
- BEENDET status stays left in header
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Countdown badge in header: Gruppe A ... in 60 Tagen (right side)
- Urgent countdown also in header: Gruppe A ... Noch 9 Min!
- Removed separate countdownRow (was misplaced below kickoff)
- Reduced DSEG7 letter-spacing to fix "2 1:00" gap issue
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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>
- Added DSEG7 font (stadium scoreboard segment display)
- Kickoff time centered in card, no box, just glowing LED digits
- Gold color with double text-shadow glow for authentic look
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Kickoff time styled as LED scoreboard: monospace font, dark background,
gold text with glow effect. Placed in card header next to group badge.
Cards are more compact without the separate kickoff row.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Kickoff: centered "21:00" above flags (no 'Uhr' suffix)
- Countdown: always rendered as badge (was unstyled span for <60min)
- DevPanel: added close button (✕) in panel header for reliable closing
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Kickoff time now in header row: "Gruppe A · 04:00 Uhr · in 61 Tagen"
instead of centered between flags (avoids visual misalignment)
- Date timeline headers: more top padding for balanced spacing
between cards
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Stats: glass card with 2/104 progress + Punkte/Exakt/Offen details
- Date sections: timeline divider with centered label + lines
instead of accordion (no more broken border-radius)
- Past matches: simple toggle button, separate from timeline
- Match list: clean vertical flow without section containers
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Replace 3 large stat tiles with compact "2 von 104 getippt" line
- Remove phase dropdown (not useful for daily tipping)
- Group matches by actual date (Mi, 11. Juni / Do, 12. Juni)
instead of generic "Demnächst"
- First 3 date sections open by default
- Reduce TipModal flag glossy to match MatchCard flags
- Past matches in own collapsed section
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Team names centered below flags (vertical layout)
- Reduced flag box glossy effect (20% shine vs 55%)
- Removed "Terminiert" status from header (only show Live/Beendet)
- Dash separator instead of colon for upcoming matches
- Flex layout instead of grid for better centering
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Move kickoff time above teams row instead of between flags
- Center separator: slim ":" instead of 100px time block
- Use shortName for teams (prevents overflow on mobile)
- Tipped state: clean green bar with icon, label, score, edit hint
instead of scattered checkmark + underline link
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Trefferquote: accuracy already displayed correctly as raw value (no fix needed, was already `{stats.accuracy}%`)
- BottomNav: replace ⚽ emoji with Lucide Swords icon for Spiele tab (emoji rendered as gear on some systems); remove unused .emojiIcon CSS class
- Light mode: stronger card shadows (0 4px 20px + 0 1px 4px) and brighter card shine (0.85)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Dashboard "Jetzt tippen" opens TipModal directly instead of
navigating to /spiele (no more dead-end spielplan)
- After tipping, dashboard updates to show "Dein Tipp: X:Y ✓"
- Spielplan auto-opens all sections when only 1-2 exist
(no more collapsed "Demnächst" as only section)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>