* { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, sans-serif; background: #f1f5f9; color: #1e293b; font-size: 14px; line-height: 1.5; } .container { max-width: 1400px; margin: 0 auto; padding: 20px; } header { background: white; padding: 24px; border-radius: 8px; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); margin-bottom: 20px; border: 1px solid #e2e8f0; } h1 { font-size: 24px; margin-bottom: 20px; color: #0f172a; font-weight: 600; } .connection-panel { display: flex; gap: 12px; margin-bottom: 12px; flex-wrap: wrap; } .connection-panel input { flex: 1; min-width: 300px; padding: 10px 14px; border: 1px solid #cbd5e1; border-radius: 6px; font-size: 14px; background: white; transition: all 0.15s; } .connection-panel input:focus { outline: none; border-color: #3b82f6; box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1); } button { padding: 10px 20px; background: #3b82f6; color: white; border: none; border-radius: 6px; cursor: pointer; font-size: 14px; font-weight: 500; transition: all 0.15s; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); } button:hover { background: #2563eb; } button:active { transform: translateY(1px); } button:disabled { background: #94a3b8; cursor: not-allowed; transform: none; } button.secondary { background: white; color: #475569; border: 1px solid #cbd5e1; } button.secondary:hover { background: #f8fafc; } .status { padding: 10px 14px; border-radius: 6px; font-size: 13px; display: none; border: 1px solid transparent; } .status.success { background: #dcfce7; color: #166534; border-color: #bbf7d0; } .status.error { background: #fee2e2; color: #991b1b; border-color: #fecaca; } .main-content { display: flex; gap: 20px; align-items: flex-start; } .sidebar { width: 300px; background: white; border-radius: 8px; border: 1px solid #e2e8f0; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); flex-shrink: 0; } .sidebar h2 { font-size: 16px; font-weight: 600; padding: 16px 20px; border-bottom: 1px solid #e2e8f0; color: #0f172a; display: flex; align-items: center; justify-content: space-between; } .repo-info { padding: 20px; background: white; border-radius: 8px; border: 1px solid #e2e8f0; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); margin-bottom: 20px; } .repo-info h3 { font-size: 14px; font-weight: 600; margin-bottom: 12px; color: #64748b; } .repo-info .label { font-size: 12px; color: #64748b; margin-bottom: 4px; font-weight: 500; text-transform: uppercase; letter-spacing: 0.5px; } .repo-info .value { font-size: 13px; color: #1e293b; margin-bottom: 12px; font-family: monospace; } .clone-url { display: flex; align-items: center; gap: 8px; background: #f8fafc; padding: 8px 12px; border-radius: 6px; border: 1px solid #e2e8f0; margin-bottom: 12px; } .clone-url code { flex: 1; font-size: 12px; color: #475569; overflow: hidden; text-overflow: ellipsis; } .copy-btn { padding: 4px 8px; font-size: 11px; min-width: 50px; } .copy-btn:hover { background: #2563eb; } .branches-section { border-top: 1px solid #e2e8f0; } .branch-list { max-height: 300px; overflow-y: auto; } .branch-item { padding: 10px 20px; cursor: pointer; transition: background 0.15s; border-bottom: 1px solid #f1f5f9; font-size: 13px; color: #475569; display: flex; align-items: center; gap: 8px; } .branch-item:hover { background: #f8fafc; } .branch-item.active { background: #eff6ff; color: #1e40af; font-weight: 500; } .viewer { flex: 1; background: white; border-radius: 8px; border: 1px solid #e2e8f0; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); overflow: hidden; } .breadcrumb { padding: 16px 20px; border-bottom: 1px solid #e2e8f0; font-size: 13px; color: #64748b; background: #f8fafc; display: flex; align-items: center; flex-wrap: wrap; } .breadcrumb a { color: #3b82f6; text-decoration: none; transition: color 0.15s; cursor: pointer; } .breadcrumb a:hover { color: #2563eb; text-decoration: underline; } .breadcrumb span { margin: 0 8px; } .breadcrumb .current { color: #1e293b; font-weight: 500; } .file-list { padding: 0; list-style: none; margin: 0; } .file-item { padding: 12px 20px; display: flex; align-items: center; gap: 12px; border-bottom: 1px solid #f1f5f9; cursor: pointer !important; } .file-item:last-child { border-bottom: none; } .file-item:hover { background: #f8fafc; } .file-icon { width: 20px; height: 20px; flex-shrink: 0; color: #64748b; cursor: pointer; } .file-name { flex: 1; color: #1e293b; font-size: 14px; cursor: pointer; } .file-size { color: #64748b; font-size: 12px; cursor: pointer; } .file-content { padding: 0; overflow-x: auto; background: #0d1117; font-family: "Monaco", "Menlo", "Ubuntu Mono", monospace; font-size: 13px; } .file-content pre { margin: 0; white-space: pre; background: transparent; padding: 20px; } .file-content code { background: transparent; } .file-content code.hljs { padding: 0; background: transparent; } .line-numbers { display: flex; gap: 0; background: #0d1117; } .line-numbers .numbers { color: #6e7681; text-align: right; user-select: none; min-width: 50px; padding: 20px 16px 20px 20px; border-right: 1px solid #30363d; background: #0d1117; line-height: 1.5; } .line-numbers pre:not(.numbers) { flex: 1; padding-left: 20px; } .loading { padding: 40px; text-align: center; color: #64748b; } .spinner { width: 40px; height: 40px; margin: 0 auto 16px; border: 3px solid #e2e8f0; border-top-color: #3b82f6; border-radius: 50%; animation: spin 0.8s linear infinite; } @keyframes spin { to { transform: rotate(360deg); } } .empty-state { padding: 60px 40px; text-align: center; } .empty-state svg { width: 64px; height: 64px; margin: 0 auto 20px; color: #cbd5e1; display: block; } .empty-state h3 { font-size: 18px; color: #475569; margin-bottom: 8px; } .empty-state p { color: #64748b; font-size: 14px; } .error-message { padding: 40px; text-align: center; color: #991b1b; background: #fee2e2; margin: 20px; border-radius: 8px; border: 1px solid #fecaca; } .file-header { padding: 16px 20px; border-bottom: 1px solid #e2e8f0; background: #f8fafc; display: flex; justify-content: space-between; align-items: center; } .file-header h3 { font-size: 15px; color: #1e293b; font-weight: 600; } .file-actions { display: flex; gap: 8px; } .file-actions button { padding: 6px 12px; font-size: 12px; } .user-item { margin-bottom: 24px; } .user-header { font-size: 16px; font-weight: 600; color: #0f172a; margin-bottom: 12px; padding: 12px; background: #f8fafc; border-radius: 6px; } .repo-item { padding: 12px; margin-bottom: 8px; background: white; border: 1px solid #e2e8f0; border-radius: 6px; cursor: pointer; transition: all 0.15s; } .repo-item:hover { border-color: #3b82f6; box-shadow: 0 2px 4px rgba(59, 130, 246, 0.1); } .repo-item strong { display: block; font-size: 14px; color: #1e293b; margin-bottom: 4px; } .repo-item small { font-size: 12px; color: #64748b; font-family: monospace; } .markdown-content { padding: 20px 40px; background: white; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, sans-serif; font-size: 15px; line-height: 1.6; color: #1e293b; } .markdown-content h1, .markdown-content h2, .markdown-content h3, .markdown-content h4, .markdown-content h5, .markdown-content h6 { margin-top: 24px; margin-bottom: 16px; font-weight: 600; line-height: 1.25; color: #0f172a; } .markdown-content h1 { font-size: 2em; padding-bottom: 0.3em; border-bottom: 1px solid #e2e8f0; } .markdown-content h2 { font-size: 1.5em; padding-bottom: 0.3em; border-bottom: 1px solid #e2e8f0; } .markdown-content h3 { font-size: 1.25em; } .markdown-content h4 { font-size: 1em; } .markdown-content h5 { font-size: 0.875em; } .markdown-content h6 { font-size: 0.85em; color: #64748b; } .markdown-content p { margin-top: 0; margin-bottom: 16px; } .markdown-content ul, .markdown-content ol { margin-top: 0; margin-bottom: 16px; padding-left: 2em; } .markdown-content li + li { margin-top: 0.25em; } .markdown-content code { padding: 0.2em 0.4em; margin: 0; font-size: 85%; background: #f1f5f9; border-radius: 6px; font-family: "Monaco", "Menlo", "Ubuntu Mono", monospace; color: #e11d48; } .markdown-content pre { padding: 16px; overflow: auto; font-size: 85%; line-height: 1.45; background: #0d1117; border-radius: 6px; margin-bottom: 16px; } .markdown-content pre code { display: block; padding: 0; margin: 0; overflow: visible; line-height: inherit; word-wrap: normal; background: transparent; border: 0; color: #c9d1d9; } .markdown-content pre code.hljs { background: transparent; } .markdown-content blockquote { padding: 0 1em; color: #64748b; border-left: 0.25em solid #cbd5e1; margin: 0 0 16px 0; } .markdown-content blockquote > :first-child { margin-top: 0; } .markdown-content blockquote > :last-child { margin-bottom: 0; } .markdown-content table { border-spacing: 0; border-collapse: collapse; margin-bottom: 16px; width: 100%; overflow: auto; } .markdown-content table th, .markdown-content table td { padding: 6px 13px; border: 1px solid #e2e8f0; } .markdown-content table th { font-weight: 600; background: #f8fafc; } .markdown-content table tr { background: white; border-top: 1px solid #e2e8f0; } .markdown-content table tr:nth-child(2n) { background: #f8fafc; } .markdown-content img { max-width: 100%; box-sizing: border-box; border-radius: 6px; } .markdown-content a { color: #3b82f6; text-decoration: none; } .markdown-content a:hover { text-decoration: underline; } .markdown-content hr { height: 0.25em; padding: 0; margin: 24px 0; background-color: #e2e8f0; border: 0; } @media (max-width: 768px) { .main-content { flex-direction: column; } .connection-panel { flex-direction: column; } .connection-panel input { min-width: 100%; } .markdown-content { padding: 20px; } }