:root{font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;min-height:100vh;background:linear-gradient(135deg,#f8f9fa,#e9ecef);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.drag-over{border-color:var(--bs-primary)!important;background-color:rgba(var(--bs-primary-rgb),.1)!important}.upload-area{transition:all .2s ease-in-out}.upload-area:hover{border-color:var(--bs-primary);background-color:rgba(var(--bs-primary-rgb),.05)}.progress-bar{transition:width .3s ease}.upload-icon{font-size:3rem;transition:color .2s ease-in-out}@media (max-width: 768px){.upload-icon{font-size:2rem}.card-body{padding:1rem}}.login-container{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#667eea,#764ba2);padding:1rem}.login-card{background:#fff;border-radius:12px;box-shadow:0 10px 25px #0000001a;padding:2rem;width:100%;max-width:400px;text-align:center}.login-header h1{color:#333;margin:0 0 .5rem;font-size:1.75rem;font-weight:600}.login-header p{color:#666;margin:0 0 2rem;font-size:.95rem;line-height:1.4}.login-content{display:flex;flex-direction:column;gap:1rem}.error-message{display:flex;align-items:center;gap:.5rem;padding:.75rem;background-color:#fef2f2;border:1px solid #fecaca;border-radius:6px;color:#dc2626;font-size:.875rem;text-align:left}.error-icon{flex-shrink:0}.login-button{display:flex;align-items:center;justify-content:center;gap:.75rem;width:100%;padding:.875rem 1.5rem;background-color:#4f46e5;color:#fff;border:none;border-radius:6px;font-size:1rem;font-weight:500;cursor:pointer;transition:all .2s ease;min-height:48px}.login-button:hover:not(:disabled){background-color:#3730a3;transform:translateY(-1px);box-shadow:0 4px 12px #4f46e54d}.login-button:active:not(:disabled){transform:translateY(0)}.login-button:disabled{opacity:.7;cursor:not-allowed;transform:none}.login-button.loading{pointer-events:none}.spinner{width:16px;height:16px;border:2px solid transparent;border-top:2px solid currentColor;border-radius:50%;animation:spin 1s linear infinite}.federate-icon{font-size:1.2rem}.login-info{margin-top:1rem;padding-top:1rem;border-top:1px solid #e5e7eb}.login-info p{color:#6b7280;font-size:.8rem;line-height:1.4;margin:0}@media (max-width: 480px){.login-container{padding:.5rem}.login-card{padding:1.5rem}.login-header h1{font-size:1.5rem}.login-button{padding:1rem 1.5rem}}@media (prefers-contrast: high){.login-card{border:2px solid #333}.login-button{border:2px solid #000}.error-message{border-width:2px}}@media (prefers-reduced-motion: reduce){.login-button{transition:none}.login-button:hover:not(:disabled){transform:none}.spinner{animation:none}}.fallback-button{background-color:#6b7280;margin-top:.5rem}.fallback-button:hover:not(:disabled){background-color:#4b5563;box-shadow:0 4px 12px #6b72804d}.login-button:focus-visible{outline:2px solid #2563eb;outline-offset:2px}.protected-route-loading{min-height:100vh;display:flex;align-items:center;justify-content:center;background-color:#f8fafc}.loading-container{display:flex;flex-direction:column;align-items:center;gap:1rem;padding:2rem;text-align:center}.loading-spinner{width:40px;height:40px;border:3px solid #e5e7eb;border-top:3px solid #3b82f6;border-radius:50%;animation:spin 1s linear infinite}.loading-container p{color:#6b7280;font-size:1rem;margin:0}.oauth-callback-info{color:#4b5563!important;font-size:.875rem!important;font-style:italic;max-width:300px}@media (prefers-reduced-motion: reduce){.loading-spinner{animation:none;border-top-color:#6b7280}}.user-profile{position:relative;display:inline-block}.user-profile-button{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;background:#fff;border:1px solid #e5e7eb;border-radius:8px;cursor:pointer;transition:all .2s ease;font-size:.875rem;color:#374151;min-height:40px}.user-profile-button:hover:not(:disabled){background-color:#f9fafb;border-color:#d1d5db;box-shadow:0 2px 4px #0000000d}.user-profile-button:disabled{opacity:.6;cursor:not-allowed}.user-avatar{width:28px;height:28px;border-radius:50%;background:linear-gradient(135deg,#667eea,#764ba2);display:flex;align-items:center;justify-content:center;flex-shrink:0}.user-initials{color:#fff;font-size:.75rem;font-weight:600}.user-name{max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}.dropdown-arrow{font-size:.7rem;transition:transform .2s ease;color:#9ca3af}.dropdown-arrow.open{transform:rotate(180deg)}.user-dropdown{position:absolute;top:100%;right:0;margin-top:.25rem;background:#fff;border:1px solid #e5e7eb;border-radius:8px;box-shadow:0 10px 25px #0000001a;min-width:200px;z-index:1000;overflow:hidden}.user-info{padding:1rem}.user-details{display:flex;flex-direction:column;gap:.25rem}.user-display-name{font-weight:600;color:#111827;margin:0;font-size:.875rem}.user-email{color:#6b7280;margin:0;font-size:.75rem;word-break:break-all}.dropdown-divider{height:1px;background-color:#e5e7eb;margin:0}.sign-out-button{display:flex;align-items:center;gap:.5rem;width:100%;padding:.75rem 1rem;background:none;border:none;text-align:left;cursor:pointer;transition:background-color .2s ease;font-size:.875rem;color:#dc2626}.sign-out-button:hover:not(:disabled){background-color:#fef2f2}.sign-out-button:disabled{opacity:.6;cursor:not-allowed}.sign-out-icon{font-size:1rem}.spinner{width:14px;height:14px;border:2px solid transparent;border-top:2px solid currentColor;border-radius:50%;animation:spin 1s linear infinite}.dropdown-overlay{position:fixed;inset:0;z-index:999}@media (max-width: 640px){.user-name{display:none}.user-dropdown{right:-.5rem;min-width:180px}}@media (prefers-contrast: high){.user-profile-button,.user-dropdown{border-width:2px}}@media (prefers-reduced-motion: reduce){.user-profile-button,.dropdown-arrow,.sign-out-button{transition:none}.spinner{animation:none}}.user-profile-button:focus-visible{outline:2px solid #2563eb;outline-offset:2px}.sign-out-button:focus-visible{outline:2px solid #2563eb;outline-offset:-2px}.auth-status{display:flex;align-items:center;justify-content:flex-end}.auth-status.loading{padding:.5rem}.auth-loading-indicator{display:flex;align-items:center;gap:.5rem}.auth-spinner{width:16px;height:16px;border:2px solid #e5e7eb;border-top:2px solid #3b82f6;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.auth-indicator{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;border-radius:6px;font-size:.875rem}.status-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.status-dot.online{background-color:#10b981;box-shadow:0 0 0 2px #10b98133}.status-dot.offline{background-color:#ef4444;box-shadow:0 0 0 2px #ef444433}.status-text{color:#6b7280;font-weight:500}.auth-status.unauthenticated .auth-indicator{background-color:#fef2f2;border:1px solid #fecaca}.auth-status.authenticated.compact .auth-indicator{background-color:#f0fdf4;border:1px solid #bbf7d0}.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 (prefers-reduced-motion: reduce){.auth-spinner{animation:none;border-top-color:#6b7280}}@media (max-width: 640px){.status-text{display:none}.auth-indicator{padding:.5rem}}@media (prefers-contrast: high){.btn-primary{background-color:#000!important;border-color:#000!important;color:#fff!important}.btn-outline-primary{border-color:#000!important;color:#000!important}.btn-outline-primary:hover{background-color:#000!important;color:#fff!important}.text-primary{color:#000!important}.bg-primary{background-color:#000!important}.alert-success,.alert-danger{background-color:#fff!important;border-color:#000!important;color:#000!important}}@media (prefers-reduced-motion: reduce){*{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.spinner-border{animation:none!important}.progress-bar,.fade{transition:none!important}}.btn:focus,.form-control:focus,.form-select:focus{outline:2px solid #0066cc!important;outline-offset:2px!important;box-shadow:0 0 0 .2rem #0066cc40!important}.skip-link{position:absolute;top:-40px;left:6px;background:#000;color:#fff;padding:8px;text-decoration:none;z-index:9999;border-radius:4px}.skip-link:focus{top:6px}.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.sr-only-focusable:focus{position:static!important;width:auto!important;height:auto!important;padding:inherit!important;margin:inherit!important;overflow:visible!important;clip:auto!important;white-space:normal!important}.text-muted{color:#495057!important}.file-upload-area:focus-within{outline:2px solid #0066cc;outline-offset:2px}.chart-wrapper:focus-within{outline:2px solid #0066cc;outline-offset:2px}.btn{min-height:44px;min-width:44px}.form-control{min-height:44px}.navbar-nav .nav-link{padding:.75rem 1rem}.table th{font-weight:600;background-color:#f8f9fa}.table-responsive{border:1px solid #dee2e6;border-radius:.375rem}.alert-danger{border-left:4px solid #dc3545}.alert-warning{border-left:4px solid #ffc107}.alert-success{border-left:4px solid #28a745}.alert-info{border-left:4px solid #17a2b8}.spinner-border{width:2rem;height:2rem}.progress{height:1.5rem;background-color:#e9ecef;border-radius:.375rem;overflow:hidden}.progress-bar{font-size:.875rem;font-weight:500;line-height:1.5rem;text-align:center;white-space:nowrap;transition:width .6s ease}.modal-dialog{margin:1.75rem auto}.modal-header{border-bottom:1px solid #dee2e6;padding:1rem 1.5rem}.modal-body{padding:1.5rem}.modal-footer{border-top:1px solid #dee2e6;padding:1rem 1.5rem}.card{border:1px solid rgba(0,0,0,.125)}.card-header{border-bottom:1px solid rgba(0,0,0,.125);font-weight:500}.badge{font-size:.875em;font-weight:500;padding:.375em .75em}.accordion-button{font-weight:500;text-align:left}.accordion-button:not(.collapsed){background-color:#e7f1ff;color:#0c63e4}.accordion-button:focus{border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem #0d6efd40}@media (max-width: 576px){.display-4{font-size:2rem}.lead{font-size:1.1rem}h1,.h1{font-size:1.75rem}h2,.h2{font-size:1.5rem}h3,.h3{font-size:1.25rem}}@media print{.navbar,.btn,.modal,.spinner-border{display:none!important}.container{max-width:none!important;width:100%!important}.card{border:1px solid #000!important;break-inside:avoid}.alert{border:1px solid #000!important;background:#fff!important;color:#000!important}}.app-container{min-height:100vh;background:linear-gradient(135deg,#f8f9fa,#e9ecef)}.navbar-brand{font-size:1.5rem;letter-spacing:-.5px}.navbar{backdrop-filter:blur(10px);border-bottom:1px solid rgba(255,255,255,.1)}.card{border-radius:12px;transition:all .3s ease}.card:hover{transform:translateY(-2px);box-shadow:0 8px 25px #0000001a!important}.card-header{border-radius:12px 12px 0 0!important;font-weight:600}.spinner-border-lg{width:3rem;height:3rem;border-width:.3em}.progress{height:8px;border-radius:4px;background-color:#007bff1a}.progress-bar{border-radius:4px;transition:width .6s ease}.badge{padding:.5em .75em;border-radius:6px;font-weight:500}.alert{border-radius:12px;border:none;box-shadow:0 2px 10px #0000000d}.alert-heading{font-weight:600;display:flex;align-items:center}.btn{border-radius:8px;font-weight:500;transition:all .2s ease}.btn:hover{transform:translateY(-1px)}html{scroll-behavior:smooth}.chart-wrapper{min-height:400px;width:100%;overflow:hidden}.trend-charts-container{padding-right:10px}.trend-charts-container .chart-wrapper{overflow:hidden;position:relative}.trend-charts-container .card-body{overflow:hidden}@media (max-width: 768px){.chart-wrapper{min-height:300px}}.card-header i{font-size:1.2em}.spinner-border-lg{width:3rem;height:3rem}.modebar{background:#fffffff2!important;border-radius:8px!important;box-shadow:0 2px 10px #0000001a!important;border:1px solid rgba(0,0,0,.1)!important;padding:4px!important;margin:8px!important}.modebar-btn{border-radius:4px!important;margin:2px!important;transition:all .2s ease!important}.modebar-btn:hover{background:#007bff1a!important;transform:scale(1.05)!important}.modebar-btn.active{background:#007bff33!important}.chart-wrapper:hover .modebar{opacity:1!important}.modebar{opacity:.7!important;transition:opacity .3s ease!important}.js-plotly-plot .plotly .modebar{top:10px!important;right:10px!important}.hoverlayer .hovertext{border-radius:8px!important;box-shadow:0 4px 12px #00000026!important}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}
