Files
supermemory/apps/docs/style.css
2026-09-29 17:26:13 -07:00

2401 lines
55 KiB
CSS

/* ------------------------------------------------------------------
supermemory docs · the console's design language over Mintlify (aspen)
Tokens copied from apps/console-v2/src/styles/tokens.css in the mono repo.
Type: Geist everywhere · Geist Mono for eyebrows and data only
Color: neutral grays, cobalt accent family (#2f86ff fill, #175cd4 text)
Radius: 6 / 8 / 10 / 14 · controls 8 · cards 10 · no pills
------------------------------------------------------------------ */
@import url("https://fonts.googleapis.com/css2?family=Geist+Mono:wght@400;500&display=swap");
:root {
--sm-bg: #ffffff;
--sm-bg-2: #f5f5f5;
--sm-bg-3: #f1f2f4;
--sm-surface: #ffffff;
--sm-control: #ffffff;
--sm-control-hover: #f1f2f4;
--sm-border: #ededed;
--sm-border-muted: #f4f4f5;
--sm-border-hover: #dcdcdc;
--sm-text-strong: #05080f;
--sm-text: #091120;
--sm-text-2: #5b6472;
--sm-text-3: #9ea3ad;
--sm-text-body: #3d424d;
--sm-accent: #2f86ff;
--sm-accent-hover: #1d6fe8;
--sm-accent-text: #175cd4;
--sm-accent-text-hover: #1148f7;
--sm-tint: #f5f9ff;
--sm-tint-stroke: #b8d1ff;
--sm-success: #187a44;
--sm-success-muted: rgba(24, 122, 68, 0.12);
--sm-error: #b82929;
--sm-error-muted: rgba(184, 41, 41, 0.1);
--sm-warning: #8c540d;
--sm-warning-muted: rgba(140, 84, 13, 0.12);
--sm-info: #175cd4;
--sm-info-muted: rgba(23, 92, 212, 0.1);
--sm-shadow-sm: 0 1px 2px 0 rgba(9, 17, 32, 0.05);
--sm-shadow-md:
0 2px 6px -1px rgba(9, 17, 32, 0.07), 0 1px 2px 0 rgba(9, 17, 32, 0.05);
--sm-shadow-float:
0 8px 40px 0 rgba(0, 0, 0, 0.08), 0 1px 3px 0 rgba(0, 0, 0, 0.1),
0 1px 2px 0 rgba(0, 0, 0, 0.06);
--sm-sidebar-active-fill: #f1f2f4;
--sm-shadow-sidebar-active: none;
--sm-radius-sm: 6px;
--sm-radius-md: 8px;
--sm-radius-lg: 10px;
--sm-radius-xl: 14px;
--sm-ease-out: cubic-bezier(0.23, 1, 0.32, 1);
--sm-dur-fast: 180ms;
--sm-dur-hover: 150ms;
--sm-dur-press: 100ms;
--sm-font-sans: "Geist", ui-sans-serif, system-ui, sans-serif;
--sm-font-mono:
"Geist Mono", ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas,
monospace;
}
.dark {
--sm-bg: #0a0a0a;
--sm-bg-2: #101010;
--sm-bg-3: #121212;
--sm-surface: #0a0a0a;
--sm-control: #0a0a0a;
--sm-control-hover: #121212;
--sm-border: rgba(255, 255, 255, 0.07);
--sm-border-muted: rgba(255, 255, 255, 0.04);
--sm-border-hover: rgba(255, 255, 255, 0.14);
--sm-text-strong: #fafafa;
--sm-text: #f5f5f5;
--sm-text-2: #a2a2a2;
--sm-text-3: #838383;
--sm-text-body: #a1a1a1;
--sm-accent-text: #6fa8ff;
--sm-accent-text-hover: #86b6ff;
--sm-tint: #0d131a;
--sm-tint-stroke: #1e3973;
--sm-success: #4fb877;
--sm-success-muted: rgba(79, 184, 119, 0.16);
--sm-error: #f27070;
--sm-error-muted: rgba(242, 112, 112, 0.14);
--sm-warning: #f0b359;
--sm-warning-muted: rgba(240, 179, 89, 0.14);
--sm-info: #6fa8ff;
--sm-info-muted: rgba(111, 168, 255, 0.14);
--sm-shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.3);
--sm-shadow-md:
0 4px 6px -1px rgba(0, 0, 0, 0.4), 0 2px 4px -2px rgba(0, 0, 0, 0.3);
--sm-shadow-float:
0 8px 40px 0 rgba(0, 0, 0, 0.5), 0 1px 3px 0 rgba(0, 0, 0, 0.4);
--sm-sidebar-active-fill: rgba(255, 255, 255, 0.07);
--sm-shadow-sidebar-active: none;
}
/* ---- Global type: console voice at reading scale ---- */
/* Match the page colour under Mintlify's fixed backdrop, so overscroll and
long pages never show a second shade */
html,
body {
background-color: var(--sm-bg);
}
body {
font-family: var(--sm-font-sans);
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
h1,
h2,
h3,
h4,
h5,
h6 {
font-family: var(--sm-font-sans) !important;
font-weight: 500 !important;
letter-spacing: -0.01em;
text-wrap: balance;
}
/* ---- Reading type (modelled on docs.privy.io) ----
Body 16/28 in a soft ink so headings carry the contrast. Headings step 36 / 24 / 20
with -0.025em tracking, and sit closer to the text they introduce than to the text above. */
h1#page-title {
font-size: 2.25rem;
line-height: 2.5rem;
letter-spacing: -0.025em;
color: var(--sm-text-strong);
}
#header .prose {
font-size: 1.0625rem;
line-height: 1.65;
color: var(--sm-text-2);
}
#content.prose,
#content .prose {
font-size: 1rem;
line-height: 1.75rem;
color: var(--sm-text-body);
hyphens: manual;
text-wrap: pretty;
}
#content h2:not([data-component-part]),
#content h3:not([data-component-part]),
/* Headings inside link cards (the overview's hero cards) are card titles,
not section headings, so they keep their own spacing. */
#content
a
h2:not([data-component-part]),
#content a h3:not([data-component-part]) {
margin: 0;
}
#content h4:not([data-component-part]) {
color: var(--sm-text-strong);
}
#content h2:not([data-component-part]) {
font-size: 1.5rem;
line-height: 2rem;
letter-spacing: -0.025em;
margin-top: 2.25rem;
margin-bottom: 1.125rem;
}
#content h3:not([data-component-part]) {
font-size: 1.25rem;
line-height: 1.75rem;
letter-spacing: -0.025em;
margin-top: 2rem;
margin-bottom: 0.875rem;
}
#content h4:not([data-component-part]) {
font-size: 1.0625rem;
line-height: 1.625rem;
letter-spacing: -0.015em;
margin-top: 1.75rem;
margin-bottom: 0.625rem;
}
/* ---- Emphasis: one job per treatment ----
Links: blue at reading weight, a faint underline that firms up on hover.
Bold: ink, reserved for the phrase that matters. Code: a quiet pill.
Links never look like bold, so a sentence can carry both without shouting. */
#content a.link:not(.mint-group):not(.card):not(.sm-card),
#header .prose a.link {
font-weight: inherit !important;
color: var(--sm-accent-text) !important;
border-bottom: 0 !important;
text-decoration-line: underline;
text-decoration-thickness: 1px;
text-underline-offset: 0.2em;
text-decoration-color: color-mix(
in srgb,
var(--sm-accent-text) 30%,
transparent
);
transition:
text-decoration-color var(--sm-dur-fast) var(--sm-ease-out),
color var(--sm-dur-fast) var(--sm-ease-out);
}
#content a.link:not(.mint-group):not(.card):not(.sm-card):hover,
#header .prose a.link:hover {
color: var(--sm-accent-text-hover) !important;
text-decoration-color: currentColor;
}
/* A link that wraps bold or code keeps the link colour, not ink */
#content a.link:not(.mint-group):not(.card):not(.sm-card) strong,
#content a.link:not(.mint-group):not(.card):not(.sm-card) code {
color: inherit !important;
}
#content :not(pre) > code {
font-size: 0.875em !important;
font-weight: 400 !important;
padding: 0.1em 0.35em !important;
border-radius: var(--sm-radius-sm) !important;
background: var(--sm-bg-3) !important;
color: var(--sm-text-strong) !important;
border: 0 !important;
}
.dark #content :not(pre) > code {
background: rgba(255, 255, 255, 0.06) !important;
}
#content strong {
color: var(--sm-text-strong);
font-weight: 500;
}
/* The page outline lists h2 and h3 only; deeper headings stay in the body */
#table-of-contents-content .toc-item[data-depth="2"],
#table-of-contents-content .toc-item[data-depth="3"] {
display: none;
}
code,
kbd,
pre,
samp {
font-family: var(--sm-font-mono) !important;
}
::selection {
background: color-mix(in srgb, var(--sm-text) 16%, transparent);
color: var(--sm-text-strong);
}
:focus-visible {
outline: 2px solid var(--sm-text);
outline-offset: 2px;
}
/* Sidebar group labels, the breadcrumb above the title and the TOC title are plain
sentence-case labels in the UI face, not mono eyebrows */
#sidebar-content .sidebar-group-header,
#sidebar-content .sidebar-group-header .sidebar-title,
#header .breadcrumb-list {
font-family: var(--sm-font-sans) !important;
font-size: 0.875rem;
line-height: 1.25rem;
letter-spacing: -0.005em;
text-transform: none;
font-weight: 500 !important;
color: var(--sm-text-strong) !important;
}
#header .breadcrumb-list .breadcrumb-item {
color: var(--sm-text-2) !important;
}
#header .breadcrumb-list .breadcrumb-item:last-child {
color: var(--sm-text-strong) !important;
}
#table-of-contents h2 button {
font-family: var(--sm-font-sans) !important;
font-size: 0.875rem;
text-transform: none;
letter-spacing: normal;
font-weight: 400 !important;
color: var(--sm-text-2) !important;
}
/* Outline, after docs.privy.io: no rail and no accent. Sections sit flush left in
the secondary tone, subsections indent 16px and step down a weight, and the
section you are reading turns ink. */
#table-of-contents-content .toc-item,
#table-of-contents-content .toc-item > a {
border-left: 0 !important;
margin-left: 0 !important;
padding-left: 0 !important;
}
#table-of-contents-content .toc-item[data-depth="0"] > a {
color: var(--sm-text-2) !important;
font-weight: 500;
}
#table-of-contents-content .toc-item[data-depth="1"] > a {
padding-left: 16px !important;
color: var(--sm-text-2) !important;
font-weight: 400;
}
#table-of-contents-content .toc-item[data-active="true"] > a {
color: var(--sm-text-strong) !important;
font-weight: 500;
}
/* ---- Radius: controls 8, rows and cards 10, nothing is a pill ---- */
#search-bar-entry,
#search-bar-entry-mobile,
#assistant-entry,
#assistant-entry-mobile,
li.navbar-link a,
#topbar-cta-button [class*="rounded"],
#theme-preference-menu-trigger,
.chat-assistant-floating-input [class*="rounded"] {
border-radius: var(--sm-radius-md) !important;
}
#page-context-menu-button {
border-top-left-radius: var(--sm-radius-md) !important;
border-bottom-left-radius: var(--sm-radius-md) !important;
}
#page-context-menu [class*="rounded-r"] {
border-top-right-radius: var(--sm-radius-md) !important;
border-bottom-right-radius: var(--sm-radius-md) !important;
}
#navigation-items li > a,
#navigation-items a[class*="rounded-xl"],
#content .card,
#content [class*="rounded-2xl"] {
border-radius: var(--sm-radius-lg) !important;
}
/* Blue belongs to links only. The current page is a quiet neutral fill with ink text,
like docs.privy.io; every other selected state in the chrome is black and white too. */
#navigation-items li > a {
transition:
color var(--sm-dur-fast) var(--sm-ease-out),
background-color var(--sm-dur-fast) var(--sm-ease-out);
}
#navigation-items a[class*="bg-primary"] {
background-image: none !important;
background-color: var(--sm-sidebar-active-fill) !important;
box-shadow: var(--sm-shadow-sidebar-active);
color: var(--sm-text-strong) !important;
font-weight: 500;
}
/* Dashboard button: ink on white in light mode, and the inverse in dark mode, so it
never becomes navy on black */
.dark #topbar-cta-button a > span.absolute {
background-color: var(--sm-text-strong) !important;
}
.dark #topbar-cta-button a .text-white,
.dark #topbar-cta-button a svg {
color: var(--sm-bg) !important;
}
/* The assistant's send button is painted with the primary (ink), which would vanish
on the dark page; invert it in dark mode like the Dashboard button */
.dark .chat-assistant-send-button {
background-color: color-mix(
in srgb,
var(--sm-text-strong) 30%,
transparent
) !important;
color: var(--sm-bg) !important;
}
.dark .chat-assistant-send-button svg {
color: var(--sm-bg) !important;
}
/* HTTP method badges: one neutral pill instead of a blue/green/orange/red code */
[class*="bg-blue-400/20"],
[class*="bg-green-400/20"],
[class*="bg-orange-400/20"],
[class*="bg-red-400/20"],
[class*="bg-yellow-400/20"],
[class*="bg-purple-400/20"] {
background-color: var(--sm-bg-3) !important;
color: var(--sm-text-2) !important;
}
/* Code blocks sit on the band colour with one hairline, like every console panel.
A standalone block is a single r10 surface. A group is an r10 frame with 2px of
padding around an r8 panel (concentric), with the tabs on the frame. */
#content .code-block,
#content .code-group,
.sm-home-sample .code-group {
border-color: var(--sm-border) !important;
border-radius: var(--sm-radius-lg) !important;
background: var(--sm-bg-2) !important;
}
#content .code-block > .code-block-background {
border: 0 !important;
border-radius: calc(var(--sm-radius-lg) - 1px) !important;
background: transparent !important;
}
/* Mintlify sets the panel radius with a layered !important through --rounded-xl,
which beats any unlayered rule, so set the variable instead */
#content .code-group,
.sm-home-sample .code-group {
--rounded-xl: var(--sm-radius-md);
}
#content .code-group .code-block-background,
.sm-home-sample .code-group .code-block-background {
border: 1px solid var(--sm-border) !important;
border-radius: var(--sm-radius-md) !important;
background: var(--sm-bg-2) !important;
}
/* The copy button's fade has to melt into the panel, not into white */
#content .code-block-fade-overlay,
.sm-home-sample .code-block-fade-overlay {
background-image: linear-gradient(
to right,
transparent 0,
var(--sm-bg-2) 40px
) !important;
}
/* Card titles are h2s inside the card. Without this they pick up the 22px
section size and outrank the headings around them. */
#content .card [data-component-part="card-title"] {
font-size: 1rem !important;
line-height: 1.5 !important;
letter-spacing: -0.005em;
margin-top: 12px !important;
}
#content .card [data-component-part="card-content"],
#content .card .prose {
font-size: 0.9375rem !important;
line-height: 1.6 !important;
color: var(--sm-text-2) !important;
}
/* Feature tiles (logo + label links) match the card surface */
#content a.link.mint-group {
border-radius: var(--sm-radius-lg) !important;
border-color: var(--sm-border) !important;
box-shadow: none !important;
transition: border-color var(--sm-dur-fast) var(--sm-ease-out) !important;
}
#content a.link.mint-group:hover {
border-color: var(--sm-border-hover) !important;
}
/* Screenshots and diagrams: card radius and a neutral hairline edge */
#content img.rounded,
#content img[class*="rounded-lg"] {
border-radius: var(--sm-radius-lg) !important;
outline: 1px solid rgba(0, 0, 0, 0.08);
outline-offset: -1px;
box-shadow: none !important;
}
.dark #content img.rounded,
.dark #content img[class*="rounded-lg"] {
outline-color: rgba(255, 255, 255, 0.1);
}
/* Callouts: notes and info are neutral (blue is for links only); tip, warning and
danger keep a faint tint of their status colour, with only the icon in colour */
#content .callout {
--sm-callout: var(--sm-text-2);
background: color-mix(in srgb, var(--sm-callout) 5%, var(--sm-bg)) !important;
border-color: color-mix(
in srgb,
var(--sm-callout) 20%,
var(--sm-bg)
) !important;
border-radius: var(--sm-radius-lg) !important;
}
#content .callout[data-callout-type="tip"],
#content .callout[data-callout-type="check"] {
--sm-callout: var(--sm-success);
}
#content .callout[data-callout-type="warning"] {
--sm-callout: var(--sm-warning);
}
#content .callout[data-callout-type="danger"] {
--sm-callout: var(--sm-error);
}
#content .callout[data-callout-type="info"] {
background: var(--sm-bg-2) !important;
border-color: var(--sm-border) !important;
}
.dark #content .callout {
background: color-mix(in srgb, var(--sm-callout) 8%, var(--sm-bg)) !important;
border-color: color-mix(
in srgb,
var(--sm-callout) 24%,
var(--sm-bg)
) !important;
}
.dark #content .callout[data-callout-type="info"] {
background: var(--sm-bg-2) !important;
border-color: var(--sm-border) !important;
}
#content .callout [data-component-part="callout-content"] {
color: var(--sm-text-body) !important;
}
#content .callout [data-component-part="callout-content"] strong {
color: var(--sm-text-strong) !important;
}
#content .callout [data-component-part="callout-icon"],
#content .callout [data-component-part="callout-icon"] svg {
color: var(--sm-callout) !important;
}
#content
.callout[data-callout-type="info"]
[data-component-part="callout-icon"],
#content
.callout[data-callout-type="info"]
[data-component-part="callout-icon"]
svg {
color: var(--sm-text-2) !important;
}
/* API reference pages render outside #content, so they get the same text roles here:
section headings in ink at the h3 step, parameter prose in the body tone, links and
inline code on the shared emphasis rules. Parameter text stays a step smaller (15px). */
.api-section-heading-title {
font-size: 1.25rem !important;
line-height: 1.75rem !important;
letter-spacing: -0.025em;
color: var(--sm-text-strong) !important;
}
.api-section .prose,
.api-section .prose p {
font-size: 0.9375rem !important;
line-height: 1.6rem !important;
color: var(--sm-text-body) !important;
hyphens: manual !important;
}
.api-section .prose a {
font-weight: inherit !important;
color: var(--sm-accent-text) !important;
border-bottom: 0 !important;
text-decoration-line: underline;
text-decoration-thickness: 1px;
text-underline-offset: 0.2em;
text-decoration-color: color-mix(
in srgb,
var(--sm-accent-text) 30%,
transparent
);
}
.api-section .prose a:hover {
color: var(--sm-accent-text-hover) !important;
text-decoration-color: currentColor;
}
.api-section .prose :not(pre) > code {
font-size: 0.875em !important;
font-weight: 400 !important;
padding: 0.1em 0.35em !important;
border-radius: var(--sm-radius-sm) !important;
background: var(--sm-bg-3) !important;
color: var(--sm-text-strong) !important;
border: 0 !important;
}
.dark .api-section .prose :not(pre) > code {
background: rgba(255, 255, 255, 0.06) !important;
}
/* ---- Interaction layer ----
Every control answers the pointer the same way: colour, fill and border ease over
150ms on the console's ease-out, buttons dip to 0.96 on press (100ms), and every
clickable surface (cards, tiles, pager) takes the same neutral hover border.
Nothing animates layout, and nothing moves for reduced-motion users. */
#search-bar-entry,
#assistant-entry,
li.navbar-link a,
#topbar-cta-button a,
#topbar-cta-button a > span,
#theme-preference-menu-trigger,
#page-context-menu-button,
#page-context-menu button,
.code-block-copy-button button,
[data-component-part="tab-button"],
.code-group [role="tab"],
a.nav-tabs-item,
a.nav-tabs-item > div,
#navigation-items li > a,
#table-of-contents-content a,
#pagination a,
#content .card,
#content details > summary,
#content [data-component-part="accordion-button"] {
transition-property:
color, background-color, border-color, opacity, transform;
transition-duration:
var(--sm-dur-hover), var(--sm-dur-hover), var(--sm-dur-hover),
var(--sm-dur-hover), var(--sm-dur-press);
transition-timing-function: var(--sm-ease-out);
}
/* Hover: rows and quiet controls fill with the control-hover step, text moves to ink */
#navigation-items li > a:not([class*="bg-primary"]):hover,
#theme-preference-menu-trigger:hover,
.code-block-copy-button button:hover {
background-color: var(--sm-control-hover) !important;
color: var(--sm-text) !important;
}
#table-of-contents-content .toc-item:not([data-active="true"]) > a:hover,
[data-component-part="tab-button"]:not([data-active="true"]):hover,
.code-group [role="tab"]:not([aria-selected="true"]):hover {
color: var(--sm-text) !important;
}
#content details > summary:hover,
#content [data-component-part="accordion-button"]:hover {
background-color: var(--sm-control-hover) !important;
}
/* Clickable surfaces share one hover: a slightly stronger neutral hairline */
#content .card:hover,
#pagination a:hover {
border-color: var(--sm-border-hover) !important;
}
/* Mintlify paints the card hover border with a layered !important rgb(var(--primary)),
which no unlayered rule can beat. Point --primary at the hover grey on the card only,
and hand the real brand triplets back to everything inside it (icons, links). */
#content {
--sm-primary-keep: var(--primary);
--sm-primary-light-keep: var(--primary-light);
}
#content .card:hover {
--primary: 220 220 220;
--primary-light: 45 45 45;
}
#content .card:hover > * {
--primary: var(--sm-primary-keep);
--primary-light: var(--sm-primary-light-keep);
}
/* Press: buttons dip, large surfaces and text links do not */
#search-bar-entry:active,
#assistant-entry:active,
#topbar-cta-button a:active,
#theme-preference-menu-trigger:active,
#page-context-menu-button:active,
.code-block-copy-button button:active {
transform: scale(0.96);
}
@media (prefers-reduced-motion: reduce) {
.sm-home-btn,
.sm-card-title svg,
#search-bar-entry,
#assistant-entry,
#topbar-cta-button a,
#theme-preference-menu-trigger,
#page-context-menu-button,
.code-block-copy-button button {
transition-property:
color, background-color, border-color, opacity !important;
transform: none !important;
}
}
/* Existing dark-mode logo inversions */
.dark img[src*="openai.svg"],
.dark img[src*="pipecat.svg"],
.dark img[src*="eve.svg"],
.dark img[src*="supermemory.svg"] {
filter: invert(1);
}
.dark img[src*="opencode-logo.svg"] {
content: url("/images/opencode-logo-dark.svg");
}
.eve-memory-video {
display: block;
width: 100%;
border-radius: 0;
}
/* ------------------------------------------------------------------
Landing page (index.mdx, mode: custom)
------------------------------------------------------------------ */
/* Modelled on docs.privy.io: a two-column hero (title, lede, link chips | code
sample), then labelled sections of cards. Images keep their own shape. */
.sm-home {
max-width: 1240px;
margin: 0 auto;
padding: 56px 24px 96px;
font-family: var(--sm-font-sans);
color: var(--sm-text);
}
.sm-home-hero {
display: grid;
grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
gap: 64px;
align-items: center;
}
.sm-home-title {
margin: 0;
font-family: var(--sm-font-sans) !important;
font-size: 48px;
font-weight: 500 !important;
line-height: 1.05;
letter-spacing: -0.025em;
color: var(--sm-text);
text-wrap: balance;
}
.sm-home-lede {
max-width: 480px;
margin: 20px 0 0;
font-size: 17px;
line-height: 1.55;
color: var(--sm-text-2);
}
.sm-home-actions {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 8px;
margin-top: 28px;
}
.sm-home-btn {
display: inline-flex;
align-items: center;
gap: 8px;
height: 36px;
padding: 0 14px;
border-radius: var(--sm-radius-md);
font-size: 13px;
font-weight: 500;
line-height: 1;
text-decoration: none !important;
transition-property: background-color, border-color, color, transform;
transition-duration:
var(--sm-dur-hover), var(--sm-dur-hover), var(--sm-dur-hover),
var(--sm-dur-press);
transition-timing-function: var(--sm-ease-out);
}
.sm-home-btn:active {
transform: scale(0.96);
}
/* The overview's one call to action keeps the accent; the rest of the chrome is black and white */
.sm-home-btn-primary {
background: var(--sm-accent);
color: #ffffff !important;
}
.sm-home-btn-primary:hover {
background: var(--sm-accent-hover);
}
.sm-home-btn-secondary {
border: 1px solid var(--sm-border);
background: var(--sm-control);
box-shadow: var(--sm-shadow-sm);
color: var(--sm-text) !important;
}
.sm-home-btn-secondary:hover {
border-color: var(--sm-border-hover);
background: var(--sm-control-hover);
}
.sm-home-sample {
min-width: 0;
}
.sm-home-sample > div {
margin: 0 !important;
}
.sm-home-hero-copy {
display: flex;
flex-direction: column;
container-type: inline-size;
}
/* Two-tone headline: what it is in ink, who it's for in grey. Each half holds one
line on desktop, so the size follows the column (6.9cqi ≈ one line of the longer
half) up to 40px. The grey sits between text-2 and text-3 to keep ~3.8:1. */
.sm-home-title-split > span {
display: block;
}
.sm-home-title-muted {
color: color-mix(in srgb, var(--sm-text-2) 60%, var(--sm-text-3));
}
@media (min-width: 1025px) {
.sm-home-title-split {
font-size: min(40px, 6.9cqi);
}
.sm-home-hero-copy .sm-home-lede {
text-wrap: pretty;
}
}
.sm-home-btn-primary {
border: 0;
cursor: pointer;
font-family: inherit;
}
/* "Or add memory to" row: quiet caption under the actions, marks in ink with names */
.sm-works {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 6px 16px;
margin: 24px 0 0 !important;
font-size: 13px;
line-height: 20px;
color: var(--sm-text-2);
}
.sm-works-label {
color: var(--sm-text-3);
}
.sm-works-item {
display: inline-flex;
align-items: center;
gap: 6px;
color: var(--sm-text-2) !important;
text-decoration: none !important;
transition: color var(--sm-dur-hover) var(--sm-ease-out);
}
.sm-works-item:hover {
color: var(--sm-text) !important;
}
.sm-works-item svg {
width: auto;
height: 14px;
flex-shrink: 0;
}
/* Setup prompt: built like a docs code group (band frame, tab header, r8 inner
panel) so the hero reads as documentation, not console chrome. */
.sm-prompt-panel {
min-width: 0;
border: 1px solid var(--sm-border);
border-radius: var(--sm-radius-lg);
background: var(--sm-bg-2);
padding: 0 2px 2px;
}
.sm-prompt-header {
display: flex;
align-items: center;
justify-content: space-between;
height: 40px;
padding: 0 6px 0 12px;
}
.sm-prompt-tabs {
display: flex;
gap: 16px;
min-width: 0;
overflow-x: auto;
scrollbar-width: none;
}
/* Same tab treatment as the docs code groups: ink + underline when selected */
.sm-prompt-tab {
display: inline-flex;
flex-shrink: 0;
align-items: center;
height: 40px;
padding: 0;
border: 0;
border-bottom: 1.5px solid transparent;
background: transparent;
font-family: inherit;
font-size: 13px;
font-weight: 500;
color: var(--sm-text-2);
cursor: pointer;
transition: color var(--sm-dur-hover) var(--sm-ease-out);
}
.sm-prompt-tab:hover {
color: var(--sm-text);
}
.sm-prompt-tab[aria-selected="true"] {
border-bottom-color: var(--sm-text);
color: var(--sm-text);
}
.sm-prompt-string {
color: var(--sm-accent-text);
}
/* Code reads at the docs' code size and in ink, not the prompt's softer grey */
.sm-prompt-code {
font-size: 13px;
line-height: 1.7;
color: var(--sm-text);
}
.sm-prompt-copy-icon {
display: inline-flex;
align-items: center;
justify-content: center;
width: 28px;
height: 28px;
border: 0;
border-radius: var(--sm-radius-sm);
background: transparent;
color: var(--sm-text-3);
cursor: pointer;
transition-property: background-color, color, transform;
transition-duration:
var(--sm-dur-hover), var(--sm-dur-hover), var(--sm-dur-press);
transition-timing-function: var(--sm-ease-out);
}
.sm-prompt-copy-icon:hover {
background: var(--sm-control-hover);
color: var(--sm-text);
}
.sm-prompt-copy-icon:active {
transform: scale(0.96);
}
.sm-prompt-body {
position: relative;
overflow: hidden;
border: 1px solid var(--sm-border);
border-radius: var(--sm-radius-md);
background: var(--sm-surface);
}
.sm-prompt-scroll {
height: 360px;
margin: 0 !important;
padding: 14px 18px 28px !important;
overflow-y: auto;
background: transparent !important;
font-family: var(
--sm-font-mono,
ui-monospace,
SFMono-Regular,
Menlo,
monospace
);
font-size: 12.5px;
line-height: 20px;
white-space: pre-wrap;
overflow-wrap: anywhere;
color: var(--sm-text-2);
}
.sm-prompt-line {
display: block;
}
.sm-prompt-muted {
color: var(--sm-text-3);
}
.sm-prompt-heading {
font-weight: 500;
color: var(--sm-text);
}
.sm-prompt-endpoint {
font-weight: 500;
color: var(--sm-accent-text);
}
.sm-prompt-fade {
position: absolute;
right: 0;
bottom: 0;
left: 0;
height: 40px;
background: linear-gradient(to top, var(--sm-surface), transparent);
pointer-events: none;
}
.sm-home-section {
margin-top: 112px;
}
.sm-home-label {
margin: 0;
font-size: 16px;
line-height: 24px;
color: var(--sm-text-2);
}
.sm-home-heading {
margin: 8px 0 0 !important;
font-family: var(--sm-font-sans) !important;
font-size: 34px !important;
font-weight: 500 !important;
line-height: 1.2 !important;
letter-spacing: -0.03em !important;
color: var(--sm-text-strong) !important;
}
.sm-home-sub {
margin: 12px 0 0;
font-size: 16px;
line-height: 24px;
color: var(--sm-text-2);
}
.sm-home-grid {
display: grid;
gap: 24px;
margin-top: 36px;
}
.sm-home-grid-3 {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
.sm-home-grid-2 {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.sm-home-card {
display: flex;
flex-direction: column;
overflow: hidden;
border: 1px solid var(--sm-border);
border-radius: var(--sm-radius-lg);
background: var(--sm-surface);
}
.sm-home-card-media {
display: block;
border-bottom: 1px solid var(--sm-border) !important;
}
.sm-home-card-media img {
display: block;
width: 100%;
height: auto;
margin: 0;
}
.sm-home-card-body {
display: flex;
flex-direction: column;
flex: 1;
padding: 24px;
}
.sm-home-card-title {
font-size: 22px;
font-weight: 500;
line-height: 28px;
letter-spacing: -0.02em;
color: var(--sm-text-strong) !important;
text-decoration: none !important;
border: 0 !important;
}
.sm-home-card-desc {
margin: 8px 0 0;
font-size: 14px;
line-height: 22px;
color: var(--sm-text-2);
}
.sm-home-links {
display: flex;
flex-direction: column;
gap: 4px;
margin-top: 20px;
}
.sm-home-list-card .sm-home-links {
display: grid;
grid-template-columns: 1fr 1fr;
column-gap: 16px;
}
.sm-home-link {
display: flex;
align-items: center;
gap: 10px;
height: 36px;
margin: 0 -8px;
padding: 0 8px;
border: 0 !important;
border-radius: var(--sm-radius-md);
color: var(--sm-text) !important;
font-size: 15px;
font-weight: 400;
text-decoration: none !important;
transition: background-color var(--sm-dur-hover) var(--sm-ease-out);
}
.sm-home-link:hover {
background: var(--sm-control-hover);
}
.sm-home-link-icon {
display: grid;
place-items: center;
flex-shrink: 0;
width: 22px;
height: 22px;
border-radius: var(--sm-radius-sm);
background: var(--sm-bg-3);
}
.sm-home-link-icon svg.icon,
.sm-home-link-icon img[src^="/icons/hugeicons/"] {
background-color: var(--sm-text-2) !important;
}
.sm-card {
display: flex;
flex-direction: column;
border: 1px solid var(--sm-border);
border-radius: var(--sm-radius-lg);
background: var(--sm-surface);
overflow: hidden;
color: var(--sm-text) !important;
text-decoration: none !important;
transition: border-color var(--sm-dur-fast) var(--sm-ease-out);
}
.sm-card:hover {
border-color: var(--sm-border-hover);
}
.sm-card-media {
height: clamp(84px, 14vh, 140px);
border-bottom: 1px solid var(--sm-border);
overflow: hidden;
background: var(--sm-bg-2);
}
.sm-card-media {
position: relative;
}
.sm-card-media::after {
content: "";
position: absolute;
inset: 0;
pointer-events: none;
box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.04);
}
.sm-card-media img {
width: 100%;
height: 100%;
object-fit: cover;
display: block;
margin: 0;
}
.sm-card-body {
padding: 14px 16px 16px;
display: flex;
flex-direction: column;
gap: 4px;
}
.sm-card-title {
display: flex;
align-items: center;
justify-content: space-between;
gap: 8px;
font-size: 15px;
font-weight: 500;
letter-spacing: -0.01em;
}
.sm-card-title svg {
color: var(--sm-text-3);
flex-shrink: 0;
}
.sm-card-title svg {
transition:
color var(--sm-dur-hover) var(--sm-ease-out),
transform var(--sm-dur-fast) var(--sm-ease-out);
}
.sm-card:hover .sm-card-title svg {
color: var(--sm-text);
transform: translateX(2px);
}
.sm-card-desc {
font-size: 13px;
line-height: 1.5;
color: var(--sm-text-2);
margin: 0;
}
/* Art tiles: a film photograph (the console's plan art) with a small real
fragment of the product on top that states exactly what the block does.
The photo stays the same in both themes; the fragment follows the theme. */
.sm-art-grid {
display: grid;
grid-template-columns: 1fr;
gap: 12px;
margin: 32px 0;
}
@media (min-width: 640px) {
.sm-art-grid {
grid-template-columns: 1fr 1fr;
}
}
/* Mintlify gives every content anchor a primary underline border; tiles keep the card hairline. */
#content a.sm-card {
border-color: var(--sm-border) !important;
}
#content a.sm-card:hover {
border-color: var(--sm-border-hover) !important;
}
.sm-card-media.sm-art-media {
height: auto;
aspect-ratio: 2 / 1;
}
/* The photo is blurred into a soft colour field and washed light in the
centre, so the objects carry all the detail. */
.sm-art-media > img {
position: absolute;
inset: 0;
filter: blur(14px) saturate(1.05);
transform: scale(1.2) scaleX(var(--flip, 1));
}
.sm-art-wash {
position: absolute;
inset: 0;
background: radial-gradient(
ellipse 75% 70% at 50% 50%,
rgba(255, 255, 255, 0.5),
rgba(255, 255, 255, 0.12) 75%
);
}
.dark .sm-art-wash {
background: radial-gradient(
ellipse 75% 70% at 50% 50%,
rgba(10, 10, 10, 0.42),
rgba(10, 10, 10, 0.1) 75%
);
}
/* Scenes: a fixed 264x152 stage centred on the photo; objects are placed by
inline left/top, lines are an SVG in the same coordinates.
Material, after the reference bento cards: an opaque top-lit surface, a
hairline ring, a white inner highlight and wide, faint shadows. Secondary
objects recede to a flatter, lighter fill with muted content, never to
transparency, so the photo never shows through a surface. */
.sm-scene {
--m-surface: linear-gradient(180deg, #ffffff 0%, #fafbfc 100%);
--m-surface-2: linear-gradient(180deg, #f7f8fa 0%, #f1f3f6 100%);
--m-ring: rgba(9, 17, 32, 0.06);
--m-highlight: inset 0 1px 0 #ffffff;
--m-shadow:
0 1px 2px rgba(9, 17, 32, 0.05), 0 6px 16px -6px rgba(9, 17, 32, 0.12),
0 22px 40px -18px rgba(9, 17, 32, 0.2);
--m-shadow-2:
0 1px 2px rgba(9, 17, 32, 0.04), 0 8px 18px -10px rgba(9, 17, 32, 0.12);
--m-well: #eef1f5;
--m-fg-muted: 0.5;
--m-accent-fill: linear-gradient(
180deg,
#58a0ff 0%,
#2a7ef7 55%,
#1c6ae0 100%
);
--m-accent-glow: 0 6px 16px -6px rgba(28, 106, 224, 0.55);
--m-focus-ring:
0 0 0 1px rgba(47, 134, 255, 0.55), 0 0 0 4px rgba(47, 134, 255, 0.14);
position: absolute;
top: 50%;
left: 50%;
width: 264px;
height: 152px;
transform: translate(-50%, -50%) scale(0.84);
font-size: 11.5px;
line-height: 16px;
letter-spacing: -0.005em;
color: var(--sm-text);
}
.dark .sm-scene {
--m-surface: linear-gradient(180deg, #1c1c1c 0%, #161616 100%);
--m-surface-2: linear-gradient(180deg, #151515 0%, #121212 100%);
--m-ring: rgba(255, 255, 255, 0.08);
--m-highlight: inset 0 1px 0 rgba(255, 255, 255, 0.06);
--m-shadow:
0 1px 2px rgba(0, 0, 0, 0.35), 0 6px 16px -6px rgba(0, 0, 0, 0.45),
0 22px 40px -18px rgba(0, 0, 0, 0.6);
--m-shadow-2:
0 1px 2px rgba(0, 0, 0, 0.3), 0 8px 18px -10px rgba(0, 0, 0, 0.45);
--m-well: #262626;
--m-focus-ring:
0 0 0 1px rgba(111, 168, 255, 0.6), 0 0 0 4px rgba(111, 168, 255, 0.14);
}
.sm-scene *,
.sm-scene *::before {
box-sizing: border-box;
}
.sm-scene > * {
position: absolute;
}
.sm-scene .m {
background: var(--m-surface);
box-shadow:
0 0 0 1px var(--m-ring),
var(--m-highlight),
var(--m-shadow);
}
.sm-scene .m.is-faded {
background: var(--m-surface-2);
box-shadow:
0 0 0 1px var(--m-ring),
var(--m-highlight),
var(--m-shadow-2);
}
.sm-scene .is-faded > * {
opacity: var(--m-fg-muted);
}
.sm-scene svg.m-lines {
inset: 0;
width: 100%;
height: 100%;
fill: none;
stroke: #ffffff;
stroke-width: 1.5;
stroke-linecap: round;
stroke-dasharray: 0.01 4.5;
opacity: 0.9;
}
/* Cards, rows and chips */
.sm-scene .m-card {
border-radius: var(--sm-radius-lg);
}
.sm-scene .m-row {
display: flex;
align-items: center;
gap: 8px;
height: 38px;
padding: 0 10px 0 8px;
font-weight: 500;
white-space: nowrap;
}
.sm-scene .m-grow {
flex: 1;
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
}
.sm-scene .m-row s {
color: var(--sm-text-2);
text-decoration-thickness: 1px;
}
.sm-scene .m-ic {
display: grid;
place-items: center;
flex-shrink: 0;
width: 22px;
height: 22px;
border-radius: var(--sm-radius-sm);
background: var(--m-well);
}
.sm-scene .m-ic.is-on {
background: var(--m-accent-fill);
box-shadow:
inset 0 1px 0 rgba(255, 255, 255, 0.28),
var(--m-accent-glow);
}
.sm-scene .m-tag,
.sm-scene .m-score {
flex-shrink: 0;
height: 18px;
padding: 0 6px;
border-radius: 5px;
background: var(--sm-tint);
box-shadow: inset 0 0 0 1px var(--sm-tint-stroke);
color: var(--sm-accent-text);
font-size: 10.5px;
line-height: 18px;
}
.sm-scene .m-score {
font-family: var(--sm-font-mono);
font-variant-numeric: tabular-nums;
letter-spacing: 0;
}
.sm-scene .is-front {
z-index: 2;
}
.sm-scene .m-chip {
display: inline-flex;
align-items: center;
gap: 5px;
height: 28px;
padding: 0 10px 0 8px;
border-radius: var(--sm-radius-md);
font-weight: 500;
white-space: nowrap;
}
.sm-scene .m-search {
gap: 8px;
padding: 0 12px;
color: var(--sm-text-2);
font-weight: 400;
}
.sm-scene .m-ghost {
height: 38px;
}
.sm-scene .m-skel {
display: block;
height: 5px;
border-radius: 3px;
background: var(--m-well);
}
.sm-scene .m-skel + .m-skel {
margin-top: 5px;
}
/* Filesystems: the container mounted as a folder. A back panel with a tab,
a lighter front panel carrying the mark, both in the brand gradient. */
.sm-scene .m-folder {
width: 84px;
height: 70px;
border-radius: 4px 12px 12px 12px;
background: linear-gradient(180deg, #3b8cff 0%, #1f6fe6 100%);
box-shadow:
0 14px 28px -12px rgba(28, 106, 224, 0.6),
0 2px 4px rgba(28, 106, 224, 0.2);
}
.sm-scene .m-folder::before {
content: "";
position: absolute;
left: 0;
top: -8px;
width: 34px;
height: 11px;
border-radius: 6px 8px 0 0;
background: #3b8cff;
}
.sm-scene .m-folder-front {
position: absolute;
left: 0;
right: 0;
bottom: 0;
height: 58px;
display: grid;
place-items: center;
border-radius: 10px 10px 12px 12px;
background: linear-gradient(180deg, #74b2ff 0%, #3d8fff 100%);
box-shadow:
inset 0 1px 0 rgba(255, 255, 255, 0.45),
0 -1px 3px rgba(9, 30, 90, 0.12);
}
.sm-scene .m-folder-front img {
width: 23px;
height: auto;
margin: 0;
opacity: 0.95;
}
.sm-scene .m-files {
padding: 4px;
}
.sm-scene .m-file {
display: flex;
align-items: center;
gap: 7px;
height: 28px;
padding: 0 8px;
border-radius: var(--sm-radius-sm);
color: var(--sm-text-2);
white-space: nowrap;
}
.sm-scene .m-file svg {
flex-shrink: 0;
}
.sm-scene .m-file.is-on {
background: var(--sm-tint);
box-shadow: inset 0 0 0 1px var(--sm-tint-stroke);
color: var(--sm-accent-text);
}
/* Tiles and badges. App icons are shown as the icon itself, clipped to the
tile, the way the references show them. */
.sm-scene .m-tile {
display: grid;
place-items: center;
border-radius: var(--sm-radius-lg);
}
.sm-scene .m-tile img {
display: block;
width: 100%;
height: 100%;
margin: 0;
object-fit: contain;
}
.sm-scene .m-tile.is-app img {
border-radius: inherit;
}
/* Brand glyphs sit on a white tile in both themes, inset like the
reference icon tiles, so marks never touch the edge. */
.sm-scene .m-tile.is-logo {
background: linear-gradient(180deg, #ffffff 0%, #f7f8fa 100%);
box-shadow:
0 0 0 1px rgba(9, 17, 32, 0.07),
inset 0 1px 0 #ffffff,
var(--m-shadow);
}
.sm-scene .m-tile.is-logo.is-on {
box-shadow:
0 0 0 1px rgba(47, 134, 255, 0.55),
0 0 0 4px rgba(47, 134, 255, 0.14),
var(--m-shadow);
}
.sm-scene .m-tile.is-on {
box-shadow: var(--m-focus-ring), var(--m-shadow);
}
.sm-scene .m-badge {
position: absolute;
right: -5px;
bottom: -5px;
display: grid;
place-items: center;
width: 16px;
height: 16px;
border-radius: 50%;
background: var(--m-accent-fill);
box-shadow:
0 0 0 2px var(--sm-bg),
0 2px 4px rgba(9, 17, 32, 0.18);
}
/* The Supermemory hub: a gradient square with a spaced, concentric halo ring and a soft
coloured glow beneath, no dark inner shading. */
.sm-scene .m-orb {
display: grid;
place-items: center;
width: 52px;
height: 52px;
border-radius: var(--sm-radius-xl);
background: var(--m-accent-fill);
box-shadow:
inset 0 1px 0 rgba(255, 255, 255, 0.3),
0 12px 24px -8px rgba(28, 106, 224, 0.6),
0 2px 4px rgba(28, 106, 224, 0.2);
}
.sm-scene .m-orb::before {
content: "";
position: absolute;
inset: -7px;
border-radius: calc(var(--sm-radius-xl) + 7px);
background: rgba(255, 255, 255, 0.22);
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.7);
z-index: -1;
}
.dark .sm-scene .m-orb::before {
background: rgba(255, 255, 255, 0.06);
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.22);
}
.sm-scene .m-orb img {
width: 24px;
height: auto;
margin: 0;
}
/* Profile card: the avatar breaks out of the top edge, like the reference
profile cards; each fact row says whether it is static or dynamic. */
.sm-scene .m-profile {
padding: 0 12px 6px;
}
.sm-scene .m-profile-head {
display: flex;
align-items: flex-end;
gap: 10px;
padding: 10px 0;
box-shadow: inset 0 -1px 0 var(--m-ring);
}
.sm-scene .m-profile-head .m-grow {
display: flex;
flex-direction: column;
padding-bottom: 1px;
}
.sm-scene .m-profile-head b {
font-size: 12px;
font-weight: 500;
line-height: 16px;
}
.sm-scene .m-profile-head .m-grow > span {
color: var(--sm-text-2);
font-size: 11px;
line-height: 14px;
}
.sm-scene .m-avatar {
display: grid;
place-items: center;
flex-shrink: 0;
width: 40px;
height: 40px;
align-self: flex-start;
margin-top: -24px;
border-radius: 50%;
background: linear-gradient(180deg, #eaf2ff 0%, #cfe0ff 100%);
box-shadow:
0 0 0 3px #ffffff,
0 0 0 4px var(--m-ring),
0 6px 14px -4px rgba(28, 106, 224, 0.35);
color: var(--sm-accent-text);
font-size: 12px;
font-weight: 500;
letter-spacing: 0.01em;
}
.sm-scene .m-avatar img {
display: block;
width: 100%;
height: 100%;
margin: 0;
border-radius: 50%;
object-fit: cover;
}
.dark .sm-scene .m-avatar {
background: linear-gradient(180deg, #1d2d4a 0%, #142240 100%);
box-shadow:
0 0 0 3px #1c1c1c,
0 0 0 4px var(--m-ring),
0 6px 14px -4px rgba(0, 0, 0, 0.6);
}
.sm-scene .m-fact {
display: flex;
align-items: center;
gap: 8px;
height: 30px;
font-weight: 500;
white-space: nowrap;
}
.sm-scene .m-fact + .m-fact {
box-shadow: inset 0 1px 0 var(--m-ring);
}
.sm-scene .m-fact .m-ic {
width: 20px;
height: 20px;
}
.sm-scene .m-fact-kind {
flex-shrink: 0;
color: var(--sm-text-3);
font-size: 10.5px;
}
/* Extractors */
.sm-scene .m-pdf {
display: grid;
place-items: center;
width: 64px;
height: 80px;
}
.sm-scene .m-pdf-tag {
position: absolute;
left: -6px;
bottom: 12px;
height: 16px;
padding: 0 5px;
border-radius: 4px;
background: linear-gradient(180deg, #ef5b5b 0%, #d23a3a 100%);
box-shadow:
inset 0 1px 0 rgba(255, 255, 255, 0.25),
0 3px 8px -2px rgba(210, 58, 58, 0.5);
color: #ffffff;
font-size: 9.5px;
font-weight: 500;
line-height: 16px;
letter-spacing: 0.02em;
}
.sm-scene .m-chunk {
height: 26px;
padding: 0 10px;
display: flex;
align-items: center;
}
.sm-scene .m-chunk .m-skel {
flex: none;
}
.sm-scene .m-chunk.is-on {
box-shadow: var(--m-focus-ring), var(--m-highlight), var(--m-shadow);
}
.sm-scene .m-chunk.is-on .m-skel {
background: rgba(47, 134, 255, 0.3);
}
/* Leaderboard */
.sm-scene .m-board {
padding: 0 12px 4px;
}
.sm-scene .m-board-head {
height: 30px;
line-height: 30px;
color: var(--sm-text-2);
font-weight: 500;
}
.sm-scene .m-board-row {
display: flex;
align-items: center;
gap: 8px;
height: 34px;
box-shadow: inset 0 1px 0 var(--m-ring);
font-weight: 500;
}
.sm-scene .m-board-row.is-faded > * {
opacity: 0.6;
}
.sm-scene .m-board-row > :last-child:not(.m-grow) {
color: var(--sm-accent-text);
font-variant-numeric: tabular-nums;
}
/* Mintlify icons are masks filled with the accent: neutral objects take the
secondary ink, filled accent objects take white. */
.sm-scene svg.icon,
.sm-scene img[src^="/icons/hugeicons/"] {
background-color: var(--sm-text-2) !important;
}
.sm-scene .is-on > svg.icon,
.sm-scene .is-on > img[src^="/icons/hugeicons/"],
.sm-scene .m-search svg.icon,
.sm-scene .m-search img[src^="/icons/hugeicons/"] {
background-color: var(--sm-accent-text) !important;
}
.sm-scene .m-ic.is-on svg.icon,
.sm-scene .m-ic.is-on img[src^="/icons/hugeicons/"],
.sm-scene .m-badge svg.icon,
.sm-scene .m-badge img[src^="/icons/hugeicons/"] {
background-color: #ffffff !important;
}
/* ---- Weights: regular (400) and medium (500) only ----
Nothing on the site is semibold or bold. Mintlify's own utility classes, headings,
bold text and table headers are all capped at medium. */
.font-semibold,
.font-bold,
.font-extrabold,
.font-black,
strong,
b,
th,
h1,
h2,
h3,
h4,
h5,
h6,
[class*="font-semibold"],
[class*="font-bold"] {
font-weight: 500 !important;
}
/* Heading permalink anchors carry their own semibold; they follow the heading */
:is(h1, h2, h3, h4, h5, h6) a,
a[class*="-ml-10"] {
font-weight: inherit !important;
}
/* ---- Icons: Hugeicons (free set, MIT) ----
Mintlify only ships Font Awesome, Lucide and Tabler, so the Hugeicons SVGs live in
/icons/hugeicons and are referenced by path. Mintlify draws path icons as a plain
<img>, which cannot take the text colour, so each one is redrawn as a mask filled
with currentColor: it follows the sidebar's active blue, the link ink and dark mode
exactly like the built-in icons do. */
img[src^="/icons/hugeicons/"] {
object-position: -9999px 0;
background-color: currentColor !important;
-webkit-mask: var(--hi) center / 100% 100% no-repeat;
mask: var(--hi) center / 100% 100% no-repeat;
}
img[src="/icons/hugeicons/activity-01.svg"] {
--hi: url("/icons/hugeicons/activity-01.svg");
}
img[src="/icons/hugeicons/agreement-01.svg"] {
--hi: url("/icons/hugeicons/agreement-01.svg");
}
img[src="/icons/hugeicons/ai-brain-01.svg"] {
--hi: url("/icons/hugeicons/ai-brain-01.svg");
}
img[src="/icons/hugeicons/arrow-data-transfer-horizontal.svg"] {
--hi: url("/icons/hugeicons/arrow-data-transfer-horizontal.svg");
}
img[src="/icons/hugeicons/arrow-up-right-01.svg"] {
--hi: url("/icons/hugeicons/arrow-up-right-01.svg");
}
img[src="/icons/hugeicons/award-01.svg"] {
--hi: url("/icons/hugeicons/award-01.svg");
}
img[src="/icons/hugeicons/balance-scale.svg"] {
--hi: url("/icons/hugeicons/balance-scale.svg");
}
img[src="/icons/hugeicons/book-02.svg"] {
--hi: url("/icons/hugeicons/book-02.svg");
}
img[src="/icons/hugeicons/book-open-01.svg"] {
--hi: url("/icons/hugeicons/book-open-01.svg");
}
img[src="/icons/hugeicons/brain-01.svg"] {
--hi: url("/icons/hugeicons/brain-01.svg");
}
img[src="/icons/hugeicons/bug-01.svg"] {
--hi: url("/icons/hugeicons/bug-01.svg");
}
img[src="/icons/hugeicons/building-03.svg"] {
--hi: url("/icons/hugeicons/building-03.svg");
}
img[src="/icons/hugeicons/chart-line-data-01.svg"] {
--hi: url("/icons/hugeicons/chart-line-data-01.svg");
}
img[src="/icons/hugeicons/chat-bot.svg"] {
--hi: url("/icons/hugeicons/chat-bot.svg");
}
img[src="/icons/hugeicons/check-list.svg"] {
--hi: url("/icons/hugeicons/check-list.svg");
}
img[src="/icons/hugeicons/clipboard.svg"] {
--hi: url("/icons/hugeicons/clipboard.svg");
}
img[src="/icons/hugeicons/clock-01.svg"] {
--hi: url("/icons/hugeicons/clock-01.svg");
}
img[src="/icons/hugeicons/cloud.svg"] {
--hi: url("/icons/hugeicons/cloud.svg");
}
img[src="/icons/hugeicons/command-line.svg"] {
--hi: url("/icons/hugeicons/command-line.svg");
}
img[src="/icons/hugeicons/compass-01.svg"] {
--hi: url("/icons/hugeicons/compass-01.svg");
}
img[src="/icons/hugeicons/computer.svg"] {
--hi: url("/icons/hugeicons/computer.svg");
}
img[src="/icons/hugeicons/copy-01.svg"] {
--hi: url("/icons/hugeicons/copy-01.svg");
}
img[src="/icons/hugeicons/cpu.svg"] {
--hi: url("/icons/hugeicons/cpu.svg");
}
img[src="/icons/hugeicons/credit-card.svg"] {
--hi: url("/icons/hugeicons/credit-card.svg");
}
img[src="/icons/hugeicons/cube.svg"] {
--hi: url("/icons/hugeicons/cube.svg");
}
img[src="/icons/hugeicons/cursor-01.svg"] {
--hi: url("/icons/hugeicons/cursor-01.svg");
}
img[src="/icons/hugeicons/dashboard-speed-01.svg"] {
--hi: url("/icons/hugeicons/dashboard-speed-01.svg");
}
img[src="/icons/hugeicons/database-01.svg"] {
--hi: url("/icons/hugeicons/database-01.svg");
}
img[src="/icons/hugeicons/delivery-truck-01.svg"] {
--hi: url("/icons/hugeicons/delivery-truck-01.svg");
}
img[src="/icons/hugeicons/download-01.svg"] {
--hi: url("/icons/hugeicons/download-01.svg");
}
img[src="/icons/hugeicons/eraser-01.svg"] {
--hi: url("/icons/hugeicons/eraser-01.svg");
}
img[src="/icons/hugeicons/file-01.svg"] {
--hi: url("/icons/hugeicons/file-01.svg");
}
img[src="/icons/hugeicons/file-02.svg"] {
--hi: url("/icons/hugeicons/file-02.svg");
}
img[src="/icons/hugeicons/file-search.svg"] {
--hi: url("/icons/hugeicons/file-search.svg");
}
img[src="/icons/hugeicons/files-01.svg"] {
--hi: url("/icons/hugeicons/files-01.svg");
}
img[src="/icons/hugeicons/files-02.svg"] {
--hi: url("/icons/hugeicons/files-02.svg");
}
img[src="/icons/hugeicons/filter.svg"] {
--hi: url("/icons/hugeicons/filter.svg");
}
img[src="/icons/hugeicons/flash.svg"] {
--hi: url("/icons/hugeicons/flash.svg");
}
img[src="/icons/hugeicons/folder-01.svg"] {
--hi: url("/icons/hugeicons/folder-01.svg");
}
img[src="/icons/hugeicons/github.svg"] {
--hi: url("/icons/hugeicons/github.svg");
}
img[src="/icons/hugeicons/globe-02.svg"] {
--hi: url("/icons/hugeicons/globe-02.svg");
}
img[src="/icons/hugeicons/hard-drive.svg"] {
--hi: url("/icons/hugeicons/hard-drive.svg");
}
img[src="/icons/hugeicons/headphones.svg"] {
--hi: url("/icons/hugeicons/headphones.svg");
}
img[src="/icons/hugeicons/help-circle.svg"] {
--hi: url("/icons/hugeicons/help-circle.svg");
}
img[src="/icons/hugeicons/hierarchy-square-01.svg"] {
--hi: url("/icons/hugeicons/hierarchy-square-01.svg");
}
img[src="/icons/hugeicons/id.svg"] {
--hi: url("/icons/hugeicons/id.svg");
}
img[src="/icons/hugeicons/idea-01.svg"] {
--hi: url("/icons/hugeicons/idea-01.svg");
}
img[src="/icons/hugeicons/invoice-01.svg"] {
--hi: url("/icons/hugeicons/invoice-01.svg");
}
img[src="/icons/hugeicons/java-script.svg"] {
--hi: url("/icons/hugeicons/java-script.svg");
}
img[src="/icons/hugeicons/justice-scale-01.svg"] {
--hi: url("/icons/hugeicons/justice-scale-01.svg");
}
img[src="/icons/hugeicons/key-01.svg"] {
--hi: url("/icons/hugeicons/key-01.svg");
}
img[src="/icons/hugeicons/layers-01.svg"] {
--hi: url("/icons/hugeicons/layers-01.svg");
}
img[src="/icons/hugeicons/left-to-right-list-bullet.svg"] {
--hi: url("/icons/hugeicons/left-to-right-list-bullet.svg");
}
img[src="/icons/hugeicons/link-01.svg"] {
--hi: url("/icons/hugeicons/link-01.svg");
}
img[src="/icons/hugeicons/location-01.svg"] {
--hi: url("/icons/hugeicons/location-01.svg");
}
img[src="/icons/hugeicons/lock.svg"] {
--hi: url("/icons/hugeicons/lock.svg");
}
img[src="/icons/hugeicons/login-01.svg"] {
--hi: url("/icons/hugeicons/login-01.svg");
}
img[src="/icons/hugeicons/logout-01.svg"] {
--hi: url("/icons/hugeicons/logout-01.svg");
}
img[src="/icons/hugeicons/mail-01.svg"] {
--hi: url("/icons/hugeicons/mail-01.svg");
}
img[src="/icons/hugeicons/message-01.svg"] {
--hi: url("/icons/hugeicons/message-01.svg");
}
img[src="/icons/hugeicons/message-02.svg"] {
--hi: url("/icons/hugeicons/message-02.svg");
}
img[src="/icons/hugeicons/note-01.svg"] {
--hi: url("/icons/hugeicons/note-01.svg");
}
img[src="/icons/hugeicons/package.svg"] {
--hi: url("/icons/hugeicons/package.svg");
}
img[src="/icons/hugeicons/play-circle.svg"] {
--hi: url("/icons/hugeicons/play-circle.svg");
}
img[src="/icons/hugeicons/play.svg"] {
--hi: url("/icons/hugeicons/play.svg");
}
img[src="/icons/hugeicons/plug-01.svg"] {
--hi: url("/icons/hugeicons/plug-01.svg");
}
img[src="/icons/hugeicons/plug-socket.svg"] {
--hi: url("/icons/hugeicons/plug-socket.svg");
}
img[src="/icons/hugeicons/plus-sign.svg"] {
--hi: url("/icons/hugeicons/plus-sign.svg");
}
img[src="/icons/hugeicons/puzzle.svg"] {
--hi: url("/icons/hugeicons/puzzle.svg");
}
img[src="/icons/hugeicons/python.svg"] {
--hi: url("/icons/hugeicons/python.svg");
}
img[src="/icons/hugeicons/refresh.svg"] {
--hi: url("/icons/hugeicons/refresh.svg");
}
img[src="/icons/hugeicons/robotic.svg"] {
--hi: url("/icons/hugeicons/robotic.svg");
}
img[src="/icons/hugeicons/rotate-clockwise.svg"] {
--hi: url("/icons/hugeicons/rotate-clockwise.svg");
}
img[src="/icons/hugeicons/route-01.svg"] {
--hi: url("/icons/hugeicons/route-01.svg");
}
img[src="/icons/hugeicons/route-02.svg"] {
--hi: url("/icons/hugeicons/route-02.svg");
}
img[src="/icons/hugeicons/search-01.svg"] {
--hi: url("/icons/hugeicons/search-01.svg");
}
img[src="/icons/hugeicons/server-stack-01.svg"] {
--hi: url("/icons/hugeicons/server-stack-01.svg");
}
img[src="/icons/hugeicons/settings-01.svg"] {
--hi: url("/icons/hugeicons/settings-01.svg");
}
img[src="/icons/hugeicons/settings-02.svg"] {
--hi: url("/icons/hugeicons/settings-02.svg");
}
img[src="/icons/hugeicons/share-08.svg"] {
--hi: url("/icons/hugeicons/share-08.svg");
}
img[src="/icons/hugeicons/shield-01.svg"] {
--hi: url("/icons/hugeicons/shield-01.svg");
}
img[src="/icons/hugeicons/sliders-horizontal.svg"] {
--hi: url("/icons/hugeicons/sliders-horizontal.svg");
}
img[src="/icons/hugeicons/source-code.svg"] {
--hi: url("/icons/hugeicons/source-code.svg");
}
img[src="/icons/hugeicons/sparkles.svg"] {
--hi: url("/icons/hugeicons/sparkles.svg");
}
img[src="/icons/hugeicons/square.svg"] {
--hi: url("/icons/hugeicons/square.svg");
}
img[src="/icons/hugeicons/tag-01.svg"] {
--hi: url("/icons/hugeicons/tag-01.svg");
}
img[src="/icons/hugeicons/test-tube-01.svg"] {
--hi: url("/icons/hugeicons/test-tube-01.svg");
}
img[src="/icons/hugeicons/tick-02.svg"] {
--hi: url("/icons/hugeicons/tick-02.svg");
}
img[src="/icons/hugeicons/triangle.svg"] {
--hi: url("/icons/hugeicons/triangle.svg");
}
img[src="/icons/hugeicons/upload-01.svg"] {
--hi: url("/icons/hugeicons/upload-01.svg");
}
img[src="/icons/hugeicons/user-circle.svg"] {
--hi: url("/icons/hugeicons/user-circle.svg");
}
img[src="/icons/hugeicons/user-multiple.svg"] {
--hi: url("/icons/hugeicons/user-multiple.svg");
}
img[src="/icons/hugeicons/user.svg"] {
--hi: url("/icons/hugeicons/user.svg");
}
img[src="/icons/hugeicons/workflow-square-01.svg"] {
--hi: url("/icons/hugeicons/workflow-square-01.svg");
}
img[src="/icons/hugeicons/wrench-01.svg"] {
--hi: url("/icons/hugeicons/wrench-01.svg");
}
/* ---- Motion: nothing moves for people who asked it not to ---- */
@media (prefers-reduced-motion: reduce) {
.sm-home *,
#navigation-items li > a {
transition-duration: 0.01ms !important;
}
}
/* ---- Responsive ---- */
@media (max-width: 1024px) {
.sm-home {
padding-top: 56px;
}
.sm-home-hero {
grid-template-columns: minmax(0, 1fr);
gap: 40px;
}
.sm-home-grid-3 {
gap: 16px;
}
.sm-home-grid-3 .sm-home-card-body {
padding: 20px;
}
}
@media (max-width: 767px) {
.sm-prompt-scroll {
height: 280px;
}
.sm-home-grid-3 {
grid-template-columns: minmax(0, 1fr);
}
}
@media (max-width: 640px) {
.sm-home {
padding: 40px 16px 64px;
}
.sm-home-title {
font-size: 34px;
line-height: 1.1;
}
.sm-home-actions {
flex-direction: column;
align-items: stretch;
}
.sm-home-btn {
justify-content: center;
height: 44px;
font-size: 14px;
}
.sm-home-lede {
font-size: 16px;
}
.sm-home-section {
margin-top: 72px;
}
.sm-home-heading {
font-size: 26px !important;
}
.sm-home-grid-3,
.sm-home-grid-2,
.sm-home-list-card .sm-home-links {
grid-template-columns: minmax(0, 1fr);
}
}
/* Overview page only: swap the navbar icon for the console wordmark plus a "Docs"
label, so the landing page reads "supermemory | Docs". Every other page keeps the
icon from docs.json. The wordmark's text sits low in its box, so 18px tall lines
its x-height up with the label. */
html:has(.sm-home) a:has(> img.nav-logo) {
display: inline-flex !important;
align-items: center;
gap: 10px;
}
html:has(.sm-home) img.nav-logo[src="/logo/light.svg"] {
content: url("/logo/wordmark-light.svg");
height: 18px !important;
}
html:has(.sm-home) img.nav-logo[src="/logo/dark.svg"] {
content: url("/logo/wordmark-dark.svg");
height: 18px !important;
}
html:has(.sm-home) a:has(> img.nav-logo)::after {
content: "Docs";
padding-left: 10px;
border-left: 1px solid var(--sm-border-hover);
font-family: var(--sm-font-sans);
font-size: 15px;
font-weight: 500;
line-height: 18px;
color: var(--sm-text-2);
}