@import "@fontsource-variable/inter"; @import "@fontsource-variable/jetbrains-mono"; @import "tailwindcss"; @plugin "daisyui"; @plugin "@tailwindcss/typography"; @plugin "daisyui/theme" { name: "vesper"; default: true; prefersdark: true; color-scheme: dark; --color-base-100: #2D323B; --color-base-200: #282C33; --color-base-300: #1E2128; --color-base-content: #E4E6EB; --color-primary: #6B8AFF; --color-primary-content: #1E2128; --color-secondary: #9F7AEA; --color-secondary-content: #1E2128; --color-accent: #38BDF8; --color-accent-content: #1E2128; --color-neutral: #3D4350; --color-neutral-content: #E4E6EB; --color-info: #6B8AFF; --color-info-content: #1E2128; --color-success: #4ADE80; --color-success-content: #1E2128; --color-warning: #FBBF24; --color-warning-content: #1E2128; --color-error: #F87171; --color-error-content: #1E2128; } /* Custom properties */ :root { /* Surface System - centered on #282C33 */ --color-bg-base: #282C33; --color-bg-surface: #252A31; --color-bg-elevated: #2D333C; --color-bg-overlay: #333942; --color-bg-hover: #363D48; --color-bg-active: #404754; /* Text hierarchy */ --color-text-primary: #E4E6EB; --color-text-secondary: #BCC1C8; /* was #ABB0B8, now ~7.5:1 */ --color-text-tertiary: #8B919A; /* was #6B7280, now ~4.8:1 */ --color-text-disabled: #6B7280; /* was #4A5260, now ~2.9:1 (exempt - inactive UI) */ /* Accent */ --color-accent: #6B8AFF; --color-accent-hover: #8BA3FF; --color-accent-small: #8BA3FF; /* for small text (11px) accent uses */ --color-accent-muted: rgba(107, 138, 255, 0.12); --color-accent-subtle: rgba(107, 138, 255, 0.06); /* Markdown typography */ --color-md-h1: #F5F6F7; --color-md-h2: #EDEEF0; --color-md-h3: #E4E5E8; --color-md-h4: #D8DADE; --color-md-h5: #CBCED3; --color-md-h6: #BCC1C8; --color-md-heading: #F0F1F3; --color-md-paragraph: #C8CCD0; --color-md-link: #93B8F9; --color-md-link-underline: rgba(147, 184, 249, 0.3); --color-md-link-hover: #A8C6FA; --color-md-link-hover-underline: rgba(168, 198, 250, 0.7); --color-md-marker: #93B8F9; --color-md-blockquote-border: #93B8F9; --color-md-blockquote-bg: rgba(147, 184, 249, 0.04); --color-md-blockquote-text: #BFC3C8; --color-md-code-inline: #E8B89E; --color-md-code-inline-bg: rgba(255, 255, 255, 0.06); --color-md-code-block-bg: #1A1D24; --color-md-code-block-border: rgba(255, 255, 255, 0.06); --color-md-code-text: #E4E6EB; --color-md-table-header-bg: rgba(124, 169, 247, 0.08); --color-md-table-border: rgba(255, 255, 255, 0.06); --color-md-table-cell: #C8CCD0; --color-md-table-stripe: rgba(30, 33, 40, 0.4); --color-md-table-hover: rgba(124, 169, 247, 0.05); --color-md-hr: rgba(255, 255, 255, 0.1); --color-md-mark-bg: rgba(251, 191, 36, 0.2); --color-md-mark-text: #FBBF24; --color-md-comment: #7C8390; --color-md-highlight-bg: rgba(251, 191, 36, 0.3); --color-md-highlight-active-bg: rgba(251, 191, 36, 0.6); --color-md-highlight-active-outline: rgba(251, 191, 36, 0.7); --color-md-welcome-btn: #4A6AE5; /* Borders */ --color-border-subtle: rgba(255, 255, 255, 0.04); --color-border: rgba(255, 255, 255, 0.08); --color-border-strong: rgba(255, 255, 255, 0.12); /* Typography */ font-family: 'Inter Variable', 'Inter', -apple-system, 'SF Pro Display', 'Segoe UI', system-ui, sans-serif; font-size: 14px; line-height: 1.55; color: var(--color-text-primary); background-color: var(--color-bg-base); font-synthesis: none; text-rendering: optimizeLegibility; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; /* Spacing */ --space-xs: 3px; --space-sm: 6px; --space-md: 12px; --space-lg: 20px; --space-xl: 32px; --space-2xl: 48px; /* Radii */ --radius-sm: 4px; --radius-md: 6px; --radius-lg: 10px; /* Shadows */ --shadow-elevated: 0 4px 16px rgba(0, 0, 0, 0.4); --shadow-dropdown: 0 8px 32px rgba(0, 0, 0, 0.5); --shadow-modal: 0 20px 60px rgba(0, 0, 0, 0.6); /* Transitions */ --transition-fast: 100ms ease; --transition-normal: 150ms ease; --transition-smooth: 250ms cubic-bezier(0.4, 0, 0.2, 1); } * { margin: 0; padding: 0; box-sizing: border-box; } html, body, #root { height: 100%; width: 100%; overflow: visible; } /* Skip link - WCAG 2.4.1 */ .skip-link { position: fixed; top: -100%; left: 16px; z-index: 99999; padding: 8px 16px; background-color: var(--color-accent); color: white; font-size: 13px; font-weight: 600; border-radius: var(--radius-md); text-decoration: none; transition: top 0.2s ease; } .skip-link:focus { top: 8px; } /* App container */ .app-container { display: flex; flex-direction: column; height: 100%; width: 100%; background-color: var(--color-bg-base); position: relative; overflow: visible; } /* Subtle noise overlay */ .app-container::before { content: ''; position: fixed; top: 0; left: 0; right: 0; bottom: 0; background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)'/%3E%3C/svg%3E"); opacity: 0.018; pointer-events: none; z-index: 9998; mix-blend-mode: overlay; } /* Title bar */ .title-bar { display: flex; align-items: center; justify-content: space-between; height: 32px; background-color: var(--color-bg-surface); padding: 0; user-select: none; border-bottom: 1px solid var(--color-border-subtle); } .title-bar-left { display: flex; align-items: center; gap: 8px; padding-left: 12px; } .title-bar-drag { flex: 1; height: 100%; display: flex; align-items: center; justify-content: center; -webkit-app-region: drag; cursor: default; } .title-bar-title { font-size: 12px; font-weight: 500; color: var(--color-text-tertiary); letter-spacing: 0.02em; text-align: center; position: absolute; left: 50%; transform: translateX(-50%); } .title-bar-text { font-size: 12px; font-weight: 500; color: var(--color-text-tertiary); letter-spacing: 0.02em; text-align: center; position: absolute; left: 50%; transform: translateX(-50%); pointer-events: none; } .title-bar-icon { display: flex; align-items: center; justify-content: center; color: var(--color-accent); z-index: 1; } .title-bar-controls { display: flex; -webkit-app-region: no-drag; pointer-events: auto; } .title-bar-button { width: 46px; height: 32px; display: flex; align-items: center; justify-content: center; background: transparent; border: none; color: var(--color-text-tertiary); cursor: pointer; transition: all var(--transition-fast); } .title-bar-button:hover { background-color: var(--color-bg-hover); color: var(--color-text-primary); } .title-bar-button.close:hover { background-color: #DC2626; color: white; } /* Menu bar */ .menu-bar { display: flex; align-items: center; height: 28px; background-color: var(--color-bg-surface); border-bottom: 1px solid var(--color-border-subtle); padding: 0 12px; gap: 2px; overflow: hidden; } .menu-item { position: relative; padding: 4px 10px; background: transparent; border: none; color: var(--color-text-secondary); font-size: 12px; font-weight: 500; cursor: pointer; border-radius: var(--radius-sm); transition: all var(--transition-fast); } .menu-item:hover { background-color: var(--color-bg-hover); color: var(--color-text-primary); } /* Menu backdrop - invisible overlay to catch outside clicks */ .menu-backdrop { position: fixed; top: 0; left: 0; right: 0; bottom: 0; z-index: 99; } /* Menu dropdown */ .menu-dropdown { position: absolute; top: calc(100% + 6px); left: 0; min-width: 200px; background-color: var(--color-bg-overlay); border: 1px solid var(--color-border); border-radius: var(--radius-lg); padding: 4px; box-shadow: var(--shadow-dropdown); z-index: 100; } .menu-dropdown-item { display: flex; align-items: center; justify-content: flex-start; width: 100%; padding: 8px 12px; background: transparent; border: none; border-radius: var(--radius-md); color: var(--color-text-secondary); font-size: 12px; font-weight: 450; cursor: pointer; text-align: left; transition: all var(--transition-fast); gap: 12px; } .menu-dropdown-item:hover { background-color: var(--color-bg-hover); color: var(--color-text-primary); } .menu-shortcut { color: var(--color-text-disabled); font-size: 11px; font-weight: 500; margin-left: auto; font-family: 'SF Mono', 'Menlo', monospace; } .menu-separator { height: 1px; background-color: var(--color-border-subtle); margin: 4px 6px; } .menu-check { width: 14px; height: 14px; display: flex; align-items: center; justify-content: center; color: var(--color-accent); font-size: 10px; font-weight: 700; } /* Zoom spinner in View menu */ .menu-dropdown-zoom { display: flex; align-items: center; justify-content: space-between; padding: 6px 12px; color: var(--color-text-secondary); font-size: 12px; cursor: default; } .zoom-spinner { display: flex; align-items: center; gap: 2px; } .zoom-spinner-btn { display: flex; align-items: center; justify-content: center; width: 24px; height: 24px; background: transparent; border: 1px solid var(--color-border-subtle); border-radius: var(--radius-sm); color: var(--color-text-secondary); cursor: pointer; transition: all 0.15s ease; } .zoom-spinner-btn:hover { background-color: var(--color-bg-hover); color: var(--color-text-primary); border-color: var(--color-text-disabled); } .zoom-spinner-value { min-width: 38px; text-align: center; font-size: 11px; font-weight: 500; font-family: 'SF Mono', 'Menlo', monospace; color: var(--color-text-primary); } /* Tab bar */ .tab-bar { display: flex; align-items: center; height: 38px; background-color: var(--color-bg-base); border-bottom: 1px solid var(--color-border-subtle); overflow: hidden; } .tab-scroll-arrow { display: flex; align-items: center; justify-content: center; width: 24px; height: 100%; background: transparent; border: none; color: var(--color-text-tertiary); cursor: pointer; flex-shrink: 0; transition: all var(--transition-fast); opacity: 0; pointer-events: none; visibility: hidden; } .tab-scroll-arrow.visible { opacity: 0.6; pointer-events: auto; visibility: visible; } .tab-scroll-arrow.visible:hover, .tab-scroll-arrow.visible:focus-visible { opacity: 1; color: var(--color-text-primary); background-color: var(--color-bg-hover); } .tab-scroll-container { display: flex; align-items: center; height: 100%; overflow-x: auto; overflow-y: hidden; gap: 2px; padding: 0 4px; flex: 1; min-width: 0; scrollbar-width: none; } .tab-scroll-container::-webkit-scrollbar { display: none; } .tab { display: flex; align-items: center; gap: 6px; height: 30px; padding: 0 12px; background: transparent; border: none; border-bottom: 2px solid transparent; border-radius: var(--radius-md); color: var(--color-text-secondary); cursor: pointer; white-space: nowrap; flex-shrink: 0; overflow: hidden; transition: all var(--transition-fast); } .tab:hover { background-color: var(--color-bg-hover); color: var(--color-text-primary); } .tab.active { background-color: var(--color-bg-elevated); color: var(--color-text-primary); border-bottom: 2px solid var(--color-accent); } .tab-title { overflow: hidden; text-overflow: ellipsis; font-size: 12px; font-weight: 500; } .tab-close { width: 24px; height: 24px; display: flex; align-items: center; justify-content: center; background: transparent; border: none; border-radius: var(--radius-sm); color: var(--color-text-tertiary); cursor: pointer; opacity: 0.5; flex-shrink: 0; transition: all var(--transition-fast); } .tab:hover .tab-close, .tab-close:focus-visible { opacity: 1; } .tab-close:hover { background-color: rgba(239, 68, 68, 0.15); color: #F87171; } /* Main content */ .main-content { display: flex; flex: 1; overflow: hidden; height: 100%; align-items: stretch; } .main-content:has(.sidebar-scroll-wrapper) { gap: 0; } .content-column { display: flex; flex-direction: column; flex: 1; min-width: 0; overflow: hidden; height: 100%; margin: 0; padding: 0; } /* Sidebar wrapper */ .sidebar-scroll-wrapper { position: relative; overflow: hidden; height: 100%; background-color: var(--color-bg-surface); border-right: 1px solid var(--color-border-subtle); display: flex; flex-direction: column; } /* Sidebar */ .sidebar { flex: 1; min-height: 0; width: 100%; padding-bottom: 20px; } .sidebar-resize-handle { position: absolute; right: 0; top: 0; bottom: 0; width: 8px; background: rgba(255, 255, 255, 0.06); cursor: col-resize; transition: background-color var(--transition-fast); } .sidebar-resize-handle:hover, .sidebar-resize-handle:focus-visible { background-color: var(--color-accent); } .sidebar-heading { padding: 16px 18px 12px; font-size: 11px; font-weight: 600; color: var(--color-text-tertiary); text-transform: uppercase; letter-spacing: 0.08em; position: sticky; top: 0; background-color: var(--color-bg-surface); z-index: 1; } .sidebar-empty { padding: 12px 18px; font-size: 12px; color: var(--color-text-disabled); font-style: italic; } .sidebar-item { display: block; width: 100%; padding: 8px 18px; background: transparent; border: none; border-left: 2px solid transparent; color: var(--color-text-secondary); text-align: left; cursor: pointer; transition: all var(--transition-fast); font-size: 12px; font-weight: 450; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .sidebar-item:hover { background-color: var(--color-bg-hover); color: var(--color-text-primary); } .sidebar-item.active { border-left-color: var(--color-accent); background-color: var(--color-accent-muted); color: var(--color-text-primary); } .sidebar-item.h1 { padding-left: 18px; font-weight: 600; } .sidebar-item.h2 { padding-left: 18px; } .sidebar-item.h3 { padding-left: 28px; font-size: 11px; } .sidebar-item.h4 { padding-left: 38px; font-size: 11px; } .sidebar-item.h5 { padding-left: 48px; font-size: 11px; } .sidebar-item.h6 { padding-left: 58px; font-size: 11px; } /* Content area */ .content-area-scroll-wrapper { flex: 1; overflow: hidden; height: 100%; position: relative; background-color: var(--color-bg-base); } .content-area-scroll { min-height: 100%; padding: 48px 64px; box-sizing: border-box; } /* Search bar */ .search-bar { display: flex; align-items: center; padding: 0 16px; height: 44px; background-color: var(--color-bg-elevated); border-bottom: 1px solid var(--color-border-subtle); gap: 12px; flex-shrink: 0; } .search-input { flex: 1; height: 30px; padding: 0 12px; background-color: var(--color-bg-surface); border: 1px solid var(--color-border); border-radius: var(--radius-md); color: var(--color-text-primary); font-size: 13px; font-weight: 450; outline: none; transition: all var(--transition-fast); font-family: inherit; } .search-input::placeholder { color: var(--color-text-tertiary); } .search-input:focus-visible { border-color: var(--color-accent); background-color: var(--color-bg-base); outline: 2px solid var(--color-accent); outline-offset: -2px; } .search-results { display: flex; align-items: center; gap: 8px; color: var(--color-text-tertiary); font-size: 12px; font-weight: 500; white-space: nowrap; padding: 0 10px; height: 24px; background-color: var(--color-bg-surface); border-radius: var(--radius-sm); } .search-nav-btn { display: flex; align-items: center; justify-content: center; width: 24px; height: 24px; background: transparent; border: none; border-radius: var(--radius-sm); color: var(--color-text-secondary); cursor: pointer; transition: all var(--transition-fast); } .search-nav-btn:hover { background-color: var(--color-bg-hover); color: var(--color-text-primary); } /* Drop zone */ .drop-zone { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background-color: rgba(20, 22, 28, 0.88); backdrop-filter: blur(8px); display: flex; align-items: center; justify-content: center; z-index: 1000; } .drop-zone-content { display: flex; flex-direction: column; align-items: center; gap: 14px; padding: 48px 72px; border: 2px dashed rgba(107, 138, 255, 0.5); border-radius: 16px; background-color: rgba(107, 138, 255, 0.06); box-shadow: 0 0 0 1px rgba(107, 138, 255, 0.1), 0 24px 64px rgba(0, 0, 0, 0.4); } .drop-zone-icon-wrapper { display: flex; align-items: center; justify-content: center; width: 72px; height: 72px; border-radius: 50%; background: rgba(107, 138, 255, 0.1); color: var(--color-accent); margin-bottom: 4px; } .drop-zone-text { font-size: 16px; color: var(--color-text-primary); font-weight: 600; letter-spacing: -0.01em; } .drop-zone-hint { font-size: 12px; color: var(--color-text-tertiary); font-weight: 450; } /* Focus mode - animated via framer-motion, extra padding for content */ .focus-mode .content-area-scroll { padding: 64px 96px; } /* Welcome screen */ .welcome-screen { display: flex; flex-direction: column; align-items: center; justify-content: center; height: 100%; color: var(--color-text-secondary); text-align: center; font-family: 'Inter Variable', 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif; } .welcome-icon { font-size: 64px; margin-bottom: 24px; opacity: 0.35; } .welcome-title { font-size: 28px; font-weight: 700; color: var(--color-text-primary); margin-bottom: 10px; letter-spacing: -0.035em; } .welcome-subtitle { font-size: 15px; margin-bottom: 28px; color: var(--color-text-secondary); font-weight: 400; } .welcome-button { padding: 12px 28px; background-color: var(--color-md-welcome-btn); color: white; border: none; border-radius: 8px; font-size: 14px; font-weight: 600; cursor: pointer; transition: all 0.15s ease; margin-bottom: 18px; letter-spacing: -0.01em; } .welcome-button:hover { background-color: var(--color-accent-hover); } .welcome-hint { font-size: 12px; color: var(--color-text-disabled); } /* Context Menu */ .context-menu { position: fixed !important; min-width: 180px; background-color: var(--color-bg-overlay); border: 1px solid var(--color-border); border-radius: var(--radius-lg); padding: 4px; box-shadow: var(--shadow-dropdown); z-index: 10001 !important; } .context-menu-item { display: block; width: 100%; padding: 8px 14px; background: transparent; border: none; border-radius: var(--radius-md); color: var(--color-text-secondary); font-size: 12px; font-weight: 450; cursor: pointer; text-align: left; transition: all var(--transition-fast); } .context-menu-item:hover { background-color: var(--color-bg-hover); color: var(--color-text-primary); } .context-menu-separator { height: 1px; background-color: var(--color-border-subtle); margin: 4px 6px; } /* Modal Overlay */ .modal-overlay { position: fixed !important; top: 0 !important; left: 0 !important; right: 0 !important; bottom: 0 !important; background-color: rgba(0, 0, 0, 0.6); display: flex !important; align-items: center !important; justify-content: center !important; z-index: 10002 !important; } .modal { background-color: var(--color-bg-elevated); border: 1px solid var(--color-border); border-radius: var(--radius-lg); box-shadow: var(--shadow-modal); min-width: 360px; max-width: 480px; width: 90vw; display: block; visibility: visible; opacity: 1; height: auto; max-height: 80vh; overflow-y: auto; position: relative; z-index: 10003 !important; } /* Shortcuts dialog - uses its own class to avoid DaisyUI .modal conflicts */ .shortcuts-dialog { background-color: var(--color-bg-elevated); border: 1px solid var(--color-border); border-radius: var(--radius-lg); box-shadow: var(--shadow-modal); width: 640px; max-width: 92vw; max-height: 80vh; overflow-y: auto; position: relative; z-index: 10003; } .shortcuts-dialog-header { display: flex; align-items: center; justify-content: space-between; padding: 20px 24px; border-bottom: 1px solid var(--color-border-subtle); } .shortcuts-dialog-title { font-size: 16px; font-weight: 600; color: var(--color-text-primary); } .shortcuts-dialog-close { width: 28px; height: 28px; display: flex; align-items: center; justify-content: center; background: transparent; border: none; border-radius: var(--radius-sm); color: var(--color-text-tertiary); cursor: pointer; transition: all var(--transition-fast); } .shortcuts-dialog-close:hover { background-color: var(--color-bg-hover); color: var(--color-text-primary); } .shortcuts-dialog-body { padding: 24px; display: grid; grid-template-columns: 1fr 1fr; gap: 24px 32px; } .shortcuts-dialog-group-title { font-size: 11px; font-weight: 600; color: var(--color-accent-small); text-transform: uppercase; letter-spacing: 0.08em; margin-bottom: 12px; padding-bottom: 8px; border-bottom: 1px solid var(--color-border-subtle); } .shortcuts-dialog-item { display: flex; align-items: center; justify-content: space-between; padding: 7px 0; font-size: 13px; color: var(--color-text-secondary); gap: 16px; } .shortcuts-dialog-item kbd { font-family: 'JetBrains Mono Variable', 'SF Mono', 'Menlo', monospace; font-size: 11px; padding: 4px 10px; background-color: var(--color-bg-surface); border: 1px solid var(--color-border); border-radius: var(--radius-sm); color: var(--color-text-primary); white-space: nowrap; flex-shrink: 0; } .shortcuts-dialog-nav-grid { grid-column: 1 / -1; } .shortcuts-dialog-nav-grid .shortcuts-dialog-items-row { display: grid; grid-template-columns: 1fr 1fr; gap: 0 32px; } .modal-header { display: flex; align-items: center; justify-content: space-between; padding: 16px 20px; border-bottom: 1px solid var(--color-border-subtle); } .modal-title { font-size: 15px; font-weight: 600; color: var(--color-text-primary); } .modal-close { width: 28px; height: 28px; display: flex; align-items: center; justify-content: center; background: transparent; border: none; border-radius: var(--radius-sm); color: var(--color-text-tertiary); font-size: 20px; cursor: pointer; transition: all var(--transition-fast); } .modal-close:hover { background-color: var(--color-bg-hover); color: var(--color-text-primary); } .modal-content { padding: 20px; } .about-modal { text-align: center; } .about-content { display: flex; flex-direction: column; align-items: center; gap: 8px; } .about-icon { font-size: 48px; margin-bottom: 8px; } .about-name { font-size: 18px; font-weight: 600; color: var(--color-text-primary); } .about-version { font-size: 13px; color: var(--color-text-tertiary); } .about-description { font-size: 13px; color: var(--color-text-secondary); margin-top: 8px; } .about-copyright { font-size: 11px; color: var(--color-text-disabled); margin-top: 16px; } /* Shortcuts Modal */ .shortcut-group { margin-bottom: 16px; } .shortcut-group:last-child { margin-bottom: 0; } .shortcut-group-title { font-size: 11px; font-weight: 600; color: var(--color-text-tertiary); text-transform: uppercase; letter-spacing: 0.06em; margin-bottom: 8px; } .shortcut { display: flex; align-items: center; justify-content: space-between; padding: 6px 0; font-size: 13px; color: var(--color-text-secondary); } .shortcut kbd { font-family: 'SF Mono', 'Menlo', monospace; font-size: 11px; padding: 3px 8px; background-color: var(--color-bg-surface); border-radius: var(--radius-sm); color: var(--color-text-primary); } .shortcut-item { display: flex; align-items: center; justify-content: space-between; padding: 6px 0; font-size: 13px; color: var(--color-text-secondary); } .shortcut-key { font-family: 'SF Mono', 'Menlo', monospace; font-size: 11px; padding: 3px 8px; background-color: var(--color-bg-surface); border-radius: var(--radius-sm); color: var(--color-text-primary); } /* Markdown content */ .markdown-content { /* Optimal measure: ~65 characters for best readability */ max-width: 680px; margin: 0 auto; color: var(--color-text-primary); /* Typography settings */ font-size: 17px; line-height: 1.7; font-family: 'Inter Variable', 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif; font-weight: 400; letter-spacing: -0.01em; font-feature-settings: "liga" 1, "kern" 1, "calt" 1; font-variant-ligatures: common-ligatures; font-kerning: normal; text-rendering: optimizeLegibility; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-spacing-trim: trim-both; } /* Heading hierarchy */ .markdown-content h1, .markdown-content h2, .markdown-content h3, .markdown-content h4, .markdown-content h5, .markdown-content h6 { color: var(--color-md-heading); font-family: 'Inter Variable', 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif; font-weight: 600; line-height: 1.2; letter-spacing: -0.025em; margin-top: 2.2em; margin-bottom: 0.55em; font-feature-settings: "liga" 1, "kern" 1; } .markdown-content h1 { font-size: 2.35rem; font-weight: 700; letter-spacing: -0.03em; color: var(--color-md-h1); margin-top: 0; margin-bottom: 0.8em; padding-bottom: 0.55em; border-bottom: 1px solid var(--color-border); } .markdown-content h2 { font-size: 1.7rem; color: var(--color-md-h2); margin-top: 1.85em; padding-bottom: 0.4em; border-bottom: 1px solid var(--color-border-subtle); } .markdown-content h3 { font-size: 1.3rem; color: var(--color-md-h3); } .markdown-content h4 { font-size: 1.15rem; font-weight: 500; color: var(--color-md-h4); } .markdown-content h5 { font-size: 1rem; font-weight: 500; color: var(--color-md-h5); } .markdown-content h6 { font-size: 0.92rem; font-weight: 500; color: var(--color-md-h6); } /* Paragraphs */ .markdown-content p { margin-bottom: 1.65em; color: var(--color-md-paragraph); line-height: 1.7; } /* Links */ .markdown-content a { color: var(--color-md-link); text-decoration: underline; text-decoration-color: var(--color-md-link-underline); text-underline-offset: 3px; text-decoration-thickness: 1px; transition: color 0.2s ease, text-decoration-color 0.2s ease; } .markdown-content a:hover { color: var(--color-md-link-hover); text-decoration-color: var(--color-md-link-hover-underline); text-decoration-thickness: 1.5px; } /* Strong and emphasis */ .markdown-content strong { font-weight: 600; color: var(--color-text-primary); letter-spacing: -0.01em; } .markdown-content em { font-style: italic; font-weight: 400; } /* Lists - fix spacing issues */ .markdown-content ul, .markdown-content ol { margin-bottom: 1.65em; padding-left: 1.5em; } .markdown-content ul { list-style-type: disc; } .markdown-content ol { list-style-type: decimal; } .markdown-content li { margin-bottom: 0.45em; color: var(--color-md-paragraph); line-height: 1.65; list-style-position: outside; } .markdown-content li::marker { color: var(--color-md-marker); } .markdown-content ol li::marker { font-weight: 500; font-size: 0.9em; } .markdown-content ul li::marker { font-size: 0.7em; } /* Fix ALL nested content inside list items - remove extra margins */ .markdown-content li > p { margin-top: 0; margin-bottom: 0.4em; } .markdown-content li > p:first-child { margin-top: 0; } /* Fix headings inside lists - remove all top margin */ .markdown-content li h1, .markdown-content li h2, .markdown-content li h3, .markdown-content li h4, .markdown-content li h5, .markdown-content li h6 { margin-top: 0 !important; margin-bottom: 0.2em !important; display: inline; } /* Fix paragraphs immediately after headings in lists */ .markdown-content li h1 + p, .markdown-content li h2 + p, .markdown-content li h3 + p, .markdown-content li h4 + p, .markdown-content li h5 + p, .markdown-content li h6 + p { margin-top: 0; } /* Fix paragraphs inside list items */ .markdown-content li > p { margin-top: 0; margin-bottom: 0.3em; } .markdown-content li > p:only-child { margin-bottom: 0; } /* Fix ALL images inside lists - super aggressive */ .markdown-content li img { margin-top: 0.2em !important; margin-bottom: 0.2em !important; } /* Fix ALL code blocks inside lists - super aggressive */ .markdown-content li pre { margin-top: 0.2em !important; margin-bottom: 0.2em !important; } /* Also target any nested images/codeblocks */ .markdown-content li * img { margin-top: 0.2em !important; margin-bottom: 0.2em !important; } .markdown-content li * pre { margin-top: 0.2em !important; margin-bottom: 0.2em !important; } /* Blockquotes */ .markdown-content blockquote { margin: 1.65em 0; padding: 1.1em 1.4em; border-left: 3px solid var(--color-md-blockquote-border); background-color: var(--color-md-blockquote-bg); border-radius: 0 8px 8px 0; color: var(--color-md-blockquote-text); font-style: normal; line-height: 1.7; } .markdown-content blockquote p { margin-bottom: 0.5em; color: var(--color-md-blockquote-text); } .markdown-content blockquote p:last-child { margin-bottom: 0; } /* Inline code */ .markdown-content code:not(pre code) { background-color: var(--color-md-code-inline-bg); padding: 0.22em 0.48em; border-radius: 5px; font-family: 'JetBrains Mono Variable', 'JetBrains Mono', 'SF Mono', 'Fira Code', monospace; font-size: 0.88em; font-weight: 400; color: var(--color-md-code-inline); letter-spacing: -0.02em; } /* Code blocks */ .markdown-content pre { background-color: var(--color-md-code-block-bg); border-radius: 10px; padding: 1.35em 1.6em; margin: 1.65em 0; overflow-x: visible; overflow-wrap: break-word; white-space: pre-wrap; border: 1px solid var(--color-md-code-block-border); box-shadow: 0 4px 24px rgba(0, 0, 0, 0.15); } .markdown-content pre code { font-family: 'JetBrains Mono Variable', 'JetBrains Mono', 'SF Mono', 'Fira Code', monospace; font-size: 14px; line-height: 1.7; color: var(--color-md-code-text); background: none; padding: 0; letter-spacing: -0.02em; white-space: pre-wrap; word-wrap: break-word; font-feature-settings: "liga" 1, "calt" 1; } /* Syntax highlighting - refined colors */ .hljs { background: transparent !important; color: var(--color-md-code-text); } .hljs-keyword, .hljs-selector-tag, .hljs-literal, .hljs-section, .hljs-link { color: #C792EA; font-weight: 500; } .hljs-string, .hljs-title, .hljs-name, .hljs-type, .hljs-attribute, .hljs-symbol, .hljs-bullet, .hljs-addition, .hljs-variable, .hljs-template-tag, .hljs-template-variable { color: #C3E88D; } .hljs-comment, .hljs-quote, .hljs-deletion, .hljs-meta { color: var(--color-md-comment); font-style: italic; } .hljs-number { color: #F78C6C; font-weight: 500; } .hljs-built_in { color: #82AAFF; } .hljs-function .hljs-keyword { color: #C792EA; } .hljs-class .hljs-title { color: #FFCB6B; } .hljs-attr { color: #FFCB6B; } /* Tables */ .markdown-content table { width: 100%; border-collapse: separate; border-spacing: 0; margin: 1.65em 0; font-size: 14px; border-radius: 10px; overflow: hidden; border: 1px solid var(--color-md-table-border); box-shadow: 0 2px 12px rgba(0, 0, 0, 0.1); } .markdown-content th, .markdown-content td { padding: 14px 18px; text-align: left; border-bottom: 1px solid var(--color-border-subtle); } .markdown-content th { background-color: var(--color-md-table-header-bg); font-weight: 600; color: var(--color-text-primary); font-size: 12.5px; text-transform: uppercase; letter-spacing: 0.06em; } .markdown-content td { color: var(--color-md-table-cell); } .markdown-content tr:last-child td { border-bottom: none; } .markdown-content tr:nth-child(even) td { background-color: var(--color-md-table-stripe); } .markdown-content tr:hover td { background-color: var(--color-md-table-hover); } /* Horizontal rule - gradient fade */ .markdown-content hr { border: none; height: 1px; background: linear-gradient(to right, transparent, var(--color-md-hr), transparent); margin: 2.5em 0; } /* Images */ .markdown-content img { max-width: 100%; height: auto; border-radius: 10px; margin: 1.65em 0; box-shadow: 0 2px 12px rgba(0, 0, 0, 0.1); transition: transform 0.2s ease; } .markdown-content img:hover { transform: translateY(-1px); } /* Definition lists */ .markdown-content dl { margin: 1.65em 0; } .markdown-content dt { font-weight: 600; color: var(--color-text-primary); margin-top: 1.1em; } .markdown-content dd { color: var(--color-text-secondary); margin-left: 1.65em; margin-bottom: 0.55em; } /* Abbreviations */ .markdown-content abbr { border-bottom: 1px dotted var(--color-text-tertiary); cursor: help; } /* Mark/highlight */ .markdown-content mark { background-color: var(--color-md-mark-bg); color: var(--color-md-mark-text); padding: 0.18em 0.38em; border-radius: 4px; font-weight: 500; } /* Subscript and superscript */ .markdown-content sub, .markdown-content sup { font-size: 0.75em; color: var(--color-text-secondary); position: relative; } .markdown-content sup { vertical-align: super; top: -0.25em; } .markdown-content sub { vertical-align: sub; bottom: -0.25em; } /* Tables inside lists */ .markdown-content li table { margin: 0.85em 0; border-radius: 8px; } /* Search highlights - high specificity to override Tailwind reset */ span.search-highlight { background-color: var(--color-md-highlight-bg) !important; color: inherit !important; border-radius: 2px; padding: 1px 0; text-decoration: underline; text-decoration-color: var(--color-md-mark-text); text-underline-offset: 2px; transition: background-color 0.15s ease, outline-color 0.15s ease; } span.search-highlight.search-highlight-active { background-color: var(--color-md-highlight-active-bg) !important; outline: 2px solid var(--color-md-highlight-active-outline); outline-offset: 1px; } /* OverlayScrollbars custom theme */ .os-theme-dark { --os-handle-bg: rgba(255, 255, 255, 0.12); --os-handle-bg-hover: var(--color-accent); --os-handle-bg-active: var(--color-accent-hover); --os-size: 8px; --os-handle-border-radius: 4px; --os-padding-perpendicular: 2px; --os-padding-axis: 2px; --os-handle-interactive-area-offset: 4px; } .os-theme-dark .os-scrollbar { transition: opacity 0.3s ease; } .os-theme-dark .os-scrollbar-handle { transition: background-color 0.2s ease, opacity 0.2s ease; } /* Global focus indicator - WCAG 2.4.7, 2.4.13 */ button:focus-visible, a:focus-visible, input:focus-visible, [tabindex]:focus-visible, [role="tab"]:focus-visible, [role="menuitem"]:focus-visible, [role="separator"]:focus-visible { outline: 2px solid var(--color-accent); outline-offset: 2px; z-index: 1; } /* Reduced motion */ @media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; } }