/* CSS 备用系统 - 确保基本样式始终可用 */ /* 重置样式 - 确保跨浏览器一致性 */ * { box-sizing: border-box; } html { line-height: 1.15; -webkit-text-size-adjust: 100%; } body { margin: 0; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; font-size: 16px; line-height: 1.6; color: #333; background-color: #fff; } /* 基本布局 */ .container { max-width: 1200px; margin: 0 auto; padding: 0 15px; } .row { display: flex; flex-wrap: wrap; margin: 0 -15px; } .col { flex: 1; padding: 0 15px; } /* 按钮样式 */ .btn { display: inline-block; padding: 8px 16px; margin: 4px 2px; border: 1px solid #ddd; border-radius: 4px; background-color: #f8f9fa; color: #333; text-decoration: none; cursor: pointer; transition: all 0.2s ease; } .btn:hover { background-color: #e9ecef; border-color: #adb5bd; } .btn-primary { background-color: #007bff; border-color: #007bff; color: #fff; } .btn-primary:hover { background-color: #0056b3; border-color: #004085; } /* 卡片样式 */ .card { background-color: #fff; border: 1px solid #dee2e6; border-radius: 4px; margin-bottom: 20px; box-shadow: 0 2px 4px rgba(0,0,0,0.1); } .card-header { padding: 12px 20px; background-color: #f8f9fa; border-bottom: 1px solid #dee2e6; font-weight: bold; } .card-body { padding: 20px; } /* 表单样式 */ .form-control { display: block; width: 100%; padding: 8px 12px; font-size: 14px; line-height: 1.5; color: #495057; background-color: #fff; border: 1px solid #ced4da; border-radius: 4px; transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } .form-control:focus { border-color: #80bdff; outline: 0; box-shadow: 0 0 0 2px rgba(0,123,255,0.25); } /* 导航样式 */ .navbar { display: flex; align-items: center; justify-content: space-between; padding: 10px 20px; background-color: #f8f9fa; border-bottom: 1px solid #dee2e6; } .navbar-brand { font-size: 18px; font-weight: bold; text-decoration: none; color: #333; } .nav { display: flex; list-style: none; margin: 0; padding: 0; } .nav-item { margin: 0 10px; } .nav-link { color: #333; text-decoration: none; padding: 8px 12px; border-radius: 4px; transition: background-color 0.2s ease; } .nav-link:hover { background-color: #e9ecef; } /* 模态框样式 */ .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.show { display: flex; align-items: center; justify-content: center; } .modal-dialog { background-color: #fff; border-radius: 4px; max-width: 500px; width: 90%; max-height: 90%; overflow-y: auto; } .modal-header { padding: 15px 20px; border-bottom: 1px solid #dee2e6; display: flex; align-items: center; justify-content: space-between; } .modal-body { padding: 20px; } .modal-footer { padding: 15px 20px; border-top: 1px solid #dee2e6; display: flex; justify-content: flex-end; gap: 10px; } /* 警告和错误样式 */ .alert { padding: 12px 20px; margin-bottom: 20px; border: 1px solid transparent; border-radius: 4px; } .alert-warning { color: #856404; background-color: #fff3cd; border-color: #ffeaa7; } .alert-danger { color: #721c24; background-color: #f8d7da; border-color: #f5c6cb; } .alert-info { color: #0c5460; background-color: #d1ecf1; border-color: #bee5eb; } /* 加载状态 */ .loading { display: inline-block; width: 20px; height: 20px; border: 3px solid #f3f3f3; border-top: 3px solid #3498db; border-radius: 50%; animation: spin 1s linear infinite; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } /* 响应式设计 */ @media (max-width: 768px) { .container { padding: 0 10px; } .row { margin: 0 -10px; } .col { padding: 0 10px; } .navbar { flex-direction: column; align-items: stretch; } .nav { flex-direction: column; margin-top: 10px; } .nav-item { margin: 5px 0; } } /* 暗色模式支持 */ @media (prefers-color-scheme: dark) { body { background-color: #1a1a1a; color: #e0e0e0; } .card { background-color: #2d2d2d; border-color: #404040; } .card-header { background-color: #404040; border-color: #555; } .form-control { background-color: #2d2d2d; border-color: #404040; color: #e0e0e0; } .navbar { background-color: #2d2d2d; border-color: #404040; } .navbar-brand, .nav-link { color: #e0e0e0; } }