pi-interview 0.3.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,1394 @@
1
+ :root {
2
+ --bg-body: #18181e;
3
+ --bg-card: #1e1e24;
4
+ --bg-elevated: #252530;
5
+ --bg-selected: #3a3a4a;
6
+ --bg-hover: #2b2b37;
7
+ --bg-active-tint: rgba(138, 190, 183, 0.08);
8
+ --fg: #e0e0e0;
9
+ --fg-muted: #808080;
10
+ --fg-dim: #666666;
11
+ --accent: #8abeb7;
12
+ --accent-hover: #9dcec7;
13
+ --accent-muted: rgba(138, 190, 183, 0.15);
14
+ --border: #5f87ff;
15
+ --border-muted: #505050;
16
+ --border-focus: #7a7a8a;
17
+ --border-active: #6a6a7a;
18
+ --success: #b5bd68;
19
+ --warning: #f0c674;
20
+ --error: #cc6666;
21
+ --error-bg: rgba(204, 102, 102, 0.12);
22
+ --focus-ring: rgba(95, 135, 255, 0.2);
23
+ --overlay-bg: rgba(24, 24, 30, 0.95);
24
+ --font-mono: ui-monospace, "Cascadia Code", "Source Code Pro", Menlo, Consolas, monospace;
25
+ --font-body: var(--font-mono);
26
+ --font-ui: var(--font-mono);
27
+ --font-size-base: 13px;
28
+ --radius: 4px;
29
+ --spacing: 16px;
30
+ }
31
+
32
+ * {
33
+ box-sizing: border-box;
34
+ }
35
+
36
+ .hidden {
37
+ display: none !important;
38
+ }
39
+
40
+ body {
41
+ margin: 0;
42
+ padding: var(--spacing);
43
+ padding-bottom: 80px;
44
+ min-height: 100vh;
45
+ background: var(--bg-body);
46
+ color: var(--fg);
47
+ font-family: var(--font-body);
48
+ font-size: var(--font-size-base);
49
+ line-height: 1.5;
50
+ }
51
+
52
+ .interview-container {
53
+ max-width: 680px;
54
+ margin: 0 auto;
55
+ background: var(--bg-card);
56
+ border: 1px solid var(--border-muted);
57
+ border-radius: var(--radius);
58
+ padding: var(--spacing);
59
+ position: relative;
60
+ overflow: hidden;
61
+ }
62
+
63
+ .session-bar {
64
+ display: flex;
65
+ justify-content: space-between;
66
+ align-items: center;
67
+ padding: 6px 10px;
68
+ margin: -16px -16px 16px -16px;
69
+ background: var(--bg-body);
70
+ border-bottom: 1px solid var(--border-muted);
71
+ font-size: 11px;
72
+ color: var(--fg-dim);
73
+ }
74
+
75
+ .session-project {
76
+ font-weight: 500;
77
+ color: var(--fg-muted);
78
+ }
79
+
80
+ .session-id {
81
+ font-family: var(--font-mono);
82
+ opacity: 0.6;
83
+ }
84
+
85
+ .interview-header h1 {
86
+ margin: 0 0 4px;
87
+ font-size: 20px;
88
+ text-transform: uppercase;
89
+ letter-spacing: 0.06em;
90
+ }
91
+
92
+ .header-row {
93
+ display: flex;
94
+ align-items: center;
95
+ justify-content: space-between;
96
+ gap: 12px;
97
+ }
98
+
99
+ .interview-header p {
100
+ margin: 0 0 24px;
101
+ color: var(--fg-muted);
102
+ }
103
+
104
+ #questions-container {
105
+ display: flex;
106
+ flex-direction: column;
107
+ gap: 20px;
108
+ }
109
+
110
+ .question-card {
111
+ position: relative;
112
+ padding: 16px;
113
+ border: 1px solid var(--border-muted);
114
+ border-radius: var(--radius);
115
+ background: var(--bg-elevated);
116
+ transition: border-color 150ms ease, box-shadow 150ms ease;
117
+ outline: none;
118
+ }
119
+
120
+ .question-card.active {
121
+ background: linear-gradient(to bottom, var(--bg-active-tint), transparent), var(--bg-elevated);
122
+ border-color: color-mix(in srgb, var(--accent) 40%, var(--border-muted));
123
+ }
124
+
125
+ .question-card.dragover {
126
+ border-color: var(--border-active);
127
+ background: var(--bg-hover);
128
+ }
129
+
130
+ .question-title {
131
+ font-weight: 600;
132
+ margin: 0 0 8px;
133
+ }
134
+
135
+ .question-title code,
136
+ .question-context code {
137
+ background: var(--bg-elevated);
138
+ padding: 1px 4px;
139
+ border-radius: 3px;
140
+ font-size: 0.95em;
141
+ }
142
+
143
+ .question-context {
144
+ margin: 0 0 12px;
145
+ color: var(--fg-muted);
146
+ font-size: 13px;
147
+ }
148
+
149
+ .option-list {
150
+ display: grid;
151
+ gap: 10px;
152
+ }
153
+
154
+ .option-item {
155
+ display: flex;
156
+ align-items: flex-start;
157
+ gap: 10px;
158
+ padding: 6px 8px;
159
+ border-radius: var(--radius);
160
+ background: var(--bg-elevated);
161
+ border: 1px solid transparent;
162
+ cursor: pointer;
163
+ transition: border-color 100ms ease, background 100ms ease;
164
+ }
165
+
166
+ .option-item:hover {
167
+ background: var(--bg-selected);
168
+ }
169
+
170
+ .option-item.focused {
171
+ background: var(--bg-hover);
172
+ }
173
+
174
+ .option-other {
175
+ gap: 8px;
176
+ }
177
+
178
+ .other-input {
179
+ flex: 1;
180
+ background: transparent;
181
+ border: none;
182
+ outline: none;
183
+ color: var(--fg);
184
+ font-family: var(--font-ui);
185
+ font-size: inherit;
186
+ padding: 2px 0;
187
+ }
188
+
189
+ .other-input::placeholder {
190
+ color: var(--fg-dim);
191
+ }
192
+
193
+ .done-item {
194
+ position: absolute;
195
+ bottom: 12px;
196
+ left: 50%;
197
+ transform: translateX(-50%);
198
+ padding: 4px 16px;
199
+ border: 1px solid var(--accent);
200
+ border-radius: var(--radius);
201
+ color: var(--accent);
202
+ background: var(--bg-card);
203
+ align-items: center;
204
+ justify-content: center;
205
+ cursor: pointer;
206
+ outline: none;
207
+ transition: opacity 150ms ease, background 150ms ease;
208
+ opacity: 0;
209
+ pointer-events: none;
210
+ font-size: 12px;
211
+ gap: 4px;
212
+ }
213
+
214
+ .question-card.keyboard-nav .done-item:not(.disabled) {
215
+ opacity: 1;
216
+ pointer-events: auto;
217
+ }
218
+
219
+ .done-item:not(.disabled):hover,
220
+ .done-item:not(.disabled).focused {
221
+ background: var(--bg-selected);
222
+ }
223
+
224
+ .done-check {
225
+ font-size: 11px;
226
+ }
227
+
228
+ .recommended-star {
229
+ color: var(--accent);
230
+ margin-left: 4px;
231
+ font-weight: 600;
232
+ }
233
+
234
+ input[type="radio"],
235
+ input[type="checkbox"] {
236
+ appearance: none;
237
+ width: 16px;
238
+ height: 16px;
239
+ border: 1px solid var(--border-muted);
240
+ background: var(--bg-body);
241
+ display: inline-grid;
242
+ place-content: center;
243
+ margin: 0;
244
+ margin-top: 3px;
245
+ flex-shrink: 0;
246
+ }
247
+
248
+ input[type="radio"] {
249
+ border-radius: 50%;
250
+ }
251
+
252
+ input[type="checkbox"] {
253
+ border-radius: 3px;
254
+ }
255
+
256
+ input[type="radio"]::before {
257
+ content: "";
258
+ width: 8px;
259
+ height: 8px;
260
+ border-radius: 50%;
261
+ transform: scale(0);
262
+ background: var(--accent);
263
+ transition: transform 120ms ease-out;
264
+ }
265
+
266
+ input[type="checkbox"]::before {
267
+ content: "";
268
+ width: 9px;
269
+ height: 6px;
270
+ border-left: 2px solid var(--accent);
271
+ border-bottom: 2px solid var(--accent);
272
+ transform: rotate(-45deg) scale(0);
273
+ transition: transform 120ms ease-out;
274
+ }
275
+
276
+ input[type="radio"]:checked::before,
277
+ input[type="checkbox"]:checked::before {
278
+ transform: rotate(-45deg) scale(1);
279
+ }
280
+
281
+ input[type="radio"]:checked::before {
282
+ transform: scale(1);
283
+ }
284
+
285
+ input[type="radio"]:focus-visible,
286
+ input[type="checkbox"]:focus-visible,
287
+ textarea:focus-visible,
288
+ button:focus-visible,
289
+ input[type="file"]:focus-visible {
290
+ outline: none;
291
+ box-shadow: 0 0 0 3px var(--focus-ring);
292
+ }
293
+
294
+ textarea {
295
+ width: 100%;
296
+ min-height: 120px;
297
+ padding: 10px;
298
+ border-radius: var(--radius);
299
+ border: 1px solid var(--border-muted);
300
+ background: var(--bg-body);
301
+ color: var(--fg);
302
+ font-family: var(--font-ui);
303
+ resize: vertical;
304
+ }
305
+
306
+ .file-input {
307
+ position: relative;
308
+ }
309
+
310
+ .file-input input[type="file"] {
311
+ position: absolute;
312
+ width: 1px;
313
+ height: 1px;
314
+ opacity: 0;
315
+ pointer-events: none;
316
+ }
317
+
318
+ .file-dropzone {
319
+ display: flex;
320
+ flex-direction: column;
321
+ align-items: center;
322
+ justify-content: center;
323
+ gap: 6px;
324
+ padding: 20px;
325
+ border: 1px dashed var(--border-muted);
326
+ border-radius: var(--radius);
327
+ background: var(--bg-elevated);
328
+ color: var(--fg-dim);
329
+ font-size: 12px;
330
+ text-align: center;
331
+ transition: border-color 150ms ease, background 150ms ease;
332
+ }
333
+
334
+ .file-dropzone:hover,
335
+ .file-dropzone:focus {
336
+ border-color: var(--accent);
337
+ background: var(--accent-muted);
338
+ outline: none;
339
+ }
340
+
341
+ .file-dropzone.focused {
342
+ border-color: var(--border-focus);
343
+ border-style: solid;
344
+ background: var(--bg-selected);
345
+ }
346
+
347
+ .file-dropzone.dragover {
348
+ border-color: var(--border);
349
+ background: var(--bg-selected);
350
+ }
351
+
352
+ .image-path-input {
353
+ width: 100%;
354
+ padding: 8px 10px;
355
+ margin-top: 8px;
356
+ font-family: var(--font-ui);
357
+ font-size: 12px;
358
+ color: var(--fg);
359
+ background: var(--bg-elevated);
360
+ border: 1px solid var(--border-muted);
361
+ border-radius: var(--radius);
362
+ outline: none;
363
+ transition: border-color 150ms ease;
364
+ }
365
+
366
+ .image-path-input::placeholder {
367
+ color: var(--fg-dim);
368
+ }
369
+
370
+ .image-path-input:focus,
371
+ .image-path-input.focused {
372
+ border-color: var(--border-focus);
373
+ }
374
+
375
+ .image-selected-items {
376
+ display: flex;
377
+ flex-wrap: wrap;
378
+ gap: 8px;
379
+ margin-top: 10px;
380
+ }
381
+
382
+ .image-selected-items:empty {
383
+ display: none;
384
+ }
385
+
386
+ .selected-item {
387
+ display: flex;
388
+ align-items: center;
389
+ gap: 8px;
390
+ padding: 6px 10px;
391
+ background: var(--bg-elevated);
392
+ border: 1px solid var(--border-muted);
393
+ border-radius: var(--radius);
394
+ font-size: 12px;
395
+ }
396
+
397
+ .selected-image img {
398
+ width: 32px;
399
+ height: 32px;
400
+ object-fit: cover;
401
+ border-radius: 3px;
402
+ }
403
+
404
+ .selected-item-name {
405
+ color: var(--fg);
406
+ max-width: 150px;
407
+ overflow: hidden;
408
+ text-overflow: ellipsis;
409
+ white-space: nowrap;
410
+ }
411
+
412
+ .selected-item-path {
413
+ color: var(--fg-muted);
414
+ max-width: 200px;
415
+ overflow: hidden;
416
+ text-overflow: ellipsis;
417
+ white-space: nowrap;
418
+ font-family: var(--font-mono);
419
+ }
420
+
421
+ .selected-item-remove {
422
+ background: none;
423
+ border: none;
424
+ color: var(--fg-dim);
425
+ font-size: 16px;
426
+ cursor: pointer;
427
+ padding: 0 4px;
428
+ line-height: 1;
429
+ transition: color 150ms ease;
430
+ }
431
+
432
+ .selected-item-remove:hover {
433
+ color: var(--error);
434
+ }
435
+
436
+ .file-dropzone-icon {
437
+ font-size: 20px;
438
+ opacity: 0.5;
439
+ }
440
+
441
+ .file-dropzone-text {
442
+ color: var(--fg-muted);
443
+ }
444
+
445
+ .file-dropzone-hint {
446
+ font-size: 11px;
447
+ color: var(--fg-dim);
448
+ }
449
+
450
+ .file-preview {
451
+ display: flex;
452
+ align-items: center;
453
+ gap: 12px;
454
+ padding: 10px;
455
+ border: 1px solid var(--border-muted);
456
+ border-radius: var(--radius);
457
+ background: var(--bg-elevated);
458
+ cursor: pointer;
459
+ outline: none;
460
+ transition: border-color 150ms ease;
461
+ }
462
+
463
+ .file-preview:hover,
464
+ .file-preview:focus {
465
+ border-color: var(--accent);
466
+ }
467
+
468
+ .file-preview.focused {
469
+ border-color: var(--border-focus);
470
+ background: var(--bg-selected);
471
+ }
472
+
473
+ .file-preview img {
474
+ width: 48px;
475
+ height: 48px;
476
+ object-fit: cover;
477
+ border-radius: 3px;
478
+ border: 1px solid var(--border-muted);
479
+ }
480
+
481
+ .file-preview-info {
482
+ flex: 1;
483
+ min-width: 0;
484
+ }
485
+
486
+ .file-preview-name {
487
+ font-size: 12px;
488
+ color: var(--fg);
489
+ white-space: nowrap;
490
+ overflow: hidden;
491
+ text-overflow: ellipsis;
492
+ }
493
+
494
+ .file-preview-size {
495
+ font-size: 11px;
496
+ color: var(--fg-dim);
497
+ }
498
+
499
+ .file-preview-warning {
500
+ font-size: 11px;
501
+ color: var(--warning);
502
+ margin-top: 2px;
503
+ }
504
+
505
+ .remove-btn {
506
+ border: none;
507
+ background: transparent;
508
+ color: var(--fg-dim);
509
+ padding: 4px 8px;
510
+ font-size: 11px;
511
+ cursor: pointer;
512
+ opacity: 0.7;
513
+ transition: opacity 150ms ease, color 150ms ease;
514
+ }
515
+
516
+ .remove-btn:hover {
517
+ opacity: 1;
518
+ color: var(--error);
519
+ }
520
+
521
+ .form-footer {
522
+ display: flex;
523
+ justify-content: flex-end;
524
+ gap: 12px;
525
+ margin-top: 32px;
526
+ padding: 20px;
527
+ border: 1px solid transparent;
528
+ border-top-color: var(--border-muted);
529
+ border-radius: var(--radius);
530
+ transition: border-color 200ms ease, background 200ms ease;
531
+ }
532
+
533
+ .form-footer.active {
534
+ background: linear-gradient(to bottom, var(--bg-active-tint), transparent), var(--bg-card);
535
+ border-color: color-mix(in srgb, var(--accent) 40%, var(--border-muted));
536
+ }
537
+
538
+ .shortcuts-bar {
539
+ position: fixed;
540
+ bottom: 0;
541
+ left: 0;
542
+ right: 0;
543
+ display: flex;
544
+ align-items: center;
545
+ justify-content: center;
546
+ gap: 20px;
547
+ padding: 14px 20px;
548
+ background: var(--bg-card);
549
+ border-top: 1px solid var(--border-muted);
550
+ z-index: 50;
551
+ }
552
+
553
+ .shortcut {
554
+ display: flex;
555
+ align-items: center;
556
+ gap: 8px;
557
+ }
558
+
559
+ .shortcut-keys {
560
+ display: flex;
561
+ align-items: center;
562
+ gap: 3px;
563
+ }
564
+
565
+ .shortcut-label {
566
+ font-size: 11px;
567
+ color: var(--fg-dim);
568
+ text-transform: uppercase;
569
+ letter-spacing: 0.04em;
570
+ }
571
+
572
+ .shortcut kbd {
573
+ display: inline-flex;
574
+ align-items: center;
575
+ justify-content: center;
576
+ min-width: 20px;
577
+ height: 20px;
578
+ padding: 0 5px;
579
+ font-family: var(--font-ui);
580
+ font-size: 10px;
581
+ font-weight: 500;
582
+ background: var(--bg-elevated);
583
+ border: 1px solid var(--border-muted);
584
+ border-radius: 3px;
585
+ color: var(--fg-muted);
586
+ }
587
+
588
+ .shortcut-divider {
589
+ width: 1px;
590
+ height: 14px;
591
+ background: var(--border-muted);
592
+ margin: 0 4px;
593
+ }
594
+
595
+ .recommended-hint .star {
596
+ color: var(--accent);
597
+ font-weight: 600;
598
+ font-size: 14px;
599
+ }
600
+
601
+ button {
602
+ font-family: var(--font-ui);
603
+ font-size: 12px;
604
+ padding: 6px 14px;
605
+ border-radius: var(--radius);
606
+ border: 1px solid transparent;
607
+ cursor: pointer;
608
+ transition: background 150ms ease, border-color 150ms ease;
609
+ }
610
+
611
+ .btn-primary {
612
+ background: var(--accent);
613
+ color: var(--bg-body);
614
+ font-weight: 500;
615
+ }
616
+
617
+ .btn-primary:hover {
618
+ background: var(--accent-hover);
619
+ }
620
+
621
+ .btn-secondary {
622
+ background: transparent;
623
+ color: var(--fg-muted);
624
+ border-color: var(--border-muted);
625
+ }
626
+
627
+ .btn-secondary:hover {
628
+ border-color: var(--fg-dim);
629
+ color: var(--fg);
630
+ }
631
+
632
+ .error-message {
633
+ margin-top: 14px;
634
+ padding: 10px 12px;
635
+ border: 1px solid var(--error);
636
+ color: var(--error);
637
+ background: var(--error-bg);
638
+ border-radius: var(--radius);
639
+ }
640
+
641
+ .error-message.hidden {
642
+ display: none;
643
+ }
644
+
645
+ .field-error {
646
+ margin-top: 8px;
647
+ color: var(--error);
648
+ font-size: 12px;
649
+ }
650
+
651
+ .success-overlay {
652
+ position: absolute;
653
+ inset: 0;
654
+ background: var(--overlay-bg);
655
+ display: flex;
656
+ flex-direction: column;
657
+ align-items: center;
658
+ justify-content: center;
659
+ gap: 16px;
660
+ color: var(--success);
661
+ font-weight: 600;
662
+ letter-spacing: 0.08em;
663
+ text-transform: uppercase;
664
+ transition: opacity 200ms ease-in-out;
665
+ text-align: center;
666
+ }
667
+
668
+ .success-overlay.hidden {
669
+ display: flex !important;
670
+ opacity: 0;
671
+ pointer-events: none;
672
+ }
673
+
674
+ .success-overlay p {
675
+ margin: 0;
676
+ font-size: 14px;
677
+ }
678
+
679
+ .success-icon {
680
+ width: 64px;
681
+ height: 64px;
682
+ border-radius: 50%;
683
+ border: 2px solid var(--success);
684
+ display: flex;
685
+ align-items: center;
686
+ justify-content: center;
687
+ font-size: 20px;
688
+ font-weight: 700;
689
+ }
690
+
691
+ .countdown-badge {
692
+ position: fixed;
693
+ top: 20px;
694
+ right: 20px;
695
+ width: 80px;
696
+ height: 80px;
697
+ z-index: 100;
698
+ transition: opacity 300ms ease, transform 300ms ease, width 300ms ease, height 300ms ease;
699
+ filter: drop-shadow(0 4px 12px rgba(0, 0, 0, 0.4));
700
+ }
701
+
702
+ .countdown-badge.hidden {
703
+ display: block !important;
704
+ opacity: 0;
705
+ transform: scale(0.8);
706
+ pointer-events: none;
707
+ }
708
+
709
+ .countdown-badge.minimal {
710
+ width: auto;
711
+ height: auto;
712
+ opacity: 0.5;
713
+ filter: none;
714
+ }
715
+
716
+ .countdown-badge.minimal .countdown-ring {
717
+ display: none;
718
+ }
719
+
720
+ .countdown-badge.minimal .countdown-value {
721
+ position: static;
722
+ font-size: 13px;
723
+ font-weight: 500;
724
+ padding: 4px 8px;
725
+ background: var(--bg-elevated);
726
+ border-radius: var(--radius);
727
+ }
728
+
729
+ .countdown-badge.urgent .countdown-ring-bg {
730
+ stroke: var(--warning);
731
+ }
732
+
733
+ .countdown-badge.urgent .countdown-value {
734
+ color: var(--warning);
735
+ }
736
+
737
+ .countdown-ring {
738
+ width: 100%;
739
+ height: 100%;
740
+ transform: rotate(-90deg);
741
+ }
742
+
743
+ .countdown-ring-bg {
744
+ fill: var(--overlay-bg);
745
+ stroke: var(--border-muted);
746
+ stroke-width: 2.5;
747
+ }
748
+
749
+ .countdown-ring-progress {
750
+ fill: none;
751
+ stroke: var(--accent);
752
+ stroke-width: 3;
753
+ stroke-linecap: round;
754
+ stroke-dasharray: 100.53;
755
+ stroke-dashoffset: 0;
756
+ transition: stroke-dashoffset 1s linear, stroke 300ms ease;
757
+ }
758
+
759
+ .countdown-badge.urgent .countdown-ring-progress {
760
+ stroke: var(--warning);
761
+ }
762
+
763
+ .countdown-value {
764
+ position: absolute;
765
+ inset: 0;
766
+ display: flex;
767
+ align-items: center;
768
+ justify-content: center;
769
+ font-size: 22px;
770
+ font-weight: 700;
771
+ color: var(--fg);
772
+ font-variant-numeric: tabular-nums;
773
+ text-shadow: 0 1px 2px rgba(0, 0, 0, 0.5);
774
+ }
775
+
776
+ .queue-toast {
777
+ position: fixed;
778
+ top: 110px;
779
+ right: 20px;
780
+ width: min(360px, calc(100vw - 40px));
781
+ background: var(--bg-elevated);
782
+ border: 1px solid var(--border-muted);
783
+ border-radius: 8px;
784
+ box-shadow: 0 8px 24px rgba(0, 0, 0, 0.35);
785
+ padding: 12px 14px;
786
+ z-index: 120;
787
+ display: flex;
788
+ flex-direction: column;
789
+ gap: 10px;
790
+ }
791
+
792
+ .queue-toast.hidden {
793
+ display: none;
794
+ }
795
+
796
+ .queue-toast-header {
797
+ display: flex;
798
+ align-items: center;
799
+ justify-content: space-between;
800
+ font-size: 12px;
801
+ text-transform: uppercase;
802
+ letter-spacing: 0.08em;
803
+ color: var(--fg-muted);
804
+ }
805
+
806
+ .queue-toast-close {
807
+ border: none;
808
+ background: transparent;
809
+ color: var(--fg-muted);
810
+ font-size: 16px;
811
+ cursor: pointer;
812
+ }
813
+
814
+ .queue-toast-close:hover {
815
+ color: var(--fg);
816
+ }
817
+
818
+ .queue-toast-body {
819
+ display: flex;
820
+ flex-direction: column;
821
+ gap: 6px;
822
+ }
823
+
824
+ .queue-toast-label {
825
+ font-size: 12px;
826
+ color: var(--fg-dim);
827
+ }
828
+
829
+ .queue-toast-controls {
830
+ display: flex;
831
+ gap: 8px;
832
+ align-items: center;
833
+ width: 100%;
834
+ }
835
+
836
+ .queue-toast-select {
837
+ flex: 1;
838
+ min-width: 0;
839
+ max-width: 100%;
840
+ background: var(--bg-card);
841
+ color: var(--fg);
842
+ border: 1px solid var(--border-muted);
843
+ border-radius: var(--radius);
844
+ padding: 6px 8px;
845
+ font-family: var(--font-ui);
846
+ font-size: 12px;
847
+ white-space: nowrap;
848
+ overflow: hidden;
849
+ text-overflow: ellipsis;
850
+ }
851
+
852
+ @media (max-width: 640px) {
853
+ .queue-toast {
854
+ top: 96px;
855
+ right: 12px;
856
+ width: calc(100vw - 24px);
857
+ }
858
+ }
859
+
860
+ .queue-toast-select:focus {
861
+ outline: none;
862
+ border-color: var(--border-focus);
863
+ box-shadow: 0 0 0 2px var(--focus-ring);
864
+ }
865
+
866
+ .expired-overlay {
867
+ position: fixed;
868
+ inset: 0;
869
+ background: var(--overlay-bg);
870
+ display: flex;
871
+ align-items: center;
872
+ justify-content: center;
873
+ opacity: 0;
874
+ transition: opacity 400ms ease;
875
+ pointer-events: none;
876
+ z-index: 200;
877
+ }
878
+
879
+ .expired-overlay.visible {
880
+ opacity: 1;
881
+ pointer-events: auto;
882
+ }
883
+
884
+ .expired-overlay.hidden {
885
+ display: flex !important;
886
+ opacity: 0;
887
+ pointer-events: none;
888
+ }
889
+
890
+ .expired-content {
891
+ text-align: center;
892
+ max-width: 480px;
893
+ padding: 48px 56px;
894
+ background: var(--bg-card);
895
+ border: 1px solid var(--border-muted);
896
+ border-radius: 12px;
897
+ animation: slide-up 400ms ease-out;
898
+ }
899
+
900
+ @keyframes slide-up {
901
+ from {
902
+ opacity: 0;
903
+ transform: translateY(20px);
904
+ }
905
+ to {
906
+ opacity: 1;
907
+ transform: translateY(0);
908
+ }
909
+ }
910
+
911
+ .expired-icon {
912
+ width: 72px;
913
+ height: 72px;
914
+ border-radius: 50%;
915
+ border: 2px solid var(--warning);
916
+ display: flex;
917
+ align-items: center;
918
+ justify-content: center;
919
+ font-size: 32px;
920
+ font-weight: bold;
921
+ color: var(--warning);
922
+ margin: 0 auto 24px;
923
+ animation: icon-appear 500ms ease-out 100ms both;
924
+ }
925
+
926
+ @keyframes icon-appear {
927
+ from {
928
+ opacity: 0;
929
+ transform: scale(0.5);
930
+ }
931
+ to {
932
+ opacity: 1;
933
+ transform: scale(1);
934
+ }
935
+ }
936
+
937
+ .expired-content h2 {
938
+ color: var(--fg);
939
+ margin: 0 0 16px;
940
+ font-size: 22px;
941
+ font-weight: 600;
942
+ letter-spacing: 0.01em;
943
+ }
944
+
945
+ .expired-content p {
946
+ color: var(--fg-muted);
947
+ margin: 0 0 24px;
948
+ font-size: 14px;
949
+ line-height: 1.6;
950
+ }
951
+
952
+ .expired-countdown {
953
+ font-size: 13px;
954
+ color: var(--fg-dim);
955
+ margin-bottom: 24px;
956
+ font-variant-numeric: tabular-nums;
957
+ }
958
+
959
+ .expired-countdown span {
960
+ color: var(--warning);
961
+ font-weight: 600;
962
+ }
963
+
964
+ .expired-actions {
965
+ display: flex;
966
+ gap: 14px;
967
+ justify-content: center;
968
+ }
969
+
970
+ .expired-actions button {
971
+ padding: 10px 24px;
972
+ font-size: 14px;
973
+ }
974
+
975
+ .expired-actions button:focus {
976
+ outline: 2px solid var(--border);
977
+ outline-offset: 2px;
978
+ }
979
+
980
+ .expired-shortcuts {
981
+ display: flex;
982
+ gap: 20px;
983
+ justify-content: center;
984
+ margin-top: 20px;
985
+ font-size: 12px;
986
+ color: var(--fg-dim);
987
+ }
988
+
989
+ .expired-shortcuts kbd {
990
+ display: inline-block;
991
+ padding: 2px 6px;
992
+ margin-right: 4px;
993
+ background: var(--bg-elevated);
994
+ border: 1px solid var(--border-muted);
995
+ border-radius: 3px;
996
+ font-family: var(--font-ui);
997
+ font-size: 11px;
998
+ }
999
+
1000
+ .attach-hint {
1001
+ display: flex;
1002
+ justify-content: flex-end;
1003
+ margin-top: 8px;
1004
+ }
1005
+
1006
+ .attach-btn {
1007
+ display: inline-flex;
1008
+ align-items: center;
1009
+ gap: 4px;
1010
+ padding: 4px 8px;
1011
+ font-family: var(--font-ui);
1012
+ font-size: 10px;
1013
+ color: var(--fg-dim);
1014
+ background: transparent;
1015
+ border: none;
1016
+ border-radius: var(--radius);
1017
+ cursor: pointer;
1018
+ opacity: 0.6;
1019
+ transition: opacity 150ms ease, color 150ms ease;
1020
+ }
1021
+
1022
+ .attach-btn:hover,
1023
+ .attach-btn:focus,
1024
+ .attach-btn.focused {
1025
+ opacity: 1;
1026
+ color: var(--fg-muted);
1027
+ outline: none;
1028
+ }
1029
+
1030
+ .attach-btn.has-attachment {
1031
+ opacity: 1;
1032
+ color: var(--accent);
1033
+ }
1034
+
1035
+ .attach-inline {
1036
+ margin-top: 10px;
1037
+ padding: 12px;
1038
+ background: var(--bg-body);
1039
+ border: 1px solid var(--border-muted);
1040
+ border-radius: var(--radius);
1041
+ }
1042
+
1043
+ .attach-inline.hidden {
1044
+ display: none;
1045
+ }
1046
+
1047
+ .attach-inline-drop {
1048
+ display: flex;
1049
+ align-items: center;
1050
+ justify-content: center;
1051
+ padding: 10px;
1052
+ border: 1px dashed var(--border-muted);
1053
+ border-radius: var(--radius);
1054
+ font-size: 11px;
1055
+ color: var(--fg-dim);
1056
+ cursor: pointer;
1057
+ transition: border-color 150ms ease;
1058
+ }
1059
+
1060
+ .attach-inline-drop:hover,
1061
+ .attach-inline-drop:focus,
1062
+ .attach-inline-drop.focused {
1063
+ border-color: var(--accent);
1064
+ outline: none;
1065
+ }
1066
+
1067
+ .attach-inline-drop.dragover {
1068
+ border-color: var(--border);
1069
+ background: var(--bg-selected);
1070
+ }
1071
+
1072
+ .attach-inline-path {
1073
+ width: 100%;
1074
+ margin-top: 10px;
1075
+ padding: 8px 10px;
1076
+ font-family: var(--font-ui);
1077
+ font-size: 11px;
1078
+ color: var(--fg);
1079
+ background: var(--bg-elevated);
1080
+ border: 1px solid var(--border-muted);
1081
+ border-radius: var(--radius);
1082
+ outline: none;
1083
+ }
1084
+
1085
+ .attach-inline-path:focus,
1086
+ .attach-inline-path.focused {
1087
+ border-color: var(--border-focus);
1088
+ }
1089
+
1090
+ .attach-inline-items {
1091
+ display: flex;
1092
+ flex-wrap: wrap;
1093
+ gap: 6px;
1094
+ margin-top: 6px;
1095
+ }
1096
+
1097
+ .attach-inline-items:empty {
1098
+ display: none;
1099
+ }
1100
+
1101
+ @media (max-width: 720px) {
1102
+ body {
1103
+ padding: 12px;
1104
+ }
1105
+
1106
+ .interview-container {
1107
+ padding: 20px;
1108
+ }
1109
+
1110
+ .interview-header h1 {
1111
+ font-size: 20px;
1112
+ }
1113
+
1114
+ .question-card {
1115
+ padding: 20px;
1116
+ }
1117
+
1118
+ .question-title {
1119
+ font-size: 15px;
1120
+ }
1121
+
1122
+ .option-item {
1123
+ padding: 12px 14px;
1124
+ }
1125
+
1126
+ textarea {
1127
+ min-height: 100px;
1128
+ font-size: 14px;
1129
+ }
1130
+
1131
+ .file-dropzone {
1132
+ padding: 28px 20px;
1133
+ }
1134
+
1135
+ .image-path-input {
1136
+ font-size: 14px;
1137
+ }
1138
+
1139
+ .selected-item {
1140
+ padding: 8px 10px;
1141
+ }
1142
+
1143
+ .selected-item-path {
1144
+ max-width: 140px;
1145
+ }
1146
+
1147
+ .form-footer {
1148
+ padding: 16px;
1149
+ }
1150
+
1151
+ .btn-primary,
1152
+ .btn-secondary {
1153
+ padding: 12px 20px;
1154
+ font-size: 14px;
1155
+ }
1156
+
1157
+ .expired-content {
1158
+ max-width: 100%;
1159
+ padding: 32px 24px;
1160
+ margin: 16px;
1161
+ border-radius: 10px;
1162
+ }
1163
+
1164
+ .expired-icon {
1165
+ width: 60px;
1166
+ height: 60px;
1167
+ font-size: 28px;
1168
+ margin-bottom: 20px;
1169
+ }
1170
+
1171
+ .expired-content h2 {
1172
+ font-size: 20px;
1173
+ }
1174
+
1175
+ .expired-content p {
1176
+ font-size: 13px;
1177
+ }
1178
+
1179
+ .expired-actions {
1180
+ flex-direction: column;
1181
+ gap: 10px;
1182
+ }
1183
+
1184
+ .expired-actions button {
1185
+ width: 100%;
1186
+ padding: 14px 20px;
1187
+ }
1188
+
1189
+ .expired-shortcuts {
1190
+ display: none;
1191
+ }
1192
+
1193
+ .shortcuts-bar {
1194
+ display: none;
1195
+ }
1196
+
1197
+ .countdown-badge {
1198
+ top: 8px;
1199
+ right: 8px;
1200
+ width: 60px;
1201
+ height: 60px;
1202
+ }
1203
+
1204
+ .countdown-value {
1205
+ font-size: 16px;
1206
+ }
1207
+
1208
+ }
1209
+
1210
+ @media (max-width: 480px) {
1211
+ body {
1212
+ padding: 8px;
1213
+ }
1214
+
1215
+ .interview-container {
1216
+ padding: 16px;
1217
+ }
1218
+
1219
+ .question-card {
1220
+ padding: 16px;
1221
+ }
1222
+
1223
+ .question-title {
1224
+ font-size: 14px;
1225
+ }
1226
+
1227
+ .file-dropzone {
1228
+ padding: 24px 16px;
1229
+ }
1230
+
1231
+ .file-dropzone-text {
1232
+ font-size: 13px;
1233
+ }
1234
+
1235
+ .file-dropzone-hint {
1236
+ font-size: 11px;
1237
+ }
1238
+
1239
+ .selected-image img {
1240
+ width: 28px;
1241
+ height: 28px;
1242
+ }
1243
+
1244
+ .selected-item-name,
1245
+ .selected-item-path {
1246
+ max-width: 100px;
1247
+ font-size: 11px;
1248
+ }
1249
+ }
1250
+
1251
+ /* Code Block Styles */
1252
+ .code-block {
1253
+ margin: 0.75rem 0;
1254
+ border: 1px solid var(--border-muted);
1255
+ border-radius: 6px;
1256
+ background: var(--bg-elevated);
1257
+ overflow: hidden;
1258
+ font-size: 0.8125rem;
1259
+ }
1260
+
1261
+ .code-block-header {
1262
+ display: flex;
1263
+ align-items: center;
1264
+ gap: 0.5rem;
1265
+ padding: 0.375rem 0.75rem;
1266
+ background: var(--bg-body);
1267
+ border-bottom: 1px solid var(--border-muted);
1268
+ font-size: 0.6875rem;
1269
+ color: var(--fg-muted);
1270
+ }
1271
+
1272
+ .code-block-title {
1273
+ font-weight: 500;
1274
+ }
1275
+
1276
+ .code-block-file {
1277
+ font-family: var(--font-mono);
1278
+ font-weight: 500;
1279
+ }
1280
+
1281
+ .code-block-lines {
1282
+ color: var(--fg-dim);
1283
+ }
1284
+
1285
+ .code-block-lang {
1286
+ margin-left: auto;
1287
+ text-transform: uppercase;
1288
+ letter-spacing: 0.05em;
1289
+ color: var(--fg-dim);
1290
+ }
1291
+
1292
+ .code-block pre {
1293
+ margin: 0;
1294
+ padding: 0.75rem;
1295
+ overflow-x: auto;
1296
+ line-height: 1.5;
1297
+ }
1298
+
1299
+ .code-block code {
1300
+ font-family: var(--font-mono);
1301
+ font-size: inherit;
1302
+ background: none;
1303
+ padding: 0;
1304
+ }
1305
+
1306
+ .code-block-lines-container {
1307
+ display: table;
1308
+ width: 100%;
1309
+ }
1310
+
1311
+ .code-block-line {
1312
+ display: table-row;
1313
+ }
1314
+
1315
+ .code-block-line-number {
1316
+ display: table-cell;
1317
+ user-select: none;
1318
+ text-align: right;
1319
+ padding-right: 1rem;
1320
+ padding-left: 0.5rem;
1321
+ width: 1%;
1322
+ white-space: nowrap;
1323
+ color: var(--fg-dim);
1324
+ opacity: 0.6;
1325
+ }
1326
+
1327
+ .code-block-line-content {
1328
+ display: table-cell;
1329
+ white-space: pre;
1330
+ padding-right: 0.75rem;
1331
+ }
1332
+
1333
+ .code-block-line.highlighted {
1334
+ background: var(--accent-muted);
1335
+ }
1336
+
1337
+ .code-block-line.highlighted .code-block-line-number {
1338
+ color: var(--accent);
1339
+ opacity: 1;
1340
+ }
1341
+
1342
+ /* Diff styling */
1343
+ .code-block-line.diff-add {
1344
+ background: rgba(46, 160, 67, 0.15);
1345
+ }
1346
+
1347
+ .code-block-line.diff-add .code-block-line-content {
1348
+ color: var(--success);
1349
+ }
1350
+
1351
+ .code-block-line.diff-remove {
1352
+ background: rgba(248, 81, 73, 0.15);
1353
+ }
1354
+
1355
+ .code-block-line.diff-remove .code-block-line-content {
1356
+ color: var(--error);
1357
+ }
1358
+
1359
+ .code-block-line.diff-header {
1360
+ color: var(--fg-muted);
1361
+ font-style: italic;
1362
+ }
1363
+
1364
+ .code-block-line.diff-header .code-block-line-content {
1365
+ color: var(--fg-dim);
1366
+ }
1367
+
1368
+ /* Option with code */
1369
+ .option-item.has-code {
1370
+ position: relative;
1371
+ flex-direction: column;
1372
+ align-items: stretch;
1373
+ }
1374
+
1375
+ .option-item.has-code > input {
1376
+ position: absolute;
1377
+ top: 6px;
1378
+ left: 8px;
1379
+ }
1380
+
1381
+ .option-item.has-code > span:first-of-type {
1382
+ margin-left: 1.5rem;
1383
+ }
1384
+
1385
+ .option-item.has-code .code-block {
1386
+ margin-top: 0.5rem;
1387
+ margin-left: 1.5rem;
1388
+ }
1389
+
1390
+ /* Question-level code block */
1391
+ .question-code-block {
1392
+ margin-bottom: 1rem;
1393
+ }
1394
+