/* Reusable Component Styles */ /* Personality Configuration */ .personality-section { background: var(--bg-primary); border-radius: var(--radius-lg); padding: 2rem; margin-bottom: 2rem; box-shadow: var(--shadow-sm); } .personality-section h2 { margin-bottom: 2rem; font-size: 1.25rem; font-weight: 600; } .trait-control { margin-bottom: 2rem; } .trait-control label { display: flex; align-items: center; gap: 0.5rem; font-weight: 500; margin-bottom: 0.75rem; } .trait-control input[type="range"] { width: 100%; height: 6px; border-radius: 3px; background: var(--bg-tertiary); outline: none; -webkit-appearance: none; margin-bottom: 0.5rem; } .trait-control input[type="range"]::-webkit-slider-thumb { -webkit-appearance: none; appearance: none; width: 20px; height: 20px; border-radius: 50%; background: var(--primary-color); cursor: pointer; transition: all 0.2s ease; } .trait-control input[type="range"]::-webkit-slider-thumb:hover { transform: scale(1.2); box-shadow: 0 0 0 8px rgba(99, 102, 241, 0.1); } .trait-control output { display: inline-block; padding: 0.25rem 0.75rem; background: var(--bg-tertiary); border-radius: var(--radius-sm); font-weight: 600; color: var(--primary-color); } /* Personality Presets */ .personality-presets { background: var(--bg-primary); border-radius: var(--radius-lg); padding: 2rem; margin-bottom: 2rem; box-shadow: var(--shadow-sm); } .personality-presets h2 { margin-bottom: 1.5rem; font-size: 1.25rem; font-weight: 600; } .preset-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 1rem; } .preset-card { padding: 1.5rem; background: var(--bg-secondary); border: 2px solid transparent; border-radius: var(--radius-md); cursor: pointer; transition: all 0.2s ease; text-align: left; } .preset-card:hover { border-color: var(--primary-color); transform: translateY(-2px); box-shadow: var(--shadow-md); } .preset-card h3 { margin-bottom: 0.5rem; font-size: 1.125rem; } .preset-card p { font-size: 0.875rem; color: var(--text-secondary); } /* Dialogue Training */ .dialogue-training { background: var(--bg-primary); border-radius: var(--radius-lg); padding: 2rem; margin-bottom: 2rem; box-shadow: var(--shadow-sm); } .dialogue-training h2 { margin-bottom: 0.5rem; font-size: 1.25rem; font-weight: 600; } .section-description { color: var(--text-secondary); margin-bottom: 1.5rem; } .dialogue-examples { margin-bottom: 1rem; } .dialogue-example { margin-bottom: 1rem; padding: 1rem; background: var(--bg-secondary); border-radius: var(--radius-md); } .dialogue-pair { position: relative; } .dialogue-pair label { display: block; font-size: 0.875rem; font-weight: 500; margin-bottom: 0.5rem; color: var(--text-secondary); } .dialogue-input, .dialogue-response { width: 100%; margin-bottom: 1rem; } .btn-remove { position: absolute; top: 0; right: 0; padding: 0.375rem 0.75rem; background: var(--danger-color); color: white; border: none; border-radius: var(--radius-sm); font-size: 0.75rem; cursor: pointer; transition: all 0.2s ease; } .btn-remove:hover { background: #dc2626; } /* Character Background */ .character-background { background: var(--bg-primary); border-radius: var(--radius-lg); padding: 2rem; margin-bottom: 2rem; box-shadow: var(--shadow-sm); } .character-background h2 { margin-bottom: 1rem; font-size: 1.25rem; font-weight: 600; } .character-background textarea { width: 100%; min-height: 120px; resize: vertical; } /* Personality Preview */ .personality-preview { background: var(--bg-primary); border-radius: var(--radius-lg); padding: 2rem; box-shadow: var(--shadow-sm); } .personality-preview h2 { margin-bottom: 1.5rem; font-size: 1.25rem; font-weight: 600; } .preview-chat { background: var(--bg-secondary); border-radius: var(--radius-md); padding: 1.5rem; margin-bottom: 1rem; } .preview-message { margin-bottom: 1rem; padding: 0.75rem 1rem; border-radius: var(--radius-md); max-width: 80%; } .preview-message.user { background: var(--primary-color); color: white; margin-left: auto; } .preview-message.ai { background: var(--bg-tertiary); color: var(--text-primary); } /* Response Tester */ .tester-layout { display: grid; grid-template-columns: 1fr 350px; gap: 2rem; } .chat-simulator { background: var(--bg-primary); border-radius: var(--radius-lg); padding: 1.5rem; box-shadow: var(--shadow-sm); display: flex; flex-direction: column; height: 600px; } .chat-messages { flex: 1; overflow-y: auto; padding: 1rem; background: var(--bg-secondary); border-radius: var(--radius-md); margin-bottom: 1rem; } .message { display: flex; gap: 0.75rem; margin-bottom: 1rem; } .message-avatar { width: 40px; height: 40px; border-radius: 50%; background: var(--primary-color); display: flex; align-items: center; justify-content: center; font-size: 1.25rem; flex-shrink: 0; } .message-content { flex: 1; padding: 0.75rem; background: var(--bg-tertiary); border-radius: var(--radius-md); } .chat-input-area { display: flex; gap: 0.75rem; margin-bottom: 1rem; } .chat-input-area input { flex: 1; } .latency-display { text-align: center; font-size: 0.875rem; color: var(--text-secondary); } /* Metrics Panel */ .metrics-panel { background: var(--bg-primary); border-radius: var(--radius-lg); padding: 1.5rem; box-shadow: var(--shadow-sm); } .metrics-panel h3 { margin-bottom: 1.5rem; font-size: 1.125rem; font-weight: 600; } .metric-item { display: flex; justify-content: space-between; padding: 0.75rem 0; border-bottom: 1px solid var(--border-color); } .metric-item label { font-size: 0.875rem; color: var(--text-secondary); } .metric-item span { font-weight: 600; color: var(--text-primary); } .chart-container { margin: 2rem 0; height: 200px; position: relative; } #latency-chart { width: 100%; height: 100%; } .scenario-buttons { display: grid; grid-template-columns: 1fr 1fr; gap: 0.5rem; } .scenario-btn { padding: 0.75rem; background: var(--bg-tertiary); border: 1px solid var(--border-color); border-radius: var(--radius-md); font-size: 0.875rem; cursor: pointer; transition: all 0.2s ease; } .scenario-btn:hover { background: var(--primary-color); color: white; transform: translateY(-1px); } /* Analytics Page */ .metrics-overview { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 1.5rem; margin-bottom: 2rem; } .metric-card.large { grid-column: span 2; } .metric-card h3 { font-size: 0.875rem; color: var(--text-secondary); margin-bottom: 0.5rem; font-weight: 500; } .metric-value { font-size: 2.5rem; font-weight: 700; color: var(--text-primary); margin-bottom: 0.5rem; } .metric-change { font-size: 0.75rem; font-weight: 500; } .metric-change.positive { color: var(--success-color); } .metric-change.negative { color: var(--danger-color); } .charts-section { display: grid; grid-template-columns: repeat(auto-fit, minmax(400px, 1fr)); gap: 2rem; margin-bottom: 2rem; } .chart-container { background: var(--bg-primary); border-radius: var(--radius-lg); padding: 1.5rem; box-shadow: var(--shadow-sm); } .chart-container h3 { margin-bottom: 1rem; font-size: 1.125rem; font-weight: 600; } /* Sentiment Analysis */ .sentiment-analysis { background: var(--bg-primary); border-radius: var(--radius-lg); padding: 2rem; margin-bottom: 2rem; box-shadow: var(--shadow-sm); } .sentiment-analysis h2 { margin-bottom: 1.5rem; font-size: 1.25rem; font-weight: 600; } .sentiment-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 1.5rem; } .sentiment-card { padding: 1.5rem; background: var(--bg-secondary); border-radius: var(--radius-md); } .sentiment-card h4 { font-size: 0.875rem; margin-bottom: 0.5rem; color: var(--text-secondary); } .sentiment-value { font-size: 1.5rem; font-weight: 700; margin-bottom: 0.75rem; } .sentiment-card.positive .sentiment-value { color: var(--success-color); } .sentiment-card.neutral .sentiment-value { color: var(--warning-color); } .sentiment-card.negative .sentiment-value { color: var(--danger-color); } .sentiment-bar { height: 8px; background: var(--bg-tertiary); border-radius: 4px; overflow: hidden; } .sentiment-fill { height: 100%; transition: width 0.3s ease; } .sentiment-fill.positive { background: var(--success-color); } .sentiment-fill.neutral { background: var(--warning-color); } .sentiment-fill.negative { background: var(--danger-color); } /* Top Topics */ .top-topics { background: var(--bg-primary); border-radius: var(--radius-lg); padding: 2rem; margin-bottom: 2rem; box-shadow: var(--shadow-sm); } .top-topics h2 { margin-bottom: 1.5rem; font-size: 1.25rem; font-weight: 600; } .topics-list { display: flex; flex-direction: column; gap: 1rem; } .topic-item { display: grid; grid-template-columns: 150px 1fr auto; gap: 1rem; align-items: center; } .topic-name { font-weight: 500; } .topic-count { font-size: 0.875rem; color: var(--text-secondary); } .topic-bar { height: 8px; background: var(--bg-tertiary); border-radius: 4px; overflow: hidden; } .topic-fill { height: 100%; background: var(--primary-color); transition: width 0.3s ease; } /* Export Section */ .export-section { background: var(--bg-primary); border-radius: var(--radius-lg); padding: 2rem; box-shadow: var(--shadow-sm); } .export-section h2 { margin-bottom: 1.5rem; font-size: 1.25rem; font-weight: 600; } .export-buttons { display: flex; gap: 1rem; flex-wrap: wrap; } /* Settings Page */ .settings-section { background: var(--bg-primary); border-radius: var(--radius-lg); padding: 2rem; margin-bottom: 2rem; box-shadow: var(--shadow-sm); } .settings-section h2 { margin-bottom: 1.5rem; font-size: 1.25rem; font-weight: 600; } .setting-group { margin-bottom: 1.5rem; } .setting-group label { display: block; font-weight: 500; margin-bottom: 0.5rem; color: var(--text-primary); } .setting-group input[type="range"] { margin-bottom: 0.5rem; } .setting-group input[type="checkbox"] { margin-right: 0.5rem; } .danger-zone { border: 2px solid var(--danger-color); } .danger-zone h2 { color: var(--danger-color); } .danger-actions { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 1rem; } /* Responsive Components */ @media (max-width: 1024px) { .tester-layout { grid-template-columns: 1fr; } .charts-section { grid-template-columns: 1fr; } } @media (max-width: 768px) { .preset-grid { grid-template-columns: 1fr; } .sentiment-grid { grid-template-columns: 1fr; } .export-buttons { flex-direction: column; } .scenario-buttons { grid-template-columns: 1fr; } }