CSS = """
html, body, .gradio-container {
height: 100% !important;
margin: 0 !important;
}
/* 1. Глобальный контейнер: занимаем все пространство без прокрутки страницы */
.gradio-container {
max-width: 100% !important;
margin: 0 !important;
padding: 0 !important;
height: 100vh !important;
display: flex !important;
flex-direction: column !important;
background-color: var(--background-fill-primary) !important;
overflow: hidden !important;
}
/* 2. Основной ряд: Sidebar + Chat
Сделано flex: main-row занимает оставшееся пространство и не вызывает лишнюю высоту */
#main-row {
display: flex !important;
flex: 1 1 auto !important;
height: 100% !important;
margin: 0 !important;
gap: 0 !important;
overflow: hidden !important;
}
/* 3. Сайдбар: фиксированная ширина, скролл при переполнении */
#sidebar-container {
width: 320px !important;
min-width: 240px !important;
max-width: 380px !important;
border-right: 1px solid var(--border-color-primary) !important;
background-color: var(--background-fill-secondary) !important;
padding: 1.25rem !important;
height: 100% !important;
display: flex !important;
flex-direction: column !important;
box-shadow: 2px 0 8px rgba(0, 0, 0, 0.02) !important;
overflow: auto !important;
}
/* Убираем "старение" (побледнение) при обновлении данных */
.stale {
opacity: 1 !important;
filter: none !important;
}
/* 5. Правая колонка с чатом (Главная область) */
#col-chat-main {
display: flex !important;
flex-direction: column !important;
height: 100% !important;
padding: 0 !important;
margin: 0 !important;
gap: 0 !important;
background: var(--background-fill-primary) !important;
flex: 1 1 auto !important;
overflow: hidden !important;
}
/* ЧАТБОТ: Растягиваем на всю доступную высоту, min-height:0 для корректного flex-scroll */
#chatbot {
flex: 1 1 auto !important;
height: auto !important;
min-height: 0 !important;
border: none !important;
border-radius: 0 !important;
margin: 0 !important;
display: flex !important;
flex-direction: column !important;
overflow-y: auto !important;
}
/* Фикс для внутренней обертки Gradio Chatbot - предотвращаем overflow issues */
#chatbot > .wrapper {
flex: 1 1 auto !important;
display: flex !important;
flex-direction: column !important;
min-height: 0 !important;
overflow: auto !important;
}
/* 6. Поле ввода: фиксируем снизу с помощью sticky, чтобы всегда быть видимым */
#input-area {
padding: 0.75rem 1rem !important;
border-top: 1px solid var(--border-color-primary) !important;
background: var(--background-fill-primary) !important;
box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.02) !important;
flex-shrink: 0 !important;
position: sticky !important;
bottom: 0 !important;
z-index: 10 !important;
}
/* Текстовое поле адаптируется по ширине и не выходит за границы */
#input-area textarea {
border-radius: 10px !important;
border: 1px solid var(--border-color-primary) !important;
padding: 12px 16px !important;
font-size: 1rem !important;
transition: border-color 0.2s ease !important;
width: 100% !important;
box-sizing: border-box !important;
}
#input-area textarea:focus {
border-color: var(--color-accent) !important;
box-shadow: 0 0 0 2px rgba(var(--color-accent-rgb), 0.1) !important;
}
/* 7. Кнопки и прочие элементы */
.gr-button-primary {
border-radius: 8px !important;
font-weight: 600 !important;
}
/* Кастомный скроллбар */
::-webkit-scrollbar {
width: 8px;
height: 8px;
}
::-webkit-scrollbar-track {
background: transparent;
}
::-webkit-scrollbar-thumb {
background: var(--neutral-300);
border-radius: 10px;
}
::-webkit-scrollbar-thumb:hover {
background: var(--neutral-400);
}
/* Скрытие футера */
footer {
display: none !important;
}
/* Убираем лишние зазоры между элементами */
.gap {
gap: 12px !important;
}
"""