:root { --bg-dark: #09090b; --bg-panel: #18181b; --border: #27272a; --primary: #6366f1; --text: #e4e4e7; --text-dim: #a1a1aa; } body { margin: 0; background: var(--bg-dark); color: var(--text); font-family: 'Inter', sans-serif; display: flex; height: 100vh; overflow: hidden; } /* Sidebar */ .sidebar { width: 300px; background: var(--bg-panel); border-right: 1px solid var(--border); display: flex; flex-direction: column; padding: 20px; } .brand { font-family: 'JetBrains Mono', monospace; font-weight: 700; font-size: 1.2rem; display: flex; align-items: center; gap: 10px; margin-bottom: 40px; } .logo-square { width: 20px; height: 20px; background: var(--primary); border-radius: 4px; } .nav-item { background: transparent; border: none; color: var(--text-dim); width: 100%; text-align: left; padding: 12px; margin-bottom: 5px; border-radius: 6px; cursor: pointer; font-size: 0.95rem; display: flex; gap: 10px; align-items: center; transition: 0.2s; } .nav-item:hover { background: #27272a; color: white; } .nav-item.active { background: #2e2e32; color: white; font-weight: 600; border-left: 3px solid var(--primary); } .sidebar-footer { margin-top: auto; font-size: 0.8rem; } .status-ready { color: #4ade80; } .status-working { color: #facc15; } .status-success { color: #6366f1; } .status-error { color: #ef4444; } /* Main Content */ .main-content { flex: 1; position: relative; } .tab-pane { display: none; height: 100%; } .tab-pane.active { display: flex; } /* Visualizer Tab Layout */ #tab-visualizer { flex-direction: row; } .editor-panel { width: 400px; border-right: 1px solid var(--border); display: flex; flex-direction: column; background: #111; } .panel-header { padding: 10px; background: #1f1f22; font-size: 0.8rem; color: #888; border-bottom: 1px solid var(--border); } textarea { flex: 1; background: #000; border: none; color: #ccc; padding: 15px; font-family: 'JetBrains Mono'; resize: none; outline: none; } .action-bar { padding: 15px; border-top: 1px solid var(--border); display: flex; gap: 10px; } .canvas-panel { flex: 1; background-image: radial-gradient(#333 1px, transparent 1px); background-size: 20px 20px; } /* Dataset Tab Layout */ #tab-dataset { flex-direction: column; padding: 40px; overflow-y: auto; } .dataset-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 30px; } .header-actions { display: flex; gap: 10px; } /* Table */ .data-table { width: 100%; border-collapse: collapse; text-align: left; } .data-table th { border-bottom: 1px solid var(--border); padding: 15px; color: var(--text-dim); font-size: 0.85rem; font-weight: 600; } .data-table td { border-bottom: 1px solid #1f1f22; padding: 15px; font-size: 0.9rem; } .mono { font-family: 'JetBrains Mono'; color: var(--primary); } .mono-dim { font-family: 'JetBrains Mono'; color: #666; font-size: 0.8rem; } .badge { background: #27272a; padding: 4px 8px; border-radius: 4px; font-size: 0.75rem; } /* Buttons */ .btn { padding: 10px 16px; border-radius: 6px; border: none; cursor: pointer; font-weight: 500; font-size: 0.9rem; text-decoration: none; display: inline-block;} .btn-primary { background: var(--primary); color: white; } .btn-primary:hover { background: #4f46e5; } .btn-secondary { background: #3f3f46; color: white; } .btn-outline { background: transparent; border: 1px solid var(--border); color: var(--text); } .btn:disabled { opacity: 0.5; cursor: not-allowed; } /* Modal */ .modal-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.7); display: flex; align-items: center; justify-content: center; z-index: 1000; } .hidden { display: none; } .modal { background: var(--bg-panel); width: 400px; padding: 30px; border-radius: 12px; border: 1px solid var(--border); } .modal h3 { margin-top: 0; } .modal input { width: 100%; padding: 10px; margin-bottom: 15px; background: #000; border: 1px solid var(--border); color: white; border-radius: 4px; } .modal-actions { display: flex; justify-content: flex-end; gap: 10px; margin-top: 20px; }