| {% extends "base.html" %} | |
| {% block title %}管理员登录 - Wisdom Hub{% endblock %} | |
| {% block content %} | |
| <div class="login-container" style=" | |
| min-height: calc(100vh - 8rem); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| padding: 2rem; | |
| background: linear-gradient(135deg, #FEEEDA 0%, #B3CFEF 100%); | |
| "> | |
| <div class="login-form" style=" | |
| width: 100%; | |
| max-width: 420px; | |
| background: linear-gradient(135deg, rgba(255, 255, 255, 0.9), rgba(255, 255, 255, 0.8)); | |
| backdrop-filter: blur(10px); | |
| padding: 3rem; | |
| border-radius: 24px; | |
| box-shadow: 0 8px 32px rgba(99, 145, 197, 0.15); | |
| border: 1px solid rgba(99, 145, 197, 0.2); | |
| "> | |
| <div class="form-header" style=" | |
| text-align: center; | |
| margin-bottom: 2.5rem; | |
| "> | |
| <div class="logo-container" style=" | |
| margin-bottom: 1.5rem; | |
| "> | |
| <i class="fas fa-feather" style=" | |
| font-size: 3rem; | |
| background: linear-gradient(135deg, #6391C5, #C5CDFD); | |
| -webkit-background-clip: text; | |
| -webkit-text-fill-color: transparent; | |
| "></i> | |
| </div> | |
| <h2 style=" | |
| font-size: 1.75rem; | |
| font-weight: 600; | |
| color: #6391C5; | |
| margin-bottom: 0.5rem; | |
| ">管理员登录</h2> | |
| <p style=" | |
| color: #6391C5; | |
| font-size: 0.9375rem; | |
| ">请输入您的管理员账号密码</p> | |
| </div> | |
| <form method="POST" style="display: flex; flex-direction: column; gap: 1.5rem;"> | |
| {% with messages = get_flashed_messages() %} | |
| {% if messages %} | |
| <div style=" | |
| background: rgba(99, 145, 197, 0.1); | |
| border: 1px solid #B3CFEF; | |
| padding: 1rem; | |
| border-radius: 12px; | |
| color: #6391C5; | |
| font-size: 0.875rem; | |
| text-align: center; | |
| "> | |
| {{ messages[0] }} | |
| </div> | |
| {% endif %} | |
| {% endwith %} | |
| <div class="form-group" style="position: relative;"> | |
| <div style=" | |
| position: absolute; | |
| left: 1rem; | |
| top: 50%; | |
| transform: translateY(-50%); | |
| color: #6391C5; | |
| "> | |
| <i class="fas fa-user"></i> | |
| </div> | |
| <input type="text" name="username" placeholder="用户名" required style=" | |
| width: 100%; | |
| padding: 1rem 1rem 1rem 2.75rem; | |
| border: 2px solid #B3CFEF; | |
| border-radius: 12px; | |
| font-size: 1rem; | |
| transition: all 0.3s ease; | |
| color: #6391C5; | |
| background: rgba(255, 255, 255, 0.7); | |
| "> | |
| </div> | |
| <div class="form-group" style="position: relative;"> | |
| <div style=" | |
| position: absolute; | |
| left: 1rem; | |
| top: 50%; | |
| transform: translateY(-50%); | |
| color: #6391C5; | |
| "> | |
| <i class="fas fa-lock"></i> | |
| </div> | |
| <input type="password" name="password" placeholder="密码" required style=" | |
| width: 100%; | |
| padding: 1rem 1rem 1rem 2.75rem; | |
| border: 2px solid #B3CFEF; | |
| border-radius: 12px; | |
| font-size: 1rem; | |
| transition: all 0.3s ease; | |
| color: #6391C5; | |
| background: rgba(255, 255, 255, 0.7); | |
| "> | |
| </div> | |
| <button type="submit" style=" | |
| width: 100%; | |
| padding: 1rem; | |
| background: linear-gradient(135deg, #6391C5, #C5CDFD); | |
| color: white; | |
| border: none; | |
| border-radius: 12px; | |
| font-size: 1rem; | |
| font-weight: 500; | |
| cursor: pointer; | |
| transition: all 0.3s ease; | |
| margin-top: 1rem; | |
| ">登录</button> | |
| <div style=" | |
| text-align: center; | |
| margin-top: 1.5rem; | |
| font-size: 0.875rem; | |
| "> | |
| <a href="{{ url_for('main.index') }}" style=" | |
| color: #6391C5; | |
| text-decoration: none; | |
| transition: color 0.3s ease; | |
| "> | |
| <i class="fas fa-arrow-left" style="margin-right: 0.5rem;"></i>返回首页 | |
| </a> | |
| </div> | |
| </form> | |
| </div> | |
| </div> | |
| <script> | |
| document.querySelectorAll('input').forEach(input => { | |
| input.addEventListener('focus', () => { | |
| input.style.borderColor = '#6391C5'; | |
| input.style.background = 'rgba(255, 255, 255, 0.9)'; | |
| input.style.boxShadow = '0 0 0 4px rgba(99, 145, 197, 0.1)'; | |
| }); | |
| input.addEventListener('blur', () => { | |
| input.style.borderColor = '#B3CFEF'; | |
| input.style.background = 'rgba(255, 255, 255, 0.7)'; | |
| input.style.boxShadow = 'none'; | |
| }); | |
| }); | |
| document.querySelector('button[type="submit"]').addEventListener('mouseenter', function() { | |
| this.style.transform = 'translateY(-2px)'; | |
| this.style.boxShadow = '0 4px 12px rgba(99, 145, 197, 0.2)'; | |
| }); | |
| document.querySelector('button[type="submit"]').addEventListener('mouseleave', function() { | |
| this.style.transform = 'none'; | |
| this.style.boxShadow = 'none'; | |
| }); | |
| document.querySelector('a').addEventListener('mouseenter', function() { | |
| this.style.color = '#C5CDFD'; | |
| }); | |
| document.querySelector('a').addEventListener('mouseleave', function() { | |
| this.style.color = '#6391C5'; | |
| }); | |
| </script> | |
| {% endblock %} |