NoteGenie / static /css /style.css
ziadmostafa's picture
added info card
938d60d
:root {
/* Google Material Design colors */
--google-blue: #4285f4;
--google-red: #ea4335;
--google-yellow: #fbbc05;
--google-green: #34a853;
--google-gray: #5f6368;
--google-blue-hover: #3367d6;
--google-surface: #ffffff;
--google-background: #f8f9fa;
--google-border: #dadce0;
--google-text-primary: #202124;
--google-text-secondary: #5f6368;
--google-disabled: #e0e0e0;
/* Spacing and dimensions */
--spacing-xs: 4px;
--spacing-sm: 8px;
--spacing-md: 16px;
--spacing-lg: 24px;
--spacing-xl: 32px;
--border-radius: 8px;
--shadow-1: 0 1px 2px 0 rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);
--shadow-2: 0 2px 6px 2px rgba(60, 64, 67, 0.15);
--shadow-3: 0 4px 8px 3px rgba(60, 64, 67, 0.15);
}
/* Base styles */
body {
font-family: 'Roboto', sans-serif;
background-color: var(--google-background);
color: var(--google-text-primary);
margin: 0;
padding: 0;
height: 100vh;
display: flex;
flex-direction: column;
overflow: hidden;
}
/* Material typography */
h1, h2, h3, h4, h5, h6 {
font-family: 'Google Sans', 'Roboto', sans-serif;
font-weight: 500;
margin: 0;
color: var(--google-text-primary);
}
.product-name {
font-size: 22px;
line-height: 28px;
font-weight: 500;
}
/* App container */
.app-container {
display: flex;
flex-direction: column;
height: 100vh;
overflow: hidden;
}
/* Header styling */
.app-header {
background-color: var(--google-surface);
box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3);
padding: var(--spacing-md);
z-index: 10;
}
.header-content {
display: flex;
justify-content: space-between;
align-items: center;
max-width: 1600px;
margin: 0 auto;
width: 100%;
}
.logo-section {
display: flex;
align-items: center;
gap: var(--spacing-sm);
}
.logo-icon {
color: var(--google-blue);
}
.header-actions {
display: flex;
gap: var(--spacing-sm);
}
/* Main container */
.main-container {
display: flex;
flex: 1;
overflow: hidden;
max-width: 1600px;
margin: 0 auto;
width: 100%;
height: calc(100vh - 64px);
padding: var(--spacing-md);
gap: var(--spacing-md);
}
/* Panels - update the width ratio */
.panel {
display: flex;
flex-direction: column;
overflow: hidden;
background-color: var(--google-surface);
border-radius: var(--border-radius);
height: 100%;
box-shadow: var(--shadow-1);
}
.chat-panel {
flex: 0.4; /* Reduced from 1 to 0.4 (40% width) */
border-right: none;
}
.notebook-panel {
flex: 0.6; /* Increased from 1 to 0.6 (60% width) */
overflow: hidden;
}
/* Conversation container */
.conversation-container {
flex: 1;
overflow-y: auto;
padding: var(--spacing-md);
}
/* Custom scrollbar styles */
.conversation-container::-webkit-scrollbar,
.notebook-preview::-webkit-scrollbar {
width: 8px;
}
.conversation-container::-webkit-scrollbar-track,
.notebook-preview::-webkit-scrollbar-track {
background: transparent;
}
.conversation-container::-webkit-scrollbar-thumb,
.notebook-preview::-webkit-scrollbar-thumb {
background-color: rgba(95, 99, 104, 0.3);
border-radius: 20px;
}
.conversation-container::-webkit-scrollbar-thumb:hover,
.notebook-preview::-webkit-scrollbar-thumb:hover {
background-color: rgba(95, 99, 104, 0.5);
}
/* Input container */
.input-container {
border-top: 1px solid var(--google-border);
padding: var(--spacing-md);
background-color: var(--google-surface);
}
.input-options {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: var(--spacing-md);
}
.model-selector {
border: 1px solid var(--google-border);
border-radius: var(--border-radius);
padding: var(--spacing-xs) var(--spacing-md);
font-size: 14px;
color: var(--google-text-primary);
background-color: var(--google-surface);
width: auto;
outline: none;
}
.model-selector:focus {
border-color: var(--google-blue);
}
.mode-toggle {
display: flex;
border: 1px solid var(--google-blue);
border-radius: 4px;
overflow: hidden;
}
.toggle-button {
background: none;
border: none;
padding: 6px 12px;
font-size: 14px;
cursor: pointer;
color: var(--google-blue);
}
.toggle-button.active {
background-color: var(--google-blue);
color: white;
}
/* Fix for disabled toggle buttons */
.toggle-button:disabled {
cursor: not-allowed;
opacity: 0.7;
}
/* Keep active styling even when disabled */
.toggle-button.active:disabled {
background-color: var(--google-blue);
color: white;
opacity: 0.8;
}
/* Inactive button when disabled */
.toggle-button:not(.active):disabled {
color: var(--google-text-secondary);
background-color: transparent;
}
.input-field-container {
position: relative;
margin-bottom: var(--spacing-sm);
}
.prompt-input {
width: 100%;
border: 1px solid var(--google-border);
border-radius: var(--border-radius);
padding: var(--spacing-md);
padding-right: 50px; /* Make room for the send button */
font-family: 'Roboto', sans-serif;
font-size: 16px;
resize: none;
outline: none;
transition: border-color 0.2s;
}
.prompt-input:focus {
border-color: var(--google-blue);
box-shadow: 0 0 0 1px var(--google-blue);
}
/* Send button inside input */
.send-button {
position: absolute;
right: 12px;
top: 12px;
background-color: var(--google-blue);
color: white;
border: none;
border-radius: 50%;
width: 36px;
height: 36px;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
transition: background-color 0.2s;
}
.send-button:hover {
background-color: var(--google-blue-hover);
}
.send-button:disabled {
background-color: var(--google-disabled);
cursor: not-allowed;
}
.send-button .material-icons {
font-size: 18px;
}
/* Hide the original action button container */
.input-actions {
display: none;
}
/* Google Buttons */
.google-button {
display: inline-flex;
align-items: center;
justify-content: center;
border: none;
border-radius: 4px;
font-family: 'Google Sans', 'Roboto', sans-serif;
font-size: 14px;
font-weight: 500;
padding: 8px 24px;
cursor: pointer;
transition: background-color 0.2s, box-shadow 0.2s;
white-space: nowrap;
gap: var(--spacing-sm);
height: 36px;
letter-spacing: 0.25px;
outline: none;
position: relative;
}
.google-button .material-icons {
font-size: 18px;
}
.google-button.primary {
background-color: var(--google-blue);
color: white;
}
.google-button.primary:hover {
background-color: var(--google-blue-hover);
box-shadow: var(--shadow-1);
}
.google-button.outlined {
background-color: transparent;
border: 1px solid var(--google-border);
color: var(--google-blue);
}
.google-button.outlined:hover {
background-color: rgba(66, 133, 244, 0.04);
}
.google-button.text {
background-color: transparent;
color: var(--google-blue);
padding: 8px 16px;
}
.google-button.text:hover {
background-color: rgba(66, 133, 244, 0.04);
}
.google-button:disabled {
background-color: var(--google-disabled);
color: var(--google-text-secondary);
cursor: not-allowed;
box-shadow: none;
}
/* Notebook panel */
.notebook-panel {
overflow: hidden;
}
.notebook-header {
display: flex;
justify-content: space-between;
align-items: center;
padding: var(--spacing-md);
border-bottom: 1px solid var(--google-border);
}
.notebook-title {
font-size: 16px;
font-weight: 500;
color: var(--google-text-primary);
}
.notebook-preview {
flex: 1;
overflow-y: auto;
padding: var(--spacing-md);
background-color: var(--google-surface);
}
.placeholder-content {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100%;
color: var(--google-text-secondary);
}
.large-icon {
font-size: 48px;
margin-bottom: var(--spacing-md);
color: var(--google-gray);
}
/* Welcome message */
.welcome-message {
max-width: 600px;
margin: 0 auto;
}
.welcome-message h2 {
display: flex;
align-items: center;
gap: var(--spacing-sm);
margin-bottom: var(--spacing-md);
color: var(--google-blue);
}
.welcome-steps {
margin: var(--spacing-lg) 0;
}
.welcome-step {
display: flex;
align-items: center;
margin-bottom: var(--spacing-md);
}
.step-number {
width: 24px;
height: 24px;
border-radius: 50%;
background-color: var(--google-blue);
color: white;
display: flex;
align-items: center;
justify-content: center;
font-size: 14px;
margin-right: var(--spacing-md);
}
.step-text {
font-size: 16px;
}
.info-card {
display: flex;
background-color: #e8f0fe;
border-radius: var(--border-radius);
padding: var(--spacing-md);
margin: var(--spacing-md) 0;
}
.info-icon {
color: var(--google-blue);
margin-right: var(--spacing-md);
}
.info-content {
flex: 1;
}
.info-content p {
margin: 0;
}
.example-section {
margin-top: var(--spacing-lg);
}
.example-list {
list-style-type: none;
padding: 0;
}
.example-list li {
padding: var(--spacing-sm) 0;
border-left: 3px solid var(--google-blue);
padding-left: var(--spacing-md);
margin-bottom: var(--spacing-sm);
background-color: rgba(66, 133, 244, 0.05);
border-radius: 0 var(--border-radius) var(--border-radius) 0;
}
/* Messages */
.message {
margin-bottom: var(--spacing-md);
max-width: 85%;
padding: var(--spacing-md);
border-radius: var(--border-radius);
}
.user-message {
background-color: #e8f0fe;
margin-left: auto;
position: relative;
box-shadow: var(--shadow-1);
}
.ai-message {
background-color: white;
border: 1px solid var(--google-border);
margin-right: auto;
position: relative;
box-shadow: var(--shadow-1);
}
/* Fix for user message formatting */
.user-prefix {
display: inline;
font-weight: 500;
}
.message-content {
display: inline;
}
.message-content p {
display: inline;
margin: 0;
}
.message-content p:not(:first-child) {
display: block;
margin-top: var(--spacing-sm);
}
/* Typing indicator */
.typing-indicator {
display: flex;
align-items: center;
gap: 4px;
}
.typing-dot {
background-color: var(--google-blue);
border-radius: 50%;
width: 8px;
height: 8px;
animation: typing-dot 1.4s infinite;
}
.typing-dot:nth-child(2) {
animation-delay: 0.2s;
}
.typing-dot:nth-child(3) {
animation-delay: 0.4s;
}
@keyframes typing-dot {
0%, 60%, 100% { transform: translateY(0); }
30% { transform: translateY(-6px); }
}
/* Notebook cell styling */
.notebook-cell {
margin-bottom: var(--spacing-md);
border: 1px solid var(--google-border);
border-radius: var(--border-radius);
overflow: hidden;
background-color: var(--google-surface);
box-shadow: var(--shadow-1);
}
.cell-header {
padding: var(--spacing-sm) var(--spacing-md);
font-size: 13px;
font-weight: 500;
display: flex;
justify-content: space-between;
align-items: center;
border-bottom: 1px solid var(--google-border);
}
.cell-type {
display: inline-flex;
align-items: center;
font-family: 'Google Sans', 'Roboto', sans-serif;
font-size: 13px;
}
.markdown-header {
background-color: #e8f0fe;
color: #000000;
}
/* Make code header match markdown header */
.code-header {
background-color: #e8f0fe; /* Changed from #e6f4ea to match markdown-header */
color: #000000; /* Changed from #188038 to match markdown-header */
}
.cell-content {
padding: 0;
}
.cell-markdown .cell-content {
padding: var(--spacing-md);
}
.cell-code .cell-content {
padding: 0;
}
/* Code cell styling */
.cell-code pre {
margin: 0 !important;
border-radius: 0;
}
.cell-code code {
padding: var(--spacing-md) var(--spacing-md) var(--spacing-md) 0 !important;
font-family: 'Roboto Mono', monospace;
font-size: 14px;
}
/* Modal styling */
.google-modal {
border-radius: var(--border-radius);
border: none;
box-shadow: var(--shadow-3);
}
.google-modal .modal-header {
border-bottom: 1px solid var(--google-border);
padding: var(--spacing-md);
}
.google-modal .modal-title {
font-family: 'Google Sans', 'Roboto', sans-serif;
font-weight: 500;
font-size: 18px;
display: flex;
align-items: center;
gap: var(--spacing-sm);
}
.google-modal .modal-body {
padding: var(--spacing-md);
}
.google-modal .modal-footer {
border-top: 1px solid var(--google-border);
padding: var(--spacing-md);
}
/* Input fields in modal */
.input-field {
margin-bottom: var(--spacing-md);
}
.input-label {
display: block;
margin-bottom: var(--spacing-sm);
font-size: 14px;
color: var(--google-text-secondary);
}
.text-input {
width: 100%;
border: 1px solid var(--google-border);
border-radius: 4px;
padding: 10px 12px;
font-family: 'Roboto', sans-serif;
font-size: 16px;
outline: none;
transition: border-color 0.2s;
}
.text-input:focus {
border-color: var(--google-blue);
box-shadow: 0 0 0 1px var(--google-blue);
}
.input-helper {
margin-top: 4px;
font-size: 12px;
color: var(--google-text-secondary);
}
/* Steps card */
.steps-card {
background-color: var(--google-background);
border-radius: var(--border-radius);
overflow: hidden;
margin-bottom: var(--spacing-md);
}
.steps-header {
background-color: #e8f0fe;
padding: var(--spacing-sm) var(--spacing-md);
display: flex;
align-items: center;
gap: var(--spacing-sm);
color: var(--google-blue);
}
.steps-content {
padding: var(--spacing-md);
}
.steps-list {
margin: 0;
padding-left: 20px;
}
.steps-list li {
padding: 4px 0;
}
/* Floating scroll button */
.scroll-button {
position: fixed;
bottom: 20px;
right: 20px;
width: 40px;
height: 40px;
border-radius: 50%;
background-color: white;
color: var(--google-text-primary);
display: flex;
align-items: center;
justify-content: center;
border: 1px solid var(--google-border);
cursor: pointer;
box-shadow: var(--shadow-2);
opacity: 0;
transition: opacity 0.3s ease;
z-index: 1000;
}
.scroll-button.visible {
opacity: 1;
}
.scroll-button:hover {
background-color: #f8f9fa;
}
/* Add spinning animation for loading state */
@keyframes spin-animation {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
.material-icons.spinning {
animation: spin-animation 1.5s linear infinite;
}
/* Media queries for responsive design */
@media (max-width: 768px) {
.main-container {
flex-direction: column;
padding: var(--spacing-sm);
gap: var(--spacing-sm);
}
.chat-panel {
height: 40%; /* Reduced from 50% to 40% */
border-right: none;
border-bottom: none;
flex: none; /* Override the horizontal flex ratio when in column layout */
}
.notebook-panel {
height: 60%; /* Increased from 50% to 60% */
flex: none; /* Override the horizontal flex ratio when in column layout */
}
.send-button {
right: 8px;
top: 8px;
width: 32px;
height: 32px;
}
}
/* Developer Info Modal Styles */
.creator-section {
padding: var(--spacing-md);
background-color: var(--google-background);
border-radius: var(--border-radius);
}
.section-title {
margin-bottom: var(--spacing-md);
color: var(--google-blue);
font-family: 'Google Sans', 'Roboto', sans-serif;
font-size: 18px;
}
.developer-info {
display: flex;
flex-direction: column;
gap: var(--spacing-sm);
}
.developer-detail {
font-size: 15px;
line-height: 1.5;
}
.developer-detail a {
color: var(--google-blue);
text-decoration: none;
}
.developer-detail a:hover {
text-decoration: underline;
}
.contact-cta {
margin-top: var(--spacing-lg);
}
.call-to-action {
font-family: 'Google Sans', 'Roboto', sans-serif;
font-weight: 500;
color: var(--google-text-primary);
font-size: 16px;
}