.error-boundary { display: flex; align-items: center; justify-content: center; min-height: 400px; padding: var(--spacing-lg); } .error-card { max-width: 600px; width: 100%; box-shadow: var(--shadow-lg); mat-card-content { display: flex; flex-direction: column; align-items: center; gap: var(--spacing-lg); padding: var(--spacing-2xl); text-align: center; } } // Error Icon .error-icon-container { display: flex; align-items: center; justify-content: center; width: 80px; height: 80px; background-color: var(--color-error-light); border-radius: var(--radius-full); animation: pulse 2s ease-in-out infinite; .error-icon { font-size: 48px; width: 48px; height: 48px; color: var(--color-error); } } // Error Title .error-title { font-size: var(--font-size-2xl); font-weight: var(--font-weight-bold); color: var(--color-text-primary); margin: 0; @media (max-width: 767px) { font-size: var(--font-size-xl); } } // Error Message .error-message { font-size: var(--font-size-lg); color: var(--color-text-secondary); line-height: var(--line-height-relaxed); margin: 0; @media (max-width: 767px) { font-size: var(--font-size-base); } } // Error Details .error-details-container { width: 100%; margin-top: var(--spacing-md); } .details-toggle { display: flex; align-items: center; gap: var(--spacing-xs); margin: 0 auto; mat-icon { font-size: 20px; width: 20px; height: 20px; } } .error-details { display: flex; flex-direction: column; gap: var(--spacing-md); padding: var(--spacing-md); margin-top: var(--spacing-md); background-color: var(--color-surface); border: 1px solid var(--color-border); border-radius: var(--radius-md); text-align: left; max-height: 300px; overflow-y: auto; &::-webkit-scrollbar { width: 6px; } &::-webkit-scrollbar-thumb { background: var(--color-border); border-radius: var(--radius-full); } } .detail-item { display: flex; flex-direction: column; gap: var(--spacing-xs); strong { font-size: var(--font-size-sm); font-weight: var(--font-weight-semibold); color: var(--color-text-primary); } span { font-size: var(--font-size-sm); color: var(--color-text-secondary); word-break: break-word; } &.stack-trace { pre { font-family: var(--font-family-mono); font-size: var(--font-size-xs); color: var(--color-text-secondary); background-color: var(--color-background); padding: var(--spacing-sm); border-radius: var(--radius-sm); overflow-x: auto; margin: 0; white-space: pre-wrap; word-wrap: break-word; } } } // Action Buttons .action-buttons { display: flex; flex-wrap: wrap; gap: var(--spacing-md); justify-content: center; margin-top: var(--spacing-md); button { display: flex; align-items: center; gap: var(--spacing-sm); min-width: 140px; @media (max-width: 767px) { min-width: 120px; } } mat-icon { font-size: 20px; width: 20px; height: 20px; } } // Help Text .help-text { font-size: var(--font-size-sm); color: var(--color-text-secondary); margin: var(--spacing-md) 0 0 0; .contact-link { color: var(--color-primary); text-decoration: none; font-weight: var(--font-weight-medium); &:hover { text-decoration: underline; } &:focus-visible { outline: 2px solid var(--color-primary); outline-offset: 2px; border-radius: var(--radius-sm); } } } // Animations @keyframes pulse { 0%, 100% { transform: scale(1); opacity: 1; } 50% { transform: scale(1.05); opacity: 0.8; } }