/* 전체 UI 스타일 */ body { font-family: 'Pretendard', 'Noto Sans KR', -apple-system, BlinkMacSystemFont, system-ui, Roboto, sans-serif; } /* 이미지 업로더 스타일 개선 */ #object_image_uploader { border: 2px dashed #4f46e5; border-radius: 0.5rem; padding: 1rem; background-color: #f5f7ff; transition: all 0.3s ease; margin-bottom: 1rem; } #object_image_uploader:hover { border-color: #3730a3; background-color: #e0e7ff; } #object_image_uploader .gradio-image-upload { border: none !important; background: transparent !important; } #object_image_uploader .gradio-image { border-radius: 0.5rem; overflow: hidden; } #object_image_uploader img { object-fit: contain !important; max-height: 260px; width: auto; margin: 0 auto; display: block; } /* 기본 이미지 제거 */ #object_image_uploader .fixed-height > img:first-child, #object_image_uploader img[alt="사물 이미지 (선택사항)"] { display: none !important; } /* 라벨 요소 숨김 - Svelte 특정 클래스 타겟팅 */ label.svelte-1to105q.float, .svelte-1to105q.float, [class*="svelte"][class*="float"], #object_image_uploader .float { display: none !important; opacity: 0 !important; visibility: hidden !important; } /* 이미지 위 텍스트 오버레이 제거 */ #object_image_uploader .overlay-text, #object_image_uploader [class*="overlay"], #object_image_uploader span:not(button span) { display: none !important; opacity: 0 !important; visibility: hidden !important; } /* 이미지 라벨 모두 제거 */ #object_image_uploader label, div:has(> #object_image_uploader) label { display: none !important; } /* 업로드 버튼 스타일 개선 */ #object_image_uploader button { background-color: #e0e7ff; color: #4338ca; transition: all 0.2s ease; } #object_image_uploader button:hover { background-color: #c7d2fe; } /* 제목 스타일 */ h1 { font-weight: 700; color: #3730a3; margin-bottom: 1.5rem; } h2 { font-weight: 600; color: #4f46e5; margin-top: 1.5rem; margin-bottom: 1rem; } h3 { font-weight: 600; color: #6366f1; margin-top: 1rem; margin-bottom: 0.5rem; } /* 탭 스타일 */ .tabs { border-radius: 0.5rem; overflow: hidden; } /* 슬라이더 스타일 */ .slider-container { margin-bottom: 1rem; } .slider { height: 0.5rem; border-radius: 0.25rem; } .slider-track { background: #e0e7ff; } .slider-track-highlight { background: #4f46e5; } .slider-handle { width: 1rem; height: 1rem; background: #4f46e5; border: 2px solid #fff; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); } /* 버튼 스타일 */ .primary-button { background: #4f46e5; color: white; font-weight: 600; border-radius: 0.375rem; padding: 0.5rem 1rem; transition: background-color 0.2s; } .primary-button:hover { background: #3730a3; } .secondary-button { background: #e0e7ff; color: #4338ca; font-weight: 600; border-radius: 0.375rem; padding: 0.5rem 1rem; transition: background-color 0.2s; } .secondary-button:hover { background: #c7d2fe; } /* 입력 필드 스타일 */ .input-container { margin-bottom: 1rem; } .text-input { border-radius: 0.375rem; border: 1px solid #d1d5db; padding: 0.5rem; width: 100%; } .text-input:focus { border-color: #4f46e5; outline: none; box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.1); } /* 채팅 UI 스타일 */ .chatbot-container { height: 60vh; border-radius: 0.5rem; overflow: hidden; border: 1px solid #e5e7eb; } .user-message { background: #f9fafb; padding: 0.75rem; border-radius: 0.5rem; margin-bottom: 0.5rem; } .assistant-message { background: #e0e7ff; padding: 0.75rem; border-radius: 0.5rem; margin-bottom: 0.5rem; } /* 라디오 버튼과 체크박스 스타일 */ .radio-group, .checkbox-group { margin-bottom: 1rem; } .radio-item, .checkbox-item { margin-bottom: 0.25rem; } /* JSON 표시 스타일 */ .json-container { font-family: 'Roboto Mono', monospace; font-size: 0.875rem; background: #f9fafb; border-radius: 0.375rem; padding: 1rem; overflow: auto; max-height: 30vh; } /* 테이블 스타일 */ table { width: 100%; border-collapse: collapse; } th { background: #f3f4f6; padding: 0.5rem; text-align: left; font-weight: 600; } td { padding: 0.5rem; border-top: 1px solid #e5e7eb; } tr:hover { background: #f9fafb; } /* 성격 특성 시각화 스타일 */ .trait-container { display: flex; align-items: center; margin-bottom: 0.5rem; } .trait-label { width: 6rem; font-weight: 500; } .trait-bar { flex-grow: 1; height: 0.5rem; background: #e0e7ff; border-radius: 0.25rem; overflow: hidden; } .trait-bar-fill { height: 100%; background: #4f46e5; } .trait-value { width: 2.5rem; text-align: right; font-weight: 500; font-size: 0.875rem; } /* 반응형 레이아웃 */ @media (max-width: 768px) { .trait-label { width: 4rem; } .two-column-container { display: block !important; } .column { width: 100% !important; margin-bottom: 1rem; } } /* 애니메이션 효과 */ @keyframes fade-in { from { opacity: 0; } to { opacity: 1; } } .fade-in { animation: fade-in 0.3s ease-in-out; }