omnilane 0.7.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.
package/ui/styles.css ADDED
@@ -0,0 +1,1023 @@
1
+ :root {
2
+ --ink: #17212b;
3
+ --muted: #52606d;
4
+ --quiet: #6b7280;
5
+ --canvas: #f3f4f5;
6
+ --paper: #ffffff;
7
+ --line: #d2d7dc;
8
+ --line-strong: #9aa5af;
9
+ --selection: #e8f1f9;
10
+ --accent: #1f5f99;
11
+ --good: #17633a;
12
+ --warn: #8a4b08;
13
+ --fault: #b42318;
14
+ --reading: "Avenir Next", "Segoe UI", system-ui, sans-serif;
15
+ --data: SFMono-Regular, Menlo, Consolas, monospace;
16
+ --header-height: 54px;
17
+ }
18
+
19
+ * {
20
+ box-sizing: border-box;
21
+ }
22
+
23
+ html,
24
+ body {
25
+ width: 100%;
26
+ height: 100%;
27
+ min-width: 320px;
28
+ margin: 0;
29
+ overflow: hidden;
30
+ }
31
+
32
+ html {
33
+ background: var(--canvas);
34
+ }
35
+
36
+ body {
37
+ color: var(--ink);
38
+ background: var(--canvas);
39
+ font-family: var(--reading);
40
+ font-size: 15px;
41
+ line-height: 1.5;
42
+ }
43
+
44
+ button,
45
+ input,
46
+ select,
47
+ summary {
48
+ color: inherit;
49
+ font: inherit;
50
+ }
51
+
52
+ button,
53
+ summary {
54
+ cursor: pointer;
55
+ }
56
+
57
+ button:focus-visible,
58
+ input:focus-visible,
59
+ select:focus-visible,
60
+ summary:focus-visible,
61
+ [tabindex="0"]:focus-visible {
62
+ outline: 3px solid var(--accent);
63
+ outline-offset: 2px;
64
+ }
65
+
66
+ [hidden] {
67
+ display: none !important;
68
+ }
69
+
70
+ .board-frame {
71
+ height: 100dvh;
72
+ overflow: hidden;
73
+ background: var(--paper);
74
+ }
75
+
76
+ .board-header {
77
+ height: var(--header-height);
78
+ min-height: var(--header-height);
79
+ display: flex;
80
+ align-items: center;
81
+ justify-content: space-between;
82
+ border-bottom: 1px solid var(--line-strong);
83
+ background: var(--paper);
84
+ }
85
+
86
+ .board-identity {
87
+ min-width: 0;
88
+ display: flex;
89
+ align-items: baseline;
90
+ gap: 8px;
91
+ padding: 0 18px;
92
+ white-space: nowrap;
93
+ }
94
+
95
+ .board-identity strong {
96
+ font-size: 15px;
97
+ font-weight: 700;
98
+ letter-spacing: -0.01em;
99
+ }
100
+
101
+ .board-identity span {
102
+ color: var(--muted);
103
+ font-size: 13px;
104
+ }
105
+
106
+ .board-readouts {
107
+ height: 100%;
108
+ display: flex;
109
+ align-items: center;
110
+ }
111
+
112
+ .read-only-tag,
113
+ .job-count,
114
+ .connection-status {
115
+ height: 100%;
116
+ margin: 0;
117
+ display: flex;
118
+ align-items: center;
119
+ border-left: 1px solid var(--line);
120
+ padding: 0 14px;
121
+ color: var(--muted);
122
+ font-size: 12px;
123
+ white-space: nowrap;
124
+ }
125
+
126
+ .read-only-tag {
127
+ font-weight: 650;
128
+ }
129
+
130
+ .job-count {
131
+ min-width: 76px;
132
+ justify-content: center;
133
+ font-family: var(--data);
134
+ font-size: 11px;
135
+ }
136
+
137
+ .connection-status {
138
+ min-width: 172px;
139
+ gap: 8px;
140
+ }
141
+
142
+ .connection-lamp {
143
+ width: 8px;
144
+ height: 8px;
145
+ flex: 0 0 auto;
146
+ border-radius: 50%;
147
+ background: var(--quiet);
148
+ }
149
+
150
+ .connection-status[data-mode="live"] .connection-lamp {
151
+ background: var(--good);
152
+ }
153
+
154
+ .connection-status[data-mode="waiting"] .connection-lamp,
155
+ .connection-status[data-mode="reconnecting"] .connection-lamp {
156
+ background: var(--warn);
157
+ }
158
+
159
+ .connection-status[data-mode="unauthorized"] .connection-lamp {
160
+ background: var(--fault);
161
+ }
162
+
163
+ .board-layout {
164
+ height: calc(100dvh - var(--header-height));
165
+ min-height: 0;
166
+ display: grid;
167
+ grid-template-columns: clamp(320px, 26vw, 400px) minmax(0, 1fr);
168
+ overflow: hidden;
169
+ }
170
+
171
+ .dispatch-index {
172
+ min-width: 0;
173
+ min-height: 0;
174
+ display: flex;
175
+ flex-direction: column;
176
+ overflow: hidden;
177
+ border-right: 1px solid var(--line-strong);
178
+ background: var(--canvas);
179
+ }
180
+
181
+ .index-heading {
182
+ flex: 0 0 auto;
183
+ display: flex;
184
+ align-items: center;
185
+ min-height: 72px;
186
+ padding: 14px 18px 12px;
187
+ border-bottom: 1px solid var(--line);
188
+ }
189
+
190
+ .section-label,
191
+ .state-code {
192
+ margin: 0 0 3px;
193
+ color: var(--muted);
194
+ font-size: 12px;
195
+ font-weight: 650;
196
+ }
197
+
198
+ .index-heading h1,
199
+ .section-heading h3,
200
+ .inspector-state h2 {
201
+ margin: 0;
202
+ font-weight: 650;
203
+ letter-spacing: -0.02em;
204
+ line-height: 1.2;
205
+ }
206
+
207
+ .index-heading h1 {
208
+ font-size: 20px;
209
+ }
210
+
211
+ .queue-controls {
212
+ flex: 0 0 auto;
213
+ padding: 12px 14px 14px;
214
+ border-bottom: 1px solid var(--line);
215
+ }
216
+
217
+ .search-control {
218
+ display: grid;
219
+ gap: 5px;
220
+ color: var(--muted);
221
+ font-size: 12px;
222
+ font-weight: 650;
223
+ }
224
+
225
+ .search-control input {
226
+ width: 100%;
227
+ min-height: 44px;
228
+ border: 1px solid var(--line-strong);
229
+ border-radius: 5px;
230
+ padding: 9px 11px;
231
+ color: var(--ink);
232
+ background: var(--paper);
233
+ font-size: 14px;
234
+ }
235
+
236
+ .search-control input::placeholder {
237
+ color: var(--quiet);
238
+ opacity: 1;
239
+ }
240
+
241
+ .status-filter {
242
+ margin: 10px 0 0;
243
+ padding: 0;
244
+ border: 0;
245
+ }
246
+
247
+ .status-filter legend {
248
+ margin-bottom: 5px;
249
+ color: var(--muted);
250
+ font-size: 12px;
251
+ font-weight: 650;
252
+ }
253
+
254
+ .filter-options {
255
+ display: grid;
256
+ grid-template-columns: repeat(4, minmax(0, 1fr));
257
+ border: 1px solid var(--line-strong);
258
+ border-radius: 5px;
259
+ overflow: hidden;
260
+ background: var(--paper);
261
+ }
262
+
263
+ .filter-button {
264
+ min-width: 0;
265
+ min-height: 44px;
266
+ border: 0;
267
+ border-right: 1px solid var(--line);
268
+ padding: 7px 4px;
269
+ background: transparent;
270
+ font-size: 12px;
271
+ }
272
+
273
+ .filter-button:last-child {
274
+ border-right: 0;
275
+ }
276
+
277
+ .filter-button:hover {
278
+ background: #edf0f2;
279
+ }
280
+
281
+ .filter-button.is-active {
282
+ color: #ffffff;
283
+ background: var(--ink);
284
+ }
285
+
286
+ .filter-button:disabled,
287
+ .search-control input:disabled {
288
+ cursor: not-allowed;
289
+ opacity: 0.58;
290
+ }
291
+
292
+ .job-list {
293
+ min-height: 0;
294
+ flex: 1 1 auto;
295
+ margin: 0;
296
+ padding: 0;
297
+ overflow-y: auto;
298
+ overscroll-behavior: contain;
299
+ list-style: none;
300
+ scrollbar-gutter: stable;
301
+ }
302
+
303
+ .job-list li {
304
+ margin: 0;
305
+ }
306
+
307
+ .job-card {
308
+ position: relative;
309
+ width: 100%;
310
+ min-height: 80px;
311
+ display: grid;
312
+ grid-template-columns: minmax(0, 1fr) auto;
313
+ gap: 4px 12px;
314
+ border: 0;
315
+ border-bottom: 1px solid var(--line);
316
+ padding: 12px 14px 11px 18px;
317
+ text-align: left;
318
+ background: transparent;
319
+ }
320
+
321
+ .job-card::before {
322
+ content: "";
323
+ position: absolute;
324
+ inset: 0 auto 0 0;
325
+ width: 3px;
326
+ background: transparent;
327
+ }
328
+
329
+ .job-card:hover {
330
+ background: #eceff1;
331
+ }
332
+
333
+ .job-card.is-selected {
334
+ background: var(--selection);
335
+ }
336
+
337
+ .job-card.is-selected::before {
338
+ background: var(--accent);
339
+ }
340
+
341
+ .card-task {
342
+ min-width: 0;
343
+ overflow: hidden;
344
+ font-size: 14px;
345
+ font-weight: 650;
346
+ line-height: 1.35;
347
+ text-overflow: ellipsis;
348
+ white-space: nowrap;
349
+ }
350
+
351
+ .card-job-id,
352
+ .card-route {
353
+ min-width: 0;
354
+ overflow: hidden;
355
+ color: var(--muted);
356
+ font-family: var(--data);
357
+ font-size: 10.5px;
358
+ line-height: 1.35;
359
+ text-overflow: ellipsis;
360
+ white-space: nowrap;
361
+ }
362
+
363
+ .card-route {
364
+ grid-column: 1;
365
+ }
366
+
367
+ .card-state {
368
+ grid-row: 1 / span 3;
369
+ grid-column: 2;
370
+ align-self: start;
371
+ display: inline-flex;
372
+ align-items: center;
373
+ gap: 6px;
374
+ padding-top: 2px;
375
+ color: var(--muted);
376
+ font-family: var(--data);
377
+ font-size: 10px;
378
+ }
379
+
380
+ .card-state::before {
381
+ content: "";
382
+ width: 7px;
383
+ height: 7px;
384
+ flex: 0 0 auto;
385
+ border-radius: 50%;
386
+ background: var(--quiet);
387
+ }
388
+
389
+ .state-running::before,
390
+ .state-starting::before {
391
+ background: var(--warn);
392
+ }
393
+
394
+ .state-succeeded::before {
395
+ background: var(--good);
396
+ }
397
+
398
+ .state-failed::before,
399
+ .state-dead::before,
400
+ .state-invalid::before {
401
+ background: var(--fault);
402
+ }
403
+
404
+ .list-message {
405
+ flex: 0 0 auto;
406
+ margin: 0;
407
+ padding: 18px;
408
+ color: var(--muted);
409
+ font-size: 13px;
410
+ }
411
+
412
+ .job-inspector {
413
+ min-width: 0;
414
+ min-height: 0;
415
+ overflow-y: auto;
416
+ overscroll-behavior: contain;
417
+ scrollbar-gutter: stable;
418
+ background: var(--paper);
419
+ }
420
+
421
+ .mobile-back {
422
+ display: none;
423
+ }
424
+
425
+ .inspector-state {
426
+ min-height: 100%;
427
+ display: grid;
428
+ align-content: center;
429
+ justify-items: start;
430
+ padding: clamp(32px, 6vw, 80px);
431
+ }
432
+
433
+ .state-code {
434
+ color: var(--accent);
435
+ }
436
+
437
+ .inspector-state h2 {
438
+ max-width: 25ch;
439
+ font-size: clamp(26px, 4vw, 44px);
440
+ }
441
+
442
+ .inspector-state > p:last-child {
443
+ max-width: 46rem;
444
+ margin: 12px 0 0;
445
+ color: var(--muted);
446
+ }
447
+
448
+ .job-detail {
449
+ min-width: 0;
450
+ }
451
+
452
+ .job-titlebar {
453
+ min-height: 86px;
454
+ display: flex;
455
+ align-items: flex-start;
456
+ justify-content: space-between;
457
+ gap: 20px;
458
+ padding: 17px clamp(20px, 4vw, 52px) 15px;
459
+ border-bottom: 1px solid var(--line);
460
+ }
461
+
462
+ .selected-job-id {
463
+ margin: 0;
464
+ font-family: var(--data);
465
+ font-size: clamp(14px, 1.5vw, 18px);
466
+ font-weight: 650;
467
+ overflow-wrap: anywhere;
468
+ }
469
+
470
+ .selected-time {
471
+ margin: 4px 0 0;
472
+ color: var(--muted);
473
+ font-size: 12px;
474
+ }
475
+
476
+ .title-actions {
477
+ flex: 0 0 auto;
478
+ display: grid;
479
+ justify-items: end;
480
+ gap: 7px;
481
+ }
482
+
483
+ .state-pill {
484
+ flex: 0 0 auto;
485
+ display: inline-flex;
486
+ align-items: center;
487
+ min-height: 28px;
488
+ border: 1px solid var(--line-strong);
489
+ border-radius: 999px;
490
+ padding: 3px 10px;
491
+ color: var(--muted);
492
+ background: var(--paper);
493
+ font-size: 11px;
494
+ font-weight: 700;
495
+ }
496
+
497
+ .state-pill.state-running,
498
+ .state-pill.state-starting {
499
+ border-color: var(--warn);
500
+ color: var(--warn);
501
+ }
502
+
503
+ .state-pill.state-succeeded {
504
+ border-color: var(--good);
505
+ color: var(--good);
506
+ }
507
+
508
+ .state-pill.state-failed,
509
+ .state-pill.state-dead,
510
+ .state-pill.state-invalid {
511
+ border-color: var(--fault);
512
+ color: var(--fault);
513
+ }
514
+
515
+ .compare-toggle,
516
+ .compare-clear {
517
+ min-height: 44px;
518
+ border: 1px solid var(--line-strong);
519
+ border-radius: 4px;
520
+ padding: 6px 10px;
521
+ color: var(--accent);
522
+ background: var(--paper);
523
+ font-size: 12px;
524
+ font-weight: 700;
525
+ }
526
+
527
+ .compare-toggle:hover:not(:disabled),
528
+ .compare-clear:hover {
529
+ background: var(--selection);
530
+ }
531
+
532
+ .compare-toggle[aria-pressed="true"] {
533
+ border-color: var(--warn);
534
+ color: var(--warn);
535
+ }
536
+
537
+ .compare-toggle:disabled {
538
+ cursor: not-allowed;
539
+ opacity: 0.52;
540
+ }
541
+
542
+ .compare-reference-label {
543
+ max-width: 28ch;
544
+ margin: 0;
545
+ color: var(--muted);
546
+ font-family: var(--data);
547
+ font-size: 10px;
548
+ overflow-wrap: anywhere;
549
+ text-align: right;
550
+ }
551
+
552
+ .comparison-section {
553
+ padding: 22px clamp(20px, 4vw, 52px) 28px;
554
+ border-bottom: 1px solid var(--line-strong);
555
+ background: #f8f6f1;
556
+ }
557
+
558
+ .comparison-heading {
559
+ display: flex;
560
+ align-items: flex-start;
561
+ justify-content: space-between;
562
+ gap: 18px;
563
+ }
564
+
565
+ .comparison-heading h3 {
566
+ margin: 0;
567
+ font-size: 20px;
568
+ font-weight: 650;
569
+ letter-spacing: -0.02em;
570
+ line-height: 1.2;
571
+ }
572
+
573
+ .comparison-grid {
574
+ display: grid;
575
+ grid-template-columns: repeat(2, minmax(0, 1fr));
576
+ gap: 12px;
577
+ margin-top: 16px;
578
+ }
579
+
580
+ .comparison-column {
581
+ min-width: 0;
582
+ border: 1px solid var(--line);
583
+ border-left: 4px solid var(--accent);
584
+ padding: 14px;
585
+ background: var(--paper);
586
+ }
587
+
588
+ .comparison-column.is-reference {
589
+ border-left-color: var(--warn);
590
+ }
591
+
592
+ .comparison-role,
593
+ .comparison-output-label {
594
+ margin: 0;
595
+ color: var(--muted);
596
+ font-size: 11px;
597
+ font-weight: 700;
598
+ }
599
+
600
+ .comparison-column h4 {
601
+ margin: 3px 0 0;
602
+ font-family: var(--data);
603
+ font-size: 13px;
604
+ overflow-wrap: anywhere;
605
+ }
606
+
607
+ .comparison-route {
608
+ display: grid;
609
+ grid-template-columns: repeat(2, minmax(0, 1fr));
610
+ margin: 14px 0;
611
+ border-top: 1px solid var(--line);
612
+ border-left: 1px solid var(--line);
613
+ }
614
+
615
+ .comparison-route > div {
616
+ min-width: 0;
617
+ border-right: 1px solid var(--line);
618
+ border-bottom: 1px solid var(--line);
619
+ padding: 8px 9px;
620
+ }
621
+
622
+ .comparison-route dt {
623
+ color: var(--muted);
624
+ font-size: 10px;
625
+ font-weight: 650;
626
+ }
627
+
628
+ .comparison-route dd {
629
+ min-width: 0;
630
+ margin: 3px 0 0;
631
+ font-family: var(--data);
632
+ font-size: 11px;
633
+ overflow-wrap: anywhere;
634
+ }
635
+
636
+ .comparison-output {
637
+ max-height: 16rem;
638
+ min-height: 84px;
639
+ margin: 6px 0 0;
640
+ overflow: auto;
641
+ border: 1px solid var(--line);
642
+ border-radius: 3px;
643
+ padding: 10px;
644
+ background: #fbfbfa;
645
+ font-family: var(--data);
646
+ font-size: 11px;
647
+ line-height: 1.55;
648
+ overflow-wrap: anywhere;
649
+ white-space: pre-wrap;
650
+ word-break: break-word;
651
+ }
652
+
653
+ .content-section,
654
+ .routing-section {
655
+ padding: 24px clamp(20px, 4vw, 52px) 28px;
656
+ border-bottom: 1px solid var(--line);
657
+ }
658
+
659
+ .task-section {
660
+ background: #fbfbfa;
661
+ }
662
+
663
+ .result-section {
664
+ min-height: 260px;
665
+ }
666
+
667
+ .section-heading {
668
+ display: flex;
669
+ align-items: flex-start;
670
+ justify-content: space-between;
671
+ gap: 18px;
672
+ }
673
+
674
+ .section-heading h3 {
675
+ font-size: 20px;
676
+ }
677
+
678
+ .content-markers {
679
+ display: flex;
680
+ flex-wrap: wrap;
681
+ justify-content: flex-end;
682
+ gap: 6px;
683
+ }
684
+
685
+ .content-marker {
686
+ display: inline-block;
687
+ border: 1px solid var(--warn);
688
+ border-radius: 999px;
689
+ padding: 3px 8px;
690
+ color: var(--warn);
691
+ background: var(--paper);
692
+ font-size: 11px;
693
+ }
694
+
695
+ .content-marker.is-fault {
696
+ border-color: var(--fault);
697
+ color: var(--fault);
698
+ }
699
+
700
+ .plain-content {
701
+ max-height: 36rem;
702
+ margin: 16px 0 0;
703
+ overflow: auto;
704
+ border: 1px solid var(--line);
705
+ border-radius: 4px;
706
+ padding: 14px 16px;
707
+ color: var(--ink);
708
+ background: var(--paper);
709
+ font-family: var(--data);
710
+ font-size: 12px;
711
+ line-height: 1.65;
712
+ overflow-wrap: anywhere;
713
+ white-space: pre-wrap;
714
+ word-break: break-word;
715
+ }
716
+
717
+ .result-content {
718
+ min-height: 120px;
719
+ }
720
+
721
+ .content-empty {
722
+ margin: 16px 0 0;
723
+ border-left: 3px solid var(--line-strong);
724
+ padding-left: 12px;
725
+ color: var(--muted);
726
+ }
727
+
728
+ .routing-section {
729
+ background: var(--canvas);
730
+ }
731
+
732
+ .routing-list {
733
+ margin: 16px 0 0;
734
+ display: grid;
735
+ grid-template-columns: repeat(4, minmax(0, 1fr));
736
+ border-top: 1px solid var(--line-strong);
737
+ border-bottom: 1px solid var(--line-strong);
738
+ }
739
+
740
+ .routing-list > div {
741
+ min-width: 0;
742
+ padding: 12px 14px;
743
+ border-right: 1px solid var(--line);
744
+ }
745
+
746
+ .routing-list > div:last-child {
747
+ border-right: 0;
748
+ }
749
+
750
+ .routing-list dt,
751
+ .job-facts dt {
752
+ color: var(--muted);
753
+ font-size: 11px;
754
+ font-weight: 650;
755
+ }
756
+
757
+ .routing-list dd,
758
+ .job-facts dd {
759
+ min-width: 0;
760
+ margin: 4px 0 0;
761
+ font-family: var(--data);
762
+ font-size: 12px;
763
+ overflow-wrap: anywhere;
764
+ }
765
+
766
+ .technical-details {
767
+ border-bottom: 1px solid var(--line);
768
+ }
769
+
770
+ .technical-details summary {
771
+ min-height: 48px;
772
+ display: flex;
773
+ align-items: center;
774
+ padding: 0 clamp(20px, 4vw, 52px);
775
+ color: var(--muted);
776
+ font-size: 13px;
777
+ font-weight: 650;
778
+ }
779
+
780
+ .technical-details summary::before {
781
+ content: "+";
782
+ width: 18px;
783
+ color: var(--accent);
784
+ font-family: var(--data);
785
+ }
786
+
787
+ .technical-details[open] summary::before {
788
+ content: "−";
789
+ }
790
+
791
+ .job-facts {
792
+ margin: 0;
793
+ padding: 0 clamp(20px, 4vw, 52px) 22px;
794
+ display: grid;
795
+ grid-template-columns: repeat(4, minmax(0, 1fr));
796
+ }
797
+
798
+ .fact {
799
+ min-width: 0;
800
+ padding: 12px 14px;
801
+ border-top: 1px solid var(--line);
802
+ border-right: 1px solid var(--line);
803
+ }
804
+
805
+ .fact:nth-child(4),
806
+ .fact:last-child {
807
+ border-right: 0;
808
+ }
809
+
810
+ .fact-wide {
811
+ grid-column: span 2;
812
+ }
813
+
814
+ .noscript-message {
815
+ position: fixed;
816
+ inset: auto 16px 16px;
817
+ margin: 0;
818
+ border: 1px solid var(--fault);
819
+ padding: 10px 14px;
820
+ color: var(--ink);
821
+ background: var(--paper);
822
+ }
823
+
824
+ @media (max-width: 760px) {
825
+ .board-identity {
826
+ padding: 0 12px;
827
+ }
828
+
829
+ .board-identity span:last-child,
830
+ .read-only-tag,
831
+ .job-count {
832
+ display: none;
833
+ }
834
+
835
+ .connection-status {
836
+ min-width: 0;
837
+ border-left: 0;
838
+ padding: 0 12px;
839
+ }
840
+
841
+ .board-layout {
842
+ display: block;
843
+ }
844
+
845
+ .dispatch-index,
846
+ .job-inspector {
847
+ width: 100%;
848
+ height: 100%;
849
+ border-right: 0;
850
+ }
851
+
852
+ body[data-mobile-view="list"] .dispatch-index {
853
+ display: flex;
854
+ }
855
+
856
+ body[data-mobile-view="list"] .job-inspector {
857
+ display: none;
858
+ }
859
+
860
+ body[data-mobile-view="detail"] .dispatch-index {
861
+ display: none;
862
+ }
863
+
864
+ body[data-mobile-view="detail"] .job-inspector {
865
+ display: block;
866
+ }
867
+
868
+ .index-heading {
869
+ min-height: 64px;
870
+ padding: 11px 14px 9px;
871
+ }
872
+
873
+ .queue-controls {
874
+ padding: 10px 12px 12px;
875
+ }
876
+
877
+ .job-card {
878
+ min-height: 76px;
879
+ padding-right: 12px;
880
+ padding-left: 16px;
881
+ }
882
+
883
+ .mobile-back {
884
+ position: sticky;
885
+ z-index: 4;
886
+ top: 0;
887
+ width: 100%;
888
+ min-height: 48px;
889
+ display: flex;
890
+ align-items: center;
891
+ gap: 8px;
892
+ border: 0;
893
+ border-bottom: 1px solid var(--line-strong);
894
+ padding: 0 14px;
895
+ color: var(--accent);
896
+ background: var(--paper);
897
+ font-weight: 650;
898
+ text-align: left;
899
+ }
900
+
901
+ .job-titlebar {
902
+ min-height: 92px;
903
+ padding: 14px 16px;
904
+ }
905
+
906
+ .comparison-section {
907
+ padding: 20px 16px 24px;
908
+ }
909
+
910
+ .comparison-grid {
911
+ grid-template-columns: minmax(0, 1fr);
912
+ }
913
+
914
+ .content-section,
915
+ .routing-section {
916
+ padding: 21px 16px 24px;
917
+ }
918
+
919
+ .technical-details summary {
920
+ padding: 0 16px;
921
+ }
922
+
923
+ .job-facts {
924
+ padding: 0 16px 18px;
925
+ grid-template-columns: repeat(2, minmax(0, 1fr));
926
+ }
927
+
928
+ .fact:nth-child(2n) {
929
+ border-right: 0;
930
+ }
931
+
932
+ .fact:nth-child(4) {
933
+ border-right: 0;
934
+ }
935
+
936
+ .fact-wide {
937
+ grid-column: span 1;
938
+ }
939
+
940
+ .routing-list {
941
+ grid-template-columns: repeat(2, minmax(0, 1fr));
942
+ }
943
+
944
+ .routing-list > div:nth-child(2) {
945
+ border-right: 0;
946
+ }
947
+
948
+ .routing-list > div:nth-child(-n + 2) {
949
+ border-bottom: 1px solid var(--line);
950
+ }
951
+ }
952
+
953
+ @media (max-width: 430px) {
954
+ .connection-status {
955
+ max-width: 144px;
956
+ font-size: 11px;
957
+ }
958
+
959
+ .filter-options {
960
+ grid-template-columns: repeat(2, minmax(0, 1fr));
961
+ }
962
+
963
+ .filter-button:nth-child(2) {
964
+ border-right: 0;
965
+ }
966
+
967
+ .filter-button:nth-child(-n + 2) {
968
+ border-bottom: 1px solid var(--line);
969
+ }
970
+
971
+ .job-titlebar,
972
+ .section-heading,
973
+ .comparison-heading {
974
+ display: grid;
975
+ }
976
+
977
+ .title-actions {
978
+ justify-items: start;
979
+ }
980
+
981
+ .compare-reference-label {
982
+ text-align: left;
983
+ }
984
+
985
+ .state-pill {
986
+ justify-self: start;
987
+ }
988
+
989
+ .content-markers {
990
+ justify-content: flex-start;
991
+ }
992
+
993
+ .routing-list,
994
+ .job-facts {
995
+ grid-template-columns: minmax(0, 1fr);
996
+ }
997
+
998
+ .routing-list > div,
999
+ .routing-list > div:nth-child(2),
1000
+ .fact,
1001
+ .fact:nth-child(2n),
1002
+ .fact:nth-child(4) {
1003
+ grid-column: auto;
1004
+ border-right: 0;
1005
+ border-bottom: 1px solid var(--line);
1006
+ }
1007
+
1008
+ .routing-list > div:last-child,
1009
+ .fact:last-child {
1010
+ border-bottom: 0;
1011
+ }
1012
+ }
1013
+
1014
+ @media (prefers-reduced-motion: reduce) {
1015
+ *,
1016
+ *::before,
1017
+ *::after {
1018
+ scroll-behavior: auto !important;
1019
+ transition-duration: 0.01ms !important;
1020
+ animation-duration: 0.01ms !important;
1021
+ animation-iteration-count: 1 !important;
1022
+ }
1023
+ }