Anupriya commited on
Commit
0a2fc2b
·
1 Parent(s): b7b83e1

integrated shared header into all components

Browse files
src/app/findword/findword.component.css CHANGED
@@ -7,70 +7,6 @@ body {
7
  }
8
 
9
 
10
-
11
- /* Header */
12
- .header-container {
13
- display: flex;
14
- justify-content: space-between;
15
- align-items: center;
16
- padding: 0vw 2vw;
17
- background-color: #009688;
18
- box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.2);
19
- width: 100%;
20
- position: sticky;
21
- top: 0;
22
- }
23
-
24
- .logo img {
25
- max-width: 5vw;
26
- height: auto;
27
- background: #fff;
28
- border-radius: 1vw;
29
- margin: 0.5vw;
30
- }
31
-
32
-
33
- .header-title h1 {
34
- font-size: 3vw;
35
- color: #fff;
36
- margin: 0;
37
- position: absolute;
38
- top: 50%;
39
- left: 50%;
40
- transform: translate(-50%, -50%);
41
- }
42
-
43
-
44
- .home-btn img {
45
- width: 5vw;
46
- }
47
-
48
- .home-btn img:hover {
49
- transform: scale(1.1);
50
- }
51
-
52
- /* Background */
53
- .imgbgcontainter {
54
- background-image: url(/assets/images/grammar-bg.png);
55
- background-size: auto;
56
- background-position: center;
57
- background-attachment: fixed;
58
- width: 100%;
59
- height: 100%;
60
- }
61
-
62
- .grammar-bg {
63
- position: absolute;
64
- top: 10%;
65
- left: 0;
66
- width: 100%;
67
- height: auto;
68
- max-height: calc(100vh - 100px);
69
- object-fit: fill;
70
- z-index: -1;
71
- opacity: 0.2;
72
- }
73
-
74
  /* Responsive Card */
75
  .card1 {
76
  background: #fff;
 
7
  }
8
 
9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
  /* Responsive Card */
11
  .card1 {
12
  background: #fff;
src/app/findword/findword.component.html CHANGED
@@ -1,20 +1,6 @@
1
  <div class="full-container">
2
- <div class="header-container">
3
- <div class="logo">
4
- <a (click)="goToHome()" routerLink="/home" class="brand-link">
5
- <img src="assets/images/pykara-logo.png" alt="Pykara Logo" />
6
- </a>
7
- <span class="product-name">Py-Learn</span>
8
- </div>
9
- <div class="header-title">
10
- <h1>Find the Word</h1>
11
- </div>
12
- <div class="home-btn">
13
- <a (click)="goToHome()" routerLink="/home">
14
- <img src="assets/images/home.png" alt="Home" class="home-icon" />
15
- </a>
16
- </div>
17
- </div>
18
 
19
  <img src="assets/images/grammar-bg.png" alt="Chat Background" class="grammar-bg" />
20
 
 
1
  <div class="full-container">
2
+ <app-header [title]="'Find the Word'"></app-header>
3
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
 
5
  <img src="assets/images/grammar-bg.png" alt="Chat Background" class="grammar-bg" />
6
 
src/app/generate-questions/generate-questions.component.css CHANGED
@@ -15,54 +15,6 @@ body {
15
 
16
 
17
 
18
- .header-container {
19
- display: flex;
20
- justify-content: space-between;
21
- align-items: center;
22
- padding: 0vw 2vw;
23
- background-color: #009688;
24
- box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.2); /* Soft shadow */
25
- width: 100%;
26
- position: sticky;
27
- top: 0;
28
- z-index: 1;
29
- }
30
-
31
- .logo img {
32
- max-width: 5vw;
33
- height: auto;
34
- background: #fff;
35
- border-radius: 1vw;
36
- margin: 0.5vw;
37
- }
38
-
39
- .header-title {
40
- text-align: center;
41
- flex: 1;
42
- }
43
-
44
- .header-title h1 {
45
- font-size: 3vw;
46
- color: #fff;
47
- margin: 0;
48
- position: absolute;
49
- top: 50%;
50
- left: 50%;
51
- transform: translate(-50%, -50%);
52
- }
53
-
54
- .home-btn img {
55
- width: 5vw;
56
- }
57
-
58
- .home-btn img:hover {
59
- transform: scale(1.1);
60
- }
61
-
62
- /* ==================================================*/
63
-
64
-
65
-
66
 
67
 
68
  /* Header Section Styling */
@@ -170,17 +122,6 @@ body {
170
 
171
 
172
 
173
- .grammar-bg {
174
- position: absolute;
175
- top: 10%;
176
- left: 0;
177
- width: 100%;
178
- height: auto;
179
- max-height: calc(100vh - 100px);
180
- object-fit: fill;
181
- z-index: -1;
182
- opacity: 0.2;
183
- }
184
 
185
 
186
 
 
15
 
16
 
17
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18
 
19
 
20
  /* Header Section Styling */
 
122
 
123
 
124
 
 
 
 
 
 
 
 
 
 
 
 
125
 
126
 
127
 
src/app/generate-questions/generate-questions.component.html CHANGED
@@ -5,27 +5,8 @@
5
  </div>
6
 
7
 
8
- <div class="header-container">
9
- <!-- Logo Section -->
10
- <div class="logo">
11
- <a (click)="goToHome()" routerLink="/home" class="brand-link">
12
- <img src="assets/images/pykara-logo.png" alt="Pykara Logo" />
13
- </a>
14
- <span class="product-name">Py-Learn</span>
15
- </div>
16
-
17
- <!-- Title Section -->
18
- <div class="header-title">
19
- <h1>Grammar Questions</h1>
20
- </div>
21
 
22
- <!-- Home Button Section -->
23
- <div class="home-btn">
24
- <a (click)="goToHome()" routerLink="/home">
25
- <img src="assets/images/home.png" alt="Home" class="home-icon" />
26
- </a>
27
- </div>
28
- </div>
29
 
30
  <img src="assets/images/grammar-bg.png" alt="Chat Background" class="grammar-bg" />
31
 
 
5
  </div>
6
 
7
 
8
+ <app-header [title]="'Grammar Questions'"></app-header>
 
 
 
 
 
 
 
 
 
 
 
 
9
 
 
 
 
 
 
 
 
10
 
11
  <img src="assets/images/grammar-bg.png" alt="Chat Background" class="grammar-bg" />
12
 
src/app/generate-questions/generate-questions.component.ts CHANGED
@@ -5,6 +5,7 @@ import { GenerateQuestionsService } from './generate-questions.service';
5
  import { Router } from '@angular/router';
6
  import confetti from 'canvas-confetti';
7
  import { ChangeDetectorRef } from '@angular/core';
 
8
 
9
 
10
  interface QuestionWithAnswer {
@@ -20,7 +21,7 @@ interface Question {
20
  @Component({
21
  selector: 'app-generate-questions',
22
  standalone: true,
23
- imports: [FormsModule, CommonModule], // Ensure the necessary imports are listed
24
  templateUrl: './generate-questions.component.html',
25
  styleUrls: ['./generate-questions.component.css']
26
  })
 
5
  import { Router } from '@angular/router';
6
  import confetti from 'canvas-confetti';
7
  import { ChangeDetectorRef } from '@angular/core';
8
+ import { HeaderComponent } from '../shared/header/header.component'; // Import HeaderComponent
9
 
10
 
11
  interface QuestionWithAnswer {
 
21
  @Component({
22
  selector: 'app-generate-questions',
23
  standalone: true,
24
+ imports: [FormsModule, CommonModule, HeaderComponent], // Add HeaderComponent here
25
  templateUrl: './generate-questions.component.html',
26
  styleUrls: ['./generate-questions.component.css']
27
  })
src/app/listen/listen.component.css CHANGED
@@ -11,69 +11,6 @@ body, html {
11
  }
12
 
13
 
14
- .header-container {
15
- display: flex;
16
- justify-content: space-between;
17
- align-items: center;
18
- padding: 0vw 2vw;
19
- background-color: #009688;
20
- box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.2); /* Soft shadow */
21
- width: 100%;
22
- position: sticky;
23
- top: 0;
24
- z-index: 1;
25
- }
26
-
27
- .logo img {
28
- max-width: 5vw;
29
- height: auto;
30
- background: #fff;
31
- border-radius: 1vw;
32
- margin: 0.5vw;
33
- }
34
-
35
- .header-title {
36
- text-align: center;
37
- flex: 1;
38
- }
39
-
40
- .header-title h1 {
41
- font-size: 3vw;
42
- color: #fff;
43
- margin: 0;
44
- position: absolute;
45
- top: 50%;
46
- left: 50%;
47
- transform: translate(-50%, -50%);
48
- }
49
-
50
- .home-btn img {
51
- width: 5vw;
52
- }
53
-
54
- .home-btn img:hover {
55
- transform: scale(1.1);
56
- }
57
-
58
- img {
59
- width: 100%;
60
- display: block;
61
- }
62
-
63
-
64
- .grammar-bg {
65
- position: absolute;
66
- top: 10%;
67
- left: 0;
68
- width: 100%;
69
- height: auto;
70
- max-height: calc(100vh - 100px);
71
- object-fit: fill;
72
- z-index: -1;
73
- opacity: 0.2;
74
- }
75
-
76
-
77
 
78
 
79
  /* Listen Card Style */
 
11
  }
12
 
13
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
 
15
 
16
  /* Listen Card Style */
src/app/listen/listen.component.html CHANGED
@@ -3,23 +3,8 @@
3
  <div class="loader"></div>
4
  </div>
5
 
6
- <!-- Header Section -->
7
- <div class="header-container">
8
- <div class="logo">
9
- <a (click)="goToHome()" routerLink="/home" class="brand-link">
10
- <img src="assets/images/pykara-logo.png" alt="Pykara Logo" />
11
- </a>
12
- <span class="product-name">Py-Learn</span>
13
- </div>
14
- <div class="header-title">
15
- <h1>Listen</h1>
16
- </div>
17
- <div class="home-btn">
18
- <a (click)="goToHome()" routerLink="/home">
19
- <img src="assets/images/home.png" alt="Home" class="home-icon" />
20
- </a>
21
- </div>
22
- </div>
23
 
24
  <!-- Background image (optional) -->
25
  <img src="assets/images/listen.png" alt="Chat Background" class="grammar-bg" />
 
3
  <div class="loader"></div>
4
  </div>
5
 
6
+ <app-header [title]="'Listen'"></app-header>
7
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
 
9
  <!-- Background image (optional) -->
10
  <img src="assets/images/listen.png" alt="Chat Background" class="grammar-bg" />
src/app/reading/reading.component.css CHANGED
@@ -8,63 +8,6 @@
8
  height: 100%
9
  }
10
 
11
- .header-container {
12
- display: flex;
13
- justify-content: space-between;
14
- align-items: center;
15
- padding: 0 2vw;
16
- background-color: #009688;
17
- box-shadow: 0 4px 8px rgba(0,0,0,.2);
18
- width: 100%;
19
- position: sticky;
20
- top: 0;
21
- z-index: 1
22
- }
23
-
24
- .logo img {
25
- max-width: 5vw;
26
- height: auto;
27
- background: #fff;
28
- border-radius: 1vw;
29
- margin: .5vw
30
- }
31
-
32
- .header-title {
33
- text-align: center;
34
- flex: 1
35
- }
36
-
37
- .header-title h1 {
38
- font-size: 3vw;
39
- color: #fff;
40
- margin: 0;
41
- position: absolute;
42
- top: 50%;
43
- left: 50%;
44
- transform: translate(-50%, -50%);
45
- }
46
-
47
- .home-btn img {
48
- width: 5vw;
49
- cursor: pointer
50
- }
51
-
52
- .home-btn img:hover {
53
- transform: scale(1.1)
54
- }
55
-
56
- .grammar-bg {
57
- position: absolute;
58
- top: 10%;
59
- left: 0;
60
- width: 100%;
61
- height: auto;
62
- max-height: calc(100vh - 100px);
63
- object-fit: fill;
64
- z-index: -1;
65
- opacity: .2
66
- }
67
-
68
  .main-container {
69
  width: 85%;
70
  margin: 5vh auto;
 
8
  height: 100%
9
  }
10
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
  .main-container {
12
  width: 85%;
13
  margin: 5vh auto;
src/app/reading/reading.component.html CHANGED
@@ -1,23 +1,6 @@
1
  <div class="reading-container">
2
- <!-- Header -->
3
- <div class="header-container">
4
- <div class="logo">
5
- <a (click)="goToHome()" routerLink="/home" class="brand-link">
6
- <img src="assets/images/pykara-logo.png" alt="Pykara Logo" />
7
- </a>
8
- <span class="product-name">Py-Learn</span>
9
- </div>
10
-
11
- <div class="header-title">
12
- <h1>Reading</h1>
13
- </div>
14
 
15
- <div class="home-btn">
16
- <a (click)="goToHome()" routerLink="/home">
17
- <img src="assets/images/home.png" alt="Home" class="home-icon" />
18
- </a>
19
- </div>
20
- </div>
21
 
22
  <!-- Background -->
23
  <img src="assets/images/grammar-bg.png" alt="Background" class="grammar-bg" />
 
1
  <div class="reading-container">
2
+ <app-header [title]="'Reading'"></app-header>
 
 
 
 
 
 
 
 
 
 
 
3
 
 
 
 
 
 
 
4
 
5
  <!-- Background -->
6
  <img src="assets/images/grammar-bg.png" alt="Background" class="grammar-bg" />
src/app/vocabulary-builder/vocabulary-builder.component.css CHANGED
@@ -1 +1 @@
1
-
2
  margin-top: 1rem;
3
  padding: 1rem;
4
  background-color: #f0f4f8;
5
  border-radius: 8px;
6
  border: 1px solid #cdd5df;
7
  display: flex;
8
  justify-content: space-between;
9
  align-items: center;
10
  padding: 0vw 2vw;
11
  background-color: #009688;
12
  box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.2); /* Soft shadow */
13
  width: 100%;
14
  position: sticky;
15
  top: 0;
16
  max-width: 5vw;
17
  height: auto;
18
  background: #fff;
19
  border-radius: 1vw;
20
  margin: 0.5vw;
21
  text-align: center;
22
  flex: 1;
23
  .header-title h1 {
24
  font-size: 3vw;
25
  color: #fff;
26
  margin: 0;
27
  position: absolute;
28
  top: 50%;
29
  left: 50%;
30
  transform: translate(-50%, -50%);
31
  }
32
  width: 5vw;
33
  .home-btn img:hover {
34
  transform: scale(1.1);
35
  }
36
  background-image: url(/assets/images/grammar-bg.png);
37
  background-size: auto;
38
  background-position: center;
39
  background-attachment: fixed;
40
  width: 100%;
41
  height: 100%;
42
  position: absolute;
43
  top: 10%;
44
  left: 0;
45
  width: 100%;
46
  height: auto;
47
  max-height: calc(100vh - 100px);
48
  object-fit: fill;
49
  z-index: -1;
50
  opacity: 0.2;
51
  background: rgba(255, 255, 255, 0.9);
52
  width: 80vw;
53
  position: absolute;
54
  top: 50%;
55
  left: 50%;
56
  transform: translate(-50%, -50%);
57
  height: 66vh;
58
  display: flex;
59
  justify-content: space-between;
60
  align-items: flex-start;
61
  padding: 4vw;
62
  gap: 2vw;
63
  background-color: #fff;
64
  border: 10px solid #009688;
65
  border-radius: 1vw;
66
  box-shadow: 0 0.4vw 0.8vw rgba(0, 0, 0, 0.6);
67
  margin: 2vw auto;
68
  max-width: 90%;
69
  display: flex;
70
  align-items: center;
71
  gap: 4vw;
72
  width: 50%;
73
  font-size: 2.5vw;
74
  font-weight: 800;
75
  color: #006780;
76
  margin-bottom: 20px;
77
  text-align: center;
78
  width: 100%;
79
  height: auto;
80
  border-radius: 10px;
81
  width: 66%;
82
  .description-container p {
83
  font-size: 1.4vw;
84
  margin-bottom: 30px;
85
  text-align: justify;
86
  }
87
  position: relative;
88
  border-radius: 0.5vw;
89
  font-size: 1.5vw;
90
  transition: background-color 0.3s;
91
  width: auto;
92
  font-weight: bold;
93
  background-color: #006780;
94
  border: none;
95
  color: white;
96
  padding: 15px 32px;
97
  text-align: center;
98
  text-decoration: none;
99
  display: inline-flex;
100
  align-items: center;
101
  justify-content: center;
102
  position: relative;
103
  min-width: 5vw;
104
  height: 2.9vw;
105
  margin-top: 1.5vw;
106
  .validate-button:hover {
107
  background-color: #bdc3c7;
108
  box-shadow: 0 12px 16px 0 rgba(0,0,0,0.24),0 17px 50px 0 rgba(0,0,0,0.19);
109
  }
110
  .validate-button:disabled {
111
  background-color: #ccc;
112
  cursor: not-allowed;
113
  }
114
  position: absolute;
115
  border-radius: 0.5vw;
116
  font-size: 1.5vw;
117
  transition: background-color 0.3s;
118
  font-weight: bold;
119
  background-color: #006780;
120
  border: none;
121
  color: white;
122
  left: 50%;
123
  text-decoration: none;
124
  transform: translateX(-50%);
125
  padding: 0.5vw;
126
  .submit-button:hover {
127
  background-color: #bdc3c7;
128
  box-shadow: 0 12px 16px 0 rgba(0,0,0,0.24),0 17px 50px 0 rgba(0,0,0,0.19);
129
  }
130
  .submit-button:disabled {
131
  background-color: #ccc;
132
  cursor: not-allowed;
133
  }
134
  background: rgba(255, 255, 255, 0.9);
135
  padding: 2vw;
136
  border-radius: 1vw;
137
  box-shadow: 0 0.4vw 0.8vw rgba(0, 0, 0, 0.6);
138
  width: 80vw;
139
  position: absolute;
140
  top: 54%;
141
  left: 50%;
142
  transform: translate(-50%, -50%);
143
  height: 70vh;
144
  border: 10px solid #009688;
145
  background-color: #fff;
146
  .card2 .content-container {
147
  display: flex;
148
  justify-content: space-around;
149
  align-items: center;
150
  height: 100%;
151
  }
152
  max-width: 100%;
153
  height: auto;
154
  display: flex;
155
  flex-direction: column;
156
  align-items: center;
157
  justify-content: center;
158
  text-align: center;
159
  width: 50%;
160
  .word-container h2 {
161
  font-size: 2.5rem;
162
  font-weight: bold;
163
  color: #333;
164
  margin-top: 2.7vw;
165
  }
166
  width: 45%;
167
  text-align: center;
168
  padding: 20px;
169
  background: rgba(255, 255, 255, 0.7);
170
  border-radius: 10px;
171
  box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.2);
172
  margin-right: 4vw;
173
  font-size: 1.2vw;
174
  margin-bottom: 20px;
175
  font-weight: 700;
176
  display: flex;
177
  flex-direction: column;
178
  align-items: center;
179
  background-color: #ccc;
180
  color: white;
181
  padding: 12px 24px;
182
  border-radius: 5px;
183
  cursor: pointer;
184
  font-size: 1.2rem;
185
  margin: 10px;
186
  width: 80%;
187
  transition: background-color 0.3s ease;
188
  background-color: #ffffff;
189
  color: #333;
190
  border: 2px solid #000000;
191
  font-size: 1.1vw;
192
  border-radius: 3vw;
193
  transition: all 0.3s ease;
194
  font-weight: 600;
195
  display: flex;
196
  align-items: center;
197
  justify-content: center;
198
  box-shadow: -1px 1vw 0.5vw rgb(0 0 0 / 13%);
199
  height: 100%;
200
  text-align: center;
201
  white-space: normal;
202
  word-break: break-word;
203
  width: 21vw;
204
  /* Make state classes override :hover */
205
  .option-btn.correct,
206
  .option-btn.incorrect,
207
  .option-btn.selected {
208
  position: relative; /* keeps layout stable */
209
  }
210
  /* Correct = green (state wins even on hover) */
211
  .option-btn.correct,
212
  .option-btn.correct:hover {
213
  background: #e8f7ed; /* soft green */
214
  border-color: #22c55e; /* green-500 */
215
  color: #14532d; /* dark green text */
216
  }
217
  /* Incorrect = red (state wins even on hover) */
218
  .option-btn.incorrect,
219
  .option-btn.incorrect:hover {
220
  background: #fee2e2; /* soft red */
221
  border-color: #ef4444; /* red-500 */
222
  color: #7f1d1d; /* dark red text */
223
  }
224
  /* Selected (pre-validation) = blue (state wins even on hover) */
225
  .option-btn.selected,
226
  .option-btn.selected:hover {
227
  background: #e0f2fe; /* soft blue */
228
  border-color: #3b82f6; /* blue-500 */
229
  color: #0c4a6e; /* dark blue text */
230
  }
231
  /* Default hover only when no state class is present */
232
  .option-btn:not(.selected):not(.correct):not(.incorrect):hover {
233
  background: #f3f4f6; /* light grey hover */
234
  }
235
  /* Optional: disabled look still visible */
236
  .option-btn.disabled,
237
  .option-btn:disabled {
238
  cursor: not-allowed;
239
  filter: grayscale(10%);
240
  }
241
  .option-btn.picked {
242
  outline: 2px dashed rgba(0,0,0,0.25);
243
  outline-offset: 2px;
244
  }
245
  margin-left: 8px;
246
  padding: 2px 8px;
247
  border-radius: 12px;
248
  font-size: 12px;
249
  background: rgba(0,0,0,0.06);
250
  background: rgba(255, 255, 255, 0.9);
251
  padding: 2vw;
252
  border-radius: 1vw;
253
  box-shadow: 0 0.4vw 0.8vw rgba(0, 0, 0, 0.6);
254
  width: 80vw;
255
  position: absolute;
256
  top: 54%;
257
  left: 50%;
258
  transform: translate(-50%, -50%);
259
  height: 70vh;
260
  border: 10px solid #009688;
261
  background-color: #fff;
262
  list-style-type: disc;
263
  padding: 0 5vw;
264
  color: #000000;
265
  overflow-y: auto;
266
  height: 18vw;
267
  font-size: 1.5vw;
268
  margin-bottom: 30px;
269
  text-align: justify;
270
  .feedback-list1 li {
271
  margin-bottom: 10px;
272
  line-height: 1.5;
273
  display: list-item;
274
  }
275
  list-style-type: none !important;
276
  text-align: justify;
277
  height: 20vw;
278
  overflow-y: auto;
279
  padding: 0 3vw;
280
  margin-bottom: 2vw;
281
  font-size: 1.5vw;
282
  .feedback-list li {
283
  margin-bottom: 1vw;
284
  font-weight: 500;
285
  }
286
  color: green;
287
  color: red;
288
  0% {
289
  transform: translate(-50%, -50%) rotate(0deg);
290
  }
291
  100% {
292
  transform: translate(-50%, -50%) rotate(360deg);
293
  }
294
  background: rgba(255, 255, 255, 0.9);
295
  padding: 2vw;
296
  border-radius: 1vw;
297
  box-shadow: 0 0.4vw 0.8vw rgba(0, 0, 0, 0.6);
298
  width: 80vw;
299
  position: absolute;
300
  top: 54%;
301
  left: 50%;
302
  transform: translate(-50%, -50%);
303
  height: 70vh;
304
  border: 10px solid #009688;
305
  background-color: #fff;
306
  resize: none
307
  font-size: 1.8vw;
308
  text-align: center;
309
  margin-bottom: 20px;
310
  color: #006780;
311
  font-weight: 600;
312
  display: flex;
313
  flex-direction: column;
314
  align-items: center;
315
  width: 100%;
316
  display: flex;
317
  justify-content: space-between;
318
  align-items: center;
319
  width: 80%;
320
  max-width: 600px;
321
  margin-bottom: 20px;
322
  .card4 .sentence-input-group label {
323
  font-weight: bold;
324
  text-align: left;
325
  width: 30%;
326
  font-size: 1.7vw;
327
  }
328
  .card4 .sentence-input-group .input-group {
329
  width: 60%;
330
  }
331
  .card4 .sentence-input-group textarea {
332
  width: 138%;
333
  height: 100%;
334
  font-size: 1.4rem;
335
  border: 2px solid #006780;
336
  font-family: Arial, sans-serif;
337
  border-radius: 8px;
338
  padding: 0.4vw;
339
  }
340
  .card4 .sentence-input-group textarea:focus {
341
  outline: none;
342
  border: 1px solid #007bff;
343
  }
344
  background: rgba(255, 255, 255, 0.9);
345
  padding: 2vw;
346
  border-radius: 1vw;
347
  box-shadow: 0 0.4vw 0.8vw rgba(0, 0, 0, 0.6);
348
  width: 80vw;
349
  position: absolute;
350
  top: 54%;
351
  left: 50%;
352
  transform: translate(-50%, -50%);
353
  height: 70vh;
354
  border: 10px solid #009688;
355
  background-color: #fff;
356
  .card5 .feedback-text {
357
  font-size: 1.8vw;
358
  font-weight: 600;
359
  color: #333;
360
  margin-top: 1vw;
361
  word-wrap: break-word;
362
  max-height: 400px;
363
  overflow-y: auto;
364
  padding-left: 20px;
365
  padding-right: 20px;
366
  text-align: justify;
367
  margin-bottom: 1vw;
368
  }
369
  position: absolute;
370
  top: 1vw;
371
  left: 2vw;
372
  color: #007bff;
373
  font-size: 24px;
374
  width: 5vw;
375
  cursor: pointer;
376
  transition: transform 0.2s ease-in-out;
377
  .back-icon:hover {
378
  transform: scale(1.1);
379
  color: #0056b3;
380
  }
381
  .back-icon img {
382
  width: 30px;
383
  height: auto;
384
  cursor: pointer;
385
  }
386
  position: absolute;
387
  top: -1vw;
388
  right: -1.4vw;
389
  width: 36px;
390
  height: 36px;
391
  display: grid;
392
  place-items: center;
393
  border-radius: 50%;
394
  background: #009688;
395
  color: #0f172a;
396
  border: 4px solid #009688;
397
  font-size: 18px;
398
  font-weight: 800;
399
  cursor: pointer;
400
  box-shadow: 0 4px 10px rgba(0, 0, 0, .15);
401
  transition: transform .15s ease, box-shadow .15s ease, background .15s ease;
402
  z-index: 10;
403
  .icon-btn1:hover {
404
  transform: scale(1.06);
405
  box-shadow: 0 6px 14px rgba(0,0,0,.22);
406
  background: #f7fafc;
407
  }
408
  .icon-btn1:active {
409
  transform: scale(0.98);
410
  }
411
  .icon-btn1 {
412
  width: 50px;
413
  height: 50px;
414
  font-size: 20px;
415
  }
416
  position: fixed;
417
  top: 0;
418
  left: 0;
419
  width: 100%;
420
  height: 100%;
421
  display: flex;
422
  justify-content: center;
423
  align-items: center;
424
  z-index: 1000;
425
  font-size: 15px;
426
  width: 1.5em;
427
  height: 1.5em;
428
  border-radius: 50%;
429
  position: relative;
430
  text-indent: -9999em;
431
  animation: mulShdSpin 1.1s infinite ease;
432
  transform: translateZ(0);
433
  0%, 100% {
434
  box-shadow: 0em -3em 0em 0em #808080, 2.2em -2.2em 0 0em rgba(128, 128, 128, 0.2), 3em 0em 0 0em rgba(128, 128, 128, 0.2), 2.2em 2.2em 0 0em rgba(128, 128, 128, 0.2), 0em 3em 0 0em rgba(128, 128, 128, 0.2), -2.2em 2.2em 0 0em rgba(128, 128, 128, 0.2), -3em 0em 0 0em rgba(128, 128, 128, 0.5), -2.2em -2.2em 0 0em rgba(128, 128, 128, 0.7);
435
  }
436
  12.5% {
437
  box-shadow: 0em -3em 0em 0em rgba(128, 128, 128, 0.7), 2.2em -2.2em 0 0em #808080, 3em 0em 0 0em rgba(128, 128, 128, 0.2), 2.2em 2.2em 0 0em rgba(128, 128, 128, 0.2), 0em 3em 0 0em rgba(128, 128, 128, 0.2), -2.2em 2.2em 0 0em rgba(128, 128, 128, 0.2), -3em 0em 0 0em rgba(128, 128, 128, 0.2), -2.2em -2.2em 0 0em rgba(128, 128, 128, 0.5);
438
  }
439
  25% {
440
  box-shadow: 0em -3em 0em 0em rgba(128, 128, 128, 0.5), 2.2em -2.2em 0 0em rgba(128, 128, 128, 0.7), 3em 0em 0 0em #808080, 2.2em 2.2em 0 0em rgba(128, 128, 128, 0.2), 0em 3em 0 0em rgba(128, 128, 128, 0.2), -2.2em 2.2em 0 0em rgba(128, 128, 128, 0.2), -3em 0em 0 0em rgba(128, 128, 128, 0.2), -2.2em -2.2em 0 0em rgba(128, 128, 128, 0.2);
441
  }
442
  37.5% {
443
  box-shadow: 0em -3em 0em 0em rgba(128, 128, 128, 0.2), 2.2em -2.2em 0 0em rgba(128, 128, 128, 0.5), 3em 0em 0 0em rgba(128, 128, 128, 0.7), 2.2em 2.2em 0 0em #808080, 0em 3em 0 0em rgba(128, 128, 128, 0.2), -2.2em 2.2em 0 0em rgba(128, 128, 128, 0.2), -3em 0em 0 0em rgba(128, 128, 128, 0.2), -2.2em -2.2em 0 0em rgba(128, 128, 128, 0.2);
444
  }
445
  50% {
446
  box-shadow: 0em -3em 0em 0em rgba(128, 128, 128, 0.2), 2.2em -2.2em 0 0em rgba(128, 128, 128, 0.2), 3em 0em 0 0em rgba(128, 128, 128, 0.5), 2.2em 2.2em 0 0em rgba(128, 128, 128, 0.7), 0em 3em 0 0em #808080, -2.2em 2.2em 0 0em rgba(128, 128, 128, 0.2), -3em 0em 0 0em rgba(128, 128, 128, 0.2), -2.2em -2.2em 0 0em rgba(128, 128, 128, 0.2);
447
  }
448
  62.5% {
449
  box-shadow: 0em -3em 0em 0em rgba(128, 128, 128, 0.2), 2.2em -2.2em 0 0em rgba(128, 128, 128, 0.2), 3em 0em 0 0em rgba(128, 128, 128, 0.2), 2.2em 2.2em 0 0em rgba(128, 128, 128, 0.5), 0em 3em 0 0em rgba(128, 128, 128, 0.7), -2.2em 2.2em 0 0em #808080, -3em 0em 0 0em rgba(128, 128, 128, 0.2), -2.2em -2.2em 0 0em rgba(128, 128, 128, 0.2);
450
  }
451
  75% {
452
  box-shadow: 0em -3em 0em 0em rgba(128, 128, 128, 0.2), 2.2em -2.2em 0 0em rgba(128, 128, 128, 0.2), 3em 0em 0 0em rgba(128, 128, 128, 0.2), 2.2em 2.2em 0 0em rgba(128, 128, 128, 0.2), 0em 3em 0 0em rgba(128, 128, 128, 0.5), -2.2em 2.2em 0 0em rgba(128, 128, 128, 0.7), -3em 0em 0 0em #808080, -2.2em -2.2em 0 0em rgba(128, 128, 128, 0.2);
453
  }
454
  87.5% {
455
  box-shadow: 0em -3em 0em 0em rgba(128, 128, 128, 0.2), 2.2em -2.2em 0 0em rgba(128, 128, 128, 0.2), 3em 0em 0 0em rgba(128, 128, 128, 0.2), 2.2em 2.2em 0 0em rgba(128, 128, 128, 0.2), 0em 3em 0 0em rgba(128, 128, 128, 0.2), -2.2em 2.2em 0 0em rgba(128, 128, 128, 0.5), -3em 0em 0 0em rgba(128, 128, 128, 0.7), -2.2em -2.2em 0 0em #808080;
456
  }
 
457
  margin-top: 1rem;
458
  padding: 1rem;
459
  background-color: #f0f4f8;
460
  border-radius: 8px;
461
  border: 1px solid #cdd5df;
462
  background: rgba(255, 255, 255, 0.9);
463
  width: 80vw;
464
  position: absolute;
465
  top: 50%;
466
  left: 50%;
467
  transform: translate(-50%, -50%);
468
  height: 66vh;
469
  display: flex;
470
  justify-content: space-between;
471
  align-items: flex-start;
472
  padding: 4vw;
473
  gap: 2vw;
474
  background-color: #fff;
475
  border: 10px solid #009688;
476
  border-radius: 1vw;
477
  box-shadow: 0 0.4vw 0.8vw rgba(0, 0, 0, 0.6);
478
  margin: 2vw auto;
479
  max-width: 90%;
480
  display: flex;
481
  align-items: center;
482
  gap: 4vw;
483
  width: 50%;
484
  font-size: 2.5vw;
485
  font-weight: 800;
486
  color: #006780;
487
  margin-bottom: 20px;
488
  text-align: center;
489
  width: 100%;
490
  height: auto;
491
  border-radius: 10px;
492
  width: 66%;
493
  .description-container p {
494
  font-size: 1.4vw;
495
  margin-bottom: 30px;
496
  text-align: justify;
497
  }
498
  position: relative;
499
  border-radius: 0.5vw;
500
  font-size: 1.5vw;
501
  transition: background-color 0.3s;
502
  width: auto;
503
  font-weight: bold;
504
  background-color: #006780;
505
  border: none;
506
  color: white;
507
  padding: 15px 32px;
508
  text-align: center;
509
  text-decoration: none;
510
  display: inline-flex;
511
  align-items: center;
512
  justify-content: center;
513
  position: relative;
514
  min-width: 5vw;
515
  height: 2.9vw;
516
  margin-top: 1.5vw;
517
  .validate-button:hover {
518
  background-color: #bdc3c7;
519
  box-shadow: 0 12px 16px 0 rgba(0,0,0,0.24),0 17px 50px 0 rgba(0,0,0,0.19);
520
  }
521
  .validate-button:disabled {
522
  background-color: #ccc;
523
  cursor: not-allowed;
524
  }
525
  position: absolute;
526
  border-radius: 0.5vw;
527
  font-size: 1.5vw;
528
  transition: background-color 0.3s;
529
  font-weight: bold;
530
  background-color: #006780;
531
  border: none;
532
  color: white;
533
  left: 50%;
534
  text-decoration: none;
535
  transform: translateX(-50%);
536
  padding: 0.5vw;
537
  .submit-button:hover {
538
  background-color: #bdc3c7;
539
  box-shadow: 0 12px 16px 0 rgba(0,0,0,0.24),0 17px 50px 0 rgba(0,0,0,0.19);
540
  }
541
  .submit-button:disabled {
542
  background-color: #ccc;
543
  cursor: not-allowed;
544
  }
545
  background: rgba(255, 255, 255, 0.9);
546
  padding: 2vw;
547
  border-radius: 1vw;
548
  box-shadow: 0 0.4vw 0.8vw rgba(0, 0, 0, 0.6);
549
  width: 80vw;
550
  position: absolute;
551
  top: 54%;
552
  left: 50%;
553
  transform: translate(-50%, -50%);
554
  height: 70vh;
555
  border: 10px solid #009688;
556
  background-color: #fff;
557
  .card2 .content-container {
558
  display: flex;
559
  justify-content: space-around;
560
  align-items: center;
561
  height: 100%;
562
  }
563
  max-width: 100%;
564
  height: auto;
565
  display: flex;
566
  flex-direction: column;
567
  align-items: center;
568
  justify-content: center;
569
  text-align: center;
570
  width: 50%;
571
  .word-container h2 {
572
  font-size: 2.5rem;
573
  font-weight: bold;
574
  color: #333;
575
  margin-top: 2.7vw;
576
  }
577
  width: 45%;
578
  text-align: center;
579
  padding: 20px;
580
  background: rgba(255, 255, 255, 0.7);
581
  border-radius: 10px;
582
  box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.2);
583
  margin-right: 4vw;
584
  font-size: 1.2vw;
585
  margin-bottom: 20px;
586
  font-weight: 700;
587
  display: flex;
588
  flex-direction: column;
589
  align-items: center;
590
  background-color: #ccc;
591
  color: white;
592
  padding: 12px 24px;
593
  border-radius: 5px;
594
  cursor: pointer;
595
  font-size: 1.2rem;
596
  margin: 10px;
597
  width: 80%;
598
  transition: background-color 0.3s ease;
599
  background-color: #ffffff;
600
  color: #333;
601
  border: 2px solid #000000;
602
  font-size: 1.1vw;
603
  border-radius: 3vw;
604
  transition: all 0.3s ease;
605
  font-weight: 600;
606
  display: flex;
607
  align-items: center;
608
  justify-content: center;
609
  box-shadow: -1px 1vw 0.5vw rgb(0 0 0 / 13%);
610
  height: 100%;
611
  text-align: center;
612
  white-space: normal;
613
  word-break: break-word;
614
  width: 21vw;
615
  /* Make state classes override :hover */
616
  .option-btn.correct,
617
  .option-btn.incorrect,
618
  .option-btn.selected {
619
  position: relative; /* keeps layout stable */
620
  }
621
  /* Correct = green (state wins even on hover) */
622
  .option-btn.correct,
623
  .option-btn.correct:hover {
624
  background: #e8f7ed; /* soft green */
625
  border-color: #22c55e; /* green-500 */
626
  color: #14532d; /* dark green text */
627
  }
628
  /* Incorrect = red (state wins even on hover) */
629
  .option-btn.incorrect,
630
  .option-btn.incorrect:hover {
631
  background: #fee2e2; /* soft red */
632
  border-color: #ef4444; /* red-500 */
633
  color: #7f1d1d; /* dark red text */
634
  }
635
  /* Selected (pre-validation) = blue (state wins even on hover) */
636
  .option-btn.selected,
637
  .option-btn.selected:hover {
638
  background: #e0f2fe; /* soft blue */
639
  border-color: #3b82f6; /* blue-500 */
640
  color: #0c4a6e; /* dark blue text */
641
  }
642
  /* Default hover only when no state class is present */
643
  .option-btn:not(.selected):not(.correct):not(.incorrect):hover {
644
  background: #f3f4f6; /* light grey hover */
645
  }
646
  /* Optional: disabled look still visible */
647
  .option-btn.disabled,
648
  .option-btn:disabled {
649
  cursor: not-allowed;
650
  filter: grayscale(10%);
651
  }
652
  .option-btn.picked {
653
  outline: 2px dashed rgba(0,0,0,0.25);
654
  outline-offset: 2px;
655
  }
656
  margin-left: 8px;
657
  padding: 2px 8px;
658
  border-radius: 12px;
659
  font-size: 12px;
660
  background: rgba(0,0,0,0.06);
661
  background: rgba(255, 255, 255, 0.9);
662
  padding: 2vw;
663
  border-radius: 1vw;
664
  box-shadow: 0 0.4vw 0.8vw rgba(0, 0, 0, 0.6);
665
  width: 80vw;
666
  position: absolute;
667
  top: 54%;
668
  left: 50%;
669
  transform: translate(-50%, -50%);
670
  height: 70vh;
671
  border: 10px solid #009688;
672
  background-color: #fff;
673
  list-style-type: disc;
674
  padding: 0 5vw;
675
  color: #000000;
676
  overflow-y: auto;
677
  height: 18vw;
678
  font-size: 1.5vw;
679
  margin-bottom: 30px;
680
  text-align: justify;
681
  .feedback-list1 li {
682
  margin-bottom: 10px;
683
  line-height: 1.5;
684
  display: list-item;
685
  }
686
  list-style-type: none !important;
687
  text-align: justify;
688
  height: 20vw;
689
  overflow-y: auto;
690
  padding: 0 3vw;
691
  margin-bottom: 2vw;
692
  font-size: 1.5vw;
693
  .feedback-list li {
694
  margin-bottom: 1vw;
695
  font-weight: 500;
696
  }
697
  color: green;
698
  color: red;
699
  0% {
700
  transform: translate(-50%, -50%) rotate(0deg);
701
  }
702
  100% {
703
  transform: translate(-50%, -50%) rotate(360deg);
704
  }
705
  background: rgba(255, 255, 255, 0.9);
706
  padding: 2vw;
707
  border-radius: 1vw;
708
  box-shadow: 0 0.4vw 0.8vw rgba(0, 0, 0, 0.6);
709
  width: 80vw;
710
  position: absolute;
711
  top: 54%;
712
  left: 50%;
713
  transform: translate(-50%, -50%);
714
  height: 70vh;
715
  border: 10px solid #009688;
716
  background-color: #fff;
717
  resize: none
718
  font-size: 1.8vw;
719
  text-align: center;
720
  margin-bottom: 20px;
721
  color: #006780;
722
  font-weight: 600;
723
  display: flex;
724
  flex-direction: column;
725
  align-items: center;
726
  width: 100%;
727
  display: flex;
728
  justify-content: space-between;
729
  align-items: center;
730
  width: 80%;
731
  max-width: 600px;
732
  margin-bottom: 20px;
733
  .card4 .sentence-input-group label {
734
  font-weight: bold;
735
  text-align: left;
736
  width: 30%;
737
  font-size: 1.7vw;
738
  }
739
  .card4 .sentence-input-group .input-group {
740
  width: 60%;
741
  }
742
  .card4 .sentence-input-group textarea {
743
  width: 138%;
744
  height: 100%;
745
  font-size: 1.4rem;
746
  border: 2px solid #006780;
747
  font-family: Arial, sans-serif;
748
  border-radius: 8px;
749
  padding: 0.4vw;
750
  }
751
  .card4 .sentence-input-group textarea:focus {
752
  outline: none;
753
  border: 1px solid #007bff;
754
  }
755
  background: rgba(255, 255, 255, 0.9);
756
  padding: 2vw;
757
  border-radius: 1vw;
758
  box-shadow: 0 0.4vw 0.8vw rgba(0, 0, 0, 0.6);
759
  width: 80vw;
760
  position: absolute;
761
  top: 54%;
762
  left: 50%;
763
  transform: translate(-50%, -50%);
764
  height: 70vh;
765
  border: 10px solid #009688;
766
  background-color: #fff;
767
  .card5 .feedback-text {
768
  font-size: 1.8vw;
769
  font-weight: 600;
770
  color: #333;
771
  margin-top: 1vw;
772
  word-wrap: break-word;
773
  max-height: 400px;
774
  overflow-y: auto;
775
  padding-left: 20px;
776
  padding-right: 20px;
777
  text-align: justify;
778
  margin-bottom: 1vw;
779
  }
780
  position: absolute;
781
  top: 1vw;
782
  left: 2vw;
783
  color: #007bff;
784
  font-size: 24px;
785
  width: 5vw;
786
  cursor: pointer;
787
  transition: transform 0.2s ease-in-out;
788
  .back-icon:hover {
789
  transform: scale(1.1);
790
  color: #0056b3;
791
  }
792
  .back-icon img {
793
  width: 30px;
794
  height: auto;
795
  cursor: pointer;
796
  }
797
  position: absolute;
798
  top: -1vw;
799
  right: -1.4vw;
800
  width: 36px;
801
  height: 36px;
802
  display: grid;
803
  place-items: center;
804
  border-radius: 50%;
805
  background: #009688;
806
  color: #0f172a;
807
  border: 4px solid #009688;
808
  font-size: 18px;
809
  font-weight: 800;
810
  cursor: pointer;
811
  box-shadow: 0 4px 10px rgba(0, 0, 0, .15);
812
  transition: transform .15s ease, box-shadow .15s ease, background .15s ease;
813
  z-index: 10;
814
  .icon-btn1:hover {
815
  transform: scale(1.06);
816
  box-shadow: 0 6px 14px rgba(0,0,0,.22);
817
  background: #f7fafc;
818
  }
819
  .icon-btn1:active {
820
  transform: scale(0.98);
821
  }
822
  .icon-btn1 {
823
  width: 50px;
824
  height: 50px;
825
  font-size: 20px;
826
  }
827
  position: fixed;
828
  top: 0;
829
  left: 0;
830
  width: 100%;
831
  height: 100%;
832
  display: flex;
833
  justify-content: center;
834
  align-items: center;
835
  z-index: 1000;
836
  font-size: 15px;
837
  width: 1.5em;
838
  height: 1.5em;
839
  border-radius: 50%;
840
  position: relative;
841
  text-indent: -9999em;
842
  animation: mulShdSpin 1.1s infinite ease;
843
  transform: translateZ(0);
844
  0%, 100% {
845
  box-shadow: 0em -3em 0em 0em #808080, 2.2em -2.2em 0 0em rgba(128, 128, 128, 0.2), 3em 0em 0 0em rgba(128, 128, 128, 0.2), 2.2em 2.2em 0 0em rgba(128, 128, 128, 0.2), 0em 3em 0 0em rgba(128, 128, 128, 0.2), -2.2em 2.2em 0 0em rgba(128, 128, 128, 0.2), -3em 0em 0 0em rgba(128, 128, 128, 0.5), -2.2em -2.2em 0 0em rgba(128, 128, 128, 0.7);
846
  }
847
  12.5% {
848
  box-shadow: 0em -3em 0em 0em rgba(128, 128, 128, 0.7), 2.2em -2.2em 0 0em #808080, 3em 0em 0 0em rgba(128, 128, 128, 0.2), 2.2em 2.2em 0 0em rgba(128, 128, 128, 0.2), 0em 3em 0 0em rgba(128, 128, 128, 0.2), -2.2em 2.2em 0 0em rgba(128, 128, 128, 0.2), -3em 0em 0 0em rgba(128, 128, 128, 0.2), -2.2em -2.2em 0 0em rgba(128, 128, 128, 0.5);
849
  }
850
  25% {
851
  box-shadow: 0em -3em 0em 0em rgba(128, 128, 128, 0.5), 2.2em -2.2em 0 0em rgba(128, 128, 128, 0.7), 3em 0em 0 0em #808080, 2.2em 2.2em 0 0em rgba(128, 128, 128, 0.2), 0em 3em 0 0em rgba(128, 128, 128, 0.2), -2.2em 2.2em 0 0em rgba(128, 128, 128, 0.2), -3em 0em 0 0em rgba(128, 128, 128, 0.2), -2.2em -2.2em 0 0em rgba(128, 128, 128, 0.2);
852
  }
853
  37.5% {
854
  box-shadow: 0em -3em 0em 0em rgba(128, 128, 128, 0.2), 2.2em -2.2em 0 0em rgba(128, 128, 128, 0.5), 3em 0em 0 0em rgba(128, 128, 128, 0.7), 2.2em 2.2em 0 0em #808080, 0em 3em 0 0em rgba(128, 128, 128, 0.2), -2.2em 2.2em 0 0em rgba(128, 128, 128, 0.2), -3em 0em 0 0em rgba(128, 128, 128, 0.2), -2.2em -2.2em 0 0em rgba(128, 128, 128, 0.2);
855
  }
856
  50% {
857
  box-shadow: 0em -3em 0em 0em rgba(128, 128, 128, 0.2), 2.2em -2.2em 0 0em rgba(128, 128, 128, 0.2), 3em 0em 0 0em rgba(128, 128, 128, 0.5), 2.2em 2.2em 0 0em rgba(128, 128, 128, 0.7), 0em 3em 0 0em #808080, -2.2em 2.2em 0 0em rgba(128, 128, 128, 0.2), -3em 0em 0 0em rgba(128, 128, 128, 0.2), -2.2em -2.2em 0 0em rgba(128, 128, 128, 0.2);
858
  }
859
  62.5% {
860
  box-shadow: 0em -3em 0em 0em rgba(128, 128, 128, 0.2), 2.2em -2.2em 0 0em rgba(128, 128, 128, 0.2), 3em 0em 0 0em rgba(128, 128, 128, 0.2), 2.2em 2.2em 0 0em rgba(128, 128, 128, 0.5), 0em 3em 0 0em rgba(128, 128, 128, 0.7), -2.2em 2.2em 0 0em #808080, -3em 0em 0 0em rgba(128, 128, 128, 0.2), -2.2em -2.2em 0 0em rgba(128, 128, 128, 0.2);
861
  }
862
  75% {
863
  box-shadow: 0em -3em 0em 0em rgba(128, 128, 128, 0.2), 2.2em -2.2em 0 0em rgba(128, 128, 128, 0.2), 3em 0em 0 0em rgba(128, 128, 128, 0.2), 2.2em 2.2em 0 0em rgba(128, 128, 128, 0.2), 0em 3em 0 0em rgba(128, 128, 128, 0.5), -2.2em 2.2em 0 0em rgba(128, 128, 128, 0.7), -3em 0em 0 0em #808080, -2.2em -2.2em 0 0em rgba(128, 128, 128, 0.2);
864
  }
865
  87.5% {
866
  box-shadow: 0em -3em 0em 0em rgba(128, 128, 128, 0.2), 2.2em -2.2em 0 0em rgba(128, 128, 128, 0.2), 3em 0em 0 0em rgba(128, 128, 128, 0.2), 2.2em 2.2em 0 0em rgba(128, 128, 128, 0.2), 0em 3em 0 0em rgba(128, 128, 128, 0.2), -2.2em 2.2em 0 0em rgba(128, 128, 128, 0.5), -3em 0em 0 0em rgba(128, 128, 128, 0.7), -2.2em -2.2em 0 0em #808080;
867
  }
 
 
1
  margin-top: 1rem;
2
  padding: 1rem;
3
  background-color: #f0f4f8;
4
  border-radius: 8px;
5
  border: 1px solid #cdd5df;
6
  display: flex;
7
  justify-content: space-between;
8
  align-items: center;
9
  padding: 0vw 2vw;
10
  background-color: #009688;
11
  box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.2); /* Soft shadow */
12
  width: 100%;
13
  position: sticky;
14
  top: 0;
15
  max-width: 5vw;
16
  height: auto;
17
  background: #fff;
18
  border-radius: 1vw;
19
  margin: 0.5vw;
20
  text-align: center;
21
  flex: 1;
22
  .header-title h1 {
23
  font-size: 3vw;
24
  color: #fff;
25
  margin: 0;
26
  position: absolute;
27
  top: 50%;
28
  left: 50%;
29
  transform: translate(-50%, -50%);
30
  }
31
  width: 5vw;
32
  .home-btn img:hover {
33
  transform: scale(1.1);
34
  }
35
  background-image: url(/assets/images/grammar-bg.png);
36
  background-size: auto;
37
  background-position: center;
38
  background-attachment: fixed;
39
  width: 100%;
40
  height: 100%;
41
  position: absolute;
42
  top: 10%;
43
  left: 0;
44
  width: 100%;
45
  height: auto;
46
  max-height: calc(100vh - 100px);
47
  object-fit: fill;
48
  z-index: -1;
49
  opacity: 0.2;
50
  background: rgba(255, 255, 255, 0.9);
51
  width: 80vw;
52
  position: absolute;
53
  top: 50%;
54
  left: 50%;
55
  transform: translate(-50%, -50%);
56
  height: 66vh;
57
  display: flex;
58
  justify-content: space-between;
59
  align-items: flex-start;
60
  padding: 4vw;
61
  gap: 2vw;
62
  background-color: #fff;
63
  border: 10px solid #009688;
64
  border-radius: 1vw;
65
  box-shadow: 0 0.4vw 0.8vw rgba(0, 0, 0, 0.6);
66
  margin: 2vw auto;
67
  max-width: 90%;
68
  display: flex;
69
  align-items: center;
70
  gap: 4vw;
71
  width: 50%;
72
  font-size: 2.5vw;
73
  font-weight: 800;
74
  color: #006780;
75
  margin-bottom: 20px;
76
  text-align: center;
77
  width: 100%;
78
  height: auto;
79
  border-radius: 10px;
80
  width: 66%;
81
  .description-container p {
82
  font-size: 1.4vw;
83
  margin-bottom: 30px;
84
  text-align: justify;
85
  }
86
  position: relative;
87
  border-radius: 0.5vw;
88
  font-size: 1.5vw;
89
  transition: background-color 0.3s;
90
  width: auto;
91
  font-weight: bold;
92
  background-color: #006780;
93
  border: none;
94
  color: white;
95
  padding: 15px 32px;
96
  text-align: center;
97
  text-decoration: none;
98
  display: inline-flex;
99
  align-items: center;
100
  justify-content: center;
101
  position: relative;
102
  min-width: 5vw;
103
  height: 2.9vw;
104
  margin-top: 1.5vw;
105
  .validate-button:hover {
106
  background-color: #bdc3c7;
107
  box-shadow: 0 12px 16px 0 rgba(0,0,0,0.24),0 17px 50px 0 rgba(0,0,0,0.19);
108
  }
109
  .validate-button:disabled {
110
  background-color: #ccc;
111
  cursor: not-allowed;
112
  }
113
  position: absolute;
114
  border-radius: 0.5vw;
115
  font-size: 1.5vw;
116
  transition: background-color 0.3s;
117
  font-weight: bold;
118
  background-color: #006780;
119
  border: none;
120
  color: white;
121
  left: 50%;
122
  text-decoration: none;
123
  transform: translateX(-50%);
124
  padding: 0.5vw;
125
  .submit-button:hover {
126
  background-color: #bdc3c7;
127
  box-shadow: 0 12px 16px 0 rgba(0,0,0,0.24),0 17px 50px 0 rgba(0,0,0,0.19);
128
  }
129
  .submit-button:disabled {
130
  background-color: #ccc;
131
  cursor: not-allowed;
132
  }
133
  background: rgba(255, 255, 255, 0.9);
134
  padding: 2vw;
135
  border-radius: 1vw;
136
  box-shadow: 0 0.4vw 0.8vw rgba(0, 0, 0, 0.6);
137
  width: 80vw;
138
  position: absolute;
139
  top: 54%;
140
  left: 50%;
141
  transform: translate(-50%, -50%);
142
  height: 70vh;
143
  border: 10px solid #009688;
144
  background-color: #fff;
145
  .card2 .content-container {
146
  display: flex;
147
  justify-content: space-around;
148
  align-items: center;
149
  height: 100%;
150
  }
151
  max-width: 100%;
152
  height: auto;
153
  display: flex;
154
  flex-direction: column;
155
  align-items: center;
156
  justify-content: center;
157
  text-align: center;
158
  width: 50%;
159
  .word-container h2 {
160
  font-size: 2.5rem;
161
  font-weight: bold;
162
  color: #333;
163
  margin-top: 2.7vw;
164
  }
165
  width: 45%;
166
  text-align: center;
167
  padding: 20px;
168
  background: rgba(255, 255, 255, 0.7);
169
  border-radius: 10px;
170
  box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.2);
171
  margin-right: 4vw;
172
  font-size: 1.2vw;
173
  margin-bottom: 20px;
174
  font-weight: 700;
175
  display: flex;
176
  flex-direction: column;
177
  align-items: center;
178
  background-color: #ccc;
179
  color: white;
180
  padding: 12px 24px;
181
  border-radius: 5px;
182
  cursor: pointer;
183
  font-size: 1.2rem;
184
  margin: 10px;
185
  width: 80%;
186
  transition: background-color 0.3s ease;
187
  background-color: #ffffff;
188
  color: #333;
189
  border: 2px solid #000000;
190
  font-size: 1.1vw;
191
  border-radius: 3vw;
192
  transition: all 0.3s ease;
193
  font-weight: 600;
194
  display: flex;
195
  align-items: center;
196
  justify-content: center;
197
  box-shadow: -1px 1vw 0.5vw rgb(0 0 0 / 13%);
198
  height: 100%;
199
  text-align: center;
200
  white-space: normal;
201
  word-break: break-word;
202
  width: 21vw;
203
  /* Make state classes override :hover */
204
  .option-btn.correct,
205
  .option-btn.incorrect,
206
  .option-btn.selected {
207
  position: relative; /* keeps layout stable */
208
  }
209
  /* Correct = green (state wins even on hover) */
210
  .option-btn.correct,
211
  .option-btn.correct:hover {
212
  background: #e8f7ed; /* soft green */
213
  border-color: #22c55e; /* green-500 */
214
  color: #14532d; /* dark green text */
215
  }
216
  /* Incorrect = red (state wins even on hover) */
217
  .option-btn.incorrect,
218
  .option-btn.incorrect:hover {
219
  background: #fee2e2; /* soft red */
220
  border-color: #ef4444; /* red-500 */
221
  color: #7f1d1d; /* dark red text */
222
  }
223
  /* Selected (pre-validation) = blue (state wins even on hover) */
224
  .option-btn.selected,
225
  .option-btn.selected:hover {
226
  background: #e0f2fe; /* soft blue */
227
  border-color: #3b82f6; /* blue-500 */
228
  color: #0c4a6e; /* dark blue text */
229
  }
230
  /* Default hover only when no state class is present */
231
  .option-btn:not(.selected):not(.correct):not(.incorrect):hover {
232
  background: #f3f4f6; /* light grey hover */
233
  }
234
  /* Optional: disabled look still visible */
235
  .option-btn.disabled,
236
  .option-btn:disabled {
237
  cursor: not-allowed;
238
  filter: grayscale(10%);
239
  }
240
  .option-btn.picked {
241
  outline: 2px dashed rgba(0,0,0,0.25);
242
  outline-offset: 2px;
243
  }
244
  margin-left: 8px;
245
  padding: 2px 8px;
246
  border-radius: 12px;
247
  font-size: 12px;
248
  background: rgba(0,0,0,0.06);
249
  background: rgba(255, 255, 255, 0.9);
250
  padding: 2vw;
251
  border-radius: 1vw;
252
  box-shadow: 0 0.4vw 0.8vw rgba(0, 0, 0, 0.6);
253
  width: 80vw;
254
  position: absolute;
255
  top: 54%;
256
  left: 50%;
257
  transform: translate(-50%, -50%);
258
  height: 70vh;
259
  border: 10px solid #009688;
260
  background-color: #fff;
261
  list-style-type: disc;
262
  padding: 0 5vw;
263
  color: #000000;
264
  overflow-y: auto;
265
  height: 18vw;
266
  font-size: 1.5vw;
267
  margin-bottom: 30px;
268
  text-align: justify;
269
  .feedback-list1 li {
270
  margin-bottom: 10px;
271
  line-height: 1.5;
272
  display: list-item;
273
  }
274
  list-style-type: none !important;
275
  text-align: justify;
276
  height: 20vw;
277
  overflow-y: auto;
278
  padding: 0 3vw;
279
  margin-bottom: 2vw;
280
  font-size: 1.5vw;
281
  .feedback-list li {
282
  margin-bottom: 1vw;
283
  font-weight: 500;
284
  }
285
  color: green;
286
  color: red;
287
  0% {
288
  transform: translate(-50%, -50%) rotate(0deg);
289
  }
290
  100% {
291
  transform: translate(-50%, -50%) rotate(360deg);
292
  }
293
  background: rgba(255, 255, 255, 0.9);
294
  padding: 2vw;
295
  border-radius: 1vw;
296
  box-shadow: 0 0.4vw 0.8vw rgba(0, 0, 0, 0.6);
297
  width: 80vw;
298
  position: absolute;
299
  top: 54%;
300
  left: 50%;
301
  transform: translate(-50%, -50%);
302
  height: 70vh;
303
  border: 10px solid #009688;
304
  background-color: #fff;
305
  resize: none
306
  font-size: 1.8vw;
307
  text-align: center;
308
  margin-bottom: 20px;
309
  color: #006780;
310
  font-weight: 600;
311
  display: flex;
312
  flex-direction: column;
313
  align-items: center;
314
  width: 100%;
315
  display: flex;
316
  justify-content: space-between;
317
  align-items: center;
318
  width: 80%;
319
  max-width: 600px;
320
  margin-bottom: 20px;
321
  .card4 .sentence-input-group label {
322
  font-weight: bold;
323
  text-align: left;
324
  width: 30%;
325
  font-size: 1.7vw;
326
  }
327
  .card4 .sentence-input-group .input-group {
328
  width: 60%;
329
  }
330
  .card4 .sentence-input-group textarea {
331
  width: 138%;
332
  height: 100%;
333
  font-size: 1.4rem;
334
  border: 2px solid #006780;
335
  font-family: Arial, sans-serif;
336
  border-radius: 8px;
337
  padding: 0.4vw;
338
  }
339
  .card4 .sentence-input-group textarea:focus {
340
  outline: none;
341
  border: 1px solid #007bff;
342
  }
343
  background: rgba(255, 255, 255, 0.9);
344
  padding: 2vw;
345
  border-radius: 1vw;
346
  box-shadow: 0 0.4vw 0.8vw rgba(0, 0, 0, 0.6);
347
  width: 80vw;
348
  position: absolute;
349
  top: 54%;
350
  left: 50%;
351
  transform: translate(-50%, -50%);
352
  height: 70vh;
353
  border: 10px solid #009688;
354
  background-color: #fff;
355
  .card5 .feedback-text {
356
  font-size: 1.8vw;
357
  font-weight: 600;
358
  color: #333;
359
  margin-top: 1vw;
360
  word-wrap: break-word;
361
  max-height: 400px;
362
  overflow-y: auto;
363
  padding-left: 20px;
364
  padding-right: 20px;
365
  text-align: justify;
366
  margin-bottom: 1vw;
367
  }
368
  position: absolute;
369
  top: 1vw;
370
  left: 2vw;
371
  color: #007bff;
372
  font-size: 24px;
373
  width: 5vw;
374
  cursor: pointer;
375
  transition: transform 0.2s ease-in-out;
376
  .back-icon:hover {
377
  transform: scale(1.1);
378
  color: #0056b3;
379
  }
380
  .back-icon img {
381
  width: 30px;
382
  height: auto;
383
  cursor: pointer;
384
  }
385
  position: absolute;
386
  top: -1vw;
387
  right: -1.4vw;
388
  width: 36px;
389
  height: 36px;
390
  display: grid;
391
  place-items: center;
392
  border-radius: 50%;
393
  background: #009688;
394
  color: #0f172a;
395
  border: 4px solid #009688;
396
  font-size: 18px;
397
  font-weight: 800;
398
  cursor: pointer;
399
  box-shadow: 0 4px 10px rgba(0, 0, 0, .15);
400
  transition: transform .15s ease, box-shadow .15s ease, background .15s ease;
401
  z-index: 10;
402
  .icon-btn1:hover {
403
  transform: scale(1.06);
404
  box-shadow: 0 6px 14px rgba(0,0,0,.22);
405
  background: #f7fafc;
406
  }
407
  .icon-btn1:active {
408
  transform: scale(0.98);
409
  }
410
  .icon-btn1 {
411
  width: 50px;
412
  height: 50px;
413
  font-size: 20px;
414
  }
415
  position: fixed;
416
  top: 0;
417
  left: 0;
418
  width: 100%;
419
  height: 100%;
420
  display: flex;
421
  justify-content: center;
422
  align-items: center;
423
  z-index: 1000;
424
  font-size: 15px;
425
  width: 1.5em;
426
  height: 1.5em;
427
  border-radius: 50%;
428
  position: relative;
429
  text-indent: -9999em;
430
  animation: mulShdSpin 1.1s infinite ease;
431
  transform: translateZ(0);
432
  0%, 100% {
433
  box-shadow: 0em -3em 0em 0em #808080, 2.2em -2.2em 0 0em rgba(128, 128, 128, 0.2), 3em 0em 0 0em rgba(128, 128, 128, 0.2), 2.2em 2.2em 0 0em rgba(128, 128, 128, 0.2), 0em 3em 0 0em rgba(128, 128, 128, 0.2), -2.2em 2.2em 0 0em rgba(128, 128, 128, 0.2), -3em 0em 0 0em rgba(128, 128, 128, 0.5), -2.2em -2.2em 0 0em rgba(128, 128, 128, 0.7);
434
  }
435
  12.5% {
436
  box-shadow: 0em -3em 0em 0em rgba(128, 128, 128, 0.7), 2.2em -2.2em 0 0em #808080, 3em 0em 0 0em rgba(128, 128, 128, 0.2), 2.2em 2.2em 0 0em rgba(128, 128, 128, 0.2), 0em 3em 0 0em rgba(128, 128, 128, 0.2), -2.2em 2.2em 0 0em rgba(128, 128, 128, 0.2), -3em 0em 0 0em rgba(128, 128, 128, 0.2), -2.2em -2.2em 0 0em rgba(128, 128, 128, 0.5);
437
  }
438
  25% {
439
  box-shadow: 0em -3em 0em 0em rgba(128, 128, 128, 0.5), 2.2em -2.2em 0 0em rgba(128, 128, 128, 0.7), 3em 0em 0 0em #808080, 2.2em 2.2em 0 0em rgba(128, 128, 128, 0.2), 0em 3em 0 0em rgba(128, 128, 128, 0.2), -2.2em 2.2em 0 0em rgba(128, 128, 128, 0.2), -3em 0em 0 0em rgba(128, 128, 128, 0.2), -2.2em -2.2em 0 0em rgba(128, 128, 128, 0.2);
440
  }
441
  37.5% {
442
  box-shadow: 0em -3em 0em 0em rgba(128, 128, 128, 0.2), 2.2em -2.2em 0 0em rgba(128, 128, 128, 0.5), 3em 0em 0 0em rgba(128, 128, 128, 0.7), 2.2em 2.2em 0 0em #808080, 0em 3em 0 0em rgba(128, 128, 128, 0.2), -2.2em 2.2em 0 0em rgba(128, 128, 128, 0.2), -3em 0em 0 0em rgba(128, 128, 128, 0.2), -2.2em -2.2em 0 0em rgba(128, 128, 128, 0.2);
443
  }
444
  50% {
445
  box-shadow: 0em -3em 0em 0em rgba(128, 128, 128, 0.2), 2.2em -2.2em 0 0em rgba(128, 128, 128, 0.2), 3em 0em 0 0em rgba(128, 128, 128, 0.5), 2.2em 2.2em 0 0em rgba(128, 128, 128, 0.7), 0em 3em 0 0em #808080, -2.2em 2.2em 0 0em rgba(128, 128, 128, 0.2), -3em 0em 0 0em rgba(128, 128, 128, 0.2), -2.2em -2.2em 0 0em rgba(128, 128, 128, 0.2);
446
  }
447
  62.5% {
448
  box-shadow: 0em -3em 0em 0em rgba(128, 128, 128, 0.2), 2.2em -2.2em 0 0em rgba(128, 128, 128, 0.2), 3em 0em 0 0em rgba(128, 128, 128, 0.2), 2.2em 2.2em 0 0em rgba(128, 128, 128, 0.5), 0em 3em 0 0em rgba(128, 128, 128, 0.7), -2.2em 2.2em 0 0em #808080, -3em 0em 0 0em rgba(128, 128, 128, 0.2), -2.2em -2.2em 0 0em rgba(128, 128, 128, 0.2);
449
  }
450
  75% {
451
  box-shadow: 0em -3em 0em 0em rgba(128, 128, 128, 0.2), 2.2em -2.2em 0 0em rgba(128, 128, 128, 0.2), 3em 0em 0 0em rgba(128, 128, 128, 0.2), 2.2em 2.2em 0 0em rgba(128, 128, 128, 0.2), 0em 3em 0 0em rgba(128, 128, 128, 0.5), -2.2em 2.2em 0 0em rgba(128, 128, 128, 0.7), -3em 0em 0 0em #808080, -2.2em -2.2em 0 0em rgba(128, 128, 128, 0.2);
452
  }
453
  87.5% {
454
  box-shadow: 0em -3em 0em 0em rgba(128, 128, 128, 0.2), 2.2em -2.2em 0 0em rgba(128, 128, 128, 0.2), 3em 0em 0 0em rgba(128, 128, 128, 0.2), 2.2em 2.2em 0 0em rgba(128, 128, 128, 0.2), 0em 3em 0 0em rgba(128, 128, 128, 0.2), -2.2em 2.2em 0 0em rgba(128, 128, 128, 0.5), -3em 0em 0 0em rgba(128, 128, 128, 0.7), -2.2em -2.2em 0 0em #808080;
455
  }
456
+
457
  margin-top: 1rem;
458
  padding: 1rem;
459
  background-color: #f0f4f8;
460
  border-radius: 8px;
461
  border: 1px solid #cdd5df;
462
  background: rgba(255, 255, 255, 0.9);
463
  width: 80vw;
464
  position: absolute;
465
  top: 50%;
466
  left: 50%;
467
  transform: translate(-50%, -50%);
468
  height: 66vh;
469
  display: flex;
470
  justify-content: space-between;
471
  align-items: flex-start;
472
  padding: 4vw;
473
  gap: 2vw;
474
  background-color: #fff;
475
  border: 10px solid #009688;
476
  border-radius: 1vw;
477
  box-shadow: 0 0.4vw 0.8vw rgba(0, 0, 0, 0.6);
478
  margin: 2vw auto;
479
  max-width: 90%;
480
  display: flex;
481
  align-items: center;
482
  gap: 4vw;
483
  width: 50%;
484
  font-size: 2.5vw;
485
  font-weight: 800;
486
  color: #006780;
487
  margin-bottom: 20px;
488
  text-align: center;
489
  width: 100%;
490
  height: auto;
491
  border-radius: 10px;
492
  width: 66%;
493
  .description-container p {
494
  font-size: 1.4vw;
495
  margin-bottom: 30px;
496
  text-align: justify;
497
  }
498
  position: relative;
499
  border-radius: 0.5vw;
500
  font-size: 1.5vw;
501
  transition: background-color 0.3s;
502
  width: auto;
503
  font-weight: bold;
504
  background-color: #006780;
505
  border: none;
506
  color: white;
507
  padding: 15px 32px;
508
  text-align: center;
509
  text-decoration: none;
510
  display: inline-flex;
511
  align-items: center;
512
  justify-content: center;
513
  position: relative;
514
  min-width: 5vw;
515
  height: 2.9vw;
516
  margin-top: 1.5vw;
517
  .validate-button:hover {
518
  background-color: #bdc3c7;
519
  box-shadow: 0 12px 16px 0 rgba(0,0,0,0.24),0 17px 50px 0 rgba(0,0,0,0.19);
520
  }
521
  .validate-button:disabled {
522
  background-color: #ccc;
523
  cursor: not-allowed;
524
  }
525
  position: absolute;
526
  border-radius: 0.5vw;
527
  font-size: 1.5vw;
528
  transition: background-color 0.3s;
529
  font-weight: bold;
530
  background-color: #006780;
531
  border: none;
532
  color: white;
533
  left: 50%;
534
  text-decoration: none;
535
  transform: translateX(-50%);
536
  padding: 0.5vw;
537
  .submit-button:hover {
538
  background-color: #bdc3c7;
539
  box-shadow: 0 12px 16px 0 rgba(0,0,0,0.24),0 17px 50px 0 rgba(0,0,0,0.19);
540
  }
541
  .submit-button:disabled {
542
  background-color: #ccc;
543
  cursor: not-allowed;
544
  }
545
  background: rgba(255, 255, 255, 0.9);
546
  padding: 2vw;
547
  border-radius: 1vw;
548
  box-shadow: 0 0.4vw 0.8vw rgba(0, 0, 0, 0.6);
549
  width: 80vw;
550
  position: absolute;
551
  top: 54%;
552
  left: 50%;
553
  transform: translate(-50%, -50%);
554
  height: 70vh;
555
  border: 10px solid #009688;
556
  background-color: #fff;
557
  .card2 .content-container {
558
  display: flex;
559
  justify-content: space-around;
560
  align-items: center;
561
  height: 100%;
562
  }
563
  max-width: 100%;
564
  height: auto;
565
  display: flex;
566
  flex-direction: column;
567
  align-items: center;
568
  justify-content: center;
569
  text-align: center;
570
  width: 50%;
571
  .word-container h2 {
572
  font-size: 2.5rem;
573
  font-weight: bold;
574
  color: #333;
575
  margin-top: 2.7vw;
576
  }
577
  width: 45%;
578
  text-align: center;
579
  padding: 20px;
580
  background: rgba(255, 255, 255, 0.7);
581
  border-radius: 10px;
582
  box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.2);
583
  margin-right: 4vw;
584
  font-size: 1.2vw;
585
  margin-bottom: 20px;
586
  font-weight: 700;
587
  display: flex;
588
  flex-direction: column;
589
  align-items: center;
590
  background-color: #ccc;
591
  color: white;
592
  padding: 12px 24px;
593
  border-radius: 5px;
594
  cursor: pointer;
595
  font-size: 1.2rem;
596
  margin: 10px;
597
  width: 80%;
598
  transition: background-color 0.3s ease;
599
  background-color: #ffffff;
600
  color: #333;
601
  border: 2px solid #000000;
602
  font-size: 1.1vw;
603
  border-radius: 3vw;
604
  transition: all 0.3s ease;
605
  font-weight: 600;
606
  display: flex;
607
  align-items: center;
608
  justify-content: center;
609
  box-shadow: -1px 1vw 0.5vw rgb(0 0 0 / 13%);
610
  height: 100%;
611
  text-align: center;
612
  white-space: normal;
613
  word-break: break-word;
614
  width: 21vw;
615
  /* Make state classes override :hover */
616
  .option-btn.correct,
617
  .option-btn.incorrect,
618
  .option-btn.selected {
619
  position: relative; /* keeps layout stable */
620
  }
621
  /* Correct = green (state wins even on hover) */
622
  .option-btn.correct,
623
  .option-btn.correct:hover {
624
  background: #e8f7ed; /* soft green */
625
  border-color: #22c55e; /* green-500 */
626
  color: #14532d; /* dark green text */
627
  }
628
  /* Incorrect = red (state wins even on hover) */
629
  .option-btn.incorrect,
630
  .option-btn.incorrect:hover {
631
  background: #fee2e2; /* soft red */
632
  border-color: #ef4444; /* red-500 */
633
  color: #7f1d1d; /* dark red text */
634
  }
635
  /* Selected (pre-validation) = blue (state wins even on hover) */
636
  .option-btn.selected,
637
  .option-btn.selected:hover {
638
  background: #e0f2fe; /* soft blue */
639
  border-color: #3b82f6; /* blue-500 */
640
  color: #0c4a6e; /* dark blue text */
641
  }
642
  /* Default hover only when no state class is present */
643
  .option-btn:not(.selected):not(.correct):not(.incorrect):hover {
644
  background: #f3f4f6; /* light grey hover */
645
  }
646
  /* Optional: disabled look still visible */
647
  .option-btn.disabled,
648
  .option-btn:disabled {
649
  cursor: not-allowed;
650
  filter: grayscale(10%);
651
  }
652
  .option-btn.picked {
653
  outline: 2px dashed rgba(0,0,0,0.25);
654
  outline-offset: 2px;
655
  }
656
  margin-left: 8px;
657
  padding: 2px 8px;
658
  border-radius: 12px;
659
  font-size: 12px;
660
  background: rgba(0,0,0,0.06);
661
  background: rgba(255, 255, 255, 0.9);
662
  padding: 2vw;
663
  border-radius: 1vw;
664
  box-shadow: 0 0.4vw 0.8vw rgba(0, 0, 0, 0.6);
665
  width: 80vw;
666
  position: absolute;
667
  top: 54%;
668
  left: 50%;
669
  transform: translate(-50%, -50%);
670
  height: 70vh;
671
  border: 10px solid #009688;
672
  background-color: #fff;
673
  list-style-type: disc;
674
  padding: 0 5vw;
675
  color: #000000;
676
  overflow-y: auto;
677
  height: 18vw;
678
  font-size: 1.5vw;
679
  margin-bottom: 30px;
680
  text-align: justify;
681
  .feedback-list1 li {
682
  margin-bottom: 10px;
683
  line-height: 1.5;
684
  display: list-item;
685
  }
686
  list-style-type: none !important;
687
  text-align: justify;
688
  height: 20vw;
689
  overflow-y: auto;
690
  padding: 0 3vw;
691
  margin-bottom: 2vw;
692
  font-size: 1.5vw;
693
  .feedback-list li {
694
  margin-bottom: 1vw;
695
  font-weight: 500;
696
  }
697
  color: green;
698
  color: red;
699
  0% {
700
  transform: translate(-50%, -50%) rotate(0deg);
701
  }
702
  100% {
703
  transform: translate(-50%, -50%) rotate(360deg);
704
  }
705
  background: rgba(255, 255, 255, 0.9);
706
  padding: 2vw;
707
  border-radius: 1vw;
708
  box-shadow: 0 0.4vw 0.8vw rgba(0, 0, 0, 0.6);
709
  width: 80vw;
710
  position: absolute;
711
  top: 54%;
712
  left: 50%;
713
  transform: translate(-50%, -50%);
714
  height: 70vh;
715
  border: 10px solid #009688;
716
  background-color: #fff;
717
  resize: none
718
  font-size: 1.8vw;
719
  text-align: center;
720
  margin-bottom: 20px;
721
  color: #006780;
722
  font-weight: 600;
723
  display: flex;
724
  flex-direction: column;
725
  align-items: center;
726
  width: 100%;
727
  display: flex;
728
  justify-content: space-between;
729
  align-items: center;
730
  width: 80%;
731
  max-width: 600px;
732
  margin-bottom: 20px;
733
  .card4 .sentence-input-group label {
734
  font-weight: bold;
735
  text-align: left;
736
  width: 30%;
737
  font-size: 1.7vw;
738
  }
739
  .card4 .sentence-input-group .input-group {
740
  width: 60%;
741
  }
742
  .card4 .sentence-input-group textarea {
743
  width: 138%;
744
  height: 100%;
745
  font-size: 1.4rem;
746
  border: 2px solid #006780;
747
  font-family: Arial, sans-serif;
748
  border-radius: 8px;
749
  padding: 0.4vw;
750
  }
751
  .card4 .sentence-input-group textarea:focus {
752
  outline: none;
753
  border: 1px solid #007bff;
754
  }
755
  background: rgba(255, 255, 255, 0.9);
756
  padding: 2vw;
757
  border-radius: 1vw;
758
  box-shadow: 0 0.4vw 0.8vw rgba(0, 0, 0, 0.6);
759
  width: 80vw;
760
  position: absolute;
761
  top: 54%;
762
  left: 50%;
763
  transform: translate(-50%, -50%);
764
  height: 70vh;
765
  border: 10px solid #009688;
766
  background-color: #fff;
767
  .card5 .feedback-text {
768
  font-size: 1.8vw;
769
  font-weight: 600;
770
  color: #333;
771
  margin-top: 1vw;
772
  word-wrap: break-word;
773
  max-height: 400px;
774
  overflow-y: auto;
775
  padding-left: 20px;
776
  padding-right: 20px;
777
  text-align: justify;
778
  margin-bottom: 1vw;
779
  }
780
  position: absolute;
781
  top: 1vw;
782
  left: 2vw;
783
  color: #007bff;
784
  font-size: 24px;
785
  width: 5vw;
786
  cursor: pointer;
787
  transition: transform 0.2s ease-in-out;
788
  .back-icon:hover {
789
  transform: scale(1.1);
790
  color: #0056b3;
791
  }
792
  .back-icon img {
793
  width: 30px;
794
  height: auto;
795
  cursor: pointer;
796
  }
797
  position: absolute;
798
  top: -1vw;
799
  right: -1.4vw;
800
  width: 36px;
801
  height: 36px;
802
  display: grid;
803
  place-items: center;
804
  border-radius: 50%;
805
  background: #009688;
806
  color: #0f172a;
807
  border: 4px solid #009688;
808
  font-size: 18px;
809
  font-weight: 800;
810
  cursor: pointer;
811
  box-shadow: 0 4px 10px rgba(0, 0, 0, .15);
812
  transition: transform .15s ease, box-shadow .15s ease, background .15s ease;
813
  z-index: 10;
814
  .icon-btn1:hover {
815
  transform: scale(1.06);
816
  box-shadow: 0 6px 14px rgba(0,0,0,.22);
817
  background: #f7fafc;
818
  }
819
  .icon-btn1:active {
820
  transform: scale(0.98);
821
  }
822
  .icon-btn1 {
823
  width: 50px;
824
  height: 50px;
825
  font-size: 20px;
826
  }
827
  position: fixed;
828
  top: 0;
829
  left: 0;
830
  width: 100%;
831
  height: 100%;
832
  display: flex;
833
  justify-content: center;
834
  align-items: center;
835
  z-index: 1000;
836
  font-size: 15px;
837
  width: 1.5em;
838
  height: 1.5em;
839
  border-radius: 50%;
840
  position: relative;
841
  text-indent: -9999em;
842
  animation: mulShdSpin 1.1s infinite ease;
843
  transform: translateZ(0);
844
  0%, 100% {
845
  box-shadow: 0em -3em 0em 0em #808080, 2.2em -2.2em 0 0em rgba(128, 128, 128, 0.2), 3em 0em 0 0em rgba(128, 128, 128, 0.2), 2.2em 2.2em 0 0em rgba(128, 128, 128, 0.2), 0em 3em 0 0em rgba(128, 128, 128, 0.2), -2.2em 2.2em 0 0em rgba(128, 128, 128, 0.2), -3em 0em 0 0em rgba(128, 128, 128, 0.5), -2.2em -2.2em 0 0em rgba(128, 128, 128, 0.7);
846
  }
847
  12.5% {
848
  box-shadow: 0em -3em 0em 0em rgba(128, 128, 128, 0.7), 2.2em -2.2em 0 0em #808080, 3em 0em 0 0em rgba(128, 128, 128, 0.2), 2.2em 2.2em 0 0em rgba(128, 128, 128, 0.2), 0em 3em 0 0em rgba(128, 128, 128, 0.2), -2.2em 2.2em 0 0em rgba(128, 128, 128, 0.2), -3em 0em 0 0em rgba(128, 128, 128, 0.2), -2.2em -2.2em 0 0em rgba(128, 128, 128, 0.5);
849
  }
850
  25% {
851
  box-shadow: 0em -3em 0em 0em rgba(128, 128, 128, 0.5), 2.2em -2.2em 0 0em rgba(128, 128, 128, 0.7), 3em 0em 0 0em #808080, 2.2em 2.2em 0 0em rgba(128, 128, 128, 0.2), 0em 3em 0 0em rgba(128, 128, 128, 0.2), -2.2em 2.2em 0 0em rgba(128, 128, 128, 0.2), -3em 0em 0 0em rgba(128, 128, 128, 0.2), -2.2em -2.2em 0 0em rgba(128, 128, 128, 0.2);
852
  }
853
  37.5% {
854
  box-shadow: 0em -3em 0em 0em rgba(128, 128, 128, 0.2), 2.2em -2.2em 0 0em rgba(128, 128, 128, 0.5), 3em 0em 0 0em rgba(128, 128, 128, 0.7), 2.2em 2.2em 0 0em #808080, 0em 3em 0 0em rgba(128, 128, 128, 0.2), -2.2em 2.2em 0 0em rgba(128, 128, 128, 0.2), -3em 0em 0 0em rgba(128, 128, 128, 0.2), -2.2em -2.2em 0 0em rgba(128, 128, 128, 0.2);
855
  }
856
  50% {
857
  box-shadow: 0em -3em 0em 0em rgba(128, 128, 128, 0.2), 2.2em -2.2em 0 0em rgba(128, 128, 128, 0.2), 3em 0em 0 0em rgba(128, 128, 128, 0.5), 2.2em 2.2em 0 0em rgba(128, 128, 128, 0.7), 0em 3em 0 0em #808080, -2.2em 2.2em 0 0em rgba(128, 128, 128, 0.2), -3em 0em 0 0em rgba(128, 128, 128, 0.2), -2.2em -2.2em 0 0em rgba(128, 128, 128, 0.2);
858
  }
859
  62.5% {
860
  box-shadow: 0em -3em 0em 0em rgba(128, 128, 128, 0.2), 2.2em -2.2em 0 0em rgba(128, 128, 128, 0.2), 3em 0em 0 0em rgba(128, 128, 128, 0.2), 2.2em 2.2em 0 0em rgba(128, 128, 128, 0.5), 0em 3em 0 0em rgba(128, 128, 128, 0.7), -2.2em 2.2em 0 0em #808080, -3em 0em 0 0em rgba(128, 128, 128, 0.2), -2.2em -2.2em 0 0em rgba(128, 128, 128, 0.2);
861
  }
862
  75% {
863
  box-shadow: 0em -3em 0em 0em rgba(128, 128, 128, 0.2), 2.2em -2.2em 0 0em rgba(128, 128, 128, 0.2), 3em 0em 0 0em rgba(128, 128, 128, 0.2), 2.2em 2.2em 0 0em rgba(128, 128, 128, 0.2), 0em 3em 0 0em rgba(128, 128, 128, 0.5), -2.2em 2.2em 0 0em rgba(128, 128, 128, 0.7), -3em 0em 0 0em #808080, -2.2em -2.2em 0 0em rgba(128, 128, 128, 0.2);
864
  }
865
  87.5% {
866
  box-shadow: 0em -3em 0em 0em rgba(128, 128, 128, 0.2), 2.2em -2.2em 0 0em rgba(128, 128, 128, 0.2), 3em 0em 0 0em rgba(128, 128, 128, 0.2), 2.2em 2.2em 0 0em rgba(128, 128, 128, 0.2), 0em 3em 0 0em rgba(128, 128, 128, 0.2), -2.2em 2.2em 0 0em rgba(128, 128, 128, 0.5), -3em 0em 0 0em rgba(128, 128, 128, 0.7), -2.2em -2.2em 0 0em #808080;
867
  }
src/app/vocabulary-builder/vocabulary-builder.component.html CHANGED
@@ -1,23 +1,8 @@
1
  <div class="imgbgcontainter">
2
  <div class="vocabulary-builder-container">
3
 
4
- <!-- Header -->
5
- <div class="header-container">
6
- <div class="logo">
7
- <a (click)="goToHome()" routerLink="/home" class="brand-link">
8
- <img src="assets/images/pykara-logo.png" alt="Pykara Logo" />
9
- </a>
10
- <span class="product-name">Py-Learn</span>
11
- </div>
12
- <div class="header-title">
13
- <h1>Vocabulary Builder</h1>
14
- </div>
15
- <div class="home-btn">
16
- <a (click)="goToHome()" routerLink="/home">
17
- <img src="assets/images/home.png" alt="Home" class="home-icon" />
18
- </a>
19
- </div>
20
- </div>
21
 
22
  <!-- Background Image -->
23
  <img src="assets/images/grammar-bg.png" alt="Chat Background" class="grammar-bg" />
 
1
  <div class="imgbgcontainter">
2
  <div class="vocabulary-builder-container">
3
 
4
+ <app-header [title]="'Vocabulary Builder'"></app-header>
5
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6
 
7
  <!-- Background Image -->
8
  <img src="assets/images/grammar-bg.png" alt="Chat Background" class="grammar-bg" />
src/app/writing/writing.component.css CHANGED
@@ -1,72 +1,4 @@
1
 
2
- /*header container */
3
-
4
-
5
- .header-container {
6
- display: flex;
7
- justify-content: space-between;
8
- align-items: center;
9
- padding: 0vw 2vw;
10
- background-color: #009688;
11
- box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.2);
12
- width: 100%;
13
- position: fixed;
14
- top: 0;
15
- z-index: 1;
16
- }
17
-
18
- .logo img {
19
- max-width: 5vw;
20
- height: auto;
21
- background: #fff;
22
- border-radius: 1vw;
23
- margin: 0.5vw;
24
- }
25
-
26
- .header-title {
27
- text-align: center;
28
- flex: 1;
29
- }
30
-
31
- .header-title h1 {
32
- font-size: 3vw;
33
- color: #fff;
34
- margin: 0;
35
- position: absolute;
36
- top: 50%;
37
- left: 50%;
38
- transform: translate(-50%, -50%);
39
- }
40
-
41
- .home-btn img {
42
- width: 5vw;
43
- }
44
-
45
- .home-btn img:hover {
46
- transform: scale(1.1);
47
- }
48
-
49
- .imgbgcontainter {
50
- background-image: url(/assets/images/grammar-bg.png);
51
- background-size: auto;
52
- background-position: center;
53
- background-attachment: fixed;
54
- width: 100%;
55
- height: 100%;
56
- }
57
-
58
- .grammar-bg {
59
- position: absolute;
60
- top: 10%;
61
- left: 0;
62
- width: 100%;
63
- height: auto;
64
- max-height: calc(100vh - 100px);
65
- object-fit: fill;
66
- z-index: -1;
67
- opacity: 0.2;
68
- }
69
-
70
 
71
  body {
72
  margin: 0;
@@ -79,13 +11,13 @@ body {
79
 
80
  .main-container {
81
  width: 85%;
82
- margin: 18vh auto;
83
  border: 9px solid #009688;
84
  border-radius: 1.5vw;
85
  background: #ffffff;
86
  padding: 2vw;
87
  box-shadow: 0 0.4vw 1vw rgba(0, 0, 0, 0.1);
88
- height: 76vh;
89
  }
90
 
91
  /* Section Layouts */
 
1
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
 
3
  body {
4
  margin: 0;
 
11
 
12
  .main-container {
13
  width: 85%;
14
+ margin: 7vh auto;
15
  border: 9px solid #009688;
16
  border-radius: 1.5vw;
17
  background: #ffffff;
18
  padding: 2vw;
19
  box-shadow: 0 0.4vw 1vw rgba(0, 0, 0, 0.1);
20
+ height: 73vh;
21
  }
22
 
23
  /* Section Layouts */
src/app/writing/writing.component.html CHANGED
@@ -1,20 +1,6 @@
1
  <!-- Header container -->
2
- <div class="header-container">
3
- <div class="logo">
4
- <a (click)="goToHome()" routerLink="/home" class="brand-link">
5
- <img src="assets/images/pykara-logo.png" alt="Pykara Logo" />
6
- </a>
7
- <span class="product-name">Py-Learn</span>
8
- </div>
9
- <div class="header-title">
10
- <h1>Writing Exercise</h1>
11
- </div>
12
- <div class="home-btn">
13
- <a (click)="goToHome()" routerLink="/home">
14
- <img src="assets/images/home.png" alt="Home" class="home-icon" />
15
- </a>
16
- </div>
17
- </div>
18
 
19
  <!-- Background Image -->
20
  <img src="assets/images/grammar-bg.png" alt="Chat Background" class="grammar-bg" />
@@ -75,29 +61,29 @@
75
  </fieldset>
76
 
77
  <textarea [(ngModel)]="userAnswer" placeholder="Write your answer here..." (input)="checkWordCount()"></textarea>
78
- <!--<div class="submit-area">
79
- <button (click)="submitAnswer()" [disabled]="isSubmitDisabled || isSubmitInProgress">
80
- {{ isSubmitInProgress ? 'Submitting...' : 'Submit Writing' }}
81
- </button>
82
- <div *ngIf="isLoaderVisible" class="loader-overlay">
83
- <div class="loader"></div>
84
- </div>
85
- </div>-->
86
-
87
- <div class="submit-area with-blue-tooltip">
88
- <button (click)="submitAnswer()"
89
- [disabled]="isSubmitDisabled || isSubmitInProgress"
90
- [ngClass]="{ 'disabled-btn': isSubmitDisabled }">
91
- {{ isSubmitInProgress ? 'Submitting...' : 'Submit Writing' }}
92
- </button>
93
- <div *ngIf="isLoaderVisible" class="loader-overlay">
94
- <div class="loader"></div>
95
- </div>
96
 
97
- <div class="blue-tooltip" *ngIf="isSubmitDisabled">
98
- We need at least 10 words to enable the submit button.
 
99
  </div>
100
- </div>
101
 
102
 
103
  </div>
@@ -105,24 +91,24 @@
105
 
106
 
107
  <!-- Feedback Section -->
108
- <div class="feedback-section" *ngIf="showFeedback">
109
- <img src="assets/images/writing/back.png" alt="Go Back" class="back-icon" (click)="goBack('feedback')" />
110
 
111
- <div class="feedback-header">
112
- <img src="assets/images/writing/feedback.png" alt="Feedback Icon" />
113
- <h3>Suggestions for Improvement</h3>
114
- </div>
115
 
116
- <div class="feedback-box">
117
- <ul>
118
- <li *ngFor="let suggestion of feedbackList"> {{ suggestion }}</li>
119
- </ul>
120
- </div>
121
 
122
- <div class="try-again-button">
123
- <button (click)="resetForm()">🔄 Try Another</button>
 
124
  </div>
125
- </div>
126
 
127
 
128
 
 
1
  <!-- Header container -->
2
+ <app-header [title]="'Writing Exercise'"></app-header>
3
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
 
5
  <!-- Background Image -->
6
  <img src="assets/images/grammar-bg.png" alt="Chat Background" class="grammar-bg" />
 
61
  </fieldset>
62
 
63
  <textarea [(ngModel)]="userAnswer" placeholder="Write your answer here..." (input)="checkWordCount()"></textarea>
64
+ <!--<div class="submit-area">
65
+ <button (click)="submitAnswer()" [disabled]="isSubmitDisabled || isSubmitInProgress">
66
+ {{ isSubmitInProgress ? 'Submitting...' : 'Submit Writing' }}
67
+ </button>
68
+ <div *ngIf="isLoaderVisible" class="loader-overlay">
69
+ <div class="loader"></div>
70
+ </div>
71
+ </div>-->
72
+
73
+ <div class="submit-area with-blue-tooltip">
74
+ <button (click)="submitAnswer()"
75
+ [disabled]="isSubmitDisabled || isSubmitInProgress"
76
+ [ngClass]="{ 'disabled-btn': isSubmitDisabled }">
77
+ {{ isSubmitInProgress ? 'Submitting...' : 'Submit Writing' }}
78
+ </button>
79
+ <div *ngIf="isLoaderVisible" class="loader-overlay">
80
+ <div class="loader"></div>
81
+ </div>
82
 
83
+ <div class="blue-tooltip" *ngIf="isSubmitDisabled">
84
+ We need at least 10 words to enable the submit button.
85
+ </div>
86
  </div>
 
87
 
88
 
89
  </div>
 
91
 
92
 
93
  <!-- Feedback Section -->
94
+ <div class="feedback-section" *ngIf="showFeedback">
95
+ <img src="assets/images/writing/back.png" alt="Go Back" class="back-icon" (click)="goBack('feedback')" />
96
 
97
+ <div class="feedback-header">
98
+ <img src="assets/images/writing/feedback.png" alt="Feedback Icon" />
99
+ <h3>Suggestions for Improvement</h3>
100
+ </div>
101
 
102
+ <div class="feedback-box">
103
+ <ul>
104
+ <li *ngFor="let suggestion of feedbackList"> {{ suggestion }}</li>
105
+ </ul>
106
+ </div>
107
 
108
+ <div class="try-again-button">
109
+ <button (click)="resetForm()">🔄 Try Another</button>
110
+ </div>
111
  </div>
 
112
 
113
 
114