diff --git a/backend/blueprints/__pycache__/admin_unified.cpython-313.pyc b/backend/blueprints/__pycache__/admin_unified.cpython-313.pyc index 3f4f7b920..ec8b90c2d 100644 Binary files a/backend/blueprints/__pycache__/admin_unified.cpython-313.pyc and b/backend/blueprints/__pycache__/admin_unified.cpython-313.pyc differ diff --git a/backend/blueprints/admin_unified.py b/backend/blueprints/admin_unified.py index b8b25d933..46edf8c6c 100644 --- a/backend/blueprints/admin_unified.py +++ b/backend/blueprints/admin_unified.py @@ -20,6 +20,7 @@ import os import json import time import zipfile +import bcrypt from datetime import datetime, timedelta from functools import wraps @@ -380,6 +381,52 @@ def guest_requests(): """Gäste-Anfragen-Übersicht""" return render_template('admin_guest_requests.html') +@admin_blueprint.route("/requests") +@admin_required +def requests_overview(): + """Anträge-Übersicht für Admin-Dashboard""" + try: + with get_cached_session() as db_session: + # Grundlegende Statistiken sammeln für das Template + total_users = db_session.query(User).count() + total_printers = db_session.query(Printer).count() + total_jobs = db_session.query(Job).count() + + # Aktive Jobs zählen + active_jobs = db_session.query(Job).filter( + Job.status.in_(['pending', 'printing', 'paused']) + ).count() + + # Online-Drucker zählen + online_printers = db_session.query(Printer).filter( + Printer.status.in_(['idle', 'busy']) + ).count() + + # Alle Anträge laden + requests = db_session.query(GuestRequest).order_by( + GuestRequest.created_at.desc() + ).all() + + stats = { + 'total_users': total_users, + 'total_printers': total_printers, + 'total_jobs': total_jobs, + 'active_jobs': active_jobs, + 'online_printers': online_printers + } + + admin_logger.info(f"Anträge-Übersicht geladen: {len(requests)} Anträge") + + return render_template('admin.html', + active_tab='requests', + stats=stats, + requests=requests) + + except Exception as e: + admin_logger.error(f"Fehler beim Laden der Anträge-Übersicht: {str(e)}") + flash("Fehler beim Laden der Anträge", "error") + return redirect(url_for('admin.dashboard')) + @admin_blueprint.route("/advanced-settings") @admin_required def advanced_settings(): @@ -1762,6 +1809,110 @@ def get_pending_guest_otps_api(): admin_logger.error(f"Fehler beim Abrufen aktiver OTP-Codes: {str(e)}") return jsonify({"error": "Fehler beim Laden der OTP-Codes"}), 500 +@admin_api_blueprint.route("/guest-requests//approve", methods=["POST"]) +@admin_required +def approve_guest_request_api(request_id): + """API-Endpunkt zum Genehmigen einer Gastanfrage""" + try: + data = request.get_json() or {} + approval_notes = data.get('approval_notes', '').strip() + printer_id = data.get('printer_id') # Optional: Drucker zuweisen + + with get_cached_session() as db_session: + guest_request = db_session.query(GuestRequest).filter_by(id=request_id).first() + + if not guest_request: + return jsonify({"error": "Gastanfrage nicht gefunden"}), 404 + + if guest_request.status != 'pending': + return jsonify({"error": f"Gastanfrage ist bereits {guest_request.status}"}), 400 + + # Optional: Drucker validieren falls angegeben + if printer_id: + printer = db_session.query(Printer).filter_by(id=printer_id).first() + if not printer: + return jsonify({"error": "Angegebener Drucker nicht gefunden"}), 400 + guest_request.assigned_printer_id = printer_id + + # Gastanfrage genehmigen + guest_request.status = 'approved' + guest_request.processed_by = current_user.id + guest_request.processed_at = datetime.now() + guest_request.approved_by = current_user.id + guest_request.approved_at = datetime.now() + guest_request.approval_notes = approval_notes + guest_request.updated_at = datetime.now() + + # OTP-Code generieren + import secrets + import string + otp_code = ''.join(secrets.choice(string.digits) for _ in range(6)) + guest_request.otp_code_plain = otp_code + guest_request.otp_code = bcrypt.hashpw(otp_code.encode('utf-8'), bcrypt.gensalt()).decode('utf-8') + guest_request.otp_expires_at = datetime.now() + timedelta(hours=72) # 72h gültig + + db_session.commit() + + admin_logger.info(f"Gastanfrage {request_id} von Admin {current_user.name} genehmigt") + + return jsonify({ + "success": True, + "message": "Gastanfrage erfolgreich genehmigt", + "otp_code": otp_code, + "request_id": request_id, + "guest_name": guest_request.name, + "expires_at": guest_request.otp_expires_at.isoformat() + }) + + except Exception as e: + admin_logger.error(f"Fehler beim Genehmigen der Gastanfrage {request_id}: {str(e)}") + return jsonify({"error": "Fehler beim Genehmigen der Gastanfrage"}), 500 + +@admin_api_blueprint.route("/guest-requests//reject", methods=["POST"]) +@admin_required +def reject_guest_request_api(request_id): + """API-Endpunkt zum Ablehnen einer Gastanfrage""" + try: + data = request.get_json() or {} + rejection_reason = data.get('rejection_reason', '').strip() + + if not rejection_reason: + return jsonify({"error": "Ablehnungsgrund ist erforderlich"}), 400 + + with get_cached_session() as db_session: + guest_request = db_session.query(GuestRequest).filter_by(id=request_id).first() + + if not guest_request: + return jsonify({"error": "Gastanfrage nicht gefunden"}), 404 + + if guest_request.status != 'pending': + return jsonify({"error": f"Gastanfrage ist bereits {guest_request.status}"}), 400 + + # Gastanfrage ablehnen + guest_request.status = 'rejected' + guest_request.processed_by = current_user.id + guest_request.processed_at = datetime.now() + guest_request.rejected_by = current_user.id + guest_request.rejected_at = datetime.now() + guest_request.rejection_reason = rejection_reason + guest_request.updated_at = datetime.now() + + db_session.commit() + + admin_logger.info(f"Gastanfrage {request_id} von Admin {current_user.name} abgelehnt: {rejection_reason}") + + return jsonify({ + "success": True, + "message": "Gastanfrage erfolgreich abgelehnt", + "request_id": request_id, + "guest_name": guest_request.name, + "rejection_reason": rejection_reason + }) + + except Exception as e: + admin_logger.error(f"Fehler beim Ablehnen der Gastanfrage {request_id}: {str(e)}") + return jsonify({"error": "Fehler beim Ablehnen der Gastanfrage"}), 500 + # ===== ADMIN-UI ROUTES FÜR GAST-OTP-VERWALTUNG ===== @admin_blueprint.route("/guest-otps") diff --git a/backend/database/myp.db b/backend/database/myp.db index 200bda0b3..c0f8e2c1f 100644 Binary files a/backend/database/myp.db and b/backend/database/myp.db differ diff --git a/backend/instance/sessions/00987e999ab984605f9f7a3d3d3fd00e_activity.pkl b/backend/instance/sessions/00987e999ab984605f9f7a3d3d3fd00e_activity.pkl new file mode 100644 index 000000000..95f599662 Binary files /dev/null and b/backend/instance/sessions/00987e999ab984605f9f7a3d3d3fd00e_activity.pkl differ diff --git a/backend/instance/sessions/00bd50c89a0a2b44bb8898cc35cf043c_activity.pkl b/backend/instance/sessions/00bd50c89a0a2b44bb8898cc35cf043c_activity.pkl new file mode 100644 index 000000000..3e3557ce6 Binary files /dev/null and b/backend/instance/sessions/00bd50c89a0a2b44bb8898cc35cf043c_activity.pkl differ diff --git a/backend/instance/sessions/02ab7e158bdb33fbb329905e484a4802_activity.pkl b/backend/instance/sessions/02ab7e158bdb33fbb329905e484a4802_activity.pkl new file mode 100644 index 000000000..9aed0914c Binary files /dev/null and b/backend/instance/sessions/02ab7e158bdb33fbb329905e484a4802_activity.pkl differ diff --git a/backend/instance/sessions/034e51f4a9ae120e593201b9de8f4c1f_activity.pkl b/backend/instance/sessions/034e51f4a9ae120e593201b9de8f4c1f_activity.pkl new file mode 100644 index 000000000..e81a985ea Binary files /dev/null and b/backend/instance/sessions/034e51f4a9ae120e593201b9de8f4c1f_activity.pkl differ diff --git a/backend/instance/sessions/04d90d18e4e5f452c621a54faf33f13d_activity.pkl b/backend/instance/sessions/04d90d18e4e5f452c621a54faf33f13d_activity.pkl new file mode 100644 index 000000000..e787c6d5d Binary files /dev/null and b/backend/instance/sessions/04d90d18e4e5f452c621a54faf33f13d_activity.pkl differ diff --git a/backend/instance/sessions/06290b7c82051a4cc1f18b43c8c79f0d_activity.pkl b/backend/instance/sessions/06290b7c82051a4cc1f18b43c8c79f0d_activity.pkl new file mode 100644 index 000000000..f0f1317d6 Binary files /dev/null and b/backend/instance/sessions/06290b7c82051a4cc1f18b43c8c79f0d_activity.pkl differ diff --git a/backend/instance/sessions/07a10cff14a74e1476a31da9e102ae28_activity.pkl b/backend/instance/sessions/07a10cff14a74e1476a31da9e102ae28_activity.pkl new file mode 100644 index 000000000..de16168d9 Binary files /dev/null and b/backend/instance/sessions/07a10cff14a74e1476a31da9e102ae28_activity.pkl differ diff --git a/backend/instance/sessions/0b0f240887bc5624bc944b94a5c9be24_activity.pkl b/backend/instance/sessions/0b0f240887bc5624bc944b94a5c9be24_activity.pkl new file mode 100644 index 000000000..8859d10d9 Binary files /dev/null and b/backend/instance/sessions/0b0f240887bc5624bc944b94a5c9be24_activity.pkl differ diff --git a/backend/instance/sessions/0bbf0d8f4e3bc710f636fc4f8ba0fc23_activity.pkl b/backend/instance/sessions/0bbf0d8f4e3bc710f636fc4f8ba0fc23_activity.pkl new file mode 100644 index 000000000..79294c673 Binary files /dev/null and b/backend/instance/sessions/0bbf0d8f4e3bc710f636fc4f8ba0fc23_activity.pkl differ diff --git a/backend/instance/sessions/0bcb40c0a5a0307861320b23ef4ed628_activity.pkl b/backend/instance/sessions/0bcb40c0a5a0307861320b23ef4ed628_activity.pkl new file mode 100644 index 000000000..9dec63b6c Binary files /dev/null and b/backend/instance/sessions/0bcb40c0a5a0307861320b23ef4ed628_activity.pkl differ diff --git a/backend/instance/sessions/0d663a0ebbf27bf71f380e2ae06ba1d3_activity.pkl b/backend/instance/sessions/0d663a0ebbf27bf71f380e2ae06ba1d3_activity.pkl new file mode 100644 index 000000000..252d407f8 Binary files /dev/null and b/backend/instance/sessions/0d663a0ebbf27bf71f380e2ae06ba1d3_activity.pkl differ diff --git a/backend/instance/sessions/0e8ba3aa2d5d02de49d5643dabfa2053_activity.pkl b/backend/instance/sessions/0e8ba3aa2d5d02de49d5643dabfa2053_activity.pkl new file mode 100644 index 000000000..0ec2b9232 Binary files /dev/null and b/backend/instance/sessions/0e8ba3aa2d5d02de49d5643dabfa2053_activity.pkl differ diff --git a/backend/instance/sessions/0eb645d260d9fe1eaecc7c044d85d100_activity.pkl b/backend/instance/sessions/0eb645d260d9fe1eaecc7c044d85d100_activity.pkl new file mode 100644 index 000000000..f2793a170 Binary files /dev/null and b/backend/instance/sessions/0eb645d260d9fe1eaecc7c044d85d100_activity.pkl differ diff --git a/backend/instance/sessions/0ed7ace6c70003435832522041eb9406_activity.pkl b/backend/instance/sessions/0ed7ace6c70003435832522041eb9406_activity.pkl new file mode 100644 index 000000000..c50df285a Binary files /dev/null and b/backend/instance/sessions/0ed7ace6c70003435832522041eb9406_activity.pkl differ diff --git a/backend/instance/sessions/0fe9e62892e83427302573db47275603_activity.pkl b/backend/instance/sessions/0fe9e62892e83427302573db47275603_activity.pkl new file mode 100644 index 000000000..d2bf6617b Binary files /dev/null and b/backend/instance/sessions/0fe9e62892e83427302573db47275603_activity.pkl differ diff --git a/backend/instance/sessions/10152859f9852fa601902d399ed2896a_activity.pkl b/backend/instance/sessions/10152859f9852fa601902d399ed2896a_activity.pkl new file mode 100644 index 000000000..b331b18b1 Binary files /dev/null and b/backend/instance/sessions/10152859f9852fa601902d399ed2896a_activity.pkl differ diff --git a/backend/instance/sessions/111ea4d8c39081961df89bda9f48834a_activity.pkl b/backend/instance/sessions/111ea4d8c39081961df89bda9f48834a_activity.pkl new file mode 100644 index 000000000..67eff21f2 Binary files /dev/null and b/backend/instance/sessions/111ea4d8c39081961df89bda9f48834a_activity.pkl differ diff --git a/backend/instance/sessions/11910fde56a49c01f973287fe9e587ee_activity.pkl b/backend/instance/sessions/11910fde56a49c01f973287fe9e587ee_activity.pkl new file mode 100644 index 000000000..9ee597d2d Binary files /dev/null and b/backend/instance/sessions/11910fde56a49c01f973287fe9e587ee_activity.pkl differ diff --git a/backend/instance/sessions/11ac90551c45c146da3551ec5856d0f7_activity.pkl b/backend/instance/sessions/11ac90551c45c146da3551ec5856d0f7_activity.pkl new file mode 100644 index 000000000..350869a7b Binary files /dev/null and b/backend/instance/sessions/11ac90551c45c146da3551ec5856d0f7_activity.pkl differ diff --git a/backend/instance/sessions/1277f7e5f509ae568d97d823f21f0e41_activity.pkl b/backend/instance/sessions/1277f7e5f509ae568d97d823f21f0e41_activity.pkl new file mode 100644 index 000000000..e495ef88f Binary files /dev/null and b/backend/instance/sessions/1277f7e5f509ae568d97d823f21f0e41_activity.pkl differ diff --git a/backend/instance/sessions/133142042ebfc5f2780a6cbd23f337a4_activity.pkl b/backend/instance/sessions/133142042ebfc5f2780a6cbd23f337a4_activity.pkl new file mode 100644 index 000000000..37b8188b5 Binary files /dev/null and b/backend/instance/sessions/133142042ebfc5f2780a6cbd23f337a4_activity.pkl differ diff --git a/backend/instance/sessions/137b20328b9b6f84cbc1e4f82569eec8_activity.pkl b/backend/instance/sessions/137b20328b9b6f84cbc1e4f82569eec8_activity.pkl new file mode 100644 index 000000000..cdca3d24a Binary files /dev/null and b/backend/instance/sessions/137b20328b9b6f84cbc1e4f82569eec8_activity.pkl differ diff --git a/backend/instance/sessions/1461a49cfce945c6fb4223e62a0170dc_activity.pkl b/backend/instance/sessions/1461a49cfce945c6fb4223e62a0170dc_activity.pkl new file mode 100644 index 000000000..6ff91babb Binary files /dev/null and b/backend/instance/sessions/1461a49cfce945c6fb4223e62a0170dc_activity.pkl differ diff --git a/backend/instance/sessions/149206037a992875afad29110930319a_activity.pkl b/backend/instance/sessions/149206037a992875afad29110930319a_activity.pkl new file mode 100644 index 000000000..1720b3507 Binary files /dev/null and b/backend/instance/sessions/149206037a992875afad29110930319a_activity.pkl differ diff --git a/backend/instance/sessions/14a578a9693910c59e6f17660997d539_activity.pkl b/backend/instance/sessions/14a578a9693910c59e6f17660997d539_activity.pkl new file mode 100644 index 000000000..bf62fa8d2 Binary files /dev/null and b/backend/instance/sessions/14a578a9693910c59e6f17660997d539_activity.pkl differ diff --git a/backend/instance/sessions/15abea580ec97d3f2afcba24b547af9c_activity.pkl b/backend/instance/sessions/15abea580ec97d3f2afcba24b547af9c_activity.pkl new file mode 100644 index 000000000..bcc865957 Binary files /dev/null and b/backend/instance/sessions/15abea580ec97d3f2afcba24b547af9c_activity.pkl differ diff --git a/backend/instance/sessions/174b73e1d8ce8e88a8233313cc030ca4_activity.pkl b/backend/instance/sessions/174b73e1d8ce8e88a8233313cc030ca4_activity.pkl new file mode 100644 index 000000000..8fd5b73e7 Binary files /dev/null and b/backend/instance/sessions/174b73e1d8ce8e88a8233313cc030ca4_activity.pkl differ diff --git a/backend/instance/sessions/17b5c5d45217c0dc2490720982f9cd0f_activity.pkl b/backend/instance/sessions/17b5c5d45217c0dc2490720982f9cd0f_activity.pkl new file mode 100644 index 000000000..0bba602c8 Binary files /dev/null and b/backend/instance/sessions/17b5c5d45217c0dc2490720982f9cd0f_activity.pkl differ diff --git a/backend/instance/sessions/184527fabe96fb0c8968db37fc1d255f_activity.pkl b/backend/instance/sessions/184527fabe96fb0c8968db37fc1d255f_activity.pkl new file mode 100644 index 000000000..4a9fd5204 Binary files /dev/null and b/backend/instance/sessions/184527fabe96fb0c8968db37fc1d255f_activity.pkl differ diff --git a/backend/instance/sessions/18a019f1dacbd49a58a8d0daac106f8c_activity.pkl b/backend/instance/sessions/18a019f1dacbd49a58a8d0daac106f8c_activity.pkl new file mode 100644 index 000000000..5c7f6e7fa Binary files /dev/null and b/backend/instance/sessions/18a019f1dacbd49a58a8d0daac106f8c_activity.pkl differ diff --git a/backend/instance/sessions/18ee5ae611a0afa4def633513ccb7955_activity.pkl b/backend/instance/sessions/18ee5ae611a0afa4def633513ccb7955_activity.pkl new file mode 100644 index 000000000..629adf45c Binary files /dev/null and b/backend/instance/sessions/18ee5ae611a0afa4def633513ccb7955_activity.pkl differ diff --git a/backend/instance/sessions/19294f5dfccbf0e83d45d01fff36154b_activity.pkl b/backend/instance/sessions/19294f5dfccbf0e83d45d01fff36154b_activity.pkl new file mode 100644 index 000000000..32e2b2aa0 Binary files /dev/null and b/backend/instance/sessions/19294f5dfccbf0e83d45d01fff36154b_activity.pkl differ diff --git a/backend/instance/sessions/19929888680e80eac5ff5644a365f382_activity.pkl b/backend/instance/sessions/19929888680e80eac5ff5644a365f382_activity.pkl new file mode 100644 index 000000000..244d76daf Binary files /dev/null and b/backend/instance/sessions/19929888680e80eac5ff5644a365f382_activity.pkl differ diff --git a/backend/instance/sessions/19fab42339ccdbb4a02e8f61c69daed4_activity.pkl b/backend/instance/sessions/19fab42339ccdbb4a02e8f61c69daed4_activity.pkl new file mode 100644 index 000000000..32001429e Binary files /dev/null and b/backend/instance/sessions/19fab42339ccdbb4a02e8f61c69daed4_activity.pkl differ diff --git a/backend/instance/sessions/1c20769810da34a6d3d241bff3f9c4b4_activity.pkl b/backend/instance/sessions/1c20769810da34a6d3d241bff3f9c4b4_activity.pkl new file mode 100644 index 000000000..a17adc7fd Binary files /dev/null and b/backend/instance/sessions/1c20769810da34a6d3d241bff3f9c4b4_activity.pkl differ diff --git a/backend/instance/sessions/1ddf8fe73357da1144bade7859da5886_activity.pkl b/backend/instance/sessions/1ddf8fe73357da1144bade7859da5886_activity.pkl new file mode 100644 index 000000000..b873f9ae6 Binary files /dev/null and b/backend/instance/sessions/1ddf8fe73357da1144bade7859da5886_activity.pkl differ diff --git a/backend/instance/sessions/1f3ba05d3de8cb30bfb71b7a6f979efe_activity.pkl b/backend/instance/sessions/1f3ba05d3de8cb30bfb71b7a6f979efe_activity.pkl new file mode 100644 index 000000000..21f5bd289 Binary files /dev/null and b/backend/instance/sessions/1f3ba05d3de8cb30bfb71b7a6f979efe_activity.pkl differ diff --git a/backend/instance/sessions/1f60f9908d09312112502fdb955e658a_activity.pkl b/backend/instance/sessions/1f60f9908d09312112502fdb955e658a_activity.pkl new file mode 100644 index 000000000..2b0cbe3a9 Binary files /dev/null and b/backend/instance/sessions/1f60f9908d09312112502fdb955e658a_activity.pkl differ diff --git a/backend/instance/sessions/1f6955f5ba4affc72c2dda17eb4768c1_activity.pkl b/backend/instance/sessions/1f6955f5ba4affc72c2dda17eb4768c1_activity.pkl new file mode 100644 index 000000000..2bb013ce3 Binary files /dev/null and b/backend/instance/sessions/1f6955f5ba4affc72c2dda17eb4768c1_activity.pkl differ diff --git a/backend/instance/sessions/206e6c1225a7da7730457fb396d4a108_activity.pkl b/backend/instance/sessions/206e6c1225a7da7730457fb396d4a108_activity.pkl new file mode 100644 index 000000000..6998f9ebf Binary files /dev/null and b/backend/instance/sessions/206e6c1225a7da7730457fb396d4a108_activity.pkl differ diff --git a/backend/instance/sessions/20fa8a64b912f67cead5e00834fb472a_activity.pkl b/backend/instance/sessions/20fa8a64b912f67cead5e00834fb472a_activity.pkl new file mode 100644 index 000000000..dc2760e19 Binary files /dev/null and b/backend/instance/sessions/20fa8a64b912f67cead5e00834fb472a_activity.pkl differ diff --git a/backend/instance/sessions/226714f296bf1f13514c292da61fdf38_activity.pkl b/backend/instance/sessions/226714f296bf1f13514c292da61fdf38_activity.pkl new file mode 100644 index 000000000..117016e1b Binary files /dev/null and b/backend/instance/sessions/226714f296bf1f13514c292da61fdf38_activity.pkl differ diff --git a/backend/instance/sessions/23358eb8d747fc584efd99972c6e1677_activity.pkl b/backend/instance/sessions/23358eb8d747fc584efd99972c6e1677_activity.pkl new file mode 100644 index 000000000..398cb27f1 Binary files /dev/null and b/backend/instance/sessions/23358eb8d747fc584efd99972c6e1677_activity.pkl differ diff --git a/backend/instance/sessions/236ecda7682659f66a339298d4872598_activity.pkl b/backend/instance/sessions/236ecda7682659f66a339298d4872598_activity.pkl new file mode 100644 index 000000000..11074a93f Binary files /dev/null and b/backend/instance/sessions/236ecda7682659f66a339298d4872598_activity.pkl differ diff --git a/backend/instance/sessions/23bc22b2f2e0ab746c098fcf9a3343a9_activity.pkl b/backend/instance/sessions/23bc22b2f2e0ab746c098fcf9a3343a9_activity.pkl new file mode 100644 index 000000000..d937acb69 Binary files /dev/null and b/backend/instance/sessions/23bc22b2f2e0ab746c098fcf9a3343a9_activity.pkl differ diff --git a/backend/instance/sessions/24c4984e4dd92991d139a4aa6f67a2e6_activity.pkl b/backend/instance/sessions/24c4984e4dd92991d139a4aa6f67a2e6_activity.pkl new file mode 100644 index 000000000..02e694601 Binary files /dev/null and b/backend/instance/sessions/24c4984e4dd92991d139a4aa6f67a2e6_activity.pkl differ diff --git a/backend/instance/sessions/24dad00e9c4884cf186b3e63d58e33f7_activity.pkl b/backend/instance/sessions/24dad00e9c4884cf186b3e63d58e33f7_activity.pkl new file mode 100644 index 000000000..d6ad3f685 Binary files /dev/null and b/backend/instance/sessions/24dad00e9c4884cf186b3e63d58e33f7_activity.pkl differ diff --git a/backend/instance/sessions/25bcd6f6860f54d77c6e159ade341aa9_activity.pkl b/backend/instance/sessions/25bcd6f6860f54d77c6e159ade341aa9_activity.pkl new file mode 100644 index 000000000..f22f4b234 Binary files /dev/null and b/backend/instance/sessions/25bcd6f6860f54d77c6e159ade341aa9_activity.pkl differ diff --git a/backend/instance/sessions/25e16370cfd1a2a07a4daeabfdfed3c1_activity.pkl b/backend/instance/sessions/25e16370cfd1a2a07a4daeabfdfed3c1_activity.pkl new file mode 100644 index 000000000..f80890e65 Binary files /dev/null and b/backend/instance/sessions/25e16370cfd1a2a07a4daeabfdfed3c1_activity.pkl differ diff --git a/backend/instance/sessions/280317d8196aa953aada93bbcafbd41f_activity.pkl b/backend/instance/sessions/280317d8196aa953aada93bbcafbd41f_activity.pkl new file mode 100644 index 000000000..5a86baef5 Binary files /dev/null and b/backend/instance/sessions/280317d8196aa953aada93bbcafbd41f_activity.pkl differ diff --git a/backend/instance/sessions/2861d3d978dc1b24c9953fac53d54ac2_activity.pkl b/backend/instance/sessions/2861d3d978dc1b24c9953fac53d54ac2_activity.pkl new file mode 100644 index 000000000..180edbdd5 Binary files /dev/null and b/backend/instance/sessions/2861d3d978dc1b24c9953fac53d54ac2_activity.pkl differ diff --git a/backend/instance/sessions/29453bf436fcd85eaed7743cb5768519_activity.pkl b/backend/instance/sessions/29453bf436fcd85eaed7743cb5768519_activity.pkl new file mode 100644 index 000000000..bc8219e42 Binary files /dev/null and b/backend/instance/sessions/29453bf436fcd85eaed7743cb5768519_activity.pkl differ diff --git a/backend/instance/sessions/2aaddc7cf30ef821e06b9c86862825a1_activity.pkl b/backend/instance/sessions/2aaddc7cf30ef821e06b9c86862825a1_activity.pkl new file mode 100644 index 000000000..91f06a727 Binary files /dev/null and b/backend/instance/sessions/2aaddc7cf30ef821e06b9c86862825a1_activity.pkl differ diff --git a/backend/instance/sessions/2b52f6e595ccbab7fbc7c64c3d895a84_activity.pkl b/backend/instance/sessions/2b52f6e595ccbab7fbc7c64c3d895a84_activity.pkl new file mode 100644 index 000000000..1b192079b Binary files /dev/null and b/backend/instance/sessions/2b52f6e595ccbab7fbc7c64c3d895a84_activity.pkl differ diff --git a/backend/instance/sessions/2c956a16d10cf3ad529a8d461cc88497_activity.pkl b/backend/instance/sessions/2c956a16d10cf3ad529a8d461cc88497_activity.pkl new file mode 100644 index 000000000..e8e18636b Binary files /dev/null and b/backend/instance/sessions/2c956a16d10cf3ad529a8d461cc88497_activity.pkl differ diff --git a/backend/instance/sessions/2d35eda441718745e98b290b801f5867_activity.pkl b/backend/instance/sessions/2d35eda441718745e98b290b801f5867_activity.pkl new file mode 100644 index 000000000..f46846efb Binary files /dev/null and b/backend/instance/sessions/2d35eda441718745e98b290b801f5867_activity.pkl differ diff --git a/backend/instance/sessions/2df9f4256d64b0da1930796f7315b804_activity.pkl b/backend/instance/sessions/2df9f4256d64b0da1930796f7315b804_activity.pkl new file mode 100644 index 000000000..cbc0a3bcf Binary files /dev/null and b/backend/instance/sessions/2df9f4256d64b0da1930796f7315b804_activity.pkl differ diff --git a/backend/instance/sessions/2feb002aa74d780c326bfde9db5b8866_activity.pkl b/backend/instance/sessions/2feb002aa74d780c326bfde9db5b8866_activity.pkl new file mode 100644 index 000000000..e04a6f5c0 Binary files /dev/null and b/backend/instance/sessions/2feb002aa74d780c326bfde9db5b8866_activity.pkl differ diff --git a/backend/instance/sessions/301a14a083d2310a7cfbaef5c9468345_activity.pkl b/backend/instance/sessions/301a14a083d2310a7cfbaef5c9468345_activity.pkl new file mode 100644 index 000000000..9d607c295 Binary files /dev/null and b/backend/instance/sessions/301a14a083d2310a7cfbaef5c9468345_activity.pkl differ diff --git a/backend/instance/sessions/30474f4cede4bbee355ed93c1ce3b209_activity.pkl b/backend/instance/sessions/30474f4cede4bbee355ed93c1ce3b209_activity.pkl new file mode 100644 index 000000000..466c3cd07 Binary files /dev/null and b/backend/instance/sessions/30474f4cede4bbee355ed93c1ce3b209_activity.pkl differ diff --git a/backend/instance/sessions/304b0b807622dbe412009cfb3e7392e1_activity.pkl b/backend/instance/sessions/304b0b807622dbe412009cfb3e7392e1_activity.pkl new file mode 100644 index 000000000..0c95c4885 Binary files /dev/null and b/backend/instance/sessions/304b0b807622dbe412009cfb3e7392e1_activity.pkl differ diff --git a/backend/instance/sessions/31304d250b104c6469e9247ce41e38a2_activity.pkl b/backend/instance/sessions/31304d250b104c6469e9247ce41e38a2_activity.pkl new file mode 100644 index 000000000..b1f584727 Binary files /dev/null and b/backend/instance/sessions/31304d250b104c6469e9247ce41e38a2_activity.pkl differ diff --git a/backend/instance/sessions/315d0aab67e3220447b4b511aed01084_activity.pkl b/backend/instance/sessions/315d0aab67e3220447b4b511aed01084_activity.pkl new file mode 100644 index 000000000..19054c916 Binary files /dev/null and b/backend/instance/sessions/315d0aab67e3220447b4b511aed01084_activity.pkl differ diff --git a/backend/instance/sessions/33edf31649098802ae24ce3b0546e342_activity.pkl b/backend/instance/sessions/33edf31649098802ae24ce3b0546e342_activity.pkl new file mode 100644 index 000000000..0426ec662 Binary files /dev/null and b/backend/instance/sessions/33edf31649098802ae24ce3b0546e342_activity.pkl differ diff --git a/backend/instance/sessions/345a915ab02760fc5196cd400d9ccfe7_activity.pkl b/backend/instance/sessions/345a915ab02760fc5196cd400d9ccfe7_activity.pkl new file mode 100644 index 000000000..63d491418 Binary files /dev/null and b/backend/instance/sessions/345a915ab02760fc5196cd400d9ccfe7_activity.pkl differ diff --git a/backend/instance/sessions/34ecdfd093cf4f29d06f704fb5aabc29_activity.pkl b/backend/instance/sessions/34ecdfd093cf4f29d06f704fb5aabc29_activity.pkl new file mode 100644 index 000000000..dd4636d3d Binary files /dev/null and b/backend/instance/sessions/34ecdfd093cf4f29d06f704fb5aabc29_activity.pkl differ diff --git a/backend/instance/sessions/3539f29244511b4326c07daeeed9501b_activity.pkl b/backend/instance/sessions/3539f29244511b4326c07daeeed9501b_activity.pkl new file mode 100644 index 000000000..53e3cdc06 Binary files /dev/null and b/backend/instance/sessions/3539f29244511b4326c07daeeed9501b_activity.pkl differ diff --git a/backend/instance/sessions/356305db97cbc3aebc3e2a48f9d0c318_activity.pkl b/backend/instance/sessions/356305db97cbc3aebc3e2a48f9d0c318_activity.pkl new file mode 100644 index 000000000..0db3975a6 Binary files /dev/null and b/backend/instance/sessions/356305db97cbc3aebc3e2a48f9d0c318_activity.pkl differ diff --git a/backend/instance/sessions/3569be4a53914be30a65847e006919a1_activity.pkl b/backend/instance/sessions/3569be4a53914be30a65847e006919a1_activity.pkl new file mode 100644 index 000000000..65c03bb31 Binary files /dev/null and b/backend/instance/sessions/3569be4a53914be30a65847e006919a1_activity.pkl differ diff --git a/backend/instance/sessions/3603dd74709f22cb3e7ef93bc8b7be40_activity.pkl b/backend/instance/sessions/3603dd74709f22cb3e7ef93bc8b7be40_activity.pkl new file mode 100644 index 000000000..e20000954 Binary files /dev/null and b/backend/instance/sessions/3603dd74709f22cb3e7ef93bc8b7be40_activity.pkl differ diff --git a/backend/instance/sessions/36732222fb11045fed8290a1f580b361_activity.pkl b/backend/instance/sessions/36732222fb11045fed8290a1f580b361_activity.pkl new file mode 100644 index 000000000..25fca0adc Binary files /dev/null and b/backend/instance/sessions/36732222fb11045fed8290a1f580b361_activity.pkl differ diff --git a/backend/instance/sessions/377338291b841daa04bdb279d4b47bd7_activity.pkl b/backend/instance/sessions/377338291b841daa04bdb279d4b47bd7_activity.pkl new file mode 100644 index 000000000..b469ec97b Binary files /dev/null and b/backend/instance/sessions/377338291b841daa04bdb279d4b47bd7_activity.pkl differ diff --git a/backend/instance/sessions/37969bc81ca03dd2394d0cb4719af424_activity.pkl b/backend/instance/sessions/37969bc81ca03dd2394d0cb4719af424_activity.pkl new file mode 100644 index 000000000..957e8dd8e Binary files /dev/null and b/backend/instance/sessions/37969bc81ca03dd2394d0cb4719af424_activity.pkl differ diff --git a/backend/instance/sessions/38abd724a4c1d0c4ae30d0ca538e4421_activity.pkl b/backend/instance/sessions/38abd724a4c1d0c4ae30d0ca538e4421_activity.pkl new file mode 100644 index 000000000..4cb9617f7 Binary files /dev/null and b/backend/instance/sessions/38abd724a4c1d0c4ae30d0ca538e4421_activity.pkl differ diff --git a/backend/instance/sessions/38d23992fff10b79baaa050567412f0b_activity.pkl b/backend/instance/sessions/38d23992fff10b79baaa050567412f0b_activity.pkl new file mode 100644 index 000000000..1a652b9c0 Binary files /dev/null and b/backend/instance/sessions/38d23992fff10b79baaa050567412f0b_activity.pkl differ diff --git a/backend/instance/sessions/390094b504a8d39c91fd4e2cdbf554af_activity.pkl b/backend/instance/sessions/390094b504a8d39c91fd4e2cdbf554af_activity.pkl new file mode 100644 index 000000000..68ff4b437 Binary files /dev/null and b/backend/instance/sessions/390094b504a8d39c91fd4e2cdbf554af_activity.pkl differ diff --git a/backend/instance/sessions/393acf4b208450ad13aba31a4767f101_activity.pkl b/backend/instance/sessions/393acf4b208450ad13aba31a4767f101_activity.pkl new file mode 100644 index 000000000..4d82ea071 Binary files /dev/null and b/backend/instance/sessions/393acf4b208450ad13aba31a4767f101_activity.pkl differ diff --git a/backend/instance/sessions/3ad2932213d4bef359703b4e683ef6fa_activity.pkl b/backend/instance/sessions/3ad2932213d4bef359703b4e683ef6fa_activity.pkl new file mode 100644 index 000000000..039c1896e Binary files /dev/null and b/backend/instance/sessions/3ad2932213d4bef359703b4e683ef6fa_activity.pkl differ diff --git a/backend/instance/sessions/3ca181436251b3a9c107abf0ece15257_activity.pkl b/backend/instance/sessions/3ca181436251b3a9c107abf0ece15257_activity.pkl new file mode 100644 index 000000000..b174eeaff Binary files /dev/null and b/backend/instance/sessions/3ca181436251b3a9c107abf0ece15257_activity.pkl differ diff --git a/backend/instance/sessions/3d03b7b0ae487bb0e72738d6c91f8a29_activity.pkl b/backend/instance/sessions/3d03b7b0ae487bb0e72738d6c91f8a29_activity.pkl new file mode 100644 index 000000000..df2539302 Binary files /dev/null and b/backend/instance/sessions/3d03b7b0ae487bb0e72738d6c91f8a29_activity.pkl differ diff --git a/backend/instance/sessions/3d0d9ba2ce2b1ffbb6b682970e22f6ef_activity.pkl b/backend/instance/sessions/3d0d9ba2ce2b1ffbb6b682970e22f6ef_activity.pkl new file mode 100644 index 000000000..624cea305 Binary files /dev/null and b/backend/instance/sessions/3d0d9ba2ce2b1ffbb6b682970e22f6ef_activity.pkl differ diff --git a/backend/instance/sessions/3d1011ad1b47daee5815417176eb08dd_activity.pkl b/backend/instance/sessions/3d1011ad1b47daee5815417176eb08dd_activity.pkl new file mode 100644 index 000000000..53f470ead Binary files /dev/null and b/backend/instance/sessions/3d1011ad1b47daee5815417176eb08dd_activity.pkl differ diff --git a/backend/instance/sessions/3d1203a7c5451c12795adaa0adfbeb85_activity.pkl b/backend/instance/sessions/3d1203a7c5451c12795adaa0adfbeb85_activity.pkl new file mode 100644 index 000000000..3555bcc3a Binary files /dev/null and b/backend/instance/sessions/3d1203a7c5451c12795adaa0adfbeb85_activity.pkl differ diff --git a/backend/instance/sessions/3dfa85c15417a8568ef298099b312454_activity.pkl b/backend/instance/sessions/3dfa85c15417a8568ef298099b312454_activity.pkl new file mode 100644 index 000000000..b9a7e40be Binary files /dev/null and b/backend/instance/sessions/3dfa85c15417a8568ef298099b312454_activity.pkl differ diff --git a/backend/instance/sessions/3e6ee35a55fc26ea973f9edb5dc775e2_activity.pkl b/backend/instance/sessions/3e6ee35a55fc26ea973f9edb5dc775e2_activity.pkl new file mode 100644 index 000000000..42c96820a Binary files /dev/null and b/backend/instance/sessions/3e6ee35a55fc26ea973f9edb5dc775e2_activity.pkl differ diff --git a/backend/instance/sessions/3eaa175821617244c7bb79d46034d63a_activity.pkl b/backend/instance/sessions/3eaa175821617244c7bb79d46034d63a_activity.pkl new file mode 100644 index 000000000..a55c9851a Binary files /dev/null and b/backend/instance/sessions/3eaa175821617244c7bb79d46034d63a_activity.pkl differ diff --git a/backend/instance/sessions/3f204a8ba702e4112857e2e736397c1d_activity.pkl b/backend/instance/sessions/3f204a8ba702e4112857e2e736397c1d_activity.pkl new file mode 100644 index 000000000..10cb159ed Binary files /dev/null and b/backend/instance/sessions/3f204a8ba702e4112857e2e736397c1d_activity.pkl differ diff --git a/backend/instance/sessions/3f21454854a458521afa46d56168e467_activity.pkl b/backend/instance/sessions/3f21454854a458521afa46d56168e467_activity.pkl new file mode 100644 index 000000000..8c5cb56ce Binary files /dev/null and b/backend/instance/sessions/3f21454854a458521afa46d56168e467_activity.pkl differ diff --git a/backend/instance/sessions/3f53b246adffbd18abcacd3663e22ad1_activity.pkl b/backend/instance/sessions/3f53b246adffbd18abcacd3663e22ad1_activity.pkl new file mode 100644 index 000000000..5183b0d19 Binary files /dev/null and b/backend/instance/sessions/3f53b246adffbd18abcacd3663e22ad1_activity.pkl differ diff --git a/backend/instance/sessions/3ff26470c072fe3b8bf72da62db27203_activity.pkl b/backend/instance/sessions/3ff26470c072fe3b8bf72da62db27203_activity.pkl new file mode 100644 index 000000000..cc76df1aa Binary files /dev/null and b/backend/instance/sessions/3ff26470c072fe3b8bf72da62db27203_activity.pkl differ diff --git a/backend/instance/sessions/4031ba46de6000582572e17cc29d35fd_activity.pkl b/backend/instance/sessions/4031ba46de6000582572e17cc29d35fd_activity.pkl new file mode 100644 index 000000000..320007325 Binary files /dev/null and b/backend/instance/sessions/4031ba46de6000582572e17cc29d35fd_activity.pkl differ diff --git a/backend/instance/sessions/40d3b5144362d1d3cb1dca7cffdb087a_activity.pkl b/backend/instance/sessions/40d3b5144362d1d3cb1dca7cffdb087a_activity.pkl new file mode 100644 index 000000000..c7ac90a28 Binary files /dev/null and b/backend/instance/sessions/40d3b5144362d1d3cb1dca7cffdb087a_activity.pkl differ diff --git a/backend/instance/sessions/4158af22c785ac87121af0091569a77a_activity.pkl b/backend/instance/sessions/4158af22c785ac87121af0091569a77a_activity.pkl new file mode 100644 index 000000000..0e0bde797 Binary files /dev/null and b/backend/instance/sessions/4158af22c785ac87121af0091569a77a_activity.pkl differ diff --git a/backend/instance/sessions/41f477e65354d067b5202d1448ef7f79_activity.pkl b/backend/instance/sessions/41f477e65354d067b5202d1448ef7f79_activity.pkl new file mode 100644 index 000000000..58c7924c7 Binary files /dev/null and b/backend/instance/sessions/41f477e65354d067b5202d1448ef7f79_activity.pkl differ diff --git a/backend/instance/sessions/42083366183672e085042ce66ade8620_activity.pkl b/backend/instance/sessions/42083366183672e085042ce66ade8620_activity.pkl new file mode 100644 index 000000000..1802ff90b Binary files /dev/null and b/backend/instance/sessions/42083366183672e085042ce66ade8620_activity.pkl differ diff --git a/backend/instance/sessions/4391c2449ec92d67ab843077bd29d174_activity.pkl b/backend/instance/sessions/4391c2449ec92d67ab843077bd29d174_activity.pkl new file mode 100644 index 000000000..1f73e03b3 Binary files /dev/null and b/backend/instance/sessions/4391c2449ec92d67ab843077bd29d174_activity.pkl differ diff --git a/backend/instance/sessions/45030bffdb147712d2345561a7265b3c_activity.pkl b/backend/instance/sessions/45030bffdb147712d2345561a7265b3c_activity.pkl new file mode 100644 index 000000000..52c06c4da Binary files /dev/null and b/backend/instance/sessions/45030bffdb147712d2345561a7265b3c_activity.pkl differ diff --git a/backend/instance/sessions/45ce23b04718a4c01b4ec4717fe58b3f_activity.pkl b/backend/instance/sessions/45ce23b04718a4c01b4ec4717fe58b3f_activity.pkl new file mode 100644 index 000000000..c7172fe2b Binary files /dev/null and b/backend/instance/sessions/45ce23b04718a4c01b4ec4717fe58b3f_activity.pkl differ diff --git a/backend/instance/sessions/47f5189020e3ed5e975ee1fe6c32f768_activity.pkl b/backend/instance/sessions/47f5189020e3ed5e975ee1fe6c32f768_activity.pkl new file mode 100644 index 000000000..8c72cb877 Binary files /dev/null and b/backend/instance/sessions/47f5189020e3ed5e975ee1fe6c32f768_activity.pkl differ diff --git a/backend/instance/sessions/4921e317299111cb9577ef4fc2e39896_activity.pkl b/backend/instance/sessions/4921e317299111cb9577ef4fc2e39896_activity.pkl new file mode 100644 index 000000000..d5223fa46 Binary files /dev/null and b/backend/instance/sessions/4921e317299111cb9577ef4fc2e39896_activity.pkl differ diff --git a/backend/instance/sessions/4958b12288c09ababd8ce41cb38ab670_activity.pkl b/backend/instance/sessions/4958b12288c09ababd8ce41cb38ab670_activity.pkl new file mode 100644 index 000000000..06e8e8349 Binary files /dev/null and b/backend/instance/sessions/4958b12288c09ababd8ce41cb38ab670_activity.pkl differ diff --git a/backend/instance/sessions/49c1edf64743b5b88ead332511629abd_activity.pkl b/backend/instance/sessions/49c1edf64743b5b88ead332511629abd_activity.pkl new file mode 100644 index 000000000..14490d412 Binary files /dev/null and b/backend/instance/sessions/49c1edf64743b5b88ead332511629abd_activity.pkl differ diff --git a/backend/instance/sessions/4a1f18f83186ba1eb6f5535c9ea5af67_activity.pkl b/backend/instance/sessions/4a1f18f83186ba1eb6f5535c9ea5af67_activity.pkl new file mode 100644 index 000000000..9face3c3b Binary files /dev/null and b/backend/instance/sessions/4a1f18f83186ba1eb6f5535c9ea5af67_activity.pkl differ diff --git a/backend/instance/sessions/4a2d50df1eee045f47bb6f268faf2b94_activity.pkl b/backend/instance/sessions/4a2d50df1eee045f47bb6f268faf2b94_activity.pkl new file mode 100644 index 000000000..a32f1c281 Binary files /dev/null and b/backend/instance/sessions/4a2d50df1eee045f47bb6f268faf2b94_activity.pkl differ diff --git a/backend/instance/sessions/4abb2248e126059b3fae5a21aa6e3fa5_activity.pkl b/backend/instance/sessions/4abb2248e126059b3fae5a21aa6e3fa5_activity.pkl new file mode 100644 index 000000000..eab54f7f0 Binary files /dev/null and b/backend/instance/sessions/4abb2248e126059b3fae5a21aa6e3fa5_activity.pkl differ diff --git a/backend/instance/sessions/4ba416690cdfe6c9eaf1b172b2c58716_activity.pkl b/backend/instance/sessions/4ba416690cdfe6c9eaf1b172b2c58716_activity.pkl new file mode 100644 index 000000000..12f3b6389 Binary files /dev/null and b/backend/instance/sessions/4ba416690cdfe6c9eaf1b172b2c58716_activity.pkl differ diff --git a/backend/instance/sessions/4c3c39c1ea83a26ebe373429475c6470_activity.pkl b/backend/instance/sessions/4c3c39c1ea83a26ebe373429475c6470_activity.pkl new file mode 100644 index 000000000..c9ce1b9c8 Binary files /dev/null and b/backend/instance/sessions/4c3c39c1ea83a26ebe373429475c6470_activity.pkl differ diff --git a/backend/instance/sessions/4c6819ab66b2b58d241fda4a1fa4b09b_activity.pkl b/backend/instance/sessions/4c6819ab66b2b58d241fda4a1fa4b09b_activity.pkl new file mode 100644 index 000000000..9a89de05f Binary files /dev/null and b/backend/instance/sessions/4c6819ab66b2b58d241fda4a1fa4b09b_activity.pkl differ diff --git a/backend/instance/sessions/4c7dbd2558cc64d3404821918ab4be51_activity.pkl b/backend/instance/sessions/4c7dbd2558cc64d3404821918ab4be51_activity.pkl new file mode 100644 index 000000000..d978b14f2 Binary files /dev/null and b/backend/instance/sessions/4c7dbd2558cc64d3404821918ab4be51_activity.pkl differ diff --git a/backend/instance/sessions/4cd437f3749fb2b6950d9faf8ade9570_activity.pkl b/backend/instance/sessions/4cd437f3749fb2b6950d9faf8ade9570_activity.pkl new file mode 100644 index 000000000..38a845053 Binary files /dev/null and b/backend/instance/sessions/4cd437f3749fb2b6950d9faf8ade9570_activity.pkl differ diff --git a/backend/instance/sessions/4e0fb640105dbfcb9e1016b4094d5eba_activity.pkl b/backend/instance/sessions/4e0fb640105dbfcb9e1016b4094d5eba_activity.pkl new file mode 100644 index 000000000..6ff9c0be6 Binary files /dev/null and b/backend/instance/sessions/4e0fb640105dbfcb9e1016b4094d5eba_activity.pkl differ diff --git a/backend/instance/sessions/4e69189a862cef98a80fbd9850c5775d_activity.pkl b/backend/instance/sessions/4e69189a862cef98a80fbd9850c5775d_activity.pkl new file mode 100644 index 000000000..87a582e41 Binary files /dev/null and b/backend/instance/sessions/4e69189a862cef98a80fbd9850c5775d_activity.pkl differ diff --git a/backend/instance/sessions/4eb87c9808d2908604039aa5a703cce2_activity.pkl b/backend/instance/sessions/4eb87c9808d2908604039aa5a703cce2_activity.pkl new file mode 100644 index 000000000..300b493fe Binary files /dev/null and b/backend/instance/sessions/4eb87c9808d2908604039aa5a703cce2_activity.pkl differ diff --git a/backend/instance/sessions/4f03aaaf2ab7c18231155b17583e104a_activity.pkl b/backend/instance/sessions/4f03aaaf2ab7c18231155b17583e104a_activity.pkl new file mode 100644 index 000000000..0e75836f1 Binary files /dev/null and b/backend/instance/sessions/4f03aaaf2ab7c18231155b17583e104a_activity.pkl differ diff --git a/backend/instance/sessions/4f1b94d6a5210f315eeec2e2a1c75ac4_activity.pkl b/backend/instance/sessions/4f1b94d6a5210f315eeec2e2a1c75ac4_activity.pkl new file mode 100644 index 000000000..32697e90b Binary files /dev/null and b/backend/instance/sessions/4f1b94d6a5210f315eeec2e2a1c75ac4_activity.pkl differ diff --git a/backend/instance/sessions/4ff4f8e2def8bce0ea104039f68e15de_activity.pkl b/backend/instance/sessions/4ff4f8e2def8bce0ea104039f68e15de_activity.pkl new file mode 100644 index 000000000..bd508c455 Binary files /dev/null and b/backend/instance/sessions/4ff4f8e2def8bce0ea104039f68e15de_activity.pkl differ diff --git a/backend/instance/sessions/502046436ee0b294130812467d648ca1_activity.pkl b/backend/instance/sessions/502046436ee0b294130812467d648ca1_activity.pkl new file mode 100644 index 000000000..6cb7180c2 Binary files /dev/null and b/backend/instance/sessions/502046436ee0b294130812467d648ca1_activity.pkl differ diff --git a/backend/instance/sessions/503b808ab0d4f1710d829104358ce388_activity.pkl b/backend/instance/sessions/503b808ab0d4f1710d829104358ce388_activity.pkl new file mode 100644 index 000000000..eb6ac9041 Binary files /dev/null and b/backend/instance/sessions/503b808ab0d4f1710d829104358ce388_activity.pkl differ diff --git a/backend/instance/sessions/503e24c7b129627a8d174e6a2b906122_activity.pkl b/backend/instance/sessions/503e24c7b129627a8d174e6a2b906122_activity.pkl new file mode 100644 index 000000000..66c397532 Binary files /dev/null and b/backend/instance/sessions/503e24c7b129627a8d174e6a2b906122_activity.pkl differ diff --git a/backend/instance/sessions/51252448b5fb89f64054daafe0ef0c64_activity.pkl b/backend/instance/sessions/51252448b5fb89f64054daafe0ef0c64_activity.pkl new file mode 100644 index 000000000..3823ac8c1 Binary files /dev/null and b/backend/instance/sessions/51252448b5fb89f64054daafe0ef0c64_activity.pkl differ diff --git a/backend/instance/sessions/521fce8921ae030ec249c1156d50f5b6_activity.pkl b/backend/instance/sessions/521fce8921ae030ec249c1156d50f5b6_activity.pkl new file mode 100644 index 000000000..94e08a6a5 Binary files /dev/null and b/backend/instance/sessions/521fce8921ae030ec249c1156d50f5b6_activity.pkl differ diff --git a/backend/instance/sessions/5348d95cf704a365e4032ecaaf958878_activity.pkl b/backend/instance/sessions/5348d95cf704a365e4032ecaaf958878_activity.pkl new file mode 100644 index 000000000..166f8d3e8 Binary files /dev/null and b/backend/instance/sessions/5348d95cf704a365e4032ecaaf958878_activity.pkl differ diff --git a/backend/instance/sessions/53fd47a273a29ca92bd99175bbe2b74f_activity.pkl b/backend/instance/sessions/53fd47a273a29ca92bd99175bbe2b74f_activity.pkl new file mode 100644 index 000000000..5095db2eb Binary files /dev/null and b/backend/instance/sessions/53fd47a273a29ca92bd99175bbe2b74f_activity.pkl differ diff --git a/backend/instance/sessions/54436e1458dc5c55a9cd82640f44191b_activity.pkl b/backend/instance/sessions/54436e1458dc5c55a9cd82640f44191b_activity.pkl new file mode 100644 index 000000000..83fb68457 Binary files /dev/null and b/backend/instance/sessions/54436e1458dc5c55a9cd82640f44191b_activity.pkl differ diff --git a/backend/instance/sessions/55e6269d6ff95b7bfe48913cb84b9474_activity.pkl b/backend/instance/sessions/55e6269d6ff95b7bfe48913cb84b9474_activity.pkl new file mode 100644 index 000000000..e53963451 Binary files /dev/null and b/backend/instance/sessions/55e6269d6ff95b7bfe48913cb84b9474_activity.pkl differ diff --git a/backend/instance/sessions/578a1b67d4cb1a667fbea575ae3c6529_activity.pkl b/backend/instance/sessions/578a1b67d4cb1a667fbea575ae3c6529_activity.pkl new file mode 100644 index 000000000..2444e19b8 Binary files /dev/null and b/backend/instance/sessions/578a1b67d4cb1a667fbea575ae3c6529_activity.pkl differ diff --git a/backend/instance/sessions/578ba5c4c528110d8a10d78e135ee87c_activity.pkl b/backend/instance/sessions/578ba5c4c528110d8a10d78e135ee87c_activity.pkl new file mode 100644 index 000000000..105bd522a Binary files /dev/null and b/backend/instance/sessions/578ba5c4c528110d8a10d78e135ee87c_activity.pkl differ diff --git a/backend/instance/sessions/5920db2ba81e03e243344451b47334cb_activity.pkl b/backend/instance/sessions/5920db2ba81e03e243344451b47334cb_activity.pkl new file mode 100644 index 000000000..77af3c804 Binary files /dev/null and b/backend/instance/sessions/5920db2ba81e03e243344451b47334cb_activity.pkl differ diff --git a/backend/instance/sessions/5b851059ea4b334134ff328783bfe60e_activity.pkl b/backend/instance/sessions/5b851059ea4b334134ff328783bfe60e_activity.pkl new file mode 100644 index 000000000..22063d8ec Binary files /dev/null and b/backend/instance/sessions/5b851059ea4b334134ff328783bfe60e_activity.pkl differ diff --git a/backend/instance/sessions/5cdb39b3c63a777dce0ba3e071e3f555_activity.pkl b/backend/instance/sessions/5cdb39b3c63a777dce0ba3e071e3f555_activity.pkl new file mode 100644 index 000000000..85302f2f4 Binary files /dev/null and b/backend/instance/sessions/5cdb39b3c63a777dce0ba3e071e3f555_activity.pkl differ diff --git a/backend/instance/sessions/5ddafeb09909f4fb9dbc5b3041e42c95_activity.pkl b/backend/instance/sessions/5ddafeb09909f4fb9dbc5b3041e42c95_activity.pkl new file mode 100644 index 000000000..1fe91ba88 Binary files /dev/null and b/backend/instance/sessions/5ddafeb09909f4fb9dbc5b3041e42c95_activity.pkl differ diff --git a/backend/instance/sessions/5e62ca8bb83207c008cff7daa0df4e92_activity.pkl b/backend/instance/sessions/5e62ca8bb83207c008cff7daa0df4e92_activity.pkl new file mode 100644 index 000000000..921a0f82c Binary files /dev/null and b/backend/instance/sessions/5e62ca8bb83207c008cff7daa0df4e92_activity.pkl differ diff --git a/backend/instance/sessions/5f4dcfd2331540e3af118f68f7cec2ef_activity.pkl b/backend/instance/sessions/5f4dcfd2331540e3af118f68f7cec2ef_activity.pkl new file mode 100644 index 000000000..81700c7d2 Binary files /dev/null and b/backend/instance/sessions/5f4dcfd2331540e3af118f68f7cec2ef_activity.pkl differ diff --git a/backend/instance/sessions/5ff433248e0381d892be3f71818ac9cc_activity.pkl b/backend/instance/sessions/5ff433248e0381d892be3f71818ac9cc_activity.pkl new file mode 100644 index 000000000..94226f381 Binary files /dev/null and b/backend/instance/sessions/5ff433248e0381d892be3f71818ac9cc_activity.pkl differ diff --git a/backend/instance/sessions/603369b660be0f19d5a793aa1f64a173_activity.pkl b/backend/instance/sessions/603369b660be0f19d5a793aa1f64a173_activity.pkl new file mode 100644 index 000000000..3c505a0e5 Binary files /dev/null and b/backend/instance/sessions/603369b660be0f19d5a793aa1f64a173_activity.pkl differ diff --git a/backend/instance/sessions/611d6efad954ed62903f552ead25bc34_activity.pkl b/backend/instance/sessions/611d6efad954ed62903f552ead25bc34_activity.pkl new file mode 100644 index 000000000..bd91514d0 Binary files /dev/null and b/backend/instance/sessions/611d6efad954ed62903f552ead25bc34_activity.pkl differ diff --git a/backend/instance/sessions/62fc016ef6cedfad404bb7a388251a6f_activity.pkl b/backend/instance/sessions/62fc016ef6cedfad404bb7a388251a6f_activity.pkl new file mode 100644 index 000000000..5b0dce839 Binary files /dev/null and b/backend/instance/sessions/62fc016ef6cedfad404bb7a388251a6f_activity.pkl differ diff --git a/backend/instance/sessions/63dd9195e1cbdb56eb1b5ab8eaf00a39_activity.pkl b/backend/instance/sessions/63dd9195e1cbdb56eb1b5ab8eaf00a39_activity.pkl new file mode 100644 index 000000000..f245721c5 Binary files /dev/null and b/backend/instance/sessions/63dd9195e1cbdb56eb1b5ab8eaf00a39_activity.pkl differ diff --git a/backend/instance/sessions/63fd0e4cf5e56195b6cacc6845daceb4_activity.pkl b/backend/instance/sessions/63fd0e4cf5e56195b6cacc6845daceb4_activity.pkl new file mode 100644 index 000000000..abc700ae3 Binary files /dev/null and b/backend/instance/sessions/63fd0e4cf5e56195b6cacc6845daceb4_activity.pkl differ diff --git a/backend/instance/sessions/65ed89a22c1995430b311a982c6cd9a5_activity.pkl b/backend/instance/sessions/65ed89a22c1995430b311a982c6cd9a5_activity.pkl new file mode 100644 index 000000000..32d0794a7 Binary files /dev/null and b/backend/instance/sessions/65ed89a22c1995430b311a982c6cd9a5_activity.pkl differ diff --git a/backend/instance/sessions/660134e3f7d6420c4e9490e7c58df322_activity.pkl b/backend/instance/sessions/660134e3f7d6420c4e9490e7c58df322_activity.pkl new file mode 100644 index 000000000..a1f994686 Binary files /dev/null and b/backend/instance/sessions/660134e3f7d6420c4e9490e7c58df322_activity.pkl differ diff --git a/backend/instance/sessions/664f7fadb5c29036b6476050a1d586be_activity.pkl b/backend/instance/sessions/664f7fadb5c29036b6476050a1d586be_activity.pkl new file mode 100644 index 000000000..fe43b4788 Binary files /dev/null and b/backend/instance/sessions/664f7fadb5c29036b6476050a1d586be_activity.pkl differ diff --git a/backend/instance/sessions/671371631387f13e772b9cfa9dd38afb_activity.pkl b/backend/instance/sessions/671371631387f13e772b9cfa9dd38afb_activity.pkl new file mode 100644 index 000000000..05b5dc421 Binary files /dev/null and b/backend/instance/sessions/671371631387f13e772b9cfa9dd38afb_activity.pkl differ diff --git a/backend/instance/sessions/676cee540b3f494be102946c4f1550b7_activity.pkl b/backend/instance/sessions/676cee540b3f494be102946c4f1550b7_activity.pkl new file mode 100644 index 000000000..176c0c56e Binary files /dev/null and b/backend/instance/sessions/676cee540b3f494be102946c4f1550b7_activity.pkl differ diff --git a/backend/instance/sessions/67b862f995246429364c712238ae60ca_activity.pkl b/backend/instance/sessions/67b862f995246429364c712238ae60ca_activity.pkl new file mode 100644 index 000000000..93c459165 Binary files /dev/null and b/backend/instance/sessions/67b862f995246429364c712238ae60ca_activity.pkl differ diff --git a/backend/instance/sessions/683a2b035f003fa83641526a12e538aa_activity.pkl b/backend/instance/sessions/683a2b035f003fa83641526a12e538aa_activity.pkl new file mode 100644 index 000000000..7db1c73df Binary files /dev/null and b/backend/instance/sessions/683a2b035f003fa83641526a12e538aa_activity.pkl differ diff --git a/backend/instance/sessions/68b1a1f3ee34ff987fb02972d9e89936_activity.pkl b/backend/instance/sessions/68b1a1f3ee34ff987fb02972d9e89936_activity.pkl new file mode 100644 index 000000000..93b34d0d5 Binary files /dev/null and b/backend/instance/sessions/68b1a1f3ee34ff987fb02972d9e89936_activity.pkl differ diff --git a/backend/instance/sessions/68c917e9a328cf7fc399a117bc69e619_activity.pkl b/backend/instance/sessions/68c917e9a328cf7fc399a117bc69e619_activity.pkl new file mode 100644 index 000000000..6ffbc588f Binary files /dev/null and b/backend/instance/sessions/68c917e9a328cf7fc399a117bc69e619_activity.pkl differ diff --git a/backend/instance/sessions/69ff56dcff3c0ec9fb5e2924b3e8af62_activity.pkl b/backend/instance/sessions/69ff56dcff3c0ec9fb5e2924b3e8af62_activity.pkl new file mode 100644 index 000000000..e8485654e Binary files /dev/null and b/backend/instance/sessions/69ff56dcff3c0ec9fb5e2924b3e8af62_activity.pkl differ diff --git a/backend/instance/sessions/6a314b6fca8a4cced959e1f9ecc8e539_activity.pkl b/backend/instance/sessions/6a314b6fca8a4cced959e1f9ecc8e539_activity.pkl new file mode 100644 index 000000000..988a2b8d6 Binary files /dev/null and b/backend/instance/sessions/6a314b6fca8a4cced959e1f9ecc8e539_activity.pkl differ diff --git a/backend/instance/sessions/6b4c665602e7fed4cd7fb2dd6eaa0309_activity.pkl b/backend/instance/sessions/6b4c665602e7fed4cd7fb2dd6eaa0309_activity.pkl new file mode 100644 index 000000000..9cc6eed67 Binary files /dev/null and b/backend/instance/sessions/6b4c665602e7fed4cd7fb2dd6eaa0309_activity.pkl differ diff --git a/backend/instance/sessions/6d083a7ecaf315a381f8709d7ad242b8_activity.pkl b/backend/instance/sessions/6d083a7ecaf315a381f8709d7ad242b8_activity.pkl new file mode 100644 index 000000000..6407811bf Binary files /dev/null and b/backend/instance/sessions/6d083a7ecaf315a381f8709d7ad242b8_activity.pkl differ diff --git a/backend/instance/sessions/6d20ed965908485ae2708cbcb6673b2d_activity.pkl b/backend/instance/sessions/6d20ed965908485ae2708cbcb6673b2d_activity.pkl new file mode 100644 index 000000000..4e55f4b43 Binary files /dev/null and b/backend/instance/sessions/6d20ed965908485ae2708cbcb6673b2d_activity.pkl differ diff --git a/backend/instance/sessions/6de87d0dc6346c6cbd9972d536458be9_activity.pkl b/backend/instance/sessions/6de87d0dc6346c6cbd9972d536458be9_activity.pkl new file mode 100644 index 000000000..72fe351a3 Binary files /dev/null and b/backend/instance/sessions/6de87d0dc6346c6cbd9972d536458be9_activity.pkl differ diff --git a/backend/instance/sessions/6e7fd8b318751498e15d8dd8e496a2bf_activity.pkl b/backend/instance/sessions/6e7fd8b318751498e15d8dd8e496a2bf_activity.pkl new file mode 100644 index 000000000..ded59b51d Binary files /dev/null and b/backend/instance/sessions/6e7fd8b318751498e15d8dd8e496a2bf_activity.pkl differ diff --git a/backend/instance/sessions/6f9fe15a8002a436b6f7ecb7c1a64ad7_activity.pkl b/backend/instance/sessions/6f9fe15a8002a436b6f7ecb7c1a64ad7_activity.pkl new file mode 100644 index 000000000..19b4b26d9 Binary files /dev/null and b/backend/instance/sessions/6f9fe15a8002a436b6f7ecb7c1a64ad7_activity.pkl differ diff --git a/backend/instance/sessions/6fe5de8f16aba9c8cd8ade835d758a8f_activity.pkl b/backend/instance/sessions/6fe5de8f16aba9c8cd8ade835d758a8f_activity.pkl new file mode 100644 index 000000000..6c97ea459 Binary files /dev/null and b/backend/instance/sessions/6fe5de8f16aba9c8cd8ade835d758a8f_activity.pkl differ diff --git a/backend/instance/sessions/703901107be53db41660fc752d7143ac_activity.pkl b/backend/instance/sessions/703901107be53db41660fc752d7143ac_activity.pkl new file mode 100644 index 000000000..9a15eed78 Binary files /dev/null and b/backend/instance/sessions/703901107be53db41660fc752d7143ac_activity.pkl differ diff --git a/backend/instance/sessions/70df2eeb890e92d6f2b05ac23066ea32_activity.pkl b/backend/instance/sessions/70df2eeb890e92d6f2b05ac23066ea32_activity.pkl new file mode 100644 index 000000000..72472531f Binary files /dev/null and b/backend/instance/sessions/70df2eeb890e92d6f2b05ac23066ea32_activity.pkl differ diff --git a/backend/instance/sessions/70e1733f2f6b9ccb2c82b46299ae93d0_activity.pkl b/backend/instance/sessions/70e1733f2f6b9ccb2c82b46299ae93d0_activity.pkl new file mode 100644 index 000000000..3e445f937 Binary files /dev/null and b/backend/instance/sessions/70e1733f2f6b9ccb2c82b46299ae93d0_activity.pkl differ diff --git a/backend/instance/sessions/7121accb1ccee93344ec39d87bac0033_activity.pkl b/backend/instance/sessions/7121accb1ccee93344ec39d87bac0033_activity.pkl new file mode 100644 index 000000000..ab7e72c92 Binary files /dev/null and b/backend/instance/sessions/7121accb1ccee93344ec39d87bac0033_activity.pkl differ diff --git a/backend/instance/sessions/716d202272e0baad93123d9fde23d94b_activity.pkl b/backend/instance/sessions/716d202272e0baad93123d9fde23d94b_activity.pkl new file mode 100644 index 000000000..bcadc8a2c Binary files /dev/null and b/backend/instance/sessions/716d202272e0baad93123d9fde23d94b_activity.pkl differ diff --git a/backend/instance/sessions/716fa7a775e212384f19c6505ab6ab42_activity.pkl b/backend/instance/sessions/716fa7a775e212384f19c6505ab6ab42_activity.pkl new file mode 100644 index 000000000..a4a8fe627 Binary files /dev/null and b/backend/instance/sessions/716fa7a775e212384f19c6505ab6ab42_activity.pkl differ diff --git a/backend/instance/sessions/71f2746fed6b3bc11d795e34fd556a3c_activity.pkl b/backend/instance/sessions/71f2746fed6b3bc11d795e34fd556a3c_activity.pkl new file mode 100644 index 000000000..d8f055102 Binary files /dev/null and b/backend/instance/sessions/71f2746fed6b3bc11d795e34fd556a3c_activity.pkl differ diff --git a/backend/instance/sessions/721c12325203249880d145950f91618a_activity.pkl b/backend/instance/sessions/721c12325203249880d145950f91618a_activity.pkl new file mode 100644 index 000000000..e5544dab9 Binary files /dev/null and b/backend/instance/sessions/721c12325203249880d145950f91618a_activity.pkl differ diff --git a/backend/instance/sessions/72d313e537ff8709eb2c46e0b1f17034_activity.pkl b/backend/instance/sessions/72d313e537ff8709eb2c46e0b1f17034_activity.pkl new file mode 100644 index 000000000..418b3e361 Binary files /dev/null and b/backend/instance/sessions/72d313e537ff8709eb2c46e0b1f17034_activity.pkl differ diff --git a/backend/instance/sessions/7363ce1c6d78417a9292beff1d6f5a4e_activity.pkl b/backend/instance/sessions/7363ce1c6d78417a9292beff1d6f5a4e_activity.pkl new file mode 100644 index 000000000..5a5533680 Binary files /dev/null and b/backend/instance/sessions/7363ce1c6d78417a9292beff1d6f5a4e_activity.pkl differ diff --git a/backend/instance/sessions/74132043f0c54968ea104d79e2c69c28_activity.pkl b/backend/instance/sessions/74132043f0c54968ea104d79e2c69c28_activity.pkl new file mode 100644 index 000000000..d151408eb Binary files /dev/null and b/backend/instance/sessions/74132043f0c54968ea104d79e2c69c28_activity.pkl differ diff --git a/backend/instance/sessions/74439296dd7b16635a742e32a69abcf9_activity.pkl b/backend/instance/sessions/74439296dd7b16635a742e32a69abcf9_activity.pkl new file mode 100644 index 000000000..0af8dc561 Binary files /dev/null and b/backend/instance/sessions/74439296dd7b16635a742e32a69abcf9_activity.pkl differ diff --git a/backend/instance/sessions/74c548695b21009cc2b09f1ef6955954_activity.pkl b/backend/instance/sessions/74c548695b21009cc2b09f1ef6955954_activity.pkl new file mode 100644 index 000000000..5808dbc15 Binary files /dev/null and b/backend/instance/sessions/74c548695b21009cc2b09f1ef6955954_activity.pkl differ diff --git a/backend/instance/sessions/74f34784436cdf855d9967a049c42f14_activity.pkl b/backend/instance/sessions/74f34784436cdf855d9967a049c42f14_activity.pkl new file mode 100644 index 000000000..fd93b66f7 Binary files /dev/null and b/backend/instance/sessions/74f34784436cdf855d9967a049c42f14_activity.pkl differ diff --git a/backend/instance/sessions/750bc2ee2717856409572568799707e5_activity.pkl b/backend/instance/sessions/750bc2ee2717856409572568799707e5_activity.pkl new file mode 100644 index 000000000..d598e7ec6 Binary files /dev/null and b/backend/instance/sessions/750bc2ee2717856409572568799707e5_activity.pkl differ diff --git a/backend/instance/sessions/7579859f6b3946560eefc5a27190cd41_activity.pkl b/backend/instance/sessions/7579859f6b3946560eefc5a27190cd41_activity.pkl new file mode 100644 index 000000000..515827f8e Binary files /dev/null and b/backend/instance/sessions/7579859f6b3946560eefc5a27190cd41_activity.pkl differ diff --git a/backend/instance/sessions/75bc3ea5939996c1b802e259bd587709_activity.pkl b/backend/instance/sessions/75bc3ea5939996c1b802e259bd587709_activity.pkl new file mode 100644 index 000000000..c9886e2c4 Binary files /dev/null and b/backend/instance/sessions/75bc3ea5939996c1b802e259bd587709_activity.pkl differ diff --git a/backend/instance/sessions/7716feb23f2cb543b5b804083285e6d0_activity.pkl b/backend/instance/sessions/7716feb23f2cb543b5b804083285e6d0_activity.pkl new file mode 100644 index 000000000..50808c2f5 Binary files /dev/null and b/backend/instance/sessions/7716feb23f2cb543b5b804083285e6d0_activity.pkl differ diff --git a/backend/instance/sessions/77b8e9524a3dd19f5af948eec7e26ebc_activity.pkl b/backend/instance/sessions/77b8e9524a3dd19f5af948eec7e26ebc_activity.pkl new file mode 100644 index 000000000..f4eb3dc51 Binary files /dev/null and b/backend/instance/sessions/77b8e9524a3dd19f5af948eec7e26ebc_activity.pkl differ diff --git a/backend/instance/sessions/7962c8a9dec2330ada237e0cfdfd7ba7_activity.pkl b/backend/instance/sessions/7962c8a9dec2330ada237e0cfdfd7ba7_activity.pkl new file mode 100644 index 000000000..59936a25e Binary files /dev/null and b/backend/instance/sessions/7962c8a9dec2330ada237e0cfdfd7ba7_activity.pkl differ diff --git a/backend/instance/sessions/79eeb792e1b02860e8cf45ac444baa09_activity.pkl b/backend/instance/sessions/79eeb792e1b02860e8cf45ac444baa09_activity.pkl new file mode 100644 index 000000000..261c6d678 Binary files /dev/null and b/backend/instance/sessions/79eeb792e1b02860e8cf45ac444baa09_activity.pkl differ diff --git a/backend/instance/sessions/7ca53654355931b4ecc32b18ebef25b6_activity.pkl b/backend/instance/sessions/7ca53654355931b4ecc32b18ebef25b6_activity.pkl new file mode 100644 index 000000000..dac32d398 Binary files /dev/null and b/backend/instance/sessions/7ca53654355931b4ecc32b18ebef25b6_activity.pkl differ diff --git a/backend/instance/sessions/7d6fca370a26d6575f2f6dbf649c58f5_activity.pkl b/backend/instance/sessions/7d6fca370a26d6575f2f6dbf649c58f5_activity.pkl new file mode 100644 index 000000000..6a9cf0169 Binary files /dev/null and b/backend/instance/sessions/7d6fca370a26d6575f2f6dbf649c58f5_activity.pkl differ diff --git a/backend/instance/sessions/7e48dfa67eac2e75e5814da0aebe886b_activity.pkl b/backend/instance/sessions/7e48dfa67eac2e75e5814da0aebe886b_activity.pkl new file mode 100644 index 000000000..718a12332 Binary files /dev/null and b/backend/instance/sessions/7e48dfa67eac2e75e5814da0aebe886b_activity.pkl differ diff --git a/backend/instance/sessions/7e85be3dd12d99cb4b31ce0f71e41cf3_activity.pkl b/backend/instance/sessions/7e85be3dd12d99cb4b31ce0f71e41cf3_activity.pkl new file mode 100644 index 000000000..abf005760 Binary files /dev/null and b/backend/instance/sessions/7e85be3dd12d99cb4b31ce0f71e41cf3_activity.pkl differ diff --git a/backend/instance/sessions/7f6f9651a10fe1634835c1592361abb7_activity.pkl b/backend/instance/sessions/7f6f9651a10fe1634835c1592361abb7_activity.pkl new file mode 100644 index 000000000..a7e1f1f81 Binary files /dev/null and b/backend/instance/sessions/7f6f9651a10fe1634835c1592361abb7_activity.pkl differ diff --git a/backend/instance/sessions/80020f69e95b7a14396ab9a14c67dc4f_activity.pkl b/backend/instance/sessions/80020f69e95b7a14396ab9a14c67dc4f_activity.pkl new file mode 100644 index 000000000..b3472cfeb Binary files /dev/null and b/backend/instance/sessions/80020f69e95b7a14396ab9a14c67dc4f_activity.pkl differ diff --git a/backend/instance/sessions/80320f292591e09a48ee00cdfbdc07c3_activity.pkl b/backend/instance/sessions/80320f292591e09a48ee00cdfbdc07c3_activity.pkl new file mode 100644 index 000000000..32e8097e4 Binary files /dev/null and b/backend/instance/sessions/80320f292591e09a48ee00cdfbdc07c3_activity.pkl differ diff --git a/backend/instance/sessions/8069dbc92accc1d981615ba413d9e2bc_activity.pkl b/backend/instance/sessions/8069dbc92accc1d981615ba413d9e2bc_activity.pkl new file mode 100644 index 000000000..9d5eabafb Binary files /dev/null and b/backend/instance/sessions/8069dbc92accc1d981615ba413d9e2bc_activity.pkl differ diff --git a/backend/instance/sessions/806f414a27129c4768bc53a12b81ca8d_activity.pkl b/backend/instance/sessions/806f414a27129c4768bc53a12b81ca8d_activity.pkl new file mode 100644 index 000000000..fab02ad2b Binary files /dev/null and b/backend/instance/sessions/806f414a27129c4768bc53a12b81ca8d_activity.pkl differ diff --git a/backend/instance/sessions/80bec157c4a09d142149d180691c851a_activity.pkl b/backend/instance/sessions/80bec157c4a09d142149d180691c851a_activity.pkl new file mode 100644 index 000000000..104524549 Binary files /dev/null and b/backend/instance/sessions/80bec157c4a09d142149d180691c851a_activity.pkl differ diff --git a/backend/instance/sessions/80ddd42544a2d4d6b0646d33ca0847ca_activity.pkl b/backend/instance/sessions/80ddd42544a2d4d6b0646d33ca0847ca_activity.pkl new file mode 100644 index 000000000..af1ebdd9b Binary files /dev/null and b/backend/instance/sessions/80ddd42544a2d4d6b0646d33ca0847ca_activity.pkl differ diff --git a/backend/instance/sessions/80de3c777b5f874574c791f23840a2c6_activity.pkl b/backend/instance/sessions/80de3c777b5f874574c791f23840a2c6_activity.pkl new file mode 100644 index 000000000..8c1b14f04 Binary files /dev/null and b/backend/instance/sessions/80de3c777b5f874574c791f23840a2c6_activity.pkl differ diff --git a/backend/instance/sessions/8218f155273ae192d86151db1cd16b55_activity.pkl b/backend/instance/sessions/8218f155273ae192d86151db1cd16b55_activity.pkl new file mode 100644 index 000000000..4604cc9a5 Binary files /dev/null and b/backend/instance/sessions/8218f155273ae192d86151db1cd16b55_activity.pkl differ diff --git a/backend/instance/sessions/82377367fbc33bed29e59ccbf4a48e58_activity.pkl b/backend/instance/sessions/82377367fbc33bed29e59ccbf4a48e58_activity.pkl new file mode 100644 index 000000000..f00fe19ca Binary files /dev/null and b/backend/instance/sessions/82377367fbc33bed29e59ccbf4a48e58_activity.pkl differ diff --git a/backend/instance/sessions/828f6012528a16db1c88c8c50ddb894f_activity.pkl b/backend/instance/sessions/828f6012528a16db1c88c8c50ddb894f_activity.pkl new file mode 100644 index 000000000..fc0c48f63 Binary files /dev/null and b/backend/instance/sessions/828f6012528a16db1c88c8c50ddb894f_activity.pkl differ diff --git a/backend/instance/sessions/82ca041ab5e11db0693f17ddf27f4786_activity.pkl b/backend/instance/sessions/82ca041ab5e11db0693f17ddf27f4786_activity.pkl new file mode 100644 index 000000000..9c1cfefca Binary files /dev/null and b/backend/instance/sessions/82ca041ab5e11db0693f17ddf27f4786_activity.pkl differ diff --git a/backend/instance/sessions/848f1cc4e1b475d6cf4172151579d799_activity.pkl b/backend/instance/sessions/848f1cc4e1b475d6cf4172151579d799_activity.pkl new file mode 100644 index 000000000..99ddc9a0c Binary files /dev/null and b/backend/instance/sessions/848f1cc4e1b475d6cf4172151579d799_activity.pkl differ diff --git a/backend/instance/sessions/84a56987595b468798b192bb482dab62_activity.pkl b/backend/instance/sessions/84a56987595b468798b192bb482dab62_activity.pkl new file mode 100644 index 000000000..83f094a23 Binary files /dev/null and b/backend/instance/sessions/84a56987595b468798b192bb482dab62_activity.pkl differ diff --git a/backend/instance/sessions/858930182cc66cd940c74fd0e6b9cb0c_activity.pkl b/backend/instance/sessions/858930182cc66cd940c74fd0e6b9cb0c_activity.pkl new file mode 100644 index 000000000..be2b01eb9 Binary files /dev/null and b/backend/instance/sessions/858930182cc66cd940c74fd0e6b9cb0c_activity.pkl differ diff --git a/backend/instance/sessions/860b4e8823e2fd385831f6f50fb25e91_activity.pkl b/backend/instance/sessions/860b4e8823e2fd385831f6f50fb25e91_activity.pkl new file mode 100644 index 000000000..7d51a7502 Binary files /dev/null and b/backend/instance/sessions/860b4e8823e2fd385831f6f50fb25e91_activity.pkl differ diff --git a/backend/instance/sessions/862a22eb0d13ccf6bd7b9ce2eb2b7a05_activity.pkl b/backend/instance/sessions/862a22eb0d13ccf6bd7b9ce2eb2b7a05_activity.pkl new file mode 100644 index 000000000..e0a1330af Binary files /dev/null and b/backend/instance/sessions/862a22eb0d13ccf6bd7b9ce2eb2b7a05_activity.pkl differ diff --git a/backend/instance/sessions/8637b8d3746878d7dcf69f3ee2e4aaa3_activity.pkl b/backend/instance/sessions/8637b8d3746878d7dcf69f3ee2e4aaa3_activity.pkl new file mode 100644 index 000000000..09ce0beb4 Binary files /dev/null and b/backend/instance/sessions/8637b8d3746878d7dcf69f3ee2e4aaa3_activity.pkl differ diff --git a/backend/instance/sessions/88552c16a9e411ea456ee8c5baa34192_activity.pkl b/backend/instance/sessions/88552c16a9e411ea456ee8c5baa34192_activity.pkl new file mode 100644 index 000000000..12780556c Binary files /dev/null and b/backend/instance/sessions/88552c16a9e411ea456ee8c5baa34192_activity.pkl differ diff --git a/backend/instance/sessions/8a849515aebfc0c10b9228a391d1986c_activity.pkl b/backend/instance/sessions/8a849515aebfc0c10b9228a391d1986c_activity.pkl new file mode 100644 index 000000000..445af4858 Binary files /dev/null and b/backend/instance/sessions/8a849515aebfc0c10b9228a391d1986c_activity.pkl differ diff --git a/backend/instance/sessions/8aaf09bbe678cb77c4635dc1c3e0348f_activity.pkl b/backend/instance/sessions/8aaf09bbe678cb77c4635dc1c3e0348f_activity.pkl new file mode 100644 index 000000000..9ee6159f4 Binary files /dev/null and b/backend/instance/sessions/8aaf09bbe678cb77c4635dc1c3e0348f_activity.pkl differ diff --git a/backend/instance/sessions/8c1e3a1e0a8f68af5c5a22cc15a244fa_activity.pkl b/backend/instance/sessions/8c1e3a1e0a8f68af5c5a22cc15a244fa_activity.pkl new file mode 100644 index 000000000..3ade8ef8b Binary files /dev/null and b/backend/instance/sessions/8c1e3a1e0a8f68af5c5a22cc15a244fa_activity.pkl differ diff --git a/backend/instance/sessions/8cb1d109253f8dde15670366609e1109_activity.pkl b/backend/instance/sessions/8cb1d109253f8dde15670366609e1109_activity.pkl new file mode 100644 index 000000000..cfb589be7 Binary files /dev/null and b/backend/instance/sessions/8cb1d109253f8dde15670366609e1109_activity.pkl differ diff --git a/backend/instance/sessions/8d45171a2291df6c84fbc312135c1522_activity.pkl b/backend/instance/sessions/8d45171a2291df6c84fbc312135c1522_activity.pkl new file mode 100644 index 000000000..20cb78a50 Binary files /dev/null and b/backend/instance/sessions/8d45171a2291df6c84fbc312135c1522_activity.pkl differ diff --git a/backend/instance/sessions/8e55f59265e1d654d9446c827fbca1ef_activity.pkl b/backend/instance/sessions/8e55f59265e1d654d9446c827fbca1ef_activity.pkl new file mode 100644 index 000000000..e9b0f567e Binary files /dev/null and b/backend/instance/sessions/8e55f59265e1d654d9446c827fbca1ef_activity.pkl differ diff --git a/backend/instance/sessions/8e62fb59101e371eae7d829bb181504c_activity.pkl b/backend/instance/sessions/8e62fb59101e371eae7d829bb181504c_activity.pkl new file mode 100644 index 000000000..7a15dbf73 Binary files /dev/null and b/backend/instance/sessions/8e62fb59101e371eae7d829bb181504c_activity.pkl differ diff --git a/backend/instance/sessions/8e8313f5cff5092333cd0de698bea192_activity.pkl b/backend/instance/sessions/8e8313f5cff5092333cd0de698bea192_activity.pkl new file mode 100644 index 000000000..8e9100c80 Binary files /dev/null and b/backend/instance/sessions/8e8313f5cff5092333cd0de698bea192_activity.pkl differ diff --git a/backend/instance/sessions/8ed86ec7776fa362e1548d9898ee9a4d_activity.pkl b/backend/instance/sessions/8ed86ec7776fa362e1548d9898ee9a4d_activity.pkl new file mode 100644 index 000000000..d1739b6b9 Binary files /dev/null and b/backend/instance/sessions/8ed86ec7776fa362e1548d9898ee9a4d_activity.pkl differ diff --git a/backend/instance/sessions/8eeb053cc46e4441119a76c52d4858a0_activity.pkl b/backend/instance/sessions/8eeb053cc46e4441119a76c52d4858a0_activity.pkl new file mode 100644 index 000000000..3219637c3 Binary files /dev/null and b/backend/instance/sessions/8eeb053cc46e4441119a76c52d4858a0_activity.pkl differ diff --git a/backend/instance/sessions/8f1913a0b39aaa980c6af83e117152dd_activity.pkl b/backend/instance/sessions/8f1913a0b39aaa980c6af83e117152dd_activity.pkl new file mode 100644 index 000000000..51a4a34ab Binary files /dev/null and b/backend/instance/sessions/8f1913a0b39aaa980c6af83e117152dd_activity.pkl differ diff --git a/backend/instance/sessions/8f25eb8920ac6c57f730c43645f7fc7d_activity.pkl b/backend/instance/sessions/8f25eb8920ac6c57f730c43645f7fc7d_activity.pkl new file mode 100644 index 000000000..b39441dc1 Binary files /dev/null and b/backend/instance/sessions/8f25eb8920ac6c57f730c43645f7fc7d_activity.pkl differ diff --git a/backend/instance/sessions/8fd3be529c68bf2107f2e3bc701c75f2_activity.pkl b/backend/instance/sessions/8fd3be529c68bf2107f2e3bc701c75f2_activity.pkl new file mode 100644 index 000000000..87d2a7c84 Binary files /dev/null and b/backend/instance/sessions/8fd3be529c68bf2107f2e3bc701c75f2_activity.pkl differ diff --git a/backend/instance/sessions/90a8f2138a9496025dae68efaba3a102_activity.pkl b/backend/instance/sessions/90a8f2138a9496025dae68efaba3a102_activity.pkl new file mode 100644 index 000000000..5600c6555 Binary files /dev/null and b/backend/instance/sessions/90a8f2138a9496025dae68efaba3a102_activity.pkl differ diff --git a/backend/instance/sessions/90b7ba53eb9653828384d2ec3a52d4b3_activity.pkl b/backend/instance/sessions/90b7ba53eb9653828384d2ec3a52d4b3_activity.pkl new file mode 100644 index 000000000..355a03d3a Binary files /dev/null and b/backend/instance/sessions/90b7ba53eb9653828384d2ec3a52d4b3_activity.pkl differ diff --git a/backend/instance/sessions/910991ea297adcbda96d1d7c7acabff0_activity.pkl b/backend/instance/sessions/910991ea297adcbda96d1d7c7acabff0_activity.pkl new file mode 100644 index 000000000..411e3fd51 Binary files /dev/null and b/backend/instance/sessions/910991ea297adcbda96d1d7c7acabff0_activity.pkl differ diff --git a/backend/instance/sessions/91a7c03afba4e8a7e14879bed6f15d1c_activity.pkl b/backend/instance/sessions/91a7c03afba4e8a7e14879bed6f15d1c_activity.pkl new file mode 100644 index 000000000..9564a8de0 Binary files /dev/null and b/backend/instance/sessions/91a7c03afba4e8a7e14879bed6f15d1c_activity.pkl differ diff --git a/backend/instance/sessions/9237f462298551b94052e829a9cb44c8_activity.pkl b/backend/instance/sessions/9237f462298551b94052e829a9cb44c8_activity.pkl new file mode 100644 index 000000000..85925d86a Binary files /dev/null and b/backend/instance/sessions/9237f462298551b94052e829a9cb44c8_activity.pkl differ diff --git a/backend/instance/sessions/9314eef77e2da1778c904ff2281bfdb6_activity.pkl b/backend/instance/sessions/9314eef77e2da1778c904ff2281bfdb6_activity.pkl new file mode 100644 index 000000000..1d93369e2 Binary files /dev/null and b/backend/instance/sessions/9314eef77e2da1778c904ff2281bfdb6_activity.pkl differ diff --git a/backend/instance/sessions/933d36b82de0857f21d997141daabdc7_activity.pkl b/backend/instance/sessions/933d36b82de0857f21d997141daabdc7_activity.pkl new file mode 100644 index 000000000..b0e393406 Binary files /dev/null and b/backend/instance/sessions/933d36b82de0857f21d997141daabdc7_activity.pkl differ diff --git a/backend/instance/sessions/95b404ca3a7af763b070d1e394cc7496_activity.pkl b/backend/instance/sessions/95b404ca3a7af763b070d1e394cc7496_activity.pkl new file mode 100644 index 000000000..1674f6423 Binary files /dev/null and b/backend/instance/sessions/95b404ca3a7af763b070d1e394cc7496_activity.pkl differ diff --git a/backend/instance/sessions/96b200aada16dacf19fb5c6dcc8db9bf_activity.pkl b/backend/instance/sessions/96b200aada16dacf19fb5c6dcc8db9bf_activity.pkl new file mode 100644 index 000000000..c271a095a Binary files /dev/null and b/backend/instance/sessions/96b200aada16dacf19fb5c6dcc8db9bf_activity.pkl differ diff --git a/backend/instance/sessions/972d493c56288cce55aaaee8b71710e8_activity.pkl b/backend/instance/sessions/972d493c56288cce55aaaee8b71710e8_activity.pkl new file mode 100644 index 000000000..2cf1a747c Binary files /dev/null and b/backend/instance/sessions/972d493c56288cce55aaaee8b71710e8_activity.pkl differ diff --git a/backend/instance/sessions/97e747c143cdaeff1623b010f41900e8_activity.pkl b/backend/instance/sessions/97e747c143cdaeff1623b010f41900e8_activity.pkl new file mode 100644 index 000000000..8d239e400 Binary files /dev/null and b/backend/instance/sessions/97e747c143cdaeff1623b010f41900e8_activity.pkl differ diff --git a/backend/instance/sessions/980b02c23828e3e2313e0005440f89f9_activity.pkl b/backend/instance/sessions/980b02c23828e3e2313e0005440f89f9_activity.pkl new file mode 100644 index 000000000..1cdff5b05 Binary files /dev/null and b/backend/instance/sessions/980b02c23828e3e2313e0005440f89f9_activity.pkl differ diff --git a/backend/instance/sessions/98b84e3ca220edeaf34829a315363460_activity.pkl b/backend/instance/sessions/98b84e3ca220edeaf34829a315363460_activity.pkl new file mode 100644 index 000000000..1fdbc11b4 Binary files /dev/null and b/backend/instance/sessions/98b84e3ca220edeaf34829a315363460_activity.pkl differ diff --git a/backend/instance/sessions/990e5a8f68076e30a7d11cf948d059ea_activity.pkl b/backend/instance/sessions/990e5a8f68076e30a7d11cf948d059ea_activity.pkl new file mode 100644 index 000000000..dd61dc052 Binary files /dev/null and b/backend/instance/sessions/990e5a8f68076e30a7d11cf948d059ea_activity.pkl differ diff --git a/backend/instance/sessions/9ad9b2fa53b6c4c0b94185344afccdc5_activity.pkl b/backend/instance/sessions/9ad9b2fa53b6c4c0b94185344afccdc5_activity.pkl new file mode 100644 index 000000000..9f390a7f2 Binary files /dev/null and b/backend/instance/sessions/9ad9b2fa53b6c4c0b94185344afccdc5_activity.pkl differ diff --git a/backend/instance/sessions/9b0f4289344c540387dbdc4c48da7435_activity.pkl b/backend/instance/sessions/9b0f4289344c540387dbdc4c48da7435_activity.pkl new file mode 100644 index 000000000..b342747f7 Binary files /dev/null and b/backend/instance/sessions/9b0f4289344c540387dbdc4c48da7435_activity.pkl differ diff --git a/backend/instance/sessions/9b0fbb21f90c6d80924351ef176f03a2_activity.pkl b/backend/instance/sessions/9b0fbb21f90c6d80924351ef176f03a2_activity.pkl new file mode 100644 index 000000000..ab7ed3e99 Binary files /dev/null and b/backend/instance/sessions/9b0fbb21f90c6d80924351ef176f03a2_activity.pkl differ diff --git a/backend/instance/sessions/9b63c513a3a5b832c7a4e5bb309ade64_activity.pkl b/backend/instance/sessions/9b63c513a3a5b832c7a4e5bb309ade64_activity.pkl new file mode 100644 index 000000000..ad64a0b7f Binary files /dev/null and b/backend/instance/sessions/9b63c513a3a5b832c7a4e5bb309ade64_activity.pkl differ diff --git a/backend/instance/sessions/9d0eb8c1037ca7f01e8c63441a02392c_activity.pkl b/backend/instance/sessions/9d0eb8c1037ca7f01e8c63441a02392c_activity.pkl new file mode 100644 index 000000000..10ac7b943 Binary files /dev/null and b/backend/instance/sessions/9d0eb8c1037ca7f01e8c63441a02392c_activity.pkl differ diff --git a/backend/instance/sessions/9ecc09fca91ccda4cd792f41f635f8f6_activity.pkl b/backend/instance/sessions/9ecc09fca91ccda4cd792f41f635f8f6_activity.pkl new file mode 100644 index 000000000..d3173011e Binary files /dev/null and b/backend/instance/sessions/9ecc09fca91ccda4cd792f41f635f8f6_activity.pkl differ diff --git a/backend/instance/sessions/9f7021d4a8f5b92a6ca5e5b1765192fc_activity.pkl b/backend/instance/sessions/9f7021d4a8f5b92a6ca5e5b1765192fc_activity.pkl new file mode 100644 index 000000000..377d45177 Binary files /dev/null and b/backend/instance/sessions/9f7021d4a8f5b92a6ca5e5b1765192fc_activity.pkl differ diff --git a/backend/instance/sessions/9ff21178177299e3c01160ceebc4fcec_activity.pkl b/backend/instance/sessions/9ff21178177299e3c01160ceebc4fcec_activity.pkl new file mode 100644 index 000000000..b8ce3aca3 Binary files /dev/null and b/backend/instance/sessions/9ff21178177299e3c01160ceebc4fcec_activity.pkl differ diff --git a/backend/instance/sessions/a02109ca96e6f10edff213317cdf1ad5_activity.pkl b/backend/instance/sessions/a02109ca96e6f10edff213317cdf1ad5_activity.pkl new file mode 100644 index 000000000..f035a2810 Binary files /dev/null and b/backend/instance/sessions/a02109ca96e6f10edff213317cdf1ad5_activity.pkl differ diff --git a/backend/instance/sessions/a0acc3a0a18b8dbaef686493c53d29f9_activity.pkl b/backend/instance/sessions/a0acc3a0a18b8dbaef686493c53d29f9_activity.pkl new file mode 100644 index 000000000..35a2c0ea5 Binary files /dev/null and b/backend/instance/sessions/a0acc3a0a18b8dbaef686493c53d29f9_activity.pkl differ diff --git a/backend/instance/sessions/a2115e109f56971aaa3c01db568d5d52_activity.pkl b/backend/instance/sessions/a2115e109f56971aaa3c01db568d5d52_activity.pkl new file mode 100644 index 000000000..5bc6d1cbf Binary files /dev/null and b/backend/instance/sessions/a2115e109f56971aaa3c01db568d5d52_activity.pkl differ diff --git a/backend/instance/sessions/a24fa68215217dd0f3a48c39f09f8b2f_activity.pkl b/backend/instance/sessions/a24fa68215217dd0f3a48c39f09f8b2f_activity.pkl new file mode 100644 index 000000000..a3630d2b7 Binary files /dev/null and b/backend/instance/sessions/a24fa68215217dd0f3a48c39f09f8b2f_activity.pkl differ diff --git a/backend/instance/sessions/a2de0f402217a82c98f9ce9037a4b606_activity.pkl b/backend/instance/sessions/a2de0f402217a82c98f9ce9037a4b606_activity.pkl new file mode 100644 index 000000000..d06be805a Binary files /dev/null and b/backend/instance/sessions/a2de0f402217a82c98f9ce9037a4b606_activity.pkl differ diff --git a/backend/instance/sessions/a36045613e7cad9c9d8315ef015a9e9c_activity.pkl b/backend/instance/sessions/a36045613e7cad9c9d8315ef015a9e9c_activity.pkl new file mode 100644 index 000000000..44ea1e2ea Binary files /dev/null and b/backend/instance/sessions/a36045613e7cad9c9d8315ef015a9e9c_activity.pkl differ diff --git a/backend/instance/sessions/a45ff7a280ca43e86b08186e8f2f6542_activity.pkl b/backend/instance/sessions/a45ff7a280ca43e86b08186e8f2f6542_activity.pkl new file mode 100644 index 000000000..70b947d20 Binary files /dev/null and b/backend/instance/sessions/a45ff7a280ca43e86b08186e8f2f6542_activity.pkl differ diff --git a/backend/instance/sessions/a5dccdf60bf0d278f2091e9e264ceb44_activity.pkl b/backend/instance/sessions/a5dccdf60bf0d278f2091e9e264ceb44_activity.pkl new file mode 100644 index 000000000..11f2296e9 Binary files /dev/null and b/backend/instance/sessions/a5dccdf60bf0d278f2091e9e264ceb44_activity.pkl differ diff --git a/backend/instance/sessions/a892d0e70be965e6f7ca73b38ee5a3f9_activity.pkl b/backend/instance/sessions/a892d0e70be965e6f7ca73b38ee5a3f9_activity.pkl new file mode 100644 index 000000000..5e36bce10 Binary files /dev/null and b/backend/instance/sessions/a892d0e70be965e6f7ca73b38ee5a3f9_activity.pkl differ diff --git a/backend/instance/sessions/a8be256a7b73af804b9efdf1ecab189f_activity.pkl b/backend/instance/sessions/a8be256a7b73af804b9efdf1ecab189f_activity.pkl new file mode 100644 index 000000000..01c33cb04 Binary files /dev/null and b/backend/instance/sessions/a8be256a7b73af804b9efdf1ecab189f_activity.pkl differ diff --git a/backend/instance/sessions/a95221c9b123deddda631488d03cc138_activity.pkl b/backend/instance/sessions/a95221c9b123deddda631488d03cc138_activity.pkl new file mode 100644 index 000000000..3803ef091 Binary files /dev/null and b/backend/instance/sessions/a95221c9b123deddda631488d03cc138_activity.pkl differ diff --git a/backend/instance/sessions/aa056ecc4b35aad65681e9868bef780e_activity.pkl b/backend/instance/sessions/aa056ecc4b35aad65681e9868bef780e_activity.pkl new file mode 100644 index 000000000..f7e7040fe Binary files /dev/null and b/backend/instance/sessions/aa056ecc4b35aad65681e9868bef780e_activity.pkl differ diff --git a/backend/instance/sessions/ab461c0361c1323cf7de35fa41795b00_activity.pkl b/backend/instance/sessions/ab461c0361c1323cf7de35fa41795b00_activity.pkl new file mode 100644 index 000000000..f1d61f4bb Binary files /dev/null and b/backend/instance/sessions/ab461c0361c1323cf7de35fa41795b00_activity.pkl differ diff --git a/backend/instance/sessions/abff71a70157dbf5c63b35141e56a553_activity.pkl b/backend/instance/sessions/abff71a70157dbf5c63b35141e56a553_activity.pkl new file mode 100644 index 000000000..f33620998 Binary files /dev/null and b/backend/instance/sessions/abff71a70157dbf5c63b35141e56a553_activity.pkl differ diff --git a/backend/instance/sessions/acc161d89dca41a3cb5c4d5bce11dc56_activity.pkl b/backend/instance/sessions/acc161d89dca41a3cb5c4d5bce11dc56_activity.pkl new file mode 100644 index 000000000..539f2c74b Binary files /dev/null and b/backend/instance/sessions/acc161d89dca41a3cb5c4d5bce11dc56_activity.pkl differ diff --git a/backend/instance/sessions/ae4286da228cccef2b6af59f6391f764_activity.pkl b/backend/instance/sessions/ae4286da228cccef2b6af59f6391f764_activity.pkl new file mode 100644 index 000000000..021bfda16 Binary files /dev/null and b/backend/instance/sessions/ae4286da228cccef2b6af59f6391f764_activity.pkl differ diff --git a/backend/instance/sessions/afda1c400a0688aa75a1bb330131b512_activity.pkl b/backend/instance/sessions/afda1c400a0688aa75a1bb330131b512_activity.pkl new file mode 100644 index 000000000..fe91182f5 Binary files /dev/null and b/backend/instance/sessions/afda1c400a0688aa75a1bb330131b512_activity.pkl differ diff --git a/backend/instance/sessions/b014fd4c580a03ec056585f1bf16a131_activity.pkl b/backend/instance/sessions/b014fd4c580a03ec056585f1bf16a131_activity.pkl new file mode 100644 index 000000000..990ec12f7 Binary files /dev/null and b/backend/instance/sessions/b014fd4c580a03ec056585f1bf16a131_activity.pkl differ diff --git a/backend/instance/sessions/b0c111aa2c9e5a7f587ff555c4b949ee_activity.pkl b/backend/instance/sessions/b0c111aa2c9e5a7f587ff555c4b949ee_activity.pkl new file mode 100644 index 000000000..48d58406d Binary files /dev/null and b/backend/instance/sessions/b0c111aa2c9e5a7f587ff555c4b949ee_activity.pkl differ diff --git a/backend/instance/sessions/b0d96f8b49619962b2493e85abf42f45_activity.pkl b/backend/instance/sessions/b0d96f8b49619962b2493e85abf42f45_activity.pkl new file mode 100644 index 000000000..052121d03 Binary files /dev/null and b/backend/instance/sessions/b0d96f8b49619962b2493e85abf42f45_activity.pkl differ diff --git a/backend/instance/sessions/b28dd331c095533e229af2ac6c12a029_activity.pkl b/backend/instance/sessions/b28dd331c095533e229af2ac6c12a029_activity.pkl new file mode 100644 index 000000000..6789bcefd Binary files /dev/null and b/backend/instance/sessions/b28dd331c095533e229af2ac6c12a029_activity.pkl differ diff --git a/backend/instance/sessions/b2ecb28792c866a8ec8e5b4f4c5aec39_activity.pkl b/backend/instance/sessions/b2ecb28792c866a8ec8e5b4f4c5aec39_activity.pkl new file mode 100644 index 000000000..d6f381c50 Binary files /dev/null and b/backend/instance/sessions/b2ecb28792c866a8ec8e5b4f4c5aec39_activity.pkl differ diff --git a/backend/instance/sessions/b2f0d941eac9c8aeb36a7e581bc05d42_activity.pkl b/backend/instance/sessions/b2f0d941eac9c8aeb36a7e581bc05d42_activity.pkl new file mode 100644 index 000000000..9adb46621 Binary files /dev/null and b/backend/instance/sessions/b2f0d941eac9c8aeb36a7e581bc05d42_activity.pkl differ diff --git a/backend/instance/sessions/b38c6730921dbdf5f0c2a5f786f0d84b_activity.pkl b/backend/instance/sessions/b38c6730921dbdf5f0c2a5f786f0d84b_activity.pkl new file mode 100644 index 000000000..3d67826f6 Binary files /dev/null and b/backend/instance/sessions/b38c6730921dbdf5f0c2a5f786f0d84b_activity.pkl differ diff --git a/backend/instance/sessions/b47e959453bd82f3b95971fa16b8ff6e_activity.pkl b/backend/instance/sessions/b47e959453bd82f3b95971fa16b8ff6e_activity.pkl new file mode 100644 index 000000000..95f8a2ac5 Binary files /dev/null and b/backend/instance/sessions/b47e959453bd82f3b95971fa16b8ff6e_activity.pkl differ diff --git a/backend/instance/sessions/b512b2ad9ea8e1461fc5fc15f7d33ead_activity.pkl b/backend/instance/sessions/b512b2ad9ea8e1461fc5fc15f7d33ead_activity.pkl new file mode 100644 index 000000000..4fb5b7a72 Binary files /dev/null and b/backend/instance/sessions/b512b2ad9ea8e1461fc5fc15f7d33ead_activity.pkl differ diff --git a/backend/instance/sessions/b526787eaa1aa7cdf84655e3dbb12985_activity.pkl b/backend/instance/sessions/b526787eaa1aa7cdf84655e3dbb12985_activity.pkl new file mode 100644 index 000000000..d083dc27b Binary files /dev/null and b/backend/instance/sessions/b526787eaa1aa7cdf84655e3dbb12985_activity.pkl differ diff --git a/backend/instance/sessions/b56aa75243272d67dbb44871e1b971d0_activity.pkl b/backend/instance/sessions/b56aa75243272d67dbb44871e1b971d0_activity.pkl new file mode 100644 index 000000000..cde0749ee Binary files /dev/null and b/backend/instance/sessions/b56aa75243272d67dbb44871e1b971d0_activity.pkl differ diff --git a/backend/instance/sessions/b72e2d56c8c937f5ce83325da663c606_activity.pkl b/backend/instance/sessions/b72e2d56c8c937f5ce83325da663c606_activity.pkl new file mode 100644 index 000000000..4e107667d Binary files /dev/null and b/backend/instance/sessions/b72e2d56c8c937f5ce83325da663c606_activity.pkl differ diff --git a/backend/instance/sessions/b8c7ee0de8e1d858e57cfed59b1229de_activity.pkl b/backend/instance/sessions/b8c7ee0de8e1d858e57cfed59b1229de_activity.pkl new file mode 100644 index 000000000..46f1a519d Binary files /dev/null and b/backend/instance/sessions/b8c7ee0de8e1d858e57cfed59b1229de_activity.pkl differ diff --git a/backend/instance/sessions/ba0bd3a3eec9cc2f4ac666630a51ffa9_activity.pkl b/backend/instance/sessions/ba0bd3a3eec9cc2f4ac666630a51ffa9_activity.pkl new file mode 100644 index 000000000..99134c03d Binary files /dev/null and b/backend/instance/sessions/ba0bd3a3eec9cc2f4ac666630a51ffa9_activity.pkl differ diff --git a/backend/instance/sessions/bab9ba1f173998f6bb26e866ac16da3d_activity.pkl b/backend/instance/sessions/bab9ba1f173998f6bb26e866ac16da3d_activity.pkl new file mode 100644 index 000000000..609996a60 Binary files /dev/null and b/backend/instance/sessions/bab9ba1f173998f6bb26e866ac16da3d_activity.pkl differ diff --git a/backend/instance/sessions/bae8ad58bbb84a603e3f010efc728c33_activity.pkl b/backend/instance/sessions/bae8ad58bbb84a603e3f010efc728c33_activity.pkl new file mode 100644 index 000000000..d179d5e20 Binary files /dev/null and b/backend/instance/sessions/bae8ad58bbb84a603e3f010efc728c33_activity.pkl differ diff --git a/backend/instance/sessions/bb0712ea4b268091daeb1e1af668b282_activity.pkl b/backend/instance/sessions/bb0712ea4b268091daeb1e1af668b282_activity.pkl new file mode 100644 index 000000000..01164f47b Binary files /dev/null and b/backend/instance/sessions/bb0712ea4b268091daeb1e1af668b282_activity.pkl differ diff --git a/backend/instance/sessions/bb2389c892b9c00075b09809795fb4e8_activity.pkl b/backend/instance/sessions/bb2389c892b9c00075b09809795fb4e8_activity.pkl new file mode 100644 index 000000000..82ab26725 Binary files /dev/null and b/backend/instance/sessions/bb2389c892b9c00075b09809795fb4e8_activity.pkl differ diff --git a/backend/instance/sessions/bb817fddbd9d0c2e4c5ac4007a9411b7_activity.pkl b/backend/instance/sessions/bb817fddbd9d0c2e4c5ac4007a9411b7_activity.pkl new file mode 100644 index 000000000..b69c2d413 Binary files /dev/null and b/backend/instance/sessions/bb817fddbd9d0c2e4c5ac4007a9411b7_activity.pkl differ diff --git a/backend/instance/sessions/bc506f985d002d4180a28c054ad27bae_activity.pkl b/backend/instance/sessions/bc506f985d002d4180a28c054ad27bae_activity.pkl new file mode 100644 index 000000000..5a63120a5 Binary files /dev/null and b/backend/instance/sessions/bc506f985d002d4180a28c054ad27bae_activity.pkl differ diff --git a/backend/instance/sessions/bf499aea3e2064be491583259c9de326_activity.pkl b/backend/instance/sessions/bf499aea3e2064be491583259c9de326_activity.pkl new file mode 100644 index 000000000..a46d69360 Binary files /dev/null and b/backend/instance/sessions/bf499aea3e2064be491583259c9de326_activity.pkl differ diff --git a/backend/instance/sessions/bf6352503514a40e173525a7a2173f08_activity.pkl b/backend/instance/sessions/bf6352503514a40e173525a7a2173f08_activity.pkl new file mode 100644 index 000000000..97bb802c2 Binary files /dev/null and b/backend/instance/sessions/bf6352503514a40e173525a7a2173f08_activity.pkl differ diff --git a/backend/instance/sessions/c158909e685d772208858d503741698c_activity.pkl b/backend/instance/sessions/c158909e685d772208858d503741698c_activity.pkl new file mode 100644 index 000000000..3d9283308 Binary files /dev/null and b/backend/instance/sessions/c158909e685d772208858d503741698c_activity.pkl differ diff --git a/backend/instance/sessions/c1d1e0bb5fc01b308512bf120c152a8b_activity.pkl b/backend/instance/sessions/c1d1e0bb5fc01b308512bf120c152a8b_activity.pkl new file mode 100644 index 000000000..abe3d84a6 Binary files /dev/null and b/backend/instance/sessions/c1d1e0bb5fc01b308512bf120c152a8b_activity.pkl differ diff --git a/backend/instance/sessions/c2468cc06796576c5d146d693b6ecc69_activity.pkl b/backend/instance/sessions/c2468cc06796576c5d146d693b6ecc69_activity.pkl new file mode 100644 index 000000000..c53d54796 Binary files /dev/null and b/backend/instance/sessions/c2468cc06796576c5d146d693b6ecc69_activity.pkl differ diff --git a/backend/instance/sessions/c38c7c1e9761d310f177990891c86b51_activity.pkl b/backend/instance/sessions/c38c7c1e9761d310f177990891c86b51_activity.pkl new file mode 100644 index 000000000..59ff6ada3 Binary files /dev/null and b/backend/instance/sessions/c38c7c1e9761d310f177990891c86b51_activity.pkl differ diff --git a/backend/instance/sessions/c4829521793f42061d7456ea4b114be0_activity.pkl b/backend/instance/sessions/c4829521793f42061d7456ea4b114be0_activity.pkl new file mode 100644 index 000000000..85412b716 Binary files /dev/null and b/backend/instance/sessions/c4829521793f42061d7456ea4b114be0_activity.pkl differ diff --git a/backend/instance/sessions/c4a8522cac5080ede43a231253faa662_activity.pkl b/backend/instance/sessions/c4a8522cac5080ede43a231253faa662_activity.pkl new file mode 100644 index 000000000..74e758fac Binary files /dev/null and b/backend/instance/sessions/c4a8522cac5080ede43a231253faa662_activity.pkl differ diff --git a/backend/instance/sessions/c6096c1eabf460773aca98394a6b17ad_activity.pkl b/backend/instance/sessions/c6096c1eabf460773aca98394a6b17ad_activity.pkl new file mode 100644 index 000000000..caba2ac1e Binary files /dev/null and b/backend/instance/sessions/c6096c1eabf460773aca98394a6b17ad_activity.pkl differ diff --git a/backend/instance/sessions/c6e5e2cb8c9c4a595385e83889681056_activity.pkl b/backend/instance/sessions/c6e5e2cb8c9c4a595385e83889681056_activity.pkl new file mode 100644 index 000000000..ce3c4acf9 Binary files /dev/null and b/backend/instance/sessions/c6e5e2cb8c9c4a595385e83889681056_activity.pkl differ diff --git a/backend/instance/sessions/c76b2196a80addcad2e8dcb6c77f358f_activity.pkl b/backend/instance/sessions/c76b2196a80addcad2e8dcb6c77f358f_activity.pkl new file mode 100644 index 000000000..a4c7cc8ff Binary files /dev/null and b/backend/instance/sessions/c76b2196a80addcad2e8dcb6c77f358f_activity.pkl differ diff --git a/backend/instance/sessions/c7ee2af2b10367f5056f28a6a69a03df_activity.pkl b/backend/instance/sessions/c7ee2af2b10367f5056f28a6a69a03df_activity.pkl new file mode 100644 index 000000000..bd0e63e31 Binary files /dev/null and b/backend/instance/sessions/c7ee2af2b10367f5056f28a6a69a03df_activity.pkl differ diff --git a/backend/instance/sessions/c8106efe8399d1eadad28d94edded0b4_activity.pkl b/backend/instance/sessions/c8106efe8399d1eadad28d94edded0b4_activity.pkl new file mode 100644 index 000000000..4ff7c9950 Binary files /dev/null and b/backend/instance/sessions/c8106efe8399d1eadad28d94edded0b4_activity.pkl differ diff --git a/backend/instance/sessions/c93f91a7d12b72bf64627ab7274e9b0d_activity.pkl b/backend/instance/sessions/c93f91a7d12b72bf64627ab7274e9b0d_activity.pkl new file mode 100644 index 000000000..32ef799da Binary files /dev/null and b/backend/instance/sessions/c93f91a7d12b72bf64627ab7274e9b0d_activity.pkl differ diff --git a/backend/instance/sessions/ccc3c4ca8f1fa43dd0c718b3b40ebd14_activity.pkl b/backend/instance/sessions/ccc3c4ca8f1fa43dd0c718b3b40ebd14_activity.pkl new file mode 100644 index 000000000..0c92b3745 Binary files /dev/null and b/backend/instance/sessions/ccc3c4ca8f1fa43dd0c718b3b40ebd14_activity.pkl differ diff --git a/backend/instance/sessions/cdf8c20e79b06bf22056fff77285ce11_activity.pkl b/backend/instance/sessions/cdf8c20e79b06bf22056fff77285ce11_activity.pkl new file mode 100644 index 000000000..43f3f60d0 Binary files /dev/null and b/backend/instance/sessions/cdf8c20e79b06bf22056fff77285ce11_activity.pkl differ diff --git a/backend/instance/sessions/ceb5233a97258e6b61801a68177b9cdb_activity.pkl b/backend/instance/sessions/ceb5233a97258e6b61801a68177b9cdb_activity.pkl new file mode 100644 index 000000000..6da4aa255 Binary files /dev/null and b/backend/instance/sessions/ceb5233a97258e6b61801a68177b9cdb_activity.pkl differ diff --git a/backend/instance/sessions/ced7e55607f8539daa5379e53dff38bd_activity.pkl b/backend/instance/sessions/ced7e55607f8539daa5379e53dff38bd_activity.pkl new file mode 100644 index 000000000..d01d98d7f Binary files /dev/null and b/backend/instance/sessions/ced7e55607f8539daa5379e53dff38bd_activity.pkl differ diff --git a/backend/instance/sessions/ceeef3b8a199ef1fba569d9be2a937be_activity.pkl b/backend/instance/sessions/ceeef3b8a199ef1fba569d9be2a937be_activity.pkl new file mode 100644 index 000000000..89cb4c7b6 Binary files /dev/null and b/backend/instance/sessions/ceeef3b8a199ef1fba569d9be2a937be_activity.pkl differ diff --git a/backend/instance/sessions/cf130ee60badcb33406e1bfeb9d69535_activity.pkl b/backend/instance/sessions/cf130ee60badcb33406e1bfeb9d69535_activity.pkl new file mode 100644 index 000000000..a551ab2e9 Binary files /dev/null and b/backend/instance/sessions/cf130ee60badcb33406e1bfeb9d69535_activity.pkl differ diff --git a/backend/instance/sessions/cf413a0a9140de17ba959c3a8f986665_activity.pkl b/backend/instance/sessions/cf413a0a9140de17ba959c3a8f986665_activity.pkl new file mode 100644 index 000000000..47806c7f5 Binary files /dev/null and b/backend/instance/sessions/cf413a0a9140de17ba959c3a8f986665_activity.pkl differ diff --git a/backend/instance/sessions/cf51c589157020a0f23fe9ed13b34fae_activity.pkl b/backend/instance/sessions/cf51c589157020a0f23fe9ed13b34fae_activity.pkl new file mode 100644 index 000000000..52cc7169b Binary files /dev/null and b/backend/instance/sessions/cf51c589157020a0f23fe9ed13b34fae_activity.pkl differ diff --git a/backend/instance/sessions/cfc876cb8b0b111f86f0ea5797b1fd49_activity.pkl b/backend/instance/sessions/cfc876cb8b0b111f86f0ea5797b1fd49_activity.pkl new file mode 100644 index 000000000..cbe058742 Binary files /dev/null and b/backend/instance/sessions/cfc876cb8b0b111f86f0ea5797b1fd49_activity.pkl differ diff --git a/backend/instance/sessions/d092838714ccf2398167d0aae48bbaa2_activity.pkl b/backend/instance/sessions/d092838714ccf2398167d0aae48bbaa2_activity.pkl new file mode 100644 index 000000000..2a42458c9 Binary files /dev/null and b/backend/instance/sessions/d092838714ccf2398167d0aae48bbaa2_activity.pkl differ diff --git a/backend/instance/sessions/d122ccbad2d8b717a6b81afc8368ebce_activity.pkl b/backend/instance/sessions/d122ccbad2d8b717a6b81afc8368ebce_activity.pkl new file mode 100644 index 000000000..15eddc621 Binary files /dev/null and b/backend/instance/sessions/d122ccbad2d8b717a6b81afc8368ebce_activity.pkl differ diff --git a/backend/instance/sessions/d222b6162f93a535951fd02e5c954953_activity.pkl b/backend/instance/sessions/d222b6162f93a535951fd02e5c954953_activity.pkl new file mode 100644 index 000000000..1ec0531d3 Binary files /dev/null and b/backend/instance/sessions/d222b6162f93a535951fd02e5c954953_activity.pkl differ diff --git a/backend/instance/sessions/d233d191dba44f465afd81b57e6b878a_activity.pkl b/backend/instance/sessions/d233d191dba44f465afd81b57e6b878a_activity.pkl new file mode 100644 index 000000000..4723c72f7 Binary files /dev/null and b/backend/instance/sessions/d233d191dba44f465afd81b57e6b878a_activity.pkl differ diff --git a/backend/instance/sessions/d2385fb7b240d46dd636222afa864bb4_activity.pkl b/backend/instance/sessions/d2385fb7b240d46dd636222afa864bb4_activity.pkl new file mode 100644 index 000000000..cf823712b Binary files /dev/null and b/backend/instance/sessions/d2385fb7b240d46dd636222afa864bb4_activity.pkl differ diff --git a/backend/instance/sessions/d4a56bdc38beba16fc96ae87b2566fc2_activity.pkl b/backend/instance/sessions/d4a56bdc38beba16fc96ae87b2566fc2_activity.pkl new file mode 100644 index 000000000..67aa77b85 Binary files /dev/null and b/backend/instance/sessions/d4a56bdc38beba16fc96ae87b2566fc2_activity.pkl differ diff --git a/backend/instance/sessions/d53e67444609889e0f895865c24ed9cf_activity.pkl b/backend/instance/sessions/d53e67444609889e0f895865c24ed9cf_activity.pkl new file mode 100644 index 000000000..7a2f5df5b Binary files /dev/null and b/backend/instance/sessions/d53e67444609889e0f895865c24ed9cf_activity.pkl differ diff --git a/backend/instance/sessions/d577f0390e257cf565aceee0a94724bb_activity.pkl b/backend/instance/sessions/d577f0390e257cf565aceee0a94724bb_activity.pkl new file mode 100644 index 000000000..4aad78756 Binary files /dev/null and b/backend/instance/sessions/d577f0390e257cf565aceee0a94724bb_activity.pkl differ diff --git a/backend/instance/sessions/d57f272e6e9002f8f7aa8d7c11413bae_activity.pkl b/backend/instance/sessions/d57f272e6e9002f8f7aa8d7c11413bae_activity.pkl new file mode 100644 index 000000000..d9f6455e9 Binary files /dev/null and b/backend/instance/sessions/d57f272e6e9002f8f7aa8d7c11413bae_activity.pkl differ diff --git a/backend/instance/sessions/d5c10ff7ddfabe047d528e6926df9edf_activity.pkl b/backend/instance/sessions/d5c10ff7ddfabe047d528e6926df9edf_activity.pkl new file mode 100644 index 000000000..55c86d1ba Binary files /dev/null and b/backend/instance/sessions/d5c10ff7ddfabe047d528e6926df9edf_activity.pkl differ diff --git a/backend/instance/sessions/d68347c18c64ffc97714eb01ef3820ad_activity.pkl b/backend/instance/sessions/d68347c18c64ffc97714eb01ef3820ad_activity.pkl new file mode 100644 index 000000000..5401bfaab Binary files /dev/null and b/backend/instance/sessions/d68347c18c64ffc97714eb01ef3820ad_activity.pkl differ diff --git a/backend/instance/sessions/d8ac444e6dfdaaef3fbcba0a89c1df10_activity.pkl b/backend/instance/sessions/d8ac444e6dfdaaef3fbcba0a89c1df10_activity.pkl new file mode 100644 index 000000000..5732856ce Binary files /dev/null and b/backend/instance/sessions/d8ac444e6dfdaaef3fbcba0a89c1df10_activity.pkl differ diff --git a/backend/instance/sessions/d9912033cd91309f70d3547445104d7c_activity.pkl b/backend/instance/sessions/d9912033cd91309f70d3547445104d7c_activity.pkl new file mode 100644 index 000000000..f89ca6f9c Binary files /dev/null and b/backend/instance/sessions/d9912033cd91309f70d3547445104d7c_activity.pkl differ diff --git a/backend/instance/sessions/db345adecba8619b45c23f97749a769b_activity.pkl b/backend/instance/sessions/db345adecba8619b45c23f97749a769b_activity.pkl new file mode 100644 index 000000000..6619424ca Binary files /dev/null and b/backend/instance/sessions/db345adecba8619b45c23f97749a769b_activity.pkl differ diff --git a/backend/instance/sessions/db6972bf20f3edec82412f999356e4d1_activity.pkl b/backend/instance/sessions/db6972bf20f3edec82412f999356e4d1_activity.pkl new file mode 100644 index 000000000..f76d8cda2 Binary files /dev/null and b/backend/instance/sessions/db6972bf20f3edec82412f999356e4d1_activity.pkl differ diff --git a/backend/instance/sessions/dbeff739ca6804d2369e0f460ca72937_activity.pkl b/backend/instance/sessions/dbeff739ca6804d2369e0f460ca72937_activity.pkl new file mode 100644 index 000000000..4e81d6ff0 Binary files /dev/null and b/backend/instance/sessions/dbeff739ca6804d2369e0f460ca72937_activity.pkl differ diff --git a/backend/instance/sessions/dc983e7fb4f293b3738dea514544a34e_activity.pkl b/backend/instance/sessions/dc983e7fb4f293b3738dea514544a34e_activity.pkl new file mode 100644 index 000000000..c7fdae6d1 Binary files /dev/null and b/backend/instance/sessions/dc983e7fb4f293b3738dea514544a34e_activity.pkl differ diff --git a/backend/instance/sessions/dd25e700722a513cc6d464a523a2a922_activity.pkl b/backend/instance/sessions/dd25e700722a513cc6d464a523a2a922_activity.pkl new file mode 100644 index 000000000..6738a18f5 Binary files /dev/null and b/backend/instance/sessions/dd25e700722a513cc6d464a523a2a922_activity.pkl differ diff --git a/backend/instance/sessions/dd90a8280dd8b261bd1fe59207521eb5_activity.pkl b/backend/instance/sessions/dd90a8280dd8b261bd1fe59207521eb5_activity.pkl new file mode 100644 index 000000000..60643eec4 Binary files /dev/null and b/backend/instance/sessions/dd90a8280dd8b261bd1fe59207521eb5_activity.pkl differ diff --git a/backend/instance/sessions/dde4b1dfd1ccfb494fbb570f521c43bb_activity.pkl b/backend/instance/sessions/dde4b1dfd1ccfb494fbb570f521c43bb_activity.pkl new file mode 100644 index 000000000..204b4b30d Binary files /dev/null and b/backend/instance/sessions/dde4b1dfd1ccfb494fbb570f521c43bb_activity.pkl differ diff --git a/backend/instance/sessions/de70793ef84690d5170ea3b5792dbd2f_activity.pkl b/backend/instance/sessions/de70793ef84690d5170ea3b5792dbd2f_activity.pkl new file mode 100644 index 000000000..49977b618 Binary files /dev/null and b/backend/instance/sessions/de70793ef84690d5170ea3b5792dbd2f_activity.pkl differ diff --git a/backend/instance/sessions/dee4b42e35a1ae998ad2eaa876ef8152_activity.pkl b/backend/instance/sessions/dee4b42e35a1ae998ad2eaa876ef8152_activity.pkl new file mode 100644 index 000000000..ea20e04af Binary files /dev/null and b/backend/instance/sessions/dee4b42e35a1ae998ad2eaa876ef8152_activity.pkl differ diff --git a/backend/instance/sessions/e071b7075c5e11e6781b6ba3804819bc_activity.pkl b/backend/instance/sessions/e071b7075c5e11e6781b6ba3804819bc_activity.pkl new file mode 100644 index 000000000..9eae6d768 Binary files /dev/null and b/backend/instance/sessions/e071b7075c5e11e6781b6ba3804819bc_activity.pkl differ diff --git a/backend/instance/sessions/e0d20551df9e9a887ee3ac4ee62b8fc3_activity.pkl b/backend/instance/sessions/e0d20551df9e9a887ee3ac4ee62b8fc3_activity.pkl new file mode 100644 index 000000000..772963b42 Binary files /dev/null and b/backend/instance/sessions/e0d20551df9e9a887ee3ac4ee62b8fc3_activity.pkl differ diff --git a/backend/instance/sessions/e0fc91bef590a0842bb25a8babb00fe1_activity.pkl b/backend/instance/sessions/e0fc91bef590a0842bb25a8babb00fe1_activity.pkl new file mode 100644 index 000000000..a6e75c727 Binary files /dev/null and b/backend/instance/sessions/e0fc91bef590a0842bb25a8babb00fe1_activity.pkl differ diff --git a/backend/instance/sessions/e22a1bfb8c2c64b6f9529eea4e7ff7aa_activity.pkl b/backend/instance/sessions/e22a1bfb8c2c64b6f9529eea4e7ff7aa_activity.pkl new file mode 100644 index 000000000..30e10cdaa Binary files /dev/null and b/backend/instance/sessions/e22a1bfb8c2c64b6f9529eea4e7ff7aa_activity.pkl differ diff --git a/backend/instance/sessions/e364e48945a5902a92de00184acdb0b7_activity.pkl b/backend/instance/sessions/e364e48945a5902a92de00184acdb0b7_activity.pkl new file mode 100644 index 000000000..ef9c83810 Binary files /dev/null and b/backend/instance/sessions/e364e48945a5902a92de00184acdb0b7_activity.pkl differ diff --git a/backend/instance/sessions/e452043ecaead90d780a58e91da12fff_activity.pkl b/backend/instance/sessions/e452043ecaead90d780a58e91da12fff_activity.pkl new file mode 100644 index 000000000..4abf67573 Binary files /dev/null and b/backend/instance/sessions/e452043ecaead90d780a58e91da12fff_activity.pkl differ diff --git a/backend/instance/sessions/e54b7069e40ce713ae8dda4953ab228b_activity.pkl b/backend/instance/sessions/e54b7069e40ce713ae8dda4953ab228b_activity.pkl new file mode 100644 index 000000000..7089b3474 Binary files /dev/null and b/backend/instance/sessions/e54b7069e40ce713ae8dda4953ab228b_activity.pkl differ diff --git a/backend/instance/sessions/e5f66a3cedcb14d0bfc8c316f89889f8_activity.pkl b/backend/instance/sessions/e5f66a3cedcb14d0bfc8c316f89889f8_activity.pkl new file mode 100644 index 000000000..2ac906a92 Binary files /dev/null and b/backend/instance/sessions/e5f66a3cedcb14d0bfc8c316f89889f8_activity.pkl differ diff --git a/backend/instance/sessions/e5fcfc8574d5283003d9001e85011a80_activity.pkl b/backend/instance/sessions/e5fcfc8574d5283003d9001e85011a80_activity.pkl new file mode 100644 index 000000000..fd18d3ade Binary files /dev/null and b/backend/instance/sessions/e5fcfc8574d5283003d9001e85011a80_activity.pkl differ diff --git a/backend/instance/sessions/e7f0ee5a38e018f2706d7cd2929fc6f1_activity.pkl b/backend/instance/sessions/e7f0ee5a38e018f2706d7cd2929fc6f1_activity.pkl new file mode 100644 index 000000000..757c5c44c Binary files /dev/null and b/backend/instance/sessions/e7f0ee5a38e018f2706d7cd2929fc6f1_activity.pkl differ diff --git a/backend/instance/sessions/e814be2131eceb352b69980b7ee8a300_activity.pkl b/backend/instance/sessions/e814be2131eceb352b69980b7ee8a300_activity.pkl new file mode 100644 index 000000000..c0d2374ed Binary files /dev/null and b/backend/instance/sessions/e814be2131eceb352b69980b7ee8a300_activity.pkl differ diff --git a/backend/instance/sessions/ea0036fe88a3bf6d3cfec0e824a44cad_activity.pkl b/backend/instance/sessions/ea0036fe88a3bf6d3cfec0e824a44cad_activity.pkl new file mode 100644 index 000000000..f1ff1f7df Binary files /dev/null and b/backend/instance/sessions/ea0036fe88a3bf6d3cfec0e824a44cad_activity.pkl differ diff --git a/backend/instance/sessions/ecc88dc7ca88ef3075514644a1a7556d_activity.pkl b/backend/instance/sessions/ecc88dc7ca88ef3075514644a1a7556d_activity.pkl new file mode 100644 index 000000000..9a674e5f7 Binary files /dev/null and b/backend/instance/sessions/ecc88dc7ca88ef3075514644a1a7556d_activity.pkl differ diff --git a/backend/instance/sessions/ed52fa548746370b8309159f0f8fde36_activity.pkl b/backend/instance/sessions/ed52fa548746370b8309159f0f8fde36_activity.pkl new file mode 100644 index 000000000..912470bb8 Binary files /dev/null and b/backend/instance/sessions/ed52fa548746370b8309159f0f8fde36_activity.pkl differ diff --git a/backend/instance/sessions/ed61305e61c99731c0ab3fee16ce2625_activity.pkl b/backend/instance/sessions/ed61305e61c99731c0ab3fee16ce2625_activity.pkl new file mode 100644 index 000000000..d8180102c Binary files /dev/null and b/backend/instance/sessions/ed61305e61c99731c0ab3fee16ce2625_activity.pkl differ diff --git a/backend/instance/sessions/ed86ea5f097c2cc78a4a3ef8ec024c20_activity.pkl b/backend/instance/sessions/ed86ea5f097c2cc78a4a3ef8ec024c20_activity.pkl new file mode 100644 index 000000000..57398ca10 Binary files /dev/null and b/backend/instance/sessions/ed86ea5f097c2cc78a4a3ef8ec024c20_activity.pkl differ diff --git a/backend/instance/sessions/ee4f18e40d8f5687fd78a9265f728980_activity.pkl b/backend/instance/sessions/ee4f18e40d8f5687fd78a9265f728980_activity.pkl new file mode 100644 index 000000000..5a2cd3a2b Binary files /dev/null and b/backend/instance/sessions/ee4f18e40d8f5687fd78a9265f728980_activity.pkl differ diff --git a/backend/instance/sessions/f074f2def1736dcedc702930219be269_activity.pkl b/backend/instance/sessions/f074f2def1736dcedc702930219be269_activity.pkl new file mode 100644 index 000000000..defdfcea5 Binary files /dev/null and b/backend/instance/sessions/f074f2def1736dcedc702930219be269_activity.pkl differ diff --git a/backend/instance/sessions/f0b7cde1e3bbc2e60f59a84de45266f5_activity.pkl b/backend/instance/sessions/f0b7cde1e3bbc2e60f59a84de45266f5_activity.pkl new file mode 100644 index 000000000..99757817e Binary files /dev/null and b/backend/instance/sessions/f0b7cde1e3bbc2e60f59a84de45266f5_activity.pkl differ diff --git a/backend/instance/sessions/f15995a182b6cb2a4d98521295c44bcd_activity.pkl b/backend/instance/sessions/f15995a182b6cb2a4d98521295c44bcd_activity.pkl new file mode 100644 index 000000000..70ce92d18 Binary files /dev/null and b/backend/instance/sessions/f15995a182b6cb2a4d98521295c44bcd_activity.pkl differ diff --git a/backend/instance/sessions/f175688cc3fc4c1573bd1721fdb7d80b_activity.pkl b/backend/instance/sessions/f175688cc3fc4c1573bd1721fdb7d80b_activity.pkl new file mode 100644 index 000000000..458912f25 Binary files /dev/null and b/backend/instance/sessions/f175688cc3fc4c1573bd1721fdb7d80b_activity.pkl differ diff --git a/backend/instance/sessions/f1f80fac7fc759f813e7eddd40147d80_activity.pkl b/backend/instance/sessions/f1f80fac7fc759f813e7eddd40147d80_activity.pkl new file mode 100644 index 000000000..8b1634fc5 Binary files /dev/null and b/backend/instance/sessions/f1f80fac7fc759f813e7eddd40147d80_activity.pkl differ diff --git a/backend/instance/sessions/f281afec819e61dd59170b9d4fd352ef_activity.pkl b/backend/instance/sessions/f281afec819e61dd59170b9d4fd352ef_activity.pkl new file mode 100644 index 000000000..55bf9b782 Binary files /dev/null and b/backend/instance/sessions/f281afec819e61dd59170b9d4fd352ef_activity.pkl differ diff --git a/backend/instance/sessions/f36ee8c2a008bce5f24972ad0c52f2b9_activity.pkl b/backend/instance/sessions/f36ee8c2a008bce5f24972ad0c52f2b9_activity.pkl new file mode 100644 index 000000000..f8ee8069f Binary files /dev/null and b/backend/instance/sessions/f36ee8c2a008bce5f24972ad0c52f2b9_activity.pkl differ diff --git a/backend/instance/sessions/f3d4e4b9a5c55c9fd2fddfa671d161df_activity.pkl b/backend/instance/sessions/f3d4e4b9a5c55c9fd2fddfa671d161df_activity.pkl new file mode 100644 index 000000000..493ac60c6 Binary files /dev/null and b/backend/instance/sessions/f3d4e4b9a5c55c9fd2fddfa671d161df_activity.pkl differ diff --git a/backend/instance/sessions/f3eacbbc259cd6bbf5c7d5212e1ca2b4_activity.pkl b/backend/instance/sessions/f3eacbbc259cd6bbf5c7d5212e1ca2b4_activity.pkl new file mode 100644 index 000000000..65c8b4ec7 Binary files /dev/null and b/backend/instance/sessions/f3eacbbc259cd6bbf5c7d5212e1ca2b4_activity.pkl differ diff --git a/backend/instance/sessions/f496d0877c4da9d964342e140c2ac5d4_activity.pkl b/backend/instance/sessions/f496d0877c4da9d964342e140c2ac5d4_activity.pkl new file mode 100644 index 000000000..6994a5d30 Binary files /dev/null and b/backend/instance/sessions/f496d0877c4da9d964342e140c2ac5d4_activity.pkl differ diff --git a/backend/instance/sessions/f5e9439361c2fd708a46a21127fefd07_activity.pkl b/backend/instance/sessions/f5e9439361c2fd708a46a21127fefd07_activity.pkl new file mode 100644 index 000000000..557761491 Binary files /dev/null and b/backend/instance/sessions/f5e9439361c2fd708a46a21127fefd07_activity.pkl differ diff --git a/backend/instance/sessions/f680692d51a0868bef6f29d7ac757446_activity.pkl b/backend/instance/sessions/f680692d51a0868bef6f29d7ac757446_activity.pkl new file mode 100644 index 000000000..783f2095e Binary files /dev/null and b/backend/instance/sessions/f680692d51a0868bef6f29d7ac757446_activity.pkl differ diff --git a/backend/instance/sessions/f68e9a1baf41d7a7e036f7fda2a64420_activity.pkl b/backend/instance/sessions/f68e9a1baf41d7a7e036f7fda2a64420_activity.pkl new file mode 100644 index 000000000..d259711bf Binary files /dev/null and b/backend/instance/sessions/f68e9a1baf41d7a7e036f7fda2a64420_activity.pkl differ diff --git a/backend/instance/sessions/f6997b8157bad18ab110d77fcfcda529_activity.pkl b/backend/instance/sessions/f6997b8157bad18ab110d77fcfcda529_activity.pkl new file mode 100644 index 000000000..2e2e7b3c1 Binary files /dev/null and b/backend/instance/sessions/f6997b8157bad18ab110d77fcfcda529_activity.pkl differ diff --git a/backend/instance/sessions/f6c20bc0e5e9e067c61277f646a73dbe_activity.pkl b/backend/instance/sessions/f6c20bc0e5e9e067c61277f646a73dbe_activity.pkl new file mode 100644 index 000000000..bede93b17 Binary files /dev/null and b/backend/instance/sessions/f6c20bc0e5e9e067c61277f646a73dbe_activity.pkl differ diff --git a/backend/instance/sessions/f71ac0260895615bd3bfcca375f5f7a2_activity.pkl b/backend/instance/sessions/f71ac0260895615bd3bfcca375f5f7a2_activity.pkl new file mode 100644 index 000000000..4b30c21e5 Binary files /dev/null and b/backend/instance/sessions/f71ac0260895615bd3bfcca375f5f7a2_activity.pkl differ diff --git a/backend/instance/sessions/f7a6222f6568b775598acbd75422ac78_activity.pkl b/backend/instance/sessions/f7a6222f6568b775598acbd75422ac78_activity.pkl new file mode 100644 index 000000000..55543237b Binary files /dev/null and b/backend/instance/sessions/f7a6222f6568b775598acbd75422ac78_activity.pkl differ diff --git a/backend/instance/sessions/f8f8b2412adc33390ff1606518590c06_activity.pkl b/backend/instance/sessions/f8f8b2412adc33390ff1606518590c06_activity.pkl new file mode 100644 index 000000000..6eaad1f20 Binary files /dev/null and b/backend/instance/sessions/f8f8b2412adc33390ff1606518590c06_activity.pkl differ diff --git a/backend/instance/sessions/f907d19e8f0db79d2c44d6cb76312ffd_activity.pkl b/backend/instance/sessions/f907d19e8f0db79d2c44d6cb76312ffd_activity.pkl new file mode 100644 index 000000000..d074879e8 Binary files /dev/null and b/backend/instance/sessions/f907d19e8f0db79d2c44d6cb76312ffd_activity.pkl differ diff --git a/backend/instance/sessions/f9404667548824b504b50459335a6475_activity.pkl b/backend/instance/sessions/f9404667548824b504b50459335a6475_activity.pkl new file mode 100644 index 000000000..05667a521 Binary files /dev/null and b/backend/instance/sessions/f9404667548824b504b50459335a6475_activity.pkl differ diff --git a/backend/instance/sessions/f9580bee8828d984591025de69caf4fd_activity.pkl b/backend/instance/sessions/f9580bee8828d984591025de69caf4fd_activity.pkl new file mode 100644 index 000000000..b7fa50c1b Binary files /dev/null and b/backend/instance/sessions/f9580bee8828d984591025de69caf4fd_activity.pkl differ diff --git a/backend/instance/sessions/f969fc3e6ec17bd3bd39d6296677f735_activity.pkl b/backend/instance/sessions/f969fc3e6ec17bd3bd39d6296677f735_activity.pkl new file mode 100644 index 000000000..4c4b224dd Binary files /dev/null and b/backend/instance/sessions/f969fc3e6ec17bd3bd39d6296677f735_activity.pkl differ diff --git a/backend/instance/sessions/f9836cbe350e5c10866a176fc0a8e135_activity.pkl b/backend/instance/sessions/f9836cbe350e5c10866a176fc0a8e135_activity.pkl new file mode 100644 index 000000000..90a6c631b Binary files /dev/null and b/backend/instance/sessions/f9836cbe350e5c10866a176fc0a8e135_activity.pkl differ diff --git a/backend/instance/sessions/f9ca255dd3ddbcf0c18d0c458076b1ea_activity.pkl b/backend/instance/sessions/f9ca255dd3ddbcf0c18d0c458076b1ea_activity.pkl new file mode 100644 index 000000000..30f5c6bdd Binary files /dev/null and b/backend/instance/sessions/f9ca255dd3ddbcf0c18d0c458076b1ea_activity.pkl differ diff --git a/backend/instance/sessions/fb18d7c111ef566bfa4573efa3f85a9c_activity.pkl b/backend/instance/sessions/fb18d7c111ef566bfa4573efa3f85a9c_activity.pkl new file mode 100644 index 000000000..00c127e21 Binary files /dev/null and b/backend/instance/sessions/fb18d7c111ef566bfa4573efa3f85a9c_activity.pkl differ diff --git a/backend/instance/sessions/fb80275a4bb1221543c865e8eb48843f_activity.pkl b/backend/instance/sessions/fb80275a4bb1221543c865e8eb48843f_activity.pkl new file mode 100644 index 000000000..39d4f8ade Binary files /dev/null and b/backend/instance/sessions/fb80275a4bb1221543c865e8eb48843f_activity.pkl differ diff --git a/backend/instance/sessions/fc3dd19c4a9b8a3e07f5d3c41fc0e3a1_activity.pkl b/backend/instance/sessions/fc3dd19c4a9b8a3e07f5d3c41fc0e3a1_activity.pkl new file mode 100644 index 000000000..b288fa1c3 Binary files /dev/null and b/backend/instance/sessions/fc3dd19c4a9b8a3e07f5d3c41fc0e3a1_activity.pkl differ diff --git a/backend/instance/sessions/fd7328c1d337f911a28469d53e98061a_activity.pkl b/backend/instance/sessions/fd7328c1d337f911a28469d53e98061a_activity.pkl new file mode 100644 index 000000000..05bf6435a Binary files /dev/null and b/backend/instance/sessions/fd7328c1d337f911a28469d53e98061a_activity.pkl differ diff --git a/backend/instance/sessions/fe507391e506f0ef6e2ac6a112f6041f_activity.pkl b/backend/instance/sessions/fe507391e506f0ef6e2ac6a112f6041f_activity.pkl new file mode 100644 index 000000000..415bece1e Binary files /dev/null and b/backend/instance/sessions/fe507391e506f0ef6e2ac6a112f6041f_activity.pkl differ diff --git a/backend/logs/admin/admin.log b/backend/logs/admin/admin.log index 253eae4d2..9de25983d 100644 --- a/backend/logs/admin/admin.log +++ b/backend/logs/admin/admin.log @@ -693,3 +693,21 @@ 2025-06-19 12:07:09 - [admin] admin - [ERROR] ERROR - Fehler beim Laden der erweiterten Einstellungen: 'maintenance_info' is undefined 2025-06-19 12:07:27 - [admin] admin - [INFO] INFO - Admin-Check für Funktion admin_dashboard: User authenticated: True, User ID: 1, Is Admin: True 2025-06-19 12:07:27 - [admin] admin - [INFO] INFO - Admin-Dashboard geladen von admin +2025-06-19 12:10:58 - [admin] admin - [INFO] INFO - Admin-Check für Funktion admin_dashboard: User authenticated: True, User ID: 1, Is Admin: True +2025-06-19 12:10:58 - [admin] admin - [INFO] INFO - Admin-Dashboard geladen von admin +2025-06-19 12:12:38 - [admin] admin - [INFO] INFO - Admin-Check für Funktion admin_dashboard: User authenticated: True, User ID: 1, Is Admin: True +2025-06-19 12:12:38 - [admin] admin - [INFO] INFO - Admin-Dashboard geladen von admin +2025-06-19 12:13:49 - [admin] admin - [INFO] INFO - Admin-Check für Funktion admin_dashboard: User authenticated: True, User ID: 1, Is Admin: True +2025-06-19 12:13:49 - [admin] admin - [INFO] INFO - Admin-Dashboard geladen von admin +2025-06-19 12:13:58 - [admin] admin - [INFO] INFO - Admin-Check für Funktion admin_dashboard: User authenticated: True, User ID: 1, Is Admin: True +2025-06-19 12:13:58 - [admin] admin - [INFO] INFO - Admin-Dashboard geladen von admin +2025-06-19 12:14:02 - [admin] admin - [INFO] INFO - Admin-Check für Funktion admin_dashboard: User authenticated: True, User ID: 1, Is Admin: True +2025-06-19 12:14:02 - [admin] admin - [INFO] INFO - Admin-Dashboard geladen von admin +2025-06-19 12:14:02 - [admin] admin - [INFO] INFO - Admin-Check für Funktion admin_dashboard: User authenticated: True, User ID: 1, Is Admin: True +2025-06-19 12:14:02 - [admin] admin - [INFO] INFO - Admin-Dashboard geladen von admin +2025-06-19 12:14:03 - [admin] admin - [INFO] INFO - Admin-Check für Funktion admin_dashboard: User authenticated: True, User ID: 1, Is Admin: True +2025-06-19 12:14:03 - [admin] admin - [INFO] INFO - Admin-Dashboard geladen von admin +2025-06-19 12:14:34 - [admin] admin - [INFO] INFO - Admin-Check für Funktion admin_dashboard: User authenticated: True, User ID: 1, Is Admin: True +2025-06-19 12:14:34 - [admin] admin - [INFO] INFO - Admin-Dashboard geladen von admin +2025-06-19 12:56:36 - [admin] admin - [INFO] INFO - Admin-Check für Funktion admin_dashboard: User authenticated: True, User ID: 1, Is Admin: True +2025-06-19 12:56:36 - [admin] admin - [INFO] INFO - Admin-Dashboard geladen von admin diff --git a/backend/logs/app/app.log b/backend/logs/app/app.log index 72b175202..b9f0d72e2 100644 --- a/backend/logs/app/app.log +++ b/backend/logs/app/app.log @@ -48114,3 +48114,1378 @@ jinja2.exceptions.UndefinedError: 'moment' is undefined 2025-06-19 12:08:42 - [app] app - [DEBUG] DEBUG - Response: 200 2025-06-19 12:09:12 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications 2025-06-19 12:09:12 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:09:42 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 12:09:42 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:09:59 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: ./database/myp.db +2025-06-19 12:10:00 - [app] app - [INFO] INFO - [CONFIG] Erkannte Umgebung: development +2025-06-19 12:10:00 - [app] app - [INFO] INFO - [CONFIG] Production-Modus: False +2025-06-19 12:10:00 - [app] app - [INFO] INFO - [CONFIG] Verwende Development-Konfiguration +2025-06-19 12:10:00 - [app] app - [INFO] INFO - [DEVELOPMENT] Aktiviere Development-Konfiguration +2025-06-19 12:10:00 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ MYP Development Environment Konfiguration aktiviert +2025-06-19 12:10:00 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Environment: Development/Testing +2025-06-19 12:10:00 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Debug Mode: True +2025-06-19 12:10:00 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ SQL Echo: True +2025-06-19 12:10:00 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O) +2025-06-19 12:10:00 - [app] app - [INFO] INFO - Admin-Berechtigungen beim Start korrigiert: 0 erstellt, 0 aktualisiert +2025-06-19 12:10:00 - [app] app - [INFO] INFO - [STARTUP] 🚀 Starte MYP DEVELOPMENT-Umgebung +2025-06-19 12:10:00 - [app] app - [INFO] INFO - [STARTUP] 🏢 Mercedes-Benz TBA Marienfelde +2025-06-19 12:10:00 - [app] app - [INFO] INFO - [STARTUP] 🔒 Air-Gapped: True +2025-06-19 12:10:00 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Datenbank... +2025-06-19 12:10:00 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert +2025-06-19 12:10:00 - [app] app - [INFO] INFO - [STARTUP] ✅ Datenbank initialisiert +2025-06-19 12:10:00 - [app] app - [INFO] INFO - [STARTUP] Prüfe Initial-Admin... +2025-06-19 12:10:00 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt. +2025-06-19 12:10:00 - [app] app - [INFO] INFO - [STARTUP] ✅ Admin-Benutzer geprüft +2025-06-19 12:10:00 - [app] app - [INFO] INFO - [STARTUP] Initialisiere statische Drucker... +2025-06-19 12:10:00 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 1 (192.168.0.100) +2025-06-19 12:10:00 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 2 (192.168.0.101) +2025-06-19 12:10:00 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 3 (192.168.0.102) +2025-06-19 12:10:00 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 4 (192.168.0.103) +2025-06-19 12:10:00 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 5 (192.168.0.104) +2025-06-19 12:10:00 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 6 (192.168.0.106) +2025-06-19 12:10:00 - [app] app - [INFO] INFO - ✅ Statische Drucker-Initialisierung abgeschlossen: 0 erstellt, 6 aktualisiert +2025-06-19 12:10:00 - [app] app - [INFO] INFO - 📍 Alle Drucker sind für Standort 'TBA Marienfelde' konfiguriert +2025-06-19 12:10:00 - [app] app - [INFO] INFO - 🌐 IP-Bereich: 192.168.0.100-106 (außer .105) +2025-06-19 12:10:00 - [app] app - [INFO] INFO - [STARTUP] ✅ Statische Drucker konfiguriert +2025-06-19 12:10:00 - [app] app - [INFO] INFO - [STARTUP] Starte Queue Manager... +2025-06-19 12:10:00 - [app] app - [INFO] INFO - [STARTUP] ✅ Queue Manager gestartet +2025-06-19 12:10:00 - [app] app - [INFO] INFO - [STARTUP] Starte Job Scheduler... +2025-06-19 12:10:00 - [app] app - [INFO] INFO - [STARTUP] ✅ Job Scheduler gestartet +2025-06-19 12:10:00 - [app] app - [INFO] INFO - [STARTUP] 🌐 Server startet auf http://0.0.0.0:5000 +2025-06-19 12:10:01 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: ./database/myp.db +2025-06-19 12:10:02 - [app] app - [INFO] INFO - [CONFIG] Erkannte Umgebung: development +2025-06-19 12:10:02 - [app] app - [INFO] INFO - [CONFIG] Production-Modus: False +2025-06-19 12:10:02 - [app] app - [INFO] INFO - [CONFIG] Verwende Development-Konfiguration +2025-06-19 12:10:02 - [app] app - [INFO] INFO - [DEVELOPMENT] Aktiviere Development-Konfiguration +2025-06-19 12:10:02 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ MYP Development Environment Konfiguration aktiviert +2025-06-19 12:10:02 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Environment: Development/Testing +2025-06-19 12:10:02 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Debug Mode: True +2025-06-19 12:10:02 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ SQL Echo: True +2025-06-19 12:10:02 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O) +2025-06-19 12:10:02 - [app] app - [INFO] INFO - Admin-Berechtigungen beim Start korrigiert: 0 erstellt, 0 aktualisiert +2025-06-19 12:10:02 - [app] app - [INFO] INFO - [STARTUP] 🚀 Starte MYP DEVELOPMENT-Umgebung +2025-06-19 12:10:02 - [app] app - [INFO] INFO - [STARTUP] 🏢 Mercedes-Benz TBA Marienfelde +2025-06-19 12:10:02 - [app] app - [INFO] INFO - [STARTUP] 🔒 Air-Gapped: True +2025-06-19 12:10:02 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Datenbank... +2025-06-19 12:10:02 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert +2025-06-19 12:10:02 - [app] app - [INFO] INFO - [STARTUP] ✅ Datenbank initialisiert +2025-06-19 12:10:02 - [app] app - [INFO] INFO - [STARTUP] Prüfe Initial-Admin... +2025-06-19 12:10:02 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt. +2025-06-19 12:10:02 - [app] app - [INFO] INFO - [STARTUP] ✅ Admin-Benutzer geprüft +2025-06-19 12:10:02 - [app] app - [INFO] INFO - [STARTUP] Initialisiere statische Drucker... +2025-06-19 12:10:02 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 1 (192.168.0.100) +2025-06-19 12:10:02 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 2 (192.168.0.101) +2025-06-19 12:10:02 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 3 (192.168.0.102) +2025-06-19 12:10:02 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 4 (192.168.0.103) +2025-06-19 12:10:02 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 5 (192.168.0.104) +2025-06-19 12:10:02 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 6 (192.168.0.106) +2025-06-19 12:10:02 - [app] app - [INFO] INFO - ✅ Statische Drucker-Initialisierung abgeschlossen: 0 erstellt, 6 aktualisiert +2025-06-19 12:10:02 - [app] app - [INFO] INFO - 📍 Alle Drucker sind für Standort 'TBA Marienfelde' konfiguriert +2025-06-19 12:10:02 - [app] app - [INFO] INFO - 🌐 IP-Bereich: 192.168.0.100-106 (außer .105) +2025-06-19 12:10:02 - [app] app - [INFO] INFO - [STARTUP] ✅ Statische Drucker konfiguriert +2025-06-19 12:10:02 - [app] app - [INFO] INFO - [STARTUP] Starte Queue Manager... +2025-06-19 12:10:02 - [app] app - [INFO] INFO - [STARTUP] ✅ Queue Manager gestartet +2025-06-19 12:10:02 - [app] app - [INFO] INFO - [STARTUP] Starte Job Scheduler... +2025-06-19 12:10:02 - [app] app - [INFO] INFO - [STARTUP] ✅ Job Scheduler gestartet +2025-06-19 12:10:02 - [app] app - [INFO] INFO - [STARTUP] 🌐 Server startet auf http://0.0.0.0:5000 +2025-06-19 12:10:12 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 12:10:12 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:10:39 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: ./database/myp.db +2025-06-19 12:10:40 - [app] app - [INFO] INFO - [CONFIG] Erkannte Umgebung: development +2025-06-19 12:10:40 - [app] app - [INFO] INFO - [CONFIG] Production-Modus: False +2025-06-19 12:10:40 - [app] app - [INFO] INFO - [CONFIG] Verwende Development-Konfiguration +2025-06-19 12:10:40 - [app] app - [INFO] INFO - [DEVELOPMENT] Aktiviere Development-Konfiguration +2025-06-19 12:10:40 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ MYP Development Environment Konfiguration aktiviert +2025-06-19 12:10:40 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Environment: Development/Testing +2025-06-19 12:10:40 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Debug Mode: True +2025-06-19 12:10:40 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ SQL Echo: True +2025-06-19 12:10:40 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O) +2025-06-19 12:10:40 - [app] app - [INFO] INFO - Admin-Berechtigungen beim Start korrigiert: 0 erstellt, 0 aktualisiert +2025-06-19 12:10:40 - [app] app - [INFO] INFO - [STARTUP] 🚀 Starte MYP DEVELOPMENT-Umgebung +2025-06-19 12:10:40 - [app] app - [INFO] INFO - [STARTUP] 🏢 Mercedes-Benz TBA Marienfelde +2025-06-19 12:10:40 - [app] app - [INFO] INFO - [STARTUP] 🔒 Air-Gapped: True +2025-06-19 12:10:40 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Datenbank... +2025-06-19 12:10:40 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert +2025-06-19 12:10:40 - [app] app - [INFO] INFO - [STARTUP] ✅ Datenbank initialisiert +2025-06-19 12:10:40 - [app] app - [INFO] INFO - [STARTUP] Prüfe Initial-Admin... +2025-06-19 12:10:40 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt. +2025-06-19 12:10:40 - [app] app - [INFO] INFO - [STARTUP] ✅ Admin-Benutzer geprüft +2025-06-19 12:10:40 - [app] app - [INFO] INFO - [STARTUP] Initialisiere statische Drucker... +2025-06-19 12:10:40 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 1 (192.168.0.100) +2025-06-19 12:10:41 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 2 (192.168.0.101) +2025-06-19 12:10:41 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 3 (192.168.0.102) +2025-06-19 12:10:41 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 4 (192.168.0.103) +2025-06-19 12:10:41 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 5 (192.168.0.104) +2025-06-19 12:10:41 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 6 (192.168.0.106) +2025-06-19 12:10:41 - [app] app - [INFO] INFO - ✅ Statische Drucker-Initialisierung abgeschlossen: 0 erstellt, 6 aktualisiert +2025-06-19 12:10:41 - [app] app - [INFO] INFO - 📍 Alle Drucker sind für Standort 'TBA Marienfelde' konfiguriert +2025-06-19 12:10:41 - [app] app - [INFO] INFO - 🌐 IP-Bereich: 192.168.0.100-106 (außer .105) +2025-06-19 12:10:41 - [app] app - [INFO] INFO - [STARTUP] ✅ Statische Drucker konfiguriert +2025-06-19 12:10:41 - [app] app - [INFO] INFO - [STARTUP] Starte Queue Manager... +2025-06-19 12:10:41 - [app] app - [INFO] INFO - [STARTUP] ✅ Queue Manager gestartet +2025-06-19 12:10:41 - [app] app - [INFO] INFO - [STARTUP] Starte Job Scheduler... +2025-06-19 12:10:41 - [app] app - [INFO] INFO - [STARTUP] ✅ Job Scheduler gestartet +2025-06-19 12:10:41 - [app] app - [INFO] INFO - [STARTUP] 🌐 Server startet auf http://0.0.0.0:5000 +2025-06-19 12:10:42 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: ./database/myp.db +2025-06-19 12:10:43 - [app] app - [INFO] INFO - [CONFIG] Erkannte Umgebung: development +2025-06-19 12:10:43 - [app] app - [INFO] INFO - [CONFIG] Production-Modus: False +2025-06-19 12:10:43 - [app] app - [INFO] INFO - [CONFIG] Verwende Development-Konfiguration +2025-06-19 12:10:43 - [app] app - [INFO] INFO - [DEVELOPMENT] Aktiviere Development-Konfiguration +2025-06-19 12:10:43 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ MYP Development Environment Konfiguration aktiviert +2025-06-19 12:10:43 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Environment: Development/Testing +2025-06-19 12:10:43 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Debug Mode: True +2025-06-19 12:10:43 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ SQL Echo: True +2025-06-19 12:10:43 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O) +2025-06-19 12:10:43 - [app] app - [INFO] INFO - Admin-Berechtigungen beim Start korrigiert: 0 erstellt, 0 aktualisiert +2025-06-19 12:10:43 - [app] app - [INFO] INFO - [STARTUP] 🚀 Starte MYP DEVELOPMENT-Umgebung +2025-06-19 12:10:43 - [app] app - [INFO] INFO - [STARTUP] 🏢 Mercedes-Benz TBA Marienfelde +2025-06-19 12:10:43 - [app] app - [INFO] INFO - [STARTUP] 🔒 Air-Gapped: True +2025-06-19 12:10:43 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Datenbank... +2025-06-19 12:10:43 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert +2025-06-19 12:10:43 - [app] app - [INFO] INFO - [STARTUP] ✅ Datenbank initialisiert +2025-06-19 12:10:43 - [app] app - [INFO] INFO - [STARTUP] Prüfe Initial-Admin... +2025-06-19 12:10:43 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt. +2025-06-19 12:10:43 - [app] app - [INFO] INFO - [STARTUP] ✅ Admin-Benutzer geprüft +2025-06-19 12:10:43 - [app] app - [INFO] INFO - [STARTUP] Initialisiere statische Drucker... +2025-06-19 12:10:43 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 1 (192.168.0.100) +2025-06-19 12:10:43 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 2 (192.168.0.101) +2025-06-19 12:10:43 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 3 (192.168.0.102) +2025-06-19 12:10:43 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 4 (192.168.0.103) +2025-06-19 12:10:43 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 5 (192.168.0.104) +2025-06-19 12:10:43 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 6 (192.168.0.106) +2025-06-19 12:10:43 - [app] app - [INFO] INFO - ✅ Statische Drucker-Initialisierung abgeschlossen: 0 erstellt, 6 aktualisiert +2025-06-19 12:10:43 - [app] app - [INFO] INFO - 📍 Alle Drucker sind für Standort 'TBA Marienfelde' konfiguriert +2025-06-19 12:10:43 - [app] app - [INFO] INFO - 🌐 IP-Bereich: 192.168.0.100-106 (außer .105) +2025-06-19 12:10:43 - [app] app - [INFO] INFO - [STARTUP] ✅ Statische Drucker konfiguriert +2025-06-19 12:10:43 - [app] app - [INFO] INFO - [STARTUP] Starte Queue Manager... +2025-06-19 12:10:43 - [app] app - [INFO] INFO - [STARTUP] ✅ Queue Manager gestartet +2025-06-19 12:10:43 - [app] app - [INFO] INFO - [STARTUP] Starte Job Scheduler... +2025-06-19 12:10:43 - [app] app - [INFO] INFO - [STARTUP] ✅ Job Scheduler gestartet +2025-06-19 12:10:43 - [app] app - [INFO] INFO - [STARTUP] 🌐 Server startet auf http://0.0.0.0:5000 +2025-06-19 12:10:43 - [app] app - [INFO] INFO - Locating template 'imprint.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\imprint.html') +2025-06-19 12:10:43 - [app] app - [INFO] INFO - Locating template 'base.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\base.html') +2025-06-19 12:10:43 - [app] app - [ERROR] ERROR - Unhandled Exception - ID: 20250619_121043 +2025-06-19 12:10:43 - [app] app - [ERROR] ERROR - URL: http://127.0.0.1:5000/impressum +2025-06-19 12:10:43 - [app] app - [ERROR] ERROR - Method: GET +2025-06-19 12:10:43 - [app] app - [ERROR] ERROR - User: admin +2025-06-19 12:10:43 - [app] app - [ERROR] ERROR - Exception Type: UndefinedError +2025-06-19 12:10:43 - [app] app - [ERROR] ERROR - Exception: 'moment' is undefined +2025-06-19 12:10:43 - [app] app - [ERROR] ERROR - Traceback: Traceback (most recent call last): + File "C:\Users\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\site-packages\flask\app.py", line 1484, in full_dispatch_request + rv = self.dispatch_request() + File "C:\Users\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\site-packages\flask\app.py", line 1469, in dispatch_request + return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^ + File "C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\blueprints\legal_pages.py", line 14, in imprint + return render_template('imprint.html', + title='Impressum - MYP Platform') + File "C:\Users\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\site-packages\flask\templating.py", line 151, in render_template + return _render(app, template, context) + File "C:\Users\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\site-packages\flask\templating.py", line 132, in _render + rv = template.render(context) + File "C:\Users\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\site-packages\jinja2\environment.py", line 1295, in render + self.environment.handle_exception() + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^ + File "C:\Users\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\site-packages\jinja2\environment.py", line 942, in handle_exception + raise rewrite_traceback_stack(source=source) + File "C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\imprint.html", line 1, in top-level template code + {% extends "base.html" %} + File "C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\base.html", line 456, in top-level template code + {% block content %}{% endblock %} + ^^^^^^^^^^^^^ + File "C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\imprint.html", line 201, in block 'content' +

Letzte Aktualisierung: {{ moment().format('DD.MM.YYYY') }}

+ ^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\TTOMCZA.EMEA\AppData\Roaming\Python\Python313\site-packages\jinja2\utils.py", line 92, in from_obj + if hasattr(obj, "jinja_pass_arg"): + ~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^ +jinja2.exceptions.UndefinedError: 'moment' is undefined + +2025-06-19 12:10:43 - [app] app - [INFO] INFO - Locating template 'errors/500.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\errors\\500.html') +2025-06-19 12:10:43 - [app] app - [DEBUG] DEBUG - Response: 500 +2025-06-19 12:10:44 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 12:10:44 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:10:45 - [app] app - [DEBUG] DEBUG - Request: GET /dashboard +2025-06-19 12:10:45 - [app] app - [INFO] INFO - Locating template 'dashboard.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\dashboard.html') +2025-06-19 12:10:45 - [app] app - [INFO] INFO - Locating template 'macros/ui_components.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\macros\\ui_components.html') +2025-06-19 12:10:45 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:10:45 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 12:10:45 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:10:47 - [app] app - [DEBUG] DEBUG - Request: GET /printers +2025-06-19 12:10:47 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 1, Status: disconnected, Quelle: system +2025-06-19 12:10:47 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 1 -> disconnected +2025-06-19 12:10:47 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 2, Status: disconnected, Quelle: system +2025-06-19 12:10:47 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 2 -> disconnected +2025-06-19 12:10:47 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 3, Status: disconnected, Quelle: system +2025-06-19 12:10:47 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 3 -> disconnected +2025-06-19 12:10:47 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 4, Status: disconnected, Quelle: system +2025-06-19 12:10:47 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 4 -> disconnected +2025-06-19 12:10:47 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 5, Status: disconnected, Quelle: system +2025-06-19 12:10:47 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 5 -> disconnected +2025-06-19 12:10:47 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 6, Status: disconnected, Quelle: system +2025-06-19 12:10:47 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 6 -> disconnected +2025-06-19 12:10:47 - [app] app - [DEBUG] DEBUG - ✅ Status-Updates für 6 Drucker erfolgreich gespeichert +2025-06-19 12:10:47 - [app] app - [INFO] INFO - Locating template 'printers.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\printers.html') +2025-06-19 12:10:47 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:10:47 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 12:10:47 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:10:50 - [app] app - [DEBUG] DEBUG - Request: GET /energy/ +2025-06-19 12:10:50 - [app] app - [INFO] INFO - Locating template 'energy_dashboard.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\energy_dashboard.html') +2025-06-19 12:10:50 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:10:50 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 12:10:50 - [app] app - [DEBUG] DEBUG - Request: GET /api/energy/dashboard +2025-06-19 12:10:50 - [app] app - [DEBUG] DEBUG - Request: GET /api/energy/statistics +2025-06-19 12:10:50 - [app] app - [DEBUG] DEBUG - Request: GET /api/energy/live +2025-06-19 12:10:50 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:10:50 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:10:50 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:10:50 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:10:51 - [app] app - [DEBUG] DEBUG - Request: GET /calendar +2025-06-19 12:10:51 - [app] app - [INFO] INFO - Locating template 'calendar.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\calendar.html') +2025-06-19 12:10:51 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:10:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/calendar/events +2025-06-19 12:10:51 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:10:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/calendar/statistics +2025-06-19 12:10:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 12:10:51 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:10:51 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:10:51 - [app] app - [DEBUG] DEBUG - Request: GET /api/calendar/statistics +2025-06-19 12:10:51 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:10:54 - [app] app - [DEBUG] DEBUG - Request: GET /api/calendar/events +2025-06-19 12:10:54 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:10:54 - [app] app - [DEBUG] DEBUG - Request: GET /api/calendar/statistics +2025-06-19 12:10:54 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:10:56 - [app] app - [DEBUG] DEBUG - Request: GET /api/calendar/events +2025-06-19 12:10:56 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:10:56 - [app] app - [DEBUG] DEBUG - Request: GET /api/calendar/statistics +2025-06-19 12:10:56 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:10:58 - [app] app - [DEBUG] DEBUG - Request: GET /admin/ +2025-06-19 12:10:58 - [app] app - [INFO] INFO - Locating template 'admin_modern.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\admin_modern.html') +2025-06-19 12:10:58 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:10:58 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 12:10:58 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:11:28 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 12:11:28 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:11:37 - [app] app - [INFO] INFO - [SHUTDOWN] 🧹 Cleanup wird ausgeführt... +2025-06-19 12:11:37 - [app] app - [INFO] INFO - [SHUTDOWN] ✅ Queue Manager gestoppt +2025-06-19 12:11:37 - [app] app - [ERROR] ERROR - [SHUTDOWN] ❌ Cleanup-Fehler: 'BackgroundTaskScheduler' object has no attribute 'shutdown' +2025-06-19 12:11:38 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: ./database/myp.db +2025-06-19 12:11:39 - [app] app - [INFO] INFO - [CONFIG] Erkannte Umgebung: development +2025-06-19 12:11:39 - [app] app - [INFO] INFO - [CONFIG] Production-Modus: False +2025-06-19 12:11:39 - [app] app - [INFO] INFO - [CONFIG] Verwende Development-Konfiguration +2025-06-19 12:11:39 - [app] app - [INFO] INFO - [DEVELOPMENT] Aktiviere Development-Konfiguration +2025-06-19 12:11:39 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ MYP Development Environment Konfiguration aktiviert +2025-06-19 12:11:39 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Environment: Development/Testing +2025-06-19 12:11:39 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Debug Mode: True +2025-06-19 12:11:39 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ SQL Echo: True +2025-06-19 12:11:39 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O) +2025-06-19 12:11:39 - [app] app - [INFO] INFO - Admin-Berechtigungen beim Start korrigiert: 0 erstellt, 0 aktualisiert +2025-06-19 12:11:39 - [app] app - [INFO] INFO - [STARTUP] 🚀 Starte MYP DEVELOPMENT-Umgebung +2025-06-19 12:11:39 - [app] app - [INFO] INFO - [STARTUP] 🏢 Mercedes-Benz TBA Marienfelde +2025-06-19 12:11:39 - [app] app - [INFO] INFO - [STARTUP] 🔒 Air-Gapped: True +2025-06-19 12:11:39 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Datenbank... +2025-06-19 12:11:39 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert +2025-06-19 12:11:39 - [app] app - [INFO] INFO - [STARTUP] ✅ Datenbank initialisiert +2025-06-19 12:11:39 - [app] app - [INFO] INFO - [STARTUP] Prüfe Initial-Admin... +2025-06-19 12:11:39 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt. +2025-06-19 12:11:39 - [app] app - [INFO] INFO - [STARTUP] ✅ Admin-Benutzer geprüft +2025-06-19 12:11:39 - [app] app - [INFO] INFO - [STARTUP] Initialisiere statische Drucker... +2025-06-19 12:11:39 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 1 (192.168.0.100) +2025-06-19 12:11:39 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 2 (192.168.0.101) +2025-06-19 12:11:39 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 3 (192.168.0.102) +2025-06-19 12:11:39 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 4 (192.168.0.103) +2025-06-19 12:11:39 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 5 (192.168.0.104) +2025-06-19 12:11:39 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 6 (192.168.0.106) +2025-06-19 12:11:39 - [app] app - [INFO] INFO - ✅ Statische Drucker-Initialisierung abgeschlossen: 0 erstellt, 6 aktualisiert +2025-06-19 12:11:39 - [app] app - [INFO] INFO - 📍 Alle Drucker sind für Standort 'TBA Marienfelde' konfiguriert +2025-06-19 12:11:39 - [app] app - [INFO] INFO - 🌐 IP-Bereich: 192.168.0.100-106 (außer .105) +2025-06-19 12:11:39 - [app] app - [INFO] INFO - [STARTUP] ✅ Statische Drucker konfiguriert +2025-06-19 12:11:39 - [app] app - [INFO] INFO - [STARTUP] Starte Queue Manager... +2025-06-19 12:11:39 - [app] app - [INFO] INFO - [STARTUP] ✅ Queue Manager gestartet +2025-06-19 12:11:39 - [app] app - [INFO] INFO - [STARTUP] Starte Job Scheduler... +2025-06-19 12:11:39 - [app] app - [INFO] INFO - [STARTUP] ✅ Job Scheduler gestartet +2025-06-19 12:11:39 - [app] app - [INFO] INFO - [STARTUP] 🌐 Server startet auf http://0.0.0.0:5000 +2025-06-19 12:11:54 - [app] app - [INFO] INFO - [SHUTDOWN] 🧹 Cleanup wird ausgeführt... +2025-06-19 12:11:54 - [app] app - [INFO] INFO - [SHUTDOWN] ✅ Queue Manager gestoppt +2025-06-19 12:11:54 - [app] app - [ERROR] ERROR - [SHUTDOWN] ❌ Cleanup-Fehler: 'BackgroundTaskScheduler' object has no attribute 'shutdown' +2025-06-19 12:11:55 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: ./database/myp.db +2025-06-19 12:11:56 - [app] app - [INFO] INFO - [CONFIG] Erkannte Umgebung: development +2025-06-19 12:11:56 - [app] app - [INFO] INFO - [CONFIG] Production-Modus: False +2025-06-19 12:11:56 - [app] app - [INFO] INFO - [CONFIG] Verwende Development-Konfiguration +2025-06-19 12:11:56 - [app] app - [INFO] INFO - [DEVELOPMENT] Aktiviere Development-Konfiguration +2025-06-19 12:11:56 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ MYP Development Environment Konfiguration aktiviert +2025-06-19 12:11:56 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Environment: Development/Testing +2025-06-19 12:11:56 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Debug Mode: True +2025-06-19 12:11:56 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ SQL Echo: True +2025-06-19 12:11:56 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O) +2025-06-19 12:11:56 - [app] app - [INFO] INFO - Admin-Berechtigungen beim Start korrigiert: 0 erstellt, 0 aktualisiert +2025-06-19 12:11:56 - [app] app - [INFO] INFO - [STARTUP] 🚀 Starte MYP DEVELOPMENT-Umgebung +2025-06-19 12:11:56 - [app] app - [INFO] INFO - [STARTUP] 🏢 Mercedes-Benz TBA Marienfelde +2025-06-19 12:11:56 - [app] app - [INFO] INFO - [STARTUP] 🔒 Air-Gapped: True +2025-06-19 12:11:56 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Datenbank... +2025-06-19 12:11:56 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert +2025-06-19 12:11:56 - [app] app - [INFO] INFO - [STARTUP] ✅ Datenbank initialisiert +2025-06-19 12:11:56 - [app] app - [INFO] INFO - [STARTUP] Prüfe Initial-Admin... +2025-06-19 12:11:56 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt. +2025-06-19 12:11:56 - [app] app - [INFO] INFO - [STARTUP] ✅ Admin-Benutzer geprüft +2025-06-19 12:11:56 - [app] app - [INFO] INFO - [STARTUP] Initialisiere statische Drucker... +2025-06-19 12:11:56 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 1 (192.168.0.100) +2025-06-19 12:11:56 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 2 (192.168.0.101) +2025-06-19 12:11:56 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 3 (192.168.0.102) +2025-06-19 12:11:56 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 4 (192.168.0.103) +2025-06-19 12:11:56 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 5 (192.168.0.104) +2025-06-19 12:11:56 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 6 (192.168.0.106) +2025-06-19 12:11:56 - [app] app - [INFO] INFO - ✅ Statische Drucker-Initialisierung abgeschlossen: 0 erstellt, 6 aktualisiert +2025-06-19 12:11:56 - [app] app - [INFO] INFO - 📍 Alle Drucker sind für Standort 'TBA Marienfelde' konfiguriert +2025-06-19 12:11:56 - [app] app - [INFO] INFO - 🌐 IP-Bereich: 192.168.0.100-106 (außer .105) +2025-06-19 12:11:56 - [app] app - [INFO] INFO - [STARTUP] ✅ Statische Drucker konfiguriert +2025-06-19 12:11:56 - [app] app - [INFO] INFO - [STARTUP] Starte Queue Manager... +2025-06-19 12:11:56 - [app] app - [INFO] INFO - [STARTUP] ✅ Queue Manager gestartet +2025-06-19 12:11:56 - [app] app - [INFO] INFO - [STARTUP] Starte Job Scheduler... +2025-06-19 12:11:56 - [app] app - [INFO] INFO - [STARTUP] ✅ Job Scheduler gestartet +2025-06-19 12:11:56 - [app] app - [INFO] INFO - [STARTUP] 🌐 Server startet auf http://0.0.0.0:5000 +2025-06-19 12:12:04 - [app] app - [INFO] INFO - [SHUTDOWN] 🧹 Cleanup wird ausgeführt... +2025-06-19 12:12:04 - [app] app - [INFO] INFO - [SHUTDOWN] ✅ Queue Manager gestoppt +2025-06-19 12:12:04 - [app] app - [ERROR] ERROR - [SHUTDOWN] ❌ Cleanup-Fehler: 'BackgroundTaskScheduler' object has no attribute 'shutdown' +2025-06-19 12:12:06 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: ./database/myp.db +2025-06-19 12:12:07 - [app] app - [INFO] INFO - [CONFIG] Erkannte Umgebung: development +2025-06-19 12:12:07 - [app] app - [INFO] INFO - [CONFIG] Production-Modus: False +2025-06-19 12:12:07 - [app] app - [INFO] INFO - [CONFIG] Verwende Development-Konfiguration +2025-06-19 12:12:07 - [app] app - [INFO] INFO - [DEVELOPMENT] Aktiviere Development-Konfiguration +2025-06-19 12:12:07 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ MYP Development Environment Konfiguration aktiviert +2025-06-19 12:12:07 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Environment: Development/Testing +2025-06-19 12:12:07 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Debug Mode: True +2025-06-19 12:12:07 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ SQL Echo: True +2025-06-19 12:12:07 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O) +2025-06-19 12:12:07 - [app] app - [INFO] INFO - Admin-Berechtigungen beim Start korrigiert: 0 erstellt, 0 aktualisiert +2025-06-19 12:12:07 - [app] app - [INFO] INFO - [STARTUP] 🚀 Starte MYP DEVELOPMENT-Umgebung +2025-06-19 12:12:07 - [app] app - [INFO] INFO - [STARTUP] 🏢 Mercedes-Benz TBA Marienfelde +2025-06-19 12:12:07 - [app] app - [INFO] INFO - [STARTUP] 🔒 Air-Gapped: True +2025-06-19 12:12:07 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Datenbank... +2025-06-19 12:12:07 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert +2025-06-19 12:12:07 - [app] app - [INFO] INFO - [STARTUP] ✅ Datenbank initialisiert +2025-06-19 12:12:07 - [app] app - [INFO] INFO - [STARTUP] Prüfe Initial-Admin... +2025-06-19 12:12:07 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt. +2025-06-19 12:12:07 - [app] app - [INFO] INFO - [STARTUP] ✅ Admin-Benutzer geprüft +2025-06-19 12:12:07 - [app] app - [INFO] INFO - [STARTUP] Initialisiere statische Drucker... +2025-06-19 12:12:07 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 1 (192.168.0.100) +2025-06-19 12:12:07 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 2 (192.168.0.101) +2025-06-19 12:12:07 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 3 (192.168.0.102) +2025-06-19 12:12:07 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 4 (192.168.0.103) +2025-06-19 12:12:07 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 5 (192.168.0.104) +2025-06-19 12:12:07 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 6 (192.168.0.106) +2025-06-19 12:12:07 - [app] app - [INFO] INFO - ✅ Statische Drucker-Initialisierung abgeschlossen: 0 erstellt, 6 aktualisiert +2025-06-19 12:12:07 - [app] app - [INFO] INFO - 📍 Alle Drucker sind für Standort 'TBA Marienfelde' konfiguriert +2025-06-19 12:12:07 - [app] app - [INFO] INFO - 🌐 IP-Bereich: 192.168.0.100-106 (außer .105) +2025-06-19 12:12:07 - [app] app - [INFO] INFO - [STARTUP] ✅ Statische Drucker konfiguriert +2025-06-19 12:12:07 - [app] app - [INFO] INFO - [STARTUP] Starte Queue Manager... +2025-06-19 12:12:07 - [app] app - [INFO] INFO - [STARTUP] ✅ Queue Manager gestartet +2025-06-19 12:12:07 - [app] app - [INFO] INFO - [STARTUP] Starte Job Scheduler... +2025-06-19 12:12:07 - [app] app - [INFO] INFO - [STARTUP] ✅ Job Scheduler gestartet +2025-06-19 12:12:07 - [app] app - [INFO] INFO - [STARTUP] 🌐 Server startet auf http://0.0.0.0:5000 +2025-06-19 12:12:17 - [app] app - [INFO] INFO - Locating template 'dashboard.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\dashboard.html') +2025-06-19 12:12:17 - [app] app - [INFO] INFO - Locating template 'base.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\base.html') +2025-06-19 12:12:17 - [app] app - [INFO] INFO - Locating template 'macros/ui_components.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\macros\\ui_components.html') +2025-06-19 12:12:17 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:12:18 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 12:12:18 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:12:19 - [app] app - [DEBUG] DEBUG - Request: GET /printers +2025-06-19 12:12:19 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 1, Status: disconnected, Quelle: system +2025-06-19 12:12:19 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 1 -> disconnected +2025-06-19 12:12:19 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 2, Status: disconnected, Quelle: system +2025-06-19 12:12:19 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 2 -> disconnected +2025-06-19 12:12:19 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 3, Status: disconnected, Quelle: system +2025-06-19 12:12:19 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 3 -> disconnected +2025-06-19 12:12:19 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 4, Status: disconnected, Quelle: system +2025-06-19 12:12:19 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 4 -> disconnected +2025-06-19 12:12:20 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 5, Status: disconnected, Quelle: system +2025-06-19 12:12:20 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 5 -> disconnected +2025-06-19 12:12:20 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 6, Status: disconnected, Quelle: system +2025-06-19 12:12:20 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 6 -> disconnected +2025-06-19 12:12:20 - [app] app - [DEBUG] DEBUG - ✅ Status-Updates für 6 Drucker erfolgreich gespeichert +2025-06-19 12:12:20 - [app] app - [INFO] INFO - Locating template 'printers.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\printers.html') +2025-06-19 12:12:20 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:12:20 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 12:12:20 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:12:21 - [app] app - [DEBUG] DEBUG - Request: GET /jobs +2025-06-19 12:12:21 - [app] app - [INFO] INFO - Locating template 'jobs.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\jobs.html') +2025-06-19 12:12:21 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:12:21 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 12:12:21 - [app] app - [DEBUG] DEBUG - Request: GET /api/jobs +2025-06-19 12:12:21 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:12:21 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:12:21 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-19 12:12:21 - [app] app - [INFO] INFO - ✅ API: 6 Drucker abgerufen (include_inactive=False) +2025-06-19 12:12:21 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:12:22 - [app] app - [DEBUG] DEBUG - Request: GET /calendar +2025-06-19 12:12:22 - [app] app - [INFO] INFO - Locating template 'calendar.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\calendar.html') +2025-06-19 12:12:22 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:12:23 - [app] app - [DEBUG] DEBUG - Request: GET /api/calendar/events +2025-06-19 12:12:23 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:12:23 - [app] app - [DEBUG] DEBUG - Request: GET /api/calendar/statistics +2025-06-19 12:12:23 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 12:12:23 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:12:23 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:12:23 - [app] app - [DEBUG] DEBUG - Request: GET /api/calendar/statistics +2025-06-19 12:12:23 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:12:24 - [app] app - [DEBUG] DEBUG - Request: GET /energy/ +2025-06-19 12:12:24 - [app] app - [INFO] INFO - Locating template 'energy_dashboard.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\energy_dashboard.html') +2025-06-19 12:12:24 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:12:24 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 12:12:24 - [app] app - [DEBUG] DEBUG - Request: GET /api/energy/dashboard +2025-06-19 12:12:24 - [app] app - [DEBUG] DEBUG - Request: GET /api/energy/statistics +2025-06-19 12:12:24 - [app] app - [DEBUG] DEBUG - Request: GET /api/energy/live +2025-06-19 12:12:24 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:12:24 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:12:24 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:12:24 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:12:25 - [app] app - [DEBUG] DEBUG - Request: GET /stats +2025-06-19 12:12:25 - [app] app - [INFO] INFO - Locating template 'stats.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\stats.html') +2025-06-19 12:12:25 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:12:25 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 12:12:25 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:12:26 - [app] app - [INFO] INFO - [SHUTDOWN] 🧹 Cleanup wird ausgeführt... +2025-06-19 12:12:26 - [app] app - [INFO] INFO - [SHUTDOWN] ✅ Queue Manager gestoppt +2025-06-19 12:12:26 - [app] app - [ERROR] ERROR - [SHUTDOWN] ❌ Cleanup-Fehler: 'BackgroundTaskScheduler' object has no attribute 'shutdown' +2025-06-19 12:12:27 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: ./database/myp.db +2025-06-19 12:12:28 - [app] app - [INFO] INFO - [CONFIG] Erkannte Umgebung: development +2025-06-19 12:12:28 - [app] app - [INFO] INFO - [CONFIG] Production-Modus: False +2025-06-19 12:12:28 - [app] app - [INFO] INFO - [CONFIG] Verwende Development-Konfiguration +2025-06-19 12:12:28 - [app] app - [INFO] INFO - [DEVELOPMENT] Aktiviere Development-Konfiguration +2025-06-19 12:12:28 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ MYP Development Environment Konfiguration aktiviert +2025-06-19 12:12:28 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Environment: Development/Testing +2025-06-19 12:12:28 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Debug Mode: True +2025-06-19 12:12:28 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ SQL Echo: True +2025-06-19 12:12:28 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O) +2025-06-19 12:12:28 - [app] app - [INFO] INFO - Admin-Berechtigungen beim Start korrigiert: 0 erstellt, 0 aktualisiert +2025-06-19 12:12:28 - [app] app - [INFO] INFO - [STARTUP] 🚀 Starte MYP DEVELOPMENT-Umgebung +2025-06-19 12:12:28 - [app] app - [INFO] INFO - [STARTUP] 🏢 Mercedes-Benz TBA Marienfelde +2025-06-19 12:12:28 - [app] app - [INFO] INFO - [STARTUP] 🔒 Air-Gapped: True +2025-06-19 12:12:28 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Datenbank... +2025-06-19 12:12:28 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert +2025-06-19 12:12:28 - [app] app - [INFO] INFO - [STARTUP] ✅ Datenbank initialisiert +2025-06-19 12:12:28 - [app] app - [INFO] INFO - [STARTUP] Prüfe Initial-Admin... +2025-06-19 12:12:28 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt. +2025-06-19 12:12:28 - [app] app - [INFO] INFO - [STARTUP] ✅ Admin-Benutzer geprüft +2025-06-19 12:12:28 - [app] app - [INFO] INFO - [STARTUP] Initialisiere statische Drucker... +2025-06-19 12:12:28 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 1 (192.168.0.100) +2025-06-19 12:12:28 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 2 (192.168.0.101) +2025-06-19 12:12:28 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 3 (192.168.0.102) +2025-06-19 12:12:29 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 4 (192.168.0.103) +2025-06-19 12:12:29 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 5 (192.168.0.104) +2025-06-19 12:12:29 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 6 (192.168.0.106) +2025-06-19 12:12:29 - [app] app - [INFO] INFO - ✅ Statische Drucker-Initialisierung abgeschlossen: 0 erstellt, 6 aktualisiert +2025-06-19 12:12:29 - [app] app - [INFO] INFO - 📍 Alle Drucker sind für Standort 'TBA Marienfelde' konfiguriert +2025-06-19 12:12:29 - [app] app - [INFO] INFO - 🌐 IP-Bereich: 192.168.0.100-106 (außer .105) +2025-06-19 12:12:29 - [app] app - [INFO] INFO - [STARTUP] ✅ Statische Drucker konfiguriert +2025-06-19 12:12:29 - [app] app - [INFO] INFO - [STARTUP] Starte Queue Manager... +2025-06-19 12:12:29 - [app] app - [INFO] INFO - [STARTUP] ✅ Queue Manager gestartet +2025-06-19 12:12:29 - [app] app - [INFO] INFO - [STARTUP] Starte Job Scheduler... +2025-06-19 12:12:29 - [app] app - [INFO] INFO - [STARTUP] ✅ Job Scheduler gestartet +2025-06-19 12:12:29 - [app] app - [INFO] INFO - [STARTUP] 🌐 Server startet auf http://0.0.0.0:5000 +2025-06-19 12:12:29 - [app] app - [INFO] INFO - Locating template 'guest_request.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\guest_request.html') +2025-06-19 12:12:29 - [app] app - [INFO] INFO - Locating template 'base.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\base.html') +2025-06-19 12:12:29 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:12:29 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 12:12:29 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:12:31 - [app] app - [DEBUG] DEBUG - Request: POST /request +2025-06-19 12:12:32 - [app] app - [INFO] INFO - 6-stelliger OTP generiert für Guest Request 2 +2025-06-19 12:12:32 - [app] app - [DEBUG] DEBUG - Response: 302 +2025-06-19 12:12:32 - [app] app - [DEBUG] DEBUG - Request: GET /request/2 +2025-06-19 12:12:32 - [app] app - [INFO] INFO - Locating template 'guest_status.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\guest_status.html') +2025-06-19 12:12:32 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:12:35 - [app] app - [DEBUG] DEBUG - Request: GET /request/2 +2025-06-19 12:12:35 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:12:35 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 12:12:35 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:12:38 - [app] app - [DEBUG] DEBUG - Request: GET /admin/ +2025-06-19 12:12:38 - [app] app - [INFO] INFO - Locating template 'admin_modern.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\admin_modern.html') +2025-06-19 12:12:38 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:12:38 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 12:12:38 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:12:47 - [app] app - [DEBUG] DEBUG - Request: GET /energy/ +2025-06-19 12:12:47 - [app] app - [INFO] INFO - Locating template 'energy_dashboard.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\energy_dashboard.html') +2025-06-19 12:12:47 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:12:47 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 12:12:47 - [app] app - [DEBUG] DEBUG - Request: GET /api/energy/dashboard +2025-06-19 12:12:47 - [app] app - [DEBUG] DEBUG - Request: GET /api/energy/statistics +2025-06-19 12:12:47 - [app] app - [DEBUG] DEBUG - Request: GET /api/energy/live +2025-06-19 12:12:47 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:12:47 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:12:47 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:12:47 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:12:52 - [app] app - [DEBUG] DEBUG - Request: GET /dashboard +2025-06-19 12:12:52 - [app] app - [INFO] INFO - Locating template 'dashboard.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\dashboard.html') +2025-06-19 12:12:52 - [app] app - [INFO] INFO - Locating template 'macros/ui_components.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\macros\\ui_components.html') +2025-06-19 12:12:52 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:12:52 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 12:12:52 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:13:22 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 12:13:22 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:13:48 - [app] app - [DEBUG] DEBUG - Request: GET /request +2025-06-19 12:13:48 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:13:48 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 12:13:48 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:13:49 - [app] app - [DEBUG] DEBUG - Request: GET /admin/ +2025-06-19 12:13:49 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:13:49 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 12:13:49 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:13:58 - [app] app - [DEBUG] DEBUG - Request: GET /admin/ +2025-06-19 12:13:58 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:13:58 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 12:13:58 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:14:02 - [app] app - [DEBUG] DEBUG - Request: GET /admin/ +2025-06-19 12:14:02 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:14:02 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 12:14:02 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:14:02 - [app] app - [DEBUG] DEBUG - Request: GET /admin/ +2025-06-19 12:14:02 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:14:02 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 12:14:02 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:14:03 - [app] app - [DEBUG] DEBUG - Request: GET /admin/ +2025-06-19 12:14:03 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:14:03 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 12:14:03 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:14:29 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: ./database/myp.db +2025-06-19 12:14:31 - [app] app - [INFO] INFO - [CONFIG] Erkannte Umgebung: development +2025-06-19 12:14:31 - [app] app - [INFO] INFO - [CONFIG] Production-Modus: False +2025-06-19 12:14:31 - [app] app - [INFO] INFO - [CONFIG] Verwende Development-Konfiguration +2025-06-19 12:14:31 - [app] app - [INFO] INFO - [DEVELOPMENT] Aktiviere Development-Konfiguration +2025-06-19 12:14:31 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ MYP Development Environment Konfiguration aktiviert +2025-06-19 12:14:31 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Environment: Development/Testing +2025-06-19 12:14:31 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Debug Mode: True +2025-06-19 12:14:31 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ SQL Echo: True +2025-06-19 12:14:31 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O) +2025-06-19 12:14:31 - [app] app - [INFO] INFO - Admin-Berechtigungen beim Start korrigiert: 0 erstellt, 0 aktualisiert +2025-06-19 12:14:31 - [app] app - [INFO] INFO - [STARTUP] 🚀 Starte MYP DEVELOPMENT-Umgebung +2025-06-19 12:14:31 - [app] app - [INFO] INFO - [STARTUP] 🏢 Mercedes-Benz TBA Marienfelde +2025-06-19 12:14:31 - [app] app - [INFO] INFO - [STARTUP] 🔒 Air-Gapped: True +2025-06-19 12:14:31 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Datenbank... +2025-06-19 12:14:31 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert +2025-06-19 12:14:31 - [app] app - [INFO] INFO - [STARTUP] ✅ Datenbank initialisiert +2025-06-19 12:14:31 - [app] app - [INFO] INFO - [STARTUP] Prüfe Initial-Admin... +2025-06-19 12:14:31 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt. +2025-06-19 12:14:31 - [app] app - [INFO] INFO - [STARTUP] ✅ Admin-Benutzer geprüft +2025-06-19 12:14:31 - [app] app - [INFO] INFO - [STARTUP] Initialisiere statische Drucker... +2025-06-19 12:14:31 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 1 (192.168.0.100) +2025-06-19 12:14:31 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 2 (192.168.0.101) +2025-06-19 12:14:31 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 3 (192.168.0.102) +2025-06-19 12:14:31 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 4 (192.168.0.103) +2025-06-19 12:14:31 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 5 (192.168.0.104) +2025-06-19 12:14:31 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 6 (192.168.0.106) +2025-06-19 12:14:31 - [app] app - [INFO] INFO - ✅ Statische Drucker-Initialisierung abgeschlossen: 0 erstellt, 6 aktualisiert +2025-06-19 12:14:31 - [app] app - [INFO] INFO - 📍 Alle Drucker sind für Standort 'TBA Marienfelde' konfiguriert +2025-06-19 12:14:31 - [app] app - [INFO] INFO - 🌐 IP-Bereich: 192.168.0.100-106 (außer .105) +2025-06-19 12:14:31 - [app] app - [INFO] INFO - [STARTUP] ✅ Statische Drucker konfiguriert +2025-06-19 12:14:31 - [app] app - [INFO] INFO - [STARTUP] Starte Queue Manager... +2025-06-19 12:14:31 - [app] app - [INFO] INFO - [STARTUP] ✅ Queue Manager gestartet +2025-06-19 12:14:31 - [app] app - [INFO] INFO - [STARTUP] Starte Job Scheduler... +2025-06-19 12:14:31 - [app] app - [INFO] INFO - [STARTUP] ✅ Job Scheduler gestartet +2025-06-19 12:14:31 - [app] app - [INFO] INFO - [STARTUP] 🌐 Server startet auf http://0.0.0.0:5000 +2025-06-19 12:14:32 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: ./database/myp.db +2025-06-19 12:14:33 - [app] app - [INFO] INFO - [CONFIG] Erkannte Umgebung: development +2025-06-19 12:14:33 - [app] app - [INFO] INFO - [CONFIG] Production-Modus: False +2025-06-19 12:14:33 - [app] app - [INFO] INFO - [CONFIG] Verwende Development-Konfiguration +2025-06-19 12:14:33 - [app] app - [INFO] INFO - [DEVELOPMENT] Aktiviere Development-Konfiguration +2025-06-19 12:14:33 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ MYP Development Environment Konfiguration aktiviert +2025-06-19 12:14:33 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Environment: Development/Testing +2025-06-19 12:14:33 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Debug Mode: True +2025-06-19 12:14:33 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ SQL Echo: True +2025-06-19 12:14:33 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O) +2025-06-19 12:14:33 - [app] app - [INFO] INFO - Admin-Berechtigungen beim Start korrigiert: 0 erstellt, 0 aktualisiert +2025-06-19 12:14:33 - [app] app - [INFO] INFO - [STARTUP] 🚀 Starte MYP DEVELOPMENT-Umgebung +2025-06-19 12:14:33 - [app] app - [INFO] INFO - [STARTUP] 🏢 Mercedes-Benz TBA Marienfelde +2025-06-19 12:14:33 - [app] app - [INFO] INFO - [STARTUP] 🔒 Air-Gapped: True +2025-06-19 12:14:33 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Datenbank... +2025-06-19 12:14:33 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert +2025-06-19 12:14:33 - [app] app - [INFO] INFO - [STARTUP] ✅ Datenbank initialisiert +2025-06-19 12:14:33 - [app] app - [INFO] INFO - [STARTUP] Prüfe Initial-Admin... +2025-06-19 12:14:34 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt. +2025-06-19 12:14:34 - [app] app - [INFO] INFO - [STARTUP] ✅ Admin-Benutzer geprüft +2025-06-19 12:14:34 - [app] app - [INFO] INFO - [STARTUP] Initialisiere statische Drucker... +2025-06-19 12:14:34 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 1 (192.168.0.100) +2025-06-19 12:14:34 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 2 (192.168.0.101) +2025-06-19 12:14:34 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 3 (192.168.0.102) +2025-06-19 12:14:34 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 4 (192.168.0.103) +2025-06-19 12:14:34 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 5 (192.168.0.104) +2025-06-19 12:14:34 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 6 (192.168.0.106) +2025-06-19 12:14:34 - [app] app - [INFO] INFO - ✅ Statische Drucker-Initialisierung abgeschlossen: 0 erstellt, 6 aktualisiert +2025-06-19 12:14:34 - [app] app - [INFO] INFO - 📍 Alle Drucker sind für Standort 'TBA Marienfelde' konfiguriert +2025-06-19 12:14:34 - [app] app - [INFO] INFO - 🌐 IP-Bereich: 192.168.0.100-106 (außer .105) +2025-06-19 12:14:34 - [app] app - [INFO] INFO - [STARTUP] ✅ Statische Drucker konfiguriert +2025-06-19 12:14:34 - [app] app - [INFO] INFO - [STARTUP] Starte Queue Manager... +2025-06-19 12:14:34 - [app] app - [INFO] INFO - [STARTUP] ✅ Queue Manager gestartet +2025-06-19 12:14:34 - [app] app - [INFO] INFO - [STARTUP] Starte Job Scheduler... +2025-06-19 12:14:34 - [app] app - [INFO] INFO - [STARTUP] ✅ Job Scheduler gestartet +2025-06-19 12:14:34 - [app] app - [INFO] INFO - [STARTUP] 🌐 Server startet auf http://0.0.0.0:5000 +2025-06-19 12:14:34 - [app] app - [INFO] INFO - Locating template 'admin_modern.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\admin_modern.html') +2025-06-19 12:14:34 - [app] app - [DEBUG] DEBUG - Response: 302 +2025-06-19 12:14:34 - [app] app - [INFO] INFO - Locating template 'base.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\base.html') +2025-06-19 12:14:34 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:14:34 - [app] app - [DEBUG] DEBUG - Request: GET /dashboard +2025-06-19 12:14:34 - [app] app - [INFO] INFO - Locating template 'dashboard.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\dashboard.html') +2025-06-19 12:14:34 - [app] app - [INFO] INFO - Locating template 'macros/ui_components.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\macros\\ui_components.html') +2025-06-19 12:14:34 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:14:34 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 12:14:34 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:14:37 - [app] app - [DEBUG] DEBUG - Request: GET /impressum +2025-06-19 12:14:37 - [app] app - [INFO] INFO - Locating template 'imprint.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\imprint.html') +2025-06-19 12:14:37 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:14:37 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 12:14:37 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:14:57 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: ./database/myp.db +2025-06-19 12:14:58 - [app] app - [INFO] INFO - [CONFIG] Erkannte Umgebung: development +2025-06-19 12:14:58 - [app] app - [INFO] INFO - [CONFIG] Production-Modus: False +2025-06-19 12:14:58 - [app] app - [INFO] INFO - [CONFIG] Verwende Development-Konfiguration +2025-06-19 12:14:58 - [app] app - [INFO] INFO - [DEVELOPMENT] Aktiviere Development-Konfiguration +2025-06-19 12:14:58 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ MYP Development Environment Konfiguration aktiviert +2025-06-19 12:14:58 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Environment: Development/Testing +2025-06-19 12:14:58 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Debug Mode: True +2025-06-19 12:14:58 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ SQL Echo: True +2025-06-19 12:14:58 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O) +2025-06-19 12:14:58 - [app] app - [INFO] INFO - Admin-Berechtigungen beim Start korrigiert: 0 erstellt, 0 aktualisiert +2025-06-19 12:14:58 - [app] app - [INFO] INFO - [STARTUP] 🚀 Starte MYP DEVELOPMENT-Umgebung +2025-06-19 12:14:58 - [app] app - [INFO] INFO - [STARTUP] 🏢 Mercedes-Benz TBA Marienfelde +2025-06-19 12:14:58 - [app] app - [INFO] INFO - [STARTUP] 🔒 Air-Gapped: True +2025-06-19 12:14:58 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Datenbank... +2025-06-19 12:14:58 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert +2025-06-19 12:14:58 - [app] app - [INFO] INFO - [STARTUP] ✅ Datenbank initialisiert +2025-06-19 12:14:58 - [app] app - [INFO] INFO - [STARTUP] Prüfe Initial-Admin... +2025-06-19 12:14:58 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt. +2025-06-19 12:14:58 - [app] app - [INFO] INFO - [STARTUP] ✅ Admin-Benutzer geprüft +2025-06-19 12:14:58 - [app] app - [INFO] INFO - [STARTUP] Initialisiere statische Drucker... +2025-06-19 12:14:58 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 1 (192.168.0.100) +2025-06-19 12:14:58 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 2 (192.168.0.101) +2025-06-19 12:14:58 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 3 (192.168.0.102) +2025-06-19 12:14:58 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 4 (192.168.0.103) +2025-06-19 12:14:58 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 5 (192.168.0.104) +2025-06-19 12:14:58 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 6 (192.168.0.106) +2025-06-19 12:14:58 - [app] app - [INFO] INFO - ✅ Statische Drucker-Initialisierung abgeschlossen: 0 erstellt, 6 aktualisiert +2025-06-19 12:14:58 - [app] app - [INFO] INFO - 📍 Alle Drucker sind für Standort 'TBA Marienfelde' konfiguriert +2025-06-19 12:14:58 - [app] app - [INFO] INFO - 🌐 IP-Bereich: 192.168.0.100-106 (außer .105) +2025-06-19 12:14:58 - [app] app - [INFO] INFO - [STARTUP] ✅ Statische Drucker konfiguriert +2025-06-19 12:14:58 - [app] app - [INFO] INFO - [STARTUP] Starte Queue Manager... +2025-06-19 12:14:58 - [app] app - [INFO] INFO - [STARTUP] ✅ Queue Manager gestartet +2025-06-19 12:14:58 - [app] app - [INFO] INFO - [STARTUP] Starte Job Scheduler... +2025-06-19 12:14:58 - [app] app - [INFO] INFO - [STARTUP] ✅ Job Scheduler gestartet +2025-06-19 12:14:58 - [app] app - [INFO] INFO - [STARTUP] 🌐 Server startet auf http://0.0.0.0:5000 +2025-06-19 12:14:59 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: ./database/myp.db +2025-06-19 12:15:00 - [app] app - [INFO] INFO - [CONFIG] Erkannte Umgebung: development +2025-06-19 12:15:00 - [app] app - [INFO] INFO - [CONFIG] Production-Modus: False +2025-06-19 12:15:00 - [app] app - [INFO] INFO - [CONFIG] Verwende Development-Konfiguration +2025-06-19 12:15:00 - [app] app - [INFO] INFO - [DEVELOPMENT] Aktiviere Development-Konfiguration +2025-06-19 12:15:00 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ MYP Development Environment Konfiguration aktiviert +2025-06-19 12:15:00 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Environment: Development/Testing +2025-06-19 12:15:00 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Debug Mode: True +2025-06-19 12:15:00 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ SQL Echo: True +2025-06-19 12:15:00 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O) +2025-06-19 12:15:00 - [app] app - [INFO] INFO - Admin-Berechtigungen beim Start korrigiert: 0 erstellt, 0 aktualisiert +2025-06-19 12:15:00 - [app] app - [INFO] INFO - [STARTUP] 🚀 Starte MYP DEVELOPMENT-Umgebung +2025-06-19 12:15:00 - [app] app - [INFO] INFO - [STARTUP] 🏢 Mercedes-Benz TBA Marienfelde +2025-06-19 12:15:00 - [app] app - [INFO] INFO - [STARTUP] 🔒 Air-Gapped: True +2025-06-19 12:15:00 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Datenbank... +2025-06-19 12:15:00 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert +2025-06-19 12:15:00 - [app] app - [INFO] INFO - [STARTUP] ✅ Datenbank initialisiert +2025-06-19 12:15:00 - [app] app - [INFO] INFO - [STARTUP] Prüfe Initial-Admin... +2025-06-19 12:15:00 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt. +2025-06-19 12:15:00 - [app] app - [INFO] INFO - [STARTUP] ✅ Admin-Benutzer geprüft +2025-06-19 12:15:00 - [app] app - [INFO] INFO - [STARTUP] Initialisiere statische Drucker... +2025-06-19 12:15:00 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 1 (192.168.0.100) +2025-06-19 12:15:00 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 2 (192.168.0.101) +2025-06-19 12:15:00 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 3 (192.168.0.102) +2025-06-19 12:15:00 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 4 (192.168.0.103) +2025-06-19 12:15:00 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 5 (192.168.0.104) +2025-06-19 12:15:00 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 6 (192.168.0.106) +2025-06-19 12:15:00 - [app] app - [INFO] INFO - ✅ Statische Drucker-Initialisierung abgeschlossen: 0 erstellt, 6 aktualisiert +2025-06-19 12:15:00 - [app] app - [INFO] INFO - 📍 Alle Drucker sind für Standort 'TBA Marienfelde' konfiguriert +2025-06-19 12:15:00 - [app] app - [INFO] INFO - 🌐 IP-Bereich: 192.168.0.100-106 (außer .105) +2025-06-19 12:15:00 - [app] app - [INFO] INFO - [STARTUP] ✅ Statische Drucker konfiguriert +2025-06-19 12:15:00 - [app] app - [INFO] INFO - [STARTUP] Starte Queue Manager... +2025-06-19 12:15:00 - [app] app - [INFO] INFO - [STARTUP] ✅ Queue Manager gestartet +2025-06-19 12:15:00 - [app] app - [INFO] INFO - [STARTUP] Starte Job Scheduler... +2025-06-19 12:15:00 - [app] app - [INFO] INFO - [STARTUP] ✅ Job Scheduler gestartet +2025-06-19 12:15:00 - [app] app - [INFO] INFO - [STARTUP] 🌐 Server startet auf http://0.0.0.0:5000 +2025-06-19 12:15:01 - [app] app - [INFO] INFO - Locating template 'imprint.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\imprint.html') +2025-06-19 12:15:01 - [app] app - [INFO] INFO - Locating template 'base.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\base.html') +2025-06-19 12:15:01 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:15:01 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 12:15:01 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:15:02 - [app] app - [DEBUG] DEBUG - Request: GET /impressum +2025-06-19 12:15:02 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:15:02 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 12:15:02 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:15:02 - [app] app - [DEBUG] DEBUG - Request: GET /impressum +2025-06-19 12:15:02 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:15:03 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 12:15:03 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:16:25 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: ./database/myp.db +2025-06-19 12:16:27 - [app] app - [INFO] INFO - [CONFIG] Erkannte Umgebung: development +2025-06-19 12:16:27 - [app] app - [INFO] INFO - [CONFIG] Production-Modus: False +2025-06-19 12:16:27 - [app] app - [INFO] INFO - [CONFIG] Verwende Development-Konfiguration +2025-06-19 12:16:27 - [app] app - [INFO] INFO - [DEVELOPMENT] Aktiviere Development-Konfiguration +2025-06-19 12:16:27 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ MYP Development Environment Konfiguration aktiviert +2025-06-19 12:16:27 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Environment: Development/Testing +2025-06-19 12:16:27 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Debug Mode: True +2025-06-19 12:16:27 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ SQL Echo: True +2025-06-19 12:16:27 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O) +2025-06-19 12:16:27 - [app] app - [INFO] INFO - Admin-Berechtigungen beim Start korrigiert: 0 erstellt, 0 aktualisiert +2025-06-19 12:16:27 - [app] app - [INFO] INFO - [STARTUP] 🚀 Starte MYP DEVELOPMENT-Umgebung +2025-06-19 12:16:27 - [app] app - [INFO] INFO - [STARTUP] 🏢 Mercedes-Benz TBA Marienfelde +2025-06-19 12:16:27 - [app] app - [INFO] INFO - [STARTUP] 🔒 Air-Gapped: True +2025-06-19 12:16:27 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Datenbank... +2025-06-19 12:16:27 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert +2025-06-19 12:16:27 - [app] app - [INFO] INFO - [STARTUP] ✅ Datenbank initialisiert +2025-06-19 12:16:27 - [app] app - [INFO] INFO - [STARTUP] Prüfe Initial-Admin... +2025-06-19 12:16:27 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt. +2025-06-19 12:16:27 - [app] app - [INFO] INFO - [STARTUP] ✅ Admin-Benutzer geprüft +2025-06-19 12:16:27 - [app] app - [INFO] INFO - [STARTUP] Initialisiere statische Drucker... +2025-06-19 12:16:27 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 1 (192.168.0.100) +2025-06-19 12:16:27 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 2 (192.168.0.101) +2025-06-19 12:16:27 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 3 (192.168.0.102) +2025-06-19 12:16:27 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 4 (192.168.0.103) +2025-06-19 12:16:27 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 5 (192.168.0.104) +2025-06-19 12:16:27 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 6 (192.168.0.106) +2025-06-19 12:16:27 - [app] app - [INFO] INFO - ✅ Statische Drucker-Initialisierung abgeschlossen: 0 erstellt, 6 aktualisiert +2025-06-19 12:16:27 - [app] app - [INFO] INFO - 📍 Alle Drucker sind für Standort 'TBA Marienfelde' konfiguriert +2025-06-19 12:16:27 - [app] app - [INFO] INFO - 🌐 IP-Bereich: 192.168.0.100-106 (außer .105) +2025-06-19 12:16:27 - [app] app - [INFO] INFO - [STARTUP] ✅ Statische Drucker konfiguriert +2025-06-19 12:16:27 - [app] app - [INFO] INFO - [STARTUP] Starte Queue Manager... +2025-06-19 12:16:27 - [app] app - [INFO] INFO - [STARTUP] ✅ Queue Manager gestartet +2025-06-19 12:16:27 - [app] app - [INFO] INFO - [STARTUP] Starte Job Scheduler... +2025-06-19 12:16:27 - [app] app - [INFO] INFO - [STARTUP] ✅ Job Scheduler gestartet +2025-06-19 12:16:27 - [app] app - [INFO] INFO - [STARTUP] 🌐 Server startet auf http://0.0.0.0:5000 +2025-06-19 12:16:28 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: ./database/myp.db +2025-06-19 12:16:29 - [app] app - [INFO] INFO - [CONFIG] Erkannte Umgebung: development +2025-06-19 12:16:29 - [app] app - [INFO] INFO - [CONFIG] Production-Modus: False +2025-06-19 12:16:29 - [app] app - [INFO] INFO - [CONFIG] Verwende Development-Konfiguration +2025-06-19 12:16:29 - [app] app - [INFO] INFO - [DEVELOPMENT] Aktiviere Development-Konfiguration +2025-06-19 12:16:29 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ MYP Development Environment Konfiguration aktiviert +2025-06-19 12:16:29 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Environment: Development/Testing +2025-06-19 12:16:29 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Debug Mode: True +2025-06-19 12:16:29 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ SQL Echo: True +2025-06-19 12:16:29 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O) +2025-06-19 12:16:29 - [app] app - [INFO] INFO - Admin-Berechtigungen beim Start korrigiert: 0 erstellt, 0 aktualisiert +2025-06-19 12:16:29 - [app] app - [INFO] INFO - [STARTUP] 🚀 Starte MYP DEVELOPMENT-Umgebung +2025-06-19 12:16:29 - [app] app - [INFO] INFO - [STARTUP] 🏢 Mercedes-Benz TBA Marienfelde +2025-06-19 12:16:29 - [app] app - [INFO] INFO - [STARTUP] 🔒 Air-Gapped: True +2025-06-19 12:16:29 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Datenbank... +2025-06-19 12:16:29 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert +2025-06-19 12:16:29 - [app] app - [INFO] INFO - [STARTUP] ✅ Datenbank initialisiert +2025-06-19 12:16:29 - [app] app - [INFO] INFO - [STARTUP] Prüfe Initial-Admin... +2025-06-19 12:16:29 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt. +2025-06-19 12:16:29 - [app] app - [INFO] INFO - [STARTUP] ✅ Admin-Benutzer geprüft +2025-06-19 12:16:29 - [app] app - [INFO] INFO - [STARTUP] Initialisiere statische Drucker... +2025-06-19 12:16:29 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 1 (192.168.0.100) +2025-06-19 12:16:29 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 2 (192.168.0.101) +2025-06-19 12:16:29 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 3 (192.168.0.102) +2025-06-19 12:16:29 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 4 (192.168.0.103) +2025-06-19 12:16:29 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 5 (192.168.0.104) +2025-06-19 12:16:29 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 6 (192.168.0.106) +2025-06-19 12:16:29 - [app] app - [INFO] INFO - ✅ Statische Drucker-Initialisierung abgeschlossen: 0 erstellt, 6 aktualisiert +2025-06-19 12:16:29 - [app] app - [INFO] INFO - 📍 Alle Drucker sind für Standort 'TBA Marienfelde' konfiguriert +2025-06-19 12:16:29 - [app] app - [INFO] INFO - 🌐 IP-Bereich: 192.168.0.100-106 (außer .105) +2025-06-19 12:16:29 - [app] app - [INFO] INFO - [STARTUP] ✅ Statische Drucker konfiguriert +2025-06-19 12:16:29 - [app] app - [INFO] INFO - [STARTUP] Starte Queue Manager... +2025-06-19 12:16:29 - [app] app - [INFO] INFO - [STARTUP] ✅ Queue Manager gestartet +2025-06-19 12:16:29 - [app] app - [INFO] INFO - [STARTUP] Starte Job Scheduler... +2025-06-19 12:16:29 - [app] app - [INFO] INFO - [STARTUP] ✅ Job Scheduler gestartet +2025-06-19 12:16:29 - [app] app - [INFO] INFO - [STARTUP] 🌐 Server startet auf http://0.0.0.0:5000 +2025-06-19 12:16:29 - [app] app - [ERROR] ERROR - ❌ Fehler beim Auto-Protokollieren: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (sqlite3.InterfaceError) bad parameter or other API misuse +[SQL: INSERT INTO plug_status_logs (printer_id, status, timestamp, ip_address, power_consumption, voltage, current, source, user_id, notes, response_time_ms, error_message, firmware_version) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)] +[parameters: (1, 'disconnected', '2025-06-19 12:16:29.932164', '192.168.0.100', None, None, None, 'system', None, 'status-check fehlgeschlagen', 0, "type object 'P100' has no attribute 'P100'", None)] +(Background on this error at: https://sqlalche.me/e/20/rvf5) (Background on this error at: https://sqlalche.me/e/20/7s2a) +2025-06-19 12:16:29 - [app] app - [ERROR] ERROR - Fehler beim Laden der Drucker-Seite: This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (sqlite3.InterfaceError) bad parameter or other API misuse +[SQL: INSERT INTO plug_status_logs (printer_id, status, timestamp, ip_address, power_consumption, voltage, current, source, user_id, notes, response_time_ms, error_message, firmware_version) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)] +[parameters: (1, 'disconnected', '2025-06-19 12:16:29.932164', '192.168.0.100', None, None, None, 'system', None, 'status-check fehlgeschlagen', 0, "type object 'P100' has no attribute 'P100'", None)] +(Background on this error at: https://sqlalche.me/e/20/rvf5) (Background on this error at: https://sqlalche.me/e/20/7s2a) +2025-06-19 12:16:29 - [app] app - [INFO] INFO - Locating template 'printers.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\printers.html') +2025-06-19 12:16:29 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 1, Status: disconnected, Quelle: system +2025-06-19 12:16:29 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 1 -> disconnected +2025-06-19 12:16:29 - [app] app - [INFO] INFO - Locating template 'base.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\base.html') +2025-06-19 12:16:29 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 2, Status: disconnected, Quelle: system +2025-06-19 12:16:29 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:16:29 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 2 -> disconnected +2025-06-19 12:16:29 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 3, Status: disconnected, Quelle: system +2025-06-19 12:16:29 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 3 -> disconnected +2025-06-19 12:16:29 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 4, Status: disconnected, Quelle: system +2025-06-19 12:16:29 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 4 -> disconnected +2025-06-19 12:16:30 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 5, Status: disconnected, Quelle: system +2025-06-19 12:16:30 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 5 -> disconnected +2025-06-19 12:16:30 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 6, Status: disconnected, Quelle: system +2025-06-19 12:16:30 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 6 -> disconnected +2025-06-19 12:16:30 - [app] app - [DEBUG] DEBUG - ✅ Status-Updates für 6 Drucker erfolgreich gespeichert +2025-06-19 12:16:30 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:16:30 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 12:16:30 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:17:00 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 12:17:00 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:19:20 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: ./database/myp.db +2025-06-19 12:19:21 - [app] app - [INFO] INFO - [CONFIG] Erkannte Umgebung: development +2025-06-19 12:19:21 - [app] app - [INFO] INFO - [CONFIG] Production-Modus: False +2025-06-19 12:19:21 - [app] app - [INFO] INFO - [CONFIG] Verwende Development-Konfiguration +2025-06-19 12:19:21 - [app] app - [INFO] INFO - [DEVELOPMENT] Aktiviere Development-Konfiguration +2025-06-19 12:19:21 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ MYP Development Environment Konfiguration aktiviert +2025-06-19 12:19:21 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Environment: Development/Testing +2025-06-19 12:19:21 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Debug Mode: True +2025-06-19 12:19:21 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ SQL Echo: True +2025-06-19 12:19:21 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O) +2025-06-19 12:19:21 - [app] app - [INFO] INFO - Admin-Berechtigungen beim Start korrigiert: 0 erstellt, 0 aktualisiert +2025-06-19 12:19:21 - [app] app - [INFO] INFO - [STARTUP] 🚀 Starte MYP DEVELOPMENT-Umgebung +2025-06-19 12:19:21 - [app] app - [INFO] INFO - [STARTUP] 🏢 Mercedes-Benz TBA Marienfelde +2025-06-19 12:19:21 - [app] app - [INFO] INFO - [STARTUP] 🔒 Air-Gapped: True +2025-06-19 12:19:21 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Datenbank... +2025-06-19 12:19:21 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert +2025-06-19 12:19:21 - [app] app - [INFO] INFO - [STARTUP] ✅ Datenbank initialisiert +2025-06-19 12:19:21 - [app] app - [INFO] INFO - [STARTUP] Prüfe Initial-Admin... +2025-06-19 12:19:21 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt. +2025-06-19 12:19:21 - [app] app - [INFO] INFO - [STARTUP] ✅ Admin-Benutzer geprüft +2025-06-19 12:19:21 - [app] app - [INFO] INFO - [STARTUP] Initialisiere statische Drucker... +2025-06-19 12:19:21 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 1 (192.168.0.100) +2025-06-19 12:19:21 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 2 (192.168.0.101) +2025-06-19 12:19:21 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 3 (192.168.0.102) +2025-06-19 12:19:21 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 4 (192.168.0.103) +2025-06-19 12:19:21 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 5 (192.168.0.104) +2025-06-19 12:19:21 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 6 (192.168.0.106) +2025-06-19 12:19:21 - [app] app - [INFO] INFO - ✅ Statische Drucker-Initialisierung abgeschlossen: 0 erstellt, 6 aktualisiert +2025-06-19 12:19:21 - [app] app - [INFO] INFO - 📍 Alle Drucker sind für Standort 'TBA Marienfelde' konfiguriert +2025-06-19 12:19:21 - [app] app - [INFO] INFO - 🌐 IP-Bereich: 192.168.0.100-106 (außer .105) +2025-06-19 12:19:21 - [app] app - [INFO] INFO - [STARTUP] ✅ Statische Drucker konfiguriert +2025-06-19 12:19:21 - [app] app - [INFO] INFO - [STARTUP] Starte Queue Manager... +2025-06-19 12:19:21 - [app] app - [INFO] INFO - [STARTUP] ✅ Queue Manager gestartet +2025-06-19 12:19:21 - [app] app - [INFO] INFO - [STARTUP] Starte Job Scheduler... +2025-06-19 12:19:21 - [app] app - [INFO] INFO - [STARTUP] ✅ Job Scheduler gestartet +2025-06-19 12:19:21 - [app] app - [INFO] INFO - [STARTUP] 🌐 Server startet auf http://0.0.0.0:5000 +2025-06-19 12:19:22 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: ./database/myp.db +2025-06-19 12:19:23 - [app] app - [INFO] INFO - [CONFIG] Erkannte Umgebung: development +2025-06-19 12:19:23 - [app] app - [INFO] INFO - [CONFIG] Production-Modus: False +2025-06-19 12:19:23 - [app] app - [INFO] INFO - [CONFIG] Verwende Development-Konfiguration +2025-06-19 12:19:23 - [app] app - [INFO] INFO - [DEVELOPMENT] Aktiviere Development-Konfiguration +2025-06-19 12:19:23 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ MYP Development Environment Konfiguration aktiviert +2025-06-19 12:19:23 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Environment: Development/Testing +2025-06-19 12:19:23 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Debug Mode: True +2025-06-19 12:19:23 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ SQL Echo: True +2025-06-19 12:19:23 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O) +2025-06-19 12:19:23 - [app] app - [INFO] INFO - Admin-Berechtigungen beim Start korrigiert: 0 erstellt, 0 aktualisiert +2025-06-19 12:19:23 - [app] app - [INFO] INFO - [STARTUP] 🚀 Starte MYP DEVELOPMENT-Umgebung +2025-06-19 12:19:23 - [app] app - [INFO] INFO - [STARTUP] 🏢 Mercedes-Benz TBA Marienfelde +2025-06-19 12:19:23 - [app] app - [INFO] INFO - [STARTUP] 🔒 Air-Gapped: True +2025-06-19 12:19:23 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Datenbank... +2025-06-19 12:19:23 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert +2025-06-19 12:19:23 - [app] app - [INFO] INFO - [STARTUP] ✅ Datenbank initialisiert +2025-06-19 12:19:23 - [app] app - [INFO] INFO - [STARTUP] Prüfe Initial-Admin... +2025-06-19 12:19:23 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt. +2025-06-19 12:19:23 - [app] app - [INFO] INFO - [STARTUP] ✅ Admin-Benutzer geprüft +2025-06-19 12:19:23 - [app] app - [INFO] INFO - [STARTUP] Initialisiere statische Drucker... +2025-06-19 12:19:23 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 1 (192.168.0.100) +2025-06-19 12:19:23 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 2 (192.168.0.101) +2025-06-19 12:19:23 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 3 (192.168.0.102) +2025-06-19 12:19:23 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 4 (192.168.0.103) +2025-06-19 12:19:23 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 5 (192.168.0.104) +2025-06-19 12:19:23 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 6 (192.168.0.106) +2025-06-19 12:19:23 - [app] app - [INFO] INFO - ✅ Statische Drucker-Initialisierung abgeschlossen: 0 erstellt, 6 aktualisiert +2025-06-19 12:19:23 - [app] app - [INFO] INFO - 📍 Alle Drucker sind für Standort 'TBA Marienfelde' konfiguriert +2025-06-19 12:19:23 - [app] app - [INFO] INFO - 🌐 IP-Bereich: 192.168.0.100-106 (außer .105) +2025-06-19 12:19:23 - [app] app - [INFO] INFO - [STARTUP] ✅ Statische Drucker konfiguriert +2025-06-19 12:19:23 - [app] app - [INFO] INFO - [STARTUP] Starte Queue Manager... +2025-06-19 12:19:23 - [app] app - [INFO] INFO - [STARTUP] ✅ Queue Manager gestartet +2025-06-19 12:19:23 - [app] app - [INFO] INFO - [STARTUP] Starte Job Scheduler... +2025-06-19 12:19:23 - [app] app - [INFO] INFO - [STARTUP] ✅ Job Scheduler gestartet +2025-06-19 12:19:23 - [app] app - [INFO] INFO - [STARTUP] 🌐 Server startet auf http://0.0.0.0:5000 +2025-06-19 12:19:24 - [app] app - [INFO] INFO - Locating template 'imprint.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\imprint.html') +2025-06-19 12:19:24 - [app] app - [INFO] INFO - Locating template 'base.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\base.html') +2025-06-19 12:19:24 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:19:24 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 12:19:24 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:19:34 - [app] app - [DEBUG] DEBUG - Request: GET / +2025-06-19 12:19:34 - [app] app - [DEBUG] DEBUG - Response: 302 +2025-06-19 12:19:34 - [app] app - [DEBUG] DEBUG - Request: GET /dashboard +2025-06-19 12:19:34 - [app] app - [INFO] INFO - Locating template 'dashboard.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\dashboard.html') +2025-06-19 12:19:34 - [app] app - [INFO] INFO - Locating template 'macros/ui_components.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\macros\\ui_components.html') +2025-06-19 12:19:34 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:19:34 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 12:19:34 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:19:37 - [app] app - [DEBUG] DEBUG - Request: GET /datenschutz +2025-06-19 12:19:37 - [app] app - [INFO] INFO - Locating template 'privacy.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\privacy.html') +2025-06-19 12:19:37 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:19:37 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 12:19:37 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:19:38 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: ./database/myp.db +2025-06-19 12:19:38 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O) +2025-06-19 12:19:38 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert +2025-06-19 12:19:40 - [app] app - [DEBUG] DEBUG - Request: GET /printers +2025-06-19 12:19:42 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 1, Status: disconnected, Quelle: system +2025-06-19 12:19:42 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 1 -> disconnected +2025-06-19 12:19:44 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 2, Status: disconnected, Quelle: system +2025-06-19 12:19:44 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 2 -> disconnected +2025-06-19 12:19:46 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 3, Status: disconnected, Quelle: system +2025-06-19 12:19:46 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 3 -> disconnected +2025-06-19 12:19:48 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 4, Status: disconnected, Quelle: system +2025-06-19 12:19:48 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 4 -> disconnected +2025-06-19 12:19:50 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 5, Status: disconnected, Quelle: system +2025-06-19 12:19:50 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 5 -> disconnected +2025-06-19 12:20:25 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: ./database/myp.db +2025-06-19 12:55:57 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: ./database/myp.db +2025-06-19 12:56:00 - [app] app - [INFO] INFO - [CONFIG] Erkannte Umgebung: development +2025-06-19 12:56:00 - [app] app - [INFO] INFO - [CONFIG] Production-Modus: False +2025-06-19 12:56:00 - [app] app - [INFO] INFO - [CONFIG] Verwende Development-Konfiguration +2025-06-19 12:56:00 - [app] app - [INFO] INFO - [DEVELOPMENT] Aktiviere Development-Konfiguration +2025-06-19 12:56:00 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ MYP Development Environment Konfiguration aktiviert +2025-06-19 12:56:00 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Environment: Development/Testing +2025-06-19 12:56:00 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Debug Mode: True +2025-06-19 12:56:00 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ SQL Echo: True +2025-06-19 12:56:00 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O) +2025-06-19 12:56:00 - [app] app - [INFO] INFO - Admin-Berechtigungen beim Start korrigiert: 0 erstellt, 0 aktualisiert +2025-06-19 12:56:00 - [app] app - [INFO] INFO - [STARTUP] 🚀 Starte MYP DEVELOPMENT-Umgebung +2025-06-19 12:56:00 - [app] app - [INFO] INFO - [STARTUP] 🏢 Mercedes-Benz TBA Marienfelde +2025-06-19 12:56:00 - [app] app - [INFO] INFO - [STARTUP] 🔒 Air-Gapped: True +2025-06-19 12:56:00 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Datenbank... +2025-06-19 12:56:00 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert +2025-06-19 12:56:00 - [app] app - [INFO] INFO - [STARTUP] ✅ Datenbank initialisiert +2025-06-19 12:56:00 - [app] app - [INFO] INFO - [STARTUP] Prüfe Initial-Admin... +2025-06-19 12:56:00 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt. +2025-06-19 12:56:00 - [app] app - [INFO] INFO - [STARTUP] ✅ Admin-Benutzer geprüft +2025-06-19 12:56:00 - [app] app - [INFO] INFO - [STARTUP] Initialisiere statische Drucker... +2025-06-19 12:56:00 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 1 (192.168.0.100) +2025-06-19 12:56:00 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 2 (192.168.0.101) +2025-06-19 12:56:00 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 3 (192.168.0.102) +2025-06-19 12:56:00 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 4 (192.168.0.103) +2025-06-19 12:56:00 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 5 (192.168.0.104) +2025-06-19 12:56:00 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 6 (192.168.0.106) +2025-06-19 12:56:00 - [app] app - [INFO] INFO - ✅ Statische Drucker-Initialisierung abgeschlossen: 0 erstellt, 6 aktualisiert +2025-06-19 12:56:00 - [app] app - [INFO] INFO - 📍 Alle Drucker sind für Standort 'TBA Marienfelde' konfiguriert +2025-06-19 12:56:00 - [app] app - [INFO] INFO - 🌐 IP-Bereich: 192.168.0.100-106 (außer .105) +2025-06-19 12:56:00 - [app] app - [INFO] INFO - [STARTUP] ✅ Statische Drucker konfiguriert +2025-06-19 12:56:00 - [app] app - [INFO] INFO - [STARTUP] Starte Queue Manager... +2025-06-19 12:56:00 - [app] app - [INFO] INFO - [STARTUP] ✅ Queue Manager gestartet +2025-06-19 12:56:00 - [app] app - [INFO] INFO - [STARTUP] Starte Job Scheduler... +2025-06-19 12:56:00 - [app] app - [INFO] INFO - [STARTUP] ✅ Job Scheduler gestartet +2025-06-19 12:56:00 - [app] app - [INFO] INFO - [STARTUP] 🌐 Server startet auf http://0.0.0.0:5000 +2025-06-19 12:56:01 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: ./database/myp.db +2025-06-19 12:56:02 - [app] app - [INFO] INFO - [CONFIG] Erkannte Umgebung: development +2025-06-19 12:56:02 - [app] app - [INFO] INFO - [CONFIG] Production-Modus: False +2025-06-19 12:56:02 - [app] app - [INFO] INFO - [CONFIG] Verwende Development-Konfiguration +2025-06-19 12:56:02 - [app] app - [INFO] INFO - [DEVELOPMENT] Aktiviere Development-Konfiguration +2025-06-19 12:56:02 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ MYP Development Environment Konfiguration aktiviert +2025-06-19 12:56:02 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Environment: Development/Testing +2025-06-19 12:56:02 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ Debug Mode: True +2025-06-19 12:56:02 - [app] app - [INFO] INFO - [DEVELOPMENT] ✅ SQL Echo: True +2025-06-19 12:56:02 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O) +2025-06-19 12:56:02 - [app] app - [INFO] INFO - Admin-Berechtigungen beim Start korrigiert: 0 erstellt, 0 aktualisiert +2025-06-19 12:56:02 - [app] app - [INFO] INFO - [STARTUP] 🚀 Starte MYP DEVELOPMENT-Umgebung +2025-06-19 12:56:02 - [app] app - [INFO] INFO - [STARTUP] 🏢 Mercedes-Benz TBA Marienfelde +2025-06-19 12:56:02 - [app] app - [INFO] INFO - [STARTUP] 🔒 Air-Gapped: True +2025-06-19 12:56:02 - [app] app - [INFO] INFO - [STARTUP] Initialisiere Datenbank... +2025-06-19 12:56:02 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert +2025-06-19 12:56:02 - [app] app - [INFO] INFO - [STARTUP] ✅ Datenbank initialisiert +2025-06-19 12:56:02 - [app] app - [INFO] INFO - [STARTUP] Prüfe Initial-Admin... +2025-06-19 12:56:02 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt. +2025-06-19 12:56:02 - [app] app - [INFO] INFO - [STARTUP] ✅ Admin-Benutzer geprüft +2025-06-19 12:56:02 - [app] app - [INFO] INFO - [STARTUP] Initialisiere statische Drucker... +2025-06-19 12:56:02 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 1 (192.168.0.100) +2025-06-19 12:56:02 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 2 (192.168.0.101) +2025-06-19 12:56:02 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 3 (192.168.0.102) +2025-06-19 12:56:02 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 4 (192.168.0.103) +2025-06-19 12:56:02 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 5 (192.168.0.104) +2025-06-19 12:56:02 - [app] app - [INFO] INFO - Drucker aktualisiert: Drucker 6 (192.168.0.106) +2025-06-19 12:56:02 - [app] app - [INFO] INFO - ✅ Statische Drucker-Initialisierung abgeschlossen: 0 erstellt, 6 aktualisiert +2025-06-19 12:56:02 - [app] app - [INFO] INFO - 📍 Alle Drucker sind für Standort 'TBA Marienfelde' konfiguriert +2025-06-19 12:56:02 - [app] app - [INFO] INFO - 🌐 IP-Bereich: 192.168.0.100-106 (außer .105) +2025-06-19 12:56:02 - [app] app - [INFO] INFO - [STARTUP] ✅ Statische Drucker konfiguriert +2025-06-19 12:56:02 - [app] app - [INFO] INFO - [STARTUP] Starte Queue Manager... +2025-06-19 12:56:02 - [app] app - [INFO] INFO - [STARTUP] ✅ Queue Manager gestartet +2025-06-19 12:56:02 - [app] app - [INFO] INFO - [STARTUP] Starte Job Scheduler... +2025-06-19 12:56:02 - [app] app - [INFO] INFO - [STARTUP] ✅ Job Scheduler gestartet +2025-06-19 12:56:02 - [app] app - [INFO] INFO - [STARTUP] 🌐 Server startet auf http://0.0.0.0:5000 +2025-06-19 12:56:06 - [app] app - [INFO] INFO - Locating template 'login.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\login.html') +2025-06-19 12:56:06 - [app] app - [INFO] INFO - Locating template 'base.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\base.html') +2025-06-19 12:56:06 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:56:08 - [app] app - [DEBUG] DEBUG - Request: POST /auth/login +2025-06-19 12:56:08 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:56:10 - [app] app - [DEBUG] DEBUG - Request: GET / +2025-06-19 12:56:10 - [app] app - [DEBUG] DEBUG - Response: 302 +2025-06-19 12:56:10 - [app] app - [DEBUG] DEBUG - Request: GET /dashboard +2025-06-19 12:56:10 - [app] app - [INFO] INFO - Locating template 'dashboard.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\dashboard.html') +2025-06-19 12:56:10 - [app] app - [INFO] INFO - Locating template 'macros/ui_components.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\macros\\ui_components.html') +2025-06-19 12:56:10 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:56:10 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 12:56:10 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:56:12 - [app] app - [DEBUG] DEBUG - Request: GET /printers +2025-06-19 12:56:14 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 1, Status: disconnected, Quelle: system +2025-06-19 12:56:14 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 1 -> disconnected +2025-06-19 12:56:16 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 2, Status: disconnected, Quelle: system +2025-06-19 12:56:16 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 2 -> disconnected +2025-06-19 12:56:18 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 3, Status: disconnected, Quelle: system +2025-06-19 12:56:18 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 3 -> disconnected +2025-06-19 12:56:20 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 4, Status: disconnected, Quelle: system +2025-06-19 12:56:20 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 4 -> disconnected +2025-06-19 12:56:22 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 5, Status: disconnected, Quelle: system +2025-06-19 12:56:22 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 5 -> disconnected +2025-06-19 12:56:25 - [app] app - [INFO] INFO - ✅ Steckdosen-Status geloggt: Drucker 6, Status: disconnected, Quelle: system +2025-06-19 12:56:25 - [app] app - [DEBUG] DEBUG - 📊 Auto-Status protokolliert: Drucker 6 -> disconnected +2025-06-19 12:56:25 - [app] app - [DEBUG] DEBUG - ✅ Status-Updates für 6 Drucker erfolgreich gespeichert +2025-06-19 12:56:25 - [app] app - [INFO] INFO - Locating template 'printers.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\printers.html') +2025-06-19 12:56:25 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:56:25 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 12:56:25 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:56:29 - [app] app - [DEBUG] DEBUG - Request: GET /jobs +2025-06-19 12:56:29 - [app] app - [INFO] INFO - Locating template 'jobs.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\jobs.html') +2025-06-19 12:56:29 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:56:29 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 12:56:29 - [app] app - [DEBUG] DEBUG - Request: GET /api/jobs +2025-06-19 12:56:29 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:56:29 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:56:29 - [app] app - [DEBUG] DEBUG - Request: GET /api/printers +2025-06-19 12:56:29 - [app] app - [INFO] INFO - ✅ API: 6 Drucker abgerufen (include_inactive=False) +2025-06-19 12:56:29 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:56:30 - [app] app - [DEBUG] DEBUG - Request: GET /calendar +2025-06-19 12:56:30 - [app] app - [INFO] INFO - Locating template 'calendar.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\calendar.html') +2025-06-19 12:56:30 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:56:30 - [app] app - [DEBUG] DEBUG - Request: GET /api/calendar/events +2025-06-19 12:56:30 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:56:30 - [app] app - [DEBUG] DEBUG - Request: GET /api/calendar/statistics +2025-06-19 12:56:30 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 12:56:30 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:56:30 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:56:30 - [app] app - [DEBUG] DEBUG - Request: GET /api/calendar/statistics +2025-06-19 12:56:30 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:56:31 - [app] app - [DEBUG] DEBUG - Request: GET /energy/ +2025-06-19 12:56:36 - [app] app - [DEBUG] DEBUG - Request: GET /admin/ +2025-06-19 12:56:36 - [app] app - [INFO] INFO - Locating template 'admin_modern.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\admin_modern.html') +2025-06-19 12:56:36 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:56:36 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 12:56:36 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:56:44 - [app] app - [INFO] INFO - Locating template 'energy_dashboard.html': + 1: trying loader of application '__main__' + class: jinja2.loaders.FileSystemLoader + encoding: 'utf-8' + followlinks: False + searchpath: + - C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates + -> found ('C:\\Users\\TTOMCZA.EMEA\\Dev\\Projektarbeit-MYP\\backend\\templates\\energy_dashboard.html') +2025-06-19 12:56:44 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:57:06 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 12:57:06 - [app] app - [DEBUG] DEBUG - Response: 200 +2025-06-19 12:57:36 - [app] app - [DEBUG] DEBUG - Request: GET /api/notifications +2025-06-19 12:57:36 - [app] app - [DEBUG] DEBUG - Response: 200 diff --git a/backend/logs/auth/auth.log b/backend/logs/auth/auth.log index 123ff7683..23452c6bf 100644 --- a/backend/logs/auth/auth.log +++ b/backend/logs/auth/auth.log @@ -133,3 +133,5 @@ WHERE users.username = ? OR users.email = ? 2025-06-19 12:02:58 - [auth] auth - [INFO] INFO - Benutzer adm34in@mercedes-benz.com hat sich abgemeldet 2025-06-19 12:03:00 - [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-19 12:03:00 - [auth] auth - [INFO] INFO - Benutzer admin@mercedes-benz.com hat sich erfolgreich angemeldet +2025-06-19 12:56:08 - [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-19 12:56:08 - [auth] auth - [INFO] INFO - Benutzer admin@mercedes-benz.com hat sich erfolgreich angemeldet diff --git a/backend/logs/calendar/calendar.log b/backend/logs/calendar/calendar.log index fb446d7ac..fc371dfbe 100644 --- a/backend/logs/calendar/calendar.log +++ b/backend/logs/calendar/calendar.log @@ -49,3 +49,8 @@ 2025-06-19 12:04:19 - [calendar] calendar - [INFO] INFO - 📅 Kalender-Events abgerufen: 144 Einträge für Zeitraum 2025-06-14 22:00:00+00:00 bis 2025-06-21 22:00:00+00:00 2025-06-19 12:04:27 - [calendar] calendar - [INFO] INFO - 📅 Kalender-Events abgerufen: 0 Einträge für Zeitraum 2025-06-14 22:00:00+00:00 bis 2025-06-21 22:00:00+00:00 2025-06-19 12:04:37 - [calendar] calendar - [INFO] INFO - 📅 Kalender-Events abgerufen: 138 Einträge für Zeitraum 2025-06-18 22:00:00+00:00 bis 2025-06-19 22:00:00+00:00 +2025-06-19 12:10:51 - [calendar] calendar - [INFO] INFO - 📅 Kalender-Events abgerufen: 0 Einträge für Zeitraum 2025-06-14 22:00:00+00:00 bis 2025-06-21 22:00:00+00:00 +2025-06-19 12:10:54 - [calendar] calendar - [INFO] INFO - 📅 Kalender-Events abgerufen: 150 Einträge für Zeitraum 2025-06-14 22:00:00+00:00 bis 2025-06-21 22:00:00+00:00 +2025-06-19 12:10:56 - [calendar] calendar - [INFO] INFO - 📅 Kalender-Events abgerufen: 0 Einträge für Zeitraum 2025-06-14 22:00:00+00:00 bis 2025-06-21 22:00:00+00:00 +2025-06-19 12:12:23 - [calendar] calendar - [INFO] INFO - 📅 Kalender-Events abgerufen: 0 Einträge für Zeitraum 2025-06-14 22:00:00+00:00 bis 2025-06-21 22:00:00+00:00 +2025-06-19 12:56:30 - [calendar] calendar - [INFO] INFO - 📅 Kalender-Events abgerufen: 0 Einträge für Zeitraum 2025-06-14 22:00:00+00:00 bis 2025-06-21 22:00:00+00:00 diff --git a/backend/logs/core_system/core_system.log b/backend/logs/core_system/core_system.log index c280fd584..b12cbd147 100644 --- a/backend/logs/core_system/core_system.log +++ b/backend/logs/core_system/core_system.log @@ -366,3 +366,35 @@ 2025-06-19 12:02:05 - [core_system] core_system - [INFO] INFO - 📊 Massive Konsolidierung: 6 Dateien → 1 Datei (88% Reduktion) 2025-06-19 12:08:00 - [core_system] core_system - [INFO] INFO - ✅ Core System Management Module erfolgreich initialisiert 2025-06-19 12:08:00 - [core_system] core_system - [INFO] INFO - 📊 Massive Konsolidierung: 6 Dateien → 1 Datei (88% Reduktion) +2025-06-19 12:10:39 - [core_system] core_system - [INFO] INFO - ✅ Core System Management Module erfolgreich initialisiert +2025-06-19 12:10:39 - [core_system] core_system - [INFO] INFO - 📊 Massive Konsolidierung: 6 Dateien → 1 Datei (88% Reduktion) +2025-06-19 12:10:41 - [core_system] core_system - [INFO] INFO - ✅ Core System Management Module erfolgreich initialisiert +2025-06-19 12:10:41 - [core_system] core_system - [INFO] INFO - 📊 Massive Konsolidierung: 6 Dateien → 1 Datei (88% Reduktion) +2025-06-19 12:11:38 - [core_system] core_system - [INFO] INFO - ✅ Core System Management Module erfolgreich initialisiert +2025-06-19 12:11:38 - [core_system] core_system - [INFO] INFO - 📊 Massive Konsolidierung: 6 Dateien → 1 Datei (88% Reduktion) +2025-06-19 12:11:55 - [core_system] core_system - [INFO] INFO - ✅ Core System Management Module erfolgreich initialisiert +2025-06-19 12:11:55 - [core_system] core_system - [INFO] INFO - 📊 Massive Konsolidierung: 6 Dateien → 1 Datei (88% Reduktion) +2025-06-19 12:12:06 - [core_system] core_system - [INFO] INFO - ✅ Core System Management Module erfolgreich initialisiert +2025-06-19 12:12:06 - [core_system] core_system - [INFO] INFO - 📊 Massive Konsolidierung: 6 Dateien → 1 Datei (88% Reduktion) +2025-06-19 12:12:27 - [core_system] core_system - [INFO] INFO - ✅ Core System Management Module erfolgreich initialisiert +2025-06-19 12:12:27 - [core_system] core_system - [INFO] INFO - 📊 Massive Konsolidierung: 6 Dateien → 1 Datei (88% Reduktion) +2025-06-19 12:14:29 - [core_system] core_system - [INFO] INFO - ✅ Core System Management Module erfolgreich initialisiert +2025-06-19 12:14:29 - [core_system] core_system - [INFO] INFO - 📊 Massive Konsolidierung: 6 Dateien → 1 Datei (88% Reduktion) +2025-06-19 12:14:32 - [core_system] core_system - [INFO] INFO - ✅ Core System Management Module erfolgreich initialisiert +2025-06-19 12:14:32 - [core_system] core_system - [INFO] INFO - 📊 Massive Konsolidierung: 6 Dateien → 1 Datei (88% Reduktion) +2025-06-19 12:14:56 - [core_system] core_system - [INFO] INFO - ✅ Core System Management Module erfolgreich initialisiert +2025-06-19 12:14:56 - [core_system] core_system - [INFO] INFO - 📊 Massive Konsolidierung: 6 Dateien → 1 Datei (88% Reduktion) +2025-06-19 12:14:59 - [core_system] core_system - [INFO] INFO - ✅ Core System Management Module erfolgreich initialisiert +2025-06-19 12:14:59 - [core_system] core_system - [INFO] INFO - 📊 Massive Konsolidierung: 6 Dateien → 1 Datei (88% Reduktion) +2025-06-19 12:16:25 - [core_system] core_system - [INFO] INFO - ✅ Core System Management Module erfolgreich initialisiert +2025-06-19 12:16:25 - [core_system] core_system - [INFO] INFO - 📊 Massive Konsolidierung: 6 Dateien → 1 Datei (88% Reduktion) +2025-06-19 12:16:28 - [core_system] core_system - [INFO] INFO - ✅ Core System Management Module erfolgreich initialisiert +2025-06-19 12:16:28 - [core_system] core_system - [INFO] INFO - 📊 Massive Konsolidierung: 6 Dateien → 1 Datei (88% Reduktion) +2025-06-19 12:19:20 - [core_system] core_system - [INFO] INFO - ✅ Core System Management Module erfolgreich initialisiert +2025-06-19 12:19:20 - [core_system] core_system - [INFO] INFO - 📊 Massive Konsolidierung: 6 Dateien → 1 Datei (88% Reduktion) +2025-06-19 12:19:22 - [core_system] core_system - [INFO] INFO - ✅ Core System Management Module erfolgreich initialisiert +2025-06-19 12:19:22 - [core_system] core_system - [INFO] INFO - 📊 Massive Konsolidierung: 6 Dateien → 1 Datei (88% Reduktion) +2025-06-19 12:55:57 - [core_system] core_system - [INFO] INFO - ✅ Core System Management Module erfolgreich initialisiert +2025-06-19 12:55:57 - [core_system] core_system - [INFO] INFO - 📊 Massive Konsolidierung: 6 Dateien → 1 Datei (88% Reduktion) +2025-06-19 12:56:01 - [core_system] core_system - [INFO] INFO - ✅ Core System Management Module erfolgreich initialisiert +2025-06-19 12:56:01 - [core_system] core_system - [INFO] INFO - 📊 Massive Konsolidierung: 6 Dateien → 1 Datei (88% Reduktion) diff --git a/backend/logs/data_management/data_management.log b/backend/logs/data_management/data_management.log index 453c5aeb1..cd7509b98 100644 --- a/backend/logs/data_management/data_management.log +++ b/backend/logs/data_management/data_management.log @@ -745,3 +745,39 @@ 2025-06-19 12:02:05 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) 2025-06-19 12:08:00 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert 2025-06-19 12:08:00 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 12:09:59 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert +2025-06-19 12:09:59 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 12:10:01 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert +2025-06-19 12:10:01 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 12:10:39 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert +2025-06-19 12:10:39 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 12:10:42 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert +2025-06-19 12:10:42 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 12:11:38 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert +2025-06-19 12:11:38 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 12:11:55 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert +2025-06-19 12:11:55 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 12:12:06 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert +2025-06-19 12:12:06 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 12:12:27 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert +2025-06-19 12:12:27 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 12:14:30 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert +2025-06-19 12:14:30 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 12:14:32 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert +2025-06-19 12:14:32 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 12:14:57 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert +2025-06-19 12:14:57 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 12:14:59 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert +2025-06-19 12:14:59 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 12:16:26 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert +2025-06-19 12:16:26 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 12:16:28 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert +2025-06-19 12:16:28 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 12:19:20 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert +2025-06-19 12:19:20 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 12:19:22 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert +2025-06-19 12:19:22 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 12:55:57 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert +2025-06-19 12:55:57 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 12:56:01 - [data_management] data_management - [INFO] INFO - ✅ Data Management Module initialisiert +2025-06-19 12:56:01 - [data_management] data_management - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) diff --git a/backend/logs/energy_monitoring/energy_monitoring.log b/backend/logs/energy_monitoring/energy_monitoring.log index e3b888cc8..2a8db6397 100644 --- a/backend/logs/energy_monitoring/energy_monitoring.log +++ b/backend/logs/energy_monitoring/energy_monitoring.log @@ -632,3 +632,46 @@ 2025-06-19 12:03:22 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiestatistiken erfolgreich erstellt für Zeitraum: today 2025-06-19 12:03:22 - [energy_monitoring] energy_monitoring - [INFO] INFO - [OK] API-Energiestatistiken 'api_energy_statistics' erfolgreich in 12.03ms 2025-06-19 12:08:01 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert +2025-06-19 12:10:00 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert +2025-06-19 12:10:02 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert +2025-06-19 12:10:40 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert +2025-06-19 12:10:43 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert +2025-06-19 12:10:50 - [energy_monitoring] energy_monitoring - [INFO] INFO - 🔋 Energiemonitoring-Dashboard aufgerufen von admin +2025-06-19 12:10:50 - [energy_monitoring] energy_monitoring - [INFO] INFO - 📊 API-Energiemonitoring-Dashboard von admin +2025-06-19 12:10:50 - [energy_monitoring] energy_monitoring - [INFO] INFO - 📈 API-Energiestatistiken (today) von admin +2025-06-19 12:10:50 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiestatistiken erfolgreich erstellt für Zeitraum: today +2025-06-19 12:10:50 - [energy_monitoring] energy_monitoring - [INFO] INFO - [OK] API-Energiestatistiken 'api_energy_statistics' erfolgreich in 7.09ms +2025-06-19 12:10:50 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Dashboard-Daten erfolgreich erstellt: 0 Geräte online +2025-06-19 12:10:50 - [energy_monitoring] energy_monitoring - [INFO] INFO - [OK] API-Energiemonitoring-Dashboard 'api_energy_dashboard' erfolgreich in 9.76ms +2025-06-19 12:10:50 - [energy_monitoring] energy_monitoring - [INFO] INFO - [OK] API-Live-Energiedaten 'api_live_energy_data' erfolgreich in 6.27ms +2025-06-19 12:11:39 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert +2025-06-19 12:11:56 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert +2025-06-19 12:12:07 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert +2025-06-19 12:12:24 - [energy_monitoring] energy_monitoring - [INFO] INFO - 🔋 Energiemonitoring-Dashboard aufgerufen von admin +2025-06-19 12:12:24 - [energy_monitoring] energy_monitoring - [INFO] INFO - 📈 API-Energiestatistiken (today) von admin +2025-06-19 12:12:24 - [energy_monitoring] energy_monitoring - [INFO] INFO - 📊 API-Energiemonitoring-Dashboard von admin +2025-06-19 12:12:24 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiestatistiken erfolgreich erstellt für Zeitraum: today +2025-06-19 12:12:24 - [energy_monitoring] energy_monitoring - [INFO] INFO - [OK] API-Energiestatistiken 'api_energy_statistics' erfolgreich in 6.64ms +2025-06-19 12:12:24 - [energy_monitoring] energy_monitoring - [INFO] INFO - [OK] API-Live-Energiedaten 'api_live_energy_data' erfolgreich in 6.86ms +2025-06-19 12:12:24 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Dashboard-Daten erfolgreich erstellt: 0 Geräte online +2025-06-19 12:12:24 - [energy_monitoring] energy_monitoring - [INFO] INFO - [OK] API-Energiemonitoring-Dashboard 'api_energy_dashboard' erfolgreich in 8.67ms +2025-06-19 12:12:28 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert +2025-06-19 12:12:47 - [energy_monitoring] energy_monitoring - [INFO] INFO - 🔋 Energiemonitoring-Dashboard aufgerufen von admin +2025-06-19 12:12:47 - [energy_monitoring] energy_monitoring - [INFO] INFO - 📊 API-Energiemonitoring-Dashboard von admin +2025-06-19 12:12:47 - [energy_monitoring] energy_monitoring - [INFO] INFO - 📈 API-Energiestatistiken (today) von admin +2025-06-19 12:12:47 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Dashboard-Daten erfolgreich erstellt: 0 Geräte online +2025-06-19 12:12:47 - [energy_monitoring] energy_monitoring - [INFO] INFO - [OK] API-Energiemonitoring-Dashboard 'api_energy_dashboard' erfolgreich in 9.08ms +2025-06-19 12:12:47 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiestatistiken erfolgreich erstellt für Zeitraum: today +2025-06-19 12:12:47 - [energy_monitoring] energy_monitoring - [INFO] INFO - [OK] API-Energiestatistiken 'api_energy_statistics' erfolgreich in 8.82ms +2025-06-19 12:12:47 - [energy_monitoring] energy_monitoring - [INFO] INFO - [OK] API-Live-Energiedaten 'api_live_energy_data' erfolgreich in 5.79ms +2025-06-19 12:14:31 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert +2025-06-19 12:14:33 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert +2025-06-19 12:14:58 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert +2025-06-19 12:15:00 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert +2025-06-19 12:16:27 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert +2025-06-19 12:16:29 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert +2025-06-19 12:19:21 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert +2025-06-19 12:19:23 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert +2025-06-19 12:56:00 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert +2025-06-19 12:56:02 - [energy_monitoring] energy_monitoring - [INFO] INFO - ✅ Energiemonitoring-Blueprint initialisiert +2025-06-19 12:56:31 - [energy_monitoring] energy_monitoring - [INFO] INFO - 🔋 Energiemonitoring-Dashboard aufgerufen von admin diff --git a/backend/logs/guest/guest.log b/backend/logs/guest/guest.log index efac80d8d..f8a86c880 100644 --- a/backend/logs/guest/guest.log +++ b/backend/logs/guest/guest.log @@ -71,3 +71,4 @@ WHERE user_permissions.can_approve_jobs = 1] 2025-06-16 08:09:46 - [guest] guest - [WARNING] WARNING - Fehler beim Einschalten des Druckers: Instance is not bound to a Session; attribute refresh operation cannot proceed (Background on this error at: https://sqlalche.me/e/20/bhk3) 2025-06-16 08:09:46 - [guest] guest - [ERROR] ERROR - Fehler beim Starten des Jobs mit Code: Instance is not bound to a Session; attribute refresh operation cannot proceed (Background on this error at: https://sqlalche.me/e/20/bhk3) 2025-06-19 12:06:44 - [guest] guest - [INFO] INFO - Neue Gastanfrage erstellt: ID 1, Name: Till Tomczaktet, OTP generiert +2025-06-19 12:12:32 - [guest] guest - [INFO] INFO - Neue Gastanfrage erstellt: ID 2, Name: Till Tomczaktet, OTP generiert diff --git a/backend/logs/hardware_integration/hardware_integration.log b/backend/logs/hardware_integration/hardware_integration.log index c4d9a7101..53c5cdb19 100644 --- a/backend/logs/hardware_integration/hardware_integration.log +++ b/backend/logs/hardware_integration/hardware_integration.log @@ -3044,3 +3044,196 @@ 2025-06-19 12:08:00 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Printer Monitor mit Session-Caching initialisiert 2025-06-19 12:08:00 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Hardware Integration Module initialisiert 2025-06-19 12:08:00 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Massive Konsolidierung: 2 Dateien → 1 Datei (50% Reduktion) +2025-06-19 12:09:59 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ PyP100 (TP-Link Tapo) verfügbar +2025-06-19 12:09:59 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Printer Monitor mit Session-Caching initialisiert +2025-06-19 12:09:59 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Hardware Integration Module initialisiert +2025-06-19 12:09:59 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Massive Konsolidierung: 2 Dateien → 1 Datei (50% Reduktion) +2025-06-19 12:10:01 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ PyP100 (TP-Link Tapo) verfügbar +2025-06-19 12:10:01 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Printer Monitor mit Session-Caching initialisiert +2025-06-19 12:10:01 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Hardware Integration Module initialisiert +2025-06-19 12:10:01 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Massive Konsolidierung: 2 Dateien → 1 Datei (50% Reduktion) +2025-06-19 12:10:39 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ PyP100 (TP-Link Tapo) verfügbar +2025-06-19 12:10:39 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Printer Monitor mit Session-Caching initialisiert +2025-06-19 12:10:39 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Hardware Integration Module initialisiert +2025-06-19 12:10:39 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Massive Konsolidierung: 2 Dateien → 1 Datei (50% Reduktion) +2025-06-19 12:10:42 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ PyP100 (TP-Link Tapo) verfügbar +2025-06-19 12:10:42 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Printer Monitor mit Session-Caching initialisiert +2025-06-19 12:10:42 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Hardware Integration Module initialisiert +2025-06-19 12:10:42 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Massive Konsolidierung: 2 Dateien → 1 Datei (50% Reduktion) +2025-06-19 12:10:50 - [hardware_integration] hardware_integration - [INFO] INFO - 🔋 Sammle Energiestatistiken von allen P110 Steckdosen... +2025-06-19 12:10:50 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 1 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:10:50 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 2 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:10:50 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 3 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:10:50 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 4 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:10:50 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 5 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:10:50 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 6 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:10:50 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Energiestatistiken erfolgreich gesammelt: 0/6 Geräte online +2025-06-19 12:10:50 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Gesamtverbrauch: 0.0W aktuell, 0.0Wh heute +2025-06-19 12:10:50 - [hardware_integration] hardware_integration - [INFO] INFO - 🔋 Sammle Energiestatistiken von allen P110 Steckdosen... +2025-06-19 12:10:50 - [hardware_integration] hardware_integration - [INFO] INFO - 🔋 Sammle Energiestatistiken von allen P110 Steckdosen... +2025-06-19 12:10:50 - [hardware_integration] hardware_integration - [INFO] INFO - 🔋 Sammle Energiestatistiken von allen P110 Steckdosen... +2025-06-19 12:10:50 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 1 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:10:50 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 1 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:10:50 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 2 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:10:50 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 1 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:10:50 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 2 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:10:50 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 3 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:10:50 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 2 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:10:50 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 3 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:10:50 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 4 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:10:50 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 3 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:10:50 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 4 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:10:50 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 5 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:10:50 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 4 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:10:50 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 5 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:10:50 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 6 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:10:50 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 5 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:10:50 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 6 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:10:50 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Energiestatistiken erfolgreich gesammelt: 0/6 Geräte online +2025-06-19 12:10:50 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 6 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:10:50 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Energiestatistiken erfolgreich gesammelt: 0/6 Geräte online +2025-06-19 12:10:50 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Gesamtverbrauch: 0.0W aktuell, 0.0Wh heute +2025-06-19 12:10:50 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Energiestatistiken erfolgreich gesammelt: 0/6 Geräte online +2025-06-19 12:10:50 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Gesamtverbrauch: 0.0W aktuell, 0.0Wh heute +2025-06-19 12:10:50 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Gesamtverbrauch: 0.0W aktuell, 0.0Wh heute +2025-06-19 12:11:38 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ PyP100 (TP-Link Tapo) verfügbar +2025-06-19 12:11:38 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Printer Monitor mit Session-Caching initialisiert +2025-06-19 12:11:38 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Hardware Integration Module initialisiert +2025-06-19 12:11:38 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Massive Konsolidierung: 2 Dateien → 1 Datei (50% Reduktion) +2025-06-19 12:11:55 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ PyP100 (TP-Link Tapo) verfügbar +2025-06-19 12:11:55 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Printer Monitor mit Session-Caching initialisiert +2025-06-19 12:11:55 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Hardware Integration Module initialisiert +2025-06-19 12:11:55 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Massive Konsolidierung: 2 Dateien → 1 Datei (50% Reduktion) +2025-06-19 12:12:06 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ PyP100 (TP-Link Tapo) verfügbar +2025-06-19 12:12:06 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Printer Monitor mit Session-Caching initialisiert +2025-06-19 12:12:06 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Hardware Integration Module initialisiert +2025-06-19 12:12:06 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Massive Konsolidierung: 2 Dateien → 1 Datei (50% Reduktion) +2025-06-19 12:12:24 - [hardware_integration] hardware_integration - [INFO] INFO - 🔋 Sammle Energiestatistiken von allen P110 Steckdosen... +2025-06-19 12:12:24 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 1 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:12:24 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 2 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:12:24 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 3 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:12:24 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 4 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:12:24 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 5 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:12:24 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 6 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:12:24 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Energiestatistiken erfolgreich gesammelt: 0/6 Geräte online +2025-06-19 12:12:24 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Gesamtverbrauch: 0.0W aktuell, 0.0Wh heute +2025-06-19 12:12:24 - [hardware_integration] hardware_integration - [INFO] INFO - 🔋 Sammle Energiestatistiken von allen P110 Steckdosen... +2025-06-19 12:12:24 - [hardware_integration] hardware_integration - [INFO] INFO - 🔋 Sammle Energiestatistiken von allen P110 Steckdosen... +2025-06-19 12:12:24 - [hardware_integration] hardware_integration - [INFO] INFO - 🔋 Sammle Energiestatistiken von allen P110 Steckdosen... +2025-06-19 12:12:24 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 1 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:12:24 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 2 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:12:24 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 3 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:12:24 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 4 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:12:24 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 1 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:12:24 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 5 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:12:24 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 1 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:12:24 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 2 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:12:24 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 6 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:12:24 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 2 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:12:24 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 3 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:12:24 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Energiestatistiken erfolgreich gesammelt: 0/6 Geräte online +2025-06-19 12:12:24 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 3 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:12:24 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 4 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:12:24 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Gesamtverbrauch: 0.0W aktuell, 0.0Wh heute +2025-06-19 12:12:24 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 4 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:12:24 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 5 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:12:24 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 6 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:12:24 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 5 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:12:24 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Energiestatistiken erfolgreich gesammelt: 0/6 Geräte online +2025-06-19 12:12:24 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 6 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:12:24 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Gesamtverbrauch: 0.0W aktuell, 0.0Wh heute +2025-06-19 12:12:24 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Energiestatistiken erfolgreich gesammelt: 0/6 Geräte online +2025-06-19 12:12:24 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Gesamtverbrauch: 0.0W aktuell, 0.0Wh heute +2025-06-19 12:12:27 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ PyP100 (TP-Link Tapo) verfügbar +2025-06-19 12:12:27 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Printer Monitor mit Session-Caching initialisiert +2025-06-19 12:12:27 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Hardware Integration Module initialisiert +2025-06-19 12:12:27 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Massive Konsolidierung: 2 Dateien → 1 Datei (50% Reduktion) +2025-06-19 12:12:47 - [hardware_integration] hardware_integration - [INFO] INFO - 🔋 Sammle Energiestatistiken von allen P110 Steckdosen... +2025-06-19 12:12:47 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 1 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:12:47 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 2 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:12:47 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 3 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:12:47 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 4 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:12:47 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 5 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:12:47 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 6 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:12:47 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Energiestatistiken erfolgreich gesammelt: 0/6 Geräte online +2025-06-19 12:12:47 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Gesamtverbrauch: 0.0W aktuell, 0.0Wh heute +2025-06-19 12:12:47 - [hardware_integration] hardware_integration - [INFO] INFO - 🔋 Sammle Energiestatistiken von allen P110 Steckdosen... +2025-06-19 12:12:47 - [hardware_integration] hardware_integration - [INFO] INFO - 🔋 Sammle Energiestatistiken von allen P110 Steckdosen... +2025-06-19 12:12:47 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 1 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:12:47 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 2 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:12:47 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 3 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:12:47 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 1 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:12:47 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 4 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:12:47 - [hardware_integration] hardware_integration - [INFO] INFO - 🔋 Sammle Energiestatistiken von allen P110 Steckdosen... +2025-06-19 12:12:47 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 2 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:12:47 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 5 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:12:47 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 3 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:12:47 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 6 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:12:47 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 4 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:12:47 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 1 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:12:47 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Energiestatistiken erfolgreich gesammelt: 0/6 Geräte online +2025-06-19 12:12:47 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 5 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:12:47 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 2 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:12:47 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Gesamtverbrauch: 0.0W aktuell, 0.0Wh heute +2025-06-19 12:12:47 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 6 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:12:47 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 3 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:12:47 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Energiestatistiken erfolgreich gesammelt: 0/6 Geräte online +2025-06-19 12:12:47 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 4 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:12:47 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Gesamtverbrauch: 0.0W aktuell, 0.0Wh heute +2025-06-19 12:12:47 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 5 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:12:47 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 6 nicht abrufen: type object 'P100' has no attribute 'P110' +2025-06-19 12:12:47 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Energiestatistiken erfolgreich gesammelt: 0/6 Geräte online +2025-06-19 12:12:47 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Gesamtverbrauch: 0.0W aktuell, 0.0Wh heute +2025-06-19 12:14:30 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ PyP100 (TP-Link Tapo) verfügbar +2025-06-19 12:14:30 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Printer Monitor mit Session-Caching initialisiert +2025-06-19 12:14:30 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Hardware Integration Module initialisiert +2025-06-19 12:14:30 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Massive Konsolidierung: 2 Dateien → 1 Datei (50% Reduktion) +2025-06-19 12:14:32 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ PyP100 (TP-Link Tapo) verfügbar +2025-06-19 12:14:32 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Printer Monitor mit Session-Caching initialisiert +2025-06-19 12:14:32 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Hardware Integration Module initialisiert +2025-06-19 12:14:32 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Massive Konsolidierung: 2 Dateien → 1 Datei (50% Reduktion) +2025-06-19 12:14:57 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ PyP100 (TP-Link Tapo) verfügbar +2025-06-19 12:14:57 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Printer Monitor mit Session-Caching initialisiert +2025-06-19 12:14:57 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Hardware Integration Module initialisiert +2025-06-19 12:14:57 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Massive Konsolidierung: 2 Dateien → 1 Datei (50% Reduktion) +2025-06-19 12:14:59 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ PyP100 (TP-Link Tapo) verfügbar +2025-06-19 12:14:59 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Printer Monitor mit Session-Caching initialisiert +2025-06-19 12:14:59 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Hardware Integration Module initialisiert +2025-06-19 12:14:59 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Massive Konsolidierung: 2 Dateien → 1 Datei (50% Reduktion) +2025-06-19 12:16:25 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ PyP100 (TP-Link Tapo) verfügbar +2025-06-19 12:16:25 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Printer Monitor mit Session-Caching initialisiert +2025-06-19 12:16:25 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Hardware Integration Module initialisiert +2025-06-19 12:16:25 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Massive Konsolidierung: 2 Dateien → 1 Datei (50% Reduktion) +2025-06-19 12:16:28 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ PyP100 (TP-Link Tapo) verfügbar +2025-06-19 12:16:28 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Printer Monitor mit Session-Caching initialisiert +2025-06-19 12:16:28 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Hardware Integration Module initialisiert +2025-06-19 12:16:28 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Massive Konsolidierung: 2 Dateien → 1 Datei (50% Reduktion) +2025-06-19 12:19:20 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ PyP100 (TP-Link Tapo) verfügbar +2025-06-19 12:19:20 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Printer Monitor mit Session-Caching initialisiert +2025-06-19 12:19:20 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Hardware Integration Module initialisiert +2025-06-19 12:19:20 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Massive Konsolidierung: 2 Dateien → 1 Datei (50% Reduktion) +2025-06-19 12:19:22 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ PyP100 (TP-Link Tapo) verfügbar +2025-06-19 12:19:22 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Printer Monitor mit Session-Caching initialisiert +2025-06-19 12:19:22 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Hardware Integration Module initialisiert +2025-06-19 12:19:22 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Massive Konsolidierung: 2 Dateien → 1 Datei (50% Reduktion) +2025-06-19 12:20:25 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ PyP100 (TP-Link Tapo) verfügbar +2025-06-19 12:20:25 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Printer Monitor mit Session-Caching initialisiert +2025-06-19 12:20:25 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Hardware Integration Module initialisiert +2025-06-19 12:20:25 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Massive Konsolidierung: 2 Dateien → 1 Datei (50% Reduktion) +2025-06-19 12:55:57 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ PyP100 (TP-Link Tapo) verfügbar +2025-06-19 12:55:57 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Printer Monitor mit Session-Caching initialisiert +2025-06-19 12:55:57 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Hardware Integration Module initialisiert +2025-06-19 12:55:57 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Massive Konsolidierung: 2 Dateien → 1 Datei (50% Reduktion) +2025-06-19 12:56:01 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ PyP100 (TP-Link Tapo) verfügbar +2025-06-19 12:56:01 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Printer Monitor mit Session-Caching initialisiert +2025-06-19 12:56:01 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Hardware Integration Module initialisiert +2025-06-19 12:56:01 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Massive Konsolidierung: 2 Dateien → 1 Datei (50% Reduktion) +2025-06-19 12:56:31 - [hardware_integration] hardware_integration - [INFO] INFO - 🔋 Sammle Energiestatistiken von allen P110 Steckdosen... +2025-06-19 12:56:33 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 1 nicht abrufen: HTTPConnectionPool(host='192.168.0.100', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.100 timed out. (connect timeout=2)')) +2025-06-19 12:56:35 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 2 nicht abrufen: HTTPConnectionPool(host='192.168.0.101', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.101 timed out. (connect timeout=2)')) +2025-06-19 12:56:37 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 3 nicht abrufen: HTTPConnectionPool(host='192.168.0.102', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.102 timed out. (connect timeout=2)')) +2025-06-19 12:56:39 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 4 nicht abrufen: 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-19 12:56:41 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 5 nicht abrufen: 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-19 12:56:44 - [hardware_integration] hardware_integration - [WARNING] WARNING - ⚠️ Konnte Energiedaten für Drucker 6 nicht abrufen: HTTPConnectionPool(host='192.168.0.106', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.106 timed out. (connect timeout=2)')) +2025-06-19 12:56:44 - [hardware_integration] hardware_integration - [INFO] INFO - ✅ Energiestatistiken erfolgreich gesammelt: 0/6 Geräte online +2025-06-19 12:56:44 - [hardware_integration] hardware_integration - [INFO] INFO - 📊 Gesamtverbrauch: 0.0W aktuell, 0.0Wh heute diff --git a/backend/logs/job_queue_system/job_queue_system.log b/backend/logs/job_queue_system/job_queue_system.log index ebe58622c..9c117130d 100644 --- a/backend/logs/job_queue_system/job_queue_system.log +++ b/backend/logs/job_queue_system/job_queue_system.log @@ -1444,3 +1444,73 @@ 2025-06-19 12:08:00 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert 2025-06-19 12:08:00 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion) 2025-06-19 12:08:02 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität) +2025-06-19 12:09:59 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert +2025-06-19 12:09:59 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion) +2025-06-19 12:10:00 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität) +2025-06-19 12:10:01 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert +2025-06-19 12:10:01 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion) +2025-06-19 12:10:02 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität) +2025-06-19 12:10:39 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert +2025-06-19 12:10:39 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion) +2025-06-19 12:10:41 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität) +2025-06-19 12:10:42 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert +2025-06-19 12:10:42 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion) +2025-06-19 12:10:43 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität) +2025-06-19 12:11:37 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität) +2025-06-19 12:11:38 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert +2025-06-19 12:11:38 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion) +2025-06-19 12:11:39 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität) +2025-06-19 12:11:54 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität) +2025-06-19 12:11:55 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert +2025-06-19 12:11:55 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion) +2025-06-19 12:11:56 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität) +2025-06-19 12:12:04 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität) +2025-06-19 12:12:06 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert +2025-06-19 12:12:06 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion) +2025-06-19 12:12:07 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität) +2025-06-19 12:12:26 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität) +2025-06-19 12:12:27 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert +2025-06-19 12:12:27 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion) +2025-06-19 12:12:29 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität) +2025-06-19 12:14:27 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität) +2025-06-19 12:14:27 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität) +2025-06-19 12:14:30 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert +2025-06-19 12:14:30 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion) +2025-06-19 12:14:31 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität) +2025-06-19 12:14:32 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert +2025-06-19 12:14:32 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion) +2025-06-19 12:14:34 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität) +2025-06-19 12:14:43 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität) +2025-06-19 12:14:43 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität) +2025-06-19 12:14:57 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert +2025-06-19 12:14:57 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion) +2025-06-19 12:14:58 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität) +2025-06-19 12:14:59 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert +2025-06-19 12:14:59 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion) +2025-06-19 12:15:00 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität) +2025-06-19 12:15:19 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität) +2025-06-19 12:15:19 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität) +2025-06-19 12:16:25 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert +2025-06-19 12:16:25 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion) +2025-06-19 12:16:27 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität) +2025-06-19 12:16:28 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert +2025-06-19 12:16:28 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion) +2025-06-19 12:16:29 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität) +2025-06-19 12:17:10 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität) +2025-06-19 12:17:10 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität) +2025-06-19 12:19:20 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert +2025-06-19 12:19:20 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion) +2025-06-19 12:19:21 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität) +2025-06-19 12:19:22 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert +2025-06-19 12:19:22 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion) +2025-06-19 12:19:23 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität) +2025-06-19 12:19:51 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität) +2025-06-19 12:19:51 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität) +2025-06-19 12:55:57 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert +2025-06-19 12:55:57 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion) +2025-06-19 12:56:00 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität) +2025-06-19 12:56:01 - [job_queue_system] job_queue_system - [INFO] INFO - ✅ Job & Queue System Module initialisiert +2025-06-19 12:56:01 - [job_queue_system] job_queue_system - [INFO] INFO - 📊 MASSIVE Konsolidierung: 4 Dateien → 1 Datei (75% Reduktion) +2025-06-19 12:56:02 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestartet (Legacy-Kompatibilität) +2025-06-19 12:57:48 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität) +2025-06-19 12:57:48 - [job_queue_system] job_queue_system - [INFO] INFO - Queue Manager gestoppt (Legacy-Kompatibilität) diff --git a/backend/logs/jobs/jobs.log b/backend/logs/jobs/jobs.log index cf506a3fc..e2f003282 100644 --- a/backend/logs/jobs/jobs.log +++ b/backend/logs/jobs/jobs.log @@ -963,3 +963,7 @@ sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) FOREIGN KEY constraint f 2025-06-19 12:06:15 - [jobs] jobs - [INFO] INFO - ✅ Jobs erfolgreich abgerufen: 0 von 0 (Seite 1) 2025-06-19 12:06:54 - [jobs] jobs - [INFO] INFO - 📋 Jobs-Abfrage gestartet von Benutzer 1 (Admin: True) 2025-06-19 12:06:54 - [jobs] jobs - [INFO] INFO - ✅ Jobs erfolgreich abgerufen: 0 von 0 (Seite 1) +2025-06-19 12:12:21 - [jobs] jobs - [INFO] INFO - 📋 Jobs-Abfrage gestartet von Benutzer 1 (Admin: True) +2025-06-19 12:12:21 - [jobs] jobs - [INFO] INFO - ✅ Jobs erfolgreich abgerufen: 0 von 0 (Seite 1) +2025-06-19 12:56:29 - [jobs] jobs - [INFO] INFO - 📋 Jobs-Abfrage gestartet von Benutzer 1 (Admin: True) +2025-06-19 12:56:29 - [jobs] jobs - [INFO] INFO - ✅ Jobs erfolgreich abgerufen: 0 von 0 (Seite 1) diff --git a/backend/logs/models/models.log b/backend/logs/models/models.log index 8ab36ed1e..d4610079f 100644 --- a/backend/logs/models/models.log +++ b/backend/logs/models/models.log @@ -18,3 +18,5 @@ 2025-06-16 08:08:09 - [models] models - [INFO] INFO - Erfolgreich 1 Benachrichtigungen erstellt für 'guest_request' 2025-06-19 12:06:44 - [models] models - [INFO] INFO - Gefunden: 1 Genehmiger für Benachrichtigung 'guest_request' 2025-06-19 12:06:44 - [models] models - [INFO] INFO - Erfolgreich 1 Benachrichtigungen erstellt für 'guest_request' +2025-06-19 12:12:32 - [models] models - [INFO] INFO - Gefunden: 1 Genehmiger für Benachrichtigung 'guest_request' +2025-06-19 12:12:32 - [models] models - [INFO] INFO - Erfolgreich 1 Benachrichtigungen erstellt für 'guest_request' diff --git a/backend/logs/monitoring_analytics/monitoring_analytics.log b/backend/logs/monitoring_analytics/monitoring_analytics.log index bd6bdda82..2bab6a4e9 100644 --- a/backend/logs/monitoring_analytics/monitoring_analytics.log +++ b/backend/logs/monitoring_analytics/monitoring_analytics.log @@ -743,3 +743,39 @@ 2025-06-19 12:02:06 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) 2025-06-19 12:08:01 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert 2025-06-19 12:08:01 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 12:10:00 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert +2025-06-19 12:10:00 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 12:10:02 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert +2025-06-19 12:10:02 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 12:10:40 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert +2025-06-19 12:10:40 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 12:10:43 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert +2025-06-19 12:10:43 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 12:11:39 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert +2025-06-19 12:11:39 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 12:11:56 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert +2025-06-19 12:11:56 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 12:12:07 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert +2025-06-19 12:12:07 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 12:12:28 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert +2025-06-19 12:12:28 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 12:14:31 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert +2025-06-19 12:14:31 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 12:14:33 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert +2025-06-19 12:14:33 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 12:14:58 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert +2025-06-19 12:14:58 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 12:15:00 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert +2025-06-19 12:15:00 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 12:16:27 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert +2025-06-19 12:16:27 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 12:16:29 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert +2025-06-19 12:16:29 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 12:19:21 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert +2025-06-19 12:19:21 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 12:19:23 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert +2025-06-19 12:19:23 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 12:56:00 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert +2025-06-19 12:56:00 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 12:56:02 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - ✅ Monitoring & Analytics Module initialisiert +2025-06-19 12:56:02 - [monitoring_analytics] monitoring_analytics - [INFO] INFO - 📊 MASSIVE Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) diff --git a/backend/logs/permissions/permissions.log b/backend/logs/permissions/permissions.log index 59036b48c..7589cad8b 100644 --- a/backend/logs/permissions/permissions.log +++ b/backend/logs/permissions/permissions.log @@ -372,3 +372,21 @@ WHERE users.role = ?] 2025-06-19 12:02:03 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert 2025-06-19 12:02:06 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert 2025-06-19 12:08:02 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert +2025-06-19 12:10:00 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert +2025-06-19 12:10:02 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert +2025-06-19 12:10:40 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert +2025-06-19 12:10:43 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert +2025-06-19 12:11:39 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert +2025-06-19 12:11:56 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert +2025-06-19 12:12:07 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert +2025-06-19 12:12:28 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert +2025-06-19 12:14:31 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert +2025-06-19 12:14:33 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert +2025-06-19 12:14:58 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert +2025-06-19 12:15:00 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert +2025-06-19 12:16:27 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert +2025-06-19 12:16:29 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert +2025-06-19 12:19:21 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert +2025-06-19 12:19:23 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert +2025-06-19 12:56:00 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert +2025-06-19 12:56:02 - [permissions] permissions - [INFO] INFO - Admin-Berechtigungen korrigiert: 0 erstellt, 0 aktualisiert diff --git a/backend/logs/scheduler/scheduler.log b/backend/logs/scheduler/scheduler.log index 2b25c8abe..52c7276c4 100644 --- a/backend/logs/scheduler/scheduler.log +++ b/backend/logs/scheduler/scheduler.log @@ -2305,3 +2305,57 @@ 2025-06-19 12:08:00 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True 2025-06-19 12:08:02 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet 2025-06-19 12:08:02 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet +2025-06-19 12:09:59 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True +2025-06-19 12:10:00 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet +2025-06-19 12:10:00 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet +2025-06-19 12:10:01 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True +2025-06-19 12:10:02 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet +2025-06-19 12:10:02 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet +2025-06-19 12:10:39 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True +2025-06-19 12:10:41 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet +2025-06-19 12:10:41 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet +2025-06-19 12:10:42 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True +2025-06-19 12:10:43 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet +2025-06-19 12:10:43 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet +2025-06-19 12:11:38 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True +2025-06-19 12:11:39 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet +2025-06-19 12:11:39 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet +2025-06-19 12:11:55 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True +2025-06-19 12:11:56 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet +2025-06-19 12:11:56 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet +2025-06-19 12:12:06 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True +2025-06-19 12:12:07 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet +2025-06-19 12:12:07 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet +2025-06-19 12:12:27 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True +2025-06-19 12:12:29 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet +2025-06-19 12:12:29 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet +2025-06-19 12:14:30 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True +2025-06-19 12:14:31 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet +2025-06-19 12:14:31 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet +2025-06-19 12:14:32 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True +2025-06-19 12:14:34 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet +2025-06-19 12:14:34 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet +2025-06-19 12:14:57 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True +2025-06-19 12:14:58 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet +2025-06-19 12:14:58 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet +2025-06-19 12:14:59 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True +2025-06-19 12:15:00 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet +2025-06-19 12:15:00 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet +2025-06-19 12:16:25 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True +2025-06-19 12:16:27 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet +2025-06-19 12:16:27 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet +2025-06-19 12:16:28 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True +2025-06-19 12:16:29 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet +2025-06-19 12:16:29 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet +2025-06-19 12:19:20 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True +2025-06-19 12:19:21 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet +2025-06-19 12:19:21 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet +2025-06-19 12:19:22 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True +2025-06-19 12:19:23 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet +2025-06-19 12:19:23 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet +2025-06-19 12:55:57 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True +2025-06-19 12:56:00 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet +2025-06-19 12:56:00 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet +2025-06-19 12:56:01 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True +2025-06-19 12:56:02 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet +2025-06-19 12:56:02 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet diff --git a/backend/logs/security_suite/security_suite.log b/backend/logs/security_suite/security_suite.log index a1c7f45ca..9f6c7420c 100644 --- a/backend/logs/security_suite/security_suite.log +++ b/backend/logs/security_suite/security_suite.log @@ -1116,3 +1116,57 @@ 2025-06-19 12:08:00 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert 2025-06-19 12:08:00 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) 2025-06-19 12:08:01 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert +2025-06-19 12:09:59 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert +2025-06-19 12:09:59 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 12:10:00 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert +2025-06-19 12:10:01 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert +2025-06-19 12:10:01 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 12:10:02 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert +2025-06-19 12:10:39 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert +2025-06-19 12:10:39 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 12:10:40 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert +2025-06-19 12:10:42 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert +2025-06-19 12:10:42 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 12:10:43 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert +2025-06-19 12:11:38 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert +2025-06-19 12:11:38 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 12:11:39 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert +2025-06-19 12:11:55 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert +2025-06-19 12:11:55 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 12:11:56 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert +2025-06-19 12:12:06 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert +2025-06-19 12:12:06 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 12:12:07 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert +2025-06-19 12:12:27 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert +2025-06-19 12:12:27 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 12:12:28 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert +2025-06-19 12:14:30 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert +2025-06-19 12:14:30 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 12:14:31 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert +2025-06-19 12:14:32 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert +2025-06-19 12:14:32 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 12:14:33 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert +2025-06-19 12:14:57 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert +2025-06-19 12:14:57 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 12:14:58 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert +2025-06-19 12:14:59 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert +2025-06-19 12:14:59 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 12:15:00 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert +2025-06-19 12:16:25 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert +2025-06-19 12:16:25 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 12:16:27 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert +2025-06-19 12:16:28 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert +2025-06-19 12:16:28 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 12:16:29 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert +2025-06-19 12:19:20 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert +2025-06-19 12:19:20 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 12:19:21 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert +2025-06-19 12:19:22 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert +2025-06-19 12:19:22 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 12:19:23 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert +2025-06-19 12:55:57 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert +2025-06-19 12:55:57 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 12:56:00 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert +2025-06-19 12:56:01 - [security_suite] security_suite - [INFO] INFO - ✅ Security Suite Module initialisiert +2025-06-19 12:56:01 - [security_suite] security_suite - [INFO] INFO - 📊 Massive Konsolidierung: 3 Dateien → 1 Datei (67% Reduktion) +2025-06-19 12:56:02 - [security_suite] security_suite - [INFO] INFO - 🔒 Security Suite initialisiert diff --git a/backend/logs/startup/startup.log b/backend/logs/startup/startup.log index 4f7ceb9a2..ff8abee12 100644 --- a/backend/logs/startup/startup.log +++ b/backend/logs/startup/startup.log @@ -2980,3 +2980,161 @@ 2025-06-19 12:08:01 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert 2025-06-19 12:08:01 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert 2025-06-19 12:08:01 - [startup] startup - [INFO] INFO - ================================================== +2025-06-19 12:10:00 - [startup] startup - [INFO] INFO - ================================================== +2025-06-19 12:10:00 - [startup] startup - [INFO] INFO - [START] MYP Platform Backend wird gestartet... +2025-06-19 12:10:00 - [startup] startup - [INFO] INFO - 🐍 Python Version: 3.11.2 (main, Apr 28 2025, 14:11:48) [GCC 12.2.0] +2025-06-19 12:10:00 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: posix (linux) +2025-06-19 12:10:00 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: /mnt/c/Users/TTOMCZA.EMEA/Dev/Projektarbeit-MYP/backend +2025-06-19 12:10:00 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-19T12:10:00.367436 +2025-06-19 12:10:00 - [startup] startup - [INFO] INFO - ================================================== +2025-06-19 12:10:02 - [startup] startup - [INFO] INFO - ================================================== +2025-06-19 12:10:02 - [startup] startup - [INFO] INFO - [START] MYP Platform Backend wird gestartet... +2025-06-19 12:10:02 - [startup] startup - [INFO] INFO - 🐍 Python Version: 3.11.2 (main, Apr 28 2025, 14:11:48) [GCC 12.2.0] +2025-06-19 12:10:02 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: posix (linux) +2025-06-19 12:10:02 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: /mnt/c/Users/TTOMCZA.EMEA/Dev/Projektarbeit-MYP/backend +2025-06-19 12:10:02 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-19T12:10:02.096817 +2025-06-19 12:10:02 - [startup] startup - [INFO] INFO - ================================================== +2025-06-19 12:10:40 - [startup] startup - [INFO] INFO - ================================================== +2025-06-19 12:10:40 - [startup] startup - [INFO] INFO - [START] MYP Platform Backend wird gestartet... +2025-06-19 12:10:40 - [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-19 12:10:40 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: nt (win32) +2025-06-19 12:10:40 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend +2025-06-19 12:10:40 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-19T12:10:40.684829 +2025-06-19 12:10:40 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert +2025-06-19 12:10:40 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert +2025-06-19 12:10:40 - [startup] startup - [INFO] INFO - ================================================== +2025-06-19 12:10:43 - [startup] startup - [INFO] INFO - ================================================== +2025-06-19 12:10:43 - [startup] startup - [INFO] INFO - [START] MYP Platform Backend wird gestartet... +2025-06-19 12:10:43 - [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-19 12:10:43 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: nt (win32) +2025-06-19 12:10:43 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend +2025-06-19 12:10:43 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-19T12:10:43.179155 +2025-06-19 12:10:43 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert +2025-06-19 12:10:43 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert +2025-06-19 12:10:43 - [startup] startup - [INFO] INFO - ================================================== +2025-06-19 12:11:39 - [startup] startup - [INFO] INFO - ================================================== +2025-06-19 12:11:39 - [startup] startup - [INFO] INFO - [START] MYP Platform Backend wird gestartet... +2025-06-19 12:11:39 - [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-19 12:11:39 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: nt (win32) +2025-06-19 12:11:39 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend +2025-06-19 12:11:39 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-19T12:11:39.273488 +2025-06-19 12:11:39 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert +2025-06-19 12:11:39 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert +2025-06-19 12:11:39 - [startup] startup - [INFO] INFO - ================================================== +2025-06-19 12:11:56 - [startup] startup - [INFO] INFO - ================================================== +2025-06-19 12:11:56 - [startup] startup - [INFO] INFO - [START] MYP Platform Backend wird gestartet... +2025-06-19 12:11:56 - [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-19 12:11:56 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: nt (win32) +2025-06-19 12:11:56 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend +2025-06-19 12:11:56 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-19T12:11:56.328855 +2025-06-19 12:11:56 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert +2025-06-19 12:11:56 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert +2025-06-19 12:11:56 - [startup] startup - [INFO] INFO - ================================================== +2025-06-19 12:12:07 - [startup] startup - [INFO] INFO - ================================================== +2025-06-19 12:12:07 - [startup] startup - [INFO] INFO - [START] MYP Platform Backend wird gestartet... +2025-06-19 12:12:07 - [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-19 12:12:07 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: nt (win32) +2025-06-19 12:12:07 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend +2025-06-19 12:12:07 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-19T12:12:07.285900 +2025-06-19 12:12:07 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert +2025-06-19 12:12:07 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert +2025-06-19 12:12:07 - [startup] startup - [INFO] INFO - ================================================== +2025-06-19 12:12:28 - [startup] startup - [INFO] INFO - ================================================== +2025-06-19 12:12:28 - [startup] startup - [INFO] INFO - [START] MYP Platform Backend wird gestartet... +2025-06-19 12:12: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-19 12:12:28 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: nt (win32) +2025-06-19 12:12:28 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend +2025-06-19 12:12:28 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-19T12:12:28.649313 +2025-06-19 12:12:28 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert +2025-06-19 12:12:28 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert +2025-06-19 12:12:28 - [startup] startup - [INFO] INFO - ================================================== +2025-06-19 12:14:31 - [startup] startup - [INFO] INFO - ================================================== +2025-06-19 12:14:31 - [startup] startup - [INFO] INFO - [START] MYP Platform Backend wird gestartet... +2025-06-19 12:14:31 - [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-19 12:14:31 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: nt (win32) +2025-06-19 12:14:31 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend +2025-06-19 12:14:31 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-19T12:14:31.104838 +2025-06-19 12:14:31 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert +2025-06-19 12:14:31 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert +2025-06-19 12:14:31 - [startup] startup - [INFO] INFO - ================================================== +2025-06-19 12:14:33 - [startup] startup - [INFO] INFO - ================================================== +2025-06-19 12:14:33 - [startup] startup - [INFO] INFO - [START] MYP Platform Backend wird gestartet... +2025-06-19 12:14:33 - [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-19 12:14:33 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: nt (win32) +2025-06-19 12:14:33 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend +2025-06-19 12:14:33 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-19T12:14:33.741293 +2025-06-19 12:14:33 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert +2025-06-19 12:14:33 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert +2025-06-19 12:14:33 - [startup] startup - [INFO] INFO - ================================================== +2025-06-19 12:14:58 - [startup] startup - [INFO] INFO - ================================================== +2025-06-19 12:14:58 - [startup] startup - [INFO] INFO - [START] MYP Platform Backend wird gestartet... +2025-06-19 12:14:58 - [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-19 12:14:58 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: nt (win32) +2025-06-19 12:14:58 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend +2025-06-19 12:14:58 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-19T12:14:58.040367 +2025-06-19 12:14:58 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert +2025-06-19 12:14:58 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert +2025-06-19 12:14:58 - [startup] startup - [INFO] INFO - ================================================== +2025-06-19 12:15:00 - [startup] startup - [INFO] INFO - ================================================== +2025-06-19 12:15:00 - [startup] startup - [INFO] INFO - [START] MYP Platform Backend wird gestartet... +2025-06-19 12:15:00 - [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-19 12:15:00 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: nt (win32) +2025-06-19 12:15:00 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend +2025-06-19 12:15:00 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-19T12:15:00.590759 +2025-06-19 12:15:00 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert +2025-06-19 12:15:00 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert +2025-06-19 12:15:00 - [startup] startup - [INFO] INFO - ================================================== +2025-06-19 12:16:27 - [startup] startup - [INFO] INFO - ================================================== +2025-06-19 12:16:27 - [startup] startup - [INFO] INFO - [START] MYP Platform Backend wird gestartet... +2025-06-19 12:16:27 - [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-19 12:16:27 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: nt (win32) +2025-06-19 12:16:27 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend +2025-06-19 12:16:27 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-19T12:16:27.043506 +2025-06-19 12:16:27 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert +2025-06-19 12:16:27 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert +2025-06-19 12:16:27 - [startup] startup - [INFO] INFO - ================================================== +2025-06-19 12:16:29 - [startup] startup - [INFO] INFO - ================================================== +2025-06-19 12:16:29 - [startup] startup - [INFO] INFO - [START] MYP Platform Backend wird gestartet... +2025-06-19 12:16:29 - [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-19 12:16:29 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: nt (win32) +2025-06-19 12:16:29 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend +2025-06-19 12:16:29 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-19T12:16:29.512661 +2025-06-19 12:16:29 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert +2025-06-19 12:16:29 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert +2025-06-19 12:16:29 - [startup] startup - [INFO] INFO - ================================================== +2025-06-19 12:19:21 - [startup] startup - [INFO] INFO - ================================================== +2025-06-19 12:19:21 - [startup] startup - [INFO] INFO - [START] MYP Platform Backend wird gestartet... +2025-06-19 12:19:21 - [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-19 12:19:21 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: nt (win32) +2025-06-19 12:19:21 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend +2025-06-19 12:19:21 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-19T12:19:21.133167 +2025-06-19 12:19:21 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert +2025-06-19 12:19:21 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert +2025-06-19 12:19:21 - [startup] startup - [INFO] INFO - ================================================== +2025-06-19 12:19:23 - [startup] startup - [INFO] INFO - ================================================== +2025-06-19 12:19:23 - [startup] startup - [INFO] INFO - [START] MYP Platform Backend wird gestartet... +2025-06-19 12:19:23 - [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-19 12:19:23 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: nt (win32) +2025-06-19 12:19:23 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend +2025-06-19 12:19:23 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-19T12:19:23.301807 +2025-06-19 12:19:23 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert +2025-06-19 12:19:23 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert +2025-06-19 12:19:23 - [startup] startup - [INFO] INFO - ================================================== +2025-06-19 12:56:00 - [startup] startup - [INFO] INFO - ================================================== +2025-06-19 12:56:00 - [startup] startup - [INFO] INFO - [START] MYP Platform Backend wird gestartet... +2025-06-19 12:56:00 - [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-19 12:56:00 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: nt (win32) +2025-06-19 12:56:00 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend +2025-06-19 12:56:00 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-19T12:56:00.117269 +2025-06-19 12:56:00 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert +2025-06-19 12:56:00 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert +2025-06-19 12:56:00 - [startup] startup - [INFO] INFO - ================================================== +2025-06-19 12:56:02 - [startup] startup - [INFO] INFO - ================================================== +2025-06-19 12:56:02 - [startup] startup - [INFO] INFO - [START] MYP Platform Backend wird gestartet... +2025-06-19 12:56:02 - [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-19 12:56:02 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: nt (win32) +2025-06-19 12:56:02 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend +2025-06-19 12:56:02 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-19T12:56:02.289632 +2025-06-19 12:56:02 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert +2025-06-19 12:56:02 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert +2025-06-19 12:56:02 - [startup] startup - [INFO] INFO - ================================================== diff --git a/backend/logs/tapo_controller/tapo_controller.log b/backend/logs/tapo_controller/tapo_controller.log index 00dbd170c..8058280af 100644 --- a/backend/logs/tapo_controller/tapo_controller.log +++ b/backend/logs/tapo_controller/tapo_controller.log @@ -3205,3 +3205,82 @@ 2025-06-19 12:03:04 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Fehler bei Tapo-Steckdosen-Status-Check 192.168.0.106: type object 'P100' has no attribute 'P100' 2025-06-19 12:03:04 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Status-Check für 192.168.0.106 fehlgeschlagen: type object 'P100' has no attribute 'P100' 2025-06-19 12:08:00 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ tapo controller initialisiert +2025-06-19 12:09:59 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ tapo controller initialisiert +2025-06-19 12:10:01 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ tapo controller initialisiert +2025-06-19 12:10:39 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ tapo controller initialisiert +2025-06-19 12:10:42 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ tapo controller initialisiert +2025-06-19 12:10:47 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Fehler bei Tapo-Steckdosen-Status-Check 192.168.0.100: type object 'P100' has no attribute 'P100' +2025-06-19 12:10:47 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Status-Check für 192.168.0.100 fehlgeschlagen: type object 'P100' has no attribute 'P100' +2025-06-19 12:10:47 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Fehler bei Tapo-Steckdosen-Status-Check 192.168.0.101: type object 'P100' has no attribute 'P100' +2025-06-19 12:10:47 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Status-Check für 192.168.0.101 fehlgeschlagen: type object 'P100' has no attribute 'P100' +2025-06-19 12:10:47 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Fehler bei Tapo-Steckdosen-Status-Check 192.168.0.102: type object 'P100' has no attribute 'P100' +2025-06-19 12:10:47 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Status-Check für 192.168.0.102 fehlgeschlagen: type object 'P100' has no attribute 'P100' +2025-06-19 12:10:47 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Fehler bei Tapo-Steckdosen-Status-Check 192.168.0.103: type object 'P100' has no attribute 'P100' +2025-06-19 12:10:47 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Status-Check für 192.168.0.103 fehlgeschlagen: type object 'P100' has no attribute 'P100' +2025-06-19 12:10:47 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Fehler bei Tapo-Steckdosen-Status-Check 192.168.0.104: type object 'P100' has no attribute 'P100' +2025-06-19 12:10:47 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Status-Check für 192.168.0.104 fehlgeschlagen: type object 'P100' has no attribute 'P100' +2025-06-19 12:10:47 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Fehler bei Tapo-Steckdosen-Status-Check 192.168.0.106: type object 'P100' has no attribute 'P100' +2025-06-19 12:10:47 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Status-Check für 192.168.0.106 fehlgeschlagen: type object 'P100' has no attribute 'P100' +2025-06-19 12:11:38 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ tapo controller initialisiert +2025-06-19 12:11:55 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ tapo controller initialisiert +2025-06-19 12:12:06 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ tapo controller initialisiert +2025-06-19 12:12:19 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Fehler bei Tapo-Steckdosen-Status-Check 192.168.0.100: type object 'P100' has no attribute 'P100' +2025-06-19 12:12:19 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Status-Check für 192.168.0.100 fehlgeschlagen: type object 'P100' has no attribute 'P100' +2025-06-19 12:12:19 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Fehler bei Tapo-Steckdosen-Status-Check 192.168.0.101: type object 'P100' has no attribute 'P100' +2025-06-19 12:12:19 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Status-Check für 192.168.0.101 fehlgeschlagen: type object 'P100' has no attribute 'P100' +2025-06-19 12:12:19 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Fehler bei Tapo-Steckdosen-Status-Check 192.168.0.102: type object 'P100' has no attribute 'P100' +2025-06-19 12:12:19 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Status-Check für 192.168.0.102 fehlgeschlagen: type object 'P100' has no attribute 'P100' +2025-06-19 12:12:19 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Fehler bei Tapo-Steckdosen-Status-Check 192.168.0.103: type object 'P100' has no attribute 'P100' +2025-06-19 12:12:19 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Status-Check für 192.168.0.103 fehlgeschlagen: type object 'P100' has no attribute 'P100' +2025-06-19 12:12:19 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Fehler bei Tapo-Steckdosen-Status-Check 192.168.0.104: type object 'P100' has no attribute 'P100' +2025-06-19 12:12:19 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Status-Check für 192.168.0.104 fehlgeschlagen: type object 'P100' has no attribute 'P100' +2025-06-19 12:12:20 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Fehler bei Tapo-Steckdosen-Status-Check 192.168.0.106: type object 'P100' has no attribute 'P100' +2025-06-19 12:12:20 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Status-Check für 192.168.0.106 fehlgeschlagen: type object 'P100' has no attribute 'P100' +2025-06-19 12:12:27 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ tapo controller initialisiert +2025-06-19 12:14:30 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ tapo controller initialisiert +2025-06-19 12:14:32 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ tapo controller initialisiert +2025-06-19 12:14:57 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ tapo controller initialisiert +2025-06-19 12:14:59 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ tapo controller initialisiert +2025-06-19 12:16:25 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ tapo controller initialisiert +2025-06-19 12:16:28 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ tapo controller initialisiert +2025-06-19 12:16:29 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Fehler bei Tapo-Steckdosen-Status-Check 192.168.0.100: type object 'P100' has no attribute 'P100' +2025-06-19 12:16:29 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Fehler bei Tapo-Steckdosen-Status-Check 192.168.0.100: type object 'P100' has no attribute 'P100' +2025-06-19 12:16:29 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Status-Check für 192.168.0.100 fehlgeschlagen: type object 'P100' has no attribute 'P100' +2025-06-19 12:16:29 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Status-Check für 192.168.0.100 fehlgeschlagen: type object 'P100' has no attribute 'P100' +2025-06-19 12:16:29 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Fehler bei Tapo-Steckdosen-Status-Check 192.168.0.101: type object 'P100' has no attribute 'P100' +2025-06-19 12:16:29 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Status-Check für 192.168.0.101 fehlgeschlagen: type object 'P100' has no attribute 'P100' +2025-06-19 12:16:29 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Fehler bei Tapo-Steckdosen-Status-Check 192.168.0.102: type object 'P100' has no attribute 'P100' +2025-06-19 12:16:29 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Status-Check für 192.168.0.102 fehlgeschlagen: type object 'P100' has no attribute 'P100' +2025-06-19 12:16:29 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Fehler bei Tapo-Steckdosen-Status-Check 192.168.0.103: type object 'P100' has no attribute 'P100' +2025-06-19 12:16:29 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Status-Check für 192.168.0.103 fehlgeschlagen: type object 'P100' has no attribute 'P100' +2025-06-19 12:16:29 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Fehler bei Tapo-Steckdosen-Status-Check 192.168.0.104: type object 'P100' has no attribute 'P100' +2025-06-19 12:16:29 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Status-Check für 192.168.0.104 fehlgeschlagen: type object 'P100' has no attribute 'P100' +2025-06-19 12:16:30 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Fehler bei Tapo-Steckdosen-Status-Check 192.168.0.106: type object 'P100' has no attribute 'P100' +2025-06-19 12:16:30 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Status-Check für 192.168.0.106 fehlgeschlagen: type object 'P100' has no attribute 'P100' +2025-06-19 12:19:20 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ tapo controller initialisiert +2025-06-19 12:19:22 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ tapo controller initialisiert +2025-06-19 12:19:42 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Fehler bei Tapo-Steckdosen-Status-Check 192.168.0.100: HTTPConnectionPool(host='192.168.0.100', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.100 timed out. (connect timeout=2)')) +2025-06-19 12:19:42 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Status-Check für 192.168.0.100 fehlgeschlagen: HTTPConnectionPool(host='192.168.0.100', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.100 timed out. (connect timeout=2)')) +2025-06-19 12:19:44 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Fehler bei Tapo-Steckdosen-Status-Check 192.168.0.101: HTTPConnectionPool(host='192.168.0.101', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.101 timed out. (connect timeout=2)')) +2025-06-19 12:19:44 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Status-Check für 192.168.0.101 fehlgeschlagen: HTTPConnectionPool(host='192.168.0.101', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.101 timed out. (connect timeout=2)')) +2025-06-19 12:19:46 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Fehler bei Tapo-Steckdosen-Status-Check 192.168.0.102: HTTPConnectionPool(host='192.168.0.102', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.102 timed out. (connect timeout=2)')) +2025-06-19 12:19:46 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Status-Check für 192.168.0.102 fehlgeschlagen: HTTPConnectionPool(host='192.168.0.102', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.102 timed out. (connect timeout=2)')) +2025-06-19 12:19:48 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Fehler bei Tapo-Steckdosen-Status-Check 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-19 12:19:48 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Status-Check für 192.168.0.103 fehlgeschlagen: 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-19 12:19:50 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Fehler bei Tapo-Steckdosen-Status-Check 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-19 12:19:50 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Status-Check für 192.168.0.104 fehlgeschlagen: 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-19 12:20:25 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ tapo controller initialisiert +2025-06-19 12:55:57 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ tapo controller initialisiert +2025-06-19 12:56:01 - [tapo_controller] tapo_controller - [INFO] INFO - ✅ tapo controller initialisiert +2025-06-19 12:56:14 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Fehler bei Tapo-Steckdosen-Status-Check 192.168.0.100: HTTPConnectionPool(host='192.168.0.100', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.100 timed out. (connect timeout=2)')) +2025-06-19 12:56:14 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Status-Check für 192.168.0.100 fehlgeschlagen: HTTPConnectionPool(host='192.168.0.100', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.100 timed out. (connect timeout=2)')) +2025-06-19 12:56:16 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Fehler bei Tapo-Steckdosen-Status-Check 192.168.0.101: HTTPConnectionPool(host='192.168.0.101', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.101 timed out. (connect timeout=2)')) +2025-06-19 12:56:16 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Status-Check für 192.168.0.101 fehlgeschlagen: HTTPConnectionPool(host='192.168.0.101', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.101 timed out. (connect timeout=2)')) +2025-06-19 12:56:18 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Fehler bei Tapo-Steckdosen-Status-Check 192.168.0.102: HTTPConnectionPool(host='192.168.0.102', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.102 timed out. (connect timeout=2)')) +2025-06-19 12:56:18 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Status-Check für 192.168.0.102 fehlgeschlagen: HTTPConnectionPool(host='192.168.0.102', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.102 timed out. (connect timeout=2)')) +2025-06-19 12:56:20 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Fehler bei Tapo-Steckdosen-Status-Check 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-19 12:56:20 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Status-Check für 192.168.0.103 fehlgeschlagen: 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-19 12:56:22 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Fehler bei Tapo-Steckdosen-Status-Check 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-19 12:56:22 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Status-Check für 192.168.0.104 fehlgeschlagen: 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-19 12:56:25 - [tapo_controller] tapo_controller - [WARNING] WARNING - ⚠️ Fehler bei Tapo-Steckdosen-Status-Check 192.168.0.106: HTTPConnectionPool(host='192.168.0.106', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.106 timed out. (connect timeout=2)')) +2025-06-19 12:56:25 - [tapo_controller] tapo_controller - [ERROR] ERROR - ❌ Status-Check für 192.168.0.106 fehlgeschlagen: HTTPConnectionPool(host='192.168.0.106', port=80): Max retries exceeded with url: /app (Caused by ConnectTimeoutError(, 'Connection to 192.168.0.106 timed out. (connect timeout=2)')) diff --git a/backend/logs/utilities_collection/utilities_collection.log b/backend/logs/utilities_collection/utilities_collection.log index 220652cf1..5e0f6b686 100644 --- a/backend/logs/utilities_collection/utilities_collection.log +++ b/backend/logs/utilities_collection/utilities_collection.log @@ -931,3 +931,43 @@ 2025-06-19 12:02:05 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion) 2025-06-19 12:08:00 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert 2025-06-19 12:08:00 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion) +2025-06-19 12:09:58 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert +2025-06-19 12:09:59 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion) +2025-06-19 12:10:01 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert +2025-06-19 12:10:01 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion) +2025-06-19 12:10:39 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert +2025-06-19 12:10:39 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion) +2025-06-19 12:10:42 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert +2025-06-19 12:10:42 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion) +2025-06-19 12:11:38 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert +2025-06-19 12:11:38 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion) +2025-06-19 12:11:55 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert +2025-06-19 12:11:55 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion) +2025-06-19 12:12:06 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert +2025-06-19 12:12:06 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion) +2025-06-19 12:12:27 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert +2025-06-19 12:12:27 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion) +2025-06-19 12:14:29 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert +2025-06-19 12:14:29 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion) +2025-06-19 12:14:32 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert +2025-06-19 12:14:32 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion) +2025-06-19 12:14:56 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert +2025-06-19 12:14:56 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion) +2025-06-19 12:14:59 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert +2025-06-19 12:14:59 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion) +2025-06-19 12:16:25 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert +2025-06-19 12:16:25 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion) +2025-06-19 12:16:28 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert +2025-06-19 12:16:28 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion) +2025-06-19 12:19:20 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert +2025-06-19 12:19:20 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion) +2025-06-19 12:19:22 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert +2025-06-19 12:19:22 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion) +2025-06-19 12:19:37 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert +2025-06-19 12:19:37 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion) +2025-06-19 12:20:25 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert +2025-06-19 12:20:25 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion) +2025-06-19 12:55:57 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert +2025-06-19 12:55:57 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion) +2025-06-19 12:56:01 - [utilities_collection] utilities_collection - [INFO] INFO - ✅ Utilities Collection initialisiert +2025-06-19 12:56:01 - [utilities_collection] utilities_collection - [INFO] INFO - 🚨 ALLERLETZTE MEGA-Konsolidierung: 12+ Dateien → 1 Datei (90%+ Reduktion) diff --git a/backend/logs/windows_fixes/windows_fixes.log b/backend/logs/windows_fixes/windows_fixes.log index 7d934e089..840f8225c 100644 --- a/backend/logs/windows_fixes/windows_fixes.log +++ b/backend/logs/windows_fixes/windows_fixes.log @@ -369,3 +369,35 @@ 2025-06-19 12:02:05 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet 2025-06-19 12:08:00 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an... 2025-06-19 12:08:00 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet +2025-06-19 12:10:39 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an... +2025-06-19 12:10:39 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet +2025-06-19 12:10:41 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an... +2025-06-19 12:10:41 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet +2025-06-19 12:11:38 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an... +2025-06-19 12:11:38 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet +2025-06-19 12:11:55 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an... +2025-06-19 12:11:55 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet +2025-06-19 12:12:06 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an... +2025-06-19 12:12:06 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet +2025-06-19 12:12:27 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an... +2025-06-19 12:12:27 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet +2025-06-19 12:14:29 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an... +2025-06-19 12:14:29 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet +2025-06-19 12:14:32 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an... +2025-06-19 12:14:32 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet +2025-06-19 12:14:56 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an... +2025-06-19 12:14:56 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet +2025-06-19 12:14:59 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an... +2025-06-19 12:14:59 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet +2025-06-19 12:16:25 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an... +2025-06-19 12:16:25 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet +2025-06-19 12:16:28 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an... +2025-06-19 12:16:28 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet +2025-06-19 12:19:20 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an... +2025-06-19 12:19:20 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet +2025-06-19 12:19:22 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an... +2025-06-19 12:19:22 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet +2025-06-19 12:55:57 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an... +2025-06-19 12:55:57 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet +2025-06-19 12:56:01 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an... +2025-06-19 12:56:01 - [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 efcb86450..0e8a6cd25 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{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:Mercedes-Benz Text,system-ui,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}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-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{color:inherit;font-family:inherit;font-feature-settings:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height: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{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[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-duration:.3s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}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{background:var(--gradient-primary);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-feature-settings:"cv02","cv03","cv04","cv11";font-size:15px;line-height:1.65;min-height:100vh;position:relative}.dark body{background:linear-gradient(135deg,#000,#0a0a0a 50%,#000)}body:before{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%);bottom:0;content:"";left:0;pointer-events:none;position:fixed;right:0;top:0;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);backdrop-filter:blur(28px) saturate(200%) brightness(110%);-webkit-backdrop-filter:blur(28px) saturate(200%) brightness(110%);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);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);transition-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.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)}.dark .card-enhanced{background:hsla(0,0%,4%,.8);border-color:var(--color-border-primary);box-shadow:0 4px 20px var(--color-shadow)}.btn-secondary{background:var(--gradient-surface);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);color:var(--color-text-primary)}.btn-secondary:hover{background:var(--color-bg-secondary);border-color:var(--color-accent);box-shadow:0 4px 12px rgba(0,115,206,.08),inset 0 1px 0 hsla(0,0%,100%,.9);color:var(--color-accent)}.dark .input-enhanced{background:hsla(0,0%,4%,.8);border-color:var(--color-border-primary);box-shadow:0 2px 8px var(--color-shadow),inset 0 1px 0 hsla(0,0%,100%,.05);color:var(--color-text-primary)}.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)}.\!container{width:100%!important}.container{width:100%}@media (min-width:475px){.\!container{max-width:475px!important}.container{max-width:475px}}@media (min-width:640px){.\!container{max-width:640px!important}.container{max-width:640px}}@media (min-width:768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media (min-width:1024px){.\!container{max-width:1024px!important}.container{max-width:1024px}}@media (min-width:1280px){.\!container{max-width:1280px!important}.container{max-width:1280px}}@media (min-width:1536px){.\!container{max-width:1536px!important}.container{max-width:1536px}}@media (min-width:1920px){.\!container{max-width:1920px!important}.container{max-width:1920px}}@media (min-width:2560px){.\!container{max-width:2560px!important}.container{max-width:2560px}}.form-input,.form-multiselect,.form-select,.form-textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-radius:0;border-width:1px;font-size:1rem;line-height:1.5rem;padding:.5rem .75rem;--tw-shadow:0 0 #0000}.form-input:focus,.form-multiselect:focus,.form-select:focus,.form-textarea:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--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);border-color:#2563eb;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.form-input::-moz-placeholder,.form-textarea::-moz-placeholder{color:#6b7280;opacity:1}.form-input::placeholder,.form-textarea::placeholder{color:#6b7280;opacity:1}.form-input::-webkit-datetime-edit-fields-wrapper{padding:0}.form-input::-webkit-date-and-time-value{min-height:1.5em;text-align:inherit}.form-input::-webkit-datetime-edit{display:inline-flex}.form-input::-webkit-datetime-edit,.form-input::-webkit-datetime-edit-day-field,.form-input::-webkit-datetime-edit-hour-field,.form-input::-webkit-datetime-edit-meridiem-field,.form-input::-webkit-datetime-edit-millisecond-field,.form-input::-webkit-datetime-edit-minute-field,.form-input::-webkit-datetime-edit-month-field,.form-input::-webkit-datetime-edit-second-field,.form-input::-webkit-datetime-edit-year-field{padding-bottom:0;padding-top:0}.form-select{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}.form-select:where([size]:not([size="1"])){background-image:none;background-position:0 0;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-bottom:1.2em;margin-top:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);font-weight:500;text-decoration:underline}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-bottom:1.25em;margin-top:1.25em;padding-inline-start:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-bottom:1.25em;margin-top:1.25em;padding-inline-start:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-counters);font-weight:400}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-bottom:3em;margin-top:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){border-inline-start-color:var(--tw-prose-quote-borders);border-inline-start-width:.25rem;color:var(--tw-prose-quotes);font-style:italic;font-weight:500;margin-bottom:1.6em;margin-top:1.6em;padding-inline-start:1em;quotes:"\201C""\201D""\2018""\2019"}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:2.25em;font-weight:800;line-height:1.1111111;margin-bottom:.8888889em;margin-top:0}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:900}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:1.5em;font-weight:700;line-height:1.3333333;margin-bottom:1em;margin-top:2em}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:800}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:1.25em;font-weight:600;line-height:1.6;margin-bottom:.6em;margin-top:1.6em}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;line-height:1.5;margin-bottom:.5em;margin-top:1.5em}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-bottom:2em;margin-top:2em}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;box-shadow:0 0 0 1px rgb(var(--tw-prose-kbd-shadows)/10%),0 3px 0 rgb(var(--tw-prose-kbd-shadows)/10%);color:var(--tw-prose-kbd);font-family:inherit;font-size:.875em;font-weight:500;padding-inline-end:.375em;padding-bottom:.1875em;padding-top:.1875em;padding-inline-start:.375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-size:.875em;font-weight:600}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:var(--tw-prose-pre-bg);border-radius:.375rem;color:var(--tw-prose-pre-code);font-size:.875em;font-weight:400;line-height:1.7142857;margin-bottom:1.7142857em;margin-top:1.7142857em;overflow-x:auto;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-top:.8571429em;padding-inline-start:1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-radius:0;border-width:0;color:inherit;font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;padding:0}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em;line-height:1.7142857;margin-bottom:2em;margin-top:2em;table-layout:auto;width:100%}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-color:var(--tw-prose-th-borders);border-bottom-width:1px}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em;vertical-align:bottom}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-color:var(--tw-prose-td-borders);border-bottom-width:1px}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-color:var(--tw-prose-th-borders);border-top-width:1px}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body:#374151;--tw-prose-headings:#111827;--tw-prose-lead:#4b5563;--tw-prose-links:#111827;--tw-prose-bold:#111827;--tw-prose-counters:#6b7280;--tw-prose-bullets:#d1d5db;--tw-prose-hr:#e5e7eb;--tw-prose-quotes:#111827;--tw-prose-quote-borders:#e5e7eb;--tw-prose-captions:#6b7280;--tw-prose-kbd:#111827;--tw-prose-kbd-shadows:17 24 39;--tw-prose-code:#111827;--tw-prose-pre-code:#e5e7eb;--tw-prose-pre-bg:#1f2937;--tw-prose-th-borders:#d1d5db;--tw-prose-td-borders:#e5e7eb;--tw-prose-invert-body:#d1d5db;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#9ca3af;--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:#9ca3af;--tw-prose-invert-bullets:#4b5563;--tw-prose-invert-hr:#374151;--tw-prose-invert-quotes:#f3f4f6;--tw-prose-invert-quote-borders:#374151;--tw-prose-invert-captions:#9ca3af;--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:255 255 255;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#d1d5db;--tw-prose-invert-pre-bg:rgba(0,0,0,.5);--tw-prose-invert-th-borders:#4b5563;--tw-prose-invert-td-borders:#374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5em;margin-top:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-top:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.btn-mercedes{background:linear-gradient(135deg,#0073ce,#005ba3);border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:.875rem;font-weight:600;letter-spacing:.05em;padding:.75rem 1.5rem;text-transform:uppercase;transition:all .3s cubic-bezier(.4,0,.2,1)}.btn-mercedes:hover{background:linear-gradient(135deg,#005ba3,#003d82);box-shadow:0 12px 20px -5px rgba(0,115,206,.4);transform:translateY(-2px)}.btn-mercedes:focus{box-shadow:0 0 0 3px rgba(0,115,206,.3);outline:none}.btn-mercedes:active{box-shadow:inset 0 2px 4px rgba(0,0,0,.2);transform:translateY(0)}.mercedes-form-input{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:hsla(0,0%,100%,.95);border:2px solid #e5e7eb;border-radius:8px;font-weight:500;padding:.75rem 1rem;transition:all .3s cubic-bezier(.4,0,.2,1)}.mercedes-form-input:focus{background:#fff;border-color:#0073ce;box-shadow:0 0 0 4px rgba(0,115,206,.1),0 10px 15px -3px rgba(0,0,0,.1);transform:translateY(-2px)}.dashboard-card{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:linear-gradient(135deg,#fff,#f8fafc);border:2px solid #f1f5f9;border-radius:16px;overflow:hidden;position:relative;transition:all .4s cubic-bezier(.4,0,.2,1)}.dashboard-card:hover{border-color:#0073ce;box-shadow:0 25px 50px -12px rgba(0,0,0,.15);transform:translateY(-4px) scale(1.02)}.dark .bg-dark-card{background-color:#1e293b;transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.admin-stats{display:grid;gap:1rem;grid-template-columns:repeat(1,minmax(0,1fr));margin-bottom:2rem}@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{background-color:hsla(0,0%,100%,.6);border-color:rgba(229,231,235,.6);border-radius:12px;border-width:1px;overflow:hidden;padding:1.25rem;position:relative;--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-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.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 *){background-color:rgba(0,0,0,.7);border-color:rgba(51,65,85,.3)}.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{font-size:2.25rem;line-height:2.5rem;opacity:.15;position:absolute;right:1rem;top:1rem}.stat-title{font-size:.875rem;font-weight:500;line-height:1.25rem;margin-bottom:.5rem;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{font-size:1.5rem;font-weight:700;line-height:2rem;margin-bottom:.25rem;--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-tab{border-bottom-width:2px;border-color:transparent;cursor:pointer;padding:1rem 1.5rem;white-space:nowrap;--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity,1));transition-duration:.2s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.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-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-input,.form-select,.form-textarea{background-color:hsla(0,0%,100%,.6);border-color:rgba(209,213,219,.6);border-radius:.5rem;border-width:1px;padding:.5rem .75rem;width:100%;--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-duration:.2s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.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 *){background-color:rgba(30,41,59,.6);border-color:rgba(71,85,105,.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-bottom-width:calc(1px*var(--tw-divide-y-reverse));border-top-width:calc(1px*(1 - 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{font-size:.75rem;font-weight:500;letter-spacing:.05em;line-height:1rem;padding:.75rem 1.5rem;text-align:left;text-transform:uppercase;--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-bottom-width:calc(1px*var(--tw-divide-y-reverse));border-top-width:calc(1px*(1 - 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 tr{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.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{font-size:.875rem;line-height:1.25rem;padding:1rem 1.5rem;white-space:nowrap;--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{border-radius:9999px;display:inline-flex;font-size:.75rem;font-weight:600;line-height:1.25rem;padding-left:.5rem;padding-right:.5rem}.printer-card{background-color:hsla(0,0%,100%,.6);border-color:rgba(229,231,235,.6);border-radius:12px;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);--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-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.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 *){background-color:rgba(0,0,0,.7);border-color:rgba(51,65,85,.3)}.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-name{font-size:1.25rem;font-weight:700;line-height:1.75rem;--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-status{align-items:center;display:flex;margin-top:1rem}.status-indicator{border-radius:9999px;height:.75rem;margin-right:.5rem;width:.75rem}.status-running{--tw-bg-opacity:1;animation:pulse 2s infinite;background-color:rgb(34 197 94/var(--tw-bg-opacity,1))}.log-entry{border-bottom-right-radius:.5rem;border-left-width:4px;border-top-right-radius:.5rem;margin-bottom:.5rem;--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1));padding:.75rem;transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.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))}.scheduler-status{align-items:center;border-radius:.5rem;border-width:1px;display:flex;--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{border-radius:9999px;height:.5rem;overflow:hidden;width:100%;--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-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.\!notification,.notification{max-width:28rem;position:fixed;right:1rem;top:1rem;z-index:50;--tw-translate-x:100%;border-radius:16px;opacity:0;padding: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));--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-duration:.5s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.\!notification{animation:notification-slide-in .6s cubic-bezier(.4,0,.2,1)!important;backdrop-filter:blur(40px) saturate(200%) brightness(130%) contrast(110%)!important;-webkit-backdrop-filter:blur(40px) saturate(200%) brightness(130%) contrast(110%)!important;background:hsla(0,0%,100%,.08)!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}.notification{animation:notification-slide-in .6s cubic-bezier(.4,0,.2,1);backdrop-filter:blur(40px) saturate(200%) brightness(130%) contrast(110%);-webkit-backdrop-filter:blur(40px) saturate(200%) brightness(130%) contrast(110%);background:hsla(0,0%,100%,.08);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 .notification{backdrop-filter:blur(40px) saturate(180%) brightness(120%) contrast(115%);-webkit-backdrop-filter:blur(40px) saturate(180%) brightness(120%) contrast(115%);background:rgba(0,0,0,.2);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{backdrop-filter:blur(40px) saturate(180%) brightness(120%) contrast(115%)!important;-webkit-backdrop-filter:blur(40px) saturate(180%) brightness(120%) contrast(115%)!important;background:rgba(0,0,0,.2)!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;opacity: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))}.\!notification:hover{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;transform:translateY(-2px) scale(1.02)!important}.notification:hover{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);transform:translateY(-2px) scale(1.02)}.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;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);color:rgb(220 252 231/var(--tw-text-opacity,1))}.notification-error{--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);color:rgb(254 226 226/var(--tw-text-opacity,1))}.notification-warning{--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);color:rgb(254 249 195/var(--tw-text-opacity,1))}.notification-info{--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);color:rgb(219 234 254/var(--tw-text-opacity,1))}.dark .toast-notification{backdrop-filter:blur(40px) saturate(180%) brightness(120%) contrast(115%);-webkit-backdrop-filter:blur(40px) saturate(180%) brightness(120%) contrast(115%);background:rgba(0,0,0,.2);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{border-radius:16px;border-width:1px;margin-bottom:1.5rem;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);animation:alert-fade-in .5s ease-out;backdrop-filter:blur(30px) saturate(200%) brightness(120%) contrast(110%);-webkit-backdrop-filter:blur(30px) saturate(200%) brightness(120%) contrast(110%);background:hsla(0,0%,100%,.12);border:1px solid hsla(0,0%,100%,.25);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);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)}.dark .alert{backdrop-filter:blur(30px) saturate(180%) brightness(110%) contrast(120%);-webkit-backdrop-filter:blur(30px) saturate(180%) brightness(110%) contrast(120%);background:rgba(0,0,0,.3);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)}.dark .browser-notification{backdrop-filter:blur(40px) saturate(180%) brightness(120%) contrast(115%);-webkit-backdrop-filter:blur(40px) saturate(180%) brightness(120%) contrast(115%);background:rgba(0,0,0,.2);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%{-webkit-backdrop-filter:blur(0);backdrop-filter:blur(0);opacity:0;transform:translateX(100%) translateY(-20px) scale(.9)}50%{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);opacity:.8;transform:translateX(20px) translateY(-10px) scale(1.05)}to{-webkit-backdrop-filter:blur(40px);backdrop-filter:blur(40px);opacity:1;transform:translateX(0) translateY(0) scale(1)}}@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%{-webkit-backdrop-filter:blur(0);backdrop-filter:blur(0);opacity:0;transform:translateX(-100%) translateY(-20px) scale(.9)}50%{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);opacity:.8;transform:translateX(-20px) translateY(-10px) scale(1.05)}to{-webkit-backdrop-filter:blur(40px);backdrop-filter:blur(40px);opacity:1;transform:translateX(0) translateY(0) scale(1)}}@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{align-items:center;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);background:hsla(0,0%,100%,.2);border:1px solid hsla(0,0%,100%,.3);border-radius:9999px;box-shadow:0 8px 16px rgba(0,0,0,.1),inset 0 1px 0 hsla(0,0%,100%,.4);display:flex;flex-shrink:0;height:2rem;justify-content:center;margin-right:.75rem;width:2rem}.notification-content{flex:1 1 0%}.notification-title{font-size:.875rem;font-weight:600;line-height:1.25rem;margin-bottom:.25rem}.notification-message{font-size:.875rem;line-height:1.25rem;opacity:.9}.notification-close{border-radius:.5rem;margin-left:.75rem;opacity:.7;padding:.25rem;transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.notification-close:hover{opacity:1}.notification-close{backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);background:hsla(0,0%,100%,.1);border:1px solid hsla(0,0%,100%,.2)}.notification-close:hover{background:hsla(0,0%,100%,.2);transform:scale(1.1)}.notifications-container{max-width:28rem;position:fixed;right:1rem;top:1rem;z-index:50}.notifications-container>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.75rem*var(--tw-space-y-reverse));margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)))}.flash-message-light.success{background:linear-gradient(135deg,rgba(236,253,245,.95),rgba(209,250,229,.9));border-left:4px solid #10b981}.flash-message-light.error{background:linear-gradient(135deg,hsla(0,86%,97%,.95),hsla(0,94%,82%,.9));border-left:4px solid #ef4444}.flash-message-light.\!warning{background:linear-gradient(135deg,rgba(255,251,235,.95),hsla(48,96%,89%,.9))!important;border-left:4px solid #fbbf24!important}.flash-message-light.warning{background:linear-gradient(135deg,rgba(255,251,235,.95),hsla(48,96%,89%,.9));border-left:4px solid #fbbf24}.flash-message-light.info{background:linear-gradient(135deg,rgba(239,246,255,.95),rgba(219,234,254,.9));border-left:4px solid #3b82f6}.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)}.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)}.dark-mode-toggle-new{align-items:center;background:linear-gradient(135deg,rgba(248,250,252,.9),rgba(241,245,249,.8));border:1px solid rgba(226,232,240,.7);border-radius:9999px;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);cursor:pointer;display:flex;justify-content:center;padding:.625rem;position:relative;transition:all .3s cubic-bezier(.4,0,.2,1)}.dark-mode-toggle-new:hover{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);transform:translateY(-2px) scale(1.05)}.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{left:50%;position:absolute;top: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)}}.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)}.dark .hover-lift-enhanced:hover{box-shadow:0 12px 30px var(--color-shadow)}::-webkit-scrollbar{height:8px;width: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}@keyframes loading-shimmer{0%{left:-100%}to{left:100%}}.dark .focus-enhanced:focus{box-shadow:0 0 0 4px rgba(96,165,250,.15),0 4px 12px rgba(96,165,250,.2);outline-color:#60a5fa}@media (max-width:768px){.card-enhanced{border-radius:.75rem;padding:1rem}.btn-enhanced{font-size:.8rem;padding:.75rem 1.5rem}.modal-enhanced{border-radius:1rem;margin:1rem}.dark-mode-toggle-new{padding:.5rem}}@media (prefers-reduced-motion:reduce){*{animation:none!important;transition: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-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.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{backdrop-filter:blur(20px) saturate(150%) brightness(110%);-webkit-backdrop-filter:blur(20px) saturate(150%) brightness(110%);background:rgba(0,0,0,.7);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{backdrop-filter:blur(25px) saturate(180%) brightness(120%);-webkit-backdrop-filter:blur(25px) saturate(180%) brightness(120%);background:rgba(0,0,0,.9);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-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.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{backdrop-filter:blur(20px) saturate(150%) brightness(110%);-webkit-backdrop-filter:blur(20px) saturate(150%) brightness(110%);background:hsla(0,0%,100%,.3);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{backdrop-filter:blur(25px) saturate(180%) brightness(120%);-webkit-backdrop-filter:blur(25px) saturate(180%) brightness(120%);background:hsla(0,0%,100%,.5);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-color:rgba(0,0,0,.7);border-radius:.5rem;border-width:2px;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-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.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:12px;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);backdrop-filter:blur(30px) saturate(200%) brightness(120%) contrast(110%);-webkit-backdrop-filter:blur(30px) saturate(200%) brightness(120%) contrast(110%);background:hsla(0,0%,100%,.15);border:1px solid hsla(0,0%,100%,.3);border-radius:var(--card-radius);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);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);transition-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dark .glass-card{backdrop-filter:blur(30px) saturate(180%) brightness(110%) contrast(120%);-webkit-backdrop-filter:blur(30px) saturate(180%) brightness(110%) contrast(120%);background:rgba(0,0,0,.3);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:12px;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-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.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{backdrop-filter:blur(35px) saturate(200%) brightness(125%) contrast(115%);-webkit-backdrop-filter:blur(35px) saturate(200%) brightness(125%) contrast(115%);background:hsla(0,0%,100%,.12);border:1px solid hsla(0,0%,100%,.25);border-radius:var(--card-radius);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)}.dark .dashboard-card{backdrop-filter:blur(35px) saturate(180%) brightness(115%) contrast(125%);-webkit-backdrop-filter:blur(35px) saturate(180%) brightness(115%) contrast(125%);background:rgba(0,0,0,.35);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.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{align-items:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:hsla(0,0%,100%,.1);border-radius:10px;box-shadow:0 4px 6px rgba(0,0,0,.1);display:flex;justify-content:space-between;padding:.5rem 1rem;transition:all .3s ease}@media (max-width:768px){.navbar{flex-direction:column;padding:.25rem}.navbar-button{margin:.25rem 0}}.dark .navbar{backdrop-filter:blur(40px) saturate(180%) brightness(120%) contrast(120%);-webkit-backdrop-filter:blur(40px) saturate(180%) brightness(120%) contrast(120%);background:rgba(0,0,0,.25);border-bottom:1px solid hsla(0,0%,100%,.1);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)}.navbar-brand{align-items:center;display:flex}.navbar-brand>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.5rem*var(--tw-space-x-reverse))}.navbar-brand{transition-duration:.3s;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.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))}.dark .navbar-menu{backdrop-filter:blur(20px) saturate(150%) brightness(110%);-webkit-backdrop-filter:blur(20px) saturate(150%) brightness(110%);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)}.user-avatar{align-items:center;border-radius:9999px;display:flex;height:2.5rem;justify-content:center;width:2.5rem;--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1));font-size:.875rem;font-weight:700;line-height:1.25rem;--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-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.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))}.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{backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);background:hsla(0,0%,100%,.5);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{border-radius:12px;margin-top:.5rem;overflow:hidden;position:absolute;right:0;width:16rem;z-index:50;--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);animation:fadeIn .2s ease-out forwards;backdrop-filter:blur(40px) saturate(200%) brightness(130%) contrast(110%);-webkit-backdrop-filter:blur(40px) saturate(200%) brightness(130%) contrast(110%);background:hsla(0,0%,100%,.1);border:1px solid hsla(0,0%,100%,.3);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);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)}.dark .user-dropdown{backdrop-filter:blur(40px) saturate(180%) brightness(120%) contrast(120%);-webkit-backdrop-filter:blur(40px) saturate(180%) brightness(120%) contrast(120%);background:rgba(0,0,0,.4);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{align-items:center;border-bottom-width:1px;border-color:rgba(229,231,235,.8);display:flex;padding:1rem}.dropdown-header:is(.dark *){border-color:rgba(51,65,85,.3)}.dropdown-item{align-items:center;display:flex;font-size:.875rem;gap:.75rem;line-height:1.25rem;padding:.75rem 1rem;--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity,1));transition-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.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-color:rgba(229,231,235,.8);border-top-width:1px}.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{height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0,0,0,0);border-width:0;white-space:nowrap}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.invisible{visibility:hidden}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-y-0{bottom:0;top: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{left:.25rem}.left-1\/2{left:50%}.left-3{left:.75rem}.left-4{left:1rem}.right-0{right:0}.right-1{right:.25rem}.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{top:.25rem}.top-1\/2{top:50%}.top-20{top:5rem}.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-1{grid-column:span 1/span 1}.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-8{margin-left:2rem;margin-right:2rem}.mx-auto{margin-left:auto;margin-right:auto}.my-2{margin-bottom:.5rem;margin-top:.5rem}.-mb-px{margin-bottom:-1px}.-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}.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-12{height:3rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-2{height:.5rem}.h-20{height:5rem}.h-24{height:6rem}.h-28{height:7rem}.h-3{height:.75rem}.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-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\/2{width:50%}.w-1\/3{width:33.333333%}.w-10{width:2.5rem}.w-12{width:3rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-2{width:.5rem}.w-20{width:5rem}.w-24{width:6rem}.w-28{width:7rem}.w-3{width:.75rem}.w-3\/4{width:75%}.w-4{width:1rem}.w-48{width:12rem}.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-40{min-width:10rem}.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-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}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x:-50%}.-translate-x-1\/2,.-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))}.-translate-x-full{--tw-translate-x:-100%}.-translate-y-1\/2{--tw-translate-y:-50%}.-translate-y-1\/2,.translate-x-6{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-6{--tw-translate-x:1.5rem}.translate-x-full{--tw-translate-x:100%}.rotate-0,.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))}.rotate-0{--tw-rotate:0deg}.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{animation-timing-function:cubic-bezier(.8,0,1,1);transform:translateY(-25%)}50%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:none}}.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%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}.animate-slide-up{animation:slideUp .3s 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-6{grid-template-columns:repeat(6,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-end{align-items:flex-end}.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-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.25rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.25rem*var(--tw-space-x-reverse))}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.5rem*var(--tw-space-x-reverse))}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.75rem*var(--tw-space-x-reverse))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(1rem*var(--tw-space-x-reverse))}.space-x-6>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(1.5rem*var(--tw-space-x-reverse))}.space-x-8>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(2rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(2rem*var(--tw-space-x-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.25rem*var(--tw-space-y-reverse));margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)))}.space-y-16>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(4rem*var(--tw-space-y-reverse));margin-top:calc(4rem*(1 - var(--tw-space-y-reverse)))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.75rem*var(--tw-space-y-reverse));margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1.5rem*var(--tw-space-y-reverse));margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(2rem*var(--tw-space-y-reverse));margin-top:calc(2rem*(1 - var(--tw-space-y-reverse)))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(1px*var(--tw-divide-y-reverse));border-top-width:calc(1px*(1 - 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}.truncate{overflow:hidden;text-overflow:ellipsis}.truncate,.whitespace-nowrap{white-space:nowrap}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:16px}.rounded-3xl{border-radius:24px}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:12px}.rounded-b-3xl{border-bottom-left-radius:24px;border-bottom-right-radius:24px}.rounded-l-md{border-bottom-left-radius:.375rem;border-top-left-radius:.375rem}.rounded-r-md{border-bottom-right-radius:.375rem;border-top-right-radius:.375rem}.rounded-t-3xl{border-top-left-radius:24px;border-top-right-radius:24px}.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-amber-200{--tw-border-opacity:1;border-color:rgb(253 230 138/var(--tw-border-opacity,1))}.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-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.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-blue{--tw-border-opacity:1;border-color:rgb(0 115 206/var(--tw-border-opacity,1))}.border-mercedes-silver{--tw-border-opacity:1;border-color:rgb(170 169 173/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-orange-300{--tw-border-opacity:1;border-color:rgb(253 186 116/var(--tw-border-opacity,1))}.border-orange-400{--tw-border-opacity:1;border-color:rgb(251 146 60/var(--tw-border-opacity,1))}.border-purple-200\/50{border-color:rgba(233,213,255,.5)}.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\/10{border-color:hsla(0,0%,100%,.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-300{--tw-border-opacity:1;border-color:rgb(253 224 71/var(--tw-border-opacity,1))}.border-yellow-400{--tw-border-opacity:1;border-color:rgb(250 204 21/var(--tw-border-opacity,1))}.border-yellow-500{--tw-border-opacity:1;border-color:rgb(234 179 8/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-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\/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-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-error{--tw-bg-opacity:1;background-color:rgb(239 68 68/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-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/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-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-info{--tw-bg-opacity:1;background-color:rgb(59 130 246/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-blue{--tw-bg-opacity:1;background-color:rgb(0 115 206/var(--tw-bg-opacity,1))}.bg-mercedes-silver{--tw-bg-opacity:1;background-color:rgb(170 169 173/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-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-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-300{--tw-bg-opacity:1;background-color:rgb(203 213 225/var(--tw-bg-opacity,1))}.bg-slate-400{--tw-bg-opacity:1;background-color:rgb(148 163 184/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-success{--tw-bg-opacity:1;background-color:rgb(16 185 129/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-warning{--tw-bg-opacity:1;background-color:rgb(245 158 11/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\/60{background-color:hsla(0,0%,100%,.6)}.bg-white\/80{background-color:hsla(0,0%,100%,.8)}.bg-white\/90{background-color:hsla(0,0%,100%,.9)}.bg-yellow-100{--tw-bg-opacity:1;background-color:rgb(254 249 195/var(--tw-bg-opacity,1))}.bg-yellow-400{--tw-bg-opacity:1;background-color:rgb(250 204 21/var(--tw-bg-opacity,1))}.bg-yellow-50{--tw-bg-opacity:1;background-color:rgb(254 252 232/var(--tw-bg-opacity,1))}.bg-yellow-500{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity,1))}.bg-yellow-600{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity,1))}.bg-opacity-50{--tw-bg-opacity:0.5}.bg-opacity-75{--tw-bg-opacity:0.75}.bg-opacity-95{--tw-bg-opacity:0.95}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.bg-gradient-to-tr{background-image:linear-gradient(to top right,var(--tw-gradient-stops))}.from-amber-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-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-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-orange-600{--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)}.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-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-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-100{--tw-gradient-from:#f1f5f9 var(--tw-gradient-from-position);--tw-gradient-to:rgba(241,245,249,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-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-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-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-50{--tw-gradient-to:#eff6ff 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-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-100{--tw-gradient-to:#e0e7ff 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-200{--tw-gradient-to:#fed7aa 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-200{--tw-gradient-to:#e2e8f0 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-white{--tw-gradient-to:#fff 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-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-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-bottom:.125rem;padding-top:.125rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-1\.5{padding-bottom:.375rem;padding-top:.375rem}.py-12{padding-bottom:3rem;padding-top:3rem}.py-16{padding-bottom:4rem;padding-top:4rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-2\.5{padding-bottom:.625rem;padding-top:.625rem}.py-20{padding-bottom:5rem;padding-top:5rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.py-4{padding-bottom:1rem;padding-top:1rem}.py-6{padding-bottom:1.5rem;padding-top:1.5rem}.py-8{padding-bottom:2rem;padding-top:2rem}.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-3{padding-top:.75rem}.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-mercedes{font-family:Mercedes-Benz Text,Arial,sans-serif}.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-black{font-weight:900}.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-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}.tracking-widest{letter-spacing:.1em}.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-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-error{--tw-text-opacity:1;color:rgb(239 68 68/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-blue{--tw-text-opacity:1;color:rgb(0 115 206/var(--tw-text-opacity,1))}.text-mercedes-gray{--tw-text-opacity:1;color:rgb(94 94 94/var(--tw-text-opacity,1))}.text-mercedes-silver{--tw-text-opacity:1;color:rgb(170 169 173/var(--tw-text-opacity,1))}.text-orange-100{--tw-text-opacity:1;color:rgb(255 237 213/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-success{--tw-text-opacity:1;color:rgb(16 185 129/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-warning{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity,1))}.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))}.underline{text-decoration-line:underline}.overline{text-decoration-line:overline}.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-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}.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-inner{--tw-shadow:inset 0 2px 4px 0 rgba(0,0,0,.05);--tw-shadow-colored:inset 0 2px 4px 0 var(--tw-shadow-color)}.shadow-inner,.shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.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-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-md,.shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.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-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);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.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)}.ring-mercedes-blue{--tw-ring-opacity:1;--tw-ring-color:rgb(0 115 206/var(--tw-ring-opacity,1))}.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,.drop-shadow{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{--tw-drop-shadow:drop-shadow(0 1px 2px rgba(0,0,0,.1)) drop-shadow(0 1px 1px rgba(0,0,0,.06))}.\!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-md{--tw-backdrop-blur:blur(12px)}.backdrop-blur-md,.backdrop-blur-sm{-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-sm{--tw-backdrop-blur:blur(4px)}.backdrop-blur-xl{--tw-backdrop-blur:blur(24px)}.backdrop-blur-xl,.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-duration:.15s;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-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-shadow{transition-duration:.15s;transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-transform{transition-duration:.15s;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.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-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.glassmorphism{background:hsla(0,0%,100%,.05);border:1px solid hsla(0,0%,100%,.18);border-radius:16px;box-shadow:0 8px 32px 0 rgba(31,38,135,.37)}.glassmorphism,.glassmorphism-dark{backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.glassmorphism-dark{background:rgba(0,0,0,.05);border:1px solid rgba(0,0,0,.18);border-radius:16px;box-shadow:0 8px 32px 0 rgba(0,0,0,.37)}.text-shadow{text-shadow:0 2px 4px rgba(0,0,0,.1)}.flash-message{border-radius:16px;border-width:1px;font-size:.875rem;font-weight:500;line-height:1.25rem;padding:1rem 1.5rem;position:fixed;right:1rem;top: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));z-index:50;--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);animation:flash-slide-in .5s cubic-bezier(.4,0,.2,1);backdrop-filter:blur(40px) saturate(200%) brightness(130%) contrast(110%);-webkit-backdrop-filter:blur(40px) saturate(200%) brightness(130%) contrast(110%);background:hsla(0,0%,100%,.08);border:1px solid hsla(0,0%,100%,.25);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);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);transition-duration:.5s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition:all .5s cubic-bezier(.4,0,.2,1)}.dark .flash-message{backdrop-filter:blur(40px) saturate(180%) brightness(120%) contrast(115%);-webkit-backdrop-filter:blur(40px) saturate(180%) brightness(120%) contrast(115%);background:rgba(0,0,0,.2);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{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);transform:translateY(-2px) scale(1.02)}.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;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);color:rgb(219 234 254/var(--tw-text-opacity,1))}.flash-message.success{--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);color:rgb(220 252 231/var(--tw-text-opacity,1))}.flash-message.warning{--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);color:rgb(254 249 195/var(--tw-text-opacity,1))}.flash-message.error{--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);color:rgb(254 226 226/var(--tw-text-opacity,1))}@keyframes flash-slide-in{0%{-webkit-backdrop-filter:blur(0);backdrop-filter:blur(0);opacity:0;transform:translateX(100%) translateY(-20px) scale(.9)}50%{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);opacity:.8;transform:translateX(20px) translateY(-10px) scale(1.05)}to{-webkit-backdrop-filter:blur(40px);backdrop-filter:blur(40px);opacity:1;transform:translateX(0) translateY(0) scale(1)}}@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{align-items:center;border-radius:9999px;display:inline-flex;height:1.5rem;position:relative;transition-duration:.3s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);width:2.75rem}.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{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:rgba(156,163,175,.3);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{border-radius:9999px;display:inline-block;height: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));width: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);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:hsla(0,0%,100%,.9);border:1px solid hsla(0,0%,100%,.3);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:0 4px 8px rgba(0,0,0,.2),0 2px 4px rgba(0,0,0,.1);margin:.125rem;transition-duration:.3s;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dnd-toggle.active .dnd-toggle-slider{background:#fff;box-shadow:0 6px 12px rgba(239,68,68,.3),0 3px 6px rgba(239,68,68,.2);transform:translateX(1.25rem)}.dnd-indicator{align-items:center;backdrop-filter:blur(20px) saturate(150%);-webkit-backdrop-filter:blur(20px) saturate(150%);background:rgba(239,68,68,.1);border:1px solid rgba(239,68,68,.3);border-radius:.5rem;color:#ef4444;display:flex;font-size:.875rem;font-weight:500;left:1rem;line-height:1.25rem;opacity:0;padding:.5rem .75rem;position:fixed;top:1rem;transform:translateY(-100%);transition-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);z-index:50}.dnd-indicator.active{opacity:1;transform:translateY(0)}.dnd-modal{align-items:center;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);background:rgba(0,0,0,.3);display:flex;inset:0;justify-content:center;padding:1rem;position:fixed;z-index:50}.dnd-modal-content{border-radius:16px;max-width:28rem;padding:1.5rem;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));width:100%;--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);backdrop-filter:blur(40px) saturate(200%) brightness(120%);-webkit-backdrop-filter:blur(40px) saturate(200%) brightness(120%);background:hsla(0,0%,100%,.1);border:1px solid hsla(0,0%,100%,.3);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);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);transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dark .dnd-modal-content{backdrop-filter:blur(40px) saturate(180%) brightness(110%);-webkit-backdrop-filter:blur(40px) saturate(180%) brightness(110%);background:rgba(0,0,0,.3);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;pointer-events:none;transform:scale(.95)}@keyframes flash-fade-in{0%{opacity:0;transform:scale(.9)}to{opacity:.3;transform:scale(.95)}}.dnd-counter{align-items:center;border-radius:9999px;display:flex;height:1.25rem;justify-content:center;position:absolute;right:-.5rem;top:-.5rem;width:1.25rem;--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1));font-size:.75rem;font-weight:700;line-height:1rem;--tw-text-opacity:1;animation:dnd-counter-bounce .5s ease-out;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:rgba(239,68,68,.9);border:1px solid hsla(0,0%,100%,.2);box-shadow:0 2px 4px rgba(0,0,0,.2);color:rgb(255 255 255/var(--tw-text-opacity,1))}@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{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' viewBox='0 0 80 80'%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;content:"";height:100%;left:0;opacity:.03;pointer-events:none;position:fixed;top:0;transition:opacity .3s ease;width:100%;z-index:-1}.dark .mercedes-background:before{background-size:150px 150px;filter:invert(1) brightness(.3);opacity:.015}.navbar{left:0!important;position:sticky!important;right:0!important;top:0!important;width:100%!important;z-index:50!important;--navbar-blur:40px;--navbar-opacity:0.15;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;background:rgba(255,255,255,var(--navbar-opacity,.15))!important;border-bottom:1px solid hsla(0,0%,100%,.2)!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;transition:all .3s cubic-bezier(.4,0,.2,1)!important}.dark .navbar{--navbar-dark-opacity:0.25;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;background:rgba(0,0,0,var(--navbar-dark-opacity,.25))!important;border-bottom:1px solid hsla(0,0%,100%,.1)!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}.navbar.scrolled{--navbar-blur:50px;--navbar-opacity:0.25;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;background:rgba(255,255,255,var(--navbar-opacity,.25))!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;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;background:rgba(0,0,0,var(--navbar-dark-opacity,.35))!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{align-items:center;display:flex;justify-content:center}.navbar-menu-new>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.125rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.125rem*var(--tw-space-x-reverse))}@media (min-width:768px){.navbar-menu-new>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.25rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.25rem*var(--tw-space-x-reverse))}}.navbar-menu-new{max-width:100%;overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none;backdrop-filter:blur(25px) saturate(170%) brightness(108%);-webkit-backdrop-filter:blur(25px) saturate(170%) brightness(108%);background:hsla(0,0%,100%,.1);border:1px solid hsla(0,0%,100%,.15);border-radius:16px;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);margin:0 16px;padding:8px;transition:all .3s cubic-bezier(.4,0,.2,1)}.dark .navbar-menu-new{backdrop-filter:blur(30px) saturate(150%) brightness(115%);-webkit-backdrop-filter:blur(30px) saturate(150%) brightness(115%);background:rgba(0,0,0,.2);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{align-items:center;display:flex}.nav-item>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.375rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.375rem*var(--tw-space-x-reverse))}.nav-item{animation:nav-item-entrance .6s ease-out;backdrop-filter:blur(15px) saturate(140%);-webkit-backdrop-filter:blur(15px) saturate(140%);background:hsla(0,0%,100%,.08);border:1px solid hsla(0,0%,100%,.1);border-radius:12px;box-shadow:0 4px 12px rgba(0,0,0,.05),inset 0 1px 0 hsla(0,0%,100%,.15);color:rgba(15,23,42,.85);font-size:.875rem;font-weight:500;line-height:1.25rem;overflow:hidden;padding:.625rem .75rem;position:relative;transition-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.nav-item:before{background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.2),transparent);content:"";height:100%;left:-100%;position:absolute;top:0;transition:left .5s;width:100%}.nav-item:hover:before{left:100%}.nav-item:after{animation:rotate 3s linear infinite;background:conic-gradient(from 0deg at 50% 50%,transparent 0deg,hsla(0,0%,100%,.1) 30deg,transparent 60deg);content:"";height:200%;left:-50%;opacity:0;pointer-events:none;position:absolute;top:-50%;transition:opacity .3s ease;width:200%}.nav-item:hover:after{opacity:1}.dark .nav-item{backdrop-filter:blur(20px) saturate(130%);-webkit-backdrop-filter:blur(20px) saturate(130%);background:rgba(0,0,0,.15);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);color:hsla(0,0%,100%,.85)}.nav-item:hover{backdrop-filter:blur(25px) saturate(160%) brightness(110%);-webkit-backdrop-filter:blur(25px) saturate(160%) brightness(110%);background:hsla(0,0%,100%,.2);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);color:#0f172a;transform:translateY(-2px) scale(1.02)}.dark .nav-item:hover{backdrop-filter:blur(30px) saturate(150%) brightness(120%);-webkit-backdrop-filter:blur(30px) saturate(150%) brightness(120%);background:rgba(0,0,0,.25);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);color:#fff}.nav-item.active{animation:nav-item-active-glow 2s ease-in-out infinite alternate;backdrop-filter:blur(35px) saturate(180%) brightness(115%);-webkit-backdrop-filter:blur(35px) saturate(180%) brightness(115%);background:hsla(0,0%,100%,.35);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);color:#0f172a;transform:translateY(-1px)}.dark .nav-item.active{backdrop-filter:blur(40px) saturate(160%) brightness(125%);-webkit-backdrop-filter:blur(40px) saturate(160%) brightness(125%);background:rgba(0,0,0,.4);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);color:#fff}@keyframes nav-item-entrance{0%{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);opacity:0;transform:translateY(10px) scale(.95)}to{-webkit-backdrop-filter:blur(15px) saturate(140%);backdrop-filter:blur(15px) saturate(140%);opacity:1;transform:translateY(0) scale(1)}}@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{animation:glassmorphism-particles 8s ease-in-out infinite;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);bottom:0;content:"";left:0;opacity:0;pointer-events:none;position:absolute;right:0;top:0}.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{align-items:center;background:rgba(241,245,249,.8);border:1px solid hsla(0,0%,100%,.7);border-radius:9999px;box-shadow:0 2px 8px rgba(0,0,0,.05),0 1px 2px rgba(0,0,0,.04);color:#334155;cursor:pointer;display:flex;justify-content:center;padding:.5rem;position:relative;transition-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);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{left:50%;position:absolute;top: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-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.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{align-items:center;display:flex}.user-menu-button-new>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.375rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.375rem*var(--tw-space-x-reverse))}.user-menu-button-new{background:rgba(241,245,249,.6);border:1px solid hsla(0,0%,100%,.6);border-radius:.5rem;box-shadow:0 2px 8px rgba(0,0,0,.04),0 1px 2px rgba(0,0,0,.02);padding:.25rem;transition-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.user-menu-button-new:hover{--tw-translate-y:-0.125rem;background:rgba(241,245,249,.8);box-shadow:0 8px 16px rgba(0,0,0,.06),0 2px 4px rgba(0,0,0,.04);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 .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{align-items:center;border-radius:9999px;display:flex;font-size:.75rem;font-weight:600;height:1.75rem;justify-content:center;line-height:1rem;width:1.75rem;--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);background:linear-gradient(135deg,#000,#333);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:0 2px 4px rgba(0,0,0,.2),0 1px 2px rgba(0,0,0,.1);transition-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dark .user-avatar-new{background:linear-gradient(135deg,#f8fafc,#e2e8f0);box-shadow:0 2px 4px rgba(0,0,0,.3),0 1px 2px rgba(0,0,0,.2);color:#0f172a}.login-button-new{align-items:center;border-radius:.5rem;display:flex;font-size:.75rem;font-weight:500;line-height:1rem;padding:.375rem .75rem;--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);background:#000;border:1px solid hsla(0,0%,100%,.1);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:0 2px 8px rgba(0,0,0,.1),0 1px 2px rgba(0,0,0,.08);color:#fff;transition-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.login-button-new:hover{--tw-translate-y:-0.125rem;background:#333;box-shadow:0 8px 16px rgba(0,0,0,.15),0 3px 4px rgba(0,0,0,.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 .login-button-new{background:#fff;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);color:#000}.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{backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);background:hsla(0,0%,100%,.8);box-shadow:0 4px 20px rgba(0,0,0,.06);max-height:0;opacity:0;overflow:hidden;transition-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);width:100%;z-index:40}.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);border-bottom:1px solid rgba(30,41,59,.8);box-shadow:0 4px 20px rgba(0,0,0,.2)}.mobile-nav-item{align-items:center;display:flex}.mobile-nav-item>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.625rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.625rem*var(--tw-space-x-reverse))}.mobile-nav-item{border-radius:.5rem;font-size:.875rem;line-height:1.25rem;padding:.625rem .75rem;--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity,1));transition-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.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{backdrop-filter:blur(20px) saturate(180%) brightness(110%);-webkit-backdrop-filter:blur(20px) saturate(180%) brightness(110%);background:linear-gradient(135deg,rgba(240,249,255,.6),rgba(230,242,255,.6));border:none;border-radius:var(--card-radius);box-shadow:0 25px 50px rgba(0,0,0,.15),0 0 0 1px hsla(0,0%,100%,.1);color:#0f172a;margin:1rem;overflow:hidden;padding:1.5rem;position:relative;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));box-shadow:0 25px 50px rgba(0,0,0,.3),0 0 0 1px hsla(0,0%,100%,.05);color:var(--text-primary,#f8fafc)}.job-card,.stats-card{background-color:hsla(0,0%,100%,.6);border-color:rgba(229,231,235,.7);border-radius:12px;border-width:1px;--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-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.job-card:is(.dark *),.stats-card:is(.dark *){background-color:rgba(0,0,0,.8);border-color:rgba(51,65,85,.2)}.job-card,.stats-card{backdrop-filter:blur(24px) saturate(200%) brightness(120%);-webkit-backdrop-filter:blur(24px) saturate(200%) brightness(120%);border-radius:var(--card-radius);box-shadow:0 25px 50px rgba(0,0,0,.2),0 0 0 1px hsla(0,0%,100%,.1)}footer{backdrop-filter:blur(30px) saturate(180%) brightness(120%);-webkit-backdrop-filter:blur(30px) saturate(180%) brightness(120%);background:hsla(0,0%,100%,.1);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);transition-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dark footer{backdrop-filter:blur(30px) saturate(160%) brightness(110%);-webkit-backdrop-filter:blur(30px) saturate(160%) brightness(110%);background:rgba(0,0,0,.3);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-duration:.3s;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.mercedes-star-bg{position:relative}.mercedes-star-bg:after{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' viewBox='0 0 80 80'%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;bottom:0;content:"";left:0;opacity:.05;position:absolute;right:0;top:0;z-index:-1}.dark .mercedes-star-bg:after{filter:invert(1) brightness(.4);opacity:.02}.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{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);transform:translateY(-2px)}.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{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops));border-color:rgba(229,231,235,.7);border-radius:12px;border-width:1px;overflow:hidden;position:relative;--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-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.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{border-radius:var(--card-radius,1rem);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)}.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;background-image:linear-gradient(to bottom right,var(--tw-gradient-stops));border-color:rgb(187 247 208/var(--tw-border-opacity,1));--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{align-items:center;display:inline-flex}.status-badge-new>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.25rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.25rem*var(--tw-space-x-reverse))}.status-badge-new{border-radius:9999px;font-size:.75rem;font-weight:500;line-height:1rem;padding:.25rem .625rem;--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);background:hsla(0,0%,100%,.9);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);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{background-color:hsla(0,0%,100%,.8);border-color:rgba(229,231,235,.6);border-radius:.5rem;border-width:1px;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 *){background-color:rgba(30,41,59,.8);border-color:rgba(51,65,85,.3)}.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;font-size:.875rem;font-weight:500;line-height:1.25rem;padding:.5rem .875rem;transition-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.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{align-items:center;border-radius:.5rem;display:flex;font-size:.875rem;font-weight:500;gap:.5rem;justify-content:center;line-height:1.25rem;padding:.625rem 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);transition-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.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{align-items:center;display:flex;font-size:.75rem;gap:.5rem;line-height:1rem;margin-bottom:.375rem;--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{flex-shrink:0;height:.875rem;width:.875rem;--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{border-radius:9999px;height:.75rem;position:absolute;right:.625rem;top:.625rem;width:.75rem;--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);animation:pulse-ring 2s cubic-bezier(.455,.03,.515,.955) infinite;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)}@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{background-color:hsla(0,0%,100%,.6);border-color:rgba(229,231,235,.6);border-radius:.5rem;border-width:1px;display:flex;flex-wrap:wrap;font-size:.75rem;gap:.75rem;line-height:1rem;padding:.75rem;--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 *){background-color:rgba(30,41,59,.6);border-color:rgba(51,65,85,.3)}@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{border-radius:9999px;height:.625rem;width:.625rem}.status-dot.online{--tw-bg-opacity:1;animation:pulse-dot 2s cubic-bezier(.455,.03,.515,.955) infinite;background-color:rgb(34 197 94/var(--tw-bg-opacity,1))}.status-dot.offline{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}@keyframes pulse-dot{0%{opacity:1;transform:scale(.95)}50%{opacity:.8;transform:scale(1.1)}to{opacity:1;transform:scale(.95)}}.modal-new{align-items:center;background-color:rgba(0,0,0,.4);display:flex;inset:0;justify-content:center;padding:1rem;position:fixed;z-index:50;--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{background-color:hsla(0,0%,100%,.9);border-color:rgba(229,231,235,.6);border-radius:16px;border-width:1px;max-width:28rem;padding:1.5rem;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));width:100%;--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-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.modal-content-new:is(.dark *){background-color:rgba(30,41,59,.9);border-color:rgba(51,65,85,.3)}.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{align-items:center;cursor:pointer;display:flex;font-size:.875rem;line-height:1.25rem;padding:.75rem 1rem;--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity,1));transition-duration:.2s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.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:12px;border-top-right-radius:12px}.user-dropdown-item:last-child{border-bottom-left-radius:12px;border-bottom-right-radius:12px}.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{height:1rem;margin-right:.75rem;width:1rem;--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity,1));transition-duration:.2s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.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{border-top-width:1px;margin-bottom:.25rem;margin-top:.25rem;--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;font-weight:600;line-height:1.25rem;--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{font-size:.75rem;line-height:1rem;margin-top:.25rem;--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\:prose-invert:is(.dark *){--tw-prose-body:var(--tw-prose-invert-body);--tw-prose-headings:var(--tw-prose-invert-headings);--tw-prose-lead:var(--tw-prose-invert-lead);--tw-prose-links:var(--tw-prose-invert-links);--tw-prose-bold:var(--tw-prose-invert-bold);--tw-prose-counters:var(--tw-prose-invert-counters);--tw-prose-bullets:var(--tw-prose-invert-bullets);--tw-prose-hr:var(--tw-prose-invert-hr);--tw-prose-quotes:var(--tw-prose-invert-quotes);--tw-prose-quote-borders:var(--tw-prose-invert-quote-borders);--tw-prose-captions:var(--tw-prose-invert-captions);--tw-prose-kbd:var(--tw-prose-invert-kbd);--tw-prose-kbd-shadows:var(--tw-prose-invert-kbd-shadows);--tw-prose-code:var(--tw-prose-invert-code);--tw-prose-pre-code:var(--tw-prose-invert-pre-code);--tw-prose-pre-bg:var(--tw-prose-invert-pre-bg);--tw-prose-th-borders:var(--tw-prose-invert-th-borders);--tw-prose-td-borders:var(--tw-prose-invert-td-borders)}.hover\:-translate-y-0\.5:hover{--tw-translate-y:-0.125rem}.hover\:-translate-y-0\.5:hover,.hover\:-translate-y-1: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-1:hover{--tw-translate-y:-0.25rem}.hover\:-translate-y-2:hover{--tw-translate-y:-0.5rem}.hover\:-translate-y-2:hover,.hover\:scale-105: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-105:hover{--tw-scale-x:1.05;--tw-scale-y:1.05}.hover\:scale-110:hover{--tw-scale-x:1.1;--tw-scale-y:1.1}.hover\:scale-110:hover,.hover\:transform: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\: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\:border-gray-300:hover{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.hover\:border-mercedes-blue:hover{--tw-border-opacity:1;border-color:rgb(0 115 206/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-blue-100:hover{--tw-bg-opacity:1;background-color:rgb(219 234 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-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-mercedes-blue:hover{--tw-bg-opacity:1;background-color:rgb(0 115 206/var(--tw-bg-opacity,1))}.hover\:bg-mercedes-silver:hover{--tw-bg-opacity:1;background-color:rgb(170 169 173/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-500\/20:hover{background-color:rgba(239,68,68,.2)}.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-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-400:hover{--tw-bg-opacity:1;background-color:rgb(148 163 184/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\/10:hover{background-color:hsla(0,0%,100%,.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-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\:to-blue-700:hover{--tw-gradient-to:#1d4ed8 var(--tw-gradient-to-position)}.hover\:text-blue-400:hover{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity,1))}.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-700:hover{--tw-text-opacity:1;color:rgb(55 65 81/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-mercedes-blue:hover{--tw-text-opacity:1;color:rgb(0 115 206/var(--tw-text-opacity,1))}.hover\:text-orange-900:hover{--tw-text-opacity:1;color:rgb(124 45 18/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\:opacity-70:hover{opacity:.7}.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-mercedes-blue:focus{--tw-border-opacity:1;border-color:rgb(0 115 206/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\: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-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-mercedes-blue:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(0 115 206/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-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))}.active\:bg-gray-200:active{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.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\:visible{visibility:visible}.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\: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-mercedes-blue{--tw-text-opacity:1;color:rgb(0 115 206/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:disabled .group-disabled\:opacity-0{opacity:0}.group:disabled .group-disabled\:opacity-100{opacity:1}.peer:checked~.peer-checked\:border-blue-500{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity,1))}.peer:checked~.peer-checked\:border-green-500{--tw-border-opacity:1;border-color:rgb(34 197 94/var(--tw-border-opacity,1))}.peer:checked~.peer-checked\:border-slate-500{--tw-border-opacity:1;border-color:rgb(100 116 139/var(--tw-border-opacity,1))}.peer:checked~.peer-checked\:bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}.peer:checked~.peer-checked\:bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity,1))}.peer:checked~.peer-checked\:bg-slate-50{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity,1))}.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-600:is(.dark *){--tw-border-opacity:1;border-color:rgb(37 99 235/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-700:is(.dark *){--tw-border-opacity:1;border-color:rgb(194 65 12/var(--tw-border-opacity,1))}.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-400:is(.dark *){--tw-border-opacity:1;border-color:rgb(248 113 113/var(--tw-border-opacity,1))}.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-700:is(.dark *){--tw-border-opacity:1;border-color:rgb(51 65 85/var(--tw-border-opacity,1))}.dark\:border-slate-700\/50:is(.dark *){border-color:rgba(51,65,85,.5)}.dark\:border-white\/20:is(.dark *){border-color:hsla(0,0%,100%,.2)}.dark\:border-yellow-600:is(.dark *){--tw-border-opacity:1;border-color:rgb(202 138 4/var(--tw-border-opacity,1))}.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\/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-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-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-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\/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\/20:is(.dark *){background-color:rgba(124,45,18,.2)}.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\/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-slate-500:is(.dark *){--tw-bg-opacity:1;background-color:rgb(100 116 139/var(--tw-bg-opacity,1))}.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-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-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\/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-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-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-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-gray-800:is(.dark *){--tw-gradient-to:#1f2937 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-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-800:is(.dark *){--tw-gradient-to:#1e293b var(--tw-gradient-to-position)}.dark\:to-slate-900:is(.dark *){--tw-gradient-to:#0f172a 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-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-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\: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-emerald-400:hover:is(.dark *){--tw-border-opacity:1;border-color:rgb(52 211 153/var(--tw-border-opacity,1))}.dark\:hover\:bg-black\/10:hover:is(.dark *){background-color:rgba(0,0,0,.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-900\/20:hover:is(.dark *){background-color:rgba(30,58,138,.2)}.dark\:hover\:bg-blue-900\/30:hover:is(.dark *){background-color:rgba(30,58,138,.3)}.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-green-900\/30:hover:is(.dark *){background-color:rgba(20,83,45,.3)}.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-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-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\: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-orange-300:hover:is(.dark *){--tw-text-opacity:1;color:rgb(253 186 116/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-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\:focus\:ring-blue-600:focus:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgb(37 99 235/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-white:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.peer:checked~.dark\:peer-checked\:bg-blue-900\/20:is(.dark *){background-color:rgba(30,58,138,.2)}.peer:checked~.dark\:peer-checked\:bg-green-900\/20:is(.dark *){background-color:rgba(20,83,45,.2)}.peer:checked~.dark\:peer-checked\:bg-slate-900\/20:is(.dark *){background-color:rgba(15,23,42,.2)}@media (min-width:640px){.sm\:mx-0{margin-left:0;margin-right:0}.sm\:my-8{margin-bottom:2rem;margin-top:2rem}.sm\:ml-3{margin-left:.75rem}.sm\:ml-4{margin-left:1rem}.sm\:mt-0{margin-top:0}.sm\:block{display:block}.sm\:flex{display:flex}.sm\:h-10{height:2.5rem}.sm\:h-5{height:1.25rem}.sm\:w-10{width:2.5rem}.sm\:w-5{width:1.25rem}.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\:items-center{align-items:center}.sm\:justify-center{justify-content:center}.sm\:justify-between{justify-content:space-between}.sm\:space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(1rem*var(--tw-space-x-reverse))}.sm\:space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(0px*var(--tw-space-y-reverse));margin-top:calc(0px*(1 - var(--tw-space-y-reverse)))}.sm\:p-0{padding:0}.sm\:p-6{padding:1.5rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pb-4{padding-bottom:1rem}.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\: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\:ml-0{margin-left:0}.lg\:mt-0{margin-top:0}.lg\:block{display:block}.lg\:inline{display:inline}.lg\:flex{display:flex}.lg\:hidden{display:none}.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-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(0px*var(--tw-space-y-reverse));margin-top:calc(0px*(1 - var(--tw-space-y-reverse)))}.lg\:p-12{padding:3rem}.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}}@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{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:Mercedes-Benz Text,system-ui,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}hr{border-top-width:1px;color:inherit;height:0}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-size:1em;font-variation-settings:normal}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{color:inherit;font-family:inherit;font-feature-settings:inherit;font-size:100%;font-variation-settings:inherit;font-weight:inherit;letter-spacing:inherit;line-height: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{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[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-duration:.3s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}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{background:var(--gradient-primary);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-feature-settings:"cv02","cv03","cv04","cv11";font-size:15px;line-height:1.65;min-height:100vh;position:relative}.dark body{background:linear-gradient(135deg,#000,#0a0a0a 50%,#000)}body:before{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%);bottom:0;content:"";left:0;pointer-events:none;position:fixed;right:0;top:0;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);backdrop-filter:blur(28px) saturate(200%) brightness(110%);-webkit-backdrop-filter:blur(28px) saturate(200%) brightness(110%);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);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);transition-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.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)}.dark .card-enhanced{background:hsla(0,0%,4%,.8);border-color:var(--color-border-primary);box-shadow:0 4px 20px var(--color-shadow)}.btn-secondary{background:var(--gradient-surface);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);color:var(--color-text-primary)}.btn-secondary:hover{background:var(--color-bg-secondary);border-color:var(--color-accent);box-shadow:0 4px 12px rgba(0,115,206,.08),inset 0 1px 0 hsla(0,0%,100%,.9);color:var(--color-accent)}.dark .input-enhanced{background:hsla(0,0%,4%,.8);border-color:var(--color-border-primary);box-shadow:0 2px 8px var(--color-shadow),inset 0 1px 0 hsla(0,0%,100%,.05);color:var(--color-text-primary)}.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)}.\!container{width:100%!important}.container{width:100%}@media (min-width:475px){.\!container{max-width:475px!important}.container{max-width:475px}}@media (min-width:640px){.\!container{max-width:640px!important}.container{max-width:640px}}@media (min-width:768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media (min-width:1024px){.\!container{max-width:1024px!important}.container{max-width:1024px}}@media (min-width:1280px){.\!container{max-width:1280px!important}.container{max-width:1280px}}@media (min-width:1536px){.\!container{max-width:1536px!important}.container{max-width:1536px}}@media (min-width:1920px){.\!container{max-width:1920px!important}.container{max-width:1920px}}@media (min-width:2560px){.\!container{max-width:2560px!important}.container{max-width:2560px}}.form-input,.form-multiselect,.form-select,.form-textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-radius:0;border-width:1px;font-size:1rem;line-height:1.5rem;padding:.5rem .75rem;--tw-shadow:0 0 #0000}.form-input:focus,.form-multiselect:focus,.form-select:focus,.form-textarea:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#2563eb;--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);border-color:#2563eb;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.form-input::-moz-placeholder,.form-textarea::-moz-placeholder{color:#6b7280;opacity:1}.form-input::placeholder,.form-textarea::placeholder{color:#6b7280;opacity:1}.form-input::-webkit-datetime-edit-fields-wrapper{padding:0}.form-input::-webkit-date-and-time-value{min-height:1.5em;text-align:inherit}.form-input::-webkit-datetime-edit{display:inline-flex}.form-input::-webkit-datetime-edit,.form-input::-webkit-datetime-edit-day-field,.form-input::-webkit-datetime-edit-hour-field,.form-input::-webkit-datetime-edit-meridiem-field,.form-input::-webkit-datetime-edit-millisecond-field,.form-input::-webkit-datetime-edit-minute-field,.form-input::-webkit-datetime-edit-month-field,.form-input::-webkit-datetime-edit-second-field,.form-input::-webkit-datetime-edit-year-field{padding-bottom:0;padding-top:0}.form-select{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3E%3Cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='m6 8 4 4 4-4'/%3E%3C/svg%3E");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}.form-select:where([size]:not([size="1"])){background-image:none;background-position:0 0;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-bottom:1.2em;margin-top:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);font-weight:500;text-decoration:underline}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-bottom:1.25em;margin-top:1.25em;padding-inline-start:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-bottom:1.25em;margin-top:1.25em;padding-inline-start:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-counters);font-weight:400}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-bottom:3em;margin-top:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){border-inline-start-color:var(--tw-prose-quote-borders);border-inline-start-width:.25rem;color:var(--tw-prose-quotes);font-style:italic;font-weight:500;margin-bottom:1.6em;margin-top:1.6em;padding-inline-start:1em;quotes:"\201C""\201D""\2018""\2019"}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:2.25em;font-weight:800;line-height:1.1111111;margin-bottom:.8888889em;margin-top:0}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:900}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:1.5em;font-weight:700;line-height:1.3333333;margin-bottom:1em;margin-top:2em}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:800}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-size:1.25em;font-weight:600;line-height:1.6;margin-bottom:.6em;margin-top:1.6em}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;line-height:1.5;margin-bottom:.5em;margin-top:1.5em}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-bottom:2em;margin-top:2em}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){border-radius:.3125rem;box-shadow:0 0 0 1px rgb(var(--tw-prose-kbd-shadows)/10%),0 3px 0 rgb(var(--tw-prose-kbd-shadows)/10%);color:var(--tw-prose-kbd);font-family:inherit;font-size:.875em;font-weight:500;padding-inline-end:.375em;padding-bottom:.1875em;padding-top:.1875em;padding-inline-start:.375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-size:.875em;font-weight:600}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:var(--tw-prose-pre-bg);border-radius:.375rem;color:var(--tw-prose-pre-code);font-size:.875em;font-weight:400;line-height:1.7142857;margin-bottom:1.7142857em;margin-top:1.7142857em;overflow-x:auto;padding-inline-end:1.1428571em;padding-bottom:.8571429em;padding-top:.8571429em;padding-inline-start:1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-radius:0;border-width:0;color:inherit;font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;padding:0}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){font-size:.875em;line-height:1.7142857;margin-bottom:2em;margin-top:2em;table-layout:auto;width:100%}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-color:var(--tw-prose-th-borders);border-bottom-width:1px}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em;vertical-align:bottom}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-color:var(--tw-prose-td-borders);border-bottom-width:1px}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-color:var(--tw-prose-th-borders);border-top-width:1px}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body:#374151;--tw-prose-headings:#111827;--tw-prose-lead:#4b5563;--tw-prose-links:#111827;--tw-prose-bold:#111827;--tw-prose-counters:#6b7280;--tw-prose-bullets:#d1d5db;--tw-prose-hr:#e5e7eb;--tw-prose-quotes:#111827;--tw-prose-quote-borders:#e5e7eb;--tw-prose-captions:#6b7280;--tw-prose-kbd:#111827;--tw-prose-kbd-shadows:17 24 39;--tw-prose-code:#111827;--tw-prose-pre-code:#e5e7eb;--tw-prose-pre-bg:#1f2937;--tw-prose-th-borders:#d1d5db;--tw-prose-td-borders:#e5e7eb;--tw-prose-invert-body:#d1d5db;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#9ca3af;--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:#9ca3af;--tw-prose-invert-bullets:#4b5563;--tw-prose-invert-hr:#374151;--tw-prose-invert-quotes:#f3f4f6;--tw-prose-invert-quote-borders:#374151;--tw-prose-invert-captions:#9ca3af;--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:255 255 255;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#d1d5db;--tw-prose-invert-pre-bg:rgba(0,0,0,.5);--tw-prose-invert-th-borders:#4b5563;--tw-prose-invert-td-borders:#374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0;margin-top:0}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.5em;margin-top:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:.75em;margin-top:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em;margin-top:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-top:.5714286em;padding-inline-start:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:2em;margin-top:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.btn-mercedes{background:linear-gradient(135deg,#0073ce,#005ba3);border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:.875rem;font-weight:600;letter-spacing:.05em;padding:.75rem 1.5rem;text-transform:uppercase;transition:all .3s cubic-bezier(.4,0,.2,1)}.btn-mercedes:hover{background:linear-gradient(135deg,#005ba3,#003d82);box-shadow:0 12px 20px -5px rgba(0,115,206,.4);transform:translateY(-2px)}.btn-mercedes:focus{box-shadow:0 0 0 3px rgba(0,115,206,.3);outline:none}.btn-mercedes:active{box-shadow:inset 0 2px 4px rgba(0,0,0,.2);transform:translateY(0)}.mercedes-form-input{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:hsla(0,0%,100%,.95);border:2px solid #e5e7eb;border-radius:8px;font-weight:500;padding:.75rem 1rem;transition:all .3s cubic-bezier(.4,0,.2,1)}.mercedes-form-input:focus{background:#fff;border-color:#0073ce;box-shadow:0 0 0 4px rgba(0,115,206,.1),0 10px 15px -3px rgba(0,0,0,.1);transform:translateY(-2px)}.dashboard-card{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:linear-gradient(135deg,#fff,#f8fafc);border:2px solid #f1f5f9;border-radius:16px;overflow:hidden;position:relative;transition:all .4s cubic-bezier(.4,0,.2,1)}.dashboard-card:hover{border-color:#0073ce;box-shadow:0 25px 50px -12px rgba(0,0,0,.15);transform:translateY(-4px) scale(1.02)}.dark .bg-dark-card{background-color:#1e293b;transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.admin-stats{display:grid;gap:1rem;grid-template-columns:repeat(1,minmax(0,1fr));margin-bottom:2rem}@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{background-color:hsla(0,0%,100%,.6);border-color:rgba(229,231,235,.6);border-radius:12px;border-width:1px;overflow:hidden;padding:1.25rem;position:relative;--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-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.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 *){background-color:rgba(0,0,0,.7);border-color:rgba(51,65,85,.3)}.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{font-size:2.25rem;line-height:2.5rem;opacity:.15;position:absolute;right:1rem;top:1rem}.stat-title{font-size:.875rem;font-weight:500;line-height:1.25rem;margin-bottom:.5rem;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{font-size:1.5rem;font-weight:700;line-height:2rem;margin-bottom:.25rem;--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-tab{border-bottom-width:2px;border-color:transparent;cursor:pointer;padding:1rem 1.5rem;white-space:nowrap;--tw-text-opacity:1;color:rgb(71 85 105/var(--tw-text-opacity,1));transition-duration:.2s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.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-input,.form-select,.form-textarea{background-color:hsla(0,0%,100%,.6);border-color:rgba(209,213,219,.6);border-radius:.5rem;border-width:1px;padding:.5rem .75rem;width:100%;--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-duration:.2s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.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 *){background-color:rgba(30,41,59,.6);border-color:rgba(71,85,105,.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-bottom-width:calc(1px*var(--tw-divide-y-reverse));border-top-width:calc(1px*(1 - 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{font-size:.75rem;font-weight:500;letter-spacing:.05em;line-height:1rem;padding:.75rem 1.5rem;text-align:left;text-transform:uppercase;--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-bottom-width:calc(1px*var(--tw-divide-y-reverse));border-top-width:calc(1px*(1 - 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 tr{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.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{font-size:.875rem;line-height:1.25rem;padding:1rem 1.5rem;white-space:nowrap;--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{border-radius:9999px;display:inline-flex;font-size:.75rem;font-weight:600;line-height:1.25rem;padding-left:.5rem;padding-right:.5rem}.printer-card{background-color:hsla(0,0%,100%,.6);border-color:rgba(229,231,235,.6);border-radius:12px;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);--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-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.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 *){background-color:rgba(0,0,0,.7);border-color:rgba(51,65,85,.3)}.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-name{font-size:1.25rem;font-weight:700;line-height:1.75rem;--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-status{align-items:center;display:flex;margin-top:1rem}.status-indicator{border-radius:9999px;height:.75rem;margin-right:.5rem;width:.75rem}.status-running{--tw-bg-opacity:1;animation:pulse 2s infinite;background-color:rgb(34 197 94/var(--tw-bg-opacity,1))}.log-entry{border-bottom-right-radius:.5rem;border-left-width:4px;border-top-right-radius:.5rem;margin-bottom:.5rem;--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1));padding:.75rem;transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.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))}.scheduler-status{align-items:center;border-radius:.5rem;border-width:1px;display:flex;--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{border-radius:9999px;height:.5rem;overflow:hidden;width:100%;--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-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.\!notification,.notification{max-width:28rem;position:fixed;right:1rem;top:1rem;z-index:50;--tw-translate-x:100%;border-radius:16px;opacity:0;padding: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));--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-duration:.5s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.\!notification{animation:notification-slide-in .6s cubic-bezier(.4,0,.2,1)!important;backdrop-filter:blur(40px) saturate(200%) brightness(130%) contrast(110%)!important;-webkit-backdrop-filter:blur(40px) saturate(200%) brightness(130%) contrast(110%)!important;background:hsla(0,0%,100%,.08)!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}.notification{animation:notification-slide-in .6s cubic-bezier(.4,0,.2,1);backdrop-filter:blur(40px) saturate(200%) brightness(130%) contrast(110%);-webkit-backdrop-filter:blur(40px) saturate(200%) brightness(130%) contrast(110%);background:hsla(0,0%,100%,.08);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 .notification{backdrop-filter:blur(40px) saturate(180%) brightness(120%) contrast(115%);-webkit-backdrop-filter:blur(40px) saturate(180%) brightness(120%) contrast(115%);background:rgba(0,0,0,.2);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{backdrop-filter:blur(40px) saturate(180%) brightness(120%) contrast(115%)!important;-webkit-backdrop-filter:blur(40px) saturate(180%) brightness(120%) contrast(115%)!important;background:rgba(0,0,0,.2)!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;opacity: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))}.\!notification:hover{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;transform:translateY(-2px) scale(1.02)!important}.notification:hover{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);transform:translateY(-2px) scale(1.02)}.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;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);color:rgb(220 252 231/var(--tw-text-opacity,1))}.notification-error{--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);color:rgb(254 226 226/var(--tw-text-opacity,1))}.notification-warning{--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);color:rgb(254 249 195/var(--tw-text-opacity,1))}.notification-info{--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);color:rgb(219 234 254/var(--tw-text-opacity,1))}.dark .toast-notification{backdrop-filter:blur(40px) saturate(180%) brightness(120%) contrast(115%);-webkit-backdrop-filter:blur(40px) saturate(180%) brightness(120%) contrast(115%);background:rgba(0,0,0,.2);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{border-radius:16px;border-width:1px;margin-bottom:1.5rem;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);animation:alert-fade-in .5s ease-out;backdrop-filter:blur(30px) saturate(200%) brightness(120%) contrast(110%);-webkit-backdrop-filter:blur(30px) saturate(200%) brightness(120%) contrast(110%);background:hsla(0,0%,100%,.12);border:1px solid hsla(0,0%,100%,.25);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);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)}.dark .alert{backdrop-filter:blur(30px) saturate(180%) brightness(110%) contrast(120%);-webkit-backdrop-filter:blur(30px) saturate(180%) brightness(110%) contrast(120%);background:rgba(0,0,0,.3);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)}.dark .browser-notification{backdrop-filter:blur(40px) saturate(180%) brightness(120%) contrast(115%);-webkit-backdrop-filter:blur(40px) saturate(180%) brightness(120%) contrast(115%);background:rgba(0,0,0,.2);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%{-webkit-backdrop-filter:blur(0);backdrop-filter:blur(0);opacity:0;transform:translateX(100%) translateY(-20px) scale(.9)}50%{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);opacity:.8;transform:translateX(20px) translateY(-10px) scale(1.05)}to{-webkit-backdrop-filter:blur(40px);backdrop-filter:blur(40px);opacity:1;transform:translateX(0) translateY(0) scale(1)}}@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%{-webkit-backdrop-filter:blur(0);backdrop-filter:blur(0);opacity:0;transform:translateX(-100%) translateY(-20px) scale(.9)}50%{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);opacity:.8;transform:translateX(-20px) translateY(-10px) scale(1.05)}to{-webkit-backdrop-filter:blur(40px);backdrop-filter:blur(40px);opacity:1;transform:translateX(0) translateY(0) scale(1)}}@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{align-items:center;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);background:hsla(0,0%,100%,.2);border:1px solid hsla(0,0%,100%,.3);border-radius:9999px;box-shadow:0 8px 16px rgba(0,0,0,.1),inset 0 1px 0 hsla(0,0%,100%,.4);display:flex;flex-shrink:0;height:2rem;justify-content:center;margin-right:.75rem;width:2rem}.notification-content{flex:1 1 0%}.notification-title{font-size:.875rem;font-weight:600;line-height:1.25rem;margin-bottom:.25rem}.notification-message{font-size:.875rem;line-height:1.25rem;opacity:.9}.notification-close{border-radius:.5rem;margin-left:.75rem;opacity:.7;padding:.25rem;transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.notification-close:hover{opacity:1}.notification-close{backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);background:hsla(0,0%,100%,.1);border:1px solid hsla(0,0%,100%,.2)}.notification-close:hover{background:hsla(0,0%,100%,.2);transform:scale(1.1)}.notifications-container{max-width:28rem;position:fixed;right:1rem;top:1rem;z-index:50}.notifications-container>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.75rem*var(--tw-space-y-reverse));margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)))}.flash-message-light.success{background:linear-gradient(135deg,rgba(236,253,245,.95),rgba(209,250,229,.9));border-left:4px solid #10b981}.flash-message-light.error{background:linear-gradient(135deg,hsla(0,86%,97%,.95),hsla(0,94%,82%,.9));border-left:4px solid #ef4444}.flash-message-light.\!warning{background:linear-gradient(135deg,rgba(255,251,235,.95),hsla(48,96%,89%,.9))!important;border-left:4px solid #fbbf24!important}.flash-message-light.warning{background:linear-gradient(135deg,rgba(255,251,235,.95),hsla(48,96%,89%,.9));border-left:4px solid #fbbf24}.flash-message-light.info{background:linear-gradient(135deg,rgba(239,246,255,.95),rgba(219,234,254,.9));border-left:4px solid #3b82f6}.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)}.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)}.dark-mode-toggle-new{align-items:center;background:linear-gradient(135deg,rgba(248,250,252,.9),rgba(241,245,249,.8));border:1px solid rgba(226,232,240,.7);border-radius:9999px;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);cursor:pointer;display:flex;justify-content:center;padding:.625rem;position:relative;transition:all .3s cubic-bezier(.4,0,.2,1)}.dark-mode-toggle-new:hover{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);transform:translateY(-2px) scale(1.05)}.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{left:50%;position:absolute;top: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)}}.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)}.dark .hover-lift-enhanced:hover{box-shadow:0 12px 30px var(--color-shadow)}::-webkit-scrollbar{height:8px;width: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}@keyframes loading-shimmer{0%{left:-100%}to{left:100%}}.dark .focus-enhanced:focus{box-shadow:0 0 0 4px rgba(96,165,250,.15),0 4px 12px rgba(96,165,250,.2);outline-color:#60a5fa}@media (max-width:768px){.card-enhanced{border-radius:.75rem;padding:1rem}.btn-enhanced{font-size:.8rem;padding:.75rem 1.5rem}.modal-enhanced{border-radius:1rem;margin:1rem}.dark-mode-toggle-new{padding:.5rem}}@media (prefers-reduced-motion:reduce){*{animation:none!important;transition: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-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.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{backdrop-filter:blur(20px) saturate(150%) brightness(110%);-webkit-backdrop-filter:blur(20px) saturate(150%) brightness(110%);background:rgba(0,0,0,.7);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{backdrop-filter:blur(25px) saturate(180%) brightness(120%);-webkit-backdrop-filter:blur(25px) saturate(180%) brightness(120%);background:rgba(0,0,0,.9);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-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.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{backdrop-filter:blur(20px) saturate(150%) brightness(110%);-webkit-backdrop-filter:blur(20px) saturate(150%) brightness(110%);background:hsla(0,0%,100%,.3);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{backdrop-filter:blur(25px) saturate(180%) brightness(120%);-webkit-backdrop-filter:blur(25px) saturate(180%) brightness(120%);background:hsla(0,0%,100%,.5);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-color:rgba(0,0,0,.7);border-radius:.5rem;border-width:2px;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-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.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:12px;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);backdrop-filter:blur(30px) saturate(200%) brightness(120%) contrast(110%);-webkit-backdrop-filter:blur(30px) saturate(200%) brightness(120%) contrast(110%);background:hsla(0,0%,100%,.15);border:1px solid hsla(0,0%,100%,.3);border-radius:var(--card-radius);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);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);transition-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dark .glass-card{backdrop-filter:blur(30px) saturate(180%) brightness(110%) contrast(120%);-webkit-backdrop-filter:blur(30px) saturate(180%) brightness(110%) contrast(120%);background:rgba(0,0,0,.3);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:12px;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-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.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{backdrop-filter:blur(35px) saturate(200%) brightness(125%) contrast(115%);-webkit-backdrop-filter:blur(35px) saturate(200%) brightness(125%) contrast(115%);background:hsla(0,0%,100%,.12);border:1px solid hsla(0,0%,100%,.25);border-radius:var(--card-radius);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)}.dark .dashboard-card{backdrop-filter:blur(35px) saturate(180%) brightness(115%) contrast(125%);-webkit-backdrop-filter:blur(35px) saturate(180%) brightness(115%) contrast(125%);background:rgba(0,0,0,.35);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.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{align-items:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:hsla(0,0%,100%,.1);border-radius:10px;box-shadow:0 4px 6px rgba(0,0,0,.1);display:flex;justify-content:space-between;padding:.5rem 1rem;transition:all .3s ease}@media (max-width:768px){.navbar{flex-direction:column;padding:.25rem}.navbar-button{margin:.25rem 0}}.dark .navbar{backdrop-filter:blur(40px) saturate(180%) brightness(120%) contrast(120%);-webkit-backdrop-filter:blur(40px) saturate(180%) brightness(120%) contrast(120%);background:rgba(0,0,0,.25);border-bottom:1px solid hsla(0,0%,100%,.1);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)}.navbar-brand{align-items:center;display:flex}.navbar-brand>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.5rem*var(--tw-space-x-reverse))}.navbar-brand{transition-duration:.3s;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.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))}.dark .navbar-menu{backdrop-filter:blur(20px) saturate(150%) brightness(110%);-webkit-backdrop-filter:blur(20px) saturate(150%) brightness(110%);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)}.user-avatar{align-items:center;border-radius:9999px;display:flex;height:2.5rem;justify-content:center;width:2.5rem;--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1));font-size:.875rem;font-weight:700;line-height:1.25rem;--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-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.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))}.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{backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);background:hsla(0,0%,100%,.5);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{border-radius:12px;margin-top:.5rem;overflow:hidden;position:absolute;right:0;width:16rem;z-index:50;--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);animation:fadeIn .2s ease-out forwards;backdrop-filter:blur(40px) saturate(200%) brightness(130%) contrast(110%);-webkit-backdrop-filter:blur(40px) saturate(200%) brightness(130%) contrast(110%);background:hsla(0,0%,100%,.1);border:1px solid hsla(0,0%,100%,.3);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);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)}.dark .user-dropdown{backdrop-filter:blur(40px) saturate(180%) brightness(120%) contrast(120%);-webkit-backdrop-filter:blur(40px) saturate(180%) brightness(120%) contrast(120%);background:rgba(0,0,0,.4);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{align-items:center;border-bottom-width:1px;border-color:rgba(229,231,235,.8);display:flex;padding:1rem}.dropdown-header:is(.dark *){border-color:rgba(51,65,85,.3)}.dropdown-item{align-items:center;display:flex;font-size:.875rem;gap:.75rem;line-height:1.25rem;padding:.75rem 1rem;--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity,1));transition-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.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-color:rgba(229,231,235,.8);border-top-width:1px}.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{height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;clip:rect(0,0,0,0);border-width:0;white-space:nowrap}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.invisible{visibility:hidden}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-y-0{bottom:0;top: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{left:.25rem}.left-1\/2{left:50%}.left-3{left:.75rem}.left-4{left:1rem}.right-0{right:0}.right-1{right:.25rem}.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{top:.25rem}.top-1\/2{top:50%}.top-20{top:5rem}.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-20{z-index:20}.z-40{z-index:40}.z-50{z-index:50}.col-span-1{grid-column:span 1/span 1}.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-8{margin-left:2rem;margin-right:2rem}.mx-auto{margin-left:auto;margin-right:auto}.my-2{margin-bottom:.5rem;margin-top:.5rem}.-mb-px{margin-bottom:-1px}.-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}.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}.contents{display:contents}.list-item{display:list-item}.hidden{display:none}.h-0{height:0}.h-1{height:.25rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-2{height:.5rem}.h-20{height:5rem}.h-24{height:6rem}.h-28{height:7rem}.h-3{height:.75rem}.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-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\/2{width:50%}.w-1\/3{width:33.333333%}.w-10{width:2.5rem}.w-12{width:3rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-2{width:.5rem}.w-20{width:5rem}.w-24{width:6rem}.w-28{width:7rem}.w-3{width:.75rem}.w-3\/4{width:75%}.w-4{width:1rem}.w-48{width:12rem}.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-40{min-width:10rem}.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-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}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x:-50%}.-translate-x-1\/2,.-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))}.-translate-x-full{--tw-translate-x:-100%}.-translate-y-1\/2{--tw-translate-y:-50%}.-translate-y-1\/2,.translate-x-6{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-6{--tw-translate-x:1.5rem}.translate-x-full{--tw-translate-x:100%}.rotate-0,.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))}.rotate-0{--tw-rotate:0deg}.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{animation-timing-function:cubic-bezier(.8,0,1,1);transform:translateY(-25%)}50%{animation-timing-function:cubic-bezier(0,0,.2,1);transform:none}}.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%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}.animate-slide-up{animation:slideUp .3s 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-6{grid-template-columns:repeat(6,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-end{align-items:flex-end}.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-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.25rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.25rem*var(--tw-space-x-reverse))}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.5rem*var(--tw-space-x-reverse))}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.75rem*var(--tw-space-x-reverse))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(1rem*var(--tw-space-x-reverse))}.space-x-6>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(1.5rem*var(--tw-space-x-reverse))}.space-x-8>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(2rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(2rem*var(--tw-space-x-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.25rem*var(--tw-space-y-reverse));margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)))}.space-y-16>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(4rem*var(--tw-space-y-reverse));margin-top:calc(4rem*(1 - var(--tw-space-y-reverse)))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.75rem*var(--tw-space-y-reverse));margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1.5rem*var(--tw-space-y-reverse));margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(2rem*var(--tw-space-y-reverse));margin-top:calc(2rem*(1 - var(--tw-space-y-reverse)))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(1px*var(--tw-divide-y-reverse));border-top-width:calc(1px*(1 - 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}.truncate{overflow:hidden;text-overflow:ellipsis}.truncate,.whitespace-nowrap{white-space:nowrap}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:16px}.rounded-3xl{border-radius:24px}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-xl{border-radius:12px}.rounded-b-3xl{border-bottom-left-radius:24px;border-bottom-right-radius:24px}.rounded-l-md{border-bottom-left-radius:.375rem;border-top-left-radius:.375rem}.rounded-r-md{border-bottom-right-radius:.375rem;border-top-right-radius:.375rem}.rounded-t-3xl{border-top-left-radius:24px;border-top-right-radius:24px}.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-amber-200{--tw-border-opacity:1;border-color:rgb(253 230 138/var(--tw-border-opacity,1))}.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-300{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.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-green-600{--tw-border-opacity:1;border-color:rgb(22 163 74/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-blue{--tw-border-opacity:1;border-color:rgb(0 115 206/var(--tw-border-opacity,1))}.border-mercedes-silver{--tw-border-opacity:1;border-color:rgb(170 169 173/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-orange-300{--tw-border-opacity:1;border-color:rgb(253 186 116/var(--tw-border-opacity,1))}.border-orange-400{--tw-border-opacity:1;border-color:rgb(251 146 60/var(--tw-border-opacity,1))}.border-purple-200{--tw-border-opacity:1;border-color:rgb(233 213 255/var(--tw-border-opacity,1))}.border-purple-200\/50{border-color:rgba(233,213,255,.5)}.border-purple-600{--tw-border-opacity:1;border-color:rgb(147 51 234/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\/10{border-color:hsla(0,0%,100%,.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-300{--tw-border-opacity:1;border-color:rgb(253 224 71/var(--tw-border-opacity,1))}.border-yellow-400{--tw-border-opacity:1;border-color:rgb(250 204 21/var(--tw-border-opacity,1))}.border-yellow-500{--tw-border-opacity:1;border-color:rgb(234 179 8/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-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\/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-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-error{--tw-bg-opacity:1;background-color:rgb(239 68 68/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-gray-800{--tw-bg-opacity:1;background-color:rgb(31 41 55/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-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-info{--tw-bg-opacity:1;background-color:rgb(59 130 246/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-blue{--tw-bg-opacity:1;background-color:rgb(0 115 206/var(--tw-bg-opacity,1))}.bg-mercedes-silver{--tw-bg-opacity:1;background-color:rgb(170 169 173/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-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-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-300{--tw-bg-opacity:1;background-color:rgb(203 213 225/var(--tw-bg-opacity,1))}.bg-slate-400{--tw-bg-opacity:1;background-color:rgb(148 163 184/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-success{--tw-bg-opacity:1;background-color:rgb(16 185 129/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-warning{--tw-bg-opacity:1;background-color:rgb(245 158 11/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\/60{background-color:hsla(0,0%,100%,.6)}.bg-white\/80{background-color:hsla(0,0%,100%,.8)}.bg-white\/90{background-color:hsla(0,0%,100%,.9)}.bg-yellow-100{--tw-bg-opacity:1;background-color:rgb(254 249 195/var(--tw-bg-opacity,1))}.bg-yellow-400{--tw-bg-opacity:1;background-color:rgb(250 204 21/var(--tw-bg-opacity,1))}.bg-yellow-50{--tw-bg-opacity:1;background-color:rgb(254 252 232/var(--tw-bg-opacity,1))}.bg-yellow-500{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity,1))}.bg-yellow-600{--tw-bg-opacity:1;background-color:rgb(202 138 4/var(--tw-bg-opacity,1))}.bg-opacity-50{--tw-bg-opacity:0.5}.bg-opacity-75{--tw-bg-opacity:0.75}.bg-opacity-95{--tw-bg-opacity:0.95}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}.bg-gradient-to-tr{background-image:linear-gradient(to top right,var(--tw-gradient-stops))}.from-amber-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-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-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-orange-600{--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)}.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-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-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-100{--tw-gradient-from:#f1f5f9 var(--tw-gradient-from-position);--tw-gradient-to:rgba(241,245,249,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-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-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-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-50{--tw-gradient-to:#eff6ff var(--tw-gradient-to-position)}.to-blue-600{--tw-gradient-to:#2563eb var(--tw-gradient-to-position)}.to-emerald-50{--tw-gradient-to:#ecfdf5 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-100{--tw-gradient-to:#e0e7ff 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-200{--tw-gradient-to:#fed7aa 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-200{--tw-gradient-to:#e2e8f0 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-white{--tw-gradient-to:#fff 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-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-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-bottom:.125rem;padding-top:.125rem}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-1\.5{padding-bottom:.375rem;padding-top:.375rem}.py-12{padding-bottom:3rem;padding-top:3rem}.py-16{padding-bottom:4rem;padding-top:4rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-2\.5{padding-bottom:.625rem;padding-top:.625rem}.py-20{padding-bottom:5rem;padding-top:5rem}.py-3{padding-bottom:.75rem;padding-top:.75rem}.py-4{padding-bottom:1rem;padding-top:1rem}.py-6{padding-bottom:1.5rem;padding-top:1.5rem}.py-8{padding-bottom:2rem;padding-top:2rem}.pb-16{padding-bottom:4rem}.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-3{padding-top:.75rem}.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-mercedes{font-family:Mercedes-Benz Text,Arial,sans-serif}.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-black{font-weight:900}.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-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}.tracking-widest{letter-spacing:.1em}.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-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-error{--tw-text-opacity:1;color:rgb(239 68 68/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-blue{--tw-text-opacity:1;color:rgb(0 115 206/var(--tw-text-opacity,1))}.text-mercedes-gray{--tw-text-opacity:1;color:rgb(94 94 94/var(--tw-text-opacity,1))}.text-mercedes-silver{--tw-text-opacity:1;color:rgb(170 169 173/var(--tw-text-opacity,1))}.text-orange-100{--tw-text-opacity:1;color:rgb(255 237 213/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-success{--tw-text-opacity:1;color:rgb(16 185 129/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-warning{--tw-text-opacity:1;color:rgb(245 158 11/var(--tw-text-opacity,1))}.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-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-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}.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-inner{--tw-shadow:inset 0 2px 4px 0 rgba(0,0,0,.05);--tw-shadow-colored:inset 0 2px 4px 0 var(--tw-shadow-color)}.shadow-inner,.shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.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-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-md,.shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.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-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);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.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)}.ring-mercedes-blue{--tw-ring-opacity:1;--tw-ring-color:rgb(0 115 206/var(--tw-ring-opacity,1))}.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,.drop-shadow{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{--tw-drop-shadow:drop-shadow(0 1px 2px rgba(0,0,0,.1)) drop-shadow(0 1px 1px rgba(0,0,0,.06))}.\!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-md{--tw-backdrop-blur:blur(12px)}.backdrop-blur-md,.backdrop-blur-sm{-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-sm{--tw-backdrop-blur:blur(4px)}.backdrop-blur-xl{--tw-backdrop-blur:blur(24px)}.backdrop-blur-xl,.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-duration:.15s;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-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-duration:.15s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-shadow{transition-duration:.15s;transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-transform{transition-duration:.15s;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.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-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.glassmorphism{background:hsla(0,0%,100%,.05);border:1px solid hsla(0,0%,100%,.18);border-radius:16px;box-shadow:0 8px 32px 0 rgba(31,38,135,.37)}.glassmorphism,.glassmorphism-dark{backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.glassmorphism-dark{background:rgba(0,0,0,.05);border:1px solid rgba(0,0,0,.18);border-radius:16px;box-shadow:0 8px 32px 0 rgba(0,0,0,.37)}.text-shadow{text-shadow:0 2px 4px rgba(0,0,0,.1)}.flash-message{border-radius:16px;border-width:1px;font-size:.875rem;font-weight:500;line-height:1.25rem;padding:1rem 1.5rem;position:fixed;right:1rem;top: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));z-index:50;--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);animation:flash-slide-in .5s cubic-bezier(.4,0,.2,1);backdrop-filter:blur(40px) saturate(200%) brightness(130%) contrast(110%);-webkit-backdrop-filter:blur(40px) saturate(200%) brightness(130%) contrast(110%);background:hsla(0,0%,100%,.08);border:1px solid hsla(0,0%,100%,.25);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);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);transition-duration:.5s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition:all .5s cubic-bezier(.4,0,.2,1)}.dark .flash-message{backdrop-filter:blur(40px) saturate(180%) brightness(120%) contrast(115%);-webkit-backdrop-filter:blur(40px) saturate(180%) brightness(120%) contrast(115%);background:rgba(0,0,0,.2);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{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);transform:translateY(-2px) scale(1.02)}.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;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);color:rgb(219 234 254/var(--tw-text-opacity,1))}.flash-message.success{--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);color:rgb(220 252 231/var(--tw-text-opacity,1))}.flash-message.warning{--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);color:rgb(254 249 195/var(--tw-text-opacity,1))}.flash-message.error{--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);color:rgb(254 226 226/var(--tw-text-opacity,1))}@keyframes flash-slide-in{0%{-webkit-backdrop-filter:blur(0);backdrop-filter:blur(0);opacity:0;transform:translateX(100%) translateY(-20px) scale(.9)}50%{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);opacity:.8;transform:translateX(20px) translateY(-10px) scale(1.05)}to{-webkit-backdrop-filter:blur(40px);backdrop-filter:blur(40px);opacity:1;transform:translateX(0) translateY(0) scale(1)}}@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{align-items:center;border-radius:9999px;display:inline-flex;height:1.5rem;position:relative;transition-duration:.3s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);width:2.75rem}.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{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:rgba(156,163,175,.3);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{border-radius:9999px;display:inline-block;height: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));width: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);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:hsla(0,0%,100%,.9);border:1px solid hsla(0,0%,100%,.3);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:0 4px 8px rgba(0,0,0,.2),0 2px 4px rgba(0,0,0,.1);margin:.125rem;transition-duration:.3s;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dnd-toggle.active .dnd-toggle-slider{background:#fff;box-shadow:0 6px 12px rgba(239,68,68,.3),0 3px 6px rgba(239,68,68,.2);transform:translateX(1.25rem)}.dnd-indicator{align-items:center;backdrop-filter:blur(20px) saturate(150%);-webkit-backdrop-filter:blur(20px) saturate(150%);background:rgba(239,68,68,.1);border:1px solid rgba(239,68,68,.3);border-radius:.5rem;color:#ef4444;display:flex;font-size:.875rem;font-weight:500;left:1rem;line-height:1.25rem;opacity:0;padding:.5rem .75rem;position:fixed;top:1rem;transform:translateY(-100%);transition-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);z-index:50}.dnd-indicator.active{opacity:1;transform:translateY(0)}.dnd-modal{align-items:center;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);background:rgba(0,0,0,.3);display:flex;inset:0;justify-content:center;padding:1rem;position:fixed;z-index:50}.dnd-modal-content{border-radius:16px;max-width:28rem;padding:1.5rem;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));width:100%;--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);backdrop-filter:blur(40px) saturate(200%) brightness(120%);-webkit-backdrop-filter:blur(40px) saturate(200%) brightness(120%);background:hsla(0,0%,100%,.1);border:1px solid hsla(0,0%,100%,.3);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);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);transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dark .dnd-modal-content{backdrop-filter:blur(40px) saturate(180%) brightness(110%);-webkit-backdrop-filter:blur(40px) saturate(180%) brightness(110%);background:rgba(0,0,0,.3);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;pointer-events:none;transform:scale(.95)}@keyframes flash-fade-in{0%{opacity:0;transform:scale(.9)}to{opacity:.3;transform:scale(.95)}}.dnd-counter{align-items:center;border-radius:9999px;display:flex;height:1.25rem;justify-content:center;position:absolute;right:-.5rem;top:-.5rem;width:1.25rem;--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1));font-size:.75rem;font-weight:700;line-height:1rem;--tw-text-opacity:1;animation:dnd-counter-bounce .5s ease-out;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:rgba(239,68,68,.9);border:1px solid hsla(0,0%,100%,.2);box-shadow:0 2px 4px rgba(0,0,0,.2);color:rgb(255 255 255/var(--tw-text-opacity,1))}@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{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' viewBox='0 0 80 80'%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;content:"";height:100%;left:0;opacity:.03;pointer-events:none;position:fixed;top:0;transition:opacity .3s ease;width:100%;z-index:-1}.dark .mercedes-background:before{background-size:150px 150px;filter:invert(1) brightness(.3);opacity:.015}.navbar{left:0!important;position:sticky!important;right:0!important;top:0!important;width:100%!important;z-index:50!important;--navbar-blur:40px;--navbar-opacity:0.15;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;background:rgba(255,255,255,var(--navbar-opacity,.15))!important;border-bottom:1px solid hsla(0,0%,100%,.2)!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;transition:all .3s cubic-bezier(.4,0,.2,1)!important}.dark .navbar{--navbar-dark-opacity:0.25;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;background:rgba(0,0,0,var(--navbar-dark-opacity,.25))!important;border-bottom:1px solid hsla(0,0%,100%,.1)!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}.navbar.scrolled{--navbar-blur:50px;--navbar-opacity:0.25;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;background:rgba(255,255,255,var(--navbar-opacity,.25))!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;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;background:rgba(0,0,0,var(--navbar-dark-opacity,.35))!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{align-items:center;display:flex;justify-content:center}.navbar-menu-new>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.125rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.125rem*var(--tw-space-x-reverse))}@media (min-width:768px){.navbar-menu-new>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.25rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.25rem*var(--tw-space-x-reverse))}}.navbar-menu-new{max-width:100%;overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none;backdrop-filter:blur(25px) saturate(170%) brightness(108%);-webkit-backdrop-filter:blur(25px) saturate(170%) brightness(108%);background:hsla(0,0%,100%,.1);border:1px solid hsla(0,0%,100%,.15);border-radius:16px;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);margin:0 16px;padding:8px;transition:all .3s cubic-bezier(.4,0,.2,1)}.dark .navbar-menu-new{backdrop-filter:blur(30px) saturate(150%) brightness(115%);-webkit-backdrop-filter:blur(30px) saturate(150%) brightness(115%);background:rgba(0,0,0,.2);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{align-items:center;display:flex}.nav-item>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.375rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.375rem*var(--tw-space-x-reverse))}.nav-item{animation:nav-item-entrance .6s ease-out;backdrop-filter:blur(15px) saturate(140%);-webkit-backdrop-filter:blur(15px) saturate(140%);background:hsla(0,0%,100%,.08);border:1px solid hsla(0,0%,100%,.1);border-radius:12px;box-shadow:0 4px 12px rgba(0,0,0,.05),inset 0 1px 0 hsla(0,0%,100%,.15);color:rgba(15,23,42,.85);font-size:.875rem;font-weight:500;line-height:1.25rem;overflow:hidden;padding:.625rem .75rem;position:relative;transition-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.nav-item:before{background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.2),transparent);content:"";height:100%;left:-100%;position:absolute;top:0;transition:left .5s;width:100%}.nav-item:hover:before{left:100%}.nav-item:after{animation:rotate 3s linear infinite;background:conic-gradient(from 0deg at 50% 50%,transparent 0deg,hsla(0,0%,100%,.1) 30deg,transparent 60deg);content:"";height:200%;left:-50%;opacity:0;pointer-events:none;position:absolute;top:-50%;transition:opacity .3s ease;width:200%}.nav-item:hover:after{opacity:1}.dark .nav-item{backdrop-filter:blur(20px) saturate(130%);-webkit-backdrop-filter:blur(20px) saturate(130%);background:rgba(0,0,0,.15);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);color:hsla(0,0%,100%,.85)}.nav-item:hover{backdrop-filter:blur(25px) saturate(160%) brightness(110%);-webkit-backdrop-filter:blur(25px) saturate(160%) brightness(110%);background:hsla(0,0%,100%,.2);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);color:#0f172a;transform:translateY(-2px) scale(1.02)}.dark .nav-item:hover{backdrop-filter:blur(30px) saturate(150%) brightness(120%);-webkit-backdrop-filter:blur(30px) saturate(150%) brightness(120%);background:rgba(0,0,0,.25);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);color:#fff}.nav-item.active{animation:nav-item-active-glow 2s ease-in-out infinite alternate;backdrop-filter:blur(35px) saturate(180%) brightness(115%);-webkit-backdrop-filter:blur(35px) saturate(180%) brightness(115%);background:hsla(0,0%,100%,.35);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);color:#0f172a;transform:translateY(-1px)}.dark .nav-item.active{backdrop-filter:blur(40px) saturate(160%) brightness(125%);-webkit-backdrop-filter:blur(40px) saturate(160%) brightness(125%);background:rgba(0,0,0,.4);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);color:#fff}@keyframes nav-item-entrance{0%{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);opacity:0;transform:translateY(10px) scale(.95)}to{-webkit-backdrop-filter:blur(15px) saturate(140%);backdrop-filter:blur(15px) saturate(140%);opacity:1;transform:translateY(0) scale(1)}}@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{animation:glassmorphism-particles 8s ease-in-out infinite;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);bottom:0;content:"";left:0;opacity:0;pointer-events:none;position:absolute;right:0;top:0}.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{align-items:center;background:rgba(241,245,249,.8);border:1px solid hsla(0,0%,100%,.7);border-radius:9999px;box-shadow:0 2px 8px rgba(0,0,0,.05),0 1px 2px rgba(0,0,0,.04);color:#334155;cursor:pointer;display:flex;justify-content:center;padding:.5rem;position:relative;transition-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);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{left:50%;position:absolute;top: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-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.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{align-items:center;display:flex}.user-menu-button-new>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.375rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.375rem*var(--tw-space-x-reverse))}.user-menu-button-new{background:rgba(241,245,249,.6);border:1px solid hsla(0,0%,100%,.6);border-radius:.5rem;box-shadow:0 2px 8px rgba(0,0,0,.04),0 1px 2px rgba(0,0,0,.02);padding:.25rem;transition-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.user-menu-button-new:hover{--tw-translate-y:-0.125rem;background:rgba(241,245,249,.8);box-shadow:0 8px 16px rgba(0,0,0,.06),0 2px 4px rgba(0,0,0,.04);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 .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{align-items:center;border-radius:9999px;display:flex;font-size:.75rem;font-weight:600;height:1.75rem;justify-content:center;line-height:1rem;width:1.75rem;--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);background:linear-gradient(135deg,#000,#333);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:0 2px 4px rgba(0,0,0,.2),0 1px 2px rgba(0,0,0,.1);transition-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dark .user-avatar-new{background:linear-gradient(135deg,#f8fafc,#e2e8f0);box-shadow:0 2px 4px rgba(0,0,0,.3),0 1px 2px rgba(0,0,0,.2);color:#0f172a}.login-button-new{align-items:center;border-radius:.5rem;display:flex;font-size:.75rem;font-weight:500;line-height:1rem;padding:.375rem .75rem;--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);background:#000;border:1px solid hsla(0,0%,100%,.1);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-shadow:0 2px 8px rgba(0,0,0,.1),0 1px 2px rgba(0,0,0,.08);color:#fff;transition-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.login-button-new:hover{--tw-translate-y:-0.125rem;background:#333;box-shadow:0 8px 16px rgba(0,0,0,.15),0 3px 4px rgba(0,0,0,.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 .login-button-new{background:#fff;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);color:#000}.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{backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);background:hsla(0,0%,100%,.8);box-shadow:0 4px 20px rgba(0,0,0,.06);max-height:0;opacity:0;overflow:hidden;transition-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);width:100%;z-index:40}.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);border-bottom:1px solid rgba(30,41,59,.8);box-shadow:0 4px 20px rgba(0,0,0,.2)}.mobile-nav-item{align-items:center;display:flex}.mobile-nav-item>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.625rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.625rem*var(--tw-space-x-reverse))}.mobile-nav-item{border-radius:.5rem;font-size:.875rem;line-height:1.25rem;padding:.625rem .75rem;--tw-text-opacity:1;color:rgb(30 41 59/var(--tw-text-opacity,1));transition-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.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{backdrop-filter:blur(20px) saturate(180%) brightness(110%);-webkit-backdrop-filter:blur(20px) saturate(180%) brightness(110%);background:linear-gradient(135deg,rgba(240,249,255,.6),rgba(230,242,255,.6));border:none;border-radius:var(--card-radius);box-shadow:0 25px 50px rgba(0,0,0,.15),0 0 0 1px hsla(0,0%,100%,.1);color:#0f172a;margin:1rem;overflow:hidden;padding:1.5rem;position:relative;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));box-shadow:0 25px 50px rgba(0,0,0,.3),0 0 0 1px hsla(0,0%,100%,.05);color:var(--text-primary,#f8fafc)}.job-card,.stats-card{background-color:hsla(0,0%,100%,.6);border-color:rgba(229,231,235,.7);border-radius:12px;border-width:1px;--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-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.job-card:is(.dark *),.stats-card:is(.dark *){background-color:rgba(0,0,0,.8);border-color:rgba(51,65,85,.2)}.job-card,.stats-card{backdrop-filter:blur(24px) saturate(200%) brightness(120%);-webkit-backdrop-filter:blur(24px) saturate(200%) brightness(120%);border-radius:var(--card-radius);box-shadow:0 25px 50px rgba(0,0,0,.2),0 0 0 1px hsla(0,0%,100%,.1)}footer{backdrop-filter:blur(30px) saturate(180%) brightness(120%);-webkit-backdrop-filter:blur(30px) saturate(180%) brightness(120%);background:hsla(0,0%,100%,.1);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);transition-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dark footer{backdrop-filter:blur(30px) saturate(160%) brightness(110%);-webkit-backdrop-filter:blur(30px) saturate(160%) brightness(110%);background:rgba(0,0,0,.3);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-duration:.3s;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.mercedes-star-bg{position:relative}.mercedes-star-bg:after{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' viewBox='0 0 80 80'%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;bottom:0;content:"";left:0;opacity:.05;position:absolute;right:0;top:0;z-index:-1}.dark .mercedes-star-bg:after{filter:invert(1) brightness(.4);opacity:.02}.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{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);transform:translateY(-2px)}.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{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops));border-color:rgba(229,231,235,.7);border-radius:12px;border-width:1px;overflow:hidden;position:relative;--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-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.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{border-radius:var(--card-radius,1rem);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)}.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;background-image:linear-gradient(to bottom right,var(--tw-gradient-stops));border-color:rgb(187 247 208/var(--tw-border-opacity,1));--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{align-items:center;display:inline-flex}.status-badge-new>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.25rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.25rem*var(--tw-space-x-reverse))}.status-badge-new{border-radius:9999px;font-size:.75rem;font-weight:500;line-height:1rem;padding:.25rem .625rem;--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);background:hsla(0,0%,100%,.9);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);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{background-color:hsla(0,0%,100%,.8);border-color:rgba(229,231,235,.6);border-radius:.5rem;border-width:1px;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 *){background-color:rgba(30,41,59,.8);border-color:rgba(51,65,85,.3)}.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;font-size:.875rem;font-weight:500;line-height:1.25rem;padding:.5rem .875rem;transition-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.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{align-items:center;border-radius:.5rem;display:flex;font-size:.875rem;font-weight:500;gap:.5rem;justify-content:center;line-height:1.25rem;padding:.625rem 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);transition-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.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{align-items:center;display:flex;font-size:.75rem;gap:.5rem;line-height:1rem;margin-bottom:.375rem;--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{flex-shrink:0;height:.875rem;width:.875rem;--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{border-radius:9999px;height:.75rem;position:absolute;right:.625rem;top:.625rem;width:.75rem;--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);animation:pulse-ring 2s cubic-bezier(.455,.03,.515,.955) infinite;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)}@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{background-color:hsla(0,0%,100%,.6);border-color:rgba(229,231,235,.6);border-radius:.5rem;border-width:1px;display:flex;flex-wrap:wrap;font-size:.75rem;gap:.75rem;line-height:1rem;padding:.75rem;--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 *){background-color:rgba(30,41,59,.6);border-color:rgba(51,65,85,.3)}@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{border-radius:9999px;height:.625rem;width:.625rem}.status-dot.online{--tw-bg-opacity:1;animation:pulse-dot 2s cubic-bezier(.455,.03,.515,.955) infinite;background-color:rgb(34 197 94/var(--tw-bg-opacity,1))}.status-dot.offline{--tw-bg-opacity:1;background-color:rgb(239 68 68/var(--tw-bg-opacity,1))}@keyframes pulse-dot{0%{opacity:1;transform:scale(.95)}50%{opacity:.8;transform:scale(1.1)}to{opacity:1;transform:scale(.95)}}.modal-new{align-items:center;background-color:rgba(0,0,0,.4);display:flex;inset:0;justify-content:center;padding:1rem;position:fixed;z-index:50;--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{background-color:hsla(0,0%,100%,.9);border-color:rgba(229,231,235,.6);border-radius:16px;border-width:1px;max-width:28rem;padding:1.5rem;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));width:100%;--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-duration:.3s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.modal-content-new:is(.dark *){background-color:rgba(30,41,59,.9);border-color:rgba(51,65,85,.3)}.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{align-items:center;cursor:pointer;display:flex;font-size:.875rem;line-height:1.25rem;padding:.75rem 1rem;--tw-text-opacity:1;color:rgb(51 65 85/var(--tw-text-opacity,1));transition-duration:.2s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.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:12px;border-top-right-radius:12px}.user-dropdown-item:last-child{border-bottom-left-radius:12px;border-bottom-right-radius:12px}.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{height:1rem;margin-right:.75rem;width:1rem;--tw-text-opacity:1;color:rgb(100 116 139/var(--tw-text-opacity,1));transition-duration:.2s;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.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{border-top-width:1px;margin-bottom:.25rem;margin-top:.25rem;--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;font-weight:600;line-height:1.25rem;--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{font-size:.75rem;line-height:1rem;margin-top:.25rem;--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\:prose-invert:is(.dark *){--tw-prose-body:var(--tw-prose-invert-body);--tw-prose-headings:var(--tw-prose-invert-headings);--tw-prose-lead:var(--tw-prose-invert-lead);--tw-prose-links:var(--tw-prose-invert-links);--tw-prose-bold:var(--tw-prose-invert-bold);--tw-prose-counters:var(--tw-prose-invert-counters);--tw-prose-bullets:var(--tw-prose-invert-bullets);--tw-prose-hr:var(--tw-prose-invert-hr);--tw-prose-quotes:var(--tw-prose-invert-quotes);--tw-prose-quote-borders:var(--tw-prose-invert-quote-borders);--tw-prose-captions:var(--tw-prose-invert-captions);--tw-prose-kbd:var(--tw-prose-invert-kbd);--tw-prose-kbd-shadows:var(--tw-prose-invert-kbd-shadows);--tw-prose-code:var(--tw-prose-invert-code);--tw-prose-pre-code:var(--tw-prose-invert-pre-code);--tw-prose-pre-bg:var(--tw-prose-invert-pre-bg);--tw-prose-th-borders:var(--tw-prose-invert-th-borders);--tw-prose-td-borders:var(--tw-prose-invert-td-borders)}.hover\:-translate-y-0\.5:hover{--tw-translate-y:-0.125rem}.hover\:-translate-y-0\.5:hover,.hover\:-translate-y-1: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-1:hover{--tw-translate-y:-0.25rem}.hover\:-translate-y-2:hover{--tw-translate-y:-0.5rem}.hover\:-translate-y-2:hover,.hover\:scale-105: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-105:hover{--tw-scale-x:1.05;--tw-scale-y:1.05}.hover\:scale-110:hover{--tw-scale-x:1.1;--tw-scale-y:1.1}.hover\:scale-110:hover,.hover\:transform: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\: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\:border-gray-300:hover{--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1))}.hover\:border-mercedes-blue:hover{--tw-border-opacity:1;border-color:rgb(0 115 206/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-blue-100:hover{--tw-bg-opacity:1;background-color:rgb(219 234 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-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-mercedes-blue:hover{--tw-bg-opacity:1;background-color:rgb(0 115 206/var(--tw-bg-opacity,1))}.hover\:bg-mercedes-silver:hover{--tw-bg-opacity:1;background-color:rgb(170 169 173/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-100:hover{--tw-bg-opacity:1;background-color:rgb(243 232 255/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-500\/20:hover{background-color:rgba(239,68,68,.2)}.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-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-400:hover{--tw-bg-opacity:1;background-color:rgb(148 163 184/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\/10:hover{background-color:hsla(0,0%,100%,.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-white\/50:hover{background-color:hsla(0,0%,100%,.5)}.hover\:bg-yellow-100:hover{--tw-bg-opacity:1;background-color:rgb(254 249 195/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\:to-blue-700:hover{--tw-gradient-to:#1d4ed8 var(--tw-gradient-to-position)}.hover\:text-blue-400:hover{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity,1))}.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-700:hover{--tw-text-opacity:1;color:rgb(55 65 81/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-mercedes-blue:hover{--tw-text-opacity:1;color:rgb(0 115 206/var(--tw-text-opacity,1))}.hover\:text-orange-900:hover{--tw-text-opacity:1;color:rgb(124 45 18/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\:opacity-70:hover{opacity:.7}.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-mercedes-blue:focus{--tw-border-opacity:1;border-color:rgb(0 115 206/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\: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-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-mercedes-blue:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(0 115 206/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-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))}.active\:bg-gray-200:active{--tw-bg-opacity:1;background-color:rgb(229 231 235/var(--tw-bg-opacity,1))}.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\:visible{visibility:visible}.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\: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-mercedes-blue{--tw-text-opacity:1;color:rgb(0 115 206/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:disabled .group-disabled\:opacity-0{opacity:0}.group:disabled .group-disabled\:opacity-100{opacity:1}.peer:checked~.peer-checked\:border-blue-500{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity,1))}.peer:checked~.peer-checked\:border-green-500{--tw-border-opacity:1;border-color:rgb(34 197 94/var(--tw-border-opacity,1))}.peer:checked~.peer-checked\:border-slate-500{--tw-border-opacity:1;border-color:rgb(100 116 139/var(--tw-border-opacity,1))}.peer:checked~.peer-checked\:bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}.peer:checked~.peer-checked\:bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity,1))}.peer:checked~.peer-checked\:bg-slate-50{--tw-bg-opacity:1;background-color:rgb(248 250 252/var(--tw-bg-opacity,1))}.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-600:is(.dark *){--tw-border-opacity:1;border-color:rgb(37 99 235/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-700:is(.dark *){--tw-border-opacity:1;border-color:rgb(194 65 12/var(--tw-border-opacity,1))}.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:is(.dark *){--tw-border-opacity:1;border-color:rgb(107 33 168/var(--tw-border-opacity,1))}.dark\:border-purple-800\/50:is(.dark *){border-color:rgba(107,33,168,.5)}.dark\:border-red-400:is(.dark *){--tw-border-opacity:1;border-color:rgb(248 113 113/var(--tw-border-opacity,1))}.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-700:is(.dark *){--tw-border-opacity:1;border-color:rgb(51 65 85/var(--tw-border-opacity,1))}.dark\:border-slate-700\/50:is(.dark *){border-color:rgba(51,65,85,.5)}.dark\:border-white\/20:is(.dark *){border-color:hsla(0,0%,100%,.2)}.dark\:border-yellow-600:is(.dark *){--tw-border-opacity:1;border-color:rgb(202 138 4/var(--tw-border-opacity,1))}.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\/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-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-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-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\/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\/20:is(.dark *){background-color:rgba(124,45,18,.2)}.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\/10:is(.dark *){background-color:rgba(88,28,135,.1)}.dark\:bg-purple-900\/20:is(.dark *){background-color:rgba(88,28,135,.2)}.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-slate-500:is(.dark *){--tw-bg-opacity:1;background-color:rgb(100 116 139/var(--tw-bg-opacity,1))}.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\/50:is(.dark *){background-color:rgba(51,65,85,.5)}.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-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\/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-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-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-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-gray-800:is(.dark *){--tw-gradient-to:#1f2937 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-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-800:is(.dark *){--tw-gradient-to:#1e293b var(--tw-gradient-to-position)}.dark\:to-slate-900:is(.dark *){--tw-gradient-to:#0f172a 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-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-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\: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-emerald-400:hover:is(.dark *){--tw-border-opacity:1;border-color:rgb(52 211 153/var(--tw-border-opacity,1))}.dark\:hover\:bg-black\/10:hover:is(.dark *){background-color:rgba(0,0,0,.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-900\/20:hover:is(.dark *){background-color:rgba(30,58,138,.2)}.dark\:hover\:bg-blue-900\/30:hover:is(.dark *){background-color:rgba(30,58,138,.3)}.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-green-900\/30:hover:is(.dark *){background-color:rgba(20,83,45,.3)}.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-purple-900\/30:hover:is(.dark *){background-color:rgba(88,28,135,.3)}.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-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-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-yellow-900\/30:hover:is(.dark *){background-color:rgba(113,63,18,.3)}.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-orange-300:hover:is(.dark *){--tw-text-opacity:1;color:rgb(253 186 116/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-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\:focus\:ring-blue-600:focus:is(.dark *){--tw-ring-opacity:1;--tw-ring-color:rgb(37 99 235/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-white:is(.dark *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.peer:checked~.dark\:peer-checked\:bg-blue-900\/20:is(.dark *){background-color:rgba(30,58,138,.2)}.peer:checked~.dark\:peer-checked\:bg-green-900\/20:is(.dark *){background-color:rgba(20,83,45,.2)}.peer:checked~.dark\:peer-checked\:bg-slate-900\/20:is(.dark *){background-color:rgba(15,23,42,.2)}@media (min-width:640px){.sm\:mx-0{margin-left:0;margin-right:0}.sm\:my-8{margin-bottom:2rem;margin-top:2rem}.sm\:ml-3{margin-left:.75rem}.sm\:ml-4{margin-left:1rem}.sm\:mt-0{margin-top:0}.sm\:block{display:block}.sm\:flex{display:flex}.sm\:h-10{height:2.5rem}.sm\:h-5{height:1.25rem}.sm\:w-10{width:2.5rem}.sm\:w-5{width:1.25rem}.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\:items-center{align-items:center}.sm\:justify-center{justify-content:center}.sm\:justify-between{justify-content:space-between}.sm\:space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(1rem*var(--tw-space-x-reverse))}.sm\:space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(0px*var(--tw-space-y-reverse));margin-top:calc(0px*(1 - var(--tw-space-y-reverse)))}.sm\:p-0{padding:0}.sm\:p-6{padding:1.5rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pb-4{padding-bottom:1rem}.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\: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\:ml-0{margin-left:0}.lg\:mt-0{margin-top:0}.lg\:block{display:block}.lg\:inline{display:inline}.lg\:flex{display:flex}.lg\:hidden{display:none}.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-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(0px*var(--tw-space-y-reverse));margin-top:calc(0px*(1 - var(--tw-space-y-reverse)))}.lg\:p-12{padding:3rem}.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}}@media (min-width:1280px){.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xl\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}} \ No newline at end of file diff --git a/backend/static/js/admin-guest-requests.js b/backend/static/js/admin-guest-requests.js index bee46a95f..1d3922316 100644 --- a/backend/static/js/admin-guest-requests.js +++ b/backend/static/js/admin-guest-requests.js @@ -93,7 +93,7 @@ async function loadGuestRequests() { try { showLoading(true); - const url = `${API_BASE_URL}/api/admin/requests`; + const url = `${API_BASE_URL}/api/admin/guest-requests`; const response = await fetch(url, { method: 'GET', headers: { @@ -429,7 +429,7 @@ async function approveRequest(requestId) { try { showLoading(true); - const url = `${API_BASE_URL}/api/requests/${requestId}/approve`; + const url = `${API_BASE_URL}/api/admin/guest-requests/${requestId}/approve`; const response = await fetch(url, { method: 'POST', headers: { @@ -437,7 +437,7 @@ async function approveRequest(requestId) { 'X-CSRFToken': csrfToken }, body: JSON.stringify({ - notes: notes || '' + approval_notes: notes || '' }) }); @@ -445,12 +445,12 @@ async function approveRequest(requestId) { if (data.success) { showNotification('✅ Gastauftrag erfolgreich genehmigt', 'success'); - if (data.otp) { - showNotification(`🔑 OTP-Code für Gast: ${data.otp}`, 'info'); + if (data.otp_code) { + showNotification(`🔑 OTP-Code für ${data.guest_name}: ${data.otp_code}`, 'info'); } loadGuestRequests(); } else { - throw new Error(data.message || 'Fehler beim Genehmigen'); + throw new Error(data.error || 'Fehler beim Genehmigen'); } } catch (error) { console.error('Fehler beim Genehmigen:', error); @@ -470,14 +470,14 @@ async function rejectRequest(requestId) { try { showLoading(true); - const url = `${API_BASE_URL}/api/requests/${requestId}/deny`; + const url = `${API_BASE_URL}/api/admin/guest-requests/${requestId}/reject`; const response = await fetch(url, { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-CSRFToken': csrfToken }, - body: JSON.stringify({ reason: reason.trim() }) + body: JSON.stringify({ rejection_reason: reason.trim() }) }); const data = await response.json(); @@ -486,7 +486,7 @@ async function rejectRequest(requestId) { showNotification('✅ Gastauftrag erfolgreich abgelehnt', 'success'); loadGuestRequests(); } else { - throw new Error(data.message || 'Fehler beim Ablehnen'); + throw new Error(data.error || 'Fehler beim Ablehnen'); } } catch (error) { console.error('Fehler beim Ablehnen:', error); diff --git a/backend/templates/admin.html b/backend/templates/admin.html index bc2e3a940..ecdbbac7d 100644 --- a/backend/templates/admin.html +++ b/backend/templates/admin.html @@ -200,6 +200,14 @@ document.addEventListener('DOMContentLoaded', function() { Logs + + + + + + Anträge + diff --git a/backend/templates/imprint.html b/backend/templates/imprint.html index 0b20c3ac0..14e6c070f 100644 --- a/backend/templates/imprint.html +++ b/backend/templates/imprint.html @@ -1,203 +1,524 @@ {% extends "base.html" %} -{% block title %}{{ title }} - MYP Platform{% endblock %} +{% block title %}Impressum - Mercedes-Benz MYP System{% endblock %} + +{% block extra_css %} + +{% endblock %} {% block content %} -
- -
-
-
- + +
+
+
+
+ + +
-

Impressum

-

Rechtliche Angaben gemäß § 5 TMG

+

Impressum

+

Rechtliche Angaben gemäß § 5 TMG

- - -
-
-

- - Anbieter -

-
-
-
-

Unternehmen

-

Mercedes-Benz AG

-

Ausbildungsabteilung

-

3D-Druck & Digitale Fertigung

-
-
-

Adresse

-

Mercedes-Benz Platz 1

-

70546 Stuttgart

-

Deutschland

+
+ + + + Mercedes-Benz MYP System v3.0.0 +
+
+
+ +
+ + +
+
+

+ + + + Anbieter +

+
+
+
+
+
+
Unternehmen
+
Mercedes-Benz AG
+
+
+
Abteilung
+
Technische Berufsausbildung (TBA)
+
+
+
Standort
+
Marienfelde
+
+
+
Bereich
+
Digitale Fertigung & 3D-Druck
+
+
+
+
+
Straße
+
Daimlerstraße 1
+
+
+
PLZ / Ort
+
12277 Berlin
+
+
+
Land
+
Deutschland
+
+
-
+
+
+
- -
-

- - Kontakt -

-
-
- -
-

Telefon

-

+49 (0) 711 17-0

+ +
+
+

+ + + + Kontakt & Verantwortlichkeit +

+
+
+
+
+

Projektverantwortlicher

+
+
Name
+
Till Tomczak
+
+
+
Position
+
Fachinformatiker für Anwendungsentwicklung
+
+
+
Projekt
+
IHK-Projektarbeit: MYP System
+
+
-
- - -
-

- - Rechtliche Angaben -

-
-
-
-

Registergericht

-

Amtsgericht Stuttgart

-

HRB 19360

+
+

Ausbildungsbetrieb

+
+
Betrieb
+
Mercedes-Benz AG
+
+
+
Standort
+
TBA Marienfelde
+
+
+
Telefon
+ -
-

Umsatzsteuer-ID

-

DE811944017

+
+
+
Zweck
+
Interne Systemschulung & 3D-Druck Management
+
+
+
+
+
+ + +
+
+

+ + + + Rechtliche Angaben +

+
+
+
+
+
+
Registergericht
+
Amtsgericht Stuttgart
+
+
+
Handelsregister
+
HRB 19360
+
+
+
USt-IdNr.
+
DE811944017
+
+
+
Steuernummer
+
99073/00159
+
+
+
+

Vorstand Mercedes-Benz AG

+
+
+ Ola Källenius + (Vorsitzender) +
+
Jörg Burzer
+
Renata Jungo Brüngger
+
Sabine Kohleisen
+
Harald Wilhelm
+
+
+
+
+
+ + +
+
+

+ + + + MYP System Information +

+
+
+
+
+
+
Systemname
+
MYP Platform
+
+
+
Vollständig
+
Manage Your Printers
+
+
+
Version
+
3.0.0
+
+
+
Status
+
+ + Produktiv +
-
- - -
-

- - Verantwortlich für den Inhalt -

-
-

Till Tomczak

-

Projektleiter MYP Platform

-

Mercedes-Benz AG

-

Ausbildungsabteilung

-
-
- - -
-

- - Haftungsausschluss -

-
-

Haftung für Inhalte

-

- Als Diensteanbieter sind wir gemäß § 7 Abs.1 TMG für eigene Inhalte auf diesen Seiten nach den - allgemeinen Gesetzen verantwortlich. Nach §§ 8 bis 10 TMG sind wir als Diensteanbieter jedoch nicht - unter der Verpflichtung, übermittelte oder gespeicherte fremde Informationen zu überwachen oder nach - Umständen zu forschen, die auf eine rechtswidrige Tätigkeit hinweisen. -

- -

Haftung für Links

-

- Unser Angebot enthält Links zu externen Webseiten Dritter, auf deren Inhalte wir keinen Einfluss haben. - Deshalb können wir für diese fremden Inhalte auch keine Gewähr übernehmen. Für die Inhalte der verlinkten - Seiten ist stets der jeweilige Anbieter oder Betreiber der Seiten verantwortlich. -

- -

Urheberrecht

-

- Die durch die Seitenbetreiber erstellten Inhalte und Werke auf diesen Seiten unterliegen dem deutschen - Urheberrecht. Die Vervielfältigung, Bearbeitung, Verbreitung und jede Art der Verwertung außerhalb der - Grenzen des Urheberrechtes bedürfen der schriftlichen Zustimmung des jeweiligen Autors bzw. Erstellers. -

-
-
- - -
-

- - Streitschlichtung -

-
-

- Die Europäische Kommission stellt eine Plattform zur Online-Streitbeilegung (OS) bereit: - - https://ec.europa.eu/consumers/odr/ - -

-

- Wir sind nicht bereit oder verpflichtet, an Streitbeilegungsverfahren vor einer - Verbraucherschlichtungsstelle teilzunehmen. -

-
-
- - -
-

- - System-Information -

-
-
-
-

MYP Platform

-

Manage Your Printers

-

Version 2.0.0

-
-
-

Entwicklung

-

Mercedes-Benz AG

-

Interne Projektarbeit

-
+
+
+
Framework
+
Flask (Python)
+
+
+
Frontend
+
Tailwind CSS
+
+
+
Datenbank
+
SQLite
+
+
+
Zweck
+
3D-Drucker Management
-
+
+ +
+

Projektkontext

+

+ Das MYP System wurde als IHK-Projektarbeit für die Ausbildung zum Fachinformatiker für + Anwendungsentwicklung entwickelt. Es dient der zentralen Verwaltung von 3D-Druckern + in der Mercedes-Benz TBA Marienfelde und integriert Smart-Plug-Steuerung, + Benutzer-Management und Energiemonitoring. +

+
+
+
+ + +
+
+

+ + + + Haftungsausschluss +

+
+
+
+

Haftung für Inhalte

+

+ Als Diensteanbieter sind wir gemäß § 7 Abs.1 TMG für eigene Inhalte auf diesen Seiten nach den + allgemeinen Gesetzen verantwortlich. Nach §§ 8 bis 10 TMG sind wir als Diensteanbieter jedoch nicht + unter der Verpflichtung, übermittelte oder gespeicherte fremde Informationen zu überwachen. +

+
+ +
+

Urheberrecht

+

+ Die durch die Seitenbetreiber erstellten Inhalte und Werke auf diesen Seiten unterliegen dem deutschen + Urheberrecht. Das MYP System wurde speziell für Mercedes-Benz entwickelt und ist für den internen Gebrauch bestimmt. +

+
-
-
- - - Zur Startseite - - - - Rechtliche Hinweise - - {% if current_user.is_authenticated %} - - - Dashboard - - {% endif %} +
+
+
+ + + + + Zur Startseite + + + + + + + Datenschutz + + + + + + + Rechtliche Hinweise + + + {% if current_user.is_authenticated %} + + + + + Dashboard + + {% endif %} +
-
- -
-

Letzte Aktualisierung: {{ moment().format('DD.MM.YYYY') }}

+ +
+

+ Letzte Aktualisierung: {{ moment().format('DD.MM.YYYY') if moment else '19.06.2025' }} | + Mercedes-Benz AG TBA Marienfelde | MYP Platform v3.0.0 +

+
{% endblock %} \ No newline at end of file diff --git a/backend/utils/__pycache__/hardware_integration.cpython-311.pyc b/backend/utils/__pycache__/hardware_integration.cpython-311.pyc index 8845ae2f3..2b66d80d3 100644 Binary files a/backend/utils/__pycache__/hardware_integration.cpython-311.pyc and b/backend/utils/__pycache__/hardware_integration.cpython-311.pyc differ diff --git a/backend/utils/__pycache__/hardware_integration.cpython-313.pyc b/backend/utils/__pycache__/hardware_integration.cpython-313.pyc index 3f2b84cdd..ee8edb9ed 100644 Binary files a/backend/utils/__pycache__/hardware_integration.cpython-313.pyc and b/backend/utils/__pycache__/hardware_integration.cpython-313.pyc differ diff --git a/backend/utils/hardware_integration.py b/backend/utils/hardware_integration.py index 4ef22f98b..3e62dc21a 100644 --- a/backend/utils/hardware_integration.py +++ b/backend/utils/hardware_integration.py @@ -60,10 +60,13 @@ monitor_logger = get_logger("printer_monitor") # Rückwärtskompatibilität # Hardware-Verfügbarkeit prüfen try: from PyP100.PyP100 import P100 as PyP100 + from PyP100.PyP110 import P110 as PyP110 TAPO_AVAILABLE = True hardware_logger.info("✅ PyP100 (TP-Link Tapo) verfügbar") except ImportError: TAPO_AVAILABLE = False + PyP100 = None + PyP110 = None hardware_logger.warning("⚠️ PyP100 nicht verfügbar - Tapo-Funktionen eingeschränkt") # Exportierte Funktionen für Legacy-Kompatibilität @@ -143,7 +146,7 @@ class TapoController: tapo_logger.debug(f"🔌 Versuch {attempt+1}/{self.retry_count}: Verbinde zu Tapo-Steckdose {ip}") # P100-Verbindung herstellen - p100 = PyP100.P100(ip, username, password) + p100 = PyP100(ip, username, password) if debug: tapo_logger.debug(f"🤝 Handshake mit {ip}...") @@ -244,7 +247,7 @@ class TapoController: try: # TP-Link Tapo P100 Verbindung herstellen - p100 = PyP100.P100(ip, username, password) + p100 = PyP100(ip, username, password) p100.handshake() p100.login() @@ -308,7 +311,7 @@ class TapoController: tapo_logger.debug(f"🔍 Status-Check für Tapo-Steckdose {ip} gestartet") # TP-Link Tapo P100 Verbindung herstellen - p100 = PyP100.P100(ip, username, password) + p100 = PyP100(ip, username, password) if debug: tapo_logger.debug(f"🤝 Handshake mit {ip}...") @@ -404,7 +407,7 @@ class TapoController: try: # TP-Link Tapo P100 Verbindung herstellen - p100 = PyP100.P100(ip, username, password) + p100 = PyP100(ip, username, password) p100.handshake() p100.login() @@ -568,42 +571,40 @@ class TapoController: results = {} try: - db_session = get_db_session() - printers = db_session.query(Printer).filter(Printer.active == True).all() - - if not printers: - tapo_logger.warning("⚠️ keine aktiven drucker zur initialisierung gefunden") - db_session.close() - return results - - # Alle Steckdosen ausschalten - for printer in printers: - try: - if printer.plug_ip: - success = self.turn_off( - printer.plug_ip, - printer_id=printer.id - ) - - results[printer.name] = success - - if success: - tapo_logger.info(f"✅ {printer.name}: steckdose ausgeschaltet") - printer.status = "offline" - printer.last_checked = datetime.now() + with get_db_session() as db_session: + printers = db_session.query(Printer).filter(Printer.active == True).all() + + if not printers: + tapo_logger.warning("⚠️ keine aktiven drucker zur initialisierung gefunden") + return results + + # Alle Steckdosen ausschalten + for printer in printers: + try: + if printer.plug_ip: + success = self.turn_off( + printer.plug_ip, + printer_id=printer.id + ) + + results[printer.name] = success + + if success: + tapo_logger.info(f"✅ {printer.name}: steckdose ausgeschaltet") + printer.status = "offline" + printer.last_checked = datetime.now() + else: + tapo_logger.warning(f"❌ {printer.name}: steckdose konnte nicht ausgeschaltet werden") else: - tapo_logger.warning(f"❌ {printer.name}: steckdose konnte nicht ausgeschaltet werden") - else: - tapo_logger.warning(f"⚠️ {printer.name}: keine steckdosen-ip konfiguriert") + tapo_logger.warning(f"⚠️ {printer.name}: keine steckdosen-ip konfiguriert") + results[printer.name] = False + + except Exception as e: + tapo_logger.error(f"❌ fehler bei initialisierung von {printer.name}: {str(e)}") results[printer.name] = False - - except Exception as e: - tapo_logger.error(f"❌ fehler bei initialisierung von {printer.name}: {str(e)}") - results[printer.name] = False - - # Änderungen speichern - db_session.commit() - db_session.close() + + # Änderungen speichern + db_session.commit() success_count = sum(1 for success in results.values() if success) total_count = len(results) @@ -625,16 +626,15 @@ class TapoController: status_dict = {} try: - db_session = get_db_session() - printers = db_session.query(Printer).filter( - Printer.active == True, - Printer.plug_ip.isnot(None) - ).all() - - if not printers: - tapo_logger.info("ℹ️ keine drucker mit tapo-steckdosen konfiguriert") - db_session.close() - return status_dict + with get_db_session() as db_session: + printers = db_session.query(Printer).filter( + Printer.active == True, + Printer.plug_ip.isnot(None) + ).all() + + if not printers: + tapo_logger.info("ℹ️ keine drucker mit tapo-steckdosen konfiguriert") + return status_dict tapo_logger.info(f"🔍 prüfe status von {len(printers)} tapo-steckdosen...") @@ -673,8 +673,7 @@ class TapoController: "last_checked": datetime.now().isoformat() } - db_session.close() - tapo_logger.info(f"✅ status-update abgeschlossen für {len(status_dict)} steckdosen") + tapo_logger.info(f"✅ status-update abgeschlossen für {len(status_dict)} steckdosen") except Exception as e: tapo_logger.error(f"❌ kritischer fehler beim abrufen des steckdosen-status: {str(e)}") @@ -754,28 +753,29 @@ class TapoController: **kwargs: Zusätzliche Informationen für das Log """ try: - db_session = get_db_session() - - log_entry = PlugStatusLog( - printer_id=printer_id, - status=status, - ip_address=ip_address, - response_time_ms=kwargs.get('response_time_ms'), - power_consumption=kwargs.get('power_consumption'), - voltage=kwargs.get('voltage'), - current=kwargs.get('current'), - error_message=kwargs.get('error_message'), - firmware_version=kwargs.get('firmware_version'), - notes=kwargs.get('notes'), - timestamp=datetime.now() - ) - - db_session.add(log_entry) - db_session.commit() - db_session.close() + with get_db_session() as db_session: + log_entry = PlugStatusLog( + printer_id=printer_id, + status=status, + ip_address=ip_address, + response_time_ms=kwargs.get('response_time_ms'), + power_consumption=kwargs.get('power_consumption'), + voltage=kwargs.get('voltage'), + current=kwargs.get('current'), + error_message=kwargs.get('error_message'), + firmware_version=kwargs.get('firmware_version'), + notes=kwargs.get('notes'), + timestamp=datetime.now(), + source='system', + user_id=None + ) + + db_session.add(log_entry) + db_session.commit() except Exception as e: tapo_logger.debug(f"Fehler beim Loggen des Plug-Status: {e}") + # Session wird automatisch mit rollback geschlossen durch context manager def _ensure_outlet_in_database(self, ip_address: str, nickname: str = None) -> bool: """ @@ -789,40 +789,37 @@ class TapoController: bool: True wenn erfolgreich in Datenbank gespeichert/aktualisiert """ try: - db_session = get_db_session() + with get_db_session() as db_session: + # Prüfen, ob bereits ein Drucker mit dieser Steckdosen-IP existiert + existing_printer = db_session.query(Printer).filter( + Printer.plug_ip == ip_address + ).first() + + if existing_printer: + tapo_logger.debug(f"Steckdose {ip_address} bereits mit Drucker {existing_printer.name} verknüpft") + return True - # Prüfen, ob bereits ein Drucker mit dieser Steckdosen-IP existiert - existing_printer = db_session.query(Printer).filter( - Printer.plug_ip == ip_address - ).first() - - if existing_printer: - tapo_logger.debug(f"Steckdose {ip_address} bereits mit Drucker {existing_printer.name} verknüpft") - db_session.close() + # Neuen Drucker-Eintrag für die Steckdose erstellen + printer_name = nickname or f"Tapo Plug {ip_address}" + + new_printer = Printer( + name=printer_name, + ip_address=ip_address, # Gleiche IP für Drucker und Steckdose + plug_ip=ip_address, + location="Automatisch erkannt", + active=True, + status="offline", + plug_username=self.username, + plug_password=self.password, + last_checked=datetime.now() + ) + + db_session.add(new_printer) + db_session.commit() + + tapo_logger.info(f"✅ Neue Tapo-Steckdose '{printer_name}' ({ip_address}) in Datenbank gespeichert") return True - # Neuen Drucker-Eintrag für die Steckdose erstellen - printer_name = nickname or f"Tapo Plug {ip_address}" - - new_printer = Printer( - name=printer_name, - ip_address=ip_address, # Gleiche IP für Drucker und Steckdose - plug_ip=ip_address, - location="Automatisch erkannt", - active=True, - status="offline", - plug_username=self.username, - plug_password=self.password, - last_checked=datetime.now() - ) - - db_session.add(new_printer) - db_session.commit() - - tapo_logger.info(f"✅ Neue Tapo-Steckdose '{printer_name}' ({ip_address}) in Datenbank gespeichert") - db_session.close() - return True - except Exception as e: tapo_logger.error(f"❌ Fehler beim Speichern der Steckdose {ip_address} in Datenbank: {str(e)}") return False @@ -879,7 +876,7 @@ class TapoController: try: # P110 Energiedaten abrufen - p110 = PyP100.P110(printer.plug_ip, self.username, self.password) + p110 = PyP110(printer.plug_ip, self.username, self.password) p110.handshake() p110.login()