/* ============================================================ XENEX GLASS OS Signup Page ============================================================ */ :root { --xenex-bg: #050608; --xenex-glass-fill: rgba(255, 255, 255, 0.055); --xenex-glass-border: rgba(255, 255, 255, 0.13); --xenex-text-primary: #f5f7fa; --xenex-text-secondary: rgba(245, 247, 250, 0.68); --xenex-text-tertiary: rgba(245, 247, 250, 0.42); --xenex-blue: #3b82f6; --xenex-orange: #f97316; --xenex-red: #ef4444; --xenex-focus: rgba(59, 130, 246, 0.65); --font-display: "Space Grotesk", sans-serif; --font-body: "IBM Plex Sans", sans-serif; } /* ============================================================ BASE ============================================================ */ * { box-sizing: border-box; } html { min-height: 100%; background: var(--xenex-bg); } body { min-width: 320px; min-height: 100dvh; margin: 0; overflow-x: hidden; background: var(--xenex-bg); color: var(--xenex-text-primary); font-family: var(--font-body); -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; } /* ============================================================ PAGE ============================================================ */ .login-page { position: relative; display: flex; align-items: center; justify-content: center; min-height: 100dvh; padding: max(24px, env(safe-area-inset-top)) max(20px, env(safe-area-inset-right)) max(24px, env(safe-area-inset-bottom)) max(20px, env(safe-area-inset-left)); isolation: isolate; overflow: hidden; background: var(--xenex-bg); } /* ============================================================ AMBIENT LIGHT ============================================================ */ .login-ambient { position: absolute; z-index: -1; width: min(72vw, 620px); aspect-ratio: 1; pointer-events: none; border-radius: 50%; background: radial-gradient( circle, rgba(59, 130, 246, 0.26) 0%, rgba(59, 130, 246, 0.12) 28%, rgba(59, 130, 246, 0.035) 52%, transparent 72% ); transform: translate3d(-18%, -22%, 0); animation: xenex-blue-drift 18s ease-in-out infinite alternate; } .login-ambient--orange { width: min(68vw, 580px); background: radial-gradient( circle, rgba(249, 115, 22, 0.20) 0%, rgba(249, 115, 22, 0.09) 30%, rgba(249, 115, 22, 0.025) 54%, transparent 74% ); transform: translate3d(48%, 30%, 0); animation: xenex-orange-drift 22s ease-in-out infinite alternate; } .login-ambient--red { width: min(56vw, 500px); background: radial-gradient( circle, rgba(239, 68, 68, 0.15) 0%, rgba(239, 68, 68, 0.07) 30%, rgba(239, 68, 68, 0.02) 54%, transparent 74% ); transform: translate3d(34%, -42%, 0); animation: xenex-red-drift 25s ease-in-out infinite alternate; } @keyframes xenex-blue-drift { from { transform: translate3d(-18%, -22%, 0); } to { transform: translate3d(5%, -5%, 0); } } @keyframes xenex-orange-drift { from { transform: translate3d(48%, 30%, 0); } to { transform: translate3d(24%, 12%, 0); } } @keyframes xenex-red-drift { from { transform: translate3d(34%, -42%, 0); } to { transform: translate3d(12%, -20%, 0); } } /* ============================================================ GLASS CARD ============================================================ */ .login-card { position: relative; width: min(100%, 430px); border: 1px solid var(--xenex-glass-border); border-radius: 28px; background: linear-gradient( 145deg, rgba(255, 255, 255, 0.085), rgba(255, 255, 255, 0.025) 45%, rgba(255, 255, 255, 0.045) ); box-shadow: 0 30px 80px rgba(0, 0, 0, 0.48), inset 0 1px 0 rgba(255, 255, 255, 0.11); backdrop-filter: blur(24px) saturate(125%); -webkit-backdrop-filter: blur(24px) saturate(125%); overflow: hidden; } /* * Subtle illuminated upper glass edge. */ .login-card::before { content: ""; position: absolute; top: 0; left: 8%; width: 84%; height: 1px; background: linear-gradient( 90deg, transparent, rgba(255, 255, 255, 0.55), transparent ); opacity: 0.65; } .login-card__content { padding: 42px 38px 30px; } /* ============================================================ HEADER ============================================================ */ .login-header { margin-bottom: 30px; } .login-brand { display: inline-flex; align-items: center; gap: 9px; margin-bottom: 26px; color: var(--xenex-text-primary); font-family: var(--font-display); font-size: 15px; font-weight: 600; letter-spacing: -0.01em; } .login-brand__mark { width: 11px; height: 11px; border-radius: 50%; background: linear-gradient( 135deg, var(--xenex-blue), var(--xenex-orange) ); box-shadow: 0 0 18px rgba(59, 130, 246, 0.35); } .login-brand__name { line-height: 1; } .login-title { margin: 0; color: var(--xenex-text-primary); font-family: var(--font-display); font-size: clamp(28px, 7vw, 36px); font-weight: 600; line-height: 1.08; letter-spacing: -0.035em; } .login-description { max-width: 350px; margin: 13px 0 0; color: var(--xenex-text-secondary); font-size: 14px; line-height: 1.6; } /* ============================================================ FORM ============================================================ */ .login-form { display: flex; flex-direction: column; gap: 17px; } .login-field { position: relative; } .login-field__label { display: block; margin-bottom: 8px; color: var(--xenex-text-secondary); font-size: 12px; font-weight: 500; letter-spacing: 0.01em; } .login-field__control { position: relative; } .login-field__input { width: 100%; min-height: 50px; padding: 0 15px; border: 1px solid rgba(255, 255, 255, 0.105); border-radius: 14px; outline: none; background: rgba(0, 0, 0, 0.20); color: var(--xenex-text-primary); font: inherit; font-size: 14px; transition: border-color 160ms ease, background 160ms ease, box-shadow 160ms ease; } .login-field__control .login-field__input { padding-right: 72px; } .login-field__input::placeholder { color: var(--xenex-text-tertiary); } .login-field__input:hover { border-color: rgba(255, 255, 255, 0.17); } .login-field__input:focus { border-color: var(--xenex-focus); background: rgba(0, 0, 0, 0.27); box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.10); } /* ============================================================ PASSWORD TOGGLE ============================================================ */ .login-field__toggle { position: absolute; top: 50%; right: 10px; min-width: 48px; min-height: 34px; padding: 6px 8px; border: 0; border-radius: 9px; background: transparent; color: var(--xenex-text-secondary); font: inherit; font-size: 12px; font-weight: 500; cursor: pointer; transform: translateY(-50%); transition: background 160ms ease, color 160ms ease; } .login-field__toggle:hover { background: rgba(255, 255, 255, 0.07); color: var(--xenex-text-primary); } .login-field__toggle:focus-visible { outline: 2px solid var(--xenex-focus); outline-offset: 2px; } /* ============================================================ ERROR STATES ============================================================ */ .login-field--error .login-field__input { border-color: rgba(239, 68, 68, 0.65); box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.08); } .login-field__error { margin-top: 7px; color: #ff8d8d; font-size: 12px; line-height: 1.4; } /* ============================================================ STATUS ============================================================ */ .login-status { min-height: 18px; margin-top: -2px; font-size: 12px; line-height: 1.45; } .login-status--info { color: var(--xenex-text-secondary); } .login-status--error { color: #ff8d8d; } /* ============================================================ SUBMIT ============================================================ */ .login-submit { width: 100%; min-height: 51px; margin-top: 4px; border: 1px solid rgba(255, 255, 255, 0.15); border-radius: 14px; background: linear-gradient( 135deg, rgba(59, 130, 246, 0.90), rgba(59, 130, 246, 0.72) ); color: #ffffff; font-family: var(--font-display); font-size: 14px; font-weight: 600; cursor: pointer; box-shadow: 0 12px 28px rgba(0, 0, 0, 0.22), inset 0 1px 0 rgba(255, 255, 255, 0.20); transition: transform 160ms ease, background 160ms ease, box-shadow 160ms ease, opacity 160ms ease; } .login-submit:hover:not(:disabled) { background: linear-gradient( 135deg, rgba(59, 130, 246, 1), rgba(59, 130, 246, 0.80) ); transform: translateY(-1px); box-shadow: 0 15px 32px rgba(0, 0, 0, 0.28), inset 0 1px 0 rgba(255, 255, 255, 0.22); } .login-submit:active:not(:disabled) { transform: translateY(0); } .login-submit:disabled { cursor: not-allowed; opacity: 0.55; } /* ============================================================ FOOTER ============================================================ */ .login-footer { margin-top: 26px; text-align: center; } .login-footer__account { margin: 0; color: var(--xenex-text-secondary); font-size: 13px; line-height: 1.5; } .login-footer__link { color: var(--xenex-text-primary); text-decoration: none; transition: color 160ms ease; } .login-footer__link:hover { color: var(--xenex-blue); } .login-footer__link:focus-visible { outline: 2px solid var(--xenex-focus); outline-offset: 3px; border-radius: 3px; } .login-footer__legal { display: flex; align-items: center; justify-content: center; gap: 9px; margin-top: 17px; color: var(--xenex-text-tertiary); font-size: 11px; } /* ============================================================ RESPONSIVE — SMALL PHONES ============================================================ */ @media (max-width: 380px) { .login-page { align-items: flex-start; padding-top: max( 18px, env(safe-area-inset-top) ); padding-bottom: max( 18px, env(safe-area-inset-bottom) ); } .login-card { border-radius: 23px; } .login-card__content { padding: 30px 22px 24px; } .login-header { margin-bottom: 24px; } .login-brand { margin-bottom: 21px; } .login-title { font-size: 28px; } .login-description { font-size: 13px; } .login-form { gap: 14px; } .login-field__input { min-height: 48px; } } /* ============================================================ SHORT LANDSCAPE ============================================================ */ @media (max-height: 620px) and (orientation: landscape) { .login-page { align-items: flex-start; padding-top: max( 14px, env(safe-area-inset-top) ); padding-bottom: max( 14px, env(safe-area-inset-bottom) ); } .login-card { max-width: 560px; } .login-card__content { padding: 24px 32px; } .login-header { margin-bottom: 20px; } .login-brand { margin-bottom: 15px; } .login-form { gap: 12px; } .login-field__input { min-height: 44px; } .login-footer { margin-top: 18px; } } /* ============================================================ REDUCED MOTION ============================================================ */ @media (prefers-reduced-motion: reduce) { .login-ambient { animation: none; } .login-field__input, .login-field__toggle, .login-submit, .login-footer__link { transition: none; } }