/* Toast Notifications */ .toast-notification { position: fixed; top: 20px; right: 20px; min-width: 300px; max-width: 500px; padding: 16px 20px; background: white; border-radius: 8px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); display: flex; align-items: center; gap: 12px; z-index: 10000; opacity: 0; transform: translateX(400px); transition: all 0.3s cubic-bezier(0.68, -0.55, 0.265, 1.55); } .toast-notification.show { opacity: 1; transform: translateX(0); } .toast-icon { width: 24px; height: 24px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 14px; font-weight: bold; flex-shrink: 0; } .toast-success { border-left: 4px solid #28a745; } .toast-success .toast-icon { background: #28a745; color: white; } .toast-error { border-left: 4px solid #dc3545; } .toast-error .toast-icon { background: #dc3545; color: white; } .toast-warning { border-left: 4px solid #ffc107; } .toast-warning .toast-icon { background: #ffc107; color: #000; } .toast-info { border-left: 4px solid #17a2b8; } .toast-info .toast-icon { background: #17a2b8; color: white; } .toast-message { flex: 1; color: #333; font-size: 14px; line-height: 1.4; } .toast-close { background: none; border: none; font-size: 20px; color: #999; cursor: pointer; padding: 0; width: 24px; height: 24px; display: flex; align-items: center; justify-content: center; transition: color 0.2s; flex-shrink: 0; } .toast-close:hover { color: #333; } .toast-close:focus { outline: 2px solid #667eea; outline-offset: 2px; border-radius: 4px; } /* Screen Reader Only */ .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; } /* Skip to Main Content Link */ .skip-link { position: absolute; top: -40px; left: 0; background: #667eea; color: white; padding: 8px 16px; text-decoration: none; border-radius: 0 0 4px 0; z-index: 10001; } .skip-link:focus { top: 0; } /* Focus Styles - Accessibility */ *:focus-visible { outline: 2px solid #667eea; outline-offset: 2px; } button:focus-visible, a:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible { outline: 2px solid #667eea; outline-offset: 2px; } /* Remove outline for mouse users */ *:focus:not(:focus-visible) { outline: none; } /* Loading Spinner */ .spinner { width: 40px; height: 40px; border: 4px solid #f3f3f3; border-top: 4px solid #667eea; border-radius: 50%; animation: spin 1s linear infinite; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } .spinner-small { width: 20px; height: 20px; border-width: 2px; } /* Loading Overlay */ .loading-overlay { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0, 0, 0, 0.5); display: flex; align-items: center; justify-content: center; z-index: 9999; } .loading-overlay .spinner { border-color: rgba(255, 255, 255, 0.3); border-top-color: white; } /* Responsive Images */ img { max-width: 100%; height: auto; } /* Responsive Typography */ html { font-size: 16px; } @media (max-width: 768px) { html { font-size: 14px; } } @media (max-width: 480px) { html { font-size: 13px; } } /* Responsive Containers */ .container-fluid { width: 100%; padding-right: 15px; padding-left: 15px; margin-right: auto; margin-left: auto; } .container { width: 100%; padding-right: 15px; padding-left: 15px; margin-right: auto; margin-left: auto; } @media (min-width: 576px) { .container { max-width: 540px; } } @media (min-width: 768px) { .container { max-width: 720px; } } @media (min-width: 992px) { .container { max-width: 960px; } } @media (min-width: 1200px) { .container { max-width: 1140px; } } @media (min-width: 1400px) { .container { max-width: 1320px; } } /* Mobile Responsive Utilities */ @media (max-width: 768px) { .toast-notification { right: 10px; left: 10px; min-width: auto; max-width: calc(100% - 20px); } .hide-mobile { display: none !important; } } @media (min-width: 769px) { .show-mobile-only { display: none !important; } } /* Tablet Specific */ @media (min-width: 768px) and (max-width: 1024px) { .hide-tablet { display: none !important; } } /* Desktop Specific */ @media (min-width: 1025px) { .hide-desktop { display: none !important; } } /* Reduced Motion */ @media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; } } /* High Contrast Mode */ @media (prefers-contrast: high) { * { border-width: 2px !important; } button, a { text-decoration: underline; } } /* Dark Mode Support */ @media (prefers-color-scheme: dark) { .toast-notification { background: #2d3748; color: #fff; } .toast-message { color: #e2e8f0; } .toast-close { color: #a0aec0; } .toast-close:hover { color: #e2e8f0; } } /* Print Styles */ @media print { .no-print, .toast-notification, .skip-link, button, nav { display: none !important; } a[href]:after { content: " (" attr(href) ")"; } img { max-width: 100% !important; } }