@q1travel/design-system 0.3.2 → 0.5.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/.agents/skills/product-design/SKILL.md +25 -48
- package/.agents/skills/product-design/references/coverage-gaps.md +1 -0
- package/.agents/skills/product-design/references/review-component.md +32 -0
- package/.agents/skills/product-design/references/surfaces-overlays.md +4 -9
- package/.agents/skills/product-design/references/surfaces.md +10 -11
- package/README.md +2 -2
- package/contracts/button-api-compatibility.md +63 -0
- package/contracts/interface-guidelines.md +18 -0
- package/dist-pkg/design-system.d.ts +171 -40
- package/dist-pkg/design-system.js +1746 -1501
- package/dist-pkg/style.css +240 -117
- package/dist-pkg/tokens.css +4 -0
- package/package.json +5 -3
- package/.agents/skills/product-design/references/review-geist.md +0 -94
package/dist-pkg/style.css
CHANGED
|
@@ -111,9 +111,9 @@
|
|
|
111
111
|
--q1-color-brand-preview-dark-fg: #ededed;
|
|
112
112
|
--q1-color-mask-visible: #ffffff;
|
|
113
113
|
--q1-color-mask-opaque: #000000;
|
|
114
|
-
/*
|
|
114
|
+
/* 阴影基色恒黑(对标外部参考):不随主题翻转,暗色下阴影不再泛白晕。 */
|
|
115
115
|
--q1-color-shadow: #000000;
|
|
116
|
-
/*
|
|
116
|
+
/* 浮层边框(对标外部参考):亮色=普通边框;暗色=白 14% 发丝 ring——黑影在黑底不可见,浮层清晰度由它承担。 */
|
|
117
117
|
--q1-color-border-overlay: var(--q1-color-gray-400);
|
|
118
118
|
--q1-color-bg-canvas: var(--q1-color-background-100);
|
|
119
119
|
--q1-color-bg-subtle: var(--q1-color-background-200);
|
|
@@ -202,10 +202,14 @@
|
|
|
202
202
|
--q1-radius-3: 8px;
|
|
203
203
|
--q1-radius-4: 12px;
|
|
204
204
|
--q1-shadow-focus: 0 0 0 3px color-mix(in srgb, var(--q1-color-primary-700) 22%, transparent);
|
|
205
|
+
/* 浮层阴影两档:popover=菜单/悬浮卡/小浮层,modal=模态级大浮层。方向性面板(drawer/sheet)例外,
|
|
206
|
+
在组件内自持。恒黑 shadow token 混色,暗色靠 --q1-color-border-overlay 发丝边保证清晰度。 */
|
|
207
|
+
--q1-shadow-popover: 0 8px 28px color-mix(in srgb, var(--q1-color-shadow) 16%, transparent);
|
|
208
|
+
--q1-shadow-modal: 0 16px 48px color-mix(in srgb, var(--q1-color-shadow) 32%, transparent);
|
|
205
209
|
}
|
|
206
210
|
|
|
207
211
|
:root[data-theme='dark'] {
|
|
208
|
-
/*
|
|
212
|
+
/* 画布抬灰(对标外部参考暗色 #0a0a0a):表面自带浮起感,纯黑仅留给 background-200 底壳。 */
|
|
209
213
|
--q1-color-background-100: #0a0a0a;
|
|
210
214
|
--q1-color-background-200: #000000;
|
|
211
215
|
--q1-color-gray-100: #1a1a1a;
|
|
@@ -312,7 +316,7 @@
|
|
|
312
316
|
--q1-color-bg-subtle: var(--q1-color-gray-100);
|
|
313
317
|
--q1-color-bg-panel: var(--q1-color-background-100);
|
|
314
318
|
--q1-color-border: var(--q1-color-gray-200);
|
|
315
|
-
/*
|
|
319
|
+
/* 降档(对标外部参考暗色最亮边框 rgb46):控件描边不再泛白。 */
|
|
316
320
|
--q1-color-border-strong: var(--q1-color-gray-400);
|
|
317
321
|
--q1-color-border-overlay: color-mix(in srgb, #ffffff 14%, transparent);
|
|
318
322
|
--q1-color-text-primary: var(--q1-color-gray-1000);
|
|
@@ -367,7 +371,7 @@
|
|
|
367
371
|
text-decoration: none;
|
|
368
372
|
}
|
|
369
373
|
|
|
370
|
-
.button:hover {
|
|
374
|
+
.button:not(:disabled):not([aria-disabled='true']):hover {
|
|
371
375
|
border-color: var(--q1-color-text-secondary);
|
|
372
376
|
background: var(--q1-color-bg-subtle);
|
|
373
377
|
}
|
|
@@ -383,12 +387,12 @@
|
|
|
383
387
|
color: var(--q1-color-action-on-primary);
|
|
384
388
|
}
|
|
385
389
|
|
|
386
|
-
.button--primary:hover {
|
|
390
|
+
.button--primary:not(:disabled):not([aria-disabled='true']):hover {
|
|
387
391
|
border-color: transparent;
|
|
388
392
|
background: var(--q1-color-action-primary-hover);
|
|
389
393
|
}
|
|
390
394
|
|
|
391
|
-
.button--primary:active {
|
|
395
|
+
.button--primary:not(:disabled):not([aria-disabled='true']):active {
|
|
392
396
|
background: var(--q1-color-action-primary-press);
|
|
393
397
|
}
|
|
394
398
|
|
|
@@ -420,6 +424,12 @@
|
|
|
420
424
|
animation: button-spin 0.7s linear infinite;
|
|
421
425
|
}
|
|
422
426
|
|
|
427
|
+
.button__affix {
|
|
428
|
+
display: inline-flex;
|
|
429
|
+
flex: none;
|
|
430
|
+
align-items: center;
|
|
431
|
+
}
|
|
432
|
+
|
|
423
433
|
.button--sm {
|
|
424
434
|
min-height: 32px;
|
|
425
435
|
padding: 0 var(--q1-space-3);
|
|
@@ -453,7 +463,7 @@
|
|
|
453
463
|
border-radius: 50%;
|
|
454
464
|
}
|
|
455
465
|
|
|
456
|
-
/* Rounded
|
|
466
|
+
/* Rounded(对标外部参考 Rounded,营销页/落地页强调用):药丸形 + 柔和抬起阴影(恒黑 shadow token,暗色不泛白)。 */
|
|
457
467
|
.button--rounded {
|
|
458
468
|
border-radius: 9999px;
|
|
459
469
|
box-shadow:
|
|
@@ -481,7 +491,7 @@
|
|
|
481
491
|
line-height: 1;
|
|
482
492
|
}
|
|
483
493
|
|
|
484
|
-
/* —— 统一着色配方 tone-surface
|
|
494
|
+
/* —— 统一着色配方 tone-surface(对标外部参考:oklch 按 hue 参数化,浅底/边框/深文,暗色反相)——
|
|
485
495
|
Banner/Note/ProjectBanner/状态块共享同一套,消除各自 color-mix 配方漂移;主题自适应,消费方无需 dark 块。 */
|
|
486
496
|
:root {
|
|
487
497
|
--q1-tone-bg-info: oklch(from var(--q1-color-status-info) 0.96 0.03 h);
|
|
@@ -542,10 +552,10 @@
|
|
|
542
552
|
color: var(--q1-color-status-danger);
|
|
543
553
|
}
|
|
544
554
|
|
|
545
|
-
/*
|
|
555
|
+
/* 带前后缀的输入外框(对标外部参考实测结构):flex 让前后缀占真实布局空间,任意宽度的
|
|
546
556
|
字符串/图标几何上都不可能压到输入文字;边框/圆角/焦点环/校验/禁用整体上移到外框,
|
|
547
557
|
内部 input 去皮拉伸填满。绝对定位 + 固定内边距的旧几何只装得下 16px 图标,已废弃。
|
|
548
|
-
overflow 裁掉病态窄容器下前后缀(flex:none
|
|
558
|
+
overflow 裁掉病态窄容器下前后缀(flex:none 不收缩)顶出圆角的溢出,外部参考外框同款;
|
|
549
559
|
焦点环/错误晕是 box-shadow,不受 overflow 裁剪。 */
|
|
550
560
|
.input-control {
|
|
551
561
|
display: flex;
|
|
@@ -618,7 +628,7 @@
|
|
|
618
628
|
background: transparent;
|
|
619
629
|
}
|
|
620
630
|
|
|
621
|
-
/* 前后缀默认带灰块底色 + 朝向 input 一侧的 1px
|
|
631
|
+
/* 前后缀默认带灰块底色 + 朝向 input 一侧的 1px 分隔线(外部参考默认极性,实测块 0/12px 内边距、
|
|
622
632
|
拉满外框高度);禁用态下外框同为 bg-subtle,块与外框同色成扁平、仅剩分隔线,属本品牌层取舍。 */
|
|
623
633
|
.input-control__prefix {
|
|
624
634
|
flex: none;
|
|
@@ -665,7 +675,7 @@
|
|
|
665
675
|
padding-right: 8px;
|
|
666
676
|
}
|
|
667
677
|
|
|
668
|
-
/*
|
|
678
|
+
/* 药丸形(对标外部参考 rounded,实测 9999px 级 pill 半径);双类压过 :has 尺寸档的圆角设定。 */
|
|
669
679
|
.input-control.input-control--rounded {
|
|
670
680
|
border-radius: 9999px;
|
|
671
681
|
}
|
|
@@ -696,7 +706,7 @@
|
|
|
696
706
|
padding-right: 36px;
|
|
697
707
|
}
|
|
698
708
|
|
|
699
|
-
/*
|
|
709
|
+
/* 字段尺寸档(对标外部参考:xs24/sm32/md40/lg48;md=基础 40 不设类)。 */
|
|
700
710
|
.form-control--xs {
|
|
701
711
|
min-height: 24px;
|
|
702
712
|
border-radius: var(--q1-radius-1);
|
|
@@ -720,7 +730,7 @@
|
|
|
720
730
|
}
|
|
721
731
|
|
|
722
732
|
/* Textarea 是多行控件,通用尺寸档的单行 min-height/padding 不适用,这里单独覆盖
|
|
723
|
-
|
|
733
|
+
(外部参考官方 xSmall/small/mediumSmall/large 未给出具体像素值,数值按本库既有体系自定)。 */
|
|
724
734
|
.form-control--textarea.form-control--xs {
|
|
725
735
|
min-height: 64px;
|
|
726
736
|
padding: 6px 8px;
|
|
@@ -736,6 +746,74 @@
|
|
|
736
746
|
padding: 12px 14px;
|
|
737
747
|
}
|
|
738
748
|
|
|
749
|
+
/* Textarea 字符计数外框(#22 决策 5,仿 input-control affix 先例):maxLength 存在时才渲染,
|
|
750
|
+
外框承载边框/焦点环/校验/禁用皮肤,内部 textarea 去皮,计数器占真实布局空间、右下角对齐。 */
|
|
751
|
+
.textarea-control {
|
|
752
|
+
display: flex;
|
|
753
|
+
flex-direction: column;
|
|
754
|
+
overflow: hidden;
|
|
755
|
+
border: 1px solid var(--q1-color-border-strong);
|
|
756
|
+
border-radius: var(--q1-radius-2);
|
|
757
|
+
background: var(--q1-color-bg-panel);
|
|
758
|
+
}
|
|
759
|
+
|
|
760
|
+
.textarea-control:hover:not(:has(.form-control:disabled)) {
|
|
761
|
+
border-color: var(--q1-color-text-secondary);
|
|
762
|
+
}
|
|
763
|
+
|
|
764
|
+
.textarea-control:focus-within {
|
|
765
|
+
border-color: var(--q1-color-action-primary);
|
|
766
|
+
box-shadow: var(--q1-shadow-focus);
|
|
767
|
+
}
|
|
768
|
+
|
|
769
|
+
.form-field--error .textarea-control,
|
|
770
|
+
.textarea-control:has(.form-control[aria-invalid='true']) {
|
|
771
|
+
border-color: var(--q1-color-status-danger);
|
|
772
|
+
box-shadow: 0 0 0 4px color-mix(in srgb, var(--q1-color-status-danger) 16%, transparent);
|
|
773
|
+
}
|
|
774
|
+
|
|
775
|
+
.textarea-control:has(.form-control:disabled) {
|
|
776
|
+
background: var(--q1-color-bg-subtle);
|
|
777
|
+
}
|
|
778
|
+
|
|
779
|
+
/* 尺寸档圆角随内部控件对齐(同 input-control 的 :has 尺寸档规则)。 */
|
|
780
|
+
.textarea-control:has(.form-control--xs) {
|
|
781
|
+
border-radius: var(--q1-radius-1);
|
|
782
|
+
}
|
|
783
|
+
|
|
784
|
+
.textarea-control:has(.form-control--lg) {
|
|
785
|
+
border-radius: var(--q1-radius-3);
|
|
786
|
+
}
|
|
787
|
+
|
|
788
|
+
.textarea-control .form-control {
|
|
789
|
+
border: none;
|
|
790
|
+
border-radius: inherit;
|
|
791
|
+
background: transparent;
|
|
792
|
+
}
|
|
793
|
+
|
|
794
|
+
.textarea-control .form-control:focus,
|
|
795
|
+
.textarea-control .form-control:focus-visible,
|
|
796
|
+
.form-field--error .textarea-control .form-control,
|
|
797
|
+
.textarea-control .form-control[aria-invalid='true'] {
|
|
798
|
+
box-shadow: none;
|
|
799
|
+
}
|
|
800
|
+
|
|
801
|
+
.textarea-control .form-control:disabled {
|
|
802
|
+
background: transparent;
|
|
803
|
+
}
|
|
804
|
+
|
|
805
|
+
.textarea-control__count {
|
|
806
|
+
align-self: flex-end;
|
|
807
|
+
padding: 0 12px 8px;
|
|
808
|
+
color: var(--q1-color-text-secondary);
|
|
809
|
+
font-size: 12px;
|
|
810
|
+
line-height: 16px;
|
|
811
|
+
}
|
|
812
|
+
|
|
813
|
+
.textarea-control:has(.form-control:disabled) .textarea-control__count {
|
|
814
|
+
color: var(--q1-color-text-muted);
|
|
815
|
+
}
|
|
816
|
+
|
|
739
817
|
.form-control::placeholder {
|
|
740
818
|
color: var(--q1-color-text-muted);
|
|
741
819
|
}
|
|
@@ -750,14 +828,14 @@
|
|
|
750
828
|
box-shadow: var(--q1-shadow-focus);
|
|
751
829
|
}
|
|
752
830
|
|
|
753
|
-
/*
|
|
831
|
+
/* 错误态(对标外部参考):纯红 1px 环 + 红 16% 的 4px 外晕,字段家族共享。 */
|
|
754
832
|
.form-field--error .form-control,
|
|
755
833
|
.form-control[aria-invalid='true'] {
|
|
756
834
|
border-color: var(--q1-color-status-danger);
|
|
757
835
|
box-shadow: 0 0 0 4px color-mix(in srgb, var(--q1-color-status-danger) 16%, transparent);
|
|
758
836
|
}
|
|
759
837
|
|
|
760
|
-
/*
|
|
838
|
+
/* 禁用态(对标外部参考):底色抬灰而非降透明度;opacity:1 归零 Chrome UA 对禁用控件的默认 0.7。 */
|
|
761
839
|
.form-control:disabled {
|
|
762
840
|
background: var(--q1-color-bg-subtle);
|
|
763
841
|
color: var(--q1-color-text-muted);
|
|
@@ -769,7 +847,7 @@
|
|
|
769
847
|
.control-option {
|
|
770
848
|
position: relative;
|
|
771
849
|
display: grid;
|
|
772
|
-
/* 盒 16px 统一(Checkbox 复核拍板:与 Radio 家族一致 +
|
|
850
|
+
/* 盒 16px 统一(Checkbox 复核拍板:与 Radio 家族一致 + 对齐外部参考实测 16×16)。 */
|
|
773
851
|
grid-template-columns: 16px minmax(0, 1fr);
|
|
774
852
|
align-items: start;
|
|
775
853
|
gap: var(--q1-space-3);
|
|
@@ -784,6 +862,16 @@
|
|
|
784
862
|
opacity: 0;
|
|
785
863
|
}
|
|
786
864
|
|
|
865
|
+
/* 裸形态(#22 §1.3 / #45):去文本 body 列、仅剩 16px 视觉盒;外层是 span 非 label
|
|
866
|
+
(业务 <label> 包裹时 label 套 label 非法),保留 .control-option 类复用全部状态选择器
|
|
867
|
+
(checked/indeterminate/disabled/focus-visible 均以其为父作用域)。inline-grid 便于
|
|
868
|
+
表格选择列/工具栏内联对齐。 */
|
|
869
|
+
.control-option--bare {
|
|
870
|
+
display: inline-grid;
|
|
871
|
+
grid-template-columns: 16px;
|
|
872
|
+
vertical-align: middle;
|
|
873
|
+
}
|
|
874
|
+
|
|
787
875
|
.control-option__visual {
|
|
788
876
|
position: relative;
|
|
789
877
|
display: block;
|
|
@@ -793,7 +881,7 @@
|
|
|
793
881
|
border-radius: var(--q1-radius-1);
|
|
794
882
|
background: var(--q1-color-bg-panel);
|
|
795
883
|
transform: translateY(1px);
|
|
796
|
-
/*
|
|
884
|
+
/* 状态切换过渡(外部参考实测 0.2s cubic-bezier(0.4,0,0.2,1));颜色过渡非运动类,不需 reduced-motion 门控。 */
|
|
797
885
|
transition:
|
|
798
886
|
border-color 0.2s cubic-bezier(0.4, 0, 0.2, 1),
|
|
799
887
|
background 0.2s cubic-bezier(0.4, 0, 0.2, 1);
|
|
@@ -801,7 +889,7 @@
|
|
|
801
889
|
|
|
802
890
|
.control-option__visual--radio {
|
|
803
891
|
border-radius: 999px;
|
|
804
|
-
/* Radio
|
|
892
|
+
/* Radio 对标外部参考:16px 控件、未选中环用更亮的 muted 灰(外部参考 143 档);环色 0.2s 过渡(实测配方)。 */
|
|
805
893
|
width: 16px;
|
|
806
894
|
height: 16px;
|
|
807
895
|
border-color: var(--q1-color-text-muted);
|
|
@@ -810,7 +898,7 @@
|
|
|
810
898
|
background 0.2s cubic-bezier(0.4, 0, 1, 1);
|
|
811
899
|
}
|
|
812
900
|
|
|
813
|
-
/* 圆点常驻、scale 0→1
|
|
901
|
+
/* 圆点常驻、scale 0→1 切换(对标外部参考实测:0.15s 同 bezier),点击/切换时有生长动效。 */
|
|
814
902
|
.control-option__visual--radio::after {
|
|
815
903
|
content: '';
|
|
816
904
|
position: absolute;
|
|
@@ -829,7 +917,7 @@
|
|
|
829
917
|
}
|
|
830
918
|
}
|
|
831
919
|
|
|
832
|
-
/* Checkbox 选中改前景单色(拍板与 Radio
|
|
920
|
+
/* Checkbox 选中改前景单色(拍板与 Radio 家族统一,对齐外部参考实测):text-primary 填充 + 面板色反色勾,
|
|
833
921
|
两主题自适应;「选中」是状态非动作,不占用 indigo 动作色。 */
|
|
834
922
|
.control-option input:checked + .control-option__visual {
|
|
835
923
|
border-color: var(--q1-color-text-primary);
|
|
@@ -850,7 +938,7 @@
|
|
|
850
938
|
transform: rotate(45deg);
|
|
851
939
|
}
|
|
852
940
|
|
|
853
|
-
/* 半选(indeterminate
|
|
941
|
+
/* 半选(indeterminate):视觉态非第三值,由父级逻辑驱动;填充同选中,标记为居中横杠(外部参考同形)。 */
|
|
854
942
|
.control-option input[type='checkbox']:indeterminate + .control-option__visual {
|
|
855
943
|
border-color: var(--q1-color-text-primary);
|
|
856
944
|
background: var(--q1-color-text-primary);
|
|
@@ -867,7 +955,7 @@
|
|
|
867
955
|
content: '';
|
|
868
956
|
}
|
|
869
957
|
|
|
870
|
-
/* Radio 选中改前景 outline
|
|
958
|
+
/* Radio 选中改前景 outline 风(对标外部参考:text-primary 环 + 8px 点、无填充——它未用品牌色,
|
|
871
959
|
两主题自适应;Checkbox 待其复核实测后再统一)。 */
|
|
872
960
|
.control-option input[type='radio']:checked + .control-option__visual {
|
|
873
961
|
border-color: var(--q1-color-text-primary);
|
|
@@ -878,7 +966,7 @@
|
|
|
878
966
|
transform: scale(1);
|
|
879
967
|
}
|
|
880
968
|
|
|
881
|
-
/* Radio
|
|
969
|
+
/* Radio 禁用改色彩降级(对标外部参考:全灰、不降透明度)。 */
|
|
882
970
|
.control-option input[type='radio']:disabled + .control-option__visual {
|
|
883
971
|
opacity: 1;
|
|
884
972
|
border-color: var(--q1-color-gray-500);
|
|
@@ -905,7 +993,7 @@
|
|
|
905
993
|
box-shadow: var(--q1-shadow-focus);
|
|
906
994
|
}
|
|
907
995
|
|
|
908
|
-
/* Checkbox 禁用改色彩降级(与 Radio
|
|
996
|
+
/* Checkbox 禁用改色彩降级(与 Radio 定稿结论一致、对齐外部参考实测:全灰锚定、不降透明度——
|
|
909
997
|
之前的 opacity 0.56 衰减是 Breadcrumbs/Radio 复核时已定性的违规模式,这里补齐家族最后一块。 */
|
|
910
998
|
.control-option input:disabled + .control-option__visual,
|
|
911
999
|
.control-option input:disabled ~ .control-option__body {
|
|
@@ -939,7 +1027,7 @@
|
|
|
939
1027
|
}
|
|
940
1028
|
|
|
941
1029
|
.control-option__label {
|
|
942
|
-
/*
|
|
1030
|
+
/* 排版跟外部参考实测(13/400);标题与描述的层级由颜色区分。 */
|
|
943
1031
|
font-size: var(--q1-font-size-label-13);
|
|
944
1032
|
font-weight: var(--q1-font-weight-regular);
|
|
945
1033
|
line-height: var(--q1-line-height-label-13);
|
|
@@ -997,7 +1085,7 @@
|
|
|
997
1085
|
.menu__trigger:hover {
|
|
998
1086
|
background: color-mix(in srgb, var(--q1-color-text-primary) 4%, transparent);
|
|
999
1087
|
}
|
|
1000
|
-
/* 图标-only
|
|
1088
|
+
/* 图标-only 触发器(对标外部参考 Custom trigger:可访问名称经 aria-label 暴露)。 */
|
|
1001
1089
|
.menu__trigger--icon {
|
|
1002
1090
|
width: 32px;
|
|
1003
1091
|
height: 32px;
|
|
@@ -1008,7 +1096,7 @@
|
|
|
1008
1096
|
outline: none;
|
|
1009
1097
|
box-shadow: var(--q1-shadow-focus);
|
|
1010
1098
|
}
|
|
1011
|
-
/*
|
|
1099
|
+
/* 实测外部参考:容器 padding 8px(space-2)/radius 12px(radius-4);item 固定 40px 高(靠固定高+
|
|
1012
1100
|
flex 居中,不是 padding 自然撑开),radius-2(6px) 已一致;禁用项只换色不降 opacity(对标
|
|
1013
1101
|
Radio/Note/Modal 已建立的「禁用色彩降级、opacity 恒 1」家族规则)。 */
|
|
1014
1102
|
.menu__popup {
|
|
@@ -1020,7 +1108,7 @@
|
|
|
1020
1108
|
border: 1px solid var(--q1-color-border-overlay);
|
|
1021
1109
|
border-radius: var(--q1-radius-4);
|
|
1022
1110
|
background: var(--q1-color-bg-panel);
|
|
1023
|
-
box-shadow:
|
|
1111
|
+
box-shadow: var(--q1-shadow-popover);
|
|
1024
1112
|
}
|
|
1025
1113
|
.menu__popup--start {
|
|
1026
1114
|
left: 0;
|
|
@@ -1124,7 +1212,7 @@
|
|
|
1124
1212
|
}
|
|
1125
1213
|
}
|
|
1126
1214
|
|
|
1127
|
-
/* 头像:直径由 --q1-avatar-size
|
|
1215
|
+
/* 头像:直径由 --q1-avatar-size 驱动(自由数值,对齐外部参考 size={n} 模型),字号=直径一半。
|
|
1128
1216
|
不设 overflow:hidden——右下角标要越出圆周;需要裁剪的形态各自处理。 */
|
|
1129
1217
|
.avatar {
|
|
1130
1218
|
position: relative;
|
|
@@ -1155,7 +1243,7 @@
|
|
|
1155
1243
|
}
|
|
1156
1244
|
|
|
1157
1245
|
/* 字母/图标回退:实心中性灰盘 + 恒白字。gray-900(亮 4d4d4d/暗 a0a0a0)正好落在
|
|
1158
|
-
|
|
1246
|
+
外部参考实测值(亮 444/暗 999)上;白字用 oklch 字面量(身份盘前景恒白,同外部参考)。
|
|
1159
1247
|
overflow 裁剪兜超长 letter 输入(合法输入 ≤2 字符不受影响)。 */
|
|
1160
1248
|
.avatar--letter,
|
|
1161
1249
|
.avatar--glyph {
|
|
@@ -1165,7 +1253,7 @@
|
|
|
1165
1253
|
overflow: hidden;
|
|
1166
1254
|
}
|
|
1167
1255
|
|
|
1168
|
-
/*
|
|
1256
|
+
/* 占位骨架:微光渐变(外部参考同款三段式,无边框),尊重 prefers-reduced-motion。 */
|
|
1169
1257
|
.avatar--placeholder {
|
|
1170
1258
|
overflow: hidden;
|
|
1171
1259
|
background: var(--q1-color-bg-subtle);
|
|
@@ -1200,7 +1288,7 @@
|
|
|
1200
1288
|
}
|
|
1201
1289
|
}
|
|
1202
1290
|
|
|
1203
|
-
/*
|
|
1291
|
+
/* 右下角标(对标外部参考 With custom icon):直径=头像一半,外环用面板色与主体分离。 */
|
|
1204
1292
|
.avatar__badge {
|
|
1205
1293
|
position: absolute;
|
|
1206
1294
|
right: calc(var(--q1-avatar-size, 32px) * -0.06);
|
|
@@ -1241,7 +1329,7 @@
|
|
|
1241
1329
|
box-shadow: 0 0 0 1px var(--q1-color-bg-panel);
|
|
1242
1330
|
}
|
|
1243
1331
|
|
|
1244
|
-
/* +N
|
|
1332
|
+
/* +N 收纳芯片:恒定深色、不随主题翻转(外部参考双主题实测同值;同族先例:遮罩恒黑)。 */
|
|
1245
1333
|
.avatar--overflow {
|
|
1246
1334
|
background: oklch(0.2 0 0);
|
|
1247
1335
|
color: oklch(0.94 0 0);
|
|
@@ -1250,7 +1338,7 @@
|
|
|
1250
1338
|
font-weight: var(--q1-font-weight-semibold);
|
|
1251
1339
|
}
|
|
1252
1340
|
|
|
1253
|
-
/*
|
|
1341
|
+
/* 实测外部参考:胶囊三档 h20/24/32、字号 11/12/14、字重 500、tabular-nums;图标随档 12/14/16,lg gap 6px。 */
|
|
1254
1342
|
.badge {
|
|
1255
1343
|
display: inline-flex;
|
|
1256
1344
|
align-items: center;
|
|
@@ -1374,13 +1462,24 @@
|
|
|
1374
1462
|
color: oklch(from var(--q1-color-status-danger) 0.74 0.16 h);
|
|
1375
1463
|
}
|
|
1376
1464
|
|
|
1377
|
-
/*
|
|
1465
|
+
/* quiet 档:低强调元数据形态(SKU/条码/待绑定包裹等),视觉≈neutral-subtle——淡染底、无描边,但不带 tone 语义色。 */
|
|
1466
|
+
.badge--quiet {
|
|
1467
|
+
background: oklch(from var(--q1-color-gray-700) 0.95 0 0);
|
|
1468
|
+
color: oklch(from var(--q1-color-gray-700) 0.42 0 0);
|
|
1469
|
+
}
|
|
1470
|
+
|
|
1471
|
+
:root[data-theme='dark'] .badge--quiet {
|
|
1472
|
+
background: oklch(from var(--q1-color-gray-700) 0.26 0 0);
|
|
1473
|
+
color: oklch(from var(--q1-color-gray-700) 0.84 0 0);
|
|
1474
|
+
}
|
|
1475
|
+
|
|
1476
|
+
/* 反转款:深浅互换的强调 badge(实测外部参考 inverted:gray-1000 底 / gray-100 字,token 双主题自翻)。 */
|
|
1378
1477
|
.badge--inverted {
|
|
1379
1478
|
background: var(--q1-color-gray-1000);
|
|
1380
1479
|
color: var(--q1-color-gray-100);
|
|
1381
1480
|
}
|
|
1382
1481
|
|
|
1383
|
-
/* Pill:基于 Badge
|
|
1482
|
+
/* Pill:基于 Badge 样式的特殊链接(实测外部参考:background-200 底 + 1px 内嵌 hairline 环,悬停提亮到 gray-200)。 */
|
|
1384
1483
|
.badge--pill {
|
|
1385
1484
|
background: var(--q1-color-background-200);
|
|
1386
1485
|
color: var(--q1-color-text-primary);
|
|
@@ -1468,7 +1567,7 @@
|
|
|
1468
1567
|
border-color: var(--q1-color-border-strong);
|
|
1469
1568
|
}
|
|
1470
1569
|
|
|
1471
|
-
/*
|
|
1570
|
+
/* 页顶公告形态(对齐外部参考 demo 实测):透明底无边框、内容居中、16px 文案;
|
|
1472
1571
|
与页内卡条(tone 变体)分工,两种定位见页面使用原则。 */
|
|
1473
1572
|
.banner--announcement {
|
|
1474
1573
|
justify-content: center;
|
|
@@ -1484,7 +1583,7 @@
|
|
|
1484
1583
|
line-height: var(--q1-line-height-copy-16);
|
|
1485
1584
|
}
|
|
1486
1585
|
|
|
1487
|
-
/*
|
|
1586
|
+
/* 公告主操作:恒深药丸,双主题同值(外部参考亮暗实测同为深底浅字;同族先例:Avatar +N 芯片、遮罩恒黑)。 */
|
|
1488
1587
|
.banner__cta {
|
|
1489
1588
|
flex-shrink: 0;
|
|
1490
1589
|
display: inline-flex;
|
|
@@ -1651,7 +1750,7 @@ a.breadcrumb__link:hover {
|
|
|
1651
1750
|
font-weight: var(--q1-font-weight-medium);
|
|
1652
1751
|
}
|
|
1653
1752
|
|
|
1654
|
-
/* 禁用态:固定 gray-700
|
|
1753
|
+
/* 禁用态:固定 gray-700(双主题同一色值,外部参考实测),不用透明度衰减——
|
|
1655
1754
|
与 text-muted 在暗色主题会漂到 gray-800 不同,这里刻意锚定 gray-700 原值。 */
|
|
1656
1755
|
.breadcrumb__link--disabled {
|
|
1657
1756
|
color: var(--q1-color-gray-700);
|
|
@@ -1699,7 +1798,7 @@ a.breadcrumb__link:hover {
|
|
|
1699
1798
|
display: none;
|
|
1700
1799
|
}
|
|
1701
1800
|
|
|
1702
|
-
/* menu
|
|
1801
|
+
/* menu 形态(对标外部参考 type="menu" 实测):独立描边药丸,无分隔符;
|
|
1703
1802
|
尺寸/描边/圆角逐字节对齐(22px 高、2px/6px 内距、1px border-overlay、4px 圆角、12px 字)。 */
|
|
1704
1803
|
.breadcrumb--menu .breadcrumb__list {
|
|
1705
1804
|
gap: 6px;
|
|
@@ -1749,7 +1848,7 @@ a.breadcrumb__link:hover {
|
|
|
1749
1848
|
overflow: hidden;
|
|
1750
1849
|
border-radius: var(--q1-radius-4);
|
|
1751
1850
|
background: var(--browser-surface);
|
|
1752
|
-
/* material-small:1px 顶部亮环 + 柔和投影 + 1px
|
|
1851
|
+
/* material-small:1px 顶部亮环 + 柔和投影 + 1px 暗边环(对标外部参考三层叠加)。 */
|
|
1753
1852
|
box-shadow:
|
|
1754
1853
|
inset 0 0 0 1px color-mix(in srgb, white 14%, transparent),
|
|
1755
1854
|
0 1px 2px color-mix(in srgb, black 40%, transparent),
|
|
@@ -1839,7 +1938,7 @@ a.breadcrumb__link:hover {
|
|
|
1839
1938
|
border-radius: 9999px;
|
|
1840
1939
|
}
|
|
1841
1940
|
|
|
1842
|
-
/* 字面量 macOS
|
|
1941
|
+
/* 字面量 macOS 交通灯配色(外部参考实测,双主题同值,与像素级验证过的转换值对齐):
|
|
1843
1942
|
这是操作系统窗口控件的写实模拟,不是语义状态传达,故意不用 --q1-color-status-* token。 */
|
|
1844
1943
|
.browser__dot--close {
|
|
1845
1944
|
background: oklch(0.6921 0.1953 26.36);
|
|
@@ -1983,7 +2082,7 @@ a.breadcrumb__link:hover {
|
|
|
1983
2082
|
object-fit: cover;
|
|
1984
2083
|
}
|
|
1985
2084
|
|
|
1986
|
-
/*
|
|
2085
|
+
/* 窄屏:隐藏导航图标(对标外部参考 max-md:hidden)。起始区常驻自适应宽度、
|
|
1987
2086
|
地址区常驻吃满剩余空间(见 .browser__zone--start/--center),本断点无需再单独处理。 */
|
|
1988
2087
|
@media (max-width: 640px) {
|
|
1989
2088
|
.browser__controls {
|
|
@@ -1991,7 +2090,7 @@ a.breadcrumb__link:hover {
|
|
|
1991
2090
|
}
|
|
1992
2091
|
}
|
|
1993
2092
|
|
|
1994
|
-
/* 书籍封面(2026-07-09
|
|
2093
|
+
/* 书籍封面(2026-07-09 双轮实测外部参考):静止=平面封面(49/60、圆角 6/4/4/6、暗色微光、
|
|
1995
2094
|
双层外阴影随宽度缩放、左缘 8.2% 书脊沟线、排版=宽度线性缩放 0.0836/0.061);
|
|
1996
2095
|
悬停=绕 Y 轴翻开(rotateY -20° + scale 1.066 + translateX -16px,0.25s ease-out——
|
|
1997
2096
|
从冻结的 CSSTransition 关键帧取证;hidden 标签页首测误判"无动效",用户人眼纠正)。 */
|
|
@@ -2098,7 +2197,7 @@ a.breadcrumb__link:hover {
|
|
|
2098
2197
|
background: var(--q1-book-sheen);
|
|
2099
2198
|
}
|
|
2100
2199
|
|
|
2101
|
-
/* 顶部色带(stripe
|
|
2200
|
+
/* 顶部色带(stripe 变体,外部参考默认形态):占封面高度 47.8%。 */
|
|
2102
2201
|
.book__band {
|
|
2103
2202
|
position: relative;
|
|
2104
2203
|
display: flex;
|
|
@@ -2134,7 +2233,7 @@ a.breadcrumb__link:hover {
|
|
|
2134
2233
|
color: var(--book-text);
|
|
2135
2234
|
}
|
|
2136
2235
|
|
|
2137
|
-
/* 书脊沟线:左缘 8.2% 宽度内一条白 25%
|
|
2236
|
+
/* 书脊沟线:左缘 8.2% 宽度内一条白 25% 高光渐变(两主题同值,外部参考实测)。 */
|
|
2138
2237
|
.book__gutter {
|
|
2139
2238
|
position: absolute;
|
|
2140
2239
|
inset: 0 auto 0 0;
|
|
@@ -2164,7 +2263,7 @@ a.breadcrumb__link:hover {
|
|
|
2164
2263
|
object-fit: cover;
|
|
2165
2264
|
}
|
|
2166
2265
|
|
|
2167
|
-
/*
|
|
2266
|
+
/* 纹理(自有配方,外部参考多款纹理样式记 non-goal):细密交叉底纹叠在封面色上,不糊标题。 */
|
|
2168
2267
|
.book--textured .book__cover {
|
|
2169
2268
|
background-image:
|
|
2170
2269
|
repeating-linear-gradient(
|
|
@@ -2235,7 +2334,7 @@ a.breadcrumb__link:hover {
|
|
|
2235
2334
|
padding: var(--q1-space-6);
|
|
2236
2335
|
}
|
|
2237
2336
|
|
|
2238
|
-
/* 分段控件 Switch
|
|
2337
|
+
/* 分段控件 Switch(对标外部参考 Switch):一组互斥选项,选中段抬起;底层 q1-sr-only 单选组,方向键原生可用。 */
|
|
2239
2338
|
.switch-control {
|
|
2240
2339
|
display: inline-flex;
|
|
2241
2340
|
align-items: center;
|
|
@@ -2311,7 +2410,7 @@ a.breadcrumb__link:hover {
|
|
|
2311
2410
|
gap: var(--q1-space-4);
|
|
2312
2411
|
}
|
|
2313
2412
|
|
|
2314
|
-
/* 下划线式 Tabs
|
|
2413
|
+
/* 下划线式 Tabs(对标外部参考):tablist 一条底边基线,选中标签用 2px 前景色底边下划线、透明底、字重 400。 */
|
|
2315
2414
|
.tabs-control {
|
|
2316
2415
|
display: flex;
|
|
2317
2416
|
align-items: center;
|
|
@@ -2370,7 +2469,7 @@ a.breadcrumb__link:hover {
|
|
|
2370
2469
|
align-items: center;
|
|
2371
2470
|
}
|
|
2372
2471
|
|
|
2373
|
-
/* 次级(secondary
|
|
2472
|
+
/* 次级(secondary)变体(对标外部参考 Secondary Tabs):药丸组容器,选中态用前景色填充、无下划线。 */
|
|
2374
2473
|
.tabs-control--secondary {
|
|
2375
2474
|
gap: var(--q1-space-1);
|
|
2376
2475
|
border: 1px solid var(--q1-color-border-strong);
|
|
@@ -2505,10 +2604,10 @@ a.breadcrumb__link:hover {
|
|
|
2505
2604
|
display: flex;
|
|
2506
2605
|
gap: var(--q1-space-6);
|
|
2507
2606
|
padding: var(--q1-space-4);
|
|
2508
|
-
border: 1px solid var(--q1-color-border);
|
|
2607
|
+
border: 1px solid var(--q1-color-border-overlay);
|
|
2509
2608
|
border-radius: var(--q1-radius-3);
|
|
2510
2609
|
background: var(--q1-color-bg-panel);
|
|
2511
|
-
box-shadow:
|
|
2610
|
+
box-shadow: var(--q1-shadow-popover);
|
|
2512
2611
|
}
|
|
2513
2612
|
|
|
2514
2613
|
.cal-popover--vertical {
|
|
@@ -2601,7 +2700,7 @@ a.breadcrumb__link:hover {
|
|
|
2601
2700
|
cursor: pointer;
|
|
2602
2701
|
}
|
|
2603
2702
|
|
|
2604
|
-
/*
|
|
2703
|
+
/* 固定时区:只读文本,去掉可点击暗示(外部参考 pinnedTimezone——只读文本非 select)。 */
|
|
2605
2704
|
.cal-inputs__tz--pinned {
|
|
2606
2705
|
cursor: default;
|
|
2607
2706
|
}
|
|
@@ -2784,10 +2883,10 @@ a.breadcrumb__link:hover {
|
|
|
2784
2883
|
z-index: 20;
|
|
2785
2884
|
display: flex;
|
|
2786
2885
|
min-width: 380px;
|
|
2787
|
-
border: 1px solid var(--q1-color-border);
|
|
2886
|
+
border: 1px solid var(--q1-color-border-overlay);
|
|
2788
2887
|
border-radius: var(--q1-radius-3);
|
|
2789
2888
|
background: var(--q1-color-bg-panel);
|
|
2790
|
-
box-shadow:
|
|
2889
|
+
box-shadow: var(--q1-shadow-popover);
|
|
2791
2890
|
overflow: hidden;
|
|
2792
2891
|
}
|
|
2793
2892
|
|
|
@@ -2874,7 +2973,7 @@ a.breadcrumb__link:hover {
|
|
|
2874
2973
|
height: 1px;
|
|
2875
2974
|
}
|
|
2876
2975
|
|
|
2877
|
-
/*
|
|
2976
|
+
/* 竖向随容器拉伸(对标外部参考 h-full);min-height 防非弹性父容器下塌陷成一点。 */
|
|
2878
2977
|
.separator--vertical {
|
|
2879
2978
|
width: 1px;
|
|
2880
2979
|
height: auto;
|
|
@@ -2959,7 +3058,7 @@ a.breadcrumb__link:hover {
|
|
|
2959
3058
|
.spinner--success { color: var(--q1-color-status-success); }
|
|
2960
3059
|
.spinner--info { color: var(--q1-color-status-info); }
|
|
2961
3060
|
|
|
2962
|
-
/*
|
|
3061
|
+
/* 辐条角度与动画延迟由组件按辐条数内联计算(辐条数随尺寸增减,对标外部参考)。 */
|
|
2963
3062
|
.spinner__bar {
|
|
2964
3063
|
position: absolute;
|
|
2965
3064
|
top: 0;
|
|
@@ -3121,7 +3220,7 @@ a.breadcrumb__link:hover {
|
|
|
3121
3220
|
color: var(--q1-color-text-primary);
|
|
3122
3221
|
}
|
|
3123
3222
|
|
|
3124
|
-
/* 复制按钮 absolute
|
|
3223
|
+
/* 复制按钮 absolute 挂右侧(对标外部参考):单行高度由文本决定(10px 竖向 padding + 20px 行高 ≈ 42),
|
|
3125
3224
|
不被按钮撑高;文本区 padding-right 预留按钮位。 */
|
|
3126
3225
|
.snippet {
|
|
3127
3226
|
position: relative;
|
|
@@ -3134,7 +3233,7 @@ a.breadcrumb__link:hover {
|
|
|
3134
3233
|
background: var(--q1-color-bg-subtle);
|
|
3135
3234
|
}
|
|
3136
3235
|
|
|
3137
|
-
/*
|
|
3236
|
+
/* 反色:纯反色一层(对标外部参考 Inverted),两主题自适应,无内衬块。 */
|
|
3138
3237
|
.snippet--inverted {
|
|
3139
3238
|
border-color: var(--q1-color-text-primary);
|
|
3140
3239
|
background: var(--q1-color-text-primary);
|
|
@@ -3276,7 +3375,7 @@ a.breadcrumb__link:hover {
|
|
|
3276
3375
|
100% { transform: rotate(360deg); }
|
|
3277
3376
|
}
|
|
3278
3377
|
|
|
3279
|
-
/*
|
|
3378
|
+
/* 实测外部参考:条高 10px、圆角 radius-2、轨道 gray-200;填充默认中性前景,
|
|
3280
3379
|
过渡 width/background-color 0.1s ease-in(换色也平滑)。停靠点悬停有气泡,
|
|
3281
3380
|
故裁剪收进 __track 内层,停靠点留在外层不被 overflow 剪掉。 */
|
|
3282
3381
|
.progress {
|
|
@@ -3377,7 +3476,7 @@ a.breadcrumb__link:hover {
|
|
|
3377
3476
|
transform: translate(-50%, 0);
|
|
3378
3477
|
}
|
|
3379
3478
|
|
|
3380
|
-
/*
|
|
3479
|
+
/* 实测外部参考:非填充态背景恒透明,靠边框+图标+正文同色传达类型(不是只图标上色,正文保持中性);
|
|
3381
3480
|
filled 只加浅色底,图标/正文颜色不变——两态共享同一套 tone-fg/tone-border,复用 Banner 已建立的
|
|
3382
3481
|
tone-surface 配方(不新开一层浅色阶)。 */
|
|
3383
3482
|
.note {
|
|
@@ -3410,7 +3509,7 @@ a.breadcrumb__link:hover {
|
|
|
3410
3509
|
font-weight: var(--q1-font-weight-medium);
|
|
3411
3510
|
}
|
|
3412
3511
|
|
|
3413
|
-
/*
|
|
3512
|
+
/* 行动按钮(实测外部参考:32px 高、radius-2、实心反色 CTA,不是我们原来的浅边框按钮)。 */
|
|
3414
3513
|
.note__action {
|
|
3415
3514
|
flex-shrink: 0;
|
|
3416
3515
|
display: inline-flex;
|
|
@@ -3473,7 +3572,7 @@ a.breadcrumb__link:hover {
|
|
|
3473
3572
|
/* secondary 是中性语义,不像其余四档有专属 tone token,填充态用中性 subtle 底。 */
|
|
3474
3573
|
.note--filled.note--secondary { background: var(--q1-color-bg-subtle); }
|
|
3475
3574
|
|
|
3476
|
-
/*
|
|
3575
|
+
/* 禁用态(实测外部参考 Disabled 章节:整体降灰,不因类型保留颜色;对标 Radio 的色彩降级配方,
|
|
3477
3576
|
opacity 恒 1,只换色,源码顺序放在类型规则之后确保覆盖)。
|
|
3478
3577
|
.note--filled.note--info 等是两类选择器(优先级 0,2,0),比 .note--disabled 单类(0,1,0)更高,
|
|
3479
3578
|
源码顺序赢不了优先级差——填充+禁用组合必须用同为两类的选择器才能真正盖掉填充色。 */
|
|
@@ -3492,7 +3591,7 @@ a.breadcrumb__link:hover {
|
|
|
3492
3591
|
}
|
|
3493
3592
|
|
|
3494
3593
|
/* 修正:gray-500 实底 + bg-canvas 深色字在暗色主题几乎不可读(bg-canvas 暗色下是近黑,
|
|
3495
|
-
|
|
3594
|
+
叠在中灰底上对比度太低)。实测外部参考的真实禁用配方是「底色几乎不变、只把字调淡」
|
|
3496
3595
|
(light 主题测得 bg 几乎同色,字从纯白调淡到中灰),改为对底色加 55% 透明度混合。 */
|
|
3497
3596
|
.note--disabled .note__action {
|
|
3498
3597
|
background: var(--q1-color-gray-1000);
|
|
@@ -3687,7 +3786,7 @@ a.breadcrumb__link:hover {
|
|
|
3687
3786
|
color: var(--q1-color-text-secondary);
|
|
3688
3787
|
}
|
|
3689
3788
|
|
|
3690
|
-
/*
|
|
3789
|
+
/* 语言切换按钮组(对标外部参考 Language switcher with tabs):占 header 左侧文件名位。 */
|
|
3691
3790
|
.codeblock__tabs {
|
|
3692
3791
|
display: inline-flex;
|
|
3693
3792
|
gap: var(--q1-space-1);
|
|
@@ -3992,10 +4091,10 @@ a.breadcrumb__link:hover {
|
|
|
3992
4091
|
flex-direction: column;
|
|
3993
4092
|
gap: var(--q1-space-1);
|
|
3994
4093
|
padding: var(--q1-space-3) var(--q1-space-4);
|
|
3995
|
-
border: 1px solid var(--q1-color-border);
|
|
4094
|
+
border: 1px solid var(--q1-color-border-overlay);
|
|
3996
4095
|
border-radius: var(--q1-radius-2);
|
|
3997
4096
|
background: var(--q1-color-bg-panel);
|
|
3998
|
-
box-shadow:
|
|
4097
|
+
box-shadow: var(--q1-shadow-popover);
|
|
3999
4098
|
opacity: 0;
|
|
4000
4099
|
visibility: hidden;
|
|
4001
4100
|
transition: opacity 0.12s ease, visibility 0.12s ease;
|
|
@@ -4014,7 +4113,7 @@ a.breadcrumb__link:hover {
|
|
|
4014
4113
|
.context-card-wrap--left .context-card { right: calc(100% + 8px); top: 0; }
|
|
4015
4114
|
.context-card-wrap--right .context-card { left: calc(100% + 8px); top: 0; }
|
|
4016
4115
|
|
|
4017
|
-
/*
|
|
4116
|
+
/* 轴向对齐(对标外部参考 Alignment):默认 start 贴起始边;center 沿轴居中;end 贴结束边。
|
|
4018
4117
|
top/bottom 的轴是水平(left/translateX),left/right 的轴是垂直(top/translateY)。 */
|
|
4019
4118
|
.context-card-wrap--top.context-card-wrap--align-center .context-card,
|
|
4020
4119
|
.context-card-wrap--bottom.context-card-wrap--align-center .context-card {
|
|
@@ -4108,7 +4207,7 @@ a.breadcrumb__link:hover {
|
|
|
4108
4207
|
.rtc-trigger {
|
|
4109
4208
|
border-bottom: 1px dashed var(--q1-color-border-strong);
|
|
4110
4209
|
color: var(--q1-color-text-primary);
|
|
4111
|
-
/*
|
|
4210
|
+
/* 光标铁律:跟外部参考实测(其 RTC 触发器为 pointer)。 */
|
|
4112
4211
|
cursor: pointer;
|
|
4113
4212
|
}
|
|
4114
4213
|
|
|
@@ -4133,19 +4232,19 @@ a.breadcrumb__link:hover {
|
|
|
4133
4232
|
border: 1px solid var(--q1-color-border-overlay);
|
|
4134
4233
|
border-radius: var(--q1-radius-2);
|
|
4135
4234
|
background: var(--q1-color-bg-panel);
|
|
4136
|
-
box-shadow:
|
|
4235
|
+
box-shadow: var(--q1-shadow-popover);
|
|
4137
4236
|
opacity: 0;
|
|
4138
4237
|
visibility: hidden;
|
|
4139
4238
|
transition: opacity 0.12s ease, visibility 0.12s ease;
|
|
4140
4239
|
}
|
|
4141
4240
|
|
|
4142
|
-
/*
|
|
4241
|
+
/* 长格式相对时间标题行(对标外部参考)。 */
|
|
4143
4242
|
.rtc-card__relative {
|
|
4144
4243
|
font-size: 12px;
|
|
4145
4244
|
color: var(--q1-color-text-primary);
|
|
4146
4245
|
}
|
|
4147
4246
|
|
|
4148
|
-
/* 时区徽章(UTC / GMT+8 小 chip
|
|
4247
|
+
/* 时区徽章(UTC / GMT+8 小 chip,对标外部参考)。 */
|
|
4149
4248
|
.rtc-card__zone {
|
|
4150
4249
|
flex: none;
|
|
4151
4250
|
padding: 1px var(--q1-space-1);
|
|
@@ -4174,8 +4273,8 @@ a.breadcrumb__link:hover {
|
|
|
4174
4273
|
color: var(--q1-color-text-secondary);
|
|
4175
4274
|
}
|
|
4176
4275
|
|
|
4177
|
-
/*
|
|
4178
|
-
flex-wrap
|
|
4276
|
+
/* 项目横幅(对标外部参考实测):radius 0 贴边通栏条;图标随文字色;CTA 亮一档 + medium。
|
|
4277
|
+
flex-wrap 为窄屏防溢出兜底(有理由偏离:外部参考无,正常宽度不可见)。 */
|
|
4179
4278
|
.project-banner {
|
|
4180
4279
|
display: flex;
|
|
4181
4280
|
flex-wrap: wrap;
|
|
@@ -4261,14 +4360,14 @@ a.breadcrumb__link:hover {
|
|
|
4261
4360
|
background: var(--q1-color-bg-subtle);
|
|
4262
4361
|
}
|
|
4263
4362
|
|
|
4264
|
-
/* 分段卡片给容器 16px
|
|
4363
|
+
/* 分段卡片给容器 16px 内边距(对齐外部参考 p-4):section 随之内缩,分隔线不贯满卡片边、左端对齐文字。
|
|
4265
4364
|
这是分隔线"内缩"的来源——不是给线加 inset,而是容器留边、section 无水平 padding,线随 section 内缩。 */
|
|
4266
4365
|
.q1-card--divided {
|
|
4267
4366
|
padding: var(--q1-space-4);
|
|
4268
4367
|
}
|
|
4269
4368
|
|
|
4270
4369
|
.q1-card--divided .q1-card__section {
|
|
4271
|
-
/* 竖排段:只留垂直 padding
|
|
4370
|
+
/* 竖排段:只留垂直 padding(对齐外部参考 py-2),水平交给容器内边距,分隔线因此内缩对齐文字。 */
|
|
4272
4371
|
padding: var(--q1-space-2) 0;
|
|
4273
4372
|
font-size: 14px;
|
|
4274
4373
|
color: var(--q1-color-text-primary);
|
|
@@ -4282,7 +4381,7 @@ a.breadcrumb__link:hover {
|
|
|
4282
4381
|
特异性用 .q1-card.q1-card--row(0,2,0) 压过可点卡片的 a.q1-card(0,1,1),否则 <a> 卡片的 display:block 会把 flex 打回竖排。 */
|
|
4283
4382
|
.q1-card.q1-card--row {
|
|
4284
4383
|
display: flex;
|
|
4285
|
-
/* 横排指标块并列需要空间,解除默认 400px
|
|
4384
|
+
/* 横排指标块并列需要空间,解除默认 400px 限宽,充满容器(对齐外部参考横排充满 demo 框)。 */
|
|
4286
4385
|
max-width: none;
|
|
4287
4386
|
}
|
|
4288
4387
|
|
|
@@ -4291,7 +4390,7 @@ a.breadcrumb__link:hover {
|
|
|
4291
4390
|
}
|
|
4292
4391
|
|
|
4293
4392
|
.q1-card--divided.q1-card--row .q1-card__section {
|
|
4294
|
-
/* 横排段:垂直 padding 归 0(内缩交给容器)、水平 8px
|
|
4393
|
+
/* 横排段:垂直 padding 归 0(内缩交给容器)、水平 8px 给文字到竖线的间距(对齐外部参考 row section 0 8px)。 */
|
|
4295
4394
|
padding: 0 var(--q1-space-2);
|
|
4296
4395
|
}
|
|
4297
4396
|
|
|
@@ -4319,14 +4418,14 @@ a.breadcrumb__link:hover {
|
|
|
4319
4418
|
color: var(--q1-color-text-secondary);
|
|
4320
4419
|
}
|
|
4321
4420
|
|
|
4322
|
-
/*
|
|
4421
|
+
/* 常驻柔和投影(对齐外部参考 shadow):贴地薄影 + 扩散软影两层,让卡片浮于背景。 */
|
|
4323
4422
|
.q1-card--shadow {
|
|
4324
4423
|
box-shadow:
|
|
4325
4424
|
0 1px 2px color-mix(in srgb, var(--q1-color-shadow) 6%, transparent),
|
|
4326
4425
|
0 8px 24px color-mix(in srgb, var(--q1-color-shadow) 8%, transparent);
|
|
4327
4426
|
}
|
|
4328
4427
|
|
|
4329
|
-
/* 无框卡片(bordered={false}
|
|
4428
|
+
/* 无框卡片(bordered={false}):去边框,靠底色/投影表达边界(对齐外部参考 border 可选)。 */
|
|
4330
4429
|
.q1-card--borderless {
|
|
4331
4430
|
border-color: transparent;
|
|
4332
4431
|
}
|
|
@@ -4496,7 +4595,7 @@ a.q1-card:focus-visible {
|
|
|
4496
4595
|
100% { transform: rotate(360deg); }
|
|
4497
4596
|
}
|
|
4498
4597
|
|
|
4499
|
-
/* Esc
|
|
4598
|
+
/* Esc 键帽清除(对标外部参考):清除入口本身就是快捷键教学;点击或按 Esc 清空。 */
|
|
4500
4599
|
.search-input__esc {
|
|
4501
4600
|
position: absolute;
|
|
4502
4601
|
top: 50%;
|
|
@@ -4571,7 +4670,7 @@ a.q1-card:focus-visible {
|
|
|
4571
4670
|
background: var(--q1-color-bg-subtle);
|
|
4572
4671
|
}
|
|
4573
4672
|
|
|
4574
|
-
/* tone="danger"|"warning"
|
|
4673
|
+
/* tone="danger"|"warning" 是整卡状态(对标外部参考 Error/Warning Type):边框着色表达整组处于错误/警告态,
|
|
4575
4674
|
页脚派生轻染底延续状态可读性——不是只染页脚(原 .fieldset__footer--* 语义提升为整卡 .fieldset--*)。 */
|
|
4576
4675
|
.fieldset--danger {
|
|
4577
4676
|
border-color: var(--q1-color-status-danger);
|
|
@@ -4657,7 +4756,7 @@ a.q1-card:focus-visible {
|
|
|
4657
4756
|
justify-content: center;
|
|
4658
4757
|
}
|
|
4659
4758
|
|
|
4660
|
-
/*
|
|
4759
|
+
/* 药丸触发器(对标外部参考):h32 / font 14/500 / 全圆角;颜色走家族 panel+border。 */
|
|
4661
4760
|
.show-more__trigger {
|
|
4662
4761
|
display: inline-flex;
|
|
4663
4762
|
align-items: center;
|
|
@@ -4725,7 +4824,7 @@ a.q1-card:focus-visible {
|
|
|
4725
4824
|
transform: rotate(90deg);
|
|
4726
4825
|
}
|
|
4727
4826
|
/* 收起时面板保留在 DOM(grid 0fr),便于页面内查找命中;visibility 把收起内容移出
|
|
4728
|
-
|
|
4827
|
+
焦点序与读屏树(对齐外部参考 closed 用 hidden/visibility)——关闭时随高度动画结束才隐藏,
|
|
4729
4828
|
打开时立即可见(visibility 的过渡语义天然如此)。 */
|
|
4730
4829
|
.collapse__panel {
|
|
4731
4830
|
display: grid;
|
|
@@ -5055,7 +5154,7 @@ a.q1-card:focus-visible {
|
|
|
5055
5154
|
.choicebox--checkbox:has(.choicebox__input:disabled:checked) .choicebox__indicator {
|
|
5056
5155
|
background: var(--q1-color-gray-500);
|
|
5057
5156
|
}
|
|
5058
|
-
/*
|
|
5157
|
+
/* 实测外部参考:裸轨(无外框/无背景/无 padding),图标抽离文字块、绝对定位在 28px 凹槽外;
|
|
5059
5158
|
悬停只把文字/图标从 text-secondary 加深到 text-primary,无背景浸染、无品牌色——
|
|
5060
5159
|
这是页面间的纯导航链(chrome),不是行动号召,indigo 只守「动作」。 */
|
|
5061
5160
|
.pagination {
|
|
@@ -5093,7 +5192,7 @@ a.q1-card:focus-visible {
|
|
|
5093
5192
|
.pagination__link:hover .pagination__label {
|
|
5094
5193
|
color: var(--q1-color-text-primary);
|
|
5095
5194
|
}
|
|
5096
|
-
/*
|
|
5195
|
+
/* 定位上下文钉在标题文字块(实测外部参考:图标是标题块的子节点,随文字宽度走,
|
|
5097
5196
|
而不是钉在整条链接上)——否则图标会漂出链接可点/可聚焦的框外。 */
|
|
5098
5197
|
.pagination__title-frame {
|
|
5099
5198
|
position: relative;
|
|
@@ -5176,7 +5275,7 @@ a.q1-card:focus-visible {
|
|
|
5176
5275
|
z-index: 10;
|
|
5177
5276
|
width: 336px;
|
|
5178
5277
|
border-color: var(--q1-color-border-overlay);
|
|
5179
|
-
box-shadow:
|
|
5278
|
+
box-shadow: var(--q1-shadow-popover);
|
|
5180
5279
|
}
|
|
5181
5280
|
.feedback__head {
|
|
5182
5281
|
display: flex;
|
|
@@ -5329,7 +5428,7 @@ a.q1-card:focus-visible {
|
|
|
5329
5428
|
align-items: center;
|
|
5330
5429
|
gap: var(--q1-space-2);
|
|
5331
5430
|
}
|
|
5332
|
-
/*
|
|
5431
|
+
/* 纵向带按钮(对标外部参考 Vertical with buttons):上/滚动区/下 纵向堆叠。 */
|
|
5333
5432
|
.scroller-buttons--vertical {
|
|
5334
5433
|
flex-direction: column;
|
|
5335
5434
|
align-items: stretch;
|
|
@@ -5403,7 +5502,7 @@ a.q1-card:focus-visible {
|
|
|
5403
5502
|
.theme-switcher:disabled .theme-switcher__option {
|
|
5404
5503
|
cursor: default;
|
|
5405
5504
|
}
|
|
5406
|
-
/*
|
|
5505
|
+
/* 实测外部参考(320 框):壳与岛恒黑、键恒灰——拟真设备不随主题翻转;无投影,黑壳对比度即高度感。
|
|
5407
5506
|
键位为 675 框高的实测百分比换算:静音 15%、音量 23.4%/32.4%、电源(右)28.2%。 */
|
|
5408
5507
|
.phone {
|
|
5409
5508
|
position: relative;
|
|
@@ -5457,7 +5556,7 @@ a.q1-card:focus-visible {
|
|
|
5457
5556
|
overflow: hidden;
|
|
5458
5557
|
background: var(--q1-color-bg-canvas);
|
|
5459
5558
|
}
|
|
5460
|
-
/* iOS home 条:设备铬,叠在屏内容底部;我们的屏底色随主题翻转,故取前景色保持可见(
|
|
5559
|
+
/* iOS home 条:设备铬,叠在屏内容底部;我们的屏底色随主题翻转,故取前景色保持可见(外部参考灰占位屏上为恒白)。 */
|
|
5461
5560
|
.phone__home {
|
|
5462
5561
|
position: absolute;
|
|
5463
5562
|
bottom: 1.8%;
|
|
@@ -5662,7 +5761,7 @@ a.q1-card:focus-visible {
|
|
|
5662
5761
|
transform: translateY(var(--y, 0px)) scale(1);
|
|
5663
5762
|
opacity: 1;
|
|
5664
5763
|
}
|
|
5665
|
-
/* 状态 q1-toast:实心 tone 底色 +
|
|
5764
|
+
/* 状态 q1-toast:实心 tone 底色 + 浅色文字(对标外部参考的 success/warning/error) */
|
|
5666
5765
|
.q1-toast--success,
|
|
5667
5766
|
.q1-toast--warning,
|
|
5668
5767
|
.q1-toast--error {
|
|
@@ -5793,7 +5892,7 @@ a.q1-card:focus-visible {
|
|
|
5793
5892
|
border-radius: 999px;
|
|
5794
5893
|
background: var(--q1-color-bg-subtle);
|
|
5795
5894
|
}
|
|
5796
|
-
/*
|
|
5895
|
+
/* 竖条拇指(对标外部参考):6×14 白色小竖条 + 定义环;action-on-primary 两主题恒白(拇指骑在 primary 填充上)。 */
|
|
5797
5896
|
.slider-input::-webkit-slider-thumb {
|
|
5798
5897
|
-webkit-appearance: none;
|
|
5799
5898
|
width: 6px;
|
|
@@ -5854,7 +5953,7 @@ a.q1-card:focus-visible {
|
|
|
5854
5953
|
font-size: 14px;
|
|
5855
5954
|
font-variant-numeric: tabular-nums;
|
|
5856
5955
|
text-align: center;
|
|
5857
|
-
/*
|
|
5956
|
+
/* 隐藏原生步进箭头(对标外部参考):键盘 ↑↓ 步进不受影响,粗调交给滑块。 */
|
|
5858
5957
|
-moz-appearance: textfield;
|
|
5859
5958
|
appearance: textfield;
|
|
5860
5959
|
}
|
|
@@ -5932,7 +6031,7 @@ a.q1-card:focus-visible {
|
|
|
5932
6031
|
color: var(--q1-color-text-secondary);
|
|
5933
6032
|
font-size: 14px;
|
|
5934
6033
|
text-align: center;
|
|
5935
|
-
/*
|
|
6034
|
+
/* 光标铁律:外部参考右键触发区无 cursor 声明(auto),照抄不自建。 */
|
|
5936
6035
|
user-select: none;
|
|
5937
6036
|
}
|
|
5938
6037
|
.context-menu__area:focus-visible {
|
|
@@ -6031,7 +6130,7 @@ a.q1-card:focus-visible {
|
|
|
6031
6130
|
.split-button--secondary .split-button__toggle {
|
|
6032
6131
|
background: var(--q1-color-bg-panel);
|
|
6033
6132
|
}
|
|
6034
|
-
/* 尺寸(与 Button
|
|
6133
|
+
/* 尺寸(与 Button 家族共享外部参考刻度:高 32/40/48、radius 6/6/8、字号 14/14/16) */
|
|
6035
6134
|
.split-button--sm .split-button__primary {
|
|
6036
6135
|
min-height: 32px;
|
|
6037
6136
|
padding: 0 var(--q1-space-3);
|
|
@@ -6107,6 +6206,10 @@ a.q1-card:focus-visible {
|
|
|
6107
6206
|
.combobox--disabled .combobox__control {
|
|
6108
6207
|
opacity: 0.55;
|
|
6109
6208
|
}
|
|
6209
|
+
.combobox--readonly .combobox__input {
|
|
6210
|
+
caret-color: transparent;
|
|
6211
|
+
cursor: default;
|
|
6212
|
+
}
|
|
6110
6213
|
.combobox__leading {
|
|
6111
6214
|
flex: none;
|
|
6112
6215
|
color: var(--q1-color-text-secondary);
|
|
@@ -6143,7 +6246,7 @@ a.q1-card:focus-visible {
|
|
|
6143
6246
|
outline: none;
|
|
6144
6247
|
box-shadow: var(--q1-shadow-focus);
|
|
6145
6248
|
}
|
|
6146
|
-
.
|
|
6249
|
+
.combobox__popup {
|
|
6147
6250
|
position: absolute;
|
|
6148
6251
|
top: calc(100% + var(--q1-space-1));
|
|
6149
6252
|
left: 0;
|
|
@@ -6157,7 +6260,12 @@ a.q1-card:focus-visible {
|
|
|
6157
6260
|
border: 1px solid var(--q1-color-border-overlay);
|
|
6158
6261
|
border-radius: var(--q1-radius-3);
|
|
6159
6262
|
background: var(--q1-color-bg-panel);
|
|
6160
|
-
box-shadow:
|
|
6263
|
+
box-shadow: var(--q1-shadow-popover);
|
|
6264
|
+
}
|
|
6265
|
+
.combobox__listbox {
|
|
6266
|
+
margin: 0;
|
|
6267
|
+
padding: 0;
|
|
6268
|
+
list-style: none;
|
|
6161
6269
|
}
|
|
6162
6270
|
.combobox__option {
|
|
6163
6271
|
display: flex;
|
|
@@ -6170,7 +6278,7 @@ a.q1-card:focus-visible {
|
|
|
6170
6278
|
cursor: pointer;
|
|
6171
6279
|
}
|
|
6172
6280
|
|
|
6173
|
-
/*
|
|
6281
|
+
/* 选项前后图标(对标外部参考 With Prefix/Suffix Icons):前缀随文本、后缀推到行尾。 */
|
|
6174
6282
|
.combobox__option-prefix,
|
|
6175
6283
|
.combobox__option-suffix {
|
|
6176
6284
|
display: inline-flex;
|
|
@@ -6186,15 +6294,31 @@ a.q1-card:focus-visible {
|
|
|
6186
6294
|
.combobox__option--active {
|
|
6187
6295
|
background: color-mix(in srgb, var(--q1-color-text-primary) 6%, transparent);
|
|
6188
6296
|
}
|
|
6297
|
+
.combobox__option--disabled {
|
|
6298
|
+
color: var(--q1-color-text-secondary);
|
|
6299
|
+
opacity: 0.55;
|
|
6300
|
+
cursor: not-allowed;
|
|
6301
|
+
}
|
|
6189
6302
|
.combobox__option[aria-selected='true'] {
|
|
6190
6303
|
color: var(--q1-color-action-primary);
|
|
6191
6304
|
font-weight: 500;
|
|
6192
6305
|
}
|
|
6306
|
+
/* 选中项对勾(对标外部参考选中标记):推到行尾,随选中色。 */
|
|
6307
|
+
.combobox__option-check {
|
|
6308
|
+
flex: none;
|
|
6309
|
+
margin-left: auto;
|
|
6310
|
+
color: var(--q1-color-action-primary);
|
|
6311
|
+
}
|
|
6193
6312
|
.combobox__empty {
|
|
6194
6313
|
padding: var(--q1-space-3);
|
|
6195
6314
|
font-size: 13px;
|
|
6196
6315
|
color: var(--q1-color-text-secondary);
|
|
6197
6316
|
}
|
|
6317
|
+
.combobox__empty :focus-visible {
|
|
6318
|
+
outline: none;
|
|
6319
|
+
border-radius: var(--q1-radius-1);
|
|
6320
|
+
box-shadow: var(--q1-shadow-focus);
|
|
6321
|
+
}
|
|
6198
6322
|
.combobox__error-text {
|
|
6199
6323
|
margin: var(--q1-space-2) 0 0;
|
|
6200
6324
|
font-size: 13px;
|
|
@@ -6231,7 +6355,7 @@ a.q1-card:focus-visible {
|
|
|
6231
6355
|
color: var(--q1-color-text-secondary);
|
|
6232
6356
|
font-weight: 400;
|
|
6233
6357
|
}
|
|
6234
|
-
/*
|
|
6358
|
+
/* 实测外部参考:菜单 radius-4(12px)、padding space-2(8px)、行高 32px。 */
|
|
6235
6359
|
.multi-select__menu {
|
|
6236
6360
|
position: absolute;
|
|
6237
6361
|
top: calc(100% + var(--q1-space-1));
|
|
@@ -6242,7 +6366,7 @@ a.q1-card:focus-visible {
|
|
|
6242
6366
|
border: 1px solid var(--q1-color-border-overlay);
|
|
6243
6367
|
border-radius: var(--q1-radius-4);
|
|
6244
6368
|
background: var(--q1-color-bg-panel);
|
|
6245
|
-
box-shadow:
|
|
6369
|
+
box-shadow: var(--q1-shadow-popover);
|
|
6246
6370
|
}
|
|
6247
6371
|
.multi-select__bulk {
|
|
6248
6372
|
display: flex;
|
|
@@ -6312,13 +6436,13 @@ a.q1-card:focus-visible {
|
|
|
6312
6436
|
border-radius: var(--q1-radius-1);
|
|
6313
6437
|
color: var(--q1-color-bg-canvas);
|
|
6314
6438
|
}
|
|
6315
|
-
/*
|
|
6439
|
+
/* 实测外部参考:选中态是中性 gray-1000 黑底,不是品牌蓝——与 Radio/Note 行动按钮已定的
|
|
6316
6440
|
「选择控件中性,品牌色只归主动作」规则一致。 */
|
|
6317
6441
|
.multi-select__check--on {
|
|
6318
6442
|
background: var(--q1-color-gray-1000);
|
|
6319
6443
|
border-color: var(--q1-color-gray-1000);
|
|
6320
6444
|
}
|
|
6321
|
-
/*
|
|
6445
|
+
/* 边界:外部参考遇长名靠菜单变宽保持单行;我们改为单行截断更保守——真实业务数据(权限范围名)
|
|
6322
6446
|
长度不可控,任由菜单跟着最长一项无限变宽风险更高;32px 定高行也扛不住换行溢出。 */
|
|
6323
6447
|
.multi-select__option-label {
|
|
6324
6448
|
overflow: hidden;
|
|
@@ -6407,7 +6531,7 @@ a.q1-card:focus-visible {
|
|
|
6407
6531
|
border: 1px solid var(--q1-color-border-overlay);
|
|
6408
6532
|
border-radius: var(--q1-radius-4);
|
|
6409
6533
|
background: var(--q1-color-bg-panel);
|
|
6410
|
-
box-shadow:
|
|
6534
|
+
box-shadow: var(--q1-shadow-modal);
|
|
6411
6535
|
overflow: hidden;
|
|
6412
6536
|
}
|
|
6413
6537
|
.command-palette__search {
|
|
@@ -6489,7 +6613,7 @@ a.q1-card:focus-visible {
|
|
|
6489
6613
|
font-size: 11px;
|
|
6490
6614
|
}
|
|
6491
6615
|
|
|
6492
|
-
/*
|
|
6616
|
+
/* 项通用后缀(对标外部参考 With Suffix):元信息文本/状态图标,右对齐、次要色。 */
|
|
6493
6617
|
.command-palette__suffix {
|
|
6494
6618
|
display: inline-flex;
|
|
6495
6619
|
align-items: center;
|
|
@@ -6551,7 +6675,7 @@ a.q1-card:focus-visible {
|
|
|
6551
6675
|
.modal-btn--primary:hover {
|
|
6552
6676
|
background: var(--q1-color-action-primary-hover, var(--q1-color-action-primary));
|
|
6553
6677
|
}
|
|
6554
|
-
/*
|
|
6678
|
+
/* 禁用主按钮(实测外部参考 Disabled actions:色彩降级、opacity 恒 1)。这是实心 CTA 按钮,
|
|
6555
6679
|
对标 Input/Select 已建立的「底色抬灰」表单控件禁用配方,而非 Radio 的描边控件配方——
|
|
6556
6680
|
gray-500 实底配 bg-canvas 字在暗色主题对比度不足,bg-subtle + text-muted 双主题都可读。 */
|
|
6557
6681
|
.modal-btn--primary:disabled {
|
|
@@ -6563,10 +6687,9 @@ a.q1-card:focus-visible {
|
|
|
6563
6687
|
.modal-btn--primary:disabled:hover {
|
|
6564
6688
|
background: var(--q1-color-bg-subtle);
|
|
6565
6689
|
}
|
|
6566
|
-
/*
|
|
6567
|
-
.
|
|
6690
|
+
/* 单按钮场景铺满整行(对标外部参考 Single button):布局属于模态框上下文,不进 Button 本体。 */
|
|
6691
|
+
.modal__action--full {
|
|
6568
6692
|
width: 100%;
|
|
6569
|
-
text-align: center;
|
|
6570
6693
|
}
|
|
6571
6694
|
.modal {
|
|
6572
6695
|
position: fixed;
|
|
@@ -6584,7 +6707,7 @@ a.q1-card:focus-visible {
|
|
|
6584
6707
|
background: color-mix(in srgb, var(--q1-color-shadow) 45%, transparent);
|
|
6585
6708
|
cursor: default;
|
|
6586
6709
|
}
|
|
6587
|
-
/*
|
|
6710
|
+
/* 实测外部参考:540px 宽(我们原 480)。 */
|
|
6588
6711
|
.modal__dialog {
|
|
6589
6712
|
position: relative;
|
|
6590
6713
|
width: 100%;
|
|
@@ -6592,7 +6715,7 @@ a.q1-card:focus-visible {
|
|
|
6592
6715
|
border: 1px solid var(--q1-color-border-overlay);
|
|
6593
6716
|
border-radius: var(--q1-radius-4);
|
|
6594
6717
|
background: var(--q1-color-bg-panel);
|
|
6595
|
-
box-shadow:
|
|
6718
|
+
box-shadow: var(--q1-shadow-modal);
|
|
6596
6719
|
}
|
|
6597
6720
|
.modal__header {
|
|
6598
6721
|
display: flex;
|
|
@@ -6636,7 +6759,7 @@ a.q1-card:focus-visible {
|
|
|
6636
6759
|
.modal__body p {
|
|
6637
6760
|
margin: 0;
|
|
6638
6761
|
}
|
|
6639
|
-
/*
|
|
6762
|
+
/* 实测外部参考:取消靠左、主操作靠右(space-between),不是两个按钮一起挤右侧;
|
|
6640
6763
|
仅单个按钮(如确认型 Modal 的「完成」)时退回右对齐,避免孤零零挂在左边。 */
|
|
6641
6764
|
.modal__footer {
|
|
6642
6765
|
display: flex;
|
|
@@ -6713,7 +6836,7 @@ a.q1-card:focus-visible {
|
|
|
6713
6836
|
font-size: 13px;
|
|
6714
6837
|
color: var(--q1-color-red-700);
|
|
6715
6838
|
}
|
|
6716
|
-
/* loading
|
|
6839
|
+
/* loading 态主按钮的加载指示(对标外部参考 Loading 章):连续旋转,尊重 reduced-motion。 */
|
|
6717
6840
|
.destructive-modal__spinner {
|
|
6718
6841
|
margin-right: var(--q1-space-2);
|
|
6719
6842
|
vertical-align: -2px;
|
|
@@ -6830,7 +6953,7 @@ a.q1-card:focus-visible {
|
|
|
6830
6953
|
padding: var(--q1-space-4) var(--q1-space-6);
|
|
6831
6954
|
border-top: 1px solid var(--q1-color-border);
|
|
6832
6955
|
}
|
|
6833
|
-
/*
|
|
6956
|
+
/* 遮罩(对标外部参考):黑 80% 压暗底层页面,拦截外部点击但点击不关闭;恒黑 token 两主题一致。 */
|
|
6834
6957
|
.sheet__backdrop {
|
|
6835
6958
|
position: fixed;
|
|
6836
6959
|
inset: 0;
|
|
@@ -6850,7 +6973,7 @@ a.q1-card:focus-visible {
|
|
|
6850
6973
|
}
|
|
6851
6974
|
}
|
|
6852
6975
|
|
|
6853
|
-
/*
|
|
6976
|
+
/* 悬浮圆角面板(对标外部参考形态):四边不贴屏,inset 12 + 圆角 + 全边框。 */
|
|
6854
6977
|
.sheet__panel {
|
|
6855
6978
|
position: fixed;
|
|
6856
6979
|
z-index: 70;
|
|
@@ -6920,7 +7043,7 @@ a.q1-card:focus-visible {
|
|
|
6920
7043
|
transform: translateY(calc(100% + var(--q1-space-3)));
|
|
6921
7044
|
}
|
|
6922
7045
|
}
|
|
6923
|
-
/*
|
|
7046
|
+
/* 头/尾无分隔线(对标外部参考):层级靠 24px 留白,不画线。 */
|
|
6924
7047
|
.sheet__header {
|
|
6925
7048
|
display: flex;
|
|
6926
7049
|
align-items: center;
|