larkway 0.3.46 → 0.3.47

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.
@@ -27,7 +27,7 @@
27
27
  </span>
28
28
  <span class="brand-word">Larkway</span>
29
29
  <span class="brand-sub">看板</span>
30
- <span class="brand-ver" id="brand-ver" title="Larkway 版本"></span>
30
+ <button class="brand-ver" id="brand-ver" type="button" title="Larkway 版本"></button>
31
31
  <span class="ctx-static" id="ctx-static-badge">
32
32
  <span class="ctx-dot"></span>本机<span class="ctx-host" id="ctx-host"></span>
33
33
  </span>
@@ -39,6 +39,11 @@
39
39
  --radius-sm: 12px;
40
40
  --shadow-sm: 0 1px 2px rgba(15, 23, 42, 0.04);
41
41
  --shadow-lg: 0 12px 40px rgba(15, 23, 42, 0.16);
42
+
43
+ /* ── 健康与引导家族(能力体检设计稿):红=必须处理 / 黄=过旧·待生效 / 绿=通过 ── */
44
+ --ok: #15803d; --ok-bg: #f0fdf4; --ok-edge: #bbf7d0;
45
+ --warn: #b45309; --warn-bg: #fffbeb; --warn-edge: #fde68a;
46
+ --bad: #b91c1c; --bad-bg: #fef2f2; --bad-edge: #fecaca;
42
47
  /* 交互 focus 环走 indigo */
43
48
  --ring: 0 0 0 3px var(--br-ring);
44
49
 
@@ -231,6 +236,7 @@ body {
231
236
  margin-left: 1px;
232
237
  }
233
238
  .brand-ver {
239
+ appearance: none;
234
240
  font-size: 11px;
235
241
  font-weight: 500;
236
242
  font-family: ui-monospace, "Cascadia Code", "Fira Code", monospace;
@@ -242,10 +248,29 @@ body {
242
248
  background: var(--bg);
243
249
  line-height: 1.5;
244
250
  white-space: nowrap;
251
+ cursor: default;
245
252
  }
246
253
  .brand-ver:empty {
247
254
  display: none;
248
255
  }
256
+ .brand-ver:disabled {
257
+ opacity: 1;
258
+ }
259
+ .brand-ver.is-update-available {
260
+ color: #fff;
261
+ background: var(--br);
262
+ border-color: var(--br);
263
+ cursor: pointer;
264
+ box-shadow: 0 6px 16px rgba(79, 70, 229, 0.18);
265
+ }
266
+ .brand-ver.is-update-available:hover:not(:disabled) {
267
+ background: #4338ca;
268
+ border-color: #4338ca;
269
+ }
270
+ .brand-ver.is-update-available:focus-visible {
271
+ outline: none;
272
+ box-shadow: var(--ring);
273
+ }
249
274
 
250
275
  /* 中间绝对居中分段控件(轨道 #f6f7f9 圆角9,active 白底+阴影 圆角7) */
251
276
  .context-switch {
@@ -3808,3 +3833,412 @@ textarea.input {
3808
3833
  font-weight: 500;
3809
3834
  color: var(--faint);
3810
3835
  }
3836
+
3837
+
3838
+ /* ============================================================================
3839
+ 能力体检设计稿落地(2026-07-10)
3840
+ 范围 B:底座卡 v2 .bk2 · 范围 A:能力体检卡 .hc · 范围 C:版本胶囊态 .cap
3841
+ 状态色语义:红=必须处理 / 黄=过旧·待生效 / indigo=会执行(仅对 larkway
3842
+ 自己)/ 灰边框=引导 / 绿=通过(只作确认)。
3843
+ ============================================================================ */
3844
+
3845
+ @keyframes lk-spin { to { transform: rotate(360deg); } }
3846
+
3847
+ /* ── 范围 B · 底座二选一(带就绪微行) ── */
3848
+ .bk2-choice { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 12px; }
3849
+ .bk2-opt {
3850
+ display: flex; align-items: center; gap: 11px;
3851
+ padding: 13px 14px; border-radius: 11px;
3852
+ border: 1px solid var(--border); background: var(--surface);
3853
+ cursor: pointer; font-family: inherit; text-align: left;
3854
+ transition: border-color 0.15s ease;
3855
+ }
3856
+ .bk2-opt:hover { border-color: #cbd5e1; }
3857
+ .bk2-opt.is-active { border: 1.5px solid var(--br); background: var(--br-soft); }
3858
+ .bk2-logo {
3859
+ flex-shrink: 0;
3860
+ width: 32px; height: 32px; border-radius: 9px;
3861
+ display: inline-flex; align-items: center; justify-content: center;
3862
+ background: var(--bg); color: var(--muted);
3863
+ border: 1px solid var(--border);
3864
+ font-family: ui-monospace, "Cascadia Code", monospace; font-size: 11px; font-weight: 800;
3865
+ letter-spacing: 0.02em;
3866
+ }
3867
+ .bk2-opt.is-active .bk2-logo {
3868
+ background: #fff; color: var(--br-text);
3869
+ border-color: var(--br-edge);
3870
+ box-shadow: 0 1px 2px rgba(79, 70, 229, 0.12);
3871
+ }
3872
+ .bk2-opt-meta { flex: 1; min-width: 0; }
3873
+ .bk2-opt-name { display: flex; align-items: center; gap: 6px; font-size: 14px; font-weight: 700; color: var(--text); }
3874
+ .bk2-opt-sub {
3875
+ display: flex; align-items: center; gap: 5px;
3876
+ margin-top: 1px; font-size: 11.5px; color: var(--muted);
3877
+ }
3878
+ .bk2-opt-sub .live-dot { width: 6px; height: 6px; }
3879
+ .bk2-opt-sub code { font-family: ui-monospace, monospace; font-size: 10.5px; background: var(--bg); border: 1px solid var(--border); border-radius: 4px; padding: 0 4px; }
3880
+ .bk2-check { flex-shrink: 0; color: var(--br); width: 16px; }
3881
+ .bk2-check .icon { width: 16px; height: 16px; }
3882
+
3883
+ /* ── 范围 B · Model/Effort 覆盖区(收起一行摘要,点开见控件) ── */
3884
+ .bk2-adv {
3885
+ margin-top: 12px;
3886
+ border: 1px solid var(--border); border-radius: 11px;
3887
+ background: var(--surface);
3888
+ }
3889
+ .bk2-adv-head {
3890
+ width: 100%; box-sizing: border-box;
3891
+ display: flex; align-items: center; gap: 9px;
3892
+ padding: 12px 15px;
3893
+ border: none; background: none; font-family: inherit; text-align: left;
3894
+ cursor: pointer;
3895
+ }
3896
+ .bk2-adv.is-open .bk2-adv-head { padding-bottom: 0; }
3897
+ .bk2-adv-label { font-size: 13px; font-weight: 700; color: var(--text); white-space: nowrap; }
3898
+ .bk2-adv-sum {
3899
+ margin-left: auto;
3900
+ display: inline-flex; align-items: center; gap: 7px;
3901
+ font-size: 12.5px; color: var(--muted);
3902
+ min-width: 0; overflow: hidden;
3903
+ }
3904
+ .bk2-adv.is-open .bk2-adv-sum { display: none; }
3905
+ .bk2-adv-sum code {
3906
+ font-family: ui-monospace, "Cascadia Code", monospace;
3907
+ font-size: 12px; font-weight: 600; color: var(--text);
3908
+ }
3909
+ .bk2-adv-sum i { font-style: normal; color: var(--faint); }
3910
+ .bk2-adv-chev { color: var(--faint); flex-shrink: 0; margin-left: 8px; transition: transform 0.18s ease; }
3911
+ .bk2-adv.is-open .bk2-adv-chev { transform: rotate(180deg); }
3912
+ .bk2-adv-chev .icon { width: 15px; height: 15px; }
3913
+ .bk2-adv-body { display: none; padding: 10px 15px 14px; }
3914
+ .bk2-adv.is-open .bk2-adv-body { display: block; }
3915
+ .bk2-adv-grid {
3916
+ display: grid; grid-template-columns: 1fr auto; gap: 14px;
3917
+ align-items: start;
3918
+ }
3919
+ .bk2-adv-grid .ac-field { margin: 0; }
3920
+ .bk2-adv-body > .ac-hint { margin: 10px 0 0; }
3921
+ .bk2-model-field { position: relative; }
3922
+
3923
+ /* Model 选择器:单一控件 + 菜单含「自定义」逃生口 */
3924
+ .bk2-select {
3925
+ width: 100%; box-sizing: border-box;
3926
+ height: 40px;
3927
+ display: flex; align-items: center; gap: 10px;
3928
+ padding: 0 13px; border-radius: 9px;
3929
+ border: 1px solid var(--border); background: #fff;
3930
+ cursor: pointer; font-family: inherit; text-align: left;
3931
+ }
3932
+ .bk2-select code {
3933
+ font-family: ui-monospace, "Cascadia Code", monospace;
3934
+ font-size: 13.5px; font-weight: 600; color: var(--text);
3935
+ white-space: nowrap;
3936
+ }
3937
+ .bk2-sel-desc { flex: 1; min-width: 0; font-size: 12px; color: var(--faint); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
3938
+ .bk2-select .icon { width: 15px; height: 15px; color: var(--faint); flex-shrink: 0; }
3939
+ .bk2-menu {
3940
+ position: absolute; left: 0; right: 0; top: calc(100% + 6px); z-index: 30;
3941
+ border: 1px solid var(--border); border-radius: 11px;
3942
+ background: #fff; overflow: hidden;
3943
+ box-shadow: 0 8px 24px rgba(15, 23, 42, 0.1);
3944
+ }
3945
+ .bk2-mi {
3946
+ display: flex; align-items: baseline; gap: 10px;
3947
+ padding: 10px 14px;
3948
+ border-top: 1px solid var(--bg);
3949
+ cursor: pointer;
3950
+ }
3951
+ .bk2-mi:first-child { border-top: none; }
3952
+ .bk2-mi:hover { background: var(--bg); }
3953
+ .bk2-mi code { font-family: ui-monospace, monospace; font-size: 12.5px; font-weight: 600; color: var(--text); white-space: nowrap; }
3954
+ .bk2-mi span { flex: 1; font-size: 12px; color: var(--muted); }
3955
+ .bk2-mi .icon { align-self: center; width: 14px; height: 14px; color: var(--br); flex-shrink: 0; }
3956
+ .bk2-mi.is-sel { background: var(--br-soft); }
3957
+ .bk2-mi.is-default code { font-weight: 500; color: var(--muted); }
3958
+ .bk2-mi-custom {
3959
+ display: flex; align-items: center; gap: 8px;
3960
+ padding: 10px 14px;
3961
+ border-top: 1px solid var(--border);
3962
+ background: var(--bg);
3963
+ font-size: 12.5px; font-weight: 700; color: var(--br-text);
3964
+ cursor: pointer;
3965
+ }
3966
+ .bk2-mi-custom .icon { width: 13px; height: 13px; }
3967
+ .bk2-backlink {
3968
+ display: inline-flex; align-items: center; gap: 5px;
3969
+ margin-top: 7px;
3970
+ border: none; background: none; padding: 0;
3971
+ font-size: 12px; font-weight: 600; color: var(--br-text);
3972
+ cursor: pointer; font-family: inherit;
3973
+ }
3974
+ .bk2-backlink .icon { width: 13px; height: 13px; transform: rotate(90deg); }
3975
+
3976
+ /* Effort 分段控件 —— 灰色轨道 + 白色浮起选中片 */
3977
+ .bk2-seg {
3978
+ display: inline-grid; grid-auto-flow: column; grid-auto-columns: 1fr;
3979
+ gap: 3px; padding: 3px;
3980
+ height: 40px; box-sizing: border-box;
3981
+ border-radius: 10px;
3982
+ background: var(--bg);
3983
+ border: 1px solid var(--border);
3984
+ }
3985
+ .bk2-seg button {
3986
+ padding: 0 14px;
3987
+ border: none; background: none; border-radius: 7px;
3988
+ font-size: 12.5px; font-weight: 600; color: var(--faint);
3989
+ cursor: pointer; font-family: inherit;
3990
+ white-space: nowrap;
3991
+ transition: color 0.15s ease;
3992
+ }
3993
+ .bk2-seg button:hover { color: var(--muted); }
3994
+ .bk2-seg button.is-active {
3995
+ background: #fff; color: var(--text); font-weight: 700;
3996
+ box-shadow: 0 1px 2px rgba(15, 23, 42, 0.08), 0 0 0 1px rgba(15, 23, 42, 0.05);
3997
+ }
3998
+
3999
+ /* 「已保存,尚未生效」条 —— 安静单行:左侧细色条语义,不用整块黄底 */
4000
+ .bk2-pending {
4001
+ margin-top: 12px;
4002
+ display: flex; align-items: center; gap: 12px;
4003
+ padding: 12px 16px; border-radius: 11px;
4004
+ background: var(--surface);
4005
+ border: 1px solid var(--border);
4006
+ border-left: 3px solid #d97706;
4007
+ }
4008
+ .bk2-pending-dot {
4009
+ width: 7px; height: 7px; border-radius: 50%; flex-shrink: 0;
4010
+ background: #d97706; animation: lk-pulse 2.2s ease-in-out infinite;
4011
+ }
4012
+ .bk2-pending-text { flex: 1; min-width: 0; display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
4013
+ .bk2-pending-text b { font-size: 13px; font-weight: 700; color: var(--text); white-space: nowrap; }
4014
+ .bk2-pending-text span { font-size: 12px; color: var(--muted); }
4015
+ .bk2-restart {
4016
+ display: inline-flex; align-items: center; gap: 6px;
4017
+ padding: 7px 14px; border-radius: 8px;
4018
+ border: none; background: var(--br); color: #fff;
4019
+ font-size: 12.5px; font-weight: 700;
4020
+ cursor: pointer; font-family: inherit; white-space: nowrap;
4021
+ }
4022
+ .bk2-restart:hover { background: var(--br-text); }
4023
+ .bk2-restart .icon { width: 13px; height: 13px; }
4024
+ /* hero 状态行呼应 badge(BL-17 统一) */
4025
+ .hero-badge.is-pending { border-color: var(--warn-edge); background: var(--warn-bg); color: var(--warn); }
4026
+
4027
+ /* ── 范围 A · 能力体检卡 .hc(配置卡家族成员,与 ac-layer 同壳) ── */
4028
+ .hc {
4029
+ margin-top: 18px;
4030
+ background: var(--surface);
4031
+ border: 1px solid var(--border);
4032
+ border-radius: 14px;
4033
+ box-shadow: var(--shadow-sm);
4034
+ overflow: hidden;
4035
+ }
4036
+ .hc-head { display: flex; align-items: flex-start; gap: 13px; padding: 18px 22px; }
4037
+ .hc-shield {
4038
+ flex-shrink: 0;
4039
+ width: 30px; height: 30px; border-radius: 9px;
4040
+ display: inline-flex; align-items: center; justify-content: center;
4041
+ color: var(--br-text); background: var(--br-soft); border: 1px solid var(--br-edge);
4042
+ }
4043
+ .hc-shield .icon { width: 17px; height: 17px; }
4044
+ .hc-meta { flex: 1; min-width: 0; }
4045
+ .hc-title-row { display: flex; align-items: center; gap: 9px; flex-wrap: wrap; }
4046
+ .hc-title { margin: 0; font-size: 16.5px; font-weight: 800; letter-spacing: -0.01em; color: var(--text); }
4047
+ .hc-headcount {
4048
+ font-size: 11.5px; font-weight: 600; color: var(--muted);
4049
+ padding: 1px 9px; border-radius: 999px;
4050
+ background: var(--bg); border: 1px solid var(--border);
4051
+ }
4052
+ .hc-desc { margin: 4px 0 0; font-size: 13px; color: var(--muted); line-height: 1.5; }
4053
+ .hc-head-right { flex-shrink: 0; display: flex; flex-direction: column; align-items: flex-end; gap: 6px; }
4054
+ /* 重检 = 只读动作 → 引导型边框按钮(indigo 实心只留给真正会执行的写操作) */
4055
+ .hc-refresh {
4056
+ display: inline-flex; align-items: center; gap: 7px;
4057
+ padding: 7px 14px; border-radius: 9px;
4058
+ border: 1px solid var(--br-edge); background: var(--surface);
4059
+ color: var(--br-text);
4060
+ font-size: 13px; font-weight: 700;
4061
+ cursor: pointer; font-family: inherit; white-space: nowrap;
4062
+ }
4063
+ .hc-refresh:hover { background: var(--br-soft); }
4064
+ .hc-refresh.is-loading { opacity: 0.6; cursor: default; }
4065
+ .hc-refresh.is-loading .icon { animation: lk-spin 1s linear infinite; }
4066
+ .hc-refresh .icon { width: 14px; height: 14px; }
4067
+ .hc-stamp {
4068
+ font-size: 11.5px; color: var(--faint);
4069
+ font-family: ui-monospace, "Cascadia Code", monospace;
4070
+ white-space: nowrap;
4071
+ }
4072
+ .hc-stamp .is-stale { color: var(--warn); }
4073
+ .hc-body { border-top: 1px solid var(--border); padding: 6px 22px 16px; }
4074
+ .hc-seg { padding: 12px 0 4px; }
4075
+ .hc-seg + .hc-seg { border-top: 1px solid var(--border); }
4076
+ .hc-seg-head {
4077
+ width: 100%;
4078
+ display: flex; align-items: center; gap: 10px;
4079
+ padding: 4px 0;
4080
+ border: none; background: none; font-family: inherit; text-align: left;
4081
+ }
4082
+ button.hc-seg-head { cursor: pointer; }
4083
+ .hc-count {
4084
+ display: inline-flex; align-items: center; gap: 6px;
4085
+ padding: 3px 11px; border-radius: 999px;
4086
+ font-size: 12.5px; font-weight: 800; white-space: nowrap;
4087
+ }
4088
+ .hc-count-req { color: var(--bad); background: var(--bad-bg); border: 1px solid var(--bad-edge); }
4089
+ .hc-count-rec { color: var(--muted); background: var(--bg); border: 1px solid var(--border); }
4090
+ .hc-count-ok { color: var(--ok); background: var(--ok-bg); border: 1px solid var(--ok-edge); }
4091
+ .hc-seg-sub { font-size: 12px; color: var(--faint); flex: 1; min-width: 0; }
4092
+ .hc-seg-chev { color: var(--faint); flex-shrink: 0; transition: transform 0.18s ease; }
4093
+ .hc-seg-chev .icon { width: 15px; height: 15px; }
4094
+ .hc-seg.is-open .hc-seg-chev { transform: rotate(180deg); }
4095
+ .hc-seg-rows { display: none; }
4096
+ .hc-seg.is-open .hc-seg-rows { display: block; }
4097
+ .hc-row { display: flex; align-items: flex-start; gap: 12px; padding: 13px 0 14px; }
4098
+ .hc-row + .hc-row { border-top: 1px dashed var(--border); }
4099
+ .hc-ico {
4100
+ flex-shrink: 0; margin-top: 1px;
4101
+ width: 22px; height: 22px; border-radius: 50%;
4102
+ display: inline-flex; align-items: center; justify-content: center;
4103
+ }
4104
+ .hc-ico .icon { width: 14px; height: 14px; }
4105
+ .hc-ico.is-miss { color: var(--bad); background: var(--bad-bg); }
4106
+ .hc-ico.is-old { color: var(--warn); background: var(--warn-bg); }
4107
+ .hc-ico.is-rec { color: var(--muted); background: var(--bg); }
4108
+ .hc-ico.is-ok { color: var(--ok); background: var(--ok-bg); }
4109
+ .hc-row-main { flex: 1; min-width: 0; }
4110
+ .hc-row-title { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
4111
+ .hc-name { font-size: 14px; font-weight: 700; color: var(--text); }
4112
+ .hc-ver {
4113
+ font-size: 11px; font-weight: 600;
4114
+ font-family: ui-monospace, monospace;
4115
+ color: var(--warn); background: var(--warn-bg);
4116
+ border: 1px solid var(--warn-edge);
4117
+ border-radius: 999px; padding: 1px 8px;
4118
+ }
4119
+ .hc-tag {
4120
+ font-size: 11px; font-weight: 600; color: var(--faint);
4121
+ padding: 1px 8px; border-radius: 999px;
4122
+ background: var(--bg); border: 1px solid var(--border);
4123
+ }
4124
+ /* 「全局」徽章:表达作用域,不表达严重度 —— 灰底 + 主机图标 */
4125
+ .hc-global {
4126
+ display: inline-flex; align-items: center; gap: 4px;
4127
+ font-size: 11px; font-weight: 700;
4128
+ color: #475569;
4129
+ padding: 1px 8px 1px 6px; border-radius: 999px;
4130
+ background: #f1f5f9; border: 1px solid #cbd5e1;
4131
+ cursor: help;
4132
+ }
4133
+ .hc-global .icon { width: 11px; height: 11px; }
4134
+ .hc-impact { margin: 4px 0 0; font-size: 12.5px; color: var(--muted); line-height: 1.55; }
4135
+ .hc-impact b { color: var(--text); font-weight: 600; }
4136
+ .hc-scopes { margin-top: 9px; display: flex; flex-direction: column; gap: 6px; }
4137
+ .hc-scope {
4138
+ display: flex; align-items: baseline; gap: 10px;
4139
+ padding: 6px 11px; border-radius: 8px;
4140
+ background: var(--bg); border: 1px solid var(--border);
4141
+ }
4142
+ .hc-scope code {
4143
+ font-family: ui-monospace, "Cascadia Code", monospace;
4144
+ font-size: 11.5px; font-weight: 600; color: var(--text);
4145
+ white-space: nowrap;
4146
+ }
4147
+ .hc-scope span { font-size: 12px; color: var(--muted); }
4148
+ .hc-actline { margin-top: 9px; display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
4149
+ .hc-act {
4150
+ display: inline-flex; align-items: center; gap: 6px;
4151
+ padding: 6px 13px; border-radius: 8px;
4152
+ border: 1px solid var(--border); background: var(--surface);
4153
+ color: var(--br-text);
4154
+ font-size: 12.5px; font-weight: 700;
4155
+ cursor: pointer; font-family: inherit; white-space: nowrap;
4156
+ }
4157
+ .hc-act:hover { border-color: var(--br-edge); background: var(--br-soft); }
4158
+ .hc-act .icon { width: 13px; height: 13px; }
4159
+ .hc-cmd {
4160
+ font-family: ui-monospace, "Cascadia Code", monospace;
4161
+ font-size: 11.5px; color: var(--faint);
4162
+ white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
4163
+ }
4164
+ .hc-pubnote {
4165
+ margin-top: 9px;
4166
+ display: flex; align-items: flex-start; gap: 8px;
4167
+ padding: 8px 12px; border-radius: 8px;
4168
+ background: var(--warn-bg); border: 1px solid var(--warn-edge);
4169
+ font-size: 12px; color: var(--warn); line-height: 1.55;
4170
+ }
4171
+ .hc-pubnote .icon { width: 13px; height: 13px; flex-shrink: 0; margin-top: 1px; }
4172
+ .hc-pubnote b { font-weight: 700; }
4173
+ .hc-unk {
4174
+ margin: 12px 0 0;
4175
+ display: flex; align-items: flex-start; gap: 9px;
4176
+ padding: 10px 13px; border-radius: 10px;
4177
+ background: var(--bg); border: 1px dashed #cbd5e1;
4178
+ font-size: 12.5px; color: var(--muted); line-height: 1.55;
4179
+ }
4180
+ .hc-unk .icon { width: 15px; height: 15px; flex-shrink: 0; margin-top: 1px; color: var(--faint); }
4181
+ .hc-unk b { color: var(--text); font-weight: 600; }
4182
+ .hc-passed {
4183
+ width: 100%;
4184
+ margin-top: 12px;
4185
+ display: flex; align-items: center; gap: 9px;
4186
+ padding: 9px 13px;
4187
+ background: var(--ok-bg); border: 1px solid var(--ok-edge);
4188
+ border-radius: 10px;
4189
+ font-family: inherit; text-align: left; cursor: pointer;
4190
+ }
4191
+ .hc-passed .icon { color: var(--ok); flex-shrink: 0; width: 14px; height: 14px; }
4192
+ .hc-passed-label { font-size: 12.5px; font-weight: 700; color: var(--ok); white-space: nowrap; }
4193
+ .hc-passed-sum { flex: 1; min-width: 0; font-size: 12px; color: var(--muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
4194
+ .hc-passed .hc-seg-chev { color: var(--ok); }
4195
+ .hc-passed.is-open .hc-seg-chev { transform: rotate(180deg); }
4196
+ .hc-passed-list { display: none; padding: 2px 4px; }
4197
+ .hc-passed-list.is-open { display: block; }
4198
+ .hc-passed-list .hc-row { padding: 10px 0; }
4199
+ .hc-passed-list .hc-name { font-weight: 600; font-size: 13.5px; }
4200
+ .hc-okline { display: flex; align-items: center; gap: 11px; padding: 16px 22px; }
4201
+ .hc-okline .hc-ico { width: 26px; height: 26px; }
4202
+ .hc-ok-main { flex: 1; min-width: 0; display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
4203
+ .hc-ok-title { font-size: 14.5px; font-weight: 800; color: var(--ok); white-space: nowrap; }
4204
+ .hc-ok-sub { font-size: 12.5px; color: var(--muted); }
4205
+ .hc-refresh-ghost {
4206
+ display: inline-flex; align-items: center; gap: 6px;
4207
+ padding: 6px 11px; border-radius: 8px;
4208
+ border: 1px solid transparent; background: transparent;
4209
+ color: var(--faint); font-size: 12px; font-weight: 600;
4210
+ cursor: pointer; font-family: inherit; white-space: nowrap;
4211
+ }
4212
+ .hc-refresh-ghost:hover { border-color: var(--border); color: var(--muted); }
4213
+ .hc-refresh-ghost .icon { width: 13px; height: 13px; }
4214
+ .hc-refresh-ghost.is-loading .icon { animation: lk-spin 1s linear infinite; }
4215
+
4216
+ /* ── 范围 C · 版本胶囊态 .brand-ver 扩展(BL-46 五态) ── */
4217
+ .brand-ver.is-busy {
4218
+ color: var(--br-text); background: var(--br-soft); border-color: var(--br-edge);
4219
+ cursor: default; opacity: 1;
4220
+ }
4221
+ .brand-ver.is-busy .cap-spin { display: inline-flex; animation: lk-spin 1s linear infinite; }
4222
+ .brand-ver.is-busy .cap-spin .icon { width: 11px; height: 11px; }
4223
+ .brand-ver.is-fail {
4224
+ color: var(--bad); background: var(--bad-bg); border-color: var(--bad-edge);
4225
+ cursor: pointer; opacity: 1;
4226
+ }
4227
+ .brand-ver.is-installed {
4228
+ color: var(--warn); background: var(--warn-bg); border-color: var(--warn-edge);
4229
+ cursor: help; opacity: 1;
4230
+ }
4231
+ /* 更新失败展开条(topbar 下方一行) */
4232
+ .cap-fail-bar {
4233
+ display: flex; align-items: center; gap: 10px;
4234
+ margin: 8px 14px 0;
4235
+ padding: 9px 13px; border-radius: 10px;
4236
+ background: var(--bad-bg); border: 1px solid var(--bad-edge);
4237
+ font-size: 12.5px; color: var(--bad);
4238
+ }
4239
+ .cap-fail-bar code {
4240
+ flex: 1; min-width: 0;
4241
+ font-family: ui-monospace, monospace; font-size: 11.5px;
4242
+ overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
4243
+ }
4244
+ .cap-fail-bar .hc-act { color: var(--bad); border-color: var(--bad-edge); background: var(--surface); }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "larkway",
3
- "version": "0.3.46",
3
+ "version": "0.3.47",
4
4
  "description": "Thin bridge: Feishu thread to local Claude Code CLI",
5
5
  "license": "MIT",
6
6
  "author": "Chuck Wu (chuckwu0)",