@font-face { font-family: Volter; font-weight: normal; font-style: normal; src: url("@/assets/webfonts/Volter.ttf") format("truetype"); } @font-face { font-family: Volter; font-weight: bold; font-style: normal; src: url("@/assets/webfonts/Volter-b.ttf") format("truetype"); } .nitro-login-view, .nitro-login-view * { font-family: Volter, "Volter (Goldfish)", monospace; -webkit-font-smoothing: none; -moz-osx-font-smoothing: grayscale; font-smooth: never; } .nitro-login-view { position: fixed; inset: 0; width: 100%; height: 100%; overflow: hidden; background: #6eadc8; z-index: 100; } .nitro-login-view .login-layer { position: absolute; background-repeat: no-repeat; pointer-events: none; transform: translateZ(0); } .nitro-login-view .login-layer-img { display: block; user-select: none; -webkit-user-drag: none; object-fit: none; } .nitro-login-view .login-image-preloader { position: absolute; width: 1px; height: 1px; overflow: hidden; opacity: 0; pointer-events: none; } .nitro-login-view .login-image-preloader img { width: 1px; height: 1px; } .nitro-login-view .login-background { top: 0; left: 0; width: 100%; height: 100%; object-fit: cover; object-position: center top; } .nitro-login-view .login-sun { left: 50%; transform: translateX(-50%); width: 600px; height: 600px; object-fit: contain; object-position: center top; } .nitro-login-view .login-drape { top: 0; left: 0; width: 190px; height: 220px; z-index: 3; object-fit: contain; object-position: left top; } .nitro-login-view .login-left { bottom: 0; left: 0; width: 100%; height: 100%; object-fit: none; object-position: left bottom; } .nitro-login-view .login-right-repeat { top: 0; right: 0; width: 400px; height: 100%; background-repeat: repeat-y; background-position: right top; } .nitro-login-view .login-right { bottom: 0; right: 0; width: auto; height: auto; max-width: none; object-fit: initial; object-position: initial; } /* ─── Foreground Login Card Stack ─── */ .nitro-login-view .login-stack { position: absolute; top: 50%; right: 8vw; transform: translateY(-50%); display: flex; flex-direction: column; gap: 18px; width: 260px; z-index: 50; pointer-events: auto; } .nitro-login-view .login-widgets { position: absolute; top: 18px; left: 240px; right: 360px; z-index: 25; display: grid; grid-template-columns: repeat(2, minmax(260px, 1fr)); gap: 34px 58px; pointer-events: auto; } .nitro-login-view .login-widget-slot { min-height: 110px; display: grid; grid-template-columns: 160px minmax(0, 1fr); align-items: center; gap: 22px; color: #ffffff; font-family: Ubuntu, 'Helvetica Neue', Arial, sans-serif; text-shadow: 0 2px 2px rgba(0, 0, 0, 0.45); } .nitro-login-view .login-widget-image { max-width: 150px; max-height: 150px; width: auto; height: auto; justify-self: center; image-rendering: auto; user-select: none; -webkit-user-drag: none; } .nitro-login-view .login-widget-content { min-width: 0; } .nitro-login-view .login-widget-title { font-size: 18px; line-height: 20px; font-weight: 700; letter-spacing: 0.2px; margin-bottom: 5px; } .nitro-login-view .login-widget-description { max-width: 285px; font-size: 12px; line-height: 14px; font-weight: 600; margin-bottom: 14px; } .nitro-login-view .login-widget-button { min-width: 178px; height: 25px; padding: 0 18px; border: 1px solid #777777; border-radius: 3px; background: linear-gradient(#ffffff, #d4d4d4); color: #111111; font-size: 11px; font-weight: 700; cursor: pointer; box-shadow: inset 0 1px rgba(255, 255, 255, 0.85), 0 1px 1px rgba(0, 0, 0, 0.35); text-shadow: none; } .nitro-login-view .login-widget-button:hover { background: linear-gradient(#ffffff, #e9e9e9); } .nitro-login-card { background: #a2bfd1; border: 2px solid #3f6a85; border-radius: 8px; padding: 12px 14px; color: #0a2e45; font-family: Ubuntu, 'Helvetica Neue', Arial, sans-serif; box-shadow: inset 0 2px rgba(255, 255, 255, 0.35), 0 4px 6px rgba(0, 0, 0, 0.25); } .nitro-login-card .card-title { position: relative; display: flex; align-items: center; justify-content: center; font-weight: 700; color: #ffffff; background: #3f6a85; padding: 4px 26px; margin: -12px -14px 10px -14px; border-radius: 6px 6px 0 0; font-size: 13px; letter-spacing: 0.5px; text-shadow: 0 1px rgba(0, 0, 0, 0.35); } .nitro-login-card .card-title .nitro-card-close-button { position: absolute; top: 50%; right: 6px; transform: translateY(-50%); cursor: pointer; } .nitro-login-card .card-body { display: flex; flex-direction: column; gap: 8px; font-size: 12px; } .nitro-login-card .field { display: flex; flex-direction: column; gap: 4px; } .nitro-login-card .field label { font-size: 11px; color: #0a2e45; font-weight: 600; } .nitro-login-card .field input { width: 100%; padding: 6px 8px; border-radius: 20px; border: 1px solid #7595ac; background: #ffffff; color: #0a2e45; font-size: 12px; outline: none; box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); } .nitro-login-card .field input:focus { border-color: #3f6a85; box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 0 0 2px rgba(63, 106, 133, 0.3); } .nitro-login-card .remember-row { display: flex; align-items: center; gap: 6px; color: #0a2e45; font-size: 11px; font-weight: 600; cursor: pointer; user-select: none; } .nitro-login-card .remember-row input { width: 13px; height: 13px; margin: 0; cursor: pointer; } .nitro-login-card .submit-row { display: flex; justify-content: center; margin-top: 2px; } .nitro-login-card button.ok-button { cursor: pointer; background: #ffffff; border: 1px solid #3f6a85; border-radius: 4px; padding: 3px 16px; font-size: 12px; font-weight: 700; color: #0a2e45; box-shadow: inset 0 1px rgba(255, 255, 255, 0.8), 0 1px rgba(0, 0, 0, 0.15); } .nitro-login-card button.ok-button:hover { background: #e9f1f7; } .nitro-login-card button.ok-button:disabled { opacity: 0.55; cursor: not-allowed; } .nitro-login-card .forgot { display: block; text-align: center; margin-top: 6px; font-size: 11px; color: #134b6e; text-decoration: underline; cursor: pointer; } .nitro-login-card .error-line { color: #a81a12; background: #fde6e4; border: 1px solid #e0a7a2; border-radius: 4px; padding: 4px 6px; font-size: 11px; text-align: center; } .nitro-login-card .info-line { color: #0a4d2e; background: #e5f5ec; border: 1px solid #a4d4b8; border-radius: 4px; padding: 4px 6px; font-size: 11px; text-align: center; } .nitro-login-card .error-line.ban-message { display: flex; flex-direction: column; gap: 3px; padding: 8px 10px; text-align: left; line-height: 1.35; } .nitro-login-card .error-line.ban-message .ban-title { font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.3px; } .nitro-login-card .error-line.ban-message .ban-status { font-size: 11px; font-variant-numeric: tabular-nums; } .nitro-login-card .error-line.ban-message .ban-reason { font-size: 11px; font-style: italic; word-break: break-word; } .nitro-login-card .register-card-body a { color: #134b6e; text-decoration: underline; cursor: pointer; font-weight: 600; } .nitro-login-card.login-language-card { padding-bottom: 10px; } .nitro-login-card .login-language-grid { display: grid; grid-template-columns: repeat(5, 46px); justify-content: center; gap: 7px 3px; } .nitro-login-card .login-language-option { position: relative; width: 46px; height: 52px; padding: 0; border: 0; background: transparent center 2px no-repeat; background-size: 38px 32px; cursor: pointer; image-rendering: auto; overflow: hidden; } .nitro-login-card .login-language-option.selected { background-size: 38px 32px; } .nitro-login-card .login-language-option img { position: absolute; top: 18px; left: 50%; width: auto; height: auto; max-width: 28px; max-height: 22px; transform: translate(-50%, -50%); pointer-events: none; user-select: none; -webkit-user-drag: none; } .nitro-login-card .login-language-option span { position: absolute; left: 0; right: 0; bottom: 0; color: #1b3444; font-size: 9px; line-height: 10px; text-align: center; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .nitro-login-card .language-error { margin-top: 6px; color: #9f1b15; font-size: 10px; text-align: center; } .nitro-login-card .login-language-confirm { display: block; min-width: 58px; margin: 7px auto 0; } .nitro-login-card .turnstile-slot { display: flex; justify-content: center; margin-top: 4px; min-height: 65px; } .nitro-login-card .turnstile-slot iframe { max-width: 100%; } .nitro-login-modal { position: fixed; inset: 0; background: rgba(0, 0, 0, 0.4); display: flex; align-items: center; justify-content: center; z-index: 200; } .nitro-login-modal .dialog { width: 320px; max-width: calc(100% - 40px); } .nitro-login-modal .dialog.dialog-avatar { width: 400px; } /* ─── Multi-step register dialog ─── */ .nitro-login-card .register-intro { background: #eef4f8; border: 1px solid #b6cfdd; border-radius: 4px; padding: 6px 8px; font-size: 11px; line-height: 1.4; color: #0a2e45; } .nitro-login-card .step-footer { display: flex; align-items: center; justify-content: flex-end; gap: 10px; margin-top: 4px; } .nitro-login-card .step-footer-split { justify-content: space-between; } .nitro-login-card .step-indicator { font-size: 11px; color: #134b6e; font-weight: 600; } .nitro-login-card .back-button { background: #d5e2eb; } /* ─── Avatar builder (pre-login) ─── */ .nitro-login-card .gender-row { display: flex; justify-content: center; gap: 22px; font-size: 11px; font-weight: 600; } .nitro-login-card .gender-row label { display: inline-flex; align-items: center; gap: 4px; cursor: pointer; } .nitro-login-card .avatar-builder { display: grid; grid-template-columns: 74px 1fr 74px; gap: 6px; align-items: stretch; background: repeating-linear-gradient( 0deg, #ffffff 0, #ffffff 8px, #e5ecf1 8px, #e5ecf1 16px ); border: 1px solid #7595ac; border-radius: 6px; padding: 6px; } .nitro-login-card .avatar-part-col, .nitro-login-card .avatar-color-col { display: flex; flex-direction: column; justify-content: space-between; gap: 4px; } .nitro-login-card .avatar-part-row, .nitro-login-card .avatar-color-row { display: flex; align-items: center; justify-content: space-between; gap: 3px; min-height: 44px; } .nitro-login-card .arrow-btn { width: 16px; height: 20px; line-height: 1; padding: 0; border: 1px solid #7595ac; border-radius: 3px; background: #ffffff; color: #0a2e45; font-size: 14px; font-weight: 700; cursor: pointer; box-shadow: inset 0 1px rgba(255, 255, 255, 0.8), 0 1px rgba(0, 0, 0, 0.15); flex-shrink: 0; } .nitro-login-card .arrow-btn:hover { background: #e9f1f7; } .nitro-login-card .part-preview { flex: 1; height: 44px; border: 1px solid #7595ac; border-radius: 3px; background: #ffffff; overflow: hidden; display: flex; align-items: center; justify-content: center; box-shadow: inset 0 1px rgba(255, 255, 255, 0.8); } .nitro-login-card .part-preview img { image-rendering: pixelated; image-rendering: -moz-crisp-edges; pointer-events: none; user-select: none; max-width: none; height: auto; } .nitro-login-card .part-preview-hr img, .nitro-login-card .part-preview-hd img { width: 40px; height: auto; } .nitro-login-card .part-preview-ch img { width: 50px; margin-top: 8px; } .nitro-login-card .part-preview-lg img { width: 50px; margin-top: -8px; } .nitro-login-card .part-preview-sh img { width: 50px; margin-top: -22px; } .nitro-login-card .color-swatch { flex: 1; height: 18px; border: 1px solid #7595ac; border-radius: 3px; box-shadow: inset 0 1px rgba(255, 255, 255, 0.4); } .nitro-login-card .avatar-preview { display: flex; align-items: flex-end; justify-content: center; min-height: 130px; overflow: hidden; } .nitro-login-card .avatar-preview img { max-width: 100%; max-height: 140px; image-rendering: pixelated; image-rendering: -moz-crisp-edges; } .nitro-login-card .hot-looks-row { display: flex; justify-content: center; margin-top: 2px; } .nitro-login-card .server-offline { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 6px; text-align: left; } .nitro-login-card .server-offline .retry-link { background: #ffffff; border: 1px solid #3f6a85; border-radius: 4px; padding: 2px 10px; font-size: 11px; font-weight: 700; color: #0a2e45; cursor: pointer; box-shadow: inset 0 1px rgba(255, 255, 255, 0.8), 0 1px rgba(0, 0, 0, 0.15); } .nitro-login-card .server-offline .retry-link:disabled { opacity: 0.55; cursor: not-allowed; } .nitro-login-card .hot-looks-button { padding: 4px 14px; font-size: 11px; } @media (max-width: 1180px) { .nitro-login-view .login-widgets { left: 210px; right: 315px; grid-template-columns: 1fr; gap: 16px; } .nitro-login-view .login-widget-slot { grid-template-columns: 120px minmax(0, 1fr); min-height: 86px; gap: 14px; } .nitro-login-view .login-widget-image { max-width: 110px; max-height: 110px; } } @media (min-width: 600px) and (max-width: 1100px) { .nitro-login-view .login-stack { right: 16px; width: auto; max-width: min(540px, calc(100vw - 32px)); display: grid; grid-template-columns: 1fr 1fr; column-gap: 12px; row-gap: 14px; } .nitro-login-view .login-stack > .nitro-login-card:nth-child(3) { grid-column: 1 / -1; } } /* ─── Login News Window (Habbo flavour) ─── */ .nitro-login-view .login-news-stack { position: absolute; top: 25%; left: 8vw; transform: translateY(-50%); display: flex; flex-direction: column; width: 388px; z-index: 50; pointer-events: auto; } .nitro-login-view .news-card-wrapper { position: relative; animation: news-pop-in 0.45s cubic-bezier(0.34, 1.56, 0.64, 1) both; } .nitro-login-view .news-card-wrapper > .nitro-login-card.nitro-news-card { position: relative; overflow: visible; border-width: 3px; padding-top: 22px; background: linear-gradient(180deg, #b9d4e3 0%, #a2bfd1 60%, #93b3c8 100%); box-shadow: inset 0 2px rgba(255, 255, 255, 0.5), inset 0 -2px rgba(0, 0, 0, 0.12), 0 6px 14px rgba(0, 0, 0, 0.35), 0 0 0 4px rgba(63, 106, 133, 0.0); animation: news-glow 3.2s ease-in-out infinite; } /* Yellow Habbo-style ribbon title */ .nitro-login-card.nitro-news-card .card-title.news-ribbon { position: absolute; top: -14px; left: -10px; right: -10px; margin: 0; padding: 6px 12px; background: linear-gradient(180deg, #ffe27a 0%, #ffc742 50%, #f0a812 100%); color: #5a3a00; text-shadow: 0 1px rgba(255, 255, 255, 0.55); border: 2px solid #8a5a00; border-radius: 6px; box-shadow: inset 0 1px rgba(255, 255, 255, 0.7), inset 0 -2px rgba(0, 0, 0, 0.15), 0 3px 0 rgba(0, 0, 0, 0.2); font-size: 13px; font-weight: 800; letter-spacing: 0.6px; text-transform: uppercase; text-align: center; z-index: 2; } /* Pennant tails on the ribbon */ .nitro-login-card.nitro-news-card .card-title.news-ribbon::before, .nitro-login-card.nitro-news-card .card-title.news-ribbon::after { content: ""; position: absolute; bottom: -6px; width: 12px; height: 12px; background: #c47800; border: 2px solid #8a5a00; z-index: -1; } .nitro-login-card.nitro-news-card .card-title.news-ribbon::before { left: -2px; clip-path: polygon(0 0, 100% 0, 100% 100%); transform: rotate(0deg); } .nitro-login-card.nitro-news-card .card-title.news-ribbon::after { right: -2px; clip-path: polygon(0 0, 100% 0, 0 100%); } .nitro-login-card.nitro-news-card .news-ribbon-text { display: inline-block; animation: news-ribbon-wobble 4s ease-in-out infinite; } /* "NEW!" star badge */ .nitro-login-view .news-new-badge { position: absolute; top: -28px; right: -24px; width: 78px; height: 78px; background: radial-gradient(circle at 35% 30%, #fff7c2 0%, #ffd23a 45%, #d97c00 100%); color: #5a1900; font-weight: 900; font-size: 11px; letter-spacing: 0; text-transform: uppercase; text-shadow: 0 1px rgba(255, 255, 255, 0.6); display: flex; align-items: center; justify-content: center; border: 2px solid #8a3a00; box-shadow: inset 0 2px rgba(255, 255, 255, 0.55), inset 0 -2px rgba(0, 0, 0, 0.2), 0 3px 6px rgba(0, 0, 0, 0.35); clip-path: polygon( 50% 0%, 61% 35%, 98% 35%, 68% 57%, 79% 91%, 50% 70%, 21% 91%, 32% 57%, 2% 35%, 39% 35% ); z-index: 4; animation: news-badge-spin 2.8s ease-in-out infinite; pointer-events: none; } .nitro-login-view .news-new-badge span { transform: rotate(-10deg); display: inline-block; line-height: 1; white-space: nowrap; } /* Sparkles around the card */ .nitro-login-view .news-sparkle { position: absolute; color: #fff5b0; text-shadow: 0 0 6px rgba(255, 220, 120, 0.9), 0 0 12px rgba(255, 200, 60, 0.6); pointer-events: none; z-index: 3; user-select: none; font-weight: 700; } .nitro-login-view .news-sparkle-1 { top: -8px; left: 18px; font-size: 14px; animation: news-sparkle 2.1s ease-in-out infinite; animation-delay: 0s; } .nitro-login-view .news-sparkle-2 { top: 38%; left: -12px; font-size: 12px; animation: news-sparkle 2.4s ease-in-out infinite; animation-delay: 0.6s; } .nitro-login-view .news-sparkle-3 { bottom: -6px; right: 36px; font-size: 16px; animation: news-sparkle 2.7s ease-in-out infinite; animation-delay: 1.1s; } /* Body */ .nitro-login-card.nitro-news-card .card-body.news-body { gap: 8px; font-size: 12px; color: #0a2e45; } .nitro-login-card.nitro-news-card .news-image { position: relative; display: flex; align-items: center; justify-content: center; border: 2px solid #3f6a85; border-radius: 4px; background: repeating-linear-gradient( 45deg, rgba(255, 255, 255, 0.15) 0 6px, rgba(255, 255, 255, 0) 6px 12px ), linear-gradient(180deg, #cfe1ee 0%, #a8c5d6 100%); overflow: hidden; box-shadow: inset 0 2px rgba(255, 255, 255, 0.6), inset 0 -2px rgba(0, 0, 0, 0.15); max-height: 150px; transition: transform 0.25s ease; } .nitro-login-card.nitro-news-card .news-image:hover { transform: translateY(-1px) scale(1.01); } .nitro-login-card.nitro-news-card .news-image::after { content: ""; position: absolute; inset: 0; pointer-events: none; background: linear-gradient(180deg, rgba(255, 255, 255, 0.35) 0%, rgba(255, 255, 255, 0) 35%); } .nitro-login-card.nitro-news-card .news-image img { max-width: 100%; max-height: 146px; width: auto; height: auto; display: block; image-rendering: pixelated; image-rendering: -moz-crisp-edges; position: relative; z-index: 1; } .nitro-login-card.nitro-news-card .news-headline { font-weight: 800; font-size: 13px; line-height: 1.25; color: #0a2e45; text-shadow: 0 1px rgba(255, 255, 255, 0.5); letter-spacing: 0.2px; border-bottom: 1px dashed rgba(63, 106, 133, 0.4); padding-bottom: 4px; } .nitro-login-card.nitro-news-card .news-text { font-size: 11px; line-height: 1.45; color: #103e5d; white-space: pre-line; word-break: break-word; max-height: 120px; overflow-y: auto; padding-right: 2px; } .nitro-login-card.nitro-news-card .news-text::-webkit-scrollbar { width: 6px; } .nitro-login-card.nitro-news-card .news-text::-webkit-scrollbar-thumb { background: rgba(63, 106, 133, 0.6); border-radius: 3px; } .nitro-login-card.nitro-news-card .news-footer { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-top: 4px; } .nitro-login-card.nitro-news-card .news-link-button { padding: 4px 14px; font-size: 11px; font-weight: 800; background: linear-gradient(180deg, #ffe27a 0%, #ffc742 60%, #f0a812 100%); color: #5a3a00; border: 1px solid #8a5a00; text-shadow: 0 1px rgba(255, 255, 255, 0.45); box-shadow: inset 0 1px rgba(255, 255, 255, 0.7), inset 0 -1px rgba(0, 0, 0, 0.15), 0 2px 0 rgba(0, 0, 0, 0.2); transition: transform 0.12s ease, box-shadow 0.12s ease; } .nitro-login-card.nitro-news-card .news-link-button:hover { background: linear-gradient(180deg, #fff0a8 0%, #ffd45c 60%, #f7b822 100%); transform: translateY(-1px); box-shadow: inset 0 1px rgba(255, 255, 255, 0.8), inset 0 -1px rgba(0, 0, 0, 0.15), 0 3px 0 rgba(0, 0, 0, 0.25); } .nitro-login-card.nitro-news-card .news-link-button:active { transform: translateY(1px); box-shadow: inset 0 1px rgba(0, 0, 0, 0.15), 0 0 0 rgba(0, 0, 0, 0); } .nitro-login-card.nitro-news-card .news-pager { display: flex; align-items: center; gap: 6px; margin-left: auto; } .nitro-login-card.nitro-news-card .news-pager .arrow-btn { transition: transform 0.12s ease; } .nitro-login-card.nitro-news-card .news-pager .arrow-btn:hover { transform: scale(1.15); } .nitro-login-card.nitro-news-card .news-counter { font-size: 11px; color: #134b6e; font-weight: 700; font-variant-numeric: tabular-nums; min-width: 28px; text-align: center; text-shadow: 0 1px rgba(255, 255, 255, 0.4); } @keyframes news-pop-in { 0% { opacity: 0; transform: scale(0.85) translateY(8px); } 60% { opacity: 1; transform: scale(1.04) translateY(0); } 100% { opacity: 1; transform: scale(1) translateY(0); } } @keyframes news-glow { 0%, 100% { box-shadow: inset 0 2px rgba(255, 255, 255, 0.5), inset 0 -2px rgba(0, 0, 0, 0.12), 0 6px 14px rgba(0, 0, 0, 0.35), 0 0 0 0 rgba(255, 210, 60, 0.0); } 50% { box-shadow: inset 0 2px rgba(255, 255, 255, 0.5), inset 0 -2px rgba(0, 0, 0, 0.12), 0 6px 14px rgba(0, 0, 0, 0.35), 0 0 18px 4px rgba(255, 210, 60, 0.45); } } @keyframes news-ribbon-wobble { 0%, 100% { transform: rotate(0deg) translateY(0); } 25% { transform: rotate(-1.2deg) translateY(-1px); } 75% { transform: rotate(1.2deg) translateY(1px); } } @keyframes news-badge-spin { 0%, 100% { transform: rotate(-8deg) scale(1); } 50% { transform: rotate(8deg) scale(1.08); } } @keyframes news-sparkle { 0%, 100% { opacity: 0.2; transform: scale(0.7) rotate(0deg); } 50% { opacity: 1; transform: scale(1.2) rotate(20deg); } } @media (prefers-reduced-motion: reduce) { .nitro-login-view .news-card-wrapper, .nitro-login-view .news-card-wrapper > .nitro-login-card.nitro-news-card, .nitro-login-view .news-new-badge, .nitro-login-view .news-sparkle, .nitro-login-card.nitro-news-card .news-ribbon-text { animation: none !important; } } @media (max-width: 1100px) { .nitro-login-view .login-news-stack { left: 24px; top: 45%; } } @media (max-width: 900px) { .nitro-login-view .login-news-stack { display: none; } } /* ─── Cloud intro (plays once per session) ─── */ .login-intro-clouds { position: fixed; inset: 0; z-index: 1000; pointer-events: none; overflow: hidden; animation: cloud-overlay-fade 2.8s linear forwards; } .intro-cloud-bank { position: absolute; left: -10%; width: 120%; height: 70%; display: flex; align-items: center; justify-content: space-around; will-change: transform; } .intro-cloud-bank-top { top: -70%; animation: cloud-bank-top 2.8s cubic-bezier(0.65, 0, 0.35, 1) forwards; } .intro-cloud-bank-bottom { bottom: -70%; animation: cloud-bank-bottom 2.8s cubic-bezier(0.65, 0, 0.35, 1) forwards; } .intro-cloud-puff { flex-shrink: 0; background: radial-gradient(ellipse at 45% 38%, #ffffff 0%, #fbfdff 35%, rgba(247, 251, 255, 0.85) 60%, rgba(255, 255, 255, 0) 78%); filter: drop-shadow(0 8px 14px rgba(140, 175, 205, 0.35)); border-radius: 50%; } .intro-cloud-bank-top .intro-cloud-puff { align-self: flex-end; } .intro-cloud-bank-bottom .intro-cloud-puff { align-self: flex-start; } .intro-cloud-puff-1 { width: 360px; height: 320px; transform: translateY(-10px); } .intro-cloud-puff-2 { width: 260px; height: 240px; transform: translateY(20px); } .intro-cloud-puff-3 { width: 420px; height: 380px; transform: translateY(-30px); } .intro-cloud-puff-4 { width: 300px; height: 280px; transform: translateY(15px); } .intro-cloud-puff-5 { width: 340px; height: 300px; transform: translateY(-5px); } @keyframes cloud-bank-top { 0% { transform: translateY(0); } 35% { transform: translateY(105%); } 55% { transform: translateY(105%); } 100% { transform: translateY(-10%); } } @keyframes cloud-bank-bottom { 0% { transform: translateY(0); } 35% { transform: translateY(-105%); } 55% { transform: translateY(-105%); } 100% { transform: translateY(10%); } } @keyframes cloud-overlay-fade { 0%, 88% { opacity: 1; } 100% { opacity: 0; } } @media (prefers-reduced-motion: reduce) { .login-intro-clouds, .intro-cloud-bank-top, .intro-cloud-bank-bottom { animation-duration: 0.4s !important; } } /* ─── Register dialog · room template step ─── */ .nitro-login-modal .dialog.dialog-room { width: 400px; } .nitro-login-card .room-templates-list { display: flex; flex-direction: column; gap: 6px; max-height: 280px; overflow-y: auto; overflow-x: hidden; padding-right: 4px; margin-top: 2px; scrollbar-width: auto; } .nitro-login-card .room-template-option { display: flex; align-items: center; gap: 10px; padding: 8px 10px; background: linear-gradient(180deg, #f4f9fc 0%, #dbe9f1 100%); border: 1px solid #a4c0d2; border-radius: 6px; cursor: pointer; transition: border-color 0.12s ease, box-shadow 0.12s ease, background 0.12s ease; color: #0a2e45; user-select: none; position: relative; } .nitro-login-card .room-template-option:hover { border-color: #4a8ec0; box-shadow: 0 0 0 1px rgba(74, 142, 192, 0.45); } .nitro-login-card .room-template-option.selected { border-color: #2a78b8; background: linear-gradient(180deg, #eaf4fb 0%, #c5dcec 100%); box-shadow: 0 0 0 2px rgba(42, 120, 184, 0.55), 0 1px 2px rgba(0, 0, 0, 0.08); } .nitro-login-card .room-template-option input[type="radio"] { flex-shrink: 0; margin: 0; accent-color: #2a78b8; cursor: pointer; } .nitro-login-card .room-template-thumb { width: 64px; height: 48px; object-fit: cover; border-radius: 4px; border: 1px solid #a4c0d2; background: #fff; flex-shrink: 0; image-rendering: pixelated; } .nitro-login-card .room-template-body { display: flex; flex-direction: column; gap: 2px; min-width: 0; flex: 1; } .nitro-login-card .room-template-title { font-size: 12px; font-weight: 700; color: #0a2e45; line-height: 1.2; text-transform: capitalize; } .nitro-login-card .room-template-description { font-size: 11px; line-height: 1.35; color: #486175; word-break: break-word; } /* The "Skip" option sits at the top with a softer dashed border so it visually distinguishes itself from the actual templates. */ .nitro-login-card .room-template-option.room-template-skip { background: linear-gradient(180deg, #fbfcfd 0%, #e7eef4 100%); border-style: dashed; } .nitro-login-card .room-template-option.room-template-skip.selected { border-style: solid; }