email-app / frontend /src /App.css
JeCabrera's picture
Merge branch 'main' into codex/analyze-.py-files-for-react-migration-ywgel6
bf16852 unverified
:root {
--bg: #121317;
--panel: #202739;
--panel-2: #1f2636;
--panel-3: #242c3f;
--line: rgba(255, 255, 255, 0.12);
--text: #ffffff;
--muted: #98a0b3;
--brand: #4ecdc4;
--brand-dark: #2c3e50;
}
/* Scroll elegante */
* {
scrollbar-width: thin;
scrollbar-color: rgba(156, 169, 196, 0.45) transparent;
}
*::-webkit-scrollbar {
width: 8px;
height: 8px;
}
*::-webkit-scrollbar-track {
background: transparent;
}
*::-webkit-scrollbar-thumb {
background: linear-gradient(180deg, rgba(141, 156, 184, 0.75), rgba(118, 132, 160, 0.75));
border-radius: 999px;
border: 2px solid transparent;
background-clip: padding-box;
}
*::-webkit-scrollbar-thumb:hover {
background: linear-gradient(180deg, rgba(170, 186, 219, 0.85), rgba(134, 151, 184, 0.85));
}
.sidebar {
scrollbar-gutter: stable;
}
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
font-family: 'Segoe UI', 'Inter', sans-serif;
background: var(--bg);
color: var(--text);
min-height: 100vh;
}
.app-container { display: flex; height: 100vh; background: var(--bg); }
.app-error-banner {
position: fixed;
top: 14px;
left: 50%;
transform: translateX(-50%);
z-index: 1000;
min-width: 300px;
max-width: 900px;
width: calc(100% - 32px);
background: rgba(102, 17, 17, 0.95);
border: 1px solid rgba(255, 82, 82, 0.5);
color: #ffe5e5;
border-radius: 10px;
padding: 12px 44px 12px 14px;
box-shadow: 0 8px 30px rgba(0, 0, 0, 0.35);
}
.app-error-title {
font-weight: 700;
margin-bottom: 4px;
}
.app-error-close {
position: absolute;
top: 6px;
right: 10px;
border: none;
background: transparent;
color: #ffd6d6;
font-size: 22px;
line-height: 1;
cursor: pointer;
}
.app-error-close:hover {
color: #ffffff;
}
.sidebar {
width: 290px;
background: linear-gradient(180deg, #242b3d 0%, #20283a 100%);
border-right: 1px solid #343d52;
overflow-y: auto;
padding: 26px 12px;
}
.sidebar-toggle {
width: 28px;
height: 28px;
border: none;
border-radius: 8px;
background: transparent;
color: #8aa6d8;
font-size: 24px;
line-height: 1;
cursor: pointer;
margin-bottom: 8px;
}
.sidebar-toggle:hover {
background: rgba(255, 255, 255, 0.06);
color: #b7c9e9;
}
.sidebar.collapsed {
width: 64px;
padding: 12px 8px;
align-items: flex-start;
}
.sidebar.collapsed .sidebar-toggle {
margin-bottom: 0;
}
.main-content { flex: 1; display: flex; flex-direction: column; }
.chat-history { height: 100%; }
.sidebar-title { color: var(--text); font-size: 32px; margin: 36px 0 22px; }
.sidebar-subtitle { color: var(--muted); margin-bottom: 10px; font-size: 16px; }
.new-chat-btn {
width: 100%;
min-height: 40px;
padding: 8px 10px;
background: transparent;
color: var(--text);
border: 1px solid var(--line);
border-radius: 10px;
cursor: pointer;
font-size: 13px;
margin-bottom: 10px;
transition: all 0.3s ease;
}
.new-chat-btn:hover {
background-color: rgba(255, 255, 255, 0.08);
border-color: rgba(255, 255, 255, 0.25);
}
.chat-list { display: flex; flex-direction: column; gap: 2px; }
.chat-item {
min-height: 40px;
padding: 8px 10px;
background: transparent;
color: var(--text);
border: 1px solid var(--line);
border-radius: 10px;
cursor: pointer;
font-size: 13px;
display: flex;
align-items: center;
}
.chat-item:hover,
.chat-item.active {
background-color: rgba(255, 255, 255, 0.08);
border-color: rgba(255, 255, 255, 0.25);
}
.chat-window { display: flex; flex-direction: column; height: 100%; }
.messages {
flex: 1;
overflow-y: auto;
padding: 1.6rem 2rem;
display: flex;
flex-direction: column;
gap: 20px;
max-width: 1000px;
width: 100%;
margin: 0 auto;
background-color: transparent;
}
.initial-menu {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
margin: auto;
text-align: center;
gap: 8px;
}
.brand-remote-logo {
width: 140px;
height: auto;
margin-bottom: 4px;
}
.robocopy-title {
color: #4ecdc4 !important;
font-weight: bold;
font-size: 48px;
margin-bottom: 4px;
}
.brand-author.subtitle {
font-size: 16px;
color: #ffffff;
margin-bottom: 14px;
}
.initial-menu p {
color: var(--text);
font-size: 16px;
margin-bottom: 24px;
}
.initial-menu h1 { color: var(--brand); font-size: 44px; font-weight: 700; }
.brand-author { font-size: 30px; margin-bottom: 10px; }
.initial-menu p { color: var(--text); font-size: 16px; margin-bottom: 24px; }
.example-buttons {
display: grid;
grid-template-columns: repeat(4, minmax(150px, 1fr));
gap: 12px;
max-width: 850px;
}
.example-btn {
width: 100%;
min-height: 52px;
white-space: normal;
padding: 10px;
background-color: rgba(255, 255, 255, 0.04);
border: 1px solid rgba(255, 255, 255, 0.25);
border-radius: 8px;
font-size: 14px;
color: white;
text-align: center;
margin: 5px 0;
transition: all 0.3s ease;
cursor: pointer !important;
}
.example-btn * { cursor: pointer !important; }
.example-btn:hover {
background-color: rgba(255, 255, 255, 0.08);
color: #ffffff;
border-color: rgba(255, 255, 255, 0.35);
transform: translateY(-1px);
box-shadow: none;
}
.message {
display: flex;
width: 100%;
align-items: flex-end;
gap: 8px;
}
.message .content {
width: 100%;
max-width: 900px;
border-radius: 10px;
line-height: 1.65;
font-size: 18px;
}
.message.assistant,
.message.error {
justify-content: flex-start;
}
.message .content {
max-width: 900px;
border-radius: 14px;
line-height: 1.65;
font-size: 16px;
}
.message.user .avatar {
order: 2;
}
.message.user .content {
order: 1;
max-width: 72%;
}
.message.assistant .content,
.message.error .content {
max-width: 86%;
}
.user-plain {
background: rgba(78, 205, 196, 0.26);
color: #dffaf7;
padding: 12px 16px;
border-radius: 16px;
white-space: pre-wrap;
}
.assistant-markdown {
color: #f4f6fb;
white-space: pre-wrap;
background: rgba(31, 38, 54, 0.96);
padding: 12px 14px;
border-radius: 12px;
}
.assistant-markdown p {
margin: 0 0 14px;
}
.assistant-markdown h1,
.assistant-markdown h2,
.assistant-markdown h3 {
margin: 22px 0 12px;
line-height: 1.35;
}
.assistant-markdown ul,
.assistant-markdown ol {
margin: 0 0 14px 22px;
}
.assistant-markdown hr {
border: none;
border-top: 1px solid rgba(255, 255, 255, 0.18);
margin: 22px 0;
}
.message.user .content { padding-right: 0; }
.message.assistant .content { background: transparent; color: var(--text); padding-left: 0; }
.message.error .content {
background: rgba(255, 82, 82, 0.15);
border: 1px solid rgba(255, 82, 82, 0.35);
padding: 10px 12px;
}
.error-plain {
color: #ffd3d3;
white-space: pre-wrap;
}
.chat-error-banner {
width: 100%;
border-radius: 10px;
border: 1px solid rgba(255, 82, 82, 0.45);
background: rgba(123, 23, 23, 0.4);
color: #ffd8d8;
padding: 10px 40px 10px 12px;
position: relative;
}
.chat-error-close {
position: absolute;
top: 4px;
right: 8px;
border: 0;
background: transparent;
color: #ffd8d8;
cursor: pointer;
font-size: 20px;
}
.assistant-actions {
display: flex;
gap: 8px;
margin-top: 8px;
}
.action-btn {
width: 28px;
height: 28px;
border-radius: 8px;
border: 1px solid rgba(255, 255, 255, 0.2);
background: rgba(255, 255, 255, 0.04);
color: #d6ddeb;
display: inline-flex;
align-items: center;
justify-content: center;
cursor: pointer;
font-size: 14px;
}
.action-btn:hover {
background: rgba(255, 255, 255, 0.12);
}
.action-btn.active {
background: rgba(78, 205, 196, 0.24);
border-color: #4ecdc4;
color: #4ecdc4;
}
.message.loading { color: var(--muted); font-style: italic; margin-left: 40px; }
.input-area {
display: flex;
align-items: center;
gap: 10px;
padding: 10px 24px 18px;
max-width: 1000px;
margin: 0 auto;
width: 100%;
}
.input-area input {
flex: 1;
height: 48px;
padding: 0 16px;
background: var(--panel-3);
color: var(--text);
border: 1px solid transparent;
border-radius: 10px;
font-size: 16px;
}
.input-area input:focus { outline: none; border-color: var(--brand); }
.input-area input::placeholder { color: #9aa3b8; }
.input-ready {
width: 22px;
height: 22px;
border-radius: 999px;
background: #1f6ed4;
color: #fff;
display: inline-flex;
align-items: center;
justify-content: center;
font-size: 14px;
font-weight: 700;
}
.send-btn {
width: 40px;
height: 40px;
border-radius: 12px;
background: #414b60;
color: #bfc6d6;
border: none;
cursor: pointer;
font-size: 20px;
}
.send-btn.active {
background: #4ecdc4;
color: #fff;
}
.send-btn:hover { background: #4e5a73; }
.send-btn.active:hover { background: #40bbb2; }
.send-btn:disabled { opacity: 0.6; cursor: not-allowed; }
@media (max-width: 768px) {
.app-container { flex-direction: column; }
.sidebar {
width: 100%;
max-height: 210px;
border-right: none;
border-bottom: 1px solid #343d52;
}
.sidebar-title { margin-top: 0; font-size: 22px; }
.example-buttons { grid-template-columns: 1fr; }
}