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
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
width: 36px; height: 36px; flex-shrink: 0;
|
|
56
56
|
border-radius: 50%; background: var(--bg-3); color: var(--fg);
|
|
57
57
|
display: inline-flex; align-items: center; justify-content: center;
|
|
58
|
-
font-family: var(--ff-mono); font-size:
|
|
58
|
+
font-family: var(--ff-mono); font-size: var(--fs-micro); font-weight: 600;
|
|
59
59
|
text-transform: lowercase; letter-spacing: 0.02em; user-select: none;
|
|
60
60
|
transition: transform 0.12s ease, box-shadow 0.12s ease;
|
|
61
61
|
position: relative;
|
|
@@ -96,6 +96,9 @@
|
|
|
96
96
|
border: 1px solid color-mix(in oklab, var(--mascot) 28%, transparent);
|
|
97
97
|
}
|
|
98
98
|
.chat-bubble code {
|
|
99
|
+
/* em-relative on purpose: inline code tracks the size of the prose it sits
|
|
100
|
+
inside (the mono face runs optically large next to the system stack, hence
|
|
101
|
+
0.92). An absolute --fs-* tier would decouple it from its own paragraph. */
|
|
99
102
|
font-family: var(--ff-mono); font-size: 0.92em;
|
|
100
103
|
background: color-mix(in oklab, var(--fg) 10%, transparent);
|
|
101
104
|
/* 1px block is deliberately under --space-hair (2px): inline <code> must not
|
|
@@ -122,6 +125,11 @@
|
|
|
122
125
|
font-family: var(--ff-body); font-weight: 600;
|
|
123
126
|
margin: var(--space-2) 0 var(--space-1); line-height: var(--lh-snug);
|
|
124
127
|
}
|
|
128
|
+
/* em-relative on purpose, NOT --fs-h1..h3: markdown headings inside a chat
|
|
129
|
+
bubble are a hierarchy WITHIN the bubble's own type size, not page headings.
|
|
130
|
+
The --fs-h* tiers are fluid clamp()s tuned to page container queries and
|
|
131
|
+
would render a bubble heading at 34px+, dwarfing the message it labels.
|
|
132
|
+
These stay a tight ratio ladder off whatever size the bubble is set at. */
|
|
125
133
|
.chat-bubble.chat-md h1 { font-size: 1.15em; }
|
|
126
134
|
.chat-bubble.chat-md h2 { font-size: 1.08em; }
|
|
127
135
|
.chat-bubble.chat-md h3 { font-size: 1.04em; }
|
|
@@ -158,7 +166,7 @@
|
|
|
158
166
|
}
|
|
159
167
|
/* Markdown tables + horizontal rules: agents routinely emit them, but they were
|
|
160
168
|
unstyled (bare unspaced cells, vanished rules). */
|
|
161
|
-
.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; }
|
|
169
|
+
.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; }
|
|
162
170
|
.chat-bubble.chat-md th,
|
|
163
171
|
.chat-bubble.chat-md td { border: var(--bw-hair) solid var(--rule); padding: var(--space-1) var(--space-2-5); text-align: left; }
|
|
164
172
|
.chat-bubble.chat-md th { background: color-mix(in oklab, var(--fg) 5%, transparent); font-weight: 600; }
|
|
@@ -268,6 +276,9 @@
|
|
|
268
276
|
}
|
|
269
277
|
.chat-file:hover { background: var(--bg-3); }
|
|
270
278
|
.chat-file .glyph {
|
|
279
|
+
/* 22px is the ICON size inside a 36px chip — matched to the chip box, not to
|
|
280
|
+
the type scale (--fs-xl is 21px, and above it every rung is a fluid
|
|
281
|
+
heading clamp). Snapping it visibly resizes the mark. */
|
|
271
282
|
font-size: 22px; width: 36px; height: 36px;
|
|
272
283
|
display: inline-flex; align-items: center; justify-content: center;
|
|
273
284
|
background: var(--bg-3);
|
|
@@ -280,7 +291,7 @@
|
|
|
280
291
|
}
|
|
281
292
|
.chat-file .meta { display: flex; flex-direction: column; gap: var(--space-hair); min-width: 0; flex: 1; }
|
|
282
293
|
.chat-file .size { font-family: var(--ff-mono); font-size: var(--fs-xs); color: var(--fg-3); }
|
|
283
|
-
.chat-file .go { font-family: var(--ff-mono); font-size:
|
|
294
|
+
.chat-file .go { font-family: var(--ff-mono); font-size: var(--fs-body); color: var(--fg-3); flex-shrink: 0; }
|
|
284
295
|
.chat-file:hover .go { color: var(--accent-ink); }
|
|
285
296
|
|
|
286
297
|
.chat-msg.you .chat-pdf,
|
|
@@ -298,7 +309,7 @@
|
|
|
298
309
|
background: color-mix(in oklab, var(--fg) 5%, var(--bg-2));
|
|
299
310
|
border-bottom: 1px solid color-mix(in oklab, var(--fg) 10%, transparent);
|
|
300
311
|
}
|
|
301
|
-
.chat-pdf-head .glyph { font-size:
|
|
312
|
+
.chat-pdf-head .glyph { font-size: var(--fs-lg); color: var(--mascot); flex-shrink: 0; }
|
|
302
313
|
.chat-pdf-head .name { flex: 1; font-weight: 600; font-size: var(--fs-sm); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
|
|
303
314
|
.chat-pdf-head .size { font-family: var(--ff-mono); font-size: var(--fs-xs); color: var(--fg-3); }
|
|
304
315
|
.chat-pdf-head a { color: var(--accent-ink); font-family: var(--ff-mono); font-size: var(--fs-xs); text-decoration: none; }
|
|
@@ -357,8 +368,8 @@
|
|
|
357
368
|
border-color: color-mix(in oklab, var(--accent) 55%, transparent);
|
|
358
369
|
color: var(--accent-ink);
|
|
359
370
|
}
|
|
360
|
-
.chat-reactions .rxn .e { font-size:
|
|
361
|
-
.chat-reactions .rxn .n { font-family: var(--ff-mono); font-weight: 600; font-size:
|
|
371
|
+
.chat-reactions .rxn .e { font-size: var(--fs-xs); line-height: 1; }
|
|
372
|
+
.chat-reactions .rxn .n { font-family: var(--ff-mono); font-weight: 600; font-size: var(--fs-nano); color: var(--fg-2); }
|
|
362
373
|
.chat-reactions .rxn.you .n { color: var(--accent-ink); }
|
|
363
374
|
|
|
364
375
|
.chat-typing { display: inline-flex; gap: var(--space-1); align-items: center; }
|
|
@@ -485,6 +496,7 @@
|
|
|
485
496
|
|
|
486
497
|
.aicat-portrait { display: inline-flex; align-items: center; gap: var(--space-2-5); padding: var(--space-1) 0; }
|
|
487
498
|
.aicat-face {
|
|
499
|
+
/* 24px is the ICON size inside a 32px round chip — see .chat-file .glyph. */
|
|
488
500
|
width: 32px; height: 32px; font-size: 24px;
|
|
489
501
|
display: inline-flex; align-items: center; justify-content: center;
|
|
490
502
|
background: color-mix(in oklab, var(--mascot) 22%, var(--bg-2));
|
|
@@ -128,7 +128,7 @@
|
|
|
128
128
|
/* File icon — glyph chip, tinted per type. */
|
|
129
129
|
.ds-file-icon {
|
|
130
130
|
display: inline-flex; align-items: center; justify-content: center;
|
|
131
|
-
width: 26px; height: 26px; font-size:
|
|
131
|
+
width: 26px; height: 26px; font-size: var(--fs-sm); line-height: 1;
|
|
132
132
|
color: var(--fg-2);
|
|
133
133
|
}
|
|
134
134
|
.ds-file-row[data-file-type="dir"] .ds-file-icon { color: var(--accent-ink); }
|
|
@@ -152,7 +152,7 @@
|
|
|
152
152
|
display: inline-flex; align-items: center; justify-content: center;
|
|
153
153
|
width: 28px; height: 28px; padding: 0;
|
|
154
154
|
background: transparent; border: 0; border-radius: var(--r-1);
|
|
155
|
-
color: var(--fg-3); font-size:
|
|
155
|
+
color: var(--fg-3); font-size: var(--fs-xs); cursor: pointer;
|
|
156
156
|
transition: background var(--dur-snap) var(--ease), color var(--dur-snap) var(--ease);
|
|
157
157
|
}
|
|
158
158
|
.ds-file-act:hover { background: var(--bg-3); color: var(--fg); }
|
|
@@ -251,7 +251,7 @@
|
|
|
251
251
|
.ds-file-grid[data-density="compact"] .ds-file-row { padding: var(--space-1-5) var(--space-2-75); gap: var(--space-2-5); }
|
|
252
252
|
.ds-file-grid[data-density="compact"] .ds-file-row .title { font-size: var(--fs-xs); }
|
|
253
253
|
.ds-file-grid[data-density="compact"] .ds-file-row .ds-file-meta { font-size: var(--fs-micro); }
|
|
254
|
-
.ds-file-grid[data-density="compact"] .ds-file-icon { width: 20px; height: 20px; font-size:
|
|
254
|
+
.ds-file-grid[data-density="compact"] .ds-file-icon { width: 20px; height: 20px; font-size: var(--fs-tiny); }
|
|
255
255
|
|
|
256
256
|
/* Thumbnail density — tile grid; image entries carry a real lazy thumbnail. */
|
|
257
257
|
.ds-file-grid-thumb {
|
|
@@ -291,6 +291,10 @@
|
|
|
291
291
|
width: 100%; aspect-ratio: 4 / 3;
|
|
292
292
|
background: var(--bg-2); border-radius: var(--r-1); overflow: hidden;
|
|
293
293
|
}
|
|
294
|
+
/* 24px is the ICON size inside a 34px chip, not a type tier — it is matched to
|
|
295
|
+
the chip box, not to the text scale (the --fs-* rungs jump 21px -> fluid
|
|
296
|
+
heading clamps, so neither substitutes without resizing the icon). Same
|
|
297
|
+
reasoning for the other four .ds-*-glyph rules in this sheet. */
|
|
294
298
|
.ds-file-cell-media .ds-file-icon { width: 34px; height: 34px; font-size: 24px; }
|
|
295
299
|
.ds-file-cell-thumb { width: 100%; height: 100%; object-fit: cover; }
|
|
296
300
|
/* Per-type icon tints on thumb tiles so the grid keeps the colour-coding the
|
|
@@ -434,6 +438,7 @@
|
|
|
434
438
|
gap: var(--space-2); flex-wrap: wrap;
|
|
435
439
|
padding: var(--space-4) var(--space-3); text-align: center;
|
|
436
440
|
}
|
|
441
|
+
/* Icon size, not type — see .ds-file-cell-media .ds-file-icon above. */
|
|
437
442
|
.ds-dropzone-glyph { font-size: 22px; color: var(--fg-3); }
|
|
438
443
|
.ds-dropzone-label { font-size: var(--fs-sm); color: var(--fg-3); }
|
|
439
444
|
.ds-dropzone.dragover {
|
|
@@ -542,6 +547,7 @@
|
|
|
542
547
|
gap: var(--space-2); padding: var(--space-6) var(--space-3);
|
|
543
548
|
color: var(--fg-3); text-align: center;
|
|
544
549
|
}
|
|
550
|
+
/* Icon size, not type — see .ds-file-cell-media .ds-file-icon above. */
|
|
545
551
|
.ds-file-empty-glyph { font-size: 34px; opacity: 0.55; }
|
|
546
552
|
.ds-file-empty-text { font-size: var(--fs-sm); }
|
|
547
553
|
|
|
@@ -597,7 +603,11 @@
|
|
|
597
603
|
font-family: inherit; font-size: var(--fs-sm);
|
|
598
604
|
}
|
|
599
605
|
.ds-modal-input:focus-visible { outline: var(--focus-w) solid var(--focus-color); outline-offset: var(--focus-offset); }
|
|
600
|
-
/* iOS auto-zooms inputs under 16px on focus, breaking the modal layout.
|
|
606
|
+
/* iOS auto-zooms inputs under 16px on focus, breaking the modal layout.
|
|
607
|
+
Deliberately a literal, NOT var(--fs-body): --fs-body is re-declared to
|
|
608
|
+
15px under [data-typescale="sm"], which would silently drop this input back
|
|
609
|
+
under the zoom threshold on any density-reduced page. The 16px here is a
|
|
610
|
+
platform constant, not a point on the type scale. */
|
|
601
611
|
@media (hover: none), (pointer: coarse) {
|
|
602
612
|
.ds-modal-input { font-size: 16px; min-height: 44px; }
|
|
603
613
|
}
|
|
@@ -694,6 +704,7 @@
|
|
|
694
704
|
display: flex; flex-direction: column; align-items: center; justify-content: center;
|
|
695
705
|
gap: var(--space-2); padding: var(--space-6); color: var(--fg-3);
|
|
696
706
|
}
|
|
707
|
+
/* Icon size, not type — see .ds-file-cell-media .ds-file-icon above. */
|
|
697
708
|
.ds-preview-glyph { font-size: 34px; opacity: 0.6; }
|
|
698
709
|
|
|
699
710
|
/* Thin scrollbars inside preview bodies. */
|
|
@@ -41,6 +41,11 @@
|
|
|
41
41
|
.ds-hero-stat:last-child { border-bottom: 0; padding-bottom: 0; }
|
|
42
42
|
.ds-hero-title {
|
|
43
43
|
font-family: var(--ff-display); font-weight: 700;
|
|
44
|
+
/* Bespoke display clamp, deliberately off the --fs-* ladder: --fs-hero is
|
|
45
|
+
clamp(42px,7cqi,96px) and --fs-mega is clamp(56px,11cqi,168px). This lead
|
|
46
|
+
runs a steeper 9cqi slope with a LOWER 40px floor so a two-line 16ch title
|
|
47
|
+
still fits a narrow column, and a 116px ceiling between the two tiers.
|
|
48
|
+
Snapping to either changes the hero's whole optical weight. */
|
|
44
49
|
font-size: clamp(40px, 9cqi, 116px);
|
|
45
50
|
line-height: 0.96; letter-spacing: var(--tr-tighter);
|
|
46
51
|
margin: 0; max-width: 16ch; text-wrap: balance;
|
|
@@ -84,6 +89,12 @@
|
|
|
84
89
|
.ds-section-compact { margin-top: 0; margin-bottom: var(--space-4); }
|
|
85
90
|
.ds-section > h3 {
|
|
86
91
|
font-family: var(--ff-body); font-weight: 600; font-size: var(--fs-h3);
|
|
92
|
+
/* Zero top margin looks like it inverts the more-space-above-than-below rule,
|
|
93
|
+
but it does not: this h3 is always the section's first child and .ds-section
|
|
94
|
+
itself carries the --space-8 (96px) lead, so the effective space above is
|
|
95
|
+
96px against 32px below. Adding a top margin here would double the lead.
|
|
96
|
+
Measured live on project_page: gapAboveInSection 0 with the section margin
|
|
97
|
+
supplying the separation, gapBelow 32. */
|
|
87
98
|
margin: 0 0 var(--space-5);
|
|
88
99
|
letter-spacing: -0.01em;
|
|
89
100
|
}
|
|
@@ -175,7 +186,7 @@
|
|
|
175
186
|
}
|
|
176
187
|
.ds-cli-row {
|
|
177
188
|
display: flex; gap: 10px;
|
|
178
|
-
font-family: var(--ff-mono); font-size:
|
|
189
|
+
font-family: var(--ff-mono); font-size: var(--fs-tiny); line-height: 1.6;
|
|
179
190
|
padding: 3px 0;
|
|
180
191
|
}
|
|
181
192
|
.ds-cli-row .prompt { color: var(--green-2); flex: 0 0 auto; user-select: none; }
|
|
@@ -254,6 +265,16 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
|
|
|
254
265
|
Changelog
|
|
255
266
|
============================================================ */
|
|
256
267
|
.ds-changelog-row {
|
|
268
|
+
/* The !important is load-bearing and was empirically confirmed so -- do not
|
|
269
|
+
remove it on a specificity argument. A changelog row carries three tracks
|
|
270
|
+
(date, version, message) where a plain .row carries two, and the responsive
|
|
271
|
+
blocks in responsive.css legitimately rewrite .row's template at several
|
|
272
|
+
breakpoints. Those blocks are later in the cascade, so at tablet width the
|
|
273
|
+
two-track override wins on source order and collapses the version column:
|
|
274
|
+
measured live, removing this flag changes the computed template from
|
|
275
|
+
"120.75px 77.625px 70.125px" to "103.5px 0px 165px" -- a zero-width column
|
|
276
|
+
and the version silently gone. Scoping to .app does not help, because the
|
|
277
|
+
competing rules would need to be scoped in lockstep. */
|
|
257
278
|
grid-template-columns: minmax(110px, 14ch) minmax(60px, 9ch) minmax(0, 1fr) !important;
|
|
258
279
|
}
|
|
259
280
|
.ds-changelog-ver {
|
|
@@ -309,6 +330,10 @@ table tr.clickable:focus-visible td { background: var(--bg-2); }
|
|
|
309
330
|
}
|
|
310
331
|
.kpi-card .num {
|
|
311
332
|
font-family: var(--ff-body); font-weight: 600;
|
|
333
|
+
/* Numeric display size, not a heading tier: --fs-h4 is clamp(19px,1.8cqi,
|
|
334
|
+
24px) — too small and too flat a slope for a KPI figure that must read as
|
|
335
|
+
the loudest thing in its card, and --fs-h3 (22/30) tops out short of 32.
|
|
336
|
+
Deliberate off-scale value tuned to the .kpi-card box. */
|
|
312
337
|
font-size: clamp(22px, 3cqi, 32px); line-height: 1;
|
|
313
338
|
letter-spacing: var(--tr-tight);
|
|
314
339
|
}
|
|
@@ -261,7 +261,7 @@
|
|
|
261
261
|
}
|
|
262
262
|
.ds-err-path {
|
|
263
263
|
display: inline-flex; gap: var(--space-1-75); align-items: baseline; flex-wrap: wrap; max-width: 100%;
|
|
264
|
-
font-family: var(--ff-mono); font-size:
|
|
264
|
+
font-family: var(--ff-mono); font-size: var(--fs-tiny); color: var(--panel-text-2);
|
|
265
265
|
background: var(--panel-1); padding: var(--space-1-75) var(--space-2-75); border-radius: var(--r-0);
|
|
266
266
|
overflow-wrap: anywhere; word-break: break-all;
|
|
267
267
|
}
|
|
@@ -319,6 +319,9 @@
|
|
|
319
319
|
.ds-topbar-search { flex-basis: 100%; }
|
|
320
320
|
}
|
|
321
321
|
.ds-empty-state { padding: clamp(var(--space-3), 5vw, var(--space-4)); text-align: center; color: var(--panel-text-3); }
|
|
322
|
+
/* Fluid ICON size (empty-state mark), not a type tier: it scales with the
|
|
323
|
+
viewport between 24 and 32px. Every fluid --fs-* tier is a heading clamp
|
|
324
|
+
tuned to cqi + heading weight, so none of them substitutes here. */
|
|
322
325
|
.ds-empty-state-glyph { font-size: clamp(24px, 6vw, 32px); }
|
|
323
326
|
.ds-empty-state-msg { margin: var(--space-1-75) 0; }
|
|
324
327
|
.ds-empty-state-hint { margin: 0; font-size: var(--fs-sm); }
|
|
@@ -338,20 +341,20 @@
|
|
|
338
341
|
.ds-swatch-col { display: flex; flex-direction: column; gap: var(--space-1-75); }
|
|
339
342
|
.ds-swatch-chip { height: 48px; border-radius: var(--r-1); border: 1px solid var(--rule); background: var(--swatch, var(--panel-1)); }
|
|
340
343
|
.ds-swatch-chip--big { height: 64px; }
|
|
341
|
-
.ds-swatch-name { font-family: var(--ff-mono); font-size:
|
|
344
|
+
.ds-swatch-name { font-family: var(--ff-mono); font-size: var(--fs-nano); color: var(--fg-3); }
|
|
342
345
|
.ds-type-panel { padding: clamp(10px, 2.5vw, 14px) clamp(10px, 3vw, 18px); display: flex; flex-direction: column; gap: 14px; }
|
|
343
346
|
.ds-type-row {
|
|
344
347
|
display: flex; align-items: baseline; gap: 14px;
|
|
345
348
|
border-bottom: 1px solid var(--rule); padding-bottom: var(--space-2); flex-wrap: wrap;
|
|
346
349
|
}
|
|
347
|
-
.ds-type-row-label { flex: 0 0 64px; font-family: var(--ff-mono); font-size:
|
|
350
|
+
.ds-type-row-label { flex: 0 0 64px; font-family: var(--ff-mono); font-size: var(--fs-nano); color: var(--fg-3); }
|
|
348
351
|
.ds-type-sample {
|
|
349
352
|
min-width: 0; overflow-wrap: anywhere; line-height: var(--lh-tight); color: var(--fg);
|
|
350
353
|
font-size: var(--sample-size, var(--fs-body));
|
|
351
354
|
}
|
|
352
355
|
.ds-prim-panel { padding: clamp(10px, 2.5vw, 14px) clamp(10px, 3vw, 18px); display: flex; flex-direction: column; gap: 18px; }
|
|
353
356
|
.ds-prim-row { display: flex; gap: var(--space-2-5); flex-wrap: wrap; align-items: center; }
|
|
354
|
-
.ds-prim-label { flex: 0 0 64px; font-family: var(--ff-mono); font-size:
|
|
357
|
+
.ds-prim-label { flex: 0 0 64px; font-family: var(--ff-mono); font-size: var(--fs-nano); color: var(--fg-3); }
|
|
355
358
|
|
|
356
359
|
/* == appended: content-site == */
|
|
357
360
|
/* Home landing wrappers (site/theme.mjs) — replace banned inline styles. */
|
|
@@ -483,6 +486,10 @@
|
|
|
483
486
|
/* 18px ceiling: no tier between --space-3 (16) and --space-3-5 (20). */
|
|
484
487
|
.ds-auth-form { padding: clamp(var(--space-2-75), 3vw, 18px); display: flex; flex-direction: column; gap: var(--space-2-5); }
|
|
485
488
|
.ds-auth-sent { align-items: center; text-align: center; }
|
|
489
|
+
/* 32px is an ICON size, not a type size: this is the confirmation mark above
|
|
490
|
+
the "check your mail" copy, sized to the 440px auth column, and the --fs-*
|
|
491
|
+
scale tops out at --fs-xl (21px) before jumping to fluid clamp() heading
|
|
492
|
+
tiers. Snapping it to either would visibly resize the mark. */
|
|
486
493
|
.ds-auth-sent-glyph { font-size: 32px; color: var(--panel-accent); }
|
|
487
494
|
.ds-auth-sent-title { margin: 0; font-weight: 600; }
|
|
488
495
|
.ds-auth-sent-sub { margin: 0; color: var(--panel-text-2); overflow-wrap: anywhere; }
|
|
@@ -490,17 +497,17 @@
|
|
|
490
497
|
/* .ds-auth-field-label joins the kit small-label voice above, no overrides. */
|
|
491
498
|
.ds-auth-row-between { display: flex; align-items: center; justify-content: space-between; gap: var(--space-2); flex-wrap: wrap; }
|
|
492
499
|
.ds-auth-remember { display: flex; align-items: center; gap: var(--space-1-75); cursor: pointer; }
|
|
493
|
-
.ds-auth-remember-text { color: var(--panel-text-2); font-size:
|
|
494
|
-
.ds-auth-forgot { font-size:
|
|
495
|
-
.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:
|
|
500
|
+
.ds-auth-remember-text { color: var(--panel-text-2); font-size: var(--fs-tiny); }
|
|
501
|
+
.ds-auth-forgot { font-size: var(--fs-tiny); }
|
|
502
|
+
.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; }
|
|
496
503
|
.ds-auth-providers { display: flex; gap: var(--space-2); flex-wrap: wrap; }
|
|
497
504
|
.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); }
|
|
498
505
|
.ds-auth-provider-btn--loading { opacity: 0.7; pointer-events: none; }
|
|
499
506
|
.ds-auth-provider-glyph { font-family: var(--ff-mono); color: var(--panel-text-3); display: inline-flex; }
|
|
500
|
-
.ds-auth-modes { display: flex; justify-content: center; gap: 14px; /* off-scale, matches the auth form inset */ margin-top: var(--space-2); font-size:
|
|
507
|
+
.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; }
|
|
501
508
|
.ds-auth-mode-link { color: var(--panel-text-3); text-decoration: none; }
|
|
502
509
|
.ds-auth-mode-link--active { color: var(--panel-text); text-decoration: underline; }
|
|
503
|
-
.ds-auth-fineprint { text-align: center; font-size:
|
|
510
|
+
.ds-auth-fineprint { text-align: center; font-size: var(--fs-micro); color: var(--panel-text-3); margin: var(--space-1-75) 0; }
|
|
504
511
|
|
|
505
512
|
/* == appended: gallery-misc kit cleanup == */
|
|
506
513
|
/* --- shared helpers (converted from inline styles) --- */
|
|
@@ -510,12 +517,12 @@
|
|
|
510
517
|
.ds-kit-head { display: flex; align-items: center; justify-content: space-between; gap: clamp(var(--space-2), 2vw, var(--space-3)); flex-wrap: wrap; }
|
|
511
518
|
|
|
512
519
|
/* --- gallery kit --- */
|
|
513
|
-
.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:
|
|
514
|
-
.ds-tile-meta { display: flex; align-items: center; justify-content: space-between; gap: var(--space-1-75); font-size:
|
|
520
|
+
.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; }
|
|
521
|
+
.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; }
|
|
515
522
|
.ds-tile-glyph { font-family: var(--ff-mono); color: var(--panel-text-3); }
|
|
516
523
|
.ds-tile-label { color: var(--panel-text); overflow-wrap: anywhere; }
|
|
517
524
|
.ds-gal-swatch { height: 64px; border-radius: var(--r-0); background: var(--swatch, var(--panel-1)); }
|
|
518
|
-
.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:
|
|
525
|
+
.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; }
|
|
519
526
|
.ds-gal-swatch-name { color: var(--panel-text); }
|
|
520
527
|
.ds-gal-swatch-hint { color: var(--panel-text-3); overflow-wrap: anywhere; }
|
|
521
528
|
.ds-lightbox-head { display: flex; justify-content: space-between; align-items: center; gap: var(--space-2); flex-wrap: wrap; }
|
|
@@ -574,9 +581,9 @@
|
|
|
574
581
|
font-family: var(--ff-mono); font-weight: 600; text-transform: lowercase;
|
|
575
582
|
letter-spacing: 0.02em; user-select: none; flex-shrink: 0; object-fit: cover;
|
|
576
583
|
}
|
|
577
|
-
.ds-avatar-sm { width: 24px; height: 24px; font-size:
|
|
578
|
-
.ds-avatar-md { width: 36px; height: 36px; font-size:
|
|
579
|
-
.ds-avatar-lg { width: 48px; height: 48px; font-size:
|
|
584
|
+
.ds-avatar-sm { width: 24px; height: 24px; font-size: var(--fs-pico); }
|
|
585
|
+
.ds-avatar-md { width: 36px; height: 36px; font-size: var(--fs-micro); }
|
|
586
|
+
.ds-avatar-lg { width: 48px; height: 48px; font-size: var(--fs-sm); }
|
|
580
587
|
.ds-avatar-square { border-radius: var(--r-2, 6px); }
|
|
581
588
|
|
|
582
589
|
/* SpreadsheetPreview — tabbed inline spreadsheet/CSV viewer (docstudio
|
|
@@ -765,6 +772,10 @@
|
|
|
765
772
|
same tonal chip treatment .chat-bubble code uses. */
|
|
766
773
|
.ds-pattern-notes code {
|
|
767
774
|
font-family: var(--ff-mono);
|
|
775
|
+
/* em-relative on purpose: inline code must track whatever size the
|
|
776
|
+
surrounding prose is set at (the mono face runs optically large next to
|
|
777
|
+
the system stack, hence 0.92). An absolute --fs-* tier would decouple it
|
|
778
|
+
from its own paragraph and break at every containing type size. */
|
|
768
779
|
font-size: 0.92em;
|
|
769
780
|
background: color-mix(in oklab, var(--fg) 8%, transparent);
|
|
770
781
|
padding: 0 var(--space-1);
|