* { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Microsoft YaHei', Arial, sans-serif; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); min-height: 100vh; padding: 20px; } .container { max-width: 800px; margin: 0 auto; background: white; border-radius: 10px; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2); overflow: hidden; } header { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; padding: 20px; text-align: center; } header h1 { font-size: 24px; } main { padding: 20px; } .section { margin-bottom: 30px; } .section h2 { color: #333; margin-bottom: 20px; padding-bottom: 10px; border-bottom: 2px solid #667eea; } .form-group { margin-bottom: 15px; } .form-group label { display: block; margin-bottom: 5px; color: #555; font-weight: bold; } .form-group input, .form-group textarea, .form-control { width: 100%; padding: 10px; border: 1px solid #ddd; border-radius: 5px; font-size: 14px; } .form-group textarea { resize: vertical; } .btn { padding: 10px 20px; border: none; border-radius: 5px; cursor: pointer; font-size: 14px; font-weight: bold; transition: all 0.3s; } .btn-primary { background: #667eea; color: white; } .btn-primary:hover { background: #5568d3; } .btn-secondary { background: #95a5a6; color: white; } .btn-secondary:hover { background: #7f8c8d; } .btn-danger { background: #e74c3c; color: white; } .btn-danger:hover { background: #c0392b; } .btn-success { background: #27ae60; color: white; } .btn-success:hover { background: #229954; } .card { background: #f9f9f9; border: 1px solid #ddd; border-radius: 5px; padding: 20px; margin-bottom: 20px; } .card h3 { color: #333; margin-bottom: 15px; } .panel-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px; } .divider { text-align: center; margin: 20px 0; position: relative; } .divider::before, .divider::after { content: ''; position: absolute; top: 50%; width: 45%; height: 1px; background: #ddd; } .divider::before { left: 0; } .divider::after { right: 0; } .divider span { background: white; padding: 0 10px; color: #999; } .qr-scanner { text-align: center; } /* 进度条 */ .progress-container { margin: 20px 0; } .progress-info { text-align: center; margin-bottom: 10px; color: #555; } .progress-bar { width: 100%; height: 30px; background: #ecf0f1; border-radius: 15px; overflow: hidden; } .progress-fill { height: 100%; background: linear-gradient(90deg, #667eea, #764ba2); width: 0%; transition: width 0.3s; display: flex; align-items: center; justify-content: center; color: white; font-weight: bold; } /* 名单列表 */ .member-list { margin: 20px 0; } .member-item { display: flex; justify-content: space-between; align-items: center; padding: 10px; margin: 5px 0; background: #f9f9f9; border-radius: 5px; border-left: 4px solid #667eea; } .member-item.completed { background: #d4edda; border-left-color: #27ae60; } .member-name { font-weight: bold; color: #333; } .member-status { font-size: 12px; padding: 3px 8px; border-radius: 3px; } .status-pending { background: #ffeaa7; color: #d63031; } .status-completed { background: #d4edda; color: #27ae60; } /* 拍照区域 */ .photo-upload { margin: 20px 0; } .camera-container { text-align: center; margin: 20px 0; } .camera-container video { border: 2px solid #ddd; border-radius: 5px; } .camera-controls { text-align: center; margin: 10px 0; } .camera-controls button { margin: 0 5px; } .captured-photo { text-align: center; margin: 20px 0; } .captured-photo img { max-width: 320px; border: 2px solid #ddd; border-radius: 5px; } .photo-actions { margin-top: 10px; } .photo-actions button { margin: 0 5px; } /* 手动点名 */ .manual-rollcall { margin: 20px 0; padding: 20px; background: #f9f9f9; border-radius: 5px; } .manual-rollcall select { margin: 10px 0; } /* 弹窗 */ .modal { display: none; position: fixed; z-index: 1000; left: 0; top: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.5); } .modal-content { background-color: white; margin: 10% auto; padding: 20px; border-radius: 10px; width: 80%; max-width: 500px; text-align: center; } .close { color: #aaa; float: right; font-size: 28px; font-weight: bold; cursor: pointer; } .close:hover { color: black; } #qrCode { margin: 20px 0; } #qrCode canvas { border: 2px solid #ddd; border-radius: 5px; } /* 列表项 */ .list-item { background: white; border: 1px solid #ddd; border-radius: 5px; padding: 15px; margin: 10px 0; } .list-item-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px; } .list-item-title { font-weight: bold; color: #333; font-size: 16px; } .list-item-code { color: #667eea; font-weight: bold; } .list-item-actions { margin-top: 10px; } .list-item-actions button { margin-right: 5px; } /* 记录项 */ .record-item { background: white; border: 1px solid #ddd; border-radius: 5px; padding: 15px; margin: 10px 0; } .record-header { display: flex; justify-content: space-between; margin-bottom: 10px; } .record-name { font-weight: bold; color: #333; } .record-time { color: #999; font-size: 12px; } /* 响应式 */ @media (max-width: 600px) { body { padding: 10px; } header h1 { font-size: 20px; } .panel-header { flex-direction: column; gap: 10px; } .camera-container video { width: 100%; height: auto; } }