-
Notifications
You must be signed in to change notification settings - Fork 0
Launch Coming Soon page with animated gradient and language selector #49
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,19 +1,14 @@ | ||
| @import "tailwindcss"; | ||
|
|
||
| :root { | ||
| --bg-base: #09090b; | ||
| --bg-surface: #18181b; | ||
| --bg-elevated: #27272a; | ||
| --text-primary: #fafafa; | ||
| --text-secondary: #a1a1aa; | ||
| --text-muted: #71717a; | ||
| --border-default: #3f3f46; | ||
| --border-subtle: #27272a; | ||
| --accent-blue: #3b82f6; | ||
| --accent-blue-hover: #2563eb; | ||
| --accent-blue-active: #1d4ed8; | ||
| --accent-violet: #8b5cf6; | ||
| --focus-ring: #60a5fa; | ||
| --bg-base: #0a0a0f; | ||
| --bg-surface: rgba(255, 255, 255, 0.05); | ||
| --bg-card: rgba(255, 255, 255, 0.08); | ||
| --text-primary: #ffffff; | ||
| --text-secondary: rgba(255, 255, 255, 0.7); | ||
| --border-default: rgba(255, 255, 255, 0.12); | ||
| --border-hover: rgba(255, 255, 255, 0.2); | ||
| --focus-ring: rgba(255, 255, 255, 0.5); | ||
| } | ||
|
|
||
| * { | ||
|
|
@@ -22,10 +17,15 @@ | |
| box-sizing: border-box; | ||
| } | ||
|
|
||
| html, | ||
| body { | ||
| height: 100%; | ||
| overflow: hidden; | ||
|
Comment on lines
+20
to
+23
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 📝 Info: overflow: hidden on html and body prevents scrolling entirely The new CSS at Was this helpful? React with 👍 or 👎 to provide feedback. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. P2: Global Prompt for AI agents |
||
| } | ||
|
Comment on lines
+20
to
+24
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧹 Nitpick | 🔵 Trivial | 💤 Low value
Setting Consider using 🤖 Prompt for AI Agents |
||
|
|
||
| html { | ||
| background-color: var(--bg-base); | ||
| color-scheme: dark; | ||
| scroll-behavior: smooth; | ||
| } | ||
|
|
||
| body { | ||
|
|
@@ -45,159 +45,190 @@ body { | |
| } | ||
|
|
||
| /* ======================================== | ||
| TYPOGRAPHY HIERARCHY | ||
| ANIMATED GRADIENT BACKGROUND | ||
| ======================================== */ | ||
|
|
||
| h1 { | ||
| font-size: 2rem; | ||
| font-weight: 700; | ||
| letter-spacing: -0.025em; | ||
| line-height: 1.2; | ||
| color: var(--text-primary); | ||
| } | ||
|
|
||
| @media (min-width: 640px) { | ||
| h1 { | ||
| font-size: 2.5rem; | ||
| .animated-gradient { | ||
| position: fixed; | ||
| inset: 0; | ||
| z-index: 0; | ||
| background: linear-gradient( | ||
| 135deg, | ||
| #0a0a0f 0%, | ||
| #1a1a2e 25%, | ||
| #16213e 50%, | ||
| #0f3460 75%, | ||
| #0a0a0f 100% | ||
| ); | ||
| background-size: 400% 400%; | ||
| animation: gradientShift 15s ease infinite; | ||
| } | ||
|
|
||
| @keyframes gradientShift { | ||
| 0% { | ||
| background-position: 0% 50%; | ||
| } | ||
| 50% { | ||
| background-position: 100% 50%; | ||
| } | ||
| 100% { | ||
| background-position: 0% 50%; | ||
| } | ||
| } | ||
|
Comment on lines
+67
to
77
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧹 Nitpick | 🔵 Trivial | ⚡ Quick win Rename keyframe to kebab-case per linting rules. Stylelint reports that keyframe names should follow ♻️ Proposed fix-@keyframes gradientShift {
+@keyframes gradient-shift {
0% {
background-position: 0% 50%;
}Also update the reference in - animation: gradientShift 15s ease infinite;
+ animation: gradient-shift 15s ease infinite;🧰 Tools🪛 Stylelint (17.11.1)[error] 67-67: Expected keyframe name "gradientShift" to be kebab-case (keyframes-name-pattern) (keyframes-name-pattern) 🤖 Prompt for AI Agents |
||
|
|
||
| h2 { | ||
| font-size: 1.25rem; | ||
| font-weight: 600; | ||
| letter-spacing: -0.01em; | ||
| line-height: 1.3; | ||
| color: var(--text-primary); | ||
| /* Subtle overlay for depth */ | ||
| .animated-gradient::after { | ||
| content: ""; | ||
| position: absolute; | ||
| inset: 0; | ||
| background: radial-gradient( | ||
| ellipse at center, | ||
| transparent 0%, | ||
| rgba(0, 0, 0, 0.3) 100% | ||
| ); | ||
| pointer-events: none; | ||
| } | ||
|
|
||
| h3 { | ||
| font-size: 1.125rem; | ||
| font-weight: 600; | ||
| line-height: 1.4; | ||
| color: var(--text-primary); | ||
| /* ======================================== | ||
| CARD STYLING | ||
| ======================================== */ | ||
|
|
||
| .coming-soon-card { | ||
| position: relative; | ||
| background: var(--bg-card); | ||
| backdrop-filter: blur(20px); | ||
| -webkit-backdrop-filter: blur(20px); | ||
| border: 1px solid var(--border-default); | ||
| border-radius: 1.5rem; | ||
| padding: 3rem 4rem; | ||
| text-align: center; | ||
| box-shadow: | ||
| 0 25px 50px -12px rgba(0, 0, 0, 0.5), | ||
| 0 0 0 1px rgba(255, 255, 255, 0.05) inset; | ||
| } | ||
|
|
||
| p { | ||
| color: var(--text-secondary); | ||
| line-height: 1.65; | ||
| @media (max-width: 640px) { | ||
| .coming-soon-card { | ||
| padding: 2rem 1.5rem; | ||
| margin: 0 1rem; | ||
| border-radius: 1rem; | ||
| } | ||
| } | ||
|
|
||
| /* ======================================== | ||
| FOCUS & ACCESSIBILITY | ||
| TYPOGRAPHY | ||
| ======================================== */ | ||
|
|
||
| :focus-visible { | ||
| outline: 2px solid var(--focus-ring); | ||
| outline-offset: 2px; | ||
| .coming-soon-title { | ||
| font-size: 3rem; | ||
| font-weight: 700; | ||
| letter-spacing: -0.025em; | ||
| line-height: 1.1; | ||
| color: var(--text-primary); | ||
| margin-bottom: 0.75rem; | ||
| } | ||
|
|
||
| button:focus-visible, | ||
| a:focus-visible, | ||
| input:focus-visible, | ||
| select:focus-visible, | ||
| textarea:focus-visible { | ||
| outline: 2px solid var(--focus-ring); | ||
| outline-offset: 2px; | ||
| @media (max-width: 640px) { | ||
| .coming-soon-title { | ||
| font-size: 2rem; | ||
| } | ||
| } | ||
|
|
||
| .coming-soon-subtitle { | ||
| font-size: 1.125rem; | ||
| color: var(--text-secondary); | ||
| font-weight: 400; | ||
| } | ||
|
|
||
| @media (max-width: 640px) { | ||
| .coming-soon-subtitle { | ||
| font-size: 1rem; | ||
| } | ||
| } | ||
|
|
||
| /* ======================================== | ||
| INTERACTIVE ELEMENTS | ||
| LANGUAGE SELECTOR | ||
| ======================================== */ | ||
|
|
||
| button, | ||
| a, | ||
| input, | ||
| select, | ||
| textarea { | ||
| transition: all 0.15s ease-in-out; | ||
| .language-selector { | ||
| position: relative; | ||
| display: inline-block; | ||
| } | ||
|
|
||
| /* Primary Button Base */ | ||
| .btn-primary { | ||
| display: inline-flex; | ||
| align-items: center; | ||
| justify-content: center; | ||
| padding: 0.625rem 1rem; | ||
| font-size: 0.875rem; | ||
| font-weight: 600; | ||
| color: white; | ||
| background-color: var(--accent-blue); | ||
| border: none; | ||
| .language-selector select { | ||
| appearance: none; | ||
| background: var(--bg-surface); | ||
| backdrop-filter: blur(12px); | ||
| -webkit-backdrop-filter: blur(12px); | ||
| border: 1px solid var(--border-default); | ||
| border-radius: 0.5rem; | ||
| padding: 0.5rem 2.25rem 0.5rem 0.875rem; | ||
| font-size: 0.875rem; | ||
| font-weight: 500; | ||
| color: var(--text-primary); | ||
| cursor: pointer; | ||
| transition: all 0.15s ease-in-out; | ||
| min-width: 100px; | ||
| } | ||
|
|
||
| .btn-primary:hover { | ||
| background-color: var(--accent-blue-hover); | ||
| transform: translateY(-1px); | ||
| box-shadow: 0 4px 12px rgba(59, 130, 246, 0.3); | ||
| .language-selector select:hover { | ||
| border-color: var(--border-hover); | ||
| background: rgba(255, 255, 255, 0.08); | ||
| } | ||
|
|
||
| .btn-primary:active { | ||
| background-color: var(--accent-blue-active); | ||
| transform: translateY(0); | ||
| box-shadow: none; | ||
| .language-selector select:focus { | ||
| outline: none; | ||
| border-color: var(--focus-ring); | ||
| box-shadow: 0 0 0 2px var(--focus-ring); | ||
| } | ||
|
|
||
| .btn-primary:focus-visible { | ||
| outline: 2px solid var(--focus-ring); | ||
| outline-offset: 2px; | ||
| .language-selector select:focus-visible { | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. P3: The Prompt for AI agents |
||
| outline: none; | ||
| border-color: var(--focus-ring); | ||
| box-shadow: 0 0 0 2px var(--focus-ring); | ||
| } | ||
|
|
||
| /* ======================================== | ||
| CARD / PANEL STYLING | ||
| ======================================== */ | ||
|
|
||
| .card { | ||
| background-color: var(--bg-surface); | ||
| border: 1px solid var(--border-subtle); | ||
| border-radius: 0.75rem; | ||
| overflow: hidden; | ||
| transition: all 0.2s ease-in-out; | ||
| } | ||
|
|
||
| .card:hover { | ||
| border-color: var(--border-default); | ||
| box-shadow: | ||
| 0 8px 24px rgba(0, 0, 0, 0.4), | ||
| 0 0 0 1px rgba(255, 255, 255, 0.05); | ||
| transform: translateY(-2px); | ||
| .language-selector::after { | ||
| content: ""; | ||
| position: absolute; | ||
| right: 0.75rem; | ||
| top: 50%; | ||
| transform: translateY(-50%); | ||
| width: 0; | ||
| height: 0; | ||
| border-left: 5px solid transparent; | ||
| border-right: 5px solid transparent; | ||
| border-top: 5px solid var(--text-secondary); | ||
| pointer-events: none; | ||
| } | ||
|
|
||
| /* ======================================== | ||
| HEADER / NAVIGATION | ||
| VERSION LABEL | ||
| ======================================== */ | ||
|
|
||
| .site-header { | ||
| background-color: rgba(24, 24, 27, 0.85); | ||
| backdrop-filter: blur(12px); | ||
| -webkit-backdrop-filter: blur(12px); | ||
| border-bottom: 1px solid var(--border-subtle); | ||
| position: sticky; | ||
| top: 0; | ||
| z-index: 50; | ||
| .version-label { | ||
| position: fixed; | ||
| bottom: 1.25rem; | ||
| right: 1.5rem; | ||
| z-index: 10; | ||
| font-size: 0.75rem; | ||
| font-weight: 600; | ||
| letter-spacing: 0.02em; | ||
| color: #ffffff; | ||
| text-shadow: 0 1px 3px rgba(0, 0, 0, 0.5); | ||
| } | ||
|
|
||
| /* ======================================== | ||
| BADGE / TAG STYLING | ||
| FOCUS & ACCESSIBILITY | ||
| ======================================== */ | ||
|
|
||
| .badge { | ||
| display: inline-flex; | ||
| align-items: center; | ||
| padding: 0.25rem 0.625rem; | ||
| font-size: 0.75rem; | ||
| font-weight: 600; | ||
| letter-spacing: 0.01em; | ||
| border-radius: 0.375rem; | ||
| background-color: var(--accent-violet); | ||
| color: white; | ||
| box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3); | ||
| :focus-visible { | ||
| outline: 2px solid var(--focus-ring); | ||
| outline-offset: 2px; | ||
| } | ||
|
|
||
| /* ======================================== | ||
| SKIP LINK (Accessibility) | ||
| SKIP LINK | ||
| ======================================== */ | ||
|
|
||
| .skip-link { | ||
|
|
@@ -208,35 +239,11 @@ textarea { | |
| padding: 0.75rem 1rem; | ||
| font-weight: 600; | ||
| color: white; | ||
| background-color: var(--accent-blue); | ||
| background-color: #3b82f6; | ||
| border-radius: 0.5rem; | ||
| text-decoration: none; | ||
| } | ||
|
|
||
| .skip-link:focus { | ||
| top: 1rem; | ||
| } | ||
|
|
||
| /* ======================================== | ||
| UTILITY CLASSES | ||
| ======================================== */ | ||
|
|
||
| .text-muted { | ||
| color: var(--text-secondary); | ||
| } | ||
|
|
||
| .text-subtle { | ||
| color: var(--text-muted); | ||
| } | ||
|
|
||
| .bg-base { | ||
| background-color: var(--bg-base); | ||
| } | ||
|
|
||
| .bg-surface { | ||
| background-color: var(--bg-surface); | ||
| } | ||
|
|
||
| .bg-elevated { | ||
| background-color: var(--bg-elevated); | ||
| } | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
🏁 Script executed:
Repository: LCSOGthb/Games
Length of output: 86
🏁 Script executed:
Repository: LCSOGthb/Games
Length of output: 480
Define missing CSS tokens used by
GameCardcomponents/GameCard.tsxreferences--bg-elevatedand--border-subtle, butapp/globals.cssno longer defines them, so those styles resolve to invalidvar()values. A repo-wide search forGameCardonly matchescomponents/GameCard.tsx, so it may be currently unused, but the component is still broken—add the missing variables or updateGameCardto use existing tokens.🤖 Prompt for AI Agents