:root { --surface: rgba(255, 255, 255, 0.92); --text: #1f2937; --muted: #6b7280; --line: rgba(148, 163, 184, 0.24); --primary: #0f766e; --primary-light: #14b8a6; --success: #059669; --danger: #dc2626; --shadow: 0 24px 60px rgba(15, 23, 42, 0.14); --radius-xl: 28px; --radius-lg: 20px; --radius-md: 14px; } * { box-sizing: border-box; } body { margin: 0; min-height: 100vh; font-family: "Microsoft YaHei", "PingFang SC", sans-serif; color: var(--text); background: radial-gradient(circle at top left, rgba(15, 118, 110, 0.18), transparent 28%), radial-gradient(circle at bottom right, rgba(245, 158, 11, 0.16), transparent 20%), linear-gradient(180deg, #f8fbff 0%, #eef4f8 100%); } button, input, select { font: inherit; } .hidden { display: none !important; } .auth-page { display: flex; align-items: center; justify-content: center; padding: 32px 20px; } .auth-shell { width: min(1180px, 100%); display: grid; gap: 24px; } .login-shell { grid-template-columns: 1.2fr 0.9fr; } .register-shell { grid-template-columns: 1.1fr 0.8fr; } .auth-hero, .auth-panel, .register-side-card, .topbar, .sidebar, .content-card { background: var(--surface); border: 1px solid rgba(255, 255, 255, 0.55); border-radius: var(--radius-xl); box-shadow: var(--shadow); backdrop-filter: blur(18px); } .auth-hero, .auth-panel, .register-side-card, .content-card { padding: 32px; } .auth-badge, .topbar-tag, .pill { display: inline-flex; align-items: center; padding: 8px 14px; border-radius: 999px; background: rgba(15, 118, 110, 0.12); color: #115e59; font-size: 13px; font-weight: 700; } .auth-hero h1, .register-side-card h1 { margin: 18px 0 12px; line-height: 1.08; font-size: clamp(32px, 4vw, 52px); } .auth-subtitle, .panel-head p, .register-side-card p, .notice-card li, .field span, .content-header p, .info-meta, .empty-state p { color: var(--muted); } .notice-card { margin-top: 24px; padding: 24px; border-radius: var(--radius-lg); background: linear-gradient(135deg, rgba(15, 118, 110, 0.08), rgba(255, 255, 255, 0.85)); border: 1px solid rgba(15, 118, 110, 0.14); } .notice-card h2, .panel-head h2, .content-header h2 { margin: 0 0 10px; } .notice-card ul { margin: 0; padding-left: 18px; display: grid; gap: 10px; } .panel-head { margin-bottom: 24px; } .form-grid { display: grid; gap: 18px; } .single-column { grid-template-columns: 1fr; } .two-columns { grid-template-columns: repeat(2, minmax(0, 1fr)); } .field { display: grid; gap: 10px; } .field span { font-size: 14px; font-weight: 700; } .field input, .field select { width: 100%; border: 1px solid var(--line); background: rgba(255, 255, 255, 0.95); border-radius: 16px; padding: 10px 16px; outline: none; } /* 下拉列表通用样式 */ select { appearance: none; -webkit-appearance: none; -moz-appearance: none; background-image: url('data:image/svg+xml;charset=US-ASCII,'); background-repeat: no-repeat; background-position: right 16px center; background-size: 16px; } /* 学院下拉列表选项样式 */ select[name="college"] option { padding: 6px 16px; line-height: 1.3; } /* 学院下拉列表占位符样式 */ select[name="college"] option[value=""] { color: var(--muted); display: none; } /* 未选择时显示占位符颜色 */ select[name="college"]:invalid { color: var(--muted); } /* 选择后显示正常颜色 */ select[name="college"]:valid { color: var(--text); } .form-actions { display: flex; gap: 14px; align-items: center; } .form-actions.stacked { flex-direction: column; } .full-row { grid-column: 1 / -1; } .primary-btn, .ghost-btn, .nav-item, .tab-item, .action-btn { border: none; cursor: pointer; transition: transform 0.2s ease, background 0.2s ease; } .primary-btn, .ghost-btn { min-height: 48px; padding: 0 22px; border-radius: 16px; font-weight: 700; } .primary-btn { background: linear-gradient(135deg, var(--primary), var(--primary-light)); color: #fff; } .ghost-btn { background: rgba(255, 255, 255, 0.8); color: var(--text); border: 1px solid var(--line); } .small { min-height: 40px; padding: 0 16px; } .form-message { min-height: 22px; margin: 0; font-size: 14px; } .form-message.success { color: var(--success); } .form-message.error { color: var(--danger); } .app-body { padding: 24px; } .app-layout { display: grid; gap: 18px; } .topbar { padding: 22px 28px; display: flex; justify-content: space-between; align-items: center; } .topbar h1 { margin: 10px 0 0; font-size: 30px; } .topbar-user { display: flex; align-items: center; gap: 12px; font-weight: 700; } .main-layout { display: grid; grid-template-columns: 220px 1fr; gap: 18px; } .sidebar { padding: 18px; display: grid; gap: 10px; align-content: start; } .nav-item { width: 100%; text-align: left; padding: 16px 18px; border-radius: 18px; background: transparent; color: var(--text); font-weight: 700; } .nav-item.active, .tab-item.active { background: linear-gradient(135deg, rgba(15, 118, 110, 0.14), rgba(20, 184, 166, 0.24)); color: #115e59; } .content-area { display: grid; gap: 18px; } .content-header, .section-head { display: flex; justify-content: space-between; align-items: center; } .content-tabs { display: flex; gap: 10px; } .tab-item { min-width: 110px; padding: 12px 18px; border-radius: 14px; background: rgba(255, 255, 255, 0.72); font-weight: 700; } .profile-grid, .summary-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; } .summary-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); margin-bottom: 22px; } .info-card, .summary-card { padding: 18px; border-radius: 20px; background: rgba(248, 250, 252, 0.96); border: 1px solid rgba(226, 232, 240, 0.9); } .summary-card strong, .info-card strong { display: block; margin-bottom: 8px; } .summary-card p, .info-card p { margin: 0; font-size: 16px; } .section-block+.section-block { margin-top: 28px; } .section-head { margin-bottom: 18px; } .event-table { width: 100%; border-collapse: collapse; border-radius: 18px; overflow: hidden; background: rgba(255, 255, 255, 0.86); } .event-table th, .event-table td { padding: 15px 14px; text-align: left; border-bottom: 1px solid rgba(226, 232, 240, 0.9); font-size: 14px; } .event-table th:last-child, .event-table td:last-child { text-align: center; } .event-table th { background: rgba(15, 118, 110, 0.08); color: #115e59; } .event-table tr:last-child td { border-bottom: none; } .action-btn { padding: 10px 16px; border-radius: 12px; background: linear-gradient(135deg, var(--primary), var(--primary-light)); color: #fff; font-weight: 700; } .action-btn[disabled] { background: rgba(148, 163, 184, 0.6); cursor: not-allowed; } .empty-state { padding: 32px 20px; text-align: center; border-radius: 22px; background: rgba(248, 250, 252, 0.86); border: 1px dashed rgba(148, 163, 184, 0.45); } /* 分页样式 */ .pagination { display: flex; justify-content: center; align-items: center; gap: 8px; margin-top: 20px; flex-wrap: wrap; } .page-btn { min-width: 36px; height: 36px; padding: 0 12px; border: 1px solid var(--line); border-radius: 8px; background: rgba(255, 255, 255, 0.95); color: var(--text); font-size: 14px; font-weight: 600; cursor: pointer; transition: all 0.2s ease; } .page-btn:hover:not(:disabled) { background: rgba(15, 118, 110, 0.08); border-color: var(--primary); } .page-btn.active { background: linear-gradient(135deg, var(--primary), var(--primary-light)); color: #fff; border-color: transparent; } .page-btn:disabled { opacity: 0.5; cursor: not-allowed; } .page-info { text-align: center; margin-top: 12px; font-size: 14px; color: var(--muted); } @media (max-width: 960px) { .login-shell, .register-shell, .main-layout, .profile-grid, .summary-grid, .two-columns { grid-template-columns: 1fr; } .topbar, .content-header, .section-head { flex-direction: column; align-items: flex-start; gap: 14px; } } @media (max-width: 640px) { body, .app-body { padding: 14px; } .form-actions { flex-direction: column; align-items: stretch; } .event-table { display: block; overflow-x: auto; } }