55@source "../../../packages/emcn/src" ;
66@source "../../../packages/workflow-renderer/src" ;
77
8+ /* Every @sim/emcn component expresses hover through `hover-hover:` so touch
9+ devices never latch a sticky hover state. The app registers it as a plugin
10+ variant in apps/sim/tailwind.config.ts; docs is CSS-first Tailwind v4 with no
11+ config, so without this declaration the variant compiles to nothing and every
12+ emcn hover state silently no-ops here. */
13+ @custom-variant hover-hover {
14+ @media ( hover : hover) and ( pointer : fine) {
15+ & : hover {
16+ @slot ;
17+ }
18+ }
19+ }
20+
821/* Prevent overscroll bounce effect on the page */
922html ,
1023body {
@@ -114,11 +127,24 @@ body {
114127 --badge-error-text : # dc2626;
115128 --badge-gray-bg : # e7e5e4;
116129 --badge-gray-text : # 57534e;
130+ --code-bg : # f5f5f5;
131+ --code-foreground : # 1a1a1a;
132+ --code-line-number : # 737373;
133+ --selection-bg : # add6ff;
134+ --selection-dark : # 264f78;
135+ --highlight-search-active : # f6ad55;
117136 --scrollbar-thumb-color : # c0c0c0;
118137 --scrollbar-thumb-hover-color : # a8a8a8;
119138 --shadow-subtle : 0 2px 4px 0 rgba ( 0 , 0 , 0 , 0.08 ) ;
120139 --shadow-medium : 0 4px 12px rgba ( 0 , 0 , 0 , 0.1 ) ;
140+ --shadow-overlay : 0 10px 30px rgba ( 0 , 0 , 0 , 0.11 ) ;
121141 --shadow-card : 0 1px 3px rgba ( 0 , 0 , 0 , 0.04 ) ;
142+ /* z-index scale — poppers sit above the modal so menus stay clickable over
143+ the modal overlay. Mirrors apps/sim/app/_styles/globals.css. */
144+ --z-toast : 150 ;
145+ --z-modal : 200 ;
146+ --z-popover : 300 ;
147+ --z-tooltip : 400 ;
122148}
123149
124150. dark {
@@ -185,8 +211,13 @@ body {
185211 --badge-error-text : # fca5a5;
186212 --badge-gray-bg : # 3a3a3a;
187213 --badge-gray-text : # a8a8a8;
214+ --code-bg : # 1f1f1f;
215+ --code-foreground : # eeeeee;
216+ --code-line-number : # a8a8a8;
217+ --selection-bg : # 264f78;
188218 --scrollbar-thumb-color : # 5a5a5a;
189219 --scrollbar-thumb-hover-color : # 6a6a6a;
220+ --shadow-overlay : 0 10px 30px rgba ( 0 , 0 , 0 , 0.3 ) ;
190221}
191222
192223/* Scrollbars — platform thumb tokens, transparent track */
@@ -358,10 +389,10 @@ aside#nd-sidebar [data-radix-scroll-area-viewport] {
358389 }
359390}
360391
361- /* Sidebar spacing — left padding aligns item text with navbar content (item has 14px internal padding) */
392+ /* Sidebar spacing — left padding aligns item text with navbar content (item has 8px internal padding) */
362393[data-sidebar-viewport ],
363394# nd-sidebar > div {
364- padding : 0 14px 0 calc ( var ( --nav-inset ) - 14 px ) !important ;
395+ padding : 0 14px 0 calc ( var ( --nav-inset ) - 8 px ) !important ;
365396 background : transparent !important ;
366397}
367398
@@ -386,15 +417,20 @@ html #nd-sidebar [data-radix-scroll-area-viewport] > div {
386417/* Target Link and button elements in sidebar - override Fumadocs itemVariants */
387418/* Exclude the small chevron-only toggle buttons */
388419/* Using html prefix for higher specificity over Tailwind v4 utilities */
420+ /* NEVER set `display` here. This selector scores (1,2,2) and carries
421+ `!important`, so it out-specifies every rule below that hides the language
422+ selector, theme toggle, and search button — a `display` declaration here
423+ forces all of them back into the sidebar. The 30px chip height therefore
424+ comes from line-height + padding (20 + 5 + 5), not from flex centering. */
389425html # nd-sidebar a : not ( : has ( span . font-mono ) ) ,
390426html # nd-sidebar button : not ( [aria-label *= "ollapse" ]) : not ( [aria-label *= "xpand" ]) {
391427 font-size : 0.875rem !important ; /* 14px to match navbar items */
392- line-height : 1.4 !important ;
393- padding : 0.375 rem 0.875 rem !important ;
394- font-weight : 450 !important ;
428+ line-height : 20 px !important ;
429+ padding : 5 px 0.5 rem !important ; /* 30px tall overall — the app's chip pill, at its px-2 */
430+ font-weight : 400 !important ;
395431 border-radius : 0.5rem !important ; /* platform rounded-lg */
396- font-family : -apple-system , BlinkMacSystemFont , "Segoe UI" , Roboto , "Helvetica Neue" , Arial ,
397- sans-serif !important ;
432+ font-family : var ( --font-geist-sans ) , ui-sans-serif , system-ui , -apple-system , BlinkMacSystemFont ,
433+ "Segoe UI" , Roboto , "Helvetica Neue" , Arial , sans-serif !important ;
398434}
399435
400436/* Sidebar text — platform --text-body */
@@ -428,28 +464,24 @@ html #nd-sidebar button:not([aria-label*="ollapse"]):not([aria-label*="xpand"])
428464 margin-bottom : 0 !important ;
429465}
430466
431- /* Section separator headers — styling handled by component, override fumadocs defaults */
467+ /* Section separator headers — match the app sidebar's group label: 12px,
468+ sentence case, normal weight. Only the fumadocs defaults are overridden here;
469+ size and color stay on the component. */
432470[data-sidebar-viewport ] [data-separator ] p ,
433471# nd-sidebar [data-separator ] p {
434- font-size : 0.625rem !important ; /* 10px */
435- font-weight : 600 !important ;
436- text-transform : uppercase !important ;
437- letter-spacing : 0.06em !important ;
472+ font-weight : 400 !important ;
473+ text-transform : none !important ;
474+ letter-spacing : normal !important ;
438475 margin : 0 !important ;
439476 padding : 0 !important ;
440477}
441478
442- /* First separator has no top margin or divider; subsequent ones show the divider on desktop */
479+ /* The first group sits flush against the top padding — it has nothing to be
480+ separated from. */
443481[data-separator ]: not ( [data-separator ] ~ [data-separator ]) {
444482 margin-top : 0 ;
445483}
446484
447- @media ( min-width : 1024px ) {
448- [data-separator ] ~ [data-separator ] > . separator-divider {
449- display : block;
450- }
451- }
452-
453485/* Active state — aligned with platform --surface-active */
454486# nd-sidebar a [data-active = "true" ]: not ( : has ( span . font-mono ) ) ,
455487# nd-sidebar button [data-active = "true" ] {
@@ -709,7 +741,7 @@ main article h4,
709741[data-content ] h4 ,
710742# nd-page h3 ,
711743# nd-page h4 {
712- font-size : 1 rem !important ;
744+ font-size : var ( --text-md ) !important ;
713745 font-weight : 470 !important ;
714746 letter-spacing : -0.01em ;
715747 color : var ( --text-body ) ;
@@ -751,18 +783,26 @@ main article li,
751783 border-left : none !important ;
752784}
753785
786+ /* The clerk TOC draws its active range twice: a track segment, plus a dot that
787+ animates along the track to the current heading. The dot is redundant with the
788+ segment and reads as a stray artifact, so hide it and keep the segment. It is
789+ the only node fumadocs gives an inline offset-path, which is what anchors it. */
790+ # nd-toc [style *= "offset-path" ] {
791+ display : none !important ;
792+ }
793+
754794/* TOC heading — align weight with landing */
755795# nd-toc h3 ,
756796# nd-toc [class *= "title" ] {
757797 font-weight : 480 !important ;
758- font-size : 0.8125 rem !important ;
798+ font-size : var ( --text-small ) !important ;
759799 color : var ( --text-muted ) ;
760800}
761801
762802/* TOC links — softer colors aligned with landing muted text */
763803# nd-toc a {
764804 font-weight : 430 !important ;
765- font-size : 0.8125 rem !important ;
805+ font-size : var ( --text-small ) !important ;
766806 color : var ( --text-muted ) ;
767807 transition : color 0.2s ;
768808}
@@ -905,7 +945,7 @@ html #nd-sidebar a:has(span.font-mono.font-medium) {
905945 align-items : center;
906946 justify-content : center;
907947 width : 2.625rem ;
908- font-size : 0.625 rem !important ;
948+ font-size : var ( --text-micro ) !important ;
909949 line-height : 1 !important ;
910950 padding : 0.15625rem 0.25rem ;
911951 border-radius : 0.375rem ;
@@ -917,7 +957,7 @@ html #nd-sidebar a:has(span.font-mono.font-medium) {
917957 display : inline-flex;
918958 align-items : center;
919959 justify-content : center;
920- font-size : 0.625 rem !important ;
960+ font-size : var ( --text-micro ) !important ;
921961 line-height : 1 !important ;
922962 padding : 0.15625rem 0.375rem ;
923963 border-radius : 0.375rem ;
@@ -984,7 +1024,7 @@ div.flex.flex-row.items-start.bg-fd-secondary.border.rounded-lg.text-xs {
9841024 span . font-mono . font-medium {
9851025 font-family : var ( --font-geist-sans ) , ui-sans-serif, system-ui, sans-serif !important ;
9861026 font-weight : 600 !important ;
987- font-size : 0.6875 rem !important ;
1027+ font-size : var ( --text-xs ) !important ;
9881028 letter-spacing : 0.025em ;
9891029 text-transform : uppercase;
9901030 padding : 0.125rem 0.5rem !important ;
@@ -1033,7 +1073,7 @@ div.flex.flex-row.items-start.bg-fd-secondary.border.rounded-lg.text-xs {
10331073 background : none !important ;
10341074 border : none !important ;
10351075 padding : 0 !important ;
1036- font-size : 0.8125 rem !important ;
1076+ font-size : var ( --text-small ) !important ;
10371077}
10381078/* Inline code in API pages — neutral color aligned with sim design.
10391079 Exclude code inside the method+path bar (handled above). */
@@ -1213,7 +1253,7 @@ div.flex.flex-row.items-start.bg-fd-secondary.border.rounded-lg.text-xs {
12131253 color : var ( --text-secondary ) ;
12141254 padding : 0.1875rem 0.5rem ;
12151255 border-radius : 0.375rem ;
1216- font-size : 0.6875 rem ;
1256+ font-size : var ( --text-xs ) ;
12171257 line-height : 1.125rem ;
12181258 font-weight : 500 ;
12191259 font-family : var ( --font-geist-sans ) , ui-sans-serif, system-ui, sans-serif;
@@ -1223,7 +1263,6 @@ html.dark
12231263 . flex . flex-wrap . items-center . gap-3 . not-prose
12241264 > span . text-sm . font-mono . text-fd-muted-foreground {
12251265 background-color : var ( --surface-4 ) ;
1226- color : var ( --text-secondary ) ;
12271266}
12281267
12291268/* Hide the "*" inside the name span — we'll add "required" as a ::after on the flex row */
@@ -1242,7 +1281,7 @@ html.dark
12421281 color : var ( --badge-error-text ) ;
12431282 padding : 0.1875rem 0.5rem ;
12441283 border-radius : 0.375rem ;
1245- font-size : 0.6875 rem ;
1284+ font-size : var ( --text-xs ) ;
12461285 line-height : 1.125rem ;
12471286 font-weight : 500 ;
12481287 font-family : var ( --font-geist-sans ) , ui-sans-serif, system-ui, sans-serif;
@@ -1284,7 +1323,7 @@ html.dark
12841323 > . flex . flex-wrap . items-center . gap-3 . not-prose
12851324 > span . text-sm . font-mono . text-fd-muted-foreground :: after {
12861325 content : "string" ;
1287- font-size : 0.6875 rem ;
1326+ font-size : var ( --text-xs ) ;
12881327 line-height : 1.125rem ;
12891328 font-weight : 500 ;
12901329 font-family : var ( --font-geist-sans ) , ui-sans-serif, system-ui, sans-serif;
@@ -1301,7 +1340,6 @@ html.dark
13011340 > . flex . flex-wrap . items-center . gap-3 . not-prose
13021341 > span . text-sm . font-mono . text-fd-muted-foreground :: after {
13031342 background-color : var ( --surface-4 ) ;
1304- color : var ( --text-secondary ) ;
13051343}
13061344
13071345/* "header" badge via ::before on the auth flex row */
@@ -1314,7 +1352,7 @@ html.dark
13141352 color : var ( --text-secondary ) ;
13151353 padding : 0.1875rem 0.5rem ;
13161354 border-radius : 0.375rem ;
1317- font-size : 0.6875 rem ;
1355+ font-size : var ( --text-xs ) ;
13181356 line-height : 1.125rem ;
13191357 font-weight : 500 ;
13201358 font-family : var ( --font-geist-sans ) , ui-sans-serif, system-ui, sans-serif;
@@ -1324,7 +1362,6 @@ html.dark
13241362 div . my-4
13251363 > . flex . flex-wrap . items-center . gap-3 . not-prose :: before {
13261364 background-color : var ( --surface-4 ) ;
1327- color : var ( --text-secondary ) ;
13281365}
13291366
13301367/* "required" badge via ::after on the auth flex row — red pill */
@@ -1337,7 +1374,7 @@ html.dark
13371374 color : var ( --badge-error-text ) ;
13381375 padding : 0.1875rem 0.5rem ;
13391376 border-radius : 0.375rem ;
1340- font-size : 0.6875 rem ;
1377+ font-size : var ( --text-xs ) ;
13411378 line-height : 1.125rem ;
13421379 font-weight : 500 ;
13431380 font-family : var ( --font-geist-sans ) , ui-sans-serif, system-ui, sans-serif;
@@ -1389,7 +1426,7 @@ html.dark
13891426 color : var ( --text-secondary ) ;
13901427 padding : 0.1875rem 0.5rem ;
13911428 border-radius : 0.375rem ;
1392- font-size : 0.6875 rem ;
1429+ font-size : var ( --text-xs ) ;
13931430 line-height : 1.125rem ;
13941431 font-weight : 500 ;
13951432 font-family : var ( --font-geist-sans ) , ui-sans-serif, system-ui, sans-serif;
@@ -1400,7 +1437,6 @@ html.dark
14001437 . flex . flex-wrap . items-center . gap-3 . not-prose
14011438 > span : has ( > button ) {
14021439 background-color : var ( --surface-4 ) ;
1403- color : var ( --text-secondary ) ;
14041440}
14051441
14061442/* Section headings (Authorization, Path Parameters, etc.) — consistent top spacing */
@@ -1562,10 +1598,6 @@ div > figure.shiki {
15621598 box-shadow : none !important ;
15631599}
15641600
1565- html . dark div > figure . shiki {
1566- background-color : transparent !important ;
1567- }
1568-
15691601/* Tabbed code block container (cURL/JS/Go tabs) */
15701602div : has ( > [role = "tablist" ]) : has ( > div > figure . shiki ) {
15711603 border-radius : 0.5rem !important ;
@@ -1610,19 +1642,11 @@ figure.shiki pre {
16101642 background-color : transparent !important ;
16111643}
16121644
1613- html . dark figure . shiki pre {
1614- background-color : transparent !important ;
1615- }
1616-
16171645/* Code viewport scroll area — transparent bg */
16181646figure . shiki > div [role = "region" ] {
16191647 background-color : transparent !important ;
16201648}
16211649
1622- html . dark figure . shiki > div [role = "region" ] {
1623- background-color : transparent !important ;
1624- }
1625-
16261650/* Copy button — minimal ghost style */
16271651figure . shiki button [aria-label = "Copy Text" ],
16281652figure . shiki button [aria-label = "Copied Text" ] {
@@ -1690,7 +1714,7 @@ figure.shiki > div:has(> button[aria-label]) {
16901714. grid > a [data-card ] p ,
16911715. grid > a [data-card ] div {
16921716 color : var ( --text-muted ) !important ;
1693- font-size : 0.8125 rem !important ;
1717+ font-size : var ( --text-small ) !important ;
16941718}
16951719
16961720/* Steps — lighter styling aligned with platform */
0 commit comments