From b189195112c9e00df495df4ac02b4be30ef84785 Mon Sep 17 00:00:00 2001 From: Diya Kithani Date: Mon, 22 Sep 2025 17:12:16 -0400 Subject: [PATCH 01/16] accesibility fix on apply button --- react-ystemandchess/src/Pages/Mentor/Mentor.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/react-ystemandchess/src/Pages/Mentor/Mentor.tsx b/react-ystemandchess/src/Pages/Mentor/Mentor.tsx index 5db7a3f6..c0d014af 100644 --- a/react-ystemandchess/src/Pages/Mentor/Mentor.tsx +++ b/react-ystemandchess/src/Pages/Mentor/Mentor.tsx @@ -35,7 +35,7 @@ const Mentor = () => { Teaching and Learning - + ); }; From b27897979b037972aef6c868af52c77d0fd21260 Mon Sep 17 00:00:00 2001 From: Diya Kithani Date: Mon, 22 Sep 2025 17:12:29 -0400 Subject: [PATCH 02/16] refactor Mentor.scss for improved layout and styling consistency --- .../src/Pages/Mentor/Mentor.scss | 65 ++++++++++++++----- 1 file changed, 47 insertions(+), 18 deletions(-) diff --git a/react-ystemandchess/src/Pages/Mentor/Mentor.scss b/react-ystemandchess/src/Pages/Mentor/Mentor.scss index 713d1a04..be264f27 100644 --- a/react-ystemandchess/src/Pages/Mentor/Mentor.scss +++ b/react-ystemandchess/src/Pages/Mentor/Mentor.scss @@ -1,14 +1,17 @@ .board-container { text-align: center; padding: 20px; + max-width: 1200px; /* center the entire page content */ + margin: 0 auto; .flex-container { display: flex; align-items: center; - justify-content: space-between; + justify-content: center; /* keep text + image centered as a group */ + gap: 3rem; /* spacing between text and image */ .text-content { - flex: 1; + flex: 0 1 520px; text-align: left; h1 { @@ -24,30 +27,41 @@ } .apply-button { - @extend .apply-button; // Reuse the same button styling + @extend .apply-button; } } .image-content { - flex: 1; - text-align: right; + flex: 0 1 520px; + display: flex; + justify-content: center; /* center the mentor image horizontally */ + align-items: center; img { max-width: 100%; + max-height: 450px; height: auto; } } } .line-break { - margin-top: 20px; - margin-bottom: 20px; + margin: 20px auto; + max-width: 900px; + text-align: center; } - .mentor-details img { - width: 100%; - height: auto; - margin-bottom: 20px; + .mentor-details { + display: flex; + justify-content: center; + max-width: 900px; + margin: 20px auto; + + img { + width: 100%; + height: auto; + margin-bottom: 20px; + } } .mentor-roles { @@ -61,10 +75,16 @@ margin: 0 5px; } } + + /* center the final Apply Now button */ + > .apply-button { + display: block; + margin: 20px auto 0; + } } .apply-button { - background-color: #ead94c; /* Same color as view-button */ + background-color: #ead94c; /* keep original color */ border: none; border-radius: 5px; padding: 10px 20px; @@ -74,14 +94,15 @@ transition: background-color 0.3s, transform 0.2s; &:hover { - background-color: #ffe066; /* Brighter yellow on hover */ - transform: translateY(-1px); /* Slight push up on hover */ + background-color: #ffe066; + transform: translateY(-1px); } &:active { - transform: translateY(1px); /* Slight push down on click */ + transform: translateY(1px); } } + @media screen and (max-width: 768px) { .board-container { padding: 10px; @@ -108,7 +129,7 @@ } .image-content { - text-align: center; + justify-content: center; img { width: 100%; @@ -117,8 +138,11 @@ } } - .mentor-details img { - margin-bottom: 10px; + .mentor-details { + max-width: 90%; + img { + margin-bottom: 10px; + } } .mentor-roles { @@ -136,6 +160,11 @@ margin-top: 10px; margin-bottom: 10px; } + + > .apply-button { + width: 80%; + max-width: 300px; + } } .apply-button { From e9f66606ba9d5eca508c303f30dd02082bdbf857 Mon Sep 17 00:00:00 2001 From: Diya Kithani Date: Mon, 22 Sep 2025 17:30:13 -0400 Subject: [PATCH 03/16] enhance accessibility and content clarity/spelling errors in Programs component --- .../src/Pages/Programs/Programs.tsx | 59 ++++++++++++------- 1 file changed, 38 insertions(+), 21 deletions(-) diff --git a/react-ystemandchess/src/Pages/Programs/Programs.tsx b/react-ystemandchess/src/Pages/Programs/Programs.tsx index 301d74c1..f6cf2472 100644 --- a/react-ystemandchess/src/Pages/Programs/Programs.tsx +++ b/react-ystemandchess/src/Pages/Programs/Programs.tsx @@ -1,17 +1,28 @@ import React from "react"; import kidsCoding from "../../images/kidsCoding.png"; import "./Programs.scss"; + const Programs = () => { return ( -
-
- kids coding +
+
+ Children learning coding together +
-

Our Programs

+

+ Our Programs +

+

Become a member today to benefit your child and all other children participating in our program!

+

Y STEM and Chess Inc. (YSC) seeks to open the hearts and minds of kids (K-12) to the world of STEM through chess and the Mastery @@ -19,12 +30,14 @@ const Programs = () => { principles. YSC strives to empower underserved and at-risk children through mentoring and STEM skills development to enable them to pursue STEM careers and change their life trajectories. -
-
+

+ +

Students will receive personal guidance and role development in a safe environment through our background-checked mentors. Specific - instruction includes + instruction includes:

+
  • In-depth programs from K-12
  • Chess strategy instruction
  • @@ -34,22 +47,26 @@ const Programs = () => {
  • Personal skills development
  • Preparation for Advanced Learning and Career Paths
+ - + Register Now
-
+ + {/* Subscription terms */} +
+

+ Program Subscription Terms +

+

First Month is Free
@@ -57,13 +74,14 @@ const Programs = () => {

The cost is just $25 a week after the first month.

- After an initial sign-up, students can retain access to the program, - and all sessions, for a fixed cost. Students will recieve personal - guidance and role-developement, in a safe environment, through our + After an initial sign-up, students can retain access to the program + and all sessions for a fixed cost. Students will receive personal + guidance and role development in a safe environment through our background-checked mentors. If you have no need for tutoring and - just want to help our mission out, donate through our Cause link. + just want to help our mission, donate through our Cause link.

+

Can't afford to pay monthly? We'd still love to have your student @@ -76,11 +94,10 @@ const Programs = () => { in one generation. The founders were tired of help being promised every year, every election, every generation. We are helping our students help themselves. -

That is why our program is FREE to students from at-risk - backgrounds, schools or organizations that help disadvantaged + backgrounds, schools, or organizations that help disadvantaged communities, specifically those that qualify for free and reduced lunch.

From 7e8bc0bd0ee2284b0f5b2927453b9745b04c6fbf Mon Sep 17 00:00:00 2001 From: Diya Kithani Date: Mon, 22 Sep 2025 17:34:53 -0400 Subject: [PATCH 04/16] refactor Programs.scss for improved layout, and spacing --- .../src/Pages/Programs/Programs.scss | 232 +++++++++++------- 1 file changed, 149 insertions(+), 83 deletions(-) diff --git a/react-ystemandchess/src/Pages/Programs/Programs.scss b/react-ystemandchess/src/Pages/Programs/Programs.scss index b59a0ec6..f262a932 100644 --- a/react-ystemandchess/src/Pages/Programs/Programs.scss +++ b/react-ystemandchess/src/Pages/Programs/Programs.scss @@ -1,158 +1,224 @@ + +.hero-section, +.sub-terms { + max-width: 1200px; + margin: 0 auto; +} + .hero-section { display: flex; - justify-content: center; align-items: center; - gap: 8rem; - margin: 5rem 7rem; - border-radius: 1rem; + justify-content: center; + gap: 3.5rem; + margin: 4rem 1.5rem; + padding: 2.25rem; background-color: #3f8cdf; - padding: 2rem; + border-radius: 1rem; + box-shadow: 0 10px 22px rgba(0,0,0,0.12); + /* image column */ img { + display: block; + width: 100%; + max-width: 520px; /* keeps image from exploding */ + height: auto; object-fit: contain; - border-radius: 1rem; - box-shadow: 0.1rem 0.1rem 0.1rem black; + border-radius: 0.75rem; + box-shadow: 0 6px 12px rgba(0,0,0,0.2); } + /* text column */ .programs-text { - text-align: left; color: rgb(255, 250, 250); - max-width: 65%; + max-width: 560px; + text-align: left; display: flex; flex-direction: column; - gap: 0.4rem; + gap: 0.9rem; /* consistent spacing */ + line-height: 1.6; + + h2 { + margin: 0 0 0.25rem 0; + font-size: 2.25rem; + line-height: 1.2; + letter-spacing: 0.2px; + text-shadow: 0 1px 1px rgba(0,0,0,0.18); + } + + h4 { + margin: 0 0 0.25rem 0; + font-size: 1.35rem; + font-weight: 600; + opacity: 0.95; + } p { - font-size: 1.2rem; + margin: 0; + font-size: 1.05rem; + opacity: 0.95; } + ul { - margin: 0; + margin: 0.25rem 0 0.25rem 1.2rem; + padding: 0; + list-style: disc; + li { - font-size: 1.2rem; + font-size: 1.05rem; + margin: 0.25rem 0; } } - h2 { - font-size: 2.5rem; - margin: 0; - } - h4 { - margin: 0; - font-size: 1.5rem; - } - } + a { + margin-top: 0.5rem; + text-decoration: none; + + button, + &.register-button { + display: inline-block; + border: none; + border-radius: 0.5rem; + background-color: #eef36a; + color: #111; + width: auto; + min-width: 12rem; + height: 3rem; + padding: 0 1rem; + cursor: pointer; + font-size: 1.1rem; + font-weight: 700; + box-shadow: 0 6px 12px rgba(0,0,0,0.12); + transition: transform 0.2s ease, box-shadow 0.2s ease, background-color 0.2s ease; + } - a { - margin-top: 0.4rem; - button { - border: none; - border-radius: 0.5rem; - background: transparent; - width: 12rem; - height: 3rem; - cursor: pointer; - font-size: 1.2rem; - background-color: #eef36a; - } - button:hover { - transition: 0.3s; - transform: scale(1.1); + button:hover, + &.register-button:hover { + transform: translateY(-2px) scale(1.02); + box-shadow: 0 10px 18px rgba(0,0,0,0.18); + background-color: #f3f67d; + } + + button:active, + &.register-button:active { + transform: translateY(0); + } + + button:focus-visible, + &.register-button:focus-visible { + outline: 3px solid #fff; + outline-offset: 2px; + } } } } .sub-terms { - display: flex; - margin: 5rem 7rem; - gap: 10rem; - - .sub-terms-left { - height: 80%; - } + display: grid; + grid-template-columns: 1fr 1fr; + gap: 2.5rem; + margin: 4rem 1.5rem; .sub-terms-left, .sub-terms-right { - text-align: left; background-color: #e2aa03; + color: #ffffff; border-radius: 1rem; padding: 2rem; - font-size: 1.4rem; - flex: 1; - color: white; + box-shadow: 0 10px 22px rgba(0,0,0,0.12); display: flex; flex-direction: column; - gap: 0.8rem; + gap: 0.9rem; + text-align: left; + + h3 { + margin: 0; + font-size: 2rem; + line-height: 1.3; + text-shadow: 0 1px 1px rgba(0,0,0,0.16); + } + + h5 { + margin: 0; + font-size: 1.2rem; + font-weight: 600; + opacity: 0.95; + } p { margin: 0; + font-size: 1.05rem; + line-height: 1.7; } } +} + - h3 { - font-size: 2.4rem; - margin: 0; +@media (max-width: 992px) { + .hero-section { + gap: 2.25rem; + padding: 1.75rem; + + .programs-text h2 { font-size: 2rem; } + .programs-text h4 { font-size: 1.2rem; } } - h5 { - font-size: 1.7rem; - margin: 0; + + .sub-terms { + gap: 1.75rem; } } -/* ----------- Responsive styles ----------- */ @media (max-width: 768px) { .hero-section { flex-direction: column; margin: 2rem 1rem; - gap: 2rem; - padding: 1.5rem; + gap: 1.5rem; + padding: 1.25rem; img { width: 100%; + max-width: 420px; height: auto; + margin: 0 auto; } .programs-text { max-width: 100%; - text-align: center; + text-align: left; + padding: 0 0.25rem; - h2 { - font-size: 2rem; - } - h4 { - font-size: 1.2rem; - } - p { - font-size: 1rem; - } + h2 { font-size: 1.8rem; } + h4 { font-size: 1.05rem; } + p { font-size: 0.98rem; } - ul li { - font-size: 1rem; - text-align: left; - } + ul li { font-size: 0.98rem; } - a button { + a button, + a.register-button { width: 100%; + max-width: 360px; } } } .sub-terms { - flex-direction: column; + grid-template-columns: 1fr; margin: 2rem 1rem; - gap: 2rem; .sub-terms-left, .sub-terms-right { - font-size: 1.1rem; - padding: 1.5rem; - } + font-size: 1rem; + padding: 1.25rem; - h3 { - font-size: 1.8rem; + h3 { font-size: 1.5rem; } + h5 { font-size: 1.05rem; } } + } +} - h5 { - font-size: 1.3rem; - } +/* ---------- Motion preference ---------- */ +@media (prefers-reduced-motion: reduce) { + .hero-section .programs-text a button, + .hero-section .programs-text a.register-button { + transition: none; } } From dc5b1b5cbce65003b13de6e75bb47d1fd6008451 Mon Sep 17 00:00:00 2001 From: Diya Kithani Date: Mon, 22 Sep 2025 17:52:30 -0400 Subject: [PATCH 05/16] some alignment fixes --- .../src/Pages/Programs/Programs.scss | 115 +++++++++--------- 1 file changed, 58 insertions(+), 57 deletions(-) diff --git a/react-ystemandchess/src/Pages/Programs/Programs.scss b/react-ystemandchess/src/Pages/Programs/Programs.scss index f262a932..245b93e8 100644 --- a/react-ystemandchess/src/Pages/Programs/Programs.scss +++ b/react-ystemandchess/src/Pages/Programs/Programs.scss @@ -1,100 +1,106 @@ - +/* keep sections centered on large screens */ .hero-section, .sub-terms { max-width: 1200px; margin: 0 auto; } +/* ===== HERO CARD (blue) ===== */ .hero-section { - display: flex; - align-items: center; - justify-content: center; - gap: 3.5rem; - margin: 4rem 1.5rem; - padding: 2.25rem; + /* one nice card */ background-color: #3f8cdf; - border-radius: 1rem; - box-shadow: 0 10px 22px rgba(0,0,0,0.12); + margin: 4rem 1.5rem; + padding: 2.5rem; + border-radius: 16px; + box-shadow: 0 10px 22px rgba(0, 0, 0, 0.12); + + /* use grid for tighter control */ + display: grid; + grid-template-columns: minmax(260px, 1fr) 1.2fr; + align-items: center; + gap: 2.25rem; /* image column */ img { display: block; width: 100%; - max-width: 520px; /* keeps image from exploding */ + max-width: 520px; height: auto; - object-fit: contain; - border-radius: 0.75rem; - box-shadow: 0 6px 12px rgba(0,0,0,0.2); + object-fit: cover; + border-radius: 12px; + box-shadow: 0 6px 12px rgba(0, 0, 0, 0.2); + margin: 0 auto; /* keeps image centered within its column */ } /* text column */ .programs-text { - color: rgb(255, 250, 250); - max-width: 560px; - text-align: left; + color: #fff; + max-width: 640px; + margin: 0 auto; /* keeps column centered when very wide */ display: flex; flex-direction: column; - gap: 0.9rem; /* consistent spacing */ - line-height: 1.6; + gap: 0.9rem; + line-height: 1.65; + text-align: left; h2 { - margin: 0 0 0.25rem 0; - font-size: 2.25rem; + margin: 0 0 0.35rem 0; + font-size: 2.35rem; line-height: 1.2; letter-spacing: 0.2px; - text-shadow: 0 1px 1px rgba(0,0,0,0.18); + text-shadow: 0 1px 1px rgba(0, 0, 0, 0.18); } h4 { - margin: 0 0 0.25rem 0; + margin: 0 0 0.5rem 0; font-size: 1.35rem; - font-weight: 600; - opacity: 0.95; + font-weight: 700; + opacity: 0.98; } p { margin: 0; - font-size: 1.05rem; - opacity: 0.95; + font-size: 1.06rem; + opacity: 0.96; } + /* nicer bullets, consistent spacing */ ul { - margin: 0.25rem 0 0.25rem 1.2rem; + margin: 0.35rem 0 0.35rem 1.25rem; padding: 0; list-style: disc; li { - font-size: 1.05rem; + font-size: 1.06rem; margin: 0.25rem 0; } } + /* CTA: supports either

- +
); }; From e1d9cf7b53c6cc88458272d8164695476f446b57 Mon Sep 17 00:00:00 2001 From: Diya Kithani Date: Mon, 22 Sep 2025 17:12:29 -0400 Subject: [PATCH 09/16] refactor Mentor.scss for improved layout and styling consistency --- .../src/Pages/Mentor/Mentor.scss | 65 ++++++++++++++----- 1 file changed, 47 insertions(+), 18 deletions(-) diff --git a/react-ystemandchess/src/Pages/Mentor/Mentor.scss b/react-ystemandchess/src/Pages/Mentor/Mentor.scss index 713d1a04..be264f27 100644 --- a/react-ystemandchess/src/Pages/Mentor/Mentor.scss +++ b/react-ystemandchess/src/Pages/Mentor/Mentor.scss @@ -1,14 +1,17 @@ .board-container { text-align: center; padding: 20px; + max-width: 1200px; /* center the entire page content */ + margin: 0 auto; .flex-container { display: flex; align-items: center; - justify-content: space-between; + justify-content: center; /* keep text + image centered as a group */ + gap: 3rem; /* spacing between text and image */ .text-content { - flex: 1; + flex: 0 1 520px; text-align: left; h1 { @@ -24,30 +27,41 @@ } .apply-button { - @extend .apply-button; // Reuse the same button styling + @extend .apply-button; } } .image-content { - flex: 1; - text-align: right; + flex: 0 1 520px; + display: flex; + justify-content: center; /* center the mentor image horizontally */ + align-items: center; img { max-width: 100%; + max-height: 450px; height: auto; } } } .line-break { - margin-top: 20px; - margin-bottom: 20px; + margin: 20px auto; + max-width: 900px; + text-align: center; } - .mentor-details img { - width: 100%; - height: auto; - margin-bottom: 20px; + .mentor-details { + display: flex; + justify-content: center; + max-width: 900px; + margin: 20px auto; + + img { + width: 100%; + height: auto; + margin-bottom: 20px; + } } .mentor-roles { @@ -61,10 +75,16 @@ margin: 0 5px; } } + + /* center the final Apply Now button */ + > .apply-button { + display: block; + margin: 20px auto 0; + } } .apply-button { - background-color: #ead94c; /* Same color as view-button */ + background-color: #ead94c; /* keep original color */ border: none; border-radius: 5px; padding: 10px 20px; @@ -74,14 +94,15 @@ transition: background-color 0.3s, transform 0.2s; &:hover { - background-color: #ffe066; /* Brighter yellow on hover */ - transform: translateY(-1px); /* Slight push up on hover */ + background-color: #ffe066; + transform: translateY(-1px); } &:active { - transform: translateY(1px); /* Slight push down on click */ + transform: translateY(1px); } } + @media screen and (max-width: 768px) { .board-container { padding: 10px; @@ -108,7 +129,7 @@ } .image-content { - text-align: center; + justify-content: center; img { width: 100%; @@ -117,8 +138,11 @@ } } - .mentor-details img { - margin-bottom: 10px; + .mentor-details { + max-width: 90%; + img { + margin-bottom: 10px; + } } .mentor-roles { @@ -136,6 +160,11 @@ margin-top: 10px; margin-bottom: 10px; } + + > .apply-button { + width: 80%; + max-width: 300px; + } } .apply-button { From 74be888f331ccf5ec8a2e89ec85ecf13ae00f1c7 Mon Sep 17 00:00:00 2001 From: Diya Kithani Date: Mon, 22 Sep 2025 17:30:13 -0400 Subject: [PATCH 10/16] enhance accessibility and content clarity/spelling errors in Programs component --- .../src/Pages/Programs/Programs.tsx | 59 ++++++++++++------- 1 file changed, 38 insertions(+), 21 deletions(-) diff --git a/react-ystemandchess/src/Pages/Programs/Programs.tsx b/react-ystemandchess/src/Pages/Programs/Programs.tsx index 301d74c1..f6cf2472 100644 --- a/react-ystemandchess/src/Pages/Programs/Programs.tsx +++ b/react-ystemandchess/src/Pages/Programs/Programs.tsx @@ -1,17 +1,28 @@ import React from "react"; import kidsCoding from "../../images/kidsCoding.png"; import "./Programs.scss"; + const Programs = () => { return ( -
-
- kids coding +
+
+ Children learning coding together +
-

Our Programs

+

+ Our Programs +

+

Become a member today to benefit your child and all other children participating in our program!

+

Y STEM and Chess Inc. (YSC) seeks to open the hearts and minds of kids (K-12) to the world of STEM through chess and the Mastery @@ -19,12 +30,14 @@ const Programs = () => { principles. YSC strives to empower underserved and at-risk children through mentoring and STEM skills development to enable them to pursue STEM careers and change their life trajectories. -
-
+

+ +

Students will receive personal guidance and role development in a safe environment through our background-checked mentors. Specific - instruction includes + instruction includes:

+
  • In-depth programs from K-12
  • Chess strategy instruction
  • @@ -34,22 +47,26 @@ const Programs = () => {
  • Personal skills development
  • Preparation for Advanced Learning and Career Paths
+
- + Register Now
-
+ + {/* Subscription terms */} +
+

+ Program Subscription Terms +

+

First Month is Free
@@ -57,13 +74,14 @@ const Programs = () => {

The cost is just $25 a week after the first month.

- After an initial sign-up, students can retain access to the program, - and all sessions, for a fixed cost. Students will recieve personal - guidance and role-developement, in a safe environment, through our + After an initial sign-up, students can retain access to the program + and all sessions for a fixed cost. Students will receive personal + guidance and role development in a safe environment through our background-checked mentors. If you have no need for tutoring and - just want to help our mission out, donate through our Cause link. + just want to help our mission, donate through our Cause link.

+

Can't afford to pay monthly? We'd still love to have your student @@ -76,11 +94,10 @@ const Programs = () => { in one generation. The founders were tired of help being promised every year, every election, every generation. We are helping our students help themselves. -

That is why our program is FREE to students from at-risk - backgrounds, schools or organizations that help disadvantaged + backgrounds, schools, or organizations that help disadvantaged communities, specifically those that qualify for free and reduced lunch.

From 259aef34f67b26eab0a22afac48cf1bbbc657b9f Mon Sep 17 00:00:00 2001 From: Diya Kithani Date: Mon, 22 Sep 2025 17:34:53 -0400 Subject: [PATCH 11/16] refactor Programs.scss for improved layout, and spacing --- .../src/Pages/Programs/Programs.scss | 232 +++++++++++------- 1 file changed, 149 insertions(+), 83 deletions(-) diff --git a/react-ystemandchess/src/Pages/Programs/Programs.scss b/react-ystemandchess/src/Pages/Programs/Programs.scss index b59a0ec6..f262a932 100644 --- a/react-ystemandchess/src/Pages/Programs/Programs.scss +++ b/react-ystemandchess/src/Pages/Programs/Programs.scss @@ -1,158 +1,224 @@ + +.hero-section, +.sub-terms { + max-width: 1200px; + margin: 0 auto; +} + .hero-section { display: flex; - justify-content: center; align-items: center; - gap: 8rem; - margin: 5rem 7rem; - border-radius: 1rem; + justify-content: center; + gap: 3.5rem; + margin: 4rem 1.5rem; + padding: 2.25rem; background-color: #3f8cdf; - padding: 2rem; + border-radius: 1rem; + box-shadow: 0 10px 22px rgba(0,0,0,0.12); + /* image column */ img { + display: block; + width: 100%; + max-width: 520px; /* keeps image from exploding */ + height: auto; object-fit: contain; - border-radius: 1rem; - box-shadow: 0.1rem 0.1rem 0.1rem black; + border-radius: 0.75rem; + box-shadow: 0 6px 12px rgba(0,0,0,0.2); } + /* text column */ .programs-text { - text-align: left; color: rgb(255, 250, 250); - max-width: 65%; + max-width: 560px; + text-align: left; display: flex; flex-direction: column; - gap: 0.4rem; + gap: 0.9rem; /* consistent spacing */ + line-height: 1.6; + + h2 { + margin: 0 0 0.25rem 0; + font-size: 2.25rem; + line-height: 1.2; + letter-spacing: 0.2px; + text-shadow: 0 1px 1px rgba(0,0,0,0.18); + } + + h4 { + margin: 0 0 0.25rem 0; + font-size: 1.35rem; + font-weight: 600; + opacity: 0.95; + } p { - font-size: 1.2rem; + margin: 0; + font-size: 1.05rem; + opacity: 0.95; } + ul { - margin: 0; + margin: 0.25rem 0 0.25rem 1.2rem; + padding: 0; + list-style: disc; + li { - font-size: 1.2rem; + font-size: 1.05rem; + margin: 0.25rem 0; } } - h2 { - font-size: 2.5rem; - margin: 0; - } - h4 { - margin: 0; - font-size: 1.5rem; - } - } + a { + margin-top: 0.5rem; + text-decoration: none; + + button, + &.register-button { + display: inline-block; + border: none; + border-radius: 0.5rem; + background-color: #eef36a; + color: #111; + width: auto; + min-width: 12rem; + height: 3rem; + padding: 0 1rem; + cursor: pointer; + font-size: 1.1rem; + font-weight: 700; + box-shadow: 0 6px 12px rgba(0,0,0,0.12); + transition: transform 0.2s ease, box-shadow 0.2s ease, background-color 0.2s ease; + } - a { - margin-top: 0.4rem; - button { - border: none; - border-radius: 0.5rem; - background: transparent; - width: 12rem; - height: 3rem; - cursor: pointer; - font-size: 1.2rem; - background-color: #eef36a; - } - button:hover { - transition: 0.3s; - transform: scale(1.1); + button:hover, + &.register-button:hover { + transform: translateY(-2px) scale(1.02); + box-shadow: 0 10px 18px rgba(0,0,0,0.18); + background-color: #f3f67d; + } + + button:active, + &.register-button:active { + transform: translateY(0); + } + + button:focus-visible, + &.register-button:focus-visible { + outline: 3px solid #fff; + outline-offset: 2px; + } } } } .sub-terms { - display: flex; - margin: 5rem 7rem; - gap: 10rem; - - .sub-terms-left { - height: 80%; - } + display: grid; + grid-template-columns: 1fr 1fr; + gap: 2.5rem; + margin: 4rem 1.5rem; .sub-terms-left, .sub-terms-right { - text-align: left; background-color: #e2aa03; + color: #ffffff; border-radius: 1rem; padding: 2rem; - font-size: 1.4rem; - flex: 1; - color: white; + box-shadow: 0 10px 22px rgba(0,0,0,0.12); display: flex; flex-direction: column; - gap: 0.8rem; + gap: 0.9rem; + text-align: left; + + h3 { + margin: 0; + font-size: 2rem; + line-height: 1.3; + text-shadow: 0 1px 1px rgba(0,0,0,0.16); + } + + h5 { + margin: 0; + font-size: 1.2rem; + font-weight: 600; + opacity: 0.95; + } p { margin: 0; + font-size: 1.05rem; + line-height: 1.7; } } +} + - h3 { - font-size: 2.4rem; - margin: 0; +@media (max-width: 992px) { + .hero-section { + gap: 2.25rem; + padding: 1.75rem; + + .programs-text h2 { font-size: 2rem; } + .programs-text h4 { font-size: 1.2rem; } } - h5 { - font-size: 1.7rem; - margin: 0; + + .sub-terms { + gap: 1.75rem; } } -/* ----------- Responsive styles ----------- */ @media (max-width: 768px) { .hero-section { flex-direction: column; margin: 2rem 1rem; - gap: 2rem; - padding: 1.5rem; + gap: 1.5rem; + padding: 1.25rem; img { width: 100%; + max-width: 420px; height: auto; + margin: 0 auto; } .programs-text { max-width: 100%; - text-align: center; + text-align: left; + padding: 0 0.25rem; - h2 { - font-size: 2rem; - } - h4 { - font-size: 1.2rem; - } - p { - font-size: 1rem; - } + h2 { font-size: 1.8rem; } + h4 { font-size: 1.05rem; } + p { font-size: 0.98rem; } - ul li { - font-size: 1rem; - text-align: left; - } + ul li { font-size: 0.98rem; } - a button { + a button, + a.register-button { width: 100%; + max-width: 360px; } } } .sub-terms { - flex-direction: column; + grid-template-columns: 1fr; margin: 2rem 1rem; - gap: 2rem; .sub-terms-left, .sub-terms-right { - font-size: 1.1rem; - padding: 1.5rem; - } + font-size: 1rem; + padding: 1.25rem; - h3 { - font-size: 1.8rem; + h3 { font-size: 1.5rem; } + h5 { font-size: 1.05rem; } } + } +} - h5 { - font-size: 1.3rem; - } +/* ---------- Motion preference ---------- */ +@media (prefers-reduced-motion: reduce) { + .hero-section .programs-text a button, + .hero-section .programs-text a.register-button { + transition: none; } } From 56ee751bfce6d5c6ea3ff5e6e93de572ac7bf1be Mon Sep 17 00:00:00 2001 From: Diya Kithani Date: Mon, 22 Sep 2025 17:52:30 -0400 Subject: [PATCH 12/16] some alignment fixes --- .../src/Pages/Programs/Programs.scss | 115 +++++++++--------- 1 file changed, 58 insertions(+), 57 deletions(-) diff --git a/react-ystemandchess/src/Pages/Programs/Programs.scss b/react-ystemandchess/src/Pages/Programs/Programs.scss index f262a932..245b93e8 100644 --- a/react-ystemandchess/src/Pages/Programs/Programs.scss +++ b/react-ystemandchess/src/Pages/Programs/Programs.scss @@ -1,100 +1,106 @@ - +/* keep sections centered on large screens */ .hero-section, .sub-terms { max-width: 1200px; margin: 0 auto; } +/* ===== HERO CARD (blue) ===== */ .hero-section { - display: flex; - align-items: center; - justify-content: center; - gap: 3.5rem; - margin: 4rem 1.5rem; - padding: 2.25rem; + /* one nice card */ background-color: #3f8cdf; - border-radius: 1rem; - box-shadow: 0 10px 22px rgba(0,0,0,0.12); + margin: 4rem 1.5rem; + padding: 2.5rem; + border-radius: 16px; + box-shadow: 0 10px 22px rgba(0, 0, 0, 0.12); + + /* use grid for tighter control */ + display: grid; + grid-template-columns: minmax(260px, 1fr) 1.2fr; + align-items: center; + gap: 2.25rem; /* image column */ img { display: block; width: 100%; - max-width: 520px; /* keeps image from exploding */ + max-width: 520px; height: auto; - object-fit: contain; - border-radius: 0.75rem; - box-shadow: 0 6px 12px rgba(0,0,0,0.2); + object-fit: cover; + border-radius: 12px; + box-shadow: 0 6px 12px rgba(0, 0, 0, 0.2); + margin: 0 auto; /* keeps image centered within its column */ } /* text column */ .programs-text { - color: rgb(255, 250, 250); - max-width: 560px; - text-align: left; + color: #fff; + max-width: 640px; + margin: 0 auto; /* keeps column centered when very wide */ display: flex; flex-direction: column; - gap: 0.9rem; /* consistent spacing */ - line-height: 1.6; + gap: 0.9rem; + line-height: 1.65; + text-align: left; h2 { - margin: 0 0 0.25rem 0; - font-size: 2.25rem; + margin: 0 0 0.35rem 0; + font-size: 2.35rem; line-height: 1.2; letter-spacing: 0.2px; - text-shadow: 0 1px 1px rgba(0,0,0,0.18); + text-shadow: 0 1px 1px rgba(0, 0, 0, 0.18); } h4 { - margin: 0 0 0.25rem 0; + margin: 0 0 0.5rem 0; font-size: 1.35rem; - font-weight: 600; - opacity: 0.95; + font-weight: 700; + opacity: 0.98; } p { margin: 0; - font-size: 1.05rem; - opacity: 0.95; + font-size: 1.06rem; + opacity: 0.96; } + /* nicer bullets, consistent spacing */ ul { - margin: 0.25rem 0 0.25rem 1.2rem; + margin: 0.35rem 0 0.35rem 1.25rem; padding: 0; list-style: disc; li { - font-size: 1.05rem; + font-size: 1.06rem; margin: 0.25rem 0; } } + /* CTA: supports either

- {/* Subscription terms */}

Program Subscription Terms @@ -103,4 +102,4 @@ const Programs = () => { ); }; -export default Programs; +export default Programs; \ No newline at end of file From 3141dc2aced73909163ec6ae60597fde09107f32 Mon Sep 17 00:00:00 2001 From: Yousif Alrubaye Date: Thu, 25 Dec 2025 12:39:46 -0800 Subject: [PATCH 16/16] fix typos in Programs.test.tsx --- react-ystemandchess/src/features/programs/Programs.test.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/react-ystemandchess/src/features/programs/Programs.test.tsx b/react-ystemandchess/src/features/programs/Programs.test.tsx index ddc1d20c..b9ffe95b 100644 --- a/react-ystemandchess/src/features/programs/Programs.test.tsx +++ b/react-ystemandchess/src/features/programs/Programs.test.tsx @@ -29,7 +29,7 @@ test("shows the register button", () => { ); - const registerButton = screen.getByTestId("register-btn"); + const registerButton = screen.getByTestId("register-btn-link"); expect(registerButton).toBeInTheDocument(); }); @@ -54,7 +54,7 @@ test("shows the left subscription terms", () => { const subTermsLeft = screen.getByTestId("sub-terms-left"); expect(subTermsLeft).toBeInTheDocument(); // Check the text content of the left subscription terms - expect(subTermsLeft.children[0].textContent).toBe("First Month is Free Cancel anytime"); + expect(subTermsLeft.children[0].textContent).toBe("First Month is Free Cancel anytime"); }); // Test that the right subscription terms are displayed correctly