diff --git a/web-app/css/styles.css b/web-app/css/styles.css index e745d70..67c547c 100644 --- a/web-app/css/styles.css +++ b/web-app/css/styles.css @@ -1827,6 +1827,10 @@ body { color: #999fee; } +.game-icon-blackjack { + color: #8b5cf6; +} + .game-icon-dice { color: #e04f4f; } @@ -3015,6 +3019,120 @@ body { } } +/* ========================================================================== + CARD AND MODAL LAYOUT STANDARDIZATION + ========================================================================== */ + +.projects-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); + gap: 1.2rem; + margin-top: 2rem; + align-items: stretch; +} + +.project-card { + min-height: 240px; + display: flex; + flex-direction: column; + justify-content: space-between; + align-items: stretch; + padding: 1.75rem 1.5rem 1.5rem; + border-radius: 28px; + background: var(--surface-color); + border: 1px solid var(--accent-border); + box-shadow: 0 18px 40px rgba(0, 0, 0, 0.08); + transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease; +} + +.project-card h3 { + margin-bottom: 0.8rem; + font-size: 1.15rem; + line-height: 1.35; + color: var(--text-color); +} + +.project-card p { + margin-bottom: 1rem; + color: var(--text-secondary); + font-size: 0.95rem; + line-height: 1.65; + flex: 1 1 auto; +} + +.project-card .btn-play { + margin-top: auto; + align-self: flex-start; +} + +.card-icon { + width: 72px; + height: 72px; + display: grid; + place-items: center; + border-radius: 22px; + background: var(--accent-soft); + color: var(--accent-color); + margin-bottom: 1.2rem; + font-size: 2rem; + flex-shrink: 0; +} + +.modal-content { + width: min(100%, 900px); + max-width: 900px; + min-width: 320px; + max-height: 92vh; + overflow-y: auto; + overflow-x: hidden; + padding: 2rem; + border-radius: 20px; + box-shadow: var(--shadow-modal); + background: var(--surface-color); + border: 1px solid var(--border-color); +} + +#modalBody { + width: 100%; + display: flex; + flex-direction: column; + gap: 1rem; + align-items: stretch; +} + +#modalBody > * { + width: 100%; + max-width: 100%; +} + +.modal-close { + z-index: 2100; +} + +@media (max-width: 768px) { + .modal-content { + width: min(100%, 92vw); + padding: 1.5rem; + max-height: 90vh; + } + + .project-card { + min-height: auto; + padding: 1.5rem 1.25rem; + } +} + +@media (max-width: 576px) { + .projects-grid { + grid-template-columns: 1fr; + gap: 1rem; + } + + .project-card { + padding: 1.25rem; + } +} + /* ========================================================================== ARCADE REDESIGN OVERRIDES ========================================================================== */ @@ -4333,6 +4451,8 @@ html[data-theme="dark"] body { .btn-play { transform: none !important; } +} + /* Fix card content alignment */ .project-card { text-align: left; @@ -4359,4 +4479,136 @@ html[data-theme="dark"] body { padding: 1rem; } } -} \ No newline at end of file + +/* ========================================================================== + FINAL CARD + MODAL CONSISTENCY OVERRIDES + This section is intentionally appended at the end to override earlier + duplicate card/modal definitions and enforce consistent spacing, sizing, + and responsive behavior across all project pages. + ========================================================================== */ + +.projects-grid { + display: grid !important; + grid-template-columns: repeat(auto-fit, minmax(260px, 360px)) !important; + justify-content: center !important; + gap: 1.2rem !important; + margin: 0 auto 2rem !important; + align-items: stretch !important; +} + +.projects-grid > .project-card { + justify-self: center !important; + width: 100% !important; + max-width: 360px !important; +} + +.project-card { + min-height: 240px !important; + display: flex; + flex-direction: column !important; + justify-content: flex-start !important; + align-items: flex-start !important; + padding: 1.75rem 1.5rem 1.5rem !important; + border-radius: 28px !important; + background: var(--surface-color) !important; + border: 1px solid var(--accent-border) !important; + box-shadow: 0 18px 40px rgba(0, 0, 0, 0.08) !important; + transition: transform 0.2s ease !important; + margin: 0 auto !important; + font-size: 0.95rem !important; + line-height: 1.6 !important; +} + +.project-card .btn-play { + margin-top: 1rem !important; + align-self: flex-start !important; +} + +.card-icon { + width: 72px !important; + height: 72px !important; + display: grid !important; + place-items: center !important; + border-radius: 22px !important; + background: var(--accent-soft) !important; + color: var(--accent-color) !important; + margin: 0 auto 1.2rem !important; + font-size: 2rem !important; +} + +.modal { + display: none !important; + position: fixed !important; + top: 0 !important; + left: 0 !important; + width: 100% !important; + height: 100% !important; + background: var(--overlay-color) !important; + backdrop-filter: blur(6px) !important; + -webkit-backdrop-filter: blur(6px) !important; + z-index: 2000 !important; + animation: fadeIn 0.3s ease !important; +} + +.modal.active { + display: flex !important; + align-items: center !important; + justify-content: center !important; +} + +.modal-content { + width: min(100%, 900px) !important; + max-width: 900px !important; + min-width: 320px !important; + max-height: 92vh !important; + overflow-y: auto !important; + overflow-x: hidden !important; + padding: 2rem !important; + border-radius: 20px !important; + box-shadow: var(--shadow-modal) !important; + background: var(--surface-color) !important; + border: 1px solid var(--border-color) !important; + margin: auto !important; +} + +#modalBody { + width: 100% !important; + display: flex !important; + flex-direction: column !important; + gap: 1rem !important; + align-items: stretch !important; +} + +#modalBody > * { + width: 100% !important; + max-width: 100% !important; +} + +.modal-close { + z-index: 2100 !important; +} + +@media (max-width: 768px) { + .modal-content { + width: min(100%, 92vw) !important; + padding: 1.5rem !important; + max-height: 90vh !important; + } + + .project-card { + min-height: auto !important; + padding: 1.5rem 1.25rem !important; + } +} + +@media (max-width: 576px) { + .projects-grid { + grid-template-columns: 1fr !important; + gap: 1rem !important; + } + + .project-card { + padding: 1.25rem !important; + min-height: auto !important; + } +} diff --git a/web-app/index.html b/web-app/index.html index 2399b25..5c12c92 100644 --- a/web-app/index.html +++ b/web-app/index.html @@ -1172,163 +1172,210 @@
-
-Beat the dealer!
- -
-
-Battle against the computer!
- -
-
-Roll the dice with 3D animation!
- -
-
-Heads or tails with spinning animation!
- -
-
-Guess the secret number!
- -
-
-Classic word-guessing game!
- -
-
-Unscramble words before attempts run out!
- -
-
-Discover your relationship status!
- -
-
-Challenge friends or AI in this strategy game!
- -
-
-Survive evolving firewall password rules!
- -
-
-MCQ quiz with lives and difficulty levels!
- -
-
-Classic snake game!
- -
-
-Test your memory with matching emojis!
- -
-
-Hit the moles before they disappear!
- -
-
-Dodge the incoming balls and survive!
- -
-
-Combine tiles and reach 2048!
- -
-
-Generate Fibonacci sequences!
- -
-
-Identify progression types from any sequence.
- -
-
-Beautiful hexagon visualization!
- -
-
-Check special number properties!
- -
-
-Your mathematical companion!
- -
-
-Explore the 3n+1 problem!
- -
-
-All-in-one prime number toolkit!
- -
-
-Calculate TOF, Hmax, and Range with physics!
- -
-
-Transform Cartesian (x, y) into polar (r, theta).
- -
-
-Compute 1st/nth polynomial derivatives and evaluate them.
- -
-
-Translate with lights & sound!
- -
-
-Solve the classic puzzle!
- -
-
-Convert Dec, Bin, Oct, and Hex!
- -
-
-Test your typing skills!
+
+
+ Combine tiles and reach 2048!
+
+
+ Identify progression types from any sequence.
+
+
+ Check special number properties!
+
+
+ Beat the dealer!
+
+
+ Your mathematical companion!
+
+
+ Heads or tails with spinning animation!
+
+
+ Explore the 3n+1 problem!
+
+
+ Generate palettes + CSS snippets for any website type and mood!
+
+
+ Transform Cartesian (x, y) into polar (r, theta).
+
+
+ Compute 1st/nth polynomial derivatives and evaluate them.
+
+
+ Roll the dice with 3D animation!
+
+
+ Challenge friends or AI in this strategy game!
+
+
+ Test your memory with matching emojis!
+
+
+ Generate Fibonacci sequences!
+
+
+ Discover your relationship status!
+
+
+ Dodge the incoming balls and survive!
+
+
+ Classic word-guessing game!
+
+
+ MCQ quiz with lives and difficulty levels!
+
+
+ Translate with lights & sound!
+
+
+ Convert Dec, Bin, Oct, and Hex!
+
+
+ Guess the secret number!
+
+
+ Beautiful hexagon visualization!
+
+
+ Survive evolving firewall password rules!
+
+
+ All-in-one prime number toolkit!
+
+
+ Calculate TOF, Hmax, and Range with physics!
+
+
+ Battle against the computer!
+
+
+ Repeat the pattern and test your memory skills!
+
+
+ Classic snake game!
+
+
+ Solve the classic puzzle!
+
+
+ Test your typing skills!
+
+
+ Hit the moles before they disappear!
+
+
+ Unscramble words before attempts run out!
+
+
+ Generate palettes + CSS snippets for any website type and mood!
+