1073 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			CSS
		
	
	
	
		
		
			
		
	
	
			1073 lines
		
	
	
		
			15 KiB
		
	
	
	
		
			CSS
		
	
	
	
|  | /* Reset and Base Styles */ | ||
|  | * { | ||
|  |     margin: 0; | ||
|  |     padding: 0; | ||
|  |     box-sizing: border-box; | ||
|  | } | ||
|  | 
 | ||
|  | body { | ||
|  |     font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; | ||
|  |     line-height: 1.5; | ||
|  |     color: #111827; | ||
|  |     background-color: #f9fafb; | ||
|  | } | ||
|  | 
 | ||
|  | /* Utility Classes */ | ||
|  | .min-h-screen { | ||
|  |     min-height: 100vh; | ||
|  | } | ||
|  | 
 | ||
|  | .bg-gray-50 { | ||
|  |     background-color: #f9fafb; | ||
|  | } | ||
|  | 
 | ||
|  | .bg-green-700 { | ||
|  |     background-color: #15803d; | ||
|  | } | ||
|  | 
 | ||
|  | .bg-green-600 { | ||
|  |     background-color: #16a34a; | ||
|  | } | ||
|  | 
 | ||
|  | .bg-white { | ||
|  |     background-color: #ffffff; | ||
|  | } | ||
|  | 
 | ||
|  | .bg-gray-100 { | ||
|  |     background-color: #f3f4f6; | ||
|  | } | ||
|  | 
 | ||
|  | .bg-gray-200 { | ||
|  |     background-color: #e5e7eb; | ||
|  | } | ||
|  | 
 | ||
|  | .bg-gray-300 { | ||
|  |     background-color: #d1d5db; | ||
|  | } | ||
|  | 
 | ||
|  | .text-white { | ||
|  |     color: #ffffff; | ||
|  | } | ||
|  | 
 | ||
|  | .text-gray-500 { | ||
|  |     color: #6b7280; | ||
|  | } | ||
|  | 
 | ||
|  | .text-gray-600 { | ||
|  |     color: #4b5563; | ||
|  | } | ||
|  | 
 | ||
|  | .text-gray-700 { | ||
|  |     color: #374151; | ||
|  | } | ||
|  | 
 | ||
|  | .text-gray-900 { | ||
|  |     color: #111827; | ||
|  | } | ||
|  | 
 | ||
|  | .text-blue-500 { | ||
|  |     color: #3b82f6; | ||
|  | } | ||
|  | 
 | ||
|  | .text-green-600 { | ||
|  |     color: #16a34a; | ||
|  | } | ||
|  | 
 | ||
|  | .text-green-900 { | ||
|  |     color: #14532d; | ||
|  | } | ||
|  | 
 | ||
|  | .px-4 { | ||
|  |     padding-left: 1rem; | ||
|  |     padding-right: 1rem; | ||
|  | } | ||
|  | 
 | ||
|  | .py-3 { | ||
|  |     padding-top: 0.75rem; | ||
|  |     padding-bottom: 0.75rem; | ||
|  | } | ||
|  | 
 | ||
|  | .py-2 { | ||
|  |     padding-top: 0.5rem; | ||
|  |     padding-bottom: 0.5rem; | ||
|  | } | ||
|  | 
 | ||
|  | .py-2\.5 { | ||
|  |     padding-top: 0.625rem; | ||
|  |     padding-bottom: 0.625rem; | ||
|  | } | ||
|  | 
 | ||
|  | .py-4 { | ||
|  |     padding-top: 1rem; | ||
|  |     padding-bottom: 1rem; | ||
|  | } | ||
|  | 
 | ||
|  | .py-6 { | ||
|  |     padding-top: 1.5rem; | ||
|  |     padding-bottom: 1.5rem; | ||
|  | } | ||
|  | 
 | ||
|  | .px-3 { | ||
|  |     padding-left: 0.75rem; | ||
|  |     padding-right: 0.75rem; | ||
|  | } | ||
|  | 
 | ||
|  | .px-6 { | ||
|  |     padding-left: 1.5rem; | ||
|  |     padding-right: 1.5rem; | ||
|  | } | ||
|  | 
 | ||
|  | .p-2 { | ||
|  |     padding: 0.5rem; | ||
|  | } | ||
|  | 
 | ||
|  | .p-3 { | ||
|  |     padding: 0.75rem; | ||
|  | } | ||
|  | 
 | ||
|  | .p-6 { | ||
|  |     padding: 1.5rem; | ||
|  | } | ||
|  | 
 | ||
|  | .flex { | ||
|  |     display: flex; | ||
|  | } | ||
|  | 
 | ||
|  | .items-center { | ||
|  |     align-items: center; | ||
|  | } | ||
|  | 
 | ||
|  | .justify-between { | ||
|  |     justify-content: space-between; | ||
|  | } | ||
|  | 
 | ||
|  | .justify-center { | ||
|  |     justify-content: center; | ||
|  | } | ||
|  | 
 | ||
|  | .gap-2 { | ||
|  |     gap: 0.5rem; | ||
|  | } | ||
|  | 
 | ||
|  | .gap-3 { | ||
|  |     gap: 0.75rem; | ||
|  | } | ||
|  | 
 | ||
|  | .gap-4 { | ||
|  |     gap: 1rem; | ||
|  | } | ||
|  | 
 | ||
|  | .text-lg { | ||
|  |     font-size: 1.125rem; | ||
|  |     line-height: 1.75rem; | ||
|  | } | ||
|  | 
 | ||
|  | .text-sm { | ||
|  |     font-size: 0.875rem; | ||
|  |     line-height: 1.25rem; | ||
|  | } | ||
|  | 
 | ||
|  | .text-xs { | ||
|  |     font-size: 0.75rem; | ||
|  |     line-height: 1rem; | ||
|  | } | ||
|  | 
 | ||
|  | .font-medium { | ||
|  |     font-weight: 500; | ||
|  | } | ||
|  | 
 | ||
|  | .h-4 { | ||
|  |     height: 1rem; | ||
|  | } | ||
|  | 
 | ||
|  | .w-4 { | ||
|  |     width: 1rem; | ||
|  | } | ||
|  | 
 | ||
|  | .h-3 { | ||
|  |     height: 0.75rem; | ||
|  | } | ||
|  | 
 | ||
|  | .w-3 { | ||
|  |     width: 0.75rem; | ||
|  | } | ||
|  | 
 | ||
|  | .h-8 { | ||
|  |     height: 2rem; | ||
|  | } | ||
|  | 
 | ||
|  | .w-8 { | ||
|  |     width: 2rem; | ||
|  | } | ||
|  | 
 | ||
|  | .h-16 { | ||
|  |     height: 4rem; | ||
|  | } | ||
|  | 
 | ||
|  | .w-9 { | ||
|  |     width: 2.25rem; | ||
|  | } | ||
|  | 
 | ||
|  | .h-4 { | ||
|  |     height: 1rem; | ||
|  | } | ||
|  | 
 | ||
|  | .w-4 { | ||
|  |     width: 1rem; | ||
|  | } | ||
|  | 
 | ||
|  | .after\:h-4::after { | ||
|  |     height: 1rem; | ||
|  | } | ||
|  | 
 | ||
|  | .after\:w-4::after { | ||
|  |     width: 1rem; | ||
|  | } | ||
|  | 
 | ||
|  | .peer-focus\:ring-2:focus ~ .peer-focus\:ring-2 { | ||
|  |     box-shadow: 0 0 0 2px; | ||
|  | } | ||
|  | 
 | ||
|  | .peer-focus\:ring-green-300:focus ~ .peer-focus\:ring-green-300 { | ||
|  |     box-shadow: 0 0 0 2px rgba(134, 239, 172, 0.5); | ||
|  | } | ||
|  | 
 | ||
|  | .w-16 { | ||
|  |     width: 4rem; | ||
|  | } | ||
|  | 
 | ||
|  | .bg-gray-100 { | ||
|  |     background-color: #f3f4f6; | ||
|  | } | ||
|  | 
 | ||
|  | .h-96 { | ||
|  |     height: 24rem; | ||
|  | } | ||
|  | 
 | ||
|  | .h-full { | ||
|  |     height: 100%; | ||
|  | } | ||
|  | 
 | ||
|  | .w-full { | ||
|  |     width: 100%; | ||
|  | } | ||
|  | 
 | ||
|  | .w-48 { | ||
|  |     width: 12rem; | ||
|  | } | ||
|  | 
 | ||
|  | .w-11 { | ||
|  |     width: 2.75rem; | ||
|  | } | ||
|  | 
 | ||
|  | .h-6 { | ||
|  |     height: 1.5rem; | ||
|  | } | ||
|  | 
 | ||
|  | .h-5 { | ||
|  |     height: 1.25rem; | ||
|  | } | ||
|  | 
 | ||
|  | .w-5 { | ||
|  |     width: 1.25rem; | ||
|  | } | ||
|  | 
 | ||
|  | .rounded-md { | ||
|  |     border-radius: 0.375rem; | ||
|  | } | ||
|  | 
 | ||
|  | .rounded-lg { | ||
|  |     border-radius: 0.5rem; | ||
|  | } | ||
|  | 
 | ||
|  | .rounded-full { | ||
|  |     border-radius: 9999px; | ||
|  | } | ||
|  | 
 | ||
|  | .border { | ||
|  |     border-width: 1px; | ||
|  | } | ||
|  | 
 | ||
|  | .border-r { | ||
|  |     border-right-width: 1px; | ||
|  | } | ||
|  | 
 | ||
|  | .border-b { | ||
|  |     border-bottom-width: 1px; | ||
|  | } | ||
|  | 
 | ||
|  | .border-l-2 { | ||
|  |     border-left-width: 2px; | ||
|  | } | ||
|  | 
 | ||
|  | .border-gray-200 { | ||
|  |     border-color: #e5e7eb; | ||
|  | } | ||
|  | 
 | ||
|  | .border-gray-100 { | ||
|  |     border-color: #f3f4f6; | ||
|  | } | ||
|  | 
 | ||
|  | .border-gray-300 { | ||
|  |     border-color: #d1d5db; | ||
|  | } | ||
|  | 
 | ||
|  | .border-green-500 { | ||
|  |     border-color: #22c55e; | ||
|  | } | ||
|  | 
 | ||
|  | .shadow-sm { | ||
|  |     box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05); | ||
|  | } | ||
|  | 
 | ||
|  | .cursor-pointer { | ||
|  |     cursor: pointer; | ||
|  | } | ||
|  | 
 | ||
|  | .select-none { | ||
|  |     user-select: none; | ||
|  | } | ||
|  | 
 | ||
|  | .space-y-1 > * + * { | ||
|  |     margin-top: 0.25rem; | ||
|  | } | ||
|  | 
 | ||
|  | .flex-1 { | ||
|  |     flex: 1 1 0%; | ||
|  | } | ||
|  | 
 | ||
|  | .transition-transform { | ||
|  |     transition-property: transform; | ||
|  |     transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); | ||
|  |     transition-duration: 150ms; | ||
|  | } | ||
|  | 
 | ||
|  | .transition-colors { | ||
|  |     transition-property: color, background-color, border-color, text-decoration-color, fill, stroke; | ||
|  |     transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); | ||
|  |     transition-duration: 150ms; | ||
|  | } | ||
|  | 
 | ||
|  | .rotate-180 { | ||
|  |     transform: rotate(180deg); | ||
|  | } | ||
|  | 
 | ||
|  | .ml-4 { | ||
|  |     margin-left: 1rem; | ||
|  | } | ||
|  | 
 | ||
|  | .mt-2 { | ||
|  |     margin-top: 0.5rem; | ||
|  | } | ||
|  | 
 | ||
|  | .mb-4 { | ||
|  |     margin-bottom: 1rem; | ||
|  | } | ||
|  | 
 | ||
|  | .mx-auto { | ||
|  |     margin-left: auto; | ||
|  |     margin-right: auto; | ||
|  | } | ||
|  | 
 | ||
|  | .text-center { | ||
|  |     text-align: center; | ||
|  | } | ||
|  | 
 | ||
|  | .text-left { | ||
|  |     text-align: left; | ||
|  | } | ||
|  | 
 | ||
|  | .uppercase { | ||
|  |     text-transform: uppercase; | ||
|  | } | ||
|  | 
 | ||
|  | .tracking-wider { | ||
|  |     letter-spacing: 0.05em; | ||
|  | } | ||
|  | 
 | ||
|  | .whitespace-nowrap { | ||
|  |     white-space: nowrap; | ||
|  | } | ||
|  | 
 | ||
|  | .overflow-x-auto { | ||
|  |     overflow-x: auto; | ||
|  | } | ||
|  | 
 | ||
|  | .divide-y > * + * { | ||
|  |     border-top-width: 1px; | ||
|  | } | ||
|  | 
 | ||
|  | .divide-gray-200 > * + * { | ||
|  |     border-color: #e5e7eb; | ||
|  | } | ||
|  | 
 | ||
|  | .sr-only { | ||
|  |     position: absolute; | ||
|  |     width: 1px; | ||
|  |     height: 1px; | ||
|  |     padding: 0; | ||
|  |     margin: -1px; | ||
|  |     overflow: hidden; | ||
|  |     clip: rect(0, 0, 0, 0); | ||
|  |     white-space: nowrap; | ||
|  |     border: 0; | ||
|  | } | ||
|  | 
 | ||
|  | .peer:checked ~ .peer-checked\:bg-green-600 { | ||
|  |     background-color: #16a34a; | ||
|  | } | ||
|  | 
 | ||
|  | .peer-checked\:after\:translate-x-full { | ||
|  |     content: ''; | ||
|  | } | ||
|  | 
 | ||
|  | .peer:checked ~ .peer-checked\:after\:translate-x-full::after { | ||
|  |     transform: translateX(100%); | ||
|  | } | ||
|  | 
 | ||
|  | .peer-checked\:after\:border-white::after { | ||
|  |     border-color: #ffffff; | ||
|  | } | ||
|  | 
 | ||
|  | .after\:content-\[\'\'\]::after { | ||
|  |     content: ''; | ||
|  | } | ||
|  | 
 | ||
|  | .after\:absolute::after { | ||
|  |     position: absolute; | ||
|  | } | ||
|  | 
 | ||
|  | .after\:top-\[2px\]::after { | ||
|  |     top: 2px; | ||
|  | } | ||
|  | 
 | ||
|  | .after\:left-\[2px\]::after { | ||
|  |     left: 2px; | ||
|  | } | ||
|  | 
 | ||
|  | .after\:bg-white::after { | ||
|  |     background-color: #ffffff; | ||
|  | } | ||
|  | 
 | ||
|  | .after\:border-gray-300::after { | ||
|  |     border-color: #d1d5db; | ||
|  | } | ||
|  | 
 | ||
|  | .after\:border::after { | ||
|  |     border-width: 1px; | ||
|  | } | ||
|  | 
 | ||
|  | .after\:rounded-full::after { | ||
|  |     border-radius: 9999px; | ||
|  | } | ||
|  | 
 | ||
|  | .after\:h-5::after { | ||
|  |     height: 1.25rem; | ||
|  | } | ||
|  | 
 | ||
|  | .after\:w-5::after { | ||
|  |     width: 1.25rem; | ||
|  | } | ||
|  | 
 | ||
|  | .after\:transition-all::after { | ||
|  |     transition-property: all; | ||
|  |     transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); | ||
|  |     transition-duration: 150ms; | ||
|  | } | ||
|  | 
 | ||
|  | .peer-focus\:outline-none:focus ~ .peer-focus\:outline-none { | ||
|  |     outline: 2px solid transparent; | ||
|  |     outline-offset: 2px; | ||
|  | } | ||
|  | 
 | ||
|  | .peer-focus\:ring-4:focus ~ .peer-focus\:ring-4 { | ||
|  |     box-shadow: 0 0 0 4px; | ||
|  | } | ||
|  | 
 | ||
|  | .peer-focus\:ring-green-300:focus ~ .peer-focus\:ring-green-300 { | ||
|  |     box-shadow: 0 0 0 4px rgba(134, 239, 172, 0.5); | ||
|  | } | ||
|  | 
 | ||
|  | .min-h-\[calc\(100vh-60px\)\] { | ||
|  |     min-height: calc(100vh - 60px); | ||
|  | } | ||
|  | 
 | ||
|  | .relative { | ||
|  |     position: relative; | ||
|  | } | ||
|  | 
 | ||
|  | .inline-flex { | ||
|  |     display: inline-flex; | ||
|  | } | ||
|  | 
 | ||
|  | .absolute { | ||
|  |     position: absolute; | ||
|  | } | ||
|  | 
 | ||
|  | .top-\[2px\] { | ||
|  |     top: 2px; | ||
|  | } | ||
|  | 
 | ||
|  | .left-\[2px\] { | ||
|  |     left: 2px; | ||
|  | } | ||
|  | 
 | ||
|  | .hidden { | ||
|  |     display: none; | ||
|  | } | ||
|  | 
 | ||
|  | /* Hover Effects */ | ||
|  | .hover\:bg-gray-50:hover { | ||
|  |     background-color: #f9fafb; | ||
|  | } | ||
|  | 
 | ||
|  | .hover\:bg-gray-100:hover { | ||
|  |     background-color: #f3f4f6; | ||
|  | } | ||
|  | 
 | ||
|  | .bg-red-600 { | ||
|  |     background-color: #dc2626; | ||
|  | } | ||
|  | 
 | ||
|  | .hover\:bg-red-700:hover { | ||
|  |     background-color: #b91c1c; | ||
|  | } | ||
|  | 
 | ||
|  | .hover\:bg-green-700:hover { | ||
|  |     background-color: #15803d; | ||
|  | } | ||
|  | 
 | ||
|  | .hover\:text-green-900:hover { | ||
|  |     color: #14532d; | ||
|  | } | ||
|  | 
 | ||
|  | /* Focus Effects */ | ||
|  | .focus\:border-green-500:focus { | ||
|  |     border-color: #22c55e; | ||
|  | } | ||
|  | 
 | ||
|  | .focus\:outline-none:focus { | ||
|  |     outline: 2px solid transparent; | ||
|  |     outline-offset: 2px; | ||
|  | } | ||
|  | 
 | ||
|  | /* Custom Toggle Switch Styles */ | ||
|  | .toggle-switch { | ||
|  |     position: relative; | ||
|  |     display: inline-block; | ||
|  |     width: 44px; | ||
|  |     height: 24px; | ||
|  | } | ||
|  | 
 | ||
|  | .toggle-switch input { | ||
|  |     opacity: 0; | ||
|  |     width: 0; | ||
|  |     height: 0; | ||
|  | } | ||
|  | 
 | ||
|  | .toggle-slider { | ||
|  |     position: absolute; | ||
|  |     cursor: pointer; | ||
|  |     top: 0; | ||
|  |     left: 0; | ||
|  |     right: 0; | ||
|  |     bottom: 0; | ||
|  |     background-color: #e5e7eb; | ||
|  |     transition: .4s; | ||
|  |     border-radius: 24px; | ||
|  | } | ||
|  | 
 | ||
|  | .toggle-slider:before { | ||
|  |     position: absolute; | ||
|  |     content: ""; | ||
|  |     height: 20px; | ||
|  |     width: 20px; | ||
|  |     left: 2px; | ||
|  |     top: 2px; | ||
|  |     background-color: white; | ||
|  |     transition: .4s; | ||
|  |     border-radius: 50%; | ||
|  |     border: 1px solid #d1d5db; | ||
|  | } | ||
|  | 
 | ||
|  | input:checked + .toggle-slider { | ||
|  |     background-color: #16a34a; | ||
|  | } | ||
|  | 
 | ||
|  | input:focus + .toggle-slider { | ||
|  |     box-shadow: 0 0 0 4px rgba(134, 239, 172, 0.3); | ||
|  | } | ||
|  | 
 | ||
|  | input:checked + .toggle-slider:before { | ||
|  |     transform: translateX(20px); | ||
|  |     border-color: white; | ||
|  | } | ||
|  | 
 | ||
|  | /* Table Styles */ | ||
|  | table { | ||
|  |     border-collapse: collapse; | ||
|  | } | ||
|  | 
 | ||
|  | thead th { | ||
|  |     background-color: #f9fafb; | ||
|  |     font-weight: 500; | ||
|  |     text-transform: uppercase; | ||
|  |     letter-spacing: 0.05em; | ||
|  |     font-size: 0.75rem; | ||
|  |     color: #6b7280; | ||
|  |     padding: 0.75rem 1.5rem; | ||
|  |     text-align: left; | ||
|  | } | ||
|  | 
 | ||
|  | tbody td { | ||
|  |     padding: 1rem 1.5rem; | ||
|  |     border-top: 1px solid #e5e7eb; | ||
|  |     font-size: 0.875rem; | ||
|  | } | ||
|  | 
 | ||
|  | tbody tr:hover { | ||
|  |     background-color: #f9fafb; | ||
|  | } | ||
|  | 
 | ||
|  | /* Button Styles */ | ||
|  | button { | ||
|  |     border: none; | ||
|  |     background: none; | ||
|  |     cursor: pointer; | ||
|  |     font-family: inherit; | ||
|  | } | ||
|  | 
 | ||
|  | /* Input Styles */ | ||
|  | input[type="text"] { | ||
|  |     border: 1px solid #e5e7eb; | ||
|  |     border-radius: 0.375rem; | ||
|  |     padding: 0.5rem 0.75rem; | ||
|  |     font-size: 0.875rem; | ||
|  |     width: 100%; | ||
|  |     transition: border-color 0.15s ease; | ||
|  | } | ||
|  | 
 | ||
|  | input[type="text"]:focus { | ||
|  |     outline: none; | ||
|  |     border-color: #22c55e; | ||
|  | } | ||
|  | 
 | ||
|  | /* Animation */ | ||
|  | @keyframes fadeIn { | ||
|  |     from { opacity: 0; } | ||
|  |     to { opacity: 1; } | ||
|  | } | ||
|  | 
 | ||
|  | .fade-in { | ||
|  |     animation: fadeIn 0.3s ease-in; | ||
|  | } | ||
|  | 
 | ||
|  | /* 小开关样式 - 用于等级编辑页面 */ | ||
|  | .small-toggle input[type="checkbox"]:checked + div { | ||
|  |     background-color: #16a34a !important; | ||
|  | } | ||
|  | 
 | ||
|  | .small-toggle input[type="checkbox"]:checked + div:after { | ||
|  |     transform: translateX(1rem) !important; | ||
|  |     border-color: white !important; | ||
|  | } | ||
|  | 
 | ||
|  | .small-toggle div { | ||
|  |     background-color: #e5e7eb; | ||
|  |     transition: all 0.3s ease; | ||
|  | } | ||
|  | 
 | ||
|  | .small-toggle div:after { | ||
|  |     content: ''; | ||
|  |     position: absolute; | ||
|  |     top: 2px; | ||
|  |     left: 2px; | ||
|  |     background-color: white; | ||
|  |     border: 1px solid #d1d5db; | ||
|  |     border-radius: 50%; | ||
|  |     height: 1rem; | ||
|  |     width: 1rem; | ||
|  |     transition: all 0.3s ease; | ||
|  | } | ||
|  | 
 | ||
|  | /* Tab样式 */ | ||
|  | .tab-item { | ||
|  |     border-bottom: 2px solid transparent; | ||
|  |     transition: all 0.2s ease; | ||
|  | } | ||
|  | 
 | ||
|  | .tab-item:hover { | ||
|  |     color: #374151; | ||
|  |     background-color: #f9fafb; | ||
|  | } | ||
|  | 
 | ||
|  | .tab-item.active { | ||
|  |     border-bottom-color: #22c55e; | ||
|  |     color: #16a34a; | ||
|  | } | ||
|  | 
 | ||
|  | /* 输入框样式 */ | ||
|  | input[type="number"] { | ||
|  |     border: 1px solid #d1d5db; | ||
|  |     border-radius: 0.25rem; | ||
|  |     padding: 0.25rem 0.5rem; | ||
|  |     font-size: 0.875rem; | ||
|  |     line-height: 1.25rem; | ||
|  |     transition: border-color 0.15s ease; | ||
|  | } | ||
|  | 
 | ||
|  | input[type="number"]:focus { | ||
|  |     outline: none; | ||
|  |     border-color: #22c55e; | ||
|  |     box-shadow: 0 0 0 1px #22c55e; | ||
|  | } | ||
|  | 
 | ||
|  | input[type="number"]:disabled { | ||
|  |     background-color: #f3f4f6; | ||
|  |     color: #9ca3af; | ||
|  |     cursor: not-allowed; | ||
|  | } | ||
|  | 
 | ||
|  | /* 按钮样式 */ | ||
|  | .btn-green { | ||
|  |     background-color: #16a34a; | ||
|  |     color: white; | ||
|  |     padding: 0.5rem 1rem; | ||
|  |     border-radius: 0.375rem; | ||
|  |     font-size: 0.875rem; | ||
|  |     font-weight: 500; | ||
|  |     transition: background-color 0.15s ease; | ||
|  |     border: none; | ||
|  |     cursor: pointer; | ||
|  | } | ||
|  | 
 | ||
|  | .btn-green:hover { | ||
|  |     background-color: #15803d; | ||
|  | } | ||
|  | 
 | ||
|  | .btn-gray { | ||
|  |     background-color: #6b7280; | ||
|  |     color: white; | ||
|  |     padding: 0.5rem 1rem; | ||
|  |     border-radius: 0.375rem; | ||
|  |     font-size: 0.875rem; | ||
|  |     font-weight: 500; | ||
|  |     transition: background-color 0.15s ease; | ||
|  |     border: none; | ||
|  |     cursor: pointer; | ||
|  | } | ||
|  | 
 | ||
|  | .btn-gray:hover { | ||
|  |     background-color: #4b5563; | ||
|  | } | ||
|  | @media (max-width: 768px) { | ||
|  |     .w-48 { | ||
|  |         width: 100%; | ||
|  |     } | ||
|  |      | ||
|  |     .flex { | ||
|  |         flex-direction: column; | ||
|  |     } | ||
|  |      | ||
|  |     .min-h-\[calc\(100vh-60px\)\] { | ||
|  |         min-height: auto; | ||
|  |     } | ||
|  | } | ||
|  | 
 | ||
|  | /* 弹窗样式 */ | ||
|  | .fixed { | ||
|  |     position: fixed; | ||
|  | } | ||
|  | 
 | ||
|  | .inset-0 { | ||
|  |     top: 0; | ||
|  |     right: 0; | ||
|  |     bottom: 0; | ||
|  |     left: 0; | ||
|  | } | ||
|  | 
 | ||
|  | .bg-black { | ||
|  |     background-color: #000000; | ||
|  | } | ||
|  | 
 | ||
|  | .bg-opacity-50 { | ||
|  |     background-color: rgba(0, 0, 0, 0.5); | ||
|  | } | ||
|  | 
 | ||
|  | .z-50 { | ||
|  |     z-index: 50; | ||
|  | } | ||
|  | 
 | ||
|  | .w-96 { | ||
|  |     width: 24rem; | ||
|  | } | ||
|  | 
 | ||
|  | .max-w-md { | ||
|  |     max-width: 28rem; | ||
|  | } | ||
|  | 
 | ||
|  | .mx-4 { | ||
|  |     margin-left: 1rem; | ||
|  |     margin-right: 1rem; | ||
|  | } | ||
|  | 
 | ||
|  | .space-y-4 > * + * { | ||
|  |     margin-top: 1rem; | ||
|  | } | ||
|  | 
 | ||
|  | .mb-1 { | ||
|  |     margin-bottom: 0.25rem; | ||
|  | } | ||
|  | 
 | ||
|  | .ml-2 { | ||
|  |     margin-left: 0.5rem; | ||
|  | } | ||
|  | 
 | ||
|  | .border-t-0 { | ||
|  |     border-top-width: 0; | ||
|  | } | ||
|  | 
 | ||
|  | .rounded-t { | ||
|  |     border-top-left-radius: 0.25rem; | ||
|  |     border-top-right-radius: 0.25rem; | ||
|  | } | ||
|  | 
 | ||
|  | .rounded-b { | ||
|  |     border-bottom-left-radius: 0.25rem; | ||
|  |     border-bottom-right-radius: 0.25rem; | ||
|  | } | ||
|  | 
 | ||
|  | .text-red-500 { | ||
|  |     color: #ef4444; | ||
|  | } | ||
|  | 
 | ||
|  | .bg-blue-600 { | ||
|  |     background-color: #2563eb; | ||
|  | } | ||
|  | 
 | ||
|  | .hover\:bg-blue-700:hover { | ||
|  |     background-color: #1d4ed8; | ||
|  | } | ||
|  | 
 | ||
|  | .hover\:bg-gray-200:hover { | ||
|  |     background-color: #e5e7eb; | ||
|  | } | ||
|  | 
 | ||
|  | .text-gray-400 { | ||
|  |     color: #9ca3af; | ||
|  | } | ||
|  | 
 | ||
|  | .hover\:text-gray-600:hover { | ||
|  |     color: #4b5563; | ||
|  | } | ||
|  | 
 | ||
|  | .focus\:ring-2:focus { | ||
|  |     box-shadow: 0 0 0 2px; | ||
|  | } | ||
|  | 
 | ||
|  | .focus\:ring-green-500:focus { | ||
|  |     box-shadow: 0 0 0 2px rgba(34, 197, 94, 0.5); | ||
|  | } | ||
|  | 
 | ||
|  | .focus\:border-green-500:focus { | ||
|  |     border-color: #22c55e; | ||
|  | } | ||
|  | 
 | ||
|  | /* 弹窗动画 */ | ||
|  | @keyframes modalFadeIn { | ||
|  |     from { | ||
|  |         opacity: 0; | ||
|  |         transform: scale(0.95); | ||
|  |     } | ||
|  |     to { | ||
|  |         opacity: 1; | ||
|  |         transform: scale(1); | ||
|  |     } | ||
|  | } | ||
|  | 
 | ||
|  | .modal-content { | ||
|  |     animation: modalFadeIn 0.2s ease-out; | ||
|  | } | ||
|  | 
 | ||
|  | /* 数字输入框调节按钮 */ | ||
|  | .number-adjuster { | ||
|  |     display: flex; | ||
|  |     flex-direction: column; | ||
|  | } | ||
|  | 
 | ||
|  | .number-adjuster button { | ||
|  |     padding: 0.25rem 0.5rem; | ||
|  |     font-size: 0.75rem; | ||
|  |     line-height: 1rem; | ||
|  |     background-color: #f3f4f6; | ||
|  |     border: 1px solid #d1d5db; | ||
|  |     transition: background-color 0.15s ease; | ||
|  | } | ||
|  | 
 | ||
|  | .number-adjuster button:hover { | ||
|  |     background-color: #e5e7eb; | ||
|  | } | ||
|  | 
 | ||
|  | .number-adjuster button:first-child { | ||
|  |     border-top-left-radius: 0.25rem; | ||
|  |     border-top-right-radius: 0.25rem; | ||
|  | } | ||
|  | 
 | ||
|  | .number-adjuster button:last-child { | ||
|  |     border-bottom-left-radius: 0.25rem; | ||
|  |     border-bottom-right-radius: 0.25rem; | ||
|  |     border-top-width: 0; | ||
|  | } | ||
|  | 
 | ||
|  | /* 网格布局 */ | ||
|  | .grid { | ||
|  |     display: grid; | ||
|  | } | ||
|  | 
 | ||
|  | .grid-cols-1 { | ||
|  |     grid-template-columns: repeat(1, minmax(0, 1fr)); | ||
|  | } | ||
|  | 
 | ||
|  | .grid-cols-2 { | ||
|  |     grid-template-columns: repeat(2, minmax(0, 1fr)); | ||
|  | } | ||
|  | 
 | ||
|  | .grid-cols-4 { | ||
|  |     grid-template-columns: repeat(4, minmax(0, 1fr)); | ||
|  | } | ||
|  | 
 | ||
|  | @media (min-width: 768px) { | ||
|  |     .md\:grid-cols-2 { | ||
|  |         grid-template-columns: repeat(2, minmax(0, 1fr)); | ||
|  |     } | ||
|  |      | ||
|  |     .md\:grid-cols-4 { | ||
|  |         grid-template-columns: repeat(4, minmax(0, 1fr)); | ||
|  |     } | ||
|  | } | ||
|  | 
 | ||
|  | /* 间距工具 */ | ||
|  | .space-x-2 > * + * { | ||
|  |     margin-left: 0.5rem; | ||
|  | } | ||
|  | 
 | ||
|  | .space-x-4 > * + * { | ||
|  |     margin-left: 1rem; | ||
|  | } | ||
|  | 
 | ||
|  | /* 徽章样式 */ | ||
|  | .bg-blue-100 { | ||
|  |     background-color: #dbeafe; | ||
|  | } | ||
|  | 
 | ||
|  | .text-blue-800 { | ||
|  |     color: #1e40af; | ||
|  | } | ||
|  | 
 | ||
|  | .bg-purple-100 { | ||
|  |     background-color: #ede9fe; | ||
|  | } | ||
|  | 
 | ||
|  | .text-purple-800 { | ||
|  |     color: #5b21b6; | ||
|  | } | ||
|  | 
 | ||
|  | .bg-blue-50 { | ||
|  |     background-color: #eff6ff; | ||
|  | } | ||
|  | 
 | ||
|  | .text-blue-600 { | ||
|  |     color: #2563eb; | ||
|  | } | ||
|  | 
 | ||
|  | .text-blue-900 { | ||
|  |     color: #1e3a8a; | ||
|  | } | ||
|  | 
 | ||
|  | .border-blue-200 { | ||
|  |     border-color: #bfdbfe; | ||
|  | } | ||
|  | 
 | ||
|  | .bg-green-50 { | ||
|  |     background-color: #f0fdf4; | ||
|  | } | ||
|  | 
 | ||
|  | .border-green-200 { | ||
|  |     border-color: #bbf7d0; | ||
|  | } | ||
|  | 
 | ||
|  | .text-green-900 { | ||
|  |     color: #14532d; | ||
|  | } | ||
|  | 
 | ||
|  | .text-2xl { | ||
|  |     font-size: 1.5rem; | ||
|  |     line-height: 2rem; | ||
|  | } | ||
|  | 
 | ||
|  | .font-bold { | ||
|  |     font-weight: 700; | ||
|  | } | ||
|  | 
 | ||
|  | .flex-shrink-0 { | ||
|  |     flex-shrink: 0; | ||
|  | } | ||
|  | 
 | ||
|  | .rounded-full { | ||
|  |     border-radius: 9999px; | ||
|  | } | ||
|  | 
 | ||
|  | .px-2\.5 { | ||
|  |     padding-left: 0.625rem; | ||
|  |     padding-right: 0.625rem; | ||
|  | } | ||
|  | 
 | ||
|  | .py-0\.5 { | ||
|  |     padding-top: 0.125rem; | ||
|  |     padding-bottom: 0.125rem; | ||
|  | } | ||
|  | 
 | ||
|  | .font-mono { | ||
|  |     font-family: ui-monospace, SFMono-Regular, "SF Mono", Consolas, "Liberation Mono", Menlo, monospace; | ||
|  | } | ||
|  | 
 | ||
|  | .inline-block { | ||
|  |     display: inline-block; | ||
|  | } | ||
|  | 
 | ||
|  | .ml-1 { | ||
|  |     margin-left: 0.25rem; | ||
|  | } | ||
|  | 
 | ||
|  | .w-12 { | ||
|  |     width: 3rem; | ||
|  | } | ||
|  | 
 | ||
|  | .text-center { | ||
|  |     text-align: center; | ||
|  | } | ||
|  | 
 | ||
|  | .sm\:px-6 { | ||
|  |     padding-left: 1.5rem; | ||
|  |     padding-right: 1.5rem; | ||
|  | } | ||
|  | 
 | ||
|  | .border-t { | ||
|  |     border-top-width: 1px; | ||
|  | } | ||
|  | 
 | ||
|  | .overflow-hidden { | ||
|  |     overflow: hidden; | ||
|  | } | ||
|  | 
 | ||
|  | .shadow-sm { | ||
|  |     box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05); | ||
|  | } | ||
|  | 
 | ||
|  | .focus\:border-green-500:focus { | ||
|  |     border-color: #22c55e; | ||
|  | } | ||
|  | 
 | ||
|  | .focus\:ring-green-500:focus { | ||
|  |     box-shadow: 0 0 0 1px #22c55e; | ||
|  | } |