@tailwind base; @tailwind components; @tailwind utilities; @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap'); * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); min-height: 100vh; } code { font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', monospace; } /* 스크롤바 스타일링 */ ::-webkit-scrollbar { width: 6px; } ::-webkit-scrollbar-track { background: #f1f1f1; border-radius: 3px; } ::-webkit-scrollbar-thumb { background: #c1c1c1; border-radius: 3px; } ::-webkit-scrollbar-thumb:hover { background: #a8a8a8; } /* 채팅 메시지 애니메이션 */ .message-enter { opacity: 0; transform: translateY(20px); } .message-enter-active { opacity: 1; transform: translateY(0); transition: opacity 300ms, transform 300ms; } /* 로딩 애니메이션 */ .typing-indicator { display: inline-block; width: 8px; height: 8px; border-radius: 50%; background-color: #9ca3af; animation: typing 1.4s infinite ease-in-out; } .typing-indicator:nth-child(1) { animation-delay: -0.32s; } .typing-indicator:nth-child(2) { animation-delay: -0.16s; } @keyframes typing { 0%, 80%, 100% { transform: scale(0); opacity: 0.5; } 40% { transform: scale(1); opacity: 1; } } /* 그라데이션 텍스트 */ .gradient-text { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } /* 카드 호버 효과 */ .card-hover { transition: all 0.3s ease; } .card-hover:hover { transform: translateY(-2px); box-shadow: 0 10px 25px rgba(0, 0, 0, 0.1); } /* 버튼 애니메이션 */ .btn-animate { transition: all 0.2s ease; } .btn-animate:hover { transform: translateY(-1px); } .btn-animate:active { transform: translateY(0); } /* PDF 뷰어 스타일 */ .react-pdf__Page { display: flex; flex-direction: column; align-items: center; } .react-pdf__Page__canvas { display: block; max-width: 100%; max-height: 100%; } .react-pdf__Page__textContent { position: absolute; top: 0; left: 0; transform: scale(1); transform-origin: 0 0; white-space: pre; cursor: text; color: transparent; font-family: sans-serif; overflow: hidden; user-select: text; } .react-pdf__Page__textContent span { color: transparent; position: absolute; white-space: pre; cursor: text; transform-origin: 0% 0%; } .react-pdf__Page__annotations { position: absolute; top: 0; left: 0; transform: scale(1); transform-origin: 0 0; } .react-pdf__Page__annotation { position: absolute; transform: scale(1); transform-origin: 0% 0%; }