Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added public/BulletMath.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
185 changes: 185 additions & 0 deletions src/app/game/bullet-math/page.module.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,185 @@
.container {
display: flex;
flex-direction: column;
align-items: center;
gap: 16px;
padding: 24px;
}

.controls {
display: flex;
gap: 12px;
justify-content: center;
flex-wrap: wrap;
}

.statusBar {
display: flex;
gap: 24px;
font-weight: bold;
margin-top: 10px;
}

.equationBox {
font-size: 36px;
font-weight: 700;
padding: 20px 32px;
border-radius: 12px;
border: 2px solid #ddd;
min-width: 360px;
display: flex;
justify-content: center;
align-items: center;
gap: 12px;
}

.buttons {
display: flex;
gap: 16px;
margin-top: 10px;
}

.btn {
padding: 12px 20px;
border: none;
border-radius: 10px;
cursor: pointer;
font-weight: 700;
font-size: 18px;
}
Comment on lines +42 to +49

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.

🛠️ Refactor suggestion

Add a .startBtn style or remove its usage to avoid “undefined” class names.

The page uses styles.startBtn for the Start button, but this class isn’t defined here. That renders a literal “undefined” in the className and can confuse styling.

Option A (define the class here):

 .btn {
   padding: 12px 20px;
   border: none;
   border-radius: 10px;
   cursor: pointer;
   font-weight: 700;
   font-size: 18px;
 }
+/* Start button variant */
+.startBtn {
+  border: 2px solid #2563eb;
+}

Option B (if you don’t need a variant), remove styles.startBtn from the TSX (see page.tsx comment).

🤖 Prompt for AI Agents
In src/app/game/bullet-math/page.module.css around lines 42 to 49, the TSX
references styles.startBtn but that class is not defined which results in an
"undefined" class name; either add a .startBtn rule here (e.g., copy or adjust
.btn properties to create a startBtn variant) or remove the use of
styles.startBtn from the TSX so only existing classes are applied; implement
whichever option fits the UI: define .startBtn with desired styles or update the
component to use .btn (or another defined class) and remove the undefined
reference.


.true { background: #16a34a; color: white; }
.false { background: #dc2626; color: white; }
.neutral { background: #334155; color: white; }

.radioGroup {
display: flex;
gap: 8px;
align-items: center;
}

.input {
font-size: 28px;
font-weight: 600;
text-align: center;
padding: 10px 16px;
margin-left: 12px;
width: 120px;
border: 2px solid #aaa;
border-radius: 10px;
outline: none;
transition: border-color 0.2s, box-shadow 0.2s, color 0.2s;
}

.input:focus {
border-color: #2563eb;
box-shadow: 0 0 6px rgba(37, 99, 235, 0.5);
}

.wrong {
color: #dc2626;
border-color: #dc2626;
}

.menuButton {
margin-top: 12px;
background: linear-gradient(135deg, #3b82f6, #2563eb);
color: white;
border: none;
padding: 12px 24px;
font-size: 1.1rem;
font-weight: bold;
border-radius: 10px;
cursor: pointer;
transition: all 0.3s ease;
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);
}

.menuButton:hover {
background: linear-gradient(135deg, #2563eb, #1e40af);
transform: translateY(-2px);
}
Comment on lines +84 to +101

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.

🧹 Nitpick (assertive)

Give buttons a strong keyboard focus outline.

Right now only hover transitions are defined. Adding focus-visible styles makes the UI friendlier for keyboard users.

 .menuButton:hover {
   background: linear-gradient(135deg, #2563eb, #1e40af);
   transform: translateY(-2px);
 }
+
+/* Clear, consistent focus ring for keyboard users */
+.btn:focus-visible,
+.menuButton:focus-visible,
+.resetButton:focus-visible {
+  outline: 3px solid #f59e0b;
+  outline-offset: 2px;
+}
📝 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
.menuButton {
margin-top: 12px;
background: linear-gradient(135deg, #3b82f6, #2563eb);
color: white;
border: none;
padding: 12px 24px;
font-size: 1.1rem;
font-weight: bold;
border-radius: 10px;
cursor: pointer;
transition: all 0.3s ease;
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);
}
.menuButton:hover {
background: linear-gradient(135deg, #2563eb, #1e40af);
transform: translateY(-2px);
}
.menuButton {
margin-top: 12px;
background: linear-gradient(135deg, #3b82f6, #2563eb);
color: white;
border: none;
padding: 12px 24px;
font-size: 1.1rem;
font-weight: bold;
border-radius: 10px;
cursor: pointer;
transition: all 0.3s ease;
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);
}
.menuButton:hover {
background: linear-gradient(135deg, #2563eb, #1e40af);
transform: translateY(-2px);
}
/* Clear, consistent focus ring for keyboard users */
.btn:focus-visible,
.menuButton:focus-visible,
.resetButton:focus-visible {
outline: 3px solid #f59e0b;
outline-offset: 2px;
}
🤖 Prompt for AI Agents
In src/app/game/bullet-math/page.module.css around lines 84 to 101, the
.menuButton styles only define hover feedback and lack a strong keyboard focus
outline; add a :focus-visible rule for .menuButton that sets a clear visible
outline (e.g., 2-3px solid contrasting color or use ring-like box-shadow),
include outline-offset for spacing, and keep existing hover/transform
transitions so keyboard users get the same visual affordance as mouse users.


.overlay {
position: fixed;
top: 0; left: 0;
width: 100%; height: 100%;
background: rgba(0,0,0,0.7);
display: flex; align-items: center; justify-content: center;
z-index: 1000;
}

.completionMessage {
background: white;
padding: 30px;
border-radius: 16px;
text-align: center;
max-width: 400px;
width: 90%;
box-shadow: 0 10px 40px rgba(0,0,0,0.3);
}

.finalStats {
margin: 20px 0;
font-size: 1.2rem;
}

.resetButton {
background: linear-gradient(135deg, #22c55e, #16a34a);
color: white;
border: none;
padding: 12px 24px;
font-size: 1rem;
font-weight: bold;
border-radius: 10px;
cursor: pointer;
margin-bottom: 12px;
}

.resetButton:hover {
background: linear-gradient(135deg, #16a34a, #15803d);
}

@media (max-width: 400px) {
.equationBox {
min-width: auto;
font-size: 24px;
padding: 12px 16px;
}

.input {
width: 80px;
font-size: 20px;
}

.btn {
font-size: 16px;
padding: 10px 14px;
}
}

.hintBox {
margin-top: 20px;
padding: 16px;
border: 2px dashed #f59e0b;
border-radius: 12px;
background: #fffbea;
font-size: 16px;
max-width: 500px;
text-align: left;
line-height: 1.6;
}

.hintBox h3 {
margin-bottom: 10px;
color: #b45309;
}

.hintBox pre {
background: #fef3c7;
padding: 8px 12px;
border-radius: 8px;
font-family: monospace;
font-size: 14px;
overflow-x: auto;
}
Loading