Skip to content

Revamp UI with liquid glass style and colorful background#60

Merged
LCSOGthb merged 7 commits into
mainfrom
ai_main_6415658896f649fbb315
Jun 12, 2026
Merged

Revamp UI with liquid glass style and colorful background#60
LCSOGthb merged 7 commits into
mainfrom
ai_main_6415658896f649fbb315

Conversation

@LCSOGthb

@LCSOGthb LCSOGthb commented Jun 12, 2026

Copy link
Copy Markdown
Owner

User description

Summary

This PR overhauls the visual design with a liquid glass aesthetic, a vibrant animated gradient background, and improved readability for the "Coming Soon" card and language selector.

Problem

The original UI had a dark, bland gradient background and a card design that lacked visual clarity. The "Coming Soon" title used a purple gradient text that was hard to read, and the overall glassmorphism effect was too subtle and dark.

Solution

Replaced the muted dark color palette with lighter, more translucent glass-style surfaces and a vivid multi-color animated gradient background. The "Coming Soon" title was switched to solid white with a soft glow text-shadow for better visibility.

Key Changes

  • Animated background: Updated gradient stops to include vibrant colors (#a78bfa, #60a5fa, #34d399, #f472b6) and added a colorCycle keyframe animation using hue-rotate and saturate filters for dynamic color shifting over time
  • Lighter overlay: Reduced the radial gradient overlay opacity from 0.3 to 0.15 for a less heavy feel
  • Liquid glass card: Increased backdrop blur from 40px to 60px, switched card background to rgba(255,255,255,0.18), and enhanced borders and box shadows with stronger white highlights and a subtle indigo glow
  • "Coming Soon" title: Removed the purple gradient clip-text effect; replaced with plain white (#ffffff) and a layered text-shadow for a glowing, readable appearance
  • Language selector: Updated to use a lighter frosted-glass background (rgba(255,255,255,0.12)) with increased blur and an indigo glow on hover
  • CSS variables: Adjusted --bg-base, --bg-card, --border-default, and --border-hover to use lighter, more translucent white-based values

Edit in Builder  Preview

Tip

This PR wasn't reviewed by Quality Agent. Enable it in Project Settings to get AI-powered code review on every PR.


To clone this PR locally use the Github CLI with command gh pr checkout 60

You can tag me at @BuilderIO for anything you want me to fix or change


Summary by cubic

Refreshes the global UI with a vibrant animated background, glassmorphic cards, and clearer typography for better readability and polish. Also updates the language selector styling for better contrast and hover feedback.

  • UI Improvements
    • Updated theme variables for brighter dark mode and higher-contrast borders.
    • Added multi-color animated gradient with hue cycling; softened overlay for depth.
    • Enhanced “Coming Soon” card with stronger glass effect, increased blur, refined borders/shadows, and richer hover glow.
    • Switched heading to solid white with a soft glow for improved legibility.
    • Restyled language selector with translucent white background, more blur, and subtle hover shadow.

Written for commit 0d7dd7a. Summary will update on new commits.

Review in cubic


CodeAnt-AI Description

Refresh the Coming Soon screen with a brighter glass-style look

What Changed

  • Replaced the dark background and card styling with a lighter liquid-glass design and a more vibrant animated gradient
  • Made the "Coming Soon" heading plain white with a glow so it is easier to read
  • Updated the language selector to match the new frosted-glass style and feel more visible on hover

Impact

✅ Clearer Coming Soon headline
✅ Brighter landing page appearance
✅ Easier-to-spot language selector

💡 Usage Guide

Checking Your Pull Request

Every time you make a pull request, our system automatically looks through it. We check for security issues, mistakes in how you're setting up your infrastructure, and common code problems. We do this to make sure your changes are solid and won't cause any trouble later.

Talking to CodeAnt AI

Got a question or need a hand with something in your pull request? You can easily get in touch with CodeAnt AI right here. Just type the following in a comment on your pull request, and replace "Your question here" with whatever you want to ask:

@codeant-ai ask: Your question here

This lets you have a chat with CodeAnt AI about your pull request, making it easier to understand and improve your code.

Example

@codeant-ai ask: Can you suggest a safer alternative to storing this secret?

Preserve Org Learnings with CodeAnt

You can record team preferences so CodeAnt AI applies them in future reviews. Reply directly to the specific CodeAnt AI suggestion (in the same thread) and replace "Your feedback here" with your input:

@codeant-ai: Your feedback here

This helps CodeAnt AI learn and adapt to your team's coding style and standards.

Example

@codeant-ai: Do not flag unused imports.

Retrigger review

Ask CodeAnt AI to review the PR again, by typing:

@codeant-ai: review

Check Your Repository Health

To analyze the health of your code repository, visit our dashboard at https://app.codeant.ai. This tool helps you identify potential issues and areas for improvement in your codebase, ensuring your repository maintains high standards of code health.

Greptile Summary

This PR is a visual theme refresh of app/globals.css, shifting the background palette from muted dark blues to a vibrant multi-color gradient (purple → blue → green → pink) and adding a new colorCycle keyframe animation that continuously rotates the hue of the background element across the full 360° spectrum over 45 seconds.

  • The .animated-gradient element now runs two parallel animations — the existing gradientShift and the new colorCycle (using filter: hue-rotate()) — to create a dynamic, colour-cycling background effect.
  • .coming-soon-card glass effect is intensified (blur increased from 40 px to 60 px, higher background opacity, stronger borders and shadow spreads).
  • .coming-soon-title drops the -webkit-background-clip: text gradient approach in favour of solid white with text-shadow, which is more broadly compatible.

Confidence Score: 4/5

Safe to merge; all changes are purely visual CSS with no functional regressions. The main thing worth revisiting before shipping is motion accessibility.

The change is entirely cosmetic — no logic, no data, no API surface touched. The one gap worth addressing is that neither the new colorCycle animation nor the existing gradientShift are guarded by prefers-reduced-motion, which matters for users with vestibular sensitivity. Everything else is straightforward colour and shadow value tuning.

app/globals.css — specifically the animation declarations and the absence of a reduced-motion media query.

Important Files Changed

Filename Overview
app/globals.css Visual theme refresh: brighter gradient palette, a new continuous hue-rotation animation (colorCycle), more opaque glassmorphism card, and simplified title text rendering. No prefers-reduced-motion guard covers the new or existing animations.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[".animated-gradient (fixed, z-index:0)"] -->|"animation: gradientShift 20s"| B["Background position shift\n(0% → 100% → 0%)"]
    A -->|"animation: colorCycle 45s NEW"| C["filter: hue-rotate(0→360deg)\nsaturate(1→1.2→1)"]
    A -->|"::after pseudo-element"| D["Radial gradient overlay\n(rgba(0,0,0,0.15))"]
    B --> E["Combined visual effect\non background layer"]
    C --> E
    D --> E
    E --> F[".coming-soon-card\nbackdrop-filter: blur(60px)"]
    F --> G[".coming-soon-title\nwhite + text-shadow"]
    F --> H[".language-selector select\nbackdrop-filter: blur(20px)"]
Loading

Fix All in Cursor Fix All in Codex Fix All in Claude Code Fix All in Conductor

Reviews (1): Last reviewed commit: "style: format code with Autopep8, Black,..." | Re-trigger Greptile

Greptile also left 1 inline comment on this PR.

@vercel

vercel Bot commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
games Error Error Jun 12, 2026 5:33pm

@cr-gpt

cr-gpt Bot commented Jun 12, 2026

Copy link
Copy Markdown

Seems you are using me but didn't get OPENAI_API_KEY seted in Variables/Secrets for this repo. you could follow readme for more information

@semanticdiff-com

semanticdiff-com Bot commented Jun 12, 2026

Copy link
Copy Markdown

Review changes with  SemanticDiff

Changed Files
File Status
  app/globals.css  27% smaller

@netlify

netlify Bot commented Jun 12, 2026

Copy link
Copy Markdown

Deploy Preview for lsngames failed.

Name Link
🔨 Latest commit e7e4308
🔍 Latest deploy log https://app.netlify.com/projects/lsngames/deploys/6a2c3d203704160008e7e9bf

@codeant-ai

codeant-ai Bot commented Jun 12, 2026

Copy link
Copy Markdown

CodeAnt AI is reviewing your PR.


Thanks for using CodeAnt! 🎉

We're free for open-source projects. if you're enjoying it, help us grow by sharing.

Share on X ·
Reddit ·
LinkedIn

@qodo-code-review

qodo-code-review Bot commented Jun 12, 2026

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (2) 📘 Rule violations (0) 📎 Requirement gaps (0) 🎨 UX issues (0) 🔗 Cross-repo conflicts (0)

Grey Divider


Action required

1. Missing reduced-motion override 🐞 Bug ☼ Reliability
Description
.animated-gradient runs continuous gradientShift + colorCycle animations unconditionally, so
users with prefers-reduced-motion: reduce will still see full-screen motion effects. This is an
accessibility regression for motion-sensitive users.
Code

app/globals.css[67]

+  animation: gradientShift 20s ease infinite, colorCycle 45s ease-in-out infinite;
Evidence
The background element is full-screen and is always animated with two infinite animations; there is
no conditional CSS in this area to disable the motion for reduced-motion users.

app/globals.css[53-68]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
The animated background runs indefinitely and does not respect the user’s reduced-motion preference.

### Issue Context
The `.animated-gradient` element is a fixed, full-viewport background and is always animated via the `animation` property.

### Fix
Add a `@media (prefers-reduced-motion: reduce)` block that disables (or significantly simplifies) the animation for `.animated-gradient`.

### Fix Focus Areas
- app/globals.css[59-67]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Remediation recommended

2. Fullscreen filter animation cost 🐞 Bug ➹ Performance
Description
colorCycle animates filter: hue-rotate(...) saturate(...) on a fixed, viewport-sized element,
which is likely to increase per-frame render/compositing work and can degrade smoothness on low-end
devices. This is a performance risk because the effect runs forever and covers the entire screen.
Code

app/globals.css[R82-97]

+@keyframes colorCycle {
+  0% {
+    filter: hue-rotate(0deg) saturate(1);
+  }
+  25% {
+    filter: hue-rotate(60deg) saturate(1.2);
+  }
+  50% {
+    filter: hue-rotate(120deg) saturate(1.1);
+  }
+  75% {
+    filter: hue-rotate(240deg) saturate(1.2);
+  }
+  100% {
+    filter: hue-rotate(360deg) saturate(1);
+  }
Evidence
The animated element covers the entire viewport and runs two infinite animations; colorCycle
specifically animates the filter property, which increases the likelihood of expensive full-screen
per-frame work.

app/globals.css[53-68]
app/globals.css[82-98]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

### Issue description
Animating `filter` on a full-screen element can be expensive because it may require extra compositing/work each frame.

### Issue Context
`.animated-gradient` is `position: fixed` + `inset: 0` and runs both `gradientShift` and `colorCycle` infinitely; `colorCycle` animates `filter`.

### Fix
Prefer an animation that avoids `filter` on the full-screen layer (e.g., animate background-position/colors only, or move the hue-rotate effect to a smaller overlay element), and/or disable `colorCycle` under reduced-motion.

### Fix Focus Areas
- app/globals.css[53-68]
- app/globals.css[82-98]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

Qodo Logo

@sourcery-ai

sourcery-ai Bot commented Jun 12, 2026

Copy link
Copy Markdown

Reviewer's Guide

Refines the global dark theme visuals to a brighter, glassmorphism-inspired aesthetic with a more colorful animated background and enhanced hover/focus treatments for key UI elements.

File-Level Changes

Change Details Files
Adjust global color tokens to support a brighter, higher-contrast dark theme.
  • Update background tokens to a slightly lighter base and more translucent surface/card colors
  • Increase border opacities and switch to white-tinted borders for stronger contrast
app/globals.css
Enhance the animated background with a multi-color gradient and additional color-cycling animation.
  • Replace the previous blue-toned gradient with a multi-stop gradient spanning purple, blue, green, and pink
  • Add a colorCycle keyframe animation that applies hue-rotation and saturation tweaks over time
  • Apply both gradientShift and colorCycle animations to the animated background container
app/globals.css
Restyle the coming-soon card to a more pronounced glassmorphism look with stronger depth and interaction states.
  • Increase backdrop blur, lighten the card background, and use a whiter border for a frosted-glass effect
  • Strengthen box shadows and add an accent glow on the card and its hover state
  • Slightly adjust card border radius and hover styles for a more premium interaction feel
app/globals.css
Update typography and overlay treatments to match the new visual direction.
  • Change the coming-soon title to solid white with layered text shadows instead of a gradient-filled text
  • Lighten the radial overlay shadow to reduce darkening of the background gradient
app/globals.css
Refresh the language selector styling to be consistent with the new glassy UI.
  • Switch the select background to a translucent white with stronger blur
  • Add hover box-shadow glow and remove the previous darker background color override
app/globals.css

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

…isort, Prettier, RuboCop, Ruff Formatter, Rustfmt, Scalafmt, StandardJS, StandardRB, swift-format and Yapf

This commit fixes the style issues introduced in 0d7dd7a according to the output
from Autopep8, Black, ClangFormat, dotnet-format, isort, Prettier, RuboCop, Ruff
Formatter, Rustfmt, Scalafmt, StandardJS, StandardRB, swift-format and Yapf.

Details: #60
@difflens

difflens Bot commented Jun 12, 2026

Copy link
Copy Markdown

View changes in DiffLens

@builder-io-integration builder-io-integration Bot changed the title Update from the Builder.io agent Revamp UI with liquid glass style and colorful background Jun 12, 2026
@difflens

difflens Bot commented Jun 12, 2026

Copy link
Copy Markdown

View changes in DiffLens

@coderabbitai

coderabbitai Bot commented Jun 12, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Summary by CodeRabbit

  • Style
    • Updated core theme colors for backgrounds, surfaces, and card elements
    • Added new color-cycling animation with rotating visual effects
    • Enhanced glass-morphism styling with refined opacity, blur, and shadow effects
    • Improved language selector dropdown appearance with translucent styling and glowing hover state
    • Refined card title styling for improved visual clarity

Walkthrough

Updated global CSS theme variables (background, surface, card, and border colors) and refined animated background effects by adding a colorCycle animation with hue-rotation and saturation filtering. Reworked the Coming Soon card styling with increased glass opacity and blur, adjusted borders and shadows in default and hover states, and changed the title from gradient text to solid white with text-shadow. Updated the language selector dropdown with lighter translucent backgrounds, stronger blur, and a purple glow on hover.

Changes

Theme and Component Styling Updates

Layer / File(s) Summary
Global theme variables and animated background effects
app/globals.css
Root CSS custom properties for background, surface, card, and border colors are updated. The .animated-gradient background gradient colors are replaced and its animation list is expanded to include a new colorCycle keyframe alongside gradientShift. The colorCycle animation applies hue-rotation and saturation filtering over time. The .animated-gradient::after overlay opacity is also refined.
Coming Soon card styling and interaction states
app/globals.css
.coming-soon-card base styling increases glass background opacity and blur strength, adjusts border translucency, and updates box-shadow layers. The :hover state uses a lighter background and border with multi-layered purple glow effects. .coming-soon-title text is changed from a gradient-clipped approach to solid white with explicit multi-layer text-shadow styling.
Language selector dropdown styling
app/globals.css
.language-selector select background is updated to lighter translucent glass with stronger backdrop blur values. The :hover state applies a lighter background and adds a purple glow via box-shadow.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

  • LCSOGthb/Games#49: The main PR directly builds on the coming-soon UI styling from #49 by further editing the same app/globals.css selectors and variables (:root theme vars, .animated-gradient animations/overlay, .coming-soon-card + hover, .coming-soon-title, and .language-selector select/hover).
  • LCSOGthb/Games#53: The main PR's changes to .coming-soon-card styling (glass background/blur, border opacity, and hover box-shadow) are directly related to the retrieved PR's updates to .coming-soon-card layout, responsive styling, and box-shadow in app/globals.css.
  • LCSOGthb/Games#46: Both PRs modify app/globals.css to change the global dark theme styling via theme color/border variables and related visual presentation for cards/overlays, so the main PR's CSS tweaks build directly on the same theming layer.

Poem

🐰 A hop through colors bright and new,
Gradients shift in purple hue,
Glass and glow on cards so fine,
Shadows dance in perfect line!

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The PR title 'Revamp UI with liquid glass style and colorful background' accurately captures the main change—updating the UI design with glassmorphic styling and vibrant animated gradients.
Description check ✅ Passed The PR description is comprehensive and directly related to the changeset, covering the problem statement, solution approach, and detailed key changes to the CSS styling.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch ai_main_6415658896f649fbb315
✨ Simplify code
  • Create PR with simplified code
  • Commit simplified code in branch ai_main_6415658896f649fbb315

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 ESLint

If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.

ESLint install timed out. The project may have too many dependencies for the sandbox.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Comment thread app/globals.css
Comment on lines +120 to +121
backdrop-filter: blur(60px);
-webkit-backdrop-filter: blur(60px);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The use of backdrop-filter: blur(60px); and -webkit-backdrop-filter: blur(60px); in the .coming-soon-card class can cause significant performance degradation, especially on lower-end devices or browsers with limited hardware acceleration. Consider reducing the blur radius or providing a fallback for environments where backdrop-filter is not well supported.

Comment thread app/globals.css
Comment on lines 125 to +128
box-shadow:
0 20px 40px -10px rgba(0, 0, 0, 0.2),
0 0 0 1px rgba(255, 255, 255, 0.08) inset;
0 25px 80px -15px rgba(0, 0, 0, 0.2),
0 0 0 1px rgba(255, 255, 255, 0.3) inset,
0 0 40px rgba(99, 102, 241, 0.1);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Multiple large box-shadows applied to .coming-soon-card may negatively impact rendering performance, particularly on mobile devices. Consider simplifying the box-shadow or using fewer layers to improve performance while maintaining visual depth.

@cr-gpt

cr-gpt Bot commented Jun 12, 2026

Copy link
Copy Markdown

Seems you are using me but didn't get OPENAI_API_KEY seted in Variables/Secrets for this repo. you could follow readme for more information

@difflens

difflens Bot commented Jun 12, 2026

Copy link
Copy Markdown

View changes in DiffLens

@guardrails

guardrails Bot commented Jun 12, 2026

Copy link
Copy Markdown

⚠️ We detected 3 security issues in this pull request:

Hard-Coded Secrets (1)
Severity Details Docs
Medium Title: SonarQube Docs API Key
uses: SonarSource/sonarqube-scan-action@7006c4492b2e0ee0f816d36501671557c97f5995 # v8.1.0
📚

More info on how to fix Hard-Coded Secrets in General.


Vulnerable Libraries (2)
Severity Details
High pkg:npm/eslint-config-next@15.3.4 upgrade to: > 15.3.4
High pkg:npm/wrangler@4.95.0 upgrade to: > 4.95.0

More info on how to fix Vulnerable Libraries in JavaScript.


👉 Go to the dashboard for detailed results.

📥 Happy? Share your feedback with us.

@difflens

difflens Bot commented Jun 12, 2026

Copy link
Copy Markdown

View changes in DiffLens

3 similar comments
@difflens

difflens Bot commented Jun 12, 2026

Copy link
Copy Markdown

View changes in DiffLens

@difflens

difflens Bot commented Jun 12, 2026

Copy link
Copy Markdown

View changes in DiffLens

@difflens

difflens Bot commented Jun 12, 2026

Copy link
Copy Markdown

View changes in DiffLens

Comment thread app/globals.css
Comment on lines 314 to 325
cursor: pointer;
transition: all 0.2s ease-in-out;
min-width: 120px;
background-color: rgba(30, 41, 59, 0.5);
}

.language-selector select:hover {
border-color: var(--accent);
background: rgba(30, 41, 59, 0.6);
background: rgba(255, 255, 255, 0.18);
box-shadow: 0 0 20px rgba(99, 102, 241, 0.2);
}

.language-selector select:focus {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Accessibility Concern: Custom Select Styling

The .language-selector select element is heavily styled, which can sometimes interfere with native accessibility features, especially for keyboard and screen reader users. Ensure that the select element remains fully accessible and that custom styling does not obscure focus indicators or reduce usability for assistive technologies.

Recommendation:

  • Test the select element with keyboard navigation and screen readers.
  • If replacing the native arrow, ensure the custom arrow (created with .language-selector::after) does not interfere with click or focus events.
  • Consider adding aria-label or aria-labelledby attributes if the select lacks a visible label.

@difflens

difflens Bot commented Jun 12, 2026

Copy link
Copy Markdown

View changes in DiffLens

codescene-delta-analysis[bot]

This comment was marked as outdated.

@qodo-code-review

Copy link
Copy Markdown

PR Summary by Qodo

Enhance global UI styling with animated gradient and glassmorphism
✨ Enhancement 🕐 10-20 Minutes

Grey Divider

Walkthroughs

Description
• Refresh global theme colors with lighter glass surfaces and stronger borders
• Add dynamic animated background gradient with hue-rotation color cycling
• Improve “Coming Soon” hero card and language selector visual clarity and hover states
Diagram
graph TD
A["App layout"] --> B["app/globals.css"] --> C["Animated gradient"]
B --> D["Coming Soon card"]
B --> E["Language selector"]
Loading
High-Level Assessment

The following are alternative approaches to this PR:

1. Move styling into Tailwind theme + utilities
  • ➕ Improves consistency with Tailwind-first codebases (less bespoke CSS)
  • ➕ Easier per-component overrides using utility classes
  • ➕ Centralizes colors via tailwind.config tokens
  • ➖ Complex animations (multi-keyframe + filter effects) may be noisier in utilities
  • ➖ Can increase class verbosity in JSX
  • ➖ Requires coordinating theme tokens and refactoring existing CSS selectors
2. Gate heavy animations behind reduced-motion and/or feature flags
  • ➕ Better accessibility for motion-sensitive users
  • ➕ Reduces GPU work on lower-end devices
  • ➕ Allows incremental rollout of the new visual direction
  • ➖ Adds branching complexity (multiple visual paths)
  • ➖ Requires additional testing across user preferences

Recommendation: Current approach (global CSS variables + keyframes + targeted selectors) is appropriate for a cohesive, site-wide visual refresh. Consider adding/ensuring prefers-reduced-motion handling for the new hue-rotate/gradient animations if not already present elsewhere, and optionally migrating stable color tokens into Tailwind theme configuration over time.

Grey Divider

File Changes

Enhancement (1)
globals.css Revamp global theme with animated gradient and glass UI surfaces +54/-37

Revamp global theme with animated gradient and glass UI surfaces

• Updates root theme variables to a lighter, glassmorphism-oriented palette with stronger borders. Enhances the body background with a more vibrant multi-stop gradient and adds a hue-rotation 'colorCycle' animation. Improves Coming Soon card contrast/blur/shadows, switches heading to solid white with glow, and refines language selector translucency and hover styling.

app/globals.css


Grey Divider

Qodo Logo

@codeant-ai codeant-ai Bot added the size:M This PR changes 30-99 lines, ignoring generated files label Jun 12, 2026
@deepsource-io

deepsource-io Bot commented Jun 12, 2026

Copy link
Copy Markdown

DeepSource Code Review

We reviewed changes in 139020e...e7e4308 on this pull request. Below is the summary for the review, and you can see the individual issues we found as inline review comments.

See full review on DeepSource ↗

PR Report Card

Overall Grade   Security  

Reliability  

Complexity  

Hygiene  

Code Review Summary

Analyzer Status Updated (UTC) Details
JavaScript Jun 12, 2026 5:08p.m. Review ↗
Python Jun 12, 2026 5:08p.m. Review ↗
Rust Jun 12, 2026 5:08p.m. Review ↗
Secrets Jun 12, 2026 5:08p.m. Review ↗
Ruby Jun 12, 2026 5:08p.m. Review ↗
Shell Jun 12, 2026 5:08p.m. Review ↗
Scala Jun 12, 2026 5:08p.m. Review ↗
SQL Jun 12, 2026 5:08p.m. Review ↗
Terraform Jun 12, 2026 5:08p.m. Review ↗
Code coverage Jun 12, 2026 5:08p.m. Review ↗
Swift Jun 12, 2026 5:08p.m. Review ↗
C & C++ Jun 12, 2026 5:08p.m. Review ↗
C# Jun 12, 2026 5:08p.m. Review ↗
Ansible Jun 12, 2026 5:09p.m. Review ↗

Important

AI Review is run only on demand for your team. We're only showing results of static analysis review right now. To trigger AI Review, comment @deepsourcebot review on this thread.

@difflens

difflens Bot commented Jun 12, 2026

Copy link
Copy Markdown

View changes in DiffLens

@codescene-delta-analysis codescene-delta-analysis Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Gates Passed
6 Quality Gates Passed

See analysis details in CodeScene

Quality Gate Profile: Customizable Safeguards
Install CodeScene MCP: safeguard and uplift AI-generated code. Catch issues early with our IDE extension and CLI tool.

@sonarqubecloud

Copy link
Copy Markdown

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 2 potential issues.

Open in Devin Review

Comment thread app/globals.css
Comment on lines +5 to +10
--bg-surface: rgba(226, 232, 240, 0.1);
--bg-card: rgba(255, 255, 255, 0.08);
--text-primary: #f1f5f9;
--text-secondary: #cbd5e1;
--border-default: rgba(148, 163, 184, 0.1);
--border-hover: rgba(148, 163, 184, 0.3);
--border-default: rgba(255, 255, 255, 0.2);
--border-hover: rgba(255, 255, 255, 0.3);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📝 Info: Unused CSS custom properties: --bg-card, --bg-surface, --border-hover

The variables --bg-card (app/globals.css:6), --bg-surface (app/globals.css:5), and --border-hover (app/globals.css:10) are defined but never referenced anywhere in the codebase. They were also unused before this PR, but since this PR changed their values, it's worth noting that these value changes have zero effect. These could be cleaned up or they may be intended for future use.

Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Comment thread app/globals.css
Comment on lines 82 to +98
}

@keyframes colorCycle {
0% {
filter: hue-rotate(0deg) saturate(1);
}
25% {
filter: hue-rotate(60deg) saturate(1.2);
}
50% {
filter: hue-rotate(120deg) saturate(1.1);
}
75% {
filter: hue-rotate(240deg) saturate(1.2);
}
100% {
filter: hue-rotate(360deg) saturate(1);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📝 Info: colorCycle filter animation creates a new stacking context but is safe here

The new colorCycle animation applies filter: hue-rotate() to .animated-gradient. In CSS, a non-none filter value creates a new stacking context and can cause issues if descendant elements use position: fixed (they'd become relative to the filtered ancestor instead of the viewport). However, this is safe here because .animated-gradient (app/globals.css:53-68) is a standalone position: fixed background div with aria-hidden="true" and no children (except the ::after pseudo-element which is position: absolute). The main content and other UI elements are siblings, not descendants, so the filter won't affect their positioning.

Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - I've left some high level feedback:

  • The new gradientShift + colorCycle animations introduce continuous motion on the body; consider respecting prefers-reduced-motion to avoid issues for motion-sensitive users and reduce unnecessary GPU work.
  • Several colors are now hard-coded (e.g., pure white for .coming-soon-title and specific rgba values) instead of using CSS variables; aligning these with the existing design tokens would make future theming and adjustments easier.
  • The brighter glassmorphism styles and lighter borders/backgrounds may reduce contrast against the new multicolor gradient; it’s worth quickly checking key text and control states for sufficient contrast, especially on the coming-soon-card and .language-selector select.
Prompt for AI Agents
Please address the comments from this code review:

## Overall Comments
- The new `gradientShift` + `colorCycle` animations introduce continuous motion on the body; consider respecting `prefers-reduced-motion` to avoid issues for motion-sensitive users and reduce unnecessary GPU work.
- Several colors are now hard-coded (e.g., pure white for `.coming-soon-title` and specific rgba values) instead of using CSS variables; aligning these with the existing design tokens would make future theming and adjustments easier.
- The brighter glassmorphism styles and lighter borders/backgrounds may reduce contrast against the new multicolor gradient; it’s worth quickly checking key text and control states for sufficient contrast, especially on the `coming-soon-card` and `.language-selector select`.

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request updates the global CSS styling, introducing a new colorful background gradient, a color-cycling animation, and translucent white styling for the cards and selectors. While these changes enhance the visual design, several critical issues were identified. First, the translucent white card background creates poor text contrast, violating accessibility guidelines; a dark translucent background is recommended instead. Second, animating CSS filters on a full-screen element introduces significant performance overhead, so the color-cycling animation should be removed. Finally, explicitly styling dropdown options is necessary to prevent rendering issues across different browsers.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Comment thread app/globals.css
Comment on lines 119 to +122
.coming-soon-card {
position: relative;
background: rgba(30, 41, 59, 0.25);
backdrop-filter: blur(40px);
-webkit-backdrop-filter: blur(40px);
border: 1px solid rgba(148, 163, 184, 0.15);
background: rgba(255, 255, 255, 0.18);
backdrop-filter: blur(60px);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

Using a highly translucent white background (rgba(255, 255, 255, 0.18)) for the card over a bright, colorful gradient background makes the white text (#ffffff) and light secondary text (#cbd5e1) extremely difficult to read, violating WCAG accessibility guidelines for contrast.

To ensure readability and maintain a beautiful glassmorphism effect, consider using a dark translucent background (e.g., rgba(15, 23, 42, 0.6)) with a subtle white border. This provides excellent contrast for light text while still letting the colorful background gradient blur through beautifully.

Suggested change
.coming-soon-card {
position: relative;
background: rgba(30, 41, 59, 0.25);
backdrop-filter: blur(40px);
-webkit-backdrop-filter: blur(40px);
border: 1px solid rgba(148, 163, 184, 0.15);
background: rgba(255, 255, 255, 0.18);
backdrop-filter: blur(60px);
background: rgba(15, 23, 42, 0.6);
backdrop-filter: blur(40px);
-webkit-backdrop-filter: blur(40px);
border: 1px solid rgba(255, 255, 255, 0.15);

Comment thread app/globals.css
);
background-size: 400% 400%;
animation: gradientShift 20s ease infinite;
animation:

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Animating CSS filters like hue-rotate and saturate on a full-screen element (such as the background gradient) is extremely resource-intensive. It forces the browser to perform continuous repaints and compositing on every frame, which can lead to high CPU/GPU usage, stuttering animations, and rapid battery drain, especially on mobile devices.

Since the gradientShift animation already shifts the gradient position to create a smooth, dynamic color-shifting effect, the colorCycle animation is largely redundant and can be safely removed to significantly improve rendering performance.

Suggested change
animation:
animation: gradientShift 20s ease infinite;

Comment thread app/globals.css
Comment on lines 82 to +98
}

@keyframes colorCycle {
0% {
filter: hue-rotate(0deg) saturate(1);
}
25% {
filter: hue-rotate(60deg) saturate(1.2);
}
50% {
filter: hue-rotate(120deg) saturate(1.1);
}
75% {
filter: hue-rotate(240deg) saturate(1.2);
}
100% {
filter: hue-rotate(360deg) saturate(1);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

If the colorCycle animation is removed from the background element to improve performance, this @keyframes colorCycle block becomes unused and should be removed to keep the stylesheet clean and maintainable.

/* Keyframes removed */

Comment thread app/globals.css
Comment on lines 142 to +147

.coming-soon-card:hover {
background: rgba(30, 41, 59, 0.35);
border-color: rgba(148, 163, 184, 0.25);
background: rgba(255, 255, 255, 0.22);
border-color: rgba(255, 255, 255, 0.45);
box-shadow:
0 20px 40px -10px rgba(99, 102, 241, 0.15),
0 0 0 1px rgba(148, 163, 184, 0.15) inset;
0 30px 100px -15px rgba(99, 102, 241, 0.25),

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

If the card's base background is updated to a dark translucent style to improve text contrast, the hover state should be updated accordingly to maintain visual consistency.

Suggested change
.coming-soon-card:hover {
background: rgba(30, 41, 59, 0.35);
border-color: rgba(148, 163, 184, 0.25);
background: rgba(255, 255, 255, 0.22);
border-color: rgba(255, 255, 255, 0.45);
box-shadow:
0 20px 40px -10px rgba(99, 102, 241, 0.15),
0 0 0 1px rgba(148, 163, 184, 0.15) inset;
0 30px 100px -15px rgba(99, 102, 241, 0.25),
background: rgba(15, 23, 42, 0.7);
border-color: rgba(255, 255, 255, 0.25);
box-shadow:
0 30px 100px -15px rgba(99, 102, 241, 0.3),
0 0 0 1.5px rgba(255, 255, 255, 0.2) inset,
0 0 60px rgba(99, 102, 241, 0.2);

Comment thread app/globals.css
@@ -283,9 +302,9 @@ body {

.language-selector select {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

When styling a <select> element with a light translucent background and light text, some browsers (like Chrome/Firefox on certain operating systems) will render the dropdown options (<option>) with a default light background while inheriting the light text color, making the options completely invisible or unreadable.

To ensure cross-browser compatibility and readability, explicitly style the option elements with a solid, dark background.

Suggested change
.language-selector select {
background: rgba(255, 255, 255, 0.12);
& option {
background-color: #1a1f35;
color: var(--text-primary);
}

Comment thread app/globals.css
Comment on lines +5 to +10
--bg-surface: rgba(226, 232, 240, 0.1);
--bg-card: rgba(255, 255, 255, 0.08);
--text-primary: #f1f5f9;
--text-secondary: #cbd5e1;
--border-default: rgba(148, 163, 184, 0.1);
--border-hover: rgba(148, 163, 184, 0.3);
--border-default: rgba(255, 255, 255, 0.2);
--border-hover: rgba(255, 255, 255, 0.3);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggestion: These newly introduced custom properties are not referenced anywhere in the stylesheet or related UI files, so they are dead configuration and create misleading theme contracts that are easy to drift from real styling logic. Remove them or wire them into actual selectors to keep the design token system consistent. [code quality]

Severity Level: Major ⚠️
- ⚠️ Theme tokens suggest surfaces not actually configurable.
- ⚠️ Future designers may rely on nonfunctional CSS variables.
- ⚠️ Increases drift between documented and real visual system.
Steps of Reproduction ✅
1. Open `app/globals.css` and inspect the `:root` block at lines 3–14 where the design
tokens are declared, including `--bg-surface` (line 5), `--bg-card` (line 6), and
`--border-hover` (line 10).

2. Search the codebase for usages of these tokens; `rg 'var\(--bg-surface'
/workspace/Games` and `rg 'var\(--bg-card' /workspace/Games` return no matches, confirming
that these background tokens are never referenced in any selector or component styles.

3. Search for `border-hover` usages via `rg 'border-hover' /workspace/Games`; the only
match is the definition at `app/globals.css:10`, and there is no `var(--border-hover)`
anywhere, while related styles such as `.language-selector select:hover` at lines 319–323
use `var(--accent)` instead.

4. From this, conclude that `--bg-surface`, `--bg-card`, and `--border-hover` are
currently dead design tokens that do not affect the rendered UI but suggest a theme
contract that is not actually wired into the layout, which can mislead future maintainers
expecting these variables to drive surface and hover styling.

Fix in Cursor | Fix in VSCode Claude

(Use Cmd/Ctrl + Click for best experience)

Prompt for AI Agent 🤖
This is a comment left during a code review.

**Path:** app/globals.css
**Line:** 5:10
**Comment:**
	*Code Quality: These newly introduced custom properties are not referenced anywhere in the stylesheet or related UI files, so they are dead configuration and create misleading theme contracts that are easy to drift from real styling logic. Remove them or wire them into actual selectors to keep the design token system consistent.

Validate the correctness of the flagged issue. If correct, How can I resolve this? If you propose a fix, implement it and please make it concise.
Once fix is implemented, also check other comments on the same PR, and ask user if the user wants to fix the rest of the comments as well. if said yes, then fetch all the comments validate the correctness and implement a minimal fix
👍 | 👎

Comment thread app/globals.css
);
background-size: 400% 400%;
animation: gradientShift 20s ease infinite;
animation:

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggestion: The new full-screen background now animates filter (hue-rotate/saturate) continuously via colorCycle, which forces expensive per-frame repaint/compositing on the entire viewport and can cause visible jank and high battery/CPU usage on lower-end devices. Prefer animating gradient stops/positions only, or move color shifting to a smaller overlay layer instead of a viewport-wide filter animation. [performance]

Severity Level: Critical 🚨
- ⚠️ Home page always runs full-viewport filter animation.
- ⚠️ Lower-end devices may experience reduced frame rates.
- ⚠️ Increased CPU/GPU usage while user keeps tab open.
Steps of Reproduction ✅
1. Open `app/page.tsx` and note that the `Home` component renders a full-viewport
background via `<div className="animated-gradient" aria-hidden="true" />` at lines 16–18.

2. Open `app/globals.css` and see the `.animated-gradient` rule at lines 53–68, which
fixes the element to cover the entire viewport (`position: fixed; inset: 0;`) and applies
`animation: gradientShift 20s ease infinite, colorCycle 45s ease-in-out infinite;` at line
67.

3. In the same file, inspect the `@keyframes colorCycle` block at lines 82–97, which
animates the `filter` property (`hue-rotate` and `saturate`) on the animated element
itself for the full duration of the app session.

4. Run the app, load the home page, and observe in browser devtools (Performance or
Rendering/FPS overlay) that the full-screen `.animated-gradient` element is continuously
animating a GPU/compositor-affecting `filter` across the entire viewport, which on
lower-end devices will increase CPU/GPU usage and can lower frame rate during the entire
time the page is open.

Fix in Cursor | Fix in VSCode Claude

(Use Cmd/Ctrl + Click for best experience)

Prompt for AI Agent 🤖
This is a comment left during a code review.

**Path:** app/globals.css
**Line:** 67:67
**Comment:**
	*Performance: The new full-screen background now animates `filter` (`hue-rotate`/`saturate`) continuously via `colorCycle`, which forces expensive per-frame repaint/compositing on the entire viewport and can cause visible jank and high battery/CPU usage on lower-end devices. Prefer animating gradient stops/positions only, or move color shifting to a smaller overlay layer instead of a viewport-wide filter animation.

Validate the correctness of the flagged issue. If correct, How can I resolve this? If you propose a fix, implement it and please make it concise.
Once fix is implemented, also check other comments on the same PR, and ask user if the user wants to fix the rest of the comments as well. if said yes, then fetch all the comments validate the correctness and implement a minimal fix
👍 | 👎

Comment thread app/globals.css Outdated
);
background-size: 400% 400%;
animation: gradientShift 20s ease infinite;
animation: gradientShift 20s ease infinite, colorCycle 45s ease-in-out infinite;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Action required

1. Missing reduced-motion override 🐞 Bug ☼ Reliability

.animated-gradient runs continuous gradientShift + colorCycle animations unconditionally, so
users with prefers-reduced-motion: reduce will still see full-screen motion effects. This is an
accessibility regression for motion-sensitive users.
Agent Prompt
### Issue description
The animated background runs indefinitely and does not respect the user’s reduced-motion preference.

### Issue Context
The `.animated-gradient` element is a fixed, full-viewport background and is always animated via the `animation` property.

### Fix
Add a `@media (prefers-reduced-motion: reduce)` block that disables (or significantly simplifies) the animation for `.animated-gradient`.

### Fix Focus Areas
- app/globals.css[59-67]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

@kilo-code-bot

kilo-code-bot Bot commented Jun 12, 2026

Copy link
Copy Markdown

Code Review Summary

Status: No Issues Found | Recommendation: Merge

This PR introduces purely visual/styling changes to app/globals.css. The changes include:

  • Updated color theme variables for a brighter glassmorphism aesthetic
  • Multi-color animated gradient background with hue-rotation animation
  • Enhanced .coming-soon-card with stronger blur and shadows
  • Updated typography with text-shadow effects
  • Refreshed language selector styling

No security vulnerabilities, runtime errors, or logic bugs were identified. All changes are cosmetic CSS updates.

Files Reviewed (1 file)
  • app/globals.css - Styling changes only

Reviewed by laguna-m.1-20260312:free · 282,738 tokens

Comment thread app/globals.css
Comment on lines 67 to +100
@@ -78,6 +81,24 @@ body {
}
}

@keyframes colorCycle {
0% {
filter: hue-rotate(0deg) saturate(1);
}
25% {
filter: hue-rotate(60deg) saturate(1.2);
}
50% {
filter: hue-rotate(120deg) saturate(1.1);
}
75% {
filter: hue-rotate(240deg) saturate(1.2);
}
100% {
filter: hue-rotate(360deg) saturate(1);
}
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎨 Design Review — MEDIUM

Do you think we should provide a reduced-motion variant for the new dual infinite animations, so users who prefer less motion are not forced to view continuous hue/position shifts?

Fix in Cursor | Fix in VSCode Claude

(Use Cmd/Ctrl + Click for best experience)

Prompt for AI Agent 🤖
This is a **Design Review** comment — a question about the UX/design of frontend code. It is intentionally framed as a question, not a prescription. The author may agree or disagree.

**Path:** app/globals.css
**Line:** 67:100
**Comment:**
	*MEDIUM: Do you think we should provide a reduced-motion variant for the new dual infinite animations, so users who prefer less motion are not forced to view continuous hue/position shifts?

- If you agree with the proposal, apply a small, localized change (swap a color token, bump a font size, adjust spacing, add an aria-label, etc.).
- If you disagree, or the answer depends on a design decision a human should make, explain your reasoning and ask the user how to proceed.
Do NOT refactor surrounding components or apply other design changes that weren't asked about.

@codeant-ai

codeant-ai Bot commented Jun 12, 2026

Copy link
Copy Markdown

CodeAnt AI finished reviewing your PR.

Comment thread app/globals.css
Comment on lines 82 to +98
}

@keyframes colorCycle {
0% {
filter: hue-rotate(0deg) saturate(1);
}
25% {
filter: hue-rotate(60deg) saturate(1.2);
}
50% {
filter: hue-rotate(120deg) saturate(1.1);
}
75% {
filter: hue-rotate(240deg) saturate(1.2);
}
100% {
filter: hue-rotate(360deg) saturate(1);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 The two background animations (gradientShift and the new colorCycle) run indefinitely with no reduced-motion guard. The colorCycle animation continuously rotates the hue across the full 360° spectrum, which can be disorienting or physically uncomfortable for users with vestibular disorders — and the prefers-reduced-motion: reduce media query is absent from the entire file. Wrapping the animations so they pause for users who have requested reduced motion follows WCAG 2.3.3 and is a simple addition.

Suggested change
}
@keyframes colorCycle {
0% {
filter: hue-rotate(0deg) saturate(1);
}
25% {
filter: hue-rotate(60deg) saturate(1.2);
}
50% {
filter: hue-rotate(120deg) saturate(1.1);
}
75% {
filter: hue-rotate(240deg) saturate(1.2);
}
100% {
filter: hue-rotate(360deg) saturate(1);
@keyframes colorCycle {
0% {
filter: hue-rotate(0deg) saturate(1);
}
25% {
filter: hue-rotate(60deg) saturate(1.2);
}
50% {
filter: hue-rotate(120deg) saturate(1.1);
}
75% {
filter: hue-rotate(240deg) saturate(1.2);
}
100% {
filter: hue-rotate(360deg) saturate(1);
}
}
@media (prefers-reduced-motion: reduce) {
.animated-gradient {
animation: none;
}
}

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

Fix in Cursor Fix in Codex Fix in Claude Code Fix in Conductor

@difflens

difflens Bot commented Jun 12, 2026

Copy link
Copy Markdown

View changes in DiffLens

@codacy-production

Copy link
Copy Markdown

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.

@llamapreview llamapreview Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AI Code Review by LlamaPReview

🎯 TL;DR & Recommendation

Recommendation: Request Changes

This PR modernizes the UI with a vibrant glass aesthetic but introduces a breaking change via a global CSS variable that will silently affect all components relying on --bg-base. Additionally, the new colorCycle animation may cause performance issues on lower-end devices.

🌟 Strengths

  • The new liquid glass design and animated gradient significantly improve visual appeal.
  • Good use of CSS custom properties for maintainable styling.

⚡ Key Risks & Improvements (P1)

  • app/globals.css: The change to --bg-base from #0f172a to #1a1f35 globally in :root will silently alter the background of all components relying on this variable, breaking visual consistency across the app.

💡 Suggestions (P2)

  • app/globals.css: The colorCycle animation applying filter properties may cause jank, battery drain, and poor performance on mobile devices, and the filter may unintentionally affect the overlay appearance.

📈 Risk Diagram

This diagram illustrates the risk of the global CSS variable change affecting unmodified components.

sequenceDiagram
    participant D as Developer
    participant CSS as :root variable
    participant C as Unmodified Component
    D->>CSS: Change --bg-base to #35;1a1f35
    CSS->>C: Inherits new --bg-base value
    note over CSS,C: R1(P1): Inconsistent background for unmodified pages
Loading

💡 Have feedback? We'd love to hear it in our GitHub Discussions.
✨ This review was generated by LlamaPReview Advanced, which is free for all open-source projects. Learn more.

Comment thread app/globals.css
Comment on lines 3 to +6
:root {
--bg-base: #0f172a;
--bg-surface: rgba(226, 232, 240, 0.08);
--bg-card: rgba(30, 41, 59, 0.4);
--bg-base: #1a1f35;
--bg-surface: rgba(226, 232, 240, 0.1);
--bg-card: rgba(255, 255, 255, 0.08);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 | Confidence: High

The CSS variable --bg-base was changed from #0f172a (very dark navy) to #1a1f35 (a lighter, slightly purplish dark) globally in :root. This variable is intended to be the base background color for the application, and other components or pages not modified in this PR rely on var(--bg-base) to render a dark background. The change will silently alter the background appearance of any such component, potentially breaking visual consistency if those components assumed the original dark tone. This is a breaking change in the global design system that should be coordinated across the entire codebase.

Code Suggestion:

/* Retain old variable for backward compatibility or only change locally */
:root {
    --bg-base: #0f172a;  /* keep original */
}
.revamped-section {
    --bg-base: #1a1f35;  /* override in scoped context */
}

Comment thread app/globals.css
}
}

@keyframes colorCycle {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 | Confidence: High

The colorCycle animation is applied to the .animated-gradient element and uses filter properties (hue-rotate and saturate) over a 45‑second infinite loop. filter triggers a full paint of the element and its descendants on every frame, including the ::after pseudo‑element overlay. This will cause continuous GPU composition work and may lead to visible jank, high battery drain, and poor scrolling performance, especially on mobile or lower‑end devices. Additionally, the filter on the parent also modifies the appearance of the overlay (which uses a dark radial gradient), potentially causing unintended color shifts that make the overlay less effective at providing depth.

Code Suggestion:

/* Instead of animating filter, animate background-position or background-size for better performance */
@keyframes colorCycle {
    0% {
      background-position: 0% 50%;
    }
    50% {
      background-position: 100% 50%;
    }
    100% {
      background-position: 0% 50%;
    }
  }
/* Combine with gradientShift if needed, but avoid filter animations */

Evidence: method:colorCycle, search:filter

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

2 issues found across 1 file (changes from recent commits).

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="app/globals.css">

<violation number="1" location="app/globals.css:69">
P2: `colorCycle` animates `filter: hue-rotate()/saturate()` on a viewport-sized fixed element, which forces a full repaint every frame (filter is not compositor-friendly). This runs indefinitely for the lifetime of the page and can cause jank and battery drain on lower-end/mobile devices. Consider removing `colorCycle` since `gradientShift` already provides dynamic color movement via background-position, or move the hue-rotate effect to a smaller overlay layer.</violation>

<violation number="2" location="app/globals.css:69">
P1: These infinite animations (`gradientShift` + `colorCycle`) run unconditionally on a full-viewport element without a `@media (prefers-reduced-motion: reduce)` guard. Users who have requested reduced motion at the OS level will still see continuous full-screen color shifting, which can trigger vestibular disorders or discomfort. Add a reduced-motion media query to pause or disable both animations.</violation>
</file>

Shadow auto-approve: would not auto-approve because issues were found.

Re-trigger cubic

Comment thread app/globals.css
animation: gradientShift 20s ease infinite;
animation:
gradientShift 20s ease infinite,
colorCycle 45s ease-in-out infinite;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1: These infinite animations (gradientShift + colorCycle) run unconditionally on a full-viewport element without a @media (prefers-reduced-motion: reduce) guard. Users who have requested reduced motion at the OS level will still see continuous full-screen color shifting, which can trigger vestibular disorders or discomfort. Add a reduced-motion media query to pause or disable both animations.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At app/globals.css, line 69:

<comment>These infinite animations (`gradientShift` + `colorCycle`) run unconditionally on a full-viewport element without a `@media (prefers-reduced-motion: reduce)` guard. Users who have requested reduced motion at the OS level will still see continuous full-screen color shifting, which can trigger vestibular disorders or discomfort. Add a reduced-motion media query to pause or disable both animations.</comment>

<file context>
@@ -64,7 +64,9 @@ body {
-  animation: gradientShift 20s ease infinite, colorCycle 45s ease-in-out infinite;
+  animation:
+    gradientShift 20s ease infinite,
+    colorCycle 45s ease-in-out infinite;
 }
 
</file context>

Comment thread app/globals.css
animation: gradientShift 20s ease infinite;
animation:
gradientShift 20s ease infinite,
colorCycle 45s ease-in-out infinite;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: colorCycle animates filter: hue-rotate()/saturate() on a viewport-sized fixed element, which forces a full repaint every frame (filter is not compositor-friendly). This runs indefinitely for the lifetime of the page and can cause jank and battery drain on lower-end/mobile devices. Consider removing colorCycle since gradientShift already provides dynamic color movement via background-position, or move the hue-rotate effect to a smaller overlay layer.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At app/globals.css, line 69:

<comment>`colorCycle` animates `filter: hue-rotate()/saturate()` on a viewport-sized fixed element, which forces a full repaint every frame (filter is not compositor-friendly). This runs indefinitely for the lifetime of the page and can cause jank and battery drain on lower-end/mobile devices. Consider removing `colorCycle` since `gradientShift` already provides dynamic color movement via background-position, or move the hue-rotate effect to a smaller overlay layer.</comment>

<file context>
@@ -64,7 +64,9 @@ body {
-  animation: gradientShift 20s ease infinite, colorCycle 45s ease-in-out infinite;
+  animation:
+    gradientShift 20s ease infinite,
+    colorCycle 45s ease-in-out infinite;
 }
 
</file context>
Suggested change
colorCycle 45s ease-in-out infinite;
gradientShift 20s ease infinite;

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

3 issues found and verified against the latest diff

Confidence score: 3/5

  • In app/globals.css, the translucent surface color (rgba(255, 255, 255, 0.18)) against the bright animated gradient can make #ffffff and #cbd5e1 text hard to read, creating a likely accessibility/legibility regression for core UI content—raise contrast (darker surface, darker text, or both) and verify contrast ratios before merging.
  • In app/globals.css, styling <select> with a translucent background plus light text can produce light-on-light <option> rendering in some browsers, making dropdown choices unreadable and blocking form use for affected users—add explicit <option> background/text colors (or browser-safe select styling) and smoke-test across major browsers.
  • In app/globals.css, --bg-surface, --bg-card, and --border-hover appear unused, so these token edits add noise without user-visible benefit and can confuse future styling changes—remove unused tokens or wire them into actual selectors before merge to keep the stylesheet maintainable.
Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="app/globals.css">

<violation number="1" location="app/globals.css:6">
P3: The custom properties `--bg-surface`, `--bg-card`, and `--border-hover` are defined/modified here but never referenced anywhere in the codebase — these value changes have no visual effect. Either remove these dead tokens or wire them into actual selectors to prevent a misleading theme contract.</violation>

<violation number="2" location="app/globals.css:121">
P1: Using a highly translucent white background (`rgba(255, 255, 255, 0.18)`) over the bright, colorful animated gradient makes white text (`#ffffff`) and light secondary text (`#cbd5e1`) difficult to read, likely violating WCAG 4.5:1 contrast requirements. The dynamic hue-rotating gradient makes contrast unpredictable. Consider using a dark translucent background (e.g., `rgba(15, 23, 42, 0.6)`) with a subtle white border to maintain legibility while preserving the glassmorphism aesthetic.</violation>

<violation number="3" location="app/globals.css:305">
P2: When styling a `<select>` with a translucent background and light text (`color: var(--text-primary)`), some browsers render dropdown `<option>` elements with a default light background while inheriting the light text color, making options invisible or unreadable. Explicitly style the `option` elements with a solid dark background to ensure cross-browser readability:

```css
.language-selector select option {
  background: #1a1f35;
  color: #f1f5f9;
}
```</violation>
</file>

Shadow auto-approve: would not auto-approve because issues were found.

Re-trigger cubic

Comment thread app/globals.css
backdrop-filter: blur(40px);
-webkit-backdrop-filter: blur(40px);
border: 1px solid rgba(148, 163, 184, 0.15);
background: rgba(255, 255, 255, 0.18);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1: Using a highly translucent white background (rgba(255, 255, 255, 0.18)) over the bright, colorful animated gradient makes white text (#ffffff) and light secondary text (#cbd5e1) difficult to read, likely violating WCAG 4.5:1 contrast requirements. The dynamic hue-rotating gradient makes contrast unpredictable. Consider using a dark translucent background (e.g., rgba(15, 23, 42, 0.6)) with a subtle white border to maintain legibility while preserving the glassmorphism aesthetic.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At app/globals.css, line 119:

<comment>Using a highly translucent white background (`rgba(255, 255, 255, 0.18)`) over the bright, colorful animated gradient makes white text (`#ffffff`) and light secondary text (`#cbd5e1`) difficult to read, likely violating WCAG 4.5:1 contrast requirements. The dynamic hue-rotating gradient makes contrast unpredictable. Consider using a dark translucent background (e.g., `rgba(15, 23, 42, 0.6)`) with a subtle white border to maintain legibility while preserving the glassmorphism aesthetic.</comment>

<file context>
@@ -97,15 +116,16 @@ body {
-  backdrop-filter: blur(40px);
-  -webkit-backdrop-filter: blur(40px);
-  border: 1px solid rgba(148, 163, 184, 0.15);
+  background: rgba(255, 255, 255, 0.18);
+  backdrop-filter: blur(60px);
+  -webkit-backdrop-filter: blur(60px);
</file context>
Suggested change
background: rgba(255, 255, 255, 0.18);
background: rgba(15, 23, 42, 0.6);

Comment thread app/globals.css
background: rgba(30, 41, 59, 0.5);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
background: rgba(255, 255, 255, 0.12);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: When styling a <select> with a translucent background and light text (color: var(--text-primary)), some browsers render dropdown <option> elements with a default light background while inheriting the light text color, making options invisible or unreadable. Explicitly style the option elements with a solid dark background to ensure cross-browser readability:

.language-selector select option {
  background: #1a1f35;
  color: #f1f5f9;
}
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At app/globals.css, line 303:

<comment>When styling a `<select>` with a translucent background and light text (`color: var(--text-primary)`), some browsers render dropdown `<option>` elements with a default light background while inheriting the light text color, making options invisible or unreadable. Explicitly style the `option` elements with a solid dark background to ensure cross-browser readability:

```css
.language-selector select option {
  background: #1a1f35;
  color: #f1f5f9;
}
```</comment>

<file context>
@@ -283,9 +300,9 @@ body {
-  background: rgba(30, 41, 59, 0.5);
-  backdrop-filter: blur(12px);
-  -webkit-backdrop-filter: blur(12px);
+  background: rgba(255, 255, 255, 0.12);
+  backdrop-filter: blur(20px);
+  -webkit-backdrop-filter: blur(20px);
</file context>

Comment thread app/globals.css
--bg-card: rgba(30, 41, 59, 0.4);
--bg-base: #1a1f35;
--bg-surface: rgba(226, 232, 240, 0.1);
--bg-card: rgba(255, 255, 255, 0.08);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P3: The custom properties --bg-surface, --bg-card, and --border-hover are defined/modified here but never referenced anywhere in the codebase — these value changes have no visual effect. Either remove these dead tokens or wire them into actual selectors to prevent a misleading theme contract.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At app/globals.css, line 6:

<comment>The custom properties `--bg-surface`, `--bg-card`, and `--border-hover` are defined/modified here but never referenced anywhere in the codebase — these value changes have no visual effect. Either remove these dead tokens or wire them into actual selectors to prevent a misleading theme contract.</comment>

<file context>
@@ -1,13 +1,13 @@
-  --bg-card: rgba(30, 41, 59, 0.4);
+  --bg-base: #1a1f35;
+  --bg-surface: rgba(226, 232, 240, 0.1);
+  --bg-card: rgba(255, 255, 255, 0.08);
   --text-primary: #f1f5f9;
   --text-secondary: #cbd5e1;
</file context>

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@app/globals.css`:
- Line 84: Rename the `@keyframes` declaration named "colorCycle" to kebab-case
"color-cycle" and update any animation references that use the old name (e.g.,
where you set animation: colorCycle ...) to the new "color-cycle" identifier so
the keyframe name and all usages match the stylelint kebab-case convention.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 9bb9785d-0f4e-4b1f-8f60-6ab6bf89581c

📥 Commits

Reviewing files that changed from the base of the PR and between 139020e and e7e4308.

📒 Files selected for processing (1)
  • app/globals.css
📜 Review details
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (8)
  • GitHub Check: gitStream.cm
  • GitHub Check: gitStream.cm
  • GitHub Check: guardrails/scan
  • GitHub Check: gitStream.cm
  • GitHub Check: cubic · AI code reviewer
  • GitHub Check: gitStream.cm
  • GitHub Check: gitStream.cm
  • GitHub Check: Mergify Merge Protections
🧰 Additional context used
🪛 Stylelint (17.12.0)
app/globals.css

[error] 84-84: Expected keyframe name "colorCycle" to be kebab-case (keyframes-name-pattern)

(keyframes-name-pattern)

🔇 Additional comments (8)
app/globals.css (8)

3-6: Breaking change: Global --bg-base color updated.

This duplicates a prior concern. The change from #0f172a to #1a1f35 affects any component relying on var(--bg-base) globally. Ensure visual consistency is maintained across the codebase.


84-100: Performance: filter animation triggers continuous repaints.

This duplicates a prior concern. The colorCycle animation uses filter (hue-rotate, saturate) which forces full element repaints every frame, causing GPU overhead and potential jank on mobile/lower-end devices.


120-123: Performance: Large backdrop-filter blur.

This duplicates a prior concern. The blur(60px) can cause rendering performance issues on lower-end devices.


127-130: Performance: Multiple layered box-shadows.

This duplicates a prior concern. The three-layer box-shadow may impact rendering performance on mobile devices.


303-323: Accessibility: Custom select styling.

This duplicates a prior concern. Ensure keyboard navigation and screen reader compatibility remain functional with the updated translucent styling.


143-149: LGTM!


180-192: LGTM!


110-110: Check contrast/readability over the lighter gradient overlay.

The overlay is now rgba(0, 0, 0, 0.15) on .animated-gradient::after, and the text sits on .coming-soon-card with a very light frosted background (rgba(255, 255, 255, 0.18)). Title uses #ffffff with text-shadow and subtitle uses rgba(203, 213, 225, 0.85), but since the card is highly transparent, the lighter overlay can still wash out light text in bright environments—visually/contrast-check on high-brightness devices and adjust text shadow or card/text styling if needed.

Comment thread app/globals.css
}
}

@keyframes colorCycle {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick | 🔵 Trivial | 💤 Low value

Use kebab-case for keyframe name.

Stylelint convention expects color-cycle instead of colorCycle for CSS keyframe names.

♻️ Proposed fix
-@keyframes colorCycle {
+@keyframes color-cycle {

Then update the animation reference on line 69:

   animation:
     gradientShift 20s ease infinite,
-    colorCycle 45s ease-in-out infinite;
+    color-cycle 45s ease-in-out infinite;
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
@keyframes colorCycle {
`@keyframes` color-cycle {
🧰 Tools
🪛 Stylelint (17.12.0)

[error] 84-84: Expected keyframe name "colorCycle" to be kebab-case (keyframes-name-pattern)

(keyframes-name-pattern)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@app/globals.css` at line 84, Rename the `@keyframes` declaration named
"colorCycle" to kebab-case "color-cycle" and update any animation references
that use the old name (e.g., where you set animation: colorCycle ...) to the new
"color-cycle" identifier so the keyframe name and all usages match the stylelint
kebab-case convention.

Source: Linters/SAST tools

@LCSOGthb

Copy link
Copy Markdown
Owner Author

@BuilderIO You are an expert developer AI agent. I am deploying a Next.js (v15.5.19) project from Replit to Vercel, and the build is failing during the compilation phase with a TypeScript type error.

Here is the exact error log from Vercel:

./app/layout.tsx:2:8
Type error: Cannot find module or type declarations for side-effect import of './globals.css'.

1 | import type { Metadata, Viewport } from "next";

2 | import "./globals.css";
| ^
3 |
4 | export const metadata: Metadata = {
5 | title: "Coming Soon",
Next.js build worker exited with code: 1 and signal: null
Error: Command "npm run build" exited with 1


The root cause is likely a Linux case-sensitivity issue or file placement issue during the Vercel build environment, as Replit can be case-insensitive but Vercel requires strict matching.

Please perform the following actions to resolve this:

  1. Locate the globals.css file in our workspace. Verify if it is currently inside the app/ folder. If it is not, move it into the app/ directory.
  2. Check the exact casing of the file. If it is named Globals.css (with a capital G) or has any other capitalization, rename it to exactly globals.css (all lowercase).
  3. Because Git is often blind to case-only changes, do not just rename it normally. Provide the exact git mv commands needed in the terminal to force Git to track the lowercase change (e.g., renaming to a temporary name first, then to lowercase).
  4. Update any files if necessary and prepare the exact Git commands to commit and push this fix to the 'main' branch so Vercel can rebuild successfully.

@builder-io-integration

Copy link
Copy Markdown

Great! The dev server is now running properly. Regarding the Vercel build error mentioned in the PR comment about globals.css not being found - I've verified that:

Current Status:
app/globals.css exists with correct lowercase casing
app/layout.tsx correctly imports it with import "./globals.css"
✅ Local build compiles TypeScript successfully
✅ Dev server is now running without errors

The Vercel error is likely due to:

  1. A temporary build cache issue on Vercel's end, or
  2. The build was attempted before the CSS file was properly committed to Git

To ensure Vercel rebuilds successfully:

The changes have already been pushed to the remote branch. When you trigger a redeploy on Vercel, it should pick up the correct file. The globals.css file is properly tracked in Git with the correct name and location.

If Vercel still fails after redeployment, it may be a one-time cache issue that can be resolved by:

  • Clearing the Vercel build cache in project settings
  • Triggering a manual redeploy

The local environment is now working perfectly with all your UI changes intact.

@LCSOGthb LCSOGthb merged commit 37f8636 into main Jun 12, 2026
51 of 64 checks passed
@LCSOGthb LCSOGthb deleted the ai_main_6415658896f649fbb315 branch June 12, 2026 17:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/M size:M This PR changes 30-99 lines, ignoring generated files

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants