:host { min-height: 100%; width: 100%; display: block; // Ensure error messages are selectable. user-select: text; // Safari only has prefixed support. -webkit-user-select: text; color: var(--primary-text-color); } div.wrapper { height: 100%; } div.message { display: flex; justify-content: center; align-items: center; box-sizing: border-box; padding: 20px; height: 100%; } div.message div.contents { display: flex; flex-direction: column; padding: 10px; margin-top: auto; margin-bottom: auto; max-width: 100%; } div.message div.icon { padding: 10px; } .vertical { flex-direction: column; } .message a { color: var(--primary-text-color, white); word-break: break-word; } .message pre { margin-top: 20px; white-space: pre-wrap; word-break: break-all; } .dotdotdot:after { @keyframes dots { 0%, 20% { content: '.'; } 40% { content: '..'; } 60% { content: '...'; } 90%, 100% { content: ''; } } animation: dots 2s linear infinite; content: ''; display: inline-block; width: 3em; }