/* Approval Panel Styles */ .approval-panel { background: #fff; border: 1px solid #e5e7eb; border-radius: 0.5rem; overflow: hidden; } .approval-header { display: flex; justify-content: space-between; align-items: center; padding: 1rem; border-bottom: 1px solid #e5e7eb; background: #f9fafb; } .approval-title { font-size: 1.125rem; font-weight: 600; color: #111827; margin: 0; } .approval-status { display: inline-flex; align-items: center; padding: 0.25rem 0.75rem; border-radius: 9999px; font-size: 0.875rem; font-weight: 500; } /* Status Colors */ .status-draft { background-color: #f3f4f6; color: #6b7280; } .status-pending { background-color: #fef3c7; color: #92400e; } .status-approved { background-color: #dcfce7; color: #166534; } .status-rejected { background-color: #fee2e2; color: #991b1b; } .status-applied { background-color: #dbeafe; color: #1e40af; } .status-failed { background-color: #fee2e2; color: #991b1b; } .status-reverted { background-color: #f3f4f6; color: #6b7280; } /* Stages */ .approval-stages { padding: 1rem; } .approval-stage { border: 1px solid #e5e7eb; border-radius: 0.375rem; margin-bottom: 1rem; overflow: hidden; } .approval-stage:last-child { margin-bottom: 0; } .stage-header { display: flex; justify-content: space-between; align-items: center; padding: 0.75rem 1rem; background: #f9fafb; border-bottom: 1px solid #e5e7eb; } .stage-name { font-weight: 500; color: #374151; } .stage-status { font-size: 0.875rem; font-weight: 500; } .stage-status.pending { color: #92400e; } .stage-status.approved { color: #166534; } .stage-status.rejected { color: #991b1b; } .stage-details { padding: 1rem; } .required-roles { display: flex; flex-wrap: wrap; gap: 0.5rem; margin-bottom: 1rem; } .role-badge { background: #f3f4f6; color: #4b5563; padding: 0.25rem 0.5rem; border-radius: 0.25rem; font-size: 0.75rem; font-weight: 500; } /* Approvers */ .approvers-list { display: flex; flex-direction: column; gap: 0.75rem; } .approver { padding: 0.75rem; background: #f9fafb; border-radius: 0.375rem; } .approver-info { display: flex; justify-content: space-between; align-items: center; margin-bottom: 0.5rem; } .approver-name { font-weight: 500; color: #374151; } .approval-date { font-size: 0.75rem; color: #6b7280; } .approver-decision { font-size: 0.875rem; font-weight: 500; margin-bottom: 0.5rem; } .approver-decision.approved { color: #166534; } .approver-decision.rejected { color: #991b1b; } .approver-comment { font-size: 0.875rem; color: #4b5563; padding: 0.5rem; background: #fff; border-radius: 0.25rem; } /* Approval Actions */ .approval-actions { padding: 1rem; border-top: 1px solid #e5e7eb; background: #f9fafb; } .approval-comment { width: 100%; min-height: 5rem; padding: 0.75rem; margin-bottom: 1rem; border: 1px solid #d1d5db; border-radius: 0.375rem; resize: vertical; font-size: 0.875rem; } .approval-comment:focus { outline: none; border-color: #3b82f6; ring: 2px solid rgba(59, 130, 246, 0.5); } .action-buttons { display: flex; justify-content: flex-end; gap: 0.75rem; } .approve-button, .reject-button { padding: 0.5rem 1rem; border-radius: 0.375rem; font-size: 0.875rem; font-weight: 500; cursor: pointer; transition: all 0.2s; } .approve-button { background-color: #059669; color: white; } .approve-button:hover { background-color: #047857; } .reject-button { background-color: #dc2626; color: white; } .reject-button:hover { background-color: #b91c1c; } /* History */ .approval-history { padding: 1rem; border-top: 1px solid #e5e7eb; } .approval-history-list { display: flex; flex-direction: column; gap: 1rem; } .history-entry { padding: 0.75rem; background: #f9fafb; border-radius: 0.375rem; } .entry-header { display: flex; justify-content: space-between; margin-bottom: 0.5rem; } .entry-user { font-weight: 500; color: #374151; } .entry-date { font-size: 0.75rem; color: #6b7280; } .entry-action { font-size: 0.875rem; margin-bottom: 0.5rem; } .entry-action.submit { color: #6b7280; } .entry-action.approve { color: #166534; } .entry-action.reject { color: #991b1b; } .entry-action.revert { color: #4b5563; } .entry-comment { font-size: 0.875rem; color: #4b5563; padding: 0.5rem; background: #fff; border-radius: 0.25rem; } /* Responsive Design */ @media (max-width: 640px) { .approval-header { flex-direction: column; align-items: flex-start; gap: 0.5rem; } .action-buttons { flex-direction: column; } .approve-button, .reject-button { width: 100%; } .approver-info { flex-direction: column; align-items: flex-start; } }