/* app/static/css/style.css */ * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; background-color: #f5f7fa; color: #2c3e50; } .app { min-height: 100vh; display: flex; flex-direction: column; } /* Header */ .header { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; padding: 20px; box-shadow: 0 2px 10px rgba(0,0,0,0.1); } .header h1 { font-size: 24px; font-weight: 600; } .progress-bar { margin-top: 10px; background: rgba(255,255,255,0.3); height: 8px; border-radius: 4px; overflow: hidden; } .progress-fill { height: 100%; background: white; transition: width 0.3s ease; } .progress-message { font-size: 14px; opacity: 0.9; margin-top: 5px; } /* Main Container */ .main-container { flex: 1; padding: 30px; } /* Start Screen */ .start-screen { max-width: 800px; margin: 0 auto; } .start-card { background: white; border-radius: 12px; padding: 40px; box-shadow: 0 4px 20px rgba(0,0,0,0.08); } .start-card h2 { font-size: 28px; margin-bottom: 30px; text-align: center; } .input-group { display: flex; gap: 10px; margin-bottom: 40px; } .question-input { flex: 1; padding: 15px 20px; font-size: 16px; border: 2px solid #e0e0e0; border-radius: 8px; transition: border-color 0.3s ease; } .question-input:focus { outline: none; border-color: #667eea; } .start-button { padding: 15px 30px; background: #667eea; color: white; border: none; border-radius: 8px; font-size: 16px; font-weight: 500; cursor: pointer; transition: all 0.3s ease; display: flex; align-items: center; gap: 8px; } .start-button:hover { background: #5a67d8; transform: translateY(-1px); } .start-button:disabled { background: #cbd5e0; cursor: not-allowed; } /* History Section */ .history-section { margin-top: 40px; padding-top: 40px; border-top: 1px solid #e0e0e0; } .session-item { background: #f8fafc; border: 1px solid #e5e7eb; border-radius: 8px; padding: 16px; margin-bottom: 12px; cursor: pointer; transition: all 0.3s ease; } .session-item:hover { border-color: #667eea; box-shadow: 0 2px 8px rgba(0,0,0,0.05); } /* Tree Container */ .tree-container { background: white; border-radius: 12px; padding: 30px; box-shadow: 0 4px 20px rgba(0,0,0,0.08); overflow-x: auto; min-width: 800px; } /* Tree Structure */ .tree-node { position: relative; padding-left: 30px; margin: 10px 0; } .tree-node::before { content: ''; position: absolute; left: 0; top: -10px; width: 1px; height: calc(100% + 20px); background: #e0e0e0; } .tree-node:last-child::before { height: 30px; } .tree-node::after { content: ''; position: absolute; left: 0; top: 20px; width: 20px; height: 1px; background: #e0e0e0; } /* Root Node */ .root-node { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; padding: 20px; border-radius: 10px; margin-bottom: 30px; } .root-node h2 { font-size: 20px; margin-bottom: 8px; } /* Node Card */ .node-card { background: white; border: 2px solid #e0e0e0; border-radius: 8px; padding: 15px; cursor: pointer; transition: all 0.3s ease; display: inline-block; min-width: 300px; } .node-card:hover { border-color: #667eea; box-shadow: 0 4px 12px rgba(102, 126, 234, 0.15); } .node-card.processing { border-color: #3b82f6; animation: pulse 2s infinite; } .node-card.completed { border-color: #10b981; } .node-card.error { border-color: #ef4444; } @keyframes pulse { 0% { box-shadow: 0 0 0 0 rgba(59, 130, 246, 0.4); } 70% { box-shadow: 0 0 0 8px rgba(59, 130, 246, 0); } 100% { box-shadow: 0 0 0 0 rgba(59, 130, 246, 0); } } /* Node Content */ .node-header { display: flex; align-items: center; justify-content: space-between; } .node-title { font-weight: 600; font-size: 16px; flex: 1; } .node-status { display: flex; align-items: center; gap: 8px; } .status-icon { width: 24px; height: 24px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 14px; } .status-icon.completed { background: #10b981; color: white; } .status-icon.processing { background: #3b82f6; color: white; } .status-icon.pending { background: #9ca3af; color: white; } .expand-icon { transition: transform 0.3s ease; margin-right: 8px; } .expand-icon.expanded { transform: rotate(90deg); } .node-content { margin-top: 15px; padding-top: 15px; border-top: 1px solid #f0f0f0; max-height: 0; overflow: hidden; opacity: 0; transition: all 0.3s ease; } .node-content.expanded { max-height: 1000px; opacity: 1; } /* Phase Card */ .phase-card { background: #f8fafc; border: 1px solid #e5e7eb; border-radius: 6px; padding: 12px; margin: 8px 0; } .phase-card h4 { font-size: 14px; margin-bottom: 8px; color: #4b5563; } /* Action Buttons */ .action-buttons { position: fixed; bottom: 30px; right: 30px; display: flex; gap: 12px; } .action-button { background: white; border: 1px solid #e5e7eb; padding: 12px 20px; border-radius: 8px; cursor: pointer; font-size: 14px; transition: all 0.3s ease; box-shadow: 0 2px 8px rgba(0,0,0,0.08); } .action-button:hover { transform: translateY(-2px); box-shadow: 0 4px 12px rgba(0,0,0,0.12); } .action-button.primary { background: #667eea; color: white; border-color: #667eea; } .action-button.danger { background: #ef4444; color: white; border-color: #ef4444; } /* Detail Panel */ .detail-panel { position: fixed; right: -400px; top: 0; width: 400px; height: 100vh; background: white; box-shadow: -4px 0 20px rgba(0,0,0,0.1); transition: right 0.3s ease; z-index: 1000; overflow-y: auto; } .detail-panel.open { right: 0; } .panel-header { padding: 20px; border-bottom: 1px solid #e5e7eb; display: flex; justify-content: space-between; align-items: center; } .panel-close { background: none; border: none; font-size: 24px; cursor: pointer; color: #6b7280; } /* Loading */ .loading-overlay { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0, 0, 0, 0.5); display: flex; align-items: center; justify-content: center; z-index: 9999; } .loading-spinner { width: 50px; height: 50px; border: 5px solid #f3f3f3; border-top: 5px solid #667eea; border-radius: 50%; animation: spin 1s linear infinite; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }