/* 全局样式 */ :root { --primary-color: #4285f4; --primary-dark: #3367d6; --secondary-color: #34a853; --secondary-dark: #2e7d32; --danger-color: #ea4335; --danger-dark: #c62828; --warning-color: #fbbc05; --warning-dark: #f57f17; --success-color: #34a853; --success-dark: #2e7d32; --text-color: #202124; --text-secondary: #5f6368; --background-color: #f8f9fa; --card-background: #ffffff; --border-color: #dadce0; --shadow-color: rgba(60, 64, 67, 0.1); --animation-duration: 0.3s; } * { box-sizing: border-box; margin: 0; padding: 0; } body { font-family: 'Roboto', 'Segoe UI', Arial, sans-serif; background-color: var(--background-color); color: var(--text-color); line-height: 1.6; margin: 0; padding: 0; min-height: 100vh; display: flex; flex-direction: column; transition: background-color var(--animation-duration) ease; } .container { width: 100%; max-width: 1200px; margin: 0 auto; padding: 2rem; } .card { background-color: var(--card-background); border-radius: 8px; box-shadow: 0 4px 20px var(--shadow-color); padding: 2rem; margin-bottom: 2rem; transition: transform var(--animation-duration) ease, box-shadow var(--animation-duration) ease; } .card:hover { transform: translateY(-5px); box-shadow: 0 8px 30px rgba(60, 64, 67, 0.2); } .login-container { max-width: 450px; margin: 5rem auto; animation: fadeIn 0.5s ease-in-out; } .admin-container { max-width: 1000px; margin: 2rem auto; animation: fadeIn 0.5s ease-in-out; } /* 标题样式 */ h1, h2, h3, h4, h5, h6 { color: var(--text-color); margin-bottom: 1.5rem; font-weight: 500; } h1 { font-size: 2.2rem; text-align: center; margin-bottom: 2rem; } h2 { font-size: 1.8rem; margin-top: 0; margin-bottom: 1.5rem; } /* 表单样式 */ .form-group { margin-bottom: 1.5rem; } label { display: block; margin-bottom: 0.5rem; font-weight: 500; color: var(--text-secondary); font-size: 0.95rem; } input[type="text"], input[type="password"], input[type="email"] { width: 100%; padding: 0.75rem 1rem; border: 1px solid var(--border-color); border-radius: 4px; font-size: 1rem; transition: border-color var(--animation-duration) ease, box-shadow var(--animation-duration) ease; } input[type="text"]:focus, input[type="password"]:focus, input[type="email"]:focus { outline: none; border-color: var(--primary-color); box-shadow: 0 0 0 2px rgba(66, 133, 244, 0.2); } /* 按钮样式 */ .btn { display: inline-block; background-color: var(--primary-color); color: white; border: none; padding: 0.75rem 1.5rem; border-radius: 4px; font-size: 1rem; font-weight: 500; cursor: pointer; transition: background-color var(--animation-duration) ease, transform var(--animation-duration) ease, box-shadow var(--animation-duration) ease; text-align: center; text-decoration: none; } .btn:hover { background-color: var(--primary-dark); box-shadow: 0 2px 10px rgba(66, 133, 244, 0.3); transform: translateY(-2px); } .btn:active { transform: translateY(0); } .btn-block { display: block; width: 100%; } .btn-success { background-color: var(--success-color); } .btn-success:hover { background-color: var(--success-dark); box-shadow: 0 2px 10px rgba(52, 168, 83, 0.3); } .btn-danger { background-color: var(--danger-color); } .btn-danger:hover { background-color: var(--danger-dark); box-shadow: 0 2px 10px rgba(234, 67, 53, 0.3); } .btn-warning { background-color: var(--warning-color); color: var(--text-color); } .btn-warning:hover { background-color: var(--warning-dark); box-shadow: 0 2px 10px rgba(251, 188, 5, 0.3); } /* 表格样式 */ table { width: 100%; border-collapse: collapse; margin-bottom: 2rem; box-shadow: 0 2px 10px var(--shadow-color); border-radius: 8px; overflow: hidden; } th, td { padding: 1rem; text-align: left; border-bottom: 1px solid var(--border-color); } th { background-color: rgba(66, 133, 244, 0.1); font-weight: 500; color: var(--text-color); } tr:last-child td { border-bottom: none; } tr:hover { background-color: rgba(66, 133, 244, 0.05); } /* 消息样式 */ .alert { padding: 1rem; border-radius: 4px; margin-bottom: 1.5rem; animation: slideDown 0.3s ease-in-out; } .alert-success { background-color: rgba(52, 168, 83, 0.1); border-left: 4px solid var(--success-color); color: var(--success-dark); } .alert-error { background-color: rgba(234, 67, 53, 0.1); border-left: 4px solid var(--danger-color); color: var(--danger-dark); } .alert-warning { background-color: rgba(251, 188, 5, 0.1); border-left: 4px solid var(--warning-color); color: var(--warning-dark); } .alert-info { background-color: rgba(66, 133, 244, 0.1); border-left: 4px solid var(--primary-color); color: var(--primary-dark); } /* 令牌显示框 */ .token-box { background-color: rgba(66, 133, 244, 0.05); border: 1px dashed var(--border-color); border-radius: 4px; padding: 1rem; font-family: 'Courier New', monospace; margin: 1rem 0; word-break: break-all; position: relative; transition: background-color var(--animation-duration) ease; } .token-box:hover { background-color: rgba(66, 133, 244, 0.1); } /* 卡片部分 */ .card-section { background-color: rgba(66, 133, 244, 0.03); border-radius: 8px; padding: 1.5rem; margin-bottom: 2rem; border: 1px solid var(--border-color); transition: transform var(--animation-duration) ease, box-shadow var(--animation-duration) ease; } .card-section:hover { box-shadow: 0 4px 15px var(--shadow-color); transform: translateY(-3px); } .card-section h2 { margin-top: 0; color: var(--primary-color); font-size: 1.5rem; margin-bottom: 1rem; } /* 链接样式 */ .link { color: var(--primary-color); text-decoration: none; transition: color var(--animation-duration) ease; } .link:hover { color: var(--primary-dark); text-decoration: underline; } .links-container { margin-top: 1.5rem; text-align: center; } /* 动画 */ @keyframes fadeIn { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } @keyframes slideDown { from { opacity: 0; transform: translateY(-10px); } to { opacity: 1; transform: translateY(0); } } @keyframes pulse { 0% { box-shadow: 0 0 0 0 rgba(66, 133, 244, 0.4); } 70% { box-shadow: 0 0 0 10px rgba(66, 133, 244, 0); } 100% { box-shadow: 0 0 0 0 rgba(66, 133, 244, 0); } } /* 响应式设计 */ @media (max-width: 768px) { .container { padding: 1rem; } .card { padding: 1.5rem; } h1 { font-size: 1.8rem; } h2 { font-size: 1.5rem; } }