html, body { margin: 0; padding: 0; width: 100vw; height: 100vh; } body.setup { margin: 0; padding: 0; &>div { background: radial-gradient(ellipse at 20% 50%, rgba(99, 102, 241, 0.3) 0%, transparent 50%), radial-gradient(ellipse at 80% 20%, rgba(168, 85, 247, 0.25) 0%, transparent 50%), radial-gradient(ellipse at 60% 80%, rgba(59, 130, 246, 0.25) 0%, transparent 50%), var(--left-pane-background-color); padding: 2em; width: 100vw; height: 100vh; display: flex; justify-content: center; align-items: center; .setup-container { background-color: var(--main-background-color); border-radius: 16px; padding: 2em; display: flex; flex-direction: column; gap: 2rem; height: 550px; width: 700px; box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1); overflow: hidden; position: relative; .setup-options { display: flex; flex-direction: column; justify-content: center; gap: 1rem; .setup-option-card { padding: 1.5em; cursor: pointer; display: flex; align-items: center; gap: 1rem; &:hover { background-color: var(--card-background-hover-color); filter: contrast(105%); transition: background-color .2s ease-out; } .tn-icon { font-size: 2.5em; color: var(--muted-text-color); } h3 { font-size: 1.5em; font-weight: normal; } p:last-of-type { margin-bottom: 0; color: var(--muted-text-color); } } } } .page { display: flex; flex-direction: column; height: 100%; >main { flex: 1; display: flex; flex-direction: column; padding-top: 1em; } >footer { display: flex; justify-content: flex-end; gap: 0.5rem; border-top: 1px solid var(--main-border-color); padding-top: 1rem; } } form { display: flex; flex-direction: column; justify-content: center; flex-grow: 1; gap: 1rem; width: 80%; margin: auto; } .form-item-with-icon { display: flex; align-items: center; gap: 0.5rem; .tn-icon { font-size: 1.5em; color: var(--muted-text-color); } } } .lds-ring { display: inline-block; position: relative; width: 60px; height: 60px; &>div { box-sizing: border-box; display: block; position: absolute; width: var(--size, 48px); height: var(--size, 48px); margin: 8px; border: 6px solid black; border-radius: 50%; animation: lds-ring 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite; border-color: black transparent transparent transparent; &:nth-child(1) { animation-delay: -0.45s; } &:nth-child(2) { animation-delay: -0.3s; } &:nth-child(3) { animation-delay: -0.15s; } } } .sync-illustration { display: flex; justify-content: center; margin-bottom: 1.5rem; .tn-icon { font-size: 3em; color: var(--muted-text-color); } >div { display: flex; flex-direction: column; text-align: center; gap: 0.5rem; line-height: 1; font-size: 0.85rem; } .sync-illustration-arrows { width: 60px; height: 3em; position: relative; &::after { content: ""; position: absolute; border: 2px dashed var(--main-border-color); top: 1.5em; left: 0; right: 0; } } } h1 { font-size: 1.4em; text-align: center; } h1 + p { text-align: center; color: var(--muted-text-color); } } @keyframes lds-ring { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } /* Slide transitions */ .slide-page { position: absolute; inset: 0; padding: 2em; } .slide-out-forward, .slide-out-backward, .slide-in-forward, .slide-in-backward { animation-duration: 0.35s; animation-timing-function: ease-in-out; animation-fill-mode: forwards; } .slide-out-forward { animation-name: slide-out-left; } .slide-out-backward { animation-name: slide-out-right; } .slide-in-forward { animation-name: slide-in-right; } .slide-in-backward { animation-name: slide-in-left; } @keyframes slide-out-left { from { transform: translateX(0); opacity: 1; } to { transform: translateX(-100%); opacity: 0; } } @keyframes slide-out-right { from { transform: translateX(0); opacity: 1; } to { transform: translateX(100%); opacity: 0; } } @keyframes slide-in-right { from { transform: translateX(100%); opacity: 0; } to { transform: translateX(0); opacity: 1; } } @keyframes slide-in-left { from { transform: translateX(-100%); opacity: 0; } to { transform: translateX(0); opacity: 1; } }