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.
- package/README.md +1 -1
- package/README.zh.md +1 -1
- package/dist/cli/index.js +288 -3
- package/dist/main.js +83 -12
- package/dist/web/public/app.js +839 -128
- package/dist/web/public/index.html +1 -1
- package/dist/web/public/style.css +434 -0
- package/package.json +1 -1
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
</span>
|
|
28
28
|
<span class="brand-word">Larkway</span>
|
|
29
29
|
<span class="brand-sub">看板</span>
|
|
30
|
-
<
|
|
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); }
|