1687 lines
35 KiB
CSS
1687 lines
35 KiB
CSS
@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;
|
|
}
|
|
}
|