.ai-panel-section { margin-bottom: 0; } .ai-panel-header { display: flex; align-items: center; gap: 12px; margin-bottom: 16px; } .ai-panel-title { font-size: 18px; font-weight: 600; color: #343A40; padding-left: 12px; border-left: 4px solid #343A40; margin: 0; flex: 1; } .ai-btn-refresh { padding: 5px 14px; font-size: 12px; font-weight: 500; border-radius: 6px; border: 1px solid #343A40; background: #343A40; color: white; cursor: pointer; white-space: nowrap; &:hover:not(:disabled) { background: #1E1E20; border-color: #1E1E20; } &:disabled { opacity: 0.65; cursor: not-allowed; } } .ai-summary-card { background: #F8F9FA; border: 1px solid #E9ECEF; border-radius: 8px; padding: 20px 24px; min-height: 72px; display: flex; align-items: flex-start; width: 100%; } .ai-loading { display: flex; flex-direction: column; gap: 12px; color: #868E96; font-size: 14px; padding: 8px 0; } .ai-loading-main { display: flex; align-items: center; gap: 12px; } .ai-progress-wrap { display: flex; align-items: center; gap: 10px; width: 100%; } .ai-progress-bar { flex: 1; max-width: 300px; height: 4px; background: #e8e8e8; border-radius: 2px; overflow: hidden; } .ai-progress-fill { height: 100%; background: linear-gradient(90deg, #3b82f6, #60a5fa); border-radius: 2px; transition: width 0.8s ease; } .ai-elapsed { font-size: 11px; color: #adb5bd; white-space: nowrap; } .ai-dots { display: flex; gap: 4px; span { width: 6px; height: 6px; border-radius: 50%; background: #3b82f6; animation: ai-bounce 1.2s ease-in-out infinite; &:nth-child(2) { animation-delay: 0.2s; } &:nth-child(3) { animation-delay: 0.4s; } } } @keyframes ai-bounce { 0%, 80%, 100% { transform: scale(0.6); opacity: 0.4; } 40% { transform: scale(1); opacity: 1; } } .ai-summary-body { display: flex; gap: 16px; width: 100%; } .ai-summary-body-visual { display: block; } .ai-visual-pending { display: flex; align-items: center; gap: 12px; color: #475467; font-size: 14px; padding: 8px 0; } .ai-visual-streaming { display: flex; align-items: center; gap: 12px; color: #475467; font-size: 13px; padding: 8px 0; } .ai-icon-wrap { flex-shrink: 0; width: 28px; height: 28px; border-radius: 50%; background: #3b82f6; display: flex; align-items: center; justify-content: center; margin-top: 2px; .ai-icon { color: white; font-size: 13px; line-height: 1; } } .ai-text { flex: 1; font-size: 14px; line-height: 1.8; color: #1f2937; margin: 0; } .ai-markdown { ::ng-deep { h1, h2, h3, h4 { font-size: 15px; font-weight: 600; color: #111827; margin: 12px 0 6px; padding: 0; line-height: 1.5; &:first-child { margin-top: 0; } } h3, h4 { font-size: 14px; } p { margin: 4px 0; line-height: 1.75; } strong { font-weight: 600; color: #111827; } em { color: #4b5563; } ul, ol { margin: 4px 0; padding-left: 20px; } li { margin: 2px 0; line-height: 1.7; } blockquote { margin: 8px 0; padding: 6px 12px; border-left: 3px solid #93c5fd; background: #f0f7ff; border-radius: 0 6px 6px 0; color: #374151; font-size: 13px; } code { padding: 1px 5px; background: #f3f4f6; border-radius: 3px; font-size: 13px; color: #dc2626; } pre { width: 100%; box-sizing: border-box; margin: 10px 0; border: 1px solid #d8dee8; border-radius: 8px; background: #f8fafc; color: #111827; padding: 12px 14px; overflow-x: auto; white-space: pre; font-family: Consolas, Menlo, ui-monospace, SFMono-Regular, monospace; font-size: 13px; line-height: 1.65; code { padding: 0; background: transparent; color: inherit; font-size: inherit; } } table { width: 100%; border-collapse: collapse; margin: 12px 0; font-size: 13px; border: 1px solid #e5e7eb; border-radius: 8px; overflow: hidden; display: block; overflow-x: auto; thead { background: linear-gradient(135deg, #f0f4ff 0%, #e8ecff 100%); th { padding: 10px 14px; text-align: left; font-weight: 600; color: #1f2937; border-bottom: 2px solid #d1d5db; border-right: 1px solid #e5e7eb; white-space: nowrap; font-size: 12px; letter-spacing: 0.3px; &:last-child { border-right: none; } } } tbody { tr { transition: background 0.15s; &:nth-child(even) { background: #f9fafb; } &:hover { background: #eef2ff; } td { padding: 8px 14px; border-bottom: 1px solid #f0f0f0; border-right: 1px solid #f0f0f0; color: #374151; line-height: 1.6; vertical-align: top; &:last-child { border-right: none; } } &:last-child td { border-bottom: none; } } } } hr { border: none; border-top: 1px solid #e5e7eb; margin: 10px 0; } & > *:last-child { margin-bottom: 0; } span.review-phrase-link { color: #0958d9; background: #e6f4ff; border: 1px dashed #91caff; border-radius: 12px; padding: 1px 8px; text-decoration: none; cursor: pointer; font-size: 13px; transition: all 0.2s; white-space: nowrap; &:hover { background: #bae0ff; border-color: #69b1ff; } } span.review-name-link { color: #7c3aed; background: #f5f3ff; border: 1px dashed #c4b5fd; border-radius: 12px; padding: 1px 8px; text-decoration: none; cursor: pointer; font-size: 13px; transition: all 0.2s; white-space: nowrap; &:hover { background: #ede9fe; border-color: #a78bfa; box-shadow: 0 1px 4px rgba(124, 58, 237, 0.15); } } } } .ai-cursor { display: inline-block; color: #3b82f6; font-weight: 700; animation: blink 0.8s step-end infinite; } @keyframes blink { 0%, 100% { opacity: 1; } 50% { opacity: 0; } } // ── Mini mode overrides ── .ai-size-mini { .ai-summary-card { padding: 12px 16px; min-height: 36px; border-radius: 8px; background: linear-gradient(135deg, #f8faff 0%, #f0f4ff 100%); } .ai-icon-wrap { width: 22px; height: 22px; margin-top: 1px; .ai-icon { font-size: 11px; } } .ai-summary-body { gap: 10px; } .ai-text { font-size: 13px; line-height: 1.7; } .ai-loading-text { font-size: 12px; } .ai-dots span { width: 5px; height: 5px; } } .ai-mini-idle { display: flex; align-items: center; width: 100%; } .ai-btn-mini-gen { padding: 4px 14px; font-size: 12px; font-weight: 500; border-radius: 6px; border: 1px dashed #93c5fd; background: transparent; color: #3b82f6; cursor: pointer; transition: all 0.2s; &:hover { background: #eff6ff; border-style: solid; } } // ---- Chat button ---- .ai-chat-action { display: flex; justify-content: flex-end; margin-top: 10px; } .ai-btn-chat { background: #343A40; color: #fff; border: none; border-radius: 20px; padding: 7px 20px; font-size: 13px; font-weight: 500; cursor: pointer; transition: opacity 0.2s, box-shadow 0.2s; &:hover { opacity: 0.9; box-shadow: 0 2px 10px rgba(52, 58, 64, 0.15); } } .ai-mini-actions { display: flex; justify-content: flex-end; margin-top: 4px; } .ai-btn-mini-refresh { padding: 0; font-size: 11px; color: #9ca3af; background: none; border: none; cursor: pointer; text-decoration: underline; &:hover { color: #3b82f6; } }