anentrypoint-design 0.0.144 → 0.0.146
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/app-shell.css +74 -6
- package/community.css +457 -6
- package/dist/247420.css +763 -18
- package/dist/247420.js +14 -14
- package/package.json +1 -1
- package/src/components/community.js +142 -0
- package/src/components/files-modals.js +11 -1
- package/src/components/overlay-primitives.js +333 -0
- package/src/components/voice.js +253 -0
- package/src/components.js +10 -2
- package/src/kits/os/about-app.js +1 -1
- package/src/kits/os/app-panes.css +22 -13
- package/src/kits/os/files-app.js +7 -0
- package/src/kits/os/freddie-dashboard.css +24 -21
- package/src/kits/os/launcher.css +18 -9
- package/src/kits/os/theme.css +27 -25
- package/src/kits/os/wm.css +12 -7
- package/src/kits/os/wm.js +7 -3
- package/vendor/webjsx/attributes.js +20 -3
package/dist/247420.css
CHANGED
|
@@ -485,6 +485,10 @@
|
|
|
485
485
|
transition: background var(--dur-snap) var(--ease), color var(--dur-snap) var(--ease);
|
|
486
486
|
}
|
|
487
487
|
.ds-247420 .app-topbar nav a:hover { background: var(--bg-2); color: var(--fg); }
|
|
488
|
+
.ds-247420 .app-topbar nav a:focus-visible {
|
|
489
|
+
outline: 2px solid var(--accent);
|
|
490
|
+
outline-offset: 2px;
|
|
491
|
+
}
|
|
488
492
|
.ds-247420 .app-topbar nav a.active {
|
|
489
493
|
color: var(--accent-fg);
|
|
490
494
|
background: var(--accent);
|
|
@@ -511,13 +515,9 @@
|
|
|
511
515
|
font-family: inherit; font-size: inherit; color: var(--fg);
|
|
512
516
|
width: 100%;
|
|
513
517
|
}
|
|
514
|
-
.ds-247420 .app-search
|
|
518
|
+
.ds-247420 .app-search:focus-within {
|
|
515
519
|
outline: 2px solid var(--accent);
|
|
516
520
|
outline-offset: 2px;
|
|
517
|
-
background: var(--bg-2);
|
|
518
|
-
border-radius: var(--r-pill);
|
|
519
|
-
padding-left: 8px;
|
|
520
|
-
padding-right: 8px;
|
|
521
521
|
}
|
|
522
522
|
|
|
523
523
|
.ds-247420 .app-crumb {
|
|
@@ -554,6 +554,10 @@
|
|
|
554
554
|
margin-bottom: 2px;
|
|
555
555
|
}
|
|
556
556
|
.ds-247420 .app-side a:hover { background: var(--bg-2); color: var(--fg); }
|
|
557
|
+
.ds-247420 .app-side a:focus-visible {
|
|
558
|
+
outline: 2px solid var(--accent);
|
|
559
|
+
outline-offset: 2px;
|
|
560
|
+
}
|
|
557
561
|
.ds-247420 .app-side a.active {
|
|
558
562
|
color: var(--accent-fg);
|
|
559
563
|
background: var(--accent);
|
|
@@ -611,6 +615,10 @@
|
|
|
611
615
|
.ds-247420 .btn-ghost { background: transparent; color: var(--fg); box-shadow: inset 0 0 0 1.5px var(--rule-strong); }
|
|
612
616
|
.ds-247420 .btn-ghost:hover { background: var(--bg-2); }
|
|
613
617
|
.ds-247420 .btn:active, .ds-247420 .btn-primary:active, .ds-247420 .btn-ghost:active { transform: translateY(1px); }
|
|
618
|
+
.ds-247420 .btn:focus-visible, .ds-247420 .btn-primary:focus-visible, .ds-247420 .btn-ghost:focus-visible {
|
|
619
|
+
outline: 2px solid var(--accent);
|
|
620
|
+
outline-offset: 2px;
|
|
621
|
+
}
|
|
614
622
|
|
|
615
623
|
.ds-247420 .chip {
|
|
616
624
|
display: inline-flex; align-items: center; gap: 6px;
|
|
@@ -1506,6 +1514,61 @@
|
|
|
1506
1514
|
.ds-247420 .ds-file-row[draggable="true"] { cursor: grab; }
|
|
1507
1515
|
.ds-247420 .ds-file-row[draggable="true"]:active { cursor: grabbing; }
|
|
1508
1516
|
|
|
1517
|
+
/* Multi-select — per-row checkbox overlay + selected state + bulk bar. */
|
|
1518
|
+
.ds-247420 .ds-file-row { position: relative; }
|
|
1519
|
+
.ds-247420 .ds-file-check {
|
|
1520
|
+
position: absolute; left: 4px; top: 50%; transform: translateY(-50%);
|
|
1521
|
+
width: 18px; height: 18px; padding: 0; z-index: 1;
|
|
1522
|
+
display: inline-flex; align-items: center; justify-content: center;
|
|
1523
|
+
border: var(--bw-hair) solid var(--rule); border-radius: 5px;
|
|
1524
|
+
background: var(--bg); color: var(--accent-fg);
|
|
1525
|
+
font-size: 11px; line-height: 1; cursor: pointer;
|
|
1526
|
+
opacity: 0; transition: opacity var(--dur-base) var(--ease), background var(--dur-snap) var(--ease);
|
|
1527
|
+
}
|
|
1528
|
+
.ds-247420 .ds-file-row:hover .ds-file-check,
|
|
1529
|
+
.ds-247420 .ds-file-row:focus-within .ds-file-check,
|
|
1530
|
+
.ds-247420 .ds-file-check.on { opacity: 1; }
|
|
1531
|
+
/* Touch / coarse-pointer devices have no hover — keep checkboxes visible so
|
|
1532
|
+
multi-select is reachable without a pointer. */
|
|
1533
|
+
@media (hover: none), (pointer: coarse) {
|
|
1534
|
+
.ds-247420 .ds-file-check { opacity: 1; }
|
|
1535
|
+
}
|
|
1536
|
+
.ds-247420 .ds-file-check.on { background: var(--accent); border-color: var(--accent); }
|
|
1537
|
+
.ds-247420 .ds-file-row.selected {
|
|
1538
|
+
background: var(--accent-tint);
|
|
1539
|
+
border-color: var(--accent);
|
|
1540
|
+
}
|
|
1541
|
+
.ds-247420 .ds-file-row.selected:hover { background: color-mix(in oklab, var(--accent) 22%, var(--bg)); }
|
|
1542
|
+
|
|
1543
|
+
.ds-247420 .ds-bulk-bar {
|
|
1544
|
+
display: flex; align-items: center; flex-wrap: wrap; gap: var(--space-2);
|
|
1545
|
+
padding: 10px 14px; border-radius: var(--r-2);
|
|
1546
|
+
background: var(--accent-tint);
|
|
1547
|
+
border: var(--bw-hair) solid var(--accent);
|
|
1548
|
+
position: sticky; top: var(--space-2); z-index: 2;
|
|
1549
|
+
}
|
|
1550
|
+
.ds-247420 .ds-bulk-count {
|
|
1551
|
+
font-weight: 600; font-size: var(--fs-sm); margin-right: auto;
|
|
1552
|
+
}
|
|
1553
|
+
|
|
1554
|
+
/* Keyboard-shortcuts hint — compact two-column legend. */
|
|
1555
|
+
.ds-247420 .ds-shortcuts-hint {
|
|
1556
|
+
display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
|
|
1557
|
+
gap: 4px var(--space-3);
|
|
1558
|
+
padding: var(--space-3) var(--space-4);
|
|
1559
|
+
background: var(--bg-2); border: var(--bw-hair) solid var(--rule);
|
|
1560
|
+
border-radius: var(--r-2); font-size: var(--fs-xs);
|
|
1561
|
+
}
|
|
1562
|
+
.ds-247420 .ds-shortcut-row { display: flex; align-items: center; gap: var(--space-2); }
|
|
1563
|
+
.ds-247420 .ds-kbd {
|
|
1564
|
+
display: inline-block; min-width: 0;
|
|
1565
|
+
padding: 2px 7px; border-radius: 6px;
|
|
1566
|
+
background: var(--bg); border: var(--bw-hair) solid var(--rule);
|
|
1567
|
+
border-bottom-width: 2px;
|
|
1568
|
+
font-family: var(--ff-mono); font-size: var(--fs-micro); color: var(--fg-2);
|
|
1569
|
+
white-space: nowrap;
|
|
1570
|
+
}
|
|
1571
|
+
|
|
1509
1572
|
/* ============================================================
|
|
1510
1573
|
Theme toggle (segmented + compact) — bound to src/theme.js
|
|
1511
1574
|
============================================================ */
|
|
@@ -1581,7 +1644,7 @@
|
|
|
1581
1644
|
.ds-247420 .chat-msg { display: flex; gap: 12px; align-items: flex-start; padding: 6px 0; position: relative; min-width: 0; }
|
|
1582
1645
|
.ds-247420 .chat-msg.you { flex-direction: row-reverse; }
|
|
1583
1646
|
.ds-247420 .chat-msg.you .chat-stack { align-items: flex-end; }
|
|
1584
|
-
.ds-247420 .chat-msg:hover { background: color-mix(in oklab, var(--fg)
|
|
1647
|
+
.ds-247420 .chat-msg:hover { background: color-mix(in oklab, var(--fg) 4%, transparent); padding: 6px 0; margin: 0; border-radius: 8px; transition: background var(--dur-base) var(--ease); }
|
|
1585
1648
|
|
|
1586
1649
|
.ds-247420 .chat-avatar {
|
|
1587
1650
|
width: 36px; height: 36px; flex-shrink: 0;
|
|
@@ -1909,6 +1972,11 @@
|
|
|
1909
1972
|
.ds-247420 .chat-composer button:hover { transform: scale(1.04); }
|
|
1910
1973
|
.ds-247420 .chat-composer .send:active,
|
|
1911
1974
|
.ds-247420 .chat-composer button:active { transform: scale(0.96); }
|
|
1975
|
+
.ds-247420 .chat-composer .send:focus-visible,
|
|
1976
|
+
.ds-247420 .chat-composer button:focus-visible {
|
|
1977
|
+
outline: 2px solid var(--accent);
|
|
1978
|
+
outline-offset: 2px;
|
|
1979
|
+
}
|
|
1912
1980
|
.ds-247420 .chat-composer .send:disabled,
|
|
1913
1981
|
.ds-247420 .chat-composer button:disabled {
|
|
1914
1982
|
background: var(--bg-3); color: var(--fg-3); cursor: not-allowed; transform: none;
|
|
@@ -2866,9 +2934,9 @@
|
|
|
2866
2934
|
display: inline-flex;
|
|
2867
2935
|
align-items: center;
|
|
2868
2936
|
justify-content: center;
|
|
2869
|
-
width:
|
|
2870
|
-
height:
|
|
2871
|
-
padding:
|
|
2937
|
+
width: 28px;
|
|
2938
|
+
height: 28px;
|
|
2939
|
+
padding: 4px;
|
|
2872
2940
|
border: 0;
|
|
2873
2941
|
background: transparent;
|
|
2874
2942
|
color: var(--fg-3);
|
|
@@ -3045,9 +3113,9 @@
|
|
|
3045
3113
|
.ds-247420 .cm-channel-item.active .cm-ch-actions { opacity: 0.6; }
|
|
3046
3114
|
|
|
3047
3115
|
.ds-247420 .cm-ch-action-btn {
|
|
3048
|
-
width:
|
|
3049
|
-
height:
|
|
3050
|
-
padding:
|
|
3116
|
+
width: 28px;
|
|
3117
|
+
height: 28px;
|
|
3118
|
+
padding: 4px;
|
|
3051
3119
|
display: inline-flex;
|
|
3052
3120
|
align-items: center;
|
|
3053
3121
|
justify-content: center;
|
|
@@ -3615,6 +3683,12 @@
|
|
|
3615
3683
|
border-radius: var(--r-1);
|
|
3616
3684
|
}
|
|
3617
3685
|
|
|
3686
|
+
.ds-247420 .cm-server-header:focus-visible,
|
|
3687
|
+
.ds-247420 .cm-category-header:focus-visible {
|
|
3688
|
+
outline: 2px solid var(--accent);
|
|
3689
|
+
outline-offset: -2px;
|
|
3690
|
+
}
|
|
3691
|
+
|
|
3618
3692
|
.ds-247420 .cm-member-item:focus-visible {
|
|
3619
3693
|
outline: 2px solid var(--accent);
|
|
3620
3694
|
outline-offset: -2px;
|
|
@@ -3628,6 +3702,121 @@
|
|
|
3628
3702
|
border-radius: var(--r-1);
|
|
3629
3703
|
}
|
|
3630
3704
|
|
|
3705
|
+
/* ---------- mobile header ---------- */
|
|
3706
|
+
.ds-247420 .cm-mobile-header {
|
|
3707
|
+
display: flex;
|
|
3708
|
+
align-items: center;
|
|
3709
|
+
gap: var(--space-2);
|
|
3710
|
+
height: 48px;
|
|
3711
|
+
padding: 0 var(--space-2);
|
|
3712
|
+
background: var(--bg-2);
|
|
3713
|
+
border-bottom: 1px solid var(--panel-3);
|
|
3714
|
+
}
|
|
3715
|
+
.ds-247420 .cm-mh-btn {
|
|
3716
|
+
flex: none;
|
|
3717
|
+
display: inline-flex;
|
|
3718
|
+
align-items: center;
|
|
3719
|
+
justify-content: center;
|
|
3720
|
+
width: 36px;
|
|
3721
|
+
height: 36px;
|
|
3722
|
+
border: none;
|
|
3723
|
+
background: transparent;
|
|
3724
|
+
color: var(--fg);
|
|
3725
|
+
font-size: 18px;
|
|
3726
|
+
line-height: 1;
|
|
3727
|
+
cursor: pointer;
|
|
3728
|
+
border-radius: var(--r-1);
|
|
3729
|
+
}
|
|
3730
|
+
.ds-247420 .cm-mh-btn:hover { background: var(--panel-3); }
|
|
3731
|
+
.ds-247420 .cm-mh-btn:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
|
|
3732
|
+
.ds-247420 .cm-mh-title {
|
|
3733
|
+
flex: 1 1 auto;
|
|
3734
|
+
min-width: 0;
|
|
3735
|
+
font-family: var(--font-mono, monospace);
|
|
3736
|
+
font-weight: 600;
|
|
3737
|
+
color: var(--fg);
|
|
3738
|
+
white-space: nowrap;
|
|
3739
|
+
overflow: hidden;
|
|
3740
|
+
text-overflow: ellipsis;
|
|
3741
|
+
}
|
|
3742
|
+
|
|
3743
|
+
/* ---------- reply bar ---------- */
|
|
3744
|
+
.ds-247420 .cm-reply-bar {
|
|
3745
|
+
display: flex;
|
|
3746
|
+
align-items: center;
|
|
3747
|
+
gap: var(--space-2);
|
|
3748
|
+
padding: var(--space-1) var(--space-2);
|
|
3749
|
+
background: var(--bg-2);
|
|
3750
|
+
border-left: 3px solid var(--accent);
|
|
3751
|
+
font-size: 0.85rem;
|
|
3752
|
+
}
|
|
3753
|
+
.ds-247420 .cm-rb-label { flex: none; color: var(--fg-2); }
|
|
3754
|
+
.ds-247420 .cm-rb-author { color: var(--accent); font-weight: 600; }
|
|
3755
|
+
.ds-247420 .cm-rb-preview {
|
|
3756
|
+
flex: 1 1 auto;
|
|
3757
|
+
min-width: 0;
|
|
3758
|
+
color: var(--fg-2);
|
|
3759
|
+
white-space: nowrap;
|
|
3760
|
+
overflow: hidden;
|
|
3761
|
+
text-overflow: ellipsis;
|
|
3762
|
+
}
|
|
3763
|
+
.ds-247420 .cm-rb-cancel {
|
|
3764
|
+
flex: none;
|
|
3765
|
+
width: 22px;
|
|
3766
|
+
height: 22px;
|
|
3767
|
+
border: none;
|
|
3768
|
+
background: transparent;
|
|
3769
|
+
color: var(--fg-2);
|
|
3770
|
+
font-size: 13px;
|
|
3771
|
+
line-height: 1;
|
|
3772
|
+
cursor: pointer;
|
|
3773
|
+
border-radius: var(--r-1);
|
|
3774
|
+
}
|
|
3775
|
+
.ds-247420 .cm-rb-cancel:hover { background: var(--panel-3); color: var(--fg); }
|
|
3776
|
+
.ds-247420 .cm-rb-cancel:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
|
|
3777
|
+
|
|
3778
|
+
/* ---------- banner ---------- */
|
|
3779
|
+
.ds-247420 .cm-banner {
|
|
3780
|
+
display: flex;
|
|
3781
|
+
align-items: center;
|
|
3782
|
+
gap: var(--space-2);
|
|
3783
|
+
width: 100%;
|
|
3784
|
+
padding: var(--space-2) var(--space-3);
|
|
3785
|
+
font-size: 0.875rem;
|
|
3786
|
+
font-weight: 500;
|
|
3787
|
+
}
|
|
3788
|
+
.ds-247420 .cm-banner.clickable { cursor: pointer; }
|
|
3789
|
+
.ds-247420 .cm-banner-msg { flex: 1 1 auto; min-width: 0; }
|
|
3790
|
+
.ds-247420 .cm-banner-action {
|
|
3791
|
+
flex: none;
|
|
3792
|
+
border: 1px solid currentColor;
|
|
3793
|
+
background: transparent;
|
|
3794
|
+
color: inherit;
|
|
3795
|
+
font: inherit;
|
|
3796
|
+
font-weight: 600;
|
|
3797
|
+
padding: 2px var(--space-2);
|
|
3798
|
+
border-radius: var(--r-1);
|
|
3799
|
+
cursor: pointer;
|
|
3800
|
+
}
|
|
3801
|
+
.ds-247420 .cm-banner-action:hover { background: color-mix(in oklab, currentColor 16%, transparent); }
|
|
3802
|
+
.ds-247420 .cm-banner-action:focus-visible { outline: 2px solid currentColor; outline-offset: 2px; }
|
|
3803
|
+
.ds-247420 .cm-banner.tone-warning {
|
|
3804
|
+
background: color-mix(in oklab, var(--flame) 18%, var(--bg));
|
|
3805
|
+
color: var(--flame);
|
|
3806
|
+
}
|
|
3807
|
+
.ds-247420 .cm-banner.tone-success {
|
|
3808
|
+
background: color-mix(in oklab, var(--success) 18%, var(--bg));
|
|
3809
|
+
color: var(--success);
|
|
3810
|
+
}
|
|
3811
|
+
.ds-247420 .cm-banner.tone-error {
|
|
3812
|
+
background: color-mix(in oklab, var(--danger) 18%, var(--bg));
|
|
3813
|
+
color: var(--danger);
|
|
3814
|
+
}
|
|
3815
|
+
.ds-247420 .cm-banner.tone-info {
|
|
3816
|
+
background: var(--accent-tint);
|
|
3817
|
+
color: var(--accent);
|
|
3818
|
+
}
|
|
3819
|
+
|
|
3631
3820
|
/* ---------- prefers-reduced-motion: kill the transitions that were not previously guarded ---------- */
|
|
3632
3821
|
@media (prefers-reduced-motion: reduce) {
|
|
3633
3822
|
.ds-247420 .cm-server-icon,
|
|
@@ -3642,6 +3831,336 @@
|
|
|
3642
3831
|
}
|
|
3643
3832
|
}
|
|
3644
3833
|
|
|
3834
|
+
/* ============================================================
|
|
3835
|
+
Voice surfaces (vx-*) — PTT, VAD meter, webcam, settings, queue
|
|
3836
|
+
============================================================ */
|
|
3837
|
+
|
|
3838
|
+
.ds-247420 .vx-ptt {
|
|
3839
|
+
position: relative;
|
|
3840
|
+
display: inline-flex;
|
|
3841
|
+
flex-direction: column;
|
|
3842
|
+
align-items: center;
|
|
3843
|
+
justify-content: center;
|
|
3844
|
+
gap: var(--space-1);
|
|
3845
|
+
min-width: 120px;
|
|
3846
|
+
min-height: 120px;
|
|
3847
|
+
padding: var(--space-3);
|
|
3848
|
+
border: var(--bw-rule) solid var(--rule-strong);
|
|
3849
|
+
border-radius: var(--r-pill);
|
|
3850
|
+
background: var(--bg-2);
|
|
3851
|
+
color: var(--fg);
|
|
3852
|
+
font-family: var(--ff-body);
|
|
3853
|
+
font-size: var(--fs-sm);
|
|
3854
|
+
font-weight: 600;
|
|
3855
|
+
cursor: pointer;
|
|
3856
|
+
user-select: none;
|
|
3857
|
+
-webkit-user-select: none;
|
|
3858
|
+
touch-action: none;
|
|
3859
|
+
transition: background var(--dur-base) var(--ease), border-color var(--dur-base) var(--ease), transform var(--dur-snap) var(--ease);
|
|
3860
|
+
}
|
|
3861
|
+
.ds-247420 .vx-ptt:active { transform: scale(0.97); }
|
|
3862
|
+
.ds-247420 .vx-ptt-icon { font-size: var(--fs-xl); line-height: 1; }
|
|
3863
|
+
.ds-247420 .vx-ptt-label { font-size: var(--fs-tiny); letter-spacing: var(--tr-label); text-transform: uppercase; }
|
|
3864
|
+
.ds-247420 .vx-ptt-glow {
|
|
3865
|
+
position: absolute; inset: -4px;
|
|
3866
|
+
border-radius: inherit;
|
|
3867
|
+
pointer-events: none;
|
|
3868
|
+
opacity: 0;
|
|
3869
|
+
}
|
|
3870
|
+
.ds-247420 .vx-ptt-recording, .ds-247420 .vx-ptt-live {
|
|
3871
|
+
background: var(--accent);
|
|
3872
|
+
color: var(--accent-fg);
|
|
3873
|
+
border-color: var(--accent);
|
|
3874
|
+
}
|
|
3875
|
+
.ds-247420 .vx-ptt-recording .vx-ptt-glow, .ds-247420 .vx-ptt-live .vx-ptt-glow {
|
|
3876
|
+
opacity: 1;
|
|
3877
|
+
box-shadow: 0 0 0 0 color-mix(in oklab, var(--accent) 60%, transparent);
|
|
3878
|
+
animation: vx-pulse 1.4s var(--ease) infinite;
|
|
3879
|
+
}
|
|
3880
|
+
.ds-247420 .vx-ptt-vad {
|
|
3881
|
+
border-color: var(--green-2);
|
|
3882
|
+
background: color-mix(in oklab, var(--green) 16%, var(--bg-2));
|
|
3883
|
+
}
|
|
3884
|
+
@keyframes vx-pulse {
|
|
3885
|
+
0% { box-shadow: 0 0 0 0 color-mix(in oklab, var(--accent) 55%, transparent); }
|
|
3886
|
+
70% { box-shadow: 0 0 0 14px color-mix(in oklab, var(--accent) 0%, transparent); }
|
|
3887
|
+
100% { box-shadow: 0 0 0 0 color-mix(in oklab, var(--accent) 0%, transparent); }
|
|
3888
|
+
}
|
|
3889
|
+
|
|
3890
|
+
.ds-247420 .vx-vad { display: flex; flex-direction: column; gap: var(--space-1); width: 100%; }
|
|
3891
|
+
.ds-247420 .vx-vad-track {
|
|
3892
|
+
position: relative;
|
|
3893
|
+
height: 12px;
|
|
3894
|
+
border-radius: var(--r-pill);
|
|
3895
|
+
background: var(--bg-3);
|
|
3896
|
+
overflow: visible;
|
|
3897
|
+
}
|
|
3898
|
+
.ds-247420 .vx-vad-fill {
|
|
3899
|
+
position: absolute; left: 0; top: 0; bottom: 0;
|
|
3900
|
+
border-radius: var(--r-pill);
|
|
3901
|
+
background: var(--fg-3);
|
|
3902
|
+
transition: width var(--dur-snap) linear;
|
|
3903
|
+
}
|
|
3904
|
+
.ds-247420 .vx-vad-fill-over { background: var(--green); }
|
|
3905
|
+
.ds-247420 .vx-vad-marker {
|
|
3906
|
+
position: absolute; top: -3px; bottom: -3px;
|
|
3907
|
+
width: var(--bw-rule);
|
|
3908
|
+
background: var(--accent);
|
|
3909
|
+
transform: translateX(-50%);
|
|
3910
|
+
pointer-events: none;
|
|
3911
|
+
}
|
|
3912
|
+
.ds-247420 .vx-vad-range {
|
|
3913
|
+
position: absolute; inset: 0;
|
|
3914
|
+
width: 100%; height: 100%;
|
|
3915
|
+
margin: 0; opacity: 0;
|
|
3916
|
+
cursor: pointer;
|
|
3917
|
+
}
|
|
3918
|
+
.ds-247420 .vx-vad-readout {
|
|
3919
|
+
display: flex; justify-content: space-between;
|
|
3920
|
+
font-family: var(--ff-mono);
|
|
3921
|
+
font-size: var(--fs-micro);
|
|
3922
|
+
color: var(--fg-3);
|
|
3923
|
+
}
|
|
3924
|
+
|
|
3925
|
+
.ds-247420 .vx-cam { display: flex; flex-direction: column; gap: var(--space-2); }
|
|
3926
|
+
.ds-247420 .vx-cam-stage {
|
|
3927
|
+
position: relative;
|
|
3928
|
+
aspect-ratio: 4 / 3;
|
|
3929
|
+
width: 100%;
|
|
3930
|
+
border-radius: var(--r-2);
|
|
3931
|
+
overflow: hidden;
|
|
3932
|
+
background: var(--bg-3);
|
|
3933
|
+
}
|
|
3934
|
+
.ds-247420 .vx-cam-video { width: 100%; height: 100%; object-fit: cover; display: block; }
|
|
3935
|
+
.ds-247420 .vx-cam-placeholder {
|
|
3936
|
+
position: absolute; inset: 0;
|
|
3937
|
+
display: flex; flex-direction: column;
|
|
3938
|
+
align-items: center; justify-content: center;
|
|
3939
|
+
gap: var(--space-2);
|
|
3940
|
+
color: var(--fg-3);
|
|
3941
|
+
font-size: var(--fs-sm);
|
|
3942
|
+
}
|
|
3943
|
+
.ds-247420 .vx-cam-placeholder span:first-child { font-size: var(--fs-h3); }
|
|
3944
|
+
.ds-247420 .vx-cam-controls { display: flex; gap: var(--space-2); align-items: center; }
|
|
3945
|
+
.ds-247420 .vx-cam-controls .vx-select { flex: 1; }
|
|
3946
|
+
|
|
3947
|
+
.ds-247420 .vx-select {
|
|
3948
|
+
appearance: none;
|
|
3949
|
+
padding: var(--space-1) var(--space-2);
|
|
3950
|
+
border: var(--bw-hair) solid var(--rule-strong);
|
|
3951
|
+
border-radius: var(--r-1);
|
|
3952
|
+
background: var(--bg-2);
|
|
3953
|
+
color: var(--fg);
|
|
3954
|
+
font-family: var(--ff-body);
|
|
3955
|
+
font-size: var(--fs-sm);
|
|
3956
|
+
cursor: pointer;
|
|
3957
|
+
}
|
|
3958
|
+
.ds-247420 .vx-btn {
|
|
3959
|
+
padding: var(--space-1) var(--space-3);
|
|
3960
|
+
border: var(--bw-hair) solid var(--rule-strong);
|
|
3961
|
+
border-radius: var(--r-1);
|
|
3962
|
+
background: var(--bg-2);
|
|
3963
|
+
color: var(--fg);
|
|
3964
|
+
font-family: var(--ff-body);
|
|
3965
|
+
font-size: var(--fs-sm);
|
|
3966
|
+
font-weight: 600;
|
|
3967
|
+
cursor: pointer;
|
|
3968
|
+
transition: background var(--dur-base) var(--ease);
|
|
3969
|
+
}
|
|
3970
|
+
.ds-247420 .vx-btn-on, .ds-247420 .vx-btn-primary { background: var(--accent); color: var(--accent-fg); border-color: var(--accent); }
|
|
3971
|
+
|
|
3972
|
+
.ds-247420 .vx-modal-backdrop {
|
|
3973
|
+
position: fixed; inset: 0;
|
|
3974
|
+
z-index: var(--z-modal);
|
|
3975
|
+
display: flex; align-items: center; justify-content: center;
|
|
3976
|
+
padding: var(--space-3);
|
|
3977
|
+
background: color-mix(in oklab, var(--ink) 55%, transparent);
|
|
3978
|
+
}
|
|
3979
|
+
.ds-247420 .vx-modal {
|
|
3980
|
+
width: 100%; max-width: 440px;
|
|
3981
|
+
max-height: 90vh;
|
|
3982
|
+
display: flex; flex-direction: column;
|
|
3983
|
+
border-radius: var(--r-3);
|
|
3984
|
+
background: var(--bg);
|
|
3985
|
+
color: var(--fg);
|
|
3986
|
+
box-shadow: var(--shadow-3);
|
|
3987
|
+
overflow: hidden;
|
|
3988
|
+
}
|
|
3989
|
+
.ds-247420 .vx-modal-head {
|
|
3990
|
+
display: flex; align-items: center; justify-content: space-between;
|
|
3991
|
+
padding: var(--space-3);
|
|
3992
|
+
border-bottom: var(--bw-hair) solid var(--rule);
|
|
3993
|
+
}
|
|
3994
|
+
.ds-247420 .vx-modal-title { margin: 0; font-size: var(--fs-lg); font-weight: 600; }
|
|
3995
|
+
.ds-247420 .vx-modal-x {
|
|
3996
|
+
border: 0; background: transparent; color: var(--fg-3);
|
|
3997
|
+
font-size: var(--fs-xl); line-height: 1; cursor: pointer; padding: 0 var(--space-1);
|
|
3998
|
+
}
|
|
3999
|
+
.ds-247420 .vx-modal-body { padding: var(--space-3); overflow-y: auto; display: flex; flex-direction: column; gap: var(--space-3); }
|
|
4000
|
+
.ds-247420 .vx-modal-foot {
|
|
4001
|
+
display: flex; justify-content: flex-end; gap: var(--space-2);
|
|
4002
|
+
padding: var(--space-3);
|
|
4003
|
+
border-top: var(--bw-hair) solid var(--rule);
|
|
4004
|
+
}
|
|
4005
|
+
.ds-247420 .vx-section { display: flex; flex-direction: column; gap: var(--space-2); }
|
|
4006
|
+
.ds-247420 .vx-section-label {
|
|
4007
|
+
font-family: var(--ff-mono);
|
|
4008
|
+
font-size: var(--fs-micro);
|
|
4009
|
+
letter-spacing: var(--tr-label);
|
|
4010
|
+
text-transform: uppercase;
|
|
4011
|
+
color: var(--fg-3);
|
|
4012
|
+
}
|
|
4013
|
+
.ds-247420 .vx-segmented { display: flex; gap: var(--space-1); }
|
|
4014
|
+
.ds-247420 .vx-seg {
|
|
4015
|
+
flex: 1;
|
|
4016
|
+
padding: var(--space-1) var(--space-2);
|
|
4017
|
+
border: var(--bw-hair) solid var(--rule-strong);
|
|
4018
|
+
border-radius: var(--r-1);
|
|
4019
|
+
background: var(--bg-2);
|
|
4020
|
+
color: var(--fg);
|
|
4021
|
+
font-family: var(--ff-body);
|
|
4022
|
+
font-size: var(--fs-tiny);
|
|
4023
|
+
font-weight: 600;
|
|
4024
|
+
letter-spacing: var(--tr-caps);
|
|
4025
|
+
cursor: pointer;
|
|
4026
|
+
}
|
|
4027
|
+
.ds-247420 .vx-seg-on { background: var(--accent); color: var(--accent-fg); border-color: var(--accent); }
|
|
4028
|
+
.ds-247420 .vx-range-row { display: flex; align-items: center; gap: var(--space-2); }
|
|
4029
|
+
.ds-247420 .vx-range { flex: 1; accent-color: var(--accent); cursor: pointer; }
|
|
4030
|
+
.ds-247420 .vx-range-val { font-family: var(--ff-mono); font-size: var(--fs-tiny); color: var(--fg-2); min-width: 56px; text-align: right; }
|
|
4031
|
+
.ds-247420 .vx-toggle-row {
|
|
4032
|
+
display: flex; align-items: center; justify-content: space-between;
|
|
4033
|
+
font-size: var(--fs-sm);
|
|
4034
|
+
}
|
|
4035
|
+
.ds-247420 .vx-toggle { accent-color: var(--accent); width: 18px; height: 18px; cursor: pointer; }
|
|
4036
|
+
|
|
4037
|
+
.ds-247420 .vx-queue {
|
|
4038
|
+
display: flex; align-items: center; gap: var(--space-2);
|
|
4039
|
+
padding: var(--space-2);
|
|
4040
|
+
border-radius: var(--r-2);
|
|
4041
|
+
background: var(--bg-2);
|
|
4042
|
+
}
|
|
4043
|
+
.ds-247420 .vx-queue-empty { justify-content: center; }
|
|
4044
|
+
.ds-247420 .vx-queue-empty-text { color: var(--fg-3); font-size: var(--fs-tiny); font-family: var(--ff-mono); }
|
|
4045
|
+
.ds-247420 .vx-queue-ctrls { display: flex; gap: var(--space-1); flex-shrink: 0; }
|
|
4046
|
+
.ds-247420 .vx-queue-btn {
|
|
4047
|
+
width: 32px; height: 32px;
|
|
4048
|
+
display: inline-flex; align-items: center; justify-content: center;
|
|
4049
|
+
border: var(--bw-hair) solid var(--rule-strong);
|
|
4050
|
+
border-radius: var(--r-1);
|
|
4051
|
+
background: var(--bg-3);
|
|
4052
|
+
color: var(--fg);
|
|
4053
|
+
cursor: pointer;
|
|
4054
|
+
font-size: var(--fs-sm);
|
|
4055
|
+
}
|
|
4056
|
+
.ds-247420 .vx-queue-strip {
|
|
4057
|
+
display: flex; gap: var(--space-2);
|
|
4058
|
+
overflow-x: auto;
|
|
4059
|
+
flex: 1;
|
|
4060
|
+
padding-bottom: 2px;
|
|
4061
|
+
}
|
|
4062
|
+
.ds-247420 .vx-chip {
|
|
4063
|
+
display: inline-flex; align-items: center; gap: var(--space-1);
|
|
4064
|
+
flex-shrink: 0;
|
|
4065
|
+
padding: var(--space-1) var(--space-2);
|
|
4066
|
+
border: var(--bw-hair) solid var(--rule);
|
|
4067
|
+
border-radius: var(--r-pill);
|
|
4068
|
+
background: var(--bg-3);
|
|
4069
|
+
color: var(--fg);
|
|
4070
|
+
font-size: var(--fs-tiny);
|
|
4071
|
+
cursor: pointer;
|
|
4072
|
+
}
|
|
4073
|
+
.ds-247420 .vx-chip-current { border-color: var(--accent); background: color-mix(in oklab, var(--accent) 16%, var(--bg-3)); }
|
|
4074
|
+
.ds-247420 .vx-chip-live { border-color: var(--green-2); }
|
|
4075
|
+
.ds-247420 .vx-chip-dot { width: 8px; height: 8px; border-radius: var(--r-pill); background: var(--fg-3); flex-shrink: 0; }
|
|
4076
|
+
.ds-247420 .vx-chip-name { font-weight: 600; }
|
|
4077
|
+
.ds-247420 .vx-chip-dur { font-family: var(--ff-mono); color: var(--fg-3); }
|
|
4078
|
+
.ds-247420 .vx-chip-tag {
|
|
4079
|
+
font-family: var(--ff-mono); font-size: var(--fs-micro);
|
|
4080
|
+
color: var(--green); font-weight: 700; letter-spacing: var(--tr-caps);
|
|
4081
|
+
}
|
|
4082
|
+
|
|
4083
|
+
/* VoiceControls — vx-vc-* */
|
|
4084
|
+
.ds-247420 .vx-vc {
|
|
4085
|
+
display: flex; align-items: center; gap: var(--space-1);
|
|
4086
|
+
padding: var(--space-1) var(--space-2);
|
|
4087
|
+
background: var(--bg-2);
|
|
4088
|
+
border-top: var(--bw-hair) solid var(--rule);
|
|
4089
|
+
}
|
|
4090
|
+
.ds-247420 .vx-vc-btn {
|
|
4091
|
+
width: 36px; height: 36px;
|
|
4092
|
+
display: inline-flex; align-items: center; justify-content: center;
|
|
4093
|
+
border: var(--bw-hair) solid var(--rule-strong);
|
|
4094
|
+
border-radius: var(--r-1);
|
|
4095
|
+
background: var(--bg-3); color: var(--fg);
|
|
4096
|
+
cursor: pointer; font-size: 16px; line-height: 1;
|
|
4097
|
+
}
|
|
4098
|
+
.ds-247420 .vx-vc-btn:hover { background: var(--bg-4, var(--bg-3)); }
|
|
4099
|
+
.ds-247420 .vx-vc-on { background: var(--accent); color: var(--accent-fg, #fff); border-color: var(--accent); }
|
|
4100
|
+
.ds-247420 .vx-vc-disabled, .ds-247420 .vx-vc-btn:disabled { opacity: .4; cursor: not-allowed; }
|
|
4101
|
+
.ds-247420 .vx-vc-leave { margin-left: auto; background: var(--danger, #d04545); color: #fff; border-color: var(--danger, #d04545); }
|
|
4102
|
+
.ds-247420 .vx-vc-glyph { pointer-events: none; }
|
|
4103
|
+
|
|
4104
|
+
/* ThreadPanel — cm-thread-panel / cm-tp-* */
|
|
4105
|
+
.ds-247420 .cm-thread-panel {
|
|
4106
|
+
display: flex; flex-direction: column;
|
|
4107
|
+
height: 100%; min-height: 0;
|
|
4108
|
+
background: var(--bg-2); color: var(--fg);
|
|
4109
|
+
border-left: var(--bw-hair) solid var(--rule);
|
|
4110
|
+
}
|
|
4111
|
+
.ds-247420 .cm-tp-head {
|
|
4112
|
+
display: flex; align-items: center; justify-content: space-between;
|
|
4113
|
+
padding: var(--space-2); border-bottom: var(--bw-hair) solid var(--rule);
|
|
4114
|
+
}
|
|
4115
|
+
.ds-247420 .cm-tp-title { font-weight: 700; font-size: var(--fs-1, 14px); }
|
|
4116
|
+
.ds-247420 .cm-tp-head-actions { display: flex; gap: var(--space-1); }
|
|
4117
|
+
.ds-247420 .cm-tp-new, .ds-247420 .cm-tp-close {
|
|
4118
|
+
border: none; background: transparent; color: var(--fg-2, var(--fg));
|
|
4119
|
+
cursor: pointer; font-size: 16px; width: 24px; height: 24px; border-radius: var(--r-1);
|
|
4120
|
+
}
|
|
4121
|
+
.ds-247420 .cm-tp-new:hover, .ds-247420 .cm-tp-close:hover { background: var(--bg-3); color: var(--fg); }
|
|
4122
|
+
.ds-247420 .cm-tp-list { flex: 1; min-height: 0; overflow-y: auto; }
|
|
4123
|
+
.ds-247420 .cm-tp-item {
|
|
4124
|
+
display: flex; flex-direction: column; gap: 2px;
|
|
4125
|
+
width: 100%; text-align: left; cursor: pointer;
|
|
4126
|
+
padding: var(--space-2); border: none; background: transparent;
|
|
4127
|
+
border-bottom: var(--bw-hair) solid var(--rule);
|
|
4128
|
+
color: var(--fg);
|
|
4129
|
+
}
|
|
4130
|
+
.ds-247420 .cm-tp-item:hover { background: var(--bg-3); }
|
|
4131
|
+
.ds-247420 .cm-tp-item.is-active { background: var(--bg-3); box-shadow: inset 3px 0 0 var(--accent); }
|
|
4132
|
+
.ds-247420 .cm-tp-item.is-unread .cm-tp-item-title { font-weight: 700; }
|
|
4133
|
+
.ds-247420 .cm-tp-dot { position: absolute; width: 8px; height: 8px; border-radius: 50%; background: var(--accent); }
|
|
4134
|
+
.ds-247420 .cm-tp-item-title { font-size: var(--fs-1, 14px); }
|
|
4135
|
+
.ds-247420 .cm-tp-item-snippet { font-size: var(--fs-0, 12px); color: var(--fg-2, var(--fg)); opacity: .8; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
4136
|
+
.ds-247420 .cm-tp-item-meta { display: flex; gap: var(--space-2); font-size: var(--fs-micro, 11px); color: var(--fg-2, var(--fg)); opacity: .7; }
|
|
4137
|
+
.ds-247420 .cm-tp-empty, .ds-247420 .cm-forum-empty { padding: var(--space-3); text-align: center; color: var(--fg-2, var(--fg)); opacity: .7; }
|
|
4138
|
+
|
|
4139
|
+
/* ForumView — cm-forum / cm-forum-* */
|
|
4140
|
+
.ds-247420 .cm-forum { display: flex; flex-direction: column; height: 100%; min-height: 0; background: var(--bg-1, var(--bg-2)); color: var(--fg); }
|
|
4141
|
+
.ds-247420 .cm-forum-toolbar { display: flex; gap: var(--space-2); align-items: center; padding: var(--space-2); border-bottom: var(--bw-hair) solid var(--rule); }
|
|
4142
|
+
.ds-247420 .cm-forum-search { flex: 1; padding: var(--space-1) var(--space-2); border: var(--bw-hair) solid var(--rule-strong); border-radius: var(--r-1); background: var(--bg-3); color: var(--fg); }
|
|
4143
|
+
.ds-247420 .cm-forum-sort { padding: var(--space-1); border: var(--bw-hair) solid var(--rule-strong); border-radius: var(--r-1); background: var(--bg-3); color: var(--fg); }
|
|
4144
|
+
.ds-247420 .cm-forum-new { padding: var(--space-1) var(--space-2); border: none; border-radius: var(--r-1); background: var(--accent); color: var(--accent-fg, #fff); cursor: pointer; }
|
|
4145
|
+
.ds-247420 .cm-forum-list { flex: 1; min-height: 0; overflow-y: auto; }
|
|
4146
|
+
.ds-247420 .cm-forum-item { display: flex; flex-direction: column; gap: var(--space-1); width: 100%; text-align: left; cursor: pointer; padding: var(--space-2) var(--space-3); border: none; background: transparent; border-bottom: var(--bw-hair) solid var(--rule); color: var(--fg); }
|
|
4147
|
+
.ds-247420 .cm-forum-item:hover { background: var(--bg-3); }
|
|
4148
|
+
.ds-247420 .cm-forum-item-head { display: flex; align-items: center; justify-content: space-between; gap: var(--space-2); }
|
|
4149
|
+
.ds-247420 .cm-forum-item-title { font-weight: 700; font-size: var(--fs-1, 14px); }
|
|
4150
|
+
.ds-247420 .cm-forum-item-replies { font-size: var(--fs-0, 12px); color: var(--fg-2, var(--fg)); opacity: .8; white-space: nowrap; }
|
|
4151
|
+
.ds-247420 .cm-forum-item-snippet { font-size: var(--fs-0, 12px); color: var(--fg-2, var(--fg)); opacity: .85; }
|
|
4152
|
+
.ds-247420 .cm-forum-item-meta { display: flex; flex-wrap: wrap; gap: var(--space-2); align-items: center; font-size: var(--fs-micro, 11px); color: var(--fg-2, var(--fg)); opacity: .7; }
|
|
4153
|
+
.ds-247420 .cm-forum-item-tags { display: inline-flex; gap: 4px; }
|
|
4154
|
+
.ds-247420 .cm-forum-tag { padding: 1px 6px; border-radius: var(--r-1); background: var(--bg-3); border: var(--bw-hair) solid var(--rule); }
|
|
4155
|
+
|
|
4156
|
+
/* PageView — cm-page / cm-page-* */
|
|
4157
|
+
.ds-247420 .cm-page { display: flex; flex-direction: column; height: 100%; min-height: 0; overflow-y: auto; background: var(--bg-1, var(--bg-2)); color: var(--fg); }
|
|
4158
|
+
.ds-247420 .cm-page-head { display: flex; align-items: center; justify-content: space-between; gap: var(--space-2); padding: var(--space-3); border-bottom: var(--bw-hair) solid var(--rule); }
|
|
4159
|
+
.ds-247420 .cm-page-title { margin: 0; font-size: var(--fs-3, 20px); font-weight: 700; }
|
|
4160
|
+
.ds-247420 .cm-page-edit { padding: var(--space-1) var(--space-2); border: var(--bw-hair) solid var(--rule-strong); border-radius: var(--r-1); background: var(--bg-3); color: var(--fg); cursor: pointer; }
|
|
4161
|
+
.ds-247420 .cm-page-body { padding: var(--space-3); line-height: 1.6; }
|
|
4162
|
+
.ds-247420 .cm-page-empty { color: var(--fg-2, var(--fg)); opacity: .7; }
|
|
4163
|
+
|
|
3645
4164
|
/* chat.css */
|
|
3646
4165
|
/* chat.css — chat-specific styles. Currently empty; all chat styles live in
|
|
3647
4166
|
app-shell.css under the .chat-* prefix. Reserved for future split. */
|
|
@@ -3659,7 +4178,7 @@
|
|
|
3659
4178
|
background: var(--panel-1);
|
|
3660
4179
|
color: var(--panel-text);
|
|
3661
4180
|
border-bottom: 1px solid var(--rule);
|
|
3662
|
-
font: var(--
|
|
4181
|
+
font: var(--fs-tiny, 12px)/var(--lh-base, 1.4) var(--ff-mono, monospace);
|
|
3663
4182
|
}
|
|
3664
4183
|
.ds-247420 .ds-ep-toolbar.dense { padding: 4px 6px; gap: 4px; }
|
|
3665
4184
|
.ds-247420 .ds-ep-toolbar-leading,
|
|
@@ -3694,7 +4213,7 @@
|
|
|
3694
4213
|
.ds-247420 .ds-ep-tree {
|
|
3695
4214
|
display: flex; flex-direction: column;
|
|
3696
4215
|
color: var(--panel-text);
|
|
3697
|
-
font: var(--
|
|
4216
|
+
font: var(--fs-tiny, 12px)/var(--lh-base, 1.4) var(--ff-mono, monospace);
|
|
3698
4217
|
overflow: auto;
|
|
3699
4218
|
}
|
|
3700
4219
|
.ds-247420 .ds-ep-tree-item { display: flex; flex-direction: column; }
|
|
@@ -3733,7 +4252,7 @@
|
|
|
3733
4252
|
display: flex; flex-direction: column; gap: 6px;
|
|
3734
4253
|
padding: 8px;
|
|
3735
4254
|
color: var(--panel-text);
|
|
3736
|
-
font: var(--
|
|
4255
|
+
font: var(--fs-tiny, 12px)/var(--lh-base, 1.4) var(--ff-mono, monospace);
|
|
3737
4256
|
}
|
|
3738
4257
|
.ds-247420 .ds-ep-propfield {
|
|
3739
4258
|
display: grid;
|
|
@@ -4272,7 +4791,7 @@
|
|
|
4272
4791
|
.ds-247420 .ds-reorderable-horizontal { flex-direction: row; }
|
|
4273
4792
|
.ds-247420 .ds-reorder-item {
|
|
4274
4793
|
display: flex; align-items: center; gap: var(--space-2, 8px);
|
|
4275
|
-
padding: var(--space-1, 4px); border-radius: var(--
|
|
4794
|
+
padding: var(--space-1, 4px); border-radius: var(--r-1, 10px);
|
|
4276
4795
|
background: var(--panel-1); color: var(--panel-text);
|
|
4277
4796
|
transition: transform var(--dur-snap, 120ms) var(--ease, ease), opacity var(--dur-snap, 120ms) var(--ease, ease);
|
|
4278
4797
|
}
|
|
@@ -4280,7 +4799,7 @@
|
|
|
4280
4799
|
min-width: 44px; min-height: 44px;
|
|
4281
4800
|
display: inline-flex; align-items: center; justify-content: center;
|
|
4282
4801
|
appearance: none; background: transparent; color: var(--panel-text-2, var(--panel-text));
|
|
4283
|
-
border: 0; border-radius: var(--
|
|
4802
|
+
border: 0; border-radius: var(--r-1, 10px);
|
|
4284
4803
|
cursor: grab; font: 14px/1 var(--ff-mono, monospace); letter-spacing: -2px;
|
|
4285
4804
|
touch-action: none; user-select: none;
|
|
4286
4805
|
}
|
|
@@ -4304,9 +4823,235 @@
|
|
|
4304
4823
|
display: inline-block; font: 0.85em/1 var(--ff-mono, monospace);
|
|
4305
4824
|
padding: var(--space-1, 4px) calc(var(--space-1, 4px) * 1.5);
|
|
4306
4825
|
border: 1px solid var(--rule, var(--panel-text-3));
|
|
4307
|
-
border-radius: var(--
|
|
4826
|
+
border-radius: var(--r-1, 10px);
|
|
4308
4827
|
background: var(--panel-2, var(--panel-1)); color: var(--panel-text);
|
|
4309
4828
|
}
|
|
4310
4829
|
.ds-247420 .ds-kbd-group { margin: var(--space-3, 12px) 0; }
|
|
4311
4830
|
.ds-247420 .ds-kbd-group h3 { font-size: 0.9em; opacity: 0.7; margin: 0 0 var(--space-1, 4px); }
|
|
4312
4831
|
.ds-247420 .ds-kbd-group ul { list-style: none; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: var(--space-1, 4px); }
|
|
4832
|
+
|
|
4833
|
+
/* ---------------------------------------------------------------
|
|
4834
|
+
CommandPalette (ov-cmd)
|
|
4835
|
+
--------------------------------------------------------------- */
|
|
4836
|
+
.ds-247420 .ov-cmd-backdrop {
|
|
4837
|
+
position: fixed; inset: 0;
|
|
4838
|
+
z-index: var(--z-overlay, 1000);
|
|
4839
|
+
background: color-mix(in oklab, var(--fg) 32%, transparent);
|
|
4840
|
+
display: flex; align-items: flex-start; justify-content: center;
|
|
4841
|
+
padding: 12vh var(--space-3, 16px) var(--space-3, 16px);
|
|
4842
|
+
}
|
|
4843
|
+
.ds-247420 .ov-cmd-panel {
|
|
4844
|
+
width: min(560px, 100%);
|
|
4845
|
+
max-height: 64vh;
|
|
4846
|
+
display: flex; flex-direction: column;
|
|
4847
|
+
background: var(--bg-2); color: var(--fg);
|
|
4848
|
+
border: 1px solid var(--rule);
|
|
4849
|
+
border-radius: var(--r-2, 14px);
|
|
4850
|
+
box-shadow: var(--shadow-3, 0 12px 32px rgba(0,0,0,0.3));
|
|
4851
|
+
overflow: hidden;
|
|
4852
|
+
}
|
|
4853
|
+
.ds-247420 .ov-cmd-input {
|
|
4854
|
+
appearance: none; border: 0;
|
|
4855
|
+
border-bottom: 1px solid var(--rule);
|
|
4856
|
+
background: transparent; color: var(--fg);
|
|
4857
|
+
padding: var(--space-3, 16px);
|
|
4858
|
+
font: var(--fs-body, 16px)/1.4 var(--ff-body, sans-serif);
|
|
4859
|
+
outline: none;
|
|
4860
|
+
}
|
|
4861
|
+
.ds-247420 .ov-cmd-input::placeholder { color: var(--fg-3); }
|
|
4862
|
+
.ds-247420 .ov-cmd-list { overflow: auto; padding: var(--space-1, 4px); min-height: 0; }
|
|
4863
|
+
.ds-247420 .ov-cmd-group {
|
|
4864
|
+
padding: var(--space-2, 8px) var(--space-2, 8px) var(--space-1, 4px);
|
|
4865
|
+
font: var(--fs-micro, 11px)/1 var(--ff-mono, monospace);
|
|
4866
|
+
text-transform: uppercase; letter-spacing: var(--tr-label, 0.1em);
|
|
4867
|
+
color: var(--fg-3);
|
|
4868
|
+
}
|
|
4869
|
+
.ds-247420 .ov-cmd-item {
|
|
4870
|
+
display: flex; align-items: center; gap: var(--space-2, 8px);
|
|
4871
|
+
width: 100%; min-height: 40px;
|
|
4872
|
+
padding: var(--space-2, 8px) var(--space-3, 16px);
|
|
4873
|
+
background: transparent; border: 0;
|
|
4874
|
+
color: var(--fg); font: inherit; text-align: left;
|
|
4875
|
+
border-radius: var(--r-1, 10px); cursor: pointer;
|
|
4876
|
+
}
|
|
4877
|
+
.ds-247420 .ov-cmd-item.is-active { background: var(--accent); color: var(--accent-fg); }
|
|
4878
|
+
.ds-247420 .ov-cmd-glyph { width: 18px; display: inline-flex; justify-content: center; flex-shrink: 0; }
|
|
4879
|
+
.ds-247420 .ov-cmd-label { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
4880
|
+
.ds-247420 .ov-cmd-hint {
|
|
4881
|
+
flex-shrink: 0; color: var(--fg-3);
|
|
4882
|
+
font: var(--fs-tiny, 12px)/1 var(--ff-mono, monospace);
|
|
4883
|
+
}
|
|
4884
|
+
.ds-247420 .ov-cmd-item.is-active .ov-cmd-hint { color: var(--accent-fg); }
|
|
4885
|
+
.ds-247420 .ov-cmd-empty { padding: var(--space-4, 24px); text-align: center; color: var(--fg-3); }
|
|
4886
|
+
|
|
4887
|
+
/* ---------------------------------------------------------------
|
|
4888
|
+
EmojiPicker (ov-emoji)
|
|
4889
|
+
--------------------------------------------------------------- */
|
|
4890
|
+
.ds-247420 .ov-emoji-root {
|
|
4891
|
+
position: fixed; left: 0; top: 0;
|
|
4892
|
+
z-index: var(--z-overlay, 1000);
|
|
4893
|
+
width: 280px;
|
|
4894
|
+
display: flex; flex-direction: column;
|
|
4895
|
+
background: var(--bg-2); color: var(--fg);
|
|
4896
|
+
border: 1px solid var(--rule);
|
|
4897
|
+
border-radius: var(--r-2, 14px);
|
|
4898
|
+
box-shadow: var(--shadow-3, 0 12px 32px rgba(0,0,0,0.3));
|
|
4899
|
+
outline: none; overflow: hidden;
|
|
4900
|
+
}
|
|
4901
|
+
.ds-247420 .ov-emoji-tabs {
|
|
4902
|
+
display: flex; flex-shrink: 0;
|
|
4903
|
+
border-bottom: 1px solid var(--rule);
|
|
4904
|
+
background: var(--bg-3);
|
|
4905
|
+
}
|
|
4906
|
+
.ds-247420 .ov-emoji-tab {
|
|
4907
|
+
flex: 1; appearance: none; border: 0; background: transparent;
|
|
4908
|
+
padding: var(--space-2, 8px); cursor: pointer; font-size: var(--fs-lg, 18px);
|
|
4909
|
+
border-bottom: 2px solid transparent;
|
|
4910
|
+
}
|
|
4911
|
+
.ds-247420 .ov-emoji-tab[aria-selected="true"] { border-bottom-color: var(--accent); background: var(--bg-2); }
|
|
4912
|
+
.ds-247420 .ov-emoji-grid { overflow: auto; max-height: 220px; padding: var(--space-2, 8px); }
|
|
4913
|
+
.ds-247420 .ov-emoji-grid-inner { display: grid; grid-template-columns: repeat(8, 1fr); gap: var(--space-1, 4px); }
|
|
4914
|
+
.ds-247420 .ov-emoji-cell {
|
|
4915
|
+
appearance: none; border: 0; background: transparent;
|
|
4916
|
+
aspect-ratio: 1; font-size: var(--fs-lg, 18px);
|
|
4917
|
+
border-radius: var(--r-1, 10px); cursor: pointer;
|
|
4918
|
+
display: inline-flex; align-items: center; justify-content: center;
|
|
4919
|
+
}
|
|
4920
|
+
.ds-247420 .ov-emoji-cell:hover, .ds-247420 .ov-emoji-cell:focus-visible {
|
|
4921
|
+
background: color-mix(in oklab, var(--accent) 18%, transparent); outline: none;
|
|
4922
|
+
}
|
|
4923
|
+
|
|
4924
|
+
/* ---------------------------------------------------------------
|
|
4925
|
+
BootOverlay (ov-boot)
|
|
4926
|
+
--------------------------------------------------------------- */
|
|
4927
|
+
.ds-247420 .ov-boot {
|
|
4928
|
+
position: fixed; inset: 0;
|
|
4929
|
+
z-index: calc(var(--z-overlay, 1000) + 100);
|
|
4930
|
+
background: var(--bg);
|
|
4931
|
+
display: flex; align-items: center; justify-content: center;
|
|
4932
|
+
color: var(--fg);
|
|
4933
|
+
}
|
|
4934
|
+
.ds-247420 .ov-boot-inner {
|
|
4935
|
+
display: flex; flex-direction: column; align-items: center;
|
|
4936
|
+
gap: var(--space-3, 16px); width: min(320px, 80vw);
|
|
4937
|
+
}
|
|
4938
|
+
.ds-247420 .ov-boot-spinner {
|
|
4939
|
+
width: 40px; height: 40px; border-radius: 50%;
|
|
4940
|
+
border: 3px solid var(--rule);
|
|
4941
|
+
border-top-color: var(--accent);
|
|
4942
|
+
animation: ov-boot-spin 0.8s linear infinite;
|
|
4943
|
+
}
|
|
4944
|
+
@keyframes ov-boot-spin { to { transform: rotate(360deg); } }
|
|
4945
|
+
.ds-247420 .ov-boot-mark { font-size: 40px; line-height: 1; }
|
|
4946
|
+
.ds-247420 .ov-boot-mark-error { color: var(--danger); }
|
|
4947
|
+
.ds-247420 .ov-boot-bar {
|
|
4948
|
+
width: 100%; height: 6px;
|
|
4949
|
+
background: var(--bg-3); border-radius: var(--r-pill, 999px);
|
|
4950
|
+
overflow: hidden;
|
|
4951
|
+
}
|
|
4952
|
+
.ds-247420 .ov-boot-bar-fill {
|
|
4953
|
+
height: 100%; background: var(--accent);
|
|
4954
|
+
border-radius: var(--r-pill, 999px);
|
|
4955
|
+
transition: width var(--dur-base, 160ms) var(--ease, ease);
|
|
4956
|
+
}
|
|
4957
|
+
.ds-247420 .ov-boot-phase {
|
|
4958
|
+
font: var(--fs-sm, 14px)/1.4 var(--ff-mono, monospace);
|
|
4959
|
+
color: var(--fg-2); text-align: center;
|
|
4960
|
+
}
|
|
4961
|
+
.ds-247420 .ov-boot.is-error .ov-boot-phase { color: var(--danger); }
|
|
4962
|
+
@media (prefers-reduced-motion: reduce) {
|
|
4963
|
+
.ds-247420 .ov-boot-spinner { animation: none; }
|
|
4964
|
+
.ds-247420 .ov-boot-bar-fill { transition: none; }
|
|
4965
|
+
}
|
|
4966
|
+
|
|
4967
|
+
/* ---------------------------------------------------------------
|
|
4968
|
+
SettingsPopover (ov-set)
|
|
4969
|
+
--------------------------------------------------------------- */
|
|
4970
|
+
.ds-247420 .ov-set-root {
|
|
4971
|
+
position: fixed; left: 0; top: 0;
|
|
4972
|
+
z-index: var(--z-overlay, 1000);
|
|
4973
|
+
width: 300px; max-height: 70vh;
|
|
4974
|
+
display: flex; flex-direction: column;
|
|
4975
|
+
background: var(--bg-2); color: var(--fg);
|
|
4976
|
+
border: 1px solid var(--rule);
|
|
4977
|
+
border-radius: var(--r-2, 14px);
|
|
4978
|
+
box-shadow: var(--shadow-3, 0 12px 32px rgba(0,0,0,0.3));
|
|
4979
|
+
outline: none; overflow: hidden;
|
|
4980
|
+
}
|
|
4981
|
+
.ds-247420 .ov-set-head {
|
|
4982
|
+
flex-shrink: 0;
|
|
4983
|
+
padding: var(--space-3, 16px);
|
|
4984
|
+
border-bottom: 1px solid var(--rule);
|
|
4985
|
+
font: var(--fs-sm, 14px)/1 var(--ff-mono, monospace);
|
|
4986
|
+
text-transform: uppercase; letter-spacing: var(--tr-label, 0.1em);
|
|
4987
|
+
color: var(--fg);
|
|
4988
|
+
}
|
|
4989
|
+
.ds-247420 .ov-set-body { overflow: auto; padding: var(--space-2, 8px); }
|
|
4990
|
+
.ds-247420 .ov-set-section + .ov-set-section { margin-top: var(--space-2, 8px); }
|
|
4991
|
+
.ds-247420 .ov-set-section-head {
|
|
4992
|
+
padding: var(--space-2, 8px) var(--space-2, 8px) var(--space-1, 4px);
|
|
4993
|
+
font: var(--fs-micro, 11px)/1 var(--ff-mono, monospace);
|
|
4994
|
+
text-transform: uppercase; letter-spacing: var(--tr-label, 0.1em);
|
|
4995
|
+
color: var(--fg-3);
|
|
4996
|
+
}
|
|
4997
|
+
.ds-247420 .ov-set-row {
|
|
4998
|
+
display: flex; align-items: center; gap: var(--space-2, 8px);
|
|
4999
|
+
min-height: 40px; padding: var(--space-1, 4px) var(--space-2, 8px);
|
|
5000
|
+
}
|
|
5001
|
+
.ds-247420 .ov-set-row-label { flex: 1; min-width: 0; font-size: var(--fs-sm, 14px); color: var(--fg-2); }
|
|
5002
|
+
.ds-247420 .ov-set-row-value { color: var(--fg); font: var(--fs-sm, 14px)/1 var(--ff-mono, monospace); }
|
|
5003
|
+
.ds-247420 .ov-set-control {
|
|
5004
|
+
appearance: none; flex-shrink: 0; max-width: 55%;
|
|
5005
|
+
background: var(--bg-3); color: var(--fg);
|
|
5006
|
+
border: 1px solid var(--rule); border-radius: var(--r-1, 10px);
|
|
5007
|
+
padding: var(--space-1, 4px) var(--space-2, 8px); font: inherit;
|
|
5008
|
+
}
|
|
5009
|
+
.ds-247420 .ov-set-control:focus-visible { outline: none; border-color: var(--accent); }
|
|
5010
|
+
.ds-247420 input.ov-set-control[type="range"] { padding: 0; accent-color: var(--accent); }
|
|
5011
|
+
.ds-247420 .ov-set-toggle { width: 18px; height: 18px; accent-color: var(--accent); flex-shrink: 0; cursor: pointer; }
|
|
5012
|
+
.ds-247420 .ov-set-btn {
|
|
5013
|
+
width: 100%; appearance: none; cursor: pointer;
|
|
5014
|
+
background: var(--accent); color: var(--accent-fg);
|
|
5015
|
+
border: 0; border-radius: var(--r-1, 10px);
|
|
5016
|
+
padding: var(--space-2, 8px); font: inherit;
|
|
5017
|
+
}
|
|
5018
|
+
|
|
5019
|
+
/* AuthModal — ov-auth-* */
|
|
5020
|
+
.ds-247420 .ov-auth-backdrop {
|
|
5021
|
+
position: fixed; inset: 0; z-index: var(--z-overlay, 1000);
|
|
5022
|
+
display: flex; align-items: center; justify-content: center;
|
|
5023
|
+
background: rgba(0,0,0,.55);
|
|
5024
|
+
}
|
|
5025
|
+
.ds-247420 .ov-auth-panel {
|
|
5026
|
+
width: min(420px, 92vw);
|
|
5027
|
+
display: flex; flex-direction: column;
|
|
5028
|
+
background: var(--bg-2); color: var(--fg);
|
|
5029
|
+
border: 1px solid var(--rule); border-radius: var(--r-2, 8px);
|
|
5030
|
+
box-shadow: var(--shadow-2, 0 12px 40px rgba(0,0,0,.4));
|
|
5031
|
+
overflow: hidden;
|
|
5032
|
+
}
|
|
5033
|
+
.ds-247420 .ov-auth-head { display: flex; align-items: center; justify-content: space-between; padding: var(--space-3); border-bottom: 1px solid var(--rule); }
|
|
5034
|
+
.ds-247420 .ov-auth-title { margin: 0; font-size: var(--fs-2, 16px); font-weight: 700; }
|
|
5035
|
+
.ds-247420 .ov-auth-x { border: none; background: transparent; color: var(--fg-2, var(--fg)); font-size: 22px; line-height: 1; cursor: pointer; }
|
|
5036
|
+
.ds-247420 .ov-auth-x:hover { color: var(--fg); }
|
|
5037
|
+
.ds-247420 .ov-auth-tabs { display: flex; gap: var(--space-1); padding: var(--space-2) var(--space-3) 0; }
|
|
5038
|
+
.ds-247420 .ov-auth-tab { flex: 1; padding: var(--space-1) var(--space-2); border: 1px solid var(--rule); border-bottom: none; border-radius: var(--r-1) var(--r-1) 0 0; background: var(--bg-3); color: var(--fg-2, var(--fg)); cursor: pointer; }
|
|
5039
|
+
.ds-247420 .ov-auth-tab.is-active { background: var(--bg-2); color: var(--fg); font-weight: 700; }
|
|
5040
|
+
.ds-247420 .ov-auth-body { display: flex; flex-direction: column; gap: var(--space-2); padding: var(--space-3); }
|
|
5041
|
+
.ds-247420 .ov-auth-hint { margin: 0; font-size: var(--fs-0, 12px); color: var(--fg-2, var(--fg)); }
|
|
5042
|
+
.ds-247420 .ov-auth-input { padding: var(--space-2); border: 1px solid var(--rule-strong); border-radius: var(--r-1); background: var(--bg-3); color: var(--fg); }
|
|
5043
|
+
.ds-247420 .ov-auth-primary { padding: var(--space-2); border: none; border-radius: var(--r-1); background: var(--accent); color: var(--accent-fg, #fff); font-weight: 700; cursor: pointer; }
|
|
5044
|
+
.ds-247420 .ov-auth-primary:disabled { opacity: .6; cursor: progress; }
|
|
5045
|
+
.ds-247420 .ov-auth-error { margin: 0 var(--space-3) var(--space-3); padding: var(--space-2); border-radius: var(--r-1); background: var(--danger-bg, rgba(208,69,69,.15)); color: var(--danger, #d04545); font-size: var(--fs-0, 12px); }
|
|
5046
|
+
|
|
5047
|
+
/* VideoLightbox — ov-lightbox-* */
|
|
5048
|
+
.ds-247420 .ov-lightbox-backdrop {
|
|
5049
|
+
position: fixed; inset: 0; z-index: var(--z-overlay-top, 1100);
|
|
5050
|
+
display: flex; align-items: center; justify-content: center;
|
|
5051
|
+
background: rgba(0,0,0,.85);
|
|
5052
|
+
}
|
|
5053
|
+
.ds-247420 .ov-lightbox-x { position: absolute; top: 16px; right: 16px; width: 40px; height: 40px; border: none; border-radius: 50%; background: rgba(255,255,255,.12); color: #fff; font-size: 24px; line-height: 1; cursor: pointer; }
|
|
5054
|
+
.ds-247420 .ov-lightbox-x:hover { background: rgba(255,255,255,.24); }
|
|
5055
|
+
.ds-247420 .ov-lightbox-stage { display: flex; flex-direction: column; align-items: center; gap: var(--space-2); max-width: 92vw; max-height: 90vh; }
|
|
5056
|
+
.ds-247420 .ov-lightbox-video { max-width: 92vw; max-height: 82vh; border-radius: var(--r-1); background: #000; }
|
|
5057
|
+
.ds-247420 .ov-lightbox-label { color: #fff; font-size: var(--fs-0, 12px); opacity: .85; }
|