Soma / frontend /src /index.css
Komalpreet Kaur
feat: implement memory consolidation service with sleep cycle, add frontend visualization components, and integrate backend database orchestration.
2e9dd8e unverified
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Outfit:wght@500;600;700;800&family=Space+Mono:wght@400;700&display=swap');
:root {
--bg-app: #e5e5e5;
--bg-sidebar: #f0f0f0;
--bg-card: rgba(255, 255, 255, 0.7);
--primary: #2d2d2d;
--secondary: #ff6b35;
--accent: #ff6b35;
--text-main: #2d2d2d;
--text-muted: #666666;
--text-light: #999999;
--border-card: 1px solid rgba(0, 0, 0, 0.05);
--radius-lg: 32px;
--radius-md: 20px;
--radius-sm: 12px;
--shadow-premium: 0 20px 40px rgba(0, 0, 0, 0.05);
--font-body: 'Inter', sans-serif;
--font-display: 'Outfit', sans-serif;
}
* {
box-sizing: border-box;
margin: 0;
padding: 0;
-webkit-font-smoothing: antialiased;
}
html,
body,
#root {
min-height: 100%;
}
body {
font-family: var(--font-body);
background:
radial-gradient(circle at top left, rgba(255, 255, 255, 0.9), transparent 50%),
radial-gradient(circle at bottom right, rgba(255, 107, 53, 0.08), transparent 50%),
#f2f2f2;
color: var(--text-main);
overflow: hidden;
}
button,
input,
textarea {
font: inherit;
}
button {
border: 0;
background: none;
cursor: pointer;
}
img {
display: block;
max-width: 100%;
}
.material-icons {
font-family: 'Material Icons';
font-weight: normal;
font-style: normal;
font-size: 24px;
line-height: 1;
letter-spacing: normal;
text-transform: none;
display: inline-block;
white-space: nowrap;
word-wrap: normal;
direction: ltr;
-webkit-font-feature-settings: 'liga';
}
/* ── SOMA Premium Glassmorphic Dark Theme ── */
body.dark-theme {
--bg-app: #000000;
--bg-sidebar: #050505;
--bg-card: rgba(18, 18, 18, 0.75);
--primary: #f8fafc;
--secondary: #ff7d4d;
--accent: #ff7d4d;
--text-main: #f8fafc;
--text-muted: #a3a3a3; /* Neutral light grey, no blue/slate tint */
--text-light: #737373; /* Neutral dark grey, no blue/slate tint */
--border-card: 1px solid rgba(255, 255, 255, 0.06);
--shadow-premium: 0 40px 100px rgba(0, 0, 0, 0.6);
background:
radial-gradient(circle at top left, rgba(255, 107, 53, 0.04), transparent 50%),
radial-gradient(circle at bottom right, rgba(255, 255, 255, 0.015), transparent 50%),
#000000;
color: var(--text-main);
}
/* Header & Sidebar Titles */
body.dark-theme .page-header h2 {
color: #f8fafc !important;
}
body.dark-theme .brand-copy h1 {
color: #f8fafc !important;
}
/* Brain Ambient Node Labels Contrast Correction */
body.dark-theme .signal-copy strong {
color: #e2e8f0 !important;
text-shadow: 0 2px 4px rgba(0,0,0,0.5);
}
body.dark-theme .signal-node {
opacity: 0.38 !important; /* Raised from 0.2 to prevent faintness */
}
body.dark-theme .signal-node.active,
body.dark-theme .signal-node.hot {
opacity: 1 !important;
}
body.dark-theme .signal-dot {
background-color: #475569 !important;
}
/* Timeline & Feed Overrides */
body.dark-theme .phase-title {
color: #f8fafc !important;
}
body.dark-theme .phase-desc {
color: #a3a3a3 !important;
}
body.dark-theme .timeline-row::before {
background-color: rgba(255, 255, 255, 0.06) !important;
}
body.dark-theme .timeline-dot {
box-shadow: 0 0 0 4px #050505 !important;
background-color: #ff6b35 !important; /* Active accent node dot */
}
body.dark-theme .timeline-empty {
color: #737373 !important;
}
/* Chat bubble dark mode overrides */
body.dark-theme .bubble-body {
background-color: rgba(24, 24, 24, 0.75) !important; /* Pure neutral dark-grey glass bubble, no navy blue */
color: #f8fafc !important;
border: 1px solid rgba(255, 255, 255, 0.04) !important;
box-shadow: 0 4px 20px rgba(0,0,0,0.2) !important;
}
body.dark-theme .chat-bubble-group.user .bubble-body {
background-color: rgba(28, 28, 28, 0.85) !important; /* Elegant neutral deep charcoal, completely mud-free */
border: 1px solid rgba(255, 255, 255, 0.08) !important;
color: #f8fafc !important;
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.25) !important;
}
body.dark-theme .bubble-text {
color: #e5e5e5 !important;
}
body.dark-theme .bubble-meta strong {
color: #e5e5e5 !important;
}
body.dark-theme .chat-bubble-group.soma .bubble-meta strong {
color: #ff8b54 !important; /* Elegant warm orange highlight for Soma in pure dark mode */
}
/* Input elements dark mode overrides */
body.dark-theme .input-field-wrap {
background-color: rgba(24, 24, 24, 0.75) !important;
border: 1px solid rgba(255, 255, 255, 0.05) !important;
box-shadow: 0 4px 15px rgba(0,0,0,0.15) !important;
}
body.dark-theme .input-field-wrap input {
color: #f8fafc !important;
}
body.dark-theme .new-chat-btn {
background-color: rgba(24, 24, 24, 0.75) !important;
border: 1px solid rgba(255, 255, 255, 0.05) !important;
color: #f8fafc !important;
}
body.dark-theme .new-chat-btn:hover {
background-color: rgba(255, 107, 53, 0.1) !important;
color: #ff6b35 !important;
}
body.dark-theme .suggested-starters button {
background-color: rgba(24, 24, 24, 0.5) !important;
border: 1px solid rgba(255, 255, 255, 0.05) !important;
color: #e5e5e5 !important;
}
body.dark-theme .suggested-starters button:hover {
background-color: rgba(255, 107, 53, 0.1) !important;
color: #ff7d4d !important;
border-color: rgba(255, 107, 53, 0.3) !important;
}
body.dark-theme .welcome-icon {
background-color: rgba(24, 24, 24, 0.75) !important;
box-shadow: 0 10px 30px rgba(0,0,0,0.3) !important;
}
body.dark-theme .welcome-icon span {
color: #f8fafc !important;
}
body.dark-theme .welcome-state h3 {
color: #f8fafc !important;
}
/* Sidebar overrides */
body.dark-theme .session-card {
background-color: rgba(18, 18, 18, 0.6) !important;
border: 1px solid rgba(255, 255, 255, 0.03) !important;
}
body.dark-theme .session-avatar {
border-color: rgba(255, 255, 255, 0.1) !important;
}
body.dark-theme .session-copy strong {
color: #f8fafc !important;
}
body.dark-theme .sidebar-link {
color: var(--text-muted);
}
body.dark-theme .sidebar-link:hover {
color: var(--text-main);
background-color: rgba(255, 255, 255, 0.03);
}
body.dark-theme .sidebar-link.active {
background-color: rgba(255, 255, 255, 0.03) !important;
}
/* Memory & Dashboard dynamic panels */
body.dark-theme .dashboard-metric-card,
body.dark-theme .memory-list-card,
body.dark-theme .memory-detail-card,
body.dark-theme .knowledge-card {
background-color: rgba(18, 18, 18, 0.75) !important;
border: 1px solid rgba(255, 255, 255, 0.04) !important;
}
body.dark-theme .timeline-node {
background-color: rgba(24, 24, 24, 0.75) !important;
border: 1px solid rgba(255, 255, 255, 0.03) !important;
}
body.dark-theme .sleep-telemetry-card {
background-color: rgba(18, 18, 18, 0.75) !important;
border: 1px solid rgba(255, 255, 255, 0.04) !important;
}
body.dark-theme .summary-card-combined,
body.dark-theme .summary-card-inline {
background-color: rgba(18, 18, 18, 0.85) !important;
}
body.dark-theme .telemetry-card-value {
color: #f8fafc !important;
}
/* Graph online indicator */
body.dark-theme .graph-container-glow {
border-color: rgba(255, 255, 255, 0.04) !important;
}
body.dark-theme .input-area-card {
background-color: rgba(18, 18, 18, 0.75) !important;
border: 1px solid rgba(255, 255, 255, 0.04) !important;
}
body.dark-theme .text-input-field {
background-color: rgba(24, 24, 24, 0.75) !important;
border: 1px solid rgba(255, 255, 255, 0.05) !important;
color: #f8fafc !important;
}
body.dark-theme .theme-toggle-btn {
border-top-color: rgba(255, 255, 255, 0.08) !important;
}
/* ── SOMA Memory Explorer Dark UI Overrides ── */
body.dark-theme .memory-surface {
background: rgba(18, 18, 18, 0.75) !important;
border: 1px solid rgba(255, 255, 255, 0.06) !important;
box-shadow: 0 30px 80px rgba(0, 0, 0, 0.55) !important;
}
body.dark-theme .memory-search-wrap {
background-color: rgba(24, 24, 24, 0.75) !important;
border: 1px solid rgba(255, 255, 255, 0.05) !important;
}
body.dark-theme .memory-search-wrap input {
color: #f8fafc !important;
}
body.dark-theme .filter-tabs {
background-color: rgba(0, 0, 0, 0.2) !important;
}
body.dark-theme .filter-tab {
color: #737373 !important;
}
body.dark-theme .filter-tab.active {
background-color: rgba(255, 255, 255, 0.08) !important;
color: #f8fafc !important;
box-shadow: 0 2px 8px rgba(0,0,0,0.3) !important;
}
body.dark-theme .memory-row {
color: #a3a3a3 !important;
}
body.dark-theme .memory-row:hover {
background-color: rgba(255, 255, 255, 0.03) !important;
}
body.dark-theme .memory-row.active {
background-color: rgba(255, 255, 255, 0.05) !important;
border-color: rgba(255, 255, 255, 0.08) !important;
}
body.dark-theme .memory-row-copy strong {
color: #f8fafc !important;
}
body.dark-theme .memory-row-meta {
color: #737373 !important;
}
body.dark-theme .memory-id-badge {
background-color: rgba(255, 255, 255, 0.04) !important;
color: #a3a3a3 !important;
}
body.dark-theme .memory-detail-title {
color: #f8fafc !important;
}
body.dark-theme .memory-content-box {
background-color: rgba(24, 24, 24, 0.6) !important;
border: 1px solid rgba(255, 255, 255, 0.04) !important;
color: #e5e5e5 !important;
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2) !important;
}
body.dark-theme .instrument-card {
background-color: rgba(24, 24, 24, 0.5) !important;
border: 1px solid rgba(255, 255, 255, 0.04) !important;
}
body.dark-theme .instrument-card h4 {
color: #737373 !important;
}
body.dark-theme .meter-track {
background-color: rgba(255, 255, 255, 0.06) !important;
}
body.dark-theme .metric-value {
color: #f8fafc !important;
}
body.dark-theme .neighbor-card {
background-color: rgba(24, 24, 24, 0.5) !important;
border: 1px solid rgba(255, 255, 255, 0.04) !important;
}
body.dark-theme .neighbor-card strong {
color: #e2e8f0 !important;
}
body.dark-theme .neighbor-card span {
color: #737373 !important;
}
body.dark-theme .metadata-tag {
background-color: rgba(255, 255, 255, 0.03) !important;
border-color: rgba(255, 255, 255, 0.04) !important;
}
body.dark-theme .metadata-tag span:first-child {
color: #737373 !important;
}
body.dark-theme .metadata-tag span:last-child {
color: #e2e8f0 !important;
}
body.dark-theme .empty-detail {
color: #737373 !important;
}
body.dark-theme .insight-close {
color: #737373 !important;
}
body.dark-theme .neural-insight-modal {
background-color: #0f1115 !important;
border: 1px solid rgba(255, 255, 255, 0.06) !important;
}
body.dark-theme .insight-header h3 {
color: #f8fafc !important;
}
body.dark-theme .insight-body p {
color: #a3a3a3 !important;
}
body.dark-theme .insight-btn {
background-color: #ff6b35 !important;
color: white !important;
}
/* ── SOMA Knowledge Graph Dark UI Overrides ── */
body.dark-theme .graph-network-container {
background: rgba(18, 18, 18, 0.75) !important;
border: 1px solid rgba(255, 255, 255, 0.06) !important;
box-shadow: 0 30px 80px rgba(0, 0, 0, 0.55), inset 0 0 80px rgba(255, 255, 255, 0.02) !important;
}
body.dark-theme .graph-select {
background: rgba(24, 24, 24, 0.75) !important;
border: 1px solid rgba(255, 255, 255, 0.05) !important;
color: #f8fafc !important;
}
body.dark-theme .graph-icon-button {
background: rgba(24, 24, 24, 0.75) !important;
border: 1px solid rgba(255, 255, 255, 0.05) !important;
color: #a3a3a3 !important;
}
body.dark-theme .graph-icon-button:hover {
background: rgba(255, 255, 255, 0.05) !important;
color: #ff6b35 !important;
}
body.dark-theme .graph-legend {
background: rgba(24, 24, 24, 0.85) !important;
border: 1px solid rgba(255, 255, 255, 0.05) !important;
box-shadow: 0 8px 32px rgba(0,0,0,0.4) !important;
}
body.dark-theme .legend-item {
color: #a3a3a3 !important;
}
body.dark-theme .hud-panel {
background: rgba(18, 18, 18, 0.85) !important;
border: 1px solid rgba(255, 255, 255, 0.05) !important;
box-shadow: 0 8px 32px rgba(0,0,0,0.4) !important;
}
body.dark-theme .hud-header {
color: #ff8b54 !important;
border-bottom: 1px solid rgba(255, 255, 255, 0.05) !important;
}
body.dark-theme .hud-label {
color: #737373 !important;
}
body.dark-theme .hud-value {
color: #f8fafc !important;
}
body.dark-theme .entity-name {
color: #e5e5e5 !important;
}
body.dark-theme .entity-connections {
color: #ffaa80 !important;
background: rgba(255, 107, 53, 0.1) !important;
}
body.dark-theme .graph-tooltip {
text-shadow:
-3px -3px 0 #000,
3px -3px 0 #000,
-3px 3px 0 #000,
3px 3px 0 #000,
-3px 0px 0 #000,
3px 0px 0 #000,
0px -3px 0 #000,
0px 3px 0 #000 !important;
}
body.dark-theme .graph-loading {
background: rgba(18, 18, 18, 0.9) !important;
border: 1px solid rgba(255, 255, 255, 0.06) !important;
color: #ff6b35 !important;
}
/* ── SOMA Neural Inscription Dark UI Overrides ── */
body.dark-theme .inscription-icon {
background-color: rgba(24, 24, 24, 0.75) !important;
border: 1px solid rgba(255, 255, 255, 0.05) !important;
}
body.dark-theme .inscription-title h3 {
color: #f8fafc !important;
}
body.dark-theme .inscription-composer {
background: rgba(18, 18, 18, 0.75) !important;
border: 1px solid rgba(255, 255, 255, 0.06) !important;
box-shadow: 0 30px 80px rgba(0, 0, 0, 0.55) !important;
}
body.dark-theme .inscription-composer textarea {
color: #f8fafc !important;
}
body.dark-theme .inscription-composer textarea::placeholder {
color: #525252 !important;
}
body.dark-theme .inscription-footer {
border-top-color: rgba(255, 255, 255, 0.05) !important;
}
body.dark-theme .analysis-panel {
background: rgba(18, 18, 18, 0.75) !important;
border: 1px solid rgba(255, 255, 255, 0.06) !important;
box-shadow: 0 30px 80px rgba(0, 0, 0, 0.55) !important;
}
body.dark-theme .analysis-section label,
body.dark-theme .analysis-metric label {
color: #737373 !important;
}
body.dark-theme .mini-meter {
background-color: rgba(255, 255, 255, 0.06) !important;
}
body.dark-theme .metric-sub {
color: #737373 !important;
}
body.dark-theme .link-tag {
background-color: rgba(24, 24, 24, 0.5) !important;
border: 1px solid rgba(255, 255, 255, 0.04) !important;
color: #e2e8f0 !important;
}
body.dark-theme .link-tag.reinforced {
border-color: rgba(16, 185, 129, 0.3) !important;
background: rgba(16, 185, 129, 0.08) !important;
}
body.dark-theme .impact-item {
background-color: rgba(24, 24, 24, 0.5) !important;
border: 1px solid rgba(255, 255, 255, 0.04) !important;
}
body.dark-theme .impact-val {
color: #f8fafc !important;
}
body.dark-theme .impact-label {
color: #737373 !important;
}
body.dark-theme .layer-item {
color: #a3a3a3 !important;
}
body.dark-theme .empty-tag {
color: #737373 !important;
}
body.dark-theme .existing-link-item {
background-color: rgba(24, 24, 24, 0.5) !important;
border: 1px solid rgba(255, 255, 255, 0.04) !important;
}
body.dark-theme .link-info strong {
color: #f8fafc !important;
}
body.dark-theme .link-info span {
color: #737373 !important;
}
body.dark-theme .panel-footer {
border-top-color: rgba(255, 255, 255, 0.05) !important;
color: #737373 !important;
}
/* ── SOMA Sleep Page & Consolidation Dark UI Overrides ── */
body.dark-theme .sleep-page-container {
background-color: #000000 !important;
}
body.dark-theme .sleep-page-header h2 {
color: #f8fafc !important;
}
body.dark-theme .sleep-copy-combined h3 {
color: #f8fafc !important;
}
body.dark-theme .sleep-copy-combined p {
color: #a3a3a3 !important;
}
body.dark-theme .sleep-step-text {
color: #737373 !important;
}
body.dark-theme .sleep-step-item-vertical.active .sleep-step-text {
color: #f8fafc !important;
}
body.dark-theme .sleep-step-circle {
background-color: #000000 !important;
}
body.dark-theme .sleep-step-circle.pending {
border-color: #404040 !important;
}
body.dark-theme .connector-line {
background-color: #404040 !important;
}
body.dark-theme .summary-overlay-combined {
background-color: #000000 !important;
}
body.dark-theme .sleep-page-header-summary h2 {
color: #f8fafc !important;
}
body.dark-theme .summary-card-combined {
background-color: rgba(18, 18, 18, 0.85) !important;
border-color: rgba(255, 255, 255, 0.05) !important;
box-shadow: 0 30px 80px rgba(0, 0, 0, 0.55) !important;
}
body.dark-theme .summary-close-combined {
color: #737373 !important;
}
body.dark-theme .summary-close-combined:hover {
color: #f8fafc !important;
}
body.dark-theme .summary-header-copy-combined h3 {
color: #f8fafc !important;
}
body.dark-theme .summary-header-copy-combined p {
color: #737373 !important;
}
body.dark-theme .summary-item-combined {
background-color: rgba(255, 255, 255, 0.03) !important;
border-color: rgba(255, 255, 255, 0.04) !important;
}
body.dark-theme .summary-item-copy-combined strong {
color: #e5e5e5 !important;
}
body.dark-theme .summary-item-copy-combined span {
color: #737373 !important;
}
body.dark-theme .summary-view-btn-combined {
background-color: rgba(255, 107, 53, 0.1) !important;
color: #ff6b35 !important;
}
body.dark-theme .summary-view-btn-combined:hover {
background-color: rgba(255, 107, 53, 0.15) !important;
}
body.dark-theme .summary-footer-combined p {
color: #a3a3a3 !important;
}
body.dark-theme .sleep-trigger-btn {
background: linear-gradient(135deg, #ff6b35, #ff5714) !important;
}
body.dark-theme .sleep-trigger-btn:hover {
box-shadow: 0 15px 40px rgba(255, 107, 53, 0.4) !important;
}
body.dark-theme .sleep-brain-image-asset {
background: none !important;
mix-blend-mode: normal !important;
opacity: 1 !important;
border-radius: 0 !important;
}