neuro / src /App.css
Narendra5805's picture
first commit
5951777
Raw
History Blame Contribute Delete
8.5 kB
/* Premium Styling for local Qwen2.5 Playground */
.app-container {
max-width: 1000px;
width: 100%;
margin: 40px auto;
padding: 0 20px;
box-sizing: border-box;
text-align: left;
display: flex;
flex-direction: column;
gap: 24px;
}
/* Header Section */
.header-section {
display: flex;
justify-content: space-between;
align-items: center;
border-bottom: 1px solid var(--border);
padding-bottom: 20px;
flex-wrap: wrap;
gap: 15px;
}
.title-group h1 {
font-size: 34px;
font-weight: 700;
letter-spacing: -0.8px;
background: linear-gradient(135deg, var(--accent), #ff5e97);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
margin: 0 0 5px 0;
}
.title-group p {
color: var(--text);
font-size: 14px;
margin: 0;
}
.model-badge {
display: flex;
align-items: center;
gap: 8px;
background: var(--accent-bg);
border: 1px solid var(--accent-border);
padding: 8px 14px;
border-radius: 20px;
font-size: 13px;
font-weight: 600;
color: var(--accent);
}
.pulse-dot {
width: 8px;
height: 8px;
border-radius: 50%;
background-color: #6b6375;
}
.pulse-dot.loading {
background-color: #f59e0b;
animation: pulse 1s infinite ease-in-out;
}
.pulse-dot.ready {
background-color: #10b981;
animation: pulse 2.2s infinite ease-in-out;
}
.pulse-dot.error {
background-color: #ef4444;
}
@keyframes pulse {
0% {
transform: scale(0.95);
opacity: 0.6;
}
50% {
transform: scale(1.35);
opacity: 1;
}
100% {
transform: scale(0.95);
opacity: 0.6;
}
}
/* Glassmorphic Panel Card */
.glass-panel {
background: var(--social-bg);
border: 1px solid var(--border);
border-radius: 16px;
padding: 24px;
box-shadow: var(--shadow);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
transition: transform 0.3s ease, border-color 0.3s ease;
}
/* Model Download Progress Card */
.loader-box {
margin-top: 15px;
}
.progress-container {
width: 100%;
height: 12px;
background: var(--code-bg);
border-radius: 6px;
overflow: hidden;
margin-bottom: 10px;
border: 1px solid var(--border);
}
.progress-bar-fill {
height: 100%;
background: linear-gradient(90deg, var(--accent), #ff5e97);
width: 0%;
transition: width 0.3s ease;
}
.loading-filename {
font-size: 13px;
color: var(--text-h);
font-weight: 500;
margin-bottom: 20px;
word-break: break-all;
}
.file-progress-list {
display: grid;
grid-template-columns: 1fr;
gap: 8px;
max-height: 200px;
overflow-y: auto;
background: var(--code-bg);
padding: 12px 16px;
border-radius: 8px;
border: 1px solid var(--border);
}
@media (min-width: 600px) {
.file-progress-list {
grid-template-columns: 1fr 1fr;
}
}
.file-progress-row {
display: flex;
justify-content: space-between;
align-items: center;
font-size: 12px;
font-family: var(--mono);
padding: 4px 0;
border-bottom: 1px dashed var(--border);
}
.file-progress-row:last-child {
border-bottom: none;
}
.file-name {
color: var(--text-h);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
max-width: 70%;
}
.file-percent {
color: var(--accent);
font-weight: 600;
}
/* Diagnostics bar */
.diagnostics-bar {
display: flex;
flex-wrap: wrap;
gap: 15px;
background: var(--code-bg);
border: 1px solid var(--border);
padding: 12px 18px;
border-radius: 10px;
font-size: 13px;
}
.diagnostic-stat {
display: flex;
align-items: center;
gap: 6px;
}
.diagnostic-stat::after {
content: '|';
color: var(--border);
margin-left: 15px;
}
.diagnostic-stat:last-child::after {
content: '';
}
.stat-label {
color: var(--text);
}
.stat-val {
font-weight: 600;
color: var(--text-h);
}
.status-green {
color: #10b981;
}
.speed-highlight {
color: var(--accent);
background: var(--accent-bg);
padding: 2px 6px;
border-radius: 4px;
}
/* Tabs Navigation */
.tab-navigation {
display: flex;
gap: 8px;
border-bottom: 1px solid var(--border);
padding-bottom: 2px;
overflow-x: auto;
}
.tab-btn {
background: none;
border: none;
border-bottom: 3px solid transparent;
color: var(--text);
padding: 10px 16px;
font-size: 15px;
font-weight: 600;
cursor: pointer;
transition: all 0.2s ease;
white-space: nowrap;
}
.tab-btn:hover {
color: var(--text-h);
}
.tab-btn.active {
color: var(--accent);
border-bottom-color: var(--accent);
}
/* Tab 1: Interactive Chat */
.chat-container {
display: flex;
flex-direction: column;
height: 520px;
padding: 18px;
}
.chat-log {
flex: 1;
overflow-y: auto;
display: flex;
flex-direction: column;
gap: 16px;
padding-right: 8px;
margin-bottom: 15px;
}
.chat-message {
max-width: 80%;
border-radius: 12px;
padding: 12px 16px;
line-height: 1.5;
font-size: 15px;
display: flex;
flex-direction: column;
}
.chat-message.user {
align-self: flex-end;
background: var(--accent-bg);
border: 1px solid var(--accent-border);
color: var(--text-h);
border-bottom-right-radius: 2px;
}
.chat-message.assistant {
align-self: flex-start;
background: var(--code-bg);
border: 1px solid var(--border);
color: var(--text-h);
border-bottom-left-radius: 2px;
}
.message-header {
font-size: 11px;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.5px;
color: var(--text);
margin-bottom: 4px;
}
.message-body {
word-break: break-word;
white-space: pre-wrap;
}
.chat-input-form {
display: flex;
gap: 10px;
}
.custom-input {
flex: 1;
background: var(--code-bg);
border: 1px solid var(--border);
color: var(--text-h);
padding: 12px 16px;
border-radius: 8px;
font-size: 15px;
outline: none;
font-family: var(--sans);
transition: border-color 0.2s;
}
.custom-input:focus {
border-color: var(--accent);
}
.submit-button {
background: linear-gradient(135deg, var(--accent), #9b28f8);
color: #fff;
border: none;
padding: 0 20px;
border-radius: 8px;
font-size: 14px;
font-weight: 600;
cursor: pointer;
transition: all 0.2s ease;
}
.submit-button:hover:not(:disabled) {
filter: brightness(1.1);
transform: translateY(-1px);
}
.submit-button:disabled {
opacity: 0.6;
cursor: not-allowed;
}
/* Steaming Cursor Pulse */
.streaming-cursor {
display: inline-block;
width: 8px;
height: 15px;
background: var(--accent);
margin-left: 4px;
vertical-align: middle;
animation: cursor-blink 0.8s infinite;
}
@keyframes cursor-blink {
50% { opacity: 0; }
}
/* Tab 2 & 3: Playgrounds Layout */
.playground-layout {
display: grid;
grid-template-columns: 1fr;
gap: 20px;
}
@media (min-width: 800px) {
.playground-layout {
grid-template-columns: 320px 1fr;
}
}
.playground-settings {
display: flex;
flex-direction: column;
gap: 20px;
}
.playground-settings h3 {
margin: 0;
font-size: 18px;
color: var(--text-h);
}
.setting-group {
display: flex;
flex-direction: column;
gap: 6px;
}
.setting-group label {
font-size: 13px;
font-weight: 600;
color: var(--text-h);
}
.setting-group textarea {
background: var(--code-bg);
border: 1px solid var(--border);
color: var(--text-h);
border-radius: 8px;
padding: 10px;
font-family: var(--sans);
font-size: 14px;
resize: vertical;
outline: none;
}
.setting-group textarea:focus {
border-color: var(--accent);
}
.setting-header {
display: flex;
justify-content: space-between;
align-items: center;
}
.setting-value {
font-family: var(--mono);
font-size: 13px;
color: var(--accent);
font-weight: 600;
}
.setting-group input[type="range"] {
accent-color: var(--accent);
}
.help-text {
font-size: 11px;
color: var(--text);
}
.playground-workspace {
display: flex;
flex-direction: column;
gap: 20px;
}
.input-label {
font-weight: 600;
color: var(--text-h);
font-size: 14px;
margin-bottom: 6px;
}
.result-section-title {
font-size: 13px;
font-weight: 700;
text-transform: uppercase;
color: var(--text);
margin-bottom: 10px;
}
.answer-box {
background: var(--bg);
border: 1px solid var(--border);
border-radius: 8px;
padding: 16px;
font-size: 15px;
line-height: 1.6;
white-space: pre-wrap;
color: var(--text-h);
}
/* Badge Tags */
.badge-tag {
display: inline-block;
padding: 3px 8px;
border-radius: 4px;
font-size: 11px;
font-weight: 700;
text-transform: uppercase;
}
.badge-tag.none {
background: #10b981;
color: #fff;
}
.badge-tag.error {
background: #ef4444;
color: #fff;
}