Docfile commited on
Commit
7c68114
·
verified ·
1 Parent(s): 74828dc

Update api/static/css/style.css

Browse files
Files changed (1) hide show
  1. api/static/css/style.css +481 -591
api/static/css/style.css CHANGED
@@ -1,92 +1,59 @@
1
- /* static/css/style.css */
2
-
3
- /* --- Base Styles & Theme Variables --- */
4
  :root {
5
  /* Light theme */
6
  --background-color: #f8f9fa;
7
  --text-color: #212529;
8
- --primary-color: #3498db; /* Blue */
9
- --secondary-color: #6c757d; /* Gray */
10
- --success-color: #2ecc71; /* Green */
11
- --danger-color: #e74c3c; /* Red */
12
- --warning-color: #f39c12; /* Yellow/Orange */
13
- --info-color: #3498db; /* Blue (can be different) */
14
- --muted-color: #6c757d; /* Gray */
15
  --border-color: #dee2e6;
16
  --card-bg: #ffffff;
17
  --header-bg: #ffffff;
18
  --footer-bg: #f1f1f1;
19
- --sidebar-bg: #ffffff;
20
- --sidebar-border: #dee2e6;
21
- --sidebar-hover-bg: rgba(52, 152, 219, 0.1);
22
- --modal-bg: #ffffff;
23
  --input-bg: #ffffff;
24
- --input-disabled-bg: #e9ecef;
25
- --block-bg: #fdfdff; /* Slightly off-white for blocks */
26
- --block-border: #e9ecef;
27
  --btn-primary-bg: var(--primary-color);
28
  --btn-primary-text: #ffffff;
29
- --btn-secondary-bg: var(--secondary-color);
30
  --btn-secondary-text: #ffffff;
31
- --shadow: 0 2px 5px rgba(0, 0, 0, 0.08);
32
- --hover-shadow: 0 5px 15px rgba(0, 0, 0, 0.12);
33
- --ql-toolbar-bg: var(--card-bg);
34
- --ql-editor-bg: var(--input-bg);
35
- --ql-border-color: var(--border-color);
36
- --ql-stroke-color: var(--text-color);
37
- --ql-fill-color: var(--text-color);
38
- --ql-picker-color: var(--text-color);
39
- --code-bg: #e9ecef;
40
- --code-text: #212529;
41
  }
42
 
43
  [data-theme="dark"] {
44
  /* Dark theme */
45
  --background-color: #121212;
46
  --text-color: #e0e0e0;
47
- --primary-color: #3498db; /* Keep primary blue */
48
- --secondary-color: #555555;
49
- --success-color: #2ecc71;
50
- --danger-color: #e74c3c;
51
- --warning-color: #f39c12;
52
- --info-color: #3498db;
53
  --muted-color: #95a5a6;
54
  --border-color: #333333;
55
  --card-bg: #1e1e1e;
56
  --header-bg: #1a1a1a;
57
  --footer-bg: #1a1a1a;
58
- --sidebar-bg: #1e1e1e;
59
- --sidebar-border: #333333;
60
- --sidebar-hover-bg: rgba(52, 152, 219, 0.15);
61
- --modal-bg: #2c2c2c; /* Slightly lighter than card for modals */
62
  --input-bg: #2c2c2c;
63
- --input-disabled-bg: #3a3a3a;
64
- --block-bg: #1a1a1a; /* Darker for blocks */
65
- --block-border: #333333;
66
  --btn-primary-bg: var(--primary-color);
67
  --btn-primary-text: #ffffff;
68
- --btn-secondary-bg: var(--secondary-color);
69
  --btn-secondary-text: #ffffff;
70
- --shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
71
- --hover-shadow: 0 5px 20px rgba(0, 0, 0, 0.35);
72
- --ql-toolbar-bg: var(--card-bg);
73
- --ql-editor-bg: var(--input-bg);
74
- --ql-border-color: var(--border-color);
75
- --ql-stroke-color: var(--text-color);
76
- --ql-fill-color: var(--text-color);
77
- --ql-picker-color: var(--text-color);
78
- --code-bg: #2c2c2c;
79
- --code-text: #e0e0e0;
80
- }
81
-
82
- /* --- General Styles --- */
83
- html {
84
- box-sizing: border-box;
85
- }
86
- *, *:before, *:after {
87
- box-sizing: inherit;
88
  }
89
 
 
90
  body {
91
  background-color: var(--background-color);
92
  color: var(--text-color);
@@ -107,176 +74,156 @@ a {
107
  }
108
 
109
  a:hover {
110
- color: #2980b9; /* Slightly darker blue */
111
  text-decoration: underline;
112
  }
113
 
114
- h1, h2, h3, h4, h5, h6 {
115
- color: var(--text-color);
116
- margin-top: 0;
117
- margin-bottom: 0.75rem;
118
- font-weight: 500;
119
- }
120
-
121
- /* --- Layout Components --- */
122
-
123
- /* Header */
124
  .main-header {
125
  background-color: var(--header-bg);
126
- padding: 0.8rem 0;
127
  box-shadow: var(--shadow);
128
  position: sticky;
129
  top: 0;
130
- z-index: 1030;
131
  transition: background-color 0.3s ease, box-shadow 0.3s ease;
132
- border-bottom: 1px solid var(--border-color);
133
  }
 
 
134
  .header-container {
135
  display: flex;
136
  align-items: center;
137
- max-width: 1200px; /* Limit width on large screens */
138
- margin: 0 auto;
139
- padding: 0 15px;
140
  }
 
 
141
  .burger-menu-button {
142
  background: none;
143
  border: none;
144
- font-size: 1.6rem;
145
  color: var(--text-color);
146
  cursor: pointer;
147
  padding: 0.5rem;
148
- margin-right: 1rem;
149
  line-height: 1;
150
  transition: color 0.3s ease;
151
  }
 
152
  .burger-menu-button:hover {
153
  color: var(--primary-color);
154
  }
 
 
155
  .site-title {
156
- flex-grow: 1;
157
- text-align: center;
158
- font-size: 1.7rem;
159
- font-weight: 700;
160
- margin: 0;
161
  }
 
162
  .site-title a {
163
- color: inherit; /* Inherit text color from parent */
164
  text-decoration: none;
165
  }
 
 
166
  .header-actions {
167
  display: flex;
168
  align-items: center;
169
- margin-left: 1rem;
170
  }
 
 
 
171
  .theme-toggle {
172
  background: none;
173
  border: none;
174
  cursor: pointer;
175
  color: var(--text-color);
176
- font-size: 1.4rem;
177
  padding: 0.5rem;
178
  transition: color 0.3s ease, transform 0.3s ease;
179
  }
 
180
  .theme-toggle:hover {
181
  color: var(--primary-color);
182
  transform: rotate(15deg);
183
  }
184
 
185
- /* Main Content Area */
186
  .main-content {
187
- flex: 1; /* Take up remaining vertical space */
188
- padding: 2rem 0;
189
- }
190
- .container { /* Use Bootstrap's container within main-content */
191
- max-width: 1200px;
192
- margin: 0 auto;
193
- padding: 0 15px;
194
  }
195
 
196
- /* Footer */
197
- .main-footer {
198
- background-color: var(--footer-bg);
199
- padding: 1.5rem 0;
200
- box-shadow: 0 -2px 5px rgba(0, 0, 0, 0.05);
201
- margin-top: auto; /* Push footer to bottom */
202
- flex-shrink: 0;
203
- border-top: 1px solid var(--border-color);
204
- }
205
- .footer-content {
206
- max-width: 1200px;
207
- margin: 0 auto;
208
- padding: 0 15px;
209
- display: flex;
210
- justify-content: space-between;
211
- align-items: center;
212
- flex-wrap: wrap;
213
- gap: 1rem;
214
- }
215
- .feedback-form {
216
- max-width: 400px;
217
- flex-grow: 1; /* Allow it to take space if needed */
218
- }
219
- .feedback-title {
220
- font-size: 1.1rem;
221
- font-weight: 600;
222
- margin-bottom: 0.5rem;
223
- }
224
 
 
225
 
226
- /* --- Sidebars --- */
227
  .sidebar-overlay {
228
  position: fixed;
229
  top: 0;
230
  left: 0;
231
  width: 100%;
232
  height: 100%;
233
- background-color: rgba(0, 0, 0, 0.6);
234
- z-index: 1040;
235
  opacity: 0;
236
  visibility: hidden;
237
  transition: opacity 0.3s ease-in-out, visibility 0.3s ease-in-out;
238
  }
 
239
  .sidebar-overlay.active {
240
  opacity: 1;
241
  visibility: visible;
242
  }
 
 
243
  .sidebar {
244
  position: fixed;
245
  top: 0;
246
- left: 0;
247
- width: 300px;
248
  height: 100%;
249
- background-color: var(--sidebar-bg);
250
  box-shadow: var(--shadow);
251
- z-index: 1050;
252
  display: flex;
253
  flex-direction: column;
254
- transform: translateX(-100%);
255
  transition: transform 0.3s ease-in-out;
256
- border-right: 1px solid var(--sidebar-border);
257
  }
 
258
  .sidebar.active {
259
- transform: translateX(0);
260
  }
 
 
261
  .sidebar-header {
262
  display: flex;
263
  justify-content: space-between;
264
  align-items: center;
265
  padding: 1rem 1.5rem;
266
- border-bottom: 1px solid var(--sidebar-border);
267
- background-color: var(--header-bg);
268
- flex-shrink: 0;
269
  }
 
270
  .sidebar-header h4 {
271
  margin: 0;
272
  font-size: 1.2rem;
273
  font-weight: 600;
274
- flex-grow: 1;
275
- margin-left: 10px;
276
- overflow: hidden;
277
  white-space: nowrap;
278
  text-overflow: ellipsis;
279
  }
 
 
280
  .sidebar-back-button,
281
  .close-sidebar-btn {
282
  background: none;
@@ -292,581 +239,524 @@ h1, h2, h3, h4, h5, h6 {
292
  .close-sidebar-btn:hover {
293
  color: var(--text-color);
294
  }
 
 
295
  .sidebar-list {
296
  list-style: none;
297
  padding: 0;
298
  margin: 0;
299
- flex-grow: 1;
300
- overflow-y: auto;
301
- overflow-x: hidden;
302
  }
 
303
  .sidebar-list li {
304
  padding: 0.8rem 1.5rem;
305
  cursor: pointer;
306
- border-bottom: 1px solid var(--sidebar-border);
307
  transition: background-color 0.2s ease;
308
  display: flex;
309
- justify-content: space-between;
310
  align-items: center;
311
- white-space: nowrap;
312
  }
 
313
  .sidebar-list li:last-child {
314
- border-bottom: none;
315
  }
 
316
  .sidebar-list li:hover {
317
- background-color: var(--sidebar-hover-bg);
318
  }
 
319
  .sidebar-list li i.fa-chevron-right,
320
- .sidebar-list li i.fa-arrow-left {
321
  color: var(--muted-color);
322
  font-size: 0.9em;
323
- margin-left: 0.5rem;
324
  }
325
- .sidebar-list li.active { /* Style for selected item */
 
 
326
  background-color: var(--primary-color);
327
  color: white;
328
- border-bottom-color: var(--primary-color); /* Match background */
329
  }
330
- .sidebar-list li.active i {
331
  color: white;
332
  }
333
 
334
- /* --- Flash Messages --- */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
335
  .flash-container {
336
- position: relative; /* Keep in flow */
337
- z-index: 1000; /* Below header/sidebar */
338
- margin-bottom: 1.5rem; /* Space below messages */
339
  }
340
 
341
- /* --- Form Elements --- */
342
- .form-group {
 
 
 
343
  margin-bottom: 1.5rem;
 
 
 
344
  }
345
- label {
346
- display: block;
347
- margin-bottom: 0.5rem;
348
- font-weight: 500;
349
- color: var(--text-color);
350
  }
351
- input[type="text"],
352
- input[type="email"],
353
- input[type="password"],
354
- input[type="number"],
355
- input[type="file"],
356
- input[type="color"],
357
- select,
358
- textarea {
359
- display: block;
360
- width: 100%;
361
- padding: 0.65rem 0.9rem;
362
- font-size: 1rem;
363
- font-weight: 400;
364
- line-height: 1.5;
365
  color: var(--text-color);
366
- background-color: var(--input-bg);
367
- background-clip: padding-box;
368
- border: 1px solid var(--border-color);
369
- appearance: none; /* For select */
370
- border-radius: 0.25rem;
371
- transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
372
- }
373
- input[type="file"] {
374
- padding: 0.5rem 0.9rem; /* Slightly less padding for file input */
375
  }
376
- input[type="color"] {
377
- padding: 0.2rem 0.4rem; /* Smaller padding for color input */
378
- height: calc(1.5em + 1.3rem + 2px); /* Match height of other inputs */
379
- vertical-align: middle;
380
- width: auto; /* Allow color picker to size itself */
381
- display: inline-block; /* Align with preview */
382
- }
383
- .color-preview { /* Style generated preview span */
384
- display: inline-block;
385
- width: 24px;
386
- height: 24px;
387
  border-radius: 4px;
388
- margin-left: 10px;
389
- vertical-align: middle;
390
- border: 1px solid var(--border-color);
391
  }
392
- input:focus, select:focus, textarea:focus {
393
- border-color: var(--primary-color);
394
- outline: 0;
395
- box-shadow: 0 0 0 0.2rem rgba(var(--primary-color-rgb, 52, 152, 219), 0.25); /* Define --primary-color-rgb if needed or hardcode */
 
 
 
 
 
 
 
 
396
  }
397
- textarea {
398
- min-height: 120px;
399
- resize: vertical;
400
  }
401
- select {
402
- background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");
403
- background-repeat: no-repeat;
404
- background-position: right 0.75rem center;
405
- background-size: 16px 12px;
 
 
 
 
406
  }
407
- [data-theme="dark"] select {
408
- background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23dee2e6' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");
 
409
  }
410
- input:disabled, select:disabled, textarea:disabled {
411
- background-color: var(--input-disabled-bg);
412
- opacity: 0.7;
413
- cursor: not-allowed;
 
 
 
414
  }
415
 
 
 
 
416
 
417
- /* --- Buttons --- */
418
- .btn {
419
- display: inline-block;
420
- font-weight: 500;
421
- line-height: 1.5;
422
- color: #212529; /* Default text color, overridden by specifics */
423
- text-align: center;
424
- text-decoration: none;
425
- vertical-align: middle;
426
- cursor: pointer;
427
- user-select: none;
428
- background-color: transparent;
429
- border: 1px solid transparent;
430
- padding: 0.65rem 1.2rem;
431
- font-size: 1rem;
432
- border-radius: 0.25rem;
433
- transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
434
- }
435
- .btn i, .btn svg { /* Icon spacing */
436
- margin-right: 0.5rem;
437
- }
438
- .btn-sm {
439
- padding: 0.25rem 0.5rem;
440
- font-size: 0.875rem;
441
- border-radius: 0.2rem;
442
- }
443
- .btn-lg {
444
- padding: 0.8rem 1.5rem;
445
- font-size: 1.25rem;
446
- border-radius: 0.3rem;
447
  }
448
 
449
- .btn-primary {
450
- color: var(--btn-primary-text);
451
- background-color: var(--btn-primary-bg);
452
- border-color: var(--btn-primary-bg);
453
- }
454
- .btn-primary:hover {
455
- color: var(--btn-primary-text);
456
- background-color: #2980b9; /* Darker primary */
457
- border-color: #2573a7;
458
- }
459
- .btn-primary:focus {
460
- box-shadow: 0 0 0 0.2rem rgba(var(--primary-color-rgb, 52, 152, 219), 0.5);
461
- }
462
- .btn-primary:disabled {
463
- background-color: var(--btn-primary-bg);
464
- border-color: var(--btn-primary-bg);
465
- opacity: 0.65;
466
  }
467
 
468
- .btn-secondary {
469
- color: var(--btn-secondary-text);
470
- background-color: var(--btn-secondary-bg);
471
- border-color: var(--btn-secondary-bg);
472
- }
473
- .btn-secondary:hover {
474
- color: var(--btn-secondary-text);
475
- background-color: #5a6268; /* Darker secondary */
476
- border-color: #545b62;
477
  }
478
 
479
- .btn-success { color: #fff; background-color: var(--success-color); border-color: var(--success-color); }
480
- .btn-success:hover { background-color: #25a25a; border-color: #239955; }
481
- .btn-danger { color: #fff; background-color: var(--danger-color); border-color: var(--danger-color); }
482
- .btn-danger:hover { background-color: #c82333; border-color: #bd2130; }
483
- .btn-warning { color: #212529; background-color: var(--warning-color); border-color: var(--warning-color); }
484
- .btn-warning:hover { color: #212529; background-color: #e0a800; border-color: #d39e00; }
485
- .btn-info { color: #fff; background-color: var(--info-color); border-color: var(--info-color); }
486
- .btn-info:hover { background-color: #2980b9; border-color: #2573a7; }
487
 
488
- /* --- Admin Section Specific Styles --- */
489
- .admin-container {
490
  background-color: var(--card-bg);
491
- padding: 2rem;
492
  border-radius: 8px;
493
- box-shadow: var(--shadow);
494
- border: 1px solid var(--border-color);
495
- }
496
- .admin-title {
497
- font-size: 1.8rem;
498
- margin-bottom: 1.5rem;
499
- padding-bottom: 0.75rem;
500
- border-bottom: 1px solid var(--border-color);
501
- }
502
- .admin-sidebar {
503
- background-color: var(--card-bg);
504
  padding: 1.5rem;
505
- border-radius: 8px;
506
  box-shadow: var(--shadow);
507
- border: 1px solid var(--border-color);
508
- position: sticky; /* Keep sidebar visible */
509
- top: 80px; /* Adjust based on header height */
510
  }
511
- .admin-sidebar h3 {
 
 
 
512
  margin-bottom: 1rem;
513
- font-size: 1.4rem;
 
514
  }
515
- .admin-nav {
 
516
  list-style: none;
517
  padding: 0;
518
  margin: 0;
519
  }
520
- .admin-nav-item {
 
 
521
  margin-bottom: 0.5rem;
522
- }
523
- .admin-nav-link {
524
- display: block;
525
- padding: 0.75rem 1rem;
526
- color: var(--text-color);
527
- text-decoration: none;
528
  border-radius: 4px;
529
- transition: background-color 0.2s ease, color 0.2s ease;
530
- }
531
- .admin-nav-link i {
532
- margin-right: 0.8rem;
533
- width: 20px; /* Align icons */
534
- text-align: center;
535
- color: var(--muted-color);
536
- transition: color 0.2s ease;
537
- }
538
- .admin-nav-link:hover {
539
- background-color: var(--sidebar-hover-bg);
540
- color: var(--primary-color);
541
- text-decoration: none;
542
  }
543
- .admin-nav-link:hover i {
544
- color: var(--primary-color);
 
545
  }
546
- .admin-nav-link.active {
 
547
  background-color: var(--primary-color);
548
  color: white;
549
- font-weight: 500;
550
  }
551
- .admin-nav-link.active i {
552
- color: white;
553
- }
554
- .admin-card { /* Dashboard cards */
555
  background-color: var(--card-bg);
556
- border: 1px solid var(--border-color);
557
  border-radius: 8px;
558
- padding: 1.5rem;
559
- margin-bottom: 1.5rem;
560
  box-shadow: var(--shadow);
561
- transition: transform 0.3s ease, box-shadow 0.3s ease;
562
- text-decoration: none;
563
- color: inherit;
564
- display: block;
565
  }
566
- .admin-card:hover {
567
- transform: translateY(-5px);
568
- box-shadow: var(--hover-shadow);
569
- text-decoration: none;
570
- color: inherit;
571
- }
572
- .admin-card-title {
573
- font-size: 1.3rem;
574
- margin-bottom: 1rem;
575
- }
576
- .admin-stat {
577
  font-size: 2rem;
578
- font-weight: bold;
579
- color: var(--primary-color);
 
 
580
  }
581
 
582
- /* --- Block Editor Styles (`edit_texte.html`) --- */
583
- #blocks-container {
584
- margin-top: 1.5rem;
585
- }
586
- .block-editor {
587
- background-color: var(--block-bg);
588
- padding: 20px;
589
- border: 1px solid var(--block-border);
590
- border-radius: 8px;
591
- box-shadow: var(--shadow);
592
- position: relative; /* For potential absolute elements inside */
593
- transition: all 0.3s ease; /* For ghost effect */
594
- }
595
- .block-editor-header {
596
- display: flex;
597
- justify-content: space-between;
598
- align-items: center;
599
- margin-bottom: 15px;
600
- padding-bottom: 10px;
601
- border-bottom: 1px solid var(--border-color);
602
- }
603
- .block-handle {
604
- cursor: move;
605
- color: var(--muted-color);
606
- padding-right: 15px; /* More space next to handle */
607
- font-size: 1.2rem;
608
- line-height: 1;
609
- }
610
- .block-handle:hover {
611
- color: var(--primary-color);
612
- }
613
- .block-editor-title {
614
- margin: 0;
615
- font-size: 1.2rem;
616
- font-weight: 600;
617
- flex-grow: 1;
618
- }
619
- .block-editor-actions .btn {
620
- padding: 0.3rem 0.6rem; /* Smaller padding for action buttons */
621
- }
622
- .delete-block-btn i {
623
- pointer-events: none; /* Ensure clicking icon triggers button */
624
- margin-right: 0; /* No extra margin for icon-only buttons */
625
- }
626
- .block-ghost { /* Style for SortableJS ghost */
627
- opacity: 0.5;
628
- background: var(--sidebar-hover-bg);
629
- border: 2px dashed var(--primary-color);
630
  }
631
 
632
- /* Quill Editor Integration */
633
- .block-content-editor {
634
- /* The container div Quill uses */
635
- border-radius: 4px; /* Match form controls */
636
- }
637
- .ql-toolbar.ql-snow {
638
- border: 1px solid var(--ql-border-color);
639
- border-bottom: 0;
640
- border-radius: 4px 4px 0 0;
641
- background-color: var(--ql-toolbar-bg);
642
- padding: 8px;
643
- }
644
- .ql-container.ql-snow {
645
- border: 1px solid var(--ql-border-color);
646
- border-radius: 0 0 4px 4px;
647
- background-color: var(--ql-editor-bg);
648
- color: var(--text-color);
649
- min-height: 150px; /* Ensure minimum editor height */
650
- font-size: 1rem; /* Match base font size */
651
- line-height: 1.6; /* Match base line height */
652
- }
653
- /* Quill Theme Colors */
654
- .ql-snow .ql-stroke { stroke: var(--ql-stroke-color); }
655
- .ql-snow .ql-fill { fill: var(--ql-fill-color); }
656
- .ql-snow .ql-picker-label, .ql-snow .ql-picker-options .ql-picker-item { color: var(--ql-picker-color); }
657
- /* Quill Code Block */
658
- .ql-snow .ql-syntax {
659
- background-color: var(--code-bg);
660
- color: var(--code-text);
661
- padding: 0.5em 1em;
662
- border-radius: 3px;
663
- white-space: pre-wrap;
664
- font-family: monospace;
665
- }
666
- /* Quill Focus Outline */
667
- .ql-container.ql-snow:focus-within {
668
- border-color: var(--primary-color);
669
- box-shadow: 0 0 0 0.2rem rgba(var(--primary-color-rgb, 52, 152, 219), 0.25);
670
  }
671
 
672
- /* Block Image Styles */
673
- .block-image-container {
674
- margin-bottom: 10px;
675
- margin-top: 10px;
676
- }
677
- .image-preview {
678
- max-height: 150px;
679
- max-width: 100%; /* Prevent overflow */
680
- object-fit: contain;
681
- border-radius: 4px;
682
- border: 1px solid var(--border-color);
683
- background-color: var(--background-color);
684
- display: block; /* Remove extra space below */
685
- }
686
- #upload-image-preview { /* Preview in upload form */
687
- max-height: 100px;
688
- margin-bottom: 10px;
689
- display: block;
690
- border: 1px solid var(--border-color);
691
- border-radius: 4px;
692
- background-color: var(--background-color);
693
- }
694
- .image-position-controls {
695
- transition: opacity 0.3s ease;
696
  }
697
- .image-position-controls.d-none {
698
- opacity: 0;
699
- height: 0;
700
- overflow: hidden;
701
- margin-top: 0 !important;
702
- padding-top: 0 !important;
703
- padding-bottom: 0 !important;
704
- border: none !important;
705
  }
706
 
 
 
 
 
 
707
 
708
- /* --- Image Gallery Modal --- */
709
- .modal-content {
710
- background-color: var(--modal-bg);
711
  color: var(--text-color);
712
  border: 1px solid var(--border-color);
713
- }
714
- .modal-header {
715
- border-bottom: 1px solid var(--border-color);
716
- }
717
- .modal-footer {
718
- border-top: 1px solid var(--border-color);
719
- }
720
- .btn-close { /* Style Bootstrap's close button */
721
- filter: var(--text-color) == '#e0e0e0' ? invert(1) grayscale(100%) brightness(200%) : none;
722
- }
723
- .gallery-item {
724
- text-align: center;
725
- margin-bottom: 1rem;
726
- }
727
- .gallery-image {
728
- transition: transform 0.2s ease, box-shadow 0.2s ease;
729
- cursor: pointer;
730
- border: 2px solid transparent; /* Border shown on hover */
731
- padding: 3px;
732
  border-radius: 4px;
733
- max-width: 100%;
734
- height: auto;
735
- background-color: var(--background-color); /* Background behind transparent images */
736
  }
737
- .gallery-image:hover {
738
- transform: scale(1.05);
739
  border-color: var(--primary-color);
740
- box-shadow: var(--hover-shadow);
 
741
  }
742
- .gallery-item small {
 
743
  display: block;
744
- margin-top: 0.5rem;
745
- font-size: 0.8rem;
746
- color: var(--muted-color);
747
- word-wrap: break-word;
748
- line-height: 1.3;
749
  }
750
 
751
- /* --- Alerts --- */
752
- .alert {
753
- padding: 1rem;
754
- margin-bottom: 1rem;
755
- border-radius: 4px;
756
- border: 1px solid transparent;
757
- position: relative;
758
  }
759
- .alert-dismissible .btn-close {
760
- position: absolute;
761
- top: 0;
762
- right: 0;
763
- z-index: 2;
764
- padding: 1.25rem 1rem;
 
 
 
 
 
 
 
 
 
765
  }
766
 
767
- .alert-success { color: #0f5132; background-color: #d1e7dd; border-color: #badbcc; }
768
- [data-theme="dark"] .alert-success { color: #75b798; background-color: #192c23; border-color: #254134; }
769
- .alert-danger { color: #842029; background-color: #f8d7da; border-color: #f5c2c7; }
770
- [data-theme="dark"] .alert-danger { color: #ea868f; background-color: #341a1d; border-color: #50272c; }
771
- .alert-warning { color: #664d03; background-color: #fff3cd; border-color: #ffecb5; }
772
- [data-theme="dark"] .alert-warning { color: #ffda6a; background-color: #33270a; border-color: #4d3b0f; }
773
- .alert-info { color: #055160; background-color: #cff4fc; border-color: #b6effb; }
774
- [data-theme="dark"] .alert-info { color: #6edff6; background-color: #0f2d36; border-color: #164350; }
775
 
 
 
 
 
776
 
777
- /* --- Utility Classes --- */
778
- .text-center { text-align: center !important; }
779
- .mb-1 { margin-bottom: 0.5rem !important; }
780
- .mb-2 { margin-bottom: 1rem !important; }
781
- .mb-3 { margin-bottom: 1.5rem !important; }
782
- .mb-4 { margin-bottom: 2rem !important; }
783
- .mt-1 { margin-top: 0.5rem !important; }
784
- .mt-2 { margin-top: 1rem !important; }
785
- .mt-3 { margin-top: 1.5rem !important; }
786
- .mt-4 { margin-top: 2rem !important; }
787
- .ml-2 { margin-left: 0.5rem !important; } /* Used on remove image button */
788
- .float-end { float: right !important; }
789
- .d-none { display: none !important; }
790
- .d-block { display: block !important; }
791
- .d-flex { display: flex !important; }
792
- .align-items-center { align-items: center !important; }
793
- .justify-content-between { justify-content: space-between !important; }
794
- .img-fluid { max-width: 100%; height: auto; }
795
- .text-muted { color: var(--muted-color) !important; }
796
-
797
- /* --- Responsiveness --- */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
798
  @media (max-width: 992px) {
799
- .admin-sidebar {
800
- position: static; /* Unstick sidebar */
801
- margin-bottom: 2rem;
802
- }
803
- .row > .col-md-3, .row > .col-md-9 { /* Reset Bootstrap columns */
804
- width: 100%;
805
- flex: 0 0 auto;
806
- }
807
  }
808
 
809
  @media (max-width: 768px) {
 
 
 
 
 
 
 
 
 
 
 
 
 
810
  .sidebar {
811
- width: 85%;
812
- max-width: 320px;
813
  }
 
 
814
  .site-title {
815
- font-size: 1.5rem;
816
- text-align: left;
817
- margin-left: 0.5rem;
818
  }
 
819
  .header-actions {
820
  margin-left: auto; /* Push actions to the right */
821
  }
822
- .admin-title {
823
- font-size: 1.6rem;
824
- }
825
- .btn-lg { /* Make large buttons slightly smaller */
826
- padding: 0.7rem 1.3rem;
827
- font-size: 1.1rem;
828
- }
829
- /* Adjust modal size for smaller screens if XL is too big */
830
- .modal-xl { max-width: 95%; }
831
  }
832
 
 
833
  @media (max-width: 576px) {
834
- .header-container, .container, .footer-content {
835
- padding: 0 10px; /* Less padding on very small screens */
836
- }
837
- .site-title {
838
- font-size: 1.3rem;
839
- }
840
- .burger-menu-button {
841
- font-size: 1.4rem;
842
- margin-right: 0.5rem;
843
  }
844
- .theme-toggle {
845
- font-size: 1.2rem;
 
846
  }
847
- .admin-container, .admin-sidebar {
 
848
  padding: 1.5rem;
849
  }
850
- .block-editor {
851
- padding: 15px;
 
852
  }
 
853
  .footer-content {
854
- flex-direction: column;
855
  align-items: center;
856
  text-align: center;
857
  }
 
 
 
 
858
  .feedback-form {
859
- width: 100%;
860
  margin-top: 1.5rem;
861
  }
862
- /* Further reduce modal width */
863
- .modal-xl { max-width: 100%; margin: 0.5rem; }
864
- .modal-dialog { margin: 0.5rem; }
865
  }
866
 
867
- /* --- Animations (Optional) --- */
868
- @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }
869
- .fade-in { animation: fadeIn 0.5s ease-in forwards; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
870
 
871
- @keyframes slideInUp { from { transform: translateY(30px); opacity: 0; } to { transform: translateY(0); opacity: 1; } }
872
- .slide-in-up { animation: slideInUp 0.5s ease-out forwards; }
 
 
 
 
 
 
 
 
 
1
+ /* Base Styles & Theme Variables */
 
 
2
  :root {
3
  /* Light theme */
4
  --background-color: #f8f9fa;
5
  --text-color: #212529;
6
+ --primary-color: #3498db;
7
+ --secondary-color: #2ecc71;
8
+ --accent-color: #e74c3c;
9
+ --muted-color: #95a5a6;
 
 
 
10
  --border-color: #dee2e6;
11
  --card-bg: #ffffff;
12
  --header-bg: #ffffff;
13
  --footer-bg: #f1f1f1;
14
+ --shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
15
+ --hover-shadow: 0 5px 15px rgba(0, 0, 0, 0.1);
16
+ --block-bg: #f8f9fa;
17
+ --block-border: 1px solid #dee2e6;
18
  --input-bg: #ffffff;
 
 
 
19
  --btn-primary-bg: var(--primary-color);
20
  --btn-primary-text: #ffffff;
21
+ --btn-secondary-bg: #6c757d;
22
  --btn-secondary-text: #ffffff;
23
+ --modal-bg: #ffffff;
24
+ --sidebar-bg: #ffffff; /* Added for consistency */
25
+ --sidebar-border: #dee2e6; /* Added */
26
+ --sidebar-hover-bg: rgba(52, 152, 219, 0.1); /* Added */
 
 
 
 
 
 
27
  }
28
 
29
  [data-theme="dark"] {
30
  /* Dark theme */
31
  --background-color: #121212;
32
  --text-color: #e0e0e0;
33
+ --primary-color: #3498db;
34
+ --secondary-color: #2ecc71;
35
+ --accent-color: #e74c3c;
 
 
 
36
  --muted-color: #95a5a6;
37
  --border-color: #333333;
38
  --card-bg: #1e1e1e;
39
  --header-bg: #1a1a1a;
40
  --footer-bg: #1a1a1a;
41
+ --shadow: 0 2px 5px rgba(0, 0, 0, 0.3);
42
+ --hover-shadow: 0 5px 15px rgba(0, 0, 0, 0.3);
43
+ --block-bg: #1e1e1e;
44
+ --block-border: 1px solid #333333;
45
  --input-bg: #2c2c2c;
 
 
 
46
  --btn-primary-bg: var(--primary-color);
47
  --btn-primary-text: #ffffff;
48
+ --btn-secondary-bg: #555555;
49
  --btn-secondary-text: #ffffff;
50
+ --modal-bg: #1e1e1e;
51
+ --sidebar-bg: #1e1e1e; /* Added for dark theme */
52
+ --sidebar-border: #333333; /* Added */
53
+ --sidebar-hover-bg: rgba(52, 152, 219, 0.2); /* Slightly different hover for dark */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
54
  }
55
 
56
+ /* General Styles */
57
  body {
58
  background-color: var(--background-color);
59
  color: var(--text-color);
 
74
  }
75
 
76
  a:hover {
77
+ color: #2980b9;
78
  text-decoration: underline;
79
  }
80
 
81
+ /* Header Styles */
 
 
 
 
 
 
 
 
 
82
  .main-header {
83
  background-color: var(--header-bg);
84
+ padding: 1rem 0;
85
  box-shadow: var(--shadow);
86
  position: sticky;
87
  top: 0;
88
+ z-index: 1030; /* Ensure header is above general content but below modals/sidebars if needed */
89
  transition: background-color 0.3s ease, box-shadow 0.3s ease;
 
90
  }
91
+
92
+ /* MODIFIED: Header Container Layout */
93
  .header-container {
94
  display: flex;
95
  align-items: center;
96
+ /* Removed justify-content: space-between; to accommodate burger */
 
 
97
  }
98
+
99
+ /* NEW: Burger Menu Button */
100
  .burger-menu-button {
101
  background: none;
102
  border: none;
103
+ font-size: 1.8rem; /* Match site title size */
104
  color: var(--text-color);
105
  cursor: pointer;
106
  padding: 0.5rem;
107
+ margin-right: 1rem; /* Space between burger and title */
108
  line-height: 1;
109
  transition: color 0.3s ease;
110
  }
111
+
112
  .burger-menu-button:hover {
113
  color: var(--primary-color);
114
  }
115
+
116
+ /* MODIFIED: Site Title Layout */
117
  .site-title {
118
+ flex-grow: 1; /* Allow title to take available space */
119
+ text-align: center; /* Center title between burger and actions */
120
+ font-size: 1.8rem;
121
+ font-weight: bold;
122
+ margin: 0; /* Remove default margins */
123
  }
124
+
125
  .site-title a {
126
+ color: var(--text-color);
127
  text-decoration: none;
128
  }
129
+
130
+ /* Header Actions (Theme toggle, Admin) - Ensure they stay aligned */
131
  .header-actions {
132
  display: flex;
133
  align-items: center;
134
+ margin-left: 1rem; /* Space between title and actions */
135
  }
136
+
137
+
138
+ /* Theme Toggle */
139
  .theme-toggle {
140
  background: none;
141
  border: none;
142
  cursor: pointer;
143
  color: var(--text-color);
144
+ font-size: 1.5rem;
145
  padding: 0.5rem;
146
  transition: color 0.3s ease, transform 0.3s ease;
147
  }
148
+
149
  .theme-toggle:hover {
150
  color: var(--primary-color);
151
  transform: rotate(15deg);
152
  }
153
 
154
+ /* Main Content */
155
  .main-content {
156
+ flex: 1;
157
+ padding: 2rem 0; /* Maintain padding for content area */
158
+ /* Removed container adjustments, rely on bootstrap's container inside */
 
 
 
 
159
  }
160
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
161
 
162
+ /* --- NEW: Sidebar Styles --- */
163
 
164
+ /* Sidebar Overlay */
165
  .sidebar-overlay {
166
  position: fixed;
167
  top: 0;
168
  left: 0;
169
  width: 100%;
170
  height: 100%;
171
+ background-color: rgba(0, 0, 0, 0.5); /* Semi-transparent black */
172
+ z-index: 1040; /* Below sidebars, above content */
173
  opacity: 0;
174
  visibility: hidden;
175
  transition: opacity 0.3s ease-in-out, visibility 0.3s ease-in-out;
176
  }
177
+
178
  .sidebar-overlay.active {
179
  opacity: 1;
180
  visibility: visible;
181
  }
182
+
183
+ /* Sidebar Base Styles */
184
  .sidebar {
185
  position: fixed;
186
  top: 0;
187
+ left: 0; /* Both sidebars originate from the left */
188
+ width: 300px; /* Default width, adjust as needed */
189
  height: 100%;
190
+ background-color: var(--sidebar-bg); /* Use theme variable */
191
  box-shadow: var(--shadow);
192
+ z-index: 1050; /* Above overlay */
193
  display: flex;
194
  flex-direction: column;
195
+ transform: translateX(-100%); /* Initially hidden off-screen to the left */
196
  transition: transform 0.3s ease-in-out;
197
+ border-right: 1px solid var(--sidebar-border); /* Use theme variable */
198
  }
199
+
200
  .sidebar.active {
201
+ transform: translateX(0); /* Slide in from the left */
202
  }
203
+
204
+ /* Sidebar Header */
205
  .sidebar-header {
206
  display: flex;
207
  justify-content: space-between;
208
  align-items: center;
209
  padding: 1rem 1.5rem;
210
+ border-bottom: 1px solid var(--sidebar-border); /* Use theme variable */
211
+ background-color: var(--header-bg); /* Optional: Match header background */
212
+ flex-shrink: 0; /* Prevent header from shrinking */
213
  }
214
+
215
  .sidebar-header h4 {
216
  margin: 0;
217
  font-size: 1.2rem;
218
  font-weight: 600;
219
+ flex-grow: 1; /* Allow title to take space */
220
+ margin-left: 10px; /* Space after back button if present */
221
+ overflow: hidden; /* Prevent long titles from breaking layout */
222
  white-space: nowrap;
223
  text-overflow: ellipsis;
224
  }
225
+
226
+ /* Sidebar Back and Close Buttons */
227
  .sidebar-back-button,
228
  .close-sidebar-btn {
229
  background: none;
 
239
  .close-sidebar-btn:hover {
240
  color: var(--text-color);
241
  }
242
+
243
+ /* Sidebar List (Matières & Sous-catégories) */
244
  .sidebar-list {
245
  list-style: none;
246
  padding: 0;
247
  margin: 0;
248
+ flex-grow: 1; /* Take remaining vertical space */
249
+ overflow-y: auto; /* Enable vertical scrolling for long lists */
250
+ overflow-x: hidden; /* Prevent horizontal scrollbars */
251
  }
252
+
253
  .sidebar-list li {
254
  padding: 0.8rem 1.5rem;
255
  cursor: pointer;
256
+ border-bottom: 1px solid var(--sidebar-border); /* Use theme variable */
257
  transition: background-color 0.2s ease;
258
  display: flex;
259
+ justify-content: space-between; /* Push icon to the right */
260
  align-items: center;
261
+ white-space: nowrap; /* Prevent text wrapping */
262
  }
263
+
264
  .sidebar-list li:last-child {
265
+ border-bottom: none; /* Remove border from last item */
266
  }
267
+
268
  .sidebar-list li:hover {
269
+ background-color: var(--sidebar-hover-bg); /* Use theme variable */
270
  }
271
+
272
  .sidebar-list li i.fa-chevron-right,
273
+ .sidebar-list li i.fa-arrow-left { /* Style for icons inside list items */
274
  color: var(--muted-color);
275
  font-size: 0.9em;
276
+ margin-left: 0.5rem; /* Space between text and icon */
277
  }
278
+
279
+ /* Optional: Style for active/selected item in sidebar */
280
+ .sidebar-list li.active {
281
  background-color: var(--primary-color);
282
  color: white;
 
283
  }
284
+ .sidebar-list li.active i { /* Make icon white too */
285
  color: white;
286
  }
287
 
288
+
289
+ /* --- End of Sidebar Styles --- */
290
+
291
+
292
+ /* NEW: Initial Instructions Area */
293
+ .initial-instructions {
294
+ background-color: var(--card-bg);
295
+ padding: 2rem;
296
+ border-radius: 8px;
297
+ box-shadow: var(--shadow);
298
+ border: 1px solid var(--border-color);
299
+ margin-top: 2rem; /* Adjust as needed */
300
+ text-align: center; /* Center content */
301
+ }
302
+
303
+ /* --- Original Styles (with minor adjustments if needed) --- */
304
+
305
+ /* Flash Messages Container */
306
  .flash-container {
307
+ position: relative; /* Keep in normal flow */
308
+ z-index: 100; /* Below header but above main content */
 
309
  }
310
 
311
+ /* Subject Selection Cards (Original - No longer used on index, but might be elsewhere) */
312
+ .subject-card {
313
+ background-color: var(--card-bg);
314
+ border-radius: 8px;
315
+ padding: 1.5rem;
316
  margin-bottom: 1.5rem;
317
+ box-shadow: var(--shadow);
318
+ transition: box-shadow 0.3s ease, transform 0.3s ease;
319
+ cursor: pointer;
320
  }
321
+
322
+ .subject-card:hover {
323
+ box-shadow: var(--hover-shadow);
324
+ transform: translateY(-5px);
 
325
  }
326
+
327
+ .subject-card h3 {
328
+ margin-top: 0;
329
+ margin-bottom: 1rem;
330
+ font-size: 1.5rem;
 
 
 
 
 
 
 
 
 
331
  color: var(--text-color);
 
 
 
 
 
 
 
 
 
332
  }
333
+
334
+ /* Subject Color-Coding */
335
+ .subject-indicator {
336
+ width: 100%;
337
+ height: 8px;
 
 
 
 
 
 
338
  border-radius: 4px;
339
+ margin-bottom: 1rem;
 
 
340
  }
341
+
342
+ /* Content Blocks Styling (Used in Content Display Section) */
343
+ .content-block {
344
+ background-color: var(--block-bg);
345
+ border-radius: 8px;
346
+ padding: 1.5rem;
347
+ margin-bottom: 2rem;
348
+ box-shadow: var(--shadow);
349
+ border: var(--block-border);
350
+ transition: box-shadow 0.3s ease;
351
+ overflow: hidden; /* Prevent content spill */
352
+ /* border-left: 4px solid transparent; -> Now handled dynamically by JS or remove if not needed */
353
  }
354
+
355
+ .content-block:hover {
356
+ box-shadow: var(--hover-shadow);
357
  }
358
+
359
+ .content-block-title {
360
+ font-size: 1.4rem;
361
+ font-weight: bold;
362
+ margin-top: 0;
363
+ margin-bottom: 1rem;
364
+ color: var(--text-color);
365
+ padding-bottom: 0.5rem;
366
+ border-bottom: 2px solid var(--primary-color); /* Default color, JS might override */
367
  }
368
+
369
+ .content-block-content {
370
+ line-height: 1.7;
371
  }
372
+
373
+ /* Image positioning styles */
374
+ .block-with-image {
375
+ display: flex;
376
+ flex-wrap: wrap;
377
+ gap: 1.5rem;
378
+ align-items: flex-start;
379
  }
380
 
381
+ .block-with-image.image-left { flex-direction: row; }
382
+ .block-with-image.image-right { flex-direction: row-reverse; }
383
+ .block-with-image.image-top { flex-direction: column; }
384
 
385
+ .block-image-container {
386
+ flex: 0 0 auto;
387
+ max-width: 30%; /* Default max width for side images */
388
+ margin-bottom: 1rem; /* Spacing below image if wrapped */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
389
  }
390
 
391
+ .block-with-image.image-top .block-image-container {
392
+ max-width: 100%; /* Full width for top images */
393
+ margin-bottom: 1.5rem;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
394
  }
395
 
396
+ .block-image {
397
+ width: 100%;
398
+ height: auto;
399
+ border-radius: 6px;
400
+ box-shadow: var(--shadow);
401
+ display: block; /* Prevent extra space below image */
 
 
 
402
  }
403
 
404
+ .block-content-container {
405
+ flex: 1; /* Take remaining space */
406
+ min-width: 60%; /* Ensure text has enough space on wider screens */
407
+ }
 
 
 
 
408
 
409
+ /* Category Selection UI (Original - No longer used on index) */
410
+ .selection-container {
411
  background-color: var(--card-bg);
 
412
  border-radius: 8px;
 
 
 
 
 
 
 
 
 
 
 
413
  padding: 1.5rem;
414
+ margin-bottom: 2rem;
415
  box-shadow: var(--shadow);
 
 
 
416
  }
417
+
418
+ .selection-title {
419
+ font-size: 1.2rem;
420
+ font-weight: 600;
421
  margin-bottom: 1rem;
422
+ padding-bottom: 0.5rem;
423
+ border-bottom: 1px solid var(--border-color);
424
  }
425
+
426
+ .selection-list {
427
  list-style: none;
428
  padding: 0;
429
  margin: 0;
430
  }
431
+
432
+ .selection-item {
433
+ padding: 0.5rem 0.8rem;
434
  margin-bottom: 0.5rem;
 
 
 
 
 
 
435
  border-radius: 4px;
436
+ cursor: pointer;
437
+ transition: background-color 0.3s ease;
 
 
 
 
 
 
 
 
 
 
 
438
  }
439
+
440
+ .selection-item:hover {
441
+ background-color: rgba(52, 152, 219, 0.1);
442
  }
443
+
444
+ .selection-item.active {
445
  background-color: var(--primary-color);
446
  color: white;
 
447
  }
448
+
449
+ /* Content Viewer (Container for title and blocks) */
450
+ .content-viewer {
 
451
  background-color: var(--card-bg);
 
452
  border-radius: 8px;
453
+ padding: 2rem;
 
454
  box-shadow: var(--shadow);
455
+ margin-bottom: 2rem;
 
 
 
456
  }
457
+
458
+ .content-title {
 
 
 
 
 
 
 
 
 
459
  font-size: 2rem;
460
+ margin-top: 0;
461
+ margin-bottom: 1.5rem;
462
+ padding-bottom: 0.5rem;
463
+ border-bottom: 2px solid var(--primary-color); /* Default color, JS might override */
464
  }
465
 
466
+ /* Buttons */
467
+ .btn {
468
+ display: inline-block;
469
+ font-weight: 500;
470
+ text-align: center;
471
+ white-space: nowrap;
472
+ vertical-align: middle;
473
+ user-select: none;
474
+ border: 1px solid transparent;
475
+ padding: 0.5rem 1rem;
476
+ font-size: 1rem;
477
+ line-height: 1.5;
478
+ border-radius: 0.25rem;
479
+ transition: all 0.15s ease-in-out;
480
+ cursor: pointer;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
481
  }
482
 
483
+ .btn-primary {
484
+ background-color: var(--btn-primary-bg);
485
+ color: var(--btn-primary-text);
486
+ border-color: var(--btn-primary-bg); /* Added for consistency */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
487
  }
488
 
489
+ .btn-primary:hover {
490
+ background-color: #2980b9; /* Darken primary */
491
+ border-color: #2980b9;
492
+ color: white;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
493
  }
494
+
495
+ .btn-secondary {
496
+ background-color: var(--btn-secondary-bg);
497
+ color: var(--btn-secondary-text);
498
+ border-color: var(--btn-secondary-bg); /* Added for consistency */
 
 
 
499
  }
500
 
501
+ .btn-secondary:hover {
502
+ background-color: #5a6268; /* Darken secondary */
503
+ border-color: #5a6268;
504
+ color: white;
505
+ }
506
 
507
+ /* Form Elements */
508
+ input, select, textarea {
509
+ background-color: var(--input-bg);
510
  color: var(--text-color);
511
  border: 1px solid var(--border-color);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
512
  border-radius: 4px;
513
+ padding: 0.75rem 1rem;
514
+ width: 100%;
515
+ transition: border-color 0.3s ease, box-shadow 0.3s ease;
516
  }
517
+
518
+ input:focus, select:focus, textarea:focus {
519
  border-color: var(--primary-color);
520
+ outline: none;
521
+ box-shadow: 0 0 0 3px rgba(52, 152, 219, 0.25);
522
  }
523
+
524
+ label {
525
  display: block;
526
+ margin-bottom: 0.5rem;
527
+ font-weight: 500;
 
 
 
528
  }
529
 
530
+ .form-group {
531
+ margin-bottom: 1.5rem;
 
 
 
 
 
532
  }
533
+
534
+ /* Footer */
535
+ .main-footer {
536
+ background-color: var(--footer-bg);
537
+ padding: 2rem 0;
538
+ box-shadow: 0 -2px 5px rgba(0, 0, 0, 0.05);
539
+ margin-top: auto; /* Push footer to bottom */
540
+ flex-shrink: 0; /* Prevent footer from shrinking */
541
+ }
542
+
543
+ .footer-content {
544
+ display: flex;
545
+ justify-content: space-between;
546
+ flex-wrap: wrap;
547
+ gap: 1rem; /* Add gap for wrapping */
548
  }
549
 
550
+ .footer-links {
551
+ list-style: none;
552
+ padding: 0;
553
+ margin: 0; /* Reset margin */
554
+ display: flex;
555
+ flex-wrap: wrap; /* Allow links to wrap */
556
+ gap: 1.5rem;
557
+ }
558
 
559
+ .feedback-form {
560
+ margin-top: 1rem;
561
+ max-width: 400px; /* Limit width of feedback form */
562
+ }
563
 
564
+ .feedback-title {
565
+ font-size: 1.2rem;
566
+ margin-bottom: 0.75rem;
567
+ }
568
+
569
+ /* Admin specific styles (Keep if used on other pages) */
570
+ .admin-container { /* ... Keep original ... */ }
571
+ .admin-title { /* ... Keep original ... */ }
572
+ .admin-sidebar { /* ... Keep original ... */ }
573
+ .admin-nav { /* ... Keep original ... */ }
574
+ .admin-nav-item { /* ... Keep original ... */ }
575
+ .admin-nav-link { /* ... Keep original ... */ }
576
+ .admin-nav-link i { /* ... Keep original ... */ }
577
+ .admin-card { /* ... Keep original ... */ }
578
+ .admin-card-title { /* ... Keep original ... */ }
579
+ .admin-stat { /* ... Keep original ... */ }
580
+
581
+ /* Editor styles (Keep if used on other pages) */
582
+ .editor-container { /* ... Keep original ... */ }
583
+ .block-editor { /* ... Keep original ... */ }
584
+ .block-editor-header { /* ... Keep original ... */ }
585
+ .block-editor-title { /* ... Keep original ... */ }
586
+ .block-editor-actions { /* ... Keep original ... */ }
587
+ .block-handle { /* ... Keep original ... */ }
588
+ .image-preview { /* ... Keep original ... */ }
589
+ .image-gallery { /* ... Keep original ... */ }
590
+ .gallery-item { /* ... Keep original ... */ }
591
+ .gallery-image { /* ... Keep original ... */ }
592
+ .gallery-image-select { /* ... Keep original ... */ }
593
+
594
+ /* Login screen (Keep if used) */
595
+ .login-container { /* ... Keep original ... */ }
596
+ .login-logo { /* ... Keep original ... */ }
597
+ .login-title { /* ... Keep original ... */ }
598
+
599
+ /* Responsive design adjustments */
600
  @media (max-width: 992px) {
601
+ /* No change needed here if using Bootstrap's container correctly */
 
 
 
 
 
 
 
602
  }
603
 
604
  @media (max-width: 768px) {
605
+ /* Content Block Images: Stack vertically */
606
+ .block-with-image {
607
+ flex-direction: column !important; /* Force column layout */
608
+ }
609
+ .block-image-container {
610
+ max-width: 100%; /* Image takes full width */
611
+ margin-bottom: 1.5rem; /* Space below image */
612
+ }
613
+ .block-content-container {
614
+ min-width: 100%; /* Text takes full width */
615
+ }
616
+
617
+ /* Sidebar width adjustment */
618
  .sidebar {
619
+ width: 85%; /* Make sidebar wider on mobile */
620
+ max-width: 320px; /* Optional: Set a max width */
621
  }
622
+
623
+ /* Optional: Adjust header layout on smaller screens */
624
  .site-title {
625
+ font-size: 1.5rem; /* Slightly smaller title */
626
+ text-align: left; /* Align title next to burger */
627
+ margin-left: 0.5rem; /* Adjust spacing */
628
  }
629
+
630
  .header-actions {
631
  margin-left: auto; /* Push actions to the right */
632
  }
 
 
 
 
 
 
 
 
 
633
  }
634
 
635
+
636
  @media (max-width: 576px) {
637
+ .subject-card { /* Style for cards if used elsewhere */
638
+ padding: 1rem;
 
 
 
 
 
 
 
639
  }
640
+
641
+ .content-viewer {
642
+ padding: 1.5rem; /* Less padding inside content area */
643
  }
644
+
645
+ .admin-container {
646
  padding: 1.5rem;
647
  }
648
+
649
+ .content-title {
650
+ font-size: 1.6rem; /* Smaller main title */
651
  }
652
+
653
  .footer-content {
654
+ flex-direction: column; /* Stack footer sections */
655
  align-items: center;
656
  text-align: center;
657
  }
658
+ .footer-links {
659
+ justify-content: center; /* Center footer links */
660
+ margin-top: 0.5rem;
661
+ }
662
  .feedback-form {
663
+ width: 100%; /* Full width feedback form */
664
  margin-top: 1.5rem;
665
  }
 
 
 
666
  }
667
 
668
+ /* Animation keyframes (Keep original) */
669
+ @keyframes fadeIn {
670
+ from { opacity: 0; }
671
+ to { opacity: 1; }
672
+ }
673
+
674
+ .fade-in {
675
+ animation: fadeIn 0.5s ease-in forwards; /* Added forwards to keep state */
676
+ }
677
+
678
+ @keyframes slideInUp {
679
+ from {
680
+ transform: translateY(50px);
681
+ opacity: 0;
682
+ }
683
+ to {
684
+ transform: translateY(0);
685
+ opacity: 1;
686
+ }
687
+ }
688
+
689
+ .slide-in-up {
690
+ animation: slideInUp 0.5s ease-out forwards; /* Added forwards */
691
+ }
692
+
693
+ /* Utility classes (Keep original) */
694
+ .text-center { text-align: center; }
695
+ .mb-1 { margin-bottom: 0.5rem !important; }
696
+ .mb-2 { margin-bottom: 1rem !important; }
697
+ .mb-3 { margin-bottom: 1.5rem !important; }
698
+ .mb-4 { margin-bottom: 2rem !important; }
699
+ .mt-1 { margin-top: 0.5rem !important; }
700
+ .mt-2 { margin-top: 1rem !important; }
701
+ .mt-3 { margin-top: 1.5rem !important; }
702
+ .mt-4 { margin-top: 2rem !important; }
703
+ .ms-2 { margin-left: 0.5rem !important; } /* Bootstrap utility */
704
+ .float-end { float: right !important; } /* Bootstrap utility */
705
+ .d-none { display: none !important; } /* Bootstrap utility */
706
+
707
+
708
+ /* Alert Styles (Keep original) */
709
+ .alert {
710
+ padding: 1rem;
711
+ margin-bottom: 1rem;
712
+ border-radius: 4px;
713
+ border: 1px solid transparent; /* Base border */
714
+ }
715
+
716
+ .alert-dismissible .btn-close {
717
+ padding: 1.25rem 1rem; /* Adjust close button padding */
718
+ }
719
+
720
+ .alert-success {
721
+ color: #0f5132;
722
+ background-color: #d1e7dd;
723
+ border-color: #badbcc;
724
+ }
725
+ [data-theme="dark"] .alert-success {
726
+ color: #75b798;
727
+ background-color: #192c23;
728
+ border-color: #254134;
729
+ }
730
+
731
+ .alert-danger {
732
+ color: #842029;
733
+ background-color: #f8d7da;
734
+ border-color: #f5c2c7;
735
+ }
736
+ [data-theme="dark"] .alert-danger {
737
+ color: #ea868f;
738
+ background-color: #341a1d;
739
+ border-color: #50272c;
740
+ }
741
+
742
+ .alert-warning {
743
+ color: #664d03;
744
+ background-color: #fff3cd;
745
+ border-color: #ffecb5;
746
+ }
747
+ [data-theme="dark"] .alert-warning {
748
+ color: #ffda6a;
749
+ background-color: #33270a;
750
+ border-color: #4d3b0f;
751
+ }
752
 
753
+ .alert-info {
754
+ color: #055160;
755
+ background-color: #cff4fc;
756
+ border-color: #b6effb;
757
+ }
758
+ [data-theme="dark"] .alert-info {
759
+ color: #6edff6;
760
+ background-color: #0f2d36;
761
+ border-color: #164350;
762
+ }