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