Files
Momento/memento-note/app/globals.css
Sepehr Ramezani 427e32e813
All checks were successful
Deploy to Production / Build and Deploy (push) Successful in 45s
feat: add 6 pastel color themes (Rose, Green, Lavender, Sand, Ocean, Sunset)
Each theme includes light and dark mode variants with carefully tuned
oklch colors for foreground, card, borders, sidebar, and all UI elements.
Total: 10 named themes + dark mode + auto (system preference).

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-05-01 16:38:43 +02:00

1336 lines
42 KiB
CSS

@import "tailwindcss";
@plugin "@tailwindcss/typography";
@import "tw-animate-css";
@import "vazirmatn/Vazirmatn-font-face.css";
@custom-variant dark (&:is(.dark *));
/* Custom breakpoints for desktop design (matching code.html reference) */
@theme {
/* Desktop breakpoints: 1024px (min), 1440px (large), 1920px (ultra-wide) */
--breakpoint-desktop: 1024px;
--breakpoint-large-desktop: 1440px;
--breakpoint-ultra-wide: 1920px;
/* Custom colors matching Keep design */
--color-primary: #64748b;
--color-background-light: #f7f7f8;
--color-background-dark: #1a1d23;
/* Stitch Design Tokens */
--font-sans: var(--font-inter);
--font-heading: var(--font-manrope);
--shadow-level-1: 0px 4px 20px rgba(15, 23, 42, 0.05);
--shadow-level-2: 0px 10px 30px rgba(15, 23, 42, 0.08);
}
/* Custom scrollbar for better aesthetics */
::-webkit-scrollbar {
width: 8px;
height: 8px;
}
::-webkit-scrollbar-track {
background: transparent;
}
::-webkit-scrollbar-thumb {
background: #cbd5e1;
border-radius: 4px;
}
::-webkit-scrollbar-thumb:hover {
background: #94a3b8;
}
.dark ::-webkit-scrollbar-thumb {
background: #475569;
}
/* Custom Prose overrides for compact notes */
@utility prose-compact {
& :where(h1, h2, h3, h4) {
margin-top: 0.5rem;
margin-bottom: 0.25rem;
}
& :where(p, ul, ol, li) {
margin-top: 0.25rem;
margin-bottom: 0.25rem;
}
}
@theme inline {
--color-background: var(--background);
--color-foreground: var(--foreground);
--font-sans: var(--font-inter);
--font-mono: ui-monospace, 'Cascadia Code', 'Source Code Pro', Menlo, Monaco, Consolas, monospace;
--color-sidebar-ring: var(--sidebar-ring);
--color-sidebar-border: var(--sidebar-border);
--color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
--color-sidebar-accent: var(--sidebar-accent);
--color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
--color-sidebar-primary: var(--sidebar-primary);
--color-sidebar-foreground: var(--sidebar-foreground);
--color-sidebar: var(--sidebar);
--color-chart-5: var(--chart-5);
--color-chart-4: var(--chart-4);
--color-chart-3: var(--chart-3);
--color-chart-2: var(--chart-2);
--color-chart-1: var(--chart-1);
--color-ring: var(--ring);
--color-input: var(--input);
--color-border: var(--border);
--color-destructive: var(--destructive);
--color-accent-foreground: var(--accent-foreground);
--color-accent: var(--accent);
--color-muted-foreground: var(--muted-foreground);
--color-muted: var(--muted);
--color-secondary-foreground: var(--secondary-foreground);
--color-secondary: var(--secondary);
--color-primary-foreground: var(--primary-foreground);
--color-primary: var(--primary);
--color-popover-foreground: var(--popover-foreground);
--color-popover: var(--popover);
--color-card-foreground: var(--card-foreground);
--color-card: var(--card);
--radius-sm: calc(var(--radius) - 4px);
--radius-md: calc(var(--radius) - 2px);
--radius-lg: var(--radius);
--radius-xl: calc(var(--radius) + 4px);
--radius-2xl: calc(var(--radius) + 8px);
--radius-3xl: calc(var(--radius) + 12px);
--radius-4xl: calc(var(--radius) + 16px);
}
:root {
--radius: 0.5rem;
--background: #f8fafc; /* Sub-surface off-white */
--foreground: oklch(0.2 0.02 230); /* Gris-bleu foncé */
--card: oklch(1 0 0); /* Blanc pur */
--card-foreground: oklch(0.2 0.02 230);
--popover: oklch(1 0 0);
--popover-foreground: oklch(0.2 0.02 230);
--primary: #0284c7; /* Sky Blue */
--primary-foreground: #ffffff; /* Blanc */
--secondary: #e2e8f0; /* Gris-bleu très pâle */
--secondary-foreground: #1e293b;
--muted: #f1f5f9;
--muted-foreground: #64748b;
--accent: #f1f5f9;
--accent-foreground: #0284c7;
--destructive: oklch(0.6 0.18 25); /* Rouge */
--border: #cbd5e1; /* Gris-bleu visible */
--input: #cbd5e1; /* Bordure visible pour inputs/checkbox */
--ring: #0284c7;
--chart-1: oklch(0.646 0.222 41.116);
--chart-2: oklch(0.6 0.118 184.704);
--chart-3: oklch(0.398 0.07 227.392);
--chart-4: oklch(0.828 0.189 84.429);
--chart-5: oklch(0.769 0.188 70.08);
--sidebar: oklch(0.97 0.004 230);
--sidebar-foreground: oklch(0.2 0.02 230);
--sidebar-primary: oklch(0.45 0.08 230);
--sidebar-primary-foreground: oklch(0.99 0 0);
--sidebar-accent: oklch(0.94 0.005 230);
--sidebar-accent-foreground: oklch(0.2 0.02 230);
--sidebar-border: oklch(0.9 0.008 230);
--sidebar-ring: oklch(0.7 0.005 230);
}
[data-theme='light'] {
--background: oklch(0.985 0.003 230); /* Blanc grisâtre */
--foreground: oklch(0.2 0.02 230); /* Gris-bleu foncé */
--card: oklch(1 0 0); /* Blanc pur */
--card-foreground: oklch(0.2 0.02 230);
--popover: oklch(1 0 0);
--popover-foreground: oklch(0.2 0.02 230);
--primary: oklch(0.45 0.08 230); /* Gris-bleu doux */
--primary-foreground: oklch(0.99 0 0); /* Blanc */
--secondary: oklch(0.94 0.005 230); /* Gris-bleu très pâle */
--secondary-foreground: oklch(0.2 0.02 230);
--muted: oklch(0.92 0.005 230);
--muted-foreground: oklch(0.6 0.01 230);
--accent: oklch(0.92 0.005 230);
--accent-foreground: oklch(0.2 0.02 230);
--destructive: oklch(0.6 0.18 25); /* Rouge */
--border: oklch(0.85 0.008 230); /* Gris-bleu visible */
--input: oklch(0.85 0.008 230); /* Bordure visible */
--ring: oklch(0.7 0.005 230);
--popover: oklch(1 0 0);
--popover-foreground: oklch(0.2 0.02 230);
--sidebar: oklch(0.97 0.004 230);
--sidebar-foreground: oklch(0.2 0.02 230);
--sidebar-primary: oklch(0.45 0.08 230);
--sidebar-primary-foreground: oklch(0.99 0 0);
--sidebar-accent: oklch(0.94 0.005 230);
--sidebar-accent-foreground: oklch(0.2 0.02 230);
--sidebar-border: oklch(0.85 0.008 230);
--sidebar-ring: oklch(0.7 0.005 230);
}
[data-theme='light'].dark {
--background: oklch(0.14 0.005 230); /* Noir grisâtre */
--foreground: oklch(0.97 0.003 230); /* Blanc grisâtre */
--card: oklch(0.18 0.006 230); /* Gris-bleu foncé */
--card-foreground: oklch(0.97 0.003 230);
--popover: oklch(0.18 0.006 230);
--popover-foreground: oklch(0.97 0.003 230);
--primary: oklch(0.55 0.08 230); /* Gris-bleu plus clair */
--primary-foreground: oklch(0.1 0 0); /* Noir */
--secondary: oklch(0.24 0.006 230);
--secondary-foreground: oklch(0.97 0.003 230);
--muted: oklch(0.22 0.006 230);
--muted-foreground: oklch(0.55 0.01 230);
--accent: oklch(0.26 0.008 230);
--accent-foreground: oklch(0.97 0.003 230);
--destructive: oklch(0.65 0.18 25);
--border: oklch(0.33 0.01 230);
--input: oklch(0.33 0.01 230);
--ring: oklch(0.6 0.01 230);
--popover: oklch(0.18 0.006 230);
--popover-foreground: oklch(0.97 0.003 230);
--sidebar: oklch(0.12 0.005 230);
--sidebar-foreground: oklch(0.97 0.003 230);
--sidebar-primary: oklch(0.55 0.08 230);
--sidebar-primary-foreground: oklch(0.1 0 0);
--sidebar-accent: oklch(0.24 0.006 230);
--sidebar-accent-foreground: oklch(0.97 0.003 230);
--sidebar-border: oklch(0.28 0.01 230);
--sidebar-ring: oklch(0.6 0.01 230);
}
.dark {
--background: oklch(0.14 0.005 230); /* Noir grisâtre */
--foreground: oklch(0.97 0.003 230); /* Blanc grisâtre */
--card: oklch(0.18 0.006 230); /* Gris-bleu foncé */
--card-foreground: oklch(0.97 0.003 230);
--popover: oklch(0.18 0.006 230);
--popover-foreground: oklch(0.97 0.003 230);
--primary: oklch(0.55 0.08 230); /* Gris-bleu plus clair */
--primary-foreground: oklch(0.1 0 0); /* Noir */
--secondary: oklch(0.24 0.006 230);
--secondary-foreground: oklch(0.97 0.003 230);
--muted: oklch(0.22 0.006 230);
--muted-foreground: oklch(0.55 0.01 230);
--accent: oklch(0.26 0.008 230);
--accent-foreground: oklch(0.97 0.003 230);
--destructive: oklch(0.65 0.18 25);
--border: oklch(0.33 0.01 230);
--input: oklch(0.33 0.01 230);
--ring: oklch(0.6 0.01 230);
--chart-1: oklch(0.488 0.243 264.376);
--chart-2: oklch(0.696 0.17 162.48);
--chart-3: oklch(0.769 0.188 70.08);
--chart-4: oklch(0.627 0.265 303.9);
--chart-5: oklch(0.645 0.246 16.439);
--sidebar: oklch(0.12 0.005 230);
--sidebar-foreground: oklch(0.97 0.003 230);
--sidebar-primary: oklch(0.55 0.08 230);
--sidebar-primary-foreground: oklch(0.1 0 0);
--sidebar-accent: oklch(0.24 0.006 230);
--sidebar-accent-foreground: oklch(0.97 0.003 230);
--sidebar-border: oklch(0.28 0.01 230);
--sidebar-ring: oklch(0.6 0.01 230);
}
[data-theme='midnight'] {
--background: oklch(0.94 0.005 250); /* Gris-bleu très pâle */
--foreground: oklch(0.18 0.03 250); /* Gris-bleu très foncé */
--card: oklch(0.97 0.006 250); /* Gris-bleu pâle */
--card-foreground: oklch(0.18 0.03 250);
--primary: oklch(0.5 0.12 250); /* Gris-bleu saturé */
--primary-foreground: oklch(0.99 0 0); /* Blanc */
--secondary: oklch(0.2 0.01 250);
--secondary-foreground: oklch(0.18 0.03 250);
--muted: oklch(0.22 0.01 250);
--muted-foreground: oklch(0.55 0.02 250);
--accent: oklch(0.25 0.015 250);
--accent-foreground: oklch(0.18 0.03 250);
--destructive: oklch(0.6 0.22 25);
--border: oklch(0.82 0.015 250);
--input: oklch(0.82 0.015 250);
--ring: oklch(0.65 0.015 250);
--popover: oklch(0.97 0.006 250);
--popover-foreground: oklch(0.18 0.03 250);
--sidebar: oklch(0.9 0.01 250);
--sidebar-foreground: oklch(0.18 0.03 250);
--sidebar-primary: oklch(0.5 0.12 250);
--sidebar-primary-foreground: oklch(0.99 0 0);
--sidebar-accent: oklch(0.25 0.015 250);
--sidebar-accent-foreground: oklch(0.18 0.03 250);
--sidebar-border: oklch(0.85 0.015 250);
--sidebar-ring: oklch(0.65 0.015 250);
}
[data-theme='midnight'].dark {
--background: oklch(0.1 0.01 250); /* Noir profond */
--foreground: oklch(0.96 0.005 250); /* Blanc grisâtre */
--card: oklch(0.15 0.015 250); /* Gris-bleu très foncé */
--card-foreground: oklch(0.96 0.005 250);
--primary: oklch(0.6 0.12 250); /* Gris-bleu vibrant */
--primary-foreground: oklch(0.1 0 0); /* Noir */
--secondary: oklch(0.18 0.015 250);
--secondary-foreground: oklch(0.96 0.005 250);
--muted: oklch(0.2 0.015 250);
--muted-foreground: oklch(0.5 0.02 250);
--accent: oklch(0.26 0.02 250);
--accent-foreground: oklch(0.96 0.005 250);
--destructive: oklch(0.65 0.2 25);
--border: oklch(0.33 0.02 250);
--input: oklch(0.33 0.02 250);
--ring: oklch(0.55 0.02 250);
--popover: oklch(0.15 0.015 250);
--popover-foreground: oklch(0.96 0.005 250);
--sidebar: oklch(0.08 0.01 250);
--sidebar-foreground: oklch(0.96 0.005 250);
--sidebar-primary: oklch(0.6 0.12 250);
--sidebar-primary-foreground: oklch(0.1 0 0);
--sidebar-accent: oklch(0.22 0.02 250);
--sidebar-accent-foreground: oklch(0.96 0.005 250);
--sidebar-border: oklch(0.3 0.02 250);
--sidebar-ring: oklch(0.55 0.02 250);
}
[data-theme='blue'] {
--background: oklch(0.985 0.005 225); /* Blanc légèrement bleuté */
--foreground: oklch(0.18 0.035 225); /* Gris-bleu foncé saturé */
--card: oklch(1 0 0); /* Blanc pur */
--card-foreground: oklch(0.18 0.035 225);
--primary: oklch(0.5 0.15 225); /* Bleu vibrant */
--primary-foreground: oklch(0.99 0 0); /* Blanc */
--secondary: oklch(0.93 0.008 225);
--secondary-foreground: oklch(0.18 0.035 225);
--muted: oklch(0.9 0.01 225);
--muted-foreground: oklch(0.58 0.015 225);
--accent: oklch(0.93 0.01 225);
--accent-foreground: oklch(0.18 0.035 225);
--destructive: oklch(0.6 0.2 25);
--border: oklch(0.83 0.012 225);
--input: oklch(0.83 0.012 225);
--ring: oklch(0.65 0.015 225);
--popover: oklch(1 0 0);
--popover-foreground: oklch(0.18 0.035 225);
--sidebar: oklch(0.965 0.008 225);
--sidebar-foreground: oklch(0.18 0.035 225);
--sidebar-primary: oklch(0.5 0.15 225);
--sidebar-primary-foreground: oklch(0.99 0 0);
--sidebar-accent: oklch(0.93 0.01 225);
--sidebar-accent-foreground: oklch(0.18 0.035 225);
--sidebar-border: oklch(0.87 0.012 225);
--sidebar-ring: oklch(0.65 0.015 225);
}
[data-theme='blue'].dark {
--background: oklch(0.13 0.008 225); /* Noir légèrement bleuté */
--foreground: oklch(0.97 0.006 225); /* Blanc légèrement bleuté */
--card: oklch(0.17 0.01 225); /* Gris-bleu foncé */
--card-foreground: oklch(0.97 0.006 225);
--primary: oklch(0.6 0.15 225); /* Bleu vibrant plus clair */
--primary-foreground: oklch(0.1 0 0); /* Noir */
--secondary: oklch(0.22 0.015 225);
--secondary-foreground: oklch(0.97 0.006 225);
--muted: oklch(0.25 0.02 225);
--muted-foreground: oklch(0.52 0.018 225);
--accent: oklch(0.28 0.025 225);
--accent-foreground: oklch(0.97 0.006 225);
--destructive: oklch(0.65 0.22 25);
--border: oklch(0.35 0.018 225);
--input: oklch(0.35 0.018 225);
--ring: oklch(0.55 0.02 225);
--popover: oklch(0.17 0.01 225);
--popover-foreground: oklch(0.97 0.006 225);
--sidebar: oklch(0.1 0.01 225);
--sidebar-foreground: oklch(0.97 0.006 225);
--sidebar-primary: oklch(0.6 0.15 225);
--sidebar-primary-foreground: oklch(0.1 0 0);
--sidebar-accent: oklch(0.25 0.025 225);
--sidebar-accent-foreground: oklch(0.97 0.006 225);
--sidebar-border: oklch(0.32 0.018 225);
--sidebar-ring: oklch(0.55 0.02 225);
}
[data-theme='sepia'] {
--background: oklch(0.985 0.004 45); /* Blanc légèrement doré */
--foreground: oklch(0.2 0.015 45); /* Gris-brun foncé */
--card: oklch(1 0 0); /* Blanc pur */
--card-foreground: oklch(0.2 0.015 45);
--primary: oklch(0.45 0.08 45); /* Gris-brun chaud */
--primary-foreground: oklch(0.99 0 0); /* Blanc */
--secondary: oklch(0.94 0.008 45);
--secondary-foreground: oklch(0.2 0.015 45);
--muted: oklch(0.91 0.01 45);
--muted-foreground: oklch(0.6 0.012 45);
--accent: oklch(0.93 0.01 45);
--accent-foreground: oklch(0.2 0.015 45);
--destructive: oklch(0.6 0.2 25);
--border: oklch(0.83 0.012 45);
--input: oklch(0.83 0.012 45);
--ring: oklch(0.68 0.01 45);
--popover: oklch(1 0 0);
--popover-foreground: oklch(0.2 0.015 45);
--sidebar: oklch(0.96 0.01 45);
--sidebar-foreground: oklch(0.2 0.015 45);
--sidebar-primary: oklch(0.45 0.08 45);
--sidebar-primary-foreground: oklch(0.99 0 0);
--sidebar-accent: oklch(0.93 0.01 45);
--sidebar-accent-foreground: oklch(0.2 0.015 45);
--sidebar-border: oklch(0.88 0.012 45);
--sidebar-ring: oklch(0.68 0.01 45);
}
[data-theme='sepia'].dark {
--background: oklch(0.15 0.008 45); /* Noir légèrement bruni */
--foreground: oklch(0.97 0.005 45); /* Blanc légèrement bruni */
--card: oklch(0.19 0.01 45); /* Gris-brun foncé */
--card-foreground: oklch(0.97 0.005 45);
--primary: oklch(0.55 0.08 45); /* Gris-brun plus clair */
--primary-foreground: oklch(0.1 0 0); /* Noir */
--secondary: oklch(0.25 0.015 45);
--secondary-foreground: oklch(0.97 0.005 45);
--muted: oklch(0.23 0.02 45);
--muted-foreground: oklch(0.55 0.012 45);
--accent: oklch(0.29 0.018 45);
--accent-foreground: oklch(0.97 0.005 45);
--destructive: oklch(0.65 0.2 25);
--border: oklch(0.33 0.018 45);
--input: oklch(0.33 0.018 45);
--ring: oklch(0.58 0.02 45);
--popover: oklch(0.19 0.01 45);
--popover-foreground: oklch(0.97 0.005 45);
--sidebar: oklch(0.12 0.01 45);
--sidebar-foreground: oklch(0.97 0.005 45);
--sidebar-primary: oklch(0.55 0.08 45);
--sidebar-primary-foreground: oklch(0.1 0 0);
--sidebar-accent: oklch(0.27 0.018 45);
--sidebar-accent-foreground: oklch(0.97 0.005 45);
--sidebar-border: oklch(0.3 0.018 45);
--sidebar-ring: oklch(0.58 0.02 45);
}
/* ──────────────────────────────────────────────
PASTEL THEMES — 6 additional color themes
────────────────────────────────────────────── */
/* Rose — soft pink tones */
[data-theme='rose'] {
--background: oklch(0.97 0.01 350);
--foreground: oklch(0.22 0.02 350);
--card: oklch(0.99 0.005 350);
--card-foreground: oklch(0.22 0.02 350);
--popover: oklch(0.99 0.005 350);
--popover-foreground: oklch(0.22 0.02 350);
--primary: oklch(0.55 0.15 350);
--primary-foreground: oklch(0.99 0 0);
--secondary: oklch(0.93 0.02 350);
--secondary-foreground: oklch(0.22 0.02 350);
--muted: oklch(0.92 0.015 350);
--muted-foreground: oklch(0.55 0.015 350);
--accent: oklch(0.92 0.02 350);
--accent-foreground: oklch(0.22 0.02 350);
--destructive: oklch(0.6 0.18 25);
--border: oklch(0.85 0.02 350);
--input: oklch(0.85 0.02 350);
--ring: oklch(0.55 0.15 350);
--sidebar: oklch(0.95 0.015 350);
--sidebar-foreground: oklch(0.22 0.02 350);
--sidebar-primary: oklch(0.55 0.15 350);
--sidebar-primary-foreground: oklch(0.99 0 0);
--sidebar-accent: oklch(0.92 0.02 350);
--sidebar-accent-foreground: oklch(0.22 0.02 350);
--sidebar-border: oklch(0.88 0.02 350);
--sidebar-ring: oklch(0.6 0.015 350);
}
[data-theme='rose'].dark {
--background: oklch(0.14 0.01 350);
--foreground: oklch(0.95 0.01 350);
--card: oklch(0.18 0.015 350);
--card-foreground: oklch(0.95 0.01 350);
--popover: oklch(0.18 0.015 350);
--popover-foreground: oklch(0.95 0.01 350);
--primary: oklch(0.6 0.12 350);
--primary-foreground: oklch(0.1 0 0);
--secondary: oklch(0.24 0.02 350);
--secondary-foreground: oklch(0.95 0.01 350);
--muted: oklch(0.22 0.015 350);
--muted-foreground: oklch(0.55 0.02 350);
--accent: oklch(0.26 0.025 350);
--accent-foreground: oklch(0.95 0.01 350);
--destructive: oklch(0.65 0.18 25);
--border: oklch(0.33 0.02 350);
--input: oklch(0.33 0.02 350);
--ring: oklch(0.6 0.02 350);
--sidebar: oklch(0.12 0.01 350);
--sidebar-foreground: oklch(0.95 0.01 350);
--sidebar-primary: oklch(0.6 0.12 350);
--sidebar-primary-foreground: oklch(0.1 0 0);
--sidebar-accent: oklch(0.26 0.025 350);
--sidebar-accent-foreground: oklch(0.95 0.01 350);
--sidebar-border: oklch(0.33 0.02 350);
--sidebar-ring: oklch(0.6 0.02 350);
}
/* Green — soft sage/mint tones */
[data-theme='green'] {
--background: oklch(0.97 0.01 155);
--foreground: oklch(0.22 0.03 155);
--card: oklch(0.99 0.005 155);
--card-foreground: oklch(0.22 0.03 155);
--popover: oklch(0.99 0.005 155);
--popover-foreground: oklch(0.22 0.03 155);
--primary: oklch(0.5 0.12 155);
--primary-foreground: oklch(0.99 0 0);
--secondary: oklch(0.93 0.02 155);
--secondary-foreground: oklch(0.22 0.03 155);
--muted: oklch(0.92 0.015 155);
--muted-foreground: oklch(0.55 0.02 155);
--accent: oklch(0.92 0.02 155);
--accent-foreground: oklch(0.22 0.03 155);
--destructive: oklch(0.6 0.18 25);
--border: oklch(0.85 0.02 155);
--input: oklch(0.85 0.02 155);
--ring: oklch(0.5 0.12 155);
--sidebar: oklch(0.95 0.015 155);
--sidebar-foreground: oklch(0.22 0.03 155);
--sidebar-primary: oklch(0.5 0.12 155);
--sidebar-primary-foreground: oklch(0.99 0 0);
--sidebar-accent: oklch(0.92 0.02 155);
--sidebar-accent-foreground: oklch(0.22 0.03 155);
--sidebar-border: oklch(0.88 0.02 155);
--sidebar-ring: oklch(0.6 0.015 155);
}
[data-theme='green'].dark {
--background: oklch(0.14 0.01 155);
--foreground: oklch(0.95 0.01 155);
--card: oklch(0.18 0.015 155);
--card-foreground: oklch(0.95 0.01 155);
--popover: oklch(0.18 0.015 155);
--popover-foreground: oklch(0.95 0.01 155);
--primary: oklch(0.6 0.1 155);
--primary-foreground: oklch(0.1 0 0);
--secondary: oklch(0.24 0.02 155);
--secondary-foreground: oklch(0.95 0.01 155);
--muted: oklch(0.22 0.015 155);
--muted-foreground: oklch(0.55 0.02 155);
--accent: oklch(0.26 0.02 155);
--accent-foreground: oklch(0.95 0.01 155);
--destructive: oklch(0.65 0.18 25);
--border: oklch(0.33 0.02 155);
--input: oklch(0.33 0.02 155);
--ring: oklch(0.6 0.02 155);
--sidebar: oklch(0.12 0.01 155);
--sidebar-foreground: oklch(0.95 0.01 155);
--sidebar-primary: oklch(0.6 0.1 155);
--sidebar-primary-foreground: oklch(0.1 0 0);
--sidebar-accent: oklch(0.26 0.02 155);
--sidebar-accent-foreground: oklch(0.95 0.01 155);
--sidebar-border: oklch(0.33 0.02 155);
--sidebar-ring: oklch(0.6 0.02 155);
}
/* Lavender — soft purple tones */
[data-theme='lavender'] {
--background: oklch(0.97 0.01 290);
--foreground: oklch(0.22 0.02 290);
--card: oklch(0.99 0.005 290);
--card-foreground: oklch(0.22 0.02 290);
--popover: oklch(0.99 0.005 290);
--popover-foreground: oklch(0.22 0.02 290);
--primary: oklch(0.52 0.14 290);
--primary-foreground: oklch(0.99 0 0);
--secondary: oklch(0.93 0.02 290);
--secondary-foreground: oklch(0.22 0.02 290);
--muted: oklch(0.92 0.015 290);
--muted-foreground: oklch(0.55 0.02 290);
--accent: oklch(0.92 0.02 290);
--accent-foreground: oklch(0.22 0.02 290);
--destructive: oklch(0.6 0.18 25);
--border: oklch(0.85 0.02 290);
--input: oklch(0.85 0.02 290);
--ring: oklch(0.52 0.14 290);
--sidebar: oklch(0.95 0.015 290);
--sidebar-foreground: oklch(0.22 0.02 290);
--sidebar-primary: oklch(0.52 0.14 290);
--sidebar-primary-foreground: oklch(0.99 0 0);
--sidebar-accent: oklch(0.92 0.02 290);
--sidebar-accent-foreground: oklch(0.22 0.02 290);
--sidebar-border: oklch(0.88 0.02 290);
--sidebar-ring: oklch(0.6 0.015 290);
}
[data-theme='lavender'].dark {
--background: oklch(0.14 0.01 290);
--foreground: oklch(0.95 0.01 290);
--card: oklch(0.18 0.015 290);
--card-foreground: oklch(0.95 0.01 290);
--popover: oklch(0.18 0.015 290);
--popover-foreground: oklch(0.95 0.01 290);
--primary: oklch(0.6 0.12 290);
--primary-foreground: oklch(0.1 0 0);
--secondary: oklch(0.24 0.02 290);
--secondary-foreground: oklch(0.95 0.01 290);
--muted: oklch(0.22 0.015 290);
--muted-foreground: oklch(0.55 0.02 290);
--accent: oklch(0.26 0.025 290);
--accent-foreground: oklch(0.95 0.01 290);
--destructive: oklch(0.65 0.18 25);
--border: oklch(0.33 0.02 290);
--input: oklch(0.33 0.02 290);
--ring: oklch(0.6 0.02 290);
--sidebar: oklch(0.12 0.01 290);
--sidebar-foreground: oklch(0.95 0.01 290);
--sidebar-primary: oklch(0.6 0.12 290);
--sidebar-primary-foreground: oklch(0.1 0 0);
--sidebar-accent: oklch(0.26 0.025 290);
--sidebar-accent-foreground: oklch(0.95 0.01 290);
--sidebar-border: oklch(0.33 0.02 290);
--sidebar-ring: oklch(0.6 0.02 290);
}
/* Sand — warm beige/cream tones */
[data-theme='sand'] {
--background: oklch(0.97 0.01 70);
--foreground: oklch(0.25 0.02 60);
--card: oklch(0.99 0.005 70);
--card-foreground: oklch(0.25 0.02 60);
--popover: oklch(0.99 0.005 70);
--popover-foreground: oklch(0.25 0.02 60);
--primary: oklch(0.5 0.1 55);
--primary-foreground: oklch(0.99 0 0);
--secondary: oklch(0.93 0.015 70);
--secondary-foreground: oklch(0.25 0.02 60);
--muted: oklch(0.92 0.012 70);
--muted-foreground: oklch(0.55 0.015 60);
--accent: oklch(0.92 0.015 70);
--accent-foreground: oklch(0.25 0.02 60);
--destructive: oklch(0.6 0.18 25);
--border: oklch(0.85 0.015 70);
--input: oklch(0.85 0.015 70);
--ring: oklch(0.5 0.1 55);
--sidebar: oklch(0.95 0.012 70);
--sidebar-foreground: oklch(0.25 0.02 60);
--sidebar-primary: oklch(0.5 0.1 55);
--sidebar-primary-foreground: oklch(0.99 0 0);
--sidebar-accent: oklch(0.92 0.015 70);
--sidebar-accent-foreground: oklch(0.25 0.02 60);
--sidebar-border: oklch(0.88 0.015 70);
--sidebar-ring: oklch(0.6 0.015 60);
}
[data-theme='sand'].dark {
--background: oklch(0.15 0.01 60);
--foreground: oklch(0.95 0.01 60);
--card: oklch(0.19 0.015 60);
--card-foreground: oklch(0.95 0.01 60);
--popover: oklch(0.19 0.015 60);
--popover-foreground: oklch(0.95 0.01 60);
--primary: oklch(0.6 0.1 55);
--primary-foreground: oklch(0.1 0 0);
--secondary: oklch(0.24 0.015 60);
--secondary-foreground: oklch(0.95 0.01 60);
--muted: oklch(0.22 0.012 60);
--muted-foreground: oklch(0.55 0.02 60);
--accent: oklch(0.26 0.02 60);
--accent-foreground: oklch(0.95 0.01 60);
--destructive: oklch(0.65 0.18 25);
--border: oklch(0.33 0.015 60);
--input: oklch(0.33 0.015 60);
--ring: oklch(0.6 0.02 55);
--sidebar: oklch(0.12 0.01 60);
--sidebar-foreground: oklch(0.95 0.01 60);
--sidebar-primary: oklch(0.6 0.1 55);
--sidebar-primary-foreground: oklch(0.1 0 0);
--sidebar-accent: oklch(0.26 0.02 60);
--sidebar-accent-foreground: oklch(0.95 0.01 60);
--sidebar-border: oklch(0.33 0.015 60);
--sidebar-ring: oklch(0.6 0.02 55);
}
/* Ocean — soft teal/cyan tones */
[data-theme='ocean'] {
--background: oklch(0.97 0.01 195);
--foreground: oklch(0.22 0.02 195);
--card: oklch(0.99 0.005 195);
--card-foreground: oklch(0.22 0.02 195);
--popover: oklch(0.99 0.005 195);
--popover-foreground: oklch(0.22 0.02 195);
--primary: oklch(0.5 0.12 195);
--primary-foreground: oklch(0.99 0 0);
--secondary: oklch(0.93 0.015 195);
--secondary-foreground: oklch(0.22 0.02 195);
--muted: oklch(0.92 0.012 195);
--muted-foreground: oklch(0.55 0.02 195);
--accent: oklch(0.92 0.015 195);
--accent-foreground: oklch(0.22 0.02 195);
--destructive: oklch(0.6 0.18 25);
--border: oklch(0.85 0.015 195);
--input: oklch(0.85 0.015 195);
--ring: oklch(0.5 0.12 195);
--sidebar: oklch(0.95 0.012 195);
--sidebar-foreground: oklch(0.22 0.02 195);
--sidebar-primary: oklch(0.5 0.12 195);
--sidebar-primary-foreground: oklch(0.99 0 0);
--sidebar-accent: oklch(0.92 0.015 195);
--sidebar-accent-foreground: oklch(0.22 0.02 195);
--sidebar-border: oklch(0.88 0.015 195);
--sidebar-ring: oklch(0.6 0.015 195);
}
[data-theme='ocean'].dark {
--background: oklch(0.14 0.01 195);
--foreground: oklch(0.95 0.01 195);
--card: oklch(0.18 0.015 195);
--card-foreground: oklch(0.95 0.01 195);
--popover: oklch(0.18 0.015 195);
--popover-foreground: oklch(0.95 0.01 195);
--primary: oklch(0.6 0.1 195);
--primary-foreground: oklch(0.1 0 0);
--secondary: oklch(0.24 0.02 195);
--secondary-foreground: oklch(0.95 0.01 195);
--muted: oklch(0.22 0.015 195);
--muted-foreground: oklch(0.55 0.02 195);
--accent: oklch(0.26 0.02 195);
--accent-foreground: oklch(0.95 0.01 195);
--destructive: oklch(0.65 0.18 25);
--border: oklch(0.33 0.02 195);
--input: oklch(0.33 0.02 195);
--ring: oklch(0.6 0.02 195);
--sidebar: oklch(0.12 0.01 195);
--sidebar-foreground: oklch(0.95 0.01 195);
--sidebar-primary: oklch(0.6 0.1 195);
--sidebar-primary-foreground: oklch(0.1 0 0);
--sidebar-accent: oklch(0.26 0.02 195);
--sidebar-accent-foreground: oklch(0.95 0.01 195);
--sidebar-border: oklch(0.33 0.02 195);
--sidebar-ring: oklch(0.6 0.02 195);
}
/* Sunset — warm coral/peach tones */
[data-theme='sunset'] {
--background: oklch(0.97 0.012 40);
--foreground: oklch(0.22 0.03 35);
--card: oklch(0.99 0.005 40);
--card-foreground: oklch(0.22 0.03 35);
--popover: oklch(0.99 0.005 40);
--popover-foreground: oklch(0.22 0.03 35);
--primary: oklch(0.55 0.15 30);
--primary-foreground: oklch(0.99 0 0);
--secondary: oklch(0.93 0.02 40);
--secondary-foreground: oklch(0.22 0.03 35);
--muted: oklch(0.92 0.015 40);
--muted-foreground: oklch(0.55 0.02 35);
--accent: oklch(0.92 0.02 40);
--accent-foreground: oklch(0.22 0.03 35);
--destructive: oklch(0.6 0.18 25);
--border: oklch(0.85 0.02 40);
--input: oklch(0.85 0.02 40);
--ring: oklch(0.55 0.15 30);
--sidebar: oklch(0.95 0.015 40);
--sidebar-foreground: oklch(0.22 0.03 35);
--sidebar-primary: oklch(0.55 0.15 30);
--sidebar-primary-foreground: oklch(0.99 0 0);
--sidebar-accent: oklch(0.92 0.02 40);
--sidebar-accent-foreground: oklch(0.22 0.03 35);
--sidebar-border: oklch(0.88 0.02 40);
--sidebar-ring: oklch(0.6 0.02 35);
}
[data-theme='sunset'].dark {
--background: oklch(0.15 0.012 35);
--foreground: oklch(0.95 0.01 35);
--card: oklch(0.19 0.015 35);
--card-foreground: oklch(0.95 0.01 35);
--popover: oklch(0.19 0.015 35);
--popover-foreground: oklch(0.95 0.01 35);
--primary: oklch(0.6 0.12 30);
--primary-foreground: oklch(0.1 0 0);
--secondary: oklch(0.24 0.02 35);
--secondary-foreground: oklch(0.95 0.01 35);
--muted: oklch(0.22 0.015 35);
--muted-foreground: oklch(0.55 0.02 35);
--accent: oklch(0.26 0.025 35);
--accent-foreground: oklch(0.95 0.01 35);
--destructive: oklch(0.65 0.18 25);
--border: oklch(0.33 0.02 35);
--input: oklch(0.33 0.02 35);
--ring: oklch(0.6 0.02 30);
--sidebar: oklch(0.12 0.01 35);
--sidebar-foreground: oklch(0.95 0.01 35);
--sidebar-primary: oklch(0.6 0.12 30);
--sidebar-primary-foreground: oklch(0.1 0 0);
--sidebar-accent: oklch(0.26 0.025 35);
--sidebar-accent-foreground: oklch(0.95 0.01 35);
--sidebar-border: oklch(0.33 0.02 35);
--sidebar-ring: oklch(0.6 0.02 30);
}
/* System font mode — override Inter with native OS fonts.
Must be outside @layer base to win over next/font's generated class. */
html.font-system {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif !important;
}
html.font-system body,
html.font-system * {
font-family: inherit !important;
}
@layer base {
* {
@apply border-border outline-ring/50;
}
/* Set base font size on html element - this affects all rem units */
html {
font-size: var(--user-font-size, 16px);
}
body {
@apply bg-background text-foreground;
/* Body inherits from html, can be adjusted per language */
}
/* Latin languages use default (inherits from html) */
[lang='en'] body,
[lang='fr'] body {
font-size: 1rem;
/* Uses html font size */
}
/* Persian/Farsi font with larger size for better readability */
[lang='fa'] body {
font-family: 'Vazirmatn', var(--font-sans), sans-serif !important;
/* Base 110% for Persian = 1.1rem */
font-size: calc(1.1rem * var(--user-font-size-factor, 1));
}
/* Ensure Persian text uses Vazirmatn even in nested elements */
[lang='fa'] * {
font-family: 'Vazirmatn', sans-serif !important;
}
}
/* ============================================
Toast Notifications - Fix UI Blocking Issue
============================================ */
/* Ensure the toaster container doesn't block clicks on the page underneath */
[data-sonner-toaster] {
pointer-events: none !important;
}
/* Ensure all children of toaster don't block except the toast itself */
[data-sonner-toaster]>* {
pointer-events: none !important;
}
/* But allow interaction with the toast itself (buttons, close, etc) */
[data-sonner-toast] {
pointer-events: auto !important;
}
/* Also ensure any overlay or background doesn't block */
[data-sonner-toaster]::before,
[data-sonner-toaster]::after {
pointer-events: none !important;
}
/* ============================================
Muuri Grid Styles for Drag & Drop
============================================ */
.muuri-grid {
position: relative;
}
/* Note: Width is controlled by Tailwind classes (w-1/2, w-1/3, w-full, etc.) */
.muuri-item {
position: absolute;
/* width: 100%; REMOVED - Don't override Tailwind size classes */
}
.muuri-item.muuri-item-dragging {
z-index: 3;
}
.muuri-item.muuri-item-releasing {
z-index: 2;
}
.muuri-item.muuri-item-hidden {
z-index: 0;
}
/* Ensure note cards work properly with Muuri */
.muuri-item>* {
width: 100%;
}
/* Force URLs/links to render LTR even in RTL mode */
[dir="rtl"] .prose a {
direction: ltr;
unicode-bidi: embed;
display: inline-block;
}
/* ============================================
Notion-like Rich Text Editor (TipTap)
============================================ */
/* --- Editor Wrapper --- */
.notion-editor-wrapper {
position: relative;
}
/* --- ProseMirror Base --- */
.notion-editor-wrapper .ProseMirror {
outline: none;
min-height: 120px;
padding: 4px 0;
font-size: 0.9375rem;
line-height: 1.7;
caret-color: var(--primary);
}
.notion-editor-wrapper .ProseMirror > *:first-child { margin-top: 0; }
/* Placeholder */
.notion-editor-wrapper .ProseMirror p.is-editor-empty:first-child::before,
.notion-editor-wrapper .ProseMirror p.is-empty::before {
content: attr(data-placeholder);
float: left;
color: var(--muted-foreground);
pointer-events: none;
height: 0;
opacity: 0.4;
font-style: italic;
}
/* --- Paragraphs --- */
.notion-editor-wrapper .ProseMirror p { margin: 0.2em 0; }
/* --- Headings (Notion style — clean, sans-serif) --- */
.notion-editor-wrapper .ProseMirror h1 {
font-size: 1.75rem;
font-weight: 700;
margin: 1.2em 0 0.2em;
line-height: 1.25;
letter-spacing: -0.02em;
}
.notion-editor-wrapper .ProseMirror h2 {
font-size: 1.375rem;
font-weight: 600;
margin: 1em 0 0.15em;
line-height: 1.3;
letter-spacing: -0.01em;
}
.notion-editor-wrapper .ProseMirror h3 {
font-size: 1.125rem;
font-weight: 600;
margin: 0.8em 0 0.1em;
line-height: 1.35;
}
/* --- Lists --- */
.notion-editor-wrapper .ProseMirror ul {
list-style-type: disc;
padding-left: 1.5rem;
margin: 0.25em 0;
}
.notion-editor-wrapper .ProseMirror ol {
list-style-type: decimal;
padding-left: 1.5rem;
margin: 0.25em 0;
}
.notion-editor-wrapper .ProseMirror li > p { margin: 0.1em 0; }
.notion-editor-wrapper .ProseMirror li > ul,
.notion-editor-wrapper .ProseMirror li > ol { margin: 0.1em 0; }
/* --- Task / Todo List --- */
.notion-editor-wrapper .ProseMirror ul[data-type="taskList"] {
list-style: none;
padding-left: 0;
}
.notion-editor-wrapper .ProseMirror ul[data-type="taskList"] li {
display: flex;
align-items: flex-start;
gap: 0.4rem;
margin: 0.2em 0;
}
.notion-editor-wrapper .ProseMirror ul[data-type="taskList"] li > label {
display: flex;
align-items: center;
cursor: pointer;
margin-top: 2px;
}
.notion-editor-wrapper .ProseMirror ul[data-type="taskList"] li > label input[type="checkbox"] {
-webkit-appearance: none; appearance: none;
width: 16px; height: 16px;
border: 2px solid var(--border);
border-radius: 4px;
cursor: pointer;
display: grid; place-content: center;
transition: all 0.15s ease;
background: transparent;
flex-shrink: 0;
}
.notion-editor-wrapper .ProseMirror ul[data-type="taskList"] li > label input[type="checkbox"]:checked {
background: var(--primary);
border-color: var(--primary);
}
.notion-editor-wrapper .ProseMirror ul[data-type="taskList"] li > label input[type="checkbox"]::before {
content: ""; width: 10px; height: 10px;
transform: scale(0);
transition: 120ms transform ease-in-out;
box-shadow: inset 1em 1em white;
clip-path: polygon(14% 44%, 0 65%, 50% 100%, 100% 16%, 80% 0%, 43% 62%);
}
.notion-editor-wrapper .ProseMirror ul[data-type="taskList"] li > label input[type="checkbox"]:checked::before { transform: scale(1); }
.notion-editor-wrapper .ProseMirror ul[data-type="taskList"] li[data-checked="true"] > div > p {
color: var(--muted-foreground);
text-decoration: line-through;
}
/* --- Blockquote --- */
.notion-editor-wrapper .ProseMirror blockquote {
border-left: 3px solid var(--primary);
padding: 0.25em 0 0.25em 1em;
margin: 0.4em 0;
color: var(--muted-foreground);
font-style: italic;
background: oklch(0.5 0 0 / 0.03);
border-radius: 0 4px 4px 0;
}
/* --- Code --- */
.notion-editor-wrapper .ProseMirror code {
background: var(--muted);
padding: 0.15em 0.4em;
border-radius: 4px;
font-size: 0.85em;
font-family: var(--font-mono, ui-monospace, monospace);
color: var(--foreground);
}
.notion-editor-wrapper .ProseMirror pre {
background: var(--muted);
border-radius: 8px;
padding: 0.85rem 1rem;
margin: 0.5em 0;
overflow-x: auto;
border: 1px solid var(--border);
}
.notion-editor-wrapper .ProseMirror pre code {
background: none;
padding: 0;
border-radius: 0;
font-size: 0.8125rem;
line-height: 1.6;
}
/* --- Horizontal Rule --- */
.notion-editor-wrapper .ProseMirror hr {
border: none;
border-top: 1px solid var(--border);
margin: 0.75em 0;
}
/* --- Strong / Marks --- */
.notion-editor-wrapper .ProseMirror strong { font-weight: 600; }
/* --- Images --- */
.notion-editor-wrapper .ProseMirror img {
border-radius: 8px;
max-width: 100%;
height: auto;
display: block;
margin: 0.5em 0;
transition: filter 0.15s ease;
}
.notion-editor-wrapper .ProseMirror img:hover { filter: brightness(95%); }
.notion-editor-wrapper .ProseMirror img.ProseMirror-selectednode {
outline: 2px solid var(--primary);
outline-offset: 2px;
}
/* --- Links --- */
.notion-editor-wrapper .ProseMirror a {
color: var(--primary);
text-decoration: underline;
text-underline-offset: 2px;
cursor: pointer;
}
.notion-editor-wrapper .ProseMirror a:hover {
opacity: 0.8;
}
/* --- Highlight --- */
.notion-editor-wrapper .ProseMirror mark {
background: oklch(0.85 0.12 90);
border-radius: 2px;
padding: 0 1px;
}
.dark .notion-editor-wrapper .ProseMirror mark {
background: oklch(0.4 0.1 90);
}
/* ============================================
Bubble Menu (floating toolbar on selection)
============================================ */
.notion-bubble-menu {
background: var(--popover);
border: 1px solid var(--border);
border-radius: 10px;
box-shadow: 0 4px 16px rgba(0,0,0,0.12), 0 0 0 1px rgba(0,0,0,0.04);
padding: 2px;
display: flex;
align-items: center;
gap: 0;
z-index: 100;
}
.dark .notion-bubble-menu {
box-shadow: 0 4px 16px rgba(0,0,0,0.4), 0 0 0 1px rgba(255,255,255,0.06);
}
.notion-bubble-btn {
display: inline-flex;
align-items: center;
justify-content: center;
width: 30px;
height: 30px;
border-radius: 6px;
border: none;
background: transparent;
color: var(--foreground);
cursor: pointer;
transition: all 0.12s ease;
}
.notion-bubble-btn:hover {
background: var(--accent);
}
.notion-bubble-btn-active {
background: var(--accent);
color: var(--primary);
}
/* AI submenu inside bubble */
.notion-ai-submenu {
position: absolute;
top: 100%;
right: 0;
margin-top: 4px;
background: var(--popover);
border: 1px solid var(--border);
border-radius: 8px;
box-shadow: 0 8px 24px rgba(0,0,0,0.12);
padding: 4px;
min-width: 150px;
z-index: 110;
}
.dark .notion-ai-submenu {
box-shadow: 0 8px 24px rgba(0,0,0,0.5);
}
.notion-ai-subitem {
display: flex;
align-items: center;
gap: 8px;
width: 100%;
padding: 7px 10px;
border: none;
background: transparent;
border-radius: 6px;
cursor: pointer;
font-size: 0.8125rem;
color: var(--foreground);
transition: background 0.1s ease;
}
.notion-ai-subitem:hover {
background: var(--accent);
}
/* Inline input inside bubble menu (link editor) */
.notion-inline-input {
background: transparent;
border: none;
outline: none;
font-size: 0.8125rem;
color: var(--foreground);
width: 200px;
min-width: 120px;
}
.notion-inline-input::placeholder {
color: var(--muted-foreground);
opacity: 0.6;
}
/* Image insert overlay */
.notion-overlay {
position: fixed;
inset: 0;
z-index: 9999;
display: flex;
align-items: center;
justify-content: center;
background: rgba(0,0,0,0.3);
}
.dark .notion-overlay {
background: rgba(0,0,0,0.6);
}
.notion-image-modal {
background: var(--popover);
border: 1px solid var(--border);
border-radius: 12px;
box-shadow: 0 16px 48px rgba(0,0,0,0.15);
padding: 20px;
width: 400px;
max-width: 90vw;
}
.dark .notion-image-modal {
box-shadow: 0 16px 48px rgba(0,0,0,0.5);
}
.notion-modal-input {
width: 100%;
padding: 8px 12px;
border: 1px solid var(--border);
border-radius: 8px;
background: var(--background);
color: var(--foreground);
font-size: 0.8125rem;
outline: none;
transition: border-color 0.15s ease;
}
.notion-modal-input:focus {
border-color: var(--primary);
}
.notion-modal-input::placeholder {
color: var(--muted-foreground);
opacity: 0.5;
}
.notion-modal-btn {
padding: 6px 14px;
border-radius: 6px;
font-size: 0.8125rem;
border: 1px solid var(--border);
background: transparent;
color: var(--foreground);
cursor: pointer;
transition: background 0.1s ease;
}
.notion-modal-btn:hover {
background: var(--accent);
}
.notion-modal-btn-primary {
background: var(--primary);
color: var(--primary-foreground);
border-color: var(--primary);
}
.notion-modal-btn-primary:hover {
opacity: 0.9;
background: var(--primary);
}
/* ============================================
Slash Command Menu
============================================ */
.notion-slash-menu {
position: fixed;
z-index: 9999;
background: var(--popover);
border: 1px solid var(--border);
border-radius: 8px;
box-shadow: 0 4px 24px rgba(0,0,0,0.1);
padding: 4px;
min-width: 300px;
max-height: 340px;
overflow-y: auto;
scrollbar-width: thin;
}
.dark .notion-slash-menu {
box-shadow: 0 4px 24px rgba(0,0,0,0.5);
}
.notion-slash-section + .notion-slash-section {
border-top: 1px solid var(--border);
margin-top: 4px;
padding-top: 4px;
}
.notion-slash-label {
padding: 6px 8px 2px;
font-size: 11px;
font-weight: 600;
color: var(--muted-foreground);
user-select: none;
}
.notion-slash-item {
display: flex;
align-items: center;
gap: 8px;
width: 100%;
padding: 4px 8px;
border: none;
background: transparent;
border-radius: 4px;
cursor: pointer;
text-align: left;
color: var(--foreground);
transition: background 0.1s ease;
}
.notion-slash-item:hover,
.notion-slash-item-selected {
background: var(--accent);
}
.notion-slash-icon {
display: flex;
align-items: center;
justify-content: center;
width: 20px;
height: 20px;
border: 1px solid var(--border);
border-radius: 4px;
background: var(--background);
color: var(--muted-foreground);
flex-shrink: 0;
}
.notion-slash-icon-ai {
background: oklch(0.95 0.05 270);
border-color: oklch(0.8 0.08 270);
color: oklch(0.55 0.15 270);
}
.dark .notion-slash-icon-ai {
background: oklch(0.25 0.05 270);
border-color: oklch(0.4 0.08 270);
color: oklch(0.75 0.15 270);
}
.notion-slash-loading {
display: flex;
align-items: center;
gap: 6px;
padding: 8px 10px;
font-size: 13px;
color: var(--muted-foreground);
}
.notion-slash-title {
font-size: 13px;
font-weight: 500;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
flex: 0 1 auto;
}
.notion-slash-desc {
font-size: 11px;
color: var(--muted-foreground);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
flex: 1 1 auto;
text-align: right;
}
/* ============================================
Note Card Rich Text Preview
============================================ */
.rt-preview { font-size: 0.875rem; line-height: 1.6; }
.rt-preview h1 { font-size: 1.3rem; font-weight: 700; margin: 0.3em 0; }
.rt-preview h2 { font-size: 1.1rem; font-weight: 600; margin: 0.3em 0; }
.rt-preview h3 { font-size: 1rem; font-weight: 600; margin: 0.3em 0; }
.rt-preview p { margin: 0.2em 0; }
.rt-preview ul, .rt-preview ol { padding-left: 1.25rem; margin: 0.2em 0; }
.rt-preview blockquote { border-left: 3px solid var(--border); padding-left: 0.75rem; color: var(--muted-foreground); margin: 0.3em 0; }