Spaces:
Sleeping
Sleeping
/* ๊ธฐ๋ณธ ์คํ์ผ */ | |
:root { | |
--primary-color: #4a6da7; | |
--primary-dark: #345089; | |
--secondary-color: #f59e0b; | |
--text-color: #333; | |
--light-text: #666; | |
--bg-color: #f8f9fa; | |
--card-bg: #fff; | |
--border-color: #e0e0e0; | |
--error-color: #ef4444; | |
--success-color: #10b981; | |
--hover-color: #f1f5f9; | |
--transition: all 0.3s ease; | |
} | |
* { | |
box-sizing: border-box; | |
margin: 0; | |
padding: 0; | |
} | |
body { | |
font-family: 'Pretendard', 'Apple SD Gothic Neo', 'Noto Sans KR', sans-serif; | |
line-height: 1.6; | |
color: var(--text-color); | |
background-color: var(--bg-color); | |
margin: 0; | |
} | |
.container { | |
max-width: 1000px; | |
margin: 0 auto; | |
padding: 20px; | |
min-height: 100vh; | |
display: flex; | |
flex-direction: column; | |
} | |
/* ํค๋ ์คํ์ผ */ | |
header { | |
text-align: center; | |
margin-bottom: 20px; | |
} | |
header h1 { | |
color: var(--primary-color); | |
margin-bottom: 15px; | |
} | |
.llm-selector { | |
margin-bottom: 15px; | |
display: flex; | |
justify-content: center; | |
align-items: center; | |
gap: 10px; | |
} | |
.llm-selector label { | |
font-weight: 600; | |
color: var(--primary-color); | |
} | |
#llmSelect { | |
padding: 8px 12px; | |
border: 1px solid var(--border-color); | |
border-radius: 4px; | |
background-color: white; | |
font-size: 14px; | |
outline: none; | |
transition: var(--transition); | |
} | |
#llmSelect:focus { | |
border-color: var(--primary-color); | |
} | |
.tabs { | |
display: flex; | |
justify-content: center; | |
margin-bottom: 20px; | |
} | |
.tab { | |
padding: 10px 20px; | |
background-color: var(--card-bg); | |
border: 1px solid var(--border-color); | |
border-radius: 4px; | |
margin: 0 5px; | |
cursor: pointer; | |
transition: var(--transition); | |
} | |
.tab:hover { | |
background-color: var(--hover-color); | |
} | |
.tab.active { | |
background-color: var(--primary-color); | |
color: white; | |
border-color: var(--primary-color); | |
} | |
/* ๋ฉ์ธ ์ปจํ ์ธ */ | |
main { | |
flex-grow: 1; | |
} | |
.tab-content { | |
display: none; | |
} | |
.tab-content.active { | |
display: block; | |
} | |
/* ์ฑํ ์น์ */ | |
.chat-container { | |
background-color: var(--card-bg); | |
border-radius: 8px; | |
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); | |
overflow: hidden; | |
height: 70vh; | |
display: flex; | |
flex-direction: column; | |
} | |
.chat-messages { | |
flex-grow: 1; | |
overflow-y: auto; | |
padding: 20px; | |
} | |
.message { | |
margin-bottom: 20px; | |
display: flex; | |
align-items: flex-start; | |
} | |
.message.user { | |
justify-content: flex-end; | |
} | |
.message-content { | |
padding: 12px 16px; | |
border-radius: 12px; | |
max-width: 80%; | |
} | |
.message.system .message-content { | |
background-color: #f0f7ff; | |
color: var(--primary-dark); | |
} | |
.message.user .message-content { | |
background-color: var(--primary-color); | |
color: white; | |
border-top-right-radius: 4px; | |
} | |
.message.bot .message-content { | |
background-color: #f1f5f9; | |
color: var(--text-color); | |
border-top-left-radius: 4px; | |
} | |
.message p { | |
margin-bottom: 8px; | |
} | |
.message p:last-child { | |
margin-bottom: 0; | |
} | |
.message .sources { | |
font-size: 0.85em; | |
color: var(--light-text); | |
margin-top: 5px; | |
} | |
.message .source-item { | |
margin-right: 10px; | |
} | |
.message .transcription { | |
font-style: italic; | |
opacity: 0.8; | |
font-size: 0.9em; | |
margin-bottom: 8px; | |
} | |
.chat-input-container { | |
display: flex; | |
padding: 15px; | |
border-top: 1px solid var(--border-color); | |
background-color: var(--card-bg); | |
} | |
#userInput { | |
flex-grow: 1; | |
border: 1px solid var(--border-color); | |
border-radius: 20px; | |
padding: 10px 15px; | |
font-size: 16px; | |
resize: none; | |
outline: none; | |
transition: var(--transition); | |
} | |
#userInput:focus { | |
border-color: var(--primary-color); | |
} | |
.mic-button, .send-button, .stop-recording-button { | |
border: none; | |
background-color: transparent; | |
color: var(--primary-color); | |
font-size: 20px; | |
margin-left: 10px; | |
cursor: pointer; | |
transition: var(--transition); | |
width: 40px; | |
height: 40px; | |
border-radius: 50%; | |
display: flex; | |
align-items: center; | |
justify-content: center; | |
} | |
.mic-button:hover, .send-button:hover, .stop-recording-button:hover { | |
background-color: var(--hover-color); | |
} | |
.stop-recording-button { | |
background-color: var(--error-color); | |
color: white; | |
} | |
.stop-recording-button:hover { | |
background-color: #dc2626; /* ๋ ์ด๋์ด ๋นจ๊ฐ์ */ | |
} | |
.recording-status { | |
display: flex; | |
align-items: center; | |
padding: 10px 15px; | |
background-color: rgba(239, 68, 68, 0.1); | |
border-top: 1px solid var(--border-color); | |
color: var(--error-color); | |
} | |
.recording-indicator { | |
position: relative; | |
width: 12px; | |
height: 12px; | |
margin-right: 10px; | |
} | |
.recording-pulse { | |
position: absolute; | |
width: 100%; | |
height: 100%; | |
background-color: var(--error-color); | |
border-radius: 50%; | |
animation: pulse 1.5s infinite; | |
} | |
@keyframes pulse { | |
0% { | |
transform: scale(0.8); | |
opacity: 1; | |
} | |
70% { | |
transform: scale(1.5); | |
opacity: 0; | |
} | |
100% { | |
transform: scale(0.8); | |
opacity: 0; | |
} | |
} | |
.hidden { | |
display: none; | |
} | |
/* ๋ฌธ์ ๊ด๋ฆฌ ์น์ */ | |
.docs-container { | |
background-color: var(--card-bg); | |
border-radius: 8px; | |
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); | |
overflow: hidden; | |
padding: 20px; | |
} | |
.upload-section { | |
margin-bottom: 30px; | |
padding-bottom: 20px; | |
border-bottom: 1px solid var(--border-color); | |
} | |
.upload-section h2, .docs-list-section h2 { | |
margin-bottom: 15px; | |
color: var(--primary-color); | |
} | |
.file-upload { | |
display: flex; | |
align-items: center; | |
margin-bottom: 20px; | |
} | |
.file-upload input[type="file"] { | |
display: none; | |
} | |
.file-upload label { | |
padding: 10px 20px; | |
background-color: var(--primary-color); | |
color: white; | |
border-radius: 4px; | |
cursor: pointer; | |
transition: var(--transition); | |
} | |
.file-upload label:hover { | |
background-color: var(--primary-dark); | |
} | |
#fileName { | |
margin-left: 15px; | |
color: var(--light-text); | |
} | |
.upload-button { | |
padding: 10px 20px; | |
background-color: var(--secondary-color); | |
color: white; | |
border: none; | |
border-radius: 4px; | |
cursor: pointer; | |
transition: var(--transition); | |
display: flex; | |
align-items: center; | |
} | |
.upload-button i { | |
margin-right: 8px; | |
} | |
.upload-button:hover { | |
background-color: #d97706; /* ๋ ์ด๋์ด ์ฃผํฉ์ */ | |
} | |
.upload-status { | |
margin-top: 15px; | |
padding: 10px 15px; | |
border-radius: 4px; | |
} | |
.upload-status.success { | |
background-color: rgba(16, 185, 129, 0.1); | |
color: var(--success-color); | |
} | |
.upload-status.error { | |
background-color: rgba(239, 68, 68, 0.1); | |
color: var(--error-color); | |
} | |
.docs-list-section { | |
position: relative; | |
} | |
.refresh-button { | |
position: absolute; | |
top: 0; | |
right: 0; | |
padding: 5px 10px; | |
background-color: transparent; | |
color: var(--primary-color); | |
border: 1px solid var(--primary-color); | |
border-radius: 4px; | |
cursor: pointer; | |
transition: var(--transition); | |
display: flex; | |
align-items: center; | |
} | |
.refresh-button i { | |
margin-right: 5px; | |
} | |
.refresh-button:hover { | |
background-color: var(--hover-color); | |
} | |
.docs-list { | |
width: 100%; | |
border-collapse: collapse; | |
margin-top: 20px; | |
} | |
.docs-list th, .docs-list td { | |
padding: 12px 15px; | |
text-align: left; | |
border-bottom: 1px solid var(--border-color); | |
} | |
.docs-list th { | |
background-color: #f1f5f9; | |
font-weight: 600; | |
} | |
.docs-list tr:hover { | |
background-color: var(--hover-color); | |
} | |
.loading-indicator { | |
display: flex; | |
flex-direction: column; | |
align-items: center; | |
justify-content: center; | |
padding: 30px; | |
} | |
.spinner { | |
width: 40px; | |
height: 40px; | |
border: 4px solid #f3f3f3; | |
border-top: 4px solid var(--primary-color); | |
border-radius: 50%; | |
animation: spin 1s linear infinite; | |
margin-bottom: 15px; | |
} | |
@keyframes spin { | |
0% { transform: rotate(0deg); } | |
100% { transform: rotate(360deg); } | |
} | |
.no-docs-message { | |
text-align: center; | |
padding: 30px; | |
color: var(--light-text); | |
} | |
/* ํธํฐ */ | |
footer { | |
text-align: center; | |
margin-top: 30px; | |
padding-top: 20px; | |
border-top: 1px solid var(--border-color); | |
color: var(--light-text); | |
font-size: 0.9em; | |
display: flex; | |
justify-content: space-between; | |
align-items: center; | |
flex-wrap: wrap; | |
} | |
footer p { | |
margin-bottom: 5px; | |
} | |
.current-llm { | |
color: var(--primary-color); | |
font-weight: 500; | |
} | |
#currentLLMInfo { | |
font-weight: 600; | |
} | |
/* ๋ฐ์ํ ์คํ์ผ */ | |
@media (max-width: 768px) { | |
.container { | |
padding: 10px; | |
} | |
.chat-container { | |
height: 65vh; | |
} | |
.message-content { | |
max-width: 90%; | |
} | |
.file-upload { | |
flex-direction: column; | |
align-items: flex-start; | |
} | |
#fileName { | |
margin-left: 0; | |
margin-top: 10px; | |
} | |
.refresh-button { | |
position: static; | |
margin-top: 10px; | |
margin-bottom: 10px; | |
} | |
footer { | |
flex-direction: column; | |
text-align: center; | |
} | |
.current-llm { | |
margin-top: 10px; | |
} | |
.llm-selector { | |
flex-direction: column; | |
gap: 5px; | |
} | |
} | |