.pageLayout { display: flex; align-items: flex-start; gap: 1.5rem; padding: 1.5rem; max-width: 1400px; } .mainColumn { flex: 1; min-width: 0; } .startSidebar { flex: 0 0 300px; position: sticky; top: 1rem; max-height: calc(100vh - 2rem); display: flex; flex-direction: column; border: 1px solid var(--border-color, #e0e0e0); border-radius: 8px; background: var(--bg-secondary, #f8f9fa); overflow: hidden; } .startSidebarTitle { margin: 0; padding: 0.75rem 1rem; font-size: 0.95rem; font-weight: 600; border-bottom: 1px solid var(--border-color, #e0e0e0); background: var(--bg-primary, #fff); } .startSidebarList { margin: 0; padding: 0.5rem; overflow-y: auto; flex: 1; display: flex; flex-direction: column; gap: 0.5rem; } .startWorkflowRow { display: flex; align-items: center; gap: 0.5rem; padding: 0.6rem 0.65rem; border-radius: 6px; background: var(--bg-primary, #fff); border: 1px solid var(--border-color, #e0e0e0); } .startWorkflowInfo { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 0.2rem; } .startWorkflowName { font-size: 0.875rem; font-weight: 500; color: var(--text-primary, #333); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .startWorkflowKind { font-size: 0.7rem; font-weight: 600; text-transform: uppercase; color: var(--text-secondary, #666); } .startButton { flex-shrink: 0; display: inline-flex; align-items: center; justify-content: center; padding: 0.4rem 0.65rem; border: none; border-radius: 6px; background: var(--primary-color, #007bff); color: white; cursor: pointer; font-size: 0.8rem; } .startButton:hover:not(:disabled) { opacity: 0.9; } .startButton:disabled { opacity: 0.6; cursor: not-allowed; } @media (max-width: 900px) { .pageLayout { flex-direction: column; } .startSidebar { position: static; max-height: none; width: 100%; flex: none; } } .container { padding: 0; width: 100%; } .container h2 { margin: 0 0 1rem 0; font-size: 1.25rem; } .section { margin-bottom: 1.5rem; } .sectionTitle { display: flex; align-items: center; gap: 0.5rem; margin: 0 0 0.75rem 0; font-size: 1rem; font-weight: 600; } .completedHeader { display: flex; align-items: center; gap: 0.5rem; width: 100%; padding: 0.6rem 0; text-align: left; background: none; border: none; cursor: pointer; font-size: 1rem; font-weight: 600; color: var(--text-primary, #333); } .completedHeader:hover { color: var(--primary-color, #007bff); } .completedList { max-height: 360px; overflow-y: auto; padding-top: 0.5rem; } .taskMeta { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 0.5rem 1.25rem; margin-bottom: 0.75rem; padding-bottom: 0.75rem; border-bottom: 1px solid var(--border-color, #e0e0e0); } .taskMetaRow { display: flex; flex-direction: column; gap: 0.2rem; } .metaLabel { font-size: 0.7rem; font-weight: 600; text-transform: uppercase; color: var(--text-secondary, #666); } .metaValue { font-size: 0.9rem; color: var(--text-primary, #333); } .metaValueMono { font-size: 0.75rem; font-family: monospace; color: var(--text-secondary, #666); } .loading { display: flex; flex-direction: column; align-items: center; gap: 1rem; padding: 3rem; color: var(--text-secondary, #666); } .spinner { animation: spin 1s linear infinite; } @keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } .placeholder { padding: 2rem; text-align: center; color: var(--text-secondary, #666); } .workflowList { display: flex; flex-direction: column; gap: 0.5rem; } .workflowItem { border: 1px solid var(--border-color, #e0e0e0); border-radius: 8px; overflow: hidden; background: var(--bg-primary, #fff); } .workflowHeader { display: flex; align-items: center; gap: 0.5rem; width: 100%; padding: 0.75rem 1rem; text-align: left; background: var(--bg-secondary, #f8f9fa); border: none; cursor: pointer; font-size: 1rem; } .workflowHeader:hover { background: var(--bg-hover, #e9ecef); } .badge { margin-left: auto; background: var(--primary-color, #007bff); color: white; padding: 0.2rem 0.5rem; border-radius: 12px; font-size: 0.8rem; } .taskList { padding: 1rem; border-top: 1px solid var(--border-color, #e0e0e0); } .empty { color: var(--text-tertiary, #999); font-size: 0.9rem; margin: 0; } .taskCard { padding: 1rem; margin-bottom: 0.75rem; border: 1px solid var(--border-color, #e0e0e0); border-radius: 6px; background: var(--bg-primary, #fff); } .taskCard:last-child { margin-bottom: 0; } .taskType { font-size: 0.75rem; font-weight: 600; text-transform: uppercase; color: var(--text-secondary, #666); margin-bottom: 0.5rem; } .formFields { display: flex; flex-direction: column; gap: 0.5rem; } .formFields button { margin-top: 0.75rem; align-self: flex-start; } .formFields label, .taskCard label { display: block; font-size: 0.875rem; margin-top: 0.5rem; margin-bottom: 0.25rem; } .formFields input[type='text'], .formFields input[type='number'], .formFields input[type='date'], .formFields select, .taskCard input[type='text'], .taskCard input[type='number'], .taskCard textarea { width: 100%; padding: 0.5rem; border: 1px solid var(--border-color, #e0e0e0); border-radius: 4px; } .taskCard textarea { min-height: 80px; margin-bottom: 0.5rem; } .openFormButton { margin-top: 0.5rem; padding: 0.5rem 1rem; background: var(--primary-color, #007bff); color: white; border: none; border-radius: 6px; font-size: 0.9rem; cursor: pointer; } .openFormButton:hover:not(:disabled) { opacity: 0.9; } .openFormButton:disabled { opacity: 0.6; cursor: not-allowed; } .popupSubmitButton { padding: 0.5rem 1.25rem; background: var(--success-color, #28a745); color: white; border: none; border-radius: 6px; font-size: 0.9rem; cursor: pointer; } .popupSubmitButton:hover:not(:disabled) { opacity: 0.9; } .popupSubmitButton:disabled { opacity: 0.6; cursor: not-allowed; } .approvalButtons { display: flex; gap: 0.5rem; margin-top: 0.75rem; } .approvalButtons button, .taskCard button { padding: 0.5rem 1rem; border-radius: 6px; border: none; cursor: pointer; font-size: 0.9rem; } .approvalButtons button:first-child, .taskCard button[type='button'] { background: var(--primary-color, #007bff); color: white; } .approvalButtons button:last-of-type:not(:first-child) { background: var(--danger-color, #dc3545); color: white; } .approvalButtons button:disabled, .taskCard button:disabled { opacity: 0.6; cursor: not-allowed; } /* Upload task */ .uploadTaskBlock { display: flex; flex-direction: column; gap: 0.75rem; margin-top: 0.5rem; } .uploadTaskBlock .uploadButton { display: inline-flex; align-items: center; gap: 0.5rem; padding: 0.5rem 1rem; background: var(--primary-color, #007bff); color: white; border: none; border-radius: 6px; font-size: 0.9rem; cursor: pointer; align-self: flex-start; } .uploadTaskBlock .uploadButton:hover:not(:disabled) { opacity: 0.9; } .uploadTaskBlock .uploadButton:disabled { opacity: 0.6; cursor: not-allowed; } .uploadTaskBlock .uploadError { margin: 0; font-size: 0.875rem; color: var(--danger-color, #dc3545); } .uploadTaskBlock .uploadedList { margin: 0; padding-left: 1.25rem; font-size: 0.875rem; color: var(--text-secondary, #666); } /* Output section */ .outputContent { margin-top: 0.5rem; display: flex; flex-direction: column; gap: 0.5rem; } .outputContent .metaLabel { margin-top: 0.25rem; } .outputContent .uploadedList { margin-top: 0.2rem; } .downloadLink { color: var(--primary-color, #007bff); text-decoration: none; } .downloadLink:hover { text-decoration: underline; }