Skip to main content
Glama
style.css15.4 kB
/* Prefrontal Systems Brand Theme */ @import url('https://fonts.googleapis.com/css2?family=Atkinson+Hyperlegible:ital,wght@0,400;0,700;1,400;1,700&family=JetBrains+Mono:wght@400;500&display=swap'); :root { /* Brand Palette */ --brand-primary: #1976D2; /* Synapse Blue */ --brand-secondary: #37474F; /* Cortex Gray */ --brand-background: #FAFAFA; /* Dendron White - Unused in dark mode */ --accent-success: #2E7D32; /* Executive Function Green */ --accent-error: #C62828; /* Cognitive Distress Red */ --accent-memory: #F57C00; /* Hippocampal Amber */ --code-inline: #D84315; /* Deep Orange 700 */ /* Dark Mode Adaptation (Default) */ --bg-color: #0a0b0c; /* Deep dark background */ --card-bg: #121416; /* Slightly lighter card bg */ --surface-color: #1e2224; /* UI elements */ --text-primary: #eceff1; /* High contrast text */ --text-secondary: #b0bec5; /* Medium contrast text */ --border-color: #263238; /* Subtle borders */ /* Typography */ --font-main: 'Atkinson Hyperlegible', -apple-system, BlinkMacSystemFont, sans-serif; --font-mono: 'JetBrains Mono', monospace; /* Keeping JetBrains for code, or could use Atkinson Mono if available */ } /* Light Mode Overrides */ [data-theme="light"] { --bg-color: #ffffff; --card-bg: #f5f5f5; --surface-color: #e0e0e0; --text-primary: #263238; --text-secondary: #546e7a; --border-color: #cfd8dc; } * { box-sizing: border-box; margin: 0; padding: 0; } body { background-color: var(--bg-color); color: var(--text-primary); font-family: var(--font-main); line-height: 1.6; -webkit-font-smoothing: antialiased; transition: background-color 0.3s ease, color 0.3s ease; } .app-container { max-width: 1200px; margin: 0 auto; padding: 2rem; } /* Header */ .app-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 1.5rem; padding-bottom: 1.5rem; border-bottom: 1px solid var(--border-color); } .header-controls { display: flex; align-items: center; gap: 1rem; } .btn-icon { background: transparent; border: none; color: var(--text-secondary); cursor: pointer; padding: 0.5rem; border-radius: 50%; transition: all 0.2s ease; display: flex; align-items: center; justify-content: center; } .btn-icon:hover { background: var(--surface-color); color: var(--brand-primary); } .icon-sun { display: none; } .icon-moon { display: block; } [data-theme="light"] .icon-sun { display: block; } [data-theme="light"] .icon-moon { display: none; } /* Controls Bar */ .controls-bar { display: flex; justify-content: space-between; align-items: center; margin-bottom: 2rem; padding: 0.5rem 0; } .pagination-controls { display: flex; align-items: center; gap: 0.5rem; font-size: 0.9rem; color: var(--text-secondary); } #limit-select { background: var(--card-bg); border: 1px solid var(--border-color); color: var(--text-primary); padding: 0.3rem 0.5rem; border-radius: 4px; font-family: var(--font-main); cursor: pointer; } .pagination-nav { display: flex; align-items: center; gap: 1rem; } .pagination-nav button { background: var(--card-bg); border: 1px solid var(--border-color); color: var(--text-primary); padding: 0.4rem 0.8rem; border-radius: 4px; cursor: pointer; font-family: var(--font-main); font-size: 0.9rem; transition: all 0.2s ease; } .pagination-nav button:hover:not(:disabled) { border-color: var(--brand-primary); color: var(--brand-primary); } .pagination-nav button.active { background: var(--brand-primary); color: white; border-color: var(--brand-primary); opacity: 1; } .pagination-nav button:disabled { opacity: 0.5; cursor: not-allowed; } .pagination-ellipsis { color: var(--text-secondary); padding: 0 0.25rem; } #page-info { font-size: 0.9rem; color: var(--text-secondary); min-width: 80px; text-align: center; } /* View Toggle */ .view-toggle { display: flex; gap: 0.25rem; background: var(--bg-secondary); padding: 0.25rem; border-radius: 6px; border: 1px solid var(--border-color); } .view-toggle .btn-icon { background: none; border: none; padding: 0.25rem; border-radius: 4px; color: var(--text-secondary); cursor: pointer; display: flex; align-items: center; justify-content: center; transition: all 0.2s ease; } .view-toggle .btn-icon:hover { color: var(--text-primary); background: var(--surface-color); /* Changed from --bg-primary to --surface-color for consistency */ } .view-toggle .btn-icon.active { color: var(--brand-primary); background: var(--surface-color); /* Changed from --bg-primary to --surface-color for consistency */ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); } /* List View */ .memories-grid.list-view { display: flex; flex-direction: column; gap: 0.5rem; } .memories-grid.list-view .memory-card { display: grid; grid-template-columns: 1fr auto; gap: 1rem; padding: 0.75rem 1rem; align-items: center; cursor: pointer; transition: transform 0.2s ease, box-shadow 0.2s ease; } .memories-grid.list-view .memory-card:hover { transform: translateX(4px); border-color: var(--brand-primary); } .memories-grid.list-view .memory-content { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; margin: 0; font-size: 0.95rem; color: var(--text-primary); white-space: normal; line-height: 1.4; } .memories-grid.list-view .memory-meta, .memories-grid.list-view .memory-footer { /* Changed from memory-tags, memory-actions to memory-footer */ display: none; } /* Modal */ .modal { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.7); backdrop-filter: blur(4px); z-index: 1000; display: flex; align-items: center; justify-content: center; opacity: 0; pointer-events: none; transition: opacity 0.3s ease; } .modal:not(.hidden) { opacity: 1; pointer-events: auto; } .modal-content { background: var(--card-bg); /* Changed from --bg-secondary to --card-bg for consistency */ width: 90%; max-width: 800px; max-height: 90vh; border-radius: 12px; border: 1px solid var(--border-color); box-shadow: 0 20px 40px rgba(0, 0, 0, 0.4); position: relative; overflow-y: auto; padding: 2rem; transform: translateY(20px); transition: transform 0.3s ease; } .modal:not(.hidden) .modal-content { transform: translateY(0); } .btn-close { position: absolute; top: 1rem; right: 1rem; background: none; border: none; color: var(--text-secondary); font-size: 1.5rem; cursor: pointer; padding: 0.5rem; line-height: 1; border-radius: 50%; transition: all 0.2s ease; } .btn-close:hover { color: var(--text-primary); background: var(--surface-color); /* Changed from --bg-primary to --surface-color for consistency */ } .logo { display: flex; align-items: center; gap: 0.75rem; } .logo-icon { font-size: 1.5rem; color: var(--brand-primary); } .logo h1 { font-size: 1.5rem; font-weight: 700; letter-spacing: -0.01em; color: var(--text-primary); } /* Search */ .search-container { position: relative; width: 350px; } #search-input { width: 100%; background: var(--card-bg); border: 1px solid var(--border-color); border-radius: 8px; padding: 0.8rem 1rem 0.8rem 2.8rem; color: var(--text-primary); font-family: var(--font-main); font-size: 1rem; transition: all 0.2s ease; } #search-input:focus { outline: none; border-color: var(--brand-primary); box-shadow: 0 0 0 3px rgba(25, 118, 210, 0.15); } .search-icon { position: absolute; left: 1rem; top: 50%; transform: translateY(-50%); color: var(--text-secondary); pointer-events: none; } /* Memories Grid */ .memories-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(400px, 1fr)); gap: 1.5rem; } .memory-card { background: var(--card-bg); border: 1px solid var(--border-color); border-radius: 12px; padding: 1.5rem; display: flex; flex-direction: column; transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease; position: relative; overflow: hidden; } .memory-card::before { content: ''; position: absolute; top: 0; left: 0; width: 4px; height: 100%; background: var(--brand-secondary); opacity: 0.5; transition: background 0.2s ease; } .memory-card:hover { transform: translateY(-2px); box-shadow: 0 12px 32px rgba(0, 0, 0, 0.3); border-color: var(--brand-secondary); } .memory-card:hover::before { background: var(--brand-primary); opacity: 1; } .memory-header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 1rem; padding-left: 0.5rem; } .memory-meta { display: flex; flex-direction: column; gap: 0.25rem; } .memory-id { font-family: var(--font-mono); font-size: 0.7rem; color: var(--text-secondary); opacity: 0.7; } .memory-date { font-size: 0.8rem; font-weight: 700; color: var(--brand-primary); } .memory-content { font-size: 1rem; color: var(--text-primary); margin-bottom: 1.5rem; flex-grow: 1; white-space: pre-wrap; overflow-wrap: break-word; line-height: 1.6; padding-left: 0.5rem; } .memory-footer { display: flex; justify-content: space-between; align-items: center; margin-top: auto; padding-top: 1rem; border-top: 1px solid var(--border-color); padding-left: 0.5rem; } .tags { display: flex; flex-wrap: wrap; gap: 0.5rem; } .tag { font-size: 0.75rem; color: var(--text-secondary); background: var(--surface-color); padding: 0.2rem 0.6rem; border-radius: 100px; font-weight: 700; transition: color 0.2s ease; } .memory-card:hover .tag { color: var(--text-primary); } .btn-save { background: transparent; border: 1px solid var(--border-color); color: var(--text-primary); padding: 0.5rem 1rem; border-radius: 6px; font-size: 0.85rem; font-weight: 700; cursor: pointer; transition: all 0.2s ease; font-family: var(--font-main); display: flex; align-items: center; gap: 0.5rem; } .btn-save:hover { background: var(--brand-primary); border-color: var(--brand-primary); color: white; box-shadow: 0 4px 12px rgba(25, 118, 210, 0.3); } .btn-save:disabled { opacity: 0.5; cursor: not-allowed; background: transparent; border-color: var(--border-color); color: var(--text-secondary); box-shadow: none; } /* Loading State */ .loading-state { grid-column: 1 / -1; text-align: center; color: var(--text-secondary); padding: 6rem; font-size: 1.1rem; } /* Toast */ .toast { position: fixed; bottom: 2rem; right: 2rem; background: var(--surface-color); color: var(--text-primary); padding: 1rem 1.5rem; border-radius: 8px; font-size: 0.95rem; font-weight: 700; box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4); border: 1px solid var(--border-color); transform: translateY(0); opacity: 1; transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1); z-index: 1000; display: flex; align-items: center; gap: 0.75rem; } .toast::before { content: ''; display: block; width: 8px; height: 8px; border-radius: 50%; background: var(--accent-success); } .toast.hidden { transform: translateY(20px); opacity: 0; pointer-events: none; } .toast.error::before { background: var(--accent-error); } /* Relationships Section */ .memory-relationships-section { margin: 1.5rem 0; padding: 1rem; background: var(--surface-color); border-radius: 8px; border: 1px solid var(--border-color); } .memory-relationships-section h3 { font-size: 0.9rem; text-transform: uppercase; letter-spacing: 0.05em; color: var(--text-secondary); margin-bottom: 1rem; font-weight: 700; } .relationships-container { display: flex; flex-direction: column; gap: 0.5rem; } .relationship-item { display: flex; align-items: center; gap: 1rem; padding: 0.5rem; background: var(--card-bg); border-radius: 4px; border: 1px solid var(--border-color); font-size: 0.9rem; } .relation-type { color: var(--brand-primary); font-weight: 600; font-family: var(--font-mono); font-size: 0.8rem; padding: 0.1rem 0.4rem; background: rgba(25, 118, 210, 0.1); border-radius: 4px; } .relation-target { font-family: var(--font-mono); color: var(--text-primary); } .relation-strength { margin-left: auto; font-size: 0.8rem; color: var(--text-secondary); } .loading-state.small, .empty-state.small, .error-state.small { padding: 1rem; font-size: 0.9rem; color: var(--text-secondary); text-align: center; background: none; } .error-state.small { color: var(--accent-error); } /* Graph Visualization */ .graph-container { width: 100%; height: calc(100vh - 60px); background-color: var(--bg-color); /* Changed from --bg-primary to match theme */ overflow: hidden; position: relative; } .controls-panel { position: absolute; top: 20px; left: 20px; width: 280px; background: var(--card-bg); padding: 20px; border-radius: 12px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); z-index: 100; border: 1px solid var(--border-color); max-height: calc(100% - 40px); overflow-y: auto; } .zoom-controls { position: absolute; bottom: 20px; right: 20px; background: var(--card-bg); padding: 8px; border-radius: 8px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); z-index: 100; border: 1px solid var(--border-color); display: flex; flex-direction: column; gap: 8px; } .zoom-controls .btn-icon { background: var(--surface-color); color: var(--text-primary); width: 36px; height: 36px; border-radius: 6px; } .zoom-controls .btn-icon:hover { background: var(--brand-primary); color: white; } .node-detail-panel { position: absolute; top: 20px; right: 20px; background: var(--card-bg); padding: 20px; border-radius: 8px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); z-index: 10; width: 300px; max-height: calc(100vh - 40px); overflow-y: auto; display: none; border: 1px solid var(--border-color); } .node-detail-panel.visible { display: block; } .node-detail-panel h3 { margin-bottom: 1rem; font-size: 1.2rem; color: var(--text-primary); } .node-detail-panel .meta p { margin-bottom: 0.5rem; font-size: 0.9rem; color: var(--text-secondary); } .node-detail-panel .meta strong { color: var(--text-primary); }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/prefrontalsys/mnemex'

If you have feedback or need assistance with the MCP directory API, please join our Discord server