news-cms-module 0.1.2 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1620 @@
1
+ /* Global Styles Start */
2
+ @import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap");
3
+
4
+ :root {
5
+ --primary: #007bff;
6
+ --secondary: #6c757d;
7
+ --success: #28a745;
8
+ --info: #17a2b8;
9
+ --warning: #ffc107;
10
+ --danger: #dc3545;
11
+ --light: #f8f9fa;
12
+ --dark: #343a40;
13
+ --bg-color: #f4f6f9;
14
+ --white: #ffffff;
15
+ --border-color: #dee2e6;
16
+ --sidebar-width: 250px;
17
+ --header-height: 60px;
18
+ --text-color: #333;
19
+ }
20
+
21
+ * {
22
+ box-sizing: border-box;
23
+ margin: 0;
24
+ padding: 0;
25
+ }
26
+
27
+ body {
28
+ font-family: "Inter", sans-serif;
29
+ background-color: var(--bg-color);
30
+ color: var(--text-color);
31
+ min-height: 100vh;
32
+ }
33
+
34
+ hr {
35
+ border: none;
36
+ border-top: 1px solid black;
37
+ margin-top: 20px;
38
+ }
39
+
40
+ /* Global Styles End */
41
+
42
+ /* Navbar Start */
43
+ .navbar {
44
+ width: 100%;
45
+ height: 80px;
46
+ background-color: #ffffff;
47
+ color: #000000;
48
+ display: flex;
49
+ justify-content: space-between;
50
+ align-items: center;
51
+ padding: 0 50px;
52
+ position: fixed;
53
+ top: 0;
54
+ z-index: 1;
55
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
56
+ }
57
+
58
+ .logo img {
59
+ display: block;
60
+ width: 150px;
61
+ height: auto;
62
+ cursor: pointer;
63
+ }
64
+
65
+ .menu {
66
+ width: 65%;
67
+ display: flex;
68
+ justify-content: center;
69
+ align-items: center;
70
+ list-style: none;
71
+ }
72
+
73
+ .menu li {
74
+ margin: 0 20px;
75
+ }
76
+
77
+ .menu li a {
78
+ text-decoration: none;
79
+ color: #000000;
80
+ font-size: 16px;
81
+ position: relative;
82
+ transition: all 0.3s ease;
83
+ }
84
+
85
+ .menu li a::after {
86
+ content: "";
87
+ position: absolute;
88
+ left: 50%;
89
+ bottom: -5px;
90
+ height: 2px;
91
+ width: 0;
92
+ background: #0384ec;
93
+ transform: translateX(-50%);
94
+ transition: width 0.3s ease;
95
+ }
96
+
97
+ .menu li a:hover {
98
+ color: #0384ec;
99
+ }
100
+
101
+ .menu li a:hover::after {
102
+ width: 100%;
103
+ }
104
+
105
+ /* Dropdown Styles */
106
+ .dropdown {
107
+ position: relative;
108
+ }
109
+
110
+ .dropdown-menu {
111
+ position: absolute;
112
+ top: 100%;
113
+ left: 0;
114
+ background-color: #ffffff;
115
+ min-width: 180px;
116
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
117
+ border-radius: 6px;
118
+ display: none;
119
+ list-style: none;
120
+ padding: 10px 0;
121
+ z-index: 1000;
122
+ margin-top: 10px;
123
+ }
124
+
125
+ .dropdown-menu::before {
126
+ content: "";
127
+ position: absolute;
128
+ top: -10px;
129
+ left: 20px;
130
+ border-width: 5px;
131
+ border-style: solid;
132
+ border-color: transparent transparent #ffffff transparent;
133
+ }
134
+
135
+ .dropdown-menu.show {
136
+ display: block;
137
+ }
138
+
139
+ .dropdown-menu li {
140
+ margin: 0 !important;
141
+ width: 100%;
142
+ }
143
+
144
+ .dropdown-menu li a {
145
+ padding: 10px 20px;
146
+ display: block;
147
+ font-size: 14px;
148
+ color: #333333;
149
+ transition: all 0.2s ease;
150
+ text-decoration: none;
151
+ }
152
+
153
+ .dropdown-menu li a::after {
154
+ display: none;
155
+ }
156
+
157
+ .dropdown-menu li a:hover {
158
+ background-color: #f4f6f9;
159
+ color: #0384ec;
160
+ padding-left: 25px;
161
+ }
162
+
163
+ .dropdown-menu li a.dropdown-active {
164
+ color: #0384ec;
165
+ font-weight: 600;
166
+ background-color: #eef7ff;
167
+ }
168
+
169
+ .dropdown>a {
170
+ display: flex;
171
+ align-items: center;
172
+ gap: 6px;
173
+ }
174
+
175
+ .dropdown>a i {
176
+ font-size: 12px;
177
+ transition: transform 0.3s ease;
178
+ }
179
+
180
+ .dropdown.active>a i {
181
+ transform: rotate(180deg);
182
+ }
183
+
184
+ .search-login {
185
+ display: flex;
186
+ align-items: center;
187
+ gap: 10px;
188
+ }
189
+
190
+ .search-bar {
191
+ position: relative;
192
+ height: 40px;
193
+ width: 40px;
194
+ }
195
+
196
+ .search-bar i {
197
+ color: #000000;
198
+ position: absolute;
199
+ height: 100%;
200
+ width: 100%;
201
+ line-height: 40px;
202
+ text-align: center;
203
+ font-size: 16px;
204
+ font-weight: 600;
205
+ cursor: pointer;
206
+ }
207
+
208
+ .search-bar .input-box {
209
+ position: absolute;
210
+ height: 60px;
211
+ width: 300px;
212
+ background: #0384ec;
213
+ border-radius: 6px;
214
+ top: 110px;
215
+ right: calc(100% - 50px);
216
+ opacity: 0;
217
+ pointer-events: none;
218
+ transition: all 0.3s ease;
219
+ }
220
+
221
+ .navbar.showInput .search-bar .input-box {
222
+ top: 75px;
223
+ opacity: 1;
224
+ pointer-events: auto;
225
+ }
226
+
227
+ .search-bar .input-box::before {
228
+ content: "";
229
+ position: absolute;
230
+ height: 20px;
231
+ width: 20px;
232
+ background: #0384ec;
233
+ top: -6px;
234
+ right: 20px;
235
+ transform: rotate(45deg);
236
+ }
237
+
238
+ .search-bar .input-box input {
239
+ position: absolute;
240
+ height: 35px;
241
+ width: 280px;
242
+ top: 50%;
243
+ left: 50%;
244
+ transform: translate(-50%, -50%);
245
+ border: none;
246
+ border-radius: 6px;
247
+ outline: none;
248
+ padding: 0 20px;
249
+ font-size: 16px;
250
+ z-index: 99;
251
+ }
252
+
253
+ .nav-login {
254
+ list-style: none;
255
+ }
256
+
257
+ .nav-login .btn-login {
258
+ text-decoration: none;
259
+ color: #ffffff;
260
+ background-color: #0384ec;
261
+ padding: 10px 20px;
262
+ border-radius: 6px;
263
+ font-size: 16px;
264
+ transition: 0.3s ease;
265
+ }
266
+
267
+ /* Navbar End */
268
+
269
+ /* Sidebar Start */
270
+ .sidebar {
271
+ width: var(--sidebar-width);
272
+ background-color: var(--white);
273
+ border-right: 1px solid var(--border-color);
274
+ position: fixed;
275
+ height: 100vh;
276
+ padding: 20px;
277
+ display: flex;
278
+ flex-direction: column;
279
+ }
280
+
281
+ /* .brand {
282
+ font-size: 24px;
283
+ font-weight: 700;
284
+ color: #0056b3;
285
+ margin-bottom: 40px;
286
+ display: flex;
287
+ align-items: center;
288
+ gap: 10px;
289
+ }
290
+
291
+ .brand-icon {
292
+ background-color: #0056b3;
293
+ color: white;
294
+ padding: 5px;
295
+ border-radius: 4px;
296
+ } */
297
+
298
+ .nav-menu {
299
+ list-style: none;
300
+ margin-top: 30px;
301
+ }
302
+
303
+ .nav-item {
304
+ margin-bottom: 10px;
305
+ }
306
+
307
+ .nav-link {
308
+ display: flex;
309
+ align-items: center;
310
+ padding: 12px 15px;
311
+ text-decoration: none;
312
+ color: var(--text-color);
313
+ border-radius: 6px;
314
+ font-weight: 500;
315
+ gap: 10px;
316
+ transition: all 0.2s;
317
+ }
318
+
319
+ .nav-link:hover,
320
+ .nav-link.active {
321
+ background-color: var(--primary);
322
+ color: var(--white);
323
+ }
324
+
325
+ .nav-link svg {
326
+ width: 20px;
327
+ height: 20px;
328
+ }
329
+
330
+ /* Sidebar End */
331
+
332
+ /* Main Content Start */
333
+ .main-content {
334
+ margin-left: var(--sidebar-width);
335
+ flex: 1;
336
+ padding: 30px;
337
+ width: calc(100% - var(--sidebar-width));
338
+ }
339
+
340
+ /* Main Content End */
341
+
342
+ /* Stats Cards Start */
343
+ .stats-grid {
344
+ display: grid;
345
+ grid-template-columns: repeat(3, 1fr);
346
+ gap: 20px;
347
+ margin-bottom: 30px;
348
+ }
349
+
350
+ .card {
351
+ background: var(--white);
352
+ padding: 20px;
353
+ border-radius: 12px;
354
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
355
+ text-align: center;
356
+ }
357
+
358
+ .stat-number {
359
+ font-size: 36px;
360
+ font-weight: 700;
361
+ margin-bottom: 5px;
362
+ }
363
+
364
+ .stat-label {
365
+ font-weight: 600;
366
+ }
367
+
368
+ .text-blue {
369
+ color: var(--primary);
370
+ }
371
+
372
+ .text-green {
373
+ color: var(--success);
374
+ }
375
+
376
+ .text-orange {
377
+ color: #fd7e14;
378
+ }
379
+
380
+ /* Stats Cards End */
381
+
382
+ /* Dashboard Chart Start */
383
+ .chart-container {
384
+ background: var(--white);
385
+ padding: 20px;
386
+ border-radius: 12px;
387
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
388
+ }
389
+
390
+ .chart-header {
391
+ display: flex;
392
+ justify-content: space-between;
393
+ align-items: center;
394
+ margin-bottom: 20px;
395
+ }
396
+
397
+ .chart-title {
398
+ font-size: 18px;
399
+ font-weight: 700;
400
+ }
401
+
402
+ .year-select {
403
+ padding: 5px 10px;
404
+ border: 1px solid var(--border-color);
405
+ border-radius: 4px;
406
+ background-color: #e9ecef;
407
+ }
408
+
409
+ .bar-chart {
410
+ display: flex;
411
+ justify-content: space-between;
412
+ align-items: flex-end;
413
+ height: 300px;
414
+ padding-top: 20px;
415
+ padding-bottom: 10px;
416
+ gap: 10px;
417
+ }
418
+
419
+ .bar-wrapper {
420
+ display: flex;
421
+ flex-direction: column;
422
+ align-items: center;
423
+ flex: 1;
424
+ height: 100%;
425
+ justify-content: flex-end;
426
+ }
427
+
428
+ .bar {
429
+ width: 30px;
430
+ display: block;
431
+ border-radius: 4px 4px 0 0;
432
+ transition: height 0.3s ease;
433
+ background-color: #4A90E2;
434
+ }
435
+
436
+ .bar-label {
437
+ margin-top: 10px;
438
+ font-size: 12px;
439
+ color: var(--secondary);
440
+ }
441
+
442
+ /* Dashboard Chart End */
443
+
444
+ /* Management Table Start */
445
+ .toolbar {
446
+ display: flex;
447
+ justify-content: space-between;
448
+ margin-bottom: 20px;
449
+ gap: 20px;
450
+ }
451
+
452
+ .filter-group {
453
+ display: flex;
454
+ gap: 10px;
455
+ }
456
+
457
+ .btn {
458
+ padding: 10px 20px;
459
+ border: none;
460
+ border-radius: 6px;
461
+ cursor: pointer;
462
+ font-weight: 500;
463
+ display: inline-flex;
464
+ align-items: center;
465
+ gap: 8px;
466
+ text-decoration: none;
467
+ }
468
+
469
+ .btn-primary {
470
+ background-color: var(--primary);
471
+ color: white;
472
+ }
473
+
474
+ .btn-outline {
475
+ background-color: white;
476
+ color: var(--primary);
477
+ border: 1px solid var(--primary);
478
+ }
479
+
480
+ .btn-filter {
481
+ background-color: var(--primary);
482
+ color: white;
483
+ display: flex;
484
+ align-items: center;
485
+ gap: 5px;
486
+ }
487
+
488
+ .search-box {
489
+ display: flex;
490
+ align-items: center;
491
+ background: white;
492
+ border: 1px solid var(--border-color);
493
+ border-radius: 6px;
494
+ padding: 0 10px;
495
+ flex: 1;
496
+ max-width: 400px;
497
+ }
498
+
499
+ .search-input {
500
+ border: none;
501
+ padding: 10px;
502
+ width: 100%;
503
+ outline: none;
504
+ }
505
+
506
+ .table-container {
507
+ background: white;
508
+ border-radius: 12px;
509
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
510
+ overflow: visible;
511
+ }
512
+
513
+ .table {
514
+ width: 100%;
515
+ border-collapse: separate;
516
+ border-spacing: 0;
517
+ }
518
+
519
+ .table th {
520
+ background-color: #e9ecef;
521
+ text-align: left;
522
+ padding: 15px;
523
+ font-weight: 600;
524
+ color: var(--secondary);
525
+ }
526
+
527
+ .table th:first-child {
528
+ border-top-left-radius: 12px;
529
+ }
530
+
531
+ .table th:last-child {
532
+ border-top-right-radius: 12px;
533
+ }
534
+
535
+ .table td {
536
+ padding: 12px 15px;
537
+ border-bottom: 1px solid var(--border-color);
538
+ vertical-align: middle;
539
+ }
540
+
541
+ .col-title {
542
+ max-width: 250px;
543
+ /* Reduced from 300px */
544
+ }
545
+
546
+ .truncate {
547
+ white-space: nowrap;
548
+ overflow: hidden;
549
+ text-overflow: ellipsis;
550
+ display: block;
551
+ }
552
+
553
+ .col-author,
554
+ .col-category {
555
+ width: 150px;
556
+ }
557
+
558
+ .col-status {
559
+ width: 140px;
560
+ }
561
+
562
+ .col-actions {
563
+ width: 120px;
564
+ }
565
+
566
+ .badge {
567
+ padding: 4px 12px;
568
+ border-radius: 50px;
569
+ font-size: 11px;
570
+ font-weight: 700;
571
+ text-transform: capitalize;
572
+ border: none;
573
+ cursor: pointer;
574
+ display: flex;
575
+ align-items: center;
576
+ justify-content: space-between;
577
+ gap: 8px;
578
+ width: 100px;
579
+ transition: all 0.2s ease;
580
+ color: white !important;
581
+ }
582
+
583
+ .badge-published {
584
+ background-color: #007bff;
585
+ /* Blue */
586
+ }
587
+
588
+ .badge-draft {
589
+ background-color: #28a745;
590
+ /* Green */
591
+ }
592
+
593
+ .badge-archived {
594
+ background-color: #fd7e14;
595
+ /* Orange */
596
+ }
597
+
598
+ .badge:hover {
599
+ filter: brightness(0.9);
600
+ }
601
+
602
+ .badge::after {
603
+ content: " \f078";
604
+ /* fa-chevron-down */
605
+ font-family: "Font Awesome 6 Free";
606
+ font-weight: 900;
607
+ font-size: 8px;
608
+ }
609
+
610
+ .action-buttons {
611
+ display: flex;
612
+ gap: 10px;
613
+ }
614
+
615
+ .btn-icon {
616
+ background: none;
617
+ border: none;
618
+ cursor: pointer;
619
+ font-size: 18px;
620
+ }
621
+
622
+ .text-blue {
623
+ color: var(--primary);
624
+ }
625
+
626
+ .text-orange {
627
+ color: #fd7e14;
628
+ }
629
+
630
+ .text-red {
631
+ color: var(--danger);
632
+ }
633
+
634
+ /* Management Table End */
635
+
636
+ /* Pagination Start */
637
+ .pagination {
638
+ display: flex;
639
+ justify-content: center;
640
+ gap: 10px;
641
+ margin-top: 20px;
642
+ align-items: center;
643
+ }
644
+
645
+ .page-item {
646
+ width: 30px;
647
+ height: 30px;
648
+ display: flex;
649
+ align-items: center;
650
+ justify-content: center;
651
+ border-radius: 4px;
652
+ cursor: pointer;
653
+ font-size: 14px;
654
+ }
655
+
656
+ .page-item.active {
657
+ background-color: #dbeafe;
658
+ color: var(--primary);
659
+ font-weight: 700;
660
+ }
661
+
662
+ /* Pagination End */
663
+
664
+ /* Forms Start */
665
+ .form-card {
666
+ background: white;
667
+ padding: 30px;
668
+ border-radius: 12px;
669
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
670
+ max-width: 800px;
671
+ }
672
+
673
+ .form-group {
674
+ margin-bottom: 20px;
675
+ }
676
+
677
+ .form-label {
678
+ display: block;
679
+ margin-bottom: 8px;
680
+ font-weight: 600;
681
+ font-size: 14px;
682
+ }
683
+
684
+ .form-control {
685
+ width: 100%;
686
+ padding: 10px 15px;
687
+ border: 1px solid var(--border-color);
688
+ border-radius: 6px;
689
+ outline: none;
690
+ font-family: inherit;
691
+ }
692
+
693
+ .input-group {
694
+ display: flex;
695
+ }
696
+
697
+ .input-group .form-control {
698
+ border-radius: 6px 0 0 6px;
699
+ }
700
+
701
+ .input-group-btn {
702
+ background-color: var(--primary);
703
+ color: white;
704
+ border: none;
705
+ padding: 0 20px;
706
+ border-radius: 0 6px 6px 0;
707
+ cursor: pointer;
708
+ }
709
+
710
+ .dashed-area {
711
+ border: 2px dashed #ddd;
712
+ padding: 20px;
713
+ text-align: center;
714
+ border-radius: 6px;
715
+ margin: 20px 0;
716
+ color: #aaa;
717
+ cursor: pointer;
718
+ }
719
+
720
+ .form-actions {
721
+ display: flex;
722
+ gap: 15px;
723
+ margin-top: 30px;
724
+ }
725
+
726
+ .form-actions .btn {
727
+ flex: 1;
728
+ justify-content: center;
729
+ }
730
+
731
+ .back-link {
732
+ display: inline-flex;
733
+ align-items: center;
734
+ gap: 5px;
735
+ margin-bottom: 20px;
736
+ text-decoration: none;
737
+ color: var(--primary);
738
+ font-weight: 600;
739
+ font-size: 18px;
740
+ }
741
+
742
+ /* Detail Page Start */
743
+ .main-content-detail {
744
+ margin-left: var(--sidebar-width);
745
+ flex: 1;
746
+ padding: 40px 20px;
747
+ width: calc(100% - var(--sidebar-width));
748
+ }
749
+
750
+ .detail-container {
751
+ background: white;
752
+ padding: 20px;
753
+ border-radius: 12px;
754
+ max-width: 800px;
755
+ margin: 0 auto;
756
+ }
757
+
758
+ .detail-header {
759
+ margin-bottom: 20px;
760
+ }
761
+
762
+ .detail-title {
763
+ font-size: 28px;
764
+ font-weight: 800;
765
+ margin-bottom: 10px;
766
+ line-height: 1.3;
767
+ }
768
+
769
+ .detail-meta {
770
+ color: var(--secondary);
771
+ font-size: 12px;
772
+ display: flex;
773
+ align-items: center;
774
+ gap: 10px;
775
+ }
776
+
777
+ .detail-content {
778
+ line-height: 1.8;
779
+ color: #333;
780
+ padding: 0;
781
+ width: 100%;
782
+ }
783
+
784
+ .detail-content p {
785
+ margin-bottom: 1.5rem;
786
+ font-size: 1.1rem;
787
+ }
788
+
789
+ .main-article-content {
790
+ background: white;
791
+ padding: 40px;
792
+ border-radius: 12px;
793
+ width: 100%;
794
+ box-sizing: border-box;
795
+ box-shadow: 0 4px 15px rgba(0, 0, 0, 0.05);
796
+ }
797
+
798
+ .detail-image {
799
+ width: 100%;
800
+ border-radius: 8px;
801
+ margin: 20px 0;
802
+ }
803
+
804
+ .caption {
805
+ font-size: 12px;
806
+ color: var(--secondary);
807
+ margin-top: -15px;
808
+ margin-bottom: 20px;
809
+ display: block;
810
+ }
811
+
812
+ .highlight-box {
813
+ background-color: #fff3cd;
814
+ padding: 15px;
815
+ border-left: 4px solid #ffc107;
816
+ margin: 20px 0;
817
+ font-style: italic;
818
+ }
819
+
820
+ /* Detail Page End */
821
+
822
+ /* Public Site Styles Start */
823
+
824
+ /* Utilities */
825
+ .container {
826
+ max-width: 1200px;
827
+ margin: 100px auto;
828
+ padding: 0 20px;
829
+ }
830
+
831
+ .text-center {
832
+ text-align: center;
833
+ }
834
+
835
+ .mb-1 {
836
+ margin-bottom: 5px;
837
+ }
838
+
839
+ .mb-2 {
840
+ margin-bottom: 10px;
841
+ }
842
+
843
+ .mb-3 {
844
+ margin-bottom: 15px;
845
+ }
846
+
847
+ .mb-4 {
848
+ margin-bottom: 20px;
849
+ }
850
+
851
+ .mt-4 {
852
+ margin-top: 20px;
853
+ }
854
+
855
+ /* Auth Pages (Login/Register) */
856
+ .auth-body {
857
+ background-color: white;
858
+ min-height: 100vh;
859
+ display: flex;
860
+ }
861
+
862
+ .auth-container {
863
+ display: flex;
864
+ width: 100%;
865
+ min-height: 100vh;
866
+ }
867
+
868
+ .auth-left {
869
+ flex: 1;
870
+ background-color: #fdfcfa;
871
+ /* Creamy off-white from image */
872
+ display: flex;
873
+ align-items: center;
874
+ justify-content: center;
875
+ flex-direction: column;
876
+ }
877
+
878
+ .auth-brand {
879
+ display: flex;
880
+ align-items: center;
881
+ gap: 15px;
882
+ font-size: 4rem;
883
+ font-weight: 800;
884
+ color: #0d3b66;
885
+ }
886
+
887
+ .auth-brand svg {
888
+ width: 100px;
889
+ height: 100px;
890
+ }
891
+
892
+ .auth-right {
893
+ flex: 1;
894
+ display: flex;
895
+ align-items: center;
896
+ justify-content: center;
897
+ padding: 40px;
898
+ background: white;
899
+ }
900
+
901
+ .auth-form-wrapper {
902
+ width: 100%;
903
+ max-width: 400px;
904
+ }
905
+
906
+ .auth-title {
907
+ font-size: 32px;
908
+ margin-bottom: 20px;
909
+ font-weight: 600;
910
+ }
911
+
912
+ .auth-link {
913
+ color: var(--primary);
914
+ text-decoration: none;
915
+ font-size: 14px;
916
+ }
917
+
918
+ .auth-link:hover {
919
+ text-decoration: underline;
920
+ }
921
+
922
+ .btn-block {
923
+ display: block;
924
+ width: 100%;
925
+ margin-top: 20px;
926
+ padding: 12px;
927
+ font-size: 16px;
928
+ font-weight: 700;
929
+ background-color: #0d47a1;
930
+ /* Darker blue */
931
+ }
932
+
933
+ /* Public Header */
934
+ .public-header {
935
+ background: white;
936
+ border-bottom: 1px solid #eee;
937
+ padding: 15px 0;
938
+ position: sticky;
939
+ top: 0;
940
+ z-index: 100;
941
+ }
942
+
943
+ .header-inner {
944
+ display: flex;
945
+ justify-content: space-between;
946
+ align-items: center;
947
+ }
948
+
949
+ .header-brand {
950
+ font-size: 24px;
951
+ font-weight: 800;
952
+ color: #0d3b66;
953
+ display: flex;
954
+ align-items: center;
955
+ gap: 10px;
956
+ text-decoration: none;
957
+ }
958
+
959
+ .header-nav {
960
+ display: flex;
961
+ gap: 20px;
962
+ }
963
+
964
+ .header-link {
965
+ text-decoration: none;
966
+ color: #333;
967
+ font-size: 13px;
968
+ font-weight: 500;
969
+ text-transform: capitalize;
970
+ }
971
+
972
+ .header-link:hover {
973
+ color: var(--primary);
974
+ }
975
+
976
+ .header-actions {
977
+ display: flex;
978
+ align-items: center;
979
+ gap: 15px;
980
+ }
981
+
982
+ .search-icon-btn {
983
+ background: none;
984
+ border: none;
985
+ cursor: pointer;
986
+ }
987
+
988
+ /* Public Hero */
989
+ .hero-section {
990
+ margin-top: 30px;
991
+ margin-bottom: 40px;
992
+ }
993
+
994
+ .hero-card {
995
+ position: relative;
996
+ border-radius: 12px;
997
+ overflow: hidden;
998
+ }
999
+
1000
+ .hero-image {
1001
+ width: 100%;
1002
+ height: 450px;
1003
+ object-fit: cover;
1004
+ display: block;
1005
+ }
1006
+
1007
+ .hero-content {
1008
+ position: absolute;
1009
+ bottom: 0;
1010
+ left: 0;
1011
+ right: 0;
1012
+ background: linear-gradient(to top, rgba(0, 0, 0, 0.9), transparent);
1013
+ padding: 40px;
1014
+ color: white;
1015
+ }
1016
+
1017
+ .hero-title {
1018
+ font-size: 32px;
1019
+ font-weight: 800;
1020
+ margin-bottom: 15px;
1021
+ line-height: 1.2;
1022
+ }
1023
+
1024
+ .badge-trending {
1025
+ background-color: #4ade80;
1026
+ /* Light green */
1027
+ color: #064e3b;
1028
+ padding: 5px 10px;
1029
+ border-radius: 4px;
1030
+ font-size: 12px;
1031
+ font-weight: 700;
1032
+ display: inline-block;
1033
+ margin-bottom: 10px;
1034
+ }
1035
+
1036
+ .meta-white {
1037
+ color: rgba(255, 255, 255, 0.8);
1038
+ font-size: 13px;
1039
+ display: flex;
1040
+ align-items: center;
1041
+ gap: 10px;
1042
+ }
1043
+
1044
+ /* News Grid Layout */
1045
+ .news-layout {
1046
+ display: grid;
1047
+ grid-template-columns: 2fr 1fr;
1048
+ gap: 40px;
1049
+ margin-bottom: 60px;
1050
+ }
1051
+
1052
+ .section-title {
1053
+ font-size: 24px;
1054
+ font-weight: 800;
1055
+ margin-bottom: 10px;
1056
+ color: #111;
1057
+ }
1058
+
1059
+ .news-grid {
1060
+ display: grid;
1061
+ grid-template-columns: repeat(2, 1fr);
1062
+ grid-template-rows: repeat(3, auto);
1063
+ gap: 20px;
1064
+ margin-bottom: 30px;
1065
+ }
1066
+
1067
+ .news-card {
1068
+ background: white;
1069
+ border-radius: 12px;
1070
+ overflow: hidden;
1071
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
1072
+ transition: transform 0.2s;
1073
+ text-decoration: none;
1074
+ color: inherit;
1075
+ display: block;
1076
+ }
1077
+
1078
+ .news-card:hover {
1079
+ transform: translateY(-3px);
1080
+ }
1081
+
1082
+ .news-thumb {
1083
+ width: 100%;
1084
+ height: 180px;
1085
+ object-fit: cover;
1086
+ }
1087
+
1088
+ .news-body {
1089
+ padding: 15px;
1090
+ }
1091
+
1092
+ .news-title {
1093
+ font-size: 14px;
1094
+ font-weight: 700;
1095
+ margin-bottom: 10px;
1096
+ line-height: 1.4;
1097
+ display: -webkit-box;
1098
+ -webkit-line-clamp: 3;
1099
+ line-clamp: 3;
1100
+ -webkit-box-orient: vertical;
1101
+ overflow: hidden;
1102
+ }
1103
+
1104
+ .news-meta {
1105
+ font-size: 11px;
1106
+ color: #666;
1107
+ }
1108
+
1109
+ /* Sidebar News List */
1110
+ .sidebar-list {
1111
+ display: flex;
1112
+ flex-direction: column;
1113
+ gap: 15px;
1114
+ max-height: 400px;
1115
+ overflow-y: auto;
1116
+ }
1117
+
1118
+ .mini-card {
1119
+ display: flex;
1120
+ gap: 15px;
1121
+ text-decoration: none;
1122
+ color: inherit;
1123
+ background: white;
1124
+ padding: 10px;
1125
+ border-radius: 8px;
1126
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);
1127
+ }
1128
+
1129
+ .mini-thumb {
1130
+ width: 100px;
1131
+ height: 70px;
1132
+ object-fit: cover;
1133
+ border-radius: 6px;
1134
+ flex-shrink: 0;
1135
+ }
1136
+
1137
+ .mini-content {
1138
+ flex: 1;
1139
+ }
1140
+
1141
+ .mini-title {
1142
+ font-size: 13px;
1143
+ font-weight: 700;
1144
+ margin-bottom: 5px;
1145
+ line-height: 1.3;
1146
+ }
1147
+
1148
+ /* Footer Start */
1149
+ .site-footer {
1150
+ background-color: #333333;
1151
+ color: #ffffff;
1152
+ padding: 60px 0 30px;
1153
+ /* Spasi atas bawah */
1154
+ font-family: sans-serif;
1155
+ font-size: 14px;
1156
+ line-height: 1.6;
1157
+ }
1158
+
1159
+ .footer-container {
1160
+ max-width: 1200px;
1161
+ margin: 0 auto;
1162
+ padding: 0 20px;
1163
+ }
1164
+
1165
+ .footer-top {
1166
+ display: flex;
1167
+ flex-wrap: wrap;
1168
+ justify-content: space-between;
1169
+ margin-bottom: 40px;
1170
+ gap: 40px;
1171
+ }
1172
+
1173
+ .footer-brand {
1174
+ flex: 1 1 300px;
1175
+ max-width: 400px;
1176
+ }
1177
+
1178
+ .footer-logo {
1179
+ display: flex;
1180
+ align-items: center;
1181
+ margin-bottom: 15px;
1182
+ }
1183
+
1184
+ .logo-icon {
1185
+ width: 40px;
1186
+ height: auto;
1187
+ margin-right: 10px;
1188
+ }
1189
+
1190
+ .logo-text {
1191
+ font-size: 24px;
1192
+ font-weight: bold;
1193
+ color: #007bff;
1194
+ }
1195
+
1196
+ .footer-desc {
1197
+ color: #e0e0e0;
1198
+ }
1199
+
1200
+ .footer-links {
1201
+ flex: 1 1 400px;
1202
+ }
1203
+
1204
+ .footer-heading {
1205
+ font-size: 18px;
1206
+ font-weight: bold;
1207
+ margin-bottom: 20px;
1208
+ color: #007bff;
1209
+ }
1210
+
1211
+ .footer-heading.text-white {
1212
+ color: #ffffff;
1213
+ }
1214
+
1215
+ .category-grid {
1216
+ list-style: none;
1217
+ padding: 0;
1218
+ margin: 0;
1219
+ display: grid;
1220
+ grid-template-columns: repeat(3, 1fr);
1221
+ gap: 10px 20px;
1222
+ }
1223
+
1224
+ .category-grid li a {
1225
+ color: #ffffff;
1226
+ text-decoration: none;
1227
+ font-weight: 600;
1228
+ transition: color 0.3s;
1229
+ }
1230
+
1231
+ .category-grid li a:hover {
1232
+ color: #007bff;
1233
+ }
1234
+
1235
+ .footer-social {
1236
+ flex: 0 1 200px;
1237
+ }
1238
+
1239
+ .social-icons {
1240
+ display: flex;
1241
+ gap: 15px;
1242
+ }
1243
+
1244
+ .social-icons a {
1245
+ color: #ffffff;
1246
+ font-size: 32px;
1247
+ transition: transform 0.3s;
1248
+ }
1249
+
1250
+ .social-icons a:hover {
1251
+ transform: scale(1.1);
1252
+ }
1253
+
1254
+ .footer-divider {
1255
+ border: 0;
1256
+ border-top: 1px solid #555;
1257
+ margin-bottom: 30px;
1258
+ }
1259
+
1260
+ .footer-bottom {
1261
+ display: flex;
1262
+ flex-wrap: wrap;
1263
+ justify-content: space-between;
1264
+ align-items: center;
1265
+ font-size: 13px;
1266
+ color: #ccc;
1267
+ }
1268
+
1269
+ .legal-links a {
1270
+ color: #ccc;
1271
+ text-decoration: none;
1272
+ }
1273
+
1274
+ .legal-links a:hover {
1275
+ color: #fff;
1276
+ text-decoration: underline;
1277
+ }
1278
+
1279
+ .separator {
1280
+ margin: 0 5px;
1281
+ }
1282
+
1283
+ /* Footer End */
1284
+
1285
+ /* Public Site Styles End */
1286
+
1287
+ /* Article Page Specifics Start */
1288
+ .breadcrumb {
1289
+ color: #666;
1290
+ font-size: 14px;
1291
+ margin-bottom: 20px;
1292
+ }
1293
+
1294
+ .breadcrumb a {
1295
+ color: var(--primary);
1296
+ text-decoration: none;
1297
+ }
1298
+
1299
+ .article-main {
1300
+ background: white;
1301
+ padding: 0;
1302
+ }
1303
+
1304
+ .article-image-full {
1305
+ width: 100%;
1306
+ margin-bottom: 0;
1307
+ border-radius: 12px;
1308
+ }
1309
+
1310
+ /* Article Page Specifics End */
1311
+
1312
+ /* Responsiveness Start */
1313
+
1314
+ /* Navbar Response */
1315
+ #menu-icon {
1316
+ font-size: 24px;
1317
+ cursor: pointer;
1318
+ display: none;
1319
+ /* Hidden on Desktop */
1320
+ color: black;
1321
+ }
1322
+
1323
+ /* --- Responsiveness (Mobile) --- */
1324
+ @media (max-width: 768px) {
1325
+ .footer-top {
1326
+ flex-direction: column;
1327
+ }
1328
+
1329
+ .category-grid {
1330
+ grid-template-columns: repeat(2, 1fr);
1331
+ /* Jadi 2 kolom di HP */
1332
+ }
1333
+
1334
+ .footer-bottom {
1335
+ flex-direction: column;
1336
+ text-align: center;
1337
+ gap: 10px;
1338
+ }
1339
+ }
1340
+
1341
+ @media (max-width: 900px) {
1342
+ .navbar {
1343
+ padding: 0 20px;
1344
+ }
1345
+
1346
+ .menu {
1347
+ position: absolute;
1348
+ top: 80px;
1349
+ left: 0;
1350
+ width: 100%;
1351
+ background-color: #ffffff;
1352
+ flex-direction: column;
1353
+ align-items: flex-start;
1354
+ padding: 20px 0;
1355
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
1356
+ display: none;
1357
+ /* Hidden on mobile until toggled */
1358
+ z-index: 100;
1359
+ }
1360
+
1361
+ .menu.active {
1362
+ display: flex;
1363
+ }
1364
+
1365
+ .menu li {
1366
+ margin: 10px 20px;
1367
+ width: 100%;
1368
+ }
1369
+
1370
+ #menu-icon {
1371
+ display: block;
1372
+ /* Show on Mobile */
1373
+ order: 3;
1374
+ /* Push to right */
1375
+ margin-left: 20px;
1376
+ }
1377
+
1378
+ .search-login {
1379
+ margin-left: auto;
1380
+ /* Push search/login to right */
1381
+ }
1382
+
1383
+ .logo {
1384
+ margin-right: auto;
1385
+ }
1386
+ }
1387
+
1388
+ @media (max-width: 500px) {
1389
+ .logo img {
1390
+ width: 100px;
1391
+ }
1392
+
1393
+ .nav-login .btn-login {
1394
+ padding: 8px 15px;
1395
+ font-size: 14px;
1396
+ }
1397
+
1398
+ .search-bar .input-box {
1399
+ width: 200px;
1400
+ }
1401
+ }
1402
+
1403
+ /* Responsiveness End */
1404
+
1405
+ /* Dropdown Styles Start */
1406
+ .dropdown {
1407
+ position: relative;
1408
+ display: inline-block;
1409
+ }
1410
+
1411
+ .dropdown-toggle {
1412
+ cursor: pointer;
1413
+ border: none;
1414
+ font-family: inherit;
1415
+ position: relative;
1416
+ transition: all 0.3s ease;
1417
+ text-decoration: none;
1418
+ display: inline-flex;
1419
+ align-items: center;
1420
+ justify-content: space-between;
1421
+ gap: 5px;
1422
+ }
1423
+
1424
+ .dropdown-toggle::after {
1425
+ display: none;
1426
+ bottom: -5px;
1427
+ height: 2px;
1428
+ width: 0;
1429
+ background: #0384ec;
1430
+ transform: translateX(-50%);
1431
+ transition: width 0.3s ease;
1432
+ }
1433
+
1434
+ .dropdown-toggle:hover {
1435
+ color: #0384ec;
1436
+ }
1437
+
1438
+ .dropdown-toggle:hover::after,
1439
+ .dropdown-toggle.active::after {
1440
+ width: 100%;
1441
+ }
1442
+
1443
+ /* Remove default button focus outline and make it look clean */
1444
+ .dropdown-toggle:focus {
1445
+ outline: none;
1446
+ }
1447
+
1448
+ /* Add a small arrow to indicate it's a dropdown */
1449
+ .dropdown-toggle-icon::after {
1450
+ content: " \f107";
1451
+ font-family: "Font Awesome 6 Free";
1452
+ font-weight: 900;
1453
+ margin-left: 5px;
1454
+ }
1455
+
1456
+ .dropdown-menu {
1457
+ display: none;
1458
+ position: absolute;
1459
+ background-color: #fff;
1460
+ min-width: 140px;
1461
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
1462
+ z-index: 1000;
1463
+ border-radius: 6px;
1464
+ padding: 8px 0;
1465
+ top: 110%;
1466
+ /* Slight offset from button */
1467
+ left: 0;
1468
+ text-align: left;
1469
+ border: 1px solid rgba(0, 0, 0, 0.1);
1470
+ }
1471
+
1472
+ .dropdown-menu.show {
1473
+ display: block;
1474
+ }
1475
+
1476
+ .dropdown-item {
1477
+ color: var(--text-color);
1478
+ padding: 8px 16px;
1479
+ text-decoration: none;
1480
+ display: block;
1481
+ font-size: 13px;
1482
+ transition: all 0.2s;
1483
+ cursor: pointer;
1484
+ display: flex;
1485
+ align-items: center;
1486
+ gap: 8px;
1487
+ }
1488
+
1489
+ .dropdown-item:hover {
1490
+ background-color: #f8f9fa;
1491
+ color: var(--primary);
1492
+ }
1493
+
1494
+ /* Status Indicator Dots in Dropdown */
1495
+ .status-dot {
1496
+ width: 8px;
1497
+ height: 8px;
1498
+ border-radius: 50%;
1499
+ display: inline-block;
1500
+ }
1501
+
1502
+ .status-dot.published {
1503
+ background-color: var(--primary);
1504
+ }
1505
+
1506
+ .status-dot.draft {
1507
+ background-color: var(--success);
1508
+ }
1509
+
1510
+ .status-dot.archived {
1511
+ background-color: #fd7e14;
1512
+ }
1513
+
1514
+ /* Dropdown Styles End */
1515
+
1516
+ /* Dynamic Content Builder Styles */
1517
+ .content-type-selector {
1518
+ display: flex;
1519
+ gap: 10px;
1520
+ justify-content: center;
1521
+ align-items: center;
1522
+ margin: 20px 0;
1523
+ padding: 20px;
1524
+ background: #f8f9fa;
1525
+ border-radius: 8px;
1526
+ border: 1px dashed var(--primary);
1527
+ flex-wrap: wrap;
1528
+ }
1529
+
1530
+ .content-block {
1531
+ position: relative;
1532
+ padding: 20px;
1533
+ border: 1px solid var(--border-color);
1534
+ border-radius: 8px;
1535
+ margin-bottom: 15px;
1536
+ background: #fff;
1537
+ transition: all 0.2s;
1538
+ }
1539
+
1540
+ .content-block:hover {
1541
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
1542
+ }
1543
+
1544
+ .remove-block-btn {
1545
+ position: absolute;
1546
+ top: 15px;
1547
+ right: 15px;
1548
+ color: var(--danger);
1549
+ cursor: pointer;
1550
+ background: none;
1551
+ border: none;
1552
+ font-size: 1.2rem;
1553
+ padding: 5px;
1554
+ z-index: 10;
1555
+ }
1556
+
1557
+ /* Filter Dropdown Start */
1558
+ .filter-dropdown {
1559
+ position: relative;
1560
+ display: inline-block;
1561
+ }
1562
+
1563
+ .filter-menu {
1564
+ display: none;
1565
+ position: absolute;
1566
+ top: 100%;
1567
+ left: 0;
1568
+ background: white;
1569
+ border: 1px solid var(--border-color);
1570
+ border-radius: 8px;
1571
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
1572
+ width: 250px;
1573
+ z-index: 1000;
1574
+ padding: 15px;
1575
+ margin-top: 5px;
1576
+ }
1577
+
1578
+ .filter-menu.show {
1579
+ display: block;
1580
+ }
1581
+
1582
+ .filter-section {
1583
+ margin-bottom: 15px;
1584
+ }
1585
+
1586
+ .filter-section:last-child {
1587
+ margin-bottom: 0;
1588
+ }
1589
+
1590
+ .filter-header {
1591
+ font-weight: 700;
1592
+ font-size: 14px;
1593
+ margin-bottom: 8px;
1594
+ color: var(--text-color);
1595
+ border-bottom: 1px solid #eee;
1596
+ padding-bottom: 5px;
1597
+ }
1598
+
1599
+ .filter-options {
1600
+ display: flex;
1601
+ flex-direction: column;
1602
+ gap: 8px;
1603
+ }
1604
+
1605
+ .filter-label {
1606
+ display: flex;
1607
+ align-items: center;
1608
+ gap: 8px;
1609
+ font-size: 13px;
1610
+ cursor: pointer;
1611
+ color: var(--secondary);
1612
+ }
1613
+
1614
+ .filter-label input[type="checkbox"] {
1615
+ accent-color: var(--primary);
1616
+ width: 16px;
1617
+ height: 16px;
1618
+ }
1619
+
1620
+ /* Filter Dropdown End */