anentrypoint-design 0.0.383 → 0.0.385
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 +117 -49
- package/dist/247420.js +22 -22
- package/package.json +1 -1
- package/scripts/lint-css.mjs +24 -10
- 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/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/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 +26 -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; }
|
|
@@ -1855,6 +1866,16 @@
|
|
|
1855
1866
|
Changelog
|
|
1856
1867
|
============================================================ */
|
|
1857
1868
|
.ds-247420 .ds-changelog-row {
|
|
1869
|
+
/* The !important is load-bearing and was empirically confirmed so -- do not
|
|
1870
|
+
remove it on a specificity argument. A changelog row carries three tracks
|
|
1871
|
+
(date, version, message) where a plain .row carries two, and the responsive
|
|
1872
|
+
blocks in responsive.css legitimately rewrite .row's template at several
|
|
1873
|
+
breakpoints. Those blocks are later in the cascade, so at tablet width the
|
|
1874
|
+
two-track override wins on source order and collapses the version column:
|
|
1875
|
+
measured live, removing this flag changes the computed template from
|
|
1876
|
+
"120.75px 77.625px 70.125px" to "103.5px 0px 165px" -- a zero-width column
|
|
1877
|
+
and the version silently gone. Scoping to .app does not help, because the
|
|
1878
|
+
competing rules would need to be scoped in lockstep. */
|
|
1858
1879
|
grid-template-columns: minmax(110px, 14ch) minmax(60px, 9ch) minmax(0, 1fr) !important;
|
|
1859
1880
|
}
|
|
1860
1881
|
.ds-247420 .ds-changelog-ver {
|
|
@@ -1910,6 +1931,10 @@
|
|
|
1910
1931
|
}
|
|
1911
1932
|
.ds-247420 .kpi-card .num {
|
|
1912
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. */
|
|
1913
1938
|
font-size: clamp(22px, 3cqi, 32px); line-height: 1;
|
|
1914
1939
|
letter-spacing: var(--tr-tight);
|
|
1915
1940
|
}
|
|
@@ -2449,7 +2474,7 @@
|
|
|
2449
2474
|
/* File icon — glyph chip, tinted per type. */
|
|
2450
2475
|
.ds-247420 .ds-file-icon {
|
|
2451
2476
|
display: inline-flex; align-items: center; justify-content: center;
|
|
2452
|
-
width: 26px; height: 26px; font-size:
|
|
2477
|
+
width: 26px; height: 26px; font-size: var(--fs-sm); line-height: 1;
|
|
2453
2478
|
color: var(--fg-2);
|
|
2454
2479
|
}
|
|
2455
2480
|
.ds-247420 .ds-file-row[data-file-type="dir"] .ds-file-icon { color: var(--accent-ink); }
|
|
@@ -2473,7 +2498,7 @@
|
|
|
2473
2498
|
display: inline-flex; align-items: center; justify-content: center;
|
|
2474
2499
|
width: 28px; height: 28px; padding: 0;
|
|
2475
2500
|
background: transparent; border: 0; border-radius: var(--r-1);
|
|
2476
|
-
color: var(--fg-3); font-size:
|
|
2501
|
+
color: var(--fg-3); font-size: var(--fs-xs); cursor: pointer;
|
|
2477
2502
|
transition: background var(--dur-snap) var(--ease), color var(--dur-snap) var(--ease);
|
|
2478
2503
|
}
|
|
2479
2504
|
.ds-247420 .ds-file-act:hover { background: var(--bg-3); color: var(--fg); }
|
|
@@ -2572,7 +2597,7 @@
|
|
|
2572
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); }
|
|
2573
2598
|
.ds-247420 .ds-file-grid[data-density="compact"] .ds-file-row .title { font-size: var(--fs-xs); }
|
|
2574
2599
|
.ds-247420 .ds-file-grid[data-density="compact"] .ds-file-row .ds-file-meta { font-size: var(--fs-micro); }
|
|
2575
|
-
.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); }
|
|
2576
2601
|
|
|
2577
2602
|
/* Thumbnail density — tile grid; image entries carry a real lazy thumbnail. */
|
|
2578
2603
|
.ds-247420 .ds-file-grid-thumb {
|
|
@@ -2612,6 +2637,10 @@
|
|
|
2612
2637
|
width: 100%; aspect-ratio: 4 / 3;
|
|
2613
2638
|
background: var(--bg-2); border-radius: var(--r-1); overflow: hidden;
|
|
2614
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. */
|
|
2615
2644
|
.ds-247420 .ds-file-cell-media .ds-file-icon { width: 34px; height: 34px; font-size: 24px; }
|
|
2616
2645
|
.ds-247420 .ds-file-cell-thumb { width: 100%; height: 100%; object-fit: cover; }
|
|
2617
2646
|
/* Per-type icon tints on thumb tiles so the grid keeps the colour-coding the
|
|
@@ -2755,6 +2784,7 @@
|
|
|
2755
2784
|
gap: var(--space-2); flex-wrap: wrap;
|
|
2756
2785
|
padding: var(--space-4) var(--space-3); text-align: center;
|
|
2757
2786
|
}
|
|
2787
|
+
/* Icon size, not type — see .ds-file-cell-media .ds-file-icon above. */
|
|
2758
2788
|
.ds-247420 .ds-dropzone-glyph { font-size: 22px; color: var(--fg-3); }
|
|
2759
2789
|
.ds-247420 .ds-dropzone-label { font-size: var(--fs-sm); color: var(--fg-3); }
|
|
2760
2790
|
.ds-247420 .ds-dropzone.dragover {
|
|
@@ -2863,6 +2893,7 @@
|
|
|
2863
2893
|
gap: var(--space-2); padding: var(--space-6) var(--space-3);
|
|
2864
2894
|
color: var(--fg-3); text-align: center;
|
|
2865
2895
|
}
|
|
2896
|
+
/* Icon size, not type — see .ds-file-cell-media .ds-file-icon above. */
|
|
2866
2897
|
.ds-247420 .ds-file-empty-glyph { font-size: 34px; opacity: 0.55; }
|
|
2867
2898
|
.ds-247420 .ds-file-empty-text { font-size: var(--fs-sm); }
|
|
2868
2899
|
|
|
@@ -2918,7 +2949,11 @@
|
|
|
2918
2949
|
font-family: inherit; font-size: var(--fs-sm);
|
|
2919
2950
|
}
|
|
2920
2951
|
.ds-247420 .ds-modal-input:focus-visible { outline: var(--focus-w) solid var(--focus-color); outline-offset: var(--focus-offset); }
|
|
2921
|
-
/* 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. */
|
|
2922
2957
|
@media (hover: none), (pointer: coarse) {
|
|
2923
2958
|
.ds-247420 .ds-modal-input { font-size: 16px; min-height: 44px; }
|
|
2924
2959
|
}
|
|
@@ -3015,6 +3050,7 @@
|
|
|
3015
3050
|
display: flex; flex-direction: column; align-items: center; justify-content: center;
|
|
3016
3051
|
gap: var(--space-2); padding: var(--space-6); color: var(--fg-3);
|
|
3017
3052
|
}
|
|
3053
|
+
/* Icon size, not type — see .ds-file-cell-media .ds-file-icon above. */
|
|
3018
3054
|
.ds-247420 .ds-preview-glyph { font-size: 34px; opacity: 0.6; }
|
|
3019
3055
|
|
|
3020
3056
|
/* Thin scrollbars inside preview bodies. */
|
|
@@ -3258,7 +3294,7 @@
|
|
|
3258
3294
|
width: 36px; height: 36px; flex-shrink: 0;
|
|
3259
3295
|
border-radius: 50%; background: var(--bg-3); color: var(--fg);
|
|
3260
3296
|
display: inline-flex; align-items: center; justify-content: center;
|
|
3261
|
-
font-family: var(--ff-mono); font-size:
|
|
3297
|
+
font-family: var(--ff-mono); font-size: var(--fs-micro); font-weight: 600;
|
|
3262
3298
|
text-transform: lowercase; letter-spacing: 0.02em; user-select: none;
|
|
3263
3299
|
transition: transform 0.12s ease, box-shadow 0.12s ease;
|
|
3264
3300
|
position: relative;
|
|
@@ -3299,6 +3335,9 @@
|
|
|
3299
3335
|
border: 1px solid color-mix(in oklab, var(--mascot) 28%, transparent);
|
|
3300
3336
|
}
|
|
3301
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. */
|
|
3302
3341
|
font-family: var(--ff-mono); font-size: 0.92em;
|
|
3303
3342
|
background: color-mix(in oklab, var(--fg) 10%, transparent);
|
|
3304
3343
|
/* 1px block is deliberately under --space-hair (2px): inline <code> must not
|
|
@@ -3325,6 +3364,11 @@
|
|
|
3325
3364
|
font-family: var(--ff-body); font-weight: 600;
|
|
3326
3365
|
margin: var(--space-2) 0 var(--space-1); line-height: var(--lh-snug);
|
|
3327
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. */
|
|
3328
3372
|
.ds-247420 .chat-bubble.chat-md h1 { font-size: 1.15em; }
|
|
3329
3373
|
.ds-247420 .chat-bubble.chat-md h2 { font-size: 1.08em; }
|
|
3330
3374
|
.ds-247420 .chat-bubble.chat-md h3 { font-size: 1.04em; }
|
|
@@ -3360,7 +3404,7 @@
|
|
|
3360
3404
|
}
|
|
3361
3405
|
/* Markdown tables + horizontal rules: agents routinely emit them, but they were
|
|
3362
3406
|
unstyled (bare unspaced cells, vanished rules). */
|
|
3363
|
-
.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; }
|
|
3364
3408
|
.ds-247420 .chat-bubble.chat-md th,
|
|
3365
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; }
|
|
3366
3410
|
.ds-247420 .chat-bubble.chat-md th { background: color-mix(in oklab, var(--fg) 5%, transparent); font-weight: 600; }
|
|
@@ -3470,6 +3514,9 @@
|
|
|
3470
3514
|
}
|
|
3471
3515
|
.ds-247420 .chat-file:hover { background: var(--bg-3); }
|
|
3472
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. */
|
|
3473
3520
|
font-size: 22px; width: 36px; height: 36px;
|
|
3474
3521
|
display: inline-flex; align-items: center; justify-content: center;
|
|
3475
3522
|
background: var(--bg-3);
|
|
@@ -3482,7 +3529,7 @@
|
|
|
3482
3529
|
}
|
|
3483
3530
|
.ds-247420 .chat-file .meta { display: flex; flex-direction: column; gap: var(--space-hair); min-width: 0; flex: 1; }
|
|
3484
3531
|
.ds-247420 .chat-file .size { font-family: var(--ff-mono); font-size: var(--fs-xs); color: var(--fg-3); }
|
|
3485
|
-
.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; }
|
|
3486
3533
|
.ds-247420 .chat-file:hover .go { color: var(--accent-ink); }
|
|
3487
3534
|
|
|
3488
3535
|
.ds-247420 .chat-msg.you .chat-pdf,
|
|
@@ -3500,7 +3547,7 @@
|
|
|
3500
3547
|
background: color-mix(in oklab, var(--fg) 5%, var(--bg-2));
|
|
3501
3548
|
border-bottom: 1px solid color-mix(in oklab, var(--fg) 10%, transparent);
|
|
3502
3549
|
}
|
|
3503
|
-
.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; }
|
|
3504
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; }
|
|
3505
3552
|
.ds-247420 .chat-pdf-head .size { font-family: var(--ff-mono); font-size: var(--fs-xs); color: var(--fg-3); }
|
|
3506
3553
|
.ds-247420 .chat-pdf-head a { color: var(--accent-ink); font-family: var(--ff-mono); font-size: var(--fs-xs); text-decoration: none; }
|
|
@@ -3559,8 +3606,8 @@
|
|
|
3559
3606
|
border-color: color-mix(in oklab, var(--accent) 55%, transparent);
|
|
3560
3607
|
color: var(--accent-ink);
|
|
3561
3608
|
}
|
|
3562
|
-
.ds-247420 .chat-reactions .rxn .e { font-size:
|
|
3563
|
-
.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); }
|
|
3564
3611
|
.ds-247420 .chat-reactions .rxn.you .n { color: var(--accent-ink); }
|
|
3565
3612
|
|
|
3566
3613
|
.ds-247420 .chat-typing { display: inline-flex; gap: var(--space-1); align-items: center; }
|
|
@@ -3687,6 +3734,7 @@
|
|
|
3687
3734
|
|
|
3688
3735
|
.ds-247420 .aicat-portrait { display: inline-flex; align-items: center; gap: var(--space-2-5); padding: var(--space-1) 0; }
|
|
3689
3736
|
.ds-247420 .aicat-face {
|
|
3737
|
+
/* 24px is the ICON size inside a 32px round chip — see .chat-file .glyph. */
|
|
3690
3738
|
width: 32px; height: 32px; font-size: 24px;
|
|
3691
3739
|
display: inline-flex; align-items: center; justify-content: center;
|
|
3692
3740
|
background: color-mix(in oklab, var(--mascot) 22%, var(--bg-2));
|
|
@@ -5625,7 +5673,7 @@
|
|
|
5625
5673
|
}
|
|
5626
5674
|
.ds-247420 .ds-err-path {
|
|
5627
5675
|
display: inline-flex; gap: var(--space-1-75); align-items: baseline; flex-wrap: wrap; max-width: 100%;
|
|
5628
|
-
font-family: var(--ff-mono); font-size:
|
|
5676
|
+
font-family: var(--ff-mono); font-size: var(--fs-tiny); color: var(--panel-text-2);
|
|
5629
5677
|
background: var(--panel-1); padding: var(--space-1-75) var(--space-2-75); border-radius: var(--r-0);
|
|
5630
5678
|
overflow-wrap: anywhere; word-break: break-all;
|
|
5631
5679
|
}
|
|
@@ -5683,6 +5731,9 @@
|
|
|
5683
5731
|
.ds-247420 .ds-topbar-search { flex-basis: 100%; }
|
|
5684
5732
|
}
|
|
5685
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. */
|
|
5686
5737
|
.ds-247420 .ds-empty-state-glyph { font-size: clamp(24px, 6vw, 32px); }
|
|
5687
5738
|
.ds-247420 .ds-empty-state-msg { margin: var(--space-1-75) 0; }
|
|
5688
5739
|
.ds-247420 .ds-empty-state-hint { margin: 0; font-size: var(--fs-sm); }
|
|
@@ -5702,20 +5753,20 @@
|
|
|
5702
5753
|
.ds-247420 .ds-swatch-col { display: flex; flex-direction: column; gap: var(--space-1-75); }
|
|
5703
5754
|
.ds-247420 .ds-swatch-chip { height: 48px; border-radius: var(--r-1); border: 1px solid var(--rule); background: var(--swatch, var(--panel-1)); }
|
|
5704
5755
|
.ds-247420 .ds-swatch-chip--big { height: 64px; }
|
|
5705
|
-
.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); }
|
|
5706
5757
|
.ds-247420 .ds-type-panel { padding: clamp(10px, 2.5vw, 14px) clamp(10px, 3vw, 18px); display: flex; flex-direction: column; gap: 14px; }
|
|
5707
5758
|
.ds-247420 .ds-type-row {
|
|
5708
5759
|
display: flex; align-items: baseline; gap: 14px;
|
|
5709
5760
|
border-bottom: 1px solid var(--rule); padding-bottom: var(--space-2); flex-wrap: wrap;
|
|
5710
5761
|
}
|
|
5711
|
-
.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); }
|
|
5712
5763
|
.ds-247420 .ds-type-sample {
|
|
5713
5764
|
min-width: 0; overflow-wrap: anywhere; line-height: var(--lh-tight); color: var(--fg);
|
|
5714
5765
|
font-size: var(--sample-size, var(--fs-body));
|
|
5715
5766
|
}
|
|
5716
5767
|
.ds-247420 .ds-prim-panel { padding: clamp(10px, 2.5vw, 14px) clamp(10px, 3vw, 18px); display: flex; flex-direction: column; gap: 18px; }
|
|
5717
5768
|
.ds-247420 .ds-prim-row { display: flex; gap: var(--space-2-5); flex-wrap: wrap; align-items: center; }
|
|
5718
|
-
.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); }
|
|
5719
5770
|
|
|
5720
5771
|
/* == appended: content-site == */
|
|
5721
5772
|
/* Home landing wrappers (site/theme.mjs) — replace banned inline styles. */
|
|
@@ -5847,6 +5898,10 @@
|
|
|
5847
5898
|
/* 18px ceiling: no tier between --space-3 (16) and --space-3-5 (20). */
|
|
5848
5899
|
.ds-247420 .ds-auth-form { padding: clamp(var(--space-2-75), 3vw, 18px); display: flex; flex-direction: column; gap: var(--space-2-5); }
|
|
5849
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. */
|
|
5850
5905
|
.ds-247420 .ds-auth-sent-glyph { font-size: 32px; color: var(--panel-accent); }
|
|
5851
5906
|
.ds-247420 .ds-auth-sent-title { margin: 0; font-weight: 600; }
|
|
5852
5907
|
.ds-247420 .ds-auth-sent-sub { margin: 0; color: var(--panel-text-2); overflow-wrap: anywhere; }
|
|
@@ -5854,17 +5909,17 @@
|
|
|
5854
5909
|
/* .ds-auth-field-label joins the kit small-label voice above, no overrides. */
|
|
5855
5910
|
.ds-247420 .ds-auth-row-between { display: flex; align-items: center; justify-content: space-between; gap: var(--space-2); flex-wrap: wrap; }
|
|
5856
5911
|
.ds-247420 .ds-auth-remember { display: flex; align-items: center; gap: var(--space-1-75); cursor: pointer; }
|
|
5857
|
-
.ds-247420 .ds-auth-remember-text { color: var(--panel-text-2); font-size:
|
|
5858
|
-
.ds-247420 .ds-auth-forgot { font-size:
|
|
5859
|
-
.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; }
|
|
5860
5915
|
.ds-247420 .ds-auth-providers { display: flex; gap: var(--space-2); flex-wrap: wrap; }
|
|
5861
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); }
|
|
5862
5917
|
.ds-247420 .ds-auth-provider-btn--loading { opacity: 0.7; pointer-events: none; }
|
|
5863
5918
|
.ds-247420 .ds-auth-provider-glyph { font-family: var(--ff-mono); color: var(--panel-text-3); display: inline-flex; }
|
|
5864
|
-
.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; }
|
|
5865
5920
|
.ds-247420 .ds-auth-mode-link { color: var(--panel-text-3); text-decoration: none; }
|
|
5866
5921
|
.ds-247420 .ds-auth-mode-link--active { color: var(--panel-text); text-decoration: underline; }
|
|
5867
|
-
.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; }
|
|
5868
5923
|
|
|
5869
5924
|
/* == appended: gallery-misc kit cleanup == */
|
|
5870
5925
|
/* --- shared helpers (converted from inline styles) --- */
|
|
@@ -5874,12 +5929,12 @@
|
|
|
5874
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; }
|
|
5875
5930
|
|
|
5876
5931
|
/* --- gallery kit --- */
|
|
5877
|
-
.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:
|
|
5878
|
-
.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; }
|
|
5879
5934
|
.ds-247420 .ds-tile-glyph { font-family: var(--ff-mono); color: var(--panel-text-3); }
|
|
5880
5935
|
.ds-247420 .ds-tile-label { color: var(--panel-text); overflow-wrap: anywhere; }
|
|
5881
5936
|
.ds-247420 .ds-gal-swatch { height: 64px; border-radius: var(--r-0); background: var(--swatch, var(--panel-1)); }
|
|
5882
|
-
.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; }
|
|
5883
5938
|
.ds-247420 .ds-gal-swatch-name { color: var(--panel-text); }
|
|
5884
5939
|
.ds-247420 .ds-gal-swatch-hint { color: var(--panel-text-3); overflow-wrap: anywhere; }
|
|
5885
5940
|
.ds-247420 .ds-lightbox-head { display: flex; justify-content: space-between; align-items: center; gap: var(--space-2); flex-wrap: wrap; }
|
|
@@ -5938,9 +5993,9 @@
|
|
|
5938
5993
|
font-family: var(--ff-mono); font-weight: 600; text-transform: lowercase;
|
|
5939
5994
|
letter-spacing: 0.02em; user-select: none; flex-shrink: 0; object-fit: cover;
|
|
5940
5995
|
}
|
|
5941
|
-
.ds-247420 .ds-avatar-sm { width: 24px; height: 24px; font-size:
|
|
5942
|
-
.ds-247420 .ds-avatar-md { width: 36px; height: 36px; font-size:
|
|
5943
|
-
.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); }
|
|
5944
5999
|
.ds-247420 .ds-avatar-square { border-radius: var(--r-2, 6px); }
|
|
5945
6000
|
|
|
5946
6001
|
/* SpreadsheetPreview — tabbed inline spreadsheet/CSV viewer (docstudio
|
|
@@ -6129,6 +6184,10 @@
|
|
|
6129
6184
|
same tonal chip treatment .chat-bubble code uses. */
|
|
6130
6185
|
.ds-247420 .ds-pattern-notes code {
|
|
6131
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. */
|
|
6132
6191
|
font-size: 0.92em;
|
|
6133
6192
|
background: color-mix(in oklab, var(--fg) 8%, transparent);
|
|
6134
6193
|
padding: 0 var(--space-1);
|
|
@@ -6837,7 +6896,7 @@
|
|
|
6837
6896
|
justify-content: center;
|
|
6838
6897
|
width: 12px;
|
|
6839
6898
|
height: 12px;
|
|
6840
|
-
font-size:
|
|
6899
|
+
font-size: var(--fs-pico);
|
|
6841
6900
|
transform: rotate(90deg);
|
|
6842
6901
|
transition: transform var(--dur-base) var(--ease);
|
|
6843
6902
|
flex-shrink: 0;
|
|
@@ -7115,7 +7174,7 @@
|
|
|
7115
7174
|
display: inline-flex;
|
|
7116
7175
|
align-items: center;
|
|
7117
7176
|
justify-content: center;
|
|
7118
|
-
font-size:
|
|
7177
|
+
font-size: var(--fs-pico);
|
|
7119
7178
|
font-weight: 600;
|
|
7120
7179
|
overflow: hidden;
|
|
7121
7180
|
transition: box-shadow var(--dur-snap) var(--ease);
|
|
@@ -7715,7 +7774,7 @@
|
|
|
7715
7774
|
border: none;
|
|
7716
7775
|
background: transparent;
|
|
7717
7776
|
color: var(--fg);
|
|
7718
|
-
font-size:
|
|
7777
|
+
font-size: var(--fs-lg);
|
|
7719
7778
|
line-height: 1;
|
|
7720
7779
|
cursor: pointer;
|
|
7721
7780
|
border-radius: var(--r-1);
|
|
@@ -7746,7 +7805,7 @@
|
|
|
7746
7805
|
bar here was the generic accent-stripe tell; the real accent still lands
|
|
7747
7806
|
on .cm-rb-author. */
|
|
7748
7807
|
border-left: var(--bw-hair) solid var(--rule-strong);
|
|
7749
|
-
font-size:
|
|
7808
|
+
font-size: var(--fs-xs);
|
|
7750
7809
|
}
|
|
7751
7810
|
.ds-247420 .cm-rb-label { flex: none; color: var(--fg-2); }
|
|
7752
7811
|
.ds-247420 .cm-rb-author { color: var(--accent); font-weight: 600; }
|
|
@@ -7765,7 +7824,7 @@
|
|
|
7765
7824
|
border: none;
|
|
7766
7825
|
background: transparent;
|
|
7767
7826
|
color: var(--fg-2);
|
|
7768
|
-
font-size:
|
|
7827
|
+
font-size: var(--fs-tiny);
|
|
7769
7828
|
line-height: 1;
|
|
7770
7829
|
cursor: pointer;
|
|
7771
7830
|
border-radius: var(--r-1);
|
|
@@ -7780,7 +7839,7 @@
|
|
|
7780
7839
|
gap: var(--space-2);
|
|
7781
7840
|
width: 100%;
|
|
7782
7841
|
padding: var(--space-2) var(--space-3);
|
|
7783
|
-
font-size:
|
|
7842
|
+
font-size: var(--fs-xs);
|
|
7784
7843
|
font-weight: 500;
|
|
7785
7844
|
}
|
|
7786
7845
|
.ds-247420 .cm-banner.clickable { cursor: pointer; }
|
|
@@ -8111,7 +8170,7 @@
|
|
|
8111
8170
|
border: var(--bw-hair) solid var(--rule-strong);
|
|
8112
8171
|
border-radius: var(--r-1);
|
|
8113
8172
|
background: var(--bg-3); color: var(--fg);
|
|
8114
|
-
cursor: pointer; font-size:
|
|
8173
|
+
cursor: pointer; font-size: var(--fs-body); line-height: 1;
|
|
8115
8174
|
}
|
|
8116
8175
|
.ds-247420 .vx-vc-btn:hover { background: var(--bg-4, var(--bg-3)); }
|
|
8117
8176
|
.ds-247420 .vx-vc-on { background: var(--accent); color: var(--accent-fg); border-color: var(--accent); }
|
|
@@ -8141,11 +8200,11 @@
|
|
|
8141
8200
|
display: flex; align-items: center; justify-content: space-between;
|
|
8142
8201
|
padding: var(--space-2); border-bottom: var(--bw-hair) solid var(--rule);
|
|
8143
8202
|
}
|
|
8144
|
-
.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); }
|
|
8145
8204
|
.ds-247420 .cm-tp-head-actions { display: flex; gap: var(--space-1); }
|
|
8146
8205
|
.ds-247420 .cm-tp-new, .ds-247420 .cm-tp-close {
|
|
8147
8206
|
border: none; background: transparent; color: var(--fg-2, var(--fg));
|
|
8148
|
-
cursor: pointer; font-size:
|
|
8207
|
+
cursor: pointer; font-size: var(--fs-body); width: 24px; height: 24px; border-radius: var(--r-1);
|
|
8149
8208
|
}
|
|
8150
8209
|
.ds-247420 .cm-tp-new:hover, .ds-247420 .cm-tp-close:hover { background: var(--bg-3); color: var(--fg); }
|
|
8151
8210
|
.ds-247420 .cm-tp-list { flex: 1; min-height: 0; overflow-y: auto; }
|
|
@@ -8161,9 +8220,9 @@
|
|
|
8161
8220
|
.ds-247420 .cm-tp-item.is-active { background: var(--bg-3); box-shadow: inset 3px 0 0 var(--accent); }
|
|
8162
8221
|
.ds-247420 .cm-tp-item.is-unread .cm-tp-item-title { font-weight: 700; }
|
|
8163
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); }
|
|
8164
|
-
.ds-247420 .cm-tp-item-title { font-size: var(--fs-
|
|
8165
|
-
.ds-247420 .cm-tp-item-snippet { font-size: var(--fs-
|
|
8166
|
-
.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; }
|
|
8167
8226
|
.ds-247420 .cm-tp-empty, .ds-247420 .cm-forum-empty, .ds-247420 .cm-channel-empty, .ds-247420 .cm-member-empty {
|
|
8168
8227
|
display: flex; flex-direction: column; align-items: center; gap: var(--space-2);
|
|
8169
8228
|
padding: var(--space-4) var(--space-3); text-align: center;
|
|
@@ -8213,10 +8272,10 @@
|
|
|
8213
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); }
|
|
8214
8273
|
.ds-247420 .cm-forum-item:hover { background: var(--bg-3); }
|
|
8215
8274
|
.ds-247420 .cm-forum-item-head { display: flex; align-items: center; justify-content: space-between; gap: var(--space-2); }
|
|
8216
|
-
.ds-247420 .cm-forum-item-title { font-weight: 700; font-size: var(--fs-
|
|
8217
|
-
.ds-247420 .cm-forum-item-replies { font-size: var(--fs-
|
|
8218
|
-
.ds-247420 .cm-forum-item-snippet { font-size: var(--fs-
|
|
8219
|
-
.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; }
|
|
8220
8279
|
.ds-247420 .cm-forum-item-tags { display: inline-flex; gap: var(--space-1); }
|
|
8221
8280
|
/* 1px vertical is OFF-SCALE ON PURPOSE — the tag is an inline chip inside the
|
|
8222
8281
|
forum meta row; --space-hair (2px) tips it past the row height. */
|
|
@@ -8225,7 +8284,7 @@
|
|
|
8225
8284
|
/* PageView — cm-page / cm-page-* */
|
|
8226
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); }
|
|
8227
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); }
|
|
8228
|
-
.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; }
|
|
8229
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; }
|
|
8230
8289
|
.ds-247420 .cm-page-body { padding: var(--space-3); line-height: 1.6; }
|
|
8231
8290
|
.ds-247420 .cm-page-empty { color: var(--fg-2, var(--fg)); opacity: .7; }
|
|
@@ -8239,8 +8298,11 @@
|
|
|
8239
8298
|
.ds-247420 .fd-page-inner > * { min-width: 0; }
|
|
8240
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)); }
|
|
8241
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. */
|
|
8242
8304
|
.ds-247420 .fd-empty-glyph { font-size: 28px; opacity: .55; line-height: 1; }
|
|
8243
|
-
.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; }
|
|
8244
8306
|
.ds-247420 .fd-skill-body { max-height: 320px; }
|
|
8245
8307
|
.ds-247420 .fd-row-actions { display: inline-flex; gap: var(--space-1, 6px); align-items: center; }
|
|
8246
8308
|
.ds-247420 .fd-chat { display: flex; flex-direction: column; gap: var(--space-2, 10px); height: 100%; min-height: 0; }
|
|
@@ -11999,7 +12061,7 @@
|
|
|
11999
12061
|
margin: 0 0 var(--space-3) 0;
|
|
12000
12062
|
}
|
|
12001
12063
|
.ds-247420 #ds-article-host .toc ol { margin: 0; padding-left: var(--space-3-5); }
|
|
12002
|
-
.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); }
|
|
12003
12065
|
.ds-247420 #ds-article-host .toc li::marker { color: var(--panel-text-3); font-variant-numeric: tabular-nums; }
|
|
12004
12066
|
.ds-247420 #ds-article-host .toc a { color: var(--panel-text-2); text-decoration: none; transition: color .12s ease; }
|
|
12005
12067
|
.ds-247420 #ds-article-host .toc a:hover { color: var(--panel-accent); }
|
|
@@ -12030,6 +12092,12 @@
|
|
|
12030
12092
|
padding: var(--space-3) var(--space-3-5);
|
|
12031
12093
|
margin: var(--space-3) 0 var(--space-5) 0;
|
|
12032
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. */
|
|
12033
12101
|
font-size: 12.5px;
|
|
12034
12102
|
line-height: 1.6;
|
|
12035
12103
|
color: var(--panel-text);
|
|
@@ -12076,7 +12144,7 @@
|
|
|
12076
12144
|
margin-top: var(--space-1-75);
|
|
12077
12145
|
font-weight: 400;
|
|
12078
12146
|
color: var(--panel-text-2);
|
|
12079
|
-
font-size:
|
|
12147
|
+
font-size: var(--fs-tiny);
|
|
12080
12148
|
line-height: 1.6;
|
|
12081
12149
|
}
|
|
12082
12150
|
|
|
@@ -12088,15 +12156,15 @@
|
|
|
12088
12156
|
margin: var(--space-2) 0;
|
|
12089
12157
|
background: var(--panel-1);
|
|
12090
12158
|
border-radius: var(--r-0);
|
|
12091
|
-
font-size:
|
|
12159
|
+
font-size: var(--fs-tiny);
|
|
12092
12160
|
box-shadow: var(--panel-shadow);
|
|
12093
12161
|
text-decoration: none;
|
|
12094
12162
|
}
|
|
12095
12163
|
.ds-247420 .ds-prose .card:hover { background: var(--panel-hover); }
|
|
12096
12164
|
.ds-247420 .ds-prose .card .card-top { display: flex; align-items: baseline; justify-content: space-between; gap: var(--space-2-75); }
|
|
12097
12165
|
.ds-247420 .ds-prose .card .repo-name { font-weight: 600; color: var(--panel-text); }
|
|
12098
|
-
.ds-247420 .ds-prose .card .stars { color: var(--panel-text-3); font-family: var(--ff-mono); font-size:
|
|
12099
|
-
.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; }
|
|
12100
12168
|
.ds-247420 .ds-prose .tags { display: flex; gap: var(--space-1-75); flex-wrap: wrap; }
|
|
12101
12169
|
.ds-247420 .ds-prose .tag {
|
|
12102
12170
|
background: var(--panel-2);
|