/** * Enhanced Chat Input Component Styles * CodeNomad-style sophisticated prompt input */ /* === Chat Input Container === */ .chat-input-wrapper-enhanced { display: flex; flex-direction: column; position: relative; } /* === Attachment Chips === */ .attachment-chips { display: flex; align-items: center; gap: 8px; padding: 8px; overflow-x: auto; overflow-y: hidden; max-height: 120px; scrollbar-width: thin; scrollbar-color: #484f58 #161b22; } .attachment-chips::-webkit-scrollbar { height: 6px; } .attachment-chips::-webkit-scrollbar-track { background: #161b22; border-radius: 3px; } .attachment-chips::-webkit-scrollbar-thumb { background: #484f58; border-radius: 3px; } .attachment-chips::-webkit-scrollbar-thumb:hover { background: #6e7681; } .attachment-chips:empty { display: none; } /* === Attachment Chip === */ .attachment-chip { display: flex; align-items: center; gap: 8px; padding: 6px 10px; background: #21262d; border: 1px solid #30363d; border-radius: 6px; font-size: 13px; color: #c9d1d9; white-space: nowrap; flex-shrink: 0; } .attachment-chip.image-chip { padding: 4px; } .attachment-chip.image-chip img { width: 32px; height: 32px; object-fit: cover; border-radius: 4px; } .attachment-chip .chip-icon { font-size: 14px; } .attachment-chip .chip-name, .attachment-chip .chip-label { font-weight: 500; } .attachment-chip .chip-info { font-size: 11px; color: #8b949e; } .attachment-chip .chip-remove { display: flex; align-items: center; justify-content: center; width: 18px; height: 18px; padding: 0; background: transparent; border: none; color: #8b949e; cursor: pointer; border-radius: 3px; font-size: 16px; line-height: 1; transition: all 0.15s ease; } .attachment-chip .chip-remove:hover { background: #484f58; color: #ffffff; } /* === Chat Input Wrapper === */ .chat-input-wrapper-enhanced .chat-input-wrapper { display: flex; align-items: flex-end; gap: 8px; padding: 8px; background: #161b22; border: 1px solid #30363d; border-radius: 8px; } .chat-input-wrapper-enhanced .input-actions-left, .chat-input-wrapper-enhanced .input-actions-right { display: flex; align-items: center; gap: 4px; } .chat-input-wrapper-enhanced textarea { flex: 1; min-height: 24px; max-height: 360px; padding: 8px 12px; background: #0d1117; border: 1px solid #30363d; border-radius: 6px; color: #c9d1d9; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; font-size: 14px; line-height: 1.5; resize: none; overflow-y: auto; } .chat-input-wrapper-enhanced textarea:focus { outline: none; border-color: #58a6ff; box-shadow: 0 0 0 3px rgba(88, 166, 255, 0.1); } .chat-input-wrapper-enhanced .btn-attach, .chat-input-wrapper-enhanced .btn-send { display: flex; align-items: center; justify-content: center; padding: 8px 16px; border-radius: 6px; font-size: 14px; font-weight: 500; cursor: pointer; transition: all 0.15s ease; } .chat-input-wrapper-enhanced .btn-attach { background: #21262d; border: 1px solid #30363d; color: #c9d1d9; } .chat-input-wrapper-enhanced .btn-attach:hover { background: #30363d; } .chat-input-wrapper-enhanced .btn-send { background: #1f6feb; border: 1px solid #1f6feb; color: #ffffff; } .chat-input-wrapper-enhanced .btn-send:hover { background: #388bfd; } /* === Input Info Bar === */ .chat-input-wrapper-enhanced .input-info-bar { display: flex; align-items: center; gap: 16px; padding: 4px 8px; font-size: 11px; color: #8b949e; } .chat-input-wrapper-enhanced .token-count, .chat-input-wrapper-enhanced .char-count { white-space: nowrap; } /* === Unified Picker === */ .unified-picker { position: absolute; bottom: 100%; left: 0; right: 0; max-height: 200px; overflow-y: auto; background: #161b22; border: 1px solid #30363d; border-radius: 8px 8px 0 0; margin-bottom: 4px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.5); } .unified-picker.hidden { display: none; } .picker-item { display: flex; align-items: center; justify-content: space-between; padding: 8px 12px; cursor: pointer; transition: background 0.15s ease; } .picker-item:hover { background: #21262d; } .picker-item .picker-label { font-weight: 500; } .picker-item .picker-description { font-size: 12px; color: #8b949e; } /* === Mobile Responsive === */ @media (max-width: 640px) { .attachment-chips { max-height: 100px; } .attachment-chip { font-size: 12px; padding: 4px 8px; } .attachment-chip.image-chip img { width: 24px; height: 24px; } .attachment-chip .chip-remove { width: 24px; height: 24px; } .chat-input-wrapper-enhanced .chat-input-wrapper { padding: 6px; gap: 6px; } .chat-input-wrapper-enhanced textarea { font-size: 16px; /* Prevent zoom on iOS */ } .chat-input-wrapper-enhanced .btn-attach, .chat-input-wrapper-enhanced .btn-send { min-width: 44px; min-height: 44px; padding: 12px; } .chat-input-wrapper-enhanced .input-info-bar { flex-wrap: wrap; gap: 8px; } } /* === Touch Targets === */ @media (hover: none) and (pointer: coarse) { .attachment-chip .chip-remove { width: 44px; height: 44px; } } /* === Focus Styles === */ .chat-input-wrapper-enhanced textarea:focus-visible, .chat-input-wrapper-enhanced .btn-attach:focus-visible, .chat-input-wrapper-enhanced .btn-send:focus-visible { outline: 2px solid #58a6ff; outline-offset: 2px; } /* === Queued Message Indicator === */ .queued-message-indicator { display: flex; align-items: center; gap: 8px; padding: 8px 12px; background: rgba(255, 107, 107, 0.15); border: 1px solid rgba(255, 107, 107, 0.3); border-radius: 6px; margin-bottom: 8px; font-size: 13px; color: #ff6b6b; animation: slideIn 0.3s ease; } .queued-message-indicator .indicator-icon { font-size: 16px; animation: pulse 1.5s ease-in-out infinite; } .queued-message-indicator .indicator-count { font-weight: 600; } @keyframes slideIn { from { opacity: 0; transform: translateY(-10px); } to { opacity: 1; transform: translateY(0); } } @keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } }