DevouringStars's picture
modified: app.py
353025f
Raw
History Blame Contribute Delete
7.33 kB
/* Reset basic CSS */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
/* 1. UNIVERSAL BODY STYLE (Basic) */
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
background-color: #f7f7f8;
color: #1f2328;
/* display: flex; */
/* height: 100vh; */
/* overflow: hidden; Preventing body scroll */
}
/* 2. SPECIAL BODY STYLE FOR CHAT PAGE */
/* This selector ensures that the style only applies if the body is NOT a landing page */
body:not(.landing-page) {
display: flex;
height: 100vh;
overflow: hidden; /* Preventing body scroll */
}
/* --- 3. STYLE FOR LANDING PAGE (index.html) --- */
.landing-page { /* Using the class added in index.html */
display: flex;
align-items: center;
justify-content: center;
text-align: center;
height: 100vh;
}
/* --- Style untuk Landing Page (index.html) --- */
body.landing-page {
background-color: #f0f2f5; /* Warna abu-abu yang bersih */
display: flex;
align-items: center;
justify-content: center;
text-align: center;
overflow: auto; /* Mengganti overflow:hidden dari body utama */
}
.landing-container {
max-width: 600px;
padding: 20px;
}
.landing-container h1 {
font-size: 2.5em;
margin-bottom: 20px;
}
.landing-container p {
font-size: 1.2em;
margin-bottom: 30px;
color: #555;
}
.start-chat-btn {
display: inline-block;
padding: 15px 30px;
background-color: #4a4aef;
color: white;
text-decoration: none;
font-size: 1.1em;
font-weight: bold;
border-radius: 8px;
/* Add hover or other styles if needed */
}
/* --- 1. Sidebar (Left) --- */
.sidebar {
width: 260px;
background-color: #ffffff;
border-right: 1px solid #e0e0e0;
display: flex;
flex-direction: column;
padding: 16px;
}
.sidebar-header {
display: flex;
align-items: center;
gap: 10px;
margin-bottom: 20px;
}
.new-chat-btn {
flex-grow: 1;
padding: 12px;
background-color: #4a4aef;
color: white;
border: none;
border-radius: 8px;
font-size: 0.95em;
font-weight: 500;
cursor: pointer;
text-align: left;
text-decoration: none; /* Added so that the link is not underlined */
}
.new-chat-btn i {
margin-right: 8px;
}
.search-btn {
padding: 10px 12px;
border: 1px solid #ccc;
background-color: #fff;
border-radius: 8px;
cursor: pointer;
}
.chat-history {
flex-grow: 1; /* Filling the remaining space with history */
overflow-y: auto; /* Scroll if history is full */
}
.history-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 10px;
padding: 0 8px;
}
.history-header h3 {
font-size: 0.8em;
color: #6c757d;
font-weight: 600;
}
.history-header .clear-all {
font-size: 0.8em;
color: #6c757d;
text-decoration: none;
}
.chat-history ul {
list-style: none;
}
.chat-history li {
display: flex;
align-items: center;
gap: 10px;
padding: 10px 8px;
border-radius: 6px;
cursor: pointer;
font-size: 0.9em;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.chat-history li:hover,
.chat-history li.active {
background-color: #f0f0f0;
}
.chat-history li i {
color: #6c757d;
}
.sidebar-footer {
border-top: 1px solid #e0e0e0;
padding-top: 16px;
}
.sidebar-footer ul {
list-style: none;
}
.sidebar-footer li {
display: flex;
align-items: center;
gap: 10px;
padding: 10px 8px;
border-radius: 6px;
cursor: pointer;
font-size: 0.9em;
}
.sidebar-footer li:hover {
background-color: #f0f0f0;
}
.sidebar-footer .avatar {
width: 24px;
height: 24px;
border-radius: 50%;
background-color: #ddd;
}
/* --- 2. Chat Area (Right) --- */
.chat-area {
flex-grow: 1; /* Filling the remaining space */
display: flex;
flex-direction: column;
background-color: #ffffff;
height: 100vh;
}
.chat-header {
padding: 20px;
border-bottom: 1px solid #e0e0e0;
font-size: 1.1em;
font-weight: 600;
flex-shrink: 0; /* Preventing headers from shrinking */
}
.chat-log {
flex-grow: 1; /* Filling the center space */
overflow-y: auto; /* This is a scrollable chat area. */
padding: 24px;
display: flex;
flex-direction: column;
gap: 20px; /* Distance between messages */
}
/* --- STYLE FOR EMPTY STATE --- */
.empty-chat-placeholder {
flex-grow: 1; /* Ensuring placeholders fill the chat log space */
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
text-align: center;
color: #aaa;
}
.empty-chat-placeholder i {
font-size: 4em;
margin-bottom: 20px;
opacity: 0.5;
}
.empty-chat-placeholder h2 {
font-size: 1.5em;
font-weight: 500;
}
/* ------------------------------- */
/* Styling for each message (Saved for later when you add a chat) */
.chat-message {
display: flex;
gap: 16px;
max-width: 90%; /* So that it is not too wide */
}
.chat-message .avatar {
width: 40px;
height: 40px;
border-radius: 50%;
background-color: #f0f0f0;
display: flex;
align-items: center;
justify-content: center;
font-weight: bold;
flex-shrink: 0;
}
.chat-message.user .avatar {
background-color: #cce5ff;
}
.chat-message.bot .avatar {
background-color: #d1e7dd;
}
.message-content {
padding-top: 8px;
}
.message-content strong { /* For title Enviro Education Tools Chatbot */
display: block;
margin-bottom: 4px;
font-size: 1.05em;
}
.message-content p,
.message-content ol {
line-height: 1.6;
}
.message-content ol {
padding-left: 20px; /* Indentation for ordered lists */
margin-top: 10px;
}
.message-content li {
margin-bottom: 8px;
}
/* Input Area Below */
.chat-input-area {
padding: 24px;
border-top: 1px solid #e0e0e0;
background-color: #fff;
flex-shrink: 0; /* Preventing the input area from shrinking */
}
.input-wrapper {
display: flex;
position: relative;
max-width: 900px; /* Limit input width */
margin: 0 auto;
}
.chat-input-area input {
flex-grow: 1;
padding: 16px 50px 16px 20px; /* Make space for the send button */
border: 1px solid #ccc;
border-radius: 8px;
font-size: 1em;
}
.chat-input-area input:focus {
outline: none;
border-color: #4a4aef;
box-shadow: 0 0 0 2px #4a4aef30;
}
.send-btn {
position: absolute;
right: 10px;
top: 50%;
transform: translateY(-50%);
background-color: #4a4aef;
color: white;
border: none;
width: 40px;
height: 40px;
border-radius: 50%; /* Make a circle */
font-size: 1.1em;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
}
/* The “Upgrade” tab on the right side */
.upgrade-tab {
position: fixed;
top: 50%;
right: -60px; /* Adjust the position so that it sticks out slightly. */
transform: translateY(-50%) rotate(-90deg);
background-color: #4a4aef;
color: white;
padding: 10px 20px;
font-size: 0.9em;
font-weight: bold;
border-top-left-radius: 8px;
border-top-right-radius: 8px;
cursor: pointer;
z-index: 10;
}