| 1234567891011121314151617181920212223242526272829303132333435363738 |
- :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; }
- }
|