fablecut 1.13.0 → 1.15.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/style.css CHANGED
@@ -2713,6 +2713,98 @@ body.track-size-s .clip .fade-grip {
2713
2713
  background: linear-gradient(180deg, #ffd16633, #ffd16611), #6b5420;
2714
2714
  }
2715
2715
 
2716
+ .lib-item .bin-thumb.shape-thumb {
2717
+ display: grid;
2718
+ place-items: center;
2719
+ background: #1d4f63;
2720
+ }
2721
+
2722
+ .lib-item .bin-thumb.shape-thumb svg {
2723
+ width: 70%;
2724
+ height: 70%;
2725
+ }
2726
+
2727
+ .lib-group {
2728
+ margin: 10px 4px 4px;
2729
+ font-size: 10.5px;
2730
+ font-weight: 600;
2731
+ letter-spacing: 0.06em;
2732
+ text-transform: uppercase;
2733
+ color: var(--dim);
2734
+ }
2735
+
2736
+ .lib-group:first-child {
2737
+ margin-top: 2px;
2738
+ }
2739
+
2740
+ .lib-hint {
2741
+ margin: 10px 4px;
2742
+ font-size: 11px;
2743
+ line-height: 1.4;
2744
+ color: var(--dim);
2745
+ }
2746
+
2747
+ .clip.c-comp .comp-open-hint {
2748
+ position: absolute;
2749
+ right: 6px;
2750
+ top: 50%;
2751
+ transform: translateY(-50%);
2752
+ padding: 2px 7px;
2753
+ border-radius: 999px;
2754
+ background: #00000073;
2755
+ color: #f3e8ff;
2756
+ font-size: 10.5px;
2757
+ white-space: nowrap;
2758
+ pointer-events: none;
2759
+ opacity: 0;
2760
+ transition: opacity 0.15s;
2761
+ }
2762
+
2763
+ .clip.c-comp:hover .comp-open-hint {
2764
+ opacity: 1;
2765
+ }
2766
+
2767
+ body.track-size-s .clip.c-comp .comp-open-hint {
2768
+ display: none;
2769
+ }
2770
+
2771
+ .clip.c-comp .clip-body {
2772
+ background: linear-gradient(180deg, #c084fc33, #c084fc11), #4c2a73;
2773
+ }
2774
+
2775
+ .comp-crumb {
2776
+ display: inline-flex;
2777
+ align-items: center;
2778
+ gap: 6px;
2779
+ padding: 2px 8px 2px 2px;
2780
+ margin-right: 6px;
2781
+ border: 1px solid #c084fc66;
2782
+ border-radius: 6px;
2783
+ background: #c084fc1a;
2784
+ font-size: 12px;
2785
+ }
2786
+
2787
+ .comp-crumb .crumb-sep {
2788
+ opacity: .6;
2789
+ }
2790
+
2791
+ .lib-item .bin-thumb.comp-thumb,
2792
+ .comp-item .bin-thumb.comp-thumb {
2793
+ display: grid;
2794
+ place-items: center;
2795
+ background: #4c2a73;
2796
+ color: #e9d5ff;
2797
+ font-size: 20px;
2798
+ }
2799
+
2800
+ .clip.c-shape .clip-body {
2801
+ background: linear-gradient(180deg, #5ad1ff33, #5ad1ff11), #1d4f63;
2802
+ }
2803
+
2804
+ .clip.c-null .clip-body {
2805
+ background: repeating-linear-gradient(90deg, #ff6b6b22 0 6px, transparent 6px 12px), #4a2430;
2806
+ }
2807
+
2716
2808
  .clip.c-adjust .clip-body {
2717
2809
  background: repeating-linear-gradient(135deg, #38bdf822 0 10px, transparent 10px 20px), #155e75;
2718
2810
  }
@@ -2948,10 +3040,130 @@ body.track-size-s .clip .fade-grip {
2948
3040
  display: none;
2949
3041
  }
2950
3042
 
3043
+ /* Export dialog: presets + delivery settings */
3044
+ .dialog.export-dialog {
3045
+ width: min(640px, 94vw);
3046
+ max-height: 90vh;
3047
+ display: flex;
3048
+ flex-direction: column;
3049
+ }
3050
+ .export-dialog .export-body {
3051
+ overflow-y: auto;
3052
+ min-height: 0;
3053
+ margin: 0 -6px 12px;
3054
+ padding: 0 6px;
3055
+ }
3056
+ .dlv-preset-line {
3057
+ display: flex;
3058
+ align-items: center;
3059
+ justify-content: space-between;
3060
+ gap: 8px;
3061
+ margin-bottom: 6px;
3062
+ }
3063
+ .dlv-preset-line .export-profile-label { margin: 0; }
3064
+ .dlv-preset-actions { display: flex; gap: 6px; }
3065
+ .dlv-save-row {
3066
+ display: flex;
3067
+ gap: 6px;
3068
+ margin-top: 8px;
3069
+ }
3070
+ .dlv-save-row input { flex: 1; }
3071
+ .dlv-save-row.hidden, .dlv-body.hidden, .dlv-f.hidden { display: none; }
3072
+ .dlv-body { margin-top: 10px; }
3073
+ .dlv-sec {
3074
+ border-top: 1px solid var(--border);
3075
+ padding: 8px 0 4px;
3076
+ }
3077
+ .dlv-sec > summary {
3078
+ cursor: pointer;
3079
+ font-size: 12px;
3080
+ font-weight: 600;
3081
+ padding: 2px 0 6px;
3082
+ user-select: none;
3083
+ }
3084
+ .dlv-grid {
3085
+ display: grid;
3086
+ grid-template-columns: repeat(auto-fill, minmax(170px, 1fr));
3087
+ gap: 8px 12px;
3088
+ padding-bottom: 6px;
3089
+ }
3090
+ .dlv-f {
3091
+ display: flex;
3092
+ flex-direction: column;
3093
+ gap: 4px;
3094
+ font-size: 11.5px;
3095
+ color: var(--muted, #9a9aaa);
3096
+ min-width: 0;
3097
+ }
3098
+ .dlv-f.dlv-wide { grid-column: 1 / -1; }
3099
+ .dlv-f select, .dlv-f input, .dlv-f textarea, .dlv-save-row input {
3100
+ width: 100%;
3101
+ min-width: 0;
3102
+ padding: 5px 8px;
3103
+ border: 1px solid var(--border);
3104
+ border-radius: 6px;
3105
+ background: var(--panel);
3106
+ color: var(--text);
3107
+ font: inherit;
3108
+ font-size: 12px;
3109
+ user-select: text;
3110
+ }
3111
+ .dlv-f textarea { resize: vertical; }
3112
+ .dlv-f select:disabled { opacity: .6; }
3113
+ .dlv-f select:focus, .dlv-f input:focus, .dlv-f textarea:focus, .dlv-save-row input:focus {
3114
+ outline: none;
3115
+ border-color: var(--accent);
3116
+ }
3117
+ .dlv-wh-in { display: flex; align-items: center; gap: 6px; }
3118
+ .dlv-wh-in span { color: var(--muted, #9a9aaa); }
3119
+ .dlv-file-preview { margin: 6px 0 2px; font-size: 12px; word-break: break-all; }
3120
+ .dlv-tokens { margin: 0 0 8px; font-size: 11px; opacity: .75; }
3121
+ .dlv-meta { margin-top: 4px; }
3122
+ .dlv-summary {
3123
+ margin: 4px 0 0;
3124
+ font-size: 12px;
3125
+ border-top: 1px solid var(--border);
3126
+ padding-top: 8px;
3127
+ }
3128
+
2951
3129
  .dialog.help {
2952
- width: min(820px, 94vw);
2953
- max-height: min(90vh, 640px);
2954
- overflow: auto;
3130
+ width: min(1080px, 94vw);
3131
+ max-height: 88vh;
3132
+ display: flex;
3133
+ flex-direction: column;
3134
+ padding-bottom: 14px;
3135
+ }
3136
+
3137
+ .dialog.help .help-head {
3138
+ display: flex;
3139
+ align-items: center;
3140
+ gap: 16px;
3141
+ margin-bottom: 12px;
3142
+ }
3143
+
3144
+ .dialog.help .help-head h2 {
3145
+ margin: 0;
3146
+ flex: 1;
3147
+ }
3148
+
3149
+ .dialog.help .help-filter {
3150
+ width: min(280px, 50%);
3151
+ background: var(--panel-2);
3152
+ border: 1px solid var(--border);
3153
+ border-radius: 6px;
3154
+ color: var(--text);
3155
+ font: inherit;
3156
+ font-size: 12px;
3157
+ padding: 6px 10px;
3158
+ }
3159
+
3160
+ .dialog.help .help-filter:focus {
3161
+ outline: none;
3162
+ border-color: var(--accent);
3163
+ }
3164
+
3165
+ .dialog.help .dialog-actions {
3166
+ margin-top: 10px;
2955
3167
  }
2956
3168
 
2957
3169
  .dialog.settings {
@@ -3022,11 +3234,38 @@ body.track-size-s .clip .fade-grip {
3022
3234
  }
3023
3235
 
3024
3236
  .dialog.help .keys-cols {
3025
- display: grid;
3026
- grid-template-columns: 1fr 1fr;
3027
- gap: 0 28px;
3028
- margin-bottom: 12px;
3029
- align-items: start;
3237
+ flex: 1;
3238
+ min-height: 0;
3239
+ overflow: auto;
3240
+ columns: 2 380px;
3241
+ column-gap: 16px;
3242
+ padding-right: 4px;
3243
+ }
3244
+
3245
+ .dialog.help .keys-sec {
3246
+ break-inside: avoid;
3247
+ margin: 0 0 14px;
3248
+ padding: 10px 12px 6px;
3249
+ background: var(--panel-2);
3250
+ border: 1px solid var(--border);
3251
+ border-radius: 8px;
3252
+ }
3253
+
3254
+ .dialog.help .keys-sec h3 {
3255
+ margin: 0 0 6px;
3256
+ font-size: 11px;
3257
+ font-weight: 600;
3258
+ letter-spacing: 0.06em;
3259
+ text-transform: uppercase;
3260
+ color: var(--text);
3261
+ }
3262
+
3263
+ .dialog.help .keys-sec h3 span {
3264
+ margin-left: 6px;
3265
+ font-weight: 400;
3266
+ letter-spacing: 0;
3267
+ text-transform: none;
3268
+ color: var(--dim);
3030
3269
  }
3031
3270
 
3032
3271
  .dialog.help .keys {
@@ -3036,22 +3275,31 @@ body.track-size-s .clip .fade-grip {
3036
3275
  }
3037
3276
 
3038
3277
  .dialog.help .keys td {
3039
- padding: 5px 6px;
3040
- border-bottom: 1px solid #26262c;
3278
+ padding: 5px 0;
3279
+ border-top: 1px solid var(--border);
3041
3280
  font-size: 12px;
3281
+ line-height: 1.45;
3042
3282
  vertical-align: top;
3043
3283
  }
3044
3284
 
3285
+ .dialog.help .keys tr:first-child td {
3286
+ border-top: 0;
3287
+ }
3288
+
3045
3289
  .dialog.help .keys td:first-child {
3046
- width: 40%;
3290
+ width: 34%;
3291
+ padding-right: 12px;
3047
3292
  color: var(--dim);
3293
+ }
3294
+
3295
+ .dialog.help .keys td:first-child kbd {
3048
3296
  white-space: nowrap;
3049
3297
  }
3050
3298
 
3051
- @media (max-width: 700px) {
3052
- .dialog.help .keys-cols {
3053
- grid-template-columns: 1fr;
3054
- }
3299
+ .dialog.help .help-empty {
3300
+ color: var(--dim);
3301
+ font-size: 12px;
3302
+ margin: 8px 2px;
3055
3303
  }
3056
3304
 
3057
3305
  kbd {
@@ -3563,12 +3811,278 @@ input[type="range"].cq-hue {
3563
3811
  border-radius: 3px;
3564
3812
  height: 6px;
3565
3813
  }
3566
- .dialog.help .keys tr.keys-head td {
3567
- padding-top: 12px;
3814
+
3815
+ /* ── Project bin: search, filter, sort, list view, tags, usage ── */
3816
+ .bin-tools {
3817
+ display: flex;
3818
+ flex-wrap: wrap;
3819
+ gap: 4px;
3820
+ padding: 6px 8px 0;
3821
+ align-items: center;
3822
+ }
3823
+ .bin-tools.hidden { display: none; }
3824
+ .bin-tools .bin-search {
3825
+ flex: 1 1 100%;
3826
+ min-width: 0;
3827
+ background: var(--panel);
3828
+ border: 1px solid var(--border);
3829
+ border-radius: 5px;
3568
3830
  color: var(--text);
3569
- font-weight: 600;
3831
+ font: 12px "Segoe UI", sans-serif;
3832
+ padding: 4px 8px;
3833
+ outline: none;
3834
+ user-select: text;
3835
+ }
3836
+ .bin-tools .bin-search:focus { border-color: var(--accent); }
3837
+ .bin-tools select {
3838
+ flex: 1 1 0;
3839
+ min-width: 0;
3840
+ background: var(--panel);
3841
+ border: 1px solid var(--border);
3842
+ border-radius: 5px;
3843
+ color: var(--text);
3844
+ font: 11px "Segoe UI", sans-serif;
3845
+ padding: 3px 4px;
3846
+ }
3847
+ .bin-tools select.on { border-color: var(--accent); color: #cfc8ff; }
3848
+ .bin-tools .btn.tiny { flex: none; min-width: 26px; }
3849
+ .bin-tools .btn.tiny.on { border-color: var(--accent); color: #cfc8ff; }
3850
+
3851
+ .bin-filterbar {
3852
+ display: flex;
3853
+ align-items: center;
3854
+ gap: 6px;
3855
+ flex-wrap: wrap;
3570
3856
  font-size: 11px;
3571
- letter-spacing: 0.04em;
3857
+ color: var(--dim);
3858
+ padding: 0 2px 2px;
3859
+ }
3860
+ .bin-filter-count { font-variant-numeric: tabular-nums; }
3861
+ .bin-filter-name { color: #cfc8ff; font-weight: 600; }
3862
+ .bin-filterbar [data-clear] { margin-left: auto; }
3863
+ .bin-noresult { color: var(--dim); font-size: 12px; text-align: center; padding: 14px 6px; }
3864
+
3865
+ .bin-side {
3866
+ flex: none;
3867
+ display: flex;
3868
+ flex-direction: column;
3869
+ align-items: center;
3870
+ gap: 2px;
3871
+ }
3872
+ .bin-fav,
3873
+ .bin-uses {
3874
+ border: 0;
3875
+ background: transparent;
3876
+ color: var(--dim);
3877
+ cursor: pointer;
3878
+ font: 12px/1 "Segoe UI", sans-serif;
3879
+ padding: 2px 3px;
3880
+ border-radius: 4px;
3881
+ }
3882
+ .bin-fav { opacity: .45; font-size: 13px; }
3883
+ .bin-item:hover .bin-fav { opacity: .9; }
3884
+ .bin-fav.on { color: #ffd166; opacity: 1; }
3885
+ .bin-fav:hover { background: #ffffff10; }
3886
+ .bin-uses {
3887
+ min-width: 18px;
3888
+ font-size: 10px;
3889
+ font-variant-numeric: tabular-nums;
3890
+ background: #2a2a33;
3891
+ color: var(--text);
3892
+ }
3893
+ .bin-uses.none { background: transparent; color: #5c5c66; cursor: default; }
3894
+ .bin-uses:not(.none):hover { background: #7b6cff33; color: #fff; }
3895
+ .bin-tags { display: flex; flex-wrap: wrap; gap: 3px; margin-top: 2px; }
3896
+ .bin-tag {
3897
+ font-size: 10px;
3898
+ line-height: 1.4;
3899
+ padding: 0 5px;
3900
+ border-radius: 8px;
3901
+ background: #7b6cff22;
3902
+ color: #cfc8ff;
3903
+ white-space: nowrap;
3904
+ }
3905
+ .bin-tag.chip { border: 0; cursor: pointer; font-family: inherit; }
3906
+ .bin-tag.chip:hover { background: #7b6cff44; }
3907
+ .bin-flash { animation: bin-flash 1.2s ease-out; }
3908
+ @keyframes bin-flash {
3909
+ 0%, 40% { border-color: var(--accent); background: #7b6cff3a; box-shadow: 0 0 0 2px #7b6cff66; }
3910
+ }
3911
+
3912
+ /* list view: one row of metadata columns per file */
3913
+ /* columns drop out as the bin narrows (widen the panel to see them all) */
3914
+ .bin-list.list-view {
3915
+ container-type: inline-size;
3916
+ --bin-cols: minmax(140px, 1fr) 62px 76px 42px 50px 92px 54px 46px 30px 14px;
3917
+ }
3918
+ .bin-list.list-view .bin-row {
3919
+ display: grid;
3920
+ grid-template-columns: var(--bin-cols);
3921
+ gap: 6px;
3922
+ align-items: center;
3923
+ padding: 3px 6px;
3924
+ }
3925
+ @container (max-width: 700px) {
3926
+ .bin-row .c-codec, .bin-row .c-audio { display: none; }
3927
+ .bin-row { --bin-cols: minmax(120px, 1fr) 62px 76px 42px 54px 46px 30px 14px; }
3928
+ }
3929
+ @container (max-width: 520px) {
3930
+ .bin-row .c-fps, .bin-row .c-size, .bin-row .c-proxy { display: none; }
3931
+ .bin-row { --bin-cols: minmax(110px, 1fr) 62px 76px 30px 14px; }
3932
+ }
3933
+ @container (max-width: 330px) {
3934
+ .bin-row .c-resolution { display: none; }
3935
+ .bin-row { --bin-cols: minmax(100px, 1fr) 58px 30px 14px; }
3936
+ }
3937
+ .bin-list.list-view .bin-item.bin-row { padding-left: calc(6px + var(--bin-depth, 0) * 14px); }
3938
+ .bin-cell {
3939
+ min-width: 0;
3940
+ font-size: 11px;
3941
+ color: var(--dim);
3942
+ white-space: nowrap;
3943
+ overflow: hidden;
3944
+ text-overflow: ellipsis;
3945
+ }
3946
+ .bin-cell.num { font-variant-numeric: tabular-nums; text-align: right; }
3947
+ .bin-cell-name { display: flex; align-items: center; gap: 5px; color: var(--text); }
3948
+ .bin-cell-name .bin-name { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
3949
+ .bin-thumb.sm { width: 28px; height: 18px; font-size: 11px; border-radius: 3px; }
3950
+ .bin-colhead {
3951
+ position: sticky;
3952
+ top: -8px;
3953
+ z-index: 2;
3954
+ background: var(--panel);
3955
+ border-bottom: 1px solid var(--border);
3956
+ }
3957
+ .bin-colhead .bin-cell {
3958
+ border: 0;
3959
+ background: transparent;
3960
+ font: 600 10px "Segoe UI", sans-serif;
3572
3961
  text-transform: uppercase;
3573
- white-space: normal;
3962
+ letter-spacing: .3px;
3963
+ cursor: pointer;
3964
+ padding: 4px 0;
3965
+ text-align: left;
3966
+ }
3967
+ .bin-colhead .bin-cell.num { text-align: right; }
3968
+ .bin-colhead .bin-cell:hover,
3969
+ .bin-colhead .bin-cell.on { color: #cfc8ff; }
3970
+ .bin-list.list-view .bin-folder { padding-top: 3px; padding-bottom: 3px; }
3971
+ .bin-list.list-view .bin-del { align-self: center; }
3972
+
3973
+ /* bin popovers: prompt, media info, instances */
3974
+ .ctx-sep { height: 1px; background: var(--border); margin: 4px 2px; }
3975
+ .bin-pop { padding: 8px; min-width: 230px; max-width: 340px; }
3976
+ .bin-pop-label, .bin-pop-title { display: block; font-size: 12px; font-weight: 600; color: #e8e8ee; margin-bottom: 6px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
3977
+ .bin-pop-input {
3978
+ width: 100%;
3979
+ background: var(--panel-2);
3980
+ border: 1px solid var(--border);
3981
+ border-radius: 5px;
3982
+ color: var(--text);
3983
+ font: 12px "Segoe UI", sans-serif;
3984
+ padding: 5px 7px;
3985
+ outline: none;
3986
+ user-select: text;
3987
+ }
3988
+ .bin-pop-input:focus { border-color: var(--accent); }
3989
+ .bin-pop-hint { font-size: 11px; color: var(--dim); margin: 5px 0 2px; }
3990
+ .bin-pop-chips { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 6px; max-height: 90px; overflow-y: auto; }
3991
+ .bin-pop-btns { display: flex; justify-content: flex-end; gap: 6px; margin-top: 8px; }
3992
+ .bin-info table { border-collapse: collapse; font-size: 11px; width: 100%; }
3993
+ .bin-info th { color: var(--dim); font-weight: 400; text-align: left; padding: 2px 10px 2px 0; vertical-align: top; white-space: nowrap; }
3994
+ .bin-info td { color: var(--text); padding: 2px 0; word-break: break-all; user-select: text; }
3995
+ .bin-instances { max-height: 60vh; overflow-y: auto; }
3996
+ .bin-instances .ctx-item kbd { font-variant-numeric: tabular-nums; }
3997
+
3998
+ /* offline media: bin badge, banner, timeline clips, relink dialog */
3999
+ .bin-offline {
4000
+ display: inline-block;
4001
+ font: 700 9px/1.5 "Segoe UI", sans-serif;
4002
+ letter-spacing: .4px;
4003
+ padding: 0 4px;
4004
+ border-radius: 3px;
4005
+ background: #e5484d;
4006
+ color: #fff;
4007
+ vertical-align: 1px;
4008
+ flex: none;
4009
+ }
4010
+ .bin-item.offline { border-color: #e5484d66; }
4011
+ .bin-item.offline .bin-thumb { filter: grayscale(1) brightness(.5); }
4012
+ .bin-offline-bar { background: #e5484d1f; border: 1px solid #e5484d55; border-radius: 6px; padding: 4px 6px; color: #ffb3b5; }
4013
+ .bin-offline-bar .btn:first-of-type { margin-left: auto; }
4014
+ .clip.offline {
4015
+ background-image: repeating-linear-gradient(135deg, #e5484d55 0 6px, transparent 6px 12px) !important;
4016
+ outline: 1px solid #e5484d;
4017
+ outline-offset: -1px;
4018
+ }
4019
+ .clip.offline .clip-label { color: #ffd0d1; }
4020
+ .dialog.relink { width: min(720px, 94vw); max-height: 84vh; display: flex; flex-direction: column; }
4021
+ .relink-tools { display: flex; align-items: center; gap: 10px; margin: 6px 0 8px; }
4022
+ .relink-status { font-size: 12px; }
4023
+ .relink-rows { overflow-y: auto; display: flex; flex-direction: column; gap: 6px; min-height: 0; }
4024
+ .relink-row { border: 1px solid var(--border); border-radius: 6px; padding: 8px; background: var(--panel-2); }
4025
+ .relink-name { display: flex; flex-direction: column; gap: 2px; font-size: 12px; margin-bottom: 6px; min-width: 0; }
4026
+ .relink-name b { color: #e8e8ee; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
4027
+ .relink-was { font-size: 11px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
4028
+ .relink-pick { display: flex; gap: 6px; align-items: center; }
4029
+ .relink-pick select {
4030
+ flex: 1;
4031
+ min-width: 0;
4032
+ background: var(--panel);
4033
+ border: 1px solid var(--border);
4034
+ border-radius: 5px;
4035
+ color: var(--text);
4036
+ font: 12px "Segoe UI", sans-serif;
4037
+ padding: 4px 6px;
4038
+ }
4039
+
4040
+ /* proxies: bin badge, monitor button */
4041
+ .bin-proxy {
4042
+ display: inline-block;
4043
+ font: 700 9px/1.5 "Segoe UI", sans-serif;
4044
+ padding: 0 4px;
4045
+ border-radius: 3px;
4046
+ white-space: nowrap;
4047
+ background: #2a2a33;
4048
+ color: var(--dim);
3574
4049
  }
4050
+ .bin-proxy.ready { background: #2f6f4f; color: #d6ffe8; }
4051
+ .bin-proxy.ready:not(.on) { background: #2a2a33; color: #9fd9b9; }
4052
+ .bin-proxy.busy { background: #4f3f12; color: #ffe2a3; font-variant-numeric: tabular-nums; }
4053
+ .bin-proxy.failed { background: #5a1d20; color: #ffb3b5; }
4054
+ .proxy-btn:not(.has) { opacity: .6; }
4055
+ .dialog.export-dialog p { margin-bottom: 0; }
4056
+ .export-dialog .dialog-actions { flex-wrap: wrap; }
4057
+ .dlv-queue-open { margin-right: auto; }
4058
+ .dlv-batch-list { list-style: none; margin: 8px 0 0; padding: 0; display: flex; flex-direction: column; gap: 4px; }
4059
+ .dlv-batch-list li {
4060
+ display: flex; align-items: center; gap: 8px;
4061
+ padding: 5px 8px; border: 1px solid var(--border); border-radius: 6px;
4062
+ background: var(--panel); font-size: 12px; min-width: 0;
4063
+ }
4064
+ .dlv-batch-list li.off { opacity: .55; }
4065
+ .dlv-batch-list input[type="checkbox"] { accent-color: var(--accent); flex: none; }
4066
+ .dlv-batch-list .bo-main { flex: 1; min-width: 0; display: flex; flex-direction: column; }
4067
+ .dlv-batch-list .bo-main b { font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
4068
+ .dlv-batch-list .bo-main span { color: var(--muted, #9a9aaa); font-size: 11px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
4069
+ .dlv-batch-list .bo-empty { justify-content: center; color: var(--muted, #9a9aaa); border-style: dashed; }
4070
+ .xq-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
4071
+ .xq-list li {
4072
+ display: flex; gap: 10px; align-items: center;
4073
+ padding: 8px 10px; border: 1px solid var(--border); border-radius: 8px; background: var(--panel-2);
4074
+ font-size: 12px; min-width: 0;
4075
+ }
4076
+ .xq-list .xq-main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 3px; }
4077
+ .xq-list .xq-main b { font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
4078
+ .xq-list .xq-sub { color: var(--muted, #9a9aaa); font-size: 11px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
4079
+ .xq-list .progress { margin: 2px 0 0; height: 5px; }
4080
+ .xq-list .xq-status { font-size: 11px; color: var(--muted, #9a9aaa); word-break: break-word; }
4081
+ .xq-list li.done .xq-status { color: #8fd6ae; }
4082
+ .xq-list li.failed .xq-status { color: #ff9a9e; }
4083
+ .xq-list .xq-report { font-size: 11px; color: #8fd6ae; word-break: break-word; }
4084
+ .xq-list .xq-report.warn { color: #f0c14a; }
4085
+ .xq-list .xq-actions { display: flex; gap: 6px; flex: none; }
4086
+ .xq-list .xq-empty { justify-content: center; color: var(--muted, #9a9aaa); border-style: dashed; }
4087
+ .dialog.export-dialog p.dlv-tokens { margin-bottom: 8px; }
4088
+ .xq-list .xq-actions a.btn { text-decoration: none; }