ShadowGard3n commited on
Commit
ca1ea49
·
1 Parent(s): 5d31d6a

Made responsive

Browse files
static/css/alternativesStyle.css CHANGED
@@ -1,5 +1,7 @@
 
 
 
1
  :root {
2
- /* Your new dark theme color palette */
3
  --bg-deep-dark: #0a192f;
4
  --bg-medium-dark: #172a46;
5
  --bg-light-dark: #2c3e50;
@@ -8,221 +10,395 @@
8
  --text-muted: #8892b0;
9
  --accent-primary: #64ffda;
10
  --accent-primary-darker: #52d3b4;
11
- --accent-primary-text: #0a192f; /* Dark text for bright buttons */
12
  --border-color: #304a6e;
13
  --card-shadow: 0 10px 30px -15px rgba(2, 12, 27, 0.7);
14
-
15
- /* Old variables for reference (now replaced) */
16
- /* --primary-color: #007bff; */
17
- /* --secondary-color: #6c757d; */
18
- /* --success-color: #28a745; */
19
- /* --background-light: #f8f9fa; */
20
- /* --text-dark: #343a40; */
21
- /* --white: #ffffff; */
22
  }
23
 
24
- body {
25
- font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
26
  margin: 0;
27
  padding: 0;
 
 
 
 
 
28
  background-color: var(--bg-deep-dark);
29
  color: var(--text-normal);
 
 
 
 
 
 
 
30
  }
31
 
32
- /* --- Header --- */
33
- header {
34
- background-color: var(--bg-medium-dark);
35
- color: var(--text-bright);
36
- padding: 1rem 0;
 
 
 
 
 
 
 
37
  border-bottom: 1px solid var(--border-color);
 
 
 
 
38
  }
39
- nav { display: flex; justify-content: space-between; align-items: center; max-width: 1200px; margin: 0 auto; padding: 0 20px; }
40
- .logo { font-size: 1.5rem; font-weight: bold; color: var(--accent-primary); }
41
- nav ul { list-style: none; display: flex; margin: 0; padding: 0; }
42
- nav ul li { margin-left: 20px; }
43
- nav ul li a {
44
- color: var(--text-bright);
45
- text-decoration: none;
46
- padding: 5px 10px;
47
- border-radius: 5px;
48
- transition: background-color 0.3s, color 0.3s;
49
- }
50
- nav ul li a:hover, nav ul li a.active {
51
- background-color: var(--accent-primary);
52
- color: var(--accent-primary-text);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
53
  }
54
 
55
- /* --- Main Layout --- */
56
- main { max-width: 1000px; margin: 40px auto; padding: 0 20px; }
 
 
 
 
 
 
57
 
58
  .hero {
59
  background-color: var(--bg-medium-dark);
60
- padding: 30px;
61
- border-radius: 10px;
62
  box-shadow: var(--card-shadow);
63
  text-align: center;
64
  border: 1px solid var(--border-color);
65
  }
66
 
 
 
 
 
 
 
67
  .hero p {
68
- color: var(--text-normal);
 
 
69
  }
70
 
71
- /* --- Two-Column Search --- */
72
  .search-container {
73
  display: flex;
74
- align-items: flex-start; /* Align to top */
75
  justify-content: center;
76
- margin-top: 30px;
77
- gap: 30px;
78
  }
79
 
80
  .search-form {
81
  flex: 1;
82
  background: var(--bg-light-dark);
83
- padding: 20px;
84
  border-radius: 8px;
85
  border: 1px solid var(--border-color);
 
 
 
 
 
 
 
 
 
 
86
  }
87
 
88
  .search-form h2 {
89
- font-size: 1.2rem;
90
  color: var(--accent-primary);
91
- margin-bottom: 15px;
92
  text-align: center;
93
  }
94
 
95
  .or-divider {
 
 
 
96
  font-weight: bold;
97
- color: var(--text-muted);
98
- font-size: 1.2rem;
99
  background: var(--bg-deep-dark);
100
- padding: 10px 15px;
 
101
  border-radius: 50%;
102
- border: 1px solid var(--border-color);
103
- align-self: center; /* Center it vertically */
 
 
104
  }
105
 
106
- /* --- Form Elements --- */
107
- .form-group { margin-bottom: 15px; }
108
- input[type="text"] {
109
- width: 100%;
110
- padding: 12px;
111
- border: 1px solid var(--border-color);
112
- border-radius: 6px;
113
- font-size: 16px;
114
- box-sizing: border-box;
 
 
 
 
 
 
115
  background-color: var(--bg-medium-dark);
116
  color: var(--text-bright);
 
117
  }
118
- input:focus {
119
- outline: none;
120
- border-color: var(--accent-primary);
121
- box-shadow: 0 0 0 2px rgba(100, 255, 218, 0.3);
122
- }
123
- button[type="submit"] {
124
- width: 100%;
125
- padding: 12px;
126
- background-color: var(--accent-primary);
127
- color: var(--accent-primary-text);
128
- border: none;
129
- border-radius: 6px;
130
- font-size: 16px;
131
- font-weight: bold;
132
- cursor: pointer;
133
- transition: background-color 0.3s;
134
- }
135
- button[type="submit"]:hover { background-color: var(--accent-primary-darker); }
136
-
137
- /* --- Autocomplete --- */
138
- .autocomplete-container { position: relative; }
139
- .suggestions-box {
140
- position: absolute;
141
- top: 100%;
142
- left: 0;
143
- right: 0;
144
- z-index: 10;
145
- background-color: var(--bg-light-dark);
146
- border: 1px solid var(--border-color);
147
- border-top: none;
148
- max-height: 200px;
149
- overflow-y: auto;
150
- border-radius: 0 0 6px 6px;
151
- display: none;
152
- box-shadow: var(--card-shadow);
153
- text-align: left;
154
- }
155
- .suggestion-item {
156
- padding: 10px 12px;
157
- cursor: pointer;
 
 
 
 
 
 
 
 
 
158
  transition: background-color 0.2s;
159
  color: var(--text-normal);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
160
  }
161
- .suggestion-item:hover { background-color: var(--bg-medium-dark); color: var(--text-bright); }
162
 
163
- /* --- Results Section --- */
164
- #results-section { margin-top: 40px; }
165
- .hidden { display: none !important; }
166
 
167
- #results-section h2, #results-section h3 {
168
  color: var(--text-bright);
 
 
 
 
169
  }
 
 
 
 
 
 
170
  #results-section h3 span {
171
  color: var(--accent-primary);
172
  font-style: italic;
173
  }
174
 
 
175
  #primary-drug-info {
176
- margin-bottom: 40px;
177
- padding: 20px;
178
  background: var(--bg-medium-dark);
179
- border-radius: 10px;
180
  border: 1px solid var(--border-color);
181
  }
182
 
183
  .drug-card {
184
  background-color: var(--bg-light-dark);
185
- padding: 20px;
186
  border-radius: 8px;
187
  box-shadow: var(--card-shadow);
188
  border: 1px solid var(--border-color);
189
  display: flex;
190
  flex-direction: column;
 
 
 
 
 
191
  }
192
 
193
  .drug-card.primary {
194
  border-left: 5px solid var(--accent-primary);
195
- margin-bottom: 20px;
196
  }
197
 
198
  .drug-name {
199
- font-size: 1.3rem;
200
  font-weight: bold;
201
  color: var(--accent-primary);
202
- margin-bottom: 10px;
 
203
  }
204
 
205
  .drug-card strong {
206
  color: var(--text-bright);
207
- margin-bottom: 5px;
 
208
  }
209
 
210
  .side-effects-list {
211
- margin: 0;
212
- padding-left: 20px;
213
- color: var(--text-muted);
214
  font-size: 0.95rem;
215
  }
216
 
217
  .side-effects-list li {
218
- margin-bottom: 5px;
219
  }
220
 
 
221
  .results-grid {
222
  display: grid;
223
- grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
224
- gap: 20px;
 
225
  }
226
 
227
- /* --- Footer --- */
228
- footer { text-align: center; padding: 20px; margin-top: 40px; color: var(--text-muted); }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* ===================================================================
2
+ 1. GLOBAL VARIABLES & RESET
3
+ ================================================================= */
4
  :root {
 
5
  --bg-deep-dark: #0a192f;
6
  --bg-medium-dark: #172a46;
7
  --bg-light-dark: #2c3e50;
 
10
  --text-muted: #8892b0;
11
  --accent-primary: #64ffda;
12
  --accent-primary-darker: #52d3b4;
13
+ --accent-primary-text: #0a192f;
14
  --border-color: #304a6e;
15
  --card-shadow: 0 10px 30px -15px rgba(2, 12, 27, 0.7);
 
 
 
 
 
 
 
 
16
  }
17
 
18
+ * {
 
19
  margin: 0;
20
  padding: 0;
21
+ box-sizing: border-box;
22
+ }
23
+
24
+ body {
25
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
26
  background-color: var(--bg-deep-dark);
27
  color: var(--text-normal);
28
+ line-height: 1.6;
29
+ font-size: 16px;
30
+ background-image: linear-gradient(rgba(10, 25, 47, 0.9), rgba(10, 25, 47, 0.9)),
31
+ url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 40 40"><path fill="%23172a46" fill-opacity="0.3" d="M0 0 H40 V40 H0 Z M20 0 V40 M0 20 H40"></path></svg>');
32
+ background-size: 40px 40px;
33
+ background-repeat: repeat;
34
+ overflow-x: hidden;
35
  }
36
 
37
+ a {
38
+ text-decoration: none;
39
+ color: inherit;
40
+ transition: color 0.3s;
41
+ }
42
+
43
+ /* ===================================================================
44
+ 2. HEADER & NAVIGATION (Responsive)
45
+ ================================================================= */
46
+ header {
47
+ background-color: rgba(10, 25, 47, 0.95);
48
+ padding: 1rem 5%;
49
  border-bottom: 1px solid var(--border-color);
50
+ position: sticky;
51
+ top: 0;
52
+ z-index: 1000;
53
+ backdrop-filter: blur(10px);
54
  }
55
+
56
+ nav {
57
+ display: flex;
58
+ justify-content: space-between;
59
+ align-items: center;
60
+ max-width: 1200px;
61
+ margin: 0 auto;
62
+ flex-wrap: wrap;
63
+ }
64
+
65
+ .logo {
66
+ font-size: 1.5rem;
67
+ font-weight: bold;
68
+ color: var(--accent-primary);
69
+ letter-spacing: 1px;
70
+ }
71
+
72
+ nav ul {
73
+ list-style: none;
74
+ display: flex;
75
+ gap: 1.5rem;
76
+ }
77
+
78
+ nav a {
79
+ color: var(--text-normal);
80
+ font-weight: 500;
81
+ padding: 0.5rem 0;
82
+ font-size: 0.95rem;
83
+ }
84
+
85
+ nav a:hover, nav a.active {
86
+ color: var(--accent-primary);
87
+ border-bottom: 2px solid var(--accent-primary);
88
  }
89
 
90
+ /* ===================================================================
91
+ 3. HERO & SEARCH LAYOUT
92
+ ================================================================= */
93
+ main {
94
+ max-width: 1100px;
95
+ margin: 2rem auto;
96
+ padding: 0 5%;
97
+ }
98
 
99
  .hero {
100
  background-color: var(--bg-medium-dark);
101
+ padding: 2.5rem;
102
+ border-radius: 12px;
103
  box-shadow: var(--card-shadow);
104
  text-align: center;
105
  border: 1px solid var(--border-color);
106
  }
107
 
108
+ .hero h1 {
109
+ color: var(--text-bright);
110
+ margin-bottom: 0.5rem;
111
+ font-size: 2rem;
112
+ }
113
+
114
  .hero p {
115
+ color: var(--text-muted);
116
+ font-size: 1.1rem;
117
+ margin-bottom: 2rem;
118
  }
119
 
120
+ /* --- The Search Container (Flexbox) --- */
121
  .search-container {
122
  display: flex;
123
+ align-items: stretch; /* Make both boxes same height */
124
  justify-content: center;
125
+ margin-top: 2rem;
126
+ gap: 20px;
127
  }
128
 
129
  .search-form {
130
  flex: 1;
131
  background: var(--bg-light-dark);
132
+ padding: 2rem;
133
  border-radius: 8px;
134
  border: 1px solid var(--border-color);
135
+ display: flex;
136
+ flex-direction: column;
137
+ justify-content: center;
138
+ transition: transform 0.2s, box-shadow 0.2s;
139
+ }
140
+
141
+ .search-form:hover {
142
+ transform: translateY(-5px);
143
+ box-shadow: 0 5px 15px rgba(0,0,0,0.3);
144
+ border-color: var(--accent-primary);
145
  }
146
 
147
  .search-form h2 {
148
+ font-size: 1.25rem;
149
  color: var(--accent-primary);
150
+ margin-bottom: 1.5rem;
151
  text-align: center;
152
  }
153
 
154
  .or-divider {
155
+ display: flex;
156
+ align-items: center;
157
+ justify-content: center;
158
  font-weight: bold;
159
+ color: var(--text-bright);
160
+ font-size: 1.1rem;
161
  background: var(--bg-deep-dark);
162
+ width: 50px;
163
+ height: 50px;
164
  border-radius: 50%;
165
+ border: 2px solid var(--border-color);
166
+ align-self: center;
167
+ flex-shrink: 0; /* Prevent shrinking */
168
+ z-index: 2;
169
  }
170
 
171
+ /* ===================================================================
172
+ 4. FORM ELEMENTS
173
+ ================================================================= */
174
+ .form-group {
175
+ margin-bottom: 1.5rem;
176
+ width: 100%;
177
+ position: relative;
178
+ }
179
+
180
+ input[type="text"] {
181
+ width: 100%;
182
+ padding: 1rem;
183
+ border: 1px solid var(--border-color);
184
+ border-radius: 6px;
185
+ font-size: 1rem;
186
  background-color: var(--bg-medium-dark);
187
  color: var(--text-bright);
188
+ transition: border-color 0.3s;
189
  }
190
+
191
+ input:focus {
192
+ outline: none;
193
+ border-color: var(--accent-primary);
194
+ box-shadow: 0 0 0 2px rgba(100, 255, 218, 0.1);
195
+ }
196
+
197
+ button[type="submit"] {
198
+ width: 100%;
199
+ padding: 1rem;
200
+ background-color: var(--accent-primary);
201
+ color: var(--accent-primary-text);
202
+ border: none;
203
+ border-radius: 6px;
204
+ font-size: 1rem;
205
+ font-weight: bold;
206
+ cursor: pointer;
207
+ transition: background-color 0.3s;
208
+ }
209
+
210
+ button[type="submit"]:hover {
211
+ background-color: var(--accent-primary-darker);
212
+ }
213
+
214
+ /* --- Autocomplete Dropdown --- */
215
+ .autocomplete-container {
216
+ position: relative;
217
+ }
218
+
219
+ .suggestions-box {
220
+ position: absolute;
221
+ top: 100%;
222
+ left: 0;
223
+ right: 0;
224
+ z-index: 100;
225
+ background-color: var(--bg-light-dark);
226
+ border: 1px solid var(--accent-primary);
227
+ border-top: none;
228
+ max-height: 200px;
229
+ overflow-y: auto;
230
+ border-radius: 0 0 6px 6px;
231
+ display: none;
232
+ box-shadow: 0 10px 20px rgba(0,0,0,0.5);
233
+ text-align: left;
234
+ }
235
+
236
+ .suggestion-item {
237
+ padding: 12px 15px;
238
+ cursor: pointer;
239
  transition: background-color 0.2s;
240
  color: var(--text-normal);
241
+ border-bottom: 1px solid var(--border-color);
242
+ }
243
+
244
+ .suggestion-item:last-child { border-bottom: none; }
245
+
246
+ .suggestion-item:hover {
247
+ background-color: var(--bg-medium-dark);
248
+ color: var(--accent-primary);
249
+ }
250
+
251
+ /* ===================================================================
252
+ 5. RESULTS SECTION
253
+ ================================================================= */
254
+ #results-section {
255
+ margin-top: 3rem;
256
  }
 
257
 
258
+ .hidden {
259
+ display: none !important;
260
+ }
261
 
262
+ #results-section h2 {
263
  color: var(--text-bright);
264
+ margin-bottom: 1.5rem;
265
+ font-size: 1.5rem;
266
+ border-left: 4px solid var(--accent-primary);
267
+ padding-left: 1rem;
268
  }
269
+
270
+ #results-section h3 {
271
+ color: var(--text-normal);
272
+ margin: 2rem 0 1rem 0;
273
+ }
274
+
275
  #results-section h3 span {
276
  color: var(--accent-primary);
277
  font-style: italic;
278
  }
279
 
280
+ /* Primary Drug Card */
281
  #primary-drug-info {
282
+ margin-bottom: 3rem;
283
+ padding: 2rem;
284
  background: var(--bg-medium-dark);
285
+ border-radius: 12px;
286
  border: 1px solid var(--border-color);
287
  }
288
 
289
  .drug-card {
290
  background-color: var(--bg-light-dark);
291
+ padding: 1.5rem;
292
  border-radius: 8px;
293
  box-shadow: var(--card-shadow);
294
  border: 1px solid var(--border-color);
295
  display: flex;
296
  flex-direction: column;
297
+ transition: transform 0.2s;
298
+ }
299
+
300
+ .drug-card:hover {
301
+ border-color: var(--accent-primary);
302
  }
303
 
304
  .drug-card.primary {
305
  border-left: 5px solid var(--accent-primary);
 
306
  }
307
 
308
  .drug-name {
309
+ font-size: 1.4rem;
310
  font-weight: bold;
311
  color: var(--accent-primary);
312
+ margin-bottom: 1rem;
313
+ display: block;
314
  }
315
 
316
  .drug-card strong {
317
  color: var(--text-bright);
318
+ display: block;
319
+ margin-top: 0.5rem;
320
  }
321
 
322
  .side-effects-list {
323
+ margin-top: 0.5rem;
324
+ padding-left: 1.2rem;
325
+ color: var(--text-normal);
326
  font-size: 0.95rem;
327
  }
328
 
329
  .side-effects-list li {
330
+ margin-bottom: 0.25rem;
331
  }
332
 
333
+ /* Alternatives Grid */
334
  .results-grid {
335
  display: grid;
336
+ /* Responsive Grid Logic */
337
+ grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
338
+ gap: 1.5rem;
339
  }
340
 
341
+ /* ===================================================================
342
+ 6. RESPONSIVE MEDIA QUERIES
343
+ ================================================================= */
344
+
345
+ /* Tablet & Mobile Navigation */
346
+ @media (max-width: 900px) {
347
+ header { padding: 1rem; }
348
+
349
+ nav {
350
+ flex-direction: column;
351
+ gap: 1rem;
352
+ }
353
+
354
+ nav ul {
355
+ flex-wrap: wrap;
356
+ justify-content: center;
357
+ width: 100%;
358
+ gap: 1rem;
359
+ }
360
+ }
361
+
362
+ /* Mobile Layout */
363
+ @media (max-width: 768px) {
364
+ .hero {
365
+ padding: 1.5rem;
366
+ }
367
+
368
+ .hero h1 { font-size: 1.75rem; }
369
+
370
+ /* Stack the search forms */
371
+ .search-container {
372
+ flex-direction: column;
373
+ gap: 1rem;
374
+ align-items: stretch;
375
+ }
376
+
377
+ .or-divider {
378
+ margin: 0.5rem auto; /* Center horizontally */
379
+ transform: scale(0.8); /* Slightly smaller on mobile */
380
+ }
381
+
382
+ .search-form {
383
+ width: 100%;
384
+ padding: 1.5rem;
385
+ }
386
+
387
+ /* Adjust Grid for smaller phones */
388
+ .results-grid {
389
+ grid-template-columns: 1fr; /* Single column on phones */
390
+ }
391
+ }
392
+
393
+ /* ===================================================================
394
+ 7. FOOTER
395
+ ================================================================= */
396
+ footer {
397
+ text-align: center;
398
+ padding: 2rem 5%;
399
+ margin-top: 4rem;
400
+ background-color: var(--bg-medium-dark);
401
+ color: var(--text-muted);
402
+ font-size: 0.9rem;
403
+ border-top: 1px solid var(--border-color);
404
+ }
static/css/assistantStyle.css CHANGED
@@ -1,22 +1,22 @@
1
- /* --- 1. GLOBAL STYLES & THEME VARIABLES --- */
2
-
 
3
  :root {
4
- --bg-primary: #0a192f;
5
- --bg-secondary: #172a46;
6
- --text-primary: #ccd6f6;
7
- --text-secondary: #bdc3c7;
 
8
  --text-muted: #8892b0;
9
  --accent-primary: #64ffda;
10
  --accent-primary-darker: #52d3b4;
11
- --accent-primary-text: #0a192f; /* Dark text for bright buttons */
12
  --border-color: #304a6e;
 
13
  --card-shadow: 0 10px 30px -15px rgba(2, 12, 27, 0.7);
14
-
15
- /* Transitions */
16
- --theme-transition: background-color 0.3s ease, color 0.3s ease, border-color 0.3s ease;
17
  }
18
 
19
- /* 1.2 Global Resets & Body */
20
  * {
21
  box-sizing: border-box;
22
  margin: 0;
@@ -24,56 +24,89 @@
24
  }
25
 
26
  body {
27
- font-family: 'Inter', sans-serif;
28
- background-color: var(--bg-primary);
29
- color: var(--text-secondary);
30
  line-height: 1.6;
31
- transition: var(--theme-transition);
 
 
 
32
  }
33
 
34
- /* --- Header --- */
35
- header {
36
- background-color: var(--bg-medium-dark);
37
- color: var(--text-bright);
38
- padding: 1rem 0;
 
 
 
39
  border-bottom: 1px solid var(--border-color);
 
 
 
 
40
  }
41
- nav { display: flex; justify-content: space-between; align-items: center; max-width: 1200px; margin: 0 auto; padding: 0 20px; }
42
- .logo { font-size: 1.5rem; font-weight: bold; color: var(--accent-primary); }
43
- nav ul { list-style: none; display: flex; margin: 0; padding: 0; }
44
- nav ul li { margin-left: 20px; }
45
- nav ul li a {
46
- color: var(--text-bright);
47
- text-decoration: none;
48
- padding: 5px 10px;
49
- border-radius: 5px;
50
- transition: background-color 0.3s, color 0.3s;
51
- }
52
- nav ul li a:hover, nav ul li a.active {
53
- background-color: var(--accent-primary);
54
- color: var(--accent-primary-text);
 
55
  }
56
- /* --- 3. (Dark Mode Toggle styles removed) --- */
57
 
58
- /* --- 4. MAIN CONTENT & LAYOUT --- */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
59
  main {
60
- max-width: 1200px;
61
  margin: 2rem auto;
62
- padding: 0 1rem;
63
  }
64
 
65
  .card {
66
- background-color: var(--bg-secondary);
67
  border-radius: 12px;
68
  padding: 1.5rem;
69
  margin-bottom: 1.5rem;
70
  box-shadow: var(--card-shadow);
71
  border: 1px solid var(--border-color);
72
- transition: var(--theme-transition), box-shadow 0.3s ease;
73
  }
74
 
75
  .card h3 {
76
- color: var(--text-primary);
77
  margin-top: 0;
78
  margin-bottom: 1rem;
79
  padding-bottom: 0.75rem;
@@ -81,82 +114,129 @@ main {
81
  display: flex;
82
  align-items: center;
83
  font-size: 1.2rem;
 
84
  }
85
 
86
  .card h3 i {
87
  margin-right: 0.75rem;
88
- color: var(--accent-primary);
 
 
 
 
 
 
 
 
 
 
 
 
 
89
  }
90
 
91
  .card-content {
92
- color: var(--text-secondary);
93
- min-height: 50px;
94
  line-height: 1.7;
 
95
  }
96
 
97
- /* --- 5. INSIGHT GRID --- */
 
 
98
  .insight-grid {
99
  display: grid;
100
- grid-template-columns: 1fr 1fr;
101
  gap: 1.5rem;
 
102
  }
103
 
104
- #diagnosisOutput,
105
- #questionsOutput {
106
- font-style: italic;
107
- color: var(--text-muted);
108
- font-size: 0.95rem;
109
  }
110
 
111
- /* --- 6. CONVERSATION SECTION --- */
 
 
112
  .conversation-log {
113
- height: 300px;
114
  overflow-y: auto;
115
  border: 1px solid var(--border-color);
116
  border-radius: 8px;
117
  padding: 1rem;
118
  margin-bottom: 1.5rem;
119
- background-color: var(--bg-primary); /* Slightly different background */
120
- transition: var(--theme-transition);
121
  }
122
 
123
  .log-entry {
124
  margin-bottom: 0.75rem;
125
- padding: 0.5rem 1rem;
126
  border-radius: 8px;
127
  line-height: 1.5;
 
 
128
  }
129
 
130
  .log-entry.patient {
131
- background-color: #2c3e50; /* bg-light-dark */
132
- border: 1px solid var(--border-color);
133
- color: var(--text-secondary);
 
 
 
 
 
 
 
134
  }
135
 
136
- /* --- 7. CONTROLS, BUTTONS & STATUS --- */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
137
  .controls {
138
  display: flex;
139
  justify-content: space-between;
140
  align-items: center;
141
  margin-top: 1rem;
 
 
 
 
142
  }
143
 
144
  .status-indicator {
145
  display: flex;
146
  align-items: center;
 
147
  }
148
 
149
  #micStatus {
150
- width: 12px;
151
- height: 12px;
152
  border-radius: 50%;
153
  background-color: var(--text-muted);
154
- margin-right: 0.75rem;
155
  transition: background-color 0.3s ease;
156
  }
157
 
158
  #micStatus.active {
159
  background-color: var(--accent-primary);
 
160
  }
161
 
162
  /* Pulse Animation */
@@ -165,20 +245,17 @@ main {
165
  }
166
 
167
  @keyframes pulse {
168
- 0% {
169
- box-shadow: 0 0 0 0 rgba(100, 255, 218, 0.4);
170
- }
171
- 70% {
172
- box-shadow: 0 0 0 10px rgba(100, 255, 218, 0);
173
- }
174
- 100% {
175
- box-shadow: 0 0 0 0 rgba(100, 255, 218, 0);
176
- }
177
  }
178
 
179
  #statusText {
180
- color: var(--text-muted);
181
- font-weight: 500;
 
 
 
182
  }
183
 
184
  .btn-group {
@@ -189,19 +266,16 @@ main {
189
  .btn {
190
  padding: 0.75rem 1.5rem;
191
  border: none;
192
- border-radius: 8px;
193
  cursor: pointer;
194
  font-weight: 600;
195
  font-size: 0.95rem;
196
- font-family: 'Inter', sans-serif;
197
- transition: background-color 0.2s ease, transform 0.1s ease;
198
  display: flex;
199
  align-items: center;
 
200
  gap: 0.5rem;
201
- }
202
-
203
- .btn:active {
204
- transform: scale(0.98);
205
  }
206
 
207
  .btn-restart {
@@ -211,58 +285,72 @@ main {
211
 
212
  .btn-restart:hover {
213
  background-color: var(--accent-primary-darker);
 
214
  }
215
 
216
  .btn-finish {
217
- background-color: var(--bg-primary);
218
- color: var(--text-secondary);
219
- border: 1px solid var(--border-color);
220
  }
221
 
222
  .btn-finish:hover {
223
- background-color: var(--border-color);
224
- color: var(--text-primary);
225
  }
226
 
227
- /* --- 8. RESPONSIVENESS (Mobile) --- */
 
 
 
 
228
  @media (max-width: 900px) {
 
229
  .insight-grid {
230
  grid-template-columns: 1fr;
231
  }
 
232
 
 
 
233
  header {
234
  padding: 1rem;
235
  }
236
 
 
 
 
 
 
237
  nav ul {
238
- display: none; /* Simple responsive behavior */
 
 
239
  }
240
- }
241
 
242
- @media (max-width: 600px) {
243
- body {
244
- font-size: 14px;
245
  }
246
 
247
  main {
248
- padding: 0 0.5rem;
249
- margin: 1rem auto;
250
- }
251
-
252
- header {
253
- flex-direction: column;
254
- gap: 1rem;
255
  }
256
 
257
- nav {
258
- width: 100%;
259
- justify-content: space-between;
260
  }
261
 
 
262
  .controls {
263
  flex-direction: column;
264
- align-items: stretch;
265
- gap: 1.5rem;
 
 
 
 
 
 
266
  }
267
 
268
  .btn-group {
@@ -271,18 +359,13 @@ main {
271
  }
272
 
273
  .btn {
274
- justify-content: center;
 
275
  }
276
- }
277
-
278
-
279
- /* Small addition for the live indicator */
280
- .live-indicator {
281
- font-size: 0.8rem;
282
- color: #2ecc71;
283
- margin-left: 10px;
284
- display: none; /* Hidden by default */
285
- }
286
- .live-indicator.active {
287
- display: inline-block;
288
- }
 
1
+ /* ===================================================================
2
+ 1. GLOBAL VARIABLES & RESET
3
+ ================================================================= */
4
  :root {
5
+ --bg-deep-dark: #0a192f;
6
+ --bg-medium-dark: #172a46;
7
+ --bg-light-dark: #2c3e50;
8
+ --text-bright: #ccd6f6;
9
+ --text-normal: #bdc3c7;
10
  --text-muted: #8892b0;
11
  --accent-primary: #64ffda;
12
  --accent-primary-darker: #52d3b4;
13
+ --accent-primary-text: #0a192f;
14
  --border-color: #304a6e;
15
+ --success-color: #2ecc71;
16
  --card-shadow: 0 10px 30px -15px rgba(2, 12, 27, 0.7);
17
+ --theme-transition: background-color 0.3s ease, color 0.3s ease;
 
 
18
  }
19
 
 
20
  * {
21
  box-sizing: border-box;
22
  margin: 0;
 
24
  }
25
 
26
  body {
27
+ font-family: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
28
+ background-color: var(--bg-deep-dark);
29
+ color: var(--text-normal);
30
  line-height: 1.6;
31
+ font-size: 16px;
32
+ background-image: linear-gradient(rgba(10, 25, 47, 0.9), rgba(10, 25, 47, 0.9)),
33
+ url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 40 40"><path fill="%23172a46" fill-opacity="0.3" d="M0 0 H40 V40 H0 Z M20 0 V40 M0 20 H40"></path></svg>');
34
+ background-size: 40px 40px;
35
  }
36
 
37
+ a { text-decoration: none; color: inherit; }
38
+
39
+ /* ===================================================================
40
+ 2. HEADER & NAVIGATION (Responsive)
41
+ ================================================================= */
42
+ header {
43
+ background-color: rgba(10, 25, 47, 0.95);
44
+ padding: 1rem 5%;
45
  border-bottom: 1px solid var(--border-color);
46
+ position: sticky;
47
+ top: 0;
48
+ z-index: 1000;
49
+ backdrop-filter: blur(10px);
50
  }
51
+
52
+ nav {
53
+ display: flex;
54
+ justify-content: space-between;
55
+ align-items: center;
56
+ max-width: 1200px;
57
+ margin: 0 auto;
58
+ flex-wrap: wrap;
59
+ }
60
+
61
+ .logo {
62
+ font-size: 1.5rem;
63
+ font-weight: bold;
64
+ color: var(--accent-primary);
65
+ letter-spacing: 1px;
66
  }
 
67
 
68
+ nav ul {
69
+ list-style: none;
70
+ display: flex;
71
+ gap: 1.5rem;
72
+ margin: 0;
73
+ padding: 0;
74
+ }
75
+
76
+ nav a {
77
+ color: var(--text-normal);
78
+ font-weight: 500;
79
+ transition: color 0.3s;
80
+ padding: 0.5rem 0;
81
+ font-size: 0.95rem;
82
+ }
83
+
84
+ nav a:hover, nav a.active {
85
+ color: var(--accent-primary);
86
+ border-bottom: 2px solid var(--accent-primary);
87
+ }
88
+
89
+ /* ===================================================================
90
+ 3. MAIN LAYOUT
91
+ ================================================================= */
92
  main {
93
+ max-width: 1100px;
94
  margin: 2rem auto;
95
+ padding: 0 5%;
96
  }
97
 
98
  .card {
99
+ background-color: var(--bg-medium-dark);
100
  border-radius: 12px;
101
  padding: 1.5rem;
102
  margin-bottom: 1.5rem;
103
  box-shadow: var(--card-shadow);
104
  border: 1px solid var(--border-color);
105
+ transition: transform 0.2s ease;
106
  }
107
 
108
  .card h3 {
109
+ color: var(--accent-primary);
110
  margin-top: 0;
111
  margin-bottom: 1rem;
112
  padding-bottom: 0.75rem;
 
114
  display: flex;
115
  align-items: center;
116
  font-size: 1.2rem;
117
+ flex-wrap: wrap; /* Allows live indicator to wrap if needed */
118
  }
119
 
120
  .card h3 i {
121
  margin-right: 0.75rem;
122
+ }
123
+
124
+ /* Live Indicator (Green Bolt) */
125
+ .live-indicator {
126
+ font-size: 0.8rem;
127
+ color: var(--success-color);
128
+ margin-left: auto; /* Pushes to the right */
129
+ background: rgba(46, 204, 113, 0.1);
130
+ padding: 2px 8px;
131
+ border-radius: 12px;
132
+ border: 1px solid var(--success-color);
133
+ display: inline-flex;
134
+ align-items: center;
135
+ gap: 5px;
136
  }
137
 
138
  .card-content {
139
+ color: var(--text-bright);
140
+ min-height: 60px;
141
  line-height: 1.7;
142
+ font-size: 0.95rem;
143
  }
144
 
145
+ /* ===================================================================
146
+ 4. INSIGHT GRID (Diagnosis & Questions)
147
+ ================================================================= */
148
  .insight-grid {
149
  display: grid;
150
+ grid-template-columns: 1fr 1fr; /* Two equal columns */
151
  gap: 1.5rem;
152
+ margin-bottom: 1.5rem;
153
  }
154
 
155
+ /* Text styling for LLM output */
156
+ #diagnosisOutput strong, #questionsOutput strong {
157
+ color: var(--accent-primary);
158
+ font-weight: 600;
 
159
  }
160
 
161
+ /* ===================================================================
162
+ 5. CONVERSATION LOG
163
+ ================================================================= */
164
  .conversation-log {
165
+ height: 350px;
166
  overflow-y: auto;
167
  border: 1px solid var(--border-color);
168
  border-radius: 8px;
169
  padding: 1rem;
170
  margin-bottom: 1.5rem;
171
+ background-color: var(--bg-deep-dark); /* Darker inner well */
172
+ scroll-behavior: smooth;
173
  }
174
 
175
  .log-entry {
176
  margin-bottom: 0.75rem;
177
+ padding: 0.75rem 1rem;
178
  border-radius: 8px;
179
  line-height: 1.5;
180
+ font-size: 0.95rem;
181
+ word-wrap: break-word; /* Prevent long words breaking layout */
182
  }
183
 
184
  .log-entry.patient {
185
+ background-color: var(--bg-light-dark);
186
+ border-left: 3px solid var(--accent-primary);
187
+ color: var(--text-bright);
188
+ }
189
+
190
+ .log-entry strong {
191
+ color: var(--accent-primary);
192
+ font-size: 0.85rem;
193
+ display: block;
194
+ margin-bottom: 0.25rem;
195
  }
196
 
197
+ /* Scrollbar styling */
198
+ .conversation-log::-webkit-scrollbar {
199
+ width: 8px;
200
+ }
201
+ .conversation-log::-webkit-scrollbar-track {
202
+ background: var(--bg-deep-dark);
203
+ }
204
+ .conversation-log::-webkit-scrollbar-thumb {
205
+ background: var(--border-color);
206
+ border-radius: 4px;
207
+ }
208
+
209
+ /* ===================================================================
210
+ 6. CONTROLS AREA
211
+ ================================================================= */
212
  .controls {
213
  display: flex;
214
  justify-content: space-between;
215
  align-items: center;
216
  margin-top: 1rem;
217
+ background-color: var(--bg-light-dark);
218
+ padding: 1rem;
219
+ border-radius: 8px;
220
+ border: 1px solid var(--border-color);
221
  }
222
 
223
  .status-indicator {
224
  display: flex;
225
  align-items: center;
226
+ gap: 10px;
227
  }
228
 
229
  #micStatus {
230
+ width: 14px;
231
+ height: 14px;
232
  border-radius: 50%;
233
  background-color: var(--text-muted);
 
234
  transition: background-color 0.3s ease;
235
  }
236
 
237
  #micStatus.active {
238
  background-color: var(--accent-primary);
239
+ box-shadow: 0 0 10px var(--accent-primary);
240
  }
241
 
242
  /* Pulse Animation */
 
245
  }
246
 
247
  @keyframes pulse {
248
+ 0% { box-shadow: 0 0 0 0 rgba(100, 255, 218, 0.4); }
249
+ 70% { box-shadow: 0 0 0 10px rgba(100, 255, 218, 0); }
250
+ 100% { box-shadow: 0 0 0 0 rgba(100, 255, 218, 0); }
 
 
 
 
 
 
251
  }
252
 
253
  #statusText {
254
+ color: var(--text-bright);
255
+ font-weight: 600;
256
+ font-size: 0.9rem;
257
+ text-transform: uppercase;
258
+ letter-spacing: 0.5px;
259
  }
260
 
261
  .btn-group {
 
266
  .btn {
267
  padding: 0.75rem 1.5rem;
268
  border: none;
269
+ border-radius: 6px;
270
  cursor: pointer;
271
  font-weight: 600;
272
  font-size: 0.95rem;
273
+ transition: all 0.2s ease;
 
274
  display: flex;
275
  align-items: center;
276
+ justify-content: center;
277
  gap: 0.5rem;
278
+ min-width: 100px;
 
 
 
279
  }
280
 
281
  .btn-restart {
 
285
 
286
  .btn-restart:hover {
287
  background-color: var(--accent-primary-darker);
288
+ transform: translateY(-2px);
289
  }
290
 
291
  .btn-finish {
292
+ background-color: transparent;
293
+ color: #ff5555; /* Red warning color for stop */
294
+ border: 1px solid #ff5555;
295
  }
296
 
297
  .btn-finish:hover {
298
+ background-color: #ff5555;
299
+ color: white;
300
  }
301
 
302
+ /* ===================================================================
303
+ 7. RESPONSIVE MEDIA QUERIES
304
+ ================================================================= */
305
+
306
+ /* Tablets and Mobile Devices */
307
  @media (max-width: 900px) {
308
+ /* Collapse the side-by-side grid */
309
  .insight-grid {
310
  grid-template-columns: 1fr;
311
  }
312
+ }
313
 
314
+ /* Mobile Phones specifically */
315
+ @media (max-width: 768px) {
316
  header {
317
  padding: 1rem;
318
  }
319
 
320
+ nav {
321
+ flex-direction: column;
322
+ gap: 1rem;
323
+ }
324
+
325
  nav ul {
326
+ flex-wrap: wrap;
327
+ justify-content: center;
328
+ gap: 1rem;
329
  }
 
330
 
331
+ nav a {
332
+ font-size: 0.9rem;
 
333
  }
334
 
335
  main {
336
+ padding: 0 1rem;
 
 
 
 
 
 
337
  }
338
 
339
+ .card {
340
+ padding: 1.25rem;
 
341
  }
342
 
343
+ /* Stack controls vertically on mobile */
344
  .controls {
345
  flex-direction: column;
346
+ align-items: stretch; /* Make children full width */
347
+ gap: 1.25rem;
348
+ }
349
+
350
+ .status-indicator {
351
+ justify-content: center;
352
+ padding-bottom: 0.5rem;
353
+ border-bottom: 1px solid rgba(255,255,255,0.1);
354
  }
355
 
356
  .btn-group {
 
359
  }
360
 
361
  .btn {
362
+ width: 100%; /* Full width buttons for easy tapping */
363
+ padding: 1rem; /* Larger touch target */
364
  }
365
+
366
+ .live-indicator {
367
+ margin-left: 0;
368
+ margin-top: 5px;
369
+ width: 100%; /* Optional: make it block level */
370
+ }
371
+ }
 
 
 
 
 
 
static/css/chatStyle.css CHANGED
@@ -1,3 +1,6 @@
 
 
 
1
  :root {
2
  --bg-deep-dark: #0a192f;
3
  --bg-medium-dark: #172a46;
@@ -12,51 +15,83 @@
12
  --card-shadow: 0 10px 30px -15px rgba(2, 12, 27, 0.7);
13
  }
14
 
15
- body {
16
- font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
17
  margin: 0;
18
  padding: 0;
 
 
 
 
 
19
  background-color: var(--bg-deep-dark);
20
  color: var(--text-normal);
21
- height: 100vh;
 
 
22
  display: flex;
23
  flex-direction: column;
 
24
  }
25
 
26
- /* --- Header (Same as others for consistency) --- */
27
- header {
28
- background-color: var(--bg-medium-dark);
29
- padding: 1rem 0;
 
 
 
 
30
  border-bottom: 1px solid var(--border-color);
31
- flex-shrink: 0; /* Don't shrink header */
32
- }
33
- nav { display: flex; justify-content: space-between; align-items: center; max-width: 1200px; margin: 0 auto; padding: 0 20px; }
34
- .logo { font-size: 1.5rem; font-weight: bold; color: var(--accent-primary); }
35
- nav ul { list-style: none; display: flex; margin: 0; padding: 0; }
36
- nav ul li { margin-left: 20px; }
37
- nav ul li a {
38
- color: var(--text-bright);
39
- text-decoration: none;
40
- padding: 5px 10px;
41
- border-radius: 5px;
42
- transition: background-color 0.3s, color 0.3s;
43
- }
44
- nav ul li a:hover, nav ul li a.active {
45
- background-color: var(--accent-primary);
46
- color: var(--accent-primary-text);
47
  }
48
 
49
- /* --- Main Chat Layout --- */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
50
  main {
51
- flex-grow: 1;
52
  display: flex;
53
  flex-direction: column;
54
- max-width: 900px;
55
- margin: 20px auto;
56
  width: 100%;
57
- padding: 0 20px;
58
- box-sizing: border-box;
59
- height: calc(100vh - 140px); /* Approximate height minus header/margins */
 
60
  }
61
 
62
  .chat-container {
@@ -66,30 +101,33 @@ main {
66
  border: 1px solid var(--border-color);
67
  display: flex;
68
  flex-direction: column;
69
- height: 100%;
70
  overflow: hidden;
 
71
  }
72
 
 
73
  .chat-header {
74
- padding: 20px;
75
  background-color: var(--bg-light-dark);
76
  border-bottom: 1px solid var(--border-color);
77
  text-align: center;
 
78
  }
79
 
80
  .chat-header h1 {
81
  margin: 0;
82
- font-size: 1.5rem;
83
  color: var(--accent-primary);
84
  }
85
 
86
  .chat-header p {
87
  margin: 5px 0 0;
88
  color: var(--text-muted);
89
- font-size: 0.9rem;
90
  }
91
 
92
- /* --- Chat Window (Messages Area) --- */
93
  .chat-window {
94
  flex-grow: 1;
95
  padding: 20px;
@@ -98,15 +136,30 @@ main {
98
  flex-direction: column;
99
  gap: 15px;
100
  scroll-behavior: smooth;
 
 
 
 
 
 
 
 
 
 
 
 
 
101
  }
102
 
 
103
  .message {
104
  max-width: 80%;
105
  padding: 12px 16px;
106
  border-radius: 18px;
107
- line-height: 1.4;
108
  word-wrap: break-word;
109
  animation: fadeIn 0.3s ease-in;
 
110
  }
111
 
112
  @keyframes fadeIn {
@@ -118,26 +171,17 @@ main {
118
  align-self: flex-start;
119
  background-color: var(--bg-light-dark);
120
  color: var(--text-bright);
121
- border-bottom-left-radius: 4px;
 
122
  }
123
 
124
  .user-message {
125
  align-self: flex-end;
126
  background-color: var(--accent-primary);
127
  color: var(--accent-primary-text);
128
- border-bottom-right-radius: 4px;
129
  font-weight: 500;
130
- }
131
-
132
- .typing-indicator {
133
- padding: 10px 16px;
134
- background-color: var(--bg-light-dark);
135
- color: var(--text-muted);
136
- align-self: flex-start;
137
- border-radius: 18px;
138
- border-bottom-left-radius: 4px;
139
- font-style: italic;
140
- font-size: 0.9rem;
141
  }
142
 
143
  /* --- Input Area --- */
@@ -147,6 +191,7 @@ main {
147
  background-color: var(--bg-light-dark);
148
  border-top: 1px solid var(--border-color);
149
  gap: 10px;
 
150
  }
151
 
152
  #user-input {
@@ -156,7 +201,8 @@ main {
156
  border-radius: 25px;
157
  background-color: var(--bg-deep-dark);
158
  color: var(--text-bright);
159
- font-size: 1rem;
 
160
  }
161
 
162
  #user-input:focus {
@@ -176,6 +222,7 @@ main {
176
  align-items: center;
177
  justify-content: center;
178
  transition: transform 0.2s, background-color 0.2s;
 
179
  }
180
 
181
  .chat-input-area button:hover {
@@ -184,40 +231,99 @@ main {
184
  }
185
 
186
  .chat-input-area button svg {
187
- width: 24px;
188
- height: 24px;
189
  }
190
 
191
-
192
-
193
- /* --- Chat Message Content Styling --- */
194
-
195
- /* Ensure list markers are visible */
196
  .bot-message ul, .bot-message ol {
197
- margin-top: 8px !important;
198
- margin-bottom: 8px !important;
199
- padding-left: 25px !important;
200
- list-style-type: disc !important; /* Forces bullet points */
201
  display: block !important;
202
  }
203
 
204
  .bot-message li {
205
  margin-bottom: 4px !important;
206
- display: list-item !important; /* Ensures it behaves like a list item */
207
  }
208
 
209
- /* Styling for bold text */
210
  .bot-message b, .bot-message strong {
211
  color: var(--accent-primary);
212
  font-weight: 700;
213
  }
214
 
215
- /* Styling for the disclaimer */
216
  .bot-message i {
217
  opacity: 0.8;
218
- font-size: 0.9em;
219
  display: block;
220
- margin-top: 12px;
221
- padding-top: 12px;
222
- border-top: 1px solid rgba(255, 255, 255, 0.15);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
223
  }
 
1
+ /* ===================================================================
2
+ 1. GLOBAL VARIABLES & RESET
3
+ ================================================================= */
4
  :root {
5
  --bg-deep-dark: #0a192f;
6
  --bg-medium-dark: #172a46;
 
15
  --card-shadow: 0 10px 30px -15px rgba(2, 12, 27, 0.7);
16
  }
17
 
18
+ * {
 
19
  margin: 0;
20
  padding: 0;
21
+ box-sizing: border-box;
22
+ }
23
+
24
+ body {
25
+ font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
26
  background-color: var(--bg-deep-dark);
27
  color: var(--text-normal);
28
+ /* Vital for a full-screen chat app layout */
29
+ height: 100vh;
30
+ height: 100dvh; /* Dynamic viewport height for mobile browsers */
31
  display: flex;
32
  flex-direction: column;
33
+ overflow: hidden; /* Prevent body scroll, only chat window scrolls */
34
  }
35
 
36
+ a { text-decoration: none; color: inherit; }
37
+
38
+ /* ===================================================================
39
+ 2. HEADER & NAVIGATION (Responsive)
40
+ ================================================================= */
41
+ header {
42
+ background-color: var(--bg-medium-dark);
43
+ padding: 1rem 5%;
44
  border-bottom: 1px solid var(--border-color);
45
+ flex-shrink: 0; /* Header never shrinks */
46
+ z-index: 100;
47
+ }
48
+
49
+ nav {
50
+ display: flex;
51
+ justify-content: space-between;
52
+ align-items: center;
53
+ max-width: 1200px;
54
+ margin: 0 auto;
55
+ flex-wrap: wrap;
 
 
 
 
 
56
  }
57
 
58
+ .logo {
59
+ font-size: 1.5rem;
60
+ font-weight: bold;
61
+ color: var(--accent-primary);
62
+ }
63
+
64
+ nav ul {
65
+ list-style: none;
66
+ display: flex;
67
+ gap: 1.5rem;
68
+ }
69
+
70
+ nav a {
71
+ color: var(--text-normal);
72
+ font-weight: 500;
73
+ padding: 0.5rem 0;
74
+ transition: color 0.3s;
75
+ font-size: 0.95rem;
76
+ }
77
+
78
+ nav a:hover, nav a.active {
79
+ color: var(--accent-primary);
80
+ border-bottom: 2px solid var(--accent-primary);
81
+ }
82
+
83
+ /* ===================================================================
84
+ 3. MAIN CHAT LAYOUT
85
+ ================================================================= */
86
  main {
87
+ flex-grow: 1; /* Takes up all remaining vertical space */
88
  display: flex;
89
  flex-direction: column;
 
 
90
  width: 100%;
91
+ max-width: 1000px;
92
+ margin: 0 auto;
93
+ padding: 20px;
94
+ overflow: hidden; /* Contains the scrollable chat area */
95
  }
96
 
97
  .chat-container {
 
101
  border: 1px solid var(--border-color);
102
  display: flex;
103
  flex-direction: column;
104
+ height: 100%; /* Fills the main area */
105
  overflow: hidden;
106
+ position: relative;
107
  }
108
 
109
+ /* --- Header Area --- */
110
  .chat-header {
111
+ padding: 15px 20px;
112
  background-color: var(--bg-light-dark);
113
  border-bottom: 1px solid var(--border-color);
114
  text-align: center;
115
+ flex-shrink: 0;
116
  }
117
 
118
  .chat-header h1 {
119
  margin: 0;
120
+ font-size: 1.25rem;
121
  color: var(--accent-primary);
122
  }
123
 
124
  .chat-header p {
125
  margin: 5px 0 0;
126
  color: var(--text-muted);
127
+ font-size: 0.85rem;
128
  }
129
 
130
+ /* --- Chat Window (Scrollable Area) --- */
131
  .chat-window {
132
  flex-grow: 1;
133
  padding: 20px;
 
136
  flex-direction: column;
137
  gap: 15px;
138
  scroll-behavior: smooth;
139
+ background-color: rgba(10, 25, 47, 0.5); /* Subtle inner shadow */
140
+ }
141
+
142
+ /* Custom Scrollbar */
143
+ .chat-window::-webkit-scrollbar {
144
+ width: 8px;
145
+ }
146
+ .chat-window::-webkit-scrollbar-track {
147
+ background: var(--bg-deep-dark);
148
+ }
149
+ .chat-window::-webkit-scrollbar-thumb {
150
+ background: var(--border-color);
151
+ border-radius: 4px;
152
  }
153
 
154
+ /* --- Messages --- */
155
  .message {
156
  max-width: 80%;
157
  padding: 12px 16px;
158
  border-radius: 18px;
159
+ line-height: 1.5;
160
  word-wrap: break-word;
161
  animation: fadeIn 0.3s ease-in;
162
+ font-size: 0.95rem;
163
  }
164
 
165
  @keyframes fadeIn {
 
171
  align-self: flex-start;
172
  background-color: var(--bg-light-dark);
173
  color: var(--text-bright);
174
+ border-bottom-left-radius: 2px;
175
+ border: 1px solid var(--border-color);
176
  }
177
 
178
  .user-message {
179
  align-self: flex-end;
180
  background-color: var(--accent-primary);
181
  color: var(--accent-primary-text);
182
+ border-bottom-right-radius: 2px;
183
  font-weight: 500;
184
+ box-shadow: 0 2px 10px rgba(100, 255, 218, 0.2);
 
 
 
 
 
 
 
 
 
 
185
  }
186
 
187
  /* --- Input Area --- */
 
191
  background-color: var(--bg-light-dark);
192
  border-top: 1px solid var(--border-color);
193
  gap: 10px;
194
+ flex-shrink: 0;
195
  }
196
 
197
  #user-input {
 
201
  border-radius: 25px;
202
  background-color: var(--bg-deep-dark);
203
  color: var(--text-bright);
204
+ font-size: 1rem; /* Keeps iOS from zooming in */
205
+ transition: border-color 0.3s;
206
  }
207
 
208
  #user-input:focus {
 
222
  align-items: center;
223
  justify-content: center;
224
  transition: transform 0.2s, background-color 0.2s;
225
+ flex-shrink: 0;
226
  }
227
 
228
  .chat-input-area button:hover {
 
231
  }
232
 
233
  .chat-input-area button svg {
234
+ width: 20px;
235
+ height: 20px;
236
  }
237
 
238
+ /* ===================================================================
239
+ 4. CONTENT FORMATTING (Markdown Support)
240
+ ================================================================= */
 
 
241
  .bot-message ul, .bot-message ol {
242
+ margin: 8px 0 !important;
243
+ padding-left: 20px !important;
244
+ list-style-type: disc !important;
 
245
  display: block !important;
246
  }
247
 
248
  .bot-message li {
249
  margin-bottom: 4px !important;
250
+ display: list-item !important;
251
  }
252
 
 
253
  .bot-message b, .bot-message strong {
254
  color: var(--accent-primary);
255
  font-weight: 700;
256
  }
257
 
 
258
  .bot-message i {
259
  opacity: 0.8;
260
+ font-size: 0.85em;
261
  display: block;
262
+ margin-top: 10px;
263
+ padding-top: 10px;
264
+ border-top: 1px solid rgba(255, 255, 255, 0.1);
265
+ }
266
+
267
+ /* ===================================================================
268
+ 5. RESPONSIVE MEDIA QUERIES
269
+ ================================================================= */
270
+
271
+ /* Tablet & Mobile Navigation */
272
+ @media (max-width: 900px) {
273
+ header { padding: 0.75rem 5%; }
274
+
275
+ nav {
276
+ flex-direction: column;
277
+ gap: 0.75rem;
278
+ }
279
+
280
+ nav ul {
281
+ flex-wrap: wrap;
282
+ justify-content: center;
283
+ gap: 1rem;
284
+ width: 100%;
285
+ }
286
+ }
287
+
288
+ /* Mobile Phones (Full Screen Chat Experience) */
289
+ @media (max-width: 600px) {
290
+ main {
291
+ padding: 0; /* Remove padding to make it edge-to-edge */
292
+ margin: 0;
293
+ max-width: 100%;
294
+ /* Calculate height carefully to fit between header and bottom */
295
+ height: auto;
296
+ }
297
+
298
+ .chat-container {
299
+ border-radius: 0;
300
+ border-left: none;
301
+ border-right: none;
302
+ border-bottom: none;
303
+ }
304
+
305
+ .chat-header {
306
+ padding: 10px 15px;
307
+ }
308
+
309
+ .chat-window {
310
+ padding: 15px;
311
+ }
312
+
313
+ .message {
314
+ max-width: 85%; /* Slightly wider bubbles on small screens */
315
+ }
316
+
317
+ .chat-input-area {
318
+ padding: 10px;
319
+ }
320
+
321
+ #user-input {
322
+ padding: 10px 15px;
323
+ }
324
+
325
+ .chat-input-area button {
326
+ width: 40px;
327
+ height: 40px;
328
+ }
329
  }
static/css/homeStyle.css CHANGED
@@ -32,6 +32,7 @@ body {
32
  url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 40 40"><path fill="%23172a46" fill-opacity="0.3" d="M0 0 H40 V40 H0 Z M20 0 V40 M0 20 H40"></path></svg>');
33
  background-size: 40px 40px;
34
  background-repeat: repeat;
 
35
  }
36
 
37
  a {
@@ -45,10 +46,10 @@ a:hover {
45
  }
46
 
47
  /* ===================================================================
48
- Header & Navigation
49
  ================================================================= */
50
  header {
51
- background-color: rgba(10, 25, 47, 0.85);
52
  box-shadow: 0 2px 8px rgba(0,0,0,0.3);
53
  padding: 1rem 5%;
54
  backdrop-filter: blur(10px);
@@ -64,6 +65,7 @@ nav {
64
  align-items: center;
65
  max-width: 1200px;
66
  margin: 0 auto;
 
67
  }
68
 
69
  .logo {
@@ -77,6 +79,8 @@ nav ul {
77
  list-style: none;
78
  display: flex;
79
  gap: 1.5rem;
 
 
80
  }
81
 
82
  nav a {
@@ -84,6 +88,7 @@ nav a {
84
  font-weight: 500;
85
  transition: color 0.3s;
86
  padding: 0.5rem 0;
 
87
  }
88
 
89
  nav a:hover, nav a.active {
@@ -91,13 +96,38 @@ nav a:hover, nav a.active {
91
  border-bottom: 2px solid var(--accent-primary);
92
  }
93
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
94
  /* ===================================================================
95
  Main Content & Hero
96
  ================================================================= */
97
  main {
98
  padding: 2rem 5%;
99
- max-width: 900px;
100
- margin: 2rem auto;
 
101
  }
102
 
103
  .hero {
@@ -107,6 +137,7 @@ main {
107
  border-radius: 8px;
108
  box-shadow: var(--card-shadow);
109
  border: 1px solid var(--border-color);
 
110
  }
111
 
112
  .hero h1 {
@@ -114,6 +145,7 @@ main {
114
  color: var(--text-bright);
115
  font-size: 2.5rem;
116
  font-weight: 600;
 
117
  }
118
 
119
  .hero p {
@@ -122,6 +154,26 @@ main {
122
  margin-bottom: 2rem;
123
  }
124
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
125
  /* ===================================================================
126
  Prediction Form
127
  ================================================================= */
@@ -137,8 +189,10 @@ main {
137
  border-radius: 8px;
138
  padding: 1.5rem;
139
  display: grid;
140
- grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
 
141
  gap: 1.25rem;
 
142
  }
143
 
144
  #drug-search-form legend {
@@ -152,12 +206,13 @@ main {
152
  #drug-search-form div {
153
  display: flex;
154
  flex-direction: column;
 
155
  }
156
 
157
  #drug-search-form label {
158
  font-size: 0.9rem;
159
  color: var(--text-normal);
160
- margin-bottom: 0.25rem;
161
  font-weight: 500;
162
  }
163
 
@@ -167,10 +222,20 @@ main {
167
  padding: 0.75rem;
168
  border: 1px solid var(--border-color);
169
  border-radius: 4px;
170
- font-size: 1rem;
171
  background-color: var(--bg-light-dark);
172
  color: var(--text-bright);
173
  transition: border-color 0.3s, box-shadow 0.3s;
 
 
 
 
 
 
 
 
 
 
174
  }
175
 
176
  #drug-search-form input:focus,
@@ -187,10 +252,11 @@ main {
187
  /* --- Autocomplete --- */
188
  .autocomplete-container {
189
  position: relative;
 
190
  }
191
 
192
  .suggestions-box {
193
- display: none; /* Hidden by default */
194
  position: absolute;
195
  top: 100%;
196
  left: 0;
@@ -202,13 +268,19 @@ main {
202
  max-height: 200px;
203
  overflow-y: auto;
204
  z-index: 100;
 
205
  }
206
 
207
  .suggestion-item {
208
- padding: 10px;
209
  color: var(--text-normal);
210
  cursor: pointer;
211
  transition: background-color 0.2s;
 
 
 
 
 
212
  }
213
 
214
  .suggestion-item:hover {
@@ -218,16 +290,20 @@ main {
218
 
219
  /* --- Submit Button --- */
220
  button[type="submit"] {
221
- padding: 0.75rem 1.5rem;
222
  background-color: var(--accent-primary);
223
  color: var(--accent-primary-text);
224
  border: none;
225
  border-radius: 4px;
226
- font-size: 1rem;
227
  font-weight: bold;
228
  letter-spacing: 0.5px;
229
  cursor: pointer;
230
  transition: background-color 0.3s, transform 0.2s;
 
 
 
 
231
  }
232
 
233
  button[type="submit"]:hover {
@@ -236,12 +312,20 @@ button[type="submit"]:hover {
236
  box-shadow: 0 4px 10px rgba(100, 255, 218, 0.1);
237
  }
238
 
 
 
 
 
 
 
 
 
239
  /* ===================================================================
240
  Results Section
241
  ================================================================= */
242
  .results-container {
243
  display: grid;
244
- grid-template-columns: 1fr; /* Default to 1 column */
245
  gap: 2rem;
246
  margin-top: 2.5rem;
247
  padding: 2.5rem;
@@ -251,13 +335,21 @@ button[type="submit"]:hover {
251
  border: 1px solid var(--border-color);
252
  }
253
 
254
- /* Use 2 columns on larger screens */
255
  @media (min-width: 768px) {
256
  .results-container {
257
  grid-template-columns: 1fr 1fr;
258
  }
259
  }
260
 
 
 
 
 
 
 
 
 
261
  .results-container.hidden {
262
  display: none;
263
  }
@@ -279,9 +371,10 @@ button[type="submit"]:hover {
279
 
280
  #risk-profile-list li,
281
  #side-effects-list li {
282
- margin-bottom: 0.5rem;
283
  position: relative;
284
  padding-left: 1.5rem;
 
285
  }
286
 
287
  /* Custom bullet point */
@@ -292,77 +385,7 @@ button[type="submit"]:hover {
292
  left: 0;
293
  color: var(--accent-primary);
294
  font-weight: bold;
295
- }
296
-
297
- /* ===================================================================
298
- Profile Page Styles (For compatibility with profile.html)
299
- ================================================================= */
300
- .profile-container {
301
- display: flex;
302
- flex-direction: column;
303
- gap: 2rem;
304
- }
305
-
306
- .profile-card, .search-history {
307
- background-color: var(--bg-medium-dark);
308
- padding: 2.5rem;
309
- border-radius: 8px;
310
- box-shadow: var(--card-shadow);
311
- border: 1px solid var(--border-color);
312
- }
313
-
314
- .profile-card {
315
- text-align: center;
316
- }
317
-
318
- .avatar {
319
- width: 100px;
320
- height: 100px;
321
- border-radius: 50%;
322
- margin-bottom: 1rem;
323
- border: 3px solid var(--accent-primary);
324
- box-shadow: 0 0 15px rgba(100, 255, 218, 0.3);
325
- }
326
-
327
- .profile-card h2 {
328
- color: var(--text-bright);
329
- font-size: 1.75rem;
330
- }
331
-
332
- .profile-card p {
333
- color: var(--text-normal);
334
- font-size: 1.1rem;
335
- }
336
-
337
- .profile-card p strong {
338
- color: var(--accent-primary);
339
- font-weight: 500;
340
- }
341
-
342
- .search-history h3 {
343
- color: var(--accent-primary);
344
- margin-bottom: 1rem;
345
- border-bottom: 1px solid var(--border-color);
346
- padding-bottom: 0.75rem;
347
- }
348
-
349
- .search-history ul {
350
- list-style: none;
351
- padding: 0;
352
- }
353
-
354
- .search-history li {
355
- background-color: var(--bg-light-dark);
356
- padding: 0.75rem 1rem;
357
- border-radius: 4px;
358
- margin-bottom: 0.5rem;
359
- color: var(--text-normal);
360
- border-left: 4px solid var(--accent-primary);
361
- transition: background-color 0.3s;
362
- }
363
-
364
- .search-history li:hover {
365
- background-color: var(--border-color);
366
  }
367
 
368
  /* ===================================================================
 
32
  url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 40 40"><path fill="%23172a46" fill-opacity="0.3" d="M0 0 H40 V40 H0 Z M20 0 V40 M0 20 H40"></path></svg>');
33
  background-size: 40px 40px;
34
  background-repeat: repeat;
35
+ overflow-x: hidden; /* Prevent horizontal scroll on small devices */
36
  }
37
 
38
  a {
 
46
  }
47
 
48
  /* ===================================================================
49
+ Header & Navigation (Responsive)
50
  ================================================================= */
51
  header {
52
+ background-color: rgba(10, 25, 47, 0.95); /* Slightly more opaque for mobile readability */
53
  box-shadow: 0 2px 8px rgba(0,0,0,0.3);
54
  padding: 1rem 5%;
55
  backdrop-filter: blur(10px);
 
65
  align-items: center;
66
  max-width: 1200px;
67
  margin: 0 auto;
68
+ flex-wrap: wrap; /* Allows items to wrap on small screens */
69
  }
70
 
71
  .logo {
 
79
  list-style: none;
80
  display: flex;
81
  gap: 1.5rem;
82
+ margin: 0;
83
+ padding: 0;
84
  }
85
 
86
  nav a {
 
88
  font-weight: 500;
89
  transition: color 0.3s;
90
  padding: 0.5rem 0;
91
+ display: inline-block;
92
  }
93
 
94
  nav a:hover, nav a.active {
 
96
  border-bottom: 2px solid var(--accent-primary);
97
  }
98
 
99
+ /* --- Mobile Navigation Adjustments --- */
100
+ @media (max-width: 768px) {
101
+ header {
102
+ padding: 1rem;
103
+ }
104
+
105
+ nav {
106
+ flex-direction: column;
107
+ gap: 1rem;
108
+ }
109
+
110
+ nav ul {
111
+ flex-wrap: wrap;
112
+ justify-content: center;
113
+ gap: 1rem;
114
+ width: 100%;
115
+ }
116
+
117
+ nav a {
118
+ font-size: 0.9rem;
119
+ padding: 0.25rem 0;
120
+ }
121
+ }
122
+
123
  /* ===================================================================
124
  Main Content & Hero
125
  ================================================================= */
126
  main {
127
  padding: 2rem 5%;
128
+ max-width: 1000px; /* Slightly wider for better desktop use */
129
+ margin: 0 auto;
130
+ width: 100%;
131
  }
132
 
133
  .hero {
 
137
  border-radius: 8px;
138
  box-shadow: var(--card-shadow);
139
  border: 1px solid var(--border-color);
140
+ margin-bottom: 2rem;
141
  }
142
 
143
  .hero h1 {
 
145
  color: var(--text-bright);
146
  font-size: 2.5rem;
147
  font-weight: 600;
148
+ line-height: 1.2;
149
  }
150
 
151
  .hero p {
 
154
  margin-bottom: 2rem;
155
  }
156
 
157
+ /* --- Mobile Hero Adjustments --- */
158
+ @media (max-width: 600px) {
159
+ main {
160
+ padding: 1rem;
161
+ }
162
+
163
+ .hero {
164
+ padding: 1.5rem 1rem;
165
+ }
166
+
167
+ .hero h1 {
168
+ font-size: 1.8rem;
169
+ }
170
+
171
+ .hero p {
172
+ font-size: 1rem;
173
+ margin-bottom: 1.5rem;
174
+ }
175
+ }
176
+
177
  /* ===================================================================
178
  Prediction Form
179
  ================================================================= */
 
189
  border-radius: 8px;
190
  padding: 1.5rem;
191
  display: grid;
192
+ /* Responsive Grid: Stacks on mobile, auto-fits on desktop */
193
+ grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
194
  gap: 1.25rem;
195
+ width: 100%;
196
  }
197
 
198
  #drug-search-form legend {
 
206
  #drug-search-form div {
207
  display: flex;
208
  flex-direction: column;
209
+ position: relative; /* Ensure relative positioning for child absolute elements */
210
  }
211
 
212
  #drug-search-form label {
213
  font-size: 0.9rem;
214
  color: var(--text-normal);
215
+ margin-bottom: 0.35rem;
216
  font-weight: 500;
217
  }
218
 
 
222
  padding: 0.75rem;
223
  border: 1px solid var(--border-color);
224
  border-radius: 4px;
225
+ font-size: 1rem; /* 16px to prevent iOS zoom */
226
  background-color: var(--bg-light-dark);
227
  color: var(--text-bright);
228
  transition: border-color 0.3s, box-shadow 0.3s;
229
+ appearance: none; /* Removes default OS styling for cleaner look */
230
+ }
231
+
232
+ /* Fix for Select arrow in some browsers */
233
+ #drug-search-form select {
234
+ background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23ccd6f6' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6 9 12 15 18 9'%3e%3c/polyline%3e%3c/svg%3e");
235
+ background-repeat: no-repeat;
236
+ background-position: right 1rem center;
237
+ background-size: 1em;
238
+ padding-right: 2.5rem;
239
  }
240
 
241
  #drug-search-form input:focus,
 
252
  /* --- Autocomplete --- */
253
  .autocomplete-container {
254
  position: relative;
255
+ width: 100%;
256
  }
257
 
258
  .suggestions-box {
259
+ display: none;
260
  position: absolute;
261
  top: 100%;
262
  left: 0;
 
268
  max-height: 200px;
269
  overflow-y: auto;
270
  z-index: 100;
271
+ box-shadow: 0 5px 15px rgba(0,0,0,0.5);
272
  }
273
 
274
  .suggestion-item {
275
+ padding: 12px 10px; /* Larger tap target for mobile */
276
  color: var(--text-normal);
277
  cursor: pointer;
278
  transition: background-color 0.2s;
279
+ border-bottom: 1px solid var(--border-color);
280
+ }
281
+
282
+ .suggestion-item:last-child {
283
+ border-bottom: none;
284
  }
285
 
286
  .suggestion-item:hover {
 
290
 
291
  /* --- Submit Button --- */
292
  button[type="submit"] {
293
+ padding: 1rem 1.5rem; /* Larger touch target */
294
  background-color: var(--accent-primary);
295
  color: var(--accent-primary-text);
296
  border: none;
297
  border-radius: 4px;
298
+ font-size: 1.1rem;
299
  font-weight: bold;
300
  letter-spacing: 0.5px;
301
  cursor: pointer;
302
  transition: background-color 0.3s, transform 0.2s;
303
+ width: 100%; /* Full width on mobile/default */
304
+ max-width: 300px; /* Restricted width on desktop */
305
+ align-self: center; /* Center the button */
306
+ margin-top: 1rem;
307
  }
308
 
309
  button[type="submit"]:hover {
 
312
  box-shadow: 0 4px 10px rgba(100, 255, 218, 0.1);
313
  }
314
 
315
+ /* Mobile Fieldset adjustment */
316
+ @media (max-width: 480px) {
317
+ #drug-search-form fieldset {
318
+ grid-template-columns: 1fr; /* Force single column on very small screens */
319
+ padding: 1rem;
320
+ }
321
+ }
322
+
323
  /* ===================================================================
324
  Results Section
325
  ================================================================= */
326
  .results-container {
327
  display: grid;
328
+ grid-template-columns: 1fr; /* Default stack */
329
  gap: 2rem;
330
  margin-top: 2.5rem;
331
  padding: 2.5rem;
 
335
  border: 1px solid var(--border-color);
336
  }
337
 
338
+ /* 2 columns on tablets and up */
339
  @media (min-width: 768px) {
340
  .results-container {
341
  grid-template-columns: 1fr 1fr;
342
  }
343
  }
344
 
345
+ /* Adjust padding on mobile */
346
+ @media (max-width: 600px) {
347
+ .results-container {
348
+ padding: 1.5rem;
349
+ margin-top: 1.5rem;
350
+ }
351
+ }
352
+
353
  .results-container.hidden {
354
  display: none;
355
  }
 
371
 
372
  #risk-profile-list li,
373
  #side-effects-list li {
374
+ margin-bottom: 0.75rem; /* More space for readability */
375
  position: relative;
376
  padding-left: 1.5rem;
377
+ line-height: 1.5;
378
  }
379
 
380
  /* Custom bullet point */
 
385
  left: 0;
386
  color: var(--accent-primary);
387
  font-weight: bold;
388
+ top: -2px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
389
  }
390
 
391
  /* ===================================================================
static/css/profileStyle.css ADDED
@@ -0,0 +1,273 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* ===================================================================
2
+ 1. GLOBAL VARIABLES & RESET
3
+ ================================================================= */
4
+ :root {
5
+ --bg-deep-dark: #0a192f;
6
+ --bg-medium-dark: #172a46;
7
+ --bg-light-dark: #2c3e50;
8
+ --text-bright: #ccd6f6;
9
+ --text-normal: #bdc3c7;
10
+ --text-muted: #8892b0;
11
+ --accent-primary: #64ffda;
12
+ --accent-primary-darker: #52d3b4;
13
+ --accent-primary-text: #0a192f;
14
+ --border-color: #304a6e;
15
+ --card-shadow: 0 10px 30px -15px rgba(2, 12, 27, 0.7);
16
+ }
17
+
18
+ * {
19
+ margin: 0;
20
+ padding: 0;
21
+ box-sizing: border-box;
22
+ }
23
+
24
+ body {
25
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
26
+ background-color: var(--bg-deep-dark);
27
+ color: var(--text-normal);
28
+ line-height: 1.6;
29
+ font-size: 16px;
30
+ background-image: linear-gradient(rgba(10, 25, 47, 0.9), rgba(10, 25, 47, 0.9)),
31
+ url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 40 40"><path fill="%23172a46" fill-opacity="0.3" d="M0 0 H40 V40 H0 Z M20 0 V40 M0 20 H40"></path></svg>');
32
+ background-size: 40px 40px;
33
+ min-height: 100vh;
34
+ display: flex;
35
+ flex-direction: column;
36
+ }
37
+
38
+ a {
39
+ text-decoration: none;
40
+ color: inherit;
41
+ transition: color 0.3s;
42
+ }
43
+
44
+ /* ===================================================================
45
+ 2. HEADER & NAVIGATION (Responsive)
46
+ ================================================================= */
47
+ header {
48
+ background-color: rgba(10, 25, 47, 0.95);
49
+ padding: 1rem 5%;
50
+ border-bottom: 1px solid var(--border-color);
51
+ position: sticky;
52
+ top: 0;
53
+ z-index: 1000;
54
+ backdrop-filter: blur(10px);
55
+ }
56
+
57
+ nav {
58
+ display: flex;
59
+ justify-content: space-between;
60
+ align-items: center;
61
+ max-width: 1200px;
62
+ margin: 0 auto;
63
+ flex-wrap: wrap;
64
+ }
65
+
66
+ .logo {
67
+ font-size: 1.5rem;
68
+ font-weight: bold;
69
+ color: var(--accent-primary);
70
+ letter-spacing: 1px;
71
+ }
72
+
73
+ nav ul {
74
+ list-style: none;
75
+ display: flex;
76
+ gap: 1.5rem;
77
+ }
78
+
79
+ nav a {
80
+ color: var(--text-normal);
81
+ font-weight: 500;
82
+ padding: 0.5rem 0;
83
+ font-size: 0.95rem;
84
+ }
85
+
86
+ nav a:hover, nav a.active {
87
+ color: var(--accent-primary);
88
+ border-bottom: 2px solid var(--accent-primary);
89
+ }
90
+
91
+ /* ===================================================================
92
+ 3. MAIN CONTENT LAYOUT
93
+ ================================================================= */
94
+ main {
95
+ flex: 1; /* Pushes footer down */
96
+ width: 100%;
97
+ max-width: 1100px;
98
+ margin: 2rem auto;
99
+ padding: 0 5%;
100
+ }
101
+
102
+ .profile-container {
103
+ display: grid;
104
+ /* Desktop: 1/3 width for Profile, 2/3 for History */
105
+ grid-template-columns: 1fr 2fr;
106
+ gap: 2rem;
107
+ align-items: start;
108
+ }
109
+
110
+ /* ===================================================================
111
+ 4. PROFILE CARD
112
+ ================================================================= */
113
+ .profile-card {
114
+ background-color: var(--bg-medium-dark);
115
+ padding: 2.5rem;
116
+ border-radius: 12px;
117
+ box-shadow: var(--card-shadow);
118
+ border: 1px solid var(--border-color);
119
+ text-align: center;
120
+ display: flex;
121
+ flex-direction: column;
122
+ align-items: center;
123
+ }
124
+
125
+ .avatar {
126
+ width: 120px;
127
+ height: 120px;
128
+ border-radius: 50%;
129
+ object-fit: cover;
130
+ margin-bottom: 1.5rem;
131
+ border: 3px solid var(--accent-primary);
132
+ box-shadow: 0 0 20px rgba(100, 255, 218, 0.2);
133
+ background-color: var(--bg-light-dark);
134
+ }
135
+
136
+ .profile-card h2 {
137
+ color: var(--text-bright);
138
+ font-size: 1.5rem;
139
+ margin-bottom: 0.5rem;
140
+ }
141
+
142
+ .profile-card p {
143
+ color: var(--text-muted);
144
+ font-size: 1rem;
145
+ margin-bottom: 0.5rem;
146
+ width: 100%;
147
+ word-break: break-word; /* Prevents long emails from breaking layout */
148
+ }
149
+
150
+ .profile-card strong {
151
+ color: var(--accent-primary);
152
+ font-weight: 500;
153
+ }
154
+
155
+ /* ===================================================================
156
+ 5. SEARCH HISTORY
157
+ ================================================================= */
158
+ .search-history {
159
+ background-color: var(--bg-medium-dark);
160
+ padding: 2.5rem;
161
+ border-radius: 12px;
162
+ box-shadow: var(--card-shadow);
163
+ border: 1px solid var(--border-color);
164
+ min-height: 400px; /* Ensures visual balance */
165
+ }
166
+
167
+ .search-history h3 {
168
+ color: var(--text-bright);
169
+ margin-bottom: 1.5rem;
170
+ padding-bottom: 1rem;
171
+ border-bottom: 1px solid var(--border-color);
172
+ font-size: 1.25rem;
173
+ display: flex;
174
+ align-items: center;
175
+ gap: 10px;
176
+ }
177
+
178
+ .search-history ul {
179
+ list-style: none;
180
+ padding: 0;
181
+ }
182
+
183
+ .search-history li {
184
+ background-color: var(--bg-light-dark);
185
+ padding: 1rem 1.25rem;
186
+ border-radius: 6px;
187
+ margin-bottom: 0.75rem;
188
+ color: var(--text-normal);
189
+ border-left: 3px solid var(--accent-primary);
190
+ transition: transform 0.2s, background-color 0.2s;
191
+ font-size: 0.95rem;
192
+ display: flex;
193
+ justify-content: space-between;
194
+ align-items: center;
195
+ }
196
+
197
+ .search-history li:hover {
198
+ background-color: rgba(255, 255, 255, 0.05);
199
+ transform: translateX(5px);
200
+ }
201
+
202
+ /* ===================================================================
203
+ 6. RESPONSIVE MEDIA QUERIES
204
+ ================================================================= */
205
+
206
+ /* Tablet (Portrait) & Mobile */
207
+ @media (max-width: 900px) {
208
+ header {
209
+ padding: 1rem;
210
+ }
211
+
212
+ nav {
213
+ flex-direction: column;
214
+ gap: 1rem;
215
+ }
216
+
217
+ nav ul {
218
+ flex-wrap: wrap;
219
+ justify-content: center;
220
+ gap: 1rem;
221
+ width: 100%;
222
+ }
223
+
224
+ /* Switch to single column stack */
225
+ .profile-container {
226
+ grid-template-columns: 1fr;
227
+ gap: 1.5rem;
228
+ }
229
+
230
+ .profile-card, .search-history {
231
+ padding: 2rem;
232
+ min-height: auto;
233
+ }
234
+ }
235
+
236
+ /* Mobile Phones */
237
+ @media (max-width: 600px) {
238
+ main {
239
+ padding: 0 1rem;
240
+ margin-top: 1.5rem;
241
+ }
242
+
243
+ .avatar {
244
+ width: 100px;
245
+ height: 100px;
246
+ }
247
+
248
+ .profile-card h2 {
249
+ font-size: 1.25rem;
250
+ }
251
+
252
+ .search-history h3 {
253
+ font-size: 1.1rem;
254
+ }
255
+
256
+ .search-history li {
257
+ padding: 0.75rem 1rem;
258
+ font-size: 0.9rem;
259
+ }
260
+ }
261
+
262
+ /* ===================================================================
263
+ 7. FOOTER
264
+ ================================================================= */
265
+ footer {
266
+ text-align: center;
267
+ padding: 2rem 5%;
268
+ margin-top: 3rem;
269
+ background-color: var(--bg-medium-dark);
270
+ color: var(--text-muted);
271
+ font-size: 0.9rem;
272
+ border-top: 1px solid var(--border-color);
273
+ }
templates/profile.html CHANGED
@@ -4,7 +4,7 @@
4
  <meta charset="UTF-8">
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
  <title>User Profile - MedScope</title>
7
- <link rel="stylesheet" href="/static/css/homeStyle.css">
8
  </head>
9
  <body>
10
  <header>
 
4
  <meta charset="UTF-8">
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
  <title>User Profile - MedScope</title>
7
+ <link rel="stylesheet" href="/static/css/profileStyle.css">
8
  </head>
9
  <body>
10
  <header>