py-learn / src /app /sign-in /sign-in.component.css
Anupriya
duplicate removed
a5d3fab
/* root colors and variables remain unchanged */
.signin-popup {
position: fixed;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
z-index: 1000;
background: #05234b;
backdrop-filter: blur(16px);
}
.signin-title {
color: #38bdf8;
font-size: 2.1rem;
font-weight: 800;
margin-bottom: 12px;
text-align: center;
letter-spacing: 1px;
text-shadow: 0 2px 8px #0008;
}
form {
width: 100%;
}
.signin-row {
display: flex;
gap: 24px;
margin-bottom: 18px;
}
.signin-field {
flex: 1;
display: flex;
flex-direction: column;
}
.signin-field label {
color: #fff;
font-weight: 600;
margin-bottom: 6px;
font-size: 1rem;
letter-spacing: 0.5px;
}
.signin-field input {
background: #fff;
color: #18314a;
border: none;
border-radius: 8px;
padding: 12px 14px; /* KEEP THIS */
font-size: 1rem; /* KEEP THIS */
margin-bottom: 2px;
box-shadow: 0 1px 4px #0002;
transition: border 0.2s, box-shadow 0.2s;
}
.signin-field input:focus {
outline: 2px solid #1de9b6;
border-color: #1de9b6;
box-shadow: 0 0 0 2px #1de9b688;
}
.signin-field input::placeholder {
color: #b0b8c1;
opacity: 1;
}
.signin-field small.error {
color: #ff5252;
font-size: 0.85rem;
margin-top: 4px;
}
.signin-options-row {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 2vw;
margin-top: -8px;
}
.remember-me {
display: flex;
align-items: center;
gap: 6px;
font-size: 1rem;
color: #b0b8c1;
}
.remember-me input[type="checkbox"] {
accent-color: #38bdf8;
width: 16px;
height: 16px;
}
.forgot-password {
font-size: 1rem;
}
.forgot-link {
color: #38bdf8;
text-decoration: underline;
font-weight: 500;
cursor: pointer;
}
.signin-btn {
width: 100%;
background: #18314a;
color: #fff;
border: none;
border-radius: 8px;
padding: 14px 0;
font-size: 1.1rem;
font-weight: 700;
margin-bottom: 18px;
cursor: pointer;
transition: background 0.2s, color 0.2s;
}
.signin-btn:hover {
background: #38bdf8;
}
.signin-footer {
color: #b0b8c1;
font-size: 0.95rem;
text-align: center;
margin-top: 8px;
}
.signin-footer a {
color: #38bdf8;
text-decoration: underline;
margin-left: 4px;
font-weight: 600;
cursor: pointer;
}
.signin-close {
position: absolute;
top: 18px;
right: 18px;
width: 38px;
height: 38px;
border: none;
background: #14263c;
color: #fff;
border-radius: 50%;
font-size: 2rem;
font-weight: bold;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
z-index: 10;
transition: background 0.2s, color 0.2s;
box-shadow: 0 2px 8px #0005;
}
.signin-close:hover {
background: #38bdf8;
color: #18314a;
}
.spinner {
display: inline-block;
width: 18px;
height: 18px;
border: 3px solid #fff;
border-top: 3px solid #38bdf8;
border-radius: 50%;
animation: spin 0.7s linear infinite;
vertical-align: middle;
margin-right: 8px;
}
@keyframes spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
.signin-error-toast {
background: transparent;
color: #ff5252;
font-weight: 700;
border-radius: 8px;
border: 1px solid #ff5252;
padding: 8px 18px;
margin: 12px 0;
text-align: center;
animation: shakeError 0.3s cubic-bezier(.39,.58,.57,1);
}
@keyframes shakeError {
0% {
transform: translateX(0);
}
20% {
transform: translateX(-8px);
}
40% {
transform: translateX(8px);
}
60% {
transform: translateX(-8px);
}
80% {
transform: translateX(8px);
}
100% {
transform: translateX(0);
}
}
.forgot-modal-bg {
position: fixed;
inset: 0;
background: rgba(30,41,59,0.9);
z-index: 2000;
display: flex;
align-items: center;
justify-content: center;
animation: fadeInModalBg 0.4s;
}
@keyframes fadeInModalBg {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
.forgot-modal {
background: #fff;
border-radius: 18px;
box-shadow: 0 8px 32px #38bdf844, 0 0 24px #1e293b88;
padding: 32px 36px 28px 36px;
min-width: 320px;
max-width: 90vw;
text-align: center;
z-index: 2001;
display: flex;
flex-direction: column;
align-items: center;
animation: fadeInModal 0.4s;
}
@keyframes fadeInModal {
from {
opacity: 0;
transform: scale(0.98);
}
to {
opacity: 1;
transform: scale(1);
}
}
.forgot-modal h3 {
color: #38bdf8;
margin: 12px 0 8px 0;
font-size: 1.4em;
font-weight: 700;
}
.forgot-modal p {
color: #23272b;
font-size: 1.08em;
margin-bottom: 18px;
}
.forgot-modal input[type="email"] {
background: #f4f6fa;
color: #18314a;
border: none;
border-radius: 8px;
padding: 12px 14px;
font-size: 1rem;
margin-bottom: 12px;
box-shadow: 0 1px 4px #0002;
width: 100%;
}
.modal-close {
width: 23%;
background: #18314a;
color: #fff;
border: none;
border-radius: 8px;
padding: 14px 0;
font-size: 1.1rem;
font-weight: 700;
margin-bottom: 0;
cursor: pointer;
transition: background 0.2s, color 0.2s;
display: block;
}
.modal-close:hover {
background: #38bdf8;
color: #18314a;
}
.eye-toggle {
position: absolute;
right: 12px;
top: 50%;
transform: translateY(-50%);
background: none;
border: none;
font-size: 1.3em;
color: #888;
cursor: pointer;
z-index: 2;
padding: 0;
line-height: 1;
opacity: 0.7;
transition: color 0.2s, opacity 0.2s;
}
#password {
padding-right: 40px;
}
.auth-card {
width: 1140px; /* viewport width remains */
height: 700px; /* increased height to accommodate content and remove scroll */
perspective: none;
overflow: hidden;
border-radius: 12px;
box-shadow: 0 8px 24px rgba(0,0,0,0.12), #ffffff 1px 1px 51px; /* added white glow */
margin: 0 auto;
}
.card-inner {
width: 200%; /* contains both faces side-by-side */
height: 100%;
display: flex; /* place front and back side-by-side */
/* much slower transition so flip is clearly visible to users */
transition: transform 0.7s cubic-bezier(.22, .9, .32,1);
will-change: transform;
}
.auth-card.flipped .card-inner {
transform: translate3d(-50%,0,0);
}
.auth-card:not(.flipped) .card-inner {
transform: translate3d(0,0,0);
}
.card-front .main-panel,
.card-back .main-panel {
transition: opacity 1s ease 0.15s;
}
.card-front[aria-hidden="true"] .main-panel,
.card-back[aria-hidden="true"] .main-panel {
opacity: 0;
}
.card-front[aria-hidden="false"] .main-panel,
.card-back[aria-hidden="false"] .main-panel {
opacity: 1;
}
.card-front, .card-back {
width: 50%;
height: 100%;
flex: 0 0 50%;
box-sizing: border-box;
position: relative; /* allow absolute children inside */
overflow: hidden;
}
.card-content {
display: flex;
height: 100%;
flex-direction: row-reverse;
}
.side-panel {
width: 48%;
display: flex;
align-items: center;
justify-content: center;
}
.main-panel {
width: 55%;
padding: 48px 48px;
box-sizing: border-box;
background: #fff;
overflow: visible;
display: flex;
flex-direction: column;
align-items: center;
}
.logo-header {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
text-align: center;
margin-bottom: 8px;
}
.py-learn-text {
font-size: 3vw;
font-weight: 600;
color: #073879;
font-family: Amonk_Outline;
margin-bottom: 1vw;
}
.self-learning-system {
font-size: 1.2vw;
font-weight: bolder;
color: #073879;
margin-top: -.8vw;
}
.card-front .main-panel .signin-title {
color: #222;
}
.card-back .main-panel .signup-title {
color: #222;
}
@media (max-width: 900px) {
.auth-card {
width: 92vw;
height: auto;
}
.card-inner {
width: 200%; /* still double width but we'll stack */
}
.card-content {
flex-direction: column;
}
.side-panel {
width: 100%;
height: 200px;
}
.main-panel {
width: 100%;
overflow: visible;
}
}
.card-front[aria-hidden="true"], .card-back[aria-hidden="true"] {
pointer-events: none;
}
.side-panel.side-right {
background: linear-gradient(135deg, #1d608b 0%, #1d608b 100%);
}
.side-info-box {
position: absolute;
top: 164px;
left: 0;
width: 88%;
padding: 0 32px;
z-index: 2;
text-align: left;
}
.side-panel {
position: relative;
}
.card-front .main-panel,
.card-front .main-panel .signin-title,
.card-front .main-panel .signin-footer,
.card-front .main-panel label,
.card-front .main-panel .signin-field small,
.card-front .main-panel .signin-field label {
color: #23395d !important;
}
.card-front .main-panel .signin-field small.error {
color: #ff5252 !important;
}
.card-front .main-panel a {
color: #0b57a4 !important;
}
.signin-divider-row {
display: flex;
align-items: center;
justify-content: center;
width: 100%;
margin: 12px 018px 0;
}
.divider {
flex: 1;
height: 1px;
background: #b0b8c1;
margin: 08px;
}
.divider-or {
color: #23395d;
font-size: 1.08em;
font-weight: 600;
margin: 08px;
}
.google-btn {
width: 100%;
height: 45px;
background: #18314a;
color: #fff;
border: none;
border-radius: 8px;
padding: 14px 0;
font-size: 1.1rem;
font-weight: 700;
margin-bottom: 18px;
cursor: pointer;
box-shadow: 02px 8px #0003;
display: flex;
align-items: center;
justify-content: center;
gap: 12px;
transition: background 0.2s, color 0.2s;
}
.google-btn:hover {
background: #38bdf8;
}
.google-logo {
width: 24px;
height: 24px;
}
.side-panel.side-left {
position: relative;
overflow: hidden;
background: #1d608b; /* Strong blue for contrast */
min-height: 400px;
}
.side-img {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
object-fit: cover;
z-index: 0;
}
.side-welcome-overlay {
position: absolute;
top: 30%;
left: 50px;
width: 93%;
text-align: start;
z-index: 2;
padding: 024px;
pointer-events: auto;
}
.welcome-back-title {
font-size: 2.1rem;
font-weight: 800;
color: #fff;
margin-bottom: 8px;
}
.welcome-back-desc {
font-size: 1rem;
color: #e0f7fa;
margin-bottom: 18px;
}
.action-btn {
width: 21%;
background: #18314a;
color: #fff;
border: none;
border-radius: 8px;
padding: 14px 0;
font-size: 1.1rem;
font-weight: 700;
margin-top: 18px;
margin-bottom: 0;
display: inline-block;
letter-spacing: 0.5px;
box-shadow: 02px 8px #0003;
cursor: pointer;
transition: background 0.2s, color 0.2s;
}
.action-btn:hover {
background: #38bdf8;
color: #18314a;
}
.input-with-icon {
position: relative;
display: flex;
align-items: center;
}
.input-with-icon input {
width: 100%;
padding-right: 42px; /* space for the icon */
}
.input-with-icon .eye-toggle {
position: absolute;
right: 12px;
top: 50%;
transform: translateY(-50%);
background: none;
border: none;
font-size: 1.2em;
color: #888;
cursor: pointer;
line-height: 1;
padding: 0;
opacity: 0.8;
}
.input-with-icon .eye-toggle:hover {
opacity: 1;
color: #555;
}
.signin-field input.invalid {
border: 1px solid #ff5252;
}
.side-panel.side-left {
position: relative;
}
.side-panel.side-left::before {
content: "";
position: absolute;
inset: 0;
background: linear-gradient(205deg, rgba(5,25,46,0.85) 8%, rgba(5,25,46,0.70) 40%, rgba(5,25,46,0.35) 75%);
z-index: 1; /* sits above the image, below text card */
pointer-events: none;
}
.side-panel.side-left .side-welcome-overlay {
position: absolute;
top: 44%;
left: 10%;
z-index: 2;
background: rgba(15, 40, 70, 0.55);
backdrop-filter: blur(6px) saturate(140%);
-webkit-backdrop-filter: blur(6px) saturate(140%);
padding: 20px 24px 24px;
border-radius: 18px;
border: 1px solid rgba(255, 255, 255, 0.15);
box-shadow: 0 4px 20px -4px rgba(0, 0, 0, 0.55), 0 0 0 1px rgba(255, 255, 255, 0.05);
max-width: 429px;
width: auto;
text-align: center;
}
.side-panel.side-left .welcome-back-desc,
.side-panel.side-left .welcome-back-title {
text-shadow: 0 2px 6px rgba(0,0,0,0.6);
}
.side-panel.side-left .action-btn {
background: #38bdf8;
color: #082a47;
border: 1px solid #4fd3ff;
box-shadow: 0 0 0 1px rgba(255,255,255,0.06), 0 6px 18px -4px rgba(0,0,0,0.55);
padding: 10px 28px;
width: auto; /* shrink to content */
margin-top: 4px;
letter-spacing: 0.6px;
transition: background .25s, box-shadow .25s, transform .25s;
}
.side-panel.side-left .action-btn:hover {
background: #4fd3ff;
box-shadow: 0 0 0 1px rgba(255,255,255,0.08), 0 8px 22px -6px rgba(0,0,0,0.6);
transform: translateY(-2px);
}
.side-panel.side-left .action-btn:active {
transform: translateY(0);
}
.side-panel.side-left .action-btn:focus-visible {
outline: 2px solid #fff;
outline-offset: 3px;
}
@media (max-width: 900px) {
.side-panel.side-left .side-welcome-overlay {
left: 50%;
top: auto;
bottom: 20px;
transform: translateX(-50%);
max-width: 92%;
padding: 18px 20px 22px;
}
}
.side-panel.side-right {
position: relative;
overflow: hidden;
}
.side-panel.side-right::before {
content: "";
position: absolute;
inset: 0;
background: linear-gradient(205deg, rgba(5,25,46,0.85) 10%, rgba(5,25,46,0.70) 45%, rgba(5,25,46,0.32) 78%);
z-index: 1; /* above image, below info card */
pointer-events: none;
}
.side-panel.side-right .side-info-box {
position: absolute;
top: 38%;
left: 7%;
z-index: 2;
background: rgba(15, 40, 70, 0.55);
backdrop-filter: blur(6px) saturate(140%);
-webkit-backdrop-filter: blur(6px) saturate(140%);
padding: 20px 24px 24px;
border-radius: 18px;
border: 1px solid rgba(255, 255, 255, 0.15);
box-shadow: 0 4px 20px -4px rgba(0, 0, 0, 0.55), 0 0 0 1px rgba(255, 255, 255, 0.05);
max-width: 469px;
text-align: center;
}
.side-panel.side-right .welcome-back-title,
.side-panel.side-right .welcome-back-desc {
text-shadow: 0 2px 6px rgba(0,0,0,0.6);
}
.side-panel.side-right .action-btn {
background: #38bdf8;
color: #082a47;
border: 1px solid #4fd3ff;
box-shadow: 0 0 0 1px rgba(255,255,255,0.06), 0 6px 18px -4px rgba(0,0,0,0.55);
padding: 10px 28px;
width: auto;
margin-top: 4px;
letter-spacing: 0.6px;
transition: background .25s, box-shadow .25s, transform .25s;
}
.side-panel.side-right .action-btn:hover {
background: #4fd3ff;
box-shadow: 0 0 0 1px rgba(255,255,255,0.08), 0 8px 22px -6px rgba(0,0,0,0.6);
transform: translateY(-2px);
}
.side-panel.side-right .action-btn:active {
transform: translateY(0);
}
.side-panel.side-right .action-btn:focus-visible {
outline: 2px solid #fff;
outline-offset: 3px;
}
@media (max-width: 900px) {
.side-panel.side-right .side-info-box {
left: 50%;
top: auto;
bottom: 20px;
transform: translateX(-50%);
max-width: 92%;
padding: 18px 20px 22px;
}
}
.signin-brand-logo {
position: absolute;
top: 18px;
left: 24px;
z-index: 1200;
}
.signin-brand-logo .brand-link {
display: flex;
align-items: center;
gap: 10px;
text-decoration: none;
}
.brand-logo-img {
height: 42px;
display: block;
filter: drop-shadow(0 2px 6px rgba(0, 0, 0, 0.4));
max-width: 5vw;
height: auto;
background: #fff;
border-radius: 1vw;
margin: 0.5vw;
}
.brand-text {
font-size: 1.05rem;
font-weight: 700;
letter-spacing: 0.6px;
color: #fff;
text-shadow: 0 2px 6px rgba(0,0,0,0.6);
font-family: inherit;
}
.signin-brand-logo:hover .brand-text {
color: #4fd3ff;
}
@media (max-width:700px) {
.signin-brand-logo {
top: 10px;
left: 10px;
padding: 6px 12px 6px 8px;
}
.brand-logo-img {
width: 34px;
height: 34px;
}
.brand-text {
font-size: 0.9rem;
}
}
.signin-watermark {
text-decoration: none;
position: absolute;
bottom: 14px;
right: 22px;
font-size: 1vw;
font-weight: 600;
letter-spacing: 0.5px;
color: #ffffff;
text-shadow: 0 1px 4px rgba(0, 0, 0, 0.4);
}
@media (max-width:700px) {
.signin-watermark {
bottom: 8px;
right: 12px;
font-size: 0.65rem;
}
}
.social-icons.signin-social-icons {
position: absolute;
top: 18px;
right: 24px;
z-index: 1200;
display: flex;
gap: 18px;
}
.social-icons.signin-social-icons .social-icon {
width: 42px;
height: 42px;
display: inline-flex;
align-items: center;
justify-content: center;
border-radius: 50%;
background-color: #fff;
color: #38bdf8;
font-size: 18px;
box-shadow: 0 0 0 1px #214055, 0 4px 14px #0006;
transition: background-color 0.25s, color 0.25s, transform 0.25s, box-shadow 0.25s;
text-decoration: none;
}
.social-icons.signin-social-icons .social-icon.facebook {
color: #1877f2;
}
.social-icons.signin-social-icons .social-icon.youtube {
color: #ff0000;
}
.social-icons.signin-social-icons .social-icon.linkedin {
color: #0a66c2;
}
.social-icons.signin-social-icons .social-icon.instagram {
color: #fd5949;
}
.social-icons.signin-social-icons .social-icon.facebook:hover {
background-color: #1877f2;
color: #fff;
}
.social-icons.signin-social-icons .social-icon.youtube:hover {
background-color: #ff0000;
color: #fff;
}
.social-icons.signin-social-icons .social-icon.linkedin:hover {
background-color: #0a66c2;
color: #fff;
}
.social-icons.signin-social-icons .social-icon.instagram:hover {
background: radial-gradient(circle at 30% 110%, #fdf497 0%, #fd5949 45%, #d6249f 60%, #285aeb 90%);
color: #fff;
filter: brightness(1.15);
box-shadow: 0 6px 22px rgba(253, 89, 73, .6);
}
.social-icons.signin-social-icons .social-icon.website:hover {
background-color: #009688;
color: #fff;
transform: translateY(-4px);
box-shadow: 0 6px 20px #00968888, 0 0 0 2px #009688 inset;
}
@media (max-width:700px) {
.social-icons.signin-social-icons {
top: 10px;
right: 10px;
gap: 10px;
}
.social-icons.signin-social-icons .social-icon {
width: 28px;
height: 28px;
font-size: 1em;
}
}