/* Theme Milkdown Crepe to blend into the app's translucent "glass" surfaces. * Crepe's frame-dark theme is a grayscale palette driven by --crepe-* custom * properties; we override those to white-on-transparent with a blue accent so * the editor (and the read-only display, which uses the same engine) sits on * top of the existing card instead of painting its own opaque background. * * The floating menus (slash menu, selection toolbar, link tooltip) are portaled * to , OUTSIDE .milkdown — so the variables must be declared on those * selectors too, otherwise they fall back to transparent and the menu is * unreadable over the content behind it. */ .llink-crepe .milkdown, .milkdown-slash-menu, .milkdown-toolbar, .milkdown-link-edit, .milkdown-link-preview, .milkdown-block-handle { --crepe-color-background: transparent; --crepe-color-on-background: rgb(255 255 255 / 0.92); /* Surface backs code blocks, tables, and the floating menus — keep it * (near-)opaque so menus read clearly over content. */ --crepe-color-surface: rgb(24 24 28 / 0.96); --crepe-color-surface-low: rgb(42 42 50 / 0.96); --crepe-color-on-surface: #ffffff; --crepe-color-on-surface-variant: rgb(255 255 255 / 0.65); --crepe-color-outline: rgb(255 255 255 / 0.2); --crepe-color-primary: #60a5fa; --crepe-color-secondary: rgb(96 165 250 / 0.25); --crepe-color-on-secondary: #ffffff; --crepe-color-inverse: #ffffff; --crepe-color-on-inverse: #0b0b0b; --crepe-color-inline-code: #fca5a5; --crepe-color-inline-area: rgb(255 255 255 / 0.1); --crepe-color-error: #f87171; --crepe-color-hover: rgb(255 255 255 / 0.08); --crepe-color-selected: rgb(96 165 250 / 0.25); /* Use the application font, not Crepe's bundled Noto Sans / Noto Serif. */ --crepe-font-default: inherit; --crepe-font-title: inherit; --crepe-font-code: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; } /* Glassy floating menus over content. */ .milkdown-slash-menu, .milkdown-toolbar, .milkdown-link-edit, .milkdown-link-preview { backdrop-filter: blur(12px); } .llink-crepe .milkdown { background: transparent; box-shadow: none; } .llink-crepe .milkdown .ProseMirror { padding: 0; outline: none; } /* Editing context: fill the compose card and scroll internally so a long * message stays inside the card rather than growing the whole overlay. */ .llink-crepe--fill, .llink-crepe--fill .milkdown { height: 100%; } .llink-crepe--fill .milkdown { overflow-y: auto; } /* Pad the content (not the card) so the slash menu — which Crepe appends to * .milkdown — can use the full card width/height before clipping. */ .llink-crepe--fill .milkdown .ProseMirror { min-height: 100%; padding: 1.25rem; }