@grifhinz/logics-manager 2.8.1 → 2.9.1

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.
@@ -283,7 +283,9 @@
283
283
  z-index: 60;
284
284
  display: grid;
285
285
  gap: 12px;
286
- min-width: 220px;
286
+ width: max-content;
287
+ min-width: 260px;
288
+ max-width: min(360px, calc(100vw - 24px));
287
289
  padding: 10px;
288
290
  border: 1px solid var(--vscode-panel-border, #333333);
289
291
  border-radius: 6px;
@@ -834,7 +836,7 @@
834
836
  display: grid;
835
837
  grid-template-columns: minmax(180px, 260px) minmax(0, 1fr);
836
838
  gap: 12px;
837
- min-height: min(62vh, 760px);
839
+ align-items: start;
838
840
  }
839
841
 
840
842
  .viewer-workspace__tree,
@@ -845,68 +847,175 @@
845
847
  background: var(--vscode-editorWidget-background, #202020);
846
848
  }
847
849
 
848
- .viewer-workspace__tree {
849
- overflow: auto;
850
- }
851
-
852
850
  .viewer-workspace__preview {
853
851
  display: grid;
854
852
  align-content: start;
855
853
  gap: 10px;
856
854
  padding: 12px;
857
- overflow: auto;
858
855
  }
859
856
 
860
857
  .viewer-workspace__tree-header {
861
- position: sticky;
862
- top: 0;
863
- z-index: 1;
864
- padding: 8px;
858
+ padding: 6px 8px;
865
859
  border-bottom: 1px solid var(--vscode-panel-border, #333333);
866
860
  background: var(--vscode-editorWidget-background, #202020);
867
861
  color: var(--vscode-descriptionForeground, #aaaaaa);
868
862
  font-size: 11px;
869
- font-weight: 700;
870
863
  overflow-wrap: anywhere;
871
864
  }
872
865
 
866
+ .viewer-workspace__breadcrumb {
867
+ display: flex;
868
+ flex-wrap: wrap;
869
+ align-items: center;
870
+ gap: 2px;
871
+ min-width: 0;
872
+ }
873
+
874
+ .viewer-workspace__crumb {
875
+ border: 0;
876
+ background: transparent;
877
+ color: var(--vscode-descriptionForeground, #aaaaaa);
878
+ font: inherit;
879
+ font-size: 11px;
880
+ padding: 2px 4px;
881
+ border-radius: 3px;
882
+ cursor: pointer;
883
+ max-width: 14ch;
884
+ overflow: hidden;
885
+ text-overflow: ellipsis;
886
+ white-space: nowrap;
887
+ }
888
+
889
+ .viewer-workspace__crumb:hover {
890
+ color: var(--vscode-foreground, #d4d4d4);
891
+ background: var(--vscode-list-hoverBackground, rgb(255 255 255 / 6%));
892
+ }
893
+
894
+ .viewer-workspace__crumb:focus-visible {
895
+ outline: 1px solid var(--vscode-focusBorder, #007fd4);
896
+ outline-offset: 0;
897
+ }
898
+
899
+ .viewer-workspace__crumb.is-current {
900
+ color: var(--vscode-foreground, #d4d4d4);
901
+ font-weight: 600;
902
+ cursor: default;
903
+ }
904
+
905
+ .viewer-workspace__crumb-sep {
906
+ color: var(--vscode-descriptionForeground, #888888);
907
+ font-size: 11px;
908
+ user-select: none;
909
+ }
910
+
873
911
  .viewer-workspace__tree-list {
874
912
  display: grid;
875
913
  gap: 1px;
876
- padding: 6px;
914
+ padding: 4px;
877
915
  }
878
916
 
879
917
  .viewer-workspace__item {
880
918
  width: 100%;
881
919
  min-width: 0;
882
920
  display: grid;
883
- grid-template-columns: 18px minmax(0, 1fr);
884
- gap: 5px;
921
+ grid-template-columns: 16px minmax(0, 1fr);
922
+ gap: 6px;
885
923
  align-items: center;
886
924
  border: 0;
887
925
  border-radius: 4px;
888
- padding: 5px 6px;
926
+ padding: 4px 6px;
889
927
  background: transparent;
890
928
  color: var(--vscode-foreground, #d4d4d4);
891
929
  font: inherit;
892
930
  font-size: 12px;
931
+ line-height: 1.4;
893
932
  text-align: left;
894
933
  cursor: pointer;
895
934
  }
896
935
 
897
- .viewer-workspace__item:hover,
936
+ .viewer-workspace__item:hover {
937
+ background: var(--vscode-list-hoverBackground, rgb(255 255 255 / 6%));
938
+ }
939
+
940
+ .viewer-workspace__item:focus-visible {
941
+ outline: 1px solid var(--vscode-focusBorder, #007fd4);
942
+ outline-offset: -1px;
943
+ background: var(--vscode-list-focusBackground, rgb(255 255 255 / 4%));
944
+ }
945
+
898
946
  .viewer-workspace__item.is-selected {
899
- background: var(--vscode-list-hoverBackground, rgb(255 255 255 / 8%));
947
+ background: var(--vscode-list-activeSelectionBackground, #094771);
948
+ color: var(--vscode-list-activeSelectionForeground, #ffffff);
949
+ }
950
+
951
+ .viewer-workspace__item.is-selected .viewer-workspace__item-icon {
952
+ color: inherit;
900
953
  }
901
954
 
902
955
  .viewer-workspace__item.is-muted {
903
- color: var(--vscode-descriptionForeground, #aaaaaa);
956
+ color: var(--vscode-descriptionForeground, #888888);
904
957
  cursor: default;
905
958
  }
906
959
 
960
+ .viewer-workspace__item--up {
961
+ color: var(--vscode-descriptionForeground, #aaaaaa);
962
+ font-style: italic;
963
+ }
964
+
907
965
  .viewer-workspace__item-icon {
966
+ color: var(--vscode-symbolIcon-folderForeground, #c5c5c5);
967
+ display: inline-flex;
968
+ align-items: center;
969
+ justify-content: center;
970
+ width: 16px;
971
+ height: 16px;
972
+ }
973
+
974
+ .viewer-workspace__item--file .viewer-workspace__item-icon {
975
+ color: var(--vscode-symbolIcon-fileForeground, #9cdcfe);
976
+ }
977
+
978
+ .viewer-workspace__item.is-muted .viewer-workspace__item-icon {
979
+ color: var(--vscode-descriptionForeground, #666666);
980
+ }
981
+
982
+ .viewer-workspace__item-icon svg {
983
+ width: 14px;
984
+ height: 14px;
985
+ }
986
+
987
+ .viewer-workspace__placeholder {
988
+ display: flex;
989
+ align-items: center;
990
+ gap: 8px;
991
+ padding: 10px 12px;
908
992
  color: var(--vscode-descriptionForeground, #aaaaaa);
909
- text-align: center;
993
+ font-size: 12px;
994
+ border: 1px dashed var(--vscode-panel-border, #333333);
995
+ border-radius: 4px;
996
+ margin: 6px;
997
+ }
998
+
999
+ .viewer-workspace__placeholder--warn {
1000
+ border-color: var(--vscode-editorWarning-foreground, #cca700);
1001
+ color: var(--vscode-editorWarning-foreground, #cca700);
1002
+ }
1003
+
1004
+ .viewer-workspace__placeholder--unavailable {
1005
+ border-color: var(--vscode-editorError-foreground, #f48771);
1006
+ color: var(--vscode-editorError-foreground, #f48771);
1007
+ }
1008
+
1009
+ .viewer-workspace__placeholder-icon {
1010
+ display: inline-flex;
1011
+ width: 16px;
1012
+ height: 16px;
1013
+ align-items: center;
1014
+ justify-content: center;
1015
+ font-weight: 700;
1016
+ border-radius: 50%;
1017
+ background: rgb(255 255 255 / 6%);
1018
+ font-size: 11px;
910
1019
  }
911
1020
 
912
1021
  .viewer-workspace__item-name {
@@ -943,8 +1052,6 @@
943
1052
  }
944
1053
 
945
1054
  .viewer-workspace__code {
946
- max-height: min(70vh, 760px);
947
- overflow: auto;
948
1055
  margin: 0;
949
1056
  padding: 12px;
950
1057
  border: 1px solid var(--vscode-panel-border, #333333);
@@ -957,6 +1064,345 @@
957
1064
  overflow-wrap: anywhere;
958
1065
  }
959
1066
 
1067
+ .viewer-workshop {
1068
+ display: grid;
1069
+ gap: 10px;
1070
+ }
1071
+
1072
+ .viewer-workshop__panel {
1073
+ border: 1px solid var(--vscode-panel-border, #333333);
1074
+ border-radius: 6px;
1075
+ background: var(--vscode-editorWidget-background, #202020);
1076
+ padding: 8px;
1077
+ }
1078
+
1079
+ .viewer-workshop__panel--terminals {
1080
+ display: flex;
1081
+ align-items: center;
1082
+ justify-content: center;
1083
+ padding: 16px;
1084
+ }
1085
+
1086
+ .viewer-workshop__panel--terminals .viewer-workspace__placeholder {
1087
+ margin: 0;
1088
+ max-width: 480px;
1089
+ }
1090
+
1091
+ .viewer-workshop__panel--terminals-active {
1092
+ display: grid;
1093
+ grid-template-columns: minmax(180px, 220px) minmax(0, 1fr);
1094
+ gap: 8px;
1095
+ padding: 0;
1096
+ background: var(--vscode-editorWidget-background, #202020);
1097
+ }
1098
+
1099
+ .viewer-workshop__terminal-list {
1100
+ border-right: 1px solid var(--vscode-panel-border, #333333);
1101
+ padding: 6px;
1102
+ display: flex;
1103
+ flex-direction: column;
1104
+ gap: 6px;
1105
+ min-height: 360px;
1106
+ }
1107
+
1108
+ .viewer-workshop__terminal-list-header {
1109
+ display: flex;
1110
+ align-items: center;
1111
+ justify-content: space-between;
1112
+ gap: 4px;
1113
+ font-size: 11px;
1114
+ font-weight: 700;
1115
+ color: var(--vscode-descriptionForeground, #aaaaaa);
1116
+ text-transform: uppercase;
1117
+ }
1118
+
1119
+ .viewer-workshop__terminal-new {
1120
+ font-size: 11px;
1121
+ padding: 2px 8px;
1122
+ }
1123
+
1124
+ .viewer-workshop__terminal-actions {
1125
+ display: flex;
1126
+ gap: 4px;
1127
+ }
1128
+
1129
+ .viewer-workshop__terminal-rows {
1130
+ display: flex;
1131
+ flex-direction: column;
1132
+ gap: 2px;
1133
+ }
1134
+
1135
+ .viewer-workshop__terminal-row {
1136
+ display: grid;
1137
+ grid-template-columns: minmax(0, 1fr) auto auto;
1138
+ gap: 6px;
1139
+ align-items: center;
1140
+ border: 0;
1141
+ background: transparent;
1142
+ color: var(--vscode-foreground, #d4d4d4);
1143
+ font: inherit;
1144
+ font-size: 12px;
1145
+ text-align: left;
1146
+ padding: 4px 6px;
1147
+ border-radius: 4px;
1148
+ cursor: pointer;
1149
+ }
1150
+
1151
+ .viewer-workshop__terminal-row:hover {
1152
+ background: var(--vscode-list-hoverBackground, rgb(255 255 255 / 6%));
1153
+ }
1154
+
1155
+ .viewer-workshop__terminal-row.is-active {
1156
+ background: var(--vscode-list-activeSelectionBackground, #094771);
1157
+ color: var(--vscode-list-activeSelectionForeground, #ffffff);
1158
+ }
1159
+
1160
+ .viewer-workshop__terminal-row-label {
1161
+ overflow: hidden;
1162
+ text-overflow: ellipsis;
1163
+ white-space: nowrap;
1164
+ }
1165
+
1166
+ .viewer-workshop__terminal-row-close {
1167
+ display: inline-flex;
1168
+ width: 18px;
1169
+ height: 18px;
1170
+ align-items: center;
1171
+ justify-content: center;
1172
+ border-radius: 3px;
1173
+ color: inherit;
1174
+ font-size: 14px;
1175
+ line-height: 1;
1176
+ }
1177
+
1178
+ .viewer-workshop__terminal-row-close:hover {
1179
+ background: var(--vscode-list-errorBackground, rgb(244 135 113 / 25%));
1180
+ }
1181
+
1182
+ .viewer-workshop__terminal-row-close.is-closing {
1183
+ opacity: 0.85;
1184
+ pointer-events: none;
1185
+ cursor: progress;
1186
+ }
1187
+
1188
+ .viewer-workshop__terminal-row.is-closing {
1189
+ opacity: 0.6;
1190
+ pointer-events: none;
1191
+ cursor: progress;
1192
+ }
1193
+
1194
+ .viewer-workshop__spinner {
1195
+ display: inline-block;
1196
+ width: 12px;
1197
+ height: 12px;
1198
+ border: 1.5px solid currentColor;
1199
+ border-right-color: transparent;
1200
+ border-radius: 50%;
1201
+ animation: viewer-workshop-spin 0.7s linear infinite;
1202
+ }
1203
+
1204
+ @keyframes viewer-workshop-spin {
1205
+ to { transform: rotate(360deg); }
1206
+ }
1207
+
1208
+ .viewer-workshop__terminal-stage {
1209
+ padding: 6px;
1210
+ min-width: 0;
1211
+ }
1212
+
1213
+ .viewer-workshop__terminal-host {
1214
+ width: 100%;
1215
+ height: 480px;
1216
+ background: #0a0a0a;
1217
+ border-radius: 4px;
1218
+ padding: 6px;
1219
+ }
1220
+
1221
+ .viewer-workshop__terminal-host .xterm {
1222
+ height: 100%;
1223
+ }
1224
+
1225
+ .viewer-workshop__group {
1226
+ margin-bottom: 12px;
1227
+ }
1228
+
1229
+ .viewer-workshop__group-title {
1230
+ font-size: 11px;
1231
+ text-transform: uppercase;
1232
+ letter-spacing: 0.04em;
1233
+ color: var(--vscode-descriptionForeground, #aaaaaa);
1234
+ margin: 0 0 4px;
1235
+ }
1236
+
1237
+ .viewer-workshop__commands {
1238
+ list-style: none;
1239
+ padding: 0;
1240
+ margin: 0;
1241
+ display: grid;
1242
+ gap: 6px;
1243
+ }
1244
+
1245
+ .viewer-workshop__command {
1246
+ border: 1px solid var(--vscode-panel-border, #333333);
1247
+ border-radius: 4px;
1248
+ background: var(--vscode-textCodeBlock-background, #161616);
1249
+ padding: 6px 8px;
1250
+ }
1251
+
1252
+ .viewer-workshop__command-header {
1253
+ display: flex;
1254
+ align-items: center;
1255
+ justify-content: space-between;
1256
+ gap: 8px;
1257
+ }
1258
+
1259
+ .viewer-workshop__command-name {
1260
+ display: flex;
1261
+ flex-direction: column;
1262
+ min-width: 0;
1263
+ }
1264
+
1265
+ .viewer-workshop__command-name strong {
1266
+ font-size: 12px;
1267
+ }
1268
+
1269
+ .viewer-workshop__command-source {
1270
+ font-size: 10px;
1271
+ color: var(--vscode-descriptionForeground, #888888);
1272
+ }
1273
+
1274
+ .viewer-workshop__command-actions {
1275
+ display: flex;
1276
+ align-items: center;
1277
+ gap: 6px;
1278
+ }
1279
+
1280
+ .viewer-workshop__command-meta {
1281
+ margin: 4px 0;
1282
+ font-size: 11px;
1283
+ color: var(--vscode-descriptionForeground, #aaaaaa);
1284
+ overflow-wrap: anywhere;
1285
+ }
1286
+
1287
+ .viewer-workshop__command-meta code {
1288
+ font-family: var(--vscode-editor-font-family, monospace);
1289
+ }
1290
+
1291
+ .viewer-workshop__state {
1292
+ font-size: 10px;
1293
+ text-transform: uppercase;
1294
+ letter-spacing: 0.04em;
1295
+ padding: 2px 6px;
1296
+ border-radius: 10px;
1297
+ background: rgb(255 255 255 / 6%);
1298
+ color: var(--vscode-descriptionForeground, #aaaaaa);
1299
+ }
1300
+
1301
+ .viewer-workshop__state--running,
1302
+ .viewer-workshop__state--starting {
1303
+ background: var(--vscode-debugIcon-startForeground, #387a14);
1304
+ color: #ffffff;
1305
+ }
1306
+
1307
+ .viewer-workshop__state--failed,
1308
+ .viewer-workshop__state--error {
1309
+ background: var(--vscode-editorError-foreground, #f48771);
1310
+ color: #1e1e1e;
1311
+ }
1312
+
1313
+ .viewer-workshop__state--finished {
1314
+ background: var(--vscode-charts-green, #4caf50);
1315
+ color: #1e1e1e;
1316
+ }
1317
+
1318
+ .viewer-workshop__state--stopped {
1319
+ background: var(--vscode-charts-orange, #cca700);
1320
+ color: #1e1e1e;
1321
+ }
1322
+
1323
+ .viewer-workshop__exit {
1324
+ font-size: 10px;
1325
+ font-family: var(--vscode-editor-font-family, monospace);
1326
+ color: var(--vscode-descriptionForeground, #aaaaaa);
1327
+ }
1328
+
1329
+ .viewer-workshop__exit--fail {
1330
+ color: var(--vscode-editorError-foreground, #f48771);
1331
+ }
1332
+
1333
+ .viewer-workshop__log {
1334
+ margin: 6px 0 0;
1335
+ padding: 6px 8px;
1336
+ max-height: 200px;
1337
+ overflow: auto;
1338
+ font-size: 11px;
1339
+ line-height: 1.4;
1340
+ background: var(--vscode-terminal-background, #0a0a0a);
1341
+ color: var(--vscode-terminal-foreground, #d4d4d4);
1342
+ border-radius: 3px;
1343
+ white-space: pre-wrap;
1344
+ overflow-wrap: anywhere;
1345
+ }
1346
+
1347
+ .viewer-workshop__log:empty {
1348
+ display: none;
1349
+ }
1350
+
1351
+ .viewer-lan-banner {
1352
+ display: flex;
1353
+ align-items: center;
1354
+ gap: 10px;
1355
+ padding: 8px 14px;
1356
+ background: var(--vscode-statusBarItem-warningBackground, #b08600);
1357
+ color: var(--vscode-statusBarItem-warningForeground, #1e1e1e);
1358
+ font-size: 12px;
1359
+ font-weight: 600;
1360
+ border-bottom: 1px solid rgb(0 0 0 / 30%);
1361
+ }
1362
+
1363
+ .viewer-lan-banner[hidden] {
1364
+ display: none !important;
1365
+ }
1366
+
1367
+ .viewer-lan-banner__icon {
1368
+ display: inline-flex;
1369
+ width: 18px;
1370
+ height: 18px;
1371
+ align-items: center;
1372
+ justify-content: center;
1373
+ border-radius: 50%;
1374
+ background: rgb(0 0 0 / 30%);
1375
+ color: #ffd33d;
1376
+ font-weight: 700;
1377
+ }
1378
+
1379
+ .viewer-lan-banner__copy {
1380
+ flex: 0 1 auto;
1381
+ min-width: 0;
1382
+ }
1383
+
1384
+ .viewer-lan-banner__copy-short {
1385
+ display: none;
1386
+ }
1387
+
1388
+ .viewer-lan-banner__url {
1389
+ font-family: var(--vscode-editor-font-family, monospace);
1390
+ font-weight: 500;
1391
+ font-size: 11px;
1392
+ background: rgb(0 0 0 / 25%);
1393
+ color: #ffffff;
1394
+ padding: 2px 8px;
1395
+ border-radius: 3px;
1396
+ overflow: hidden;
1397
+ text-overflow: ellipsis;
1398
+ white-space: nowrap;
1399
+ max-width: 40%;
1400
+ }
1401
+
1402
+ .viewer-lan-banner__copy-button {
1403
+ margin-left: auto;
1404
+ }
1405
+
960
1406
  .viewer-workspace__image {
961
1407
  max-width: 100%;
962
1408
  max-height: min(70vh, 760px);
@@ -2200,9 +2646,10 @@
2200
2646
  }
2201
2647
 
2202
2648
  .viewer-refresh-menu__panel {
2203
- left: 0;
2204
- right: auto;
2205
- min-width: min(260px, 100%);
2649
+ right: 0;
2650
+ left: auto;
2651
+ min-width: 260px;
2652
+ max-width: calc(100vw - 16px);
2206
2653
  }
2207
2654
 
2208
2655
  .viewer-document {
@@ -2232,3 +2679,173 @@
2232
2679
  grid-template-columns: 1fr;
2233
2680
  }
2234
2681
  }
2682
+
2683
+ /* ---------------------------------------------------------------------------
2684
+ * Responsive viewer conventions (req_246 / task_221).
2685
+ *
2686
+ * Desktop: default rules above.
2687
+ * Tablet (=600): collapse multi-column grids and soften min-width floors so
2688
+ * any iPad-portrait or split-screen layout still works.
2689
+ * Phone (=420): shrink chrome (topbar, toolbar, banner, filter panel) and
2690
+ * let monospace blocks (diffs, code preview) wrap without
2691
+ * triggering a viewport-level horizontal scroll.
2692
+ *
2693
+ * Items 2-4 add their rules in clearly-labelled @media blocks below; new
2694
+ * responsive tweaks should land in the matching block instead of creating
2695
+ * one-off breakpoints (the historical 560/700/860/980 queries above stay so
2696
+ * existing layouts do not regress).
2697
+ * --------------------------------------------------------------------------- */
2698
+
2699
+ /* req_246 item_426 — Git screen fixes at small breakpoints. */
2700
+ @media (max-width: 600px) {
2701
+ .viewer-git__workspace,
2702
+ .viewer-git__workspace.has-diff-detail {
2703
+ grid-template-columns: 1fr;
2704
+ }
2705
+ }
2706
+
2707
+ /* req_246 item_428 — Phone (=420px) chrome adjustments. Compress the
2708
+ * topbar (wrap actions to a second row, shrink padding), let the filter
2709
+ * panel stack, give the floating document inset more screen, tighten the
2710
+ * update + LAN banners, and shrink the buttons enough to fit a 360px
2711
+ * viewport without breaking primary affordances.
2712
+ */
2713
+ @media (max-width: 420px) {
2714
+ .viewer-topbar {
2715
+ flex-wrap: wrap;
2716
+ gap: 8px;
2717
+ padding: 8px 10px;
2718
+ }
2719
+
2720
+ .viewer-topbar__actions {
2721
+ flex-wrap: wrap;
2722
+ gap: 4px;
2723
+ width: 100%;
2724
+ justify-content: flex-start;
2725
+ }
2726
+
2727
+ .viewer-topbar__actions button {
2728
+ padding: 4px 8px;
2729
+ font-size: 11px;
2730
+ }
2731
+
2732
+ .viewer-topbar__identity {
2733
+ flex-wrap: wrap;
2734
+ }
2735
+
2736
+ .viewer-topbar__meta {
2737
+ width: 100%;
2738
+ font-size: 11px;
2739
+ }
2740
+
2741
+ .viewer-filter-panel {
2742
+ gap: 8px;
2743
+ }
2744
+
2745
+ .viewer-document {
2746
+ inset: 56px 6px 6px;
2747
+ border-radius: 6px;
2748
+ }
2749
+
2750
+ .viewer-update {
2751
+ flex-wrap: wrap;
2752
+ padding: 6px 10px;
2753
+ font-size: 11px;
2754
+ }
2755
+ }
2756
+
2757
+ /* LAN banner: compact form on every non-desktop viewport. The full message
2758
+ * + URL chip + Copy button row needs at least a desktop-width line to read
2759
+ * cleanly; below that we drop the URL chip (the Copy button covers it) and
2760
+ * switch to a short message variant. */
2761
+ @media (max-width: 720px) {
2762
+ .viewer-lan-banner {
2763
+ flex-wrap: wrap;
2764
+ align-items: center;
2765
+ gap: 6px;
2766
+ padding: 4px 8px;
2767
+ font-size: 10px;
2768
+ font-weight: 600;
2769
+ line-height: 1.25;
2770
+ }
2771
+
2772
+ .viewer-lan-banner__icon {
2773
+ width: 14px;
2774
+ height: 14px;
2775
+ font-size: 10px;
2776
+ }
2777
+
2778
+ .viewer-lan-banner__copy {
2779
+ flex: 1 1 0;
2780
+ min-width: 0;
2781
+ }
2782
+
2783
+ .viewer-lan-banner__url {
2784
+ display: none !important;
2785
+ }
2786
+
2787
+ .viewer-lan-banner__copy-long {
2788
+ display: none;
2789
+ }
2790
+
2791
+ .viewer-lan-banner__copy-short {
2792
+ display: inline;
2793
+ }
2794
+
2795
+ .viewer-lan-banner__copy-button {
2796
+ margin-left: auto;
2797
+ padding: 2px 8px;
2798
+ font-size: 10px;
2799
+ line-height: 1.2;
2800
+ }
2801
+ }
2802
+
2803
+ /* req_246 item_427 — Tablet (=600px) grid collapses for board, CDX, CI,
2804
+ * Workspace, and insights screens. Also soften the hard min-width floors so
2805
+ * an iPad-portrait or split-screen layout no longer triggers a horizontal
2806
+ * scroll on the body.
2807
+ */
2808
+ @media (max-width: 600px) {
2809
+ .viewer-filter-panel {
2810
+ grid-template-columns: 1fr;
2811
+ }
2812
+
2813
+ .viewer-cdx__workspace,
2814
+ .viewer-cdx__workspace--missions,
2815
+ .viewer-ci__workspace,
2816
+ .viewer-workspace {
2817
+ grid-template-columns: 1fr;
2818
+ }
2819
+
2820
+ .viewer-git__summary,
2821
+ .viewer-cdx__summary,
2822
+ .viewer-ci__summary,
2823
+ .viewer-insights__summary,
2824
+ .viewer-health__summary {
2825
+ grid-template-columns: 1fr;
2826
+ }
2827
+ }
2828
+
2829
+
2830
+ @media (max-width: 420px) {
2831
+ .viewer-git__files li {
2832
+ flex-wrap: wrap;
2833
+ row-gap: 4px;
2834
+ }
2835
+
2836
+ .viewer-git-badges,
2837
+ .viewer-git-badge {
2838
+ flex-wrap: wrap;
2839
+ }
2840
+
2841
+ .viewer-git__diff pre {
2842
+ white-space: pre-wrap;
2843
+ overflow-wrap: anywhere;
2844
+ font-size: 11px;
2845
+ }
2846
+
2847
+ .viewer-git__diff-meta {
2848
+ flex-wrap: wrap;
2849
+ gap: 4px;
2850
+ }
2851
+ }