diff --git a/app/public/css/buttons.css b/app/public/css/buttons.css
index d89cb3a4..500ea70c 100644
--- a/app/public/css/buttons.css
+++ b/app/public/css/buttons.css
@@ -343,11 +343,6 @@
background: linear-gradient(180deg, rgba(255,255,255,0.02), rgba(255,255,255,0.01));
}
-.toolbar-button[aria-pressed="true"] {
- background: var(--falkor-accent, rgba(150,120,220,0.22));
- transform: translateY(-4px) scale(1.03);
-}
-
#toolbar-buttons {
display: flex;
flex-direction: column;
@@ -364,19 +359,83 @@
flex-shrink: 0;
}
-@media (max-width: 768px) {
- #left-toolbar {
- left: 8px;
- top: 12px;
- bottom: auto;
- width: auto;
- height: 48px;
- padding: 4px;
- border-radius: 8px;
- flex-direction: row;
+/* Collapsed state: only show the burger button. Remove background/border/shadow so the bar is unobtrusive. */
+#left-toolbar.collapsed {
+ /* minimize width to avoid blocking content */
+ width: 0px;
+ padding: 0;
+ transition: width 220ms ease, padding 220ms ease, background 200ms ease;
+ background: transparent;
+ box-shadow: none;
+ border: none;
+ align-items: flex-start; /* keep burger at top */
+ overflow: visible;
+ position: relative; /* allow z-index for inner button */
+ pointer-events: none; /* let clicks pass through, but burger will override */
+}
+
+#left-toolbar.collapsed .toolbar-button {
+ display: none; /* hide all toolbar buttons */
+}
+
+#left-toolbar.collapsed #burger-toggle-btn {
+ display: flex;
+ width: 48px;
+ height: 48px;
+ margin: 6px 0;
+ position: absolute;
+ top: 6px;
+ left: 6px;
+ z-index: 9999; /* keep on top so it's always clickable */
+ pointer-events: auto;
+}
+
+/* Mobile fallback: without JS, default to only the burger visible on small viewports */
+@media (max-width: 767px) {
+ #left-toolbar.collapsed {
+ width: 0px;
+ padding: 0;
+ background: transparent;
+ box-shadow: none;
+ border: none;
+ align-items: flex-start;
+ pointer-events: none;
+ }
+
+ /* When NOT collapsed on mobile, show full toolbar */
+ #left-toolbar:not(.collapsed) {
+ width: 48px;
+ padding: 6px 6px;
+ background: var(--bg-tertiary, rgba(255,255,255,0.02));
+ box-shadow: 0 6px 18px rgba(0,0,0,0.25);
+ border: 1px solid var(--border-color, rgba(255,255,255,0.03));
+ backdrop-filter: blur(6px);
align-items: center;
+ pointer-events: auto;
+ z-index: 1050;
+ }
+
+ /* On mobile hide buttons only when explicitly collapsed (so burger can open toolbar) */
+ #left-toolbar.collapsed .toolbar-button { display: none; }
+ #left-toolbar.collapsed #burger-toggle-btn {
+ display: flex;
+ width: 48px;
+ height: 48px;
+ position: absolute;
+ top: 6px;
+ left: 6px;
+ pointer-events: auto;
+ }
+ /* When not collapsed, show toolbar buttons as normal */
+ #left-toolbar:not(.collapsed) .toolbar-button { display: flex; }
+ #left-toolbar:not(.collapsed) #burger-toggle-btn {
+ display: flex;
+ position: relative;
+ top: auto;
+ left: auto;
+ pointer-events: auto;
}
- #left-toolbar-inner { flex-direction: row; gap: 6px; }
}
+
diff --git a/app/public/css/chat-components.css b/app/public/css/chat-components.css
index 78c05656..df098210 100644
--- a/app/public/css/chat-components.css
+++ b/app/public/css/chat-components.css
@@ -28,6 +28,24 @@
background-color: var(--falkor-secondary);
}
+@media (max-width: 768px) {
+ .chat-messages {
+ padding: 2px;
+ }
+
+ .chat-container {
+ padding-right: 10px;
+ padding-left: 10px;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ /* Ensure no horizontal overflow */
+ max-width: 100vw;
+ overflow-x: hidden;
+ box-sizing: border-box;
+ /* Ensure content is accessible when toolbar is open */
+ transition: margin-left 220ms ease;
+ }
+}
.message-container {
display: flex;
flex-direction: row;
diff --git a/app/public/css/responsive.css b/app/public/css/responsive.css
index 01be5d39..57f16e7c 100644
--- a/app/public/css/responsive.css
+++ b/app/public/css/responsive.css
@@ -2,11 +2,55 @@
/* Layout Responsive */
@media (max-width: 768px) {
- .chat-container {
- padding-right: 10px;
- padding-left: 10px;
- padding-top: 10px;
- padding-bottom: 10px;
+ /* When left toolbar is open, push content to make room */
+ body.left-toolbar-open .chat-container {
+ max-width: calc(100vw - 48px);
+ }
+
+ /* Ensure body doesn't overflow */
+ body {
+ max-width: 100vw;
+ overflow-x: hidden;
+ }
+
+ /* Main container mobile adjustments */
+ #container {
+ width: 100%;
+ max-width: 100vw;
+ overflow-x: hidden;
+ box-sizing: border-box;
+ transition: margin-left 220ms ease;
+ }
+
+ /* Adjust container when toolbar is open */
+ body.left-toolbar-open #container {
+ margin-left: 48px;
+ width: calc(100% - 48px);
+ max-width: calc(100vw - 48px);
+ }
+
+ /* Prevent any background showing behind the shifted content */
+ body.left-toolbar-open {
+ background: var(--falkor-secondary);
+ }
+
+ /* Ensure chat container fills the available space properly */
+ body.left-toolbar-open .chat-container {
+ background: var(--falkor-secondary);
+ border-left: none;
+ }
+
+ /* Ensure chat header elements are properly positioned when toolbar is open */
+ body.left-toolbar-open .chat-header {
+ padding-left: 15px; /* Add extra padding to prevent overlap */
+ width: 100%;
+ box-sizing: border-box;
+ }
+
+ /* Ensure dropdown and buttons in header don't get cut off */
+ body.left-toolbar-open .chat-header > * {
+ margin-left: 0;
+ width: 100%;
}
}
@@ -56,22 +100,102 @@
/* Button Container Responsive */
@media (max-width: 768px) {
- .button-container {
- flex-direction: row;
+ .chat-header .button-container {
+ width: 100%;
+ max-width: 100%;
+ padding: 0 10px;
+ margin: 0;
+ box-sizing: border-box;
gap: 8px;
+ flex-wrap: nowrap;
+ align-items: stretch;
+ }
+
+ /* Hide vertical separators on mobile */
+ .vertical-separator {
+ display: none;
+ }
+
+ /* Make selectors and buttons fit screen width */
+ #graph-select,
+ #custom-file-upload {
+ flex: 1;
+ min-width: 0;
+ padding: 8px 6px;
+ font-size: 13px;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ overflow: hidden;
+ height: 40px;
+ box-sizing: border-box;
+ }
+
+ #graph-select {
+ max-width: 30%;
+ }
+
+ #custom-file-upload {
+ max-width: 35%;
+ text-align: center;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ cursor: pointer;
+ }
+
+ .dropdown-container {
+ flex: 1;
+ max-width: 35%;
+ }
+
+ .custom-dropdown {
+ width: 100%;
+ height: 40px;
+ }
+
+ .dropdown-selected {
+ padding: 8px 6px;
+ font-size: 13px;
+ height: 100%;
+ box-sizing: border-box;
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ }
+
+ .dropdown-text {
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ overflow: hidden;
+ flex: 1;
+ }
+
+ .dropdown-arrow {
+ margin-left: 4px;
+ flex-shrink: 0;
}
}
-/* Select Elements Responsive */
-@media (max-width: 768px) {
+@media (max-width: 480px) {
+ .chat-header .button-container {
+ padding: 0;
+ gap: 5px;
+ }
+
#graph-select,
- #custom-file-upload,
- #open-pg-modal {
- min-width: 120px;
- width: auto;
- padding: 8px 10px;
- font-size: 14px;
- flex: 1;
+ #custom-file-upload {
+ padding: 6px 4px;
+ font-size: 12px;
+ height: 36px;
+ }
+
+ .custom-dropdown {
+ height: 36px;
+ }
+
+ .dropdown-selected {
+ padding: 6px 4px;
+ font-size: 12px;
}
}
@@ -99,8 +223,35 @@
}
.chat-input {
- padding: 12px 16px;
- gap: 12px;
+ padding: 0px;
+ gap: 8px;
+ /* Ensure it fits within viewport width */
+ margin: 0;
+ box-sizing: border-box;
+ }
+
+ .input-container {
+ /* Reduce padding on mobile to maximize input space */
+ padding: 8px;
+ gap: 4px;
+ min-width: 0; /* Allow container to shrink */
+ flex-shrink: 1;
+ }
+
+ #message-input {
+ font-size: 16px !important; /* Prevent zoom on iOS */
+ min-width: 0; /* Allow input to shrink */
+ }
+
+ #message-input::placeholder {
+ font-size: 16px !important;
+ }
+
+ /* Ensure buttons don't overflow */
+ .input-button {
+ width: 40px;
+ height: 40px;
+ flex-shrink: 0; /* Prevent buttons from shrinking */
}
}
diff --git a/app/templates/components/left_toolbar.j2 b/app/templates/components/left_toolbar.j2
index b706f464..c7310a4b 100644
--- a/app/templates/components/left_toolbar.j2
+++ b/app/templates/components/left_toolbar.j2
@@ -1,34 +1,39 @@
{# Left vertical toolbar to host expandable buttons (keeps future buttons easy to add) #}
\ No newline at end of file
+
+
+
\ No newline at end of file