* { margin: 0; padding: 0; box-sizing: border-box; } html, body { height: 100%; width: 100%; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; overflow: hidden; } /* --- Top Bar --- */ #topBar { display: flex; align-items: center; height: 50px; background: #6366f1; padding: 0 20px; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15); z-index: 1000; } #titleSection { display: flex; align-items: center; } #titleSection h1 { font-size: 20px; font-weight: 600; color: white; letter-spacing: 0.5px; } #divider { width: 2px; height: 30px; background: rgba(255, 255, 255, 0.3); margin: 0 20px; } /* --- Menus --- */ #menuSection { display: flex; gap: 5px; } .menuGroup { position: relative; } .menuButton { background: rgba(255, 255, 255, 0.15); color: white; border: 1px solid rgba(255, 255, 255, 0.2); padding: 8px 16px; border-radius: 4px; cursor: pointer; font-size: 14px; font-weight: 500; transition: all 0.2s ease; backdrop-filter: blur(10px); } .menuButton:hover { background: rgba(255, 255, 255, 0.25); border-color: rgba(255, 255, 255, 0.3); transform: translateY(-1px); } .menuButton:active { transform: translateY(0); } .dropdown { position: absolute; top: 100%; left: 0; background: white; border-radius: 6px; box-shadow: 0 8px 16px rgba(0, 0, 0, 0.15); min-width: 150px; opacity: 0; visibility: hidden; transform: translateY(-8px); transition: all 0.2s ease; margin-top: 4px; z-index: 2000; } .menuGroup:hover .dropdown, .dropdown:hover { opacity: 1; visibility: visible; transform: translateY(0); } .dropdownItem { display: block; padding: 12px 16px; color: #333; text-decoration: none; font-size: 14px; transition: all 0.15s ease; border-left: 3px solid transparent; } .dropdownItem:first-child { border-top-left-radius: 6px; border-top-right-radius: 6px; } .dropdownItem:last-child { border-bottom-left-radius: 6px; border-bottom-right-radius: 6px; } .dropdownItem:hover { background: #f0f2f5; border-left-color: #667eea; padding-left: 20px; } .dropdownItem:active { background: #e8ebf0; } /* --- GitHub Link --- */ #githubLink { margin-left: auto; display: flex; align-items: center; } #githubLink a { display: flex; align-items: center; justify-content: center; width: 40px; height: 40px; color: white; transition: all 0.2s ease; border-radius: 4px; } #githubLink a:hover { background: rgba(255, 255, 255, 0.15); transform: scale(1.05); } #githubLink a:active { transform: scale(0.95); } #githubLink svg { width: 24px; height: 24px; } /* --- Main Split Layout --- */ #pageContainer { display: flex; width: 100%; height: calc(100% - 50px); overflow: hidden; } #pageContainer.dragging { user-select: none; cursor: col-resize; } /* Add dark grey padding around Gradio + Code --- */ #outputPane { flex: 0 0 30%; background: #2c2c2c; /* dark grey background around both sections */ display: flex; flex-direction: column; box-sizing: border-box; overflow: hidden; } /* --- Tab Bar --- */ #tabBar { display: flex; background: #1f1f1f; border-bottom: 2px solid #e5e7eb; flex-shrink: 0; } .tab { padding: 12px 20px; cursor: pointer; font-size: 14px; font-weight: 500; color: #999; background: #1f1f1f; border: none; transition: all 0.2s ease; border-bottom: 3px solid transparent; margin-bottom: -2px; } .tab:hover { color: #ccc; } .tab.active { color: #6366f1; border-bottom-color: #6366f1; } /* --- Tab Content --- */ .tabContent { display: none; flex: 1; flex-direction: column; padding: 16px; gap: 16px; overflow: hidden; box-sizing: border-box; } .tabContent.active { display: flex; } /* Add matching background to the Gradio frame container */ #chatContainer { background: #2c2c2c; border: none; flex: 1; box-sizing: border-box; border-radius: 6px; overflow: hidden; } /* Slightly inset the Gradio iframe */ #chatContainer iframe, #gradioContainer iframe { border-radius: 6px; overflow: hidden; width: 100%; height: 100%; border: none; } #gradioContainer { background: #2c2c2c; border: none; flex: 1; box-sizing: border-box; border-radius: 6px; overflow: hidden; } /* Style the code area with matching margin and contrast */ #generatedCode { display: none; background: #1f1f1f; color: #e0e7ff; border-radius: 6px; padding: 16px; box-sizing: border-box; flex: 1; overflow-y: auto; font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', monospace; white-space: pre-wrap; font-size: 13px; line-height: 1.5; } #aichatCode { background: #1f1f1f; color: #e0e7ff; border-radius: 6px; padding: 16px; box-sizing: border-box; flex: 1; overflow-y: auto; font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', monospace; white-space: pre-wrap; font-size: 13px; line-height: 1.5; } /* --- Vertical Resizer --- */ .verticalResizer { display: none; height: 8px; background: #e5e7eb; cursor: row-resize; transition: background 0.2s ease; flex-shrink: 0; z-index: 1500; } .verticalResizer:hover, .verticalResizer.active { background: #6366f1; } /* --- Resizer --- */ .resizer { width: 8px; background: #e5e7eb; cursor: col-resize; transition: background 0.2s ease; flex-shrink: 0; z-index: 1500; } .resizer:hover, .resizer.active { background: #6366f1; } /* --- Right Pane --- */ #blocklyDiv { flex: 1; min-width: 40%; height: 100%; overflow: hidden; background: #fff; }