.container { max-width: 600px; margin: 0 auto; } .card { background-color: var(--surface-color); border-radius: var(--radius-lg); box-shadow: var(--shadow-md); overflow: hidden; } .header { display: flex; justify-content: space-between; align-items: flex-start; padding: var(--spacing-lg); background-color: var(--background-color); border-bottom: 1px solid var(--border-color); } .title { font-size: 20px; font-weight: 700; color: var(--text-primary); margin-bottom: var(--spacing-xs); } .sessionId { font-size: 12px; color: var(--text-secondary); font-family: monospace; } .status { padding: var(--spacing-xs) var(--spacing-sm); border-radius: var(--radius-full); font-size: 12px; font-weight: 500; } .statusWaiting { background-color: rgba(255, 193, 7, 0.15); color: #f0ad4e; } .statusReady { background-color: rgba(23, 162, 184, 0.15); color: #17a2b8; } .statusProcessing { background-color: rgba(0, 123, 255, 0.15); color: #007bff; } .statusCompleted { background-color: rgba(40, 167, 69, 0.15); color: var(--success-color); } .statusFailed { background-color: rgba(220, 53, 69, 0.15); color: var(--error-color); } .content { padding: var(--spacing-lg); display: flex; flex-direction: column; gap: var(--spacing-lg); } .progress { background-color: var(--background-color); border-radius: var(--radius-md); padding: var(--spacing-md); } .progressHeader { display: flex; justify-content: space-between; margin-bottom: var(--spacing-sm); font-size: 13px; color: var(--text-secondary); } .progressBar { height: 8px; background-color: var(--border-color); border-radius: var(--radius-full); overflow: hidden; } .progressFill { height: 100%; background-color: var(--primary-color); border-radius: var(--radius-full); transition: width 0.3s ease; } .section { display: flex; flex-direction: column; gap: var(--spacing-md); } .sectionTitle { font-size: 14px; font-weight: 600; color: var(--text-primary); } .participantList { display: flex; flex-direction: column; gap: var(--spacing-sm); } .participant { display: flex; justify-content: space-between; align-items: center; padding: var(--spacing-sm) var(--spacing-md); background-color: var(--background-color); border-radius: var(--radius-md); } .participantEmpty { opacity: 0.5; } .participantInfo { display: flex; align-items: center; gap: var(--spacing-md); } .participantIndex { font-size: 12px; color: var(--text-secondary); font-family: monospace; } .participantName { font-size: 14px; color: var(--text-primary); } .participantStatus { font-size: 16px; } .thresholdInfo { display: flex; align-items: center; gap: var(--spacing-md); padding: var(--spacing-sm) var(--spacing-md); background-color: var(--background-color); border-radius: var(--radius-md); } .thresholdBadge { padding: var(--spacing-xs) var(--spacing-sm); background-color: var(--primary-color); color: white; border-radius: var(--radius-full); font-size: 12px; font-weight: 600; } .thresholdText { font-size: 13px; color: var(--text-secondary); } .publicKeyWrapper { display: flex; gap: var(--spacing-sm); } .publicKey { flex: 1; padding: var(--spacing-sm) var(--spacing-md); background-color: var(--background-color); border: 1px solid var(--border-color); border-radius: var(--radius-md); font-family: monospace; font-size: 12px; color: var(--text-primary); word-break: break-all; } .copyButton { padding: var(--spacing-sm) var(--spacing-md); background-color: var(--primary-color); color: white; border: none; border-radius: var(--radius-md); font-size: 13px; cursor: pointer; transition: background-color 0.2s; white-space: nowrap; } .copyButton:hover { background-color: var(--primary-light); } .successMessage { font-size: 13px; color: var(--success-color); display: flex; align-items: center; gap: var(--spacing-xs); } .failureMessage { display: flex; align-items: center; gap: var(--spacing-md); padding: var(--spacing-md); background-color: rgba(220, 53, 69, 0.1); border-radius: var(--radius-md); color: var(--error-color); font-size: 13px; } .failureIcon { width: 24px; height: 24px; display: flex; align-items: center; justify-content: center; background-color: var(--error-color); color: white; border-radius: 50%; font-weight: bold; } .footer { padding: var(--spacing-md) var(--spacing-lg); border-top: 1px solid var(--border-color); display: flex; justify-content: flex-end; } .primaryButton { padding: var(--spacing-sm) var(--spacing-lg); background-color: var(--primary-color); color: white; border: none; border-radius: var(--radius-md); font-size: 14px; font-weight: 500; cursor: pointer; transition: background-color 0.2s; } .primaryButton:hover { background-color: var(--primary-light); } .secondaryButton { padding: var(--spacing-sm) var(--spacing-lg); background-color: transparent; color: var(--text-secondary); border: 1px solid var(--border-color); border-radius: var(--radius-md); font-size: 14px; font-weight: 500; cursor: pointer; transition: all 0.2s; } .secondaryButton:hover { border-color: var(--primary-color); color: var(--primary-color); } /* Loading state */ .loading { display: flex; flex-direction: column; align-items: center; justify-content: center; height: 400px; color: var(--text-secondary); } .spinner { width: 40px; height: 40px; border: 3px solid var(--border-color); border-top-color: var(--primary-color); border-radius: 50%; animation: spin 1s linear infinite; margin-bottom: var(--spacing-md); } @keyframes spin { to { transform: rotate(360deg); } } /* Error state */ .error { display: flex; flex-direction: column; align-items: center; justify-content: center; height: 400px; text-align: center; } .errorIcon { width: 64px; height: 64px; display: flex; align-items: center; justify-content: center; background-color: var(--error-color); color: white; border-radius: 50%; font-size: 32px; font-weight: bold; margin-bottom: var(--spacing-lg); } .error h3 { font-size: 20px; color: var(--text-primary); margin-bottom: var(--spacing-sm); } .error p { font-size: 14px; color: var(--text-secondary); margin-bottom: var(--spacing-lg); }