.dashboard { padding: 12px; max-width: 800px; margin: 0 auto; display: flex; flex-direction: column; gap: 14px; } /* ═══════════════════════════════════════ HERO CARD — Stadium atmosphere ═══════════════════════════════════════ */ .hero { position: relative; border-radius: 2rem; padding: 28px 22px 22px; cursor: pointer; overflow: hidden; /* Glassmorphism with curvature shine */ background: rgba(49, 52, 66, 0.45); backdrop-filter: blur(24px); -webkit-backdrop-filter: blur(24px); border: 1px solid rgba(255, 255, 255, 0.08); box-shadow: 0 40px 80px -15px rgba(0, 0, 0, 0.6), 0 8px 24px rgba(0, 0, 0, 0.3), inset 0 1px 0 rgba(255, 255, 255, 0.12); transition: transform 0.2s; } /* Glossy curvature shine — top highlight */ .hero::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 45%; background: linear-gradient(180deg, rgba(255, 255, 255, 0.08) 0%, transparent 100%); pointer-events: none; z-index: 0; border-radius: 2rem 2rem 0 0; } .hero:hover { transform: scale(1.01); } /* Radial glow behind the teams — strong stadium light */ .heroGlow { position: absolute; top: 50%; left: 50%; width: 400px; height: 350px; transform: translate(-50%, -50%); background: radial-gradient(circle at center, rgba(75, 183, 248, 0.2) 0%, rgba(75, 183, 248, 0.08) 35%, transparent 65%); pointer-events: none; z-index: 0; } .heroHeader { display: flex; justify-content: space-between; align-items: center; position: relative; z-index: 1; margin-bottom: 12px; } .heroLabel { font-size: 0.7rem; text-transform: uppercase; letter-spacing: 1.5px; color: var(--text-muted); font-weight: 600; } .heroCountdown { display: flex; align-items: center; gap: 6px; color: var(--gold); font-weight: 700; font-size: 0.75rem; letter-spacing: 0.5px; background: rgba(254, 174, 50, 0.1); padding: 4px 10px; border-radius: 20px; border: 1px solid rgba(254, 174, 50, 0.2); } .countdownDot { width: 6px; height: 6px; border-radius: 50%; background: var(--gold); animation: pulse 2s ease-in-out infinite; } @keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.3; } } /* Center column: LED time between flags, vertically centered to flag height */ .heroCenter { display: flex; flex-direction: column; align-items: center; justify-content: center; height: 64px; /* matches flag box height */ position: relative; z-index: 1; } .heroLED { display: flex; align-items: center; justify-content: center; position: relative; } .ledDigit, .ledColon { font-family: 'DSEG7', 'Courier New', monospace; font-size: 20px; color: #FECC4C; display: inline-block; text-align: center; text-shadow: 0 0 3px rgba(254, 174, 50, 1), 0 0 8px rgba(254, 174, 50, 0.7), 0 0 20px rgba(254, 174, 50, 0.4), 0 0 40px rgba(254, 174, 50, 0.15); } .ledDigit { width: 14px; } .ledColon { width: 6px; } .heroGroup { font-size: 0.6rem; color: var(--text-muted); text-transform: uppercase; letter-spacing: 1px; } /* Teams */ .heroTeams { display: flex; justify-content: center; align-items: flex-start; gap: 8px; margin: 16px 0 20px; position: relative; z-index: 1; } .heroTeam { display: flex; flex-direction: column; align-items: center; gap: 8px; flex: 1; } .heroCrestBox { position: relative; width: 64px; height: 64px; border-radius: 16px; background: var(--surface-high); box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4), inset 0 1px 0 rgba(255, 255, 255, 0.12); border: 1px solid rgba(255, 255, 255, 0.1); display: flex; align-items: center; justify-content: center; overflow: hidden; } /* Glossy shine on flag box */ .heroCrestBox::after { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 40%; background: linear-gradient(180deg, rgba(255, 255, 255, 0.15) 0%, transparent 100%); pointer-events: none; z-index: 2; border-radius: 16px 16px 0 0; } /* Glow aura behind each flag */ .heroCrestBox::before { content: ''; position: absolute; inset: -12px; background: rgba(75, 183, 248, 0.18); filter: blur(20px); border-radius: 50%; z-index: -1; } /* Flag fills the entire box */ .heroCrest { width: 100%; height: 100%; object-fit: cover; } .heroCrestFallback { font-size: 32px; } .heroTeamName { font-size: 0.85rem; font-weight: 700; color: var(--text-primary); text-transform: uppercase; letter-spacing: 0.5px; text-align: center; } /* VS is now replaced by heroCenter with LED time */ .heroVs { display: none; } /* CTA / Tip */ .heroTipBtn { display: block; width: 100%; padding: 14px; border: none; border-radius: var(--radius-md); background: linear-gradient(135deg, var(--primary) 0%, #2196f3 100%); color: white; font-weight: 700; font-size: 1rem; cursor: pointer; position: relative; z-index: 1; box-shadow: 0 4px 20px rgba(75, 183, 248, 0.3); transition: transform 0.15s, box-shadow 0.15s; letter-spacing: 0.3px; } .heroTipBtn:hover { transform: translateY(-1px); box-shadow: 0 6px 24px rgba(75, 183, 248, 0.4); } .heroTipBtn:active { transform: scale(0.98); } .heroTip { border-radius: var(--radius-sm); padding: 10px 16px; text-align: center; color: var(--gold); font-weight: 600; font-size: 0.9rem; background: rgba(254, 174, 50, 0.08); border: 1px solid rgba(254, 174, 50, 0.15); position: relative; z-index: 1; } .heroEmpty { text-align: center; color: var(--text-muted); margin: 24px 0; position: relative; z-index: 1; } /* ═══════════════════════════════════════ STATS ROW ═══════════════════════════════════════ */ .statsRow { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 8px; } .statTile { padding: 18px 8px; text-align: center; border-radius: 1.5rem !important; border: 1px solid rgba(255, 255, 255, 0.05) !important; } .statValue { display: block; font-size: 1.6rem; font-weight: 800; color: var(--text-primary); line-height: 1; } .statGold { color: var(--gold); } .statLabel { display: block; font-size: 0.65rem; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.8px; margin-top: 6px; font-weight: 600; } /* ═══════════════════════════════════════ NUDGES ═══════════════════════════════════════ */ .nudges { display: flex; flex-direction: column; gap: 8px; } .nudge { display: flex; align-items: center; gap: 14px; padding: 14px 16px; cursor: pointer; transition: all 0.2s; border-radius: 1.25rem !important; border: 1px solid rgba(255, 255, 255, 0.05) !important; } .nudge:hover { transform: translateX(2px); } .nudgeIcon { width: 40px; height: 40px; border-radius: 50%; background: rgba(75, 183, 248, 0.1); display: flex; align-items: center; justify-content: center; font-size: 1.1rem; flex-shrink: 0; } .nudgeText { font-size: 0.85rem; color: var(--text-secondary); line-height: 1.4; } /* ═══════════════════════════════════════ STATES ═══════════════════════════════════════ */ .loading, .error { text-align: center; padding: 60px 20px; color: var(--text-muted); }