anentrypoint-design 0.0.384 → 0.0.386
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/community.css +21 -18
- package/dist/247420.css +107 -49
- package/dist/247420.js +22 -22
- package/package.json +1 -1
- package/scripts/lint-css.mjs +24 -10
- package/src/components/chat/composer-affordances.js +109 -0
- package/src/components/chat/composer.js +256 -0
- package/src/components/chat/message.js +130 -0
- package/src/components/chat/stats.js +36 -0
- package/src/components/chat/thread-scroll.js +42 -0
- package/src/components/chat/threads.js +105 -0
- package/src/components/chat.js +20 -628
- package/src/components/freddie/pages-chat.js +149 -0
- package/src/components/freddie/pages-config.js +203 -0
- package/src/components/freddie/pages-infra.js +120 -0
- package/src/components/freddie/pages-overview.js +107 -0
- package/src/components/freddie/pages-runners.js +102 -0
- package/src/components/freddie/pages-telemetry.js +126 -0
- package/src/components/freddie/pages-workspace.js +176 -0
- package/src/components/freddie/shared.js +32 -0
- package/src/components/freddie/sse.js +85 -0
- package/src/components/freddie.js +21 -1064
- package/src/components/sessions/format.js +42 -0
- package/src/components/shell/app-shell.js +195 -0
- package/src/components/shell/atoms.js +165 -0
- package/src/components/shell/icons.js +123 -0
- package/src/components/shell/workspace-columns.js +179 -0
- package/src/components/shell/workspace-shell.js +181 -0
- package/src/components/shell.js +15 -805
- package/src/css/app-shell/chat-polish.css +18 -6
- package/src/css/app-shell/files.css +15 -4
- package/src/css/app-shell/hero-content.css +16 -1
- package/src/css/app-shell/kits-appended.css +26 -15
package/community.css
CHANGED
|
@@ -273,7 +273,7 @@
|
|
|
273
273
|
justify-content: center;
|
|
274
274
|
width: 12px;
|
|
275
275
|
height: 12px;
|
|
276
|
-
font-size:
|
|
276
|
+
font-size: var(--fs-pico);
|
|
277
277
|
transform: rotate(90deg);
|
|
278
278
|
transition: transform var(--dur-base) var(--ease);
|
|
279
279
|
flex-shrink: 0;
|
|
@@ -551,7 +551,7 @@
|
|
|
551
551
|
display: inline-flex;
|
|
552
552
|
align-items: center;
|
|
553
553
|
justify-content: center;
|
|
554
|
-
font-size:
|
|
554
|
+
font-size: var(--fs-pico);
|
|
555
555
|
font-weight: 600;
|
|
556
556
|
overflow: hidden;
|
|
557
557
|
transition: box-shadow var(--dur-snap) var(--ease);
|
|
@@ -1151,7 +1151,7 @@
|
|
|
1151
1151
|
border: none;
|
|
1152
1152
|
background: transparent;
|
|
1153
1153
|
color: var(--fg);
|
|
1154
|
-
font-size:
|
|
1154
|
+
font-size: var(--fs-lg);
|
|
1155
1155
|
line-height: 1;
|
|
1156
1156
|
cursor: pointer;
|
|
1157
1157
|
border-radius: var(--r-1);
|
|
@@ -1182,7 +1182,7 @@
|
|
|
1182
1182
|
bar here was the generic accent-stripe tell; the real accent still lands
|
|
1183
1183
|
on .cm-rb-author. */
|
|
1184
1184
|
border-left: var(--bw-hair) solid var(--rule-strong);
|
|
1185
|
-
font-size:
|
|
1185
|
+
font-size: var(--fs-xs);
|
|
1186
1186
|
}
|
|
1187
1187
|
.cm-rb-label { flex: none; color: var(--fg-2); }
|
|
1188
1188
|
.cm-rb-author { color: var(--accent); font-weight: 600; }
|
|
@@ -1201,7 +1201,7 @@
|
|
|
1201
1201
|
border: none;
|
|
1202
1202
|
background: transparent;
|
|
1203
1203
|
color: var(--fg-2);
|
|
1204
|
-
font-size:
|
|
1204
|
+
font-size: var(--fs-tiny);
|
|
1205
1205
|
line-height: 1;
|
|
1206
1206
|
cursor: pointer;
|
|
1207
1207
|
border-radius: var(--r-1);
|
|
@@ -1216,7 +1216,7 @@
|
|
|
1216
1216
|
gap: var(--space-2);
|
|
1217
1217
|
width: 100%;
|
|
1218
1218
|
padding: var(--space-2) var(--space-3);
|
|
1219
|
-
font-size:
|
|
1219
|
+
font-size: var(--fs-xs);
|
|
1220
1220
|
font-weight: 500;
|
|
1221
1221
|
}
|
|
1222
1222
|
.cm-banner.clickable { cursor: pointer; }
|
|
@@ -1547,7 +1547,7 @@
|
|
|
1547
1547
|
border: var(--bw-hair) solid var(--rule-strong);
|
|
1548
1548
|
border-radius: var(--r-1);
|
|
1549
1549
|
background: var(--bg-3); color: var(--fg);
|
|
1550
|
-
cursor: pointer; font-size:
|
|
1550
|
+
cursor: pointer; font-size: var(--fs-body); line-height: 1;
|
|
1551
1551
|
}
|
|
1552
1552
|
.vx-vc-btn:hover { background: var(--bg-4, var(--bg-3)); }
|
|
1553
1553
|
.vx-vc-on { background: var(--accent); color: var(--accent-fg); border-color: var(--accent); }
|
|
@@ -1577,11 +1577,11 @@
|
|
|
1577
1577
|
display: flex; align-items: center; justify-content: space-between;
|
|
1578
1578
|
padding: var(--space-2); border-bottom: var(--bw-hair) solid var(--rule);
|
|
1579
1579
|
}
|
|
1580
|
-
.cm-tp-title { font-weight: 700; font-size: var(--fs-
|
|
1580
|
+
.cm-tp-title { font-weight: 700; font-size: var(--fs-xs); }
|
|
1581
1581
|
.cm-tp-head-actions { display: flex; gap: var(--space-1); }
|
|
1582
1582
|
.cm-tp-new, .cm-tp-close {
|
|
1583
1583
|
border: none; background: transparent; color: var(--fg-2, var(--fg));
|
|
1584
|
-
cursor: pointer; font-size:
|
|
1584
|
+
cursor: pointer; font-size: var(--fs-body); width: 24px; height: 24px; border-radius: var(--r-1);
|
|
1585
1585
|
}
|
|
1586
1586
|
.cm-tp-new:hover, .cm-tp-close:hover { background: var(--bg-3); color: var(--fg); }
|
|
1587
1587
|
.cm-tp-list { flex: 1; min-height: 0; overflow-y: auto; }
|
|
@@ -1597,9 +1597,9 @@
|
|
|
1597
1597
|
.cm-tp-item.is-active { background: var(--bg-3); box-shadow: inset 3px 0 0 var(--accent); }
|
|
1598
1598
|
.cm-tp-item.is-unread .cm-tp-item-title { font-weight: 700; }
|
|
1599
1599
|
.cm-tp-dot { position: absolute; left: 4px; top: 50%; transform: translateY(-50%); width: 8px; height: 8px; border-radius: 50%; background: var(--accent); }
|
|
1600
|
-
.cm-tp-item-title { font-size: var(--fs-
|
|
1601
|
-
.cm-tp-item-snippet { font-size: var(--fs-
|
|
1602
|
-
.cm-tp-item-meta { display: flex; gap: var(--space-2); font-size: var(--fs-micro
|
|
1600
|
+
.cm-tp-item-title { font-size: var(--fs-xs); }
|
|
1601
|
+
.cm-tp-item-snippet { font-size: var(--fs-micro); color: var(--fg-2, var(--fg)); opacity: .8; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
1602
|
+
.cm-tp-item-meta { display: flex; gap: var(--space-2); font-size: var(--fs-micro); color: var(--fg-2, var(--fg)); opacity: .7; }
|
|
1603
1603
|
.cm-tp-empty, .cm-forum-empty, .cm-channel-empty, .cm-member-empty {
|
|
1604
1604
|
display: flex; flex-direction: column; align-items: center; gap: var(--space-2);
|
|
1605
1605
|
padding: var(--space-4) var(--space-3); text-align: center;
|
|
@@ -1651,10 +1651,10 @@
|
|
|
1651
1651
|
.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); }
|
|
1652
1652
|
.cm-forum-item:hover { background: var(--bg-3); }
|
|
1653
1653
|
.cm-forum-item-head { display: flex; align-items: center; justify-content: space-between; gap: var(--space-2); }
|
|
1654
|
-
.cm-forum-item-title { font-weight: 700; font-size: var(--fs-
|
|
1655
|
-
.cm-forum-item-replies { font-size: var(--fs-
|
|
1656
|
-
.cm-forum-item-snippet { font-size: var(--fs-
|
|
1657
|
-
.cm-forum-item-meta { display: flex; flex-wrap: wrap; gap: var(--space-2); align-items: center; font-size: var(--fs-micro
|
|
1654
|
+
.cm-forum-item-title { font-weight: 700; font-size: var(--fs-xs); }
|
|
1655
|
+
.cm-forum-item-replies { font-size: var(--fs-micro); color: var(--fg-2, var(--fg)); opacity: .8; white-space: nowrap; }
|
|
1656
|
+
.cm-forum-item-snippet { font-size: var(--fs-micro); color: var(--fg-2, var(--fg)); opacity: .85; }
|
|
1657
|
+
.cm-forum-item-meta { display: flex; flex-wrap: wrap; gap: var(--space-2); align-items: center; font-size: var(--fs-micro); color: var(--fg-2, var(--fg)); opacity: .7; }
|
|
1658
1658
|
.cm-forum-item-tags { display: inline-flex; gap: var(--space-1); }
|
|
1659
1659
|
/* 1px vertical is OFF-SCALE ON PURPOSE — the tag is an inline chip inside the
|
|
1660
1660
|
forum meta row; --space-hair (2px) tips it past the row height. */
|
|
@@ -1663,7 +1663,7 @@
|
|
|
1663
1663
|
/* PageView — cm-page / cm-page-* */
|
|
1664
1664
|
.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); }
|
|
1665
1665
|
.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); }
|
|
1666
|
-
.cm-page-title { margin: 0; font-size: var(--fs-
|
|
1666
|
+
.cm-page-title { margin: 0; font-size: var(--fs-xl); font-weight: 700; }
|
|
1667
1667
|
.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; }
|
|
1668
1668
|
.cm-page-body { padding: var(--space-3); line-height: 1.6; }
|
|
1669
1669
|
.cm-page-empty { color: var(--fg-2, var(--fg)); opacity: .7; }
|
|
@@ -1677,8 +1677,11 @@
|
|
|
1677
1677
|
.fd-page-inner > * { min-width: 0; }
|
|
1678
1678
|
.fd-loading { display: flex; align-items: center; gap: var(--space-2, 10px); padding: var(--space-4, 24px); color: var(--fg-2, var(--fg)); }
|
|
1679
1679
|
.fd-empty { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: var(--space-2, 10px); padding: var(--space-5, 32px) var(--space-3, 16px); color: var(--fg-2, var(--fg)); text-align: center; }
|
|
1680
|
+
/* 28px is an ICON size (empty-state mark), not a type tier — the --fs-* ladder
|
|
1681
|
+
tops out at --fs-xl (21px) before every remaining rung becomes a fluid
|
|
1682
|
+
heading clamp, so neither substitutes without visibly resizing the mark. */
|
|
1680
1683
|
.fd-empty-glyph { font-size: 28px; opacity: .55; line-height: 1; }
|
|
1681
|
-
.fd-pre { margin: 0; padding: var(--space-2, 10px); background: var(--bg-3, var(--panel-bg-2)); border: var(--bw-hair, 1px) solid var(--rule, var(--panel-accent)); border-radius: var(--r-1, 6px); overflow: auto; max-height: 460px; white-space: pre-wrap; overflow-wrap: anywhere; word-break: break-word; font-family: var(--font-mono, ui-monospace, monospace); font-size:
|
|
1684
|
+
.fd-pre { margin: 0; padding: var(--space-2, 10px); background: var(--bg-3, var(--panel-bg-2)); border: var(--bw-hair, 1px) solid var(--rule, var(--panel-accent)); border-radius: var(--r-1, 6px); overflow: auto; max-height: 460px; white-space: pre-wrap; overflow-wrap: anywhere; word-break: break-word; font-family: var(--font-mono, ui-monospace, monospace); font-size: var(--fs-micro); line-height: 1.5; }
|
|
1682
1685
|
.fd-skill-body { max-height: 320px; }
|
|
1683
1686
|
.fd-row-actions { display: inline-flex; gap: var(--space-1, 6px); align-items: center; }
|
|
1684
1687
|
.fd-chat { display: flex; flex-direction: column; gap: var(--space-2, 10px); height: 100%; min-height: 0; }
|
package/dist/247420.css
CHANGED
|
@@ -1642,6 +1642,11 @@
|
|
|
1642
1642
|
.ds-247420 .ds-hero-stat:last-child { border-bottom: 0; padding-bottom: 0; }
|
|
1643
1643
|
.ds-247420 .ds-hero-title {
|
|
1644
1644
|
font-family: var(--ff-display); font-weight: 700;
|
|
1645
|
+
/* Bespoke display clamp, deliberately off the --fs-* ladder: --fs-hero is
|
|
1646
|
+
clamp(42px,7cqi,96px) and --fs-mega is clamp(56px,11cqi,168px). This lead
|
|
1647
|
+
runs a steeper 9cqi slope with a LOWER 40px floor so a two-line 16ch title
|
|
1648
|
+
still fits a narrow column, and a 116px ceiling between the two tiers.
|
|
1649
|
+
Snapping to either changes the hero's whole optical weight. */
|
|
1645
1650
|
font-size: clamp(40px, 9cqi, 116px);
|
|
1646
1651
|
line-height: 0.96; letter-spacing: var(--tr-tighter);
|
|
1647
1652
|
margin: 0; max-width: 16ch; text-wrap: balance;
|
|
@@ -1685,6 +1690,12 @@
|
|
|
1685
1690
|
.ds-247420 .ds-section-compact { margin-top: 0; margin-bottom: var(--space-4); }
|
|
1686
1691
|
.ds-247420 .ds-section > h3 {
|
|
1687
1692
|
font-family: var(--ff-body); font-weight: 600; font-size: var(--fs-h3);
|
|
1693
|
+
/* Zero top margin looks like it inverts the more-space-above-than-below rule,
|
|
1694
|
+
but it does not: this h3 is always the section's first child and .ds-section
|
|
1695
|
+
itself carries the --space-8 (96px) lead, so the effective space above is
|
|
1696
|
+
96px against 32px below. Adding a top margin here would double the lead.
|
|
1697
|
+
Measured live on project_page: gapAboveInSection 0 with the section margin
|
|
1698
|
+
supplying the separation, gapBelow 32. */
|
|
1688
1699
|
margin: 0 0 var(--space-5);
|
|
1689
1700
|
letter-spacing: -0.01em;
|
|
1690
1701
|
}
|
|
@@ -1776,7 +1787,7 @@
|
|
|
1776
1787
|
}
|
|
1777
1788
|
.ds-247420 .ds-cli-row {
|
|
1778
1789
|
display: flex; gap: 10px;
|
|
1779
|
-
font-family: var(--ff-mono); font-size:
|
|
1790
|
+
font-family: var(--ff-mono); font-size: var(--fs-tiny); line-height: 1.6;
|
|
1780
1791
|
padding: 3px 0;
|
|
1781
1792
|
}
|
|
1782
1793
|
.ds-247420 .ds-cli-row .prompt { color: var(--green-2); flex: 0 0 auto; user-select: none; }
|
|
@@ -1920,6 +1931,10 @@
|
|
|
1920
1931
|
}
|
|
1921
1932
|
.ds-247420 .kpi-card .num {
|
|
1922
1933
|
font-family: var(--ff-body); font-weight: 600;
|
|
1934
|
+
/* Numeric display size, not a heading tier: --fs-h4 is clamp(19px,1.8cqi,
|
|
1935
|
+
24px) — too small and too flat a slope for a KPI figure that must read as
|
|
1936
|
+
the loudest thing in its card, and --fs-h3 (22/30) tops out short of 32.
|
|
1937
|
+
Deliberate off-scale value tuned to the .kpi-card box. */
|
|
1923
1938
|
font-size: clamp(22px, 3cqi, 32px); line-height: 1;
|
|
1924
1939
|
letter-spacing: var(--tr-tight);
|
|
1925
1940
|
}
|
|
@@ -2459,7 +2474,7 @@
|
|
|
2459
2474
|
/* File icon — glyph chip, tinted per type. */
|
|
2460
2475
|
.ds-247420 .ds-file-icon {
|
|
2461
2476
|
display: inline-flex; align-items: center; justify-content: center;
|
|
2462
|
-
width: 26px; height: 26px; font-size:
|
|
2477
|
+
width: 26px; height: 26px; font-size: var(--fs-sm); line-height: 1;
|
|
2463
2478
|
color: var(--fg-2);
|
|
2464
2479
|
}
|
|
2465
2480
|
.ds-247420 .ds-file-row[data-file-type="dir"] .ds-file-icon { color: var(--accent-ink); }
|
|
@@ -2483,7 +2498,7 @@
|
|
|
2483
2498
|
display: inline-flex; align-items: center; justify-content: center;
|
|
2484
2499
|
width: 28px; height: 28px; padding: 0;
|
|
2485
2500
|
background: transparent; border: 0; border-radius: var(--r-1);
|
|
2486
|
-
color: var(--fg-3); font-size:
|
|
2501
|
+
color: var(--fg-3); font-size: var(--fs-xs); cursor: pointer;
|
|
2487
2502
|
transition: background var(--dur-snap) var(--ease), color var(--dur-snap) var(--ease);
|
|
2488
2503
|
}
|
|
2489
2504
|
.ds-247420 .ds-file-act:hover { background: var(--bg-3); color: var(--fg); }
|
|
@@ -2582,7 +2597,7 @@
|
|
|
2582
2597
|
.ds-247420 .ds-file-grid[data-density="compact"] .ds-file-row { padding: var(--space-1-5) var(--space-2-75); gap: var(--space-2-5); }
|
|
2583
2598
|
.ds-247420 .ds-file-grid[data-density="compact"] .ds-file-row .title { font-size: var(--fs-xs); }
|
|
2584
2599
|
.ds-247420 .ds-file-grid[data-density="compact"] .ds-file-row .ds-file-meta { font-size: var(--fs-micro); }
|
|
2585
|
-
.ds-247420 .ds-file-grid[data-density="compact"] .ds-file-icon { width: 20px; height: 20px; font-size:
|
|
2600
|
+
.ds-247420 .ds-file-grid[data-density="compact"] .ds-file-icon { width: 20px; height: 20px; font-size: var(--fs-tiny); }
|
|
2586
2601
|
|
|
2587
2602
|
/* Thumbnail density — tile grid; image entries carry a real lazy thumbnail. */
|
|
2588
2603
|
.ds-247420 .ds-file-grid-thumb {
|
|
@@ -2622,6 +2637,10 @@
|
|
|
2622
2637
|
width: 100%; aspect-ratio: 4 / 3;
|
|
2623
2638
|
background: var(--bg-2); border-radius: var(--r-1); overflow: hidden;
|
|
2624
2639
|
}
|
|
2640
|
+
/* 24px is the ICON size inside a 34px chip, not a type tier — it is matched to
|
|
2641
|
+
the chip box, not to the text scale (the --fs-* rungs jump 21px -> fluid
|
|
2642
|
+
heading clamps, so neither substitutes without resizing the icon). Same
|
|
2643
|
+
reasoning for the other four .ds-*-glyph rules in this sheet. */
|
|
2625
2644
|
.ds-247420 .ds-file-cell-media .ds-file-icon { width: 34px; height: 34px; font-size: 24px; }
|
|
2626
2645
|
.ds-247420 .ds-file-cell-thumb { width: 100%; height: 100%; object-fit: cover; }
|
|
2627
2646
|
/* Per-type icon tints on thumb tiles so the grid keeps the colour-coding the
|
|
@@ -2765,6 +2784,7 @@
|
|
|
2765
2784
|
gap: var(--space-2); flex-wrap: wrap;
|
|
2766
2785
|
padding: var(--space-4) var(--space-3); text-align: center;
|
|
2767
2786
|
}
|
|
2787
|
+
/* Icon size, not type — see .ds-file-cell-media .ds-file-icon above. */
|
|
2768
2788
|
.ds-247420 .ds-dropzone-glyph { font-size: 22px; color: var(--fg-3); }
|
|
2769
2789
|
.ds-247420 .ds-dropzone-label { font-size: var(--fs-sm); color: var(--fg-3); }
|
|
2770
2790
|
.ds-247420 .ds-dropzone.dragover {
|
|
@@ -2873,6 +2893,7 @@
|
|
|
2873
2893
|
gap: var(--space-2); padding: var(--space-6) var(--space-3);
|
|
2874
2894
|
color: var(--fg-3); text-align: center;
|
|
2875
2895
|
}
|
|
2896
|
+
/* Icon size, not type — see .ds-file-cell-media .ds-file-icon above. */
|
|
2876
2897
|
.ds-247420 .ds-file-empty-glyph { font-size: 34px; opacity: 0.55; }
|
|
2877
2898
|
.ds-247420 .ds-file-empty-text { font-size: var(--fs-sm); }
|
|
2878
2899
|
|
|
@@ -2928,7 +2949,11 @@
|
|
|
2928
2949
|
font-family: inherit; font-size: var(--fs-sm);
|
|
2929
2950
|
}
|
|
2930
2951
|
.ds-247420 .ds-modal-input:focus-visible { outline: var(--focus-w) solid var(--focus-color); outline-offset: var(--focus-offset); }
|
|
2931
|
-
/* iOS auto-zooms inputs under 16px on focus, breaking the modal layout.
|
|
2952
|
+
/* iOS auto-zooms inputs under 16px on focus, breaking the modal layout.
|
|
2953
|
+
Deliberately a literal, NOT var(--fs-body): --fs-body is re-declared to
|
|
2954
|
+
15px under [data-typescale="sm"], which would silently drop this input back
|
|
2955
|
+
under the zoom threshold on any density-reduced page. The 16px here is a
|
|
2956
|
+
platform constant, not a point on the type scale. */
|
|
2932
2957
|
@media (hover: none), (pointer: coarse) {
|
|
2933
2958
|
.ds-247420 .ds-modal-input { font-size: 16px; min-height: 44px; }
|
|
2934
2959
|
}
|
|
@@ -3025,6 +3050,7 @@
|
|
|
3025
3050
|
display: flex; flex-direction: column; align-items: center; justify-content: center;
|
|
3026
3051
|
gap: var(--space-2); padding: var(--space-6); color: var(--fg-3);
|
|
3027
3052
|
}
|
|
3053
|
+
/* Icon size, not type — see .ds-file-cell-media .ds-file-icon above. */
|
|
3028
3054
|
.ds-247420 .ds-preview-glyph { font-size: 34px; opacity: 0.6; }
|
|
3029
3055
|
|
|
3030
3056
|
/* Thin scrollbars inside preview bodies. */
|
|
@@ -3268,7 +3294,7 @@
|
|
|
3268
3294
|
width: 36px; height: 36px; flex-shrink: 0;
|
|
3269
3295
|
border-radius: 50%; background: var(--bg-3); color: var(--fg);
|
|
3270
3296
|
display: inline-flex; align-items: center; justify-content: center;
|
|
3271
|
-
font-family: var(--ff-mono); font-size:
|
|
3297
|
+
font-family: var(--ff-mono); font-size: var(--fs-micro); font-weight: 600;
|
|
3272
3298
|
text-transform: lowercase; letter-spacing: 0.02em; user-select: none;
|
|
3273
3299
|
transition: transform 0.12s ease, box-shadow 0.12s ease;
|
|
3274
3300
|
position: relative;
|
|
@@ -3309,6 +3335,9 @@
|
|
|
3309
3335
|
border: 1px solid color-mix(in oklab, var(--mascot) 28%, transparent);
|
|
3310
3336
|
}
|
|
3311
3337
|
.ds-247420 .chat-bubble code {
|
|
3338
|
+
/* em-relative on purpose: inline code tracks the size of the prose it sits
|
|
3339
|
+
inside (the mono face runs optically large next to the system stack, hence
|
|
3340
|
+
0.92). An absolute --fs-* tier would decouple it from its own paragraph. */
|
|
3312
3341
|
font-family: var(--ff-mono); font-size: 0.92em;
|
|
3313
3342
|
background: color-mix(in oklab, var(--fg) 10%, transparent);
|
|
3314
3343
|
/* 1px block is deliberately under --space-hair (2px): inline <code> must not
|
|
@@ -3335,6 +3364,11 @@
|
|
|
3335
3364
|
font-family: var(--ff-body); font-weight: 600;
|
|
3336
3365
|
margin: var(--space-2) 0 var(--space-1); line-height: var(--lh-snug);
|
|
3337
3366
|
}
|
|
3367
|
+
/* em-relative on purpose, NOT --fs-h1..h3: markdown headings inside a chat
|
|
3368
|
+
bubble are a hierarchy WITHIN the bubble's own type size, not page headings.
|
|
3369
|
+
The --fs-h* tiers are fluid clamp()s tuned to page container queries and
|
|
3370
|
+
would render a bubble heading at 34px+, dwarfing the message it labels.
|
|
3371
|
+
These stay a tight ratio ladder off whatever size the bubble is set at. */
|
|
3338
3372
|
.ds-247420 .chat-bubble.chat-md h1 { font-size: 1.15em; }
|
|
3339
3373
|
.ds-247420 .chat-bubble.chat-md h2 { font-size: 1.08em; }
|
|
3340
3374
|
.ds-247420 .chat-bubble.chat-md h3 { font-size: 1.04em; }
|
|
@@ -3370,7 +3404,7 @@
|
|
|
3370
3404
|
}
|
|
3371
3405
|
/* Markdown tables + horizontal rules: agents routinely emit them, but they were
|
|
3372
3406
|
unstyled (bare unspaced cells, vanished rules). */
|
|
3373
|
-
.ds-247420 .chat-bubble.chat-md table { border-collapse: collapse; width: auto; max-width: 100%; margin: var(--space-2) 0; font-size: .95em; display: block; overflow-x: auto; }
|
|
3407
|
+
.ds-247420 .chat-bubble.chat-md table { border-collapse: collapse; width: auto; max-width: 100%; margin: var(--space-2) 0; font-size: .95em; /* em-relative: a table inside a bubble reads one notch down from the bubble's own copy, not off an absolute tier */ display: block; overflow-x: auto; }
|
|
3374
3408
|
.ds-247420 .chat-bubble.chat-md th,
|
|
3375
3409
|
.ds-247420 .chat-bubble.chat-md td { border: var(--bw-hair) solid var(--rule); padding: var(--space-1) var(--space-2-5); text-align: left; }
|
|
3376
3410
|
.ds-247420 .chat-bubble.chat-md th { background: color-mix(in oklab, var(--fg) 5%, transparent); font-weight: 600; }
|
|
@@ -3480,6 +3514,9 @@
|
|
|
3480
3514
|
}
|
|
3481
3515
|
.ds-247420 .chat-file:hover { background: var(--bg-3); }
|
|
3482
3516
|
.ds-247420 .chat-file .glyph {
|
|
3517
|
+
/* 22px is the ICON size inside a 36px chip — matched to the chip box, not to
|
|
3518
|
+
the type scale (--fs-xl is 21px, and above it every rung is a fluid
|
|
3519
|
+
heading clamp). Snapping it visibly resizes the mark. */
|
|
3483
3520
|
font-size: 22px; width: 36px; height: 36px;
|
|
3484
3521
|
display: inline-flex; align-items: center; justify-content: center;
|
|
3485
3522
|
background: var(--bg-3);
|
|
@@ -3492,7 +3529,7 @@
|
|
|
3492
3529
|
}
|
|
3493
3530
|
.ds-247420 .chat-file .meta { display: flex; flex-direction: column; gap: var(--space-hair); min-width: 0; flex: 1; }
|
|
3494
3531
|
.ds-247420 .chat-file .size { font-family: var(--ff-mono); font-size: var(--fs-xs); color: var(--fg-3); }
|
|
3495
|
-
.ds-247420 .chat-file .go { font-family: var(--ff-mono); font-size:
|
|
3532
|
+
.ds-247420 .chat-file .go { font-family: var(--ff-mono); font-size: var(--fs-body); color: var(--fg-3); flex-shrink: 0; }
|
|
3496
3533
|
.ds-247420 .chat-file:hover .go { color: var(--accent-ink); }
|
|
3497
3534
|
|
|
3498
3535
|
.ds-247420 .chat-msg.you .chat-pdf,
|
|
@@ -3510,7 +3547,7 @@
|
|
|
3510
3547
|
background: color-mix(in oklab, var(--fg) 5%, var(--bg-2));
|
|
3511
3548
|
border-bottom: 1px solid color-mix(in oklab, var(--fg) 10%, transparent);
|
|
3512
3549
|
}
|
|
3513
|
-
.ds-247420 .chat-pdf-head .glyph { font-size:
|
|
3550
|
+
.ds-247420 .chat-pdf-head .glyph { font-size: var(--fs-lg); color: var(--mascot); flex-shrink: 0; }
|
|
3514
3551
|
.ds-247420 .chat-pdf-head .name { flex: 1; font-weight: 600; font-size: var(--fs-sm); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
|
|
3515
3552
|
.ds-247420 .chat-pdf-head .size { font-family: var(--ff-mono); font-size: var(--fs-xs); color: var(--fg-3); }
|
|
3516
3553
|
.ds-247420 .chat-pdf-head a { color: var(--accent-ink); font-family: var(--ff-mono); font-size: var(--fs-xs); text-decoration: none; }
|
|
@@ -3569,8 +3606,8 @@
|
|
|
3569
3606
|
border-color: color-mix(in oklab, var(--accent) 55%, transparent);
|
|
3570
3607
|
color: var(--accent-ink);
|
|
3571
3608
|
}
|
|
3572
|
-
.ds-247420 .chat-reactions .rxn .e { font-size:
|
|
3573
|
-
.ds-247420 .chat-reactions .rxn .n { font-family: var(--ff-mono); font-weight: 600; font-size:
|
|
3609
|
+
.ds-247420 .chat-reactions .rxn .e { font-size: var(--fs-xs); line-height: 1; }
|
|
3610
|
+
.ds-247420 .chat-reactions .rxn .n { font-family: var(--ff-mono); font-weight: 600; font-size: var(--fs-nano); color: var(--fg-2); }
|
|
3574
3611
|
.ds-247420 .chat-reactions .rxn.you .n { color: var(--accent-ink); }
|
|
3575
3612
|
|
|
3576
3613
|
.ds-247420 .chat-typing { display: inline-flex; gap: var(--space-1); align-items: center; }
|
|
@@ -3697,6 +3734,7 @@
|
|
|
3697
3734
|
|
|
3698
3735
|
.ds-247420 .aicat-portrait { display: inline-flex; align-items: center; gap: var(--space-2-5); padding: var(--space-1) 0; }
|
|
3699
3736
|
.ds-247420 .aicat-face {
|
|
3737
|
+
/* 24px is the ICON size inside a 32px round chip — see .chat-file .glyph. */
|
|
3700
3738
|
width: 32px; height: 32px; font-size: 24px;
|
|
3701
3739
|
display: inline-flex; align-items: center; justify-content: center;
|
|
3702
3740
|
background: color-mix(in oklab, var(--mascot) 22%, var(--bg-2));
|
|
@@ -5635,7 +5673,7 @@
|
|
|
5635
5673
|
}
|
|
5636
5674
|
.ds-247420 .ds-err-path {
|
|
5637
5675
|
display: inline-flex; gap: var(--space-1-75); align-items: baseline; flex-wrap: wrap; max-width: 100%;
|
|
5638
|
-
font-family: var(--ff-mono); font-size:
|
|
5676
|
+
font-family: var(--ff-mono); font-size: var(--fs-tiny); color: var(--panel-text-2);
|
|
5639
5677
|
background: var(--panel-1); padding: var(--space-1-75) var(--space-2-75); border-radius: var(--r-0);
|
|
5640
5678
|
overflow-wrap: anywhere; word-break: break-all;
|
|
5641
5679
|
}
|
|
@@ -5693,6 +5731,9 @@
|
|
|
5693
5731
|
.ds-247420 .ds-topbar-search { flex-basis: 100%; }
|
|
5694
5732
|
}
|
|
5695
5733
|
.ds-247420 .ds-empty-state { padding: clamp(var(--space-3), 5vw, var(--space-4)); text-align: center; color: var(--panel-text-3); }
|
|
5734
|
+
/* Fluid ICON size (empty-state mark), not a type tier: it scales with the
|
|
5735
|
+
viewport between 24 and 32px. Every fluid --fs-* tier is a heading clamp
|
|
5736
|
+
tuned to cqi + heading weight, so none of them substitutes here. */
|
|
5696
5737
|
.ds-247420 .ds-empty-state-glyph { font-size: clamp(24px, 6vw, 32px); }
|
|
5697
5738
|
.ds-247420 .ds-empty-state-msg { margin: var(--space-1-75) 0; }
|
|
5698
5739
|
.ds-247420 .ds-empty-state-hint { margin: 0; font-size: var(--fs-sm); }
|
|
@@ -5712,20 +5753,20 @@
|
|
|
5712
5753
|
.ds-247420 .ds-swatch-col { display: flex; flex-direction: column; gap: var(--space-1-75); }
|
|
5713
5754
|
.ds-247420 .ds-swatch-chip { height: 48px; border-radius: var(--r-1); border: 1px solid var(--rule); background: var(--swatch, var(--panel-1)); }
|
|
5714
5755
|
.ds-247420 .ds-swatch-chip--big { height: 64px; }
|
|
5715
|
-
.ds-247420 .ds-swatch-name { font-family: var(--ff-mono); font-size:
|
|
5756
|
+
.ds-247420 .ds-swatch-name { font-family: var(--ff-mono); font-size: var(--fs-nano); color: var(--fg-3); }
|
|
5716
5757
|
.ds-247420 .ds-type-panel { padding: clamp(10px, 2.5vw, 14px) clamp(10px, 3vw, 18px); display: flex; flex-direction: column; gap: 14px; }
|
|
5717
5758
|
.ds-247420 .ds-type-row {
|
|
5718
5759
|
display: flex; align-items: baseline; gap: 14px;
|
|
5719
5760
|
border-bottom: 1px solid var(--rule); padding-bottom: var(--space-2); flex-wrap: wrap;
|
|
5720
5761
|
}
|
|
5721
|
-
.ds-247420 .ds-type-row-label { flex: 0 0 64px; font-family: var(--ff-mono); font-size:
|
|
5762
|
+
.ds-247420 .ds-type-row-label { flex: 0 0 64px; font-family: var(--ff-mono); font-size: var(--fs-nano); color: var(--fg-3); }
|
|
5722
5763
|
.ds-247420 .ds-type-sample {
|
|
5723
5764
|
min-width: 0; overflow-wrap: anywhere; line-height: var(--lh-tight); color: var(--fg);
|
|
5724
5765
|
font-size: var(--sample-size, var(--fs-body));
|
|
5725
5766
|
}
|
|
5726
5767
|
.ds-247420 .ds-prim-panel { padding: clamp(10px, 2.5vw, 14px) clamp(10px, 3vw, 18px); display: flex; flex-direction: column; gap: 18px; }
|
|
5727
5768
|
.ds-247420 .ds-prim-row { display: flex; gap: var(--space-2-5); flex-wrap: wrap; align-items: center; }
|
|
5728
|
-
.ds-247420 .ds-prim-label { flex: 0 0 64px; font-family: var(--ff-mono); font-size:
|
|
5769
|
+
.ds-247420 .ds-prim-label { flex: 0 0 64px; font-family: var(--ff-mono); font-size: var(--fs-nano); color: var(--fg-3); }
|
|
5729
5770
|
|
|
5730
5771
|
/* == appended: content-site == */
|
|
5731
5772
|
/* Home landing wrappers (site/theme.mjs) — replace banned inline styles. */
|
|
@@ -5857,6 +5898,10 @@
|
|
|
5857
5898
|
/* 18px ceiling: no tier between --space-3 (16) and --space-3-5 (20). */
|
|
5858
5899
|
.ds-247420 .ds-auth-form { padding: clamp(var(--space-2-75), 3vw, 18px); display: flex; flex-direction: column; gap: var(--space-2-5); }
|
|
5859
5900
|
.ds-247420 .ds-auth-sent { align-items: center; text-align: center; }
|
|
5901
|
+
/* 32px is an ICON size, not a type size: this is the confirmation mark above
|
|
5902
|
+
the "check your mail" copy, sized to the 440px auth column, and the --fs-*
|
|
5903
|
+
scale tops out at --fs-xl (21px) before jumping to fluid clamp() heading
|
|
5904
|
+
tiers. Snapping it to either would visibly resize the mark. */
|
|
5860
5905
|
.ds-247420 .ds-auth-sent-glyph { font-size: 32px; color: var(--panel-accent); }
|
|
5861
5906
|
.ds-247420 .ds-auth-sent-title { margin: 0; font-weight: 600; }
|
|
5862
5907
|
.ds-247420 .ds-auth-sent-sub { margin: 0; color: var(--panel-text-2); overflow-wrap: anywhere; }
|
|
@@ -5864,17 +5909,17 @@
|
|
|
5864
5909
|
/* .ds-auth-field-label joins the kit small-label voice above, no overrides. */
|
|
5865
5910
|
.ds-247420 .ds-auth-row-between { display: flex; align-items: center; justify-content: space-between; gap: var(--space-2); flex-wrap: wrap; }
|
|
5866
5911
|
.ds-247420 .ds-auth-remember { display: flex; align-items: center; gap: var(--space-1-75); cursor: pointer; }
|
|
5867
|
-
.ds-247420 .ds-auth-remember-text { color: var(--panel-text-2); font-size:
|
|
5868
|
-
.ds-247420 .ds-auth-forgot { font-size:
|
|
5869
|
-
.ds-247420 .ds-auth-error { padding: var(--space-2) var(--space-2-5); background: var(--panel-1); border-radius: var(--r-0); color: var(--danger); font-size:
|
|
5912
|
+
.ds-247420 .ds-auth-remember-text { color: var(--panel-text-2); font-size: var(--fs-tiny); }
|
|
5913
|
+
.ds-247420 .ds-auth-forgot { font-size: var(--fs-tiny); }
|
|
5914
|
+
.ds-247420 .ds-auth-error { padding: var(--space-2) var(--space-2-5); background: var(--panel-1); border-radius: var(--r-0); color: var(--danger); font-size: var(--fs-tiny); overflow-wrap: anywhere; }
|
|
5870
5915
|
.ds-247420 .ds-auth-providers { display: flex; gap: var(--space-2); flex-wrap: wrap; }
|
|
5871
5916
|
.ds-247420 .ds-auth-provider-btn { flex: 1 1 100px; min-width: 0; display: flex; align-items: center; justify-content: center; gap: var(--space-2); padding: var(--space-2-5); }
|
|
5872
5917
|
.ds-247420 .ds-auth-provider-btn--loading { opacity: 0.7; pointer-events: none; }
|
|
5873
5918
|
.ds-247420 .ds-auth-provider-glyph { font-family: var(--ff-mono); color: var(--panel-text-3); display: inline-flex; }
|
|
5874
|
-
.ds-247420 .ds-auth-modes { display: flex; justify-content: center; gap: 14px; /* off-scale, matches the auth form inset */ margin-top: var(--space-2); font-size:
|
|
5919
|
+
.ds-247420 .ds-auth-modes { display: flex; justify-content: center; gap: 14px; /* off-scale, matches the auth form inset */ margin-top: var(--space-2); font-size: var(--fs-tiny); flex-wrap: wrap; }
|
|
5875
5920
|
.ds-247420 .ds-auth-mode-link { color: var(--panel-text-3); text-decoration: none; }
|
|
5876
5921
|
.ds-247420 .ds-auth-mode-link--active { color: var(--panel-text); text-decoration: underline; }
|
|
5877
|
-
.ds-247420 .ds-auth-fineprint { text-align: center; font-size:
|
|
5922
|
+
.ds-247420 .ds-auth-fineprint { text-align: center; font-size: var(--fs-micro); color: var(--panel-text-3); margin: var(--space-1-75) 0; }
|
|
5878
5923
|
|
|
5879
5924
|
/* == appended: gallery-misc kit cleanup == */
|
|
5880
5925
|
/* --- shared helpers (converted from inline styles) --- */
|
|
@@ -5884,12 +5929,12 @@
|
|
|
5884
5929
|
.ds-247420 .ds-kit-head { display: flex; align-items: center; justify-content: space-between; gap: clamp(var(--space-2), 2vw, var(--space-3)); flex-wrap: wrap; }
|
|
5885
5930
|
|
|
5886
5931
|
/* --- gallery kit --- */
|
|
5887
|
-
.ds-247420 .ds-tile-cap { flex: 1; display: flex; align-items: center; justify-content: center; font-family: var(--ff-mono); white-space: pre-line; color: var(--panel-text-2); font-size:
|
|
5888
|
-
.ds-247420 .ds-tile-meta { display: flex; align-items: center; justify-content: space-between; gap: var(--space-1-75); font-size:
|
|
5932
|
+
.ds-247420 .ds-tile-cap { flex: 1; display: flex; align-items: center; justify-content: center; font-family: var(--ff-mono); white-space: pre-line; color: var(--panel-text-2); font-size: var(--fs-lg); min-width: 0; text-align: center; }
|
|
5933
|
+
.ds-247420 .ds-tile-meta { display: flex; align-items: center; justify-content: space-between; gap: var(--space-1-75); font-size: var(--fs-micro); flex-wrap: wrap; min-width: 0; }
|
|
5889
5934
|
.ds-247420 .ds-tile-glyph { font-family: var(--ff-mono); color: var(--panel-text-3); }
|
|
5890
5935
|
.ds-247420 .ds-tile-label { color: var(--panel-text); overflow-wrap: anywhere; }
|
|
5891
5936
|
.ds-247420 .ds-gal-swatch { height: 64px; border-radius: var(--r-0); background: var(--swatch, var(--panel-1)); }
|
|
5892
|
-
.ds-247420 .ds-gal-swatch-meta { display: flex; justify-content: space-between; gap: var(--space-1-75); flex-wrap: wrap; font-family: var(--ff-mono); font-size:
|
|
5937
|
+
.ds-247420 .ds-gal-swatch-meta { display: flex; justify-content: space-between; gap: var(--space-1-75); flex-wrap: wrap; font-family: var(--ff-mono); font-size: var(--fs-nano); min-width: 0; }
|
|
5893
5938
|
.ds-247420 .ds-gal-swatch-name { color: var(--panel-text); }
|
|
5894
5939
|
.ds-247420 .ds-gal-swatch-hint { color: var(--panel-text-3); overflow-wrap: anywhere; }
|
|
5895
5940
|
.ds-247420 .ds-lightbox-head { display: flex; justify-content: space-between; align-items: center; gap: var(--space-2); flex-wrap: wrap; }
|
|
@@ -5948,9 +5993,9 @@
|
|
|
5948
5993
|
font-family: var(--ff-mono); font-weight: 600; text-transform: lowercase;
|
|
5949
5994
|
letter-spacing: 0.02em; user-select: none; flex-shrink: 0; object-fit: cover;
|
|
5950
5995
|
}
|
|
5951
|
-
.ds-247420 .ds-avatar-sm { width: 24px; height: 24px; font-size:
|
|
5952
|
-
.ds-247420 .ds-avatar-md { width: 36px; height: 36px; font-size:
|
|
5953
|
-
.ds-247420 .ds-avatar-lg { width: 48px; height: 48px; font-size:
|
|
5996
|
+
.ds-247420 .ds-avatar-sm { width: 24px; height: 24px; font-size: var(--fs-pico); }
|
|
5997
|
+
.ds-247420 .ds-avatar-md { width: 36px; height: 36px; font-size: var(--fs-micro); }
|
|
5998
|
+
.ds-247420 .ds-avatar-lg { width: 48px; height: 48px; font-size: var(--fs-sm); }
|
|
5954
5999
|
.ds-247420 .ds-avatar-square { border-radius: var(--r-2, 6px); }
|
|
5955
6000
|
|
|
5956
6001
|
/* SpreadsheetPreview — tabbed inline spreadsheet/CSV viewer (docstudio
|
|
@@ -6139,6 +6184,10 @@
|
|
|
6139
6184
|
same tonal chip treatment .chat-bubble code uses. */
|
|
6140
6185
|
.ds-247420 .ds-pattern-notes code {
|
|
6141
6186
|
font-family: var(--ff-mono);
|
|
6187
|
+
/* em-relative on purpose: inline code must track whatever size the
|
|
6188
|
+
surrounding prose is set at (the mono face runs optically large next to
|
|
6189
|
+
the system stack, hence 0.92). An absolute --fs-* tier would decouple it
|
|
6190
|
+
from its own paragraph and break at every containing type size. */
|
|
6142
6191
|
font-size: 0.92em;
|
|
6143
6192
|
background: color-mix(in oklab, var(--fg) 8%, transparent);
|
|
6144
6193
|
padding: 0 var(--space-1);
|
|
@@ -6847,7 +6896,7 @@
|
|
|
6847
6896
|
justify-content: center;
|
|
6848
6897
|
width: 12px;
|
|
6849
6898
|
height: 12px;
|
|
6850
|
-
font-size:
|
|
6899
|
+
font-size: var(--fs-pico);
|
|
6851
6900
|
transform: rotate(90deg);
|
|
6852
6901
|
transition: transform var(--dur-base) var(--ease);
|
|
6853
6902
|
flex-shrink: 0;
|
|
@@ -7125,7 +7174,7 @@
|
|
|
7125
7174
|
display: inline-flex;
|
|
7126
7175
|
align-items: center;
|
|
7127
7176
|
justify-content: center;
|
|
7128
|
-
font-size:
|
|
7177
|
+
font-size: var(--fs-pico);
|
|
7129
7178
|
font-weight: 600;
|
|
7130
7179
|
overflow: hidden;
|
|
7131
7180
|
transition: box-shadow var(--dur-snap) var(--ease);
|
|
@@ -7725,7 +7774,7 @@
|
|
|
7725
7774
|
border: none;
|
|
7726
7775
|
background: transparent;
|
|
7727
7776
|
color: var(--fg);
|
|
7728
|
-
font-size:
|
|
7777
|
+
font-size: var(--fs-lg);
|
|
7729
7778
|
line-height: 1;
|
|
7730
7779
|
cursor: pointer;
|
|
7731
7780
|
border-radius: var(--r-1);
|
|
@@ -7756,7 +7805,7 @@
|
|
|
7756
7805
|
bar here was the generic accent-stripe tell; the real accent still lands
|
|
7757
7806
|
on .cm-rb-author. */
|
|
7758
7807
|
border-left: var(--bw-hair) solid var(--rule-strong);
|
|
7759
|
-
font-size:
|
|
7808
|
+
font-size: var(--fs-xs);
|
|
7760
7809
|
}
|
|
7761
7810
|
.ds-247420 .cm-rb-label { flex: none; color: var(--fg-2); }
|
|
7762
7811
|
.ds-247420 .cm-rb-author { color: var(--accent); font-weight: 600; }
|
|
@@ -7775,7 +7824,7 @@
|
|
|
7775
7824
|
border: none;
|
|
7776
7825
|
background: transparent;
|
|
7777
7826
|
color: var(--fg-2);
|
|
7778
|
-
font-size:
|
|
7827
|
+
font-size: var(--fs-tiny);
|
|
7779
7828
|
line-height: 1;
|
|
7780
7829
|
cursor: pointer;
|
|
7781
7830
|
border-radius: var(--r-1);
|
|
@@ -7790,7 +7839,7 @@
|
|
|
7790
7839
|
gap: var(--space-2);
|
|
7791
7840
|
width: 100%;
|
|
7792
7841
|
padding: var(--space-2) var(--space-3);
|
|
7793
|
-
font-size:
|
|
7842
|
+
font-size: var(--fs-xs);
|
|
7794
7843
|
font-weight: 500;
|
|
7795
7844
|
}
|
|
7796
7845
|
.ds-247420 .cm-banner.clickable { cursor: pointer; }
|
|
@@ -8121,7 +8170,7 @@
|
|
|
8121
8170
|
border: var(--bw-hair) solid var(--rule-strong);
|
|
8122
8171
|
border-radius: var(--r-1);
|
|
8123
8172
|
background: var(--bg-3); color: var(--fg);
|
|
8124
|
-
cursor: pointer; font-size:
|
|
8173
|
+
cursor: pointer; font-size: var(--fs-body); line-height: 1;
|
|
8125
8174
|
}
|
|
8126
8175
|
.ds-247420 .vx-vc-btn:hover { background: var(--bg-4, var(--bg-3)); }
|
|
8127
8176
|
.ds-247420 .vx-vc-on { background: var(--accent); color: var(--accent-fg); border-color: var(--accent); }
|
|
@@ -8151,11 +8200,11 @@
|
|
|
8151
8200
|
display: flex; align-items: center; justify-content: space-between;
|
|
8152
8201
|
padding: var(--space-2); border-bottom: var(--bw-hair) solid var(--rule);
|
|
8153
8202
|
}
|
|
8154
|
-
.ds-247420 .cm-tp-title { font-weight: 700; font-size: var(--fs-
|
|
8203
|
+
.ds-247420 .cm-tp-title { font-weight: 700; font-size: var(--fs-xs); }
|
|
8155
8204
|
.ds-247420 .cm-tp-head-actions { display: flex; gap: var(--space-1); }
|
|
8156
8205
|
.ds-247420 .cm-tp-new, .ds-247420 .cm-tp-close {
|
|
8157
8206
|
border: none; background: transparent; color: var(--fg-2, var(--fg));
|
|
8158
|
-
cursor: pointer; font-size:
|
|
8207
|
+
cursor: pointer; font-size: var(--fs-body); width: 24px; height: 24px; border-radius: var(--r-1);
|
|
8159
8208
|
}
|
|
8160
8209
|
.ds-247420 .cm-tp-new:hover, .ds-247420 .cm-tp-close:hover { background: var(--bg-3); color: var(--fg); }
|
|
8161
8210
|
.ds-247420 .cm-tp-list { flex: 1; min-height: 0; overflow-y: auto; }
|
|
@@ -8171,9 +8220,9 @@
|
|
|
8171
8220
|
.ds-247420 .cm-tp-item.is-active { background: var(--bg-3); box-shadow: inset 3px 0 0 var(--accent); }
|
|
8172
8221
|
.ds-247420 .cm-tp-item.is-unread .cm-tp-item-title { font-weight: 700; }
|
|
8173
8222
|
.ds-247420 .cm-tp-dot { position: absolute; left: 4px; top: 50%; transform: translateY(-50%); width: 8px; height: 8px; border-radius: 50%; background: var(--accent); }
|
|
8174
|
-
.ds-247420 .cm-tp-item-title { font-size: var(--fs-
|
|
8175
|
-
.ds-247420 .cm-tp-item-snippet { font-size: var(--fs-
|
|
8176
|
-
.ds-247420 .cm-tp-item-meta { display: flex; gap: var(--space-2); font-size: var(--fs-micro
|
|
8223
|
+
.ds-247420 .cm-tp-item-title { font-size: var(--fs-xs); }
|
|
8224
|
+
.ds-247420 .cm-tp-item-snippet { font-size: var(--fs-micro); color: var(--fg-2, var(--fg)); opacity: .8; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
8225
|
+
.ds-247420 .cm-tp-item-meta { display: flex; gap: var(--space-2); font-size: var(--fs-micro); color: var(--fg-2, var(--fg)); opacity: .7; }
|
|
8177
8226
|
.ds-247420 .cm-tp-empty, .ds-247420 .cm-forum-empty, .ds-247420 .cm-channel-empty, .ds-247420 .cm-member-empty {
|
|
8178
8227
|
display: flex; flex-direction: column; align-items: center; gap: var(--space-2);
|
|
8179
8228
|
padding: var(--space-4) var(--space-3); text-align: center;
|
|
@@ -8223,10 +8272,10 @@
|
|
|
8223
8272
|
.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); }
|
|
8224
8273
|
.ds-247420 .cm-forum-item:hover { background: var(--bg-3); }
|
|
8225
8274
|
.ds-247420 .cm-forum-item-head { display: flex; align-items: center; justify-content: space-between; gap: var(--space-2); }
|
|
8226
|
-
.ds-247420 .cm-forum-item-title { font-weight: 700; font-size: var(--fs-
|
|
8227
|
-
.ds-247420 .cm-forum-item-replies { font-size: var(--fs-
|
|
8228
|
-
.ds-247420 .cm-forum-item-snippet { font-size: var(--fs-
|
|
8229
|
-
.ds-247420 .cm-forum-item-meta { display: flex; flex-wrap: wrap; gap: var(--space-2); align-items: center; font-size: var(--fs-micro
|
|
8275
|
+
.ds-247420 .cm-forum-item-title { font-weight: 700; font-size: var(--fs-xs); }
|
|
8276
|
+
.ds-247420 .cm-forum-item-replies { font-size: var(--fs-micro); color: var(--fg-2, var(--fg)); opacity: .8; white-space: nowrap; }
|
|
8277
|
+
.ds-247420 .cm-forum-item-snippet { font-size: var(--fs-micro); color: var(--fg-2, var(--fg)); opacity: .85; }
|
|
8278
|
+
.ds-247420 .cm-forum-item-meta { display: flex; flex-wrap: wrap; gap: var(--space-2); align-items: center; font-size: var(--fs-micro); color: var(--fg-2, var(--fg)); opacity: .7; }
|
|
8230
8279
|
.ds-247420 .cm-forum-item-tags { display: inline-flex; gap: var(--space-1); }
|
|
8231
8280
|
/* 1px vertical is OFF-SCALE ON PURPOSE — the tag is an inline chip inside the
|
|
8232
8281
|
forum meta row; --space-hair (2px) tips it past the row height. */
|
|
@@ -8235,7 +8284,7 @@
|
|
|
8235
8284
|
/* PageView — cm-page / cm-page-* */
|
|
8236
8285
|
.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); }
|
|
8237
8286
|
.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); }
|
|
8238
|
-
.ds-247420 .cm-page-title { margin: 0; font-size: var(--fs-
|
|
8287
|
+
.ds-247420 .cm-page-title { margin: 0; font-size: var(--fs-xl); font-weight: 700; }
|
|
8239
8288
|
.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; }
|
|
8240
8289
|
.ds-247420 .cm-page-body { padding: var(--space-3); line-height: 1.6; }
|
|
8241
8290
|
.ds-247420 .cm-page-empty { color: var(--fg-2, var(--fg)); opacity: .7; }
|
|
@@ -8249,8 +8298,11 @@
|
|
|
8249
8298
|
.ds-247420 .fd-page-inner > * { min-width: 0; }
|
|
8250
8299
|
.ds-247420 .fd-loading { display: flex; align-items: center; gap: var(--space-2, 10px); padding: var(--space-4, 24px); color: var(--fg-2, var(--fg)); }
|
|
8251
8300
|
.ds-247420 .fd-empty { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: var(--space-2, 10px); padding: var(--space-5, 32px) var(--space-3, 16px); color: var(--fg-2, var(--fg)); text-align: center; }
|
|
8301
|
+
/* 28px is an ICON size (empty-state mark), not a type tier — the --fs-* ladder
|
|
8302
|
+
tops out at --fs-xl (21px) before every remaining rung becomes a fluid
|
|
8303
|
+
heading clamp, so neither substitutes without visibly resizing the mark. */
|
|
8252
8304
|
.ds-247420 .fd-empty-glyph { font-size: 28px; opacity: .55; line-height: 1; }
|
|
8253
|
-
.ds-247420 .fd-pre { margin: 0; padding: var(--space-2, 10px); background: var(--bg-3, var(--panel-bg-2)); border: var(--bw-hair, 1px) solid var(--rule, var(--panel-accent)); border-radius: var(--r-1, 6px); overflow: auto; max-height: 460px; white-space: pre-wrap; overflow-wrap: anywhere; word-break: break-word; font-family: var(--font-mono, ui-monospace, monospace); font-size:
|
|
8305
|
+
.ds-247420 .fd-pre { margin: 0; padding: var(--space-2, 10px); background: var(--bg-3, var(--panel-bg-2)); border: var(--bw-hair, 1px) solid var(--rule, var(--panel-accent)); border-radius: var(--r-1, 6px); overflow: auto; max-height: 460px; white-space: pre-wrap; overflow-wrap: anywhere; word-break: break-word; font-family: var(--font-mono, ui-monospace, monospace); font-size: var(--fs-micro); line-height: 1.5; }
|
|
8254
8306
|
.ds-247420 .fd-skill-body { max-height: 320px; }
|
|
8255
8307
|
.ds-247420 .fd-row-actions { display: inline-flex; gap: var(--space-1, 6px); align-items: center; }
|
|
8256
8308
|
.ds-247420 .fd-chat { display: flex; flex-direction: column; gap: var(--space-2, 10px); height: 100%; min-height: 0; }
|
|
@@ -12009,7 +12061,7 @@
|
|
|
12009
12061
|
margin: 0 0 var(--space-3) 0;
|
|
12010
12062
|
}
|
|
12011
12063
|
.ds-247420 #ds-article-host .toc ol { margin: 0; padding-left: var(--space-3-5); }
|
|
12012
|
-
.ds-247420 #ds-article-host .toc li { font-size:
|
|
12064
|
+
.ds-247420 #ds-article-host .toc li { font-size: var(--fs-tiny); line-height: 1.85; color: var(--panel-text); }
|
|
12013
12065
|
.ds-247420 #ds-article-host .toc li::marker { color: var(--panel-text-3); font-variant-numeric: tabular-nums; }
|
|
12014
12066
|
.ds-247420 #ds-article-host .toc a { color: var(--panel-text-2); text-decoration: none; transition: color .12s ease; }
|
|
12015
12067
|
.ds-247420 #ds-article-host .toc a:hover { color: var(--panel-accent); }
|
|
@@ -12040,6 +12092,12 @@
|
|
|
12040
12092
|
padding: var(--space-3) var(--space-3-5);
|
|
12041
12093
|
margin: var(--space-3) 0 var(--space-5) 0;
|
|
12042
12094
|
font-family: var(--ff-mono);
|
|
12095
|
+
/* Deliberate half-step, NOT un-migrated drift: this is a transcript block set
|
|
12096
|
+
in the mono face, which runs optically ~1 rung larger than the system
|
|
12097
|
+
stack at the same px. --fs-micro (12) reads thin against the surrounding
|
|
12098
|
+
prose and --fs-tiny (13) reads heavy; 12.5 is the tuned midpoint. There is
|
|
12099
|
+
no half-rung on the --fs-* ladder and one must not be invented for a
|
|
12100
|
+
single block, so this literal stays. */
|
|
12043
12101
|
font-size: 12.5px;
|
|
12044
12102
|
line-height: 1.6;
|
|
12045
12103
|
color: var(--panel-text);
|
|
@@ -12086,7 +12144,7 @@
|
|
|
12086
12144
|
margin-top: var(--space-1-75);
|
|
12087
12145
|
font-weight: 400;
|
|
12088
12146
|
color: var(--panel-text-2);
|
|
12089
|
-
font-size:
|
|
12147
|
+
font-size: var(--fs-tiny);
|
|
12090
12148
|
line-height: 1.6;
|
|
12091
12149
|
}
|
|
12092
12150
|
|
|
@@ -12098,15 +12156,15 @@
|
|
|
12098
12156
|
margin: var(--space-2) 0;
|
|
12099
12157
|
background: var(--panel-1);
|
|
12100
12158
|
border-radius: var(--r-0);
|
|
12101
|
-
font-size:
|
|
12159
|
+
font-size: var(--fs-tiny);
|
|
12102
12160
|
box-shadow: var(--panel-shadow);
|
|
12103
12161
|
text-decoration: none;
|
|
12104
12162
|
}
|
|
12105
12163
|
.ds-247420 .ds-prose .card:hover { background: var(--panel-hover); }
|
|
12106
12164
|
.ds-247420 .ds-prose .card .card-top { display: flex; align-items: baseline; justify-content: space-between; gap: var(--space-2-75); }
|
|
12107
12165
|
.ds-247420 .ds-prose .card .repo-name { font-weight: 600; color: var(--panel-text); }
|
|
12108
|
-
.ds-247420 .ds-prose .card .stars { color: var(--panel-text-3); font-family: var(--ff-mono); font-size:
|
|
12109
|
-
.ds-247420 .ds-prose .card .desc { color: var(--panel-text-2); font-size:
|
|
12166
|
+
.ds-247420 .ds-prose .card .stars { color: var(--panel-text-3); font-family: var(--ff-mono); font-size: var(--fs-micro); flex: 0 0 auto; }
|
|
12167
|
+
.ds-247420 .ds-prose .card .desc { color: var(--panel-text-2); font-size: var(--fs-micro); line-height: 1.5; margin: 0; }
|
|
12110
12168
|
.ds-247420 .ds-prose .tags { display: flex; gap: var(--space-1-75); flex-wrap: wrap; }
|
|
12111
12169
|
.ds-247420 .ds-prose .tag {
|
|
12112
12170
|
background: var(--panel-2);
|