cacode commited on
Commit
11d8362
·
verified ·
1 Parent(s): 36b4039

Upload 67 files

Browse files
Files changed (1) hide show
  1. app/static/style.css +526 -0
app/static/style.css CHANGED
@@ -761,3 +761,529 @@ label span,
761
 
762
 
763
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
761
 
762
 
763
 
764
+
765
+ /* Emergency Restore: shared UI primitives */
766
+ .glass-card,
767
+ .form-panel,
768
+ .table-panel,
769
+ .quick-panel {
770
+ padding: 24px;
771
+ animation: rise-in 0.7s ease both;
772
+ }
773
+
774
+ .activity-card h3,
775
+ .task-card h3,
776
+ .review-card h3,
777
+ .group-card h3,
778
+ .stat-card strong {
779
+ margin: 0 0 10px;
780
+ }
781
+
782
+ .meta-grid {
783
+ display: grid;
784
+ grid-template-columns: repeat(2, minmax(0, 1fr));
785
+ gap: 12px;
786
+ margin: 18px 0;
787
+ }
788
+
789
+ .meta-grid strong {
790
+ display: block;
791
+ color: var(--primary-deep);
792
+ font-size: 1.05rem;
793
+ }
794
+
795
+ .progress-line {
796
+ width: 100%;
797
+ height: 12px;
798
+ margin: 18px 0 12px;
799
+ border-radius: 999px;
800
+ overflow: hidden;
801
+ background: rgba(78, 148, 97, 0.12);
802
+ }
803
+
804
+ .progress-line div {
805
+ height: 100%;
806
+ border-radius: inherit;
807
+ background: linear-gradient(90deg, #62b176, #8ac798, #f1c16b);
808
+ }
809
+
810
+ .card-footer,
811
+ .card-topline,
812
+ .section-head,
813
+ .stack-item,
814
+ .builder-title-row {
815
+ display: flex;
816
+ align-items: center;
817
+ justify-content: space-between;
818
+ gap: 12px;
819
+ }
820
+
821
+ .section-head {
822
+ margin-bottom: 18px;
823
+ }
824
+
825
+ .tight-head {
826
+ margin-top: 8px;
827
+ }
828
+
829
+ .stack-list {
830
+ display: grid;
831
+ gap: 14px;
832
+ }
833
+
834
+ .stack-item {
835
+ padding: 14px 16px;
836
+ border-radius: 18px;
837
+ background: rgba(255, 255, 255, 0.62);
838
+ border: 1px solid rgba(78, 148, 97, 0.14);
839
+ }
840
+
841
+ .stack-item-block {
842
+ align-items: flex-start;
843
+ }
844
+
845
+ .form-stack,
846
+ .compact-form {
847
+ display: grid;
848
+ gap: 14px;
849
+ }
850
+
851
+ .form-grid {
852
+ display: grid;
853
+ gap: 14px;
854
+ }
855
+
856
+ .cols-2 {
857
+ grid-template-columns: repeat(2, minmax(0, 1fr));
858
+ }
859
+
860
+ .cols-3 {
861
+ grid-template-columns: repeat(3, minmax(0, 1fr));
862
+ }
863
+
864
+ .full-span {
865
+ grid-column: 1 / -1;
866
+ }
867
+
868
+ label {
869
+ display: grid;
870
+ gap: 8px;
871
+ }
872
+
873
+ input,
874
+ select,
875
+ textarea,
876
+ button {
877
+ font: inherit;
878
+ }
879
+
880
+ input,
881
+ select,
882
+ textarea {
883
+ width: 100%;
884
+ padding: 14px 16px;
885
+ border-radius: 16px;
886
+ border: 1px solid rgba(91, 141, 99, 0.22);
887
+ background: rgba(255, 255, 255, 0.88);
888
+ color: var(--text);
889
+ transition: border-color 0.24s ease, box-shadow 0.24s ease, transform 0.24s ease;
890
+ }
891
+
892
+ input:focus,
893
+ select:focus,
894
+ textarea:focus {
895
+ outline: none;
896
+ border-color: rgba(78, 148, 97, 0.5);
897
+ box-shadow: 0 0 0 4px rgba(78, 148, 97, 0.12);
898
+ transform: translateY(-1px);
899
+ }
900
+
901
+ textarea {
902
+ resize: vertical;
903
+ min-height: 120px;
904
+ }
905
+
906
+ button {
907
+ padding: 12px 16px;
908
+ border-radius: 16px;
909
+ border: 1px solid rgba(91, 141, 99, 0.18);
910
+ background: rgba(255, 255, 255, 0.88);
911
+ color: var(--text);
912
+ cursor: pointer;
913
+ }
914
+
915
+ .btn,
916
+ .full-width-btn {
917
+ display: inline-flex;
918
+ align-items: center;
919
+ justify-content: center;
920
+ gap: 10px;
921
+ padding: 13px 18px;
922
+ border-radius: 18px;
923
+ border: 1px solid transparent;
924
+ text-decoration: none;
925
+ transition: transform 0.24s ease, box-shadow 0.24s ease, background 0.24s ease, color 0.24s ease;
926
+ }
927
+
928
+ .btn:hover,
929
+ .full-width-btn:hover {
930
+ transform: translateY(-1px);
931
+ }
932
+
933
+ .btn-primary {
934
+ background: linear-gradient(135deg, #63b67c, #7bc58f);
935
+ color: #fff;
936
+ box-shadow: 0 16px 28px rgba(76, 134, 91, 0.22);
937
+ }
938
+
939
+ .btn-secondary {
940
+ background: rgba(230, 244, 229, 0.92);
941
+ border-color: rgba(78, 148, 97, 0.16);
942
+ color: var(--primary-deep);
943
+ }
944
+
945
+ .btn-ghost {
946
+ background: rgba(255, 255, 255, 0.78);
947
+ border-color: rgba(78, 148, 97, 0.14);
948
+ color: var(--primary-deep);
949
+ }
950
+
951
+ .btn-danger {
952
+ background: linear-gradient(135deg, #de6d78, #d95b67);
953
+ color: #fff;
954
+ box-shadow: 0 16px 28px rgba(186, 70, 88, 0.18);
955
+ }
956
+
957
+ .small-btn {
958
+ padding: 10px 14px;
959
+ font-size: 0.92rem;
960
+ }
961
+
962
+ .full-width-btn {
963
+ width: 100%;
964
+ }
965
+
966
+ .spring-copy {
967
+ min-height: 520px;
968
+ background:
969
+ radial-gradient(circle at 16% 20%, rgba(255, 255, 255, 0.88), transparent 42%),
970
+ linear-gradient(145deg, rgba(125, 195, 137, 0.22), rgba(246, 184, 91, 0.18));
971
+ }
972
+
973
+ .admin-copy {
974
+ min-height: 420px;
975
+ }
976
+
977
+ .feature-list {
978
+ margin-top: 26px;
979
+ }
980
+
981
+ .feature-list span,
982
+ .info-box,
983
+ .feedback-box {
984
+ padding: 10px 14px;
985
+ border-radius: 16px;
986
+ background: rgba(255, 255, 255, 0.62);
987
+ border: 1px solid rgba(78, 148, 97, 0.12);
988
+ }
989
+
990
+ .panel-glow {
991
+ position: absolute;
992
+ inset: auto auto -50px -30px;
993
+ width: 140px;
994
+ height: 140px;
995
+ border-radius: 50%;
996
+ background: radial-gradient(circle, rgba(246, 184, 91, 0.25), transparent 68%);
997
+ }
998
+
999
+ .task-card {
1000
+ display: flex;
1001
+ flex-direction: column;
1002
+ gap: 14px;
1003
+ }
1004
+
1005
+ .task-card-head {
1006
+ display: flex;
1007
+ align-items: flex-start;
1008
+ justify-content: space-between;
1009
+ gap: 14px;
1010
+ }
1011
+
1012
+ .task-description {
1013
+ min-height: 50px;
1014
+ }
1015
+
1016
+ .task-media-wrap,
1017
+ .submission-preview {
1018
+ display: grid;
1019
+ gap: 10px;
1020
+ }
1021
+
1022
+ .task-media,
1023
+ .submission-preview img,
1024
+ .review-image {
1025
+ width: 100%;
1026
+ aspect-ratio: 4 / 3;
1027
+ object-fit: cover;
1028
+ border-radius: 22px;
1029
+ border: 1px solid rgba(78, 148, 97, 0.16);
1030
+ box-shadow: 0 12px 30px rgba(86, 127, 93, 0.12);
1031
+ }
1032
+
1033
+ .clue-toggle {
1034
+ width: 48px;
1035
+ height: 48px;
1036
+ display: grid;
1037
+ place-items: center;
1038
+ border: none;
1039
+ border-radius: 18px;
1040
+ font-size: 1.2rem;
1041
+ background: rgba(246, 184, 91, 0.14);
1042
+ color: #c88929;
1043
+ transition: transform 0.25s ease, background 0.25s ease, box-shadow 0.25s ease;
1044
+ }
1045
+
1046
+ .clue-toggle.is-ready {
1047
+ background: rgba(246, 184, 91, 0.26);
1048
+ box-shadow: 0 14px 26px rgba(233, 173, 75, 0.22);
1049
+ }
1050
+
1051
+ .clue-toggle.is-clue-view {
1052
+ transform: rotate(-10deg) scale(1.04);
1053
+ }
1054
+
1055
+ .release-note {
1056
+ font-size: 0.88rem;
1057
+ color: var(--muted);
1058
+ }
1059
+
1060
+ .upload-form,
1061
+ .inline-form {
1062
+ display: flex;
1063
+ flex-wrap: wrap;
1064
+ gap: 12px;
1065
+ align-items: end;
1066
+ }
1067
+
1068
+ .inline-form-wide {
1069
+ flex-direction: column;
1070
+ align-items: stretch;
1071
+ }
1072
+
1073
+ .visibility-form {
1074
+ justify-content: flex-end;
1075
+ }
1076
+
1077
+ .upload-label {
1078
+ flex: 1 1 220px;
1079
+ }
1080
+
1081
+ .feedback-box {
1082
+ color: var(--text);
1083
+ }
1084
+
1085
+ .leaderboard-card {
1086
+ padding: 26px;
1087
+ }
1088
+
1089
+ .rank-table-wrap,
1090
+ .table-shell {
1091
+ overflow-x: auto;
1092
+ }
1093
+
1094
+ .rank-table,
1095
+ .data-table {
1096
+ width: 100%;
1097
+ border-collapse: collapse;
1098
+ }
1099
+
1100
+ .rank-table th,
1101
+ .rank-table td,
1102
+ .data-table th,
1103
+ .data-table td {
1104
+ padding: 14px 12px;
1105
+ border-bottom: 1px solid rgba(78, 148, 97, 0.12);
1106
+ text-align: left;
1107
+ }
1108
+
1109
+ .rank-table tbody tr:hover,
1110
+ .data-table tbody tr:hover {
1111
+ background: rgba(78, 148, 97, 0.05);
1112
+ }
1113
+
1114
+ .stat-card {
1115
+ min-height: 130px;
1116
+ display: flex;
1117
+ flex-direction: column;
1118
+ justify-content: space-between;
1119
+ }
1120
+
1121
+ .stat-card strong {
1122
+ font-size: 2rem;
1123
+ color: var(--primary-deep);
1124
+ }
1125
+
1126
+ .info-box {
1127
+ margin-top: 18px;
1128
+ display: grid;
1129
+ gap: 12px;
1130
+ }
1131
+
1132
+ .member-list {
1133
+ display: grid;
1134
+ gap: 10px;
1135
+ margin: 16px 0;
1136
+ }
1137
+
1138
+ .member-row {
1139
+ display: flex;
1140
+ align-items: center;
1141
+ justify-content: space-between;
1142
+ gap: 12px;
1143
+ padding: 12px 14px;
1144
+ border-radius: 16px;
1145
+ background: rgba(255, 255, 255, 0.62);
1146
+ }
1147
+
1148
+ .checkbox-row {
1149
+ display: inline-flex;
1150
+ align-items: center;
1151
+ gap: 10px;
1152
+ }
1153
+
1154
+ .checkbox-row input {
1155
+ width: 18px;
1156
+ height: 18px;
1157
+ padding: 0;
1158
+ }
1159
+
1160
+ .compact-checkbox {
1161
+ padding: 0;
1162
+ }
1163
+
1164
+ .task-builder {
1165
+ display: grid;
1166
+ gap: 16px;
1167
+ }
1168
+
1169
+ .task-builder-card {
1170
+ padding: 18px;
1171
+ border-radius: 22px;
1172
+ background: rgba(255, 255, 255, 0.64);
1173
+ border: 1px dashed rgba(78, 148, 97, 0.24);
1174
+ display: grid;
1175
+ gap: 14px;
1176
+ }
1177
+
1178
+ .review-card {
1179
+ display: grid;
1180
+ gap: 14px;
1181
+ }
1182
+
1183
+ .review-filter-form {
1184
+ align-items: end;
1185
+ }
1186
+
1187
+ .review-filter-action {
1188
+ justify-content: end;
1189
+ }
1190
+
1191
+ .empty-state {
1192
+ padding: 32px;
1193
+ border-radius: var(--radius-lg);
1194
+ background: rgba(255, 255, 255, 0.68);
1195
+ border: 1px dashed rgba(78, 148, 97, 0.24);
1196
+ text-align: center;
1197
+ }
1198
+
1199
+ .pulse-highlight {
1200
+ animation: pulse-glow 1.8s ease;
1201
+ }
1202
+
1203
+ @keyframes rise-in {
1204
+ from {
1205
+ opacity: 0;
1206
+ transform: translateY(18px);
1207
+ }
1208
+ to {
1209
+ opacity: 1;
1210
+ transform: translateY(0);
1211
+ }
1212
+ }
1213
+
1214
+ @keyframes pulse-glow {
1215
+ 0% {
1216
+ box-shadow: var(--shadow);
1217
+ }
1218
+ 35% {
1219
+ box-shadow: 0 0 0 8px rgba(246, 184, 91, 0.18), var(--shadow);
1220
+ }
1221
+ 100% {
1222
+ box-shadow: var(--shadow);
1223
+ }
1224
+ }
1225
+
1226
+ @media (max-width: 980px) {
1227
+ .topbar,
1228
+ .hero-card,
1229
+ .page-grid,
1230
+ .two-column-layout,
1231
+ .login-page,
1232
+ .compact-login-page,
1233
+ .admin-activity-grid {
1234
+ grid-template-columns: 1fr;
1235
+ flex-direction: column;
1236
+ }
1237
+
1238
+ .topbar {
1239
+ border-radius: 28px;
1240
+ align-items: flex-start;
1241
+ }
1242
+
1243
+ .topnav {
1244
+ width: 100%;
1245
+ justify-content: flex-start;
1246
+ }
1247
+
1248
+ .login-copy {
1249
+ min-height: auto;
1250
+ }
1251
+ }
1252
+
1253
+ @media (max-width: 720px) {
1254
+ .shell {
1255
+ width: min(100% - 20px, 1200px);
1256
+ padding-top: 18px;
1257
+ }
1258
+
1259
+ .topbar,
1260
+ .hero-card,
1261
+ .glass-card,
1262
+ .login-copy,
1263
+ .login-panel {
1264
+ padding: 20px;
1265
+ }
1266
+
1267
+ .card-footer,
1268
+ .card-topline,
1269
+ .section-head,
1270
+ .stack-item,
1271
+ .builder-title-row,
1272
+ .task-card-head,
1273
+ .task-status-row {
1274
+ flex-direction: column;
1275
+ align-items: stretch;
1276
+ }
1277
+
1278
+ .cols-2,
1279
+ .cols-3,
1280
+ .form-grid,
1281
+ .meta-grid {
1282
+ grid-template-columns: 1fr;
1283
+ }
1284
+
1285
+ .btn,
1286
+ .full-width-btn {
1287
+ width: 100%;
1288
+ }
1289
+ }