diff --git a/backend/app.py b/backend/app.py index afa3cea7..718b32b2 100644 --- a/backend/app.py +++ b/backend/app.py @@ -1241,6 +1241,239 @@ def kiosk_restart_system(): kiosk_logger.error(f"Fehler beim System-Neustart: {str(e)}") return jsonify({"error": "Fehler beim Neustart"}), 500 + +# ===== ERWEITERTE SYSTEM-CONTROL API-ENDPUNKTE ===== + +@app.route('/api/admin/system/restart', methods=['POST']) +@login_required +@admin_required +def api_admin_system_restart(): + """Robuster System-Neustart mit Sicherheitsprüfungen.""" + try: + from utils.system_control import schedule_system_restart + + data = request.get_json() or {} + delay_seconds = data.get('delay_seconds', 60) + reason = data.get('reason', 'Manueller Admin-Neustart') + force = data.get('force', False) + + # Begrenze Verzögerung auf sinnvolle Werte + delay_seconds = max(10, min(3600, delay_seconds)) # 10s bis 1h + + result = schedule_system_restart( + delay_seconds=delay_seconds, + user_id=str(current_user.id), + reason=reason, + force=force + ) + + if result.get('success'): + app_logger.warning(f"System-Neustart geplant von Admin {current_user.username}: {reason}") + return jsonify(result) + else: + return jsonify(result), 400 + + except Exception as e: + app_logger.error(f"Fehler bei System-Neustart-Planung: {e}") + return jsonify({"success": False, "error": str(e)}), 500 + + +@app.route('/api/admin/system/shutdown', methods=['POST']) +@login_required +@admin_required +def api_admin_system_shutdown(): + """Robuster System-Shutdown mit Sicherheitsprüfungen.""" + try: + from utils.system_control import schedule_system_shutdown + + data = request.get_json() or {} + delay_seconds = data.get('delay_seconds', 30) + reason = data.get('reason', 'Manueller Admin-Shutdown') + force = data.get('force', False) + + # Begrenze Verzögerung auf sinnvolle Werte + delay_seconds = max(10, min(3600, delay_seconds)) # 10s bis 1h + + result = schedule_system_shutdown( + delay_seconds=delay_seconds, + user_id=str(current_user.id), + reason=reason, + force=force + ) + + if result.get('success'): + app_logger.warning(f"System-Shutdown geplant von Admin {current_user.username}: {reason}") + return jsonify(result) + else: + return jsonify(result), 400 + + except Exception as e: + app_logger.error(f"Fehler bei System-Shutdown-Planung: {e}") + return jsonify({"success": False, "error": str(e)}), 500 + + +@app.route('/api/admin/kiosk/restart', methods=['POST']) +@login_required +@admin_required +def api_admin_kiosk_restart(): + """Kiosk-Display neustarten ohne System-Neustart.""" + try: + from utils.system_control import restart_kiosk + + data = request.get_json() or {} + delay_seconds = data.get('delay_seconds', 10) + reason = data.get('reason', 'Manueller Kiosk-Neustart') + + # Begrenze Verzögerung + delay_seconds = max(0, min(300, delay_seconds)) # 0s bis 5min + + result = restart_kiosk( + delay_seconds=delay_seconds, + user_id=str(current_user.id), + reason=reason + ) + + if result.get('success'): + app_logger.info(f"Kiosk-Neustart geplant von Admin {current_user.username}: {reason}") + return jsonify(result) + else: + return jsonify(result), 400 + + except Exception as e: + app_logger.error(f"Fehler bei Kiosk-Neustart-Planung: {e}") + return jsonify({"success": False, "error": str(e)}), 500 + + +@app.route('/api/admin/system/status', methods=['GET']) +@login_required +@admin_required +def api_admin_system_status_extended(): + """Erweiterte System-Status-Informationen.""" + try: + from utils.system_control import get_system_status + from utils.error_recovery import get_error_recovery_manager + + # System-Control-Status + system_status = get_system_status() + + # Error-Recovery-Status + error_manager = get_error_recovery_manager() + error_stats = error_manager.get_error_statistics() + + # Kombiniere alle Informationen + combined_status = { + **system_status, + "error_recovery": error_stats, + "resilience_features": { + "auto_recovery_enabled": error_stats.get('auto_recovery_enabled', False), + "monitoring_active": error_stats.get('monitoring_active', False), + "recovery_success_rate": error_stats.get('recovery_success_rate', 0) + } + } + + return jsonify(combined_status) + + except Exception as e: + app_logger.error(f"Fehler bei System-Status-Abfrage: {e}") + return jsonify({"success": False, "error": str(e)}), 500 + + +@app.route('/api/admin/system/operations', methods=['GET']) +@login_required +@admin_required +def api_admin_system_operations(): + """Gibt geplante und vergangene System-Operationen zurück.""" + try: + from utils.system_control import get_system_control_manager + + manager = get_system_control_manager() + + return jsonify({ + "success": True, + "pending_operations": manager.get_pending_operations(), + "operation_history": manager.get_operation_history(limit=50) + }) + + except Exception as e: + app_logger.error(f"Fehler bei Operations-Abfrage: {e}") + return jsonify({"success": False, "error": str(e)}), 500 + + +@app.route('/api/admin/system/operations//cancel', methods=['POST']) +@login_required +@admin_required +def api_admin_cancel_operation(operation_id): + """Bricht geplante System-Operation ab.""" + try: + from utils.system_control import get_system_control_manager + + manager = get_system_control_manager() + result = manager.cancel_operation(operation_id) + + if result.get('success'): + app_logger.info(f"Operation {operation_id} abgebrochen von Admin {current_user.username}") + return jsonify(result) + else: + return jsonify(result), 400 + + except Exception as e: + app_logger.error(f"Fehler beim Abbrechen von Operation {operation_id}: {e}") + return jsonify({"success": False, "error": str(e)}), 500 + + +@app.route('/api/admin/error-recovery/status', methods=['GET']) +@login_required +@admin_required +def api_admin_error_recovery_status(): + """Gibt Error-Recovery-Status und -Statistiken zurück.""" + try: + from utils.error_recovery import get_error_recovery_manager + + manager = get_error_recovery_manager() + + return jsonify({ + "success": True, + "statistics": manager.get_error_statistics(), + "recent_errors": manager.get_recent_errors(limit=20) + }) + + except Exception as e: + app_logger.error(f"Fehler bei Error-Recovery-Status-Abfrage: {e}") + return jsonify({"success": False, "error": str(e)}), 500 + + +@app.route('/api/admin/error-recovery/toggle', methods=['POST']) +@login_required +@admin_required +def api_admin_toggle_error_recovery(): + """Aktiviert/Deaktiviert Error-Recovery-Monitoring.""" + try: + from utils.error_recovery import get_error_recovery_manager + + data = request.get_json() or {} + enable = data.get('enable', True) + + manager = get_error_recovery_manager() + + if enable: + manager.start_monitoring() + message = "Error-Recovery-Monitoring aktiviert" + else: + manager.stop_monitoring() + message = "Error-Recovery-Monitoring deaktiviert" + + app_logger.info(f"{message} von Admin {current_user.username}") + + return jsonify({ + "success": True, + "message": message, + "monitoring_active": manager.is_active + }) + + except Exception as e: + app_logger.error(f"Fehler beim Toggle von Error-Recovery: {e}") + return jsonify({"success": False, "error": str(e)}), 500 + # ===== BENUTZER-ROUTEN (ehemals user.py) ===== @app.route("/user/profile", methods=["GET"]) @@ -8718,6 +8951,43 @@ if __name__ == "__main__": app_logger.error(f"❌ Shutdown-Manager konnte nicht geladen werden: {e}") # Fallback auf die alte Methode shutdown_manager = None + + # ===== INITIALISIERE FEHLERRESILIENZ-SYSTEME ===== + try: + from utils.error_recovery import start_error_monitoring, stop_error_monitoring + from utils.system_control import get_system_control_manager + + # Error-Recovery-Monitoring starten + start_error_monitoring() + app_logger.info("✅ Error-Recovery-Monitoring gestartet") + + # System-Control-Manager initialisieren + system_control_manager = get_system_control_manager() + app_logger.info("✅ System-Control-Manager initialisiert") + + # Integriere in Shutdown-Manager + if shutdown_manager: + shutdown_manager.register_cleanup_function( + func=stop_error_monitoring, + name="Error Recovery Monitoring", + priority=2, + timeout=10 + ) + + except Exception as e: + app_logger.error(f"❌ Fehlerresilienz-Systeme konnten nicht initialisiert werden: {e}") + + # ===== KIOSK-SERVICE-OPTIMIERUNG ===== + try: + # Stelle sicher, dass der Kiosk-Service korrekt konfiguriert ist + kiosk_service_exists = os.path.exists('/etc/systemd/system/myp-kiosk.service') + if not kiosk_service_exists: + app_logger.warning("⚠️ Kiosk-Service nicht gefunden - Kiosk-Funktionen eventuell eingeschränkt") + else: + app_logger.info("✅ Kiosk-Service-Konfiguration gefunden") + + except Exception as e: + app_logger.error(f"❌ Kiosk-Service-Check fehlgeschlagen: {e}") # Windows-spezifisches Signal-Handling als Fallback def fallback_signal_handler(sig, frame): diff --git a/backend/database/myp.db b/backend/database/myp.db index b1f4b1c1..773df704 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 deleted file mode 100644 index 55625480..00000000 Binary files a/backend/database/myp.db-shm and /dev/null differ diff --git a/backend/database/myp.db-wal b/backend/database/myp.db-wal deleted file mode 100644 index 8a935de0..00000000 Binary files a/backend/database/myp.db-wal and /dev/null differ diff --git a/backend/docs/FEHLERRESILIENZ_WARTUNGSFREIER_BETRIEB.md b/backend/docs/FEHLERRESILIENZ_WARTUNGSFREIER_BETRIEB.md new file mode 100644 index 00000000..0519ecba --- /dev/null +++ b/backend/docs/FEHLERRESILIENZ_WARTUNGSFREIER_BETRIEB.md @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/backend/logs/analytics/analytics.log b/backend/logs/analytics/analytics.log index 8075c20c..f153c2e2 100644 --- a/backend/logs/analytics/analytics.log +++ b/backend/logs/analytics/analytics.log @@ -112,3 +112,5 @@ 2025-06-02 14:30:43 - [analytics] analytics - [INFO] INFO - 📈 Analytics Engine initialisiert 2025-06-02 14:34:09 - [analytics] analytics - [INFO] INFO - 📈 Analytics Engine initialisiert 2025-06-02 14:43:36 - [analytics] analytics - [INFO] INFO - 📈 Analytics Engine initialisiert +2025-06-02 14:50:27 - [analytics] analytics - [INFO] INFO - 📈 Analytics Engine initialisiert +2025-06-02 14:51:08 - [analytics] analytics - [INFO] INFO - 📈 Analytics Engine initialisiert diff --git a/backend/logs/app/app.log b/backend/logs/app/app.log index bbbb762e..d444bb0c 100644 --- a/backend/logs/app/app.log +++ b/backend/logs/app/app.log @@ -2925,3 +2925,56 @@ WHERE jobs.status = ?) AS anon_1] 2025-06-02 14:43:49 - [app] app - [ERROR] ERROR - Datenbank-Transaktion fehlgeschlagen: name 'func' is not defined 2025-06-02 14:43:49 - [app] app - [ERROR] ERROR - Fehler beim Erstellen der Steckdosen-Statistiken: name 'func' is not defined 2025-06-02 14:43:51 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_plug_schedules_calendar: User authenticated: True, User ID: 1, Is Admin: True +2025-06-02 14:50:27 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\database\myp.db +2025-06-02 14:50:28 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O) +2025-06-02 14:50:28 - [app] app - [INFO] INFO - ✅ Timeout Force-Quit Manager geladen +2025-06-02 14:50:28 - [app] app - [INFO] INFO - ✅ Zentraler Shutdown-Manager initialisiert +2025-06-02 14:50:28 - [app] app - [INFO] INFO - 🔄 Starte Datenbank-Setup und Migrationen... +2025-06-02 14:50:28 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert +2025-06-02 14:50:28 - [app] app - [INFO] INFO - ✅ JobOrder-Tabelle bereits vorhanden +2025-06-02 14:50:28 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt. +2025-06-02 14:50:28 - [app] app - [INFO] INFO - ✅ Datenbank-Setup und Migrationen erfolgreich abgeschlossen +2025-06-02 14:50:28 - [app] app - [INFO] INFO - 🖨️ Starte automatische Steckdosen-Initialisierung... +2025-06-02 14:50:30 - [app] app - [INFO] INFO - Steckdosen-Status geloggt: Drucker 4, Status: disconnected, Quelle: system +2025-06-02 14:50:32 - [app] app - [INFO] INFO - Steckdosen-Status geloggt: Drucker 5, Status: disconnected, Quelle: system +2025-06-02 14:50:32 - [app] app - [INFO] INFO - ✅ Steckdosen-Initialisierung: 0/2 Drucker erfolgreich +2025-06-02 14:50:32 - [app] app - [WARNING] WARNING - ⚠️ 2 Drucker konnten nicht initialisiert werden +2025-06-02 14:50:32 - [app] app - [INFO] INFO - 🔄 Debug-Modus: Queue Manager deaktiviert für Entwicklung +2025-06-02 14:50:32 - [app] app - [INFO] INFO - Job-Scheduler gestartet +2025-06-02 14:50:32 - [app] app - [INFO] INFO - Starte Debug-Server auf 0.0.0.0:5000 (HTTP) +2025-06-02 14:50:32 - [app] app - [INFO] INFO - Windows-Debug-Modus: Auto-Reload deaktiviert +2025-06-02 14:50:33 - [app] app - [INFO] INFO - Benutzer admin@mercedes-benz.com hat sich abgemeldet +2025-06-02 14:50:44 - [app] app - [INFO] INFO - Admin-Check für Funktion admin_plug_schedules: User authenticated: True, User ID: 1, Is Admin: True +2025-06-02 14:50:44 - [app] app - [INFO] INFO - Admin Administrator (ID: 1) öffnet Steckdosenschaltzeiten +2025-06-02 14:50:44 - [app] app - [ERROR] ERROR - Datenbank-Transaktion fehlgeschlagen: name 'func' is not defined +2025-06-02 14:50:44 - [app] app - [ERROR] ERROR - Fehler beim Erstellen der Steckdosen-Statistiken: name 'func' is not defined +2025-06-02 14:50:46 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_plug_schedules_calendar: User authenticated: True, User ID: 1, Is Admin: True +2025-06-02 14:50:46 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_plug_schedules_statistics: User authenticated: True, User ID: 1, Is Admin: True +2025-06-02 14:50:46 - [app] app - [ERROR] ERROR - Datenbank-Transaktion fehlgeschlagen: name 'func' is not defined +2025-06-02 14:50:46 - [app] app - [ERROR] ERROR - Fehler beim Erstellen der Steckdosen-Statistiken: name 'func' is not defined +2025-06-02 14:51:08 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\database\myp.db +2025-06-02 14:51:09 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O) +2025-06-02 14:51:09 - [app] app - [INFO] INFO - ✅ Timeout Force-Quit Manager geladen +2025-06-02 14:51:09 - [app] app - [INFO] INFO - ✅ Zentraler Shutdown-Manager initialisiert +2025-06-02 14:51:09 - [app] app - [INFO] INFO - 🔄 Starte Datenbank-Setup und Migrationen... +2025-06-02 14:51:09 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert +2025-06-02 14:51:09 - [app] app - [INFO] INFO - ✅ JobOrder-Tabelle bereits vorhanden +2025-06-02 14:51:09 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt. +2025-06-02 14:51:09 - [app] app - [INFO] INFO - ✅ Datenbank-Setup und Migrationen erfolgreich abgeschlossen +2025-06-02 14:51:09 - [app] app - [INFO] INFO - 🖨️ Starte automatische Steckdosen-Initialisierung... +2025-06-02 14:51:12 - [app] app - [INFO] INFO - Steckdosen-Status geloggt: Drucker 4, Status: disconnected, Quelle: system +2025-06-02 14:51:14 - [app] app - [INFO] INFO - Steckdosen-Status geloggt: Drucker 5, Status: disconnected, Quelle: system +2025-06-02 14:51:14 - [app] app - [INFO] INFO - ✅ Steckdosen-Initialisierung: 0/2 Drucker erfolgreich +2025-06-02 14:51:14 - [app] app - [WARNING] WARNING - ⚠️ 2 Drucker konnten nicht initialisiert werden +2025-06-02 14:51:14 - [app] app - [INFO] INFO - 🔄 Debug-Modus: Queue Manager deaktiviert für Entwicklung +2025-06-02 14:51:14 - [app] app - [INFO] INFO - Job-Scheduler gestartet +2025-06-02 14:51:14 - [app] app - [INFO] INFO - Starte Debug-Server auf 0.0.0.0:5000 (HTTP) +2025-06-02 14:51:14 - [app] app - [INFO] INFO - Windows-Debug-Modus: Auto-Reload deaktiviert +2025-06-02 14:51:14 - [app] app - [INFO] INFO - Admin-Check für Funktion admin_plug_schedules: User authenticated: True, User ID: 1, Is Admin: True +2025-06-02 14:51:14 - [app] app - [INFO] INFO - Admin Administrator (ID: 1) öffnet Steckdosenschaltzeiten +2025-06-02 14:51:14 - [app] app - [ERROR] ERROR - Datenbank-Transaktion fehlgeschlagen: name 'func' is not defined +2025-06-02 14:51:14 - [app] app - [ERROR] ERROR - Fehler beim Erstellen der Steckdosen-Statistiken: name 'func' is not defined +2025-06-02 14:51:15 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_plug_schedules_calendar: User authenticated: True, User ID: 1, Is Admin: True +2025-06-02 14:51:15 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_plug_schedules_statistics: User authenticated: True, User ID: 1, Is Admin: True +2025-06-02 14:51:15 - [app] app - [ERROR] ERROR - Datenbank-Transaktion fehlgeschlagen: name 'func' is not defined +2025-06-02 14:51:15 - [app] app - [ERROR] ERROR - Fehler beim Erstellen der Steckdosen-Statistiken: name 'func' is not defined diff --git a/backend/logs/auth/auth.log b/backend/logs/auth/auth.log index 28175ad2..9be47f50 100644 --- a/backend/logs/auth/auth.log +++ b/backend/logs/auth/auth.log @@ -71,3 +71,5 @@ 2025-06-02 14:27:04 - [auth] auth - [WARNING] WARNING - JSON-Parsing fehlgeschlagen: 400 Bad Request: Failed to decode JSON object: Expecting value: line 1 column 1 (char 0) 2025-06-02 14:27:05 - [auth] auth - [INFO] INFO - Benutzer admin@mercedes-benz.com hat sich erfolgreich angemeldet 2025-06-02 14:27:06 - [auth] auth - [INFO] INFO - 🔐 Neue Session erstellt für Benutzer admin@mercedes-benz.com von IP 127.0.0.1 +2025-06-02 14:50:38 - [auth] auth - [WARNING] WARNING - JSON-Parsing fehlgeschlagen: 400 Bad Request: Failed to decode JSON object: Expecting value: line 1 column 1 (char 0) +2025-06-02 14:50:38 - [auth] auth - [INFO] INFO - Benutzer admin@mercedes-benz.com hat sich erfolgreich angemeldet diff --git a/backend/logs/backup/backup.log b/backend/logs/backup/backup.log index f3c07d96..c18d8266 100644 --- a/backend/logs/backup/backup.log +++ b/backend/logs/backup/backup.log @@ -116,3 +116,5 @@ 2025-06-02 14:30:43 - [backup] backup - [INFO] INFO - BackupManager initialisiert (minimal implementation) 2025-06-02 14:34:08 - [backup] backup - [INFO] INFO - BackupManager initialisiert (minimal implementation) 2025-06-02 14:43:36 - [backup] backup - [INFO] INFO - BackupManager initialisiert (minimal implementation) +2025-06-02 14:50:27 - [backup] backup - [INFO] INFO - BackupManager initialisiert (minimal implementation) +2025-06-02 14:51:08 - [backup] backup - [INFO] INFO - BackupManager initialisiert (minimal implementation) diff --git a/backend/logs/dashboard/dashboard.log b/backend/logs/dashboard/dashboard.log index b9433086..abb02cee 100644 --- a/backend/logs/dashboard/dashboard.log +++ b/backend/logs/dashboard/dashboard.log @@ -449,3 +449,11 @@ 2025-06-02 14:43:37 - [dashboard] dashboard - [INFO] INFO - Dashboard-Background-Worker gestartet 2025-06-02 14:43:37 - [dashboard] dashboard - [INFO] INFO - Dashboard WebSocket-Server wird mit threading initialisiert (eventlet-Fallback) 2025-06-02 14:43:37 - [dashboard] dashboard - [INFO] INFO - Dashboard WebSocket-Server initialisiert (async_mode: threading) +2025-06-02 14:50:28 - [dashboard] dashboard - [INFO] INFO - Dashboard-Background-Worker gestartet +2025-06-02 14:50:28 - [dashboard] dashboard - [INFO] INFO - Dashboard-Background-Worker gestartet +2025-06-02 14:50:28 - [dashboard] dashboard - [INFO] INFO - Dashboard WebSocket-Server wird mit threading initialisiert (eventlet-Fallback) +2025-06-02 14:50:28 - [dashboard] dashboard - [INFO] INFO - Dashboard WebSocket-Server initialisiert (async_mode: threading) +2025-06-02 14:51:09 - [dashboard] dashboard - [INFO] INFO - Dashboard-Background-Worker gestartet +2025-06-02 14:51:09 - [dashboard] dashboard - [INFO] INFO - Dashboard-Background-Worker gestartet +2025-06-02 14:51:09 - [dashboard] dashboard - [INFO] INFO - Dashboard WebSocket-Server wird mit threading initialisiert (eventlet-Fallback) +2025-06-02 14:51:09 - [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 c4fe4f1a..0091fc7c 100644 --- a/backend/logs/database/database.log +++ b/backend/logs/database/database.log @@ -112,3 +112,5 @@ 2025-06-02 14:30:43 - [database] database - [INFO] INFO - Datenbank-Wartungs-Scheduler gestartet 2025-06-02 14:34:08 - [database] database - [INFO] INFO - Datenbank-Wartungs-Scheduler gestartet 2025-06-02 14:43:36 - [database] database - [INFO] INFO - Datenbank-Wartungs-Scheduler gestartet +2025-06-02 14:50:27 - [database] database - [INFO] INFO - Datenbank-Wartungs-Scheduler gestartet +2025-06-02 14:51:08 - [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 75ed2ec7..0c581ee4 100644 --- a/backend/logs/email_notification/email_notification.log +++ b/backend/logs/email_notification/email_notification.log @@ -109,3 +109,5 @@ 2025-06-02 14:30:44 - [email_notification] email_notification - [INFO] INFO - 📧 Offline-E-Mail-Benachrichtigung initialisiert (kein echter E-Mail-Versand) 2025-06-02 14:34:09 - [email_notification] email_notification - [INFO] INFO - 📧 Offline-E-Mail-Benachrichtigung initialisiert (kein echter E-Mail-Versand) 2025-06-02 14:43:37 - [email_notification] email_notification - [INFO] INFO - 📧 Offline-E-Mail-Benachrichtigung initialisiert (kein echter E-Mail-Versand) +2025-06-02 14:50:28 - [email_notification] email_notification - [INFO] INFO - 📧 Offline-E-Mail-Benachrichtigung initialisiert (kein echter E-Mail-Versand) +2025-06-02 14:51:09 - [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 1f79f4a0..15b79d2b 100644 --- a/backend/logs/jobs/jobs.log +++ b/backend/logs/jobs/jobs.log @@ -131,3 +131,8 @@ WHERE printers.id = ?] 2025-06-02 10:03:40 - [jobs] jobs - [INFO] INFO - Jobs abgerufen: 16 von 16 (Seite 1) 2025-06-02 10:03:47 - [jobs] jobs - [INFO] INFO - Jobs abgerufen: 16 von 16 (Seite 1) 2025-06-02 10:26:53 - [jobs] jobs - [INFO] INFO - Jobs abgerufen: 16 von 16 (Seite 1) +2025-06-02 14:51:31 - [jobs] jobs - [INFO] INFO - Jobs abgerufen: 16 von 16 (Seite 1) +2025-06-02 14:51:46 - [jobs] jobs - [INFO] INFO - Jobs abgerufen: 16 von 16 (Seite 1) +2025-06-02 14:52:01 - [jobs] jobs - [ERROR] ERROR - Fehler beim Abrufen von Jobs: tuple index out of range +2025-06-02 14:52:01 - [jobs] jobs - [INFO] INFO - Jobs abgerufen: 16 von 16 (Seite 1) +2025-06-02 14:52:16 - [jobs] jobs - [INFO] INFO - Jobs abgerufen: 16 von 16 (Seite 1) diff --git a/backend/logs/maintenance/maintenance.log b/backend/logs/maintenance/maintenance.log index 7a977417..21b662f1 100644 --- a/backend/logs/maintenance/maintenance.log +++ b/backend/logs/maintenance/maintenance.log @@ -224,3 +224,7 @@ 2025-06-02 14:34:09 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet 2025-06-02 14:43:37 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet 2025-06-02 14:43:37 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet +2025-06-02 14:50:28 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet +2025-06-02 14:50:28 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet +2025-06-02 14:51:09 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet +2025-06-02 14:51:09 - [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 d2ad5ca4..da0f730c 100644 --- a/backend/logs/multi_location/multi_location.log +++ b/backend/logs/multi_location/multi_location.log @@ -222,3 +222,7 @@ 2025-06-02 14:34:09 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt 2025-06-02 14:43:37 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt 2025-06-02 14:43:37 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt +2025-06-02 14:50:28 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt +2025-06-02 14:50:28 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt +2025-06-02 14:51:09 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt +2025-06-02 14:51:09 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt diff --git a/backend/logs/permissions/permissions.log b/backend/logs/permissions/permissions.log index 9f756d5a..5d715e8e 100644 --- a/backend/logs/permissions/permissions.log +++ b/backend/logs/permissions/permissions.log @@ -111,3 +111,5 @@ 2025-06-02 14:30:44 - [permissions] permissions - [INFO] INFO - 🔐 Permission Template Helpers registriert 2025-06-02 14:34:09 - [permissions] permissions - [INFO] INFO - 🔐 Permission Template Helpers registriert 2025-06-02 14:43:37 - [permissions] permissions - [INFO] INFO - 🔐 Permission Template Helpers registriert +2025-06-02 14:50:28 - [permissions] permissions - [INFO] INFO - 🔐 Permission Template Helpers registriert +2025-06-02 14:51:09 - [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 8341e7a6..72cdf38d 100644 --- a/backend/logs/printer_monitor/printer_monitor.log +++ b/backend/logs/printer_monitor/printer_monitor.log @@ -3200,3 +3200,37 @@ 2025-06-02 14:44:02 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 5/6: 192.168.0.102 2025-06-02 14:44:08 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 6/6: 192.168.0.105 2025-06-02 14:44:14 - [printer_monitor] printer_monitor - [INFO] INFO - ✅ Steckdosen-Erkennung abgeschlossen: 0/6 Steckdosen gefunden in 36.0s +2025-06-02 14:50:27 - [printer_monitor] printer_monitor - [INFO] INFO - 🖨️ Drucker-Monitor initialisiert +2025-06-02 14:50:27 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Automatische Tapo-Erkennung in separatem Thread gestartet +2025-06-02 14:50:28 - [printer_monitor] printer_monitor - [INFO] INFO - 🚀 Starte Steckdosen-Initialisierung beim Programmstart... +2025-06-02 14:50:29 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Starte automatische Tapo-Steckdosenerkennung... +2025-06-02 14:50:29 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Teste 6 Standard-IPs aus der Konfiguration +2025-06-02 14:50:29 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 1/6: 192.168.0.103 +2025-06-02 14:50:30 - [printer_monitor] printer_monitor - [WARNING] WARNING - ❌ Tapo P110 (192.168.0.103): Steckdose konnte nicht ausgeschaltet werden +2025-06-02 14:50:32 - [printer_monitor] printer_monitor - [WARNING] WARNING - ❌ Tapo P110 (192.168.0.104): Steckdose konnte nicht ausgeschaltet werden +2025-06-02 14:50:32 - [printer_monitor] printer_monitor - [INFO] INFO - 🎯 Steckdosen-Initialisierung abgeschlossen: 0/2 erfolgreich +2025-06-02 14:50:35 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 2/6: 192.168.0.104 +2025-06-02 14:50:41 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 3/6: 192.168.0.100 +2025-06-02 14:50:46 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-02 14:50:46 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Prüfe Status von 2 aktiven Druckern... +2025-06-02 14:50:47 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 4/6: 192.168.0.101 +2025-06-02 14:51:08 - [printer_monitor] printer_monitor - [INFO] INFO - 🖨️ Drucker-Monitor initialisiert +2025-06-02 14:51:08 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Automatische Tapo-Erkennung in separatem Thread gestartet +2025-06-02 14:51:09 - [printer_monitor] printer_monitor - [INFO] INFO - 🚀 Starte Steckdosen-Initialisierung beim Programmstart... +2025-06-02 14:51:10 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Starte automatische Tapo-Steckdosenerkennung... +2025-06-02 14:51:10 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Teste 6 Standard-IPs aus der Konfiguration +2025-06-02 14:51:10 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 1/6: 192.168.0.103 +2025-06-02 14:51:12 - [printer_monitor] printer_monitor - [WARNING] WARNING - ❌ Tapo P110 (192.168.0.103): Steckdose konnte nicht ausgeschaltet werden +2025-06-02 14:51:14 - [printer_monitor] printer_monitor - [WARNING] WARNING - ❌ Tapo P110 (192.168.0.104): Steckdose konnte nicht ausgeschaltet werden +2025-06-02 14:51:14 - [printer_monitor] printer_monitor - [INFO] INFO - 🎯 Steckdosen-Initialisierung abgeschlossen: 0/2 erfolgreich +2025-06-02 14:51:15 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... +2025-06-02 14:51:15 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Prüfe Status von 2 aktiven Druckern... +2025-06-02 14:51:16 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 2/6: 192.168.0.104 +2025-06-02 14:51:22 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 3/6: 192.168.0.100 +2025-06-02 14:51:24 - [printer_monitor] printer_monitor - [WARNING] WARNING - 🔌 Tapo P110 (192.168.0.103): UNREACHABLE (Ping fehlgeschlagen) +2025-06-02 14:51:24 - [printer_monitor] printer_monitor - [WARNING] WARNING - 🔌 Tapo P110 (192.168.0.104): UNREACHABLE (Ping fehlgeschlagen) +2025-06-02 14:51:24 - [printer_monitor] printer_monitor - [INFO] INFO - ✅ Status-Update abgeschlossen für 2 Drucker +2025-06-02 14:51:28 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 4/6: 192.168.0.101 +2025-06-02 14:51:34 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 5/6: 192.168.0.102 +2025-06-02 14:51:40 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 6/6: 192.168.0.105 +2025-06-02 14:51:46 - [printer_monitor] printer_monitor - [INFO] INFO - ✅ Steckdosen-Erkennung abgeschlossen: 0/6 Steckdosen gefunden in 36.0s diff --git a/backend/logs/printers/printers.log b/backend/logs/printers/printers.log index 0f30f2ba..90282f99 100644 --- a/backend/logs/printers/printers.log +++ b/backend/logs/printers/printers.log @@ -6604,3 +6604,38 @@ 2025-06-02 14:43:53 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) 2025-06-02 14:43:53 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 2 Drucker 2025-06-02 14:43:53 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 0.52ms +2025-06-02 14:44:21 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-02 14:44:21 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 2 Drucker +2025-06-02 14:44:21 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 0.32ms +2025-06-02 14:44:51 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-02 14:44:51 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 2 Drucker +2025-06-02 14:44:51 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 0.32ms +2025-06-02 14:45:21 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-02 14:45:21 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 2 Drucker +2025-06-02 14:45:21 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 0.30ms +2025-06-02 14:45:51 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-02 14:45:51 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 2 Drucker +2025-06-02 14:45:51 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 0.27ms +2025-06-02 14:46:21 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-02 14:46:21 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 2 Drucker +2025-06-02 14:46:21 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 0.29ms +2025-06-02 14:46:51 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-02 14:46:51 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 2 Drucker +2025-06-02 14:46:51 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 0.33ms +2025-06-02 14:47:21 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-02 14:47:21 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 2 Drucker +2025-06-02 14:47:21 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 0.31ms +2025-06-02 14:47:51 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-02 14:47:51 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 2 Drucker +2025-06-02 14:47:51 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 0.29ms +2025-06-02 14:50:46 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-02 14:51:15 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-02 14:51:24 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 2 Drucker +2025-06-02 14:51:24 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 9010.43ms +2025-06-02 14:51:27 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-02 14:51:27 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 2 Drucker +2025-06-02 14:51:27 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 1.68ms +2025-06-02 14:51:32 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check) +2025-06-02 14:52:02 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) +2025-06-02 14:52:02 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 2 Drucker +2025-06-02 14:52:02 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 0.66ms diff --git a/backend/logs/scheduler/scheduler.log b/backend/logs/scheduler/scheduler.log index 758c7345..941daaa3 100644 --- a/backend/logs/scheduler/scheduler.log +++ b/backend/logs/scheduler/scheduler.log @@ -27601,3 +27601,522 @@ 2025-06-02 14:34:31 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) 2025-06-02 14:34:31 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 6 nicht einschalten 2025-06-02 14:34:31 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 9: zi +2025-06-02 14:43:36 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True +2025-06-02 14:43:42 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet +2025-06-02 14:43:42 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet +2025-06-02 14:43:42 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 7: test +2025-06-02 14:43:44 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:43:44 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 7 nicht einschalten +2025-06-02 14:43:44 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 8: test +2025-06-02 14:43:46 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:43:46 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 8 nicht einschalten +2025-06-02 14:43:46 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: test +2025-06-02 14:43:48 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:43:48 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten +2025-06-02 14:43:48 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: test +2025-06-02 14:43:50 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:43:50 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten +2025-06-02 14:43:50 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 3: test +2025-06-02 14:43:52 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:43:52 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 3 nicht einschalten +2025-06-02 14:43:52 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 4: test +2025-06-02 14:43:55 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:43:55 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 4 nicht einschalten +2025-06-02 14:43:55 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 5: test +2025-06-02 14:43:57 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:43:57 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 5 nicht einschalten +2025-06-02 14:43:57 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 6: test +2025-06-02 14:43:59 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:43:59 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 6 nicht einschalten +2025-06-02 14:43:59 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 9: zi +2025-06-02 14:44:01 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-02 14:44:01 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 9 nicht einschalten +2025-06-02 14:44:01 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 10: zi +2025-06-02 14:44:03 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-02 14:44:03 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 10 nicht einschalten +2025-06-02 14:44:03 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 11: fee +2025-06-02 14:44:05 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-02 14:44:05 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 11 nicht einschalten +2025-06-02 14:44:05 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 12: fee +2025-06-02 14:44:07 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-02 14:44:07 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 12 nicht einschalten +2025-06-02 14:44:07 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 13: e2 +2025-06-02 14:44:09 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:44:09 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 13 nicht einschalten +2025-06-02 14:44:09 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 14: e2 +2025-06-02 14:44:11 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:44:11 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 14 nicht einschalten +2025-06-02 14:44:11 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 15: test +2025-06-02 14:44:13 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:44:13 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 15 nicht einschalten +2025-06-02 14:44:13 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 16: test +2025-06-02 14:44:15 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:44:15 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 16 nicht einschalten +2025-06-02 14:44:16 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 7: test +2025-06-02 14:44:19 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:44:19 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 7 nicht einschalten +2025-06-02 14:44:19 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 8: test +2025-06-02 14:44:21 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:44:21 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 8 nicht einschalten +2025-06-02 14:44:21 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: test +2025-06-02 14:44:23 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:44:23 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten +2025-06-02 14:44:23 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: test +2025-06-02 14:44:25 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:44:25 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten +2025-06-02 14:44:25 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 3: test +2025-06-02 14:44:27 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:44:27 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 3 nicht einschalten +2025-06-02 14:44:27 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 4: test +2025-06-02 14:44:29 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:44:29 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 4 nicht einschalten +2025-06-02 14:44:29 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 5: test +2025-06-02 14:44:31 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:44:31 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 5 nicht einschalten +2025-06-02 14:44:31 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 6: test +2025-06-02 14:44:33 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:44:33 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 6 nicht einschalten +2025-06-02 14:44:33 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 9: zi +2025-06-02 14:44:35 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-02 14:44:35 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 9 nicht einschalten +2025-06-02 14:44:35 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 10: zi +2025-06-02 14:44:37 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-02 14:44:37 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 10 nicht einschalten +2025-06-02 14:44:37 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 11: fee +2025-06-02 14:44:40 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-02 14:44:40 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 11 nicht einschalten +2025-06-02 14:44:40 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 12: fee +2025-06-02 14:44:42 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-02 14:44:42 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 12 nicht einschalten +2025-06-02 14:44:42 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 13: e2 +2025-06-02 14:44:44 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:44:44 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 13 nicht einschalten +2025-06-02 14:44:44 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 14: e2 +2025-06-02 14:44:46 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:44:46 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 14 nicht einschalten +2025-06-02 14:44:46 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 15: test +2025-06-02 14:44:48 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:44:48 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 15 nicht einschalten +2025-06-02 14:44:48 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 16: test +2025-06-02 14:44:50 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:44:50 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 16 nicht einschalten +2025-06-02 14:44:51 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 7: test +2025-06-02 14:44:53 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:44:53 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 7 nicht einschalten +2025-06-02 14:44:53 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 8: test +2025-06-02 14:44:55 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:44:55 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 8 nicht einschalten +2025-06-02 14:44:55 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: test +2025-06-02 14:44:57 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:44:57 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten +2025-06-02 14:44:57 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: test +2025-06-02 14:44:59 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:44:59 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten +2025-06-02 14:44:59 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 3: test +2025-06-02 14:45:01 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:45:01 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 3 nicht einschalten +2025-06-02 14:45:01 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 4: test +2025-06-02 14:45:03 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:45:03 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 4 nicht einschalten +2025-06-02 14:45:03 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 5: test +2025-06-02 14:45:05 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:45:05 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 5 nicht einschalten +2025-06-02 14:45:05 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 6: test +2025-06-02 14:45:08 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:45:08 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 6 nicht einschalten +2025-06-02 14:45:08 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 9: zi +2025-06-02 14:45:10 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-02 14:45:10 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 9 nicht einschalten +2025-06-02 14:45:10 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 10: zi +2025-06-02 14:45:12 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-02 14:45:12 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 10 nicht einschalten +2025-06-02 14:45:12 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 11: fee +2025-06-02 14:45:14 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-02 14:45:14 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 11 nicht einschalten +2025-06-02 14:45:14 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 12: fee +2025-06-02 14:45:16 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-02 14:45:16 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 12 nicht einschalten +2025-06-02 14:45:16 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 13: e2 +2025-06-02 14:45:18 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:45:18 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 13 nicht einschalten +2025-06-02 14:45:18 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 14: e2 +2025-06-02 14:45:20 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:45:20 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 14 nicht einschalten +2025-06-02 14:45:20 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 15: test +2025-06-02 14:45:22 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:45:22 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 15 nicht einschalten +2025-06-02 14:45:22 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 16: test +2025-06-02 14:45:25 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:45:25 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 16 nicht einschalten +2025-06-02 14:45:26 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 7: test +2025-06-02 14:45:28 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:45:28 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 7 nicht einschalten +2025-06-02 14:45:28 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 8: test +2025-06-02 14:45:30 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:45:30 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 8 nicht einschalten +2025-06-02 14:45:30 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: test +2025-06-02 14:45:32 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:45:32 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten +2025-06-02 14:45:32 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: test +2025-06-02 14:45:34 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:45:34 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten +2025-06-02 14:45:34 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 3: test +2025-06-02 14:45:36 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:45:36 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 3 nicht einschalten +2025-06-02 14:45:36 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 4: test +2025-06-02 14:45:38 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:45:38 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 4 nicht einschalten +2025-06-02 14:45:38 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 5: test +2025-06-02 14:45:41 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:45:41 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 5 nicht einschalten +2025-06-02 14:45:41 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 6: test +2025-06-02 14:45:43 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:45:43 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 6 nicht einschalten +2025-06-02 14:45:43 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 9: zi +2025-06-02 14:45:45 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-02 14:45:45 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 9 nicht einschalten +2025-06-02 14:45:45 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 10: zi +2025-06-02 14:45:47 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-02 14:45:47 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 10 nicht einschalten +2025-06-02 14:45:47 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 11: fee +2025-06-02 14:45:49 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-02 14:45:49 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 11 nicht einschalten +2025-06-02 14:45:49 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 12: fee +2025-06-02 14:45:51 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-02 14:45:51 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 12 nicht einschalten +2025-06-02 14:45:51 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 13: e2 +2025-06-02 14:45:53 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:45:53 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 13 nicht einschalten +2025-06-02 14:45:53 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 14: e2 +2025-06-02 14:45:55 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:45:55 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 14 nicht einschalten +2025-06-02 14:45:55 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 15: test +2025-06-02 14:45:57 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:45:57 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 15 nicht einschalten +2025-06-02 14:45:57 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 16: test +2025-06-02 14:45:59 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:45:59 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 16 nicht einschalten +2025-06-02 14:46:00 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 7: test +2025-06-02 14:46:02 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:46:02 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 7 nicht einschalten +2025-06-02 14:46:02 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 8: test +2025-06-02 14:46:04 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:46:04 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 8 nicht einschalten +2025-06-02 14:46:04 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: test +2025-06-02 14:46:06 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:46:06 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten +2025-06-02 14:46:06 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: test +2025-06-02 14:46:08 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:46:08 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten +2025-06-02 14:46:08 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 3: test +2025-06-02 14:46:11 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:46:11 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 3 nicht einschalten +2025-06-02 14:46:11 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 4: test +2025-06-02 14:46:13 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:46:13 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 4 nicht einschalten +2025-06-02 14:46:13 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 5: test +2025-06-02 14:46:15 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:46:15 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 5 nicht einschalten +2025-06-02 14:46:15 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 6: test +2025-06-02 14:46:17 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:46:17 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 6 nicht einschalten +2025-06-02 14:46:17 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 9: zi +2025-06-02 14:46:19 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-02 14:46:19 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 9 nicht einschalten +2025-06-02 14:46:19 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 10: zi +2025-06-02 14:46:21 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-02 14:46:21 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 10 nicht einschalten +2025-06-02 14:46:21 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 11: fee +2025-06-02 14:46:23 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-02 14:46:23 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 11 nicht einschalten +2025-06-02 14:46:23 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 12: fee +2025-06-02 14:46:25 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-02 14:46:25 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 12 nicht einschalten +2025-06-02 14:46:25 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 13: e2 +2025-06-02 14:46:27 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:46:27 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 13 nicht einschalten +2025-06-02 14:46:27 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 14: e2 +2025-06-02 14:46:29 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:46:29 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 14 nicht einschalten +2025-06-02 14:46:29 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 15: test +2025-06-02 14:46:31 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:46:31 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 15 nicht einschalten +2025-06-02 14:46:31 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 16: test +2025-06-02 14:46:33 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:46:33 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 16 nicht einschalten +2025-06-02 14:46:34 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 7: test +2025-06-02 14:46:36 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:46:36 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 7 nicht einschalten +2025-06-02 14:46:36 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 8: test +2025-06-02 14:46:38 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:46:38 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 8 nicht einschalten +2025-06-02 14:46:38 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: test +2025-06-02 14:46:40 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:46:40 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten +2025-06-02 14:46:40 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: test +2025-06-02 14:46:43 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:46:43 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten +2025-06-02 14:46:43 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 3: test +2025-06-02 14:46:45 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:46:45 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 3 nicht einschalten +2025-06-02 14:46:45 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 4: test +2025-06-02 14:46:47 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:46:47 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 4 nicht einschalten +2025-06-02 14:46:47 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 5: test +2025-06-02 14:46:49 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:46:49 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 5 nicht einschalten +2025-06-02 14:46:49 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 6: test +2025-06-02 14:46:51 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:46:51 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 6 nicht einschalten +2025-06-02 14:46:51 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 9: zi +2025-06-02 14:46:53 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-02 14:46:53 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 9 nicht einschalten +2025-06-02 14:46:53 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 10: zi +2025-06-02 14:46:55 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-02 14:46:55 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 10 nicht einschalten +2025-06-02 14:46:55 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 11: fee +2025-06-02 14:46:57 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-02 14:46:57 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 11 nicht einschalten +2025-06-02 14:46:57 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 12: fee +2025-06-02 14:46:59 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-02 14:46:59 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 12 nicht einschalten +2025-06-02 14:46:59 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 13: e2 +2025-06-02 14:47:01 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:47:01 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 13 nicht einschalten +2025-06-02 14:47:01 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 14: e2 +2025-06-02 14:47:03 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:47:03 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 14 nicht einschalten +2025-06-02 14:47:03 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 15: test +2025-06-02 14:47:05 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:47:05 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 15 nicht einschalten +2025-06-02 14:47:05 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 16: test +2025-06-02 14:47:08 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:47:08 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 16 nicht einschalten +2025-06-02 14:47:09 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 7: test +2025-06-02 14:47:11 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:47:11 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 7 nicht einschalten +2025-06-02 14:47:11 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 8: test +2025-06-02 14:47:13 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:47:13 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 8 nicht einschalten +2025-06-02 14:47:13 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: test +2025-06-02 14:47:15 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:47:15 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten +2025-06-02 14:47:15 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: test +2025-06-02 14:47:17 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:47:17 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten +2025-06-02 14:47:17 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 3: test +2025-06-02 14:47:19 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:47:19 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 3 nicht einschalten +2025-06-02 14:47:19 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 4: test +2025-06-02 14:47:22 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:47:22 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 4 nicht einschalten +2025-06-02 14:47:22 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 5: test +2025-06-02 14:47:24 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:47:24 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 5 nicht einschalten +2025-06-02 14:47:24 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 6: test +2025-06-02 14:47:26 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:47:26 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 6 nicht einschalten +2025-06-02 14:47:26 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 9: zi +2025-06-02 14:47:28 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-02 14:47:28 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 9 nicht einschalten +2025-06-02 14:47:28 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 10: zi +2025-06-02 14:47:30 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-02 14:47:30 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 10 nicht einschalten +2025-06-02 14:47:30 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 11: fee +2025-06-02 14:47:32 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-02 14:47:32 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 11 nicht einschalten +2025-06-02 14:47:32 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 12: fee +2025-06-02 14:47:34 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-02 14:47:34 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 12 nicht einschalten +2025-06-02 14:47:34 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 13: e2 +2025-06-02 14:47:36 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:47:36 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 13 nicht einschalten +2025-06-02 14:47:36 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 14: e2 +2025-06-02 14:47:38 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:47:38 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 14 nicht einschalten +2025-06-02 14:47:38 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 15: test +2025-06-02 14:47:41 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:47:41 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 15 nicht einschalten +2025-06-02 14:47:41 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 16: test +2025-06-02 14:47:43 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:47:43 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 16 nicht einschalten +2025-06-02 14:47:44 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 7: test +2025-06-02 14:47:46 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:47:46 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 7 nicht einschalten +2025-06-02 14:47:46 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 8: test +2025-06-02 14:47:48 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:47:48 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 8 nicht einschalten +2025-06-02 14:47:48 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: test +2025-06-02 14:47:50 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:47:50 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten +2025-06-02 14:47:50 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: test +2025-06-02 14:47:52 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:47:52 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten +2025-06-02 14:47:52 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 3: test +2025-06-02 14:47:54 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:47:54 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 3 nicht einschalten +2025-06-02 14:47:54 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 4: test +2025-06-02 14:47:56 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:47:56 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 4 nicht einschalten +2025-06-02 14:47:56 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 5: test +2025-06-02 14:47:58 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:47:58 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 5 nicht einschalten +2025-06-02 14:47:58 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 6: test +2025-06-02 14:48:01 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:48:01 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 6 nicht einschalten +2025-06-02 14:48:01 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 9: zi +2025-06-02 14:48:03 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-02 14:48:03 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 9 nicht einschalten +2025-06-02 14:48:03 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 10: zi +2025-06-02 14:48:05 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-02 14:48:05 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 10 nicht einschalten +2025-06-02 14:48:05 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 11: fee +2025-06-02 14:48:07 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-02 14:48:07 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 11 nicht einschalten +2025-06-02 14:48:07 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 12: fee +2025-06-02 14:48:09 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-02 14:48:09 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 12 nicht einschalten +2025-06-02 14:48:09 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 13: e2 +2025-06-02 14:48:11 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:48:11 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 13 nicht einschalten +2025-06-02 14:48:11 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 14: e2 +2025-06-02 14:48:13 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:48:13 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 14 nicht einschalten +2025-06-02 14:48:13 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 15: test +2025-06-02 14:48:15 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:48:15 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 15 nicht einschalten +2025-06-02 14:48:15 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 16: test +2025-06-02 14:48:17 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:48:17 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 16 nicht einschalten +2025-06-02 14:48:18 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 7: test +2025-06-02 14:48:20 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:48:20 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 7 nicht einschalten +2025-06-02 14:48:20 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 8: test +2025-06-02 14:50:27 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True +2025-06-02 14:50:32 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet +2025-06-02 14:50:32 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet +2025-06-02 14:50:32 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 7: test +2025-06-02 14:50:34 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:50:34 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 7 nicht einschalten +2025-06-02 14:50:34 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 8: test +2025-06-02 14:50:37 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:50:37 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 8 nicht einschalten +2025-06-02 14:50:37 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: test +2025-06-02 14:50:39 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:50:39 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten +2025-06-02 14:50:39 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: test +2025-06-02 14:50:41 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:50:41 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten +2025-06-02 14:50:41 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 3: test +2025-06-02 14:50:43 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:50:43 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 3 nicht einschalten +2025-06-02 14:50:43 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 4: test +2025-06-02 14:50:45 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:50:45 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 4 nicht einschalten +2025-06-02 14:50:45 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 5: test +2025-06-02 14:50:47 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:50:47 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 5 nicht einschalten +2025-06-02 14:50:47 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 6: test +2025-06-02 14:50:49 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:50:49 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 6 nicht einschalten +2025-06-02 14:50:49 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 9: zi +2025-06-02 14:50:51 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-02 14:50:51 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 9 nicht einschalten +2025-06-02 14:50:51 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 10: zi +2025-06-02 14:51:08 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True +2025-06-02 14:51:14 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet +2025-06-02 14:51:14 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet +2025-06-02 14:51:14 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 7: test +2025-06-02 14:51:16 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:51:16 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 7 nicht einschalten +2025-06-02 14:51:16 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 8: test +2025-06-02 14:51:18 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:51:18 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 8 nicht einschalten +2025-06-02 14:51:18 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: test +2025-06-02 14:51:20 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:51:20 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten +2025-06-02 14:51:20 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: test +2025-06-02 14:51:22 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:51:22 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten +2025-06-02 14:51:22 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 3: test +2025-06-02 14:51:24 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:51:24 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 3 nicht einschalten +2025-06-02 14:51:24 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 4: test +2025-06-02 14:51:26 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:51:26 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 4 nicht einschalten +2025-06-02 14:51:26 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 5: test +2025-06-02 14:51:28 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:51:28 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 5 nicht einschalten +2025-06-02 14:51:28 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 6: test +2025-06-02 14:51:30 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:51:30 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 6 nicht einschalten +2025-06-02 14:51:30 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 9: zi +2025-06-02 14:51:32 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-02 14:51:32 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 9 nicht einschalten +2025-06-02 14:51:32 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 10: zi +2025-06-02 14:51:34 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-02 14:51:34 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 10 nicht einschalten +2025-06-02 14:51:34 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 11: fee +2025-06-02 14:51:36 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-02 14:51:36 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 11 nicht einschalten +2025-06-02 14:51:36 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 12: fee +2025-06-02 14:51:38 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-02 14:51:38 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 12 nicht einschalten +2025-06-02 14:51:38 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 13: e2 +2025-06-02 14:51:41 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:51:41 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 13 nicht einschalten +2025-06-02 14:51:41 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 14: e2 +2025-06-02 14:51:43 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:51:43 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 14 nicht einschalten +2025-06-02 14:51:43 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 15: test +2025-06-02 14:51:45 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:51:45 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 15 nicht einschalten +2025-06-02 14:51:45 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 16: test +2025-06-02 14:51:47 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:51:47 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 16 nicht einschalten +2025-06-02 14:51:48 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 7: test +2025-06-02 14:51:50 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:51:50 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 7 nicht einschalten +2025-06-02 14:51:50 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 8: test +2025-06-02 14:51:52 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:51:52 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 8 nicht einschalten +2025-06-02 14:51:52 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 1: test +2025-06-02 14:51:54 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:51:54 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 1 nicht einschalten +2025-06-02 14:51:54 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 2: test +2025-06-02 14:51:56 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:51:56 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 2 nicht einschalten +2025-06-02 14:51:56 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 3: test +2025-06-02 14:51:59 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:51:59 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 3 nicht einschalten +2025-06-02 14:51:59 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 4: test +2025-06-02 14:52:01 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:52:01 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 4 nicht einschalten +2025-06-02 14:52:01 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 5: test +2025-06-02 14:52:03 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:52:03 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 5 nicht einschalten +2025-06-02 14:52:03 - [scheduler] scheduler - [INFO] INFO - 🚀 Starte geplanten Job 6: test +2025-06-02 14:52:05 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:52:05 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Job 6 nicht einschalten +2025-06-02 14:52:05 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 9: zi +2025-06-02 14:52:07 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-02 14:52:07 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 9 nicht einschalten +2025-06-02 14:52:07 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 10: zi +2025-06-02 14:52:09 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-02 14:52:09 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 10 nicht einschalten +2025-06-02 14:52:09 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 11: fee +2025-06-02 14:52:11 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-02 14:52:11 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 11 nicht einschalten +2025-06-02 14:52:11 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 12: fee +2025-06-02 14:52:13 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.104: HTTPConnectionPool(host='192.168.0.104', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.104 timed out. (connect timeout=2)')) +2025-06-02 14:52:13 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 12 nicht einschalten +2025-06-02 14:52:13 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 13: e2 +2025-06-02 14:52:16 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:52:16 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 13 nicht einschalten +2025-06-02 14:52:16 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 14: e2 +2025-06-02 14:52:18 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:52:18 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 14 nicht einschalten +2025-06-02 14:52:18 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 15: test +2025-06-02 14:52:20 - [scheduler] scheduler - [ERROR] ERROR - ❌ Fehler beim einschalten der Tapo-Steckdose 192.168.0.103: HTTPConnectionPool(host='192.168.0.103', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.103 timed out. (connect timeout=2)')) +2025-06-02 14:52:20 - [scheduler] scheduler - [ERROR] ERROR - ❌ Konnte Steckdose für Sofort-Job 15 nicht einschalten +2025-06-02 14:52:20 - [scheduler] scheduler - [INFO] INFO - ⚡ Starte Sofort-Job 16: test diff --git a/backend/logs/security/security.log b/backend/logs/security/security.log index a90cd5a3..baafd7ea 100644 --- a/backend/logs/security/security.log +++ b/backend/logs/security/security.log @@ -111,3 +111,5 @@ 2025-06-02 14:30:44 - [security] security - [INFO] INFO - 🔒 Security System initialisiert 2025-06-02 14:34:09 - [security] security - [INFO] INFO - 🔒 Security System initialisiert 2025-06-02 14:43:37 - [security] security - [INFO] INFO - 🔒 Security System initialisiert +2025-06-02 14:50:28 - [security] security - [INFO] INFO - 🔒 Security System initialisiert +2025-06-02 14:51:09 - [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 e7682ec1..665ba151 100644 --- a/backend/logs/shutdown_manager/shutdown_manager.log +++ b/backend/logs/shutdown_manager/shutdown_manager.log @@ -197,3 +197,5 @@ 2025-06-02 14:30:44 - [shutdown_manager] shutdown_manager - [INFO] INFO - 🔧 Shutdown-Manager initialisiert 2025-06-02 14:34:09 - [shutdown_manager] shutdown_manager - [INFO] INFO - 🔧 Shutdown-Manager initialisiert 2025-06-02 14:43:37 - [shutdown_manager] shutdown_manager - [INFO] INFO - 🔧 Shutdown-Manager initialisiert +2025-06-02 14:50:28 - [shutdown_manager] shutdown_manager - [INFO] INFO - 🔧 Shutdown-Manager initialisiert +2025-06-02 14:51:09 - [shutdown_manager] shutdown_manager - [INFO] INFO - 🔧 Shutdown-Manager initialisiert diff --git a/backend/logs/startup/startup.log b/backend/logs/startup/startup.log index cc249e27..4caad282 100644 --- a/backend/logs/startup/startup.log +++ b/backend/logs/startup/startup.log @@ -1007,3 +1007,21 @@ 2025-06-02 14:43:37 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert 2025-06-02 14:43:37 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert 2025-06-02 14:43:37 - [startup] startup - [INFO] INFO - ================================================== +2025-06-02 14:50:28 - [startup] startup - [INFO] INFO - ================================================== +2025-06-02 14:50:28 - [startup] startup - [INFO] INFO - 🚀 MYP Platform Backend wird gestartet... +2025-06-02 14:50:28 - [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-02 14:50:28 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: nt (win32) +2025-06-02 14:50:28 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend +2025-06-02 14:50:28 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-02T14:50:28.305696 +2025-06-02 14:50:28 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert +2025-06-02 14:50:28 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert +2025-06-02 14:50:28 - [startup] startup - [INFO] INFO - ================================================== +2025-06-02 14:51:09 - [startup] startup - [INFO] INFO - ================================================== +2025-06-02 14:51:09 - [startup] startup - [INFO] INFO - 🚀 MYP Platform Backend wird gestartet... +2025-06-02 14:51:09 - [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-02 14:51:09 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: nt (win32) +2025-06-02 14:51:09 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend +2025-06-02 14:51:09 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-02T14:51:09.300938 +2025-06-02 14:51:09 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert +2025-06-02 14:51:09 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert +2025-06-02 14:51:09 - [startup] startup - [INFO] INFO - ================================================== diff --git a/backend/logs/windows_fixes/windows_fixes.log b/backend/logs/windows_fixes/windows_fixes.log index 7bf9a681..431917ac 100644 --- a/backend/logs/windows_fixes/windows_fixes.log +++ b/backend/logs/windows_fixes/windows_fixes.log @@ -479,3 +479,11 @@ 2025-06-02 14:43:36 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Subprocess automatisch gepatcht für UTF-8 Encoding (run + Popen) 2025-06-02 14:43:36 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Globaler subprocess-Patch angewendet 2025-06-02 14:43:36 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet +2025-06-02 14:50:27 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an... +2025-06-02 14:50:27 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Subprocess automatisch gepatcht für UTF-8 Encoding (run + Popen) +2025-06-02 14:50:27 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Globaler subprocess-Patch angewendet +2025-06-02 14:50:27 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet +2025-06-02 14:51:08 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an... +2025-06-02 14:51:08 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Subprocess automatisch gepatcht für UTF-8 Encoding (run + Popen) +2025-06-02 14:51:08 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Globaler subprocess-Patch angewendet +2025-06-02 14:51:08 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet diff --git a/backend/static/css/tailwind.min.css b/backend/static/css/tailwind.min.css index 45b3eafb..a5877ceb 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.\!warning{border-left:4px solid #fbbf24!important;background:linear-gradient(135deg,rgba(255,251,235,.95),hsla(48,96%,89%,.9))!important}.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-6{top:1.5rem}.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-3{margin-left:.75rem;margin-right:.75rem}.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}.ml-auto{margin-left:auto}.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-64{max-height:16rem}.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}.list-none{list-style-type:none}.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-b-3xl{border-bottom-right-radius:1.5rem;border-bottom-left-radius:1.5rem}.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}.rounded-t-3xl{border-top-left-radius:1.5rem;border-top-right-radius:1.5rem}.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{border-left-width:1px}.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))}.border-t-transparent{border-top-color:transparent}.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-50{--tw-bg-opacity:1;background-color:rgb(236 253 245/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-300{--tw-bg-opacity:1;background-color:rgb(134 239 172/var(--tw-bg-opacity,1))}.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-300{--tw-bg-opacity:1;background-color:rgb(252 165 165/var(--tw-bg-opacity,1))}.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-700{--tw-bg-opacity:1;background-color:rgb(51 65 85/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-300{--tw-bg-opacity:1;background-color:rgb(253 224 71/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-amber-500{--tw-gradient-from:#f59e0b var(--tw-gradient-from-position);--tw-gradient-to:rgba(245,158,11,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-indigo-500{--tw-gradient-from:#6366f1 var(--tw-gradient-from-position);--tw-gradient-to:rgba(99,102,241,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)}.from-yellow-500{--tw-gradient-from:#eab308 var(--tw-gradient-from-position);--tw-gradient-to:rgba(234,179,8,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-amber-600{--tw-gradient-to:#d97706 var(--tw-gradient-to-position)}.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{--tw-gradient-to:#ef4444 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)}.to-yellow-600{--tw-gradient-to:#ca8a04 var(--tw-gradient-to-position)}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.fill-current{fill:currentColor}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:0}.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-2{padding-top:.5rem}.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-700{--tw-text-opacity:1;color:rgb(180 83 9/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-300{--tw-text-opacity:1;color:rgb(147 197 253/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-300{--tw-text-opacity:1;color:rgb(110 231 183/var(--tw-text-opacity,1))}.text-emerald-600{--tw-text-opacity:1;color:rgb(5 150 105/var(--tw-text-opacity,1))}.text-emerald-700{--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity,1))}.text-emerald-800{--tw-text-opacity:1;color:rgb(6 95 70/var(--tw-text-opacity,1))}.text-gray-200{--tw-text-opacity:1;color:rgb(229 231 235/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-300{--tw-text-opacity:1;color:rgb(134 239 172/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-200{--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity,1))}.text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/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-200{--tw-text-opacity:1;color:rgb(254 240 138/var(--tw-text-opacity,1))}.text-yellow-300{--tw-text-opacity:1;color:rgb(253 224 71/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-60{opacity:.6}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.opacity-80{opacity:.8}.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\/5:hover{background-color:rgba(0,0,0,.05)}.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-50:hover{--tw-bg-opacity:1;background-color:rgb(239 246 255/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-orange-600:hover{--tw-gradient-from:#ea580c var(--tw-gradient-from-position);--tw-gradient-to:rgba(234,88,12,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-red-600:hover{--tw-gradient-to:#dc2626 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-600:hover{--tw-text-opacity:1;color:rgb(71 85 105/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-lg:hover{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.hover\:shadow-lg: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)}.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-md:hover,.hover\:shadow-xl:hover{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.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)}.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\:text-slate-900{--tw-text-opacity:1;color:rgb(15 23 42/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-amber-800:is(.dark *){--tw-border-opacity:1;border-color:rgb(146 64 14/var(--tw-border-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-gray-800:is(.dark *){--tw-border-opacity:1;border-color:rgb(31 41 55/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-amber-900\/20:is(.dark *){background-color:rgba(120,53,15,.2)}.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-800:is(.dark *){--tw-bg-opacity:1;background-color:rgb(30 64 175/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\/20:is(.dark *){background-color:rgba(6,78,59,.2)}.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\/20:is(.dark *){background-color:rgba(17,24,39,.2)}.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\/40:is(.dark *){background-color:rgba(127,29,29,.4)}.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:is(.dark *){--tw-gradient-from:#1e293b 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-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-300:is(.dark *){--tw-gradient-to:#cbd5e1 var(--tw-gradient-to-position)}.dark\:to-slate-700:is(.dark *){--tw-gradient-to:#334155 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-200:is(.dark *){--tw-text-opacity:1;color:rgb(253 230 138/var(--tw-text-opacity,1))}.dark\:text-amber-300:is(.dark *){--tw-text-opacity:1;color:rgb(252 211 77/var(--tw-text-opacity,1))}.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-blue-900\/20:hover:is(.dark *){background-color:rgba(30,58,138,.2)}.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\/5:hover:is(.dark *){background-color:hsla(0,0%,100%,.05)}.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))}.group:hover .dark\:group-hover\:text-white:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/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\:inline{display:inline}.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.\!warning{border-left:4px solid #fbbf24!important;background:linear-gradient(135deg,rgba(255,251,235,.95),hsla(48,96%,89%,.9))!important}.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-6{top:1.5rem}.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-3{margin-left:.75rem;margin-right:.75rem}.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}.ml-auto{margin-left:auto}.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-64{max-height:16rem}.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}.list-none{list-style-type:none}.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-b-3xl{border-bottom-right-radius:1.5rem;border-bottom-left-radius:1.5rem}.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}.rounded-t-3xl{border-top-left-radius:1.5rem;border-top-right-radius:1.5rem}.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{border-left-width:1px}.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))}.border-t-transparent{border-top-color:transparent}.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-blue-800{--tw-bg-opacity:1;background-color:rgb(30 64 175/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-50{--tw-bg-opacity:1;background-color:rgb(236 253 245/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-300{--tw-bg-opacity:1;background-color:rgb(134 239 172/var(--tw-bg-opacity,1))}.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-300{--tw-bg-opacity:1;background-color:rgb(252 165 165/var(--tw-bg-opacity,1))}.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-700{--tw-bg-opacity:1;background-color:rgb(51 65 85/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-300{--tw-bg-opacity:1;background-color:rgb(253 224 71/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-amber-500{--tw-gradient-from:#f59e0b var(--tw-gradient-from-position);--tw-gradient-to:rgba(245,158,11,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-emerald-500{--tw-gradient-from:#10b981 var(--tw-gradient-from-position);--tw-gradient-to:rgba(16,185,129,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-indigo-500{--tw-gradient-from:#6366f1 var(--tw-gradient-from-position);--tw-gradient-to:rgba(99,102,241,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)}.from-yellow-500{--tw-gradient-from:#eab308 var(--tw-gradient-from-position);--tw-gradient-to:rgba(234,179,8,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-600{--tw-gradient-to:rgba(37,99,235,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#2563eb 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-emerald-600{--tw-gradient-to:rgba(5,150,105,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#059669 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-orange-500{--tw-gradient-to:rgba(249,115,22,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#f97316 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-red-600{--tw-gradient-to:rgba(220,38,38,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#dc2626 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-amber-600{--tw-gradient-to:#d97706 var(--tw-gradient-to-position)}.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-green-700{--tw-gradient-to:#15803d 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-700{--tw-gradient-to:#4338ca 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{--tw-gradient-to:#ef4444 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-rose-700{--tw-gradient-to:#be123c 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)}.to-yellow-600{--tw-gradient-to:#ca8a04 var(--tw-gradient-to-position)}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.fill-current{fill:currentColor}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:0}.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}.pl-6{padding-left:1.5rem}.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-2{padding-top:.5rem}.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-700{--tw-text-opacity:1;color:rgb(180 83 9/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-300{--tw-text-opacity:1;color:rgb(147 197 253/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-300{--tw-text-opacity:1;color:rgb(110 231 183/var(--tw-text-opacity,1))}.text-emerald-600{--tw-text-opacity:1;color:rgb(5 150 105/var(--tw-text-opacity,1))}.text-emerald-700{--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity,1))}.text-emerald-800{--tw-text-opacity:1;color:rgb(6 95 70/var(--tw-text-opacity,1))}.text-gray-200{--tw-text-opacity:1;color:rgb(229 231 235/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-300{--tw-text-opacity:1;color:rgb(134 239 172/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-200{--tw-text-opacity:1;color:rgb(254 202 202/var(--tw-text-opacity,1))}.text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/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-200{--tw-text-opacity:1;color:rgb(254 240 138/var(--tw-text-opacity,1))}.text-yellow-300{--tw-text-opacity:1;color:rgb(253 224 71/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}.opacity-80{opacity:.8}.opacity-90{opacity:.9}.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\/5:hover{background-color:rgba(0,0,0,.05)}.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-50:hover{--tw-bg-opacity:1;background-color:rgb(239 246 255/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-orange-600:hover{--tw-gradient-from:#ea580c var(--tw-gradient-from-position);--tw-gradient-to:rgba(234,88,12,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-red-600:hover{--tw-gradient-to:#dc2626 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-600:hover{--tw-text-opacity:1;color:rgb(71 85 105/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-lg:hover{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.hover\:shadow-lg: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)}.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-md:hover,.hover\:shadow-xl:hover{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.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)}.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\:text-slate-900{--tw-text-opacity:1;color:rgb(15 23 42/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-amber-800:is(.dark *){--tw-border-opacity:1;border-color:rgb(146 64 14/var(--tw-border-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-gray-800:is(.dark *){--tw-border-opacity:1;border-color:rgb(31 41 55/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-amber-900\/20:is(.dark *){background-color:rgba(120,53,15,.2)}.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-700:is(.dark *){--tw-bg-opacity:1;background-color:rgb(29 78 216/var(--tw-bg-opacity,1))}.dark\:bg-blue-800:is(.dark *){--tw-bg-opacity:1;background-color:rgb(30 64 175/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\/20:is(.dark *){background-color:rgba(6,78,59,.2)}.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\/20:is(.dark *){background-color:rgba(17,24,39,.2)}.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-700:is(.dark *){--tw-bg-opacity:1;background-color:rgb(185 28 28/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\/40:is(.dark *){background-color:rgba(127,29,29,.4)}.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-70:is(.dark *){--tw-bg-opacity:0.7}.dark\:bg-opacity-95:is(.dark *){--tw-bg-opacity:0.95}.dark\:from-amber-600:is(.dark *){--tw-gradient-from:#d97706 var(--tw-gradient-from-position);--tw-gradient-to:rgba(217,119,6,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.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-600:is(.dark *){--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)}.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-600:is(.dark *){--tw-gradient-from:#059669 var(--tw-gradient-from-position);--tw-gradient-to:rgba(5,150,105,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-gray-900:is(.dark *){--tw-gradient-from:#111827 var(--tw-gradient-from-position);--tw-gradient-to:rgba(17,24,39,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-red-600:is(.dark *){--tw-gradient-from:#dc2626 var(--tw-gradient-from-position);--tw-gradient-to:rgba(220,38,38,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.dark\:from-slate-800:is(.dark *){--tw-gradient-from:#1e293b 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-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-700:is(.dark *){--tw-gradient-to:rgba(29,78,216,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#1d4ed8 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-700:is(.dark *){--tw-gradient-to:rgba(4,120,87,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#047857 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-gray-800:is(.dark *){--tw-gradient-to:rgba(31,41,55,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#1f2937 var(--tw-gradient-via-position),var(--tw-gradient-to)}.dark\:via-orange-600:is(.dark *){--tw-gradient-to:rgba(234,88,12,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#ea580c var(--tw-gradient-via-position),var(--tw-gradient-to)}.dark\:via-red-700:is(.dark *){--tw-gradient-to:rgba(185,28,28,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#b91c1c 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-gray-900:is(.dark *){--tw-gradient-to:#111827 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-800:is(.dark *){--tw-gradient-to:#3730a3 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-300:is(.dark *){--tw-gradient-to:#cbd5e1 var(--tw-gradient-to-position)}.dark\:to-slate-700:is(.dark *){--tw-gradient-to:#334155 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-200:is(.dark *){--tw-text-opacity:1;color:rgb(253 230 138/var(--tw-text-opacity,1))}.dark\:text-amber-300:is(.dark *){--tw-text-opacity:1;color:rgb(252 211 77/var(--tw-text-opacity,1))}.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-blue-900\/20:hover:is(.dark *){background-color:rgba(30,58,138,.2)}.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-600:hover:is(.dark *){--tw-bg-opacity:1;background-color:rgb(220 38 38/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\/5:hover:is(.dark *){background-color:hsla(0,0%,100%,.05)}.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))}.group:hover .dark\:group-hover\:text-white:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/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\:inline{display:inline}.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/systemd/myp-kiosk.service b/backend/systemd/myp-kiosk.service index 21318b9a..1bf1f876 100644 --- a/backend/systemd/myp-kiosk.service +++ b/backend/systemd/myp-kiosk.service @@ -1,9 +1,11 @@ [Unit] -Description=MYP Kiosk Browser Autostart (Chromium HTTPS) +Description=MYP Kiosk Browser Autostart (Chromium HTTPS) - Wartungsfreier Produktionsbetrieb Documentation=https://github.com/MYP-Druckerverwaltung -After=graphical-session.target myp-https.service -Wants=myp-https.service +After=graphical-session.target myp-https.service network-online.target +Wants=myp-https.service network-online.target Requires=graphical-session.target +StartLimitBurst=5 +StartLimitInterval=600 [Service] Type=simple @@ -11,45 +13,118 @@ User=kiosk Group=kiosk Environment=DISPLAY=:0 Environment=XAUTHORITY=/home/kiosk/.Xauthority +Environment=HOME=/home/kiosk +Environment=XDG_RUNTIME_DIR=/run/user/1001 +Environment=WAYLAND_DISPLAY= +Environment=GDK_BACKEND=x11 WorkingDirectory=/home/kiosk -# Warte auf HTTPS-Backend und starte dann Chromium -ExecStartPre=/bin/bash -c 'echo "Warte auf HTTPS Backend..."; for i in {1..60}; do if curl -k -s https://localhost:443 >/dev/null 2>&1; then echo "HTTPS Backend erreichbar"; break; fi; echo "Warte... ($i/60)"; sleep 2; done' +# Robuste Backend-Wartung mit verbesserter Fehlererkennung +ExecStartPre=/bin/bash -c '\ + echo "=== MYP Kiosk-Service startet $(date) ==="; \ + \ + # Prüfe ob X11 läuft \ + for i in {1..30}; do \ + if DISPLAY=:0 xset q >/dev/null 2>&1; then \ + echo "✅ X11 Display verfügbar"; \ + break; \ + fi; \ + echo "⏳ Warte auf X11 Display... ($i/30)"; \ + sleep 2; \ + done; \ + \ + # Warte auf HTTPS-Backend mit verbesserter Erkennung \ + echo "🔍 Warte auf HTTPS Backend..."; \ + for i in {1..120}; do \ + if curl -k -s --connect-timeout 3 --max-time 5 https://localhost:443/api/kiosk/status >/dev/null 2>&1; then \ + echo "✅ HTTPS Backend erreichbar und API verfügbar"; \ + break; \ + elif curl -k -s --connect-timeout 3 --max-time 5 https://localhost:443 >/dev/null 2>&1; then \ + echo "✅ HTTPS Backend erreichbar"; \ + break; \ + fi; \ + echo "⏳ Warte auf Backend... ($i/120)"; \ + sleep 3; \ + done; \ + \ + # Räume alte Browser-Prozesse auf \ + pkill -f "chromium.*kiosk" 2>/dev/null || true; \ + pkill -f "firefox.*kiosk" 2>/dev/null || true; \ + sleep 2; \ + ' + +# Robuster Kiosk-Start mit Fehlerresilienz ExecStart=/bin/bash -c '\ - # Bildschirmauflösung ermitteln \ - RESOLUTION=$(DISPLAY=:0 xrandr 2>/dev/null | grep "*" | head -1 | awk "{print \$1}" || echo "1920x1080"); \ + set -e; \ + \ + # Logging-Setup \ + LOG_FILE="/var/log/myp-kiosk.log"; \ + exec 1> >(tee -a "$LOG_FILE"); \ + exec 2>&1; \ + \ + echo "🚀 Starte Kiosk-Modus $(date)"; \ + \ + # Bildschirmauflösung robust ermitteln \ + RESOLUTION=$(DISPLAY=:0 xrandr 2>/dev/null | grep -E "\*|\+" | head -1 | awk "{print \$1}" || echo "1920x1080"); \ WIDTH=$(echo $RESOLUTION | cut -d"x" -f1); \ HEIGHT=$(echo $RESOLUTION | cut -d"x" -f2); \ - echo "Erkannte Auflösung: ${WIDTH}x${HEIGHT}"; \ + echo "📺 Bildschirmauflösung: ${WIDTH}x${HEIGHT}"; \ \ - # Bildschirmschoner deaktivieren \ - DISPLAY=:0 xset s off; \ - DISPLAY=:0 xset s noblank; \ - DISPLAY=:0 xset -dpms; \ + # Display-Konfiguration optimieren \ + DISPLAY=:0 xset s off 2>/dev/null || true; \ + DISPLAY=:0 xset s noblank 2>/dev/null || true; \ + DISPLAY=:0 xset -dpms 2>/dev/null || true; \ + DISPLAY=:0 xset r rate 250 30 2>/dev/null || true; \ + echo "⚙️ Display-Energieverwaltung deaktiviert"; \ \ # Mauszeiger verstecken \ - DISPLAY=:0 unclutter -idle 0.1 -root -noevents & \ + if command -v unclutter >/dev/null 2>&1; then \ + DISPLAY=:0 unclutter -idle 0.5 -root -noevents & \ + echo "🖱️ Mauszeiger-Versteckung aktiviert"; \ + fi; \ + \ + # Browser-Auswahl mit Prioritäten \ + BROWSER=""; \ + BROWSER_ARGS=""; \ \ - # Chromium Kiosk-Modus starten \ if command -v chromium >/dev/null 2>&1; then \ BROWSER="chromium"; \ elif command -v chromium-browser >/dev/null 2>&1; then \ BROWSER="chromium-browser"; \ - else \ - echo "Kein Chromium gefunden - verwende Firefox"; \ + elif command -v google-chrome >/dev/null 2>&1; then \ + BROWSER="google-chrome"; \ + elif command -v firefox-esr >/dev/null 2>&1; then \ BROWSER="firefox-esr"; \ + elif command -v firefox >/dev/null 2>&1; then \ + BROWSER="firefox"; \ + else \ + echo "❌ Kein unterstützter Browser gefunden"; \ + exit 1; \ fi; \ \ - echo "Starte $BROWSER im Kiosk-Modus..."; \ + echo "🌐 Verwende Browser: $BROWSER"; \ \ - if [[ "$BROWSER" == "chromium"* ]]; then \ - exec $BROWSER \ + # Browser-spezifische Argumente \ + if [[ "$BROWSER" == "chromium"* ]] || [[ "$BROWSER" == "google-chrome"* ]]; then \ + BROWSER_ARGS=" \ --kiosk \ --no-sandbox \ + --disable-dev-shm-usage \ + --disable-gpu-sandbox \ + --disable-software-rasterizer \ + --disable-background-timer-throttling \ + --disable-backgrounding-occluded-windows \ + --disable-renderer-backgrounding \ + --disable-field-trial-config \ + --disable-features=TranslateUI,VizDisplayCompositor,AudioServiceOutOfProcess \ + --enable-features=OverlayScrollbar,VaapiVideoDecoder \ + --force-device-scale-factor=1.0 \ + --window-size=${WIDTH},${HEIGHT} \ + --window-position=0,0 \ + --user-data-dir=/home/kiosk/.chromium-kiosk \ --disable-infobars \ --disable-session-crashed-bubble \ --disable-restore-session-state \ - --disable-features=TranslateUI \ --disable-extensions \ --disable-plugins \ --disable-popup-blocking \ @@ -59,24 +134,15 @@ ExecStart=/bin/bash -c '\ --noerrdialogs \ --no-first-run \ --no-default-browser-check \ + --no-crash-upload \ + --disable-crash-reporter \ + --disable-logging \ --autoplay-policy=no-user-gesture-required \ - --start-fullscreen \ - --start-maximized \ - --window-size=${WIDTH},${HEIGHT} \ - --window-position=0,0 \ - --user-data-dir=/home/kiosk/.chromium-kiosk \ --disable-background-mode \ - --force-device-scale-factor=1.0 \ --disable-pinch \ --overscroll-history-navigation=0 \ - --disable-dev-shm-usage \ --memory-pressure-off \ --max_old_space_size=512 \ - --disable-background-timer-throttling \ - --disable-backgrounding-occluded-windows \ - --disable-renderer-backgrounding \ - --disable-features=VizDisplayCompositor \ - --enable-features=OverlayScrollbar \ --hide-scrollbars \ --ignore-certificate-errors \ --ignore-ssl-errors \ @@ -84,24 +150,77 @@ ExecStart=/bin/bash -c '\ --disable-web-security \ --allow-running-insecure-content \ --unsafely-treat-insecure-origin-as-secure=https://localhost:443 \ - https://localhost:443; \ + --disable-blink-features=AutomationControlled \ + --disable-ipc-flooding-protection"; \ else \ - exec firefox-esr \ + # Firefox-Argumente \ + BROWSER_ARGS=" \ --kiosk \ --width=${WIDTH} \ --height=${HEIGHT} \ - https://localhost:443; \ - fi' + --no-remote \ + --new-instance"; \ + fi; \ + \ + # URL mit Fallback \ + TARGET_URL="https://localhost:443"; \ + \ + # Browser starten mit Fehlerbehandlung \ + echo "🖥️ Starte $BROWSER im Kiosk-Modus..."; \ + echo "🔗 URL: $TARGET_URL"; \ + \ + # Umgebungsvariablen setzen \ + export DISPLAY=:0; \ + export HOME=/home/kiosk; \ + export XDG_RUNTIME_DIR=/run/user/1001; \ + export LIBGL_ALWAYS_SOFTWARE=1; \ + export MOZ_DISABLE_RDD_SANDBOX=1; \ + export MOZ_DISABLE_CONTENT_SANDBOX=1; \ + \ + # Browser-Start mit exec für korrekte Signal-Behandlung \ + exec $BROWSER $BROWSER_ARGS "$TARGET_URL" 2>&1; \ + ' +# Robuste Restart-Konfiguration für wartungsfreien Betrieb Restart=always RestartSec=15 -StartLimitBurst=3 -StartLimitInterval=300 +StartLimitBurst=5 +StartLimitInterval=600 +TimeoutStartSec=300 +TimeoutStopSec=30 +KillMode=mixed +KillSignal=SIGTERM -# Logging +# Ressourcen-Management für Stabilität +LimitNOFILE=65536 +LimitNPROC=4096 +MemoryHigh=1G +MemoryMax=1.5G +CPUQuota=80% + +# Erweiterte Service-Überwachung +WatchdogSec=60 +NotifyAccess=all + +# Fehlerresilienz-Features +PrivateNetwork=false +PrivateTmp=true +ProtectHome=false +ProtectSystem=strict +ReadWritePaths=/home/kiosk /var/log /tmp +NoNewPrivileges=false + +# Logging-Konfiguration StandardOutput=journal StandardError=journal SyslogIdentifier=myp-kiosk +LogRateLimitBurst=1000 +LogRateLimitIntervalSec=30 + +# Service-Abhängigkeiten für robuste Startsequenz +Requisite=myp-https.service +BindsTo=graphical-session.target [Install] -WantedBy=graphical-session.target \ No newline at end of file +WantedBy=graphical-session.target +Also=myp-https.service \ No newline at end of file diff --git a/backend/templates/admin.html b/backend/templates/admin.html index dbbb4818..91021088 100644 --- a/backend/templates/admin.html +++ b/backend/templates/admin.html @@ -524,6 +524,36 @@ document.addEventListener('DOMContentLoaded', function() { +
+

System-Steuerung

+
+ + + + +
+
+

Konfiguration

@@ -533,8 +563,11 @@ document.addEventListener('DOMContentLoaded', function() { -
@@ -976,5 +1009,532 @@ function getCsrfToken() { const token = document.querySelector('meta[name="csrf-token"]'); return token ? token.getAttribute('content') : ''; } + +// ===== ERWEITERTE SYSTEM-CONTROL-FUNKTIONALITÄT ===== + +class SystemControlManager { + constructor() { + this.pendingOperations = new Map(); + this.lastStatusUpdate = null; + this.isInitialized = false; + + this.initializeEventListeners(); + this.startStatusPolling(); + this.isInitialized = true; + + console.log('🔧 System-Control-Manager initialisiert'); + } + + initializeEventListeners() { + // Kiosk-Neustart + const kioskRestartBtn = document.getElementById('kiosk-restart-btn'); + if (kioskRestartBtn) { + kioskRestartBtn.addEventListener('click', (e) => { + e.preventDefault(); + this.handleKioskRestart(); + }); + } + + // System-Neustart + const restartBtn = document.getElementById('restart-system-btn'); + if (restartBtn) { + restartBtn.addEventListener('click', (e) => { + e.preventDefault(); + this.handleSystemRestart(); + }); + } + + // System-Shutdown + const shutdownBtn = document.getElementById('shutdown-system-btn'); + if (shutdownBtn) { + shutdownBtn.addEventListener('click', (e) => { + e.preventDefault(); + this.handleSystemShutdown(); + }); + } + + // System-Status + const statusBtn = document.getElementById('system-status-btn'); + if (statusBtn) { + statusBtn.addEventListener('click', (e) => { + e.preventDefault(); + this.showSystemStatus(); + }); + } + + // Error-Recovery Toggle + const errorRecoveryBtn = document.getElementById('error-recovery-toggle-btn'); + if (errorRecoveryBtn) { + errorRecoveryBtn.addEventListener('click', (e) => { + e.preventDefault(); + this.toggleErrorRecovery(); + }); + } + } + + async handleKioskRestart() { + const confirmed = await this.confirmOperation( + 'Kiosk-Neustart', + 'Möchten Sie das Kiosk-Display neustarten? Dies dauert ca. 10-30 Sekunden.', + 'Der Kiosk wird neugestartet...' + ); + + if (!confirmed) return; + + try { + const response = await fetch('/api/admin/kiosk/restart', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'X-CSRFToken': getCsrfToken() + }, + body: JSON.stringify({ + delay_seconds: 10, + reason: 'Manueller Kiosk-Neustart über Admin-Panel' + }) + }); + + const result = await response.json(); + + if (response.ok && result.success) { + showNotification('Kiosk-Neustart geplant', 'success'); + this.trackOperation(result.operation_id, 'kiosk_restart'); + } else { + showNotification(result.error || 'Fehler beim Kiosk-Neustart', 'error'); + } + + } catch (error) { + console.error('Kiosk-Neustart Fehler:', error); + showNotification('Fehler beim Kiosk-Neustart: ' + error.message, 'error'); + } + } + + async handleSystemRestart() { + const confirmed = await this.confirmOperation( + 'System-Neustart', + 'WARNUNG: Das gesamte System wird neu gestartet! Dies dauert ca. 2-5 Minuten.', + 'Das System wird neu gestartet...', + true + ); + + if (!confirmed) return; + + // Zusätzliche Verzögerungsabfrage + const delayInput = prompt('Verzögerung in Sekunden (10-3600):', '60'); + if (!delayInput) return; + + const delay = Math.max(10, Math.min(3600, parseInt(delayInput) || 60)); + + try { + const response = await fetch('/api/admin/system/restart', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'X-CSRFToken': getCsrfToken() + }, + body: JSON.stringify({ + delay_seconds: delay, + reason: 'Manueller System-Neustart über Admin-Panel' + }) + }); + + const result = await response.json(); + + if (response.ok && result.success) { + showNotification(`System-Neustart in ${delay} Sekunden geplant`, 'success'); + this.trackOperation(result.operation_id, 'system_restart'); + this.showCountdown(delay, 'System-Neustart'); + } else { + showNotification(result.error || 'Fehler beim System-Neustart', 'error'); + } + + } catch (error) { + console.error('System-Neustart Fehler:', error); + showNotification('Fehler beim System-Neustart: ' + error.message, 'error'); + } + } + + async handleSystemShutdown() { + const confirmed = await this.confirmOperation( + 'System-Shutdown', + 'KRITISCHE WARNUNG: Das System wird komplett heruntergefahren!', + 'Das System wird heruntergefahren...', + true + ); + + if (!confirmed) return; + + // Doppelte Bestätigung + const doubleConfirm = confirm('LETZTE WARNUNG: System wirklich herunterfahren?\nDas System muss danach manuell neu gestartet werden!'); + if (!doubleConfirm) return; + + // Verzögerungsabfrage + const delayInput = prompt('Verzögerung in Sekunden (10-3600):', '30'); + if (!delayInput) return; + + const delay = Math.max(10, Math.min(3600, parseInt(delayInput) || 30)); + + try { + const response = await fetch('/api/admin/system/shutdown', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'X-CSRFToken': getCsrfToken() + }, + body: JSON.stringify({ + delay_seconds: delay, + reason: 'Manueller System-Shutdown über Admin-Panel' + }) + }); + + const result = await response.json(); + + if (response.ok && result.success) { + showNotification(`System-Shutdown in ${delay} Sekunden geplant`, 'error'); + this.trackOperation(result.operation_id, 'system_shutdown'); + this.showCountdown(delay, 'System-Shutdown'); + } else { + showNotification(result.error || 'Fehler beim System-Shutdown', 'error'); + } + + } catch (error) { + console.error('System-Shutdown Fehler:', error); + showNotification('Fehler beim System-Shutdown: ' + error.message, 'error'); + } + } + + async showSystemStatus() { + try { + showNotification('System-Status wird geladen...', 'info'); + + const response = await fetch('/api/admin/system/status', { + method: 'GET', + headers: { + 'X-CSRFToken': getCsrfToken() + } + }); + + const status = await response.json(); + + if (response.ok && status.success) { + this.displaySystemStatusModal(status); + } else { + showNotification('Fehler beim Laden des System-Status', 'error'); + } + + } catch (error) { + console.error('System-Status Fehler:', error); + showNotification('Fehler beim System-Status: ' + error.message, 'error'); + } + } + + async toggleErrorRecovery() { + try { + // Aktuellen Status abrufen + const statusResponse = await fetch('/api/admin/error-recovery/status', { + method: 'GET', + headers: { + 'X-CSRFToken': getCsrfToken() + } + }); + + const statusData = await statusResponse.json(); + const currentlyActive = statusData?.statistics?.monitoring_active || false; + + // Toggle-Operation + const response = await fetch('/api/admin/error-recovery/toggle', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'X-CSRFToken': getCsrfToken() + }, + body: JSON.stringify({ + enable: !currentlyActive + }) + }); + + const result = await response.json(); + + if (response.ok && result.success) { + showNotification(result.message, 'success'); + this.updateErrorRecoveryButton(result.monitoring_active); + } else { + showNotification(result.error || 'Fehler beim Error-Recovery Toggle', 'error'); + } + + } catch (error) { + console.error('Error-Recovery Toggle Fehler:', error); + showNotification('Fehler beim Error-Recovery Toggle: ' + error.message, 'error'); + } + } + + updateErrorRecoveryButton(isActive) { + const btn = document.getElementById('error-recovery-toggle-btn'); + if (btn) { + if (isActive) { + btn.classList.remove('bg-green-500', 'hover:bg-green-600'); + btn.classList.add('bg-yellow-500', 'hover:bg-yellow-600'); + btn.querySelector('span').textContent = 'Fehlerresilienz AN'; + } else { + btn.classList.remove('bg-yellow-500', 'hover:bg-yellow-600'); + btn.classList.add('bg-green-500', 'hover:bg-green-600'); + btn.querySelector('span').textContent = 'Fehlerresilienz AUS'; + } + } + } + + async confirmOperation(title, message, processingMessage, isDestructive = false) { + const bgColor = isDestructive ? 'bg-red-100 dark:bg-red-900' : 'bg-blue-100 dark:bg-blue-900'; + const iconColor = isDestructive ? 'text-red-600 dark:text-red-400' : 'text-blue-600 dark:text-blue-400'; + + return new Promise((resolve) => { + const modal = document.createElement('div'); + modal.className = 'fixed inset-0 bg-black/50 backdrop-blur-sm z-50 flex items-center justify-center p-4'; + + modal.innerHTML = ` +
+
+
+ + + +
+

${title}

+

${message}

+
+ +
+ + +
+
+ `; + + document.body.appendChild(modal); + + const cancelBtn = modal.querySelector('#modal-cancel'); + const confirmBtn = modal.querySelector('#modal-confirm'); + + cancelBtn.addEventListener('click', () => { + document.body.removeChild(modal); + resolve(false); + }); + + confirmBtn.addEventListener('click', () => { + document.body.removeChild(modal); + resolve(true); + }); + + // ESC-Key + const handleEsc = (e) => { + if (e.key === 'Escape') { + document.body.removeChild(modal); + document.removeEventListener('keydown', handleEsc); + resolve(false); + } + }; + document.addEventListener('keydown', handleEsc); + }); + } + + showCountdown(seconds, operationType) { + const modal = document.createElement('div'); + modal.className = 'fixed inset-0 bg-black/75 backdrop-blur-sm z-50 flex items-center justify-center p-4'; + + modal.innerHTML = ` +
+
+ + + +
+

${operationType}

+

Wird ausgeführt in:

+
${seconds}
+ +
+ `; + + document.body.appendChild(modal); + + const timerEl = modal.querySelector('#countdown-timer'); + const cancelBtn = modal.querySelector('#countdown-cancel'); + + let remainingSeconds = seconds; + + const interval = setInterval(() => { + remainingSeconds--; + timerEl.textContent = remainingSeconds; + + if (remainingSeconds <= 0) { + clearInterval(interval); + document.body.removeChild(modal); + } + }, 1000); + + cancelBtn.addEventListener('click', async () => { + clearInterval(interval); + document.body.removeChild(modal); + + // Versuche Operation zu stornieren + try { + // Hier könnte der API-Call zum Stornieren implementiert werden + showNotification('Operation wird storniert...', 'info'); + } catch (error) { + console.error('Fehler beim Stornieren:', error); + } + }); + } + + displaySystemStatusModal(status) { + const modal = document.createElement('div'); + modal.className = 'fixed inset-0 bg-black/50 backdrop-blur-sm z-50 flex items-center justify-center p-4'; + + const servicesHtml = Object.entries(status.services || {}).map(([name, state]) => { + const isActive = state === 'active'; + return ` +
+ ${name} + ${state} +
+ `; + }).join(''); + + const metrics = status.system_metrics || {}; + const errorRecovery = status.error_recovery || {}; + + modal.innerHTML = ` +
+
+

System-Status

+ +
+ +
+ +
+

Services

+
+ ${servicesHtml} +
+
+ + +
+

System-Metriken

+
+
+ Speicher: + ${metrics.memory_percent?.toFixed(1) || 0}% +
+
+ Festplatte: + ${metrics.disk_percent?.toFixed(1) || 0}% +
+
+ System-Last: + ${metrics.load_average?.toFixed(2) || 0} +
+
+
+ + +
+

Fehlerresilienz

+
+
+
${errorRecovery.total_errors || 0}
+
Gesamt-Fehler
+
+
+
${errorRecovery.errors_last_24h || 0}
+
Letzten 24h
+
+
+
${errorRecovery.recovery_success_rate || 0}%
+
Erfolgsrate
+
+
+
${status.is_safe ? 'SICHER' : 'UNSICHER'}
+
Status
+
+
+
+
+ +
+
+ Letztes Update: ${new Date().toLocaleString('de-DE')} +
+
+
+ `; + + document.body.appendChild(modal); + + const closeBtn = modal.querySelector('#close-status-modal'); + closeBtn.addEventListener('click', () => { + document.body.removeChild(modal); + }); + + // ESC zum Schließen + const handleEsc = (e) => { + if (e.key === 'Escape') { + document.body.removeChild(modal); + document.removeEventListener('keydown', handleEsc); + } + }; + document.addEventListener('keydown', handleEsc); + } + + trackOperation(operationId, type) { + this.pendingOperations.set(operationId, { + id: operationId, + type: type, + timestamp: Date.now() + }); + } + + async startStatusPolling() { + // Überwache Error-Recovery-Status + setInterval(async () => { + try { + const response = await fetch('/api/admin/error-recovery/status', { + method: 'GET', + headers: { + 'X-CSRFToken': getCsrfToken() + } + }); + + if (response.ok) { + const data = await response.json(); + this.updateErrorRecoveryButton(data?.statistics?.monitoring_active || false); + } + } catch (error) { + console.debug('Status-Polling Fehler:', error); + } + }, 30000); // Alle 30 Sekunden + } +} + +// Globaler System-Control-Manager +let systemControlManager = null; + +// Initialisierung beim DOM-Laden +document.addEventListener('DOMContentLoaded', function() { + if (!systemControlManager) { + systemControlManager = new SystemControlManager(); + } +}); {% endblock %} diff --git a/backend/templates/admin_plug_schedules.html b/backend/templates/admin_plug_schedules.html index b4742b8f..f7765675 100644 --- a/backend/templates/admin_plug_schedules.html +++ b/backend/templates/admin_plug_schedules.html @@ -13,207 +13,124 @@ {% endblock %} {% block content %} -
+
-