diff --git a/backend/__pycache__/models.cpython-313.pyc b/backend/__pycache__/models.cpython-313.pyc index 11ecb045..49303f58 100644 Binary files a/backend/__pycache__/models.cpython-313.pyc and b/backend/__pycache__/models.cpython-313.pyc differ diff --git a/backend/app.py b/backend/app.py index d5d5d76f..54be710d 100644 --- a/backend/app.py +++ b/backend/app.py @@ -2129,6 +2129,100 @@ def create_user_api(): user_logger.error(f"Fehler beim Erstellen eines Benutzers: {str(e)}") return jsonify({"error": "Interner Serverfehler"}), 500 +@app.route("/api/admin/users/", methods=["GET"]) +@login_required +@admin_required +def get_user_api(user_id): + """Gibt einen einzelnen Benutzer zurück (nur für Admins).""" + try: + db_session = get_db_session() + + user = db_session.get(User, user_id) + if not user: + db_session.close() + return jsonify({"error": "Benutzer nicht gefunden"}), 404 + + user_data = { + "id": user.id, + "username": user.username, + "email": user.email, + "name": user.name or "", + "role": user.role, + "is_admin": user.is_admin, + "is_active": user.is_active, + "created_at": user.created_at.isoformat() if user.created_at else None, + "last_login": user.last_login.isoformat() if hasattr(user, 'last_login') and user.last_login else None + } + + db_session.close() + return jsonify({"success": True, "user": user_data}) + + except Exception as e: + user_logger.error(f"Fehler beim Abrufen des Benutzers {user_id}: {str(e)}") + return jsonify({"error": "Interner Serverfehler"}), 500 + +@app.route("/api/admin/users/", methods=["PUT"]) +@login_required +@admin_required +def update_user_api(user_id): + """Aktualisiert einen Benutzer (nur für Admins).""" + try: + data = request.json + db_session = get_db_session() + + user = db_session.get(User, user_id) + if not user: + db_session.close() + return jsonify({"error": "Benutzer nicht gefunden"}), 404 + + # Prüfen, ob bereits ein anderer Benutzer mit dieser E-Mail existiert + if "email" in data and data["email"] != user.email: + existing_user = db_session.query(User).filter( + User.email == data["email"], + User.id != user_id + ).first() + if existing_user: + db_session.close() + return jsonify({"error": "Ein Benutzer mit dieser E-Mail-Adresse existiert bereits"}), 400 + + # Aktualisierbare Felder + if "email" in data: + user.email = data["email"] + if "username" in data: + user.username = data["username"] + if "name" in data: + user.name = data["name"] + if "is_admin" in data: + user.role = "admin" if data["is_admin"] else "user" + if "is_active" in data: + user.is_active = data["is_active"] + + # Passwort separat behandeln + if "password" in data and data["password"]: + user.set_password(data["password"]) + + db_session.commit() + + user_data = { + "id": user.id, + "username": user.username, + "email": user.email, + "name": user.name, + "role": user.role, + "is_admin": user.is_admin, + "is_active": user.is_active, + "created_at": user.created_at.isoformat() if user.created_at else None + } + + db_session.close() + + user_logger.info(f"Benutzer {user_id} aktualisiert von Admin {current_user.id}") + return jsonify({"success": True, "user": user_data}) + + except Exception as e: + user_logger.error(f"Fehler beim Aktualisieren des Benutzers {user_id}: {str(e)}") + return jsonify({"error": "Interner Serverfehler"}), 500 + @app.route("/api/admin/printers//toggle", methods=["POST"]) @login_required def toggle_printer_power(printer_id): diff --git a/backend/blueprints/admin_api.py b/backend/blueprints/admin_api.py new file mode 100644 index 00000000..907973e2 --- /dev/null +++ b/backend/blueprints/admin_api.py @@ -0,0 +1,489 @@ +""" +Admin-API Blueprint für erweiterte Verwaltungsfunktionen + +Dieses Blueprint stellt zusätzliche Admin-API-Endpunkte bereit für: +- System-Backups +- Datenbank-Optimierung +- Cache-Verwaltung + +Autor: MYP Team +Datum: 2025-06-01 +""" + +import os +import shutil +import zipfile +import sqlite3 +import glob +from datetime import datetime, timedelta +from flask import Blueprint, request, jsonify, current_app +from flask_login import login_required, current_user +from functools import wraps +from utils.logging_config import get_logger + +# Blueprint erstellen +admin_api_blueprint = Blueprint('admin_api', __name__, url_prefix='/api/admin') + +# Logger initialisieren +admin_logger = get_logger("admin_api") + +def admin_required(f): + """Decorator um sicherzustellen, dass nur Admins auf Endpunkte zugreifen können.""" + @wraps(f) + @login_required + def decorated_function(*args, **kwargs): + if not current_user.is_authenticated or current_user.role != 'admin': + admin_logger.warning(f"Unauthorized admin access attempt by user {getattr(current_user, 'id', 'anonymous')}") + return jsonify({'error': 'Admin-Berechtigung erforderlich'}), 403 + return f(*args, **kwargs) + return decorated_function + +@admin_api_blueprint.route('/backup/create', methods=['POST']) +@admin_required +def create_backup(): + """ + Erstellt ein manuelles System-Backup. + + Erstellt eine Sicherung aller wichtigen Systemdaten einschließlich + Datenbank, Konfigurationsdateien und Benutzer-Uploads. + + Returns: + JSON: Erfolgs-Status und Backup-Informationen + """ + try: + admin_logger.info(f"Backup-Erstellung angefordert von Admin {current_user.username}") + + # Backup-Verzeichnis sicherstellen + backup_dir = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'database', 'backups') + os.makedirs(backup_dir, exist_ok=True) + + # Eindeutigen Backup-Namen erstellen + timestamp = datetime.now().strftime('%Y%m%d_%H%M%S') + backup_name = f"system_backup_{timestamp}.zip" + backup_path = os.path.join(backup_dir, backup_name) + + created_files = [] + backup_size = 0 + + with zipfile.ZipFile(backup_path, 'w', zipfile.ZIP_DEFLATED) as zipf: + # 1. Datenbank-Datei hinzufügen + try: + from config.settings import DATABASE_PATH + if os.path.exists(DATABASE_PATH): + zipf.write(DATABASE_PATH, 'database/main.db') + created_files.append('database/main.db') + admin_logger.debug("✅ Hauptdatenbank zur Sicherung hinzugefügt") + + # WAL- und SHM-Dateien falls vorhanden + wal_path = DATABASE_PATH + '-wal' + shm_path = DATABASE_PATH + '-shm' + + if os.path.exists(wal_path): + zipf.write(wal_path, 'database/main.db-wal') + created_files.append('database/main.db-wal') + + if os.path.exists(shm_path): + zipf.write(shm_path, 'database/main.db-shm') + created_files.append('database/main.db-shm') + + except Exception as db_error: + admin_logger.warning(f"Fehler beim Hinzufügen der Datenbank: {str(db_error)}") + + # 2. Konfigurationsdateien + try: + config_dir = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'config') + if os.path.exists(config_dir): + for root, dirs, files in os.walk(config_dir): + for file in files: + if file.endswith(('.py', '.json', '.yaml', '.yml', '.toml')): + file_path = os.path.join(root, file) + arc_path = os.path.relpath(file_path, os.path.dirname(os.path.dirname(__file__))) + zipf.write(file_path, arc_path) + created_files.append(arc_path) + admin_logger.debug("✅ Konfigurationsdateien zur Sicherung hinzugefügt") + except Exception as config_error: + admin_logger.warning(f"Fehler beim Hinzufügen der Konfiguration: {str(config_error)}") + + # 3. Wichtige User-Uploads (limitiert auf die letzten 1000 Dateien) + try: + uploads_dir = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'uploads') + if os.path.exists(uploads_dir): + file_count = 0 + max_files = 1000 # Limit für Performance + + for root, dirs, files in os.walk(uploads_dir): + for file in files[:max_files - file_count]: + if file_count >= max_files: + break + + file_path = os.path.join(root, file) + file_size = os.path.getsize(file_path) + + # Nur Dateien unter 50MB hinzufügen + if file_size < 50 * 1024 * 1024: + arc_path = os.path.relpath(file_path, os.path.dirname(os.path.dirname(__file__))) + zipf.write(file_path, arc_path) + created_files.append(arc_path) + file_count += 1 + + if file_count >= max_files: + break + + admin_logger.debug(f"✅ {file_count} Upload-Dateien zur Sicherung hinzugefügt") + except Exception as uploads_error: + admin_logger.warning(f"Fehler beim Hinzufügen der Uploads: {str(uploads_error)}") + + # 4. System-Logs (nur die letzten 100 Log-Dateien) + try: + logs_dir = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'logs') + if os.path.exists(logs_dir): + log_files = [] + for root, dirs, files in os.walk(logs_dir): + for file in files: + if file.endswith(('.log', '.txt')): + file_path = os.path.join(root, file) + log_files.append((file_path, os.path.getmtime(file_path))) + + # Sortiere nach Datum (neueste zuerst) und nimm nur die letzten 100 + log_files.sort(key=lambda x: x[1], reverse=True) + for file_path, _ in log_files[:100]: + arc_path = os.path.relpath(file_path, os.path.dirname(os.path.dirname(__file__))) + zipf.write(file_path, arc_path) + created_files.append(arc_path) + + admin_logger.debug(f"✅ {len(log_files[:100])} Log-Dateien zur Sicherung hinzugefügt") + except Exception as logs_error: + admin_logger.warning(f"Fehler beim Hinzufügen der Logs: {str(logs_error)}") + + # Backup-Größe bestimmen + if os.path.exists(backup_path): + backup_size = os.path.getsize(backup_path) + + admin_logger.info(f"✅ System-Backup erfolgreich erstellt: {backup_name} ({backup_size / 1024 / 1024:.2f} MB)") + + return jsonify({ + 'success': True, + 'message': f'Backup erfolgreich erstellt: {backup_name}', + 'backup_info': { + 'filename': backup_name, + 'size_bytes': backup_size, + 'size_mb': round(backup_size / 1024 / 1024, 2), + 'files_count': len(created_files), + 'created_at': datetime.now().isoformat(), + 'path': backup_path + } + }) + + except Exception as e: + admin_logger.error(f"❌ Fehler beim Erstellen des Backups: {str(e)}") + return jsonify({ + 'success': False, + 'message': f'Fehler beim Erstellen des Backups: {str(e)}' + }), 500 + +@admin_api_blueprint.route('/database/optimize', methods=['POST']) +@admin_required +def optimize_database(): + """ + Führt Datenbank-Optimierung durch. + + Optimiert die SQLite-Datenbank durch VACUUM, ANALYZE und weitere + Wartungsoperationen für bessere Performance. + + Returns: + JSON: Erfolgs-Status und Optimierungs-Statistiken + """ + try: + admin_logger.info(f"Datenbank-Optimierung angefordert von Admin {current_user.username}") + + from config.settings import DATABASE_PATH + + optimization_results = { + 'vacuum_completed': False, + 'analyze_completed': False, + 'integrity_check': False, + 'wal_checkpoint': False, + 'size_before': 0, + 'size_after': 0, + 'space_saved': 0 + } + + # Datenbankgröße vor Optimierung + if os.path.exists(DATABASE_PATH): + optimization_results['size_before'] = os.path.getsize(DATABASE_PATH) + + # Verbindung zur Datenbank herstellen + conn = sqlite3.connect(DATABASE_PATH, timeout=30.0) + cursor = conn.cursor() + + try: + # 1. Integritätsprüfung + admin_logger.debug("🔍 Führe Integritätsprüfung durch...") + cursor.execute("PRAGMA integrity_check") + integrity_result = cursor.fetchone() + optimization_results['integrity_check'] = integrity_result[0] == 'ok' + + if not optimization_results['integrity_check']: + admin_logger.warning(f"⚠️ Integritätsprüfung ergab: {integrity_result[0]}") + else: + admin_logger.debug("✅ Integritätsprüfung erfolgreich") + + # 2. WAL-Checkpoint (falls WAL-Modus aktiv) + try: + admin_logger.debug("🔄 Führe WAL-Checkpoint durch...") + cursor.execute("PRAGMA wal_checkpoint(TRUNCATE)") + optimization_results['wal_checkpoint'] = True + admin_logger.debug("✅ WAL-Checkpoint erfolgreich") + except Exception as wal_error: + admin_logger.debug(f"ℹ️ WAL-Checkpoint nicht möglich: {str(wal_error)}") + + # 3. ANALYZE - Statistiken aktualisieren + admin_logger.debug("📊 Aktualisiere Datenbank-Statistiken...") + cursor.execute("ANALYZE") + optimization_results['analyze_completed'] = True + admin_logger.debug("✅ ANALYZE erfolgreich") + + # 4. VACUUM - Datenbank komprimieren und reorganisieren + admin_logger.debug("🗜️ Komprimiere und reorganisiere Datenbank...") + cursor.execute("VACUUM") + optimization_results['vacuum_completed'] = True + admin_logger.debug("✅ VACUUM erfolgreich") + + # 5. Performance-Optimierungen + try: + # Cache-Größe optimieren + cursor.execute("PRAGMA cache_size = 10000") # 10MB Cache + + # Journal-Modus auf WAL setzen für bessere Concurrent-Performance + cursor.execute("PRAGMA journal_mode = WAL") + + # Synchronous auf NORMAL für Balance zwischen Performance und Sicherheit + cursor.execute("PRAGMA synchronous = NORMAL") + + # Page-Größe optimieren (falls noch nicht gesetzt) + cursor.execute("PRAGMA page_size = 4096") + + admin_logger.debug("✅ Performance-Optimierungen angewendet") + except Exception as perf_error: + admin_logger.warning(f"⚠️ Performance-Optimierungen teilweise fehlgeschlagen: {str(perf_error)}") + + finally: + cursor.close() + conn.close() + + # Datenbankgröße nach Optimierung + if os.path.exists(DATABASE_PATH): + optimization_results['size_after'] = os.path.getsize(DATABASE_PATH) + optimization_results['space_saved'] = optimization_results['size_before'] - optimization_results['size_after'] + + # Ergebnisse loggen + space_saved_mb = optimization_results['space_saved'] / 1024 / 1024 + admin_logger.info(f"✅ Datenbank-Optimierung abgeschlossen - {space_saved_mb:.2f} MB Speicher gespart") + + return jsonify({ + 'success': True, + 'message': 'Datenbank erfolgreich optimiert', + 'results': { + 'vacuum_completed': optimization_results['vacuum_completed'], + 'analyze_completed': optimization_results['analyze_completed'], + 'integrity_check_passed': optimization_results['integrity_check'], + 'wal_checkpoint_completed': optimization_results['wal_checkpoint'], + 'size_before_mb': round(optimization_results['size_before'] / 1024 / 1024, 2), + 'size_after_mb': round(optimization_results['size_after'] / 1024 / 1024, 2), + 'space_saved_mb': round(space_saved_mb, 2), + 'optimization_timestamp': datetime.now().isoformat() + } + }) + + except Exception as e: + admin_logger.error(f"❌ Fehler bei Datenbank-Optimierung: {str(e)}") + return jsonify({ + 'success': False, + 'message': f'Fehler bei Datenbank-Optimierung: {str(e)}' + }), 500 + +@admin_api_blueprint.route('/cache/clear', methods=['POST']) +@admin_required +def clear_cache(): + """ + Leert den System-Cache. + + Entfernt alle temporären Dateien, Cache-Verzeichnisse und + Python-Bytecode um Speicher freizugeben und Performance zu verbessern. + + Returns: + JSON: Erfolgs-Status und Lösch-Statistiken + """ + try: + admin_logger.info(f"Cache-Leerung angefordert von Admin {current_user.username}") + + cleared_stats = { + 'files_deleted': 0, + 'dirs_deleted': 0, + 'space_freed': 0, + 'categories': {} + } + + app_root = os.path.dirname(os.path.dirname(__file__)) + + # 1. Python-Bytecode-Cache leeren (__pycache__) + try: + pycache_count = 0 + pycache_size = 0 + + for root, dirs, files in os.walk(app_root): + if '__pycache__' in root: + for file in files: + file_path = os.path.join(root, file) + try: + pycache_size += os.path.getsize(file_path) + os.remove(file_path) + pycache_count += 1 + except Exception: + pass + + # Versuche das __pycache__-Verzeichnis zu löschen + try: + os.rmdir(root) + cleared_stats['dirs_deleted'] += 1 + except Exception: + pass + + cleared_stats['categories']['python_bytecode'] = { + 'files': pycache_count, + 'size_mb': round(pycache_size / 1024 / 1024, 2) + } + cleared_stats['files_deleted'] += pycache_count + cleared_stats['space_freed'] += pycache_size + + admin_logger.debug(f"✅ Python-Bytecode-Cache: {pycache_count} Dateien, {pycache_size / 1024 / 1024:.2f} MB") + + except Exception as pycache_error: + admin_logger.warning(f"⚠️ Fehler beim Leeren des Python-Cache: {str(pycache_error)}") + + # 2. Temporäre Dateien im uploads/temp Verzeichnis + try: + temp_count = 0 + temp_size = 0 + temp_dir = os.path.join(app_root, 'uploads', 'temp') + + if os.path.exists(temp_dir): + for root, dirs, files in os.walk(temp_dir): + for file in files: + file_path = os.path.join(root, file) + try: + temp_size += os.path.getsize(file_path) + os.remove(file_path) + temp_count += 1 + except Exception: + pass + + cleared_stats['categories']['temp_uploads'] = { + 'files': temp_count, + 'size_mb': round(temp_size / 1024 / 1024, 2) + } + cleared_stats['files_deleted'] += temp_count + cleared_stats['space_freed'] += temp_size + + admin_logger.debug(f"✅ Temporäre Upload-Dateien: {temp_count} Dateien, {temp_size / 1024 / 1024:.2f} MB") + + except Exception as temp_error: + admin_logger.warning(f"⚠️ Fehler beim Leeren des Temp-Verzeichnisses: {str(temp_error)}") + + # 3. System-Cache-Verzeichnisse (falls vorhanden) + try: + cache_count = 0 + cache_size = 0 + + cache_dirs = [ + os.path.join(app_root, 'static', 'cache'), + os.path.join(app_root, 'cache'), + os.path.join(app_root, '.cache') + ] + + for cache_dir in cache_dirs: + if os.path.exists(cache_dir): + for root, dirs, files in os.walk(cache_dir): + for file in files: + file_path = os.path.join(root, file) + try: + cache_size += os.path.getsize(file_path) + os.remove(file_path) + cache_count += 1 + except Exception: + pass + + cleared_stats['categories']['system_cache'] = { + 'files': cache_count, + 'size_mb': round(cache_size / 1024 / 1024, 2) + } + cleared_stats['files_deleted'] += cache_count + cleared_stats['space_freed'] += cache_size + + admin_logger.debug(f"✅ System-Cache: {cache_count} Dateien, {cache_size / 1024 / 1024:.2f} MB") + + except Exception as cache_error: + admin_logger.warning(f"⚠️ Fehler beim Leeren des System-Cache: {str(cache_error)}") + + # 4. Alte Log-Dateien (älter als 30 Tage) + try: + logs_count = 0 + logs_size = 0 + logs_dir = os.path.join(app_root, 'logs') + cutoff_date = datetime.now().timestamp() - (30 * 24 * 60 * 60) # 30 Tage + + if os.path.exists(logs_dir): + for root, dirs, files in os.walk(logs_dir): + for file in files: + if file.endswith(('.log', '.log.1', '.log.2', '.log.3')): + file_path = os.path.join(root, file) + try: + if os.path.getmtime(file_path) < cutoff_date: + logs_size += os.path.getsize(file_path) + os.remove(file_path) + logs_count += 1 + except Exception: + pass + + cleared_stats['categories']['old_logs'] = { + 'files': logs_count, + 'size_mb': round(logs_size / 1024 / 1024, 2) + } + cleared_stats['files_deleted'] += logs_count + cleared_stats['space_freed'] += logs_size + + admin_logger.debug(f"✅ Alte Log-Dateien: {logs_count} Dateien, {logs_size / 1024 / 1024:.2f} MB") + + except Exception as logs_error: + admin_logger.warning(f"⚠️ Fehler beim Leeren alter Log-Dateien: {str(logs_error)}") + + # 5. Application-Level Cache leeren (falls Models-Cache existiert) + try: + from models import clear_model_cache + clear_model_cache() + admin_logger.debug("✅ Application-Level Cache geleert") + except (ImportError, AttributeError): + admin_logger.debug("ℹ️ Kein Application-Level Cache verfügbar") + + # Ergebnisse zusammenfassen + total_space_mb = cleared_stats['space_freed'] / 1024 / 1024 + admin_logger.info(f"✅ Cache-Leerung abgeschlossen: {cleared_stats['files_deleted']} Dateien, {total_space_mb:.2f} MB freigegeben") + + return jsonify({ + 'success': True, + 'message': f'Cache erfolgreich geleert - {total_space_mb:.2f} MB freigegeben', + 'statistics': { + 'total_files_deleted': cleared_stats['files_deleted'], + 'total_dirs_deleted': cleared_stats['dirs_deleted'], + 'total_space_freed_mb': round(total_space_mb, 2), + 'categories': cleared_stats['categories'], + 'cleanup_timestamp': datetime.now().isoformat() + } + }) + + except Exception as e: + admin_logger.error(f"❌ Fehler beim Leeren des Cache: {str(e)}") + return jsonify({ + 'success': False, + 'message': f'Fehler beim Leeren des Cache: {str(e)}' + }), 500 \ No newline at end of file diff --git a/backend/database/myp.db b/backend/database/myp.db index 63ebb090..df4be5db 100644 Binary files a/backend/database/myp.db and b/backend/database/myp.db differ diff --git a/backend/database/myp.db-shm b/backend/database/myp.db-shm index 8e4a2cd7..9e930c7d 100644 Binary files a/backend/database/myp.db-shm and b/backend/database/myp.db-shm differ diff --git a/backend/database/myp.db-wal b/backend/database/myp.db-wal index b74489b4..b47fe35c 100644 Binary files a/backend/database/myp.db-wal and b/backend/database/myp.db-wal differ diff --git a/backend/logs/analytics/analytics.log b/backend/logs/analytics/analytics.log index 9b8c0773..b4925290 100644 --- a/backend/logs/analytics/analytics.log +++ b/backend/logs/analytics/analytics.log @@ -15,3 +15,5 @@ 2025-06-01 04:01:30 - [analytics] analytics - [INFO] INFO - 📈 Analytics Engine initialisiert 2025-06-01 04:05:28 - [analytics] analytics - [INFO] INFO - 📈 Analytics Engine initialisiert 2025-06-01 04:14:22 - [analytics] analytics - [INFO] INFO - 📈 Analytics Engine initialisiert +2025-06-01 04:16:09 - [analytics] analytics - [INFO] INFO - 📈 Analytics Engine initialisiert +2025-06-01 04:22:49 - [analytics] analytics - [INFO] INFO - 📈 Analytics Engine initialisiert diff --git a/backend/logs/app/app.log b/backend/logs/app/app.log index 509e24b6..f0b1a22e 100644 --- a/backend/logs/app/app.log +++ b/backend/logs/app/app.log @@ -548,3 +548,71 @@ WHERE users.id = ? 2025-06-01 04:14:34 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True 2025-06-01 04:14:37 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True 2025-06-01 04:15:07 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True +2025-06-01 04:15:37 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True +2025-06-01 04:16:09 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\database\myp.db +2025-06-01 04:16:10 - [app] app - [INFO] INFO - SQLite für Produktionsumgebung konfiguriert (WAL-Modus, Cache, Optimierungen) +2025-06-01 04:16:10 - [app] app - [INFO] INFO - ✅ Timeout Force-Quit Manager geladen +2025-06-01 04:16:10 - [app] app - [INFO] INFO - ✅ Zentraler Shutdown-Manager initialisiert +2025-06-01 04:16:10 - [app] app - [INFO] INFO - 🔄 Starte Datenbank-Setup und Migrationen... +2025-06-01 04:16:10 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert +2025-06-01 04:16:10 - [app] app - [INFO] INFO - ✅ JobOrder-Tabelle bereits vorhanden +2025-06-01 04:16:11 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt. +2025-06-01 04:16:11 - [app] app - [INFO] INFO - ✅ Datenbank-Setup und Migrationen erfolgreich abgeschlossen +2025-06-01 04:16:11 - [app] app - [INFO] INFO - 🖨️ Starte automatische Steckdosen-Initialisierung... +2025-06-01 04:16:11 - [app] app - [INFO] INFO - ℹ️ Keine Drucker zur Initialisierung gefunden +2025-06-01 04:16:11 - [app] app - [INFO] INFO - 🔄 Debug-Modus: Queue Manager deaktiviert für Entwicklung +2025-06-01 04:16:11 - [app] app - [INFO] INFO - Job-Scheduler gestartet +2025-06-01 04:16:11 - [app] app - [INFO] INFO - Starte Debug-Server auf 0.0.0.0:5000 (HTTP) +2025-06-01 04:16:11 - [app] app - [INFO] INFO - Windows-Debug-Modus: Auto-Reload deaktiviert +2025-06-01 04:16:29 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True +2025-06-01 04:16:39 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True +2025-06-01 04:16:42 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True +2025-06-01 04:16:45 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True +2025-06-01 04:16:47 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True +2025-06-01 04:16:52 - [app] app - [INFO] INFO - Admin-Check für Funktion admin_guest_requests: User authenticated: True, User ID: 1, Is Admin: True +2025-06-01 04:16:52 - [app] app - [INFO] INFO - Admin-Gastanfragen Seite aufgerufen von User 1 +2025-06-01 04:16:52 - [app] app - [INFO] INFO - Admin-Check für Funktion get_admin_guest_requests: User authenticated: True, User ID: 1, Is Admin: True +2025-06-01 04:16:52 - [app] app - [INFO] INFO - API-Aufruf /api/admin/guest-requests von User 1 +2025-06-01 04:16:52 - [app] app - [INFO] INFO - Admin-Gastaufträge geladen: 0 von 0 (Status: all) +2025-06-01 04:16:55 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True +2025-06-01 04:17:48 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True +2025-06-01 04:18:24 - [app] app - [INFO] INFO - Dashboard-Refresh angefordert von User 1 +2025-06-01 04:18:24 - [app] app - [INFO] INFO - Dashboard-Refresh angefordert von User 1 +2025-06-01 04:18:24 - [app] app - [INFO] INFO - Dashboard-Refresh erfolgreich: {'active_jobs': 0, 'available_printers': 0, 'total_jobs': 0, 'pending_jobs': 0, 'success_rate': 0, 'completed_jobs': 0, 'failed_jobs': 0, 'cancelled_jobs': 0, 'total_users': 1, 'online_printers': 0, 'offline_printers': 0} +2025-06-01 04:18:24 - [app] app - [INFO] INFO - Dashboard-Refresh erfolgreich: {'active_jobs': 0, 'available_printers': 0, 'total_jobs': 0, 'pending_jobs': 0, 'success_rate': 0, 'completed_jobs': 0, 'failed_jobs': 0, 'cancelled_jobs': 0, 'total_users': 1, 'online_printers': 0, 'offline_printers': 0} +2025-06-01 04:22:49 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\database\myp.db +2025-06-01 04:22:50 - [app] app - [INFO] INFO - SQLite für Produktionsumgebung konfiguriert (WAL-Modus, Cache, Optimierungen) +2025-06-01 04:22:50 - [app] app - [INFO] INFO - ✅ Timeout Force-Quit Manager geladen +2025-06-01 04:22:50 - [app] app - [INFO] INFO - ✅ Zentraler Shutdown-Manager initialisiert +2025-06-01 04:22:50 - [app] app - [INFO] INFO - 🔄 Starte Datenbank-Setup und Migrationen... +2025-06-01 04:22:50 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert +2025-06-01 04:22:50 - [app] app - [INFO] INFO - ✅ JobOrder-Tabelle bereits vorhanden +2025-06-01 04:22:50 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt. +2025-06-01 04:22:50 - [app] app - [INFO] INFO - ✅ Datenbank-Setup und Migrationen erfolgreich abgeschlossen +2025-06-01 04:22:50 - [app] app - [INFO] INFO - 🖨️ Starte automatische Steckdosen-Initialisierung... +2025-06-01 04:22:50 - [app] app - [INFO] INFO - ℹ️ Keine Drucker zur Initialisierung gefunden +2025-06-01 04:22:50 - [app] app - [INFO] INFO - 🔄 Debug-Modus: Queue Manager deaktiviert für Entwicklung +2025-06-01 04:22:50 - [app] app - [INFO] INFO - Job-Scheduler gestartet +2025-06-01 04:22:50 - [app] app - [INFO] INFO - Starte Debug-Server auf 0.0.0.0:5000 (HTTP) +2025-06-01 04:22:50 - [app] app - [INFO] INFO - Windows-Debug-Modus: Auto-Reload deaktiviert +2025-06-01 04:22:56 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True +2025-06-01 04:23:04 - [app] app - [INFO] INFO - Admin-Check für Funktion get_user_api: User authenticated: True, User ID: 1, Is Admin: True +2025-06-01 04:23:07 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True +2025-06-01 04:23:09 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True +2025-06-01 04:23:11 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True +2025-06-01 04:23:12 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True +2025-06-01 04:23:14 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True +2025-06-01 04:23:15 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True +2025-06-01 04:23:16 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True +2025-06-01 04:23:17 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True +2025-06-01 04:23:18 - [app] app - [INFO] INFO - Admin-Check für Funktion admin_guest_requests: User authenticated: True, User ID: 1, Is Admin: True +2025-06-01 04:23:18 - [app] app - [INFO] INFO - Admin-Gastanfragen Seite aufgerufen von User 1 +2025-06-01 04:23:19 - [app] app - [INFO] INFO - Admin-Check für Funktion get_admin_guest_requests: User authenticated: True, User ID: 1, Is Admin: True +2025-06-01 04:23:19 - [app] app - [INFO] INFO - API-Aufruf /api/admin/guest-requests von User 1 +2025-06-01 04:23:19 - [app] app - [INFO] INFO - Admin-Gastaufträge geladen: 0 von 0 (Status: all) +2025-06-01 04:23:22 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True +2025-06-01 04:23:52 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True +2025-06-01 04:24:22 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True +2025-06-01 04:24:52 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True +2025-06-01 04:25:22 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True +2025-06-01 04:25:52 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True diff --git a/backend/logs/backup/backup.log b/backend/logs/backup/backup.log index 729f1294..731c6da2 100644 --- a/backend/logs/backup/backup.log +++ b/backend/logs/backup/backup.log @@ -15,3 +15,5 @@ 2025-06-01 04:01:29 - [backup] backup - [INFO] INFO - BackupManager initialisiert (minimal implementation) 2025-06-01 04:05:28 - [backup] backup - [INFO] INFO - BackupManager initialisiert (minimal implementation) 2025-06-01 04:14:22 - [backup] backup - [INFO] INFO - BackupManager initialisiert (minimal implementation) +2025-06-01 04:16:09 - [backup] backup - [INFO] INFO - BackupManager initialisiert (minimal implementation) +2025-06-01 04:22:49 - [backup] backup - [INFO] INFO - BackupManager initialisiert (minimal implementation) diff --git a/backend/logs/calendar/calendar.log b/backend/logs/calendar/calendar.log index a9d3a89e..895f121d 100644 --- a/backend/logs/calendar/calendar.log +++ b/backend/logs/calendar/calendar.log @@ -9,3 +9,4 @@ 2025-06-01 04:06:37 - [calendar] calendar - [INFO] INFO - 📅 Kalender-Events abgerufen: 0 Einträge für Zeitraum 2025-06-01 00:00:00 bis 2025-06-08 00:00:00 2025-06-01 04:08:27 - [calendar] calendar - [INFO] INFO - 📅 Kalender-Events abgerufen: 0 Einträge für Zeitraum 2025-06-01 00:00:00 bis 2025-06-08 00:00:00 2025-06-01 04:08:48 - [calendar] calendar - [INFO] INFO - 📅 Kalender-Events abgerufen: 0 Einträge für Zeitraum 2025-06-01 00:00:00 bis 2025-06-08 00:00:00 +2025-06-01 04:16:18 - [calendar] calendar - [INFO] INFO - 📅 Kalender-Events abgerufen: 0 Einträge für Zeitraum 2025-06-01 00:00:00 bis 2025-06-08 00:00:00 diff --git a/backend/logs/dashboard/dashboard.log b/backend/logs/dashboard/dashboard.log index 668e03a1..2dfdcd7c 100644 --- a/backend/logs/dashboard/dashboard.log +++ b/backend/logs/dashboard/dashboard.log @@ -53,3 +53,11 @@ 2025-06-01 04:14:23 - [dashboard] dashboard - [INFO] INFO - Dashboard-Background-Worker gestartet 2025-06-01 04:14:23 - [dashboard] dashboard - [INFO] INFO - Dashboard WebSocket-Server wird mit threading initialisiert (eventlet-Fallback) 2025-06-01 04:14:23 - [dashboard] dashboard - [INFO] INFO - Dashboard WebSocket-Server initialisiert (async_mode: threading) +2025-06-01 04:16:10 - [dashboard] dashboard - [INFO] INFO - Dashboard-Background-Worker gestartet +2025-06-01 04:16:10 - [dashboard] dashboard - [INFO] INFO - Dashboard-Background-Worker gestartet +2025-06-01 04:16:10 - [dashboard] dashboard - [INFO] INFO - Dashboard WebSocket-Server wird mit threading initialisiert (eventlet-Fallback) +2025-06-01 04:16:10 - [dashboard] dashboard - [INFO] INFO - Dashboard WebSocket-Server initialisiert (async_mode: threading) +2025-06-01 04:22:50 - [dashboard] dashboard - [INFO] INFO - Dashboard-Background-Worker gestartet +2025-06-01 04:22:50 - [dashboard] dashboard - [INFO] INFO - Dashboard-Background-Worker gestartet +2025-06-01 04:22:50 - [dashboard] dashboard - [INFO] INFO - Dashboard WebSocket-Server wird mit threading initialisiert (eventlet-Fallback) +2025-06-01 04:22:50 - [dashboard] dashboard - [INFO] INFO - Dashboard WebSocket-Server initialisiert (async_mode: threading) diff --git a/backend/logs/database/database.log b/backend/logs/database/database.log index 7d4a5586..3b4a67ff 100644 --- a/backend/logs/database/database.log +++ b/backend/logs/database/database.log @@ -15,3 +15,5 @@ 2025-06-01 04:01:29 - [database] database - [INFO] INFO - Datenbank-Wartungs-Scheduler gestartet 2025-06-01 04:05:28 - [database] database - [INFO] INFO - Datenbank-Wartungs-Scheduler gestartet 2025-06-01 04:14:22 - [database] database - [INFO] INFO - Datenbank-Wartungs-Scheduler gestartet +2025-06-01 04:16:09 - [database] database - [INFO] INFO - Datenbank-Wartungs-Scheduler gestartet +2025-06-01 04:22:49 - [database] database - [INFO] INFO - Datenbank-Wartungs-Scheduler gestartet diff --git a/backend/logs/email_notification/email_notification.log b/backend/logs/email_notification/email_notification.log index a98235b8..e40485ba 100644 --- a/backend/logs/email_notification/email_notification.log +++ b/backend/logs/email_notification/email_notification.log @@ -13,3 +13,5 @@ 2025-06-01 04:01:31 - [email_notification] email_notification - [INFO] INFO - 📧 Offline-E-Mail-Benachrichtigung initialisiert (kein echter E-Mail-Versand) 2025-06-01 04:05:29 - [email_notification] email_notification - [INFO] INFO - 📧 Offline-E-Mail-Benachrichtigung initialisiert (kein echter E-Mail-Versand) 2025-06-01 04:14:23 - [email_notification] email_notification - [INFO] INFO - 📧 Offline-E-Mail-Benachrichtigung initialisiert (kein echter E-Mail-Versand) +2025-06-01 04:16:10 - [email_notification] email_notification - [INFO] INFO - 📧 Offline-E-Mail-Benachrichtigung initialisiert (kein echter E-Mail-Versand) +2025-06-01 04:22:50 - [email_notification] email_notification - [INFO] INFO - 📧 Offline-E-Mail-Benachrichtigung initialisiert (kein echter E-Mail-Versand) diff --git a/backend/logs/jobs/jobs.log b/backend/logs/jobs/jobs.log index 3101cc99..5d5dc0e4 100644 --- a/backend/logs/jobs/jobs.log +++ b/backend/logs/jobs/jobs.log @@ -44,3 +44,6 @@ 2025-06-01 04:06:36 - [jobs] jobs - [INFO] INFO - Jobs abgerufen: 0 von 0 (Seite 1) 2025-06-01 04:08:18 - [jobs] jobs - [INFO] INFO - Jobs abgerufen: 0 von 0 (Seite 1) 2025-06-01 04:08:50 - [jobs] jobs - [INFO] INFO - Jobs abgerufen: 0 von 0 (Seite 1) +2025-06-01 04:16:16 - [jobs] jobs - [INFO] INFO - Jobs abgerufen: 0 von 0 (Seite 1) +2025-06-01 04:16:58 - [jobs] jobs - [INFO] INFO - Jobs abgerufen: 0 von 0 (Seite 1) +2025-06-01 04:17:52 - [jobs] jobs - [INFO] INFO - Jobs abgerufen: 0 von 0 (Seite 1) diff --git a/backend/logs/maintenance/maintenance.log b/backend/logs/maintenance/maintenance.log index 77e9004f..f7cac34d 100644 --- a/backend/logs/maintenance/maintenance.log +++ b/backend/logs/maintenance/maintenance.log @@ -26,3 +26,7 @@ 2025-06-01 04:05:29 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet 2025-06-01 04:14:23 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet 2025-06-01 04:14:23 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet +2025-06-01 04:16:10 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet +2025-06-01 04:16:10 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet +2025-06-01 04:22:50 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet +2025-06-01 04:22:50 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet diff --git a/backend/logs/multi_location/multi_location.log b/backend/logs/multi_location/multi_location.log index 3431d0dd..04441e76 100644 --- a/backend/logs/multi_location/multi_location.log +++ b/backend/logs/multi_location/multi_location.log @@ -26,3 +26,7 @@ 2025-06-01 04:05:29 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt 2025-06-01 04:14:23 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt 2025-06-01 04:14:23 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt +2025-06-01 04:16:10 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt +2025-06-01 04:16:10 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt +2025-06-01 04:22:50 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt +2025-06-01 04:22:50 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt diff --git a/backend/logs/permissions/permissions.log b/backend/logs/permissions/permissions.log index 02d5a5bd..5a8ef51b 100644 --- a/backend/logs/permissions/permissions.log +++ b/backend/logs/permissions/permissions.log @@ -11,3 +11,5 @@ 2025-06-01 04:01:31 - [permissions] permissions - [INFO] INFO - 🔐 Permission Template Helpers registriert 2025-06-01 04:05:29 - [permissions] permissions - [INFO] INFO - 🔐 Permission Template Helpers registriert 2025-06-01 04:14:23 - [permissions] permissions - [INFO] INFO - 🔐 Permission Template Helpers registriert +2025-06-01 04:16:10 - [permissions] permissions - [INFO] INFO - 🔐 Permission Template Helpers registriert +2025-06-01 04:22:50 - [permissions] permissions - [INFO] INFO - 🔐 Permission Template Helpers registriert diff --git a/backend/logs/printer_monitor/printer_monitor.log b/backend/logs/printer_monitor/printer_monitor.log index da991603..7aa915c2 100644 --- a/backend/logs/printer_monitor/printer_monitor.log +++ b/backend/logs/printer_monitor/printer_monitor.log @@ -456,3 +456,185 @@ 2025-06-01 04:15:07 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden 2025-06-01 04:15:07 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... 2025-06-01 04:15:07 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:16:09 - [printer_monitor] printer_monitor - [INFO] INFO - 🖨️ Drucker-Monitor initialisiert +2025-06-01 04:16:09 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Automatische Tapo-Erkennung in separatem Thread gestartet +2025-06-01 04:16:11 - [printer_monitor] printer_monitor - [INFO] INFO - 🚀 Starte Steckdosen-Initialisierung beim Programmstart... +2025-06-01 04:16:11 - [printer_monitor] printer_monitor - [WARNING] WARNING - ⚠️ Keine aktiven Drucker zur Initialisierung gefunden +2025-06-01 04:16:11 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:16:11 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:16:11 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:16:11 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:16:11 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Starte automatische Tapo-Steckdosenerkennung... +2025-06-01 04:16:11 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Teste 6 Standard-IPs aus der Konfiguration +2025-06-01 04:16:11 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 1/6: 192.168.0.103 +2025-06-01 04:16:13 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:16:13 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:16:13 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:16:13 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:16:17 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:16:17 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:16:17 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:16:17 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:16:17 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 2/6: 192.168.0.104 +2025-06-01 04:16:23 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 3/6: 192.168.0.100 +2025-06-01 04:16:29 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:16:29 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:16:29 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:16:29 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:16:29 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 4/6: 192.168.0.101 +2025-06-01 04:16:35 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 5/6: 192.168.0.102 +2025-06-01 04:16:39 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:16:39 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:16:39 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:16:39 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:16:41 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 6/6: 192.168.0.105 +2025-06-01 04:16:42 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:16:42 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:16:42 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:16:42 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:16:45 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:16:45 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:16:45 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:16:45 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:16:47 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:16:47 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:16:47 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:16:47 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:16:47 - [printer_monitor] printer_monitor - [INFO] INFO - ✅ Steckdosen-Erkennung abgeschlossen: 0/6 Steckdosen gefunden in 36.0s +2025-06-01 04:16:52 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:16:52 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:16:52 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:16:52 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:16:55 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:16:55 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:16:55 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:16:55 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:16:59 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:16:59 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:16:59 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:16:59 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:17:00 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:17:00 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:17:00 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:17:00 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:17:02 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:17:02 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:17:02 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:17:02 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:17:07 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:17:07 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:17:07 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:17:07 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:17:42 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:17:42 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:17:42 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:17:42 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:17:48 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:17:48 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:17:48 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:17:48 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:17:53 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:17:53 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:17:53 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:17:53 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:17:53 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:17:53 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:17:53 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:17:53 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:18:24 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:18:24 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:18:24 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:18:24 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:18:25 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:18:25 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:18:25 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:18:25 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:18:27 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:18:27 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:18:27 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:18:27 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:22:49 - [printer_monitor] printer_monitor - [INFO] INFO - 🖨️ Drucker-Monitor initialisiert +2025-06-01 04:22:49 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Automatische Tapo-Erkennung in separatem Thread gestartet +2025-06-01 04:22:50 - [printer_monitor] printer_monitor - [INFO] INFO - 🚀 Starte Steckdosen-Initialisierung beim Programmstart... +2025-06-01 04:22:50 - [printer_monitor] printer_monitor - [WARNING] WARNING - ⚠️ Keine aktiven Drucker zur Initialisierung gefunden +2025-06-01 04:22:51 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Starte automatische Tapo-Steckdosenerkennung... +2025-06-01 04:22:51 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Teste 6 Standard-IPs aus der Konfiguration +2025-06-01 04:22:51 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 1/6: 192.168.0.103 +2025-06-01 04:22:51 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:22:51 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:22:51 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:22:51 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:22:51 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:22:51 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:22:51 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:22:51 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:22:53 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:22:53 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:22:53 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:22:53 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:22:54 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:22:54 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:22:54 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:22:54 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:22:56 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:22:56 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:22:56 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:22:56 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:22:57 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 2/6: 192.168.0.104 +2025-06-01 04:23:03 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 3/6: 192.168.0.100 +2025-06-01 04:23:07 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:23:07 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:23:07 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:23:07 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:23:09 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 4/6: 192.168.0.101 +2025-06-01 04:23:09 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:23:09 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:23:09 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:23:09 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:23:11 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:23:11 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:23:11 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:23:11 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:23:12 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:23:12 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:23:12 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:23:12 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:23:14 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:23:14 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:23:14 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:23:14 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:23:15 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 5/6: 192.168.0.102 +2025-06-01 04:23:15 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:23:15 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:23:15 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:23:15 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:23:16 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:23:16 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:23:16 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:23:16 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:23:17 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:23:17 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:23:17 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:23:17 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:23:19 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:23:19 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:23:19 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:23:19 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:23:21 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 6/6: 192.168.0.105 +2025-06-01 04:23:22 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:23:22 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:23:22 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:23:22 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:23:27 - [printer_monitor] printer_monitor - [INFO] INFO - ✅ Steckdosen-Erkennung abgeschlossen: 0/6 Steckdosen gefunden in 36.0s +2025-06-01 04:23:52 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:23:52 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:23:52 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:23:52 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:24:57 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:24:57 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:24:57 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:24:57 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:25:57 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:25:57 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden +2025-06-01 04:25:57 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-01 04:25:57 - [printer_monitor] printer_monitor - [INFO] INFO - ℹ️ Keine aktiven Drucker gefunden diff --git a/backend/logs/printers/printers.log b/backend/logs/printers/printers.log index a775106a..6b03436c 100644 --- a/backend/logs/printers/printers.log +++ b/backend/logs/printers/printers.log @@ -3143,3 +3143,172 @@ 2025-06-01 04:15:07 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) 2025-06-01 04:15:07 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker 2025-06-01 04:15:07 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 7.78ms +2025-06-01 04:16:11 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-01 04:16:11 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker +2025-06-01 04:16:11 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 2.16ms +2025-06-01 04:16:13 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-01 04:16:13 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker +2025-06-01 04:16:13 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 6.72ms +2025-06-01 04:16:16 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check) +2025-06-01 04:16:17 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check) +2025-06-01 04:16:17 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-01 04:16:17 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker +2025-06-01 04:16:17 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 6.21ms +2025-06-01 04:16:17 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check) +2025-06-01 04:16:29 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-01 04:16:29 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker +2025-06-01 04:16:29 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 13.34ms +2025-06-01 04:16:39 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-01 04:16:39 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker +2025-06-01 04:16:39 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 12.89ms +2025-06-01 04:16:42 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-01 04:16:42 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker +2025-06-01 04:16:42 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 11.48ms +2025-06-01 04:16:45 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-01 04:16:45 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker +2025-06-01 04:16:45 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 11.73ms +2025-06-01 04:16:47 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-01 04:16:47 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker +2025-06-01 04:16:47 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 9.25ms +2025-06-01 04:16:52 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-01 04:16:52 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker +2025-06-01 04:16:52 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 20.20ms +2025-06-01 04:16:55 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-01 04:16:55 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker +2025-06-01 04:16:55 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 9.77ms +2025-06-01 04:16:58 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check) +2025-06-01 04:16:59 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check) +2025-06-01 04:16:59 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-01 04:16:59 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker +2025-06-01 04:16:59 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 6.27ms +2025-06-01 04:16:59 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check) +2025-06-01 04:17:00 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-01 04:17:00 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker +2025-06-01 04:17:00 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 7.39ms +2025-06-01 04:17:02 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check) +2025-06-01 04:17:02 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-01 04:17:02 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker +2025-06-01 04:17:02 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 9.08ms +2025-06-01 04:17:02 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check) +2025-06-01 04:17:07 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-01 04:17:07 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker +2025-06-01 04:17:07 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 7.42ms +2025-06-01 04:17:42 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-01 04:17:42 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker +2025-06-01 04:17:42 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 10.18ms +2025-06-01 04:17:48 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-01 04:17:48 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker +2025-06-01 04:17:48 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 10.13ms +2025-06-01 04:17:52 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check) +2025-06-01 04:17:53 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check) +2025-06-01 04:17:53 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-01 04:17:53 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker +2025-06-01 04:17:53 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 8.47ms +2025-06-01 04:17:53 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check) +2025-06-01 04:17:53 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-01 04:17:53 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker +2025-06-01 04:17:53 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 6.51ms +2025-06-01 04:18:24 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-01 04:18:24 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker +2025-06-01 04:18:24 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 1.82ms +2025-06-01 04:18:25 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-01 04:18:25 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker +2025-06-01 04:18:25 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 4.61ms +2025-06-01 04:18:27 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check) +2025-06-01 04:18:27 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-01 04:18:27 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker +2025-06-01 04:18:27 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 1.56ms +2025-06-01 04:18:27 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check) +2025-06-01 04:22:50 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check) +2025-06-01 04:22:50 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check) +2025-06-01 04:22:50 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check) +2025-06-01 04:22:50 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check) +2025-06-01 04:22:51 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-01 04:22:51 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker +2025-06-01 04:22:51 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 3.27ms +2025-06-01 04:22:51 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-01 04:22:51 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker +2025-06-01 04:22:51 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 2.60ms +2025-06-01 04:22:51 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check) +2025-06-01 04:22:51 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check) +2025-06-01 04:22:51 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check) +2025-06-01 04:22:51 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check) +2025-06-01 04:22:51 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check) +2025-06-01 04:22:51 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check) +2025-06-01 04:22:51 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check) +2025-06-01 04:22:51 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check) +2025-06-01 04:22:51 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check) +2025-06-01 04:22:51 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check) +2025-06-01 04:22:51 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check) +2025-06-01 04:22:51 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check) +2025-06-01 04:22:51 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check) +2025-06-01 04:22:51 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check) +2025-06-01 04:22:51 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check) +2025-06-01 04:22:51 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check) +2025-06-01 04:22:51 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check) +2025-06-01 04:22:51 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check) +2025-06-01 04:22:51 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check) +2025-06-01 04:22:51 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check) +2025-06-01 04:22:51 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check) +2025-06-01 04:22:51 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check) +2025-06-01 04:22:51 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check) +2025-06-01 04:22:51 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check) +2025-06-01 04:22:51 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check) +2025-06-01 04:22:51 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check) +2025-06-01 04:22:51 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check) +2025-06-01 04:22:51 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check) +2025-06-01 04:22:51 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check) +2025-06-01 04:22:51 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check) +2025-06-01 04:22:51 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check) +2025-06-01 04:22:51 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check) +2025-06-01 04:22:53 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check) +2025-06-01 04:22:53 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-01 04:22:53 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker +2025-06-01 04:22:53 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 6.78ms +2025-06-01 04:22:53 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check) +2025-06-01 04:22:54 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-01 04:22:54 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker +2025-06-01 04:22:54 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 5.08ms +2025-06-01 04:22:55 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check) +2025-06-01 04:22:56 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-01 04:22:56 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker +2025-06-01 04:22:56 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 13.66ms +2025-06-01 04:23:07 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-01 04:23:07 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker +2025-06-01 04:23:07 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 8.34ms +2025-06-01 04:23:09 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-01 04:23:09 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker +2025-06-01 04:23:09 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 7.35ms +2025-06-01 04:23:11 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-01 04:23:11 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker +2025-06-01 04:23:11 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 10.46ms +2025-06-01 04:23:12 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-01 04:23:12 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker +2025-06-01 04:23:12 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 10.18ms +2025-06-01 04:23:14 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-01 04:23:14 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker +2025-06-01 04:23:14 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 7.64ms +2025-06-01 04:23:15 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-01 04:23:15 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker +2025-06-01 04:23:15 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 6.34ms +2025-06-01 04:23:16 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-01 04:23:16 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker +2025-06-01 04:23:16 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 13.67ms +2025-06-01 04:23:17 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-01 04:23:17 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker +2025-06-01 04:23:17 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 6.56ms +2025-06-01 04:23:19 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-01 04:23:19 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker +2025-06-01 04:23:19 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 12.51ms +2025-06-01 04:23:22 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-01 04:23:22 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker +2025-06-01 04:23:22 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 8.16ms +2025-06-01 04:23:52 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-01 04:23:52 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker +2025-06-01 04:23:52 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 4.98ms +2025-06-01 04:24:57 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-01 04:24:57 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker +2025-06-01 04:24:57 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 1.29ms +2025-06-01 04:25:57 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-01 04:25:57 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker +2025-06-01 04:25:57 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 1.68ms diff --git a/backend/logs/scheduler/scheduler.log b/backend/logs/scheduler/scheduler.log index b3a660d9..97b90515 100644 --- a/backend/logs/scheduler/scheduler.log +++ b/backend/logs/scheduler/scheduler.log @@ -2863,3 +2863,9 @@ 2025-06-01 04:14:22 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True 2025-06-01 04:14:23 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet 2025-06-01 04:14:23 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet +2025-06-01 04:16:09 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True +2025-06-01 04:16:11 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet +2025-06-01 04:16:11 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet +2025-06-01 04:22:49 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True +2025-06-01 04:22:50 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet +2025-06-01 04:22:50 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet diff --git a/backend/logs/security/security.log b/backend/logs/security/security.log index 4a80262c..a5ed1df7 100644 --- a/backend/logs/security/security.log +++ b/backend/logs/security/security.log @@ -11,3 +11,5 @@ 2025-06-01 04:01:31 - [security] security - [INFO] INFO - 🔒 Security System initialisiert 2025-06-01 04:05:29 - [security] security - [INFO] INFO - 🔒 Security System initialisiert 2025-06-01 04:14:23 - [security] security - [INFO] INFO - 🔒 Security System initialisiert +2025-06-01 04:16:10 - [security] security - [INFO] INFO - 🔒 Security System initialisiert +2025-06-01 04:22:50 - [security] security - [INFO] INFO - 🔒 Security System initialisiert diff --git a/backend/logs/shutdown_manager/shutdown_manager.log b/backend/logs/shutdown_manager/shutdown_manager.log index 4a45099c..2ffadc47 100644 --- a/backend/logs/shutdown_manager/shutdown_manager.log +++ b/backend/logs/shutdown_manager/shutdown_manager.log @@ -44,3 +44,5 @@ 2025-06-01 04:01:31 - [shutdown_manager] shutdown_manager - [INFO] INFO - 🔧 Shutdown-Manager initialisiert 2025-06-01 04:05:29 - [shutdown_manager] shutdown_manager - [INFO] INFO - 🔧 Shutdown-Manager initialisiert 2025-06-01 04:14:23 - [shutdown_manager] shutdown_manager - [INFO] INFO - 🔧 Shutdown-Manager initialisiert +2025-06-01 04:16:10 - [shutdown_manager] shutdown_manager - [INFO] INFO - 🔧 Shutdown-Manager initialisiert +2025-06-01 04:22:50 - [shutdown_manager] shutdown_manager - [INFO] INFO - 🔧 Shutdown-Manager initialisiert diff --git a/backend/logs/startup/startup.log b/backend/logs/startup/startup.log index 3248c276..011a2eaa 100644 --- a/backend/logs/startup/startup.log +++ b/backend/logs/startup/startup.log @@ -111,3 +111,21 @@ 2025-06-01 04:14:23 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert 2025-06-01 04:14:23 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert 2025-06-01 04:14:23 - [startup] startup - [INFO] INFO - ================================================== +2025-06-01 04:16:10 - [startup] startup - [INFO] INFO - ================================================== +2025-06-01 04:16:10 - [startup] startup - [INFO] INFO - 🚀 MYP Platform Backend wird gestartet... +2025-06-01 04:16:10 - [startup] startup - [INFO] INFO - 🐍 Python Version: 3.13.3 (tags/v3.13.3:6280bb5, Apr 8 2025, 14:47:33) [MSC v.1943 64 bit (AMD64)] +2025-06-01 04:16:10 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: nt (win32) +2025-06-01 04:16:10 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend +2025-06-01 04:16:10 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-01T04:16:10.629310 +2025-06-01 04:16:10 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert +2025-06-01 04:16:10 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert +2025-06-01 04:16:10 - [startup] startup - [INFO] INFO - ================================================== +2025-06-01 04:22:50 - [startup] startup - [INFO] INFO - ================================================== +2025-06-01 04:22:50 - [startup] startup - [INFO] INFO - 🚀 MYP Platform Backend wird gestartet... +2025-06-01 04:22:50 - [startup] startup - [INFO] INFO - 🐍 Python Version: 3.13.3 (tags/v3.13.3:6280bb5, Apr 8 2025, 14:47:33) [MSC v.1943 64 bit (AMD64)] +2025-06-01 04:22:50 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: nt (win32) +2025-06-01 04:22:50 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend +2025-06-01 04:22:50 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-01T04:22:50.210131 +2025-06-01 04:22:50 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert +2025-06-01 04:22:50 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert +2025-06-01 04:22:50 - [startup] startup - [INFO] INFO - ================================================== diff --git a/backend/logs/windows_fixes/windows_fixes.log b/backend/logs/windows_fixes/windows_fixes.log index 0dabf17e..c048f17c 100644 --- a/backend/logs/windows_fixes/windows_fixes.log +++ b/backend/logs/windows_fixes/windows_fixes.log @@ -58,3 +58,11 @@ 2025-06-01 04:14:21 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Subprocess automatisch gepatcht für UTF-8 Encoding (run + Popen) 2025-06-01 04:14:21 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Globaler subprocess-Patch angewendet 2025-06-01 04:14:21 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet +2025-06-01 04:16:09 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an... +2025-06-01 04:16:09 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Subprocess automatisch gepatcht für UTF-8 Encoding (run + Popen) +2025-06-01 04:16:09 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Globaler subprocess-Patch angewendet +2025-06-01 04:16:09 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet +2025-06-01 04:22:49 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an... +2025-06-01 04:22:49 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Subprocess automatisch gepatcht für UTF-8 Encoding (run + Popen) +2025-06-01 04:22:49 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Globaler subprocess-Patch angewendet +2025-06-01 04:22:49 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet diff --git a/backend/models.py b/backend/models.py index 3734963d..e4755872 100644 --- a/backend/models.py +++ b/backend/models.py @@ -1675,4 +1675,27 @@ def get_engine(): return create_optimized_engine() # Engine-Variable für direkten Import -engine = get_engine() \ No newline at end of file +engine = get_engine() + +# ===== CACHE-VERWALTUNG ===== + +def clear_model_cache(): + """ + Leert den Application-Level Cache für Modelle. + + Diese Funktion kann erweitert werden, um verschiedene Cache-Mechanismen + zu unterstützen, wie z.B. SQLAlchemy Session Cache, Redis Cache, etc. + """ + try: + # SQLAlchemy Session Cache leeren + from sqlalchemy.orm import scoped_session + if _scoped_session: + _scoped_session.remove() + + # Weitere Cache-Clearing-Operationen hier hinzufügen + # z.B. Redis Cache, Memcached, etc. + + return True + except Exception as e: + print(f"Fehler beim Leeren des Model-Cache: {str(e)}") + return False \ No newline at end of file diff --git a/backend/static/css/input.css b/backend/static/css/input.css index 7a3394ce..8621977d 100644 --- a/backend/static/css/input.css +++ b/backend/static/css/input.css @@ -1079,7 +1079,7 @@ inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 0 0 1px rgba(255, 255, 255, 0.05); } - + .notification.show { @apply translate-x-0 opacity-100; } @@ -1100,7 +1100,7 @@ inset 0 1px 0 rgba(255, 255, 255, 0.3), 0 0 0 1px rgba(255, 255, 255, 0.1); } - + .notification-success { @apply text-green-100; background: linear-gradient(135deg, @@ -1114,7 +1114,7 @@ inset 0 1px 0 rgba(255, 255, 255, 0.4), 0 0 0 1px rgba(34, 197, 94, 0.3); } - + .notification-error { @apply text-red-100; background: linear-gradient(135deg, @@ -1128,7 +1128,7 @@ inset 0 1px 0 rgba(255, 255, 255, 0.4), 0 0 0 1px rgba(239, 68, 68, 0.3); } - + .notification-warning { @apply text-yellow-100; background: linear-gradient(135deg, @@ -1142,7 +1142,7 @@ inset 0 1px 0 rgba(255, 255, 255, 0.4), 0 0 0 1px rgba(245, 158, 11, 0.3); } - + .notification-info { @apply text-blue-100; background: linear-gradient(135deg, @@ -1209,7 +1209,7 @@ inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 0 0 1px rgba(255, 255, 255, 0.05); } - + .alert-success { @apply text-green-900 dark:text-green-100; background: linear-gradient(135deg, @@ -1218,7 +1218,7 @@ rgba(34, 197, 94, 0.08) 100%); border: 1px solid rgba(34, 197, 94, 0.3); } - + .alert-error { @apply text-red-900 dark:text-red-100; background: linear-gradient(135deg, @@ -1227,7 +1227,7 @@ rgba(239, 68, 68, 0.08) 100%); border: 1px solid rgba(239, 68, 68, 0.3); } - + .alert-warning { @apply text-yellow-900 dark:text-yellow-100; background: linear-gradient(135deg, @@ -1236,7 +1236,7 @@ rgba(245, 158, 11, 0.08) 100%); border: 1px solid rgba(245, 158, 11, 0.3); } - + .alert-info { @apply text-blue-900 dark:text-blue-100; background: linear-gradient(135deg, diff --git a/backend/static/css/tailwind.min.css b/backend/static/css/tailwind.min.css index 20e9c1f2..bae1b7b2 100644 --- a/backend/static/css/tailwind.min.css +++ b/backend/static/css/tailwind.min.css @@ -1 +1 @@ -*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--color-bg-primary:#fff;--color-bg-secondary:#fafbfc;--color-bg-tertiary:#f3f5f7;--color-bg-accent:#fbfcfd;--color-text-primary:#111827;--color-text-secondary:#374151;--color-text-muted:#6b7280;--color-text-accent:#0073ce;--color-border-primary:#e5e7eb;--color-border-secondary:#d1d5db;--color-accent:#0073ce;--color-accent-hover:#005a9f;--color-accent-light:#eff6ff;--color-accent-text:#fff;--color-shadow:rgba(0,0,0,.06);--color-shadow-strong:rgba(0,0,0,.1);--color-shadow-accent:rgba(0,115,206,.12);--card-radius:1rem;--gradient-primary:linear-gradient(135deg,#fff,#fafbfc 30%,#f8fafc 70%,#f3f5f7);--gradient-card:linear-gradient(135deg,#fff,#fcfcfd 50%,#fafbfc);--gradient-hero:linear-gradient(135deg,#fafbfc,#f3f5f7 40%,#eef2f5 80%,#f8fafc);--gradient-accent:linear-gradient(135deg,#0073ce,#005a9f);--gradient-surface:linear-gradient(135deg,#fff,#fbfcfd 50%,#f8fafc);--glass-bg:hsla(0,0%,100%,.92);--glass-border:hsla(0,0%,100%,.3);--glass-shadow:0 8px 32px rgba(0,0,0,.04);--glass-blur:blur(20px)}.dark{--color-bg-primary:#000;--color-bg-secondary:#0a0a0a;--color-bg-tertiary:#1a1a1a;--color-text-primary:#fff;--color-text-secondary:#e2e8f0;--color-text-muted:#94a3b8;--color-border-primary:#1a1a1a;--color-border-secondary:#2a2a2a;--color-accent:#fff;--color-accent-hover:#f0f0f0;--color-accent-light:#1e3a8a;--color-accent-text:#000;--color-shadow:rgba(0,0,0,.8);--color-shadow-strong:rgba(0,0,0,.9);--mb-black:#000}body{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}body:is(.dark *){--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}body{position:relative;min-height:100vh;background:var(--gradient-primary);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-feature-settings:"cv02","cv03","cv04","cv11";line-height:1.65;font-size:15px}.dark body{background:linear-gradient(135deg,#000,#0a0a0a 50%,#000)}body:before{content:"";position:fixed;top:0;left:0;right:0;bottom:0;background:radial-gradient(circle at 25% 25%,rgba(0,115,206,.015) 0,transparent 50%),radial-gradient(circle at 75% 75%,rgba(0,115,206,.01) 0,transparent 50%),radial-gradient(circle at 50% 10%,rgba(0,115,206,.008) 0,transparent 50%);pointer-events:none;z-index:-1}.dark body:before{background:radial-gradient(circle at 20% 50%,rgba(59,130,246,.03) 0,transparent 50%),radial-gradient(circle at 80% 20%,rgba(59,130,246,.02) 0,transparent 50%)}nav{border-bottom-width:1px;--tw-backdrop-blur:blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s;background:linear-gradient(135deg,hsla(0,0%,100%,.95),rgba(250,251,252,.92) 30%,rgba(248,250,252,.9) 70%,hsla(0,0%,100%,.95));border-bottom:1px solid rgba(229,231,235,.7);backdrop-filter:blur(28px) saturate(200%) brightness(110%);-webkit-backdrop-filter:blur(28px) saturate(200%) brightness(110%);box-shadow:0 4px 20px rgba(0,0,0,.04),0 2px 8px rgba(0,115,206,.02),inset 0 1px 0 hsla(0,0%,100%,.9)}.dark nav{background:rgba(0,0,0,.85);border-bottom-color:hsla(0,0%,100%,.1);box-shadow:0 8px 32px rgba(0,0,0,.3),inset 0 1px 0 hsla(0,0%,100%,.05)}.card-enhanced{background:var(--gradient-card);border:1px solid var(--color-border-primary);border-radius:var(--card-radius);box-shadow:0 2px 12px rgba(0,0,0,.03),0 1px 4px rgba(0,115,206,.02),inset 0 1px 0 hsla(0,0%,100%,.8);transition:all .3s cubic-bezier(.4,0,.2,1);position:relative;overflow:hidden}.card-enhanced:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:var(--gradient-accent);opacity:0;transition:opacity .3s ease}.card-enhanced:hover{transform:translateY(-2px);box-shadow:0 8px 25px rgba(0,0,0,.06),0 4px 12px rgba(0,115,206,.04),inset 0 1px 0 hsla(0,0%,100%,.9)}.card-enhanced:hover:before{opacity:1}.dark .card-enhanced{background:hsla(0,0%,4%,.8);border-color:var(--color-border-primary);box-shadow:0 4px 20px var(--color-shadow)}.btn-enhanced{background:var(--gradient-accent);color:var(--color-accent-text);border:none;border-radius:.5rem;padding:.75rem 1.75rem;font-weight:600;font-size:.875rem;text-transform:uppercase;letter-spacing:.05em;box-shadow:0 2px 8px rgba(0,115,206,.2),0 1px 4px rgba(0,115,206,.1);transition:all .2s cubic-bezier(.4,0,.2,1);position:relative;overflow:hidden}.btn-enhanced:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.2),transparent);transition:left .5s ease}.btn-enhanced:hover{transform:translateY(-1px);box-shadow:0 4px 15px rgba(0,115,206,.3),0 2px 8px rgba(0,115,206,.2)}.btn-enhanced:hover:before{left:100%}.btn-enhanced:active{transform:translateY(0)}.btn-secondary{background:var(--gradient-surface);color:var(--color-text-primary);border:1px solid var(--color-border-primary);box-shadow:0 1px 6px rgba(0,0,0,.03),inset 0 1px 0 hsla(0,0%,100%,.8)}.btn-secondary:hover{background:var(--color-bg-secondary);border-color:var(--color-accent);color:var(--color-accent);box-shadow:0 4px 12px rgba(0,115,206,.08),inset 0 1px 0 hsla(0,0%,100%,.9)}.input-enhanced{background:hsla(0,0%,100%,.95);border:1px solid var(--color-border-primary);border-radius:.5rem;padding:.75rem 1rem;color:var(--color-text-primary);font-size:.9rem;box-shadow:0 1px 6px rgba(0,0,0,.02),inset 0 1px 0 hsla(0,0%,100%,.9);transition:all .2s ease;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.input-enhanced:focus{outline:none;border-color:var(--color-accent);box-shadow:0 4px 12px rgba(0,115,206,.1),0 0 0 3px rgba(0,115,206,.05),inset 0 1px 0 hsla(0,0%,100%,.95);background:hsla(0,0%,100%,.98)}.input-enhanced::-moz-placeholder{color:var(--color-text-muted);opacity:.8}.input-enhanced::placeholder{color:var(--color-text-muted);opacity:.8}.dark .input-enhanced{background:hsla(0,0%,4%,.8);border-color:var(--color-border-primary);color:var(--color-text-primary);box-shadow:0 2px 8px var(--color-shadow),inset 0 1px 0 hsla(0,0%,100%,.05)}.dark .input-enhanced:focus{border-color:#60a5fa;box-shadow:0 4px 15px rgba(96,165,250,.2),0 0 0 3px rgba(96,165,250,.1)}.alert-enhanced{border-radius:1rem;padding:1.25rem;border:1px solid transparent;position:relative;overflow:hidden;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}.alert-enhanced:before{content:"";position:absolute;top:0;left:0;bottom:0;width:4px}.alert-info-enhanced{background:linear-gradient(135deg,rgba(239,246,255,.95),rgba(219,234,254,.9));border-color:rgba(59,130,246,.2);color:#1e40af}.alert-info-enhanced:before{background:var(--gradient-accent)}.alert-success-enhanced{background:linear-gradient(135deg,rgba(236,253,245,.95),rgba(167,243,208,.9));border-color:rgba(16,185,129,.2);color:#065f46}.alert-success-enhanced:before{background:linear-gradient(180deg,#10b981,#059669)}.alert-warning-enhanced{background:linear-gradient(135deg,rgba(255,251,235,.95),hsla(48,96%,89%,.9));border-color:rgba(251,191,36,.2);color:#92400e}.alert-warning-enhanced:before{background:linear-gradient(180deg,#fbbf24,#f59e0b)}.alert-error-enhanced{background:linear-gradient(135deg,hsla(0,86%,97%,.95),hsla(0,94%,82%,.9));border-color:rgba(239,68,68,.2);color:#991b1b}.alert-error-enhanced:before{background:linear-gradient(180deg,#ef4444,#dc2626)}.\!container{width:100%!important;margin-right:auto!important;margin-left:auto!important;padding-right:1rem!important;padding-left:1rem!important}.container{width:100%;margin-right:auto;margin-left:auto;padding-right:1rem;padding-left:1rem}@media (min-width:640px){.\!container{max-width:640px!important;padding-right:1.5rem!important;padding-left:1.5rem!important}.container{max-width:640px;padding-right:1.5rem;padding-left:1.5rem}}@media (min-width:768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media (min-width:1024px){.\!container{max-width:1024px!important;padding-right:2rem!important;padding-left:2rem!important}.container{max-width:1024px;padding-right:2rem;padding-left:2rem}}@media (min-width:1280px){.\!container{max-width:1280px!important;padding-right:3rem!important;padding-left:3rem!important}.container{max-width:1280px;padding-right:3rem;padding-left:3rem}}@media (min-width:1400px){.\!container{max-width:1400px!important;padding-right:4rem!important;padding-left:4rem!important}.container{max-width:1400px;padding-right:4rem;padding-left:4rem}}.dark .bg-dark-card{background-color:#1e293b;--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.bg-dark-surface{background-color:#1e293b}.transition-all-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.admin-container{margin-left:auto;margin-right:auto;max-width:80rem;padding:1rem}@media (min-width:768px){.admin-container{padding:2rem}}.admin-stats{margin-bottom:2rem;display:grid;grid-template-columns:repeat(1,minmax(0,1fr));gap:1rem}@media (min-width:640px){.admin-stats{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.admin-stats{grid-template-columns:repeat(4,minmax(0,1fr))}}.stat-card{position:relative;overflow:hidden;border-radius:.75rem;border-width:1px;border-color:rgba(229,231,235,.6);background-color:hsla(0,0%,100%,.6);padding:1.25rem;--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);--tw-backdrop-blur:blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.stat-card,.stat-card:hover{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.stat-card:hover{--tw-translate-y:-0.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}.stat-card:is(.dark *){border-color:rgba(51,65,85,.3);background-color:rgba(0,0,0,.7)}.stat-card{backdrop-filter:blur(20px) saturate(180%) brightness(110%);-webkit-backdrop-filter:blur(20px) saturate(180%) brightness(110%);box-shadow:0 25px 50px rgba(0,0,0,.15),0 0 0 1px hsla(0,0%,100%,.1)}.stat-icon{position:absolute;top:1rem;right:1rem;font-size:2.25rem;line-height:2.5rem;opacity:.15}.stat-title{margin-bottom:.5rem;font-size:.875rem;line-height:1.25rem;font-weight:500;text-transform:uppercase;--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity,1))}.stat-title:is(.dark *){--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity,1))}.stat-value{margin-bottom:.25rem;font-size:1.5rem;line-height:2rem;font-weight:700;--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1))}.stat-value:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.stat-desc{font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity,1))}.stat-desc:is(.dark *){--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity,1))}.nav-tabs{margin-bottom:1rem;display:flex;overflow-x:auto;border-bottom-width:1px;--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}.nav-tabs:is(.dark *){border-color:rgba(51,65,85,.3)}.nav-tab{cursor:pointer;white-space:nowrap;border-bottom-width:2px;border-color:transparent;padding:1rem 1.5rem;--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity,1));transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}.nav-tab:hover{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1))}.nav-tab:is(.dark *){--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity,1))}.nav-tab:hover:is(.dark *){background-color:rgba(30,41,59,.5);--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.nav-tab.active{border-bottom-width:2px;--tw-border-opacity:1;border-color:rgb(0 0 0/var(--tw-border-opacity,1));font-weight:500;--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1))}.nav-tab.active:is(.dark *){--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1));--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.tab-content{margin-top:2rem}.tab-pane{display:none}.dark-mode-toggle-new .moon-icon:not(.tab-pane),.dark-mode-toggle-new .sun-icon:not(.tab-pane){animation:spin-in .5s cubic-bezier(.25,1,.5,1) forwards}.tab-pane.active{display:block}.form-group{margin-bottom:1rem}.form-label{margin-bottom:.5rem;display:block;font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity,1))}.form-label:is(.dark *){--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity,1))}.form-input,.form-select,.form-textarea{width:100%;border-radius:.5rem;border-width:1px;border-color:rgba(209,213,219,.6);background-color:hsla(0,0%,100%,.6);padding:.5rem .75rem;--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1))}.form-input::-moz-placeholder,.form-select::-moz-placeholder,.form-textarea::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.form-input::placeholder,.form-select::placeholder,.form-textarea::placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.form-input,.form-select,.form-textarea{--tw-backdrop-blur:blur(16px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:transparent;outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-opacity:1;--tw-ring-color:rgb(100 116 139/var(--tw-ring-opacity,1))}.form-input:is(.dark *),.form-select:is(.dark *),.form-textarea:is(.dark *){border-color:rgba(71,85,105,.6);background-color:rgba(30,41,59,.6);--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.form-input,.form-select,.form-textarea{backdrop-filter:blur(16px) saturate(150%);-webkit-backdrop-filter:blur(16px) saturate(150%);box-shadow:0 10px 20px rgba(0,0,0,.1),0 0 0 1px hsla(0,0%,100%,.05)}.admin-table{min-width:100%}.admin-table>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px*var(--tw-divide-y-reverse));--tw-divide-opacity:1;border-color:rgb(229 231 235/var(--tw-divide-opacity,1))}.admin-table:is(.dark *)>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(51 65 85/var(--tw-divide-opacity,1))}.admin-table thead{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity,1))}.admin-table thead:is(.dark *){--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.admin-table th{padding:.75rem 1.5rem;text-align:left;font-size:.75rem;line-height:1rem;font-weight:500;text-transform:uppercase;letter-spacing:.05em;--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity,1))}.admin-table th:is(.dark *){--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity,1))}.admin-table tbody>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px*var(--tw-divide-y-reverse));--tw-divide-opacity:1;border-color:rgb(229 231 235/var(--tw-divide-opacity,1))}.admin-table tbody{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.admin-table tbody:is(.dark *){background-color:#1e293b}.admin-table tbody:is(.dark *)>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(51 65 85/var(--tw-divide-opacity,1))}.admin-table tbody:is(.dark *){--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.admin-table tr{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.admin-table tr:hover{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity,1))}.admin-table tr:hover:is(.dark *){background-color:rgba(51,65,85,.5)}.admin-table td{white-space:nowrap;padding:1rem 1.5rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1))}.admin-table td:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.badge{display:inline-flex;border-radius:9999px;padding-left:.5rem;padding-right:.5rem;font-size:.75rem;font-weight:600;line-height:1.25rem}.badge-success{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity,1))}.badge-success:is(.dark *){--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(187 247 208/var(--tw-text-opacity,1))}.badge-error{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity,1))}.badge-error:is(.dark *){--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity,1))}.badge-warning{--tw-bg-opacity:1;background-color:rgb(254 249 195/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(133 77 14/var(--tw-text-opacity,1))}.badge-warning:is(.dark *){--tw-bg-opacity:1;background-color:rgb(113 63 18/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(254 240 138/var(--tw-text-opacity,1))}.badge-info{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity,1))}.badge-info:is(.dark *){--tw-bg-opacity:1;background-color:rgb(30 58 138/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(191 219 254/var(--tw-text-opacity,1))}.printer-card{border-radius:.75rem;border-width:1px;border-color:rgba(229,231,235,.6);background-color:hsla(0,0%,100%,.6);padding:1.5rem;--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);--tw-backdrop-blur:blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.printer-card,.printer-card:hover{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.printer-card:hover{--tw-translate-y:-0.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}.printer-card:is(.dark *){border-color:rgba(51,65,85,.3);background-color:rgba(0,0,0,.7)}.printer-card{backdrop-filter:blur(20px) saturate(180%) brightness(110%);-webkit-backdrop-filter:blur(20px) saturate(180%) brightness(110%);box-shadow:0 25px 50px rgba(0,0,0,.15),0 0 0 1px hsla(0,0%,100%,.1)}.printer-header{margin-bottom:1rem;display:flex;align-items:center;justify-content:space-between}.printer-name{font-size:1.25rem;line-height:1.75rem;font-weight:700;--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1))}.printer-name:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.printer-actions{display:flex}.printer-actions>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.printer-info{margin-bottom:1rem;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.printer-status{margin-top:1rem;display:flex;align-items:center}.status-indicator{margin-right:.5rem;height:.75rem;width:.75rem;border-radius:9999px}.status-running{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity,1));animation:pulse 2s infinite}.status-stopped{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.log-entry{margin-bottom:.5rem;border-top-right-radius:.5rem;border-bottom-right-radius:.5rem;border-left-width:4px;--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1));padding:.75rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.log-entry:hover{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity,1))}.log-entry:is(.dark *){--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.log-entry:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity,1))}.log-debug{--tw-border-opacity:1;border-color:rgb(156 163 175/var(--tw-border-opacity,1))}.log-debug:is(.dark *){--tw-border-opacity:1;border-color:rgb(107 114 128/var(--tw-border-opacity,1))}.log-info{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity,1))}.log-info:is(.dark *){--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity,1))}.log-warning{--tw-border-opacity:1;border-color:rgb(250 204 21/var(--tw-border-opacity,1))}.log-warning:is(.dark *){--tw-border-opacity:1;border-color:rgb(234 179 8/var(--tw-border-opacity,1))}.log-error{--tw-border-opacity:1;border-color:rgb(248 113 113/var(--tw-border-opacity,1))}.log-error:is(.dark *){--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity,1))}.log-critical{--tw-border-opacity:1;border-color:rgb(192 132 252/var(--tw-border-opacity,1))}.log-critical:is(.dark *){--tw-border-opacity:1;border-color:rgb(168 85 247/var(--tw-border-opacity,1))}.scheduler-status{display:flex;align-items:center;border-radius:.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1));padding:1rem;--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.scheduler-status:is(.dark *){--tw-border-opacity:1;border-color:rgb(51 65 85/var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.progress-bar{height:.5rem;width:100%;overflow:hidden;border-radius:9999px;--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.progress-bar:is(.dark *){--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity,1))}.progress-bar-fill{height:100%;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.progress-bar-fill-blue{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}.progress-bar-fill-blue:is(.dark *){--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.progress-bar-fill-green{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity,1))}.progress-bar-fill-green:is(.dark *){--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.progress-bar-fill-purple{--tw-bg-opacity:1;background-color:rgb(168 85 247/var(--tw-bg-opacity,1))}.progress-bar-fill-purple:is(.dark *){--tw-bg-opacity:1;background-color:rgb(147 51 234/var(--tw-bg-opacity,1))}.\!notification,.notification{position:fixed;top:1rem;right:1rem;z-index:50;max-width:28rem;--tw-translate-x:100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));border-radius:1rem;padding:1rem;opacity:0;--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.5s}.\!notification{background:hsla(0,0%,100%,.08)!important;backdrop-filter:blur(40px) saturate(200%) brightness(130%) contrast(110%)!important;-webkit-backdrop-filter:blur(40px) saturate(200%) brightness(130%) contrast(110%)!important;border:1px solid hsla(0,0%,100%,.25)!important;box-shadow:0 32px 64px rgba(0,0,0,.25),0 12px 24px rgba(0,0,0,.15),inset 0 1px 0 hsla(0,0%,100%,.4),0 0 0 1px hsla(0,0%,100%,.1)!important;animation:notification-slide-in .6s cubic-bezier(.4,0,.2,1)!important}.notification{background:hsla(0,0%,100%,.08);backdrop-filter:blur(40px) saturate(200%) brightness(130%) contrast(110%);-webkit-backdrop-filter:blur(40px) saturate(200%) brightness(130%) contrast(110%);border:1px solid hsla(0,0%,100%,.25);box-shadow:0 32px 64px rgba(0,0,0,.25),0 12px 24px rgba(0,0,0,.15),inset 0 1px 0 hsla(0,0%,100%,.4),0 0 0 1px hsla(0,0%,100%,.1);animation:notification-slide-in .6s cubic-bezier(.4,0,.2,1)}.dark .notification{background:rgba(0,0,0,.2);backdrop-filter:blur(40px) saturate(180%) brightness(120%) contrast(115%);-webkit-backdrop-filter:blur(40px) saturate(180%) brightness(120%) contrast(115%);border:1px solid hsla(0,0%,100%,.15);box-shadow:0 32px 64px rgba(0,0,0,.6),0 12px 24px rgba(0,0,0,.4),inset 0 1px 0 hsla(0,0%,100%,.2),0 0 0 1px hsla(0,0%,100%,.05)}.dark .\!notification{background:rgba(0,0,0,.2)!important;backdrop-filter:blur(40px) saturate(180%) brightness(120%) contrast(115%)!important;-webkit-backdrop-filter:blur(40px) saturate(180%) brightness(120%) contrast(115%)!important;border:1px solid hsla(0,0%,100%,.15)!important;box-shadow:0 32px 64px rgba(0,0,0,.6),0 12px 24px rgba(0,0,0,.4),inset 0 1px 0 hsla(0,0%,100%,.2),0 0 0 1px hsla(0,0%,100%,.05)!important}.\!notification.show,.notification.\!show,.notification.show{--tw-translate-x:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));opacity:1}.\!notification:hover{transform:translateY(-2px) scale(1.02)!important;box-shadow:0 40px 80px rgba(0,0,0,.3),0 16px 32px rgba(0,0,0,.2),inset 0 1px 0 hsla(0,0%,100%,.5),0 0 0 1px hsla(0,0%,100%,.15)!important}.notification:hover{transform:translateY(-2px) scale(1.02);box-shadow:0 40px 80px rgba(0,0,0,.3),0 16px 32px rgba(0,0,0,.2),inset 0 1px 0 hsla(0,0%,100%,.5),0 0 0 1px hsla(0,0%,100%,.15)}.dark .notification:hover{box-shadow:0 40px 80px rgba(0,0,0,.7),0 16px 32px rgba(0,0,0,.5),inset 0 1px 0 hsla(0,0%,100%,.3),0 0 0 1px hsla(0,0%,100%,.1)}.dark .\!notification:hover{box-shadow:0 40px 80px rgba(0,0,0,.7),0 16px 32px rgba(0,0,0,.5),inset 0 1px 0 hsla(0,0%,100%,.3),0 0 0 1px hsla(0,0%,100%,.1)!important}.notification-success{--tw-text-opacity:1;color:rgb(220 252 231/var(--tw-text-opacity,1));background:linear-gradient(135deg,rgba(34,197,94,.25),rgba(134,239,172,.18) 50%,rgba(34,197,94,.12));border:1px solid rgba(34,197,94,.4);box-shadow:0 32px 64px rgba(34,197,94,.2),0 12px 24px rgba(34,197,94,.1),inset 0 1px 0 hsla(0,0%,100%,.4),0 0 0 1px rgba(34,197,94,.3)}.notification-error{--tw-text-opacity:1;color:rgb(254 226 226/var(--tw-text-opacity,1));background:linear-gradient(135deg,rgba(239,68,68,.25),hsla(0,94%,82%,.18) 50%,rgba(239,68,68,.12));border:1px solid rgba(239,68,68,.4);box-shadow:0 32px 64px rgba(239,68,68,.2),0 12px 24px rgba(239,68,68,.1),inset 0 1px 0 hsla(0,0%,100%,.4),0 0 0 1px rgba(239,68,68,.3)}.notification-warning{--tw-text-opacity:1;color:rgb(254 249 195/var(--tw-text-opacity,1));background:linear-gradient(135deg,rgba(245,158,11,.25),rgba(252,211,77,.18) 50%,rgba(245,158,11,.12));border:1px solid rgba(245,158,11,.4);box-shadow:0 32px 64px rgba(245,158,11,.2),0 12px 24px rgba(245,158,11,.1),inset 0 1px 0 hsla(0,0%,100%,.4),0 0 0 1px rgba(245,158,11,.3)}.notification-info{--tw-text-opacity:1;color:rgb(219 234 254/var(--tw-text-opacity,1));background:linear-gradient(135deg,rgba(59,130,246,.25),rgba(147,197,253,.18) 50%,rgba(59,130,246,.12));border:1px solid rgba(59,130,246,.4);box-shadow:0 32px 64px rgba(59,130,246,.2),0 12px 24px rgba(59,130,246,.1),inset 0 1px 0 hsla(0,0%,100%,.4),0 0 0 1px rgba(59,130,246,.3)}.toast-notification{position:fixed;z-index:50;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));border-radius:1rem;padding:1rem;font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.5s;background:hsla(0,0%,100%,.08);backdrop-filter:blur(40px) saturate(200%) brightness(130%) contrast(110%);-webkit-backdrop-filter:blur(40px) saturate(200%) brightness(130%) contrast(110%);border:1px solid hsla(0,0%,100%,.25);box-shadow:0 32px 64px rgba(0,0,0,.25),0 12px 24px rgba(0,0,0,.15),inset 0 1px 0 hsla(0,0%,100%,.4),0 0 0 1px hsla(0,0%,100%,.1)}.dark .toast-notification{background:rgba(0,0,0,.2);backdrop-filter:blur(40px) saturate(180%) brightness(120%) contrast(115%);-webkit-backdrop-filter:blur(40px) saturate(180%) brightness(120%) contrast(115%);border:1px solid hsla(0,0%,100%,.15);box-shadow:0 32px 64px rgba(0,0,0,.6),0 12px 24px rgba(0,0,0,.4),inset 0 1px 0 hsla(0,0%,100%,.2),0 0 0 1px hsla(0,0%,100%,.05)}.alert{margin-bottom:1.5rem;border-radius:1rem;border-width:1px;padding:1.5rem;--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);background:hsla(0,0%,100%,.12);backdrop-filter:blur(30px) saturate(200%) brightness(120%) contrast(110%);-webkit-backdrop-filter:blur(30px) saturate(200%) brightness(120%) contrast(110%);border:1px solid hsla(0,0%,100%,.25);box-shadow:0 25px 50px rgba(0,0,0,.15),0 8px 16px rgba(0,0,0,.1),inset 0 1px 0 hsla(0,0%,100%,.3),0 0 0 1px hsla(0,0%,100%,.1);animation:alert-fade-in .5s ease-out}.dark .alert{background:rgba(0,0,0,.3);backdrop-filter:blur(30px) saturate(180%) brightness(110%) contrast(120%);-webkit-backdrop-filter:blur(30px) saturate(180%) brightness(110%) contrast(120%);border:1px solid hsla(0,0%,100%,.15);box-shadow:0 25px 50px rgba(0,0,0,.4),0 8px 16px rgba(0,0,0,.3),inset 0 1px 0 hsla(0,0%,100%,.15),0 0 0 1px hsla(0,0%,100%,.05)}.alert-success{--tw-text-opacity:1;color:rgb(20 83 45/var(--tw-text-opacity,1))}.alert-success:is(.dark *){--tw-text-opacity:1;color:rgb(220 252 231/var(--tw-text-opacity,1))}.alert-success{background:linear-gradient(135deg,rgba(34,197,94,.15),rgba(134,239,172,.1) 50%,rgba(34,197,94,.08));border:1px solid rgba(34,197,94,.3)}.alert-error{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity,1))}.alert-error:is(.dark *){--tw-text-opacity:1;color:rgb(254 226 226/var(--tw-text-opacity,1))}.alert-error{background:linear-gradient(135deg,rgba(239,68,68,.15),hsla(0,94%,82%,.1) 50%,rgba(239,68,68,.08));border:1px solid rgba(239,68,68,.3)}.alert-warning{--tw-text-opacity:1;color:rgb(113 63 18/var(--tw-text-opacity,1))}.alert-warning:is(.dark *){--tw-text-opacity:1;color:rgb(254 249 195/var(--tw-text-opacity,1))}.alert-warning{background:linear-gradient(135deg,rgba(245,158,11,.15),rgba(252,211,77,.1) 50%,rgba(245,158,11,.08));border:1px solid rgba(245,158,11,.3)}.alert-info{--tw-text-opacity:1;color:rgb(30 58 138/var(--tw-text-opacity,1))}.alert-info:is(.dark *){--tw-text-opacity:1;color:rgb(219 234 254/var(--tw-text-opacity,1))}.alert-info{background:linear-gradient(135deg,rgba(59,130,246,.15),rgba(147,197,253,.1) 50%,rgba(59,130,246,.08));border:1px solid rgba(59,130,246,.3)}.browser-notification{position:fixed;top:1rem;left:1rem;z-index:50;max-width:24rem;border-radius:1rem;padding:1rem;--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);background:hsla(0,0%,100%,.08);backdrop-filter:blur(40px) saturate(200%) brightness(130%) contrast(110%);-webkit-backdrop-filter:blur(40px) saturate(200%) brightness(130%) contrast(110%);border:1px solid hsla(0,0%,100%,.25);box-shadow:0 32px 64px rgba(0,0,0,.25),0 12px 24px rgba(0,0,0,.15),inset 0 1px 0 hsla(0,0%,100%,.4),0 0 0 1px hsla(0,0%,100%,.1);animation:notification-slide-left .6s cubic-bezier(.4,0,.2,1)}.dark .browser-notification{background:rgba(0,0,0,.2);backdrop-filter:blur(40px) saturate(180%) brightness(120%) contrast(115%);-webkit-backdrop-filter:blur(40px) saturate(180%) brightness(120%) contrast(115%);border:1px solid hsla(0,0%,100%,.15);box-shadow:0 32px 64px rgba(0,0,0,.6),0 12px 24px rgba(0,0,0,.4),inset 0 1px 0 hsla(0,0%,100%,.2),0 0 0 1px hsla(0,0%,100%,.05)}@keyframes notification-slide-in{0%{opacity:0;transform:translateX(100%) translateY(-20px) scale(.9);-webkit-backdrop-filter:blur(0);backdrop-filter:blur(0)}50%{opacity:.8;transform:translateX(20px) translateY(-10px) scale(1.05);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}to{opacity:1;transform:translateX(0) translateY(0) scale(1);-webkit-backdrop-filter:blur(40px);backdrop-filter:blur(40px)}}@keyframes notification-slide-out{0%{opacity:1;transform:translateX(0) translateY(0) scale(1)}to{opacity:0;transform:translateX(100%) translateY(-20px) scale(.9)}}@keyframes notification-slide-left{0%{opacity:0;transform:translateX(-100%) translateY(-20px) scale(.9);-webkit-backdrop-filter:blur(0);backdrop-filter:blur(0)}50%{opacity:.8;transform:translateX(-20px) translateY(-10px) scale(1.05);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}to{opacity:1;transform:translateX(0) translateY(0) scale(1);-webkit-backdrop-filter:blur(40px);backdrop-filter:blur(40px)}}@keyframes alert-fade-in{0%{opacity:0;transform:translateY(-20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.\!notification.hiding{animation:notification-slide-out .4s cubic-bezier(.4,0,.2,1) forwards!important}.notification.hiding{animation:notification-slide-out .4s cubic-bezier(.4,0,.2,1) forwards}.notification-icon{margin-right:.75rem;display:flex;height:2rem;width:2rem;flex-shrink:0;align-items:center;justify-content:center;border-radius:9999px;background:hsla(0,0%,100%,.2);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid hsla(0,0%,100%,.3);box-shadow:0 8px 16px rgba(0,0,0,.1),inset 0 1px 0 hsla(0,0%,100%,.4)}.notification-content{flex:1 1 0%}.notification-title{margin-bottom:.25rem;font-size:.875rem;line-height:1.25rem;font-weight:600}.notification-message{font-size:.875rem;line-height:1.25rem;opacity:.9}.notification-close{margin-left:.75rem;border-radius:.5rem;padding:.25rem;opacity:.7;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.notification-close:hover{opacity:1}.notification-close{background:hsla(0,0%,100%,.1);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid hsla(0,0%,100%,.2)}.notification-close:hover{background:hsla(0,0%,100%,.2);transform:scale(1.1)}.notifications-container{position:fixed;top:1rem;right:1rem;z-index:50;max-width:28rem}.notifications-container>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.notifications-container-left{position:fixed;top:1rem;left:1rem;z-index:50;max-width:24rem}.notifications-container-left>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.flash-message-light{background:linear-gradient(135deg,hsla(0,0%,100%,.95),rgba(248,250,252,.9));backdrop-filter:blur(32px) saturate(200%) brightness(120%);-webkit-backdrop-filter:blur(32px) saturate(200%) brightness(120%);border:1px solid rgba(226,232,240,.6);box-shadow:0 25px 50px rgba(0,0,0,.1),0 12px 24px rgba(0,115,206,.05),inset 0 1px 0 hsla(0,0%,100%,.8);color:var(--color-text-primary)}.flash-message-light.success{border-left:4px solid #10b981;background:linear-gradient(135deg,rgba(236,253,245,.95),rgba(209,250,229,.9))}.flash-message-light.error{border-left:4px solid #ef4444;background:linear-gradient(135deg,hsla(0,86%,97%,.95),hsla(0,94%,82%,.9))}.flash-message-light.warning{border-left:4px solid #fbbf24;background:linear-gradient(135deg,rgba(255,251,235,.95),hsla(48,96%,89%,.9))}.flash-message-light.info{border-left:4px solid #3b82f6;background:linear-gradient(135deg,rgba(239,246,255,.95),rgba(219,234,254,.9))}.table-enhanced{background:var(--gradient-card);border:1px solid var(--color-border-primary);border-radius:var(--card-radius);overflow:hidden;box-shadow:0 4px 20px var(--color-shadow),0 2px 8px rgba(0,115,206,.04),inset 0 1px 0 hsla(0,0%,100%,.6)}.table-enhanced th{background:linear-gradient(135deg,var(--color-bg-secondary) 0,var(--color-bg-tertiary) 100%);color:var(--color-text-primary);font-weight:600;padding:1rem 1.5rem;border-bottom:1px solid var(--color-border-primary);position:relative}.table-enhanced th:after{content:"";position:absolute;bottom:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent 0,var(--color-border-secondary) 50%,transparent 100%)}.table-enhanced td{padding:1rem 1.5rem;border-bottom:1px solid var(--color-border-primary);color:var(--color-text-secondary);transition:all .2s ease}.table-enhanced tbody tr:hover{background:var(--color-bg-secondary);transform:scale(1.002)}.dark .table-enhanced{background:hsla(0,0%,4%,.8);border-color:var(--color-border-primary)}.dark .table-enhanced th{background:rgba(26,26,26,.8);color:var(--color-text-primary)}.dark .table-enhanced tbody tr:hover{background:rgba(26,26,26,.6)}.modal-enhanced{background:linear-gradient(135deg,hsla(0,0%,100%,.98),rgba(248,250,252,.95) 50%,hsla(0,0%,100%,.98));backdrop-filter:blur(32px) saturate(220%) brightness(120%);-webkit-backdrop-filter:blur(32px) saturate(220%) brightness(120%);border:1px solid rgba(226,232,240,.7);border-radius:1.5rem;box-shadow:0 50px 100px rgba(0,0,0,.15),0 20px 40px rgba(0,115,206,.08),inset 0 2px 0 hsla(0,0%,100%,.9);position:relative;overflow:hidden}.modal-enhanced:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(226,232,240,.8) 50%,transparent)}.dark .modal-enhanced{background:rgba(0,0,0,.95);border-color:rgba(42,42,42,.7);box-shadow:0 50px 100px rgba(0,0,0,.5),inset 0 2px 0 hsla(0,0%,100%,.05)}.status-badge-enhanced{display:inline-flex;align-items:center;padding:.5rem 1rem;font-size:.75rem;font-weight:700;border-radius:9999px;text-transform:uppercase;letter-spacing:.05em;border:1px solid transparent;transition:all .2s ease;position:relative;overflow:hidden}.status-badge-enhanced:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.3),transparent);transition:left .5s ease}.status-badge-enhanced:hover:before{left:100%}.status-online-enhanced{background:linear-gradient(135deg,#ecfdf5,#a7f3d0);color:#065f46;border-color:rgba(16,185,129,.3)}.status-offline-enhanced{background:linear-gradient(135deg,#fef2f2,#fca5a5);color:#991b1b;border-color:rgba(239,68,68,.3)}.status-printing-enhanced{background:linear-gradient(135deg,#eff6ff,#bfdbfe);color:#1e40af;border-color:rgba(59,130,246,.3)}.dark-mode-toggle-new{position:relative;display:flex;cursor:pointer;align-items:center;justify-content:center;border-radius:9999px;padding:.625rem;transition:all .3s cubic-bezier(.4,0,.2,1);background:linear-gradient(135deg,rgba(248,250,252,.9),rgba(241,245,249,.8));border:1px solid rgba(226,232,240,.7);box-shadow:0 4px 12px rgba(0,0,0,.06),0 2px 4px rgba(0,115,206,.04),inset 0 1px 0 hsla(0,0%,100%,.8);color:var(--color-text-secondary)}.dark-mode-toggle-new:hover{transform:translateY(-2px) scale(1.05);background:linear-gradient(135deg,rgba(248,250,252,.95),rgba(241,245,249,.85));box-shadow:0 8px 20px rgba(0,0,0,.1),0 4px 8px rgba(0,115,206,.08),inset 0 1px 0 hsla(0,0%,100%,.9)}.dark-mode-toggle-new:active{transform:translateY(-1px) scale(.98)}.dark .dark-mode-toggle-new{background:hsla(0,0%,4%,.8);border:1px solid rgba(42,42,42,.6);box-shadow:0 4px 12px rgba(0,0,0,.3),inset 0 1px 0 hsla(0,0%,100%,.05);color:var(--color-text-secondary)}.dark .dark-mode-toggle-new:hover{background:hsla(0,0%,4%,.9);box-shadow:0 8px 20px rgba(0,0,0,.4),inset 0 1px 0 hsla(0,0%,100%,.08)}.dark-mode-toggle-new .moon-icon,.dark-mode-toggle-new .sun-icon{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transition:all .3s cubic-bezier(.4,0,.2,1)}.dark-mode-toggle-new .moon-icon:not(.hidden),.dark-mode-toggle-new .sun-icon:not(.hidden){animation:icon-appear .5s cubic-bezier(.25,1,.5,1) forwards}@keyframes icon-appear{0%{opacity:0;transform:translate(-50%,-50%) scale(.5) rotate(-20deg)}to{opacity:1;transform:translate(-50%,-50%) scale(1) rotate(0)}}.user-menu-button-new{display:flex;align-items:center;gap:.5rem;border-radius:.75rem;padding:.5rem;transition:all .3s cubic-bezier(.4,0,.2,1);background:linear-gradient(135deg,rgba(248,250,252,.8),rgba(241,245,249,.7));border:1px solid rgba(226,232,240,.6);box-shadow:0 2px 8px rgba(0,0,0,.05),inset 0 1px 0 hsla(0,0%,100%,.7)}.user-menu-button-new:hover{transform:translateY(-1px);background:linear-gradient(135deg,rgba(248,250,252,.9),rgba(241,245,249,.8));box-shadow:0 4px 12px rgba(0,0,0,.08),0 2px 4px rgba(0,115,206,.04),inset 0 1px 0 hsla(0,0%,100%,.8)}.dark .user-menu-button-new{background:hsla(0,0%,4%,.7);border-color:rgba(42,42,42,.6);box-shadow:0 2px 8px rgba(0,0,0,.2),inset 0 1px 0 hsla(0,0%,100%,.03)}.dark .user-menu-button-new:hover{background:hsla(0,0%,4%,.8);box-shadow:0 4px 12px rgba(0,0,0,.3),inset 0 1px 0 hsla(0,0%,100%,.05)}.hover-lift-enhanced{transition:all .3s cubic-bezier(.4,0,.2,1)}.hover-lift-enhanced:hover{transform:translateY(-3px) scale(1.01);box-shadow:0 12px 30px var(--color-shadow-strong),0 6px 15px var(--color-shadow-accent)}.dark .hover-lift-enhanced:hover{box-shadow:0 12px 30px var(--color-shadow)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--color-bg-secondary);border-radius:4px}::-webkit-scrollbar-thumb{background:linear-gradient(180deg,var(--color-border-secondary) 0,var(--color-border-primary) 100%);border-radius:4px;-webkit-transition:background .2s ease;transition:background .2s ease}::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,var(--color-accent) 0,var(--color-accent-hover) 100%)}.dark ::-webkit-scrollbar-track{background:var(--color-bg-secondary)}.dark ::-webkit-scrollbar-thumb{background:var(--color-border-primary)}.dark ::-webkit-scrollbar-thumb:hover{background:#60a5fa}.loading-enhanced{position:relative;overflow:hidden}.loading-enhanced:after{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(0,115,206,.1),transparent);animation:loading-shimmer 2s infinite}@keyframes loading-shimmer{0%{left:-100%}to{left:100%}}.dark .focus-enhanced:focus{outline-color:#60a5fa;box-shadow:0 0 0 4px rgba(96,165,250,.15),0 4px 12px rgba(96,165,250,.2)}@media (max-width:768px){.card-enhanced{padding:1rem;border-radius:.75rem}.btn-enhanced{padding:.75rem 1.5rem;font-size:.8rem}.modal-enhanced{border-radius:1rem;margin:1rem}.dark-mode-toggle-new{padding:.5rem}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}@media (prefers-contrast:high){:root{--color-shadow:rgba(0,0,0,.2);--color-shadow-strong:rgba(0,0,0,.3);--color-border-primary:#000}.dark{--color-border-primary:#fff}}.btn-primary{border-radius:.5rem;padding:.5rem 1rem;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1));--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.btn-primary:hover{--tw-translate-y:-0.125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.btn-primary:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-opacity:1;--tw-ring-color:rgb(107 114 128/var(--tw-ring-opacity,1));--tw-ring-offset-width:2px}.btn-primary:is(.dark *){--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1))}.btn-primary{background:rgba(0,0,0,.7);backdrop-filter:blur(20px) saturate(150%) brightness(110%);-webkit-backdrop-filter:blur(20px) saturate(150%) brightness(110%);border:1px solid hsla(0,0%,100%,.2);box-shadow:0 20px 40px rgba(0,0,0,.3),0 8px 16px rgba(0,0,0,.2),inset 0 1px 0 hsla(0,0%,100%,.2),0 0 0 1px hsla(0,0%,100%,.1)}.btn-primary:hover{background:rgba(0,0,0,.9);backdrop-filter:blur(25px) saturate(180%) brightness(120%);-webkit-backdrop-filter:blur(25px) saturate(180%) brightness(120%);border:1px solid hsla(0,0%,100%,.3);box-shadow:0 25px 50px rgba(0,0,0,.4),0 10px 20px rgba(0,0,0,.3),inset 0 1px 0 hsla(0,0%,100%,.3)}.dark .btn-primary{background:hsla(0,0%,100%,.7);border:1px solid rgba(0,0,0,.1);box-shadow:0 20px 40px rgba(0,0,0,.2),0 8px 16px rgba(0,0,0,.1),inset 0 1px 0 hsla(0,0%,100%,.8),0 0 0 1px rgba(0,0,0,.05)}.dark .btn-primary:hover{background:hsla(0,0%,100%,.9);border:1px solid rgba(0,0,0,.15);box-shadow:0 25px 50px rgba(0,0,0,.3),0 10px 20px rgba(0,0,0,.2),inset 0 1px 0 hsla(0,0%,100%,.9)}.btn-secondary{border-radius:.5rem;padding:.5rem 1rem;--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1));--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.btn-secondary:hover{--tw-translate-y:-0.125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.btn-secondary:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-opacity:1;--tw-ring-color:rgb(100 116 139/var(--tw-ring-opacity,1));--tw-ring-offset-width:2px}.btn-secondary:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.btn-secondary{background:hsla(0,0%,100%,.3);backdrop-filter:blur(20px) saturate(150%) brightness(110%);-webkit-backdrop-filter:blur(20px) saturate(150%) brightness(110%);border:1px solid hsla(0,0%,100%,.4);box-shadow:0 20px 40px rgba(0,0,0,.15),0 8px 16px rgba(0,0,0,.1),inset 0 1px 0 hsla(0,0%,100%,.5),0 0 0 1px hsla(0,0%,100%,.2)}.btn-secondary:hover{background:hsla(0,0%,100%,.5);backdrop-filter:blur(25px) saturate(180%) brightness(120%);-webkit-backdrop-filter:blur(25px) saturate(180%) brightness(120%);border:1px solid hsla(0,0%,100%,.6);box-shadow:0 25px 50px rgba(0,0,0,.2),0 10px 20px rgba(0,0,0,.15),inset 0 1px 0 hsla(0,0%,100%,.7)}.dark .btn-secondary{background:rgba(0,0,0,.4);border:1px solid hsla(0,0%,100%,.2);box-shadow:0 20px 40px rgba(0,0,0,.3),0 8px 16px rgba(0,0,0,.2),inset 0 1px 0 hsla(0,0%,100%,.2),0 0 0 1px hsla(0,0%,100%,.1)}.dark .btn-secondary:hover{background:rgba(0,0,0,.6);border:1px solid hsla(0,0%,100%,.3);box-shadow:0 25px 50px rgba(0,0,0,.4),0 10px 20px rgba(0,0,0,.3),inset 0 1px 0 hsla(0,0%,100%,.3)}.btn-outline{border-radius:.5rem;border-width:2px;border-color:rgba(0,0,0,.7);padding:.5rem 1rem;--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1));--tw-backdrop-blur:blur(16px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.btn-outline:hover{background-color:rgba(0,0,0,.7);--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.btn-outline:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-opacity:1;--tw-ring-color:rgb(107 114 128/var(--tw-ring-opacity,1));--tw-ring-offset-width:2px}.btn-outline:is(.dark *){border-color:hsla(0,0%,100%,.7);--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.btn-outline:hover:is(.dark *){background-color:hsla(0,0%,100%,.7);--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1))}.btn-outline{backdrop-filter:blur(16px) saturate(150%);-webkit-backdrop-filter:blur(16px) saturate(150%);box-shadow:0 15px 30px rgba(0,0,0,.1),0 0 0 1px hsla(0,0%,100%,.05)}.glass-card{border-radius:.75rem;padding:1.5rem;--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s;background:hsla(0,0%,100%,.15);backdrop-filter:blur(30px) saturate(200%) brightness(120%) contrast(110%);-webkit-backdrop-filter:blur(30px) saturate(200%) brightness(120%) contrast(110%);border:1px solid hsla(0,0%,100%,.3);box-shadow:0 25px 50px rgba(0,0,0,.15),0 8px 16px rgba(0,0,0,.1),inset 0 1px 0 hsla(0,0%,100%,.3),0 0 0 1px hsla(0,0%,100%,.1);border-radius:var(--card-radius)}.dark .glass-card{background:rgba(0,0,0,.3);backdrop-filter:blur(30px) saturate(180%) brightness(110%) contrast(120%);-webkit-backdrop-filter:blur(30px) saturate(180%) brightness(110%) contrast(120%);border:1px solid hsla(0,0%,100%,.15);box-shadow:0 25px 50px rgba(0,0,0,.4),0 8px 16px rgba(0,0,0,.3),inset 0 1px 0 hsla(0,0%,100%,.15),0 0 0 1px hsla(0,0%,100%,.05)}.dashboard-card{border-radius:.75rem;padding:1.5rem;--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.dashboard-card:hover{--tw-translate-y:-0.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.dashboard-card{background:hsla(0,0%,100%,.12);backdrop-filter:blur(35px) saturate(200%) brightness(125%) contrast(115%);-webkit-backdrop-filter:blur(35px) saturate(200%) brightness(125%) contrast(115%);border:1px solid hsla(0,0%,100%,.25);box-shadow:0 25px 50px rgba(0,0,0,.15),0 8px 16px rgba(0,0,0,.08),inset 0 1px 0 hsla(0,0%,100%,.25),0 0 0 1px hsla(0,0%,100%,.1);border-radius:var(--card-radius)}.dark .dashboard-card{background:rgba(0,0,0,.35);backdrop-filter:blur(35px) saturate(180%) brightness(115%) contrast(125%);-webkit-backdrop-filter:blur(35px) saturate(180%) brightness(115%) contrast(125%);border:1px solid hsla(0,0%,100%,.12);box-shadow:0 25px 50px rgba(0,0,0,.5),0 8px 16px rgba(0,0,0,.3),inset 0 1px 0 hsla(0,0%,100%,.12),0 0 0 1px hsla(0,0%,100%,.05)}.nav-link{display:flex;align-items:center;border-radius:.5rem;padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity,1));transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}.nav-link:hover{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity,1));--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.nav-link:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-opacity:1;--tw-ring-color:rgb(100 116 139/var(--tw-ring-opacity,1));--tw-ring-offset-width:2px}.nav-link:is(.dark *){--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity,1))}.nav-link:hover:is(.dark *){background-color:rgba(51,65,85,.5)}.nav-link.active{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1));--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.nav-link.active:is(.dark *){--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.navbar{display:flex;justify-content:space-between;align-items:center;padding:.5rem 1rem;background:hsla(0,0%,100%,.1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:10px;box-shadow:0 4px 6px rgba(0,0,0,.1);transition:all .3s ease}.navbar-button{padding:.25rem .5rem;font-size:.875rem;border-radius:5px;transition:background-color .3s ease}.navbar-button:hover{background-color:hsla(0,0%,100%,.2)}@media (max-width:768px){.navbar{flex-direction:column;padding:.25rem}.navbar-button{margin:.25rem 0}}.dark .navbar{background:rgba(0,0,0,.25);backdrop-filter:blur(40px) saturate(180%) brightness(120%) contrast(120%);-webkit-backdrop-filter:blur(40px) saturate(180%) brightness(120%) contrast(120%);box-shadow:0 8px 32px rgba(0,0,0,.6),0 2px 8px rgba(0,0,0,.4),inset 0 1px 0 hsla(0,0%,100%,.1),0 0 0 1px hsla(0,0%,100%,.05);border-bottom:1px solid hsla(0,0%,100%,.1)}.navbar-brand{display:flex;align-items:center}.navbar-brand>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.navbar-brand{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.navbar-brand:hover{--tw-scale-x:1.05;--tw-scale-y:1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.navbar-menu{margin-left:1rem;margin-right:1rem;display:flex;align-items:center;justify-content:center}.navbar-menu>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.25rem*var(--tw-space-x-reverse));margin-left:calc(.25rem*(1 - var(--tw-space-x-reverse)))}.navbar-menu{border-radius:1rem;border-width:1px;padding:.75rem}@media (min-width:768px){.navbar-menu>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.75rem*var(--tw-space-x-reverse));margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)))}}@media (min-width:1024px){.navbar-menu>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1.5rem*var(--tw-space-x-reverse));margin-left:calc(1.5rem*(1 - var(--tw-space-x-reverse)))}}.navbar-menu{background:hsla(0,0%,100%,.25);border:1px solid hsla(0,0%,100%,.3);box-shadow:0 4px 16px rgba(0,0,0,.1),inset 0 1px 0 hsla(0,0%,100%,.4),0 0 0 1px hsla(0,0%,100%,.1)}.dark .navbar-menu,.navbar-menu{backdrop-filter:blur(20px) saturate(150%) brightness(110%);-webkit-backdrop-filter:blur(20px) saturate(150%) brightness(110%)}.dark .navbar-menu{background:rgba(0,0,0,.4);border:1px solid hsla(0,0%,100%,.15);box-shadow:0 4px 16px rgba(0,0,0,.3),inset 0 1px 0 hsla(0,0%,100%,.2),0 0 0 1px hsla(0,0%,100%,.05)}.navbar-button{border-radius:9999px;padding:.5rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.navbar-button:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-offset-width:2px}.user-menu-button{display:flex;align-items:center}.user-menu-button>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.user-menu-button{border-radius:.5rem;padding:.25rem;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.user-menu-button:hover{background-color:rgba(243,244,246,.8)}.user-menu-button:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-opacity:1;--tw-ring-color:rgb(100 116 139/var(--tw-ring-opacity,1));--tw-ring-offset-width:2px}.user-menu-button:hover:is(.dark *){background-color:rgba(51,65,85,.6)}.user-avatar{display:flex;height:2.5rem;width:2.5rem;align-items:center;justify-content:center;border-radius:9999px;--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1));font-size:.875rem;line-height:1.25rem;font-weight:700;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1));--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.user-avatar,.user-avatar:hover{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.user-avatar:hover{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.user-avatar:is(.dark *){--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1))}.avatar-large{display:flex;height:3.5rem;width:3.5rem;align-items:center;justify-content:center;border-radius:9999px;--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1));font-size:1.125rem;line-height:1.75rem;font-weight:700;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1));--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.avatar-large:is(.dark *){--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1))}.user-dropdown-item{transition-duration:.3s}.user-dropdown-item:hover{background-color:rgba(243,244,246,.8);--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1))}.user-dropdown-item:focus{background-color:rgba(243,244,246,.8);outline:2px solid transparent;outline-offset:2px}.user-dropdown-item:is(.dark *){color:rgb(203 213 225/var(--tw-text-opacity,1))}.user-dropdown-item:hover:is(.dark *){background-color:rgba(51,65,85,.6);--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.user-dropdown-item:focus:is(.dark *){background-color:rgba(51,65,85,.6)}.user-dropdown-separator{margin-top:.25rem;margin-bottom:.25rem;border-top-width:1px;border-color:rgba(229,231,235,.8)}.user-dropdown-separator:is(.dark *){border-color:rgba(51,65,85,.3)}.menu-item{display:flex;align-items:center}.menu-item>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.menu-item{border-radius:.75rem;padding:.625rem 1rem;--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity,1));transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.menu-item:is(.dark *){--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity,1))}.menu-item{background:hsla(0,0%,100%,.1);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid hsla(0,0%,100%,.2);box-shadow:0 2px 8px rgba(0,0,0,.05)}.menu-item:hover{--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1))}.menu-item:hover:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.menu-item:hover{background:hsla(0,0%,100%,.3);backdrop-filter:blur(15px) saturate(150%);-webkit-backdrop-filter:blur(15px) saturate(150%);border:1px solid hsla(0,0%,100%,.4);box-shadow:0 4px 16px rgba(0,0,0,.1);transform:translateY(-1px)}.dark .menu-item{background:rgba(0,0,0,.2);border:1px solid hsla(0,0%,100%,.1);box-shadow:0 2px 8px rgba(0,0,0,.2)}.dark .menu-item:hover{background:rgba(0,0,0,.4);border:1px solid hsla(0,0%,100%,.2);box-shadow:0 4px 16px rgba(0,0,0,.3)}.menu-item.active{font-weight:500;--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1))}.menu-item.active:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.menu-item.active{background:hsla(0,0%,100%,.5);backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);border:1px solid hsla(0,0%,100%,.6);box-shadow:0 4px 16px rgba(0,0,0,.15),inset 0 1px 0 hsla(0,0%,100%,.5)}.dark .menu-item.active{background:rgba(0,0,0,.6);border:1px solid hsla(0,0%,100%,.3);box-shadow:0 4px 16px rgba(0,0,0,.4),inset 0 1px 0 hsla(0,0%,100%,.2)}.user-dropdown{position:absolute;right:0;z-index:50;margin-top:.5rem;width:16rem;overflow:hidden;border-radius:.75rem;--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);background:hsla(0,0%,100%,.1);backdrop-filter:blur(40px) saturate(200%) brightness(130%) contrast(110%);-webkit-backdrop-filter:blur(40px) saturate(200%) brightness(130%) contrast(110%);border:1px solid hsla(0,0%,100%,.3);box-shadow:0 25px 50px rgba(0,0,0,.25),0 8px 16px rgba(0,0,0,.15),inset 0 1px 0 hsla(0,0%,100%,.4),0 0 0 1px hsla(0,0%,100%,.1);animation:fadeIn .2s ease-out forwards}.dark .user-dropdown{background:rgba(0,0,0,.4);backdrop-filter:blur(40px) saturate(180%) brightness(120%) contrast(120%);-webkit-backdrop-filter:blur(40px) saturate(180%) brightness(120%) contrast(120%);border:1px solid hsla(0,0%,100%,.15);box-shadow:0 25px 50px rgba(0,0,0,.6),0 8px 16px rgba(0,0,0,.4),inset 0 1px 0 hsla(0,0%,100%,.2),0 0 0 1px hsla(0,0%,100%,.05)}.dropdown-header{display:flex;align-items:center;border-bottom-width:1px;border-color:rgba(229,231,235,.8);padding:1rem}.dropdown-header:is(.dark *){border-color:rgba(51,65,85,.3)}.dropdown-item{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity,1));transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.dropdown-item:hover{background-color:rgba(243,244,246,.8);--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1))}.dropdown-item:is(.dark *){--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity,1))}.dropdown-item:hover:is(.dark *){background-color:rgba(51,65,85,.6);--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.dropdown-divider{border-top-width:1px;border-color:rgba(229,231,235,.8)}.dropdown-divider:is(.dark *){border-color:rgba(51,65,85,.3)}@keyframes mercedes-rotate{0%{transform:rotate(0deg)}25%{transform:rotate(90deg)}50%{transform:rotate(180deg)}75%{transform:rotate(270deg)}to{transform:rotate(1turn)}}.navbar-brand:hover svg{animation:mercedes-rotate 5s linear infinite;transform-origin:center}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.-inset-1{inset:-.25rem}.inset-0{inset:0}.inset-y-0{top:0;bottom:0}.-bottom-2{bottom:-.5rem}.-bottom-40{bottom:-10rem}.-bottom-8{bottom:-2rem}.-left-2{left:-.5rem}.-left-32{left:-8rem}.-right-1{right:-.25rem}.-right-2{right:-.5rem}.-right-32{right:-8rem}.-top-1{top:-.25rem}.-top-2{top:-.5rem}.-top-40{top:-10rem}.bottom-0{bottom:0}.bottom-4{bottom:1rem}.bottom-6{bottom:1.5rem}.bottom-8{bottom:2rem}.bottom-full{bottom:100%}.end-1{inset-inline-end:.25rem}.left-0{left:0}.left-1\/2{left:50%}.left-3{left:.75rem}.left-4{left:1rem}.right-0{right:0}.right-2\.5{right:.625rem}.right-3{right:.75rem}.right-4{right:1rem}.right-5{right:1.25rem}.right-6{right:1.5rem}.right-8{right:2rem}.top-0{top:0}.top-1\/2{top:50%}.top-2\.5{top:.625rem}.top-3{top:.75rem}.top-4{top:1rem}.top-5{top:1.25rem}.top-8{top:2rem}.top-full{top:100%}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.col-span-full{grid-column:1/-1}.m-1{margin:.25rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.-ml-1{margin-left:-.25rem}.-mt-8{margin-top:-2rem}.mb-0{margin-bottom:0}.mb-1{margin-bottom:.25rem}.mb-12{margin-bottom:3rem}.mb-16{margin-bottom:4rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-6{margin-left:1.5rem}.ml-8{margin-left:2rem}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mr-4{margin-right:1rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-12{margin-top:3rem}.mt-16{margin-top:4rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.mt-auto{margin-top:auto}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.list-item{display:list-item}.hidden{display:none}.h-0{height:0}.h-1{height:.25rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-20{height:5rem}.h-24{height:6rem}.h-28{height:7rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-32{height:8rem}.h-4{height:1rem}.h-40{height:10rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-64{height:16rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-96{height:24rem}.h-full{height:100%}.max-h-80{max-height:20rem}.max-h-96{max-height:24rem}.max-h-\[90vh\]{max-height:90vh}.min-h-\[80vh\]{min-height:80vh}.min-h-screen{min-height:100vh}.w-0{width:0}.w-1{width:.25rem}.w-1\/2{width:50%}.w-1\/3{width:33.333333%}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-12{width:3rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-2\/3{width:66.666667%}.w-20{width:5rem}.w-24{width:6rem}.w-28{width:7rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-3\/4{width:75%}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-80{width:20rem}.w-96{width:24rem}.w-full{width:100%}.min-w-0{min-width:0}.min-w-\[150px\]{min-width:150px}.min-w-full{min-width:100%}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-6xl{max-width:72rem}.max-w-7xl{max-width:80rem}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.max-w-screen-xl{max-width:1280px}.max-w-sm{max-width:24rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-shrink{flex-shrink:1}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.flex-grow,.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.origin-top-right{transform-origin:top right}.-translate-x-1{--tw-translate-x:-0.25rem}.-translate-x-1,.-translate-x-1\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-1\/2{--tw-translate-x:-50%}.-translate-x-full{--tw-translate-x:-100%}.-translate-x-full,.-translate-y-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-0{--tw-translate-y:-0px}.-translate-y-1{--tw-translate-y:-0.25rem}.-translate-y-1,.-translate-y-1\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y:-50%}.translate-x-0{--tw-translate-x:0px}.translate-x-0,.translate-x-1{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-1{--tw-translate-x:0.25rem}.translate-x-full{--tw-translate-x:100%}.translate-x-full,.translate-y-1{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-1{--tw-translate-y:0.25rem}.rotate-0{--tw-rotate:0deg}.rotate-0,.rotate-180{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate:180deg}.rotate-90{--tw-rotate:90deg}.rotate-90,.skew-x-12{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.skew-x-12{--tw-skew-x:12deg}.scale-100{--tw-scale-x:1;--tw-scale-y:1}.scale-100,.scale-75{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-75{--tw-scale-x:.75;--tw-scale-y:.75}.scale-95{--tw-scale-x:.95;--tw-scale-y:.95}.scale-95,.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes bounce{0%,to{transform:translateY(-25%);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;animation-timing-function:cubic-bezier(0,0,.2,1)}}.animate-bounce{animation:bounce 1s infinite}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.animate-fade-in{animation:fadeIn .5s ease-in-out}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes slideUp{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}.animate-slide-up{animation:slideUp .5s ease-out}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.resize-none{resize:none}.resize{resize:both}.scroll-mt-8{scroll-margin-top:2rem}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.space-x-0\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.125rem*var(--tw-space-x-reverse));margin-left:calc(.125rem*(1 - var(--tw-space-x-reverse)))}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.25rem*var(--tw-space-x-reverse));margin-left:calc(.25rem*(1 - var(--tw-space-x-reverse)))}.space-x-1\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.375rem*var(--tw-space-x-reverse));margin-left:calc(.375rem*(1 - var(--tw-space-x-reverse)))}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.space-x-2\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.625rem*var(--tw-space-x-reverse));margin-left:calc(.625rem*(1 - var(--tw-space-x-reverse)))}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.75rem*var(--tw-space-x-reverse));margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1rem*var(--tw-space-x-reverse));margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)))}.space-x-6>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1.5rem*var(--tw-space-x-reverse));margin-left:calc(1.5rem*(1 - var(--tw-space-x-reverse)))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.space-y-16>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(4rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(4rem*var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem*var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(2rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem*var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px*var(--tw-divide-y-reverse))}.divide-gray-200>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(229 231 235/var(--tw-divide-opacity,1))}.divide-slate-200>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(226 232 240/var(--tw-divide-opacity,1))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.scroll-smooth{scroll-behavior:smooth}.truncate{overflow:hidden;text-overflow:ellipsis}.truncate,.whitespace-nowrap{white-space:nowrap}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-3xl{border-radius:1.5rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-l-md{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}.rounded-r-lg{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.rounded-r-md{border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}.border{border-width:1px}.border-2{border-width:2px}.border-4{border-width:4px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-l-2{border-left-width:2px}.border-l-4{border-left-width:4px}.border-r-4{border-right-width:4px}.border-t{border-top-width:1px}.border-t-4{border-top-width:4px}.border-dashed{border-style:dashed}.border-none{border-style:none}.border-amber-200{--tw-border-opacity:1;border-color:rgb(253 230 138/var(--tw-border-opacity,1))}.border-black{--tw-border-opacity:1;border-color:rgb(0 0 0/var(--tw-border-opacity,1))}.border-black\/70{border-color:rgba(0,0,0,.7)}.border-blue-200{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity,1))}.border-blue-200\/50{border-color:rgba(191,219,254,.5)}.border-blue-300{--tw-border-opacity:1;border-color:rgb(147 197 253/var(--tw-border-opacity,1))}.border-blue-400{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity,1))}.border-blue-500{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity,1))}.border-blue-600{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity,1))}.border-emerald-200\/50{border-color:rgba(167,243,208,.5)}.border-emerald-500{--tw-border-opacity:1;border-color:rgb(16 185 129/var(--tw-border-opacity,1))}.border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}.border-gray-200\/50{border-color:rgba(229,231,235,.5)}.border-gray-200\/60{border-color:rgba(229,231,235,.6)}.border-gray-200\/70{border-color:rgba(229,231,235,.7)}.border-gray-200\/80{border-color:rgba(229,231,235,.8)}.border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.border-gray-300\/60{border-color:rgba(209,213,219,.6)}.border-gray-400{--tw-border-opacity:1;border-color:rgb(156 163 175/var(--tw-border-opacity,1))}.border-green-200{--tw-border-opacity:1;border-color:rgb(187 247 208/var(--tw-border-opacity,1))}.border-green-200\/50{border-color:rgba(187,247,208,.5)}.border-green-300{--tw-border-opacity:1;border-color:rgb(134 239 172/var(--tw-border-opacity,1))}.border-green-400{--tw-border-opacity:1;border-color:rgb(74 222 128/var(--tw-border-opacity,1))}.border-green-500{--tw-border-opacity:1;border-color:rgb(34 197 94/var(--tw-border-opacity,1))}.border-indigo-200{--tw-border-opacity:1;border-color:rgb(199 210 254/var(--tw-border-opacity,1))}.border-indigo-200\/50{border-color:rgba(199,210,254,.5)}.border-indigo-600{--tw-border-opacity:1;border-color:rgb(79 70 229/var(--tw-border-opacity,1))}.border-mercedes-silver{--tw-border-opacity:1;border-color:rgb(192 192 192/var(--tw-border-opacity,1))}.border-orange-200{--tw-border-opacity:1;border-color:rgb(254 215 170/var(--tw-border-opacity,1))}.border-orange-200\/50{border-color:hsla(32,98%,83%,.5)}.border-purple-200\/50{border-color:rgba(233,213,255,.5)}.border-purple-400{--tw-border-opacity:1;border-color:rgb(192 132 252/var(--tw-border-opacity,1))}.border-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity,1))}.border-red-200\/50{border-color:hsla(0,96%,89%,.5)}.border-red-300{--tw-border-opacity:1;border-color:rgb(252 165 165/var(--tw-border-opacity,1))}.border-red-400{--tw-border-opacity:1;border-color:rgb(248 113 113/var(--tw-border-opacity,1))}.border-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity,1))}.border-slate-200{--tw-border-opacity:1;border-color:rgb(226 232 240/var(--tw-border-opacity,1))}.border-slate-200\/50{border-color:rgba(226,232,240,.5)}.border-slate-300{--tw-border-opacity:1;border-color:rgb(203 213 225/var(--tw-border-opacity,1))}.border-transparent{border-color:transparent}.border-white\/20{border-color:hsla(0,0%,100%,.2)}.border-white\/30{border-color:hsla(0,0%,100%,.3)}.border-white\/50{border-color:hsla(0,0%,100%,.5)}.border-yellow-200{--tw-border-opacity:1;border-color:rgb(254 240 138/var(--tw-border-opacity,1))}.border-yellow-400{--tw-border-opacity:1;border-color:rgb(250 204 21/var(--tw-border-opacity,1))}.border-t-slate-800{--tw-border-opacity:1;border-top-color:rgb(30 41 59/var(--tw-border-opacity,1))}.border-t-slate-900{--tw-border-opacity:1;border-top-color:rgb(15 23 42/var(--tw-border-opacity,1))}.bg-amber-400{--tw-bg-opacity:1;background-color:rgb(251 191 36/var(--tw-bg-opacity,1))}.bg-amber-50{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity,1))}.bg-amber-500{--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity,1))}.bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.bg-black\/20{background-color:rgba(0,0,0,.2)}.bg-black\/30{background-color:rgba(0,0,0,.3)}.bg-black\/40{background-color:rgba(0,0,0,.4)}.bg-black\/50{background-color:rgba(0,0,0,.5)}.bg-black\/60{background-color:rgba(0,0,0,.6)}.bg-black\/70{background-color:rgba(0,0,0,.7)}.bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.bg-blue-400{--tw-bg-opacity:1;background-color:rgb(96 165 250/var(--tw-bg-opacity,1))}.bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}.bg-blue-50\/50{background-color:rgba(239,246,255,.5)}.bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}.bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.bg-cyan-100{--tw-bg-opacity:1;background-color:rgb(207 250 254/var(--tw-bg-opacity,1))}.bg-dark-card,.bg-dark-surface{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.bg-emerald-100{--tw-bg-opacity:1;background-color:rgb(209 250 229/var(--tw-bg-opacity,1))}.bg-emerald-600{--tw-bg-opacity:1;background-color:rgb(5 150 105/var(--tw-bg-opacity,1))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.bg-gray-300{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity,1))}.bg-gray-400{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity,1))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.bg-gray-600{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.bg-green-100{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1))}.bg-green-100\/90{background-color:rgba(220,252,231,.9)}.bg-green-400{--tw-bg-opacity:1;background-color:rgb(74 222 128/var(--tw-bg-opacity,1))}.bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity,1))}.bg-green-50\/50{background-color:rgba(240,253,244,.5)}.bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity,1))}.bg-green-600{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.bg-indigo-100{--tw-bg-opacity:1;background-color:rgb(224 231 255/var(--tw-bg-opacity,1))}.bg-indigo-50{--tw-bg-opacity:1;background-color:rgb(238 242 255/var(--tw-bg-opacity,1))}.bg-indigo-50\/50{background-color:rgba(238,242,255,.5)}.bg-indigo-500{--tw-bg-opacity:1;background-color:rgb(99 102 241/var(--tw-bg-opacity,1))}.bg-indigo-600{--tw-bg-opacity:1;background-color:rgb(79 70 229/var(--tw-bg-opacity,1))}.bg-mercedes-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.bg-mercedes-silver{--tw-bg-opacity:1;background-color:rgb(192 192 192/var(--tw-bg-opacity,1))}.bg-orange-100{--tw-bg-opacity:1;background-color:rgb(255 237 213/var(--tw-bg-opacity,1))}.bg-orange-400{--tw-bg-opacity:1;background-color:rgb(251 146 60/var(--tw-bg-opacity,1))}.bg-orange-50{--tw-bg-opacity:1;background-color:rgb(255 247 237/var(--tw-bg-opacity,1))}.bg-orange-50\/50{background-color:rgba(255,247,237,.5)}.bg-orange-500{--tw-bg-opacity:1;background-color:rgb(249 115 22/var(--tw-bg-opacity,1))}.bg-orange-600{--tw-bg-opacity:1;background-color:rgb(234 88 12/var(--tw-bg-opacity,1))}.bg-purple-100{--tw-bg-opacity:1;background-color:rgb(243 232 255/var(--tw-bg-opacity,1))}.bg-purple-400{--tw-bg-opacity:1;background-color:rgb(192 132 252/var(--tw-bg-opacity,1))}.bg-purple-50{--tw-bg-opacity:1;background-color:rgb(250 245 255/var(--tw-bg-opacity,1))}.bg-purple-50\/50{background-color:rgba(250,245,255,.5)}.bg-purple-500{--tw-bg-opacity:1;background-color:rgb(168 85 247/var(--tw-bg-opacity,1))}.bg-purple-600{--tw-bg-opacity:1;background-color:rgb(147 51 234/var(--tw-bg-opacity,1))}.bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity,1))}.bg-red-100\/90{background-color:hsla(0,93%,94%,.9)}.bg-red-400{--tw-bg-opacity:1;background-color:rgb(248 113 113/var(--tw-bg-opacity,1))}.bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.bg-red-50\/50{background-color:hsla(0,86%,97%,.5)}.bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.bg-slate-100{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity,1))}.bg-slate-200{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity,1))}.bg-slate-50{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity,1))}.bg-slate-50\/50{background-color:rgba(248,250,252,.5)}.bg-slate-500{--tw-bg-opacity:1;background-color:rgb(100 116 139/var(--tw-bg-opacity,1))}.bg-slate-600{--tw-bg-opacity:1;background-color:rgb(71 85 105/var(--tw-bg-opacity,1))}.bg-slate-800{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.bg-slate-900{--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity,1))}.bg-teal-100{--tw-bg-opacity:1;background-color:rgb(204 251 241/var(--tw-bg-opacity,1))}.bg-teal-500{--tw-bg-opacity:1;background-color:rgb(20 184 166/var(--tw-bg-opacity,1))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.bg-white\/10{background-color:hsla(0,0%,100%,.1)}.bg-white\/15{background-color:hsla(0,0%,100%,.15)}.bg-white\/20{background-color:hsla(0,0%,100%,.2)}.bg-white\/40{background-color:hsla(0,0%,100%,.4)}.bg-white\/60{background-color:hsla(0,0%,100%,.6)}.bg-white\/80{background-color:hsla(0,0%,100%,.8)}.bg-white\/90{background-color:hsla(0,0%,100%,.9)}.bg-yellow-100{--tw-bg-opacity:1;background-color:rgb(254 249 195/var(--tw-bg-opacity,1))}.bg-yellow-400{--tw-bg-opacity:1;background-color:rgb(250 204 21/var(--tw-bg-opacity,1))}.bg-yellow-50{--tw-bg-opacity:1;background-color:rgb(254 252 232/var(--tw-bg-opacity,1))}.bg-yellow-500{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity,1))}.bg-yellow-600{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity,1))}.bg-opacity-50{--tw-bg-opacity:0.5}.bg-opacity-75{--tw-bg-opacity:0.75}.bg-opacity-95{--tw-bg-opacity:0.95}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.bg-gradient-to-tr{background-image:linear-gradient(to top right,var(--tw-gradient-stops))}.from-amber-300{--tw-gradient-from:#fcd34d var(--tw-gradient-from-position);--tw-gradient-to:rgba(252,211,77,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-blue-100{--tw-gradient-from:#dbeafe var(--tw-gradient-from-position);--tw-gradient-to:rgba(219,234,254,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-blue-300\/10{--tw-gradient-from:rgba(147,197,253,.1) var(--tw-gradient-from-position);--tw-gradient-to:rgba(147,197,253,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-blue-400{--tw-gradient-from:#60a5fa var(--tw-gradient-from-position);--tw-gradient-to:rgba(96,165,250,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-blue-400\/20{--tw-gradient-from:rgba(96,165,250,.2) var(--tw-gradient-from-position);--tw-gradient-to:rgba(96,165,250,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-blue-50{--tw-gradient-from:#eff6ff var(--tw-gradient-from-position);--tw-gradient-to:rgba(239,246,255,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-blue-500{--tw-gradient-from:#3b82f6 var(--tw-gradient-from-position);--tw-gradient-to:rgba(59,130,246,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-blue-500\/10{--tw-gradient-from:rgba(59,130,246,.1) var(--tw-gradient-from-position);--tw-gradient-to:rgba(59,130,246,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-blue-600{--tw-gradient-from:#2563eb var(--tw-gradient-from-position);--tw-gradient-to:rgba(37,99,235,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-blue-600\/10{--tw-gradient-from:rgba(37,99,235,.1) var(--tw-gradient-from-position);--tw-gradient-to:rgba(37,99,235,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-emerald-400{--tw-gradient-from:#34d399 var(--tw-gradient-from-position);--tw-gradient-to:rgba(52,211,153,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-emerald-50{--tw-gradient-from:#ecfdf5 var(--tw-gradient-from-position);--tw-gradient-to:rgba(236,253,245,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-green-100{--tw-gradient-from:#dcfce7 var(--tw-gradient-from-position);--tw-gradient-to:rgba(220,252,231,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-green-400{--tw-gradient-from:#4ade80 var(--tw-gradient-from-position);--tw-gradient-to:rgba(74,222,128,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-green-50{--tw-gradient-from:#f0fdf4 var(--tw-gradient-from-position);--tw-gradient-to:rgba(240,253,244,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-green-50\/90{--tw-gradient-from:rgba(240,253,244,.9) var(--tw-gradient-from-position);--tw-gradient-to:rgba(240,253,244,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-green-500{--tw-gradient-from:#22c55e var(--tw-gradient-from-position);--tw-gradient-to:rgba(34,197,94,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-green-500\/10{--tw-gradient-from:rgba(34,197,94,.1) var(--tw-gradient-from-position);--tw-gradient-to:rgba(34,197,94,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-orange-50{--tw-gradient-from:#fff7ed var(--tw-gradient-from-position);--tw-gradient-to:rgba(255,247,237,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-orange-500{--tw-gradient-from:#f97316 var(--tw-gradient-from-position);--tw-gradient-to:rgba(249,115,22,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-orange-500\/10{--tw-gradient-from:rgba(249,115,22,.1) var(--tw-gradient-from-position);--tw-gradient-to:rgba(249,115,22,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-purple-100{--tw-gradient-from:#f3e8ff var(--tw-gradient-from-position);--tw-gradient-to:rgba(243,232,255,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-purple-400\/20{--tw-gradient-from:rgba(192,132,252,.2) var(--tw-gradient-from-position);--tw-gradient-to:rgba(192,132,252,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-purple-50{--tw-gradient-from:#faf5ff var(--tw-gradient-from-position);--tw-gradient-to:rgba(250,245,255,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-purple-500{--tw-gradient-from:#a855f7 var(--tw-gradient-from-position);--tw-gradient-to:rgba(168,85,247,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-purple-500\/10{--tw-gradient-from:rgba(168,85,247,.1) var(--tw-gradient-from-position);--tw-gradient-to:rgba(168,85,247,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-purple-600{--tw-gradient-from:#9333ea var(--tw-gradient-from-position);--tw-gradient-to:rgba(147,51,234,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-red-400{--tw-gradient-from:#f87171 var(--tw-gradient-from-position);--tw-gradient-to:hsla(0,91%,71%,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-red-500{--tw-gradient-from:#ef4444 var(--tw-gradient-from-position);--tw-gradient-to:rgba(239,68,68,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-red-500\/10{--tw-gradient-from:rgba(239,68,68,.1) var(--tw-gradient-from-position);--tw-gradient-to:rgba(239,68,68,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-slate-50{--tw-gradient-from:#f8fafc var(--tw-gradient-from-position);--tw-gradient-to:rgba(248,250,252,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-slate-500{--tw-gradient-from:#64748b var(--tw-gradient-from-position);--tw-gradient-to:rgba(100,116,139,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-slate-900{--tw-gradient-from:#0f172a var(--tw-gradient-from-position);--tw-gradient-to:rgba(15,23,42,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-transparent{--tw-gradient-from:transparent var(--tw-gradient-from-position);--tw-gradient-to:transparent var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-white{--tw-gradient-from:#fff var(--tw-gradient-from-position);--tw-gradient-to:hsla(0,0%,100%,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-white\/90{--tw-gradient-from:hsla(0,0%,100%,.9) var(--tw-gradient-from-position);--tw-gradient-to:hsla(0,0%,100%,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.via-blue-100{--tw-gradient-to:rgba(219,234,254,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#dbeafe var(--tw-gradient-via-position),var(--tw-gradient-to)}.via-blue-200{--tw-gradient-to:rgba(191,219,254,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#bfdbfe var(--tw-gradient-via-position),var(--tw-gradient-to)}.via-blue-50{--tw-gradient-to:rgba(239,246,255,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#eff6ff var(--tw-gradient-via-position),var(--tw-gradient-to)}.via-blue-900{--tw-gradient-to:rgba(30,58,138,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#1e3a8a var(--tw-gradient-via-position),var(--tw-gradient-to)}.via-green-50{--tw-gradient-to:rgba(240,253,244,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#f0fdf4 var(--tw-gradient-via-position),var(--tw-gradient-to)}.via-green-500{--tw-gradient-to:rgba(34,197,94,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#22c55e var(--tw-gradient-via-position),var(--tw-gradient-to)}.via-indigo-50{--tw-gradient-to:rgba(238,242,255,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#eef2ff var(--tw-gradient-via-position),var(--tw-gradient-to)}.via-purple-500{--tw-gradient-to:rgba(168,85,247,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#a855f7 var(--tw-gradient-via-position),var(--tw-gradient-to)}.via-red-50{--tw-gradient-to:hsla(0,86%,97%,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#fef2f2 var(--tw-gradient-via-position),var(--tw-gradient-to)}.via-white\/20{--tw-gradient-to:hsla(0,0%,100%,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),hsla(0,0%,100%,.2) var(--tw-gradient-via-position),var(--tw-gradient-to)}.via-white\/5{--tw-gradient-to:hsla(0,0%,100%,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),hsla(0,0%,100%,.05) var(--tw-gradient-via-position),var(--tw-gradient-to)}.to-blue-200{--tw-gradient-to:#bfdbfe var(--tw-gradient-to-position)}.to-blue-600{--tw-gradient-to:#2563eb var(--tw-gradient-to-position)}.to-blue-700{--tw-gradient-to:#1d4ed8 var(--tw-gradient-to-position)}.to-emerald-50{--tw-gradient-to:#ecfdf5 var(--tw-gradient-to-position)}.to-emerald-50\/80{--tw-gradient-to:rgba(236,253,245,.8) var(--tw-gradient-to-position)}.to-emerald-500{--tw-gradient-to:#10b981 var(--tw-gradient-to-position)}.to-emerald-500\/10{--tw-gradient-to:rgba(16,185,129,.1) var(--tw-gradient-to-position)}.to-emerald-600{--tw-gradient-to:#059669 var(--tw-gradient-to-position)}.to-green-200{--tw-gradient-to:#bbf7d0 var(--tw-gradient-to-position)}.to-green-50{--tw-gradient-to:#f0fdf4 var(--tw-gradient-to-position)}.to-green-600{--tw-gradient-to:#16a34a var(--tw-gradient-to-position)}.to-indigo-300\/10{--tw-gradient-to:rgba(165,180,252,.1) var(--tw-gradient-to-position)}.to-indigo-50{--tw-gradient-to:#eef2ff var(--tw-gradient-to-position)}.to-indigo-500{--tw-gradient-to:#6366f1 var(--tw-gradient-to-position)}.to-indigo-500\/10{--tw-gradient-to:rgba(99,102,241,.1) var(--tw-gradient-to-position)}.to-indigo-600{--tw-gradient-to:#4f46e5 var(--tw-gradient-to-position)}.to-indigo-600\/20{--tw-gradient-to:rgba(79,70,229,.2) var(--tw-gradient-to-position)}.to-indigo-900{--tw-gradient-to:#312e81 var(--tw-gradient-to-position)}.to-orange-400{--tw-gradient-to:#fb923c var(--tw-gradient-to-position)}.to-orange-50{--tw-gradient-to:#fff7ed var(--tw-gradient-to-position)}.to-orange-500{--tw-gradient-to:#f97316 var(--tw-gradient-to-position)}.to-orange-600{--tw-gradient-to:#ea580c var(--tw-gradient-to-position)}.to-pink-50{--tw-gradient-to:#fdf2f8 var(--tw-gradient-to-position)}.to-pink-500\/10{--tw-gradient-to:rgba(236,72,153,.1) var(--tw-gradient-to-position)}.to-pink-600\/20{--tw-gradient-to:rgba(219,39,119,.2) var(--tw-gradient-to-position)}.to-purple-200{--tw-gradient-to:#e9d5ff var(--tw-gradient-to-position)}.to-purple-50{--tw-gradient-to:#faf5ff var(--tw-gradient-to-position)}.to-purple-500{--tw-gradient-to:#a855f7 var(--tw-gradient-to-position)}.to-purple-600{--tw-gradient-to:#9333ea var(--tw-gradient-to-position)}.to-purple-600\/10{--tw-gradient-to:rgba(147,51,234,.1) var(--tw-gradient-to-position)}.to-purple-700{--tw-gradient-to:#7e22ce var(--tw-gradient-to-position)}.to-red-50{--tw-gradient-to:#fef2f2 var(--tw-gradient-to-position)}.to-red-500\/10{--tw-gradient-to:rgba(239,68,68,.1) var(--tw-gradient-to-position)}.to-red-600{--tw-gradient-to:#dc2626 var(--tw-gradient-to-position)}.to-rose-500{--tw-gradient-to:#f43f5e var(--tw-gradient-to-position)}.to-slate-100{--tw-gradient-to:#f1f5f9 var(--tw-gradient-to-position)}.to-slate-600{--tw-gradient-to:#475569 var(--tw-gradient-to-position)}.to-slate-700{--tw-gradient-to:#334155 var(--tw-gradient-to-position)}.to-teal-50{--tw-gradient-to:#f0fdfa var(--tw-gradient-to-position)}.to-transparent{--tw-gradient-to:transparent var(--tw-gradient-to-position)}.to-violet-500\/10{--tw-gradient-to:rgba(139,92,246,.1) var(--tw-gradient-to-position)}.to-white{--tw-gradient-to:#fff var(--tw-gradient-to-position)}.to-white\/70{--tw-gradient-to:hsla(0,0%,100%,.7) var(--tw-gradient-to-position)}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.object-cover{-o-object-fit:cover;object-fit:cover}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-10{padding:2.5rem}.p-12{padding:3rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-20{padding-top:5rem;padding-bottom:5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-2{padding-bottom:.5rem}.pb-20{padding-bottom:5rem}.pb-4{padding-bottom:1rem}.pb-6{padding-bottom:1.5rem}.pb-8{padding-bottom:2rem}.pl-10{padding-left:2.5rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pr-10{padding-right:2.5rem}.pr-12{padding-right:3rem}.pr-20{padding-right:5rem}.pr-3{padding-right:.75rem}.pr-4{padding-right:1rem}.pt-4{padding-top:1rem}.pt-5{padding-top:1.25rem}.pt-6{padding-top:1.5rem}.pt-8{padding-top:2rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-5xl{font-size:3rem;line-height:1}.text-6xl{font-size:3.75rem;line-height:1}.text-8xl{font-size:6rem;line-height:1}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-4{line-height:1rem}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-relaxed{line-height:1.625}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.text-amber-500{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity,1))}.text-amber-600{--tw-text-opacity:1;color:rgb(217 119 6/var(--tw-text-opacity,1))}.text-amber-800{--tw-text-opacity:1;color:rgb(146 64 14/var(--tw-text-opacity,1))}.text-amber-900{--tw-text-opacity:1;color:rgb(120 53 15/var(--tw-text-opacity,1))}.text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.text-blue-100{--tw-text-opacity:1;color:rgb(219 234 254/var(--tw-text-opacity,1))}.text-blue-200{--tw-text-opacity:1;color:rgb(191 219 254/var(--tw-text-opacity,1))}.text-blue-400{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity,1))}.text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.text-blue-700{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity,1))}.text-blue-800{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity,1))}.text-blue-900{--tw-text-opacity:1;color:rgb(30 58 138/var(--tw-text-opacity,1))}.text-cyan-600{--tw-text-opacity:1;color:rgb(8 145 178/var(--tw-text-opacity,1))}.text-emerald-600{--tw-text-opacity:1;color:rgb(5 150 105/var(--tw-text-opacity,1))}.text-emerald-800{--tw-text-opacity:1;color:rgb(6 95 70/var(--tw-text-opacity,1))}.text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity,1))}.text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity,1))}.text-green-800{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity,1))}.text-green-900{--tw-text-opacity:1;color:rgb(20 83 45/var(--tw-text-opacity,1))}.text-indigo-400{--tw-text-opacity:1;color:rgb(129 140 248/var(--tw-text-opacity,1))}.text-indigo-600{--tw-text-opacity:1;color:rgb(79 70 229/var(--tw-text-opacity,1))}.text-indigo-800{--tw-text-opacity:1;color:rgb(55 48 163/var(--tw-text-opacity,1))}.text-indigo-900{--tw-text-opacity:1;color:rgb(49 46 129/var(--tw-text-opacity,1))}.text-mercedes-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.text-mercedes-silver{--tw-text-opacity:1;color:rgb(192 192 192/var(--tw-text-opacity,1))}.text-orange-500{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity,1))}.text-orange-600{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity,1))}.text-orange-700{--tw-text-opacity:1;color:rgb(194 65 12/var(--tw-text-opacity,1))}.text-orange-800{--tw-text-opacity:1;color:rgb(154 52 18/var(--tw-text-opacity,1))}.text-purple-500{--tw-text-opacity:1;color:rgb(168 85 247/var(--tw-text-opacity,1))}.text-purple-600{--tw-text-opacity:1;color:rgb(147 51 234/var(--tw-text-opacity,1))}.text-purple-800{--tw-text-opacity:1;color:rgb(107 33 168/var(--tw-text-opacity,1))}.text-purple-900{--tw-text-opacity:1;color:rgb(88 28 135/var(--tw-text-opacity,1))}.text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity,1))}.text-red-900{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity,1))}.text-slate-300{--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity,1))}.text-slate-400{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity,1))}.text-slate-500{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity,1))}.text-slate-600{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity,1))}.text-slate-700{--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity,1))}.text-slate-800{--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity,1))}.text-slate-900{--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1))}.text-teal-600{--tw-text-opacity:1;color:rgb(13 148 136/var(--tw-text-opacity,1))}.text-transparent{color:transparent}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.text-yellow-400{--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity,1))}.text-yellow-500{--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity,1))}.text-yellow-600{--tw-text-opacity:1;color:rgb(202 138 4/var(--tw-text-opacity,1))}.text-yellow-700{--tw-text-opacity:1;color:rgb(161 98 7/var(--tw-text-opacity,1))}.text-yellow-800{--tw-text-opacity:1;color:rgb(133 77 14/var(--tw-text-opacity,1))}.text-yellow-900{--tw-text-opacity:1;color:rgb(113 63 18/var(--tw-text-opacity,1))}.underline{text-decoration-line:underline}.overline{text-decoration-line:overline}.placeholder-gray-400::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.placeholder-gray-400::placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.placeholder-slate-500::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(100 116 139/var(--tw-placeholder-opacity,1))}.placeholder-slate-500::placeholder{--tw-placeholder-opacity:1;color:rgb(100 116 139/var(--tw-placeholder-opacity,1))}.opacity-0{opacity:0}.opacity-10{opacity:.1}.opacity-100{opacity:1}.opacity-15{opacity:.15}.opacity-25{opacity:.25}.opacity-30{opacity:.3}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-2xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-lg,.shadow-md{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-sm,.shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}.outline{outline-style:solid}.ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring,.ring-2{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.blur{--tw-blur:blur(8px)}.blur,.blur-2xl{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.blur-2xl{--tw-blur:blur(40px)}.blur-3xl{--tw-blur:blur(64px)}.blur-3xl,.blur-sm{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.blur-sm{--tw-blur:blur(4px)}.drop-shadow{--tw-drop-shadow:drop-shadow(0 1px 2px rgba(0,0,0,.1)) drop-shadow(0 1px 1px rgba(0,0,0,.06))}.drop-shadow,.drop-shadow-sm{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.drop-shadow-sm{--tw-drop-shadow:drop-shadow(0 1px 1px rgba(0,0,0,.05))}.invert{--tw-invert:invert(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.\!filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-2xl{--tw-backdrop-blur:blur(40px)}.backdrop-blur-2xl,.backdrop-blur-md{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-md{--tw-backdrop-blur:blur(12px)}.backdrop-blur-sm{--tw-backdrop-blur:blur(4px)}.backdrop-blur-sm,.backdrop-blur-xl{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-xl{--tw-backdrop-blur:blur(24px)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.delay-1000{transition-delay:1s}.delay-500{transition-delay:.5s}.duration-1000{transition-duration:1s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.flash-message{position:fixed;top:1rem;right:1rem;z-index:50;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));border-radius:1rem;border-width:1px;padding:1rem 1.5rem;font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.5s;background:hsla(0,0%,100%,.08);backdrop-filter:blur(40px) saturate(200%) brightness(130%) contrast(110%);-webkit-backdrop-filter:blur(40px) saturate(200%) brightness(130%) contrast(110%);border:1px solid hsla(0,0%,100%,.25);box-shadow:0 32px 64px rgba(0,0,0,.25),0 12px 24px rgba(0,0,0,.15),inset 0 1px 0 hsla(0,0%,100%,.4),0 0 0 1px hsla(0,0%,100%,.1);animation:flash-slide-in .5s cubic-bezier(.4,0,.2,1);transition:all .5s cubic-bezier(.4,0,.2,1)}.dark .flash-message{background:rgba(0,0,0,.2);backdrop-filter:blur(40px) saturate(180%) brightness(120%) contrast(115%);-webkit-backdrop-filter:blur(40px) saturate(180%) brightness(120%) contrast(115%);border:1px solid hsla(0,0%,100%,.15);box-shadow:0 32px 64px rgba(0,0,0,.6),0 12px 24px rgba(0,0,0,.4),inset 0 1px 0 hsla(0,0%,100%,.2),0 0 0 1px hsla(0,0%,100%,.05)}.flash-message:hover{transform:translateY(-2px) scale(1.02);box-shadow:0 40px 80px rgba(0,0,0,.3),0 16px 32px rgba(0,0,0,.2),inset 0 1px 0 hsla(0,0%,100%,.5),0 0 0 1px hsla(0,0%,100%,.15)}.dark .flash-message:hover{box-shadow:0 40px 80px rgba(0,0,0,.7),0 16px 32px rgba(0,0,0,.5),inset 0 1px 0 hsla(0,0%,100%,.3),0 0 0 1px hsla(0,0%,100%,.1)}.flash-message.info{--tw-text-opacity:1;color:rgb(219 234 254/var(--tw-text-opacity,1));background:linear-gradient(135deg,rgba(59,130,246,.2),rgba(147,197,253,.15) 50%,rgba(59,130,246,.1));border:1px solid rgba(59,130,246,.3)}.flash-message.success{--tw-text-opacity:1;color:rgb(220 252 231/var(--tw-text-opacity,1));background:linear-gradient(135deg,rgba(34,197,94,.2),rgba(134,239,172,.15) 50%,rgba(34,197,94,.1));border:1px solid rgba(34,197,94,.3)}.flash-message.warning{--tw-text-opacity:1;color:rgb(254 249 195/var(--tw-text-opacity,1));background:linear-gradient(135deg,rgba(245,158,11,.2),rgba(252,211,77,.15) 50%,rgba(245,158,11,.1));border:1px solid rgba(245,158,11,.3)}.flash-message.error{--tw-text-opacity:1;color:rgb(254 226 226/var(--tw-text-opacity,1));background:linear-gradient(135deg,rgba(239,68,68,.2),hsla(0,94%,82%,.15) 50%,rgba(239,68,68,.1));border:1px solid rgba(239,68,68,.3)}@keyframes flash-slide-in{0%{opacity:0;transform:translateX(100%) translateY(-20px) scale(.9);-webkit-backdrop-filter:blur(0);backdrop-filter:blur(0)}50%{opacity:.8;transform:translateX(20px) translateY(-10px) scale(1.05);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}to{opacity:1;transform:translateX(0) translateY(0) scale(1);-webkit-backdrop-filter:blur(40px);backdrop-filter:blur(40px)}}@keyframes flash-slide-out{0%{opacity:1;transform:translateX(0) translateY(0) scale(1)}to{opacity:0;transform:translateX(100%) translateY(-20px) scale(.9)}}.flash-message.hiding{animation:flash-slide-out .4s cubic-bezier(.4,0,.2,1) forwards}.dnd-toggle{position:relative;display:inline-flex;height:1.5rem;width:2.75rem;align-items:center;border-radius:9999px;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.dnd-toggle:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity,1));--tw-ring-offset-width:2px}.dnd-toggle{background:rgba(156,163,175,.3);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(156,163,175,.2)}.dnd-toggle.active{background:rgba(239,68,68,.3);border:1px solid rgba(239,68,68,.4)}.dnd-toggle-slider{display:inline-block;height:1rem;width:1rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));border-radius:9999px;--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s;background:hsla(0,0%,100%,.9);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid hsla(0,0%,100%,.3);box-shadow:0 4px 8px rgba(0,0,0,.2),0 2px 4px rgba(0,0,0,.1);margin:.125rem}.dnd-toggle.active .dnd-toggle-slider{transform:translateX(1.25rem);background:#fff;box-shadow:0 6px 12px rgba(239,68,68,.3),0 3px 6px rgba(239,68,68,.2)}.dnd-indicator{position:fixed;top:1rem;left:1rem;z-index:50;display:flex;align-items:center;border-radius:.5rem;padding:.5rem .75rem;font-size:.875rem;line-height:1.25rem;font-weight:500;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s;background:rgba(239,68,68,.1);backdrop-filter:blur(20px) saturate(150%);-webkit-backdrop-filter:blur(20px) saturate(150%);border:1px solid rgba(239,68,68,.3);color:#ef4444;transform:translateY(-100%);opacity:0}.dnd-indicator.active{transform:translateY(0);opacity:1}.dnd-modal{position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;padding:1rem;background:rgba(0,0,0,.3);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px)}.dnd-modal-content{width:100%;max-width:28rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));border-radius:1rem;padding:1.5rem;--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;background:hsla(0,0%,100%,.1);backdrop-filter:blur(40px) saturate(200%) brightness(120%);-webkit-backdrop-filter:blur(40px) saturate(200%) brightness(120%);border:1px solid hsla(0,0%,100%,.3);box-shadow:0 25px 50px rgba(0,0,0,.25),0 8px 16px rgba(0,0,0,.15),inset 0 1px 0 hsla(0,0%,100%,.4)}.dark .dnd-modal-content{background:rgba(0,0,0,.3);backdrop-filter:blur(40px) saturate(180%) brightness(110%);-webkit-backdrop-filter:blur(40px) saturate(180%) brightness(110%);border:1px solid hsla(0,0%,100%,.15);box-shadow:0 25px 50px rgba(0,0,0,.6),0 8px 16px rgba(0,0,0,.4),inset 0 1px 0 hsla(0,0%,100%,.2)}.flash-message.dnd-suppressed{animation:flash-fade-in .3s ease-out;opacity:.3;transform:scale(.95);pointer-events:none}@keyframes flash-fade-in{0%{opacity:0;transform:scale(.9)}to{opacity:.3;transform:scale(.95)}}.dnd-counter{position:absolute;top:-.5rem;right:-.5rem;display:flex;height:1.25rem;width:1.25rem;align-items:center;justify-content:center;border-radius:9999px;--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1));font-size:.75rem;line-height:1rem;font-weight:700;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1));background:rgba(239,68,68,.9);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid hsla(0,0%,100%,.2);box-shadow:0 2px 4px rgba(0,0,0,.2);animation:dnd-counter-bounce .5s ease-out}@keyframes dnd-counter-bounce{0%{transform:scale(0)}50%{transform:scale(1.2)}to{transform:scale(1)}}@keyframes slide-down{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.mercedes-background:before{content:"";position:fixed;top:0;left:0;width:100%;height:100%;z-index:-1;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='80' height='80' fill='currentColor' opacity='.03'%3E%3Cpath d='M58.6 4.5C53 1.6 46.7 0 40 0S27 1.6 21.4 4.5C8.7 11.2 0 24.6 0 40s8.7 28.8 21.5 35.5C27 78.3 33.3 80 40 80s12.9-1.7 18.5-4.6C71.3 68.8 80 55.4 80 40S71.3 11.2 58.6 4.5M4 40c0-13.1 7-24.5 17.5-30.9C26.6 6 32.5 4.2 39 4l-4.5 32.7-13 10.1L8.3 57.1C5.6 52 4 46.2 4 40m54.6 30.8C53.1 74.1 46.8 76 40 76s-13.2-1.9-18.6-5.2c-4.9-2.9-8.9-6.9-11.9-11.7l11.9-4.9L40 46.6l18.6 7.5 12 4.9c-3 4.9-7.2 8.9-12 11.8m0-24-12.9-10L41.1 4c6.3.2 12.3 2 17.4 5.1C69 15.4 76 26.9 76 40c0 6.2-1.5 12-4.3 17.1z'/%3E%3C/svg%3E");background-position:50%;background-repeat:repeat;background-size:120px 120px;pointer-events:none;opacity:.03;transition:opacity .3s ease}.dark .mercedes-background:before{opacity:.015;filter:invert(1) brightness(.3);background-size:150px 150px}.navbar{position:sticky!important;top:0!important;z-index:50!important;width:100%!important;left:0!important;right:0!important;--navbar-blur:40px;--navbar-opacity:0.15;background:rgba(255,255,255,var(--navbar-opacity,.15))!important;backdrop-filter:blur(var(--navbar-blur,40px)) saturate(200%) brightness(110%) contrast(105%)!important;-webkit-backdrop-filter:blur(var(--navbar-blur,40px)) saturate(200%) brightness(110%) contrast(105%)!important;box-shadow:0 8px 32px rgba(0,0,0,.12),0 2px 8px rgba(0,0,0,.08),inset 0 1px 0 hsla(0,0%,100%,.3),0 0 0 1px hsla(0,0%,100%,.15)!important;border-bottom:1px solid hsla(0,0%,100%,.2)!important;transition:all .3s cubic-bezier(.4,0,.2,1)!important}.dark .navbar{--navbar-dark-opacity:0.25;background:rgba(0,0,0,var(--navbar-dark-opacity,.25))!important;backdrop-filter:blur(calc(var(--navbar-blur, 40px) + 5px)) saturate(180%) brightness(120%) contrast(115%)!important;-webkit-backdrop-filter:blur(calc(var(--navbar-blur, 40px) + 5px)) saturate(180%) brightness(120%) contrast(115%)!important;box-shadow:0 8px 32px rgba(0,0,0,.4),0 2px 8px rgba(0,0,0,.3),inset 0 1px 0 hsla(0,0%,100%,.15),0 0 0 1px hsla(0,0%,100%,.08)!important;border-bottom:1px solid hsla(0,0%,100%,.1)!important}.navbar.scrolled{--navbar-blur:50px;--navbar-opacity:0.25;background:rgba(255,255,255,var(--navbar-opacity,.25))!important;backdrop-filter:blur(var(--navbar-blur,50px)) saturate(220%) brightness(115%) contrast(110%)!important;-webkit-backdrop-filter:blur(var(--navbar-blur,50px)) saturate(220%) brightness(115%) contrast(110%)!important;box-shadow:0 12px 40px rgba(0,0,0,.15),0 4px 12px rgba(0,0,0,.1),inset 0 1px 0 hsla(0,0%,100%,.4),0 0 0 1px hsla(0,0%,100%,.2)!important}.dark .navbar.scrolled{--navbar-dark-opacity:0.35;background:rgba(0,0,0,var(--navbar-dark-opacity,.35))!important;backdrop-filter:blur(calc(var(--navbar-blur, 50px) + 5px)) saturate(200%) brightness(125%) contrast(120%)!important;-webkit-backdrop-filter:blur(calc(var(--navbar-blur, 50px) + 5px)) saturate(200%) brightness(125%) contrast(120%)!important;box-shadow:0 12px 40px rgba(0,0,0,.5),0 4px 12px rgba(0,0,0,.4),inset 0 1px 0 hsla(0,0%,100%,.2),0 0 0 1px hsla(0,0%,100%,.1)!important}.navbar-menu-new{display:flex;align-items:center;justify-content:center}.navbar-menu-new>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.125rem*var(--tw-space-x-reverse));margin-left:calc(.125rem*(1 - var(--tw-space-x-reverse)))}@media (min-width:768px){.navbar-menu-new>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.25rem*var(--tw-space-x-reverse));margin-left:calc(.25rem*(1 - var(--tw-space-x-reverse)))}}.navbar-menu-new{max-width:100%;overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none;background:hsla(0,0%,100%,.1);backdrop-filter:blur(25px) saturate(170%) brightness(108%);-webkit-backdrop-filter:blur(25px) saturate(170%) brightness(108%);border-radius:16px;padding:8px;margin:0 16px;border:1px solid hsla(0,0%,100%,.15);box-shadow:0 6px 20px rgba(0,0,0,.1),inset 0 1px 0 hsla(0,0%,100%,.2),0 0 0 1px hsla(0,0%,100%,.05);transition:all .3s cubic-bezier(.4,0,.2,1)}.dark .navbar-menu-new{background:rgba(0,0,0,.2);backdrop-filter:blur(30px) saturate(150%) brightness(115%);-webkit-backdrop-filter:blur(30px) saturate(150%) brightness(115%);border:1px solid hsla(0,0%,100%,.1);box-shadow:0 6px 20px rgba(0,0,0,.3),inset 0 1px 0 hsla(0,0%,100%,.1),0 0 0 1px hsla(0,0%,100%,.03)}.navbar-menu-new::-webkit-scrollbar{display:none}.navbar-menu-new:hover{backdrop-filter:blur(35px) saturate(190%) brightness(112%);-webkit-backdrop-filter:blur(35px) saturate(190%) brightness(112%);box-shadow:0 8px 25px rgba(0,0,0,.15),inset 0 1px 0 hsla(0,0%,100%,.3),0 0 0 1px hsla(0,0%,100%,.1);transform:translateY(-1px)}.dark .navbar-menu-new:hover{backdrop-filter:blur(40px) saturate(170%) brightness(120%);-webkit-backdrop-filter:blur(40px) saturate(170%) brightness(120%);box-shadow:0 8px 25px rgba(0,0,0,.4),inset 0 1px 0 hsla(0,0%,100%,.15),0 0 0 1px hsla(0,0%,100%,.05)}.nav-item{display:flex;align-items:center}.nav-item>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.375rem*var(--tw-space-x-reverse));margin-left:calc(.375rem*(1 - var(--tw-space-x-reverse)))}.nav-item{border-radius:.75rem;padding:.625rem .75rem;font-size:.875rem;line-height:1.25rem;font-weight:500;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s;color:rgba(15,23,42,.85);background:hsla(0,0%,100%,.08);backdrop-filter:blur(15px) saturate(140%);-webkit-backdrop-filter:blur(15px) saturate(140%);border:1px solid hsla(0,0%,100%,.1);box-shadow:0 4px 12px rgba(0,0,0,.05),inset 0 1px 0 hsla(0,0%,100%,.15);position:relative;overflow:hidden;animation:nav-item-entrance .6s ease-out}.nav-item:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.2),transparent);transition:left .5s}.nav-item:hover:before{left:100%}.nav-item:after{content:"";position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:conic-gradient(from 0deg at 50% 50%,transparent 0deg,hsla(0,0%,100%,.1) 30deg,transparent 60deg);opacity:0;transition:opacity .3s ease;pointer-events:none;animation:rotate 3s linear infinite}.nav-item:hover:after{opacity:1}.dark .nav-item{color:hsla(0,0%,100%,.85);background:rgba(0,0,0,.15);backdrop-filter:blur(20px) saturate(130%);-webkit-backdrop-filter:blur(20px) saturate(130%);border:1px solid hsla(0,0%,100%,.08);box-shadow:0 4px 12px rgba(0,0,0,.2),inset 0 1px 0 hsla(0,0%,100%,.08)}.nav-item:hover{color:#0f172a;background:hsla(0,0%,100%,.2);backdrop-filter:blur(25px) saturate(160%) brightness(110%);-webkit-backdrop-filter:blur(25px) saturate(160%) brightness(110%);border:1px solid hsla(0,0%,100%,.25);box-shadow:0 8px 20px rgba(0,0,0,.12),inset 0 1px 0 hsla(0,0%,100%,.3),0 0 0 1px hsla(0,0%,100%,.1);transform:translateY(-2px) scale(1.02)}.dark .nav-item:hover{color:#fff;background:rgba(0,0,0,.25);backdrop-filter:blur(30px) saturate(150%) brightness(120%);-webkit-backdrop-filter:blur(30px) saturate(150%) brightness(120%);border:1px solid hsla(0,0%,100%,.15);box-shadow:0 8px 20px rgba(0,0,0,.3),inset 0 1px 0 hsla(0,0%,100%,.15),0 0 0 1px hsla(0,0%,100%,.05)}.nav-item.active{color:#0f172a;background:hsla(0,0%,100%,.35);backdrop-filter:blur(35px) saturate(180%) brightness(115%);-webkit-backdrop-filter:blur(35px) saturate(180%) brightness(115%);border:1px solid hsla(0,0%,100%,.4);box-shadow:0 12px 24px rgba(0,0,0,.15),inset 0 1px 0 hsla(0,0%,100%,.5),0 0 0 1px rgba(59,130,246,.3);transform:translateY(-1px);animation:nav-item-active-glow 2s ease-in-out infinite alternate}.dark .nav-item.active{color:#fff;background:rgba(0,0,0,.4);backdrop-filter:blur(40px) saturate(160%) brightness(125%);-webkit-backdrop-filter:blur(40px) saturate(160%) brightness(125%);border:1px solid hsla(0,0%,100%,.2);box-shadow:0 12px 24px rgba(0,0,0,.4),inset 0 1px 0 hsla(0,0%,100%,.2),0 0 0 1px rgba(59,130,246,.2)}@keyframes nav-item-entrance{0%{opacity:0;transform:translateY(10px) scale(.95);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}to{opacity:1;transform:translateY(0) scale(1);-webkit-backdrop-filter:blur(15px) saturate(140%);backdrop-filter:blur(15px) saturate(140%)}}@keyframes nav-item-active-glow{0%{box-shadow:0 12px 24px rgba(0,0,0,.15),inset 0 1px 0 hsla(0,0%,100%,.5),0 0 0 1px rgba(59,130,246,.3)}to{box-shadow:0 16px 32px rgba(0,0,0,.2),inset 0 1px 0 hsla(0,0%,100%,.6),0 0 0 2px rgba(59,130,246,.5)}}@keyframes rotate{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.navbar:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:radial-gradient(circle at 20% 50%,hsla(0,0%,100%,.1) 1px,transparent 0),radial-gradient(circle at 80% 50%,hsla(0,0%,100%,.1) 1px,transparent 0),radial-gradient(circle at 40% 20%,hsla(0,0%,100%,.05) 1px,transparent 0),radial-gradient(circle at 60% 80%,hsla(0,0%,100%,.05) 1px,transparent 0);opacity:0;animation:glassmorphism-particles 8s ease-in-out infinite;pointer-events:none}.dark .navbar:before{background:radial-gradient(circle at 20% 50%,hsla(0,0%,100%,.05) 1px,transparent 0),radial-gradient(circle at 80% 50%,hsla(0,0%,100%,.05) 1px,transparent 0),radial-gradient(circle at 40% 20%,hsla(0,0%,100%,.03) 1px,transparent 0),radial-gradient(circle at 60% 80%,hsla(0,0%,100%,.03) 1px,transparent 0)}@keyframes glassmorphism-particles{0%,to{opacity:0;transform:scale(1)}50%{opacity:1;transform:scale(1.1)}}.dark-mode-toggle-new{position:relative;display:flex;cursor:pointer;align-items:center;justify-content:center;border-radius:9999px;padding:.5rem;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s;background:rgba(241,245,249,.8);border:1px solid hsla(0,0%,100%,.7);box-shadow:0 2px 8px rgba(0,0,0,.05),0 1px 2px rgba(0,0,0,.04);color:#334155;z-index:100}.dark-mode-toggle-new:hover{--tw-translate-y:-0.125rem;background:rgba(241,245,249,.9);box-shadow:0 8px 16px rgba(0,0,0,.08),0 2px 4px rgba(0,0,0,.06)}.dark-mode-toggle-new:active,.dark-mode-toggle-new:hover{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.dark-mode-toggle-new:active{--tw-scale-x:.95;--tw-scale-y:.95;transition:transform .1s}.dark .dark-mode-toggle-new{background:rgba(30,41,59,.8);border:1px solid hsla(0,0%,100%,.1);box-shadow:0 2px 8px rgba(0,0,0,.2),0 1px 2px rgba(0,0,0,.1);color:#e2e8f0}.dark .dark-mode-toggle-new:hover{background:rgba(30,41,59,.9);box-shadow:0 8px 16px rgba(0,0,0,.2),0 2px 4px rgba(0,0,0,.15)}.dark-mode-toggle-new .moon-icon,.dark-mode-toggle-new .sun-icon{position:absolute;top:50%;left:50%;--tw-translate-x:-50%;--tw-translate-y:-50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.dark-mode-toggle-new .moon-icon:not(.hidden),.dark-mode-toggle-new .sun-icon:not(.hidden){animation:spin-in .5s cubic-bezier(.25,1,.5,1) forwards}@keyframes spin-in{0%{opacity:0;transform:translateY(10px) scale(.7) rotate(20deg)}to{opacity:1;transform:translateY(0) scale(1) rotate(0)}}.dark .sun-icon{display:none}.dark .moon-icon,.sun-icon{display:block}.moon-icon{display:none}.user-menu-button-new{display:flex;align-items:center}.user-menu-button-new>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.375rem*var(--tw-space-x-reverse));margin-left:calc(.375rem*(1 - var(--tw-space-x-reverse)))}.user-menu-button-new{border-radius:.5rem;padding:.25rem;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s;background:rgba(241,245,249,.6);border:1px solid hsla(0,0%,100%,.6);box-shadow:0 2px 8px rgba(0,0,0,.04),0 1px 2px rgba(0,0,0,.02)}.user-menu-button-new:hover{--tw-translate-y:-0.125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));background:rgba(241,245,249,.8);box-shadow:0 8px 16px rgba(0,0,0,.06),0 2px 4px rgba(0,0,0,.04)}.dark .user-menu-button-new{background:rgba(30,41,59,.6);border:1px solid hsla(0,0%,100%,.08);box-shadow:0 2px 8px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.1)}.dark .user-menu-button-new:hover{background:rgba(30,41,59,.8);box-shadow:0 8px 16px rgba(0,0,0,.15),0 2px 4px rgba(0,0,0,.1)}.user-avatar-new{display:flex;height:1.75rem;width:1.75rem;align-items:center;justify-content:center;border-radius:9999px;font-size:.75rem;line-height:1rem;font-weight:600;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1));--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s;background:linear-gradient(135deg,#000,#333);box-shadow:0 2px 4px rgba(0,0,0,.2),0 1px 2px rgba(0,0,0,.1)}.dark .user-avatar-new{background:linear-gradient(135deg,#f8fafc,#e2e8f0);color:#0f172a;box-shadow:0 2px 4px rgba(0,0,0,.3),0 1px 2px rgba(0,0,0,.2)}.login-button-new{display:flex;align-items:center;border-radius:.5rem;padding:.375rem .75rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s;background:#000;color:#fff;border:1px solid hsla(0,0%,100%,.1);box-shadow:0 2px 8px rgba(0,0,0,.1),0 1px 2px rgba(0,0,0,.08)}.login-button-new:hover{--tw-translate-y:-0.125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));background:#333;box-shadow:0 8px 16px rgba(0,0,0,.15),0 3px 4px rgba(0,0,0,.1)}.dark .login-button-new{background:#fff;color:#000;border:1px solid rgba(0,0,0,.1);box-shadow:0 2px 8px rgba(0,0,0,.2),0 1px 2px rgba(0,0,0,.15)}.dark .login-button-new:hover{background:#f1f5f9;box-shadow:0 8px 16px rgba(0,0,0,.25),0 3px 4px rgba(0,0,0,.2)}.mobile-menu-new{z-index:40;width:100%;overflow:hidden;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s;background:hsla(0,0%,100%,.8);backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);box-shadow:0 4px 20px rgba(0,0,0,.06);max-height:0;opacity:0}.mobile-menu-new,.mobile-menu-new.open{border-bottom:1px solid rgba(241,245,249,.8)}.mobile-menu-new.open{max-height:400px;opacity:1}.dark .mobile-menu-new{background:rgba(15,23,42,.8);box-shadow:0 4px 20px rgba(0,0,0,.2);border-bottom:1px solid rgba(30,41,59,.8)}.mobile-nav-item{display:flex;align-items:center}.mobile-nav-item>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.625rem*var(--tw-space-x-reverse));margin-left:calc(.625rem*(1 - var(--tw-space-x-reverse)))}.mobile-nav-item{border-radius:.5rem;padding:.625rem .75rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity,1));transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.mobile-nav-item:is(.dark *){--tw-text-opacity:1;color:rgb(226 232 240/var(--tw-text-opacity,1))}.mobile-nav-item:hover{background:rgba(241,245,249,.8)}.dark .mobile-nav-item:hover{background:rgba(30,41,59,.6)}.mobile-nav-item.active{background:rgba(241,245,249,.9);color:#000;font-weight:500}.dark .mobile-nav-item.active{background:rgba(30,41,59,.8);color:#fff}.mb-stat-card{background:linear-gradient(135deg,rgba(240,249,255,.6),rgba(230,242,255,.6));color:#0f172a;position:relative;overflow:hidden;border:none;border-radius:var(--card-radius);backdrop-filter:blur(20px) saturate(180%) brightness(110%);-webkit-backdrop-filter:blur(20px) saturate(180%) brightness(110%);box-shadow:0 25px 50px rgba(0,0,0,.15),0 0 0 1px hsla(0,0%,100%,.1);padding:1.5rem;margin:1rem;transition:transform .3s ease,box-shadow .3s ease}.dark .mb-stat-card{background:linear-gradient(135deg,rgba(0,0,0,.7),hsla(0,0%,4%,.7));color:var(--text-primary,#f8fafc);box-shadow:0 25px 50px rgba(0,0,0,.3),0 0 0 1px hsla(0,0%,100%,.05)}.job-card,.stats-card{border-radius:.75rem;border-width:1px;border-color:rgba(229,231,235,.7);background-color:hsla(0,0%,100%,.6);--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);--tw-backdrop-blur:blur(40px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.job-card:is(.dark *),.stats-card:is(.dark *){border-color:rgba(51,65,85,.2);background-color:rgba(0,0,0,.8)}.job-card,.stats-card{backdrop-filter:blur(24px) saturate(200%) brightness(120%);-webkit-backdrop-filter:blur(24px) saturate(200%) brightness(120%);box-shadow:0 25px 50px rgba(0,0,0,.2),0 0 0 1px hsla(0,0%,100%,.1);border-radius:var(--card-radius)}footer{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s;background:hsla(0,0%,100%,.1);backdrop-filter:blur(30px) saturate(180%) brightness(120%);-webkit-backdrop-filter:blur(30px) saturate(180%) brightness(120%);border-top:1px solid hsla(0,0%,100%,.2);box-shadow:0 -8px 32px rgba(0,0,0,.1),0 -2px 8px rgba(0,0,0,.05),inset 0 1px 0 hsla(0,0%,100%,.2),0 0 0 1px hsla(0,0%,100%,.05)}.dark footer{background:rgba(0,0,0,.3);backdrop-filter:blur(30px) saturate(160%) brightness(110%);-webkit-backdrop-filter:blur(30px) saturate(160%) brightness(110%);border-top:1px solid hsla(0,0%,100%,.1);box-shadow:0 -8px 32px rgba(0,0,0,.3),0 -2px 8px rgba(0,0,0,.2),inset 0 1px 0 hsla(0,0%,100%,.1),0 0 0 1px hsla(0,0%,100%,.03)}.dropdown-arrow{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.mercedes-star-bg{position:relative}.mercedes-star-bg:after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='80' height='80' fill='currentColor' opacity='.05'%3E%3Cpath d='M58.6 4.5C53 1.6 46.7 0 40 0S27 1.6 21.4 4.5C8.7 11.2 0 24.6 0 40s8.7 28.8 21.5 35.5C27 78.3 33.3 80 40 80s12.9-1.7 18.5-4.6C71.3 68.8 80 55.4 80 40S71.3 11.2 58.6 4.5M4 40c0-13.1 7-24.5 17.5-30.9C26.6 6 32.5 4.2 39 4l-4.5 32.7-13 10.1L8.3 57.1C5.6 52 4 46.2 4 40m54.6 30.8C53.1 74.1 46.8 76 40 76s-13.2-1.9-18.6-5.2c-4.9-2.9-8.9-6.9-11.9-11.7l11.9-4.9L40 46.6l18.6 7.5 12 4.9c-3 4.9-7.2 8.9-12 11.8m0-24-12.9-10L41.1 4c6.3.2 12.3 2 17.4 5.1C69 15.4 76 26.9 76 40c0 6.2-1.5 12-4.3 17.1z'/%3E%3C/svg%3E");background-position:50%;background-repeat:repeat;background-size:40px 40px;z-index:-1;opacity:.05}.dark .mercedes-star-bg:after{opacity:.02;filter:invert(1) brightness(.4)}.glass-effect{backdrop-filter:blur(20px) saturate(180%) brightness(110%);-webkit-backdrop-filter:blur(20px) saturate(180%) brightness(110%);background:hsla(0,0%,100%,.1);border:1px solid hsla(0,0%,100%,.2);box-shadow:0 8px 32px rgba(0,0,0,.1),inset 0 1px 0 hsla(0,0%,100%,.3)}.dark .glass-effect{background:rgba(0,0,0,.3);border:1px solid hsla(0,0%,100%,.1);box-shadow:0 8px 32px rgba(0,0,0,.3),inset 0 1px 0 hsla(0,0%,100%,.15)}.glass-hover{transition:all .3s cubic-bezier(.4,0,.2,1)}.glass-hover:hover{transform:translateY(-2px);backdrop-filter:blur(25px) saturate(200%) brightness(120%);-webkit-backdrop-filter:blur(25px) saturate(200%) brightness(120%);box-shadow:0 20px 40px rgba(0,0,0,.15),0 8px 16px rgba(0,0,0,.1),inset 0 1px 0 hsla(0,0%,100%,.4)}.dark .glass-hover:hover{box-shadow:0 20px 40px rgba(0,0,0,.4),0 8px 16px rgba(0,0,0,.3),inset 0 1px 0 hsla(0,0%,100%,.2)}.printer-card-new{position:relative;overflow:hidden;border-radius:.75rem;border-width:1px;border-color:rgba(229,231,235,.7);background-image:linear-gradient(to bottom right,var(--tw-gradient-stops));--tw-gradient-from:hsla(0,0%,100%,.9) var(--tw-gradient-from-position);--tw-gradient-to:hsla(0,0%,100%,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to);--tw-gradient-to:hsla(0,0%,100%,.7) var(--tw-gradient-to-position);padding:1.25rem;--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);--tw-backdrop-blur:blur(40px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.printer-card-new:hover{--tw-translate-y:-0.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.printer-card-new:is(.dark *){border-color:rgba(51,65,85,.3);--tw-gradient-from:rgba(30,41,59,.9) var(--tw-gradient-from-position);--tw-gradient-to:rgba(30,41,59,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to);--tw-gradient-to:rgba(15,23,42,.7) var(--tw-gradient-to-position)}.printer-card-new{box-shadow:0 20px 40px rgba(0,0,0,.08),0 10px 20px rgba(0,0,0,.06),0 0 0 1px hsla(0,0%,100%,.1);border-radius:var(--card-radius,1rem)}.dark .printer-card-new{box-shadow:0 20px 40px rgba(0,0,0,.4),0 10px 20px rgba(0,0,0,.3),0 0 0 1px hsla(0,0%,100%,.05)}.printer-card-new.online{--tw-border-opacity:1;border-color:rgb(187 247 208/var(--tw-border-opacity,1));background-image:linear-gradient(to bottom right,var(--tw-gradient-stops));--tw-gradient-from:rgba(240,253,244,.9) var(--tw-gradient-from-position);--tw-gradient-to:rgba(240,253,244,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to);--tw-gradient-to:rgba(236,253,245,.8) var(--tw-gradient-to-position)}.printer-card-new.online:is(.dark *){border-color:rgba(21,128,61,.5);--tw-gradient-from:rgba(20,83,45,.3) var(--tw-gradient-from-position);--tw-gradient-to:rgba(20,83,45,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to);--tw-gradient-to:rgba(6,78,59,.2) var(--tw-gradient-to-position)}.printer-card-new.online{box-shadow:0 20px 40px rgba(0,122,85,.08),0 10px 20px rgba(0,122,85,.06),0 0 0 1px rgba(209,250,229,.4)}.dark .printer-card-new.online{box-shadow:0 20px 40px rgba(0,0,0,.3),0 10px 20px rgba(0,0,0,.2),0 0 0 1px rgba(16,185,129,.2)}.status-badge-new{display:inline-flex;align-items:center}.status-badge-new>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.25rem*var(--tw-space-x-reverse));margin-left:calc(.25rem*(1 - var(--tw-space-x-reverse)))}.status-badge-new{border-radius:9999px;padding:.25rem .625rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);background:hsla(0,0%,100%,.9);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);box-shadow:0 2px 5px rgba(0,0,0,.05)}.dark .status-badge-new{background:rgba(30,41,59,.7);box-shadow:0 2px 5px rgba(0,0,0,.2)}.status-badge-new.online{background-color:rgba(220,252,231,.9);--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity,1))}.status-badge-new.online:is(.dark *){background-color:rgba(20,83,45,.6);--tw-text-opacity:1;color:rgb(134 239 172/var(--tw-text-opacity,1))}.status-badge-new.offline{background-color:hsla(0,93%,94%,.9);--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity,1))}.status-badge-new.offline:is(.dark *){background-color:rgba(127,29,29,.6);--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.filter-bar-new{border-radius:.5rem;border-width:1px;border-color:rgba(229,231,235,.6);background-color:hsla(0,0%,100%,.8);padding:.375rem;--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);--tw-backdrop-blur:blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.filter-bar-new:is(.dark *){border-color:rgba(51,65,85,.3);background-color:rgba(30,41,59,.8)}.filter-bar-new{box-shadow:0 10px 25px rgba(0,0,0,.05),0 5px 10px rgba(0,0,0,.03),0 0 0 1px hsla(0,0%,100%,.2)}.dark .filter-bar-new{box-shadow:0 10px 25px rgba(0,0,0,.2),0 5px 10px rgba(0,0,0,.15),0 0 0 1px hsla(0,0%,100%,.05)}.filter-btn-new{border-radius:.375rem;padding:.5rem .875rem;font-size:.875rem;line-height:1.25rem;font-weight:500;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.filter-btn-new.active{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1));--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.filter-btn-new.active:is(.dark *){--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1))}.filter-btn-new.active{box-shadow:0 4px 10px rgba(0,0,0,.1)}.dark .filter-btn-new.active{box-shadow:0 4px 10px rgba(0,0,0,.3)}.action-btn-new{display:flex;align-items:center;justify-content:center;gap:.5rem;border-radius:.5rem;padding:.625rem 1rem;font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.action-btn-new:hover{--tw-translate-y:-0.125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.action-btn-new{backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.action-btn-new.primary{--tw-bg-opacity:1;background-color:rgb(79 70 229/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.action-btn-new.primary:hover{--tw-bg-opacity:1;background-color:rgb(67 56 202/var(--tw-bg-opacity,1))}.action-btn-new.primary:is(.dark *){--tw-bg-opacity:1;background-color:rgb(79 70 229/var(--tw-bg-opacity,1))}.action-btn-new.primary:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(99 102 241/var(--tw-bg-opacity,1))}.action-btn-new.primary{box-shadow:0 5px 15px rgba(79,70,229,.2)}.dark .action-btn-new.primary{box-shadow:0 5px 15px rgba(79,70,229,.3)}.action-btn-new.success{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.action-btn-new.success:hover{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.action-btn-new.success:is(.dark *){--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.action-btn-new.success:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity,1))}.action-btn-new.success{box-shadow:0 5px 15px rgba(16,185,129,.2)}.dark .action-btn-new.success{box-shadow:0 5px 15px rgba(16,185,129,.3)}.action-btn-new.danger{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.action-btn-new.danger:hover{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.action-btn-new.danger:is(.dark *){--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.action-btn-new.danger:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.action-btn-new.danger{box-shadow:0 5px 15px rgba(239,68,68,.2)}.dark .action-btn-new.danger{box-shadow:0 5px 15px rgba(239,68,68,.3)}.printer-info-row{margin-bottom:.375rem;display:flex;align-items:center;gap:.5rem;font-size:.75rem;line-height:1rem;--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity,1))}.printer-info-row:is(.dark *){--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity,1))}@media (min-width:640px){.printer-info-row{font-size:.875rem;line-height:1.25rem}}.printer-info-icon{height:.875rem;width:.875rem;flex-shrink:0;--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity,1))}.printer-info-icon:is(.dark *){--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity,1))}@media (min-width:640px){.printer-info-icon{height:1rem;width:1rem}}.online-indicator{position:absolute;top:.625rem;right:.625rem;height:.75rem;width:.75rem;border-radius:9999px;--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity,1));--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:0 0 0 rgba(16,185,129,.6);animation:pulse-ring 2s cubic-bezier(.455,.03,.515,.955) infinite}@keyframes pulse-ring{0%{box-shadow:0 0 0 0 rgba(16,185,129,.6)}70%{box-shadow:0 0 0 6px rgba(16,185,129,0)}to{box-shadow:0 0 0 0 rgba(16,185,129,0)}}.status-overview-new{display:flex;flex-wrap:wrap;gap:.75rem;border-radius:.5rem;border-width:1px;border-color:rgba(229,231,235,.6);background-color:hsla(0,0%,100%,.6);padding:.75rem;font-size:.75rem;line-height:1rem;--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);--tw-backdrop-blur:blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.status-overview-new:is(.dark *){border-color:rgba(51,65,85,.3);background-color:rgba(30,41,59,.6)}@media (min-width:640px){.status-overview-new{font-size:.875rem;line-height:1.25rem}}.status-overview-new{box-shadow:0 10px 25px rgba(0,0,0,.04),0 5px 10px rgba(0,0,0,.02),0 0 0 1px hsla(0,0%,100%,.1)}.dark .status-overview-new{box-shadow:0 10px 25px rgba(0,0,0,.15),0 5px 10px rgba(0,0,0,.1),0 0 0 1px hsla(0,0%,100%,.03)}.status-dot{height:.625rem;width:.625rem;border-radius:9999px}.status-dot.online{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity,1));animation:pulse-dot 2s cubic-bezier(.455,.03,.515,.955) infinite}.status-dot.offline{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}@keyframes pulse-dot{0%{transform:scale(.95);opacity:1}50%{transform:scale(1.1);opacity:.8}to{transform:scale(.95);opacity:1}}.modal-new{position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;background-color:rgba(0,0,0,.4);padding:1rem;--tw-backdrop-blur:blur(4px)}.modal-content-new,.modal-new{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.modal-content-new{width:100%;max-width:28rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));border-radius:1rem;border-width:1px;border-color:rgba(229,231,235,.6);background-color:hsla(0,0%,100%,.9);padding:1.5rem;--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);--tw-backdrop-blur:blur(40px);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.modal-content-new:is(.dark *){border-color:rgba(51,65,85,.3);background-color:rgba(30,41,59,.9)}.modal-content-new{box-shadow:0 25px 50px rgba(0,0,0,.15),0 15px 30px rgba(0,0,0,.1),0 20px 25px -5px rgba(0,0,0,.5),0 10px 10px -5px rgba(0,0,0,.3)}.user-dropdown-item{display:flex;cursor:pointer;align-items:center;padding:.75rem 1rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity,1));transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}.user-dropdown-item:hover{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity,1))}.user-dropdown-item:is(.dark *){--tw-text-opacity:1;color:rgb(226 232 240/var(--tw-text-opacity,1))}.user-dropdown-item:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.user-dropdown-item:first-child{border-top-left-radius:.75rem;border-top-right-radius:.75rem}.user-dropdown-item:last-child{border-bottom-right-radius:.75rem;border-bottom-left-radius:.75rem}.user-dropdown-item:hover{background:rgba(248,250,252,.8);transform:translateX(2px)}.dark .user-dropdown-item:hover{background:rgba(30,41,59,.8)}.user-dropdown-icon{margin-right:.75rem;height:1rem;width:1rem;--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity,1));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}.user-dropdown-icon:is(.dark *){--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity,1))}.user-dropdown-item:hover .user-dropdown-icon{--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity,1))}.user-dropdown-item:hover .user-dropdown-icon:is(.dark *){--tw-text-opacity:1;color:rgb(226 232 240/var(--tw-text-opacity,1))}.user-dropdown-divider{margin-top:.25rem;margin-bottom:.25rem;border-top-width:1px;--tw-border-opacity:1;border-color:rgb(226 232 240/var(--tw-border-opacity,1))}.user-dropdown-divider:is(.dark *){--tw-border-opacity:1;border-color:rgb(51 65 85/var(--tw-border-opacity,1))}.user-info-section{border-bottom-width:1px;--tw-border-opacity:1;border-color:rgb(226 232 240/var(--tw-border-opacity,1));padding:.75rem 1rem}.user-info-section:is(.dark *){--tw-border-opacity:1;border-color:rgb(51 65 85/var(--tw-border-opacity,1))}.user-info-section{background:rgba(248,250,252,.5)}.dark .user-info-section{background:rgba(30,41,59,.5)}.user-info-name{font-size:.875rem;line-height:1.25rem;font-weight:600;--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1))}.user-info-name:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.user-info-role{margin-top:.25rem;font-size:.75rem;line-height:1rem;--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity,1))}.user-info-role:is(.dark *){--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity,1))}.dark\:bg-dark-surface:is(.dark *){background-color:#1e293b}.hover\:-translate-y-0:hover{--tw-translate-y:-0px}.hover\:-translate-y-0:hover,.hover\:-translate-y-0\.5:hover{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:-translate-y-0\.5:hover{--tw-translate-y:-0.125rem}.hover\:-translate-y-1:hover{--tw-translate-y:-0.25rem}.hover\:-translate-y-1:hover,.hover\:-translate-y-2:hover{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:-translate-y-2:hover{--tw-translate-y:-0.5rem}.hover\:scale-105:hover{--tw-scale-x:1.05;--tw-scale-y:1.05}.hover\:scale-105:hover,.hover\:scale-110:hover{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:scale-110:hover{--tw-scale-x:1.1;--tw-scale-y:1.1}.hover\:border-blue-300:hover{--tw-border-opacity:1;border-color:rgb(147 197 253/var(--tw-border-opacity,1))}.hover\:border-blue-600:hover{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity,1))}.hover\:border-emerald-600:hover{--tw-border-opacity:1;border-color:rgb(5 150 105/var(--tw-border-opacity,1))}.hover\:bg-amber-100:hover{--tw-bg-opacity:1;background-color:rgb(254 243 199/var(--tw-bg-opacity,1))}.hover\:bg-black\/70:hover{background-color:rgba(0,0,0,.7)}.hover\:bg-blue-100:hover{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.hover\:bg-blue-200:hover{--tw-bg-opacity:1;background-color:rgb(191 219 254/var(--tw-bg-opacity,1))}.hover\:bg-blue-600:hover{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.hover\:bg-blue-700:hover{--tw-bg-opacity:1;background-color:rgb(29 78 216/var(--tw-bg-opacity,1))}.hover\:bg-emerald-700:hover{--tw-bg-opacity:1;background-color:rgb(4 120 87/var(--tw-bg-opacity,1))}.hover\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.hover\:bg-gray-100\/80:hover{background-color:rgba(243,244,246,.8)}.hover\:bg-gray-300:hover{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity,1))}.hover\:bg-gray-400:hover{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity,1))}.hover\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.hover\:bg-gray-600:hover{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.hover\:bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.hover\:bg-gray-800:hover{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.hover\:bg-green-100:hover{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1))}.hover\:bg-green-600:hover{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.hover\:bg-green-700:hover{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.hover\:bg-indigo-600:hover{--tw-bg-opacity:1;background-color:rgb(79 70 229/var(--tw-bg-opacity,1))}.hover\:bg-indigo-700:hover{--tw-bg-opacity:1;background-color:rgb(67 56 202/var(--tw-bg-opacity,1))}.hover\:bg-mercedes-silver:hover{--tw-bg-opacity:1;background-color:rgb(192 192 192/var(--tw-bg-opacity,1))}.hover\:bg-orange-600:hover{--tw-bg-opacity:1;background-color:rgb(234 88 12/var(--tw-bg-opacity,1))}.hover\:bg-orange-700:hover{--tw-bg-opacity:1;background-color:rgb(194 65 12/var(--tw-bg-opacity,1))}.hover\:bg-purple-600:hover{--tw-bg-opacity:1;background-color:rgb(147 51 234/var(--tw-bg-opacity,1))}.hover\:bg-purple-700:hover{--tw-bg-opacity:1;background-color:rgb(126 34 206/var(--tw-bg-opacity,1))}.hover\:bg-red-100:hover{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity,1))}.hover\:bg-red-50:hover{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.hover\:bg-red-600:hover{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.hover\:bg-red-700:hover{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.hover\:bg-slate-100:hover{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity,1))}.hover\:bg-slate-100\/50:hover{background-color:rgba(241,245,249,.5)}.hover\:bg-slate-100\/80:hover{background-color:rgba(241,245,249,.8)}.hover\:bg-slate-200:hover{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity,1))}.hover\:bg-slate-300:hover{--tw-bg-opacity:1;background-color:rgb(203 213 225/var(--tw-bg-opacity,1))}.hover\:bg-slate-50:hover{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity,1))}.hover\:bg-slate-600:hover{--tw-bg-opacity:1;background-color:rgb(71 85 105/var(--tw-bg-opacity,1))}.hover\:bg-slate-700:hover{--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity,1))}.hover\:bg-teal-600:hover{--tw-bg-opacity:1;background-color:rgb(13 148 136/var(--tw-bg-opacity,1))}.hover\:bg-white:hover{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.hover\:bg-white\/20:hover{background-color:hsla(0,0%,100%,.2)}.hover\:bg-white\/25:hover{background-color:hsla(0,0%,100%,.25)}.hover\:bg-yellow-600:hover{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity,1))}.hover\:bg-yellow-700:hover{--tw-bg-opacity:1;background-color:rgb(161 98 7/var(--tw-bg-opacity,1))}.hover\:from-blue-600:hover{--tw-gradient-from:#2563eb var(--tw-gradient-from-position);--tw-gradient-to:rgba(37,99,235,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.hover\:from-blue-700:hover{--tw-gradient-from:#1d4ed8 var(--tw-gradient-from-position);--tw-gradient-to:rgba(29,78,216,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.hover\:from-green-600:hover{--tw-gradient-from:#16a34a var(--tw-gradient-from-position);--tw-gradient-to:rgba(22,163,74,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.hover\:from-slate-600:hover{--tw-gradient-from:#475569 var(--tw-gradient-from-position);--tw-gradient-to:rgba(71,85,105,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.hover\:to-blue-700:hover{--tw-gradient-to:#1d4ed8 var(--tw-gradient-to-position)}.hover\:to-blue-800:hover{--tw-gradient-to:#1e40af var(--tw-gradient-to-position)}.hover\:to-green-700:hover{--tw-gradient-to:#15803d var(--tw-gradient-to-position)}.hover\:to-slate-700:hover{--tw-gradient-to:#334155 var(--tw-gradient-to-position)}.hover\:text-blue-500:hover{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.hover\:text-blue-600:hover{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.hover\:text-blue-700:hover{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity,1))}.hover\:text-blue-800:hover{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity,1))}.hover\:text-blue-900:hover{--tw-text-opacity:1;color:rgb(30 58 138/var(--tw-text-opacity,1))}.hover\:text-emerald-600:hover{--tw-text-opacity:1;color:rgb(5 150 105/var(--tw-text-opacity,1))}.hover\:text-gray-200:hover{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.hover\:text-gray-600:hover{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.hover\:text-gray-800:hover{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.hover\:text-gray-900:hover{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.hover\:text-green-900:hover{--tw-text-opacity:1;color:rgb(20 83 45/var(--tw-text-opacity,1))}.hover\:text-red-500:hover{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.hover\:text-red-700:hover{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.hover\:text-red-900:hover{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity,1))}.hover\:text-slate-700:hover{--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity,1))}.hover\:text-slate-800:hover{--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity,1))}.hover\:text-slate-900:hover{--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1))}.hover\:text-white:hover{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-2xl:hover{--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}.hover\:shadow-2xl:hover,.hover\:shadow-md:hover{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.hover\:shadow-xl:hover{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.focus\:z-10:focus{z-index:10}.focus\:border-blue-500:focus{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity,1))}.focus\:border-blue-600:focus{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity,1))}.focus\:border-red-500:focus{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity,1))}.focus\:border-transparent:focus{border-color:transparent}.focus\:bg-gray-100\/80:focus{background-color:rgba(243,244,246,.8)}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-1:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-1:focus,.focus\:ring-2:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-blue-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity,1))}.focus\:ring-blue-600:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(37 99 235/var(--tw-ring-opacity,1))}.focus\:ring-gray-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(107 114 128/var(--tw-ring-opacity,1))}.focus\:ring-green-400:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(74 222 128/var(--tw-ring-opacity,1))}.focus\:ring-green-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(34 197 94/var(--tw-ring-opacity,1))}.focus\:ring-red-400:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(248 113 113/var(--tw-ring-opacity,1))}.focus\:ring-red-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(239 68 68/var(--tw-ring-opacity,1))}.focus\:ring-slate-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(100 116 139/var(--tw-ring-opacity,1))}.focus\:ring-yellow-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(234 179 8/var(--tw-ring-opacity,1))}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px}.active\:scale-95:active{--tw-scale-x:.95;--tw-scale-y:.95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-gray-100:disabled{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.disabled\:opacity-50:disabled{opacity:.5}.group:focus-within .group-focus-within\:text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.group:hover .group-hover\:-translate-x-1{--tw-translate-x:-0.25rem}.group:hover .group-hover\:-translate-x-1,.group:hover .group-hover\:translate-x-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:translate-x-full{--tw-translate-x:100%}.group:hover .group-hover\:rotate-180{--tw-rotate:180deg}.group:hover .group-hover\:rotate-180,.group:hover .group-hover\:scale-105{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:scale-105{--tw-scale-x:1.05;--tw-scale-y:1.05}.group:hover .group-hover\:scale-110{--tw-scale-x:1.1;--tw-scale-y:1.1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:text-slate-600{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity,1))}.group:hover .group-hover\:opacity-100{opacity:1}.group:active .group-active\:scale-95{--tw-scale-x:.95;--tw-scale-y:.95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.dark\:inline:is(.dark *){display:inline}.dark\:hidden:is(.dark *){display:none}.dark\:rotate-0:is(.dark *){--tw-rotate:0deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.dark\:rotate-90:is(.dark *){--tw-rotate:90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.dark\:scale-100:is(.dark *){--tw-scale-x:1;--tw-scale-y:1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.dark\:scale-75:is(.dark *){--tw-scale-x:.75;--tw-scale-y:.75;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.dark\:divide-gray-700:is(.dark *)>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(55 65 81/var(--tw-divide-opacity,1))}.dark\:divide-slate-700:is(.dark *)>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(51 65 85/var(--tw-divide-opacity,1))}.dark\:border-blue-400:is(.dark *){--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity,1))}.dark\:border-blue-700:is(.dark *){--tw-border-opacity:1;border-color:rgb(29 78 216/var(--tw-border-opacity,1))}.dark\:border-blue-700\/30:is(.dark *){border-color:rgba(29,78,216,.3)}.dark\:border-blue-800:is(.dark *){--tw-border-opacity:1;border-color:rgb(30 64 175/var(--tw-border-opacity,1))}.dark\:border-blue-800\/50:is(.dark *){border-color:rgba(30,64,175,.5)}.dark\:border-emerald-700\/30:is(.dark *){border-color:rgba(4,120,87,.3)}.dark\:border-gray-600:is(.dark *){--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity,1))}.dark\:border-gray-700:is(.dark *){--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity,1))}.dark\:border-green-700:is(.dark *){--tw-border-opacity:1;border-color:rgb(21 128 61/var(--tw-border-opacity,1))}.dark\:border-green-800:is(.dark *){--tw-border-opacity:1;border-color:rgb(22 101 52/var(--tw-border-opacity,1))}.dark\:border-green-800\/50:is(.dark *){border-color:rgba(22,101,52,.5)}.dark\:border-indigo-400:is(.dark *){--tw-border-opacity:1;border-color:rgb(129 140 248/var(--tw-border-opacity,1))}.dark\:border-indigo-800:is(.dark *){--tw-border-opacity:1;border-color:rgb(55 48 163/var(--tw-border-opacity,1))}.dark\:border-indigo-800\/50:is(.dark *){border-color:rgba(55,48,163,.5)}.dark\:border-orange-800:is(.dark *){--tw-border-opacity:1;border-color:rgb(154 52 18/var(--tw-border-opacity,1))}.dark\:border-orange-800\/50:is(.dark *){border-color:rgba(154,52,18,.5)}.dark\:border-purple-800\/50:is(.dark *){border-color:rgba(107,33,168,.5)}.dark\:border-red-700:is(.dark *){--tw-border-opacity:1;border-color:rgb(185 28 28/var(--tw-border-opacity,1))}.dark\:border-red-800:is(.dark *){--tw-border-opacity:1;border-color:rgb(153 27 27/var(--tw-border-opacity,1))}.dark\:border-red-800\/50:is(.dark *){border-color:rgba(153,27,27,.5)}.dark\:border-slate-600:is(.dark *){--tw-border-opacity:1;border-color:rgb(71 85 105/var(--tw-border-opacity,1))}.dark\:border-slate-600\/50:is(.dark *){border-color:rgba(71,85,105,.5)}.dark\:border-slate-600\/60:is(.dark *){border-color:rgba(71,85,105,.6)}.dark\:border-slate-700:is(.dark *){--tw-border-opacity:1;border-color:rgb(51 65 85/var(--tw-border-opacity,1))}.dark\:border-slate-700\/20:is(.dark *){border-color:rgba(51,65,85,.2)}.dark\:border-slate-700\/30:is(.dark *){border-color:rgba(51,65,85,.3)}.dark\:border-slate-700\/50:is(.dark *){border-color:rgba(51,65,85,.5)}.dark\:border-white:is(.dark *){--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}.dark\:border-white\/20:is(.dark *){border-color:hsla(0,0%,100%,.2)}.dark\:border-white\/70:is(.dark *){border-color:hsla(0,0%,100%,.7)}.dark\:border-yellow-700:is(.dark *){--tw-border-opacity:1;border-color:rgb(161 98 7/var(--tw-border-opacity,1))}.dark\:border-yellow-800:is(.dark *){--tw-border-opacity:1;border-color:rgb(133 77 14/var(--tw-border-opacity,1))}.dark\:border-t-slate-700:is(.dark *){--tw-border-opacity:1;border-top-color:rgb(51 65 85/var(--tw-border-opacity,1))}.dark\:bg-amber-600:is(.dark *){--tw-bg-opacity:1;background-color:rgb(217 119 6/var(--tw-bg-opacity,1))}.dark\:bg-black:is(.dark *){--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.dark\:bg-black\/50:is(.dark *){background-color:rgba(0,0,0,.5)}.dark\:bg-black\/70:is(.dark *){background-color:rgba(0,0,0,.7)}.dark\:bg-black\/80:is(.dark *){background-color:rgba(0,0,0,.8)}.dark\:bg-blue-300:is(.dark *){--tw-bg-opacity:1;background-color:rgb(147 197 253/var(--tw-bg-opacity,1))}.dark\:bg-blue-400:is(.dark *){--tw-bg-opacity:1;background-color:rgb(96 165 250/var(--tw-bg-opacity,1))}.dark\:bg-blue-500:is(.dark *){--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}.dark\:bg-blue-600:is(.dark *){--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.dark\:bg-blue-900:is(.dark *){--tw-bg-opacity:1;background-color:rgb(30 58 138/var(--tw-bg-opacity,1))}.dark\:bg-blue-900\/10:is(.dark *){background-color:rgba(30,58,138,.1)}.dark\:bg-blue-900\/20:is(.dark *){background-color:rgba(30,58,138,.2)}.dark\:bg-blue-900\/30:is(.dark *){background-color:rgba(30,58,138,.3)}.dark\:bg-blue-900\/50:is(.dark *){background-color:rgba(30,58,138,.5)}.dark\:bg-cyan-900\/50:is(.dark *){background-color:rgba(22,78,99,.5)}.dark\:bg-dark-surface:is(.dark *){--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.dark\:bg-emerald-900:is(.dark *){--tw-bg-opacity:1;background-color:rgb(6 78 59/var(--tw-bg-opacity,1))}.dark\:bg-emerald-900\/50:is(.dark *){background-color:rgba(6,78,59,.5)}.dark\:bg-gray-300:is(.dark *){--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity,1))}.dark\:bg-gray-600:is(.dark *){--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.dark\:bg-gray-700:is(.dark *){--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.dark\:bg-gray-800:is(.dark *){--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.dark\:bg-gray-900:is(.dark *){--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}.dark\:bg-gray-900\/30:is(.dark *){background-color:rgba(17,24,39,.3)}.dark\:bg-green-300:is(.dark *){--tw-bg-opacity:1;background-color:rgb(134 239 172/var(--tw-bg-opacity,1))}.dark\:bg-green-600:is(.dark *){--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.dark\:bg-green-700:is(.dark *){--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.dark\:bg-green-900:is(.dark *){--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity,1))}.dark\:bg-green-900\/10:is(.dark *){background-color:rgba(20,83,45,.1)}.dark\:bg-green-900\/20:is(.dark *){background-color:rgba(20,83,45,.2)}.dark\:bg-green-900\/30:is(.dark *){background-color:rgba(20,83,45,.3)}.dark\:bg-green-900\/50:is(.dark *){background-color:rgba(20,83,45,.5)}.dark\:bg-green-900\/60:is(.dark *){background-color:rgba(20,83,45,.6)}.dark\:bg-indigo-600:is(.dark *){--tw-bg-opacity:1;background-color:rgb(79 70 229/var(--tw-bg-opacity,1))}.dark\:bg-indigo-700:is(.dark *){--tw-bg-opacity:1;background-color:rgb(67 56 202/var(--tw-bg-opacity,1))}.dark\:bg-indigo-900\/10:is(.dark *){background-color:rgba(49,46,129,.1)}.dark\:bg-indigo-900\/20:is(.dark *){background-color:rgba(49,46,129,.2)}.dark\:bg-indigo-900\/30:is(.dark *){background-color:rgba(49,46,129,.3)}.dark\:bg-indigo-900\/50:is(.dark *){background-color:rgba(49,46,129,.5)}.dark\:bg-orange-300:is(.dark *){--tw-bg-opacity:1;background-color:rgb(253 186 116/var(--tw-bg-opacity,1))}.dark\:bg-orange-900:is(.dark *){--tw-bg-opacity:1;background-color:rgb(124 45 18/var(--tw-bg-opacity,1))}.dark\:bg-orange-900\/10:is(.dark *){background-color:rgba(124,45,18,.1)}.dark\:bg-orange-900\/30:is(.dark *){background-color:rgba(124,45,18,.3)}.dark\:bg-orange-900\/50:is(.dark *){background-color:rgba(124,45,18,.5)}.dark\:bg-purple-600:is(.dark *){--tw-bg-opacity:1;background-color:rgb(147 51 234/var(--tw-bg-opacity,1))}.dark\:bg-purple-900:is(.dark *){--tw-bg-opacity:1;background-color:rgb(88 28 135/var(--tw-bg-opacity,1))}.dark\:bg-purple-900\/10:is(.dark *){background-color:rgba(88,28,135,.1)}.dark\:bg-purple-900\/30:is(.dark *){background-color:rgba(88,28,135,.3)}.dark\:bg-purple-900\/50:is(.dark *){background-color:rgba(88,28,135,.5)}.dark\:bg-red-300:is(.dark *){--tw-bg-opacity:1;background-color:rgb(252 165 165/var(--tw-bg-opacity,1))}.dark\:bg-red-600:is(.dark *){--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.dark\:bg-red-900:is(.dark *){--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.dark\:bg-red-900\/10:is(.dark *){background-color:rgba(127,29,29,.1)}.dark\:bg-red-900\/20:is(.dark *){background-color:rgba(127,29,29,.2)}.dark\:bg-red-900\/30:is(.dark *){background-color:rgba(127,29,29,.3)}.dark\:bg-red-900\/50:is(.dark *){background-color:rgba(127,29,29,.5)}.dark\:bg-red-900\/60:is(.dark *){background-color:rgba(127,29,29,.6)}.dark\:bg-slate-600:is(.dark *){--tw-bg-opacity:1;background-color:rgb(71 85 105/var(--tw-bg-opacity,1))}.dark\:bg-slate-700:is(.dark *){--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity,1))}.dark\:bg-slate-700\/30:is(.dark *){background-color:rgba(51,65,85,.3)}.dark\:bg-slate-700\/40:is(.dark *){background-color:rgba(51,65,85,.4)}.dark\:bg-slate-700\/60:is(.dark *){background-color:rgba(51,65,85,.6)}.dark\:bg-slate-800:is(.dark *){--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.dark\:bg-slate-800\/50:is(.dark *){background-color:rgba(30,41,59,.5)}.dark\:bg-slate-800\/60:is(.dark *){background-color:rgba(30,41,59,.6)}.dark\:bg-slate-800\/80:is(.dark *){background-color:rgba(30,41,59,.8)}.dark\:bg-slate-800\/90:is(.dark *){background-color:rgba(30,41,59,.9)}.dark\:bg-slate-900:is(.dark *){--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity,1))}.dark\:bg-slate-900\/50:is(.dark *){background-color:rgba(15,23,42,.5)}.dark\:bg-slate-900\/60:is(.dark *){background-color:rgba(15,23,42,.6)}.dark\:bg-slate-900\/80:is(.dark *){background-color:rgba(15,23,42,.8)}.dark\:bg-slate-900\/90:is(.dark *){background-color:rgba(15,23,42,.9)}.dark\:bg-teal-900\/50:is(.dark *){background-color:rgba(19,78,74,.5)}.dark\:bg-white:is(.dark *){--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.dark\:bg-white\/10:is(.dark *){background-color:hsla(0,0%,100%,.1)}.dark\:bg-yellow-300:is(.dark *){--tw-bg-opacity:1;background-color:rgb(253 224 71/var(--tw-bg-opacity,1))}.dark\:bg-yellow-900:is(.dark *){--tw-bg-opacity:1;background-color:rgb(113 63 18/var(--tw-bg-opacity,1))}.dark\:bg-yellow-900\/20:is(.dark *){background-color:rgba(113,63,18,.2)}.dark\:bg-yellow-900\/30:is(.dark *){background-color:rgba(113,63,18,.3)}.dark\:bg-yellow-900\/50:is(.dark *){background-color:rgba(113,63,18,.5)}.dark\:bg-opacity-95:is(.dark *){--tw-bg-opacity:0.95}.dark\:from-blue-400:is(.dark *){--tw-gradient-from:#60a5fa var(--tw-gradient-from-position);--tw-gradient-to:rgba(96,165,250,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-blue-400\/20:is(.dark *){--tw-gradient-from:rgba(96,165,250,.2) var(--tw-gradient-from-position);--tw-gradient-to:rgba(96,165,250,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-blue-900\/10:is(.dark *){--tw-gradient-from:rgba(30,58,138,.1) var(--tw-gradient-from-position);--tw-gradient-to:rgba(30,58,138,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-blue-900\/20:is(.dark *){--tw-gradient-from:rgba(30,58,138,.2) var(--tw-gradient-from-position);--tw-gradient-to:rgba(30,58,138,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-blue-900\/30:is(.dark *){--tw-gradient-from:rgba(30,58,138,.3) var(--tw-gradient-from-position);--tw-gradient-to:rgba(30,58,138,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-emerald-900\/20:is(.dark *){--tw-gradient-from:rgba(6,78,59,.2) var(--tw-gradient-from-position);--tw-gradient-to:rgba(6,78,59,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-green-400:is(.dark *){--tw-gradient-from:#4ade80 var(--tw-gradient-from-position);--tw-gradient-to:rgba(74,222,128,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-green-400\/20:is(.dark *){--tw-gradient-from:rgba(74,222,128,.2) var(--tw-gradient-from-position);--tw-gradient-to:rgba(74,222,128,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-green-900\/10:is(.dark *){--tw-gradient-from:rgba(20,83,45,.1) var(--tw-gradient-from-position);--tw-gradient-to:rgba(20,83,45,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-green-900\/20:is(.dark *){--tw-gradient-from:rgba(20,83,45,.2) var(--tw-gradient-from-position);--tw-gradient-to:rgba(20,83,45,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-green-900\/30:is(.dark *){--tw-gradient-from:rgba(20,83,45,.3) var(--tw-gradient-from-position);--tw-gradient-to:rgba(20,83,45,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-orange-400:is(.dark *){--tw-gradient-from:#fb923c var(--tw-gradient-from-position);--tw-gradient-to:rgba(251,146,60,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-orange-400\/20:is(.dark *){--tw-gradient-from:rgba(251,146,60,.2) var(--tw-gradient-from-position);--tw-gradient-to:rgba(251,146,60,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-orange-900\/10:is(.dark *){--tw-gradient-from:rgba(124,45,18,.1) var(--tw-gradient-from-position);--tw-gradient-to:rgba(124,45,18,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-purple-900\/20:is(.dark *){--tw-gradient-from:rgba(88,28,135,.2) var(--tw-gradient-from-position);--tw-gradient-to:rgba(88,28,135,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-purple-900\/30:is(.dark *){--tw-gradient-from:rgba(88,28,135,.3) var(--tw-gradient-from-position);--tw-gradient-to:rgba(88,28,135,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-red-400:is(.dark *){--tw-gradient-from:#f87171 var(--tw-gradient-from-position);--tw-gradient-to:hsla(0,91%,71%,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-red-400\/20:is(.dark *){--tw-gradient-from:hsla(0,91%,71%,.2) var(--tw-gradient-from-position);--tw-gradient-to:hsla(0,91%,71%,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-slate-800\/90:is(.dark *){--tw-gradient-from:rgba(30,41,59,.9) var(--tw-gradient-from-position);--tw-gradient-to:rgba(30,41,59,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-slate-900:is(.dark *){--tw-gradient-from:#0f172a var(--tw-gradient-from-position);--tw-gradient-to:rgba(15,23,42,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-slate-950:is(.dark *){--tw-gradient-from:#020617 var(--tw-gradient-from-position);--tw-gradient-to:rgba(2,6,23,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-white:is(.dark *){--tw-gradient-from:#fff var(--tw-gradient-from-position);--tw-gradient-to:hsla(0,0%,100%,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:via-blue-200:is(.dark *){--tw-gradient-to:rgba(191,219,254,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#bfdbfe var(--tw-gradient-via-position),var(--tw-gradient-to)}.dark\:via-blue-900:is(.dark *){--tw-gradient-to:rgba(30,58,138,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#1e3a8a var(--tw-gradient-via-position),var(--tw-gradient-to)}.dark\:via-blue-900\/20:is(.dark *){--tw-gradient-to:rgba(30,58,138,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),rgba(30,58,138,.2) var(--tw-gradient-via-position),var(--tw-gradient-to)}.dark\:via-blue-950:is(.dark *){--tw-gradient-to:rgba(23,37,84,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#172554 var(--tw-gradient-via-position),var(--tw-gradient-to)}.dark\:via-emerald-900\/20:is(.dark *){--tw-gradient-to:rgba(6,78,59,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),rgba(6,78,59,.2) var(--tw-gradient-via-position),var(--tw-gradient-to)}.dark\:via-red-900\/20:is(.dark *){--tw-gradient-to:rgba(127,29,29,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),rgba(127,29,29,.2) var(--tw-gradient-via-position),var(--tw-gradient-to)}.dark\:via-slate-800:is(.dark *){--tw-gradient-to:rgba(30,41,59,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#1e293b var(--tw-gradient-via-position),var(--tw-gradient-to)}.dark\:to-blue-500:is(.dark *){--tw-gradient-to:#3b82f6 var(--tw-gradient-to-position)}.dark\:to-blue-800\/30:is(.dark *){--tw-gradient-to:rgba(30,64,175,.3) var(--tw-gradient-to-position)}.dark\:to-emerald-400\/20:is(.dark *){--tw-gradient-to:rgba(52,211,153,.2) var(--tw-gradient-to-position)}.dark\:to-emerald-900\/10:is(.dark *){--tw-gradient-to:rgba(6,78,59,.1) var(--tw-gradient-to-position)}.dark\:to-emerald-900\/20:is(.dark *){--tw-gradient-to:rgba(6,78,59,.2) var(--tw-gradient-to-position)}.dark\:to-gray-200:is(.dark *){--tw-gradient-to:#e5e7eb var(--tw-gradient-to-position)}.dark\:to-green-500:is(.dark *){--tw-gradient-to:#22c55e var(--tw-gradient-to-position)}.dark\:to-green-800\/30:is(.dark *){--tw-gradient-to:rgba(22,101,52,.3) var(--tw-gradient-to-position)}.dark\:to-green-900\/20:is(.dark *){--tw-gradient-to:rgba(20,83,45,.2) var(--tw-gradient-to-position)}.dark\:to-indigo-400\/20:is(.dark *){--tw-gradient-to:rgba(129,140,248,.2) var(--tw-gradient-to-position)}.dark\:to-indigo-900:is(.dark *){--tw-gradient-to:#312e81 var(--tw-gradient-to-position)}.dark\:to-indigo-900\/10:is(.dark *){--tw-gradient-to:rgba(49,46,129,.1) var(--tw-gradient-to-position)}.dark\:to-indigo-900\/20:is(.dark *){--tw-gradient-to:rgba(49,46,129,.2) var(--tw-gradient-to-position)}.dark\:to-indigo-950:is(.dark *){--tw-gradient-to:#1e1b4b var(--tw-gradient-to-position)}.dark\:to-orange-500:is(.dark *){--tw-gradient-to:#f97316 var(--tw-gradient-to-position)}.dark\:to-orange-900\/20:is(.dark *){--tw-gradient-to:rgba(124,45,18,.2) var(--tw-gradient-to-position)}.dark\:to-pink-400\/20:is(.dark *){--tw-gradient-to:rgba(244,114,182,.2) var(--tw-gradient-to-position)}.dark\:to-pink-900\/20:is(.dark *){--tw-gradient-to:rgba(131,24,67,.2) var(--tw-gradient-to-position)}.dark\:to-purple-500:is(.dark *){--tw-gradient-to:#a855f7 var(--tw-gradient-to-position)}.dark\:to-purple-800\/30:is(.dark *){--tw-gradient-to:rgba(107,33,168,.3) var(--tw-gradient-to-position)}.dark\:to-red-400\/20:is(.dark *){--tw-gradient-to:hsla(0,91%,71%,.2) var(--tw-gradient-to-position)}.dark\:to-red-500:is(.dark *){--tw-gradient-to:#ef4444 var(--tw-gradient-to-position)}.dark\:to-red-900\/10:is(.dark *){--tw-gradient-to:rgba(127,29,29,.1) var(--tw-gradient-to-position)}.dark\:to-slate-200:is(.dark *){--tw-gradient-to:#e2e8f0 var(--tw-gradient-to-position)}.dark\:to-slate-900:is(.dark *){--tw-gradient-to:#0f172a var(--tw-gradient-to-position)}.dark\:to-slate-900\/70:is(.dark *){--tw-gradient-to:rgba(15,23,42,.7) var(--tw-gradient-to-position)}.dark\:text-amber-400:is(.dark *){--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity,1))}.dark\:text-blue-100:is(.dark *){--tw-text-opacity:1;color:rgb(219 234 254/var(--tw-text-opacity,1))}.dark\:text-blue-200:is(.dark *){--tw-text-opacity:1;color:rgb(191 219 254/var(--tw-text-opacity,1))}.dark\:text-blue-300:is(.dark *){--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity,1))}.dark\:text-blue-400:is(.dark *){--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity,1))}.dark\:text-blue-500:is(.dark *){--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.dark\:text-cyan-400:is(.dark *){--tw-text-opacity:1;color:rgb(34 211 238/var(--tw-text-opacity,1))}.dark\:text-emerald-300:is(.dark *){--tw-text-opacity:1;color:rgb(110 231 183/var(--tw-text-opacity,1))}.dark\:text-emerald-400:is(.dark *){--tw-text-opacity:1;color:rgb(52 211 153/var(--tw-text-opacity,1))}.dark\:text-gray-100:is(.dark *){--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity,1))}.dark\:text-gray-200:is(.dark *){--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.dark\:text-gray-300:is(.dark *){--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.dark\:text-gray-400:is(.dark *){--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.dark\:text-gray-500:is(.dark *){--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.dark\:text-gray-600:is(.dark *){--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.dark\:text-green-100:is(.dark *){--tw-text-opacity:1;color:rgb(220 252 231/var(--tw-text-opacity,1))}.dark\:text-green-200:is(.dark *){--tw-text-opacity:1;color:rgb(187 247 208/var(--tw-text-opacity,1))}.dark\:text-green-300:is(.dark *){--tw-text-opacity:1;color:rgb(134 239 172/var(--tw-text-opacity,1))}.dark\:text-green-400:is(.dark *){--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity,1))}.dark\:text-indigo-200:is(.dark *){--tw-text-opacity:1;color:rgb(199 210 254/var(--tw-text-opacity,1))}.dark\:text-indigo-300:is(.dark *){--tw-text-opacity:1;color:rgb(165 180 252/var(--tw-text-opacity,1))}.dark\:text-indigo-400:is(.dark *){--tw-text-opacity:1;color:rgb(129 140 248/var(--tw-text-opacity,1))}.dark\:text-orange-200:is(.dark *){--tw-text-opacity:1;color:rgb(254 215 170/var(--tw-text-opacity,1))}.dark\:text-orange-300:is(.dark *){--tw-text-opacity:1;color:rgb(253 186 116/var(--tw-text-opacity,1))}.dark\:text-orange-400:is(.dark *){--tw-text-opacity:1;color:rgb(251 146 60/var(--tw-text-opacity,1))}.dark\:text-purple-200:is(.dark *){--tw-text-opacity:1;color:rgb(233 213 255/var(--tw-text-opacity,1))}.dark\:text-purple-300:is(.dark *){--tw-text-opacity:1;color:rgb(216 180 254/var(--tw-text-opacity,1))}.dark\:text-purple-400:is(.dark *){--tw-text-opacity:1;color:rgb(192 132 252/var(--tw-text-opacity,1))}.dark\:text-red-100:is(.dark *){--tw-text-opacity:1;color:rgb(254 226 226/var(--tw-text-opacity,1))}.dark\:text-red-200:is(.dark *){--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity,1))}.dark\:text-red-300:is(.dark *){--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.dark\:text-red-400:is(.dark *){--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.dark\:text-red-600:is(.dark *){--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.dark\:text-slate-100:is(.dark *){--tw-text-opacity:1;color:rgb(241 245 249/var(--tw-text-opacity,1))}.dark\:text-slate-200:is(.dark *){--tw-text-opacity:1;color:rgb(226 232 240/var(--tw-text-opacity,1))}.dark\:text-slate-300:is(.dark *){--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity,1))}.dark\:text-slate-400:is(.dark *){--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity,1))}.dark\:text-slate-500:is(.dark *){--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity,1))}.dark\:text-slate-600:is(.dark *){--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity,1))}.dark\:text-slate-900:is(.dark *){--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1))}.dark\:text-teal-400:is(.dark *){--tw-text-opacity:1;color:rgb(45 212 191/var(--tw-text-opacity,1))}.dark\:text-white:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.dark\:text-yellow-200:is(.dark *){--tw-text-opacity:1;color:rgb(254 240 138/var(--tw-text-opacity,1))}.dark\:text-yellow-300:is(.dark *){--tw-text-opacity:1;color:rgb(253 224 71/var(--tw-text-opacity,1))}.dark\:text-yellow-400:is(.dark *){--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity,1))}.dark\:placeholder-slate-400:is(.dark *)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(148 163 184/var(--tw-placeholder-opacity,1))}.dark\:placeholder-slate-400:is(.dark *)::placeholder{--tw-placeholder-opacity:1;color:rgb(148 163 184/var(--tw-placeholder-opacity,1))}.dark\:opacity-0:is(.dark *){opacity:0}.dark\:opacity-100:is(.dark *){opacity:1}.dark\:opacity-5:is(.dark *){opacity:.05}.dark\:shadow-2xl:is(.dark *){--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.dark\:shadow-slate-900\/20:is(.dark *){--tw-shadow-color:rgba(15,23,42,.2);--tw-shadow:var(--tw-shadow-colored)}.dark\:hover\:border-blue-400:hover:is(.dark *){--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity,1))}.dark\:hover\:border-blue-500:hover:is(.dark *){--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity,1))}.dark\:hover\:border-emerald-400:hover:is(.dark *){--tw-border-opacity:1;border-color:rgb(52 211 153/var(--tw-border-opacity,1))}.dark\:hover\:bg-blue-500:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}.dark\:hover\:bg-blue-600:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.dark\:hover\:bg-blue-700:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(29 78 216/var(--tw-bg-opacity,1))}.dark\:hover\:bg-blue-800:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(30 64 175/var(--tw-bg-opacity,1))}.dark\:hover\:bg-gray-500:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.dark\:hover\:bg-gray-600:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.dark\:hover\:bg-gray-700:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.dark\:hover\:bg-green-500:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity,1))}.dark\:hover\:bg-green-700:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.dark\:hover\:bg-purple-700:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(126 34 206/var(--tw-bg-opacity,1))}.dark\:hover\:bg-red-500:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.dark\:hover\:bg-red-700:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.dark\:hover\:bg-red-900\/20:hover:is(.dark *){background-color:rgba(127,29,29,.2)}.dark\:hover\:bg-slate-500:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(100 116 139/var(--tw-bg-opacity,1))}.dark\:hover\:bg-slate-600:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(71 85 105/var(--tw-bg-opacity,1))}.dark\:hover\:bg-slate-700:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity,1))}.dark\:hover\:bg-slate-700\/50:hover:is(.dark *){background-color:rgba(51,65,85,.5)}.dark\:hover\:bg-slate-700\/60:hover:is(.dark *){background-color:rgba(51,65,85,.6)}.dark\:hover\:bg-slate-800:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.dark\:hover\:bg-slate-800\/50:hover:is(.dark *){background-color:rgba(30,41,59,.5)}.dark\:hover\:bg-white\/15:hover:is(.dark *){background-color:hsla(0,0%,100%,.15)}.dark\:hover\:bg-white\/70:hover:is(.dark *){background-color:hsla(0,0%,100%,.7)}.dark\:hover\:text-blue-200:hover:is(.dark *){--tw-text-opacity:1;color:rgb(191 219 254/var(--tw-text-opacity,1))}.dark\:hover\:text-blue-300:hover:is(.dark *){--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity,1))}.dark\:hover\:text-blue-400:hover:is(.dark *){--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity,1))}.dark\:hover\:text-emerald-400:hover:is(.dark *){--tw-text-opacity:1;color:rgb(52 211 153/var(--tw-text-opacity,1))}.dark\:hover\:text-gray-200:hover:is(.dark *){--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.dark\:hover\:text-gray-300:hover:is(.dark *){--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.dark\:hover\:text-green-300:hover:is(.dark *){--tw-text-opacity:1;color:rgb(134 239 172/var(--tw-text-opacity,1))}.dark\:hover\:text-red-200:hover:is(.dark *){--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity,1))}.dark\:hover\:text-red-300:hover:is(.dark *){--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.dark\:hover\:text-slate-200:hover:is(.dark *){--tw-text-opacity:1;color:rgb(226 232 240/var(--tw-text-opacity,1))}.dark\:hover\:text-slate-300:hover:is(.dark *){--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity,1))}.dark\:hover\:text-slate-900:hover:is(.dark *){--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1))}.dark\:hover\:text-white:hover:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.dark\:hover\:shadow-slate-900\/50:hover:is(.dark *){--tw-shadow-color:rgba(15,23,42,.5);--tw-shadow:var(--tw-shadow-colored)}.dark\:focus\:ring-blue-400:focus:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgb(96 165 250/var(--tw-ring-opacity,1))}.dark\:disabled\:bg-slate-800:disabled:is(.dark *){--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.group:hover .dark\:group-hover\:text-slate-300:is(.dark *){--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity,1))}@media (min-width:640px){.sm\:mx-0{margin-left:0;margin-right:0}.sm\:my-8{margin-top:2rem;margin-bottom:2rem}.sm\:ml-3{margin-left:.75rem}.sm\:ml-4{margin-left:1rem}.sm\:mt-0{margin-top:0}.sm\:mt-12{margin-top:3rem}.sm\:block{display:block}.sm\:inline{display:inline}.sm\:flex{display:flex}.sm\:h-10{height:2.5rem}.sm\:h-4{height:1rem}.sm\:h-5{height:1.25rem}.sm\:h-6{height:1.5rem}.sm\:w-10{width:2.5rem}.sm\:w-4{width:1rem}.sm\:w-5{width:1.25rem}.sm\:w-6{width:1.5rem}.sm\:w-80{width:20rem}.sm\:w-auto{width:auto}.sm\:w-full{width:100%}.sm\:max-w-lg{max-width:32rem}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:flex-row-reverse{flex-direction:row-reverse}.sm\:items-start{align-items:flex-start}.sm\:justify-center{justify-content:center}.sm\:gap-8{gap:2rem}.sm\:space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.75rem*var(--tw-space-x-reverse));margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)))}.sm\:space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1rem*var(--tw-space-x-reverse));margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)))}.sm\:space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(0px*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px*var(--tw-space-y-reverse))}.sm\:p-0{padding:0}.sm\:p-6{padding:1.5rem}.sm\:px-4{padding-left:1rem;padding-right:1rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-8{padding-top:2rem;padding-bottom:2rem}.sm\:pb-4{padding-bottom:1rem}.sm\:pt-8{padding-top:2rem}.sm\:text-left{text-align:left}.sm\:align-middle{vertical-align:middle}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}}@media (min-width:768px){.md\:col-span-2{grid-column:span 2/span 2}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}.md\:justify-between{justify-content:space-between}.md\:space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.75rem*var(--tw-space-x-reverse));margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)))}.md\:p-12{padding:3rem}.md\:text-2xl{font-size:1.5rem;line-height:2rem}.md\:text-4xl{font-size:2.25rem;line-height:2.5rem}.md\:text-5xl{font-size:3rem;line-height:1}.md\:text-6xl{font-size:3.75rem;line-height:1}.md\:text-8xl{font-size:6rem;line-height:1}.md\:text-xl{font-size:1.25rem;line-height:1.75rem}}@media (min-width:1024px){.lg\:col-span-2{grid-column:span 2/span 2}.lg\:col-span-3{grid-column:span 3/span 3}.lg\:mt-0{margin-top:0}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:h-20{height:5rem}.lg\:h-7{height:1.75rem}.lg\:w-7{width:1.75rem}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}.lg\:items-center{align-items:center}.lg\:justify-between{justify-content:space-between}.lg\:space-x-6>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1.5rem*var(--tw-space-x-reverse));margin-left:calc(1.5rem*(1 - var(--tw-space-x-reverse)))}.lg\:space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(0px*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px*var(--tw-space-y-reverse))}.lg\:p-12{padding:3rem}.lg\:px-6{padding-left:1.5rem;padding-right:1.5rem}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:text-right{text-align:right}.lg\:text-6xl{font-size:3.75rem;line-height:1}.lg\:text-base{font-size:1rem;line-height:1.5rem}}@media (min-width:1280px){.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xl\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}} \ No newline at end of file +*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--color-bg-primary:#fff;--color-bg-secondary:#fafbfc;--color-bg-tertiary:#f3f5f7;--color-bg-accent:#fbfcfd;--color-text-primary:#111827;--color-text-secondary:#374151;--color-text-muted:#6b7280;--color-text-accent:#0073ce;--color-border-primary:#e5e7eb;--color-border-secondary:#d1d5db;--color-accent:#0073ce;--color-accent-hover:#005a9f;--color-accent-light:#eff6ff;--color-accent-text:#fff;--color-shadow:rgba(0,0,0,.06);--color-shadow-strong:rgba(0,0,0,.1);--color-shadow-accent:rgba(0,115,206,.12);--card-radius:1rem;--gradient-primary:linear-gradient(135deg,#fff,#fafbfc 30%,#f8fafc 70%,#f3f5f7);--gradient-card:linear-gradient(135deg,#fff,#fcfcfd 50%,#fafbfc);--gradient-hero:linear-gradient(135deg,#fafbfc,#f3f5f7 40%,#eef2f5 80%,#f8fafc);--gradient-accent:linear-gradient(135deg,#0073ce,#005a9f);--gradient-surface:linear-gradient(135deg,#fff,#fbfcfd 50%,#f8fafc);--glass-bg:hsla(0,0%,100%,.92);--glass-border:hsla(0,0%,100%,.3);--glass-shadow:0 8px 32px rgba(0,0,0,.04);--glass-blur:blur(20px)}.dark{--color-bg-primary:#000;--color-bg-secondary:#0a0a0a;--color-bg-tertiary:#1a1a1a;--color-text-primary:#fff;--color-text-secondary:#e2e8f0;--color-text-muted:#94a3b8;--color-border-primary:#1a1a1a;--color-border-secondary:#2a2a2a;--color-accent:#fff;--color-accent-hover:#f0f0f0;--color-accent-light:#1e3a8a;--color-accent-text:#000;--color-shadow:rgba(0,0,0,.8);--color-shadow-strong:rgba(0,0,0,.9);--mb-black:#000}body{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}body:is(.dark *){--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}body{position:relative;min-height:100vh;background:var(--gradient-primary);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-feature-settings:"cv02","cv03","cv04","cv11";line-height:1.65;font-size:15px}.dark body{background:linear-gradient(135deg,#000,#0a0a0a 50%,#000)}body:before{content:"";position:fixed;top:0;left:0;right:0;bottom:0;background:radial-gradient(circle at 25% 25%,rgba(0,115,206,.015) 0,transparent 50%),radial-gradient(circle at 75% 75%,rgba(0,115,206,.01) 0,transparent 50%),radial-gradient(circle at 50% 10%,rgba(0,115,206,.008) 0,transparent 50%);pointer-events:none;z-index:-1}.dark body:before{background:radial-gradient(circle at 20% 50%,rgba(59,130,246,.03) 0,transparent 50%),radial-gradient(circle at 80% 20%,rgba(59,130,246,.02) 0,transparent 50%)}nav{border-bottom-width:1px;--tw-backdrop-blur:blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s;background:linear-gradient(135deg,hsla(0,0%,100%,.95),rgba(250,251,252,.92) 30%,rgba(248,250,252,.9) 70%,hsla(0,0%,100%,.95));border-bottom:1px solid rgba(229,231,235,.7);backdrop-filter:blur(28px) saturate(200%) brightness(110%);-webkit-backdrop-filter:blur(28px) saturate(200%) brightness(110%);box-shadow:0 4px 20px rgba(0,0,0,.04),0 2px 8px rgba(0,115,206,.02),inset 0 1px 0 hsla(0,0%,100%,.9)}.dark nav{background:rgba(0,0,0,.85);border-bottom-color:hsla(0,0%,100%,.1);box-shadow:0 8px 32px rgba(0,0,0,.3),inset 0 1px 0 hsla(0,0%,100%,.05)}.card-enhanced{background:var(--gradient-card);border:1px solid var(--color-border-primary);border-radius:var(--card-radius);box-shadow:0 2px 12px rgba(0,0,0,.03),0 1px 4px rgba(0,115,206,.02),inset 0 1px 0 hsla(0,0%,100%,.8);transition:all .3s cubic-bezier(.4,0,.2,1);position:relative;overflow:hidden}.card-enhanced:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:var(--gradient-accent);opacity:0;transition:opacity .3s ease}.card-enhanced:hover{transform:translateY(-2px);box-shadow:0 8px 25px rgba(0,0,0,.06),0 4px 12px rgba(0,115,206,.04),inset 0 1px 0 hsla(0,0%,100%,.9)}.card-enhanced:hover:before{opacity:1}.dark .card-enhanced{background:hsla(0,0%,4%,.8);border-color:var(--color-border-primary);box-shadow:0 4px 20px var(--color-shadow)}.btn-enhanced{background:var(--gradient-accent);color:var(--color-accent-text);border:none;border-radius:.5rem;padding:.75rem 1.75rem;font-weight:600;font-size:.875rem;text-transform:uppercase;letter-spacing:.05em;box-shadow:0 2px 8px rgba(0,115,206,.2),0 1px 4px rgba(0,115,206,.1);transition:all .2s cubic-bezier(.4,0,.2,1);position:relative;overflow:hidden}.btn-enhanced:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.2),transparent);transition:left .5s ease}.btn-enhanced:hover{transform:translateY(-1px);box-shadow:0 4px 15px rgba(0,115,206,.3),0 2px 8px rgba(0,115,206,.2)}.btn-enhanced:hover:before{left:100%}.btn-enhanced:active{transform:translateY(0)}.btn-secondary{background:var(--gradient-surface);color:var(--color-text-primary);border:1px solid var(--color-border-primary);box-shadow:0 1px 6px rgba(0,0,0,.03),inset 0 1px 0 hsla(0,0%,100%,.8)}.btn-secondary:hover{background:var(--color-bg-secondary);border-color:var(--color-accent);color:var(--color-accent);box-shadow:0 4px 12px rgba(0,115,206,.08),inset 0 1px 0 hsla(0,0%,100%,.9)}.input-enhanced{background:hsla(0,0%,100%,.95);border:1px solid var(--color-border-primary);border-radius:.5rem;padding:.75rem 1rem;color:var(--color-text-primary);font-size:.9rem;box-shadow:0 1px 6px rgba(0,0,0,.02),inset 0 1px 0 hsla(0,0%,100%,.9);transition:all .2s ease;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.input-enhanced:focus{outline:none;border-color:var(--color-accent);box-shadow:0 4px 12px rgba(0,115,206,.1),0 0 0 3px rgba(0,115,206,.05),inset 0 1px 0 hsla(0,0%,100%,.95);background:hsla(0,0%,100%,.98)}.input-enhanced::-moz-placeholder{color:var(--color-text-muted);opacity:.8}.input-enhanced::placeholder{color:var(--color-text-muted);opacity:.8}.dark .input-enhanced{background:hsla(0,0%,4%,.8);border-color:var(--color-border-primary);color:var(--color-text-primary);box-shadow:0 2px 8px var(--color-shadow),inset 0 1px 0 hsla(0,0%,100%,.05)}.dark .input-enhanced:focus{border-color:#60a5fa;box-shadow:0 4px 15px rgba(96,165,250,.2),0 0 0 3px rgba(96,165,250,.1)}.alert-enhanced{border-radius:1rem;padding:1.25rem;border:1px solid transparent;position:relative;overflow:hidden;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}.alert-enhanced:before{content:"";position:absolute;top:0;left:0;bottom:0;width:4px}.alert-info-enhanced{background:linear-gradient(135deg,rgba(239,246,255,.95),rgba(219,234,254,.9));border-color:rgba(59,130,246,.2);color:#1e40af}.alert-info-enhanced:before{background:var(--gradient-accent)}.alert-success-enhanced{background:linear-gradient(135deg,rgba(236,253,245,.95),rgba(167,243,208,.9));border-color:rgba(16,185,129,.2);color:#065f46}.alert-success-enhanced:before{background:linear-gradient(180deg,#10b981,#059669)}.alert-warning-enhanced{background:linear-gradient(135deg,rgba(255,251,235,.95),hsla(48,96%,89%,.9));border-color:rgba(251,191,36,.2);color:#92400e}.alert-warning-enhanced:before{background:linear-gradient(180deg,#fbbf24,#f59e0b)}.alert-error-enhanced{background:linear-gradient(135deg,hsla(0,86%,97%,.95),hsla(0,94%,82%,.9));border-color:rgba(239,68,68,.2);color:#991b1b}.alert-error-enhanced:before{background:linear-gradient(180deg,#ef4444,#dc2626)}.\!container{width:100%!important;margin-right:auto!important;margin-left:auto!important;padding-right:1rem!important;padding-left:1rem!important}.container{width:100%;margin-right:auto;margin-left:auto;padding-right:1rem;padding-left:1rem}@media (min-width:640px){.\!container{max-width:640px!important;padding-right:1.5rem!important;padding-left:1.5rem!important}.container{max-width:640px;padding-right:1.5rem;padding-left:1.5rem}}@media (min-width:768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media (min-width:1024px){.\!container{max-width:1024px!important;padding-right:2rem!important;padding-left:2rem!important}.container{max-width:1024px;padding-right:2rem;padding-left:2rem}}@media (min-width:1280px){.\!container{max-width:1280px!important;padding-right:3rem!important;padding-left:3rem!important}.container{max-width:1280px;padding-right:3rem;padding-left:3rem}}@media (min-width:1400px){.\!container{max-width:1400px!important;padding-right:4rem!important;padding-left:4rem!important}.container{max-width:1400px;padding-right:4rem;padding-left:4rem}}.dark .bg-dark-card{background-color:#1e293b;--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.bg-dark-surface{background-color:#1e293b}.transition-all-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.admin-container{margin-left:auto;margin-right:auto;max-width:80rem;padding:1rem}@media (min-width:768px){.admin-container{padding:2rem}}.admin-stats{margin-bottom:2rem;display:grid;grid-template-columns:repeat(1,minmax(0,1fr));gap:1rem}@media (min-width:640px){.admin-stats{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.admin-stats{grid-template-columns:repeat(4,minmax(0,1fr))}}.stat-card{position:relative;overflow:hidden;border-radius:.75rem;border-width:1px;border-color:rgba(229,231,235,.6);background-color:hsla(0,0%,100%,.6);padding:1.25rem;--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);--tw-backdrop-blur:blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.stat-card,.stat-card:hover{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.stat-card:hover{--tw-translate-y:-0.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}.stat-card:is(.dark *){border-color:rgba(51,65,85,.3);background-color:rgba(0,0,0,.7)}.stat-card{backdrop-filter:blur(20px) saturate(180%) brightness(110%);-webkit-backdrop-filter:blur(20px) saturate(180%) brightness(110%);box-shadow:0 25px 50px rgba(0,0,0,.15),0 0 0 1px hsla(0,0%,100%,.1)}.stat-icon{position:absolute;top:1rem;right:1rem;font-size:2.25rem;line-height:2.5rem;opacity:.15}.stat-title{margin-bottom:.5rem;font-size:.875rem;line-height:1.25rem;font-weight:500;text-transform:uppercase;--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity,1))}.stat-title:is(.dark *){--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity,1))}.stat-value{margin-bottom:.25rem;font-size:1.5rem;line-height:2rem;font-weight:700;--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1))}.stat-value:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.stat-desc{font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity,1))}.stat-desc:is(.dark *){--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity,1))}.nav-tabs{margin-bottom:1rem;display:flex;overflow-x:auto;border-bottom-width:1px;--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}.nav-tabs:is(.dark *){border-color:rgba(51,65,85,.3)}.nav-tab{cursor:pointer;white-space:nowrap;border-bottom-width:2px;border-color:transparent;padding:1rem 1.5rem;--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity,1));transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}.nav-tab:hover{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1))}.nav-tab:is(.dark *){--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity,1))}.nav-tab:hover:is(.dark *){background-color:rgba(30,41,59,.5);--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.nav-tab.active{border-bottom-width:2px;--tw-border-opacity:1;border-color:rgb(0 0 0/var(--tw-border-opacity,1));font-weight:500;--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1))}.nav-tab.active:is(.dark *){--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1));--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.tab-content{margin-top:2rem}.tab-pane{display:none}.dark-mode-toggle-new .moon-icon:not(.tab-pane),.dark-mode-toggle-new .sun-icon:not(.tab-pane){animation:spin-in .5s cubic-bezier(.25,1,.5,1) forwards}.tab-pane.active{display:block}.form-group{margin-bottom:1rem}.form-label{margin-bottom:.5rem;display:block;font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity,1))}.form-label:is(.dark *){--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity,1))}.form-input,.form-select,.form-textarea{width:100%;border-radius:.5rem;border-width:1px;border-color:rgba(209,213,219,.6);background-color:hsla(0,0%,100%,.6);padding:.5rem .75rem;--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1))}.form-input::-moz-placeholder,.form-select::-moz-placeholder,.form-textarea::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.form-input::placeholder,.form-select::placeholder,.form-textarea::placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.form-input,.form-select,.form-textarea{--tw-backdrop-blur:blur(16px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:transparent;outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-opacity:1;--tw-ring-color:rgb(100 116 139/var(--tw-ring-opacity,1))}.form-input:is(.dark *),.form-select:is(.dark *),.form-textarea:is(.dark *){border-color:rgba(71,85,105,.6);background-color:rgba(30,41,59,.6);--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.form-input,.form-select,.form-textarea{backdrop-filter:blur(16px) saturate(150%);-webkit-backdrop-filter:blur(16px) saturate(150%);box-shadow:0 10px 20px rgba(0,0,0,.1),0 0 0 1px hsla(0,0%,100%,.05)}.admin-table{min-width:100%}.admin-table>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px*var(--tw-divide-y-reverse));--tw-divide-opacity:1;border-color:rgb(229 231 235/var(--tw-divide-opacity,1))}.admin-table:is(.dark *)>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(51 65 85/var(--tw-divide-opacity,1))}.admin-table thead{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity,1))}.admin-table thead:is(.dark *){--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.admin-table th{padding:.75rem 1.5rem;text-align:left;font-size:.75rem;line-height:1rem;font-weight:500;text-transform:uppercase;letter-spacing:.05em;--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity,1))}.admin-table th:is(.dark *){--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity,1))}.admin-table tbody>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px*var(--tw-divide-y-reverse));--tw-divide-opacity:1;border-color:rgb(229 231 235/var(--tw-divide-opacity,1))}.admin-table tbody{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.admin-table tbody:is(.dark *){background-color:#1e293b}.admin-table tbody:is(.dark *)>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(51 65 85/var(--tw-divide-opacity,1))}.admin-table tbody:is(.dark *){--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.admin-table tr{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.admin-table tr:hover{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity,1))}.admin-table tr:hover:is(.dark *){background-color:rgba(51,65,85,.5)}.admin-table td{white-space:nowrap;padding:1rem 1.5rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1))}.admin-table td:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.badge{display:inline-flex;border-radius:9999px;padding-left:.5rem;padding-right:.5rem;font-size:.75rem;font-weight:600;line-height:1.25rem}.badge-success{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity,1))}.badge-success:is(.dark *){--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(187 247 208/var(--tw-text-opacity,1))}.badge-error{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity,1))}.badge-error:is(.dark *){--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity,1))}.badge-warning{--tw-bg-opacity:1;background-color:rgb(254 249 195/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(133 77 14/var(--tw-text-opacity,1))}.badge-warning:is(.dark *){--tw-bg-opacity:1;background-color:rgb(113 63 18/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(254 240 138/var(--tw-text-opacity,1))}.badge-info{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity,1))}.badge-info:is(.dark *){--tw-bg-opacity:1;background-color:rgb(30 58 138/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(191 219 254/var(--tw-text-opacity,1))}.printer-card{border-radius:.75rem;border-width:1px;border-color:rgba(229,231,235,.6);background-color:hsla(0,0%,100%,.6);padding:1.5rem;--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);--tw-backdrop-blur:blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.printer-card,.printer-card:hover{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.printer-card:hover{--tw-translate-y:-0.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}.printer-card:is(.dark *){border-color:rgba(51,65,85,.3);background-color:rgba(0,0,0,.7)}.printer-card{backdrop-filter:blur(20px) saturate(180%) brightness(110%);-webkit-backdrop-filter:blur(20px) saturate(180%) brightness(110%);box-shadow:0 25px 50px rgba(0,0,0,.15),0 0 0 1px hsla(0,0%,100%,.1)}.printer-header{margin-bottom:1rem;display:flex;align-items:center;justify-content:space-between}.printer-name{font-size:1.25rem;line-height:1.75rem;font-weight:700;--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1))}.printer-name:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.printer-actions{display:flex}.printer-actions>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.printer-info{margin-bottom:1rem;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.printer-status{margin-top:1rem;display:flex;align-items:center}.status-indicator{margin-right:.5rem;height:.75rem;width:.75rem;border-radius:9999px}.status-running{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity,1));animation:pulse 2s infinite}.status-stopped{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.log-entry{margin-bottom:.5rem;border-top-right-radius:.5rem;border-bottom-right-radius:.5rem;border-left-width:4px;--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1));padding:.75rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.log-entry:hover{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity,1))}.log-entry:is(.dark *){--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.log-entry:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity,1))}.log-debug{--tw-border-opacity:1;border-color:rgb(156 163 175/var(--tw-border-opacity,1))}.log-debug:is(.dark *){--tw-border-opacity:1;border-color:rgb(107 114 128/var(--tw-border-opacity,1))}.log-info{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity,1))}.log-info:is(.dark *){--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity,1))}.log-warning{--tw-border-opacity:1;border-color:rgb(250 204 21/var(--tw-border-opacity,1))}.log-warning:is(.dark *){--tw-border-opacity:1;border-color:rgb(234 179 8/var(--tw-border-opacity,1))}.log-error{--tw-border-opacity:1;border-color:rgb(248 113 113/var(--tw-border-opacity,1))}.log-error:is(.dark *){--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity,1))}.log-critical{--tw-border-opacity:1;border-color:rgb(192 132 252/var(--tw-border-opacity,1))}.log-critical:is(.dark *){--tw-border-opacity:1;border-color:rgb(168 85 247/var(--tw-border-opacity,1))}.scheduler-status{display:flex;align-items:center;border-radius:.5rem;border-width:1px;--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1));padding:1rem;--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.scheduler-status:is(.dark *){--tw-border-opacity:1;border-color:rgb(51 65 85/var(--tw-border-opacity,1));--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.progress-bar{height:.5rem;width:100%;overflow:hidden;border-radius:9999px;--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.progress-bar:is(.dark *){--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity,1))}.progress-bar-fill{height:100%;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.progress-bar-fill-blue{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}.progress-bar-fill-blue:is(.dark *){--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.progress-bar-fill-green{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity,1))}.progress-bar-fill-green:is(.dark *){--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.progress-bar-fill-purple{--tw-bg-opacity:1;background-color:rgb(168 85 247/var(--tw-bg-opacity,1))}.progress-bar-fill-purple:is(.dark *){--tw-bg-opacity:1;background-color:rgb(147 51 234/var(--tw-bg-opacity,1))}.\!notification,.notification{position:fixed;top:1rem;right:1rem;z-index:50;max-width:28rem;--tw-translate-x:100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));border-radius:1rem;padding:1rem;opacity:0;--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.5s}.\!notification{background:hsla(0,0%,100%,.08)!important;backdrop-filter:blur(40px) saturate(200%) brightness(130%) contrast(110%)!important;-webkit-backdrop-filter:blur(40px) saturate(200%) brightness(130%) contrast(110%)!important;border:1px solid hsla(0,0%,100%,.25)!important;box-shadow:0 32px 64px rgba(0,0,0,.25),0 12px 24px rgba(0,0,0,.15),inset 0 1px 0 hsla(0,0%,100%,.4),0 0 0 1px hsla(0,0%,100%,.1)!important;animation:notification-slide-in .6s cubic-bezier(.4,0,.2,1)!important}.notification{background:hsla(0,0%,100%,.08);backdrop-filter:blur(40px) saturate(200%) brightness(130%) contrast(110%);-webkit-backdrop-filter:blur(40px) saturate(200%) brightness(130%) contrast(110%);border:1px solid hsla(0,0%,100%,.25);box-shadow:0 32px 64px rgba(0,0,0,.25),0 12px 24px rgba(0,0,0,.15),inset 0 1px 0 hsla(0,0%,100%,.4),0 0 0 1px hsla(0,0%,100%,.1);animation:notification-slide-in .6s cubic-bezier(.4,0,.2,1)}.dark .notification{background:rgba(0,0,0,.2);backdrop-filter:blur(40px) saturate(180%) brightness(120%) contrast(115%);-webkit-backdrop-filter:blur(40px) saturate(180%) brightness(120%) contrast(115%);border:1px solid hsla(0,0%,100%,.15);box-shadow:0 32px 64px rgba(0,0,0,.6),0 12px 24px rgba(0,0,0,.4),inset 0 1px 0 hsla(0,0%,100%,.2),0 0 0 1px hsla(0,0%,100%,.05)}.dark .\!notification{background:rgba(0,0,0,.2)!important;backdrop-filter:blur(40px) saturate(180%) brightness(120%) contrast(115%)!important;-webkit-backdrop-filter:blur(40px) saturate(180%) brightness(120%) contrast(115%)!important;border:1px solid hsla(0,0%,100%,.15)!important;box-shadow:0 32px 64px rgba(0,0,0,.6),0 12px 24px rgba(0,0,0,.4),inset 0 1px 0 hsla(0,0%,100%,.2),0 0 0 1px hsla(0,0%,100%,.05)!important}.\!notification.show,.notification.\!show,.notification.show{--tw-translate-x:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));opacity:1}.\!notification:hover{transform:translateY(-2px) scale(1.02)!important;box-shadow:0 40px 80px rgba(0,0,0,.3),0 16px 32px rgba(0,0,0,.2),inset 0 1px 0 hsla(0,0%,100%,.5),0 0 0 1px hsla(0,0%,100%,.15)!important}.notification:hover{transform:translateY(-2px) scale(1.02);box-shadow:0 40px 80px rgba(0,0,0,.3),0 16px 32px rgba(0,0,0,.2),inset 0 1px 0 hsla(0,0%,100%,.5),0 0 0 1px hsla(0,0%,100%,.15)}.dark .notification:hover{box-shadow:0 40px 80px rgba(0,0,0,.7),0 16px 32px rgba(0,0,0,.5),inset 0 1px 0 hsla(0,0%,100%,.3),0 0 0 1px hsla(0,0%,100%,.1)}.dark .\!notification:hover{box-shadow:0 40px 80px rgba(0,0,0,.7),0 16px 32px rgba(0,0,0,.5),inset 0 1px 0 hsla(0,0%,100%,.3),0 0 0 1px hsla(0,0%,100%,.1)!important}.notification-success{--tw-text-opacity:1;color:rgb(220 252 231/var(--tw-text-opacity,1));background:linear-gradient(135deg,rgba(34,197,94,.25),rgba(134,239,172,.18) 50%,rgba(34,197,94,.12));border:1px solid rgba(34,197,94,.4);box-shadow:0 32px 64px rgba(34,197,94,.2),0 12px 24px rgba(34,197,94,.1),inset 0 1px 0 hsla(0,0%,100%,.4),0 0 0 1px rgba(34,197,94,.3)}.notification-error{--tw-text-opacity:1;color:rgb(254 226 226/var(--tw-text-opacity,1));background:linear-gradient(135deg,rgba(239,68,68,.25),hsla(0,94%,82%,.18) 50%,rgba(239,68,68,.12));border:1px solid rgba(239,68,68,.4);box-shadow:0 32px 64px rgba(239,68,68,.2),0 12px 24px rgba(239,68,68,.1),inset 0 1px 0 hsla(0,0%,100%,.4),0 0 0 1px rgba(239,68,68,.3)}.notification-warning{--tw-text-opacity:1;color:rgb(254 249 195/var(--tw-text-opacity,1));background:linear-gradient(135deg,rgba(245,158,11,.25),rgba(252,211,77,.18) 50%,rgba(245,158,11,.12));border:1px solid rgba(245,158,11,.4);box-shadow:0 32px 64px rgba(245,158,11,.2),0 12px 24px rgba(245,158,11,.1),inset 0 1px 0 hsla(0,0%,100%,.4),0 0 0 1px rgba(245,158,11,.3)}.notification-info{--tw-text-opacity:1;color:rgb(219 234 254/var(--tw-text-opacity,1));background:linear-gradient(135deg,rgba(59,130,246,.25),rgba(147,197,253,.18) 50%,rgba(59,130,246,.12));border:1px solid rgba(59,130,246,.4);box-shadow:0 32px 64px rgba(59,130,246,.2),0 12px 24px rgba(59,130,246,.1),inset 0 1px 0 hsla(0,0%,100%,.4),0 0 0 1px rgba(59,130,246,.3)}.toast-notification{position:fixed;z-index:50;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));border-radius:1rem;padding:1rem;font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.5s;background:hsla(0,0%,100%,.08);backdrop-filter:blur(40px) saturate(200%) brightness(130%) contrast(110%);-webkit-backdrop-filter:blur(40px) saturate(200%) brightness(130%) contrast(110%);border:1px solid hsla(0,0%,100%,.25);box-shadow:0 32px 64px rgba(0,0,0,.25),0 12px 24px rgba(0,0,0,.15),inset 0 1px 0 hsla(0,0%,100%,.4),0 0 0 1px hsla(0,0%,100%,.1)}.dark .toast-notification{background:rgba(0,0,0,.2);backdrop-filter:blur(40px) saturate(180%) brightness(120%) contrast(115%);-webkit-backdrop-filter:blur(40px) saturate(180%) brightness(120%) contrast(115%);border:1px solid hsla(0,0%,100%,.15);box-shadow:0 32px 64px rgba(0,0,0,.6),0 12px 24px rgba(0,0,0,.4),inset 0 1px 0 hsla(0,0%,100%,.2),0 0 0 1px hsla(0,0%,100%,.05)}.alert{margin-bottom:1.5rem;border-radius:1rem;border-width:1px;padding:1.5rem;--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);background:hsla(0,0%,100%,.12);backdrop-filter:blur(30px) saturate(200%) brightness(120%) contrast(110%);-webkit-backdrop-filter:blur(30px) saturate(200%) brightness(120%) contrast(110%);border:1px solid hsla(0,0%,100%,.25);box-shadow:0 25px 50px rgba(0,0,0,.15),0 8px 16px rgba(0,0,0,.1),inset 0 1px 0 hsla(0,0%,100%,.3),0 0 0 1px hsla(0,0%,100%,.1);animation:alert-fade-in .5s ease-out}.dark .alert{background:rgba(0,0,0,.3);backdrop-filter:blur(30px) saturate(180%) brightness(110%) contrast(120%);-webkit-backdrop-filter:blur(30px) saturate(180%) brightness(110%) contrast(120%);border:1px solid hsla(0,0%,100%,.15);box-shadow:0 25px 50px rgba(0,0,0,.4),0 8px 16px rgba(0,0,0,.3),inset 0 1px 0 hsla(0,0%,100%,.15),0 0 0 1px hsla(0,0%,100%,.05)}.alert-success{--tw-text-opacity:1;color:rgb(20 83 45/var(--tw-text-opacity,1))}.alert-success:is(.dark *){--tw-text-opacity:1;color:rgb(220 252 231/var(--tw-text-opacity,1))}.alert-success{background:linear-gradient(135deg,rgba(34,197,94,.15),rgba(134,239,172,.1) 50%,rgba(34,197,94,.08));border:1px solid rgba(34,197,94,.3)}.alert-error{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity,1))}.alert-error:is(.dark *){--tw-text-opacity:1;color:rgb(254 226 226/var(--tw-text-opacity,1))}.alert-error{background:linear-gradient(135deg,rgba(239,68,68,.15),hsla(0,94%,82%,.1) 50%,rgba(239,68,68,.08));border:1px solid rgba(239,68,68,.3)}.alert-warning{--tw-text-opacity:1;color:rgb(113 63 18/var(--tw-text-opacity,1))}.alert-warning:is(.dark *){--tw-text-opacity:1;color:rgb(254 249 195/var(--tw-text-opacity,1))}.alert-warning{background:linear-gradient(135deg,rgba(245,158,11,.15),rgba(252,211,77,.1) 50%,rgba(245,158,11,.08));border:1px solid rgba(245,158,11,.3)}.alert-info{--tw-text-opacity:1;color:rgb(30 58 138/var(--tw-text-opacity,1))}.alert-info:is(.dark *){--tw-text-opacity:1;color:rgb(219 234 254/var(--tw-text-opacity,1))}.alert-info{background:linear-gradient(135deg,rgba(59,130,246,.15),rgba(147,197,253,.1) 50%,rgba(59,130,246,.08));border:1px solid rgba(59,130,246,.3)}.browser-notification{position:fixed;top:1rem;left:1rem;z-index:50;max-width:24rem;border-radius:1rem;padding:1rem;--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);background:hsla(0,0%,100%,.08);backdrop-filter:blur(40px) saturate(200%) brightness(130%) contrast(110%);-webkit-backdrop-filter:blur(40px) saturate(200%) brightness(130%) contrast(110%);border:1px solid hsla(0,0%,100%,.25);box-shadow:0 32px 64px rgba(0,0,0,.25),0 12px 24px rgba(0,0,0,.15),inset 0 1px 0 hsla(0,0%,100%,.4),0 0 0 1px hsla(0,0%,100%,.1);animation:notification-slide-left .6s cubic-bezier(.4,0,.2,1)}.dark .browser-notification{background:rgba(0,0,0,.2);backdrop-filter:blur(40px) saturate(180%) brightness(120%) contrast(115%);-webkit-backdrop-filter:blur(40px) saturate(180%) brightness(120%) contrast(115%);border:1px solid hsla(0,0%,100%,.15);box-shadow:0 32px 64px rgba(0,0,0,.6),0 12px 24px rgba(0,0,0,.4),inset 0 1px 0 hsla(0,0%,100%,.2),0 0 0 1px hsla(0,0%,100%,.05)}@keyframes notification-slide-in{0%{opacity:0;transform:translateX(100%) translateY(-20px) scale(.9);-webkit-backdrop-filter:blur(0);backdrop-filter:blur(0)}50%{opacity:.8;transform:translateX(20px) translateY(-10px) scale(1.05);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}to{opacity:1;transform:translateX(0) translateY(0) scale(1);-webkit-backdrop-filter:blur(40px);backdrop-filter:blur(40px)}}@keyframes notification-slide-out{0%{opacity:1;transform:translateX(0) translateY(0) scale(1)}to{opacity:0;transform:translateX(100%) translateY(-20px) scale(.9)}}@keyframes notification-slide-left{0%{opacity:0;transform:translateX(-100%) translateY(-20px) scale(.9);-webkit-backdrop-filter:blur(0);backdrop-filter:blur(0)}50%{opacity:.8;transform:translateX(-20px) translateY(-10px) scale(1.05);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}to{opacity:1;transform:translateX(0) translateY(0) scale(1);-webkit-backdrop-filter:blur(40px);backdrop-filter:blur(40px)}}@keyframes alert-fade-in{0%{opacity:0;transform:translateY(-20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.\!notification.hiding{animation:notification-slide-out .4s cubic-bezier(.4,0,.2,1) forwards!important}.notification.hiding{animation:notification-slide-out .4s cubic-bezier(.4,0,.2,1) forwards}.notification-icon{margin-right:.75rem;display:flex;height:2rem;width:2rem;flex-shrink:0;align-items:center;justify-content:center;border-radius:9999px;background:hsla(0,0%,100%,.2);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid hsla(0,0%,100%,.3);box-shadow:0 8px 16px rgba(0,0,0,.1),inset 0 1px 0 hsla(0,0%,100%,.4)}.notification-content{flex:1 1 0%}.notification-title{margin-bottom:.25rem;font-size:.875rem;line-height:1.25rem;font-weight:600}.notification-message{font-size:.875rem;line-height:1.25rem;opacity:.9}.notification-close{margin-left:.75rem;border-radius:.5rem;padding:.25rem;opacity:.7;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.notification-close:hover{opacity:1}.notification-close{background:hsla(0,0%,100%,.1);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid hsla(0,0%,100%,.2)}.notification-close:hover{background:hsla(0,0%,100%,.2);transform:scale(1.1)}.notifications-container{position:fixed;top:1rem;right:1rem;z-index:50;max-width:28rem}.notifications-container>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.notifications-container-left{position:fixed;top:1rem;left:1rem;z-index:50;max-width:24rem}.notifications-container-left>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.flash-message-light{background:linear-gradient(135deg,hsla(0,0%,100%,.95),rgba(248,250,252,.9));backdrop-filter:blur(32px) saturate(200%) brightness(120%);-webkit-backdrop-filter:blur(32px) saturate(200%) brightness(120%);border:1px solid rgba(226,232,240,.6);box-shadow:0 25px 50px rgba(0,0,0,.1),0 12px 24px rgba(0,115,206,.05),inset 0 1px 0 hsla(0,0%,100%,.8);color:var(--color-text-primary)}.flash-message-light.success{border-left:4px solid #10b981;background:linear-gradient(135deg,rgba(236,253,245,.95),rgba(209,250,229,.9))}.flash-message-light.error{border-left:4px solid #ef4444;background:linear-gradient(135deg,hsla(0,86%,97%,.95),hsla(0,94%,82%,.9))}.flash-message-light.warning{border-left:4px solid #fbbf24;background:linear-gradient(135deg,rgba(255,251,235,.95),hsla(48,96%,89%,.9))}.flash-message-light.info{border-left:4px solid #3b82f6;background:linear-gradient(135deg,rgba(239,246,255,.95),rgba(219,234,254,.9))}.table-enhanced{background:var(--gradient-card);border:1px solid var(--color-border-primary);border-radius:var(--card-radius);overflow:hidden;box-shadow:0 4px 20px var(--color-shadow),0 2px 8px rgba(0,115,206,.04),inset 0 1px 0 hsla(0,0%,100%,.6)}.table-enhanced th{background:linear-gradient(135deg,var(--color-bg-secondary) 0,var(--color-bg-tertiary) 100%);color:var(--color-text-primary);font-weight:600;padding:1rem 1.5rem;border-bottom:1px solid var(--color-border-primary);position:relative}.table-enhanced th:after{content:"";position:absolute;bottom:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent 0,var(--color-border-secondary) 50%,transparent 100%)}.table-enhanced td{padding:1rem 1.5rem;border-bottom:1px solid var(--color-border-primary);color:var(--color-text-secondary);transition:all .2s ease}.table-enhanced tbody tr:hover{background:var(--color-bg-secondary);transform:scale(1.002)}.dark .table-enhanced{background:hsla(0,0%,4%,.8);border-color:var(--color-border-primary)}.dark .table-enhanced th{background:rgba(26,26,26,.8);color:var(--color-text-primary)}.dark .table-enhanced tbody tr:hover{background:rgba(26,26,26,.6)}.modal-enhanced{background:linear-gradient(135deg,hsla(0,0%,100%,.98),rgba(248,250,252,.95) 50%,hsla(0,0%,100%,.98));backdrop-filter:blur(32px) saturate(220%) brightness(120%);-webkit-backdrop-filter:blur(32px) saturate(220%) brightness(120%);border:1px solid rgba(226,232,240,.7);border-radius:1.5rem;box-shadow:0 50px 100px rgba(0,0,0,.15),0 20px 40px rgba(0,115,206,.08),inset 0 2px 0 hsla(0,0%,100%,.9);position:relative;overflow:hidden}.modal-enhanced:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(226,232,240,.8) 50%,transparent)}.dark .modal-enhanced{background:rgba(0,0,0,.95);border-color:rgba(42,42,42,.7);box-shadow:0 50px 100px rgba(0,0,0,.5),inset 0 2px 0 hsla(0,0%,100%,.05)}.status-badge-enhanced{display:inline-flex;align-items:center;padding:.5rem 1rem;font-size:.75rem;font-weight:700;border-radius:9999px;text-transform:uppercase;letter-spacing:.05em;border:1px solid transparent;transition:all .2s ease;position:relative;overflow:hidden}.status-badge-enhanced:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.3),transparent);transition:left .5s ease}.status-badge-enhanced:hover:before{left:100%}.status-online-enhanced{background:linear-gradient(135deg,#ecfdf5,#a7f3d0);color:#065f46;border-color:rgba(16,185,129,.3)}.status-offline-enhanced{background:linear-gradient(135deg,#fef2f2,#fca5a5);color:#991b1b;border-color:rgba(239,68,68,.3)}.status-printing-enhanced{background:linear-gradient(135deg,#eff6ff,#bfdbfe);color:#1e40af;border-color:rgba(59,130,246,.3)}.dark-mode-toggle-new{position:relative;display:flex;cursor:pointer;align-items:center;justify-content:center;border-radius:9999px;padding:.625rem;transition:all .3s cubic-bezier(.4,0,.2,1);background:linear-gradient(135deg,rgba(248,250,252,.9),rgba(241,245,249,.8));border:1px solid rgba(226,232,240,.7);box-shadow:0 4px 12px rgba(0,0,0,.06),0 2px 4px rgba(0,115,206,.04),inset 0 1px 0 hsla(0,0%,100%,.8);color:var(--color-text-secondary)}.dark-mode-toggle-new:hover{transform:translateY(-2px) scale(1.05);background:linear-gradient(135deg,rgba(248,250,252,.95),rgba(241,245,249,.85));box-shadow:0 8px 20px rgba(0,0,0,.1),0 4px 8px rgba(0,115,206,.08),inset 0 1px 0 hsla(0,0%,100%,.9)}.dark-mode-toggle-new:active{transform:translateY(-1px) scale(.98)}.dark .dark-mode-toggle-new{background:hsla(0,0%,4%,.8);border:1px solid rgba(42,42,42,.6);box-shadow:0 4px 12px rgba(0,0,0,.3),inset 0 1px 0 hsla(0,0%,100%,.05);color:var(--color-text-secondary)}.dark .dark-mode-toggle-new:hover{background:hsla(0,0%,4%,.9);box-shadow:0 8px 20px rgba(0,0,0,.4),inset 0 1px 0 hsla(0,0%,100%,.08)}.dark-mode-toggle-new .moon-icon,.dark-mode-toggle-new .sun-icon{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transition:all .3s cubic-bezier(.4,0,.2,1)}.dark-mode-toggle-new .moon-icon:not(.hidden),.dark-mode-toggle-new .sun-icon:not(.hidden){animation:icon-appear .5s cubic-bezier(.25,1,.5,1) forwards}@keyframes icon-appear{0%{opacity:0;transform:translate(-50%,-50%) scale(.5) rotate(-20deg)}to{opacity:1;transform:translate(-50%,-50%) scale(1) rotate(0)}}.user-menu-button-new{display:flex;align-items:center;gap:.5rem;border-radius:.75rem;padding:.5rem;transition:all .3s cubic-bezier(.4,0,.2,1);background:linear-gradient(135deg,rgba(248,250,252,.8),rgba(241,245,249,.7));border:1px solid rgba(226,232,240,.6);box-shadow:0 2px 8px rgba(0,0,0,.05),inset 0 1px 0 hsla(0,0%,100%,.7)}.user-menu-button-new:hover{transform:translateY(-1px);background:linear-gradient(135deg,rgba(248,250,252,.9),rgba(241,245,249,.8));box-shadow:0 4px 12px rgba(0,0,0,.08),0 2px 4px rgba(0,115,206,.04),inset 0 1px 0 hsla(0,0%,100%,.8)}.dark .user-menu-button-new{background:hsla(0,0%,4%,.7);border-color:rgba(42,42,42,.6);box-shadow:0 2px 8px rgba(0,0,0,.2),inset 0 1px 0 hsla(0,0%,100%,.03)}.dark .user-menu-button-new:hover{background:hsla(0,0%,4%,.8);box-shadow:0 4px 12px rgba(0,0,0,.3),inset 0 1px 0 hsla(0,0%,100%,.05)}.hover-lift-enhanced{transition:all .3s cubic-bezier(.4,0,.2,1)}.hover-lift-enhanced:hover{transform:translateY(-3px) scale(1.01);box-shadow:0 12px 30px var(--color-shadow-strong),0 6px 15px var(--color-shadow-accent)}.dark .hover-lift-enhanced:hover{box-shadow:0 12px 30px var(--color-shadow)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--color-bg-secondary);border-radius:4px}::-webkit-scrollbar-thumb{background:linear-gradient(180deg,var(--color-border-secondary) 0,var(--color-border-primary) 100%);border-radius:4px;-webkit-transition:background .2s ease;transition:background .2s ease}::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,var(--color-accent) 0,var(--color-accent-hover) 100%)}.dark ::-webkit-scrollbar-track{background:var(--color-bg-secondary)}.dark ::-webkit-scrollbar-thumb{background:var(--color-border-primary)}.dark ::-webkit-scrollbar-thumb:hover{background:#60a5fa}.loading-enhanced{position:relative;overflow:hidden}.loading-enhanced:after{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(0,115,206,.1),transparent);animation:loading-shimmer 2s infinite}@keyframes loading-shimmer{0%{left:-100%}to{left:100%}}.dark .focus-enhanced:focus{outline-color:#60a5fa;box-shadow:0 0 0 4px rgba(96,165,250,.15),0 4px 12px rgba(96,165,250,.2)}@media (max-width:768px){.card-enhanced{padding:1rem;border-radius:.75rem}.btn-enhanced{padding:.75rem 1.5rem;font-size:.8rem}.modal-enhanced{border-radius:1rem;margin:1rem}.dark-mode-toggle-new{padding:.5rem}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}@media (prefers-contrast:high){:root{--color-shadow:rgba(0,0,0,.2);--color-shadow-strong:rgba(0,0,0,.3);--color-border-primary:#000}.dark{--color-border-primary:#fff}}.btn-primary{border-radius:.5rem;padding:.5rem 1rem;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1));--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.btn-primary:hover{--tw-translate-y:-0.125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.btn-primary:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-opacity:1;--tw-ring-color:rgb(107 114 128/var(--tw-ring-opacity,1));--tw-ring-offset-width:2px}.btn-primary:is(.dark *){--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1))}.btn-primary{background:rgba(0,0,0,.7);backdrop-filter:blur(20px) saturate(150%) brightness(110%);-webkit-backdrop-filter:blur(20px) saturate(150%) brightness(110%);border:1px solid hsla(0,0%,100%,.2);box-shadow:0 20px 40px rgba(0,0,0,.3),0 8px 16px rgba(0,0,0,.2),inset 0 1px 0 hsla(0,0%,100%,.2),0 0 0 1px hsla(0,0%,100%,.1)}.btn-primary:hover{background:rgba(0,0,0,.9);backdrop-filter:blur(25px) saturate(180%) brightness(120%);-webkit-backdrop-filter:blur(25px) saturate(180%) brightness(120%);border:1px solid hsla(0,0%,100%,.3);box-shadow:0 25px 50px rgba(0,0,0,.4),0 10px 20px rgba(0,0,0,.3),inset 0 1px 0 hsla(0,0%,100%,.3)}.dark .btn-primary{background:hsla(0,0%,100%,.7);border:1px solid rgba(0,0,0,.1);box-shadow:0 20px 40px rgba(0,0,0,.2),0 8px 16px rgba(0,0,0,.1),inset 0 1px 0 hsla(0,0%,100%,.8),0 0 0 1px rgba(0,0,0,.05)}.dark .btn-primary:hover{background:hsla(0,0%,100%,.9);border:1px solid rgba(0,0,0,.15);box-shadow:0 25px 50px rgba(0,0,0,.3),0 10px 20px rgba(0,0,0,.2),inset 0 1px 0 hsla(0,0%,100%,.9)}.btn-secondary{border-radius:.5rem;padding:.5rem 1rem;--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1));--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.btn-secondary:hover{--tw-translate-y:-0.125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.btn-secondary:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-opacity:1;--tw-ring-color:rgb(100 116 139/var(--tw-ring-opacity,1));--tw-ring-offset-width:2px}.btn-secondary:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.btn-secondary{background:hsla(0,0%,100%,.3);backdrop-filter:blur(20px) saturate(150%) brightness(110%);-webkit-backdrop-filter:blur(20px) saturate(150%) brightness(110%);border:1px solid hsla(0,0%,100%,.4);box-shadow:0 20px 40px rgba(0,0,0,.15),0 8px 16px rgba(0,0,0,.1),inset 0 1px 0 hsla(0,0%,100%,.5),0 0 0 1px hsla(0,0%,100%,.2)}.btn-secondary:hover{background:hsla(0,0%,100%,.5);backdrop-filter:blur(25px) saturate(180%) brightness(120%);-webkit-backdrop-filter:blur(25px) saturate(180%) brightness(120%);border:1px solid hsla(0,0%,100%,.6);box-shadow:0 25px 50px rgba(0,0,0,.2),0 10px 20px rgba(0,0,0,.15),inset 0 1px 0 hsla(0,0%,100%,.7)}.dark .btn-secondary{background:rgba(0,0,0,.4);border:1px solid hsla(0,0%,100%,.2);box-shadow:0 20px 40px rgba(0,0,0,.3),0 8px 16px rgba(0,0,0,.2),inset 0 1px 0 hsla(0,0%,100%,.2),0 0 0 1px hsla(0,0%,100%,.1)}.dark .btn-secondary:hover{background:rgba(0,0,0,.6);border:1px solid hsla(0,0%,100%,.3);box-shadow:0 25px 50px rgba(0,0,0,.4),0 10px 20px rgba(0,0,0,.3),inset 0 1px 0 hsla(0,0%,100%,.3)}.btn-outline{border-radius:.5rem;border-width:2px;border-color:rgba(0,0,0,.7);padding:.5rem 1rem;--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1));--tw-backdrop-blur:blur(16px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.btn-outline:hover{background-color:rgba(0,0,0,.7);--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.btn-outline:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-opacity:1;--tw-ring-color:rgb(107 114 128/var(--tw-ring-opacity,1));--tw-ring-offset-width:2px}.btn-outline:is(.dark *){border-color:hsla(0,0%,100%,.7);--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.btn-outline:hover:is(.dark *){background-color:hsla(0,0%,100%,.7);--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1))}.btn-outline{backdrop-filter:blur(16px) saturate(150%);-webkit-backdrop-filter:blur(16px) saturate(150%);box-shadow:0 15px 30px rgba(0,0,0,.1),0 0 0 1px hsla(0,0%,100%,.05)}.glass-card{border-radius:.75rem;padding:1.5rem;--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s;background:hsla(0,0%,100%,.15);backdrop-filter:blur(30px) saturate(200%) brightness(120%) contrast(110%);-webkit-backdrop-filter:blur(30px) saturate(200%) brightness(120%) contrast(110%);border:1px solid hsla(0,0%,100%,.3);box-shadow:0 25px 50px rgba(0,0,0,.15),0 8px 16px rgba(0,0,0,.1),inset 0 1px 0 hsla(0,0%,100%,.3),0 0 0 1px hsla(0,0%,100%,.1);border-radius:var(--card-radius)}.dark .glass-card{background:rgba(0,0,0,.3);backdrop-filter:blur(30px) saturate(180%) brightness(110%) contrast(120%);-webkit-backdrop-filter:blur(30px) saturate(180%) brightness(110%) contrast(120%);border:1px solid hsla(0,0%,100%,.15);box-shadow:0 25px 50px rgba(0,0,0,.4),0 8px 16px rgba(0,0,0,.3),inset 0 1px 0 hsla(0,0%,100%,.15),0 0 0 1px hsla(0,0%,100%,.05)}.dashboard-card{border-radius:.75rem;padding:1.5rem;--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.dashboard-card:hover{--tw-translate-y:-0.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.dashboard-card{background:hsla(0,0%,100%,.12);backdrop-filter:blur(35px) saturate(200%) brightness(125%) contrast(115%);-webkit-backdrop-filter:blur(35px) saturate(200%) brightness(125%) contrast(115%);border:1px solid hsla(0,0%,100%,.25);box-shadow:0 25px 50px rgba(0,0,0,.15),0 8px 16px rgba(0,0,0,.08),inset 0 1px 0 hsla(0,0%,100%,.25),0 0 0 1px hsla(0,0%,100%,.1);border-radius:var(--card-radius)}.dark .dashboard-card{background:rgba(0,0,0,.35);backdrop-filter:blur(35px) saturate(180%) brightness(115%) contrast(125%);-webkit-backdrop-filter:blur(35px) saturate(180%) brightness(115%) contrast(125%);border:1px solid hsla(0,0%,100%,.12);box-shadow:0 25px 50px rgba(0,0,0,.5),0 8px 16px rgba(0,0,0,.3),inset 0 1px 0 hsla(0,0%,100%,.12),0 0 0 1px hsla(0,0%,100%,.05)}.nav-link{display:flex;align-items:center;border-radius:.5rem;padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity,1));transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}.nav-link:hover{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity,1));--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.nav-link:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-opacity:1;--tw-ring-color:rgb(100 116 139/var(--tw-ring-opacity,1));--tw-ring-offset-width:2px}.nav-link:is(.dark *){--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity,1))}.nav-link:hover:is(.dark *){background-color:rgba(51,65,85,.5)}.nav-link.active{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1));--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.nav-link.active:is(.dark *){--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.navbar{display:flex;justify-content:space-between;align-items:center;padding:.5rem 1rem;background:hsla(0,0%,100%,.1);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:10px;box-shadow:0 4px 6px rgba(0,0,0,.1);transition:all .3s ease}.navbar-button{padding:.25rem .5rem;font-size:.875rem;border-radius:5px;transition:background-color .3s ease}.navbar-button:hover{background-color:hsla(0,0%,100%,.2)}@media (max-width:768px){.navbar{flex-direction:column;padding:.25rem}.navbar-button{margin:.25rem 0}}.dark .navbar{background:rgba(0,0,0,.25);backdrop-filter:blur(40px) saturate(180%) brightness(120%) contrast(120%);-webkit-backdrop-filter:blur(40px) saturate(180%) brightness(120%) contrast(120%);box-shadow:0 8px 32px rgba(0,0,0,.6),0 2px 8px rgba(0,0,0,.4),inset 0 1px 0 hsla(0,0%,100%,.1),0 0 0 1px hsla(0,0%,100%,.05);border-bottom:1px solid hsla(0,0%,100%,.1)}.navbar-brand{display:flex;align-items:center}.navbar-brand>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.navbar-brand{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.navbar-brand:hover{--tw-scale-x:1.05;--tw-scale-y:1.05;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.navbar-menu{margin-left:1rem;margin-right:1rem;display:flex;align-items:center;justify-content:center}.navbar-menu>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.25rem*var(--tw-space-x-reverse));margin-left:calc(.25rem*(1 - var(--tw-space-x-reverse)))}.navbar-menu{border-radius:1rem;border-width:1px;padding:.75rem}@media (min-width:768px){.navbar-menu>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.75rem*var(--tw-space-x-reverse));margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)))}}@media (min-width:1024px){.navbar-menu>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1.5rem*var(--tw-space-x-reverse));margin-left:calc(1.5rem*(1 - var(--tw-space-x-reverse)))}}.navbar-menu{background:hsla(0,0%,100%,.25);border:1px solid hsla(0,0%,100%,.3);box-shadow:0 4px 16px rgba(0,0,0,.1),inset 0 1px 0 hsla(0,0%,100%,.4),0 0 0 1px hsla(0,0%,100%,.1)}.dark .navbar-menu,.navbar-menu{backdrop-filter:blur(20px) saturate(150%) brightness(110%);-webkit-backdrop-filter:blur(20px) saturate(150%) brightness(110%)}.dark .navbar-menu{background:rgba(0,0,0,.4);border:1px solid hsla(0,0%,100%,.15);box-shadow:0 4px 16px rgba(0,0,0,.3),inset 0 1px 0 hsla(0,0%,100%,.2),0 0 0 1px hsla(0,0%,100%,.05)}.navbar-button{border-radius:9999px;padding:.5rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.navbar-button:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-offset-width:2px}.user-menu-button{display:flex;align-items:center}.user-menu-button>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.user-menu-button{border-radius:.5rem;padding:.25rem;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.user-menu-button:hover{background-color:rgba(243,244,246,.8)}.user-menu-button:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-opacity:1;--tw-ring-color:rgb(100 116 139/var(--tw-ring-opacity,1));--tw-ring-offset-width:2px}.user-menu-button:hover:is(.dark *){background-color:rgba(51,65,85,.6)}.user-avatar{display:flex;height:2.5rem;width:2.5rem;align-items:center;justify-content:center;border-radius:9999px;--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1));font-size:.875rem;line-height:1.25rem;font-weight:700;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1));--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.user-avatar,.user-avatar:hover{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.user-avatar:hover{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.user-avatar:is(.dark *){--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1))}.avatar-large{display:flex;height:3.5rem;width:3.5rem;align-items:center;justify-content:center;border-radius:9999px;--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1));font-size:1.125rem;line-height:1.75rem;font-weight:700;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1));--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.avatar-large:is(.dark *){--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1))}.user-dropdown-item{transition-duration:.3s}.user-dropdown-item:hover{background-color:rgba(243,244,246,.8);--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1))}.user-dropdown-item:focus{background-color:rgba(243,244,246,.8);outline:2px solid transparent;outline-offset:2px}.user-dropdown-item:is(.dark *){color:rgb(203 213 225/var(--tw-text-opacity,1))}.user-dropdown-item:hover:is(.dark *){background-color:rgba(51,65,85,.6);--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.user-dropdown-item:focus:is(.dark *){background-color:rgba(51,65,85,.6)}.user-dropdown-separator{margin-top:.25rem;margin-bottom:.25rem;border-top-width:1px;border-color:rgba(229,231,235,.8)}.user-dropdown-separator:is(.dark *){border-color:rgba(51,65,85,.3)}.menu-item{display:flex;align-items:center}.menu-item>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.menu-item{border-radius:.75rem;padding:.625rem 1rem;--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity,1));transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.menu-item:is(.dark *){--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity,1))}.menu-item{background:hsla(0,0%,100%,.1);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid hsla(0,0%,100%,.2);box-shadow:0 2px 8px rgba(0,0,0,.05)}.menu-item:hover{--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1))}.menu-item:hover:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.menu-item:hover{background:hsla(0,0%,100%,.3);backdrop-filter:blur(15px) saturate(150%);-webkit-backdrop-filter:blur(15px) saturate(150%);border:1px solid hsla(0,0%,100%,.4);box-shadow:0 4px 16px rgba(0,0,0,.1);transform:translateY(-1px)}.dark .menu-item{background:rgba(0,0,0,.2);border:1px solid hsla(0,0%,100%,.1);box-shadow:0 2px 8px rgba(0,0,0,.2)}.dark .menu-item:hover{background:rgba(0,0,0,.4);border:1px solid hsla(0,0%,100%,.2);box-shadow:0 4px 16px rgba(0,0,0,.3)}.menu-item.active{font-weight:500;--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1))}.menu-item.active:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.menu-item.active{background:hsla(0,0%,100%,.5);backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);border:1px solid hsla(0,0%,100%,.6);box-shadow:0 4px 16px rgba(0,0,0,.15),inset 0 1px 0 hsla(0,0%,100%,.5)}.dark .menu-item.active{background:rgba(0,0,0,.6);border:1px solid hsla(0,0%,100%,.3);box-shadow:0 4px 16px rgba(0,0,0,.4),inset 0 1px 0 hsla(0,0%,100%,.2)}.user-dropdown{position:absolute;right:0;z-index:50;margin-top:.5rem;width:16rem;overflow:hidden;border-radius:.75rem;--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);background:hsla(0,0%,100%,.1);backdrop-filter:blur(40px) saturate(200%) brightness(130%) contrast(110%);-webkit-backdrop-filter:blur(40px) saturate(200%) brightness(130%) contrast(110%);border:1px solid hsla(0,0%,100%,.3);box-shadow:0 25px 50px rgba(0,0,0,.25),0 8px 16px rgba(0,0,0,.15),inset 0 1px 0 hsla(0,0%,100%,.4),0 0 0 1px hsla(0,0%,100%,.1);animation:fadeIn .2s ease-out forwards}.dark .user-dropdown{background:rgba(0,0,0,.4);backdrop-filter:blur(40px) saturate(180%) brightness(120%) contrast(120%);-webkit-backdrop-filter:blur(40px) saturate(180%) brightness(120%) contrast(120%);border:1px solid hsla(0,0%,100%,.15);box-shadow:0 25px 50px rgba(0,0,0,.6),0 8px 16px rgba(0,0,0,.4),inset 0 1px 0 hsla(0,0%,100%,.2),0 0 0 1px hsla(0,0%,100%,.05)}.dropdown-header{display:flex;align-items:center;border-bottom-width:1px;border-color:rgba(229,231,235,.8);padding:1rem}.dropdown-header:is(.dark *){border-color:rgba(51,65,85,.3)}.dropdown-item{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity,1));transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.dropdown-item:hover{background-color:rgba(243,244,246,.8);--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1))}.dropdown-item:is(.dark *){--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity,1))}.dropdown-item:hover:is(.dark *){background-color:rgba(51,65,85,.6);--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.dropdown-divider{border-top-width:1px;border-color:rgba(229,231,235,.8)}.dropdown-divider:is(.dark *){border-color:rgba(51,65,85,.3)}@keyframes mercedes-rotate{0%{transform:rotate(0deg)}25%{transform:rotate(90deg)}50%{transform:rotate(180deg)}75%{transform:rotate(270deg)}to{transform:rotate(1turn)}}.navbar-brand:hover svg{animation:mercedes-rotate 5s linear infinite;transform-origin:center}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.-inset-1{inset:-.25rem}.inset-0{inset:0}.inset-y-0{top:0;bottom:0}.-bottom-2{bottom:-.5rem}.-bottom-40{bottom:-10rem}.-bottom-8{bottom:-2rem}.-left-2{left:-.5rem}.-left-32{left:-8rem}.-right-1{right:-.25rem}.-right-2{right:-.5rem}.-right-32{right:-8rem}.-top-1{top:-.25rem}.-top-2{top:-.5rem}.-top-40{top:-10rem}.bottom-0{bottom:0}.bottom-4{bottom:1rem}.bottom-6{bottom:1.5rem}.bottom-8{bottom:2rem}.bottom-full{bottom:100%}.end-1{inset-inline-end:.25rem}.left-0{left:0}.left-1\/2{left:50%}.left-3{left:.75rem}.left-4{left:1rem}.right-0{right:0}.right-2\.5{right:.625rem}.right-3{right:.75rem}.right-4{right:1rem}.right-5{right:1.25rem}.right-6{right:1.5rem}.right-8{right:2rem}.top-0{top:0}.top-1\/2{top:50%}.top-2\.5{top:.625rem}.top-3{top:.75rem}.top-4{top:1rem}.top-5{top:1.25rem}.top-8{top:2rem}.top-full{top:100%}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.col-span-full{grid-column:1/-1}.m-1{margin:.25rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.-ml-1{margin-left:-.25rem}.-mt-8{margin-top:-2rem}.mb-0{margin-bottom:0}.mb-1{margin-bottom:.25rem}.mb-12{margin-bottom:3rem}.mb-16{margin-bottom:4rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-6{margin-left:1.5rem}.ml-8{margin-left:2rem}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mr-4{margin-right:1rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-12{margin-top:3rem}.mt-16{margin-top:4rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.mt-auto{margin-top:auto}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.list-item{display:list-item}.hidden{display:none}.h-0{height:0}.h-1{height:.25rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-20{height:5rem}.h-24{height:6rem}.h-28{height:7rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-32{height:8rem}.h-4{height:1rem}.h-40{height:10rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-64{height:16rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-96{height:24rem}.h-full{height:100%}.max-h-80{max-height:20rem}.max-h-96{max-height:24rem}.max-h-\[90vh\]{max-height:90vh}.min-h-\[80vh\]{min-height:80vh}.min-h-screen{min-height:100vh}.w-0{width:0}.w-1{width:.25rem}.w-1\/2{width:50%}.w-1\/3{width:33.333333%}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-12{width:3rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-2\/3{width:66.666667%}.w-20{width:5rem}.w-24{width:6rem}.w-28{width:7rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-3\/4{width:75%}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-80{width:20rem}.w-96{width:24rem}.w-full{width:100%}.min-w-0{min-width:0}.min-w-\[150px\]{min-width:150px}.min-w-full{min-width:100%}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-6xl{max-width:72rem}.max-w-7xl{max-width:80rem}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-none{max-width:none}.max-w-screen-xl{max-width:1280px}.max-w-sm{max-width:24rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-shrink{flex-shrink:1}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.flex-grow,.grow{flex-grow:1}.border-collapse{border-collapse:collapse}.origin-top-right{transform-origin:top right}.-translate-x-1{--tw-translate-x:-0.25rem}.-translate-x-1,.-translate-x-1\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-x-1\/2{--tw-translate-x:-50%}.-translate-x-full{--tw-translate-x:-100%}.-translate-x-full,.-translate-y-0{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-0{--tw-translate-y:-0px}.-translate-y-1{--tw-translate-y:-0.25rem}.-translate-y-1,.-translate-y-1\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y:-50%}.translate-x-0{--tw-translate-x:0px}.translate-x-0,.translate-x-1{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-1{--tw-translate-x:0.25rem}.translate-x-full{--tw-translate-x:100%}.translate-x-full,.translate-y-1{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-1{--tw-translate-y:0.25rem}.rotate-0{--tw-rotate:0deg}.rotate-0,.rotate-180{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate:180deg}.rotate-90{--tw-rotate:90deg}.rotate-90,.skew-x-12{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.skew-x-12{--tw-skew-x:12deg}.scale-100{--tw-scale-x:1;--tw-scale-y:1}.scale-100,.scale-75{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-75{--tw-scale-x:.75;--tw-scale-y:.75}.scale-95{--tw-scale-x:.95;--tw-scale-y:.95}.scale-95,.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes bounce{0%,to{transform:translateY(-25%);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;animation-timing-function:cubic-bezier(0,0,.2,1)}}.animate-bounce{animation:bounce 1s infinite}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.animate-fade-in{animation:fadeIn .5s ease-in-out}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes slideUp{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}.animate-slide-up{animation:slideUp .5s ease-out}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.resize-none{resize:none}.resize{resize:both}.scroll-mt-8{scroll-margin-top:2rem}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.space-x-0\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.125rem*var(--tw-space-x-reverse));margin-left:calc(.125rem*(1 - var(--tw-space-x-reverse)))}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.25rem*var(--tw-space-x-reverse));margin-left:calc(.25rem*(1 - var(--tw-space-x-reverse)))}.space-x-1\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.375rem*var(--tw-space-x-reverse));margin-left:calc(.375rem*(1 - var(--tw-space-x-reverse)))}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.space-x-2\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.625rem*var(--tw-space-x-reverse));margin-left:calc(.625rem*(1 - var(--tw-space-x-reverse)))}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.75rem*var(--tw-space-x-reverse));margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1rem*var(--tw-space-x-reverse));margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)))}.space-x-6>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1.5rem*var(--tw-space-x-reverse));margin-left:calc(1.5rem*(1 - var(--tw-space-x-reverse)))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.space-y-16>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(4rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(4rem*var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem*var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(2rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem*var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px*var(--tw-divide-y-reverse))}.divide-gray-200>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(229 231 235/var(--tw-divide-opacity,1))}.divide-slate-200>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(226 232 240/var(--tw-divide-opacity,1))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.scroll-smooth{scroll-behavior:smooth}.truncate{overflow:hidden;text-overflow:ellipsis}.truncate,.whitespace-nowrap{white-space:nowrap}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-3xl{border-radius:1.5rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:.75rem}.rounded-l-md{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}.rounded-r-lg{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.rounded-r-md{border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}.border{border-width:1px}.border-2{border-width:2px}.border-4{border-width:4px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-l-2{border-left-width:2px}.border-l-4{border-left-width:4px}.border-r-4{border-right-width:4px}.border-t{border-top-width:1px}.border-t-4{border-top-width:4px}.border-dashed{border-style:dashed}.border-none{border-style:none}.border-amber-200{--tw-border-opacity:1;border-color:rgb(253 230 138/var(--tw-border-opacity,1))}.border-black{--tw-border-opacity:1;border-color:rgb(0 0 0/var(--tw-border-opacity,1))}.border-black\/70{border-color:rgba(0,0,0,.7)}.border-blue-200{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity,1))}.border-blue-200\/50{border-color:rgba(191,219,254,.5)}.border-blue-300{--tw-border-opacity:1;border-color:rgb(147 197 253/var(--tw-border-opacity,1))}.border-blue-400{--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity,1))}.border-blue-500{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity,1))}.border-blue-600{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity,1))}.border-emerald-200\/50{border-color:rgba(167,243,208,.5)}.border-emerald-500{--tw-border-opacity:1;border-color:rgb(16 185 129/var(--tw-border-opacity,1))}.border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}.border-gray-200\/50{border-color:rgba(229,231,235,.5)}.border-gray-200\/60{border-color:rgba(229,231,235,.6)}.border-gray-200\/70{border-color:rgba(229,231,235,.7)}.border-gray-200\/80{border-color:rgba(229,231,235,.8)}.border-gray-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.border-gray-300\/60{border-color:rgba(209,213,219,.6)}.border-gray-400{--tw-border-opacity:1;border-color:rgb(156 163 175/var(--tw-border-opacity,1))}.border-green-200{--tw-border-opacity:1;border-color:rgb(187 247 208/var(--tw-border-opacity,1))}.border-green-200\/50{border-color:rgba(187,247,208,.5)}.border-green-300{--tw-border-opacity:1;border-color:rgb(134 239 172/var(--tw-border-opacity,1))}.border-green-400{--tw-border-opacity:1;border-color:rgb(74 222 128/var(--tw-border-opacity,1))}.border-green-500{--tw-border-opacity:1;border-color:rgb(34 197 94/var(--tw-border-opacity,1))}.border-indigo-200{--tw-border-opacity:1;border-color:rgb(199 210 254/var(--tw-border-opacity,1))}.border-indigo-200\/50{border-color:rgba(199,210,254,.5)}.border-mercedes-silver{--tw-border-opacity:1;border-color:rgb(192 192 192/var(--tw-border-opacity,1))}.border-orange-200{--tw-border-opacity:1;border-color:rgb(254 215 170/var(--tw-border-opacity,1))}.border-orange-200\/50{border-color:hsla(32,98%,83%,.5)}.border-purple-200\/50{border-color:rgba(233,213,255,.5)}.border-purple-400{--tw-border-opacity:1;border-color:rgb(192 132 252/var(--tw-border-opacity,1))}.border-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity,1))}.border-red-200\/50{border-color:hsla(0,96%,89%,.5)}.border-red-300{--tw-border-opacity:1;border-color:rgb(252 165 165/var(--tw-border-opacity,1))}.border-red-400{--tw-border-opacity:1;border-color:rgb(248 113 113/var(--tw-border-opacity,1))}.border-red-500{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity,1))}.border-slate-200{--tw-border-opacity:1;border-color:rgb(226 232 240/var(--tw-border-opacity,1))}.border-slate-200\/50{border-color:rgba(226,232,240,.5)}.border-slate-300{--tw-border-opacity:1;border-color:rgb(203 213 225/var(--tw-border-opacity,1))}.border-transparent{border-color:transparent}.border-white{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}.border-white\/20{border-color:hsla(0,0%,100%,.2)}.border-white\/30{border-color:hsla(0,0%,100%,.3)}.border-white\/50{border-color:hsla(0,0%,100%,.5)}.border-yellow-200{--tw-border-opacity:1;border-color:rgb(254 240 138/var(--tw-border-opacity,1))}.border-yellow-400{--tw-border-opacity:1;border-color:rgb(250 204 21/var(--tw-border-opacity,1))}.border-t-slate-800{--tw-border-opacity:1;border-top-color:rgb(30 41 59/var(--tw-border-opacity,1))}.border-t-slate-900{--tw-border-opacity:1;border-top-color:rgb(15 23 42/var(--tw-border-opacity,1))}.bg-amber-400{--tw-bg-opacity:1;background-color:rgb(251 191 36/var(--tw-bg-opacity,1))}.bg-amber-50{--tw-bg-opacity:1;background-color:rgb(255 251 235/var(--tw-bg-opacity,1))}.bg-amber-500{--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity,1))}.bg-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.bg-black\/20{background-color:rgba(0,0,0,.2)}.bg-black\/30{background-color:rgba(0,0,0,.3)}.bg-black\/40{background-color:rgba(0,0,0,.4)}.bg-black\/50{background-color:rgba(0,0,0,.5)}.bg-black\/60{background-color:rgba(0,0,0,.6)}.bg-black\/70{background-color:rgba(0,0,0,.7)}.bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.bg-blue-400{--tw-bg-opacity:1;background-color:rgb(96 165 250/var(--tw-bg-opacity,1))}.bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}.bg-blue-50\/50{background-color:rgba(239,246,255,.5)}.bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}.bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.bg-cyan-100{--tw-bg-opacity:1;background-color:rgb(207 250 254/var(--tw-bg-opacity,1))}.bg-dark-card,.bg-dark-surface{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.bg-emerald-100{--tw-bg-opacity:1;background-color:rgb(209 250 229/var(--tw-bg-opacity,1))}.bg-emerald-600{--tw-bg-opacity:1;background-color:rgb(5 150 105/var(--tw-bg-opacity,1))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.bg-gray-300{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity,1))}.bg-gray-400{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity,1))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.bg-gray-500{--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.bg-gray-600{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.bg-green-100{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1))}.bg-green-100\/90{background-color:rgba(220,252,231,.9)}.bg-green-400{--tw-bg-opacity:1;background-color:rgb(74 222 128/var(--tw-bg-opacity,1))}.bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity,1))}.bg-green-50\/50{background-color:rgba(240,253,244,.5)}.bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity,1))}.bg-green-600{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.bg-indigo-100{--tw-bg-opacity:1;background-color:rgb(224 231 255/var(--tw-bg-opacity,1))}.bg-indigo-50{--tw-bg-opacity:1;background-color:rgb(238 242 255/var(--tw-bg-opacity,1))}.bg-indigo-50\/50{background-color:rgba(238,242,255,.5)}.bg-indigo-500{--tw-bg-opacity:1;background-color:rgb(99 102 241/var(--tw-bg-opacity,1))}.bg-indigo-600{--tw-bg-opacity:1;background-color:rgb(79 70 229/var(--tw-bg-opacity,1))}.bg-mercedes-black{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.bg-mercedes-silver{--tw-bg-opacity:1;background-color:rgb(192 192 192/var(--tw-bg-opacity,1))}.bg-orange-100{--tw-bg-opacity:1;background-color:rgb(255 237 213/var(--tw-bg-opacity,1))}.bg-orange-400{--tw-bg-opacity:1;background-color:rgb(251 146 60/var(--tw-bg-opacity,1))}.bg-orange-50{--tw-bg-opacity:1;background-color:rgb(255 247 237/var(--tw-bg-opacity,1))}.bg-orange-50\/50{background-color:rgba(255,247,237,.5)}.bg-orange-500{--tw-bg-opacity:1;background-color:rgb(249 115 22/var(--tw-bg-opacity,1))}.bg-orange-600{--tw-bg-opacity:1;background-color:rgb(234 88 12/var(--tw-bg-opacity,1))}.bg-purple-100{--tw-bg-opacity:1;background-color:rgb(243 232 255/var(--tw-bg-opacity,1))}.bg-purple-400{--tw-bg-opacity:1;background-color:rgb(192 132 252/var(--tw-bg-opacity,1))}.bg-purple-50{--tw-bg-opacity:1;background-color:rgb(250 245 255/var(--tw-bg-opacity,1))}.bg-purple-50\/50{background-color:rgba(250,245,255,.5)}.bg-purple-500{--tw-bg-opacity:1;background-color:rgb(168 85 247/var(--tw-bg-opacity,1))}.bg-purple-600{--tw-bg-opacity:1;background-color:rgb(147 51 234/var(--tw-bg-opacity,1))}.bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity,1))}.bg-red-100\/90{background-color:hsla(0,93%,94%,.9)}.bg-red-400{--tw-bg-opacity:1;background-color:rgb(248 113 113/var(--tw-bg-opacity,1))}.bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.bg-red-50\/50{background-color:hsla(0,86%,97%,.5)}.bg-red-500{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.bg-red-600{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.bg-slate-100{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity,1))}.bg-slate-200{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity,1))}.bg-slate-50{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity,1))}.bg-slate-50\/50{background-color:rgba(248,250,252,.5)}.bg-slate-500{--tw-bg-opacity:1;background-color:rgb(100 116 139/var(--tw-bg-opacity,1))}.bg-slate-600{--tw-bg-opacity:1;background-color:rgb(71 85 105/var(--tw-bg-opacity,1))}.bg-slate-800{--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.bg-slate-900{--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity,1))}.bg-teal-100{--tw-bg-opacity:1;background-color:rgb(204 251 241/var(--tw-bg-opacity,1))}.bg-teal-500{--tw-bg-opacity:1;background-color:rgb(20 184 166/var(--tw-bg-opacity,1))}.bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.bg-white\/10{background-color:hsla(0,0%,100%,.1)}.bg-white\/15{background-color:hsla(0,0%,100%,.15)}.bg-white\/20{background-color:hsla(0,0%,100%,.2)}.bg-white\/40{background-color:hsla(0,0%,100%,.4)}.bg-white\/60{background-color:hsla(0,0%,100%,.6)}.bg-white\/80{background-color:hsla(0,0%,100%,.8)}.bg-white\/90{background-color:hsla(0,0%,100%,.9)}.bg-yellow-100{--tw-bg-opacity:1;background-color:rgb(254 249 195/var(--tw-bg-opacity,1))}.bg-yellow-400{--tw-bg-opacity:1;background-color:rgb(250 204 21/var(--tw-bg-opacity,1))}.bg-yellow-50{--tw-bg-opacity:1;background-color:rgb(254 252 232/var(--tw-bg-opacity,1))}.bg-yellow-500{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity,1))}.bg-yellow-600{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity,1))}.bg-opacity-50{--tw-bg-opacity:0.5}.bg-opacity-75{--tw-bg-opacity:0.75}.bg-opacity-95{--tw-bg-opacity:0.95}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.bg-gradient-to-tr{background-image:linear-gradient(to top right,var(--tw-gradient-stops))}.from-amber-300{--tw-gradient-from:#fcd34d var(--tw-gradient-from-position);--tw-gradient-to:rgba(252,211,77,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-blue-100{--tw-gradient-from:#dbeafe var(--tw-gradient-from-position);--tw-gradient-to:rgba(219,234,254,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-blue-300\/10{--tw-gradient-from:rgba(147,197,253,.1) var(--tw-gradient-from-position);--tw-gradient-to:rgba(147,197,253,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-blue-400{--tw-gradient-from:#60a5fa var(--tw-gradient-from-position);--tw-gradient-to:rgba(96,165,250,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-blue-400\/20{--tw-gradient-from:rgba(96,165,250,.2) var(--tw-gradient-from-position);--tw-gradient-to:rgba(96,165,250,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-blue-50{--tw-gradient-from:#eff6ff var(--tw-gradient-from-position);--tw-gradient-to:rgba(239,246,255,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-blue-500{--tw-gradient-from:#3b82f6 var(--tw-gradient-from-position);--tw-gradient-to:rgba(59,130,246,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-blue-500\/10{--tw-gradient-from:rgba(59,130,246,.1) var(--tw-gradient-from-position);--tw-gradient-to:rgba(59,130,246,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-blue-600{--tw-gradient-from:#2563eb var(--tw-gradient-from-position);--tw-gradient-to:rgba(37,99,235,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-blue-600\/10{--tw-gradient-from:rgba(37,99,235,.1) var(--tw-gradient-from-position);--tw-gradient-to:rgba(37,99,235,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-emerald-400{--tw-gradient-from:#34d399 var(--tw-gradient-from-position);--tw-gradient-to:rgba(52,211,153,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-emerald-50{--tw-gradient-from:#ecfdf5 var(--tw-gradient-from-position);--tw-gradient-to:rgba(236,253,245,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-green-100{--tw-gradient-from:#dcfce7 var(--tw-gradient-from-position);--tw-gradient-to:rgba(220,252,231,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-green-400{--tw-gradient-from:#4ade80 var(--tw-gradient-from-position);--tw-gradient-to:rgba(74,222,128,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-green-50{--tw-gradient-from:#f0fdf4 var(--tw-gradient-from-position);--tw-gradient-to:rgba(240,253,244,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-green-50\/90{--tw-gradient-from:rgba(240,253,244,.9) var(--tw-gradient-from-position);--tw-gradient-to:rgba(240,253,244,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-green-500{--tw-gradient-from:#22c55e var(--tw-gradient-from-position);--tw-gradient-to:rgba(34,197,94,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-green-500\/10{--tw-gradient-from:rgba(34,197,94,.1) var(--tw-gradient-from-position);--tw-gradient-to:rgba(34,197,94,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-orange-50{--tw-gradient-from:#fff7ed var(--tw-gradient-from-position);--tw-gradient-to:rgba(255,247,237,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-orange-500{--tw-gradient-from:#f97316 var(--tw-gradient-from-position);--tw-gradient-to:rgba(249,115,22,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-orange-500\/10{--tw-gradient-from:rgba(249,115,22,.1) var(--tw-gradient-from-position);--tw-gradient-to:rgba(249,115,22,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-purple-100{--tw-gradient-from:#f3e8ff var(--tw-gradient-from-position);--tw-gradient-to:rgba(243,232,255,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-purple-400\/20{--tw-gradient-from:rgba(192,132,252,.2) var(--tw-gradient-from-position);--tw-gradient-to:rgba(192,132,252,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-purple-50{--tw-gradient-from:#faf5ff var(--tw-gradient-from-position);--tw-gradient-to:rgba(250,245,255,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-purple-500{--tw-gradient-from:#a855f7 var(--tw-gradient-from-position);--tw-gradient-to:rgba(168,85,247,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-purple-500\/10{--tw-gradient-from:rgba(168,85,247,.1) var(--tw-gradient-from-position);--tw-gradient-to:rgba(168,85,247,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-purple-600{--tw-gradient-from:#9333ea var(--tw-gradient-from-position);--tw-gradient-to:rgba(147,51,234,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-red-400{--tw-gradient-from:#f87171 var(--tw-gradient-from-position);--tw-gradient-to:hsla(0,91%,71%,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-red-500{--tw-gradient-from:#ef4444 var(--tw-gradient-from-position);--tw-gradient-to:rgba(239,68,68,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-red-500\/10{--tw-gradient-from:rgba(239,68,68,.1) var(--tw-gradient-from-position);--tw-gradient-to:rgba(239,68,68,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-slate-50{--tw-gradient-from:#f8fafc var(--tw-gradient-from-position);--tw-gradient-to:rgba(248,250,252,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-slate-500{--tw-gradient-from:#64748b var(--tw-gradient-from-position);--tw-gradient-to:rgba(100,116,139,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-slate-900{--tw-gradient-from:#0f172a var(--tw-gradient-from-position);--tw-gradient-to:rgba(15,23,42,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-transparent{--tw-gradient-from:transparent var(--tw-gradient-from-position);--tw-gradient-to:transparent var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-white{--tw-gradient-from:#fff var(--tw-gradient-from-position);--tw-gradient-to:hsla(0,0%,100%,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.from-white\/90{--tw-gradient-from:hsla(0,0%,100%,.9) var(--tw-gradient-from-position);--tw-gradient-to:hsla(0,0%,100%,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.via-blue-100{--tw-gradient-to:rgba(219,234,254,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#dbeafe var(--tw-gradient-via-position),var(--tw-gradient-to)}.via-blue-200{--tw-gradient-to:rgba(191,219,254,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#bfdbfe var(--tw-gradient-via-position),var(--tw-gradient-to)}.via-blue-50{--tw-gradient-to:rgba(239,246,255,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#eff6ff var(--tw-gradient-via-position),var(--tw-gradient-to)}.via-blue-900{--tw-gradient-to:rgba(30,58,138,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#1e3a8a var(--tw-gradient-via-position),var(--tw-gradient-to)}.via-green-50{--tw-gradient-to:rgba(240,253,244,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#f0fdf4 var(--tw-gradient-via-position),var(--tw-gradient-to)}.via-green-500{--tw-gradient-to:rgba(34,197,94,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#22c55e var(--tw-gradient-via-position),var(--tw-gradient-to)}.via-indigo-50{--tw-gradient-to:rgba(238,242,255,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#eef2ff var(--tw-gradient-via-position),var(--tw-gradient-to)}.via-purple-500{--tw-gradient-to:rgba(168,85,247,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#a855f7 var(--tw-gradient-via-position),var(--tw-gradient-to)}.via-red-50{--tw-gradient-to:hsla(0,86%,97%,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#fef2f2 var(--tw-gradient-via-position),var(--tw-gradient-to)}.via-white\/20{--tw-gradient-to:hsla(0,0%,100%,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),hsla(0,0%,100%,.2) var(--tw-gradient-via-position),var(--tw-gradient-to)}.via-white\/5{--tw-gradient-to:hsla(0,0%,100%,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),hsla(0,0%,100%,.05) var(--tw-gradient-via-position),var(--tw-gradient-to)}.to-blue-200{--tw-gradient-to:#bfdbfe var(--tw-gradient-to-position)}.to-blue-600{--tw-gradient-to:#2563eb var(--tw-gradient-to-position)}.to-blue-700{--tw-gradient-to:#1d4ed8 var(--tw-gradient-to-position)}.to-emerald-50{--tw-gradient-to:#ecfdf5 var(--tw-gradient-to-position)}.to-emerald-50\/80{--tw-gradient-to:rgba(236,253,245,.8) var(--tw-gradient-to-position)}.to-emerald-500{--tw-gradient-to:#10b981 var(--tw-gradient-to-position)}.to-emerald-500\/10{--tw-gradient-to:rgba(16,185,129,.1) var(--tw-gradient-to-position)}.to-emerald-600{--tw-gradient-to:#059669 var(--tw-gradient-to-position)}.to-green-200{--tw-gradient-to:#bbf7d0 var(--tw-gradient-to-position)}.to-green-50{--tw-gradient-to:#f0fdf4 var(--tw-gradient-to-position)}.to-green-600{--tw-gradient-to:#16a34a var(--tw-gradient-to-position)}.to-indigo-300\/10{--tw-gradient-to:rgba(165,180,252,.1) var(--tw-gradient-to-position)}.to-indigo-50{--tw-gradient-to:#eef2ff var(--tw-gradient-to-position)}.to-indigo-500{--tw-gradient-to:#6366f1 var(--tw-gradient-to-position)}.to-indigo-500\/10{--tw-gradient-to:rgba(99,102,241,.1) var(--tw-gradient-to-position)}.to-indigo-600{--tw-gradient-to:#4f46e5 var(--tw-gradient-to-position)}.to-indigo-600\/20{--tw-gradient-to:rgba(79,70,229,.2) var(--tw-gradient-to-position)}.to-indigo-900{--tw-gradient-to:#312e81 var(--tw-gradient-to-position)}.to-orange-400{--tw-gradient-to:#fb923c var(--tw-gradient-to-position)}.to-orange-50{--tw-gradient-to:#fff7ed var(--tw-gradient-to-position)}.to-orange-500{--tw-gradient-to:#f97316 var(--tw-gradient-to-position)}.to-orange-600{--tw-gradient-to:#ea580c var(--tw-gradient-to-position)}.to-pink-50{--tw-gradient-to:#fdf2f8 var(--tw-gradient-to-position)}.to-pink-500\/10{--tw-gradient-to:rgba(236,72,153,.1) var(--tw-gradient-to-position)}.to-pink-600\/20{--tw-gradient-to:rgba(219,39,119,.2) var(--tw-gradient-to-position)}.to-purple-200{--tw-gradient-to:#e9d5ff var(--tw-gradient-to-position)}.to-purple-50{--tw-gradient-to:#faf5ff var(--tw-gradient-to-position)}.to-purple-500{--tw-gradient-to:#a855f7 var(--tw-gradient-to-position)}.to-purple-600{--tw-gradient-to:#9333ea var(--tw-gradient-to-position)}.to-purple-600\/10{--tw-gradient-to:rgba(147,51,234,.1) var(--tw-gradient-to-position)}.to-purple-700{--tw-gradient-to:#7e22ce var(--tw-gradient-to-position)}.to-red-50{--tw-gradient-to:#fef2f2 var(--tw-gradient-to-position)}.to-red-500\/10{--tw-gradient-to:rgba(239,68,68,.1) var(--tw-gradient-to-position)}.to-red-600{--tw-gradient-to:#dc2626 var(--tw-gradient-to-position)}.to-rose-500{--tw-gradient-to:#f43f5e var(--tw-gradient-to-position)}.to-slate-100{--tw-gradient-to:#f1f5f9 var(--tw-gradient-to-position)}.to-slate-600{--tw-gradient-to:#475569 var(--tw-gradient-to-position)}.to-slate-700{--tw-gradient-to:#334155 var(--tw-gradient-to-position)}.to-teal-50{--tw-gradient-to:#f0fdfa var(--tw-gradient-to-position)}.to-transparent{--tw-gradient-to:transparent var(--tw-gradient-to-position)}.to-violet-500\/10{--tw-gradient-to:rgba(139,92,246,.1) var(--tw-gradient-to-position)}.to-white{--tw-gradient-to:#fff var(--tw-gradient-to-position)}.to-white\/70{--tw-gradient-to:hsla(0,0%,100%,.7) var(--tw-gradient-to-position)}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.object-cover{-o-object-fit:cover;object-fit:cover}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-10{padding:2.5rem}.p-12{padding:3rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-20{padding-top:5rem;padding-bottom:5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-2{padding-bottom:.5rem}.pb-20{padding-bottom:5rem}.pb-4{padding-bottom:1rem}.pb-6{padding-bottom:1.5rem}.pb-8{padding-bottom:2rem}.pl-10{padding-left:2.5rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.pr-10{padding-right:2.5rem}.pr-12{padding-right:3rem}.pr-20{padding-right:5rem}.pr-3{padding-right:.75rem}.pr-4{padding-right:1rem}.pt-4{padding-top:1rem}.pt-5{padding-top:1.25rem}.pt-6{padding-top:1.5rem}.pt-8{padding-top:2rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-5xl{font-size:3rem;line-height:1}.text-6xl{font-size:3.75rem;line-height:1}.text-8xl{font-size:6rem;line-height:1}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-4{line-height:1rem}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-relaxed{line-height:1.625}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.text-amber-500{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity,1))}.text-amber-600{--tw-text-opacity:1;color:rgb(217 119 6/var(--tw-text-opacity,1))}.text-amber-800{--tw-text-opacity:1;color:rgb(146 64 14/var(--tw-text-opacity,1))}.text-amber-900{--tw-text-opacity:1;color:rgb(120 53 15/var(--tw-text-opacity,1))}.text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.text-blue-100{--tw-text-opacity:1;color:rgb(219 234 254/var(--tw-text-opacity,1))}.text-blue-200{--tw-text-opacity:1;color:rgb(191 219 254/var(--tw-text-opacity,1))}.text-blue-400{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity,1))}.text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.text-blue-700{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity,1))}.text-blue-800{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity,1))}.text-blue-900{--tw-text-opacity:1;color:rgb(30 58 138/var(--tw-text-opacity,1))}.text-cyan-600{--tw-text-opacity:1;color:rgb(8 145 178/var(--tw-text-opacity,1))}.text-emerald-600{--tw-text-opacity:1;color:rgb(5 150 105/var(--tw-text-opacity,1))}.text-emerald-800{--tw-text-opacity:1;color:rgb(6 95 70/var(--tw-text-opacity,1))}.text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.text-gray-800{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity,1))}.text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity,1))}.text-green-800{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity,1))}.text-green-900{--tw-text-opacity:1;color:rgb(20 83 45/var(--tw-text-opacity,1))}.text-indigo-400{--tw-text-opacity:1;color:rgb(129 140 248/var(--tw-text-opacity,1))}.text-indigo-600{--tw-text-opacity:1;color:rgb(79 70 229/var(--tw-text-opacity,1))}.text-indigo-800{--tw-text-opacity:1;color:rgb(55 48 163/var(--tw-text-opacity,1))}.text-indigo-900{--tw-text-opacity:1;color:rgb(49 46 129/var(--tw-text-opacity,1))}.text-mercedes-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.text-mercedes-silver{--tw-text-opacity:1;color:rgb(192 192 192/var(--tw-text-opacity,1))}.text-orange-500{--tw-text-opacity:1;color:rgb(249 115 22/var(--tw-text-opacity,1))}.text-orange-600{--tw-text-opacity:1;color:rgb(234 88 12/var(--tw-text-opacity,1))}.text-orange-700{--tw-text-opacity:1;color:rgb(194 65 12/var(--tw-text-opacity,1))}.text-orange-800{--tw-text-opacity:1;color:rgb(154 52 18/var(--tw-text-opacity,1))}.text-purple-500{--tw-text-opacity:1;color:rgb(168 85 247/var(--tw-text-opacity,1))}.text-purple-600{--tw-text-opacity:1;color:rgb(147 51 234/var(--tw-text-opacity,1))}.text-purple-800{--tw-text-opacity:1;color:rgb(107 33 168/var(--tw-text-opacity,1))}.text-purple-900{--tw-text-opacity:1;color:rgb(88 28 135/var(--tw-text-opacity,1))}.text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity,1))}.text-red-900{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity,1))}.text-slate-300{--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity,1))}.text-slate-400{--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity,1))}.text-slate-500{--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity,1))}.text-slate-600{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity,1))}.text-slate-700{--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity,1))}.text-slate-800{--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity,1))}.text-slate-900{--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1))}.text-teal-600{--tw-text-opacity:1;color:rgb(13 148 136/var(--tw-text-opacity,1))}.text-transparent{color:transparent}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.text-yellow-400{--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity,1))}.text-yellow-500{--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity,1))}.text-yellow-600{--tw-text-opacity:1;color:rgb(202 138 4/var(--tw-text-opacity,1))}.text-yellow-700{--tw-text-opacity:1;color:rgb(161 98 7/var(--tw-text-opacity,1))}.text-yellow-800{--tw-text-opacity:1;color:rgb(133 77 14/var(--tw-text-opacity,1))}.text-yellow-900{--tw-text-opacity:1;color:rgb(113 63 18/var(--tw-text-opacity,1))}.underline{text-decoration-line:underline}.overline{text-decoration-line:overline}.placeholder-gray-400::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.placeholder-gray-400::placeholder{--tw-placeholder-opacity:1;color:rgb(156 163 175/var(--tw-placeholder-opacity,1))}.placeholder-slate-500::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(100 116 139/var(--tw-placeholder-opacity,1))}.placeholder-slate-500::placeholder{--tw-placeholder-opacity:1;color:rgb(100 116 139/var(--tw-placeholder-opacity,1))}.opacity-0{opacity:0}.opacity-10{opacity:.1}.opacity-100{opacity:1}.opacity-15{opacity:.15}.opacity-25{opacity:.25}.opacity-30{opacity:.3}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-2xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-lg,.shadow-md{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-sm,.shadow-xl{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}.outline{outline-style:solid}.ring{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.ring,.ring-2{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.blur{--tw-blur:blur(8px)}.blur,.blur-2xl{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.blur-2xl{--tw-blur:blur(40px)}.blur-3xl{--tw-blur:blur(64px)}.blur-3xl,.blur-sm{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.blur-sm{--tw-blur:blur(4px)}.drop-shadow{--tw-drop-shadow:drop-shadow(0 1px 2px rgba(0,0,0,.1)) drop-shadow(0 1px 1px rgba(0,0,0,.06))}.drop-shadow,.drop-shadow-sm{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.drop-shadow-sm{--tw-drop-shadow:drop-shadow(0 1px 1px rgba(0,0,0,.05))}.invert{--tw-invert:invert(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.\!filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-2xl{--tw-backdrop-blur:blur(40px)}.backdrop-blur-2xl,.backdrop-blur-md{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-md{--tw-backdrop-blur:blur(12px)}.backdrop-blur-sm{--tw-backdrop-blur:blur(4px)}.backdrop-blur-sm,.backdrop-blur-xl{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-xl{--tw-backdrop-blur:blur(24px)}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-shadow{transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.delay-1000{transition-delay:1s}.delay-500{transition-delay:.5s}.duration-1000{transition-duration:1s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.flash-message{position:fixed;top:1rem;right:1rem;z-index:50;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));border-radius:1rem;border-width:1px;padding:1rem 1.5rem;font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.5s;background:hsla(0,0%,100%,.08);backdrop-filter:blur(40px) saturate(200%) brightness(130%) contrast(110%);-webkit-backdrop-filter:blur(40px) saturate(200%) brightness(130%) contrast(110%);border:1px solid hsla(0,0%,100%,.25);box-shadow:0 32px 64px rgba(0,0,0,.25),0 12px 24px rgba(0,0,0,.15),inset 0 1px 0 hsla(0,0%,100%,.4),0 0 0 1px hsla(0,0%,100%,.1);animation:flash-slide-in .5s cubic-bezier(.4,0,.2,1);transition:all .5s cubic-bezier(.4,0,.2,1)}.dark .flash-message{background:rgba(0,0,0,.2);backdrop-filter:blur(40px) saturate(180%) brightness(120%) contrast(115%);-webkit-backdrop-filter:blur(40px) saturate(180%) brightness(120%) contrast(115%);border:1px solid hsla(0,0%,100%,.15);box-shadow:0 32px 64px rgba(0,0,0,.6),0 12px 24px rgba(0,0,0,.4),inset 0 1px 0 hsla(0,0%,100%,.2),0 0 0 1px hsla(0,0%,100%,.05)}.flash-message:hover{transform:translateY(-2px) scale(1.02);box-shadow:0 40px 80px rgba(0,0,0,.3),0 16px 32px rgba(0,0,0,.2),inset 0 1px 0 hsla(0,0%,100%,.5),0 0 0 1px hsla(0,0%,100%,.15)}.dark .flash-message:hover{box-shadow:0 40px 80px rgba(0,0,0,.7),0 16px 32px rgba(0,0,0,.5),inset 0 1px 0 hsla(0,0%,100%,.3),0 0 0 1px hsla(0,0%,100%,.1)}.flash-message.info{--tw-text-opacity:1;color:rgb(219 234 254/var(--tw-text-opacity,1));background:linear-gradient(135deg,rgba(59,130,246,.2),rgba(147,197,253,.15) 50%,rgba(59,130,246,.1));border:1px solid rgba(59,130,246,.3)}.flash-message.success{--tw-text-opacity:1;color:rgb(220 252 231/var(--tw-text-opacity,1));background:linear-gradient(135deg,rgba(34,197,94,.2),rgba(134,239,172,.15) 50%,rgba(34,197,94,.1));border:1px solid rgba(34,197,94,.3)}.flash-message.warning{--tw-text-opacity:1;color:rgb(254 249 195/var(--tw-text-opacity,1));background:linear-gradient(135deg,rgba(245,158,11,.2),rgba(252,211,77,.15) 50%,rgba(245,158,11,.1));border:1px solid rgba(245,158,11,.3)}.flash-message.error{--tw-text-opacity:1;color:rgb(254 226 226/var(--tw-text-opacity,1));background:linear-gradient(135deg,rgba(239,68,68,.2),hsla(0,94%,82%,.15) 50%,rgba(239,68,68,.1));border:1px solid rgba(239,68,68,.3)}@keyframes flash-slide-in{0%{opacity:0;transform:translateX(100%) translateY(-20px) scale(.9);-webkit-backdrop-filter:blur(0);backdrop-filter:blur(0)}50%{opacity:.8;transform:translateX(20px) translateY(-10px) scale(1.05);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}to{opacity:1;transform:translateX(0) translateY(0) scale(1);-webkit-backdrop-filter:blur(40px);backdrop-filter:blur(40px)}}@keyframes flash-slide-out{0%{opacity:1;transform:translateX(0) translateY(0) scale(1)}to{opacity:0;transform:translateX(100%) translateY(-20px) scale(.9)}}.flash-message.hiding{animation:flash-slide-out .4s cubic-bezier(.4,0,.2,1) forwards}.dnd-toggle{position:relative;display:inline-flex;height:1.5rem;width:2.75rem;align-items:center;border-radius:9999px;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.dnd-toggle:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity,1));--tw-ring-offset-width:2px}.dnd-toggle{background:rgba(156,163,175,.3);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(156,163,175,.2)}.dnd-toggle.active{background:rgba(239,68,68,.3);border:1px solid rgba(239,68,68,.4)}.dnd-toggle-slider{display:inline-block;height:1rem;width:1rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));border-radius:9999px;--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s;background:hsla(0,0%,100%,.9);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid hsla(0,0%,100%,.3);box-shadow:0 4px 8px rgba(0,0,0,.2),0 2px 4px rgba(0,0,0,.1);margin:.125rem}.dnd-toggle.active .dnd-toggle-slider{transform:translateX(1.25rem);background:#fff;box-shadow:0 6px 12px rgba(239,68,68,.3),0 3px 6px rgba(239,68,68,.2)}.dnd-indicator{position:fixed;top:1rem;left:1rem;z-index:50;display:flex;align-items:center;border-radius:.5rem;padding:.5rem .75rem;font-size:.875rem;line-height:1.25rem;font-weight:500;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s;background:rgba(239,68,68,.1);backdrop-filter:blur(20px) saturate(150%);-webkit-backdrop-filter:blur(20px) saturate(150%);border:1px solid rgba(239,68,68,.3);color:#ef4444;transform:translateY(-100%);opacity:0}.dnd-indicator.active{transform:translateY(0);opacity:1}.dnd-modal{position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;padding:1rem;background:rgba(0,0,0,.3);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px)}.dnd-modal-content{width:100%;max-width:28rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));border-radius:1rem;padding:1.5rem;--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;background:hsla(0,0%,100%,.1);backdrop-filter:blur(40px) saturate(200%) brightness(120%);-webkit-backdrop-filter:blur(40px) saturate(200%) brightness(120%);border:1px solid hsla(0,0%,100%,.3);box-shadow:0 25px 50px rgba(0,0,0,.25),0 8px 16px rgba(0,0,0,.15),inset 0 1px 0 hsla(0,0%,100%,.4)}.dark .dnd-modal-content{background:rgba(0,0,0,.3);backdrop-filter:blur(40px) saturate(180%) brightness(110%);-webkit-backdrop-filter:blur(40px) saturate(180%) brightness(110%);border:1px solid hsla(0,0%,100%,.15);box-shadow:0 25px 50px rgba(0,0,0,.6),0 8px 16px rgba(0,0,0,.4),inset 0 1px 0 hsla(0,0%,100%,.2)}.flash-message.dnd-suppressed{animation:flash-fade-in .3s ease-out;opacity:.3;transform:scale(.95);pointer-events:none}@keyframes flash-fade-in{0%{opacity:0;transform:scale(.9)}to{opacity:.3;transform:scale(.95)}}.dnd-counter{position:absolute;top:-.5rem;right:-.5rem;display:flex;height:1.25rem;width:1.25rem;align-items:center;justify-content:center;border-radius:9999px;--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1));font-size:.75rem;line-height:1rem;font-weight:700;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1));background:rgba(239,68,68,.9);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid hsla(0,0%,100%,.2);box-shadow:0 2px 4px rgba(0,0,0,.2);animation:dnd-counter-bounce .5s ease-out}@keyframes dnd-counter-bounce{0%{transform:scale(0)}50%{transform:scale(1.2)}to{transform:scale(1)}}@keyframes slide-down{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.mercedes-background:before{content:"";position:fixed;top:0;left:0;width:100%;height:100%;z-index:-1;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='80' height='80' fill='currentColor' opacity='.03'%3E%3Cpath d='M58.6 4.5C53 1.6 46.7 0 40 0S27 1.6 21.4 4.5C8.7 11.2 0 24.6 0 40s8.7 28.8 21.5 35.5C27 78.3 33.3 80 40 80s12.9-1.7 18.5-4.6C71.3 68.8 80 55.4 80 40S71.3 11.2 58.6 4.5M4 40c0-13.1 7-24.5 17.5-30.9C26.6 6 32.5 4.2 39 4l-4.5 32.7-13 10.1L8.3 57.1C5.6 52 4 46.2 4 40m54.6 30.8C53.1 74.1 46.8 76 40 76s-13.2-1.9-18.6-5.2c-4.9-2.9-8.9-6.9-11.9-11.7l11.9-4.9L40 46.6l18.6 7.5 12 4.9c-3 4.9-7.2 8.9-12 11.8m0-24-12.9-10L41.1 4c6.3.2 12.3 2 17.4 5.1C69 15.4 76 26.9 76 40c0 6.2-1.5 12-4.3 17.1z'/%3E%3C/svg%3E");background-position:50%;background-repeat:repeat;background-size:120px 120px;pointer-events:none;opacity:.03;transition:opacity .3s ease}.dark .mercedes-background:before{opacity:.015;filter:invert(1) brightness(.3);background-size:150px 150px}.navbar{position:sticky!important;top:0!important;z-index:50!important;width:100%!important;left:0!important;right:0!important;--navbar-blur:40px;--navbar-opacity:0.15;background:rgba(255,255,255,var(--navbar-opacity,.15))!important;backdrop-filter:blur(var(--navbar-blur,40px)) saturate(200%) brightness(110%) contrast(105%)!important;-webkit-backdrop-filter:blur(var(--navbar-blur,40px)) saturate(200%) brightness(110%) contrast(105%)!important;box-shadow:0 8px 32px rgba(0,0,0,.12),0 2px 8px rgba(0,0,0,.08),inset 0 1px 0 hsla(0,0%,100%,.3),0 0 0 1px hsla(0,0%,100%,.15)!important;border-bottom:1px solid hsla(0,0%,100%,.2)!important;transition:all .3s cubic-bezier(.4,0,.2,1)!important}.dark .navbar{--navbar-dark-opacity:0.25;background:rgba(0,0,0,var(--navbar-dark-opacity,.25))!important;backdrop-filter:blur(calc(var(--navbar-blur, 40px) + 5px)) saturate(180%) brightness(120%) contrast(115%)!important;-webkit-backdrop-filter:blur(calc(var(--navbar-blur, 40px) + 5px)) saturate(180%) brightness(120%) contrast(115%)!important;box-shadow:0 8px 32px rgba(0,0,0,.4),0 2px 8px rgba(0,0,0,.3),inset 0 1px 0 hsla(0,0%,100%,.15),0 0 0 1px hsla(0,0%,100%,.08)!important;border-bottom:1px solid hsla(0,0%,100%,.1)!important}.navbar.scrolled{--navbar-blur:50px;--navbar-opacity:0.25;background:rgba(255,255,255,var(--navbar-opacity,.25))!important;backdrop-filter:blur(var(--navbar-blur,50px)) saturate(220%) brightness(115%) contrast(110%)!important;-webkit-backdrop-filter:blur(var(--navbar-blur,50px)) saturate(220%) brightness(115%) contrast(110%)!important;box-shadow:0 12px 40px rgba(0,0,0,.15),0 4px 12px rgba(0,0,0,.1),inset 0 1px 0 hsla(0,0%,100%,.4),0 0 0 1px hsla(0,0%,100%,.2)!important}.dark .navbar.scrolled{--navbar-dark-opacity:0.35;background:rgba(0,0,0,var(--navbar-dark-opacity,.35))!important;backdrop-filter:blur(calc(var(--navbar-blur, 50px) + 5px)) saturate(200%) brightness(125%) contrast(120%)!important;-webkit-backdrop-filter:blur(calc(var(--navbar-blur, 50px) + 5px)) saturate(200%) brightness(125%) contrast(120%)!important;box-shadow:0 12px 40px rgba(0,0,0,.5),0 4px 12px rgba(0,0,0,.4),inset 0 1px 0 hsla(0,0%,100%,.2),0 0 0 1px hsla(0,0%,100%,.1)!important}.navbar-menu-new{display:flex;align-items:center;justify-content:center}.navbar-menu-new>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.125rem*var(--tw-space-x-reverse));margin-left:calc(.125rem*(1 - var(--tw-space-x-reverse)))}@media (min-width:768px){.navbar-menu-new>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.25rem*var(--tw-space-x-reverse));margin-left:calc(.25rem*(1 - var(--tw-space-x-reverse)))}}.navbar-menu-new{max-width:100%;overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none;background:hsla(0,0%,100%,.1);backdrop-filter:blur(25px) saturate(170%) brightness(108%);-webkit-backdrop-filter:blur(25px) saturate(170%) brightness(108%);border-radius:16px;padding:8px;margin:0 16px;border:1px solid hsla(0,0%,100%,.15);box-shadow:0 6px 20px rgba(0,0,0,.1),inset 0 1px 0 hsla(0,0%,100%,.2),0 0 0 1px hsla(0,0%,100%,.05);transition:all .3s cubic-bezier(.4,0,.2,1)}.dark .navbar-menu-new{background:rgba(0,0,0,.2);backdrop-filter:blur(30px) saturate(150%) brightness(115%);-webkit-backdrop-filter:blur(30px) saturate(150%) brightness(115%);border:1px solid hsla(0,0%,100%,.1);box-shadow:0 6px 20px rgba(0,0,0,.3),inset 0 1px 0 hsla(0,0%,100%,.1),0 0 0 1px hsla(0,0%,100%,.03)}.navbar-menu-new::-webkit-scrollbar{display:none}.navbar-menu-new:hover{backdrop-filter:blur(35px) saturate(190%) brightness(112%);-webkit-backdrop-filter:blur(35px) saturate(190%) brightness(112%);box-shadow:0 8px 25px rgba(0,0,0,.15),inset 0 1px 0 hsla(0,0%,100%,.3),0 0 0 1px hsla(0,0%,100%,.1);transform:translateY(-1px)}.dark .navbar-menu-new:hover{backdrop-filter:blur(40px) saturate(170%) brightness(120%);-webkit-backdrop-filter:blur(40px) saturate(170%) brightness(120%);box-shadow:0 8px 25px rgba(0,0,0,.4),inset 0 1px 0 hsla(0,0%,100%,.15),0 0 0 1px hsla(0,0%,100%,.05)}.nav-item{display:flex;align-items:center}.nav-item>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.375rem*var(--tw-space-x-reverse));margin-left:calc(.375rem*(1 - var(--tw-space-x-reverse)))}.nav-item{border-radius:.75rem;padding:.625rem .75rem;font-size:.875rem;line-height:1.25rem;font-weight:500;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s;color:rgba(15,23,42,.85);background:hsla(0,0%,100%,.08);backdrop-filter:blur(15px) saturate(140%);-webkit-backdrop-filter:blur(15px) saturate(140%);border:1px solid hsla(0,0%,100%,.1);box-shadow:0 4px 12px rgba(0,0,0,.05),inset 0 1px 0 hsla(0,0%,100%,.15);position:relative;overflow:hidden;animation:nav-item-entrance .6s ease-out}.nav-item:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.2),transparent);transition:left .5s}.nav-item:hover:before{left:100%}.nav-item:after{content:"";position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:conic-gradient(from 0deg at 50% 50%,transparent 0deg,hsla(0,0%,100%,.1) 30deg,transparent 60deg);opacity:0;transition:opacity .3s ease;pointer-events:none;animation:rotate 3s linear infinite}.nav-item:hover:after{opacity:1}.dark .nav-item{color:hsla(0,0%,100%,.85);background:rgba(0,0,0,.15);backdrop-filter:blur(20px) saturate(130%);-webkit-backdrop-filter:blur(20px) saturate(130%);border:1px solid hsla(0,0%,100%,.08);box-shadow:0 4px 12px rgba(0,0,0,.2),inset 0 1px 0 hsla(0,0%,100%,.08)}.nav-item:hover{color:#0f172a;background:hsla(0,0%,100%,.2);backdrop-filter:blur(25px) saturate(160%) brightness(110%);-webkit-backdrop-filter:blur(25px) saturate(160%) brightness(110%);border:1px solid hsla(0,0%,100%,.25);box-shadow:0 8px 20px rgba(0,0,0,.12),inset 0 1px 0 hsla(0,0%,100%,.3),0 0 0 1px hsla(0,0%,100%,.1);transform:translateY(-2px) scale(1.02)}.dark .nav-item:hover{color:#fff;background:rgba(0,0,0,.25);backdrop-filter:blur(30px) saturate(150%) brightness(120%);-webkit-backdrop-filter:blur(30px) saturate(150%) brightness(120%);border:1px solid hsla(0,0%,100%,.15);box-shadow:0 8px 20px rgba(0,0,0,.3),inset 0 1px 0 hsla(0,0%,100%,.15),0 0 0 1px hsla(0,0%,100%,.05)}.nav-item.active{color:#0f172a;background:hsla(0,0%,100%,.35);backdrop-filter:blur(35px) saturate(180%) brightness(115%);-webkit-backdrop-filter:blur(35px) saturate(180%) brightness(115%);border:1px solid hsla(0,0%,100%,.4);box-shadow:0 12px 24px rgba(0,0,0,.15),inset 0 1px 0 hsla(0,0%,100%,.5),0 0 0 1px rgba(59,130,246,.3);transform:translateY(-1px);animation:nav-item-active-glow 2s ease-in-out infinite alternate}.dark .nav-item.active{color:#fff;background:rgba(0,0,0,.4);backdrop-filter:blur(40px) saturate(160%) brightness(125%);-webkit-backdrop-filter:blur(40px) saturate(160%) brightness(125%);border:1px solid hsla(0,0%,100%,.2);box-shadow:0 12px 24px rgba(0,0,0,.4),inset 0 1px 0 hsla(0,0%,100%,.2),0 0 0 1px rgba(59,130,246,.2)}@keyframes nav-item-entrance{0%{opacity:0;transform:translateY(10px) scale(.95);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}to{opacity:1;transform:translateY(0) scale(1);-webkit-backdrop-filter:blur(15px) saturate(140%);backdrop-filter:blur(15px) saturate(140%)}}@keyframes nav-item-active-glow{0%{box-shadow:0 12px 24px rgba(0,0,0,.15),inset 0 1px 0 hsla(0,0%,100%,.5),0 0 0 1px rgba(59,130,246,.3)}to{box-shadow:0 16px 32px rgba(0,0,0,.2),inset 0 1px 0 hsla(0,0%,100%,.6),0 0 0 2px rgba(59,130,246,.5)}}@keyframes rotate{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.navbar:before{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:radial-gradient(circle at 20% 50%,hsla(0,0%,100%,.1) 1px,transparent 0),radial-gradient(circle at 80% 50%,hsla(0,0%,100%,.1) 1px,transparent 0),radial-gradient(circle at 40% 20%,hsla(0,0%,100%,.05) 1px,transparent 0),radial-gradient(circle at 60% 80%,hsla(0,0%,100%,.05) 1px,transparent 0);opacity:0;animation:glassmorphism-particles 8s ease-in-out infinite;pointer-events:none}.dark .navbar:before{background:radial-gradient(circle at 20% 50%,hsla(0,0%,100%,.05) 1px,transparent 0),radial-gradient(circle at 80% 50%,hsla(0,0%,100%,.05) 1px,transparent 0),radial-gradient(circle at 40% 20%,hsla(0,0%,100%,.03) 1px,transparent 0),radial-gradient(circle at 60% 80%,hsla(0,0%,100%,.03) 1px,transparent 0)}@keyframes glassmorphism-particles{0%,to{opacity:0;transform:scale(1)}50%{opacity:1;transform:scale(1.1)}}.dark-mode-toggle-new{position:relative;display:flex;cursor:pointer;align-items:center;justify-content:center;border-radius:9999px;padding:.5rem;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s;background:rgba(241,245,249,.8);border:1px solid hsla(0,0%,100%,.7);box-shadow:0 2px 8px rgba(0,0,0,.05),0 1px 2px rgba(0,0,0,.04);color:#334155;z-index:100}.dark-mode-toggle-new:hover{--tw-translate-y:-0.125rem;background:rgba(241,245,249,.9);box-shadow:0 8px 16px rgba(0,0,0,.08),0 2px 4px rgba(0,0,0,.06)}.dark-mode-toggle-new:active,.dark-mode-toggle-new:hover{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.dark-mode-toggle-new:active{--tw-scale-x:.95;--tw-scale-y:.95;transition:transform .1s}.dark .dark-mode-toggle-new{background:rgba(30,41,59,.8);border:1px solid hsla(0,0%,100%,.1);box-shadow:0 2px 8px rgba(0,0,0,.2),0 1px 2px rgba(0,0,0,.1);color:#e2e8f0}.dark .dark-mode-toggle-new:hover{background:rgba(30,41,59,.9);box-shadow:0 8px 16px rgba(0,0,0,.2),0 2px 4px rgba(0,0,0,.15)}.dark-mode-toggle-new .moon-icon,.dark-mode-toggle-new .sun-icon{position:absolute;top:50%;left:50%;--tw-translate-x:-50%;--tw-translate-y:-50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.dark-mode-toggle-new .moon-icon:not(.hidden),.dark-mode-toggle-new .sun-icon:not(.hidden){animation:spin-in .5s cubic-bezier(.25,1,.5,1) forwards}@keyframes spin-in{0%{opacity:0;transform:translateY(10px) scale(.7) rotate(20deg)}to{opacity:1;transform:translateY(0) scale(1) rotate(0)}}.dark .sun-icon{display:none}.dark .moon-icon,.sun-icon{display:block}.moon-icon{display:none}.user-menu-button-new{display:flex;align-items:center}.user-menu-button-new>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.375rem*var(--tw-space-x-reverse));margin-left:calc(.375rem*(1 - var(--tw-space-x-reverse)))}.user-menu-button-new{border-radius:.5rem;padding:.25rem;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s;background:rgba(241,245,249,.6);border:1px solid hsla(0,0%,100%,.6);box-shadow:0 2px 8px rgba(0,0,0,.04),0 1px 2px rgba(0,0,0,.02)}.user-menu-button-new:hover{--tw-translate-y:-0.125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));background:rgba(241,245,249,.8);box-shadow:0 8px 16px rgba(0,0,0,.06),0 2px 4px rgba(0,0,0,.04)}.dark .user-menu-button-new{background:rgba(30,41,59,.6);border:1px solid hsla(0,0%,100%,.08);box-shadow:0 2px 8px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.1)}.dark .user-menu-button-new:hover{background:rgba(30,41,59,.8);box-shadow:0 8px 16px rgba(0,0,0,.15),0 2px 4px rgba(0,0,0,.1)}.user-avatar-new{display:flex;height:1.75rem;width:1.75rem;align-items:center;justify-content:center;border-radius:9999px;font-size:.75rem;line-height:1rem;font-weight:600;--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1));--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s;background:linear-gradient(135deg,#000,#333);box-shadow:0 2px 4px rgba(0,0,0,.2),0 1px 2px rgba(0,0,0,.1)}.dark .user-avatar-new{background:linear-gradient(135deg,#f8fafc,#e2e8f0);color:#0f172a;box-shadow:0 2px 4px rgba(0,0,0,.3),0 1px 2px rgba(0,0,0,.2)}.login-button-new{display:flex;align-items:center;border-radius:.5rem;padding:.375rem .75rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s;background:#000;color:#fff;border:1px solid hsla(0,0%,100%,.1);box-shadow:0 2px 8px rgba(0,0,0,.1),0 1px 2px rgba(0,0,0,.08)}.login-button-new:hover{--tw-translate-y:-0.125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));background:#333;box-shadow:0 8px 16px rgba(0,0,0,.15),0 3px 4px rgba(0,0,0,.1)}.dark .login-button-new{background:#fff;color:#000;border:1px solid rgba(0,0,0,.1);box-shadow:0 2px 8px rgba(0,0,0,.2),0 1px 2px rgba(0,0,0,.15)}.dark .login-button-new:hover{background:#f1f5f9;box-shadow:0 8px 16px rgba(0,0,0,.25),0 3px 4px rgba(0,0,0,.2)}.mobile-menu-new{z-index:40;width:100%;overflow:hidden;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s;background:hsla(0,0%,100%,.8);backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);box-shadow:0 4px 20px rgba(0,0,0,.06);max-height:0;opacity:0}.mobile-menu-new,.mobile-menu-new.open{border-bottom:1px solid rgba(241,245,249,.8)}.mobile-menu-new.open{max-height:400px;opacity:1}.dark .mobile-menu-new{background:rgba(15,23,42,.8);box-shadow:0 4px 20px rgba(0,0,0,.2);border-bottom:1px solid rgba(30,41,59,.8)}.mobile-nav-item{display:flex;align-items:center}.mobile-nav-item>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.625rem*var(--tw-space-x-reverse));margin-left:calc(.625rem*(1 - var(--tw-space-x-reverse)))}.mobile-nav-item{border-radius:.5rem;padding:.625rem .75rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity,1));transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.mobile-nav-item:is(.dark *){--tw-text-opacity:1;color:rgb(226 232 240/var(--tw-text-opacity,1))}.mobile-nav-item:hover{background:rgba(241,245,249,.8)}.dark .mobile-nav-item:hover{background:rgba(30,41,59,.6)}.mobile-nav-item.active{background:rgba(241,245,249,.9);color:#000;font-weight:500}.dark .mobile-nav-item.active{background:rgba(30,41,59,.8);color:#fff}.mb-stat-card{background:linear-gradient(135deg,rgba(240,249,255,.6),rgba(230,242,255,.6));color:#0f172a;position:relative;overflow:hidden;border:none;border-radius:var(--card-radius);backdrop-filter:blur(20px) saturate(180%) brightness(110%);-webkit-backdrop-filter:blur(20px) saturate(180%) brightness(110%);box-shadow:0 25px 50px rgba(0,0,0,.15),0 0 0 1px hsla(0,0%,100%,.1);padding:1.5rem;margin:1rem;transition:transform .3s ease,box-shadow .3s ease}.dark .mb-stat-card{background:linear-gradient(135deg,rgba(0,0,0,.7),hsla(0,0%,4%,.7));color:var(--text-primary,#f8fafc);box-shadow:0 25px 50px rgba(0,0,0,.3),0 0 0 1px hsla(0,0%,100%,.05)}.job-card,.stats-card{border-radius:.75rem;border-width:1px;border-color:rgba(229,231,235,.7);background-color:hsla(0,0%,100%,.6);--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);--tw-backdrop-blur:blur(40px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.job-card:is(.dark *),.stats-card:is(.dark *){border-color:rgba(51,65,85,.2);background-color:rgba(0,0,0,.8)}.job-card,.stats-card{backdrop-filter:blur(24px) saturate(200%) brightness(120%);-webkit-backdrop-filter:blur(24px) saturate(200%) brightness(120%);box-shadow:0 25px 50px rgba(0,0,0,.2),0 0 0 1px hsla(0,0%,100%,.1);border-radius:var(--card-radius)}footer{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s;background:hsla(0,0%,100%,.1);backdrop-filter:blur(30px) saturate(180%) brightness(120%);-webkit-backdrop-filter:blur(30px) saturate(180%) brightness(120%);border-top:1px solid hsla(0,0%,100%,.2);box-shadow:0 -8px 32px rgba(0,0,0,.1),0 -2px 8px rgba(0,0,0,.05),inset 0 1px 0 hsla(0,0%,100%,.2),0 0 0 1px hsla(0,0%,100%,.05)}.dark footer{background:rgba(0,0,0,.3);backdrop-filter:blur(30px) saturate(160%) brightness(110%);-webkit-backdrop-filter:blur(30px) saturate(160%) brightness(110%);border-top:1px solid hsla(0,0%,100%,.1);box-shadow:0 -8px 32px rgba(0,0,0,.3),0 -2px 8px rgba(0,0,0,.2),inset 0 1px 0 hsla(0,0%,100%,.1),0 0 0 1px hsla(0,0%,100%,.03)}.dropdown-arrow{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.mercedes-star-bg{position:relative}.mercedes-star-bg:after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='80' height='80' fill='currentColor' opacity='.05'%3E%3Cpath d='M58.6 4.5C53 1.6 46.7 0 40 0S27 1.6 21.4 4.5C8.7 11.2 0 24.6 0 40s8.7 28.8 21.5 35.5C27 78.3 33.3 80 40 80s12.9-1.7 18.5-4.6C71.3 68.8 80 55.4 80 40S71.3 11.2 58.6 4.5M4 40c0-13.1 7-24.5 17.5-30.9C26.6 6 32.5 4.2 39 4l-4.5 32.7-13 10.1L8.3 57.1C5.6 52 4 46.2 4 40m54.6 30.8C53.1 74.1 46.8 76 40 76s-13.2-1.9-18.6-5.2c-4.9-2.9-8.9-6.9-11.9-11.7l11.9-4.9L40 46.6l18.6 7.5 12 4.9c-3 4.9-7.2 8.9-12 11.8m0-24-12.9-10L41.1 4c6.3.2 12.3 2 17.4 5.1C69 15.4 76 26.9 76 40c0 6.2-1.5 12-4.3 17.1z'/%3E%3C/svg%3E");background-position:50%;background-repeat:repeat;background-size:40px 40px;z-index:-1;opacity:.05}.dark .mercedes-star-bg:after{opacity:.02;filter:invert(1) brightness(.4)}.glass-effect{backdrop-filter:blur(20px) saturate(180%) brightness(110%);-webkit-backdrop-filter:blur(20px) saturate(180%) brightness(110%);background:hsla(0,0%,100%,.1);border:1px solid hsla(0,0%,100%,.2);box-shadow:0 8px 32px rgba(0,0,0,.1),inset 0 1px 0 hsla(0,0%,100%,.3)}.dark .glass-effect{background:rgba(0,0,0,.3);border:1px solid hsla(0,0%,100%,.1);box-shadow:0 8px 32px rgba(0,0,0,.3),inset 0 1px 0 hsla(0,0%,100%,.15)}.glass-hover{transition:all .3s cubic-bezier(.4,0,.2,1)}.glass-hover:hover{transform:translateY(-2px);backdrop-filter:blur(25px) saturate(200%) brightness(120%);-webkit-backdrop-filter:blur(25px) saturate(200%) brightness(120%);box-shadow:0 20px 40px rgba(0,0,0,.15),0 8px 16px rgba(0,0,0,.1),inset 0 1px 0 hsla(0,0%,100%,.4)}.dark .glass-hover:hover{box-shadow:0 20px 40px rgba(0,0,0,.4),0 8px 16px rgba(0,0,0,.3),inset 0 1px 0 hsla(0,0%,100%,.2)}.printer-card-new{position:relative;overflow:hidden;border-radius:.75rem;border-width:1px;border-color:rgba(229,231,235,.7);background-image:linear-gradient(to bottom right,var(--tw-gradient-stops));--tw-gradient-from:hsla(0,0%,100%,.9) var(--tw-gradient-from-position);--tw-gradient-to:hsla(0,0%,100%,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to);--tw-gradient-to:hsla(0,0%,100%,.7) var(--tw-gradient-to-position);padding:1.25rem;--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);--tw-backdrop-blur:blur(40px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.printer-card-new:hover{--tw-translate-y:-0.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.printer-card-new:is(.dark *){border-color:rgba(51,65,85,.3);--tw-gradient-from:rgba(30,41,59,.9) var(--tw-gradient-from-position);--tw-gradient-to:rgba(30,41,59,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to);--tw-gradient-to:rgba(15,23,42,.7) var(--tw-gradient-to-position)}.printer-card-new{box-shadow:0 20px 40px rgba(0,0,0,.08),0 10px 20px rgba(0,0,0,.06),0 0 0 1px hsla(0,0%,100%,.1);border-radius:var(--card-radius,1rem)}.dark .printer-card-new{box-shadow:0 20px 40px rgba(0,0,0,.4),0 10px 20px rgba(0,0,0,.3),0 0 0 1px hsla(0,0%,100%,.05)}.printer-card-new.online{--tw-border-opacity:1;border-color:rgb(187 247 208/var(--tw-border-opacity,1));background-image:linear-gradient(to bottom right,var(--tw-gradient-stops));--tw-gradient-from:rgba(240,253,244,.9) var(--tw-gradient-from-position);--tw-gradient-to:rgba(240,253,244,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to);--tw-gradient-to:rgba(236,253,245,.8) var(--tw-gradient-to-position)}.printer-card-new.online:is(.dark *){border-color:rgba(21,128,61,.5);--tw-gradient-from:rgba(20,83,45,.3) var(--tw-gradient-from-position);--tw-gradient-to:rgba(20,83,45,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to);--tw-gradient-to:rgba(6,78,59,.2) var(--tw-gradient-to-position)}.printer-card-new.online{box-shadow:0 20px 40px rgba(0,122,85,.08),0 10px 20px rgba(0,122,85,.06),0 0 0 1px rgba(209,250,229,.4)}.dark .printer-card-new.online{box-shadow:0 20px 40px rgba(0,0,0,.3),0 10px 20px rgba(0,0,0,.2),0 0 0 1px rgba(16,185,129,.2)}.status-badge-new{display:inline-flex;align-items:center}.status-badge-new>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.25rem*var(--tw-space-x-reverse));margin-left:calc(.25rem*(1 - var(--tw-space-x-reverse)))}.status-badge-new{border-radius:9999px;padding:.25rem .625rem;font-size:.75rem;line-height:1rem;font-weight:500;--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);background:hsla(0,0%,100%,.9);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);box-shadow:0 2px 5px rgba(0,0,0,.05)}.dark .status-badge-new{background:rgba(30,41,59,.7);box-shadow:0 2px 5px rgba(0,0,0,.2)}.status-badge-new.online{background-color:rgba(220,252,231,.9);--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity,1))}.status-badge-new.online:is(.dark *){background-color:rgba(20,83,45,.6);--tw-text-opacity:1;color:rgb(134 239 172/var(--tw-text-opacity,1))}.status-badge-new.offline{background-color:hsla(0,93%,94%,.9);--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity,1))}.status-badge-new.offline:is(.dark *){background-color:rgba(127,29,29,.6);--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.filter-bar-new{border-radius:.5rem;border-width:1px;border-color:rgba(229,231,235,.6);background-color:hsla(0,0%,100%,.8);padding:.375rem;--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);--tw-backdrop-blur:blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.filter-bar-new:is(.dark *){border-color:rgba(51,65,85,.3);background-color:rgba(30,41,59,.8)}.filter-bar-new{box-shadow:0 10px 25px rgba(0,0,0,.05),0 5px 10px rgba(0,0,0,.03),0 0 0 1px hsla(0,0%,100%,.2)}.dark .filter-bar-new{box-shadow:0 10px 25px rgba(0,0,0,.2),0 5px 10px rgba(0,0,0,.15),0 0 0 1px hsla(0,0%,100%,.05)}.filter-btn-new{border-radius:.375rem;padding:.5rem .875rem;font-size:.875rem;line-height:1.25rem;font-weight:500;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.filter-btn-new.active{--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1));--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.filter-btn-new.active:is(.dark *){--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1))}.filter-btn-new.active{box-shadow:0 4px 10px rgba(0,0,0,.1)}.dark .filter-btn-new.active{box-shadow:0 4px 10px rgba(0,0,0,.3)}.action-btn-new{display:flex;align-items:center;justify-content:center;gap:.5rem;border-radius:.5rem;padding:.625rem 1rem;font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.action-btn-new:hover{--tw-translate-y:-0.125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.action-btn-new{backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.action-btn-new.primary{--tw-bg-opacity:1;background-color:rgb(79 70 229/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.action-btn-new.primary:hover{--tw-bg-opacity:1;background-color:rgb(67 56 202/var(--tw-bg-opacity,1))}.action-btn-new.primary:is(.dark *){--tw-bg-opacity:1;background-color:rgb(79 70 229/var(--tw-bg-opacity,1))}.action-btn-new.primary:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(99 102 241/var(--tw-bg-opacity,1))}.action-btn-new.primary{box-shadow:0 5px 15px rgba(79,70,229,.2)}.dark .action-btn-new.primary{box-shadow:0 5px 15px rgba(79,70,229,.3)}.action-btn-new.success{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.action-btn-new.success:hover{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.action-btn-new.success:is(.dark *){--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.action-btn-new.success:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity,1))}.action-btn-new.success{box-shadow:0 5px 15px rgba(16,185,129,.2)}.dark .action-btn-new.success{box-shadow:0 5px 15px rgba(16,185,129,.3)}.action-btn-new.danger{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1));--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.action-btn-new.danger:hover{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.action-btn-new.danger:is(.dark *){--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.action-btn-new.danger:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.action-btn-new.danger{box-shadow:0 5px 15px rgba(239,68,68,.2)}.dark .action-btn-new.danger{box-shadow:0 5px 15px rgba(239,68,68,.3)}.printer-info-row{margin-bottom:.375rem;display:flex;align-items:center;gap:.5rem;font-size:.75rem;line-height:1rem;--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity,1))}.printer-info-row:is(.dark *){--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity,1))}@media (min-width:640px){.printer-info-row{font-size:.875rem;line-height:1.25rem}}.printer-info-icon{height:.875rem;width:.875rem;flex-shrink:0;--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity,1))}.printer-info-icon:is(.dark *){--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity,1))}@media (min-width:640px){.printer-info-icon{height:1rem;width:1rem}}.online-indicator{position:absolute;top:.625rem;right:.625rem;height:.75rem;width:.75rem;border-radius:9999px;--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity,1));--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:0 0 0 rgba(16,185,129,.6);animation:pulse-ring 2s cubic-bezier(.455,.03,.515,.955) infinite}@keyframes pulse-ring{0%{box-shadow:0 0 0 0 rgba(16,185,129,.6)}70%{box-shadow:0 0 0 6px rgba(16,185,129,0)}to{box-shadow:0 0 0 0 rgba(16,185,129,0)}}.status-overview-new{display:flex;flex-wrap:wrap;gap:.75rem;border-radius:.5rem;border-width:1px;border-color:rgba(229,231,235,.6);background-color:hsla(0,0%,100%,.6);padding:.75rem;font-size:.75rem;line-height:1rem;--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);--tw-backdrop-blur:blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.status-overview-new:is(.dark *){border-color:rgba(51,65,85,.3);background-color:rgba(30,41,59,.6)}@media (min-width:640px){.status-overview-new{font-size:.875rem;line-height:1.25rem}}.status-overview-new{box-shadow:0 10px 25px rgba(0,0,0,.04),0 5px 10px rgba(0,0,0,.02),0 0 0 1px hsla(0,0%,100%,.1)}.dark .status-overview-new{box-shadow:0 10px 25px rgba(0,0,0,.15),0 5px 10px rgba(0,0,0,.1),0 0 0 1px hsla(0,0%,100%,.03)}.status-dot{height:.625rem;width:.625rem;border-radius:9999px}.status-dot.online{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity,1));animation:pulse-dot 2s cubic-bezier(.455,.03,.515,.955) infinite}.status-dot.offline{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}@keyframes pulse-dot{0%{transform:scale(.95);opacity:1}50%{transform:scale(1.1);opacity:.8}to{transform:scale(.95);opacity:1}}.modal-new{position:fixed;inset:0;z-index:50;display:flex;align-items:center;justify-content:center;background-color:rgba(0,0,0,.4);padding:1rem;--tw-backdrop-blur:blur(4px)}.modal-content-new,.modal-new{-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.modal-content-new{width:100%;max-width:28rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));border-radius:1rem;border-width:1px;border-color:rgba(229,231,235,.6);background-color:hsla(0,0%,100%,.9);padding:1.5rem;--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);--tw-backdrop-blur:blur(40px);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.modal-content-new:is(.dark *){border-color:rgba(51,65,85,.3);background-color:rgba(30,41,59,.9)}.modal-content-new{box-shadow:0 25px 50px rgba(0,0,0,.15),0 15px 30px rgba(0,0,0,.1),0 20px 25px -5px rgba(0,0,0,.5),0 10px 10px -5px rgba(0,0,0,.3)}.user-dropdown-item{display:flex;cursor:pointer;align-items:center;padding:.75rem 1rem;font-size:.875rem;line-height:1.25rem;--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity,1));transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}.user-dropdown-item:hover{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity,1))}.user-dropdown-item:is(.dark *){--tw-text-opacity:1;color:rgb(226 232 240/var(--tw-text-opacity,1))}.user-dropdown-item:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.user-dropdown-item:first-child{border-top-left-radius:.75rem;border-top-right-radius:.75rem}.user-dropdown-item:last-child{border-bottom-right-radius:.75rem;border-bottom-left-radius:.75rem}.user-dropdown-item:hover{background:rgba(248,250,252,.8);transform:translateX(2px)}.dark .user-dropdown-item:hover{background:rgba(30,41,59,.8)}.user-dropdown-icon{margin-right:.75rem;height:1rem;width:1rem;--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity,1));transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.2s}.user-dropdown-icon:is(.dark *){--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity,1))}.user-dropdown-item:hover .user-dropdown-icon{--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity,1))}.user-dropdown-item:hover .user-dropdown-icon:is(.dark *){--tw-text-opacity:1;color:rgb(226 232 240/var(--tw-text-opacity,1))}.user-dropdown-divider{margin-top:.25rem;margin-bottom:.25rem;border-top-width:1px;--tw-border-opacity:1;border-color:rgb(226 232 240/var(--tw-border-opacity,1))}.user-dropdown-divider:is(.dark *){--tw-border-opacity:1;border-color:rgb(51 65 85/var(--tw-border-opacity,1))}.user-info-section{border-bottom-width:1px;--tw-border-opacity:1;border-color:rgb(226 232 240/var(--tw-border-opacity,1));padding:.75rem 1rem}.user-info-section:is(.dark *){--tw-border-opacity:1;border-color:rgb(51 65 85/var(--tw-border-opacity,1))}.user-info-section{background:rgba(248,250,252,.5)}.dark .user-info-section{background:rgba(30,41,59,.5)}.user-info-name{font-size:.875rem;line-height:1.25rem;font-weight:600;--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1))}.user-info-name:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.user-info-role{margin-top:.25rem;font-size:.75rem;line-height:1rem;--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity,1))}.user-info-role:is(.dark *){--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity,1))}.dark\:bg-dark-surface:is(.dark *){background-color:#1e293b}.hover\:-translate-y-0:hover{--tw-translate-y:-0px}.hover\:-translate-y-0:hover,.hover\:-translate-y-0\.5:hover{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:-translate-y-0\.5:hover{--tw-translate-y:-0.125rem}.hover\:-translate-y-1:hover{--tw-translate-y:-0.25rem}.hover\:-translate-y-1:hover,.hover\:-translate-y-2:hover{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:-translate-y-2:hover{--tw-translate-y:-0.5rem}.hover\:scale-105:hover{--tw-scale-x:1.05;--tw-scale-y:1.05}.hover\:scale-105:hover,.hover\:scale-110:hover{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:scale-110:hover{--tw-scale-x:1.1;--tw-scale-y:1.1}.hover\:border-blue-300:hover{--tw-border-opacity:1;border-color:rgb(147 197 253/var(--tw-border-opacity,1))}.hover\:border-blue-600:hover{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity,1))}.hover\:border-emerald-600:hover{--tw-border-opacity:1;border-color:rgb(5 150 105/var(--tw-border-opacity,1))}.hover\:bg-amber-100:hover{--tw-bg-opacity:1;background-color:rgb(254 243 199/var(--tw-bg-opacity,1))}.hover\:bg-black\/70:hover{background-color:rgba(0,0,0,.7)}.hover\:bg-blue-100:hover{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.hover\:bg-blue-200:hover{--tw-bg-opacity:1;background-color:rgb(191 219 254/var(--tw-bg-opacity,1))}.hover\:bg-blue-600:hover{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.hover\:bg-blue-700:hover{--tw-bg-opacity:1;background-color:rgb(29 78 216/var(--tw-bg-opacity,1))}.hover\:bg-emerald-700:hover{--tw-bg-opacity:1;background-color:rgb(4 120 87/var(--tw-bg-opacity,1))}.hover\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.hover\:bg-gray-100\/80:hover{background-color:rgba(243,244,246,.8)}.hover\:bg-gray-300:hover{--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity,1))}.hover\:bg-gray-400:hover{--tw-bg-opacity:1;background-color:rgb(156 163 175/var(--tw-bg-opacity,1))}.hover\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.hover\:bg-gray-600:hover{--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.hover\:bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.hover\:bg-gray-800:hover{--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.hover\:bg-green-100:hover{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1))}.hover\:bg-green-600:hover{--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.hover\:bg-green-700:hover{--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.hover\:bg-indigo-600:hover{--tw-bg-opacity:1;background-color:rgb(79 70 229/var(--tw-bg-opacity,1))}.hover\:bg-indigo-700:hover{--tw-bg-opacity:1;background-color:rgb(67 56 202/var(--tw-bg-opacity,1))}.hover\:bg-mercedes-silver:hover{--tw-bg-opacity:1;background-color:rgb(192 192 192/var(--tw-bg-opacity,1))}.hover\:bg-orange-600:hover{--tw-bg-opacity:1;background-color:rgb(234 88 12/var(--tw-bg-opacity,1))}.hover\:bg-orange-700:hover{--tw-bg-opacity:1;background-color:rgb(194 65 12/var(--tw-bg-opacity,1))}.hover\:bg-purple-600:hover{--tw-bg-opacity:1;background-color:rgb(147 51 234/var(--tw-bg-opacity,1))}.hover\:bg-purple-700:hover{--tw-bg-opacity:1;background-color:rgb(126 34 206/var(--tw-bg-opacity,1))}.hover\:bg-red-100:hover{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity,1))}.hover\:bg-red-50:hover{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.hover\:bg-red-600:hover{--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.hover\:bg-red-700:hover{--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.hover\:bg-slate-100:hover{--tw-bg-opacity:1;background-color:rgb(241 245 249/var(--tw-bg-opacity,1))}.hover\:bg-slate-100\/50:hover{background-color:rgba(241,245,249,.5)}.hover\:bg-slate-100\/80:hover{background-color:rgba(241,245,249,.8)}.hover\:bg-slate-200:hover{--tw-bg-opacity:1;background-color:rgb(226 232 240/var(--tw-bg-opacity,1))}.hover\:bg-slate-300:hover{--tw-bg-opacity:1;background-color:rgb(203 213 225/var(--tw-bg-opacity,1))}.hover\:bg-slate-50:hover{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity,1))}.hover\:bg-slate-600:hover{--tw-bg-opacity:1;background-color:rgb(71 85 105/var(--tw-bg-opacity,1))}.hover\:bg-slate-700:hover{--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity,1))}.hover\:bg-teal-600:hover{--tw-bg-opacity:1;background-color:rgb(13 148 136/var(--tw-bg-opacity,1))}.hover\:bg-white:hover{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.hover\:bg-white\/20:hover{background-color:hsla(0,0%,100%,.2)}.hover\:bg-white\/25:hover{background-color:hsla(0,0%,100%,.25)}.hover\:bg-yellow-600:hover{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity,1))}.hover\:bg-yellow-700:hover{--tw-bg-opacity:1;background-color:rgb(161 98 7/var(--tw-bg-opacity,1))}.hover\:from-blue-600:hover{--tw-gradient-from:#2563eb var(--tw-gradient-from-position);--tw-gradient-to:rgba(37,99,235,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.hover\:from-blue-700:hover{--tw-gradient-from:#1d4ed8 var(--tw-gradient-from-position);--tw-gradient-to:rgba(29,78,216,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.hover\:from-green-600:hover{--tw-gradient-from:#16a34a var(--tw-gradient-from-position);--tw-gradient-to:rgba(22,163,74,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.hover\:from-slate-600:hover{--tw-gradient-from:#475569 var(--tw-gradient-from-position);--tw-gradient-to:rgba(71,85,105,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.hover\:to-blue-700:hover{--tw-gradient-to:#1d4ed8 var(--tw-gradient-to-position)}.hover\:to-blue-800:hover{--tw-gradient-to:#1e40af var(--tw-gradient-to-position)}.hover\:to-green-700:hover{--tw-gradient-to:#15803d var(--tw-gradient-to-position)}.hover\:to-slate-700:hover{--tw-gradient-to:#334155 var(--tw-gradient-to-position)}.hover\:text-blue-500:hover{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.hover\:text-blue-600:hover{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.hover\:text-blue-700:hover{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity,1))}.hover\:text-blue-800:hover{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity,1))}.hover\:text-blue-900:hover{--tw-text-opacity:1;color:rgb(30 58 138/var(--tw-text-opacity,1))}.hover\:text-emerald-600:hover{--tw-text-opacity:1;color:rgb(5 150 105/var(--tw-text-opacity,1))}.hover\:text-gray-200:hover{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.hover\:text-gray-600:hover{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.hover\:text-gray-800:hover{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.hover\:text-gray-900:hover{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.hover\:text-green-900:hover{--tw-text-opacity:1;color:rgb(20 83 45/var(--tw-text-opacity,1))}.hover\:text-red-500:hover{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.hover\:text-red-700:hover{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.hover\:text-red-900:hover{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity,1))}.hover\:text-slate-700:hover{--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity,1))}.hover\:text-slate-800:hover{--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity,1))}.hover\:text-slate-900:hover{--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1))}.hover\:text-white:hover{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-2xl:hover{--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}.hover\:shadow-2xl:hover,.hover\:shadow-md:hover{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.hover\:shadow-xl:hover{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.focus\:z-10:focus{z-index:10}.focus\:border-blue-500:focus{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity,1))}.focus\:border-blue-600:focus{--tw-border-opacity:1;border-color:rgb(37 99 235/var(--tw-border-opacity,1))}.focus\:border-red-500:focus{--tw-border-opacity:1;border-color:rgb(239 68 68/var(--tw-border-opacity,1))}.focus\:border-transparent:focus{border-color:transparent}.focus\:bg-gray-100\/80:focus{background-color:rgba(243,244,246,.8)}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-1:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-1:focus,.focus\:ring-2:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-blue-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity,1))}.focus\:ring-blue-600:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(37 99 235/var(--tw-ring-opacity,1))}.focus\:ring-gray-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(107 114 128/var(--tw-ring-opacity,1))}.focus\:ring-green-400:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(74 222 128/var(--tw-ring-opacity,1))}.focus\:ring-green-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(34 197 94/var(--tw-ring-opacity,1))}.focus\:ring-red-400:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(248 113 113/var(--tw-ring-opacity,1))}.focus\:ring-red-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(239 68 68/var(--tw-ring-opacity,1))}.focus\:ring-slate-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(100 116 139/var(--tw-ring-opacity,1))}.focus\:ring-yellow-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(234 179 8/var(--tw-ring-opacity,1))}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px}.active\:scale-95:active{--tw-scale-x:.95;--tw-scale-y:.95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-gray-100:disabled{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.disabled\:opacity-50:disabled{opacity:.5}.group:focus-within .group-focus-within\:text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.group:hover .group-hover\:-translate-x-1{--tw-translate-x:-0.25rem}.group:hover .group-hover\:-translate-x-1,.group:hover .group-hover\:translate-x-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:translate-x-full{--tw-translate-x:100%}.group:hover .group-hover\:rotate-180{--tw-rotate:180deg}.group:hover .group-hover\:rotate-180,.group:hover .group-hover\:scale-105{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:scale-105{--tw-scale-x:1.05;--tw-scale-y:1.05}.group:hover .group-hover\:scale-110{--tw-scale-x:1.1;--tw-scale-y:1.1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:text-slate-600{--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity,1))}.group:hover .group-hover\:opacity-100{opacity:1}.group:active .group-active\:scale-95{--tw-scale-x:.95;--tw-scale-y:.95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.dark\:inline:is(.dark *){display:inline}.dark\:hidden:is(.dark *){display:none}.dark\:rotate-0:is(.dark *){--tw-rotate:0deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.dark\:rotate-90:is(.dark *){--tw-rotate:90deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.dark\:scale-100:is(.dark *){--tw-scale-x:1;--tw-scale-y:1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.dark\:scale-75:is(.dark *){--tw-scale-x:.75;--tw-scale-y:.75;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.dark\:divide-gray-700:is(.dark *)>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(55 65 81/var(--tw-divide-opacity,1))}.dark\:divide-slate-700:is(.dark *)>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgb(51 65 85/var(--tw-divide-opacity,1))}.dark\:border-blue-400:is(.dark *){--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity,1))}.dark\:border-blue-700:is(.dark *){--tw-border-opacity:1;border-color:rgb(29 78 216/var(--tw-border-opacity,1))}.dark\:border-blue-700\/30:is(.dark *){border-color:rgba(29,78,216,.3)}.dark\:border-blue-800:is(.dark *){--tw-border-opacity:1;border-color:rgb(30 64 175/var(--tw-border-opacity,1))}.dark\:border-blue-800\/50:is(.dark *){border-color:rgba(30,64,175,.5)}.dark\:border-emerald-700\/30:is(.dark *){border-color:rgba(4,120,87,.3)}.dark\:border-gray-600:is(.dark *){--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity,1))}.dark\:border-gray-700:is(.dark *){--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity,1))}.dark\:border-green-700:is(.dark *){--tw-border-opacity:1;border-color:rgb(21 128 61/var(--tw-border-opacity,1))}.dark\:border-green-800:is(.dark *){--tw-border-opacity:1;border-color:rgb(22 101 52/var(--tw-border-opacity,1))}.dark\:border-green-800\/50:is(.dark *){border-color:rgba(22,101,52,.5)}.dark\:border-indigo-800:is(.dark *){--tw-border-opacity:1;border-color:rgb(55 48 163/var(--tw-border-opacity,1))}.dark\:border-indigo-800\/50:is(.dark *){border-color:rgba(55,48,163,.5)}.dark\:border-orange-800:is(.dark *){--tw-border-opacity:1;border-color:rgb(154 52 18/var(--tw-border-opacity,1))}.dark\:border-orange-800\/50:is(.dark *){border-color:rgba(154,52,18,.5)}.dark\:border-purple-800\/50:is(.dark *){border-color:rgba(107,33,168,.5)}.dark\:border-red-700:is(.dark *){--tw-border-opacity:1;border-color:rgb(185 28 28/var(--tw-border-opacity,1))}.dark\:border-red-800:is(.dark *){--tw-border-opacity:1;border-color:rgb(153 27 27/var(--tw-border-opacity,1))}.dark\:border-red-800\/50:is(.dark *){border-color:rgba(153,27,27,.5)}.dark\:border-slate-600:is(.dark *){--tw-border-opacity:1;border-color:rgb(71 85 105/var(--tw-border-opacity,1))}.dark\:border-slate-600\/50:is(.dark *){border-color:rgba(71,85,105,.5)}.dark\:border-slate-600\/60:is(.dark *){border-color:rgba(71,85,105,.6)}.dark\:border-slate-700:is(.dark *){--tw-border-opacity:1;border-color:rgb(51 65 85/var(--tw-border-opacity,1))}.dark\:border-slate-700\/20:is(.dark *){border-color:rgba(51,65,85,.2)}.dark\:border-slate-700\/30:is(.dark *){border-color:rgba(51,65,85,.3)}.dark\:border-slate-700\/50:is(.dark *){border-color:rgba(51,65,85,.5)}.dark\:border-white:is(.dark *){--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}.dark\:border-white\/20:is(.dark *){border-color:hsla(0,0%,100%,.2)}.dark\:border-white\/70:is(.dark *){border-color:hsla(0,0%,100%,.7)}.dark\:border-yellow-700:is(.dark *){--tw-border-opacity:1;border-color:rgb(161 98 7/var(--tw-border-opacity,1))}.dark\:border-yellow-800:is(.dark *){--tw-border-opacity:1;border-color:rgb(133 77 14/var(--tw-border-opacity,1))}.dark\:border-t-slate-700:is(.dark *){--tw-border-opacity:1;border-top-color:rgb(51 65 85/var(--tw-border-opacity,1))}.dark\:bg-amber-600:is(.dark *){--tw-bg-opacity:1;background-color:rgb(217 119 6/var(--tw-bg-opacity,1))}.dark\:bg-black:is(.dark *){--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.dark\:bg-black\/50:is(.dark *){background-color:rgba(0,0,0,.5)}.dark\:bg-black\/70:is(.dark *){background-color:rgba(0,0,0,.7)}.dark\:bg-black\/80:is(.dark *){background-color:rgba(0,0,0,.8)}.dark\:bg-blue-300:is(.dark *){--tw-bg-opacity:1;background-color:rgb(147 197 253/var(--tw-bg-opacity,1))}.dark\:bg-blue-400:is(.dark *){--tw-bg-opacity:1;background-color:rgb(96 165 250/var(--tw-bg-opacity,1))}.dark\:bg-blue-500:is(.dark *){--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}.dark\:bg-blue-600:is(.dark *){--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.dark\:bg-blue-900:is(.dark *){--tw-bg-opacity:1;background-color:rgb(30 58 138/var(--tw-bg-opacity,1))}.dark\:bg-blue-900\/10:is(.dark *){background-color:rgba(30,58,138,.1)}.dark\:bg-blue-900\/20:is(.dark *){background-color:rgba(30,58,138,.2)}.dark\:bg-blue-900\/30:is(.dark *){background-color:rgba(30,58,138,.3)}.dark\:bg-blue-900\/50:is(.dark *){background-color:rgba(30,58,138,.5)}.dark\:bg-cyan-900\/50:is(.dark *){background-color:rgba(22,78,99,.5)}.dark\:bg-dark-surface:is(.dark *){--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.dark\:bg-emerald-900:is(.dark *){--tw-bg-opacity:1;background-color:rgb(6 78 59/var(--tw-bg-opacity,1))}.dark\:bg-emerald-900\/50:is(.dark *){background-color:rgba(6,78,59,.5)}.dark\:bg-gray-300:is(.dark *){--tw-bg-opacity:1;background-color:rgb(209 213 219/var(--tw-bg-opacity,1))}.dark\:bg-gray-600:is(.dark *){--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.dark\:bg-gray-700:is(.dark *){--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.dark\:bg-gray-800:is(.dark *){--tw-bg-opacity:1;background-color:rgb(31 41 55/var(--tw-bg-opacity,1))}.dark\:bg-gray-900:is(.dark *){--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}.dark\:bg-gray-900\/30:is(.dark *){background-color:rgba(17,24,39,.3)}.dark\:bg-green-300:is(.dark *){--tw-bg-opacity:1;background-color:rgb(134 239 172/var(--tw-bg-opacity,1))}.dark\:bg-green-600:is(.dark *){--tw-bg-opacity:1;background-color:rgb(22 163 74/var(--tw-bg-opacity,1))}.dark\:bg-green-700:is(.dark *){--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.dark\:bg-green-900:is(.dark *){--tw-bg-opacity:1;background-color:rgb(20 83 45/var(--tw-bg-opacity,1))}.dark\:bg-green-900\/10:is(.dark *){background-color:rgba(20,83,45,.1)}.dark\:bg-green-900\/20:is(.dark *){background-color:rgba(20,83,45,.2)}.dark\:bg-green-900\/30:is(.dark *){background-color:rgba(20,83,45,.3)}.dark\:bg-green-900\/50:is(.dark *){background-color:rgba(20,83,45,.5)}.dark\:bg-green-900\/60:is(.dark *){background-color:rgba(20,83,45,.6)}.dark\:bg-indigo-600:is(.dark *){--tw-bg-opacity:1;background-color:rgb(79 70 229/var(--tw-bg-opacity,1))}.dark\:bg-indigo-700:is(.dark *){--tw-bg-opacity:1;background-color:rgb(67 56 202/var(--tw-bg-opacity,1))}.dark\:bg-indigo-900\/10:is(.dark *){background-color:rgba(49,46,129,.1)}.dark\:bg-indigo-900\/20:is(.dark *){background-color:rgba(49,46,129,.2)}.dark\:bg-indigo-900\/30:is(.dark *){background-color:rgba(49,46,129,.3)}.dark\:bg-indigo-900\/50:is(.dark *){background-color:rgba(49,46,129,.5)}.dark\:bg-orange-300:is(.dark *){--tw-bg-opacity:1;background-color:rgb(253 186 116/var(--tw-bg-opacity,1))}.dark\:bg-orange-900:is(.dark *){--tw-bg-opacity:1;background-color:rgb(124 45 18/var(--tw-bg-opacity,1))}.dark\:bg-orange-900\/10:is(.dark *){background-color:rgba(124,45,18,.1)}.dark\:bg-orange-900\/30:is(.dark *){background-color:rgba(124,45,18,.3)}.dark\:bg-orange-900\/50:is(.dark *){background-color:rgba(124,45,18,.5)}.dark\:bg-purple-600:is(.dark *){--tw-bg-opacity:1;background-color:rgb(147 51 234/var(--tw-bg-opacity,1))}.dark\:bg-purple-900:is(.dark *){--tw-bg-opacity:1;background-color:rgb(88 28 135/var(--tw-bg-opacity,1))}.dark\:bg-purple-900\/10:is(.dark *){background-color:rgba(88,28,135,.1)}.dark\:bg-purple-900\/30:is(.dark *){background-color:rgba(88,28,135,.3)}.dark\:bg-purple-900\/50:is(.dark *){background-color:rgba(88,28,135,.5)}.dark\:bg-red-300:is(.dark *){--tw-bg-opacity:1;background-color:rgb(252 165 165/var(--tw-bg-opacity,1))}.dark\:bg-red-600:is(.dark *){--tw-bg-opacity:1;background-color:rgb(220 38 38/var(--tw-bg-opacity,1))}.dark\:bg-red-900:is(.dark *){--tw-bg-opacity:1;background-color:rgb(127 29 29/var(--tw-bg-opacity,1))}.dark\:bg-red-900\/10:is(.dark *){background-color:rgba(127,29,29,.1)}.dark\:bg-red-900\/20:is(.dark *){background-color:rgba(127,29,29,.2)}.dark\:bg-red-900\/30:is(.dark *){background-color:rgba(127,29,29,.3)}.dark\:bg-red-900\/50:is(.dark *){background-color:rgba(127,29,29,.5)}.dark\:bg-red-900\/60:is(.dark *){background-color:rgba(127,29,29,.6)}.dark\:bg-slate-600:is(.dark *){--tw-bg-opacity:1;background-color:rgb(71 85 105/var(--tw-bg-opacity,1))}.dark\:bg-slate-700:is(.dark *){--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity,1))}.dark\:bg-slate-700\/30:is(.dark *){background-color:rgba(51,65,85,.3)}.dark\:bg-slate-700\/40:is(.dark *){background-color:rgba(51,65,85,.4)}.dark\:bg-slate-700\/60:is(.dark *){background-color:rgba(51,65,85,.6)}.dark\:bg-slate-800:is(.dark *){--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.dark\:bg-slate-800\/50:is(.dark *){background-color:rgba(30,41,59,.5)}.dark\:bg-slate-800\/60:is(.dark *){background-color:rgba(30,41,59,.6)}.dark\:bg-slate-800\/80:is(.dark *){background-color:rgba(30,41,59,.8)}.dark\:bg-slate-800\/90:is(.dark *){background-color:rgba(30,41,59,.9)}.dark\:bg-slate-900:is(.dark *){--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity,1))}.dark\:bg-slate-900\/50:is(.dark *){background-color:rgba(15,23,42,.5)}.dark\:bg-slate-900\/60:is(.dark *){background-color:rgba(15,23,42,.6)}.dark\:bg-slate-900\/80:is(.dark *){background-color:rgba(15,23,42,.8)}.dark\:bg-slate-900\/90:is(.dark *){background-color:rgba(15,23,42,.9)}.dark\:bg-teal-900\/50:is(.dark *){background-color:rgba(19,78,74,.5)}.dark\:bg-white:is(.dark *){--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.dark\:bg-white\/10:is(.dark *){background-color:hsla(0,0%,100%,.1)}.dark\:bg-yellow-300:is(.dark *){--tw-bg-opacity:1;background-color:rgb(253 224 71/var(--tw-bg-opacity,1))}.dark\:bg-yellow-900:is(.dark *){--tw-bg-opacity:1;background-color:rgb(113 63 18/var(--tw-bg-opacity,1))}.dark\:bg-yellow-900\/20:is(.dark *){background-color:rgba(113,63,18,.2)}.dark\:bg-yellow-900\/30:is(.dark *){background-color:rgba(113,63,18,.3)}.dark\:bg-yellow-900\/50:is(.dark *){background-color:rgba(113,63,18,.5)}.dark\:bg-opacity-95:is(.dark *){--tw-bg-opacity:0.95}.dark\:from-blue-400:is(.dark *){--tw-gradient-from:#60a5fa var(--tw-gradient-from-position);--tw-gradient-to:rgba(96,165,250,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-blue-400\/20:is(.dark *){--tw-gradient-from:rgba(96,165,250,.2) var(--tw-gradient-from-position);--tw-gradient-to:rgba(96,165,250,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-blue-900\/10:is(.dark *){--tw-gradient-from:rgba(30,58,138,.1) var(--tw-gradient-from-position);--tw-gradient-to:rgba(30,58,138,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-blue-900\/20:is(.dark *){--tw-gradient-from:rgba(30,58,138,.2) var(--tw-gradient-from-position);--tw-gradient-to:rgba(30,58,138,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-blue-900\/30:is(.dark *){--tw-gradient-from:rgba(30,58,138,.3) var(--tw-gradient-from-position);--tw-gradient-to:rgba(30,58,138,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-emerald-900\/20:is(.dark *){--tw-gradient-from:rgba(6,78,59,.2) var(--tw-gradient-from-position);--tw-gradient-to:rgba(6,78,59,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-green-400:is(.dark *){--tw-gradient-from:#4ade80 var(--tw-gradient-from-position);--tw-gradient-to:rgba(74,222,128,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-green-400\/20:is(.dark *){--tw-gradient-from:rgba(74,222,128,.2) var(--tw-gradient-from-position);--tw-gradient-to:rgba(74,222,128,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-green-900\/10:is(.dark *){--tw-gradient-from:rgba(20,83,45,.1) var(--tw-gradient-from-position);--tw-gradient-to:rgba(20,83,45,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-green-900\/20:is(.dark *){--tw-gradient-from:rgba(20,83,45,.2) var(--tw-gradient-from-position);--tw-gradient-to:rgba(20,83,45,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-green-900\/30:is(.dark *){--tw-gradient-from:rgba(20,83,45,.3) var(--tw-gradient-from-position);--tw-gradient-to:rgba(20,83,45,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-orange-400:is(.dark *){--tw-gradient-from:#fb923c var(--tw-gradient-from-position);--tw-gradient-to:rgba(251,146,60,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-orange-400\/20:is(.dark *){--tw-gradient-from:rgba(251,146,60,.2) var(--tw-gradient-from-position);--tw-gradient-to:rgba(251,146,60,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-orange-900\/10:is(.dark *){--tw-gradient-from:rgba(124,45,18,.1) var(--tw-gradient-from-position);--tw-gradient-to:rgba(124,45,18,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-purple-900\/20:is(.dark *){--tw-gradient-from:rgba(88,28,135,.2) var(--tw-gradient-from-position);--tw-gradient-to:rgba(88,28,135,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-purple-900\/30:is(.dark *){--tw-gradient-from:rgba(88,28,135,.3) var(--tw-gradient-from-position);--tw-gradient-to:rgba(88,28,135,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-red-400:is(.dark *){--tw-gradient-from:#f87171 var(--tw-gradient-from-position);--tw-gradient-to:hsla(0,91%,71%,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-red-400\/20:is(.dark *){--tw-gradient-from:hsla(0,91%,71%,.2) var(--tw-gradient-from-position);--tw-gradient-to:hsla(0,91%,71%,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-slate-800\/90:is(.dark *){--tw-gradient-from:rgba(30,41,59,.9) var(--tw-gradient-from-position);--tw-gradient-to:rgba(30,41,59,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-slate-900:is(.dark *){--tw-gradient-from:#0f172a var(--tw-gradient-from-position);--tw-gradient-to:rgba(15,23,42,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-slate-950:is(.dark *){--tw-gradient-from:#020617 var(--tw-gradient-from-position);--tw-gradient-to:rgba(2,6,23,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-white:is(.dark *){--tw-gradient-from:#fff var(--tw-gradient-from-position);--tw-gradient-to:hsla(0,0%,100%,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:via-blue-200:is(.dark *){--tw-gradient-to:rgba(191,219,254,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#bfdbfe var(--tw-gradient-via-position),var(--tw-gradient-to)}.dark\:via-blue-900:is(.dark *){--tw-gradient-to:rgba(30,58,138,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#1e3a8a var(--tw-gradient-via-position),var(--tw-gradient-to)}.dark\:via-blue-900\/20:is(.dark *){--tw-gradient-to:rgba(30,58,138,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),rgba(30,58,138,.2) var(--tw-gradient-via-position),var(--tw-gradient-to)}.dark\:via-blue-950:is(.dark *){--tw-gradient-to:rgba(23,37,84,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#172554 var(--tw-gradient-via-position),var(--tw-gradient-to)}.dark\:via-emerald-900\/20:is(.dark *){--tw-gradient-to:rgba(6,78,59,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),rgba(6,78,59,.2) var(--tw-gradient-via-position),var(--tw-gradient-to)}.dark\:via-red-900\/20:is(.dark *){--tw-gradient-to:rgba(127,29,29,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),rgba(127,29,29,.2) var(--tw-gradient-via-position),var(--tw-gradient-to)}.dark\:via-slate-800:is(.dark *){--tw-gradient-to:rgba(30,41,59,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#1e293b var(--tw-gradient-via-position),var(--tw-gradient-to)}.dark\:to-blue-500:is(.dark *){--tw-gradient-to:#3b82f6 var(--tw-gradient-to-position)}.dark\:to-blue-800\/30:is(.dark *){--tw-gradient-to:rgba(30,64,175,.3) var(--tw-gradient-to-position)}.dark\:to-emerald-400\/20:is(.dark *){--tw-gradient-to:rgba(52,211,153,.2) var(--tw-gradient-to-position)}.dark\:to-emerald-900\/10:is(.dark *){--tw-gradient-to:rgba(6,78,59,.1) var(--tw-gradient-to-position)}.dark\:to-emerald-900\/20:is(.dark *){--tw-gradient-to:rgba(6,78,59,.2) var(--tw-gradient-to-position)}.dark\:to-gray-200:is(.dark *){--tw-gradient-to:#e5e7eb var(--tw-gradient-to-position)}.dark\:to-green-500:is(.dark *){--tw-gradient-to:#22c55e var(--tw-gradient-to-position)}.dark\:to-green-800\/30:is(.dark *){--tw-gradient-to:rgba(22,101,52,.3) var(--tw-gradient-to-position)}.dark\:to-green-900\/20:is(.dark *){--tw-gradient-to:rgba(20,83,45,.2) var(--tw-gradient-to-position)}.dark\:to-indigo-400\/20:is(.dark *){--tw-gradient-to:rgba(129,140,248,.2) var(--tw-gradient-to-position)}.dark\:to-indigo-900:is(.dark *){--tw-gradient-to:#312e81 var(--tw-gradient-to-position)}.dark\:to-indigo-900\/10:is(.dark *){--tw-gradient-to:rgba(49,46,129,.1) var(--tw-gradient-to-position)}.dark\:to-indigo-900\/20:is(.dark *){--tw-gradient-to:rgba(49,46,129,.2) var(--tw-gradient-to-position)}.dark\:to-indigo-950:is(.dark *){--tw-gradient-to:#1e1b4b var(--tw-gradient-to-position)}.dark\:to-orange-500:is(.dark *){--tw-gradient-to:#f97316 var(--tw-gradient-to-position)}.dark\:to-orange-900\/20:is(.dark *){--tw-gradient-to:rgba(124,45,18,.2) var(--tw-gradient-to-position)}.dark\:to-pink-400\/20:is(.dark *){--tw-gradient-to:rgba(244,114,182,.2) var(--tw-gradient-to-position)}.dark\:to-pink-900\/20:is(.dark *){--tw-gradient-to:rgba(131,24,67,.2) var(--tw-gradient-to-position)}.dark\:to-purple-500:is(.dark *){--tw-gradient-to:#a855f7 var(--tw-gradient-to-position)}.dark\:to-purple-800\/30:is(.dark *){--tw-gradient-to:rgba(107,33,168,.3) var(--tw-gradient-to-position)}.dark\:to-red-400\/20:is(.dark *){--tw-gradient-to:hsla(0,91%,71%,.2) var(--tw-gradient-to-position)}.dark\:to-red-500:is(.dark *){--tw-gradient-to:#ef4444 var(--tw-gradient-to-position)}.dark\:to-red-900\/10:is(.dark *){--tw-gradient-to:rgba(127,29,29,.1) var(--tw-gradient-to-position)}.dark\:to-slate-200:is(.dark *){--tw-gradient-to:#e2e8f0 var(--tw-gradient-to-position)}.dark\:to-slate-900:is(.dark *){--tw-gradient-to:#0f172a var(--tw-gradient-to-position)}.dark\:to-slate-900\/70:is(.dark *){--tw-gradient-to:rgba(15,23,42,.7) var(--tw-gradient-to-position)}.dark\:text-amber-400:is(.dark *){--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity,1))}.dark\:text-blue-100:is(.dark *){--tw-text-opacity:1;color:rgb(219 234 254/var(--tw-text-opacity,1))}.dark\:text-blue-200:is(.dark *){--tw-text-opacity:1;color:rgb(191 219 254/var(--tw-text-opacity,1))}.dark\:text-blue-300:is(.dark *){--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity,1))}.dark\:text-blue-400:is(.dark *){--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity,1))}.dark\:text-blue-500:is(.dark *){--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.dark\:text-cyan-400:is(.dark *){--tw-text-opacity:1;color:rgb(34 211 238/var(--tw-text-opacity,1))}.dark\:text-emerald-300:is(.dark *){--tw-text-opacity:1;color:rgb(110 231 183/var(--tw-text-opacity,1))}.dark\:text-emerald-400:is(.dark *){--tw-text-opacity:1;color:rgb(52 211 153/var(--tw-text-opacity,1))}.dark\:text-gray-100:is(.dark *){--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity,1))}.dark\:text-gray-200:is(.dark *){--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.dark\:text-gray-300:is(.dark *){--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.dark\:text-gray-400:is(.dark *){--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.dark\:text-gray-500:is(.dark *){--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.dark\:text-gray-600:is(.dark *){--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.dark\:text-green-100:is(.dark *){--tw-text-opacity:1;color:rgb(220 252 231/var(--tw-text-opacity,1))}.dark\:text-green-200:is(.dark *){--tw-text-opacity:1;color:rgb(187 247 208/var(--tw-text-opacity,1))}.dark\:text-green-300:is(.dark *){--tw-text-opacity:1;color:rgb(134 239 172/var(--tw-text-opacity,1))}.dark\:text-green-400:is(.dark *){--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity,1))}.dark\:text-indigo-200:is(.dark *){--tw-text-opacity:1;color:rgb(199 210 254/var(--tw-text-opacity,1))}.dark\:text-indigo-300:is(.dark *){--tw-text-opacity:1;color:rgb(165 180 252/var(--tw-text-opacity,1))}.dark\:text-indigo-400:is(.dark *){--tw-text-opacity:1;color:rgb(129 140 248/var(--tw-text-opacity,1))}.dark\:text-orange-200:is(.dark *){--tw-text-opacity:1;color:rgb(254 215 170/var(--tw-text-opacity,1))}.dark\:text-orange-300:is(.dark *){--tw-text-opacity:1;color:rgb(253 186 116/var(--tw-text-opacity,1))}.dark\:text-orange-400:is(.dark *){--tw-text-opacity:1;color:rgb(251 146 60/var(--tw-text-opacity,1))}.dark\:text-purple-200:is(.dark *){--tw-text-opacity:1;color:rgb(233 213 255/var(--tw-text-opacity,1))}.dark\:text-purple-300:is(.dark *){--tw-text-opacity:1;color:rgb(216 180 254/var(--tw-text-opacity,1))}.dark\:text-purple-400:is(.dark *){--tw-text-opacity:1;color:rgb(192 132 252/var(--tw-text-opacity,1))}.dark\:text-red-100:is(.dark *){--tw-text-opacity:1;color:rgb(254 226 226/var(--tw-text-opacity,1))}.dark\:text-red-200:is(.dark *){--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity,1))}.dark\:text-red-300:is(.dark *){--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.dark\:text-red-400:is(.dark *){--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.dark\:text-red-600:is(.dark *){--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.dark\:text-slate-100:is(.dark *){--tw-text-opacity:1;color:rgb(241 245 249/var(--tw-text-opacity,1))}.dark\:text-slate-200:is(.dark *){--tw-text-opacity:1;color:rgb(226 232 240/var(--tw-text-opacity,1))}.dark\:text-slate-300:is(.dark *){--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity,1))}.dark\:text-slate-400:is(.dark *){--tw-text-opacity:1;color:rgb(148 163 184/var(--tw-text-opacity,1))}.dark\:text-slate-500:is(.dark *){--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity,1))}.dark\:text-slate-600:is(.dark *){--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity,1))}.dark\:text-slate-900:is(.dark *){--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1))}.dark\:text-teal-400:is(.dark *){--tw-text-opacity:1;color:rgb(45 212 191/var(--tw-text-opacity,1))}.dark\:text-white:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.dark\:text-yellow-200:is(.dark *){--tw-text-opacity:1;color:rgb(254 240 138/var(--tw-text-opacity,1))}.dark\:text-yellow-300:is(.dark *){--tw-text-opacity:1;color:rgb(253 224 71/var(--tw-text-opacity,1))}.dark\:text-yellow-400:is(.dark *){--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity,1))}.dark\:placeholder-slate-400:is(.dark *)::-moz-placeholder{--tw-placeholder-opacity:1;color:rgb(148 163 184/var(--tw-placeholder-opacity,1))}.dark\:placeholder-slate-400:is(.dark *)::placeholder{--tw-placeholder-opacity:1;color:rgb(148 163 184/var(--tw-placeholder-opacity,1))}.dark\:opacity-0:is(.dark *){opacity:0}.dark\:opacity-100:is(.dark *){opacity:1}.dark\:opacity-5:is(.dark *){opacity:.05}.dark\:shadow-2xl:is(.dark *){--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.dark\:shadow-slate-900\/20:is(.dark *){--tw-shadow-color:rgba(15,23,42,.2);--tw-shadow:var(--tw-shadow-colored)}.dark\:hover\:border-blue-400:hover:is(.dark *){--tw-border-opacity:1;border-color:rgb(96 165 250/var(--tw-border-opacity,1))}.dark\:hover\:border-blue-500:hover:is(.dark *){--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity,1))}.dark\:hover\:border-emerald-400:hover:is(.dark *){--tw-border-opacity:1;border-color:rgb(52 211 153/var(--tw-border-opacity,1))}.dark\:hover\:bg-blue-500:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}.dark\:hover\:bg-blue-600:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.dark\:hover\:bg-blue-700:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(29 78 216/var(--tw-bg-opacity,1))}.dark\:hover\:bg-blue-800:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(30 64 175/var(--tw-bg-opacity,1))}.dark\:hover\:bg-gray-500:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(107 114 128/var(--tw-bg-opacity,1))}.dark\:hover\:bg-gray-600:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(75 85 99/var(--tw-bg-opacity,1))}.dark\:hover\:bg-gray-700:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(55 65 81/var(--tw-bg-opacity,1))}.dark\:hover\:bg-green-500:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity,1))}.dark\:hover\:bg-green-700:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(21 128 61/var(--tw-bg-opacity,1))}.dark\:hover\:bg-purple-700:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(126 34 206/var(--tw-bg-opacity,1))}.dark\:hover\:bg-red-500:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}.dark\:hover\:bg-red-700:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(185 28 28/var(--tw-bg-opacity,1))}.dark\:hover\:bg-red-900\/20:hover:is(.dark *){background-color:rgba(127,29,29,.2)}.dark\:hover\:bg-slate-500:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(100 116 139/var(--tw-bg-opacity,1))}.dark\:hover\:bg-slate-600:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(71 85 105/var(--tw-bg-opacity,1))}.dark\:hover\:bg-slate-700:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(51 65 85/var(--tw-bg-opacity,1))}.dark\:hover\:bg-slate-700\/50:hover:is(.dark *){background-color:rgba(51,65,85,.5)}.dark\:hover\:bg-slate-700\/60:hover:is(.dark *){background-color:rgba(51,65,85,.6)}.dark\:hover\:bg-slate-800:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.dark\:hover\:bg-slate-800\/50:hover:is(.dark *){background-color:rgba(30,41,59,.5)}.dark\:hover\:bg-white\/15:hover:is(.dark *){background-color:hsla(0,0%,100%,.15)}.dark\:hover\:bg-white\/70:hover:is(.dark *){background-color:hsla(0,0%,100%,.7)}.dark\:hover\:text-blue-200:hover:is(.dark *){--tw-text-opacity:1;color:rgb(191 219 254/var(--tw-text-opacity,1))}.dark\:hover\:text-blue-300:hover:is(.dark *){--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity,1))}.dark\:hover\:text-blue-400:hover:is(.dark *){--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity,1))}.dark\:hover\:text-emerald-400:hover:is(.dark *){--tw-text-opacity:1;color:rgb(52 211 153/var(--tw-text-opacity,1))}.dark\:hover\:text-gray-200:hover:is(.dark *){--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.dark\:hover\:text-gray-300:hover:is(.dark *){--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.dark\:hover\:text-green-300:hover:is(.dark *){--tw-text-opacity:1;color:rgb(134 239 172/var(--tw-text-opacity,1))}.dark\:hover\:text-red-200:hover:is(.dark *){--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity,1))}.dark\:hover\:text-red-300:hover:is(.dark *){--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.dark\:hover\:text-slate-200:hover:is(.dark *){--tw-text-opacity:1;color:rgb(226 232 240/var(--tw-text-opacity,1))}.dark\:hover\:text-slate-300:hover:is(.dark *){--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity,1))}.dark\:hover\:text-slate-900:hover:is(.dark *){--tw-text-opacity:1;color:rgb(15 23 42/var(--tw-text-opacity,1))}.dark\:hover\:text-white:hover:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.dark\:hover\:shadow-slate-900\/50:hover:is(.dark *){--tw-shadow-color:rgba(15,23,42,.5);--tw-shadow:var(--tw-shadow-colored)}.dark\:focus\:ring-blue-400:focus:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgb(96 165 250/var(--tw-ring-opacity,1))}.dark\:disabled\:bg-slate-800:disabled:is(.dark *){--tw-bg-opacity:1;background-color:rgb(30 41 59/var(--tw-bg-opacity,1))}.group:hover .dark\:group-hover\:text-slate-300:is(.dark *){--tw-text-opacity:1;color:rgb(203 213 225/var(--tw-text-opacity,1))}@media (min-width:640px){.sm\:mx-0{margin-left:0;margin-right:0}.sm\:my-8{margin-top:2rem;margin-bottom:2rem}.sm\:ml-3{margin-left:.75rem}.sm\:ml-4{margin-left:1rem}.sm\:mt-0{margin-top:0}.sm\:mt-12{margin-top:3rem}.sm\:block{display:block}.sm\:inline{display:inline}.sm\:flex{display:flex}.sm\:h-10{height:2.5rem}.sm\:h-4{height:1rem}.sm\:h-5{height:1.25rem}.sm\:h-6{height:1.5rem}.sm\:w-10{width:2.5rem}.sm\:w-4{width:1rem}.sm\:w-5{width:1.25rem}.sm\:w-6{width:1.5rem}.sm\:w-80{width:20rem}.sm\:w-auto{width:auto}.sm\:w-full{width:100%}.sm\:max-w-lg{max-width:32rem}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:flex-row-reverse{flex-direction:row-reverse}.sm\:items-start{align-items:flex-start}.sm\:justify-center{justify-content:center}.sm\:gap-8{gap:2rem}.sm\:space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.75rem*var(--tw-space-x-reverse));margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)))}.sm\:space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1rem*var(--tw-space-x-reverse));margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)))}.sm\:space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(0px*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px*var(--tw-space-y-reverse))}.sm\:p-0{padding:0}.sm\:p-6{padding:1.5rem}.sm\:px-4{padding-left:1rem;padding-right:1rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-8{padding-top:2rem;padding-bottom:2rem}.sm\:pb-4{padding-bottom:1rem}.sm\:pt-8{padding-top:2rem}.sm\:text-left{text-align:left}.sm\:align-middle{vertical-align:middle}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}}@media (min-width:768px){.md\:col-span-2{grid-column:span 2/span 2}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}.md\:justify-between{justify-content:space-between}.md\:space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.75rem*var(--tw-space-x-reverse));margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)))}.md\:p-12{padding:3rem}.md\:text-2xl{font-size:1.5rem;line-height:2rem}.md\:text-4xl{font-size:2.25rem;line-height:2.5rem}.md\:text-5xl{font-size:3rem;line-height:1}.md\:text-6xl{font-size:3.75rem;line-height:1}.md\:text-8xl{font-size:6rem;line-height:1}.md\:text-xl{font-size:1.25rem;line-height:1.75rem}}@media (min-width:1024px){.lg\:col-span-2{grid-column:span 2/span 2}.lg\:col-span-3{grid-column:span 3/span 3}.lg\:mt-0{margin-top:0}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:h-20{height:5rem}.lg\:h-7{height:1.75rem}.lg\:w-7{width:1.75rem}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}.lg\:items-center{align-items:center}.lg\:justify-between{justify-content:space-between}.lg\:space-x-6>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1.5rem*var(--tw-space-x-reverse));margin-left:calc(1.5rem*(1 - var(--tw-space-x-reverse)))}.lg\:space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(0px*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px*var(--tw-space-y-reverse))}.lg\:p-12{padding:3rem}.lg\:px-6{padding-left:1.5rem;padding-right:1.5rem}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:text-right{text-align:right}.lg\:text-6xl{font-size:3.75rem;line-height:1}.lg\:text-base{font-size:1rem;line-height:1.5rem}}@media (min-width:1280px){.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xl\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}} \ No newline at end of file diff --git a/backend/static/js/admin-unified.js b/backend/static/js/admin-unified.js index bcace331..bd72bc78 100644 --- a/backend/static/js/admin-unified.js +++ b/backend/static/js/admin-unified.js @@ -422,20 +422,298 @@ class AdminDashboard { } // User-Management - showUserModal() { - console.log('👤 Benutzer-Modal wird angezeigt'); - this.showNotification('Benutzer-Funktionen werden geladen...', 'info'); + showUserModal(userId = null) { + const isEdit = userId !== null; + const title = isEdit ? 'Benutzer bearbeiten' : 'Neuer Benutzer'; + + // Modal HTML erstellen + const modalHtml = ` +
+
+
+

${title}

+ +
+ +
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ + ${isEdit ? ` +
+ + +
+ ` : ''} + +
+ + +
+
+
+
+ `; + + // Modal zum DOM hinzufügen + document.body.insertAdjacentHTML('beforeend', modalHtml); + + // Event-Listener für das Formular + const form = document.getElementById('user-form'); + form.addEventListener('submit', (e) => { + e.preventDefault(); + e.stopPropagation(); + + if (isEdit) { + this.updateUser(userId, new FormData(form)); + } else { + this.createUser(new FormData(form)); + } + }); + + // Bei Bearbeitung: Benutzer-Daten laden + if (isEdit) { + this.loadUserData(userId); + } + + // Fokus auf erstes Eingabefeld + setTimeout(() => { + document.getElementById('user-email').focus(); + }, 100); } + async loadUserData(userId) { + try { + const response = await fetch(`${this.apiBaseUrl}/api/admin/users/${userId}`); + + if (!response.ok) { + throw new Error(`HTTP ${response.status}: ${response.statusText}`); + } + + const data = await response.json(); + + if (data.success) { + const user = data.user; + + // Formular mit Benutzerdaten füllen + document.getElementById('user-email').value = user.email || ''; + document.getElementById('user-username').value = user.username || ''; + document.getElementById('user-name').value = user.name || ''; + document.getElementById('user-role').value = user.is_admin ? 'admin' : 'user'; + + const activeCheckbox = document.getElementById('user-active'); + if (activeCheckbox) { + activeCheckbox.checked = user.is_active !== false; + } + } else { + this.showNotification('❌ Fehler beim Laden der Benutzerdaten', 'error'); + } + } catch (error) { + console.error('Fehler beim Laden der Benutzerdaten:', error); + this.showNotification('❌ Fehler beim Laden der Benutzerdaten', 'error'); + } + } + + async createUser(formData) { + const submitBtn = document.getElementById('user-submit-btn'); + const originalText = submitBtn.innerHTML; + + try { + // Loading-Zustand + submitBtn.innerHTML = '
'; + submitBtn.disabled = true; + + // FormData zu JSON konvertieren + const userData = { + email: formData.get('email'), + username: formData.get('username') || formData.get('email').split('@')[0], + name: formData.get('name'), + password: formData.get('password'), + is_admin: formData.get('role') === 'admin' + }; + + const response = await fetch(`${this.apiBaseUrl}/api/admin/users`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'X-CSRFToken': this.csrfToken + }, + body: JSON.stringify(userData) + }); + + const data = await response.json(); + + if (data.success) { + this.showNotification('✅ Benutzer erfolgreich erstellt!', 'success'); + document.getElementById('user-modal').remove(); + + // Seite nach 1 Sekunde neu laden um neue Benutzerliste zu zeigen + setTimeout(() => { + window.location.reload(); + }, 1000); + } else { + this.showNotification(`❌ Fehler: ${data.error}`, 'error'); + } + + } catch (error) { + console.error('Fehler beim Erstellen des Benutzers:', error); + this.showNotification('❌ Fehler beim Erstellen des Benutzers', 'error'); + } finally { + // Button zurücksetzen + submitBtn.innerHTML = originalText; + submitBtn.disabled = false; + } + } + + async updateUser(userId, formData) { + const submitBtn = document.getElementById('user-submit-btn'); + const originalText = submitBtn.innerHTML; + + try { + // Loading-Zustand + submitBtn.innerHTML = '
'; + submitBtn.disabled = true; + + // FormData zu JSON konvertieren + const userData = { + email: formData.get('email'), + username: formData.get('username'), + name: formData.get('name'), + is_admin: formData.get('role') === 'admin', + is_active: formData.get('is_active') === 'on' + }; + + // Passwort nur hinzufügen wenn es gesetzt wurde + const password = formData.get('password'); + if (password && password.trim()) { + userData.password = password; + } + + const response = await fetch(`${this.apiBaseUrl}/api/admin/users/${userId}`, { + method: 'PUT', + headers: { + 'Content-Type': 'application/json', + 'X-CSRFToken': this.csrfToken + }, + body: JSON.stringify(userData) + }); + + const data = await response.json(); + + if (data.success) { + this.showNotification('✅ Benutzer erfolgreich aktualisiert!', 'success'); + document.getElementById('user-modal').remove(); + + // Seite nach 1 Sekunde neu laden um aktualisierte Benutzerliste zu zeigen + setTimeout(() => { + window.location.reload(); + }, 1000); + } else { + this.showNotification(`❌ Fehler: ${data.error}`, 'error'); + } + + } catch (error) { + console.error('Fehler beim Aktualisieren des Benutzers:', error); + this.showNotification('❌ Fehler beim Aktualisieren des Benutzers', 'error'); + } finally { + // Button zurücksetzen + submitBtn.innerHTML = originalText; + submitBtn.disabled = false; + } + } + editUser(userId) { console.log(`✏️ Benutzer ${userId} wird bearbeitet`); - this.showNotification(`Benutzer ${userId} wird bearbeitet...`, 'info'); + this.showUserModal(userId); } - + async deleteUser(userId, userName) { - if (!confirm(`🗑️ Möchten Sie den Benutzer "${userName}" wirklich löschen?`)) return; + if (!confirm(`🗑️ Möchten Sie den Benutzer "${userName}" wirklich löschen?\n\nDiese Aktion kann nicht rückgängig gemacht werden!`)) { + return; + } - this.showNotification(`🔄 Benutzer "${userName}" wird gelöscht...`, 'info'); + try { + this.showNotification(`🔄 Benutzer "${userName}" wird gelöscht...`, 'info'); + + const response = await fetch(`${this.apiBaseUrl}/api/admin/users/${userId}`, { + method: 'DELETE', + headers: { + 'Content-Type': 'application/json', + 'X-CSRFToken': this.csrfToken + } + }); + + const data = await response.json(); + + if (data.success) { + this.showNotification(`✅ Benutzer "${userName}" erfolgreich gelöscht!`, 'success'); + + // Seite nach 1 Sekunde neu laden um aktualisierte Benutzerliste zu zeigen + setTimeout(() => { + window.location.reload(); + }, 1000); + } else { + this.showNotification(`❌ Fehler beim Löschen: ${data.error}`, 'error'); + } + + } catch (error) { + console.error('Fehler beim Löschen des Benutzers:', error); + this.showNotification('❌ Fehler beim Löschen des Benutzers', 'error'); + } } // Printer-Management diff --git a/backend/static/js/glassmorphism-notifications.js b/backend/static/js/glassmorphism-notifications.js index c1876951..490a0568 100644 --- a/backend/static/js/glassmorphism-notifications.js +++ b/backend/static/js/glassmorphism-notifications.js @@ -208,61 +208,21 @@ class GlassmorphismNotificationSystem { return; } - // Erweiterte Premium-Eingangsanimation mit Glassmorphism-Morphing - toast.style.transform = 'translateX(140%) scale(0.7) rotateY(25deg) rotateX(10deg)'; + // Erweiterte Eingangsanimation mit Glassmorphism-Effekten + toast.style.transform = 'translateX(120%) scale(0.8) rotateY(15deg)'; toast.style.opacity = '0'; - toast.style.filter = 'blur(12px) brightness(0.5) saturate(2)'; - toast.style.clipPath = 'polygon(0 0, 0 0, 0 100%, 0 100%)'; + toast.style.filter = 'blur(8px)'; - // Trigger premium morphing animation + // Trigger animation requestAnimationFrame(() => { - toast.style.transition = 'all 1s cubic-bezier(0.23, 1, 0.32, 1)'; - toast.style.transform = 'translateX(0) scale(1) rotateY(0deg) rotateX(0deg)'; + toast.style.transition = 'all 0.8s cubic-bezier(0.34, 1.56, 0.64, 1)'; + toast.style.transform = 'translateX(0) scale(1) rotateY(0deg)'; toast.style.opacity = '1'; - toast.style.filter = 'blur(0px) brightness(1) saturate(1)'; - toast.style.clipPath = 'polygon(0 0, 100% 0, 100% 100%, 0 100%)'; + toast.style.filter = 'blur(0px)'; toast.classList.add('show'); - - // Partikel-Effekt nach Animation - setTimeout(() => this.createEntryParticles(toast), 800); }); } - /** - * Erstellt schöne Partikel-Effekte beim Eingang - */ - createEntryParticles(toast) { - const particleCount = 8; - const toastRect = toast.getBoundingClientRect(); - - for (let i = 0; i < particleCount; i++) { - const particle = document.createElement('div'); - particle.className = 'notification-particle'; - particle.style.cssText = ` - position: fixed; - width: 4px; - height: 4px; - background: radial-gradient(circle, rgba(255,255,255,0.8) 0%, transparent 70%); - border-radius: 50%; - pointer-events: none; - z-index: 1001; - left: ${toastRect.right + Math.random() * 20}px; - top: ${toastRect.top + toastRect.height * Math.random()}px; - animation: particle-drift 2s ease-out forwards; - animation-delay: ${i * 0.1}s; - `; - - document.body.appendChild(particle); - - // Partikel nach Animation entfernen - setTimeout(() => { - if (particle.parentNode) { - particle.parentNode.removeChild(particle); - } - }, 2200); - } - } - setupHoverEvents(toast, toastId) { let timeoutId; let isPaused = false; @@ -278,13 +238,9 @@ class GlassmorphismNotificationSystem { progressBar.style.animationPlayState = 'paused'; } - // Erweiterte Premium-Hover-Effekte - toast.style.transform = 'translateY(-8px) scale(1.05) rotateY(2deg)'; - toast.style.filter = 'brightness(1.15) saturate(1.2) drop-shadow(0 20px 40px rgba(0,0,0,0.15))'; - toast.style.zIndex = '1100'; - - // Magisches Glühen beim Hover - this.createHoverGlow(toast); + // Hover-Effekt verstärken + toast.style.transform = 'translateY(-4px) scale(1.03)'; + toast.style.filter = 'brightness(1.1) saturate(1.1)'; }; const resumeTimer = () => { @@ -294,13 +250,9 @@ class GlassmorphismNotificationSystem { progressBar.style.animationPlayState = 'running'; } - // Sanfter Rückgang der Hover-Effekte - toast.style.transform = 'translateY(0) scale(1) rotateY(0deg)'; - toast.style.filter = 'brightness(1) saturate(1) drop-shadow(none)'; - toast.style.zIndex = ''; - - // Glühen entfernen - this.removeHoverGlow(toast); + // Hover-Effekt zurücksetzen + toast.style.transform = 'translateY(0) scale(1)'; + toast.style.filter = 'brightness(1) saturate(1)'; }; toast.addEventListener('mouseenter', pauseTimer); @@ -309,62 +261,6 @@ class GlassmorphismNotificationSystem { toast.addEventListener('blur', resumeTimer); } - /** - * Erstellt magisches Glühen beim Hover - */ - createHoverGlow(toast) { - const existingGlow = toast.querySelector('.hover-glow'); - if (existingGlow) return; - - const glow = document.createElement('div'); - glow.className = 'hover-glow'; - glow.style.cssText = ` - position: absolute; - top: -2px; - left: -2px; - right: -2px; - bottom: -2px; - background: linear-gradient(45deg, - rgba(255,255,255,0.3) 0%, - rgba(255,255,255,0.1) 25%, - rgba(255,255,255,0.3) 50%, - rgba(255,255,255,0.1) 75%, - rgba(255,255,255,0.3) 100%); - border-radius: 1.5rem; - filter: blur(3px); - opacity: 0; - pointer-events: none; - z-index: -1; - animation: glow-pulse 1.5s ease-in-out infinite alternate; - `; - - toast.style.position = 'relative'; - toast.appendChild(glow); - - // Fade in - requestAnimationFrame(() => { - glow.style.transition = 'opacity 0.3s ease'; - glow.style.opacity = '1'; - }); - } - - /** - * Entfernt das Hover-Glühen - */ - removeHoverGlow(toast) { - const glow = toast.querySelector('.hover-glow'); - if (glow) { - glow.style.transition = 'opacity 0.3s ease'; - glow.style.opacity = '0'; - - setTimeout(() => { - if (glow.parentNode) { - glow.parentNode.removeChild(glow); - } - }, 300); - } - } - scheduleRemoval(toastId, duration, persistent = false) { if (persistent || duration <= 0) return; @@ -380,58 +276,20 @@ class GlassmorphismNotificationSystem { const toast = notification.element; if (this.animationsEnabled) { - // Premium-Ausgangsanimation mit Morphing - toast.style.transition = 'all 0.8s cubic-bezier(0.68, -0.55, 0.265, 1.55)'; - toast.style.transform = 'translateX(140%) scale(0.6) rotateY(-30deg) rotateZ(5deg)'; + // Verbesserte Ausgangsanimation + toast.style.transition = 'all 0.6s cubic-bezier(0.4, 0, 1, 1)'; + toast.style.transform = 'translateX(120%) scale(0.8) rotateY(-15deg)'; toast.style.opacity = '0'; - toast.style.filter = 'blur(8px) brightness(0.3)'; - toast.style.clipPath = 'polygon(100% 0, 100% 0, 100% 100%, 100% 100%)'; - - // Ausgangs-Partikel-Effekt - this.createExitParticles(toast); + toast.style.filter = 'blur(4px)'; setTimeout(() => { this.removeToast(toastId); - }, 800); + }, 600); } else { this.removeToast(toastId); } } - /** - * Erstellt Partikel-Effekte beim Ausgang - */ - createExitParticles(toast) { - const particleCount = 6; - const toastRect = toast.getBoundingClientRect(); - - for (let i = 0; i < particleCount; i++) { - const particle = document.createElement('div'); - particle.className = 'notification-exit-particle'; - particle.style.cssText = ` - position: fixed; - width: 3px; - height: 3px; - background: radial-gradient(circle, rgba(255,255,255,0.6) 0%, transparent 70%); - border-radius: 50%; - pointer-events: none; - z-index: 1001; - left: ${toastRect.left + toastRect.width * Math.random()}px; - top: ${toastRect.top + toastRect.height * Math.random()}px; - animation: particle-disperse 1s ease-out forwards; - animation-delay: ${i * 0.05}s; - `; - - document.body.appendChild(particle); - - setTimeout(() => { - if (particle.parentNode) { - particle.parentNode.removeChild(particle); - } - }, 1100); - } - } - removeToast(toastId) { const notification = this.notifications.get(toastId); if (!notification) return; @@ -450,49 +308,22 @@ class GlassmorphismNotificationSystem { const toasts = Array.from(container.children); toasts.forEach((toast, index) => { - // Intelligente gestaffelte Positionierung mit Wellenbewegung - const baseOffset = 1 + index * 4.2; - const waveOffset = Math.sin(index * 0.5) * 0.3; - - toast.style.top = `${baseOffset + waveOffset}rem`; + // Gestaffelte Positionierung mit smooth transition + toast.style.top = `${1 + index * 4.5}rem`; toast.style.zIndex = 1000 - index; - // Sanfte Tiefenstaffelung mit eleganten Übergängen + // Leichter Versatz für Tiefeneffekt if (index > 0) { - const scaleReduction = 1 - index * 0.015; - const opacityReduction = 1 - index * 0.08; - const blurAmount = index * 0.5; - - toast.style.transform = `scale(${scaleReduction}) translateX(${index * 2}px)`; - toast.style.opacity = `${Math.max(0.4, opacityReduction)}`; - toast.style.filter = `blur(${blurAmount}px)`; - toast.style.transition = 'all 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94)'; - } else { - // Erstes Toast bleibt vollständig sichtbar - toast.style.transform = 'scale(1) translateX(0px)'; - toast.style.opacity = '1'; - toast.style.filter = 'blur(0px)'; + toast.style.transform = `scale(${1 - index * 0.02})`; + toast.style.opacity = `${1 - index * 0.1}`; } }); } closeAllToasts() { const toastIds = Array.from(this.notifications.keys()); - - // Elegante Schließung mit Welleneffekt toastIds.forEach((id, index) => { - setTimeout(() => { - const notification = this.notifications.get(id); - if (notification) { - // Spezielle Wellenanimation für Masse-Schließung - const toast = notification.element; - toast.style.transition = 'all 0.6s cubic-bezier(0.25, 0.46, 0.45, 0.94)'; - toast.style.transform = `translateX(150%) scale(0.7) rotateY(20deg)`; - toast.style.opacity = '0'; - - setTimeout(() => this.removeToast(id), 600); - } - }, index * 120); // Gestaffelte Schließung + setTimeout(() => this.closeToast(id), index * 100); }); } @@ -610,12 +441,13 @@ class GlassmorphismNotificationSystem { try { const audioContext = new (window.AudioContext || window.webkitAudioContext)(); + // Verfeinerte und melodiösere Frequenzen const frequencies = { - success: [523.25, 659.25, 783.99], // C-E-G Akkord - error: [440, 415.3, 370], // A-Ab-F# (dissonant) - warning: [493.88, 523.25], // B-C - info: [523.25], // C - loading: [392, 440, 493.88] // G-A-B (aufsteigend) + success: [523.25, 659.25, 783.99, 880], // C-E-G-A (Dur-Akkord mit Terz) + error: [440, 370, 311], // A-F#-D# (dissonanter Moll-Akkord) + warning: [493.88, 587.33, 659.25], // B-D-E (warnendes Motiv) + info: [523.25, 659.25], // C-E (freundlich) + loading: [392, 440, 493.88, 523.25] // G-A-B-C (aufsteigende Melodie) }; const freq = frequencies[type] || frequencies.info; @@ -624,20 +456,64 @@ class GlassmorphismNotificationSystem { setTimeout(() => { const oscillator = audioContext.createOscillator(); const gainNode = audioContext.createGain(); + const filterNode = audioContext.createBiquadFilter(); - oscillator.connect(gainNode); + // Sanfterer Sound mit Filter + oscillator.connect(filterNode); + filterNode.connect(gainNode); gainNode.connect(audioContext.destination); - oscillator.frequency.setValueAtTime(f, audioContext.currentTime); - oscillator.type = type === 'error' ? 'sawtooth' : 'sine'; + // Filtereinstellungen für weicheren Klang + filterNode.type = 'lowpass'; + filterNode.frequency.setValueAtTime(2000, audioContext.currentTime); + filterNode.Q.setValueAtTime(1, audioContext.currentTime); - gainNode.gain.setValueAtTime(0.1, audioContext.currentTime); - gainNode.gain.exponentialRampToValueAtTime(0.01, audioContext.currentTime + 0.2); + oscillator.frequency.setValueAtTime(f, audioContext.currentTime); + // Sanftere Wellenformen je nach Typ + oscillator.type = type === 'error' ? 'triangle' : 'sine'; + + // Dezentere Lautstärke und sanftere Envelope + const baseVolume = type === 'error' ? 0.06 : 0.08; + gainNode.gain.setValueAtTime(0, audioContext.currentTime); + gainNode.gain.linearRampToValueAtTime(baseVolume, audioContext.currentTime + 0.1); + gainNode.gain.exponentialRampToValueAtTime(0.001, audioContext.currentTime + 0.3); oscillator.start(audioContext.currentTime); - oscillator.stop(audioContext.currentTime + 0.2); - }, i * 150); + oscillator.stop(audioContext.currentTime + 0.3); + }, i * 120); // Langsamere Abfolge für melodiöseren Effekt }); + + // Zusätzlicher subtiler Reverb-Effekt für Success + if (type === 'success') { + setTimeout(() => { + const reverb = audioContext.createConvolver(); + const impulse = audioContext.createBuffer(2, audioContext.sampleRate * 0.5, audioContext.sampleRate); + + for (let channel = 0; channel < impulse.numberOfChannels; channel++) { + const channelData = impulse.getChannelData(channel); + for (let i = 0; i < channelData.length; i++) { + channelData[i] = (Math.random() * 2 - 1) * Math.pow(1 - i / channelData.length, 2); + } + } + reverb.buffer = impulse; + + const finalOsc = audioContext.createOscillator(); + const finalGain = audioContext.createGain(); + + finalOsc.connect(reverb); + reverb.connect(finalGain); + finalGain.connect(audioContext.destination); + + finalOsc.frequency.setValueAtTime(1046.5, audioContext.currentTime); // Hohe C + finalOsc.type = 'sine'; + finalGain.gain.setValueAtTime(0, audioContext.currentTime); + finalGain.gain.linearRampToValueAtTime(0.03, audioContext.currentTime + 0.1); + finalGain.gain.exponentialRampToValueAtTime(0.001, audioContext.currentTime + 0.8); + + finalOsc.start(audioContext.currentTime); + finalOsc.stop(audioContext.currentTime + 0.8); + }, freq.length * 120); + } } catch (error) { // Silent fail } @@ -702,41 +578,35 @@ class GlassmorphismNotificationSystem { const styles = document.createElement('style'); styles.id = 'glassmorphism-notification-styles'; styles.textContent = ` - /* Premium Glassmorphism Toast Container */ .glassmorphism-toast { margin-bottom: 0.75rem; transform: translateX(100%); opacity: 0; - transition: all 1s cubic-bezier(0.23, 1, 0.32, 1); - will-change: transform, opacity, filter, clip-path; - - /* Ultra-Premium Glassmorphism */ + transition: all 0.8s cubic-bezier(0.34, 1.56, 0.64, 1); + will-change: transform, opacity, filter; + /* Erweiterte Premium Glassmorphism-Eigenschaften */ backdrop-filter: blur(60px) saturate(220%) brightness(125%) contrast(115%); -webkit-backdrop-filter: blur(60px) saturate(220%) brightness(125%) contrast(115%); box-shadow: - 0 40px 80px rgba(0, 0, 0, 0.25), - 0 20px 40px rgba(0, 0, 0, 0.15), - 0 10px 20px rgba(0, 0, 0, 0.1), + 0 40px 80px rgba(0, 0, 0, 0.12), + 0 20px 40px rgba(0, 0, 0, 0.08), + 0 8px 16px rgba(0, 0, 0, 0.06), inset 0 3px 0 rgba(255, 255, 255, 0.5), - inset 0 1px 0 rgba(255, 255, 255, 0.7), - 0 0 0 1px rgba(255, 255, 255, 0.2), - 0 0 40px rgba(255, 255, 255, 0.1); + inset 0 1px 2px rgba(255, 255, 255, 0.8), + 0 0 0 1px rgba(255, 255, 255, 0.2); border-radius: 1.75rem; overflow: hidden; position: relative; - - /* Morphing-Unterstützung */ - clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%); - - /* Erweiterte Premium-Eigenschaften */ - background: linear-gradient(135deg, + /* Subtile Farbverläufe */ + background: linear-gradient(145deg, rgba(255, 255, 255, 0.15) 0%, - rgba(255, 255, 255, 0.08) 30%, - rgba(255, 255, 255, 0.12) 70%, - rgba(255, 255, 255, 0.06) 100%); + rgba(255, 255, 255, 0.08) 25%, + rgba(255, 255, 255, 0.12) 50%, + rgba(255, 255, 255, 0.06) 75%, + rgba(255, 255, 255, 0.1) 100%); } - /* Premium-Hintergrund-Glanz */ + /* Erweiterte Glassmorphism-Overlay-Effekte */ .glassmorphism-toast::before { content: ''; position: absolute; @@ -745,55 +615,64 @@ class GlassmorphismNotificationSystem { right: 0; bottom: 0; background: - radial-gradient(circle at 30% 20%, rgba(255, 255, 255, 0.2) 0%, transparent 40%), - radial-gradient(circle at 70% 80%, rgba(255, 255, 255, 0.15) 0%, transparent 40%), - radial-gradient(circle at 20% 60%, rgba(255, 255, 255, 0.1) 0%, transparent 35%), - linear-gradient(135deg, rgba(255, 255, 255, 0.12) 0%, transparent 60%), - conic-gradient(from 45deg at 50% 50%, - rgba(255, 255, 255, 0.05) 0deg, - rgba(255, 255, 255, 0.15) 90deg, + radial-gradient(circle at 25% 25%, rgba(255, 255, 255, 0.25) 0%, transparent 35%), + radial-gradient(circle at 75% 75%, rgba(255, 255, 255, 0.15) 0%, transparent 35%), + radial-gradient(circle at 50% 10%, rgba(255, 255, 255, 0.1) 0%, transparent 40%), + linear-gradient(135deg, rgba(255, 255, 255, 0.15) 0%, transparent 60%), + conic-gradient(from 180deg at 50% 50%, + rgba(255, 255, 255, 0.05) 0deg, + rgba(255, 255, 255, 0.1) 45deg, + rgba(255, 255, 255, 0.05) 90deg, + rgba(255, 255, 255, 0.08) 135deg, rgba(255, 255, 255, 0.05) 180deg, - rgba(255, 255, 255, 0.1) 270deg, + rgba(255, 255, 255, 0.12) 225deg, + rgba(255, 255, 255, 0.05) 270deg, + rgba(255, 255, 255, 0.08) 315deg, rgba(255, 255, 255, 0.05) 360deg); pointer-events: none; opacity: 0; - transition: opacity 0.4s ease; - animation: shimmer 3s ease-in-out infinite; + transition: opacity 0.4s cubic-bezier(0.4, 0, 0.2, 1); + animation: subtle-shimmer 8s ease-in-out infinite; } - /* Aktive Shimmer-Animation */ - @keyframes shimmer { - 0%, 100% { opacity: 0.3; } - 50% { opacity: 0.7; } + /* Elegante Shimmer-Animation */ + @keyframes subtle-shimmer { + 0%, 100% { opacity: 0; transform: scale(1) rotate(0deg); } + 25% { opacity: 0.3; transform: scale(1.01) rotate(1deg); } + 50% { opacity: 0.6; transform: scale(1.02) rotate(0deg); } + 75% { opacity: 0.3; transform: scale(1.01) rotate(-1deg); } } .glassmorphism-toast:hover::before { opacity: 1; - animation-duration: 1.5s; + animation-play-state: paused; } - /* Premium Border-Gradient */ + /* Floating-Partikel-Effekt bei Hover */ .glassmorphism-toast::after { content: ''; position: absolute; - top: 0; - left: 0; - right: 0; - bottom: 0; - background: linear-gradient(135deg, - rgba(255, 255, 255, 0.4) 0%, - transparent 20%, - transparent 80%, - rgba(255, 255, 255, 0.3) 100%); - border-radius: inherit; - pointer-events: none; + top: -50%; + left: -50%; + width: 200%; + height: 200%; + background: + radial-gradient(circle at 20% 20%, rgba(255, 255, 255, 0.3) 1px, transparent 1px), + radial-gradient(circle at 60% 80%, rgba(255, 255, 255, 0.2) 1px, transparent 1px), + radial-gradient(circle at 80% 30%, rgba(255, 255, 255, 0.25) 1px, transparent 1px), + radial-gradient(circle at 30% 70%, rgba(255, 255, 255, 0.15) 1px, transparent 1px); opacity: 0; - transition: opacity 0.3s ease; - mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); - mask-composite: exclude; - -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); - -webkit-mask-composite: xor; - padding: 1px; + transition: opacity 0.6s ease; + animation: floating-particles 12s linear infinite; + pointer-events: none; + } + + @keyframes floating-particles { + 0% { transform: translate(0, 0) rotate(0deg); } + 25% { transform: translate(-10px, -10px) rotate(90deg); } + 50% { transform: translate(0, -20px) rotate(180deg); } + 75% { transform: translate(10px, -10px) rotate(270deg); } + 100% { transform: translate(0, 0) rotate(360deg); } } .glassmorphism-toast:hover::after { @@ -805,164 +684,205 @@ class GlassmorphismNotificationSystem { opacity: 1; } - /* Typ-spezifische Ultra-Premium-Glassmorphism-Effekte */ + /* Typ-spezifische erweiterte Premium Glassmorphism-Effekte */ .glassmorphism-toast.notification-success { - background: linear-gradient(135deg, - rgba(34, 197, 94, 0.3) 0%, - rgba(134, 239, 172, 0.18) 25%, - rgba(34, 197, 94, 0.12) 60%, - rgba(16, 185, 129, 0.08) 85%, - rgba(34, 197, 94, 0.15) 100%); - border: 1px solid rgba(34, 197, 94, 0.5); + background: linear-gradient(145deg, + rgba(34, 197, 94, 0.18) 0%, + rgba(134, 239, 172, 0.12) 20%, + rgba(16, 185, 129, 0.15) 40%, + rgba(34, 197, 94, 0.08) 60%, + rgba(134, 239, 172, 0.1) 80%, + rgba(16, 185, 129, 0.06) 100%); + border: 1px solid rgba(34, 197, 94, 0.3); box-shadow: - 0 40px 80px rgba(34, 197, 94, 0.25), - 0 20px 40px rgba(34, 197, 94, 0.15), - 0 8px 16px rgba(34, 197, 94, 0.1), - inset 0 3px 0 rgba(255, 255, 255, 0.5), - inset 0 1px 0 rgba(255, 255, 255, 0.7), - 0 0 0 1px rgba(34, 197, 94, 0.4), - 0 0 40px rgba(34, 197, 94, 0.2); + 0 40px 80px rgba(34, 197, 94, 0.15), + 0 20px 40px rgba(34, 197, 94, 0.08), + 0 8px 16px rgba(16, 185, 129, 0.1), + inset 0 3px 0 rgba(255, 255, 255, 0.6), + inset 0 1px 2px rgba(134, 239, 172, 0.4), + 0 0 0 1px rgba(34, 197, 94, 0.2); + color: rgba(5, 95, 70, 0.95); + } + + .dark .glassmorphism-toast.notification-success { + color: rgba(134, 239, 172, 0.95); + background: linear-gradient(145deg, + rgba(34, 197, 94, 0.25) 0%, + rgba(134, 239, 172, 0.15) 30%, + rgba(34, 197, 94, 0.12) 70%, + rgba(16, 185, 129, 0.08) 100%); } .glassmorphism-toast.notification-error { - background: linear-gradient(135deg, - rgba(239, 68, 68, 0.3) 0%, - rgba(252, 165, 165, 0.18) 25%, - rgba(239, 68, 68, 0.12) 60%, - rgba(220, 38, 38, 0.08) 85%, - rgba(239, 68, 68, 0.15) 100%); - border: 1px solid rgba(239, 68, 68, 0.5); + background: linear-gradient(145deg, + rgba(239, 68, 68, 0.18) 0%, + rgba(252, 165, 165, 0.12) 20%, + rgba(220, 38, 38, 0.15) 40%, + rgba(239, 68, 68, 0.08) 60%, + rgba(252, 165, 165, 0.1) 80%, + rgba(220, 38, 38, 0.06) 100%); + border: 1px solid rgba(239, 68, 68, 0.3); box-shadow: - 0 40px 80px rgba(239, 68, 68, 0.25), - 0 20px 40px rgba(239, 68, 68, 0.15), - 0 8px 16px rgba(239, 68, 68, 0.1), - inset 0 3px 0 rgba(255, 255, 255, 0.5), - inset 0 1px 0 rgba(255, 255, 255, 0.7), - 0 0 0 1px rgba(239, 68, 68, 0.4), - 0 0 40px rgba(239, 68, 68, 0.2); + 0 40px 80px rgba(239, 68, 68, 0.15), + 0 20px 40px rgba(239, 68, 68, 0.08), + 0 8px 16px rgba(220, 38, 38, 0.1), + inset 0 3px 0 rgba(255, 255, 255, 0.6), + inset 0 1px 2px rgba(252, 165, 165, 0.4), + 0 0 0 1px rgba(239, 68, 68, 0.2); + color: rgba(153, 27, 27, 0.95); + } + + .dark .glassmorphism-toast.notification-error { + color: rgba(252, 165, 165, 0.95); + background: linear-gradient(145deg, + rgba(239, 68, 68, 0.25) 0%, + rgba(252, 165, 165, 0.15) 30%, + rgba(239, 68, 68, 0.12) 70%, + rgba(220, 38, 38, 0.08) 100%); } .glassmorphism-toast.notification-warning { - background: linear-gradient(135deg, - rgba(245, 158, 11, 0.3) 0%, - rgba(252, 211, 77, 0.18) 25%, - rgba(245, 158, 11, 0.12) 60%, - rgba(217, 119, 6, 0.08) 85%, - rgba(245, 158, 11, 0.15) 100%); - border: 1px solid rgba(245, 158, 11, 0.5); + background: linear-gradient(145deg, + rgba(245, 158, 11, 0.18) 0%, + rgba(252, 211, 77, 0.12) 20%, + rgba(217, 119, 6, 0.15) 40%, + rgba(245, 158, 11, 0.08) 60%, + rgba(252, 211, 77, 0.1) 80%, + rgba(217, 119, 6, 0.06) 100%); + border: 1px solid rgba(245, 158, 11, 0.3); box-shadow: - 0 40px 80px rgba(245, 158, 11, 0.25), - 0 20px 40px rgba(245, 158, 11, 0.15), - 0 8px 16px rgba(245, 158, 11, 0.1), - inset 0 3px 0 rgba(255, 255, 255, 0.5), - inset 0 1px 0 rgba(255, 255, 255, 0.7), - 0 0 0 1px rgba(245, 158, 11, 0.4), - 0 0 40px rgba(245, 158, 11, 0.2); + 0 40px 80px rgba(245, 158, 11, 0.15), + 0 20px 40px rgba(245, 158, 11, 0.08), + 0 8px 16px rgba(217, 119, 6, 0.1), + inset 0 3px 0 rgba(255, 255, 255, 0.6), + inset 0 1px 2px rgba(252, 211, 77, 0.4), + 0 0 0 1px rgba(245, 158, 11, 0.2); + color: rgba(146, 64, 14, 0.95); + } + + .dark .glassmorphism-toast.notification-warning { + color: rgba(252, 211, 77, 0.95); + background: linear-gradient(145deg, + rgba(245, 158, 11, 0.25) 0%, + rgba(252, 211, 77, 0.15) 30%, + rgba(245, 158, 11, 0.12) 70%, + rgba(217, 119, 6, 0.08) 100%); } .glassmorphism-toast.notification-info { - background: linear-gradient(135deg, - rgba(59, 130, 246, 0.3) 0%, - rgba(147, 197, 253, 0.18) 25%, - rgba(59, 130, 246, 0.12) 60%, - rgba(37, 99, 235, 0.08) 85%, - rgba(59, 130, 246, 0.15) 100%); - border: 1px solid rgba(59, 130, 246, 0.5); + background: linear-gradient(145deg, + rgba(59, 130, 246, 0.18) 0%, + rgba(147, 197, 253, 0.12) 20%, + rgba(37, 99, 235, 0.15) 40%, + rgba(59, 130, 246, 0.08) 60%, + rgba(147, 197, 253, 0.1) 80%, + rgba(37, 99, 235, 0.06) 100%); + border: 1px solid rgba(59, 130, 246, 0.3); box-shadow: - 0 40px 80px rgba(59, 130, 246, 0.25), - 0 20px 40px rgba(59, 130, 246, 0.15), - 0 8px 16px rgba(59, 130, 246, 0.1), - inset 0 3px 0 rgba(255, 255, 255, 0.5), - inset 0 1px 0 rgba(255, 255, 255, 0.7), - 0 0 0 1px rgba(59, 130, 246, 0.4), - 0 0 40px rgba(59, 130, 246, 0.2); + 0 40px 80px rgba(59, 130, 246, 0.15), + 0 20px 40px rgba(59, 130, 246, 0.08), + 0 8px 16px rgba(37, 99, 235, 0.1), + inset 0 3px 0 rgba(255, 255, 255, 0.6), + inset 0 1px 2px rgba(147, 197, 253, 0.4), + 0 0 0 1px rgba(59, 130, 246, 0.2); + color: rgba(30, 64, 175, 0.95); + } + + .dark .glassmorphism-toast.notification-info { + color: rgba(147, 197, 253, 0.95); + background: linear-gradient(145deg, + rgba(59, 130, 246, 0.25) 0%, + rgba(147, 197, 253, 0.15) 30%, + rgba(59, 130, 246, 0.12) 70%, + rgba(37, 99, 235, 0.08) 100%); } .glassmorphism-toast.notification-loading { - background: linear-gradient(135deg, - rgba(99, 102, 241, 0.3) 0%, - rgba(165, 180, 252, 0.18) 25%, - rgba(99, 102, 241, 0.12) 60%, - rgba(79, 70, 229, 0.08) 85%, - rgba(99, 102, 241, 0.15) 100%); - border: 1px solid rgba(99, 102, 241, 0.5); + background: linear-gradient(145deg, + rgba(99, 102, 241, 0.18) 0%, + rgba(165, 180, 252, 0.12) 20%, + rgba(79, 70, 229, 0.15) 40%, + rgba(99, 102, 241, 0.08) 60%, + rgba(165, 180, 252, 0.1) 80%, + rgba(79, 70, 229, 0.06) 100%); + border: 1px solid rgba(99, 102, 241, 0.3); box-shadow: - 0 40px 80px rgba(99, 102, 241, 0.25), - 0 20px 40px rgba(99, 102, 241, 0.15), - 0 8px 16px rgba(99, 102, 241, 0.1), - inset 0 3px 0 rgba(255, 255, 255, 0.5), - inset 0 1px 0 rgba(255, 255, 255, 0.7), - 0 0 0 1px rgba(99, 102, 241, 0.4), - 0 0 40px rgba(99, 102, 241, 0.2); + 0 40px 80px rgba(99, 102, 241, 0.15), + 0 20px 40px rgba(99, 102, 241, 0.08), + 0 8px 16px rgba(79, 70, 229, 0.1), + inset 0 3px 0 rgba(255, 255, 255, 0.6), + inset 0 1px 2px rgba(165, 180, 252, 0.4), + 0 0 0 1px rgba(99, 102, 241, 0.2); + color: rgba(55, 48, 163, 0.95); } - /* Dark Mode Ultra-Premium Anpassungen */ + .dark .glassmorphism-toast.notification-loading { + color: rgba(165, 180, 252, 0.95); + background: linear-gradient(145deg, + rgba(99, 102, 241, 0.25) 0%, + rgba(165, 180, 252, 0.15) 30%, + rgba(99, 102, 241, 0.12) 70%, + rgba(79, 70, 229, 0.08) 100%); + } + + /* Dark Mode Premium Anpassungen */ .dark .glassmorphism-toast { - backdrop-filter: blur(80px) saturate(200%) brightness(115%) contrast(130%); - -webkit-backdrop-filter: blur(80px) saturate(200%) brightness(115%) contrast(130%); - background: linear-gradient(135deg, - rgba(0, 0, 0, 0.4) 0%, - rgba(0, 0, 0, 0.2) 30%, - rgba(0, 0, 0, 0.35) 70%, - rgba(0, 0, 0, 0.15) 100%); + backdrop-filter: blur(80px) saturate(200%) brightness(115%) contrast(125%); + -webkit-backdrop-filter: blur(80px) saturate(200%) brightness(115%) contrast(125%); box-shadow: - 0 40px 80px rgba(0, 0, 0, 0.7), - 0 20px 40px rgba(0, 0, 0, 0.5), - 0 10px 20px rgba(0, 0, 0, 0.4), - inset 0 3px 0 rgba(255, 255, 255, 0.25), - inset 0 1px 0 rgba(255, 255, 255, 0.35), - 0 0 0 1px rgba(255, 255, 255, 0.15), - 0 0 40px rgba(255, 255, 255, 0.05); + 0 40px 80px rgba(0, 0, 0, 0.4), + 0 20px 40px rgba(0, 0, 0, 0.3), + 0 8px 16px rgba(0, 0, 0, 0.2), + inset 0 3px 0 rgba(255, 255, 255, 0.15), + inset 0 1px 2px rgba(255, 255, 255, 0.25), + 0 0 0 1px rgba(255, 255, 255, 0.08); + background: linear-gradient(145deg, + rgba(0, 0, 0, 0.25) 0%, + rgba(15, 15, 15, 0.18) 25%, + rgba(0, 0, 0, 0.22) 50%, + rgba(10, 10, 10, 0.15) 75%, + rgba(0, 0, 0, 0.2) 100%); } - /* Premium Partikel-Animationen */ - @keyframes particle-drift { - 0% { - opacity: 1; - transform: translate(0, 0) scale(1); - } - 50% { - opacity: 0.8; - transform: translate(-30px, -20px) scale(1.2); - } - 100% { - opacity: 0; - transform: translate(-60px, -40px) scale(0.5); - } + .dark .glassmorphism-toast::before { + background: + radial-gradient(circle at 25% 25%, rgba(255, 255, 255, 0.12) 0%, transparent 35%), + radial-gradient(circle at 75% 75%, rgba(255, 255, 255, 0.08) 0%, transparent 35%), + radial-gradient(circle at 50% 10%, rgba(255, 255, 255, 0.06) 0%, transparent 40%), + linear-gradient(135deg, rgba(255, 255, 255, 0.08) 0%, transparent 60%), + conic-gradient(from 180deg at 50% 50%, + rgba(255, 255, 255, 0.03) 0deg, + rgba(255, 255, 255, 0.06) 45deg, + rgba(255, 255, 255, 0.03) 90deg, + rgba(255, 255, 255, 0.05) 135deg, + rgba(255, 255, 255, 0.03) 180deg, + rgba(255, 255, 255, 0.07) 225deg, + rgba(255, 255, 255, 0.03) 270deg, + rgba(255, 255, 255, 0.05) 315deg, + rgba(255, 255, 255, 0.03) 360deg); } - @keyframes particle-disperse { - 0% { - opacity: 1; - transform: translate(0, 0) scale(1); - } - 100% { - opacity: 0; - transform: translate(40px, -30px) scale(0.3); - } + .dark .glassmorphism-toast::after { + background: + radial-gradient(circle at 20% 20%, rgba(255, 255, 255, 0.15) 1px, transparent 1px), + radial-gradient(circle at 60% 80%, rgba(255, 255, 255, 0.1) 1px, transparent 1px), + radial-gradient(circle at 80% 30%, rgba(255, 255, 255, 0.12) 1px, transparent 1px), + radial-gradient(circle at 30% 70%, rgba(255, 255, 255, 0.08) 1px, transparent 1px); } - @keyframes glow-pulse { - 0% { opacity: 0.5; transform: scale(1); } - 100% { opacity: 1; transform: scale(1.05); } - } - - /* Toast Content mit erweiterten Effekten */ .toast-content { position: relative; overflow: hidden; padding: 1.5rem; - backdrop-filter: blur(10px); - -webkit-backdrop-filter: blur(10px); + border-radius: inherit; } .toast-header { display: flex; align-items: flex-start; - gap: 1.2rem; + gap: 1.25rem; } - /* Premium Icon-Container */ .toast-icon { flex-shrink: 0; width: 3rem; @@ -971,23 +891,24 @@ class GlassmorphismNotificationSystem { align-items: center; justify-content: center; border-radius: 50%; - background: linear-gradient(135deg, - rgba(255, 255, 255, 0.3) 0%, - rgba(255, 255, 255, 0.15) 100%); - backdrop-filter: blur(20px); - -webkit-backdrop-filter: blur(20px); + background: linear-gradient(145deg, + rgba(255, 255, 255, 0.4) 0%, + rgba(255, 255, 255, 0.25) 50%, + rgba(255, 255, 255, 0.35) 100%); + backdrop-filter: blur(20px) saturate(150%); + -webkit-backdrop-filter: blur(20px) saturate(150%); border: 1px solid rgba(255, 255, 255, 0.5); box-shadow: - 0 10px 20px rgba(0, 0, 0, 0.15), - 0 4px 8px rgba(0, 0, 0, 0.1), - inset 0 2px 0 rgba(255, 255, 255, 0.6), - inset 0 -1px 0 rgba(0, 0, 0, 0.1); - transition: all 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94); + 0 12px 24px rgba(0, 0, 0, 0.08), + 0 4px 8px rgba(0, 0, 0, 0.05), + inset 0 2px 0 rgba(255, 255, 255, 0.7), + inset 0 -1px 0 rgba(0, 0, 0, 0.05); + transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1); position: relative; overflow: hidden; } - /* Icon Shimmer-Effekt */ + /* Icon-Glow-Effekt */ .toast-icon::before { content: ''; position: absolute; @@ -995,43 +916,46 @@ class GlassmorphismNotificationSystem { left: -50%; width: 200%; height: 200%; - background: conic-gradient(from 0deg, - transparent 0deg, - rgba(255, 255, 255, 0.3) 60deg, - transparent 120deg); - animation: icon-shimmer 3s linear infinite; + background: radial-gradient(circle, rgba(255, 255, 255, 0.3) 0%, transparent 70%); opacity: 0; transition: opacity 0.3s ease; + animation: icon-pulse 3s ease-in-out infinite; + } + + @keyframes icon-pulse { + 0%, 100% { opacity: 0; transform: scale(0.8); } + 50% { opacity: 0.5; transform: scale(1.2); } } .toast-icon:hover::before { opacity: 1; - } - - @keyframes icon-shimmer { - 0% { transform: rotate(0deg); } - 100% { transform: rotate(360deg); } + animation-play-state: paused; } .toast-icon:hover { - transform: scale(1.15) rotate(5deg); + transform: scale(1.15) rotate(10deg); box-shadow: - 0 15px 30px rgba(0, 0, 0, 0.2), - 0 6px 12px rgba(0, 0, 0, 0.15), - inset 0 2px 0 rgba(255, 255, 255, 0.7), - 0 0 20px rgba(255, 255, 255, 0.3); + 0 20px 40px rgba(0, 0, 0, 0.12), + 0 8px 16px rgba(0, 0, 0, 0.08), + inset 0 2px 0 rgba(255, 255, 255, 0.8), + inset 0 -1px 0 rgba(0, 0, 0, 0.08); } .dark .toast-icon { - background: linear-gradient(135deg, - rgba(0, 0, 0, 0.4) 0%, - rgba(0, 0, 0, 0.2) 100%); - border: 1px solid rgba(255, 255, 255, 0.25); + background: linear-gradient(145deg, + rgba(0, 0, 0, 0.4) 0%, + rgba(15, 15, 15, 0.3) 50%, + rgba(0, 0, 0, 0.35) 100%); + border: 1px solid rgba(255, 255, 255, 0.15); box-shadow: - 0 10px 20px rgba(0, 0, 0, 0.4), - 0 4px 8px rgba(0, 0, 0, 0.3), - inset 0 2px 0 rgba(255, 255, 255, 0.2), - inset 0 -1px 0 rgba(0, 0, 0, 0.3); + 0 12px 24px rgba(0, 0, 0, 0.3), + 0 4px 8px rgba(0, 0, 0, 0.2), + inset 0 2px 0 rgba(255, 255, 255, 0.15), + inset 0 -1px 0 rgba(255, 255, 255, 0.05); + } + + .dark .toast-icon::before { + background: radial-gradient(circle, rgba(255, 255, 255, 0.15) 0%, transparent 70%); } .toast-body { @@ -1043,12 +967,10 @@ class GlassmorphismNotificationSystem { font-weight: 700; font-size: 1rem; margin-bottom: 0.5rem; - line-height: 1.3; - letter-spacing: 0.02em; - text-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); - background: linear-gradient(135deg, - currentColor 0%, - rgba(255, 255, 255, 0.9) 100%); + line-height: 1.4; + letter-spacing: 0.015em; + text-shadow: 0 2px 4px rgba(0, 0, 0, 0.08); + background: linear-gradient(135deg, currentColor 0%, currentColor 100%); -webkit-background-clip: text; background-clip: text; } @@ -1056,44 +978,143 @@ class GlassmorphismNotificationSystem { .toast-message { font-size: 0.9rem; line-height: 1.6; - opacity: 0.95; + opacity: 0.92; font-weight: 500; - text-shadow: 0 1px 2px rgba(0, 0, 0, 0.08); + text-shadow: 0 1px 3px rgba(0, 0, 0, 0.06); + } + + .toast-actions { + display: flex; + gap: 0.625rem; + align-items: flex-start; + flex-shrink: 0; + } + + .toast-action-btn { + padding: 0.5rem 1rem; + border-radius: 0.75rem; + font-size: 0.8125rem; + font-weight: 600; + border: none; + cursor: pointer; + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); + display: flex; + align-items: center; + gap: 0.375rem; + background: rgba(255, 255, 255, 0.2); + color: inherit; + backdrop-filter: blur(15px); + -webkit-backdrop-filter: blur(15px); + border: 1px solid rgba(255, 255, 255, 0.3); + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); + } + + .toast-action-btn:hover { + background: rgba(255, 255, 255, 0.35); + transform: translateY(-2px) scale(1.05); + box-shadow: 0 8px 16px rgba(0, 0, 0, 0.15); + } + + .toast-action-btn:active { + transform: translateY(-1px) scale(1.02); + transition: transform 0.1s ease; + } + + .toast-action-primary { + background: linear-gradient(135deg, + rgba(59, 130, 246, 0.9) 0%, + rgba(37, 99, 235, 0.9) 100%); + color: white; + border-color: rgba(59, 130, 246, 0.6); + box-shadow: 0 4px 12px rgba(59, 130, 246, 0.3); + } + + .toast-action-primary:hover { + background: linear-gradient(135deg, + rgba(59, 130, 246, 1) 0%, + rgba(37, 99, 235, 1) 100%); + box-shadow: 0 8px 20px rgba(59, 130, 246, 0.4); + } + + .dark .toast-action-btn { + background: rgba(0, 0, 0, 0.3); + border: 1px solid rgba(255, 255, 255, 0.2); + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); + } + + .dark .toast-action-btn:hover { + background: rgba(0, 0, 0, 0.4); + box-shadow: 0 8px 16px rgba(0, 0, 0, 0.3); + } + + .toast-close { + padding: 0.375rem; + border-radius: 0.5rem; + border: none; + background: rgba(255, 255, 255, 0.15); + color: inherit; + cursor: pointer; + opacity: 0.8; + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); + display: flex; + align-items: center; + justify-content: center; + backdrop-filter: blur(15px); + -webkit-backdrop-filter: blur(15px); + border: 1px solid rgba(255, 255, 255, 0.2); + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); + } + + .toast-close:hover { + opacity: 1; + background: rgba(255, 255, 255, 0.25); + transform: scale(1.15) rotate(90deg); + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15); + } + + .toast-close:active { + transform: scale(1.1) rotate(90deg); + transition: transform 0.1s ease; + } + + .dark .toast-close { + background: rgba(0, 0, 0, 0.2); + border: 1px solid rgba(255, 255, 255, 0.15); + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + } + + .dark .toast-close:hover { + background: rgba(0, 0, 0, 0.3); + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3); } - /* Premium Progress Bar */ .toast-progress { position: absolute; bottom: 0; left: 0; right: 0; - height: 5px; - background: linear-gradient(90deg, - rgba(255, 255, 255, 0.2) 0%, - rgba(255, 255, 255, 0.1) 100%); + height: 4px; + background: rgba(255, 255, 255, 0.15); overflow: hidden; - border-radius: 0 0 1.75rem 1.75rem; + border-radius: 0 0 1.5rem 1.5rem; } .toast-progress-bar { height: 100%; background: linear-gradient(90deg, - rgba(255, 255, 255, 0.8) 0%, - rgba(255, 255, 255, 1) 30%, - rgba(255, 255, 255, 0.9) 70%, - rgba(255, 255, 255, 0.8) 100%); + rgba(255, 255, 255, 0.7) 0%, + rgba(255, 255, 255, 0.9) 50%, + rgba(255, 255, 255, 0.7) 100%); width: 0%; transition: width 0.3s ease; position: relative; border-radius: inherit; box-shadow: - 0 0 12px rgba(255, 255, 255, 0.6), - inset 0 1px 0 rgba(255, 255, 255, 0.9), - inset 0 -1px 0 rgba(0, 0, 0, 0.1); - overflow: hidden; + 0 0 8px rgba(255, 255, 255, 0.5), + inset 0 1px 0 rgba(255, 255, 255, 0.8); } - /* Premium Shimmer für Progress Bar */ .toast-progress-bar::after { content: ''; position: absolute; @@ -1103,16 +1124,14 @@ class GlassmorphismNotificationSystem { bottom: 0; background: linear-gradient(90deg, transparent 0%, - rgba(255, 255, 255, 0.6) 30%, - rgba(255, 255, 255, 0.8) 50%, - rgba(255, 255, 255, 0.6) 70%, + rgba(255, 255, 255, 0.4) 50%, transparent 100%); - animation: progress-shimmer 2.5s ease-in-out infinite; + animation: progress-shimmer 2s ease-in-out infinite; } @keyframes progress-shimmer { - 0% { transform: translateX(-150%); } - 100% { transform: translateX(250%); } + 0% { transform: translateX(-100%); } + 100% { transform: translateX(100%); } } @keyframes toast-progress { @@ -1120,67 +1139,103 @@ class GlassmorphismNotificationSystem { to { width: 0%; } } - /* Responsive Design mit erweiterten Breakpoints */ - @media (max-width: 640px) { - .glassmorphism-toast { - margin-bottom: 0.5rem; - border-radius: 1.5rem; - } - - .toast-content { - padding: 1.25rem; - } - - .toast-icon { - width: 2.5rem; - height: 2.5rem; - } + .notification-settings { + max-width: 350px; + padding: 0.5rem 0; } - @media (max-width: 480px) { + .notification-settings h3 { + margin-bottom: 1rem; + font-size: 1.1rem; + font-weight: 700; + color: inherit; + } + + .setting-item { + display: flex; + align-items: center; + gap: 0.75rem; + margin: 1rem 0; + cursor: pointer; + font-size: 0.9rem; + font-weight: 500; + padding: 0.5rem; + border-radius: 0.5rem; + transition: all 0.2s ease; + } + + .setting-item:hover { + background: rgba(255, 255, 255, 0.1); + transform: translateX(4px); + } + + .setting-item input[type="checkbox"] { + margin: 0; + width: 1.2rem; + height: 1.2rem; + accent-color: currentColor; + } + + /* Responsive Design */ + @media (max-width: 640px) { + .notifications-container { + left: 0.75rem; + right: 0.75rem; + top: 0.75rem; + } + + .glassmorphism-toast { + margin-bottom: 0.5rem; + border-radius: 1rem; + } + .toast-content { padding: 1rem; } .toast-header { - gap: 1rem; + gap: 0.75rem; } .toast-icon { - width: 2.25rem; - height: 2.25rem; + width: 2rem; + height: 2rem; + } + + .toast-title { + font-size: 0.85rem; + } + + .toast-message { + font-size: 0.8125rem; + } + + .toast-action-btn { + padding: 0.4rem 0.8rem; + font-size: 0.75rem; } } - /* Ultra High-DPI Display Optimierungen */ - @media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) { - .glassmorphism-toast { - backdrop-filter: blur(80px) saturate(250%) brightness(130%) contrast(120%); - -webkit-backdrop-filter: blur(80px) saturate(250%) brightness(130%) contrast(120%); - } - } - - /* High Contrast Mode Verbesserungen */ + /* High Contrast Mode */ @media (prefers-contrast: high) { .glassmorphism-toast { - border: 3px solid currentColor; + border: 2px solid currentColor; backdrop-filter: none; -webkit-backdrop-filter: none; - background: rgba(255, 255, 255, 0.98); - box-shadow: 0 10px 25px rgba(0, 0, 0, 0.3); + background: rgba(255, 255, 255, 0.95); } .dark .glassmorphism-toast { - background: rgba(0, 0, 0, 0.98); + background: rgba(0, 0, 0, 0.95); } } - /* Reduced Motion Anpassungen */ + /* Reduced Motion */ @media (prefers-reduced-motion: reduce) { .glassmorphism-toast, .toast-icon, - .toast-progress-bar, - .toast-progress-bar::after { + .toast-action-btn, + .toast-close { transition: none !important; animation: none !important; }