@import url("https://fonts.googleapis.com/css2?family=Outfit:wght@400;500;600;700;800&family=JetBrains+Mono:wght@500;700&display=swap"); *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } body { font-family: "Outfit", sans-serif; min-height: 100vh; width: 100vw; overflow: hidden; background: #eee8f4; } body::before { content: ""; position: fixed; inset: 0; background-image: radial-gradient( circle, rgba(120, 80, 180, 0.08) 1px, transparent 1px ); background-size: 24px 24px; pointer-events: none; z-index: 0; } /* ── WRAPPER ── */ .page-wrap { min-height: 100vh; display: flex; align-items: stretch; position: relative; z-index: 1; } /* ── LEFT PANEL ── */ .left-panel { flex: 1; display: flex; flex-direction: column; justify-content: center; align-items: flex-start; padding: 60px 56px; color: white; position: relative; overflow: hidden; background: linear-gradient(155deg, #1a5fd4 0%, #1e3fa8 55%, #162d82 100%); } .left-panel::before { content: ""; position: absolute; width: 420px; height: 420px; border-radius: 50%; background: radial-gradient( circle, rgba(100, 180, 255, 0.18) 0%, transparent 65% ); top: -120px; right: -100px; pointer-events: none; } .left-panel::after { content: ""; position: absolute; width: 320px; height: 320px; border-radius: 50%; border: 1.5px solid rgba(255, 255, 255, 0.07); bottom: -80px; left: -60px; pointer-events: none; } .left-accent { position: absolute; inset: 0; background-image: repeating-linear-gradient( -55deg, transparent, transparent 40px, rgba(255, 255, 255, 0.015) 40px, rgba(255, 255, 255, 0.015) 80px ); pointer-events: none; } .school-logo { width: 68px; height: 68px; border-radius: 18px; background: rgba(255, 255, 255, 0.12); border: 1.5px solid rgba(255, 255, 255, 0.2); display: flex; align-items: center; justify-content: center; margin-bottom: 36px; position: relative; } .school-logo img { width: 48px; height: 48px; object-fit: contain; filter: brightness(0) invert(1); } .left-tag { font-family: "JetBrains Mono", monospace; font-size: 10px; font-weight: 700; letter-spacing: 2.5px; text-transform: uppercase; color: rgba(255, 255, 255, 0.45); margin-bottom: 12px; position: relative; } .left-title { font-size: clamp(26px, 3vw, 40px); font-weight: 800; line-height: 1.15; margin-bottom: 14px; letter-spacing: -0.5px; position: relative; } .left-title em { font-style: normal; position: relative; } .left-title em::after { content: ""; position: absolute; left: 0; right: 0; bottom: 1px; height: 3px; border-radius: 99px; background: #a5d8ff; opacity: 0.55; } .left-school { font-size: 13px; color: rgba(255, 255, 255, 0.42); font-weight: 500; margin-bottom: 20px; position: relative; } .left-desc { font-size: 14px; color: rgba(255, 255, 255, 0.6); line-height: 1.75; max-width: 320px; margin-bottom: 40px; position: relative; } .stats-row { display: flex; gap: 12px; position: relative; } .stat-item { background: rgba(255, 255, 255, 0.08); border: 1px solid rgba(255, 255, 255, 0.12); border-radius: 14px; padding: 14px 18px; } .stat-num { font-family: "JetBrains Mono", monospace; font-size: 20px; font-weight: 700; color: white; line-height: 1; } .stat-label { font-size: 10px; color: rgba(255, 255, 255, 0.45); margin-top: 5px; font-weight: 500; letter-spacing: 0.3px; } /* ── RIGHT PANEL ── */ .right-panel { width: 420px; flex-shrink: 0; background: #eee8f4; display: flex; align-items: center; justify-content: center; padding: 48px 44px; } /* ── FORM CARD ── */ .form-card { width: 100%; background: white; border-radius: 24px; padding: 36px 36px 32px; box-shadow: 0 4px 6px rgba(100, 60, 180, 0.04), 0 20px 40px rgba(100, 60, 180, 0.1), 0 0 0 1px rgba(100, 60, 180, 0.06); } .role-badge { display: inline-flex; align-items: center; gap: 7px; background: #ede9fb; border-radius: 99px; padding: 5px 13px; font-size: 10px; font-weight: 700; color: #5b3fc0; letter-spacing: 1.5px; text-transform: uppercase; font-family: "JetBrains Mono", monospace; margin-bottom: 18px; } .badge-dot { width: 6px; height: 6px; border-radius: 50%; background: #7c5cbf; } .form-title { font-size: 22px; font-weight: 800; color: #1a1a2e; margin-bottom: 3px; letter-spacing: -0.3px; } .form-sub { font-size: 13px; color: #9ba3b8; margin-bottom: 24px; font-weight: 500; } .field-group { margin-bottom: 12px; } .field-label { display: block; font-size: 11px; font-weight: 700; color: #4a5568; letter-spacing: 0.5px; text-transform: uppercase; margin-bottom: 6px; } .field-wrap { position: relative; display: flex; align-items: center; } .field-icon { position: absolute; left: 13px; width: 15px; height: 15px; opacity: 0.3; pointer-events: none; } .field-input { width: 100%; background: #f7f5fc; border: 1.5px solid #e8e2f5; border-radius: 11px; padding: 11px 13px 11px 38px; font-size: 14px; font-family: "Outfit", sans-serif; font-weight: 500; color: #1a1a2e; outline: none; transition: all 0.2s; } .field-input::placeholder { color: #bbb5cc; font-weight: 400; } .field-input:focus { border-color: #7c5cbf; background: white; box-shadow: 0 0 0 3px rgba(124, 92, 191, 0.1); } .toggle-password { position: absolute; right: 11px; background: none; border: none; cursor: pointer; padding: 4px; border-radius: 6px; display: flex; align-items: center; } .eye-icon { width: 16px; height: 16px; opacity: 0.3; pointer-events: none; transition: opacity 0.2s; } .toggle-password:hover .eye-icon { opacity: 0.6; } .remember-row { display: flex; align-items: center; margin: 8px 0 18px; gap: 8px; } .remember-check { appearance: none; -webkit-appearance: none; width: 16px; height: 16px; border: 1.5px solid #d4cce8; border-radius: 5px; cursor: pointer; transition: all 0.2s; position: relative; flex-shrink: 0; } .remember-check:checked { background: #7c5cbf; border-color: #7c5cbf; } .remember-check:checked::after { content: ""; position: absolute; left: 3px; top: 0; width: 5px; height: 9px; border: 1.5px solid white; border-top: none; border-left: none; transform: rotate(45deg); } .remember-text { font-size: 13px; color: #6b7280; font-weight: 500; cursor: pointer; user-select: none; } .submit-btn { width: 100%; background: linear-gradient(135deg, #1e6fd4, #1a3fa8); color: white; border: none; border-radius: 11px; padding: 13px; font-size: 14px; font-weight: 700; font-family: "Outfit", sans-serif; cursor: pointer; transition: all 0.25s; box-shadow: 0 6px 18px rgba(30, 63, 168, 0.3); letter-spacing: 0.3px; } .submit-btn:hover { transform: translateY(-2px); box-shadow: 0 10px 26px rgba(30, 63, 168, 0.4); } .submit-btn:active { transform: translateY(0); } .card-divider { border: none; border-top: 1px solid #f0ebfa; margin: 18px 0 14px; } .other-portals { text-align: center; font-size: 12px; color: #9ba3b8; display: flex; align-items: center; justify-content: center; gap: 6px; } .other-portals a { color: #5b3fc0; font-weight: 700; text-decoration: none; padding: 3px 8px; border-radius: 6px; transition: background 0.2s; } .other-portals a:hover { background: #ede9fb; } .back-link { display: block; text-align: center; color: rgba(80, 60, 140, 0.45); font-size: 12px; text-decoration: none; margin-top: 16px; transition: color 0.2s; font-weight: 500; } .back-link:hover { color: rgba(80, 60, 140, 0.75); } .toast-error { background: linear-gradient(135deg, #ff6b6b, #d32f2f); color: white; padding: 10px 14px; border-radius: 10px; font-size: 13px; font-weight: 500; text-align: center; margin-bottom: 14px; box-shadow: 0 4px 12px rgba(211, 47, 47, 0.2); animation: toastIn 0.3s ease both, toastOut 0.4s ease 3.5s forwards; } @keyframes toastIn { from { opacity: 0; transform: translateY(-8px); } to { opacity: 1; transform: translateY(0); } } @keyframes toastOut { from { opacity: 1; transform: translateY(0); } to { opacity: 0; transform: translateY(-8px); } } @media (max-width: 860px) { .page-wrap { flex-direction: column; } body { overflow: auto; } .left-panel { padding: 40px 32px 32px; min-height: auto; } .right-panel { width: 100%; padding: 32px 24px 48px; } .stats-row { display: none; } }