/* 🧠 뇌사료 | Premium Login Styles (v4.1) */ :root { --bg: #0b0f1a; --card: rgba(22, 30, 46, 0.6); --text: #f8fafc; --muted: #94a3b8; --accent: #38bdf8; --accent-hover: #0ea5e9; --ai-accent: #a855f7; --font: 'Inter', sans-serif; } * { box-sizing: border-box; margin: 0; padding: 0; font-family: var(--font); } body { background-color: var(--bg); background-image: radial-gradient(circle at 20% 30%, rgba(56, 189, 248, 0.1), transparent 40%), radial-gradient(circle at 80% 70%, rgba(168, 85, 247, 0.1), transparent 40%); color: var(--text); height: 100vh; display: flex; justify-content: center; align-items: center; overflow: hidden; } .login-container { perspective: 1000px; width: 100%; max-width: 440px; padding: 20px; } .login-card { background: var(--card); backdrop-filter: blur(25px); -webkit-backdrop-filter: blur(25px); border: 1px solid rgba(255, 255, 255, 0.1); border-radius: 32px; padding: 60px 45px; box-shadow: 0 50px 100px -20px rgba(0, 0, 0, 0.6); text-align: center; position: relative; overflow: hidden; animation: cardEntrance 0.8s cubic-bezier(0.2, 0.8, 0.2, 1); } @keyframes cardEntrance { from { opacity: 0; transform: translateY(40px) scale(0.95); } to { opacity: 1; transform: translateY(0) scale(1); } } .login-card::before { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 6px; background: linear-gradient(90deg, var(--accent), var(--ai-accent)); } .logo-area { margin-bottom: 40px; } .logo { font-size: 3rem; font-weight: 800; margin-bottom: 12px; background: linear-gradient(135deg, #38bdf8, #a855f7); -webkit-background-clip: text; -webkit-text-fill-color: transparent; display: inline-block; } .tagline { font-size: 0.95rem; color: var(--muted); font-weight: 400; } /* Form Styling */ .input-group { margin-bottom: 24px; text-align: left; position: relative; } .input-group label { display: block; margin-bottom: 8px; font-size: 0.85rem; color: var(--muted); font-weight: 600; margin-left: 4px; } .input-wrapper { position: relative; display: flex; align-items: center; } .input-wrapper input { width: 100%; background: rgba(0, 0, 0, 0.4); border: 1px solid rgba(255, 255, 255, 0.08); border-radius: 16px; padding: 16px 20px; color: white; outline: none; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); font-size: 1rem; } .input-wrapper input:focus { background: rgba(0, 0, 0, 0.6); border-color: var(--accent); box-shadow: 0 0 20px rgba(56, 189, 248, 0.1); } /* Button & Actions */ .login-btn { width: 100%; background: linear-gradient(135deg, var(--accent), #0ea5e9); color: #0f172a; border: none; border-radius: 16px; padding: 18px; font-size: 1.1rem; font-weight: 800; cursor: pointer; transition: all 0.3s ease; margin-top: 15px; box-shadow: 0 10px 25px -5px rgba(56, 189, 248, 0.4); } .login-btn:hover { transform: translateY(-3px); background: linear-gradient(135deg, #7dd3fc, var(--accent-hover)); box-shadow: 0 15px 30px -5px rgba(56, 189, 248, 0.6); } .login-btn:active { transform: translateY(-1px); } .error-msg { color: #f87171; font-size: 0.85rem; margin-top: 20px; background: rgba(248, 113, 113, 0.1); padding: 10px; border-radius: 8px; display: none; animation: shake 0.4s; } @keyframes shake { 0%, 100% { transform: translateX(0); } 25% { transform: translateX(-5px); } 75% { transform: translateX(5px); } } .login-card-footer { margin-top: 40px; padding-top: 20px; border-top: 1px solid rgba(255, 255, 255, 0.05); font-size: 0.8rem; color: rgba(148, 163, 184, 0.5); }