.console { display: flex; flex-direction: column; background-color: #ffffff; border: 1px solid #e0e0e0; border-radius: 8px; font-family: monospace; font-size: 12px; line-height: 1; overflow: hidden; scroll-behavior: none; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); } .historyArea { flex: 1; overflow-y: auto; padding: 12px; background-color: #fafafa; min-height: 200px; display: flex; flex-direction: column; scroll-behavior: contain; &::-webkit-scrollbar { width: 6px; } &::-webkit-scrollbar-track { background: transparent; } &::-webkit-scrollbar-thumb { background-color: #d0d0d0; border-radius: 3px; } &::-webkit-scrollbar-thumb:hover { background-color: #b0b0b0; } .historyItem { display: flex; align-items: center; font-size: 12px; line-height: 1; padding-bottom: 6px; border-bottom: #ccdeeebd 1px solid; margin-bottom: 6px; flex: 0 0 auto; &:last-child { margin-bottom: 0; border-bottom: none; } &.input { } &.output { } .content { margin: 0; white-space: pre-wrap; word-break: break-word; flex: 1; font-family: inherit; font-size: inherit; line-height: inherit; color: #2563eb; } /* 错误样式 */ &.error .content { color: #dc2626; background-color: #fef2f2; padding: 4px 8px; border-radius: 4px; border-left: 3px solid #dc2626; } } } .prompt { display: flex; height: 100%; align-items: flex-start; width: 12px; color: #666; margin-right: 8px; font-weight: 500; flex-shrink: 0; user-select: none; } .executing { color: #f59e0b; font-style: italic; animation: pulse 1.5s ease-in-out infinite; } @keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } } .inputArea { display: flex; align-items: center; padding: 12px; background-color: #ffffff; border-top: 1px solid #e0e0e0; .prompt { margin-top: 8px; } .input { flex: auto; border: none; outline: none; background: transparent; color: #333; resize: none; line-height: 20px; } .input::placeholder { color: #999; font-style: italic; } .input:disabled { opacity: 0.6; cursor: not-allowed; } } /* 响应式设计 */ @media (max-width: 768px) { .console { font-size: 12px; border-radius: 6px; } .historyArea, .inputLine { padding: 8px; } .prompt { margin-right: 6px; } }