@dpkrn/nodetunnel 1.0.9 → 1.1.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,1085 @@
1
+ /* Layout and structure; colors from theme-*.css via html[data-theme]. */
2
+ *,
3
+ *::before,
4
+ *::after {
5
+ box-sizing: border-box;
6
+ margin: 0;
7
+ padding: 0;
8
+ }
9
+
10
+ html {
11
+ height: 100%;
12
+ }
13
+
14
+ body {
15
+ font-family: var(--inspector-font-ui);
16
+ font-size: 13px;
17
+ background: var(--inspector-bg);
18
+ color: var(--inspector-text);
19
+ height: 100vh;
20
+ overflow: hidden;
21
+ }
22
+
23
+ .app {
24
+ display: flex;
25
+ flex-direction: column;
26
+ height: 100vh;
27
+ }
28
+
29
+ .topbar {
30
+ flex-shrink: 0;
31
+ padding: 8px 12px;
32
+ border-bottom: 1px solid var(--inspector-border);
33
+ display: flex;
34
+ align-items: center;
35
+ gap: 12px;
36
+ flex-wrap: wrap;
37
+ background: var(--inspector-panel);
38
+ }
39
+
40
+ .topbar h1 {
41
+ font-size: 14px;
42
+ font-weight: 600;
43
+ }
44
+
45
+ .theme-row {
46
+ display: flex;
47
+ align-items: center;
48
+ gap: 6px;
49
+ }
50
+
51
+ .theme-row label {
52
+ font-size: 11px;
53
+ color: var(--inspector-muted);
54
+ white-space: nowrap;
55
+ }
56
+
57
+ #themeSelect {
58
+ background: var(--inspector-input-bg);
59
+ border: 1px solid var(--inspector-border);
60
+ color: var(--inspector-text);
61
+ padding: 5px 8px;
62
+ border-radius: 4px;
63
+ font-size: 12px;
64
+ cursor: pointer;
65
+ }
66
+
67
+ .status-dot {
68
+ width: 8px;
69
+ height: 8px;
70
+ border-radius: 50%;
71
+ background: var(--inspector-muted);
72
+ }
73
+
74
+ .status-dot.live {
75
+ background: var(--inspector-get);
76
+ box-shadow: 0 0 6px var(--inspector-get);
77
+ }
78
+
79
+ .target-row {
80
+ display: flex;
81
+ align-items: center;
82
+ gap: 8px;
83
+ flex: 1;
84
+ min-width: 200px;
85
+ }
86
+
87
+ .target-row label {
88
+ color: var(--inspector-muted);
89
+ white-space: nowrap;
90
+ font-size: 12px;
91
+ }
92
+
93
+ .target-row input {
94
+ flex: 1;
95
+ background: var(--inspector-input-bg);
96
+ border: 1px solid var(--inspector-border);
97
+ color: var(--inspector-text);
98
+ padding: 6px 10px;
99
+ border-radius: 4px;
100
+ font-size: 12px;
101
+ }
102
+
103
+ .hint {
104
+ font-size: 11px;
105
+ color: var(--inspector-muted);
106
+ }
107
+
108
+ #origin-hint {
109
+ display: none;
110
+ padding: 6px 12px;
111
+ background: var(--inspector-origin-bg);
112
+ color: var(--inspector-origin-fg);
113
+ font-size: 12px;
114
+ }
115
+
116
+ .main {
117
+ display: flex;
118
+ flex: 1;
119
+ min-height: 0;
120
+ }
121
+
122
+ .sidebar {
123
+ width: 300px;
124
+ min-width: 180px;
125
+ max-width: 55vw;
126
+ flex-shrink: 0;
127
+ background: var(--inspector-panel);
128
+ display: flex;
129
+ flex-direction: column;
130
+ }
131
+
132
+ .sidebar-head {
133
+ padding: 10px 12px;
134
+ font-size: 11px;
135
+ font-weight: 600;
136
+ text-transform: uppercase;
137
+ letter-spacing: 0.04em;
138
+ color: var(--inspector-muted);
139
+ border-bottom: 1px solid var(--inspector-border);
140
+ }
141
+
142
+ .sidebar-head-row {
143
+ display: flex;
144
+ align-items: center;
145
+ justify-content: space-between;
146
+ gap: 8px;
147
+ flex-wrap: wrap;
148
+ }
149
+
150
+ .sidebar-title {
151
+ flex: 1;
152
+ min-width: 72px;
153
+ }
154
+
155
+ .sidebar-head-tools {
156
+ display: flex;
157
+ align-items: center;
158
+ gap: 8px;
159
+ flex-shrink: 0;
160
+ }
161
+
162
+ .sidebar-order-btn {
163
+ display: inline-flex;
164
+ align-items: center;
165
+ justify-content: center;
166
+ width: 28px;
167
+ height: 28px;
168
+ padding: 0;
169
+ margin: 0;
170
+ border: 1px solid var(--inspector-border);
171
+ border-radius: 4px;
172
+ background: var(--inspector-input-bg);
173
+ color: var(--inspector-muted);
174
+ cursor: pointer;
175
+ flex-shrink: 0;
176
+ transition: color 0.12s ease, background 0.12s ease, border-color 0.12s ease;
177
+ }
178
+
179
+ .sidebar-order-btn:hover {
180
+ color: var(--inspector-fg);
181
+ background: var(--inspector-row-hover);
182
+ border-color: var(--inspector-border);
183
+ }
184
+
185
+ .sidebar-order-btn:focus-visible {
186
+ outline: 2px solid var(--inspector-accent);
187
+ outline-offset: 1px;
188
+ }
189
+
190
+ .sidebar-order-icon {
191
+ display: block;
192
+ transform-origin: center;
193
+ transition: transform 0.18s ease;
194
+ }
195
+
196
+ /* Long bar at top = newest first; rotated = oldest first */
197
+ .sidebar-order-btn[data-order='oldest'] .sidebar-order-icon {
198
+ transform: rotate(180deg);
199
+ }
200
+
201
+ .sidebar-search {
202
+ padding: 6px 12px 8px;
203
+ border-bottom: 1px solid var(--inspector-border);
204
+ }
205
+
206
+ .sidebar-search input {
207
+ width: 100%;
208
+ box-sizing: border-box;
209
+ font-size: 12px;
210
+ padding: 6px 8px;
211
+ border: 1px solid var(--inspector-border);
212
+ border-radius: 4px;
213
+ background: var(--inspector-input-bg);
214
+ color: var(--inspector-fg);
215
+ }
216
+
217
+ #logList {
218
+ list-style: none;
219
+ overflow-y: auto;
220
+ flex: 1;
221
+ }
222
+
223
+ #logList li {
224
+ display: grid;
225
+ grid-template-columns: 52px 1fr 44px 36px;
226
+ gap: 6px;
227
+ align-items: center;
228
+ padding: 8px 10px;
229
+ cursor: pointer;
230
+ border-bottom: 1px solid var(--inspector-list-border);
231
+ font-size: 12px;
232
+ }
233
+
234
+ #logList li:hover {
235
+ background: var(--inspector-row-hover);
236
+ }
237
+
238
+ #logList li.active {
239
+ background: var(--inspector-row-active);
240
+ }
241
+
242
+ #logList .m {
243
+ font-weight: 700;
244
+ font-size: 10px;
245
+ }
246
+
247
+ #logList .m.GET { color: var(--inspector-get); }
248
+ #logList .m.POST { color: var(--inspector-post); }
249
+ #logList .m.PUT { color: var(--inspector-put); }
250
+ #logList .m.PATCH { color: var(--inspector-patch); }
251
+ #logList .m.DELETE { color: var(--inspector-del); }
252
+
253
+ #logList .path {
254
+ overflow: hidden;
255
+ text-overflow: ellipsis;
256
+ white-space: nowrap;
257
+ color: var(--inspector-path);
258
+ }
259
+
260
+ #logList .ms {
261
+ color: var(--inspector-muted);
262
+ text-align: right;
263
+ font-variant-numeric: tabular-nums;
264
+ }
265
+
266
+ #logList .st {
267
+ text-align: right;
268
+ font-weight: 600;
269
+ font-size: 11px;
270
+ }
271
+
272
+ #logList .st-2xx { color: var(--inspector-get); }
273
+ #logList .st-4xx,
274
+ #logList .st-5xx { color: var(--inspector-del); }
275
+
276
+ /* Drag handle: list | workspace (wider hit target + visible track) */
277
+ .resizer-h {
278
+ flex: 0 0 10px;
279
+ width: 10px;
280
+ min-width: 10px;
281
+ align-self: stretch;
282
+ cursor: ew-resize;
283
+ position: relative;
284
+ z-index: 30;
285
+ touch-action: none;
286
+ user-select: none;
287
+ -webkit-user-select: none;
288
+ background: var(--inspector-resizer-track, var(--inspector-border));
289
+ border-left: 1px solid var(--inspector-border);
290
+ border-right: 1px solid var(--inspector-border);
291
+ box-sizing: border-box;
292
+ }
293
+
294
+ .resizer-h::after {
295
+ content: '';
296
+ position: absolute;
297
+ top: 20%;
298
+ bottom: 20%;
299
+ left: 50%;
300
+ width: 3px;
301
+ transform: translateX(-50%);
302
+ border-radius: 2px;
303
+ background: var(--inspector-muted);
304
+ opacity: 0.5;
305
+ pointer-events: none;
306
+ }
307
+
308
+ .resizer-h:hover,
309
+ .resizer-h.is-dragging {
310
+ background: var(--inspector-resizer-hover);
311
+ }
312
+
313
+ .resizer-h:hover::after,
314
+ .resizer-h.is-dragging::after {
315
+ opacity: 0.85;
316
+ background: var(--inspector-accent);
317
+ }
318
+
319
+ .workspace {
320
+ flex: 1;
321
+ display: flex;
322
+ flex-direction: column;
323
+ min-width: 0;
324
+ min-height: 0;
325
+ }
326
+
327
+ .url-bar {
328
+ flex-shrink: 0;
329
+ display: flex;
330
+ gap: 8px;
331
+ padding: 10px 12px;
332
+ border-bottom: 1px solid var(--inspector-border);
333
+ align-items: center;
334
+ background: var(--inspector-panel);
335
+ }
336
+
337
+ #method {
338
+ width: 100px;
339
+ padding: 8px 10px;
340
+ border-radius: 4px;
341
+ border: 1px solid var(--inspector-border);
342
+ background: var(--inspector-input-bg);
343
+ color: var(--inspector-text);
344
+ font-weight: 700;
345
+ font-size: 12px;
346
+ }
347
+
348
+ #url {
349
+ flex: 1;
350
+ min-width: 0;
351
+ padding: 8px 12px;
352
+ border-radius: 4px;
353
+ border: 1px solid var(--inspector-border);
354
+ background: var(--inspector-input-bg);
355
+ color: var(--inspector-text);
356
+ font-size: 13px;
357
+ }
358
+
359
+ .log-replay-toggle {
360
+ display: inline-flex;
361
+ align-items: center;
362
+ gap: 6px;
363
+ font-size: 11px;
364
+ font-weight: 600;
365
+ color: var(--inspector-muted);
366
+ white-space: nowrap;
367
+ cursor: pointer;
368
+ user-select: none;
369
+ }
370
+
371
+ .log-replay-toggle input {
372
+ margin: 0;
373
+ cursor: pointer;
374
+ }
375
+
376
+ .btn {
377
+ padding: 8px 16px;
378
+ border-radius: 4px;
379
+ font-size: 12px;
380
+ font-weight: 600;
381
+ cursor: pointer;
382
+ border: none;
383
+ font-family: inherit;
384
+ }
385
+
386
+ .btn-modify {
387
+ background: transparent;
388
+ color: var(--inspector-text);
389
+ border: 1px solid var(--inspector-border);
390
+ }
391
+
392
+ .btn-modify:hover {
393
+ background: var(--inspector-btn-modify-hover);
394
+ }
395
+
396
+ .btn-replay {
397
+ background: var(--inspector-accent);
398
+ color: var(--inspector-accent-contrast);
399
+ }
400
+
401
+ .btn-replay:hover {
402
+ background: var(--inspector-accent-hover);
403
+ }
404
+
405
+ .split-v-wrap {
406
+ flex: 1;
407
+ display: flex;
408
+ flex-direction: column;
409
+ min-height: 0;
410
+ }
411
+
412
+ /* —— Request pane (Postman-style tabs) —— */
413
+ .pane-req {
414
+ flex: 0 0 45%;
415
+ display: flex;
416
+ flex-direction: column;
417
+ min-height: 0;
418
+ padding: 0;
419
+ overflow: hidden;
420
+ }
421
+
422
+ .request-config {
423
+ flex-shrink: 0;
424
+ border-bottom: 1px solid var(--inspector-border);
425
+ background: var(--inspector-panel);
426
+ }
427
+
428
+ .config-tabs {
429
+ display: flex;
430
+ flex-wrap: wrap;
431
+ gap: 0;
432
+ padding: 0 8px;
433
+ align-items: flex-end;
434
+ }
435
+
436
+ .config-tab {
437
+ background: none;
438
+ border: none;
439
+ color: var(--inspector-muted);
440
+ padding: 8px 12px;
441
+ font-size: 12px;
442
+ cursor: pointer;
443
+ font-family: inherit;
444
+ border-bottom: 2px solid transparent;
445
+ margin-bottom: -1px;
446
+ display: inline-flex;
447
+ align-items: center;
448
+ gap: 6px;
449
+ }
450
+
451
+ .config-tab:hover {
452
+ color: var(--inspector-text);
453
+ }
454
+
455
+ .config-tab.active {
456
+ color: var(--inspector-accent);
457
+ border-bottom-color: var(--inspector-accent);
458
+ }
459
+
460
+ .badge {
461
+ background: var(--inspector-badge-bg);
462
+ color: var(--inspector-badge-text);
463
+ font-size: 10px;
464
+ padding: 1px 6px;
465
+ border-radius: 8px;
466
+ font-weight: 600;
467
+ }
468
+
469
+ .config-tab.active .badge {
470
+ background: var(--inspector-accent);
471
+ color: var(--inspector-accent-contrast);
472
+ }
473
+
474
+ .config-panels {
475
+ flex: 1 1 0%;
476
+ min-height: 0;
477
+ overflow: hidden;
478
+ display: flex;
479
+ flex-direction: column;
480
+ }
481
+
482
+ .config-panel {
483
+ flex: 1 1 0%;
484
+ min-height: 0;
485
+ padding: 10px 12px;
486
+ overflow: auto;
487
+ }
488
+
489
+ /* [hidden] must win over .config-panel--body { display: flex } (same specificity otherwise). */
490
+ .config-panel[hidden] {
491
+ display: none !important;
492
+ }
493
+
494
+ /* Body tab: fill vertical space; inner textarea resizes within this column */
495
+ .config-panel--body:not([hidden]) {
496
+ display: flex;
497
+ flex-direction: column;
498
+ overflow: hidden;
499
+ min-height: 0;
500
+ padding-bottom: 10px;
501
+ }
502
+
503
+ .config-panel--body .body-type-row {
504
+ flex-shrink: 0;
505
+ }
506
+
507
+ .body-editor-wrap {
508
+ flex: 1 1 0%;
509
+ min-height: 0;
510
+ min-width: 0;
511
+ display: flex;
512
+ flex-direction: column;
513
+ }
514
+
515
+ .params-hint {
516
+ font-size: 11px;
517
+ color: var(--inspector-muted);
518
+ margin-bottom: 8px;
519
+ }
520
+
521
+ .params-table {
522
+ width: 100%;
523
+ border-collapse: collapse;
524
+ font-size: 12px;
525
+ }
526
+
527
+ .params-table th {
528
+ text-align: left;
529
+ padding: 6px 8px;
530
+ font-size: 11px;
531
+ font-weight: 500;
532
+ color: var(--inspector-muted);
533
+ border-bottom: 1px solid var(--inspector-table-border);
534
+ }
535
+
536
+ .th-check { width: 28px; }
537
+ .th-del { width: 32px; }
538
+
539
+ .params-table td {
540
+ padding: 4px 4px 4px 0;
541
+ border-bottom: 1px solid var(--inspector-table-border);
542
+ vertical-align: middle;
543
+ }
544
+
545
+ .param-check input {
546
+ accent-color: var(--inspector-accent);
547
+ }
548
+
549
+ .param-input {
550
+ width: 100%;
551
+ background: transparent;
552
+ border: none;
553
+ color: var(--inspector-text);
554
+ padding: 5px 8px;
555
+ font-size: 12px;
556
+ font-family: inherit;
557
+ outline: none;
558
+ }
559
+
560
+ .param-input:focus {
561
+ background: var(--inspector-row-hover);
562
+ border-radius: 3px;
563
+ }
564
+
565
+ .param-input::placeholder {
566
+ color: var(--inspector-muted);
567
+ opacity: 0.7;
568
+ }
569
+
570
+ .param-del {
571
+ background: none;
572
+ border: none;
573
+ color: var(--inspector-muted);
574
+ cursor: pointer;
575
+ padding: 4px 8px;
576
+ font-size: 16px;
577
+ line-height: 1;
578
+ }
579
+
580
+ .param-del:hover {
581
+ color: var(--inspector-del);
582
+ }
583
+
584
+ .add-row-btn {
585
+ margin-top: 8px;
586
+ background: none;
587
+ border: none;
588
+ color: var(--inspector-muted);
589
+ font-size: 12px;
590
+ cursor: pointer;
591
+ padding: 4px 0;
592
+ font-family: inherit;
593
+ }
594
+
595
+ .add-row-btn:hover {
596
+ color: var(--inspector-accent);
597
+ }
598
+
599
+ .auth-row,
600
+ .auth-block {
601
+ display: flex;
602
+ align-items: center;
603
+ gap: 12px;
604
+ flex-wrap: wrap;
605
+ margin-bottom: 12px;
606
+ }
607
+
608
+ .auth-block {
609
+ flex-direction: row;
610
+ }
611
+
612
+ .auth-label {
613
+ font-size: 12px;
614
+ color: var(--inspector-muted);
615
+ min-width: 72px;
616
+ }
617
+
618
+ .auth-select {
619
+ background: var(--inspector-input-bg);
620
+ border: 1px solid var(--inspector-border);
621
+ border-radius: 4px;
622
+ color: var(--inspector-text);
623
+ padding: 5px 10px;
624
+ font-size: 12px;
625
+ outline: none;
626
+ }
627
+
628
+ .auth-input {
629
+ flex: 1;
630
+ min-width: 120px;
631
+ background: var(--inspector-input-bg);
632
+ border: 1px solid var(--inspector-border);
633
+ border-radius: 4px;
634
+ color: var(--inspector-text);
635
+ padding: 6px 10px;
636
+ font-size: 12px;
637
+ font-family: var(--inspector-font-mono);
638
+ outline: none;
639
+ }
640
+
641
+ .body-type-row {
642
+ display: flex;
643
+ align-items: center;
644
+ gap: 16px;
645
+ margin-bottom: 10px;
646
+ flex-wrap: wrap;
647
+ flex-shrink: 0;
648
+ }
649
+
650
+ .body-type-label {
651
+ display: flex;
652
+ align-items: center;
653
+ gap: 6px;
654
+ cursor: pointer;
655
+ font-size: 12px;
656
+ color: var(--inspector-muted);
657
+ }
658
+
659
+ .body-type-label input {
660
+ accent-color: var(--inspector-accent);
661
+ }
662
+
663
+ .body-raw-select {
664
+ background: var(--inspector-input-bg);
665
+ border: 1px solid var(--inspector-border);
666
+ border-radius: 4px;
667
+ color: var(--inspector-post);
668
+ padding: 3px 8px;
669
+ font-size: 12px;
670
+ outline: none;
671
+ }
672
+
673
+ .body-textarea {
674
+ display: block;
675
+ width: 100%;
676
+ flex: 1 1 auto;
677
+ min-height: 120px;
678
+ background: var(--inspector-code-bg);
679
+ border: 1px solid var(--inspector-border);
680
+ border-radius: 4px;
681
+ color: var(--inspector-json-string, var(--inspector-code-text));
682
+ padding: 10px;
683
+ font-family: var(--inspector-font-mono);
684
+ font-size: 12px;
685
+ line-height: 1.5;
686
+ resize: vertical;
687
+ outline: none;
688
+ box-sizing: border-box;
689
+ }
690
+
691
+ .scripts-subtabs {
692
+ display: flex;
693
+ gap: 16px;
694
+ margin-bottom: 10px;
695
+ }
696
+
697
+ .script-subtab {
698
+ background: none;
699
+ border: none;
700
+ font-size: 12px;
701
+ cursor: pointer;
702
+ font-family: inherit;
703
+ color: var(--inspector-muted);
704
+ padding-bottom: 4px;
705
+ border-bottom: 2px solid transparent;
706
+ }
707
+
708
+ .script-subtab.active {
709
+ color: var(--inspector-accent);
710
+ border-bottom-color: var(--inspector-accent);
711
+ }
712
+
713
+ .scripts-textarea {
714
+ width: 100%;
715
+ min-height: 140px;
716
+ background: var(--inspector-code-bg);
717
+ border: 1px solid var(--inspector-border);
718
+ border-radius: 4px;
719
+ color: var(--inspector-code-text);
720
+ padding: 10px;
721
+ font-family: var(--inspector-font-mono);
722
+ font-size: 12px;
723
+ resize: vertical;
724
+ outline: none;
725
+ }
726
+
727
+ .settings-list {
728
+ display: flex;
729
+ flex-direction: column;
730
+ gap: 14px;
731
+ max-width: 520px;
732
+ }
733
+
734
+ .settings-row {
735
+ display: flex;
736
+ justify-content: space-between;
737
+ align-items: center;
738
+ gap: 12px;
739
+ font-size: 13px;
740
+ color: var(--inspector-text);
741
+ cursor: pointer;
742
+ }
743
+
744
+ .settings-row input[type="checkbox"] {
745
+ accent-color: var(--inspector-accent);
746
+ width: 14px;
747
+ height: 14px;
748
+ }
749
+
750
+ .settings-row-num {
751
+ cursor: default;
752
+ }
753
+
754
+ .settings-num {
755
+ width: 88px;
756
+ text-align: right;
757
+ background: var(--inspector-input-bg);
758
+ border: 1px solid var(--inspector-border);
759
+ border-radius: 4px;
760
+ color: var(--inspector-text);
761
+ padding: 4px 8px;
762
+ font-size: 12px;
763
+ outline: none;
764
+ }
765
+
766
+ .settings-note {
767
+ font-size: 11px;
768
+ color: var(--inspector-muted);
769
+ margin-top: 8px;
770
+ line-height: 1.4;
771
+ }
772
+
773
+ /* Drag handle: request editor | response */
774
+ .resizer-v {
775
+ flex: 0 0 10px;
776
+ height: 10px;
777
+ min-height: 10px;
778
+ max-height: 10px;
779
+ cursor: ns-resize;
780
+ position: relative;
781
+ z-index: 30;
782
+ touch-action: none;
783
+ user-select: none;
784
+ -webkit-user-select: none;
785
+ background: var(--inspector-resizer-track, var(--inspector-border));
786
+ border-top: 1px solid var(--inspector-border);
787
+ border-bottom: 1px solid var(--inspector-border);
788
+ box-sizing: border-box;
789
+ }
790
+
791
+ .resizer-v::after {
792
+ content: '';
793
+ position: absolute;
794
+ left: 35%;
795
+ right: 35%;
796
+ top: 50%;
797
+ height: 3px;
798
+ transform: translateY(-50%);
799
+ border-radius: 2px;
800
+ background: var(--inspector-muted);
801
+ opacity: 0.5;
802
+ pointer-events: none;
803
+ }
804
+
805
+ .resizer-v:hover,
806
+ .resizer-v.is-dragging {
807
+ background: var(--inspector-resizer-hover);
808
+ }
809
+
810
+ .resizer-v:hover::after,
811
+ .resizer-v.is-dragging::after {
812
+ opacity: 0.85;
813
+ background: var(--inspector-accent);
814
+ }
815
+
816
+ /* —— Response pane —— */
817
+ .pane-resp {
818
+ flex: 1;
819
+ display: flex;
820
+ flex-direction: column;
821
+ padding: 0;
822
+ min-height: 0;
823
+ overflow: hidden;
824
+ }
825
+
826
+ .response-area {
827
+ flex: 1;
828
+ display: flex;
829
+ flex-direction: column;
830
+ min-height: 0;
831
+ background: var(--inspector-bg);
832
+ }
833
+
834
+ .response-header {
835
+ flex-shrink: 0;
836
+ display: flex;
837
+ align-items: center;
838
+ gap: 12px;
839
+ flex-wrap: wrap;
840
+ padding: 0 12px;
841
+ background: var(--inspector-panel);
842
+ border-bottom: 1px solid var(--inspector-border);
843
+ }
844
+
845
+ .response-label {
846
+ font-size: 12px;
847
+ color: var(--inspector-muted);
848
+ padding: 8px 0;
849
+ }
850
+
851
+ .response-status {
852
+ display: flex;
853
+ align-items: center;
854
+ gap: 10px;
855
+ flex-wrap: wrap;
856
+ }
857
+
858
+ .status-badge {
859
+ font-size: 12px;
860
+ font-weight: 600;
861
+ padding: 3px 8px;
862
+ border-radius: 3px;
863
+ background: var(--inspector-badge-bg);
864
+ color: var(--inspector-badge-text);
865
+ }
866
+
867
+ .status-badge.st-2xx {
868
+ background: var(--inspector-status-ok-bg);
869
+ color: var(--inspector-status-ok-text);
870
+ }
871
+
872
+ .status-badge.st-err {
873
+ background: var(--inspector-status-err-bg);
874
+ color: var(--inspector-status-err-text);
875
+ }
876
+
877
+ .status-info {
878
+ font-size: 12px;
879
+ color: var(--inspector-muted);
880
+ }
881
+
882
+ .resp-tabs {
883
+ display: flex;
884
+ margin-left: auto;
885
+ gap: 0;
886
+ }
887
+
888
+ .resp-tab {
889
+ background: none;
890
+ border: none;
891
+ padding: 8px 12px;
892
+ font-size: 12px;
893
+ cursor: pointer;
894
+ font-family: inherit;
895
+ color: var(--inspector-muted);
896
+ border-bottom: 2px solid transparent;
897
+ margin-bottom: -1px;
898
+ }
899
+
900
+ .resp-tab:hover {
901
+ color: var(--inspector-text);
902
+ }
903
+
904
+ .resp-tab.active {
905
+ color: var(--inspector-accent);
906
+ border-bottom-color: var(--inspector-accent);
907
+ }
908
+
909
+ .response-meta-line {
910
+ flex-shrink: 0;
911
+ padding: 6px 12px;
912
+ font-size: 12px;
913
+ color: var(--inspector-muted);
914
+ border-bottom: 1px solid var(--inspector-border);
915
+ min-height: 1.5em;
916
+ }
917
+
918
+ .response-meta-line strong {
919
+ color: var(--inspector-text);
920
+ }
921
+
922
+ .response-body {
923
+ flex: 1;
924
+ min-height: 0;
925
+ position: relative;
926
+ display: flex;
927
+ flex-direction: column;
928
+ overflow: hidden;
929
+ }
930
+
931
+ .empty-response {
932
+ flex: 1;
933
+ display: flex;
934
+ flex-direction: column;
935
+ align-items: center;
936
+ justify-content: center;
937
+ gap: 12px;
938
+ color: var(--inspector-muted);
939
+ font-size: 13px;
940
+ }
941
+
942
+ .empty-response[hidden],
943
+ .empty-response.hidden {
944
+ display: none !important;
945
+ }
946
+
947
+ .empty-ico {
948
+ width: 48px;
949
+ height: 48px;
950
+ opacity: 0.5;
951
+ }
952
+
953
+ .resp-panel {
954
+ flex: 1;
955
+ min-height: 0;
956
+ display: flex;
957
+ flex-direction: column;
958
+ padding: 10px 12px;
959
+ overflow: auto;
960
+ }
961
+
962
+ .resp-panel[hidden] {
963
+ display: none !important;
964
+ }
965
+
966
+ .resp-toolbar {
967
+ display: flex;
968
+ align-items: center;
969
+ gap: 8px;
970
+ margin-bottom: 10px;
971
+ flex-wrap: wrap;
972
+ }
973
+
974
+ .resp-format-btns {
975
+ display: flex;
976
+ border-radius: 4px;
977
+ overflow: hidden;
978
+ border: 1px solid var(--inspector-border);
979
+ }
980
+
981
+ .fmt-btn {
982
+ background: var(--inspector-input-bg);
983
+ border: none;
984
+ color: var(--inspector-muted);
985
+ padding: 4px 10px;
986
+ font-size: 11px;
987
+ cursor: pointer;
988
+ font-family: inherit;
989
+ }
990
+
991
+ .fmt-btn.active {
992
+ background: var(--inspector-accent);
993
+ color: var(--inspector-accent-contrast);
994
+ }
995
+
996
+ .resp-kind-select {
997
+ background: var(--inspector-input-bg);
998
+ border: 1px solid var(--inspector-border);
999
+ border-radius: 4px;
1000
+ color: var(--inspector-muted);
1001
+ padding: 3px 8px;
1002
+ font-size: 11px;
1003
+ outline: none;
1004
+ }
1005
+
1006
+ .btn-copy {
1007
+ margin-left: auto;
1008
+ background: transparent;
1009
+ border: 1px solid var(--inspector-border);
1010
+ color: var(--inspector-muted);
1011
+ padding: 4px 10px;
1012
+ border-radius: 4px;
1013
+ font-size: 11px;
1014
+ cursor: pointer;
1015
+ font-family: inherit;
1016
+ }
1017
+
1018
+ .btn-copy:hover {
1019
+ color: var(--inspector-text);
1020
+ border-color: var(--inspector-accent);
1021
+ }
1022
+
1023
+ .resp-body-text {
1024
+ flex: 1;
1025
+ width: 100%;
1026
+ min-height: 120px;
1027
+ font-family: var(--inspector-font-mono);
1028
+ font-size: 11px;
1029
+ padding: 8px;
1030
+ border: 1px solid var(--inspector-border);
1031
+ border-radius: 4px;
1032
+ background: var(--inspector-code-bg);
1033
+ color: var(--inspector-code-text);
1034
+ resize: none;
1035
+ outline: none;
1036
+ }
1037
+
1038
+ .kv-table {
1039
+ width: 100%;
1040
+ border-collapse: collapse;
1041
+ font-size: 12px;
1042
+ }
1043
+
1044
+ .kv-table th {
1045
+ text-align: left;
1046
+ padding: 6px 10px;
1047
+ color: var(--inspector-muted);
1048
+ font-weight: 500;
1049
+ border-bottom: 1px solid var(--inspector-table-border);
1050
+ }
1051
+
1052
+ .kv-table td {
1053
+ padding: 6px 10px;
1054
+ border-bottom: 1px solid var(--inspector-table-border);
1055
+ word-break: break-word;
1056
+ }
1057
+
1058
+ .kv-key {
1059
+ width: 38%;
1060
+ color: var(--inspector-accent);
1061
+ font-family: var(--inspector-font-mono);
1062
+ }
1063
+
1064
+ .cookies-placeholder {
1065
+ color: var(--inspector-muted);
1066
+ font-size: 12px;
1067
+ padding: 10px 0;
1068
+ }
1069
+
1070
+ .cookie-line {
1071
+ font-size: 11px;
1072
+ font-family: var(--inspector-font-mono);
1073
+ color: var(--inspector-muted);
1074
+ margin: 6px 0;
1075
+ word-break: break-all;
1076
+ }
1077
+
1078
+ .resp-console-pre {
1079
+ font-family: var(--inspector-font-mono);
1080
+ font-size: 11px;
1081
+ color: var(--inspector-muted);
1082
+ line-height: 1.6;
1083
+ white-space: pre-wrap;
1084
+ margin: 0;
1085
+ }