#app { font-family: Avenir, Helvetica, Arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-align: center; color: #2c3e50; margin-top: 60px; } .background-dark { background: rgb(53, 69, 88); background: radial-gradient( at right center, rgb(29, 78, 216), rgb(30, 64, 175), rgb(17, 24, 39) ); } #renderer { position: absolute; height: 100%; width: 100%; } #renderer0-controls:first-child { pointer-events: auto; } #renderer1-controls:first-child { pointer-events: auto; } canvas { position: absolute; } .button { border: 0; line-height: 1.5; padding: 0 20px; font-size: 1rem; text-align: center; color: #fff; text-shadow: 1px 1px 1px #000; border-radius: 2px; background-color: rgb(129, 129, 129); background-image: linear-gradient( to top left, rgba(0, 0, 0, 0.2), rgba(0, 0, 0, 0.2) 30%, rgba(0, 0, 0, 0) ); box-shadow: inset 2px 2px 3px rgba(255, 255, 255, 0.6), inset -2px -2px 3px rgba(0, 0, 0, 0.6); } .input { margin-bottom: 5px; left: 0px; border-radius: 0.1rem; border: 4px solid rgb(129, 129, 129); } .center-wrapper { position: absolute; top: 95%; left: 92%; transform: translate(-50%, -50%) scale(0.5); transition: opacity 0.5s ease; /* Smooth fade-out for the whole widget */ } .loading-container { position: relative; width: 280px; height: 280px; overflow: hidden; } /* Grayscale version */ .grayscale-overlay, .color-image { position: absolute; top: 0; left: 0; width: 100%; height: 100%; transition: opacity 0.8s ease-in-out; /* Smooth fade-out */ } .grayscale-overlay { filter: grayscale(100%); z-index: 1; opacity: 1; /* Fully visible by default */ } /* Color version */ .color-image { z-index: 2; clip-path: inset(100% 0 0 0); }