* { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; background: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 100%); min-height: 100vh; display: flex; align-items: center; justify-content: center; padding: 20px; } .login-container { background: white; border-radius: 20px; box-shadow: 0 20px 40px rgba(107, 70, 193, 0.1); overflow: hidden; width: 100%; max-width: 900px; min-height: 600px; display: grid; grid-template-columns: 1fr 1fr; position: relative; } .login-left { background: linear-gradient(135deg, #6B46C1 0%, #8B5CF6 100%); display: flex; flex-direction: column; justify-content: center; align-items: center; color: white; padding: 40px; position: relative; overflow: hidden; } .login-left::before { content: ''; position: absolute; top: -50%; left: -50%; width: 200%; height: 200%; background: repeating-linear-gradient( 45deg, transparent, transparent 35px, rgba(255,255,255,0.05) 35px, rgba(255,255,255,0.05) 70px ); animation: float 20s linear infinite; } @keyframes float { 0% { transform: translate(-50%, -50%) rotate(0deg); } 100% { transform: translate(-50%, -50%) rotate(360deg); } } .logo { font-size: 2.5rem; font-weight: 700; margin-bottom: 1rem; z-index: 2; text-shadow: 0 4px 8px rgba(0,0,0,0.2); } .welcome-text { font-size: 1.2rem; text-align: center; opacity: 0.9; z-index: 2; line-height: 1.6; } .login-right { padding: 60px 40px; display: flex; flex-direction: column; justify-content: center; } .login-form h2 { color: #1e293b; font-size: 2rem; margin-bottom: 0.5rem; font-weight: 600; } .login-form p { color: #64748b; margin-bottom: 2rem; font-size: 1rem; } .form-group { margin-bottom: 1.5rem; } .form-group label { display: block; margin-bottom: 0.5rem; color: #374151; font-weight: 500; font-size: 0.9rem; } .form-input { width: 100%; padding: 12px 16px; border: 2px solid #e5e7eb; border-radius: 12px; font-size: 1rem; transition: all 0.3s ease; background: #fafafa; } .form-input:focus { outline: none; border-color: #6B46C1; background: white; box-shadow: 0 0 0 3px rgba(107, 70, 193, 0.1); } .login-btn { width: 100%; padding: 14px; background: linear-gradient(135deg, #6B46C1 0%, #8B5CF6 100%); color: white; border: none; border-radius: 12px; font-size: 1rem; font-weight: 600; cursor: pointer; transition: all 0.3s ease; margin-top: 1rem; } .login-btn:hover { transform: translateY(-2px); box-shadow: 0 10px 20px rgba(107, 70, 193, 0.3); } .login-btn:active { transform: translateY(0); } .error-message { background: #fef2f2; color: #dc2626; padding: 12px 16px; border-radius: 8px; margin-bottom: 1rem; border-left: 4px solid #dc2626; font-size: 0.9rem; display: none; } /* Responsive Design untuk Desktop/Laptop saja */ @media (min-width: 769px) and (max-width: 1024px) { .login-container { max-width: 800px; } .login-right { padding: 50px 35px; } .login-left { padding: 35px; } } @media (min-width: 1025px) { .login-container { max-width: 900px; } } /* Tablet landscape - tetap 2 kolom */ @media (min-width: 768px) and (max-width: 1024px) and (orientation: landscape) { .login-container { max-width: 850px; min-height: 500px; } .logo { font-size: 2.2rem; } .welcome-text { font-size: 1.1rem; } } /* Untuk input-with-icon (khusus Flexbox) */ .input-with-icon { position: relative; display: flex; /* Aktifkan flexbox */ align-items: center; /* Pusatkan item secara vertikal */ width: 100%; } .input-with-icon .form-input { flex-grow: 1; /* Input mengambil sisa ruang */ /* Hapus padding-right dari sini jika sudah dipindah ke .input-with-icon */ padding-right: 45px; /* Tetap pertahankan ruang untuk ikon */ } /* Perubahan pada .toggle-password jika pakai Flexbox */ .toggle-password { position: absolute; /* Tetap absolute untuk penempatan di dalam input-with-icon */ right: 15px; /* Jarak dari kanan input */ /* Hapus top dan transform karena Flexbox sudah memusatkan */ cursor: pointer; color: #64748b; font-size: 1.1rem; transition: color 0.3s ease; z-index: 2; padding: 5px; }