diff --git a/frontend/index.html b/frontend/index.html index 6856727..cf8d36e 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -5,6 +5,14 @@ + + + + TriplePick 2026 | AI 2026 글로벌 축구 축전 승부예측 — GPT vs Claude vs Gemini = { open: "border-[#94FBE0] text-[#94FBE0]", - scheduled: "border-[var(--line-d)] text-[var(--ink-muted)]", - locked: "border-[var(--line-d)] text-white/45", + scheduled: "border-white/20 text-white/60", + locked: "border-white/20 text-white/60", live: "border-[#FF5B5B] text-[#FF5B5B]", - finished: "border-white/15 text-white/55", - cancelled: "border-white/10 text-white/35", + finished: "border-white/25 text-white/70", + cancelled: "border-white/10 text-white/40", }; // 토너먼트 탭 라운드 칩 정렬(대진 순서) @@ -201,7 +201,7 @@ export default function ScheduleBoard({

{t.schedTitle}

- {t.schedGuide} + {t.schedGuide}
{/* 탭: 축구 = 날짜별/조별리그/토너먼트 · 야구 = 날짜별/팀별 */} @@ -213,7 +213,7 @@ export default function ScheduleBoard({ className={`-mb-px border-b-2 pb-2 text-[15px] font-bold transition ${ effTab === k ? "border-[var(--green)] text-white" - : "border-transparent text-white/45" + : "border-transparent text-white/60" }`} > {tabLabel(k)} @@ -271,7 +271,7 @@ export default function ScheduleBoard({ {effTab !== "rank" && (
{shown.length === 0 && ( -

+

{effTab === "tournament" ? lang === "en" ? "Bracket is set after the group stage." @@ -394,7 +394,7 @@ function Chip({ className={`shrink-0 whitespace-nowrap rounded-full border px-3.5 py-1.5 text-[13px] font-bold transition ${ active ? "border-[#94FBE0] text-[#94FBE0]" - : "border-[var(--line-d)] text-white/55" + : "border-white/20 text-white/70" }`} > {children} @@ -404,7 +404,7 @@ function Chip({ // MLS 최근 5경기 폼 — "WWLDW" 를 W/D/L 색으로 표시 export function FormBadges({ form }: { form?: string | null }) { - if (!form) return ?; + if (!form) return ?; return ( {form.split("").map((c, i) => ( @@ -415,7 +415,7 @@ export function FormBadges({ form }: { form?: string | null }) { ? "text-[#94FBE0]" : c === "L" ? "text-[#FF5B5B]/80" - : "text-white/45" + : "text-white/60" } > {c} @@ -429,7 +429,7 @@ export function FormBadges({ form }: { form?: string | null }) { function RankBadge({ rank, lang = "ko" }: { rank?: number | null; lang?: Lang }) { if (!rank) return null; return ( - + {lang === "en" ? `#${rank}` : `${rank}위`} ); @@ -493,21 +493,21 @@ function MatchCard({ // 비투표(타 조)는 클릭 비활성, 투표 가능 조(A)는 상세로 이동 const inner = ( <> -

- +
+ {showDate && ( - {shortDate(dateKey(match.kickoffKst), lang)} + {shortDate(dateKey(match.kickoffKst), lang)} )} - {timeOnly(match.kickoffKst)} KST + {timeOnly(match.kickoffKst)} KST {isClub && match.venue ? ( - · {match.venue} + · {match.venue} ) : match.group && match.roundLabel ? ( <> · {tRound(match.roundLabel, lang)} ) : null} {!isClub && ( - + {match.group ? lang === "en" ? `Group ${match.group}` @@ -560,29 +560,29 @@ function MatchCard({ {/* 야구: 선발 매치업 (프리뷰 캐시 있을 때만) */} {isBaseball && !match.result && (match.extras?.starterA || match.extras?.starterB) && ( -
- {lang === "en" ? "SP" : "선발"}{" "} +
+ {lang === "en" ? "SP" : "선발"}{" "} {match.extras?.starterA?.name ?? "?"} - vs + vs {match.extras?.starterB?.name ?? "?"}
)} {/* MLS: 최근 5경기 폼 (프리뷰 캐시 있을 때만) — 홈(왼쪽) 먼저 */} {isMls && !match.result && (match.extras?.formA || match.extras?.formB) && ( -
- {lang === "en" ? "Last 5" : "최근 5경기"}{" "} +
+ {lang === "en" ? "Last 5" : "최근 5경기"}{" "} - vs + vs
)} {/* 투표 가능 조만: AI 픽 갈림 + 참여수 + 이동 화살표 (취소 경기는 숨김) */} {match.votable && phase !== "cancelled" && ( -
+
- {t.aiPicks}{" "} + {t.aiPicks}{" "} {aiSplit(match, lang).join(" · ")} diff --git a/frontend/src/globals.css b/frontend/src/globals.css index d0d8265..52e4354 100644 --- a/frontend/src/globals.css +++ b/frontend/src/globals.css @@ -42,8 +42,8 @@ body { body { font-family: - "Pretendard", -apple-system, BlinkMacSystemFont, system-ui, - "Apple SD Gothic Neo", "Malgun Gothic", sans-serif; + "Pretendard Variable", "Pretendard", -apple-system, BlinkMacSystemFont, + system-ui, "Apple SD Gothic Neo", "Malgun Gothic", sans-serif; margin: 0; }