*{margin:0;padding:0;box-sizing:border-box}html,body{height:100%;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Helvetica Neue,Helvetica,Arial,sans-serif;font-size:16px;line-height:1.6;color:#333;background-color:#f5f5f5}#root{height:100%}.app{height:100%;display:flex;flex-direction:column}.app-loading{height:100vh;display:flex;flex-direction:column;justify-content:center;align-items:center;background-color:#fff}.app-loading p{margin-top:16px;color:#666;font-size:16px}.error-page{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;padding:40px;text-align:center}.error-page h1{font-size:48px;color:#f56565;margin-bottom:16px}.error-page p{font-size:18px;color:#666;margin-bottom:24px}.error-page button{padding:12px 24px;font-size:16px;color:#fff;background-color:#3182ce;border:none;border-radius:6px;cursor:pointer;transition:background-color .2s}.error-page button:hover{background-color:#2c5aa0}@media (max-width: 768px){body{font-size:14px}.error-page h1{font-size:36px}.error-page p{font-size:16px}}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:#f1f1f1;border-radius:3px}::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#a8a8a8}@media (prefers-color-scheme: dark){body{color:#e2e8f0;background-color:#1a202c}.app-loading{background-color:#1a202c}.app-loading p{color:#a0aec0}::-webkit-scrollbar-track{background:#2d3748}::-webkit-scrollbar-thumb{background:#4a5568}::-webkit-scrollbar-thumb:hover{background:#718096}}.dark body{color:#e2e8f0;background-color:#1a202c}.dark .app-loading{background-color:#1a202c}.dark .app-loading p{color:#a0aec0}.dark ::-webkit-scrollbar-track{background:#2d3748}.dark ::-webkit-scrollbar-thumb{background:#4a5568}.dark ::-webkit-scrollbar-thumb:hover{background:#718096}@keyframes fadeIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes slideIn{0%{transform:translate(-20px);opacity:0}to{transform:translate(0);opacity:1}}@keyframes pulse{0%{transform:scale(1)}50%{transform:scale(1.05)}to{transform:scale(1)}}.fade-in{animation:fadeIn .3s ease-out}.slide-in{animation:slideIn .3s ease-out}.pulse{animation:pulse 2s infinite}.btn{display:inline-flex;align-items:center;justify-content:center;padding:8px 16px;font-size:14px;font-weight:500;line-height:1.5;border:1px solid transparent;border-radius:6px;cursor:pointer;transition:all .2s;text-decoration:none;-webkit-user-select:none;user-select:none}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-primary{color:#fff;background-color:#3182ce;border-color:#3182ce}.btn-primary:hover:not(:disabled){background-color:#2c5aa0;border-color:#2c5aa0}.navbar{font-size:16px}.navbar-brand{font-size:18px!important;font-weight:600}.navbar .btn,.navbar .dropdown-toggle,.navbar .dropdown-menu{font-size:15px}.nav-link{font-size:15px!important;font-weight:500}.sidebar-title{font-size:17px;font-weight:600}.sidebar-stats{font-size:14px}.sidebar-stats .fw-medium{font-size:15px}@media (max-width: 768px){.navbar{font-size:15px}.navbar-brand{font-size:16px!important}.nav-link{font-size:14px!important}}.btn-secondary{color:#4a5568;background-color:#fff;border-color:#e2e8f0}.btn-secondary:hover:not(:disabled){background-color:#f7fafc;border-color:#cbd5e0}.btn-danger{color:#fff;background-color:#e53e3e;border-color:#e53e3e}.btn-danger:hover:not(:disabled){background-color:#c53030;border-color:#c53030}.btn-sm{padding:4px 8px;font-size:12px}.btn-lg{padding:12px 24px;font-size:16px}.form-group{margin-bottom:16px}.form-label{display:block;margin-bottom:4px;font-weight:500;color:#2d3748}.form-control{display:block;width:100%;padding:8px 12px;font-size:14px;line-height:1.5;color:#2d3748;background-color:#fff;border:1px solid #e2e8f0;border-radius:6px;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control:focus{outline:none;border-color:#3182ce;box-shadow:0 0 0 3px #3182ce1a}.form-control::placeholder{color:#a0aec0}.card{background-color:#fff;border:1px solid #e2e8f0;border-radius:8px;box-shadow:0 1px 3px #0000001a}.card-header{padding:16px 20px;border-bottom:1px solid #e2e8f0;font-weight:500}.card-body{padding:20px}.card-footer{padding:16px 20px;border-top:1px solid #e2e8f0;background-color:#f7fafc}.hidden{display:none!important}.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}@media (max-width: 768px){.hidden-mobile{display:none!important}}@media (min-width: 769px){.hidden-desktop{display:none!important}}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.text-sm{font-size:12px}.text-lg{font-size:16px}.text-xl{font-size:18px}.font-bold{font-weight:700}.font-semibold{font-weight:600}.text-muted{color:#718096}.text-primary{color:#3182ce}.text-danger{color:#e53e3e}.text-success{color:#38a169}.text-warning{color:#d69e2e}.mb-0{margin-bottom:0}.mb-1{margin-bottom:4px}.mb-2{margin-bottom:8px}.mb-3{margin-bottom:12px}.mb-4{margin-bottom:16px}.mb-5{margin-bottom:20px}.mt-0{margin-top:0}.mt-1{margin-top:4px}.mt-2{margin-top:8px}.mt-3{margin-top:12px}.mt-4{margin-top:16px}.mt-5{margin-top:20px}.p-0{padding:0}.p-1{padding:4px}.p-2{padding:8px}.p-3{padding:12px}.p-4{padding:16px}.p-5{padding:20px}.app-footer{background:linear-gradient(135deg,#2c3e50,#34495e);color:#ecf0f1;padding:.5rem 0;margin-top:auto;border-top:1px solid #4a5f7a;transition:background .3s ease}.footer-content{max-width:1200px;margin:0 auto;padding:0 2rem;display:flex;justify-content:space-between;align-items:center}.footer-text{display:flex;align-items:center;gap:.5rem;font-size:.9rem;color:#ecf0f1;font-weight:500;cursor:pointer;transition:color .3s ease}.footer-text:hover{color:#3498db}.footer-text i{color:#3498db;font-size:.9rem}.footer-right{display:flex;align-items:center;gap:1rem}.privacy-link{display:flex;align-items:center;gap:.4rem;font-size:.8rem;color:#bdc3c7;text-decoration:none;transition:color .3s ease}.privacy-link:hover{color:#3498db}.privacy-link i{color:#95a5a6;font-size:.75rem}.privacy-link:hover i{color:#3498db}.footer-copyright{color:#95a5a6;font-size:.8rem}.contact-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:9999;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.contact-modal{background:#fff;border-radius:16px;box-shadow:0 20px 40px #0000004d;max-width:400px;width:90%;max-height:90vh;overflow:hidden;animation:modalSlideIn .3s ease-out}@keyframes modalSlideIn{0%{opacity:0;transform:translateY(-20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:1.5rem;border-bottom:1px solid #e2e8f0;background:linear-gradient(135deg,#f8f9fa,#e9ecef)}.modal-header h3{margin:0;font-size:1.25rem;font-weight:600;color:#2c3e50;display:flex;align-items:center;gap:.75rem}.modal-header h3 i{color:#3498db;font-size:1.2rem}.close-button{background:none;border:none;font-size:1.25rem;color:#6c757d;cursor:pointer;padding:.5rem;border-radius:50%;width:36px;height:36px;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.close-button:hover{background:#f8f9fa;color:#495057}.modal-content{padding:2rem;text-align:center}.qr-code-container{position:relative;width:200px;height:200px;margin:0 auto 1.5rem;border-radius:12px;overflow:hidden;box-shadow:0 8px 25px #00000026}.modal-qr-code{width:100%;height:100%;object-fit:cover;border-radius:12px}.qr-code-fallback{display:none;width:100%;height:100%;background:#f8f9fa;border:2px dashed #dee2e6;border-radius:12px;flex-direction:column;align-items:center;justify-content:center;color:#6c757d;padding:1rem;box-sizing:border-box}.qr-code-fallback i{font-size:3rem;margin-bottom:.75rem;color:#adb5bd}.qr-code-fallback p{margin:0;font-size:.9rem;text-align:center;line-height:1.4}.qr-code-hint{color:#6c757d;font-size:.95rem;margin:0;display:flex;align-items:center;justify-content:center;gap:.5rem;line-height:1.5}.qr-code-hint i{color:#3498db;font-size:.9rem}@media (max-width: 768px){.footer-content{padding:0 1rem}.footer-text{font-size:.85rem}.footer-right{gap:.75rem}.privacy-link,.footer-copyright{font-size:.75rem}}@media (max-width: 480px){.app-footer{display:none}.contact-modal{width:95%;margin:.5rem}.modal-content{padding:1rem}.qr-code-container{width:150px;height:150px}.modal-header{padding:.75rem}.modal-header h3{font-size:1rem}.qr-code-hint{font-size:.8rem}}
