:host { display: block; min-height: 100vh; } .login-page { display: grid; grid-template-columns: minmax(420px, 1.08fr) minmax(420px, .92fr); min-height: 100vh; color: #172033; background: #f7f9fc; } .login-story { position: relative; display: grid; place-items: center; overflow: hidden; padding: 64px; color: white; background: linear-gradient(145deg, rgba(14,44,78,.96), rgba(19,88,76,.93)), url('/static/images/ai-reading-journey.png') center/cover; } .login-story::before, .login-story::after { content: ''; position: absolute; border-radius: 50%; border: 1px solid rgba(255,255,255,.12); } .login-story::before { width: 540px; height: 540px; right: -220px; top: -180px; } .login-story::after { width: 300px; height: 300px; left: -120px; bottom: -100px; } .story-inner { position: relative; z-index: 1; max-width: 570px; } .story-brand, .mobile-brand { display: flex; align-items: center; gap: 14px; font-weight: 700; } .story-brand img, .mobile-brand img { width: 56px; height: 56px; padding: 5px; object-fit: contain; border-radius: 14px; background: white; } .story-brand span { font-size: 17px; } .eyebrow { margin: 72px 0 15px; color: #7ed8b5; font-size: 12px; font-weight: 800; letter-spacing: .22em; } h1 { margin: 0; font-size: clamp(38px, 4.3vw, 64px); line-height: 1.16; letter-spacing: -.035em; } .story-copy { max-width: 520px; margin: 28px 0; color: #c8d9e5; font-size: 16px; line-height: 1.9; } .login-panel { display: grid; place-items: center; padding: 48px; } form { width: min(100%, 420px); } .mobile-brand { display: none; } form .eyebrow { margin: 0 0 14px; color: #258d68; } h2 { margin: 0; font-size: 36px; letter-spacing: -.03em; } .form-intro { margin: 10px 0 38px; color: #7e8a9c; } label { display: grid; gap: 9px; margin: 0 0 20px; color: #3d495b; font-size: 13px; font-weight: 650; } .control { display: flex; align-items: center; gap: 10px; height: 50px; padding: 0 14px; border: 1px solid #dce3ec; border-radius: 11px; color: #8a96a7; background: white; transition: .18s ease; } .control:focus-within { border-color: #2f9c72; box-shadow: 0 0 0 3px rgba(47,156,114,.12); } input { min-width: 0; flex: 1; border: 0; outline: 0; color: #172033; background: transparent; font: inherit; } .control button { display: grid; place-items: center; padding: 5px; border: 0; color: #78869a; background: transparent; cursor: pointer; } .submit { display: flex; align-items: center; justify-content: center; gap: 9px; width: 100%; height: 52px; margin-top: 8px; border: 0; border-radius: 11px; color: white; background: linear-gradient(135deg, #2a9b70, #187754); box-shadow: 0 10px 24px rgba(32,135,94,.22); font: inherit; font-weight: 700; cursor: pointer; } .submit:disabled { opacity: .65; cursor: wait; } .error { margin: -4px 0 14px; color: #c23d45; font-size: 13px; } .notice { margin: -4px 0 14px; padding: 10px 12px; border-radius: 8px; color: #237454; background: #eaf7f1; font-size: 12px; line-height: 1.5; } .spin { animation: spin .8s linear infinite; } @keyframes spin { to { transform: rotate(360deg); } } @media (max-width: 860px) { .login-page { display: block; } .login-story { display: none; } .login-panel { min-height: 100vh; padding: 28px 22px; } .mobile-brand { display: flex; margin-bottom: 58px; } .mobile-brand img { width: 52px; height: 52px; } .mobile-brand span { font-size: 18px; } }