fablecut 1.14.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
@@ -3040,6 +3040,92 @@ body.track-size-s .clip.c-comp .comp-open-hint {
3040
3040
  display: none;
3041
3041
  }
3042
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
+
3043
3129
  .dialog.help {
3044
3130
  width: min(1080px, 94vw);
3045
3131
  max-height: 88vh;
@@ -3725,3 +3811,278 @@ input[type="range"].cq-hue {
3725
3811
  border-radius: 3px;
3726
3812
  height: 6px;
3727
3813
  }
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;
3830
+ color: var(--text);
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;
3856
+ font-size: 11px;
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;
3961
+ text-transform: uppercase;
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);
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; }