|
142 | 142 | box-shadow: var(--shadow-sidebar); |
143 | 143 | transition: width var(--duration-normal) var(--ease-default), |
144 | 144 | transform var(--duration-normal) var(--ease-default); |
| 145 | + will-change: transform; |
145 | 146 | } |
146 | 147 |
|
147 | 148 | .sidebar-overlay { |
|
244 | 245 | flex: 1; |
245 | 246 | overflow: hidden; |
246 | 247 | text-overflow: ellipsis; |
| 248 | + transition: opacity 150ms ease; |
247 | 249 | } |
248 | 250 |
|
249 | 251 | .nav-external { |
|
539 | 541 | } |
540 | 542 |
|
541 | 543 | .toast-success { |
542 | | - background: rgba(20, 184, 166, 0.15); |
543 | | - border: 1px solid rgba(20, 184, 166, 0.3); |
| 544 | + background: var(--color-success-light); |
| 545 | + border: 1px solid var(--color-success-border); |
544 | 546 | color: var(--color-success); |
545 | 547 | } |
546 | 548 | .toast-error { |
547 | | - background: rgba(239, 68, 68, 0.15); |
548 | | - border: 1px solid rgba(239, 68, 68, 0.3); |
| 549 | + background: var(--color-error-light); |
| 550 | + border: 1px solid var(--color-error-border); |
549 | 551 | color: var(--color-error); |
550 | 552 | } |
551 | 553 | .toast-warning { |
552 | | - background: rgba(245, 158, 11, 0.15); |
553 | | - border: 1px solid rgba(245, 158, 11, 0.3); |
| 554 | + background: var(--color-warning-light); |
| 555 | + border: 1px solid var(--color-warning-border); |
554 | 556 | color: var(--color-warning); |
555 | 557 | } |
556 | 558 | .toast-info { |
557 | | - background: rgba(56, 189, 248, 0.15); |
558 | | - border: 1px solid rgba(56, 189, 248, 0.3); |
| 559 | + background: var(--color-info-light); |
| 560 | + border: 1px solid var(--color-info-border); |
559 | 561 | color: var(--color-info); |
560 | 562 | } |
561 | 563 |
|
|
747 | 749 | border: 1px solid var(--color-border-subtle); |
748 | 750 | border-radius: var(--radius-lg); |
749 | 751 | padding: var(--spacing-md); |
750 | | - transition: border-color var(--duration-fast), box-shadow var(--duration-fast); |
| 752 | + transition: border-color var(--duration-fast), box-shadow var(--duration-fast), transform var(--duration-fast); |
751 | 753 | } |
752 | 754 |
|
753 | 755 | .card:hover { |
754 | 756 | border-color: var(--color-border-default); |
755 | 757 | box-shadow: var(--shadow-sm); |
| 758 | + transform: translateY(-1px); |
756 | 759 | } |
757 | 760 |
|
758 | 761 | .card-grid { |
|
773 | 776 | font-weight: 500; |
774 | 777 | cursor: pointer; |
775 | 778 | border: none; |
776 | | - transition: all var(--duration-fast) var(--ease-default); |
| 779 | + transition: background var(--duration-fast) var(--ease-default), color var(--duration-fast) var(--ease-default), border-color var(--duration-fast) var(--ease-default), box-shadow var(--duration-fast) var(--ease-default); |
777 | 780 | text-decoration: none; |
778 | 781 | } |
779 | 782 |
|
|
1410 | 1413 | 50% { opacity: 0.5; } |
1411 | 1414 | } |
1412 | 1415 |
|
| 1416 | +@keyframes messageSlideIn { |
| 1417 | + from { opacity: 0; transform: translateY(8px); } |
| 1418 | + to { opacity: 1; transform: translateY(0); } |
| 1419 | +} |
| 1420 | + |
| 1421 | +@keyframes dropdownIn { |
| 1422 | + from { opacity: 0; transform: translateY(-4px); } |
| 1423 | + to { opacity: 1; transform: translateY(0); } |
| 1424 | +} |
| 1425 | + |
| 1426 | +@keyframes completionGlow { |
| 1427 | + 0% { box-shadow: 0 0 0 0 rgba(59, 130, 246, 0.2); } |
| 1428 | + 50% { box-shadow: 0 0 0 4px rgba(59, 130, 246, 0.1); } |
| 1429 | + 100% { box-shadow: 0 0 0 0 rgba(59, 130, 246, 0); } |
| 1430 | +} |
| 1431 | + |
| 1432 | +/* Page route transitions */ |
| 1433 | +.page-transition { |
| 1434 | + animation: fadeIn 200ms ease; |
| 1435 | + display: flex; |
| 1436 | + flex-direction: column; |
| 1437 | + flex: 1; |
| 1438 | + min-height: 0; |
| 1439 | + min-width: 0; |
| 1440 | +} |
| 1441 | + |
| 1442 | +/* Completion glow on streaming finish */ |
| 1443 | +.chat-message-new .chat-message-content { |
| 1444 | + animation: completionGlow 600ms ease-out; |
| 1445 | +} |
| 1446 | + |
1413 | 1447 | /* Chat-specific styles */ |
1414 | 1448 | .chat-layout { |
1415 | 1449 | display: flex; |
|
1468 | 1502 | cursor: pointer; |
1469 | 1503 | font-size: 0.8125rem; |
1470 | 1504 | color: var(--color-text-secondary); |
1471 | | - transition: all var(--duration-fast); |
| 1505 | + transition: background var(--duration-fast), color var(--duration-fast), transform var(--duration-fast); |
1472 | 1506 | margin-bottom: 2px; |
1473 | 1507 | } |
1474 | 1508 |
|
1475 | 1509 | .chat-list-item:hover { |
1476 | 1510 | background: var(--color-primary-light); |
| 1511 | + transform: translateX(2px); |
1477 | 1512 | } |
1478 | 1513 |
|
1479 | 1514 | .chat-list-item.active { |
|
1570 | 1605 | gap: var(--spacing-sm); |
1571 | 1606 | max-width: 80%; |
1572 | 1607 | min-width: 0; |
1573 | | - animation: fadeIn 200ms ease; |
| 1608 | + animation: messageSlideIn 250ms ease-out; |
1574 | 1609 | } |
1575 | 1610 |
|
1576 | 1611 | .chat-message-user { |
|
1740 | 1775 | } |
1741 | 1776 | .chat-input-wrapper:focus-within { |
1742 | 1777 | border-color: var(--color-primary-border); |
1743 | | - box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.12), 0 0 12px rgba(99, 102, 241, 0.06); |
| 1778 | + box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.12), 0 0 12px rgba(59, 130, 246, 0.06); |
1744 | 1779 | } |
1745 | 1780 |
|
1746 | 1781 | .chat-attach-btn { |
|
1798 | 1833 | opacity: 0.3; |
1799 | 1834 | cursor: not-allowed; |
1800 | 1835 | } |
| 1836 | +.chat-send-btn:active:not(:disabled) { |
| 1837 | + transform: scale(0.92); |
| 1838 | +} |
1801 | 1839 |
|
1802 | 1840 | .chat-stop-btn { |
1803 | 1841 | padding: var(--spacing-xs); |
|
2128 | 2166 | overflow-y: auto; |
2129 | 2167 | } |
2130 | 2168 | .chat-activity-thinking { |
2131 | | - border-left-color: rgba(99, 102, 241, 0.3); |
| 2169 | + border-left-color: rgba(59, 130, 246, 0.3); |
2132 | 2170 | } |
2133 | 2171 | .chat-activity-tool-call { |
2134 | | - border-left-color: rgba(139, 92, 246, 0.3); |
| 2172 | + border-left-color: rgba(245, 158, 11, 0.3); |
2135 | 2173 | } |
2136 | 2174 | .chat-activity-tool-result { |
2137 | | - border-left-color: rgba(20, 184, 166, 0.3); |
| 2175 | + border-left-color: rgba(34, 197, 94, 0.3); |
2138 | 2176 | } |
2139 | 2177 |
|
2140 | 2178 | /* Context window progress bar */ |
|
2230 | 2268 | border: 1px solid var(--color-border-subtle); |
2231 | 2269 | border-radius: var(--radius-md); |
2232 | 2270 | box-shadow: var(--shadow-lg); |
| 2271 | + animation: dropdownIn 120ms ease-out; |
2233 | 2272 | } |
2234 | 2273 | .chat-mcp-dropdown-loading, |
2235 | 2274 | .chat-mcp-dropdown-empty { |
|
2305 | 2344 | background: var(--color-text-tertiary); |
2306 | 2345 | } |
2307 | 2346 | .chat-client-mcp-status-connected { |
2308 | | - background: #22c55e; |
| 2347 | + background: var(--color-success); |
2309 | 2348 | box-shadow: 0 0 4px rgba(34, 197, 94, 0.5); |
2310 | 2349 | } |
2311 | 2350 | .chat-client-mcp-status-connecting { |
2312 | | - background: #f59e0b; |
| 2351 | + background: var(--color-warning); |
2313 | 2352 | animation: pulse 1s infinite; |
2314 | 2353 | } |
2315 | 2354 | .chat-client-mcp-status-error { |
2316 | | - background: #ef4444; |
| 2355 | + background: var(--color-error); |
2317 | 2356 | } |
2318 | 2357 | .chat-client-mcp-status-disconnected { |
2319 | 2358 | background: var(--color-text-tertiary); |
|
2394 | 2433 | transform: translateX(100%); |
2395 | 2434 | transition: transform 250ms var(--ease-default); |
2396 | 2435 | box-shadow: var(--shadow-lg); |
| 2436 | + will-change: transform; |
2397 | 2437 | } |
2398 | 2438 | .chat-settings-drawer.open { |
2399 | 2439 | transform: translateX(0); |
|
2488 | 2528 |
|
2489 | 2529 | /* Max tokens/sec badge */ |
2490 | 2530 | .chat-max-tps-badge { |
2491 | | - background: rgba(99, 102, 241, 0.15); |
| 2531 | + background: rgba(59, 130, 246, 0.15); |
2492 | 2532 | color: var(--color-primary); |
2493 | 2533 | padding: 1px 6px; |
2494 | 2534 | border-radius: var(--radius-full); |
|
2542 | 2582 | align-items: center; |
2543 | 2583 | gap: 4px; |
2544 | 2584 | padding: 2px 6px; |
2545 | | - background: rgba(99, 102, 241, 0.1); |
| 2585 | + background: rgba(59, 130, 246, 0.1); |
2546 | 2586 | border-radius: var(--radius-sm); |
2547 | 2587 | font-size: 0.7rem; |
2548 | 2588 | color: var(--color-text-secondary); |
|
3097 | 3137 | padding: var(--spacing-lg); |
3098 | 3138 | box-shadow: var(--shadow-lg); |
3099 | 3139 | animation: slideUp 150ms ease; |
| 3140 | + will-change: transform, opacity; |
3100 | 3141 | } |
3101 | 3142 | @keyframes slideUp { |
3102 | 3143 | from { opacity: 0; transform: translateY(8px); } |
|
3249 | 3290 | } |
3250 | 3291 | .home-input-container:focus-within { |
3251 | 3292 | border-color: var(--color-primary-border); |
3252 | | - box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.12), 0 0 12px rgba(99, 102, 241, 0.06); |
| 3293 | + box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.12), 0 0 12px rgba(59, 130, 246, 0.06); |
3253 | 3294 | } |
3254 | 3295 | .home-textarea { |
3255 | 3296 | width: 100%; |
|
3320 | 3361 | opacity: 0.3; |
3321 | 3362 | cursor: not-allowed; |
3322 | 3363 | } |
| 3364 | +.home-send-btn:active:not(:disabled) { |
| 3365 | + transform: scale(0.92); |
| 3366 | +} |
3323 | 3367 |
|
3324 | 3368 | /* Home quick links */ |
3325 | 3369 | .home-quick-links { |
|
3347 | 3391 | .home-link-btn:hover { |
3348 | 3392 | border-color: var(--color-primary-border); |
3349 | 3393 | color: var(--color-primary); |
| 3394 | + transform: translateY(-1px); |
3350 | 3395 | } |
3351 | 3396 |
|
3352 | 3397 | /* Home loaded models */ |
|
0 commit comments