diff --git "a/index.html" "b/index.html"
--- "a/index.html"
+++ "b/index.html"
@@ -20,62 +20,152 @@
font-family: 'Segoe UI', system-ui, sans-serif;
overflow: hidden;
height: 100vh;
+ width: 100vw;
}
- #canvasContainer {
- width: 100%;
- height: 100%;
- position: relative;
+ /* Mobile Navigation */
+ .mobile-nav {
+ display: none;
+ position: fixed;
+ top: 20px;
+ left: 20px;
+ z-index: 1000;
}
- canvas {
- display: block;
- outline: none;
- width: 100%;
- height: 100%;
+ .mobile-menu-btn {
+ width: 50px;
+ height: 50px;
+ background: rgba(20, 20, 30, 0.9);
+ border-radius: 15px;
+ border: 1px solid rgba(255, 255, 255, 0.1);
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ gap: 5px;
+ cursor: pointer;
+ transition: all 0.3s ease;
+ }
+
+ .mobile-menu-btn span {
+ width: 24px;
+ height: 2px;
+ background: #a0b0ff;
+ border-radius: 2px;
+ transition: all 0.3s ease;
+ }
+
+ .mobile-menu-btn.active span:nth-child(1) {
+ transform: rotate(45deg) translate(6px, 6px);
+ }
+
+ .mobile-menu-btn.active span:nth-child(2) {
+ opacity: 0;
+ }
+
+ .mobile-menu-btn.active span:nth-child(3) {
+ transform: rotate(-45deg) translate(6px, -6px);
}
- .ui-overlay {
- position: absolute;
+ .mobile-panel-overlay {
+ display: none;
+ position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
- pointer-events: none;
+ background: rgba(0, 0, 0, 0.7);
+ backdrop-filter: blur(5px);
+ z-index: 999;
+ }
+
+ /* Main Layout */
+ .main-container {
+ display: flex;
+ height: 100vh;
+ width: 100vw;
+ position: relative;
+ }
+
+ /* Left Side Panel */
+ .side-panel {
+ width: 320px;
+ height: 100vh;
+ background: rgba(15, 15, 25, 0.9);
+ backdrop-filter: blur(10px);
+ border-right: 1px solid rgba(255, 255, 255, 0.1);
+ overflow-y: auto;
+ padding: 25px;
+ transition: transform 0.3s ease;
z-index: 100;
+ position: relative;
}
- /* === CHAT INTERFACE === */
- .chat-interface {
- position: absolute;
- top: 30px;
- right: 30px;
- width: 420px;
- height: calc(100vh - 100px);
+ .side-panel.left {
display: flex;
flex-direction: column;
- pointer-events: all;
- z-index: 101;
- opacity: 0;
- transform: translateY(20px);
- animation: slideIn 0.5s ease 1s forwards;
+ gap: 25px;
}
- @keyframes slideIn {
- to {
- opacity: 1;
- transform: translateY(0);
- }
+ /* Right Side Panel */
+ .side-panel.right {
+ border-right: none;
+ border-left: 1px solid rgba(255, 255, 255, 0.1);
+ display: flex;
+ flex-direction: column;
+ gap: 25px;
}
- .chat-header {
+ /* Main Content Area */
+ .main-content {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ position: relative;
+ padding: 20px;
+ overflow: hidden;
+ }
+
+ /* 3D Canvas */
+ #canvasContainer {
+ width: 100%;
+ height: 70vh;
+ position: relative;
+ border-radius: 20px;
+ overflow: hidden;
+ box-shadow: 0 20px 40px rgba(0, 0, 0, 0.3);
+ }
+
+ canvas {
+ display: block;
+ outline: none;
+ width: 100%;
+ height: 100%;
+ }
+
+ /* Chat Interface (Centered) */
+ .chat-interface {
+ width: 100%;
+ max-width: 800px;
+ margin-top: 30px;
+ position: relative;
+ z-index: 10;
+ }
+
+ .chat-container {
background: rgba(20, 20, 30, 0.9);
backdrop-filter: blur(10px);
- border-radius: 20px 20px 0 0;
- padding: 20px;
+ border-radius: 20px;
border: 1px solid rgba(255, 255, 255, 0.1);
- border-bottom: none;
- box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2);
+ box-shadow: 0 20px 40px rgba(0, 0, 0, 0.3);
+ overflow: hidden;
+ }
+
+ .chat-header {
+ padding: 20px;
+ border-bottom: 1px solid rgba(255, 255, 255, 0.05);
display: flex;
align-items: center;
justify-content: space-between;
@@ -106,25 +196,13 @@
animation: pulse 2s infinite;
}
- .chat-container {
- flex: 1;
- background: rgba(20, 20, 30, 0.85);
- backdrop-filter: blur(10px);
- border: 1px solid rgba(255, 255, 255, 0.1);
- border-top: none;
- overflow: hidden;
- display: flex;
- flex-direction: column;
- box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2);
- }
-
.chat-messages {
- flex: 1;
+ height: 300px;
overflow-y: auto;
padding: 20px;
display: flex;
flex-direction: column;
- gap: 20px;
+ gap: 15px;
scrollbar-width: thin;
scrollbar-color: #5a6cff rgba(255, 255, 255, 0.1);
}
@@ -145,8 +223,8 @@
.message {
max-width: 85%;
- padding: 15px;
- border-radius: 18px;
+ padding: 12px 15px;
+ border-radius: 15px;
line-height: 1.5;
position: relative;
animation: messageAppear 0.3s ease;
@@ -185,34 +263,6 @@
text-align: right;
}
- .message-typing {
- display: flex;
- align-items: center;
- gap: 5px;
- padding: 15px;
- background: rgba(255, 255, 255, 0.05);
- border-radius: 18px;
- border-bottom-left-radius: 5px;
- align-self: flex-start;
- width: 120px;
- }
-
- .typing-dot {
- width: 8px;
- height: 8px;
- background: #a0b0ff;
- border-radius: 50%;
- animation: typing 1.4s infinite ease-in-out;
- }
-
- .typing-dot:nth-child(1) { animation-delay: -0.32s; }
- .typing-dot:nth-child(2) { animation-delay: -0.16s; }
-
- @keyframes typing {
- 0%, 80%, 100% { transform: translateY(0); }
- 40% { transform: translateY(-10px); }
- }
-
.chat-input-container {
padding: 20px;
background: rgba(15, 15, 25, 0.9);
@@ -302,261 +352,142 @@
transform: translateY(-2px);
}
- .voice-visualizer {
- height: 40px;
- display: flex;
- align-items: center;
- justify-content: center;
- gap: 3px;
- margin-top: 10px;
- opacity: 0;
- transition: opacity 0.3s ease;
+ /* Cards Styling */
+ .card {
+ background: rgba(20, 20, 30, 0.8);
+ border-radius: 15px;
+ padding: 20px;
+ border: 1px solid rgba(255, 255, 255, 0.1);
+ box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2);
}
- .voice-visualizer.active {
- opacity: 1;
+ .card-title {
+ font-size: 1.1em;
+ margin-bottom: 20px;
+ font-weight: 300;
+ color: #a0b0ff;
+ display: flex;
+ align-items: center;
+ gap: 10px;
}
- .voice-bar {
- width: 4px;
- height: 10px;
- background: #5a6cff;
- border-radius: 2px;
- transition: height 0.1s ease;
+ .card-title i {
+ font-size: 1em;
}
- .voice-bar.listening {
- background: #ff5a5a;
+ /* Dropdown/Accordion */
+ .accordion {
+ margin-bottom: 15px;
}
- /* === RAG TRAINING PANEL === */
- .rag-training-panel {
- position: absolute;
- top: 30px;
- left: 350px;
- width: 350px;
- height: calc(100vh - 100px);
- background: rgba(20, 20, 30, 0.9);
- backdrop-filter: blur(10px);
- border-radius: 20px;
- padding: 25px;
- pointer-events: all;
+ .accordion-header {
+ padding: 15px;
+ background: rgba(255, 255, 255, 0.05);
+ border-radius: 10px;
border: 1px solid rgba(255, 255, 255, 0.1);
- box-shadow: 0 20px 40px rgba(0, 0, 0, 0.3);
- z-index: 102;
- opacity: 0;
- transform: translateY(20px);
- animation: slideIn 0.5s ease 1.4s forwards;
display: flex;
- flex-direction: column;
+ align-items: center;
+ justify-content: space-between;
+ cursor: pointer;
+ transition: all 0.3s ease;
}
- .rag-header {
- display: flex;
- align-items: center;
- gap: 10px;
- margin-bottom: 20px;
- color: #a0b0ff;
- font-size: 1.1em;
- font-weight: 300;
+ .accordion-header:hover {
+ background: rgba(255, 255, 255, 0.08);
+ }
+
+ .accordion-header.active {
+ background: rgba(90, 108, 255, 0.1);
+ border-color: rgba(90, 108, 255, 0.3);
+ }
+
+ .accordion-content {
+ max-height: 0;
+ overflow: hidden;
+ transition: max-height 0.3s ease;
+ padding: 0 15px;
+ }
+
+ .accordion-content.active {
+ max-height: 500px;
+ padding: 15px;
}
- .rag-section {
- margin-bottom: 25px;
+ /* Control Groups */
+ .control-group {
+ margin-bottom: 20px;
}
- .rag-label {
+ label {
display: block;
- margin-bottom: 10px;
+ margin-bottom: 8px;
font-size: 0.9em;
color: #8892b0;
- display: flex;
- align-items: center;
- gap: 8px;
}
- .rag-textarea {
- width: 100%;
- height: 120px;
- background: rgba(255, 255, 255, 0.07);
- border: 1px solid rgba(255, 255, 255, 0.1);
- border-radius: 10px;
- padding: 12px 15px;
- color: white;
- font-family: 'Segoe UI', system-ui, sans-serif;
- font-size: 0.9em;
- resize: vertical;
- transition: all 0.3s ease;
+ .slider-container {
+ display: flex;
+ align-items: center;
+ gap: 15px;
}
- .rag-textarea:focus {
- outline: none;
- border-color: #5a6cff;
+ input[type="range"] {
+ flex: 1;
+ height: 6px;
background: rgba(255, 255, 255, 0.1);
- box-shadow: 0 0 0 2px rgba(90, 108, 255, 0.2);
+ border-radius: 3px;
+ outline: none;
+ -webkit-appearance: none;
}
- .rag-file-upload {
- width: 100%;
- padding: 20px;
- border: 2px dashed rgba(90, 108, 255, 0.3);
- border-radius: 10px;
- text-align: center;
+ input[type="range"]::-webkit-slider-thumb {
+ -webkit-appearance: none;
+ width: 20px;
+ height: 20px;
+ background: #5a6cff;
+ border-radius: 50%;
cursor: pointer;
- transition: all 0.3s ease;
- margin-bottom: 15px;
- }
-
- .rag-file-upload:hover {
- border-color: #5a6cff;
- background: rgba(90, 108, 255, 0.05);
+ transition: all 0.2s;
}
- .rag-file-upload input {
- display: none;
+ input[type="range"]::-webkit-slider-thumb:hover {
+ background: #7a8aff;
+ transform: scale(1.1);
}
- .rag-file-info {
- font-size: 0.8em;
- color: #8892b0;
- margin-bottom: 15px;
+ .value-display {
+ min-width: 40px;
text-align: center;
+ font-family: 'Courier New', monospace;
+ color: #5a6cff;
+ font-weight: 500;
}
- .rag-controls {
+ /* Button Groups */
+ .button-grid {
display: grid;
- grid-template-columns: 1fr 1fr;
+ grid-template-columns: repeat(3, 1fr);
gap: 10px;
- margin-top: 20px;
+ margin-top: 15px;
}
- .rag-btn {
- padding: 12px;
+ .preset-btn {
+ padding: 10px;
background: rgba(90, 108, 255, 0.1);
border: 1px solid rgba(90, 108, 255, 0.3);
color: #a0b0ff;
border-radius: 10px;
cursor: pointer;
- transition: all 0.3s ease;
- display: flex;
- align-items: center;
- justify-content: center;
- gap: 8px;
+ transition: all 0.2s;
font-size: 0.9em;
+ text-align: center;
}
- .rag-btn:hover {
+ .preset-btn:hover {
background: rgba(90, 108, 255, 0.2);
transform: translateY(-2px);
}
- .rag-btn.primary {
- background: linear-gradient(135deg, #5a6cff, #7a8aff);
- color: white;
- }
-
- .rag-btn.primary:hover {
- background: linear-gradient(135deg, #7a8aff, #9aafff);
- }
-
- .rag-progress {
- width: 100%;
- height: 6px;
- background: rgba(255, 255, 255, 0.1);
- border-radius: 3px;
- overflow: hidden;
- margin-top: 15px;
- }
-
- .rag-progress-bar {
- height: 100%;
- background: linear-gradient(90deg, #5a6cff, #00ff9d);
- width: 0%;
- transition: width 0.3s ease;
- }
-
- .rag-status {
- display: flex;
- align-items: center;
- gap: 8px;
- margin-top: 15px;
- padding: 10px;
- background: rgba(0, 255, 157, 0.1);
- border-radius: 10px;
- font-size: 0.85em;
- color: #00ff9d;
- border: 1px solid rgba(0, 255, 157, 0.2);
- }
-
- .rag-knowledge-list {
- max-height: 200px;
- overflow-y: auto;
- background: rgba(255, 255, 255, 0.05);
- border-radius: 10px;
- padding: 10px;
- margin-top: 10px;
- }
-
- .knowledge-item {
- padding: 8px 12px;
- background: rgba(255, 255, 255, 0.07);
- border-radius: 8px;
- margin-bottom: 8px;
- font-size: 0.85em;
- display: flex;
- justify-content: space-between;
- align-items: center;
- }
-
- .knowledge-item .delete-btn {
- color: #ff5a5a;
- cursor: pointer;
- padding: 4px;
- }
-
- /* === VOICE CONTROLS PANEL === */
- .voice-controls {
- position: absolute;
- bottom: 30px;
- right: 470px;
- background: rgba(20, 20, 30, 0.9);
- backdrop-filter: blur(10px);
- border-radius: 20px;
- padding: 25px;
- width: 300px;
- pointer-events: all;
- border: 1px solid rgba(255, 255, 255, 0.1);
- box-shadow: 0 20px 40px rgba(0, 0, 0, 0.3);
- z-index: 102;
- opacity: 0;
- transform: translateY(20px);
- animation: slideIn 0.5s ease 1.2s forwards;
- }
-
- .voice-header {
- display: flex;
- align-items: center;
- gap: 10px;
- margin-bottom: 20px;
- color: #a0b0ff;
- font-size: 1.1em;
- font-weight: 300;
- }
-
- .voice-control-group {
- margin-bottom: 20px;
- }
-
- .voice-label {
- display: block;
- margin-bottom: 8px;
- font-size: 0.9em;
- color: #8892b0;
- display: flex;
- align-items: center;
- gap: 8px;
- }
-
.voice-select {
width: 100%;
padding: 12px 15px;
@@ -577,56 +508,11 @@
box-shadow: 0 0 0 2px rgba(90, 108, 255, 0.2);
}
- .voice-select option {
- background: #1a1a2a;
- color: white;
- padding: 10px;
- }
-
- .voice-slider-container {
- display: flex;
- align-items: center;
- gap: 15px;
- }
-
- .voice-slider {
- flex: 1;
- height: 6px;
- background: rgba(255, 255, 255, 0.1);
- border-radius: 3px;
- outline: none;
- -webkit-appearance: none;
- }
-
- .voice-slider::-webkit-slider-thumb {
- -webkit-appearance: none;
- width: 20px;
- height: 20px;
- background: #5a6cff;
- border-radius: 50%;
- cursor: pointer;
- transition: all 0.2s;
- }
-
- .voice-slider::-webkit-slider-thumb:hover {
- background: #7a8aff;
- transform: scale(1.1);
- }
-
- .voice-value {
- min-width: 40px;
- text-align: center;
- font-family: 'Courier New', monospace;
- color: #5a6cff;
- font-weight: 500;
- font-size: 0.9em;
- }
-
.voice-control-buttons {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 10px;
- margin-top: 25px;
+ margin-top: 20px;
}
.voice-btn {
@@ -664,177 +550,97 @@
background: rgba(255, 90, 90, 0.2);
}
- .voice-btn.stop.active {
- background: rgba(255, 90, 90, 0.3);
- }
-
- .voice-preview-btn {
+ /* RAG Training Section */
+ .rag-textarea {
width: 100%;
- padding: 12px;
+ height: 100px;
background: rgba(255, 255, 255, 0.07);
border: 1px solid rgba(255, 255, 255, 0.1);
border-radius: 10px;
- color: #a0b0ff;
- cursor: pointer;
- transition: all 0.3s ease;
- display: flex;
- align-items: center;
- justify-content: center;
- gap: 8px;
- margin-top: 10px;
+ padding: 12px 15px;
+ color: white;
+ font-family: 'Segoe UI', system-ui, sans-serif;
font-size: 0.9em;
+ resize: vertical;
+ transition: all 0.3s ease;
+ margin-bottom: 15px;
}
- .voice-preview-btn:hover {
+ .rag-textarea:focus {
+ outline: none;
+ border-color: #5a6cff;
background: rgba(255, 255, 255, 0.1);
- transform: translateY(-2px);
- }
-
- .voice-status {
- display: flex;
- align-items: center;
- gap: 8px;
- margin-top: 15px;
- padding: 10px;
- background: rgba(0, 255, 157, 0.1);
- border-radius: 10px;
- font-size: 0.85em;
- color: #00ff9d;
- border: 1px solid rgba(0, 255, 157, 0.2);
- }
-
- .voice-status i {
- animation: pulse 2s infinite;
+ box-shadow: 0 0 0 2px rgba(90, 108, 255, 0.2);
}
- /* === EXISTING STYLES (PRESERVED) === */
- .control-panel {
- position: absolute;
- bottom: 30px;
- left: 30px;
- background: rgba(20, 20, 30, 0.8);
- backdrop-filter: blur(10px);
- border-radius: 20px;
- padding: 25px;
- width: 300px;
- pointer-events: all;
- border: 1px solid rgba(255, 255, 255, 0.1);
- box-shadow: 0 20px 40px rgba(0, 0, 0, 0.3);
+ .rag-controls {
+ display: grid;
+ grid-template-columns: 1fr 1fr;
+ gap: 10px;
+ margin-top: 10px;
}
- .control-title {
- font-size: 1.2em;
- margin-bottom: 20px;
- font-weight: 300;
+ .rag-btn {
+ padding: 12px;
+ background: rgba(90, 108, 255, 0.1);
+ border: 1px solid rgba(90, 108, 255, 0.3);
color: #a0b0ff;
+ border-radius: 10px;
+ cursor: pointer;
+ transition: all 0.3s ease;
display: flex;
align-items: center;
- gap: 10px;
+ justify-content: center;
+ gap: 8px;
+ font-size: 0.9em;
}
- .control-group {
- margin-bottom: 20px;
+ .rag-btn:hover {
+ background: rgba(90, 108, 255, 0.2);
+ transform: translateY(-2px);
}
- label {
- display: block;
- margin-bottom: 8px;
- font-size: 0.9em;
- color: #8892b0;
+ .rag-btn.primary {
+ background: linear-gradient(135deg, #5a6cff, #7a8aff);
+ color: white;
}
- .slider-container {
- display: flex;
- align-items: center;
- gap: 15px;
+ .rag-btn.primary:hover {
+ background: linear-gradient(135deg, #7a8aff, #9aafff);
}
- input[type="range"] {
- flex: 1;
+ .rag-progress {
+ width: 100%;
height: 6px;
background: rgba(255, 255, 255, 0.1);
border-radius: 3px;
- outline: none;
- -webkit-appearance: none;
- }
-
- input[type="range"]::-webkit-slider-thumb {
- -webkit-appearance: none;
- width: 20px;
- height: 20px;
- background: #5a6cff;
- border-radius: 50%;
- cursor: pointer;
- transition: all 0.2s;
- }
-
- input[type="range"]::-webkit-slider-thumb:hover {
- background: #7a8aff;
- transform: scale(1.1);
- }
-
- .value-display {
- min-width: 40px;
- text-align: center;
- font-family: 'Courier New', monospace;
- color: #5a6cff;
- font-weight: 500;
+ overflow: hidden;
+ margin-top: 15px;
}
- .preset-buttons {
- display: grid;
- grid-template-columns: repeat(3, 1fr);
- gap: 10px;
- margin-top: 20px;
+ .rag-progress-bar {
+ height: 100%;
+ background: linear-gradient(90deg, #5a6cff, #00ff9d);
+ width: 0%;
+ transition: width 0.3s ease;
}
- .preset-btn {
+ .rag-status {
+ display: flex;
+ align-items: center;
+ gap: 8px;
+ margin-top: 15px;
padding: 10px;
- background: rgba(90, 108, 255, 0.1);
- border: 1px solid rgba(90, 108, 255, 0.3);
- color: #a0b0ff;
+ background: rgba(0, 255, 157, 0.1);
border-radius: 10px;
- cursor: pointer;
- transition: all 0.2s;
- font-size: 0.9em;
- text-align: center;
- }
-
- .preset-btn:hover {
- background: rgba(90, 108, 255, 0.2);
- transform: translateY(-2px);
- }
-
- .status-bar {
- position: absolute;
- top: 30px;
- left: 30px;
- background: rgba(20, 20, 30, 0.8);
- backdrop-filter: blur(10px);
- padding: 15px 25px;
- border-radius: 15px;
- font-size: 0.9em;
- color: #8892b0;
- border: 1px solid rgba(255, 255, 255, 0.1);
- }
-
- .pulse-indicator {
- display: inline-block;
- width: 12px;
- height: 12px;
- background: #00ff9d;
- border-radius: 50%;
- margin-right: 10px;
- animation: pulse 2s infinite;
- }
-
- @keyframes pulse {
- 0%, 100% { opacity: 1; }
- 50% { opacity: 0.3; }
+ font-size: 0.85em;
+ color: #00ff9d;
+ border: 1px solid rgba(0, 255, 157, 0.2);
}
+ /* Loading and Error Screens */
.loading-screen {
- position: absolute;
+ position: fixed;
top: 0;
left: 0;
width: 100%;
@@ -844,7 +650,7 @@
flex-direction: column;
justify-content: center;
align-items: center;
- z-index: 1000;
+ z-index: 2000;
}
.spinner {
@@ -862,7 +668,7 @@
}
.error-screen {
- position: absolute;
+ position: fixed;
top: 0;
left: 0;
width: 100%;
@@ -872,7 +678,7 @@
flex-direction: column;
justify-content: center;
align-items: center;
- z-index: 1001;
+ z-index: 2001;
text-align: center;
padding: 20px;
}
@@ -904,320 +710,512 @@
transform: translateY(-2px);
}
- /* Responsive adjustments */
- @media (max-width: 1600px) {
- .rag-training-panel {
- left: 30px;
- top: 150px;
- height: calc(100vh - 180px);
- }
-
- .voice-controls {
- right: 30px;
- bottom: 400px;
+ @keyframes pulse {
+ 0%, 100% { opacity: 1; }
+ 50% { opacity: 0.3; }
+ }
+
+ /* Responsive Design */
+ @media (max-width: 1200px) {
+ .side-panel {
+ width: 280px;
+ padding: 20px;
}
.chat-interface {
- width: 400px;
+ max-width: 700px;
}
}
- @media (max-height: 800px) {
- .chat-interface {
- height: calc(100vh - 80px);
+ @media (max-width: 1024px) {
+ .main-container {
+ flex-direction: column;
}
- .voice-controls {
- padding: 20px;
- width: 260px;
+ .side-panel {
+ position: fixed;
+ top: 0;
+ height: 100vh;
+ transform: translateX(-100%);
+ z-index: 1000;
}
- .rag-training-panel {
- padding: 20px;
- width: 320px;
+ .side-panel.left {
+ left: 0;
}
- }
-
-
-
-
-
-
-
-
-
-
- AI Tutor System Ready
-
-
-
-
-
-
-
-
-
- Add Knowledge
-
-
-
+ .side-panel.right {
+ right: 0;
+ transform: translateX(100%);
+ }
-
-
-
- Upload Documents
-
-
-
-
Drag & drop files or click to browse
-
Supports: PDF, TXT, DOCX, MD
-
-
-
- Files will be processed for RAG training
-
-
+ .side-panel.active {
+ transform: translateX(0);
+ }
-
-
-
- Add Text
-
-
-
- Train AI
-
-
+ .mobile-nav {
+ display: block;
+ }
-
+ .main-content {
+ padding: 80px 20px 20px 20px;
+ }
-
-
- Training in progress...
-
+ #canvasContainer {
+ height: 50vh;
+ }
-
-
-
- Knowledge Base
-
-
-
-
- Physics Basics
-
-
-
- Calculus Fundamentals
-
-
-
-
-
+ .chat-interface {
+ margin-top: 20px;
+ }
+
+ .chat-messages {
+ height: 250px;
+ }
+ }
-
-
-
+ @media (max-width: 768px) {
+ #canvasContainer {
+ height: 40vh;
+ }
-
-
-
- Voice Selection
-
-
- Loading voices...
-
-
+ .chat-messages {
+ height: 200px;
+ }
-
-
-
- Speech Rate
-
-
-
- 1.0x
-
-
+ .side-panel {
+ width: 100%;
+ max-width: 350px;
+ }
+ }
+
+ @media (max-width: 480px) {
+ #canvasContainer {
+ height: 35vh;
+ }
-
-
-
- Pitch Variation
-
-
-
- 1.0
-
-
+ .chat-interface {
+ margin-top: 15px;
+ }
+
+ .chat-messages {
+ height: 180px;
+ padding: 15px;
+ }
-
-
-
- Volume Level
-
-
-
-
80%
+ .chat-input-container {
+ padding: 15px;
+ }
+
+ .chat-input, .voice-input-btn, .send-btn {
+ min-height: 48px;
+ height: 48px;
+ }
+ }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Initializing AI Interface...
+
+
+
+
+
⚠️ Initialization Failed
+
Three.js library failed to load. Please check your internet connection or try again.
+
Retry
+
+
+
+
-
-
-
-