@@ -35,6 +35,7 @@ const ARTIFACT_TOKENS = [
3535 '--surface-1' ,
3636 '--surface-2' ,
3737 '--surface-3' ,
38+ '--surface-4' ,
3839 '--surface-5' ,
3940 '--surface-hover' ,
4041 '--surface-active' ,
@@ -111,6 +112,7 @@ export const SIM_ARTIFACT_STYLESHEET = `
111112 --surface-1: #fbfbfb;
112113 --surface-2: #ffffff;
113114 --surface-3: #f7f7f7;
115+ --surface-4: #f5f5f5;
114116 --surface-5: #f3f3f3;
115117 --surface-hover: #f2f2f2;
116118 --surface-active: #ececec;
@@ -136,7 +138,10 @@ export const SIM_ARTIFACT_STYLESHEET = `
136138 --code-bg: #f5f5f5;
137139 --code-surface: var(--surface-5);
138140 --selection-bg: #add6ff;
139- --font-sans: "Inter", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
141+ /* The PLATFORM stack, not the docs' webfont: pages live inside the app,
142+ and emcn/sim render the system face — Inter here read as foreign. The
143+ docs' geometry survives; the face is the platform's. */
144+ --font-sans: ui-sans-serif, -apple-system, system-ui, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
140145 --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
141146 --text-caption: 12px;
142147 --text-small: 13px;
@@ -149,6 +154,7 @@ export const SIM_ARTIFACT_STYLESHEET = `
149154 --surface-1: #1e1e1e;
150155 --surface-2: #232323;
151156 --surface-3: #242424;
157+ --surface-4: #2c2c2c;
152158 --surface-5: #363636;
153159 --surface-hover: #262626;
154160 --surface-active: #2c2c2c;
@@ -186,6 +192,7 @@ export const SIM_ARTIFACT_STYLESHEET = `
186192 --surface-1: #1e1e1e;
187193 --surface-2: #232323;
188194 --surface-3: #242424;
195+ --surface-4: #2c2c2c;
189196 --surface-5: #363636;
190197 --surface-hover: #262626;
191198 --surface-active: #2c2c2c;
@@ -218,9 +225,9 @@ body {
218225 -webkit-font-smoothing: antialiased;
219226}
220227h1, h2, h3, h4 { text-wrap: balance; }
221- h1 { font-size: 1.5rem; font-weight: 550 ; letter-spacing: -0.02em; color: var(--text-primary); line-height: 1.25; margin: 0 0 0.75rem; }
228+ h1 { font-size: 1.5rem; font-weight: 600 ; letter-spacing: -0.02em; color: var(--text-primary); line-height: 1.25; margin: 0 0 0.75rem; }
222229h2 { font-size: 1.25rem; font-weight: 500; letter-spacing: -0.015em; color: var(--text-primary); margin: 2.5rem 0 0.9rem; }
223- h3, h4 { font-size: var(--text-md); font-weight: 470 ; letter-spacing: -0.01em; color: var(--text-body); margin: 1.75rem 0 0.5rem; }
230+ h3, h4 { font-size: var(--text-md); font-weight: 500 ; letter-spacing: -0.01em; color: var(--text-body); margin: 1.75rem 0 0.5rem; }
224231p, li { max-width: 70ch; }
225232p { margin: 0 0 1rem; }
226233/* Content links — the docs' prose anchor (fumadocs prose, compiled): 500
236243 transition: opacity 0.2s;
237244}
238245a:hover { opacity: 0.8; }
239- strong { color: var(--text-primary); font-weight: 550 ; }
246+ strong { color: var(--text-primary); font-weight: 600 ; }
240247hr { border: 0; border-top: 1px solid var(--border); margin: 3em 0; }
241248hr + * { margin-top: 0; }
242249/* Lists — the docs' prose metrics: 1rem/1.625em indents, muted markers. */
@@ -427,16 +434,24 @@ figcaption { font-size: 0.875em; line-height: 1.4285714; color: var(--text-prima
427434}
428435.art-bar-title { font-size: var(--text-sm); font-weight: 500; color: var(--text-primary); margin-right: auto; }
429436.art-search {
430- width: min(260px, 45vw);
437+ /* emcn ChipInput chrome verbatim (chip-chrome.ts): h-30px rounded-lg,
438+ --surface-5 fill (--surface-4 dark via token), --border-1 border, 14px
439+ text, px-2, no focus ring. */
431440 height: 30px;
432- padding: 0 0.6rem;
433- font-family: var(--font-sans);
434- font-size: var(--text-small);
435- color: var(--text-primary);
436- background: var(--surface-5);
441+ padding: 0 0.5rem;
437442 border: 1px solid var(--border);
438443 border-radius: 0.5rem;
444+ background: var(--chip-fill, var(--surface-5));
445+ font: inherit;
446+ font-size: var(--text-sm);
447+ color: var(--text-body);
448+ outline: none;
449+ transition: background-color 0.15s, border-color 0.15s;
450+ width: 200px;
439451}
452+ /* emcn's chip fill flips to --surface-4 in dark. */
453+ :root[data-theme="dark"] { --chip-fill: var(--surface-4); }
454+ @media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) { --chip-fill: var(--surface-4); } }
440455.art-search::placeholder { color: var(--text-muted); }
441456/* Top-of-page controls: Copy page + prev/next chevrons on the title row. */
442457.page-actions {
@@ -525,7 +540,7 @@ figcaption { font-size: 0.875em; line-height: 1.4285714; color: var(--text-prima
525540 align-items: center;
526541 gap: 6px;
527542 font-size: var(--text-small);
528- font-weight: 480 ;
543+ font-weight: 500 ;
529544 color: var(--text-muted);
530545 margin: 0 0 0.5rem;
531546}
@@ -537,7 +552,7 @@ figcaption { font-size: 0.875em; line-height: 1.4285714; color: var(--text-prima
537552 padding-top: 6px;
538553 padding-bottom: 6px;
539554 font-size: var(--text-small);
540- font-weight: 430 ;
555+ font-weight: 400 ;
541556 line-height: 1.4;
542557 color: var(--text-muted);
543558 text-decoration: none;
@@ -552,12 +567,12 @@ figcaption { font-size: 0.875em; line-height: 1.4285714; color: var(--text-prima
552567.toc-items a::after {
553568 content: attr(data-text);
554569 display: block; height: 0; visibility: hidden; overflow: hidden;
555- font-weight: 470 ; pointer-events: none;
570+ font-weight: 500 ; pointer-events: none;
556571}
557572.toc-items a[data-depth="2"] { padding-left: 20px; }
558573.toc-items a[data-depth="3"] { padding-left: 32px; }
559574.toc-items a:hover { color: var(--text-body); }
560- .toc-items a.is-active { color: var(--text-primary); font-weight: 470 ; }
575+ .toc-items a.is-active { color: var(--text-primary); font-weight: 500 ; }
561576/* The track: the full outline path in foreground at 10%, and the same path in
562577 full foreground clipped to the active range — fumadocs animates the clip
563578 window, which is the "black segment" that slides as you scroll. */
0 commit comments