|
|
* { |
|
|
margin: 0; |
|
|
padding: 0; |
|
|
box-sizing: border-box; |
|
|
} |
|
|
|
|
|
body { |
|
|
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; |
|
|
background: #000000; |
|
|
color: #ffffff; |
|
|
height: 100vh; |
|
|
overflow: hidden; |
|
|
position: relative; |
|
|
} |
|
|
|
|
|
html { |
|
|
background-color: #000000; |
|
|
} |
|
|
|
|
|
body::before { |
|
|
content: ''; |
|
|
position: fixed; |
|
|
top: 0; |
|
|
left: 0; |
|
|
width: 100%; |
|
|
height: 100%; |
|
|
background: |
|
|
radial-gradient(circle at 20% 50%, rgba(120, 119, 198, 0.15) 0%, transparent 50%), |
|
|
radial-gradient(circle at 80% 20%, rgba(255, 119, 198, 0.15) 0%, transparent 50%), |
|
|
radial-gradient(circle at 40% 80%, rgba(119, 198, 255, 0.15) 0%, transparent 50%); |
|
|
pointer-events: none; |
|
|
z-index: -1; |
|
|
} |
|
|
|
|
|
.container { |
|
|
max-width: 1200px; |
|
|
width: 100%; |
|
|
margin: 0 auto; |
|
|
height: 100vh; |
|
|
display: flex; |
|
|
flex-direction: column; |
|
|
padding: 20px; |
|
|
} |
|
|
|
|
|
.main-frame { |
|
|
background: rgba(15, 15, 35, 0.9); |
|
|
border-radius: 20px; |
|
|
flex: 1; |
|
|
display: flex; |
|
|
flex-direction: column; |
|
|
box-shadow: |
|
|
0 25px 50px rgba(0, 0, 0, 0.5), |
|
|
0 0 0 1px rgba(255, 255, 255, 0.1), |
|
|
inset 0 1px 0 rgba(255, 255, 255, 0.1); |
|
|
backdrop-filter: blur(20px); |
|
|
border: 1px solid rgba(255, 255, 255, 0.1); |
|
|
overflow: hidden; |
|
|
} |
|
|
|
|
|
.header-frame { |
|
|
background: linear-gradient(135deg, rgba(120, 119, 198, 0.2) 0%, rgba(255, 119, 198, 0.1) 100%); |
|
|
border-radius: 16px 16px 0 0; |
|
|
padding: 30px; |
|
|
text-align: center; |
|
|
border-bottom: 1px solid rgba(255, 255, 255, 0.1); |
|
|
position: relative; |
|
|
overflow: hidden; |
|
|
} |
|
|
|
|
|
.header-frame::before { |
|
|
content: ''; |
|
|
position: absolute; |
|
|
top: 0; |
|
|
left: -100%; |
|
|
width: 100%; |
|
|
height: 100%; |
|
|
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.1), transparent); |
|
|
animation: shimmer 4s infinite; |
|
|
} |
|
|
|
|
|
@keyframes shimmer { |
|
|
0% { left: -100%; } |
|
|
100% { left: 100%; } |
|
|
} |
|
|
|
|
|
.title { |
|
|
font-size: 36px; |
|
|
font-weight: 900; |
|
|
background: linear-gradient(135deg, #7877c6, #ff77c6, #77c6ff); |
|
|
-webkit-background-clip: text; |
|
|
-webkit-text-fill-color: transparent; |
|
|
background-clip: text; |
|
|
margin-bottom: 10px; |
|
|
letter-spacing: -0.02em; |
|
|
text-shadow: 0 0 30px rgba(120, 119, 198, 0.5); |
|
|
} |
|
|
|
|
|
.subtitle { |
|
|
font-size: 18px; |
|
|
color: #a0a0b0; |
|
|
font-weight: 500; |
|
|
opacity: 0.9; |
|
|
} |
|
|
|
|
|
.status-indicator { |
|
|
position: absolute; |
|
|
top: 20px; |
|
|
right: 30px; |
|
|
display: flex; |
|
|
align-items: center; |
|
|
gap: 8px; |
|
|
font-size: 12px; |
|
|
font-weight: 600; |
|
|
text-transform: uppercase; |
|
|
letter-spacing: 0.5px; |
|
|
} |
|
|
|
|
|
.status-dot { |
|
|
width: 8px; |
|
|
height: 8px; |
|
|
border-radius: 50%; |
|
|
background: #10b981; |
|
|
animation: pulse 2s infinite; |
|
|
} |
|
|
|
|
|
@keyframes pulse { |
|
|
0%, 100% { opacity: 1; transform: scale(1); } |
|
|
50% { opacity: 0.7; transform: scale(1.1); } |
|
|
} |
|
|
|
|
|
|
|
|
.chat-canva-wrapper { |
|
|
display: flex; |
|
|
width: 100%; |
|
|
flex: 1; |
|
|
min-height: 0; |
|
|
transition: all 0.5s cubic-bezier(.4,2,.6,1); |
|
|
} |
|
|
|
|
|
.chat-section { |
|
|
flex: 1; |
|
|
display: flex; |
|
|
flex-direction: column; |
|
|
min-height: 0; |
|
|
transition: flex 0.5s cubic-bezier(.4,2,.6,1); |
|
|
} |
|
|
|
|
|
.chat-header { |
|
|
background: linear-gradient(135deg, rgba(120, 119, 198, 0.2) 0%, rgba(255, 119, 198, 0.1) 100%); |
|
|
border-radius: 16px 16px 0 0; |
|
|
padding: 20px 30px; |
|
|
text-align: center; |
|
|
border-bottom: 1px solid rgba(255, 255, 255, 0.1); |
|
|
position: relative; |
|
|
overflow: hidden; |
|
|
flex-shrink: 0; |
|
|
} |
|
|
|
|
|
.chat-header::before { |
|
|
content: ''; |
|
|
position: absolute; |
|
|
top: 0; |
|
|
left: -100%; |
|
|
width: 100%; |
|
|
height: 100%; |
|
|
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.1), transparent); |
|
|
animation: shimmer 4s infinite; |
|
|
} |
|
|
|
|
|
.chat-header .title { |
|
|
font-size: 24px; |
|
|
font-weight: 900; |
|
|
background: linear-gradient(135deg, #7877c6, #ff77c6, #77c6ff); |
|
|
-webkit-background-clip: text; |
|
|
-webkit-text-fill-color: transparent; |
|
|
background-clip: text; |
|
|
margin-bottom: 5px; |
|
|
letter-spacing: -0.02em; |
|
|
text-shadow: 0 0 30px rgba(120, 119, 198, 0.5); |
|
|
} |
|
|
|
|
|
.chat-header .subtitle { |
|
|
font-size: 14px; |
|
|
color: #a0a0b0; |
|
|
font-weight: 500; |
|
|
opacity: 0.9; |
|
|
} |
|
|
|
|
|
.chat-frame { |
|
|
background: rgba(0, 0, 0, 0.2); |
|
|
flex: 1; |
|
|
overflow-y: auto; |
|
|
overflow-x: hidden; |
|
|
padding: 25px; |
|
|
margin: 0; |
|
|
scrollbar-width: thin; |
|
|
scrollbar-color: rgba(120, 119, 198, 0.5) transparent; |
|
|
min-height: 0; |
|
|
} |
|
|
|
|
|
.canva-section { |
|
|
width: 0; |
|
|
display: none; |
|
|
flex-direction: column; |
|
|
border-left: 1px solid rgba(255, 255, 255, 0.1); |
|
|
background: rgba(0, 0, 0, 0.1); |
|
|
position: relative; |
|
|
overflow: hidden; |
|
|
transition: width 0.5s cubic-bezier(.4,2,.6,1); |
|
|
} |
|
|
|
|
|
.canva-controls { |
|
|
display: flex; |
|
|
gap: 10px; |
|
|
padding: 15px; |
|
|
background: rgba(0, 0, 0, 0.3); |
|
|
border-bottom: 1px solid rgba(255, 255, 255, 0.1); |
|
|
justify-content: flex-end; |
|
|
flex-shrink: 0; |
|
|
} |
|
|
|
|
|
.canva-btn { |
|
|
background: rgba(255, 255, 255, 0.1); |
|
|
border: 1px solid rgba(255, 255, 255, 0.2); |
|
|
border-radius: 8px; |
|
|
padding: 8px 12px; |
|
|
color: #fff; |
|
|
cursor: pointer; |
|
|
font-size: 14px; |
|
|
transition: all 0.3s ease; |
|
|
display: flex; |
|
|
align-items: center; |
|
|
gap: 5px; |
|
|
} |
|
|
|
|
|
.canva-btn:hover { |
|
|
background: rgba(120, 119, 198, 0.3); |
|
|
border-color: #7877c6; |
|
|
transform: translateY(-1px); |
|
|
} |
|
|
|
|
|
.canva-iframe { |
|
|
width: 100%; |
|
|
height: 100%; |
|
|
border: none; |
|
|
background: #fff; |
|
|
flex: 1; |
|
|
min-height: 0; |
|
|
} |
|
|
|
|
|
|
|
|
.canva-active .header-frame { |
|
|
display: none; |
|
|
} |
|
|
|
|
|
.canva-active .chat-header { |
|
|
display: block; |
|
|
} |
|
|
|
|
|
.canva-active .canva-section { |
|
|
width: 50%; |
|
|
} |
|
|
|
|
|
.canva-active .chat-section { |
|
|
flex: 1; |
|
|
} |
|
|
|
|
|
.chat-frame::-webkit-scrollbar { |
|
|
width: 6px; |
|
|
} |
|
|
|
|
|
.chat-frame::-webkit-scrollbar-track { |
|
|
background: transparent; |
|
|
} |
|
|
|
|
|
.chat-frame::-webkit-scrollbar-thumb { |
|
|
background: rgba(120, 119, 198, 0.5); |
|
|
border-radius: 3px; |
|
|
} |
|
|
|
|
|
.chat-frame::-webkit-scrollbar-thumb:hover { |
|
|
background: rgba(120, 119, 198, 0.7); |
|
|
} |
|
|
|
|
|
.message-frame { |
|
|
background: linear-gradient(135deg, rgba(255, 255, 255, 0.05) 0%, rgba(255, 255, 255, 0.02) 100%); |
|
|
border-radius: 16px; |
|
|
margin-bottom: 20px; |
|
|
padding: 20px; |
|
|
border-left: 4px solid #7877c6; |
|
|
animation: slideIn 0.4s ease-out; |
|
|
position: relative; |
|
|
backdrop-filter: blur(10px); |
|
|
border: 1px solid rgba(255, 255, 255, 0.1); |
|
|
} |
|
|
|
|
|
.message-frame.agent { |
|
|
border-left-color: #10b981; |
|
|
background: linear-gradient(135deg, rgba(16, 185, 129, 0.1) 0%, rgba(16, 185, 129, 0.05) 100%); |
|
|
} |
|
|
|
|
|
.message-frame.tool-execution { |
|
|
border-left-color: #f59e0b; |
|
|
background: linear-gradient(135deg, rgba(245, 158, 11, 0.1) 0%, rgba(245, 158, 11, 0.05) 100%); |
|
|
} |
|
|
|
|
|
@keyframes slideIn { |
|
|
from { |
|
|
opacity: 0; |
|
|
transform: translateY(20px) scale(0.95); |
|
|
} |
|
|
to { |
|
|
opacity: 1; |
|
|
transform: translateY(0) scale(1); |
|
|
} |
|
|
} |
|
|
|
|
|
.sender-label { |
|
|
font-weight: 700; |
|
|
font-size: 13px; |
|
|
margin-bottom: 12px; |
|
|
color: #7877c6; |
|
|
text-transform: uppercase; |
|
|
letter-spacing: 0.8px; |
|
|
display: flex; |
|
|
align-items: center; |
|
|
gap: 8px; |
|
|
} |
|
|
|
|
|
.sender-label::before { |
|
|
content: ''; |
|
|
width: 6px; |
|
|
height: 6px; |
|
|
border-radius: 50%; |
|
|
background: currentColor; |
|
|
} |
|
|
|
|
|
.sender-label.agent { |
|
|
color: #10b981; |
|
|
} |
|
|
|
|
|
.sender-label.tool { |
|
|
color: #f59e0b; |
|
|
} |
|
|
|
|
|
.message-text { |
|
|
font-size: 15px; |
|
|
line-height: 1.7; |
|
|
word-wrap: break-word; |
|
|
white-space: pre-wrap; |
|
|
} |
|
|
|
|
|
.input-frame { |
|
|
background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 255, 255, 0.05) 100%); |
|
|
border-radius: 0 0 16px 16px; |
|
|
padding: 25px; |
|
|
display: flex; |
|
|
gap: 15px; |
|
|
border-top: 1px solid rgba(255, 255, 255, 0.1); |
|
|
backdrop-filter: blur(10px); |
|
|
} |
|
|
|
|
|
.input-entry { |
|
|
flex: 1; |
|
|
padding: 18px 24px; |
|
|
background: rgba(0, 0, 0, 0.4); |
|
|
border: 2px solid rgba(255, 255, 255, 0.1); |
|
|
border-radius: 12px; |
|
|
color: #ffffff; |
|
|
font-size: 15px; |
|
|
outline: none; |
|
|
transition: all 0.3s ease; |
|
|
font-family: inherit; |
|
|
backdrop-filter: blur(5px); |
|
|
} |
|
|
|
|
|
.input-entry::placeholder { |
|
|
color: #6b7280; |
|
|
} |
|
|
|
|
|
.input-entry:focus { |
|
|
border-color: #7877c6; |
|
|
background: rgba(0, 0, 0, 0.6); |
|
|
box-shadow: 0 0 0 4px rgba(120, 119, 198, 0.2); |
|
|
} |
|
|
|
|
|
.send-button { |
|
|
background: linear-gradient(135deg, #7877c6 0%, #ff77c6 50%, #77c6ff 100%); |
|
|
color: white; |
|
|
border: none; |
|
|
border-radius: 12px; |
|
|
padding: 18px 32px; |
|
|
cursor: pointer; |
|
|
font-size: 15px; |
|
|
font-weight: 700; |
|
|
transition: all 0.3s ease; |
|
|
min-width: 130px; |
|
|
font-family: inherit; |
|
|
text-transform: uppercase; |
|
|
letter-spacing: 0.5px; |
|
|
position: relative; |
|
|
overflow: hidden; |
|
|
} |
|
|
|
|
|
.send-button::before { |
|
|
content: ''; |
|
|
position: absolute; |
|
|
top: 0; |
|
|
left: -100%; |
|
|
width: 100%; |
|
|
height: 100%; |
|
|
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent); |
|
|
transition: left 0.5s; |
|
|
} |
|
|
|
|
|
.send-button:hover:not(:disabled)::before { |
|
|
left: 100%; |
|
|
} |
|
|
|
|
|
.send-button:hover:not(:disabled) { |
|
|
transform: translateY(-2px); |
|
|
box-shadow: 0 10px 30px rgba(120, 119, 198, 0.4); |
|
|
} |
|
|
|
|
|
.send-button:disabled { |
|
|
background: rgba(255, 255, 255, 0.1); |
|
|
cursor: not-allowed; |
|
|
transform: none; |
|
|
box-shadow: none; |
|
|
} |
|
|
|
|
|
.thinking-label { |
|
|
text-align: center; |
|
|
color: #7877c6; |
|
|
font-size: 14px; |
|
|
font-style: italic; |
|
|
margin: 20px 0; |
|
|
display: none; |
|
|
font-weight: 500; |
|
|
letter-spacing: 0.5px; |
|
|
} |
|
|
|
|
|
.thinking-label.show { |
|
|
display: block; |
|
|
animation: thinkingPulse 2s infinite; |
|
|
} |
|
|
|
|
|
@keyframes thinkingPulse { |
|
|
0%, 100% { opacity: 0.6; transform: scale(1); } |
|
|
50% { opacity: 1; transform: scale(1.05); } |
|
|
} |
|
|
|
|
|
code { |
|
|
background: rgba(120, 119, 198, 0.2); |
|
|
padding: 4px 8px; |
|
|
border-radius: 6px; |
|
|
font-family: 'JetBrains Mono', 'Fira Code', 'Consolas', monospace; |
|
|
font-size: 13px; |
|
|
border: 1px solid rgba(120, 119, 198, 0.3); |
|
|
} |
|
|
|
|
|
.error { |
|
|
color: #ef4444; |
|
|
} |
|
|
|
|
|
.success { |
|
|
color: #10b981; |
|
|
} |
|
|
|
|
|
.tool-result { |
|
|
background: linear-gradient(135deg, rgba(0, 0, 0, 0.6) 0%, rgba(0, 0, 0, 0.8) 100%); |
|
|
padding: 15px; |
|
|
border-radius: 10px; |
|
|
margin: 12px 0; |
|
|
font-family: 'JetBrains Mono', 'Fira Code', 'Consolas', monospace; |
|
|
font-size: 13px; |
|
|
border: 1px solid rgba(255, 255, 255, 0.1); |
|
|
overflow-x: auto; |
|
|
backdrop-filter: blur(5px); |
|
|
} |
|
|
|
|
|
.tool-execution-status { |
|
|
background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%); |
|
|
color: #000; |
|
|
padding: 10px 16px; |
|
|
border-radius: 8px; |
|
|
font-size: 12px; |
|
|
font-weight: 600; |
|
|
display: inline-block; |
|
|
margin: 6px 0; |
|
|
animation: toolPulse 1.5s infinite; |
|
|
text-transform: uppercase; |
|
|
letter-spacing: 0.5px; |
|
|
} |
|
|
|
|
|
@keyframes toolPulse { |
|
|
0%, 100% { opacity: 0.9; transform: scale(1); } |
|
|
50% { opacity: 1; transform: scale(1.05); } |
|
|
} |
|
|
|
|
|
.tools-list { |
|
|
display: grid; |
|
|
grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); |
|
|
gap: 12px; |
|
|
margin-top: 15px; |
|
|
padding: 20px; |
|
|
background: rgba(0, 0, 0, 0.3); |
|
|
border-radius: 12px; |
|
|
border: 1px solid rgba(255, 255, 255, 0.1); |
|
|
backdrop-filter: blur(5px); |
|
|
} |
|
|
|
|
|
.tool-item { |
|
|
background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 255, 255, 0.05) 100%); |
|
|
padding: 12px; |
|
|
border-radius: 8px; |
|
|
font-size: 12px; |
|
|
border: 1px solid rgba(255, 255, 255, 0.1); |
|
|
transition: all 0.3s ease; |
|
|
} |
|
|
|
|
|
.tool-item:hover { |
|
|
transform: translateY(-2px); |
|
|
background: linear-gradient(135deg, rgba(255, 255, 255, 0.15) 0%, rgba(255, 255, 255, 0.1) 100%); |
|
|
} |
|
|
|
|
|
.tool-name { |
|
|
color: #7877c6; |
|
|
font-weight: 600; |
|
|
margin-bottom: 4px; |
|
|
text-transform: uppercase; |
|
|
letter-spacing: 0.5px; |
|
|
} |
|
|
|
|
|
.tool-desc { |
|
|
color: #a0a0b0; |
|
|
font-size: 11px; |
|
|
line-height: 1.4; |
|
|
} |
|
|
|
|
|
.loading-dots { |
|
|
display: inline-block; |
|
|
animation: loadingDots 1.5s infinite; |
|
|
} |
|
|
|
|
|
@keyframes loadingDots { |
|
|
0%, 20% { content: '.'; } |
|
|
40% { content: '..'; } |
|
|
60%, 100% { content: '...'; } |
|
|
} |
|
|
|
|
|
.loading-dots::after { |
|
|
content: '.'; |
|
|
animation: loadingDots 1.5s infinite; |
|
|
} |
|
|
|