cesjavi commited on
Commit
3397b5a
·
1 Parent(s): 8b2bccb

UI: Standardized form elements skinning (Glassmorphism)

Browse files
Files changed (1) hide show
  1. frontend/src/index.css +519 -27
frontend/src/index.css CHANGED
@@ -106,7 +106,7 @@
106
  gap: var(--space-lg);
107
  }
108
 
109
- .app-header {
110
  display: flex;
111
  justify-content: space-between;
112
  align-items: center;
@@ -143,6 +143,7 @@
143
  display: grid;
144
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 280px), 1fr));
145
  gap: var(--space-lg);
 
146
  }
147
 
148
  .dashboard-heading {
@@ -152,6 +153,67 @@
152
  gap: var(--space-lg);
153
  }
154
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
155
  .empty-state {
156
  padding: var(--space-xl);
157
  display: grid;
@@ -176,6 +238,73 @@
176
  margin-bottom: var(--space-md);
177
  }
178
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
179
  .marketplace-card-footer {
180
  align-items: center;
181
  margin-top: var(--space-md);
@@ -704,6 +833,8 @@
704
  color: var(--danger);
705
  }
706
 
 
 
707
  .check-unreachable,
708
  .check-checking {
709
  color: var(--warning);
@@ -715,6 +846,135 @@
715
  gap: var(--space-lg);
716
  }
717
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
718
  .project-form label {
719
  display: grid;
720
  gap: var(--space-sm);
@@ -787,6 +1047,22 @@ select option {
787
  animation: slideDown 0.3s ease;
788
  }
789
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
790
  @keyframes slideDown {
791
  from { opacity: 0; transform: translateY(-10px); }
792
  to { opacity: 1; transform: translateY(0); }
@@ -891,29 +1167,6 @@ select option {
891
  display: grid;
892
  gap: var(--space-md);
893
  padding: var(--space-md);
894
- border: 1px solid var(--glass-border);
895
- border-radius: var(--radius-md);
896
- background: rgba(255,255,255,0.04);
897
- }
898
-
899
- .task-list {
900
- display: grid;
901
- gap: var(--space-md);
902
- }
903
-
904
- .task-row {
905
- display: flex;
906
- align-items: flex-start;
907
- justify-content: space-between;
908
- gap: var(--space-md);
909
- padding: var(--space-md);
910
- border: 1px solid var(--glass-border);
911
- border-radius: var(--radius-md);
912
- background: rgba(255,255,255,0.04);
913
- }
914
-
915
- .task-row.clickable {
916
- cursor: pointer;
917
  }
918
 
919
  .task-row.clickable:hover {
@@ -941,6 +1194,130 @@ select option {
941
  text-transform: uppercase;
942
  }
943
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
944
  .task-row span {
945
  flex: 0 0 auto;
946
  color: var(--accent);
@@ -952,12 +1329,14 @@ select option {
952
  @media (max-width: 900px) {
953
  .app-container {
954
  display: block;
 
 
955
  }
956
 
957
  .app-sidebar {
958
  position: fixed;
959
- inset: var(--space-sm) auto var(--space-sm) var(--space-sm);
960
- width: min(280px, calc(100vw - 2rem)) !important;
961
  max-height: calc(100dvh - 1rem);
962
  overflow-y: auto;
963
  margin: 0 !important;
@@ -976,6 +1355,7 @@ select option {
976
  .app-main {
977
  min-height: 100dvh;
978
  padding: var(--space-md);
 
979
  }
980
 
981
  .marketplace-header {
@@ -988,6 +1368,21 @@ select option {
988
  flex-direction: column;
989
  }
990
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
991
  .marketplace-search {
992
  width: 100%;
993
  flex-basis: auto;
@@ -1020,6 +1415,15 @@ select option {
1020
  .project-detail-grid {
1021
  grid-template-columns: 1fr;
1022
  }
 
 
 
 
 
 
 
 
 
1023
  }
1024
 
1025
  @media (max-width: 640px) {
@@ -1034,7 +1438,7 @@ select option {
1034
  gap: var(--space-md);
1035
  }
1036
 
1037
- .app-header {
1038
  padding: var(--space-sm);
1039
  }
1040
 
@@ -1120,6 +1524,15 @@ select option {
1120
  width: 100%;
1121
  }
1122
 
 
 
 
 
 
 
 
 
 
1123
  .task-row {
1124
  flex-direction: column;
1125
  }
@@ -1135,7 +1548,9 @@ select option {
1135
  letter-spacing: 0.5px;
1136
  }
1137
  .status-todo { background: rgba(100, 100, 100, 0.2); color: #aaa; }
 
1138
  .status-running { background: rgba(52, 152, 219, 0.2); color: #3498db; border: 1px solid rgba(52, 152, 219, 0.3); }
 
1139
  .status-awaiting_approval { background: rgba(241, 196, 15, 0.2); color: #f1c40f; border: 1px solid rgba(241, 196, 15, 0.3); }
1140
  .status-done { background: rgba(46, 204, 113, 0.2); color: #2ecc71; }
1141
  .status-failed { background: rgba(231, 76, 60, 0.2); color: #e74c3c; }
@@ -1294,3 +1709,80 @@ select option {
1294
  padding: 6px 12px;
1295
  font-size: 0.8rem;
1296
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
106
  gap: var(--space-lg);
107
  }
108
 
109
+ .app-header { position: sticky; top: 0; background: var(--bg-deep); z-index: 80; border-bottom: 1px solid var(--glass-border); backdrop-filter: blur(8px);
110
  display: flex;
111
  justify-content: space-between;
112
  align-items: center;
 
143
  display: grid;
144
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 280px), 1fr));
145
  gap: var(--space-lg);
146
+ align-items: stretch;
147
  }
148
 
149
  .dashboard-heading {
 
153
  gap: var(--space-lg);
154
  }
155
 
156
+ .dashboard-controls {
157
+ display: grid;
158
+ grid-template-columns: minmax(260px, 1fr) auto auto;
159
+ align-items: center;
160
+ gap: var(--space-md);
161
+ padding: var(--space-md);
162
+ margin-bottom: var(--space-lg);
163
+ }
164
+
165
+ .dashboard-search,
166
+ .dashboard-filter-group,
167
+ .dashboard-results {
168
+ display: flex;
169
+ align-items: center;
170
+ gap: var(--space-sm);
171
+ }
172
+
173
+ .dashboard-search {
174
+ min-width: 0;
175
+ padding: 0 0.85rem;
176
+ border: 1px solid var(--glass-border);
177
+ border-radius: var(--radius-md);
178
+ background: rgba(255,255,255,0.05);
179
+ color: var(--text-dim);
180
+ }
181
+
182
+ .dashboard-search input,
183
+ .dashboard-filter-group select {
184
+ min-width: 0;
185
+ color: var(--text-main);
186
+ background: transparent;
187
+ border: 0;
188
+ outline: 0;
189
+ font: inherit;
190
+ }
191
+
192
+ .dashboard-search input {
193
+ width: 100%;
194
+ padding: 0.8rem 0;
195
+ }
196
+
197
+ .dashboard-search input::placeholder {
198
+ color: var(--text-muted);
199
+ }
200
+
201
+ .dashboard-filter-group select {
202
+ min-height: 42px;
203
+ padding: 0 0.75rem;
204
+ border: 1px solid var(--glass-border);
205
+ border-radius: var(--radius-md);
206
+ background: rgba(255,255,255,0.05);
207
+ color-scheme: dark;
208
+ }
209
+
210
+ .dashboard-results {
211
+ justify-content: flex-end;
212
+ color: var(--text-dim);
213
+ font-size: 0.85rem;
214
+ white-space: nowrap;
215
+ }
216
+
217
  .empty-state {
218
  padding: var(--space-xl);
219
  display: grid;
 
238
  margin-bottom: var(--space-md);
239
  }
240
 
241
+ .project-card {
242
+ min-height: 265px;
243
+ padding: var(--space-lg);
244
+ position: relative;
245
+ overflow: hidden;
246
+ display: grid;
247
+ grid-template-rows: minmax(92px, auto) 1fr auto auto;
248
+ }
249
+
250
+ .project-card h3 {
251
+ min-width: 0;
252
+ margin: 0;
253
+ font-size: 1.18rem;
254
+ line-height: 1.22;
255
+ overflow-wrap: anywhere;
256
+ }
257
+
258
+ .project-card-actions {
259
+ display: flex;
260
+ align-items: center;
261
+ gap: 8px;
262
+ flex-shrink: 0;
263
+ }
264
+
265
+ .project-card-actions .btn-icon {
266
+ width: 28px;
267
+ height: 28px;
268
+ padding: 4px;
269
+ }
270
+
271
+ .project-card-progress {
272
+ align-self: end;
273
+ margin-bottom: var(--space-lg);
274
+ }
275
+
276
+ .project-card-progress-label {
277
+ display: flex;
278
+ justify-content: space-between;
279
+ gap: var(--space-sm);
280
+ min-height: 20px;
281
+ margin-bottom: var(--space-xs);
282
+ font-size: 0.85rem;
283
+ }
284
+
285
+ .project-card-progress-label span:first-child {
286
+ color: var(--text-dim);
287
+ }
288
+
289
+ .project-card-progress-track {
290
+ height: 6px;
291
+ width: 100%;
292
+ overflow: hidden;
293
+ background: rgba(255,255,255,0.1);
294
+ border-radius: 3px;
295
+ }
296
+
297
+ .project-card-progress-fill {
298
+ height: 100%;
299
+ background: var(--accent);
300
+ border-radius: 3px;
301
+ box-shadow: 0 0 10px var(--accent);
302
+ }
303
+
304
+ .project-card-open {
305
+ width: 100%;
306
+ }
307
+
308
  .marketplace-card-footer {
309
  align-items: center;
310
  margin-top: var(--space-md);
 
833
  color: var(--danger);
834
  }
835
 
836
+ .check-warning,
837
+ .check-unavailable,
838
  .check-unreachable,
839
  .check-checking {
840
  color: var(--warning);
 
846
  gap: var(--space-lg);
847
  }
848
 
849
+ .field-with-help {
850
+ display: grid;
851
+ grid-template-columns: minmax(0, 1fr) minmax(220px, 280px);
852
+ gap: var(--space-md);
853
+ align-items: start;
854
+ }
855
+
856
+ .field-with-help-compact {
857
+ grid-template-columns: minmax(0, 1fr) minmax(190px, 240px);
858
+ }
859
+
860
+ .field-with-help-action {
861
+ align-items: center;
862
+ }
863
+
864
+ .field-help {
865
+ padding: 0.1rem 0 0.1rem var(--space-md);
866
+ color: var(--text-dim);
867
+ border-left: 1px solid rgba(0, 240, 255, 0.45);
868
+ }
869
+
870
+ .field-help strong {
871
+ display: block;
872
+ margin-bottom: 0.35rem;
873
+ color: var(--text-main);
874
+ font-size: 0.85rem;
875
+ }
876
+
877
+ .field-help p {
878
+ margin: 0;
879
+ color: var(--text-muted);
880
+ font-size: 0.82rem;
881
+ line-height: 1.55;
882
+ }
883
+
884
+ .wizard-panel {
885
+ display: grid;
886
+ gap: var(--space-md);
887
+ }
888
+
889
+ .wizard-steps {
890
+ display: grid;
891
+ grid-template-columns: repeat(auto-fit, minmax(92px, 1fr));
892
+ gap: var(--space-sm);
893
+ }
894
+
895
+ .wizard-step {
896
+ display: inline-flex;
897
+ align-items: center;
898
+ justify-content: center;
899
+ gap: 0.45rem;
900
+ min-height: 42px;
901
+ padding: 0.55rem 0.7rem;
902
+ color: var(--text-dim);
903
+ background: rgba(255, 255, 255, 0.04);
904
+ border: 1px solid var(--glass-border);
905
+ border-radius: var(--radius-md);
906
+ font: inherit;
907
+ font-size: 0.82rem;
908
+ font-weight: 700;
909
+ cursor: pointer;
910
+ }
911
+
912
+ .wizard-step span {
913
+ display: inline-grid;
914
+ place-items: center;
915
+ width: 22px;
916
+ height: 22px;
917
+ color: var(--text-main);
918
+ background: rgba(255, 255, 255, 0.08);
919
+ border-radius: var(--radius-full);
920
+ font-size: 0.72rem;
921
+ }
922
+
923
+ .wizard-step.active {
924
+ color: var(--text-main);
925
+ border-color: rgba(0, 240, 255, 0.7);
926
+ background: rgba(0, 240, 255, 0.08);
927
+ }
928
+
929
+ .wizard-step.complete span {
930
+ color: var(--bg-deep);
931
+ background: var(--accent);
932
+ }
933
+
934
+ .wizard-explanation,
935
+ .wizard-review {
936
+ padding: var(--space-md);
937
+ border: 1px solid var(--glass-border);
938
+ border-radius: var(--radius-md);
939
+ background: rgba(255, 255, 255, 0.04);
940
+ }
941
+
942
+ .wizard-explanation p {
943
+ margin: var(--space-xs) 0 0;
944
+ color: var(--text-dim);
945
+ line-height: 1.5;
946
+ }
947
+
948
+ .wizard-review {
949
+ display: grid;
950
+ gap: var(--space-md);
951
+ }
952
+
953
+ .wizard-review div {
954
+ display: grid;
955
+ gap: 0.3rem;
956
+ }
957
+
958
+ .wizard-review span {
959
+ color: var(--text-dim);
960
+ font-size: 0.78rem;
961
+ font-weight: 800;
962
+ text-transform: uppercase;
963
+ }
964
+
965
+ .wizard-review strong,
966
+ .wizard-review p {
967
+ margin: 0;
968
+ color: var(--text-main);
969
+ overflow-wrap: anywhere;
970
+ }
971
+
972
+ .wizard-actions {
973
+ display: flex;
974
+ gap: var(--space-md);
975
+ flex-wrap: wrap;
976
+ }
977
+
978
  .project-form label {
979
  display: grid;
980
  gap: var(--space-sm);
 
1047
  animation: slideDown 0.3s ease;
1048
  }
1049
 
1050
+ .project-locked-notice {
1051
+ align-items: flex-start;
1052
+ border-color: rgba(46, 204, 113, 0.28);
1053
+ background: rgba(46, 204, 113, 0.08);
1054
+ }
1055
+
1056
+ .read-only-note {
1057
+ padding: 0.75rem 0.9rem;
1058
+ color: var(--text-dim);
1059
+ border: 1px solid rgba(255, 255, 255, 0.12);
1060
+ border-radius: var(--radius-md);
1061
+ background: rgba(255, 255, 255, 0.04);
1062
+ font-size: 0.9rem;
1063
+ line-height: 1.45;
1064
+ }
1065
+
1066
  @keyframes slideDown {
1067
  from { opacity: 0; transform: translateY(-10px); }
1068
  to { opacity: 1; transform: translateY(0); }
 
1167
  display: grid;
1168
  gap: var(--space-md);
1169
  padding: var(--space-md);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1170
  }
1171
 
1172
  .task-row.clickable:hover {
 
1194
  text-transform: uppercase;
1195
  }
1196
 
1197
+ .modal-title-row {
1198
+ display: flex;
1199
+ justify-content: space-between;
1200
+ gap: var(--space-md);
1201
+ align-items: flex-start;
1202
+ margin-bottom: var(--space-md);
1203
+ }
1204
+
1205
+ .modal-title-row p {
1206
+ margin-top: var(--space-xs);
1207
+ color: var(--text-dim);
1208
+ }
1209
+
1210
+ .roadmap-modal {
1211
+ width: min(100%, 980px);
1212
+ }
1213
+
1214
+ .roadmap-timeline {
1215
+ display: grid;
1216
+ gap: var(--space-lg);
1217
+ max-height: 66vh;
1218
+ overflow-y: auto;
1219
+ padding-right: var(--space-sm);
1220
+ }
1221
+
1222
+ .roadmap-phase {
1223
+ display: grid;
1224
+ grid-template-columns: 42px minmax(0, 1fr);
1225
+ gap: var(--space-md);
1226
+ }
1227
+
1228
+ .roadmap-phase-marker {
1229
+ position: relative;
1230
+ display: flex;
1231
+ justify-content: center;
1232
+ }
1233
+
1234
+ .roadmap-phase-marker::after {
1235
+ content: "";
1236
+ position: absolute;
1237
+ top: 38px;
1238
+ bottom: -24px;
1239
+ width: 1px;
1240
+ background: var(--glass-border);
1241
+ }
1242
+
1243
+ .roadmap-phase:last-child .roadmap-phase-marker::after {
1244
+ display: none;
1245
+ }
1246
+
1247
+ .roadmap-phase-marker span {
1248
+ z-index: 1;
1249
+ display: grid;
1250
+ place-items: center;
1251
+ width: 34px;
1252
+ height: 34px;
1253
+ color: var(--bg-deep);
1254
+ background: var(--accent);
1255
+ border-radius: var(--radius-full);
1256
+ font-size: 0.82rem;
1257
+ font-weight: 900;
1258
+ box-shadow: 0 0 14px rgba(0, 240, 255, 0.35);
1259
+ }
1260
+
1261
+ .roadmap-phase-content {
1262
+ display: grid;
1263
+ gap: var(--space-md);
1264
+ min-width: 0;
1265
+ }
1266
+
1267
+ .roadmap-phase-header,
1268
+ .roadmap-task {
1269
+ display: flex;
1270
+ justify-content: space-between;
1271
+ gap: var(--space-md);
1272
+ }
1273
+
1274
+ .roadmap-phase-header {
1275
+ align-items: center;
1276
+ }
1277
+
1278
+ .roadmap-phase-header h4 {
1279
+ margin: 0;
1280
+ font-size: 1rem;
1281
+ }
1282
+
1283
+ .roadmap-phase-header span,
1284
+ .roadmap-task small,
1285
+ .roadmap-task-meta span:last-child {
1286
+ color: var(--text-dim);
1287
+ font-size: 0.8rem;
1288
+ }
1289
+
1290
+ .roadmap-task-list {
1291
+ display: grid;
1292
+ gap: var(--space-sm);
1293
+ }
1294
+
1295
+ .roadmap-task {
1296
+ align-items: flex-start;
1297
+ padding: var(--space-md);
1298
+ border: 1px solid var(--glass-border);
1299
+ border-radius: var(--radius-md);
1300
+ background: rgba(255, 255, 255, 0.04);
1301
+ }
1302
+
1303
+ .roadmap-task > div:first-child {
1304
+ min-width: 0;
1305
+ }
1306
+
1307
+ .roadmap-task p {
1308
+ margin: var(--space-xs) 0;
1309
+ color: var(--text-dim);
1310
+ line-height: 1.45;
1311
+ }
1312
+
1313
+ .roadmap-task-meta {
1314
+ display: grid;
1315
+ justify-items: end;
1316
+ align-content: start;
1317
+ gap: var(--space-sm);
1318
+ white-space: nowrap;
1319
+ }
1320
+
1321
  .task-row span {
1322
  flex: 0 0 auto;
1323
  color: var(--accent);
 
1329
  @media (max-width: 900px) {
1330
  .app-container {
1331
  display: block;
1332
+ height: auto;
1333
+ overflow: visible;
1334
  }
1335
 
1336
  .app-sidebar {
1337
  position: fixed;
1338
+ inset: 0 auto 0 0;
1339
+ width: 280px !important; max-width: 85vw; height: 100dvh; border-radius: 0;
1340
  max-height: calc(100dvh - 1rem);
1341
  overflow-y: auto;
1342
  margin: 0 !important;
 
1355
  .app-main {
1356
  min-height: 100dvh;
1357
  padding: var(--space-md);
1358
+ overflow: visible;
1359
  }
1360
 
1361
  .marketplace-header {
 
1368
  flex-direction: column;
1369
  }
1370
 
1371
+ .dashboard-controls {
1372
+ grid-template-columns: 1fr;
1373
+ }
1374
+
1375
+ .dashboard-filter-group,
1376
+ .dashboard-results {
1377
+ width: 100%;
1378
+ flex-wrap: wrap;
1379
+ justify-content: flex-start;
1380
+ }
1381
+
1382
+ .dashboard-filter-group select {
1383
+ flex: 1 1 150px;
1384
+ }
1385
+
1386
  .marketplace-search {
1387
  width: 100%;
1388
  flex-basis: auto;
 
1415
  .project-detail-grid {
1416
  grid-template-columns: 1fr;
1417
  }
1418
+
1419
+ .modal-title-row,
1420
+ .roadmap-task {
1421
+ flex-direction: column;
1422
+ }
1423
+
1424
+ .roadmap-task-meta {
1425
+ justify-items: start;
1426
+ }
1427
  }
1428
 
1429
  @media (max-width: 640px) {
 
1438
  gap: var(--space-md);
1439
  }
1440
 
1441
+ .app-header { position: sticky; top: 0; background: var(--bg-deep); z-index: 80; border-bottom: 1px solid var(--glass-border); backdrop-filter: blur(8px);
1442
  padding: var(--space-sm);
1443
  }
1444
 
 
1524
  width: 100%;
1525
  }
1526
 
1527
+ .field-with-help,
1528
+ .field-with-help-compact {
1529
+ grid-template-columns: 1fr;
1530
+ }
1531
+
1532
+ .field-help {
1533
+ padding: 0 0 0 var(--space-md);
1534
+ }
1535
+
1536
  .task-row {
1537
  flex-direction: column;
1538
  }
 
1548
  letter-spacing: 0.5px;
1549
  }
1550
  .status-todo { background: rgba(100, 100, 100, 0.2); color: #aaa; }
1551
+ .status-queued { background: rgba(155, 89, 182, 0.2); color: #c084fc; border: 1px solid rgba(155, 89, 182, 0.3); }
1552
  .status-running { background: rgba(52, 152, 219, 0.2); color: #3498db; border: 1px solid rgba(52, 152, 219, 0.3); }
1553
+ .status-in_progress { background: rgba(52, 152, 219, 0.2); color: #3498db; border: 1px solid rgba(52, 152, 219, 0.3); }
1554
  .status-awaiting_approval { background: rgba(241, 196, 15, 0.2); color: #f1c40f; border: 1px solid rgba(241, 196, 15, 0.3); }
1555
  .status-done { background: rgba(46, 204, 113, 0.2); color: #2ecc71; }
1556
  .status-failed { background: rgba(231, 76, 60, 0.2); color: #e74c3c; }
 
1709
  padding: 6px 12px;
1710
  font-size: 0.8rem;
1711
  }
1712
+
1713
+ .mobile-only {
1714
+ display: none !important;
1715
+ }
1716
+
1717
+ @media (max-width: 900px) {
1718
+ .mobile-only {
1719
+ display: flex !important;
1720
+ }
1721
+ }
1722
+
1723
+ .sidebar-close {
1724
+ background: rgba(255, 255, 255, 0.05);
1725
+ border: 1px solid var(--glass-border);
1726
+ border-radius: var(--radius-sm);
1727
+ padding: var(--space-xs);
1728
+ transition: var(--transition);
1729
+ }
1730
+
1731
+ .sidebar-close:hover {
1732
+ background: rgba(255, 255, 255, 0.1);
1733
+ }
1734
+
1735
+ @media (max-width: 640px) {
1736
+ .app-console {
1737
+ position: fixed;
1738
+ bottom: 0;
1739
+ left: 0;
1740
+ right: 0;
1741
+ margin: 0;
1742
+ border-radius: var(--radius-lg) var(--radius-lg) 0 0;
1743
+ z-index: 900;
1744
+ }
1745
+
1746
+ .app-console > div:last-child {
1747
+ height: 80px !important;
1748
+ }
1749
+ }
1750
+
1751
+ /* Form Elements Skinning */
1752
+ input, select, textarea {
1753
+ background: rgba(255, 255, 255, 0.05) !important;
1754
+ border: 1px solid rgba(255, 255, 255, 0.1) !important;
1755
+ border-radius: var(--radius-md) !important;
1756
+ color: var(--text) !important;
1757
+ padding: 0.6rem 1rem !important;
1758
+ font-family: inherit !important;
1759
+ font-size: 0.9rem !important;
1760
+ transition: all 0.2s ease !important;
1761
+ outline: none !important;
1762
+ }
1763
+
1764
+ select {
1765
+ appearance: none !important;
1766
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgba(255,255,255,0.5)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") !important;
1767
+ background-repeat: no-repeat !important;
1768
+ background-position: right 0.7rem center !important;
1769
+ background-size: 1rem !important;
1770
+ padding-right: 2.5rem !important;
1771
+ cursor: pointer !important;
1772
+ }
1773
+
1774
+ input:focus, select:focus, textarea:focus {
1775
+ border-color: var(--accent) !important;
1776
+ background: rgba(255, 255, 255, 0.08) !important;
1777
+ box-shadow: 0 0 0 2px rgba(99, 102, 241, 0.2) !important;
1778
+ }
1779
+
1780
+ option {
1781
+ background-color: #1a1a1a !important;
1782
+ color: var(--text) !important;
1783
+ }
1784
+
1785
+ textarea {
1786
+ resize: vertical !important;
1787
+ min-height: 80px !important;
1788
+ }