From 43d12fdf111c5a0c610ba1007a360cc70d446d52 Mon Sep 17 00:00:00 2001 From: Tomczak Date: Thu, 19 Jun 2025 13:08:47 +0200 Subject: [PATCH] =?UTF-8?q?Die=20Dateien=20wurden=20in=20mehreren=20Log-?= =?UTF-8?q?=20und=20Cache-Ordnern=20ge=C3=A4ndert:?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../__pycache__/admin_unified.cpython-313.pyc | Bin 149614 -> 157813 bytes backend/blueprints/admin_unified.py | 151 ++ backend/database/myp.db | Bin 126976 -> 139264 bytes ...87e999ab984605f9f7a3d3d3fd00e_activity.pkl | Bin 0 -> 60 bytes ...d50c89a0a2b44bb8898cc35cf043c_activity.pkl | Bin 0 -> 60 bytes ...b7e158bdb33fbb329905e484a4802_activity.pkl | Bin 0 -> 60 bytes ...e51f4a9ae120e593201b9de8f4c1f_activity.pkl | Bin 0 -> 60 bytes ...90d18e4e5f452c621a54faf33f13d_activity.pkl | Bin 0 -> 60 bytes ...90b7c82051a4cc1f18b43c8c79f0d_activity.pkl | Bin 0 -> 60 bytes ...10cff14a74e1476a31da9e102ae28_activity.pkl | Bin 0 -> 60 bytes ...f240887bc5624bc944b94a5c9be24_activity.pkl | Bin 0 -> 60 bytes ...f0d8f4e3bc710f636fc4f8ba0fc23_activity.pkl | Bin 0 -> 60 bytes ...b40c0a5a0307861320b23ef4ed628_activity.pkl | Bin 0 -> 60 bytes ...63a0ebbf27bf71f380e2ae06ba1d3_activity.pkl | Bin 0 -> 60 bytes ...ba3aa2d5d02de49d5643dabfa2053_activity.pkl | Bin 0 -> 60 bytes ...645d260d9fe1eaecc7c044d85d100_activity.pkl | Bin 0 -> 60 bytes ...7ace6c70003435832522041eb9406_activity.pkl | Bin 0 -> 60 bytes ...9e62892e83427302573db47275603_activity.pkl | Bin 0 -> 60 bytes ...52859f9852fa601902d399ed2896a_activity.pkl | Bin 0 -> 60 bytes ...ea4d8c39081961df89bda9f48834a_activity.pkl | Bin 0 -> 60 bytes ...10fde56a49c01f973287fe9e587ee_activity.pkl | Bin 0 -> 60 bytes ...c90551c45c146da3551ec5856d0f7_activity.pkl | Bin 0 -> 60 bytes ...7f7e5f509ae568d97d823f21f0e41_activity.pkl | Bin 0 -> 60 bytes ...142042ebfc5f2780a6cbd23f337a4_activity.pkl | Bin 0 -> 60 bytes ...b20328b9b6f84cbc1e4f82569eec8_activity.pkl | Bin 0 -> 60 bytes ...1a49cfce945c6fb4223e62a0170dc_activity.pkl | Bin 0 -> 60 bytes ...206037a992875afad29110930319a_activity.pkl | Bin 0 -> 60 bytes ...578a9693910c59e6f17660997d539_activity.pkl | Bin 0 -> 60 bytes ...bea580ec97d3f2afcba24b547af9c_activity.pkl | Bin 0 -> 60 bytes ...b73e1d8ce8e88a8233313cc030ca4_activity.pkl | Bin 0 -> 60 bytes ...5c5d45217c0dc2490720982f9cd0f_activity.pkl | Bin 0 -> 60 bytes ...527fabe96fb0c8968db37fc1d255f_activity.pkl | Bin 0 -> 60 bytes ...019f1dacbd49a58a8d0daac106f8c_activity.pkl | Bin 0 -> 60 bytes ...e5ae611a0afa4def633513ccb7955_activity.pkl | Bin 0 -> 60 bytes ...94f5dfccbf0e83d45d01fff36154b_activity.pkl | Bin 0 -> 60 bytes ...29888680e80eac5ff5644a365f382_activity.pkl | Bin 0 -> 60 bytes ...ab42339ccdbb4a02e8f61c69daed4_activity.pkl | Bin 0 -> 60 bytes ...0769810da34a6d3d241bff3f9c4b4_activity.pkl | Bin 0 -> 60 bytes ...f8fe73357da1144bade7859da5886_activity.pkl | Bin 0 -> 60 bytes ...ba05d3de8cb30bfb71b7a6f979efe_activity.pkl | Bin 0 -> 60 bytes ...0f9908d09312112502fdb955e658a_activity.pkl | Bin 0 -> 60 bytes ...955f5ba4affc72c2dda17eb4768c1_activity.pkl | Bin 0 -> 60 bytes ...e6c1225a7da7730457fb396d4a108_activity.pkl | Bin 0 -> 60 bytes ...a8a64b912f67cead5e00834fb472a_activity.pkl | Bin 0 -> 60 bytes ...714f296bf1f13514c292da61fdf38_activity.pkl | Bin 0 -> 60 bytes ...58eb8d747fc584efd99972c6e1677_activity.pkl | Bin 0 -> 60 bytes ...ecda7682659f66a339298d4872598_activity.pkl | Bin 0 -> 60 bytes ...c22b2f2e0ab746c098fcf9a3343a9_activity.pkl | Bin 0 -> 60 bytes ...4984e4dd92991d139a4aa6f67a2e6_activity.pkl | Bin 0 -> 60 bytes ...ad00e9c4884cf186b3e63d58e33f7_activity.pkl | Bin 0 -> 60 bytes ...cd6f6860f54d77c6e159ade341aa9_activity.pkl | Bin 0 -> 60 bytes ...16370cfd1a2a07a4daeabfdfed3c1_activity.pkl | Bin 0 -> 60 bytes ...317d8196aa953aada93bbcafbd41f_activity.pkl | Bin 0 -> 60 bytes ...1d3d978dc1b24c9953fac53d54ac2_activity.pkl | Bin 0 -> 60 bytes ...53bf436fcd85eaed7743cb5768519_activity.pkl | Bin 0 -> 60 bytes ...ddc7cf30ef821e06b9c86862825a1_activity.pkl | Bin 0 -> 60 bytes ...2f6e595ccbab7fbc7c64c3d895a84_activity.pkl | Bin 0 -> 60 bytes ...56a16d10cf3ad529a8d461cc88497_activity.pkl | Bin 0 -> 60 bytes ...5eda441718745e98b290b801f5867_activity.pkl | Bin 0 -> 60 bytes ...9f4256d64b0da1930796f7315b804_activity.pkl | Bin 0 -> 60 bytes ...b002aa74d780c326bfde9db5b8866_activity.pkl | Bin 0 -> 60 bytes ...a14a083d2310a7cfbaef5c9468345_activity.pkl | Bin 0 -> 60 bytes ...74f4cede4bbee355ed93c1ce3b209_activity.pkl | Bin 0 -> 60 bytes ...b0b807622dbe412009cfb3e7392e1_activity.pkl | Bin 0 -> 60 bytes ...04d250b104c6469e9247ce41e38a2_activity.pkl | Bin 0 -> 60 bytes ...d0aab67e3220447b4b511aed01084_activity.pkl | Bin 0 -> 60 bytes ...df31649098802ae24ce3b0546e342_activity.pkl | Bin 0 -> 60 bytes ...a915ab02760fc5196cd400d9ccfe7_activity.pkl | Bin 0 -> 60 bytes ...cdfd093cf4f29d06f704fb5aabc29_activity.pkl | Bin 0 -> 60 bytes ...9f29244511b4326c07daeeed9501b_activity.pkl | Bin 0 -> 60 bytes ...305db97cbc3aebc3e2a48f9d0c318_activity.pkl | Bin 0 -> 60 bytes ...9be4a53914be30a65847e006919a1_activity.pkl | Bin 0 -> 60 bytes ...3dd74709f22cb3e7ef93bc8b7be40_activity.pkl | Bin 0 -> 60 bytes ...32222fb11045fed8290a1f580b361_activity.pkl | Bin 0 -> 60 bytes ...338291b841daa04bdb279d4b47bd7_activity.pkl | Bin 0 -> 60 bytes ...69bc81ca03dd2394d0cb4719af424_activity.pkl | Bin 0 -> 60 bytes ...bd724a4c1d0c4ae30d0ca538e4421_activity.pkl | Bin 0 -> 60 bytes ...23992fff10b79baaa050567412f0b_activity.pkl | Bin 0 -> 60 bytes ...094b504a8d39c91fd4e2cdbf554af_activity.pkl | Bin 0 -> 60 bytes ...acf4b208450ad13aba31a4767f101_activity.pkl | Bin 0 -> 60 bytes ...2932213d4bef359703b4e683ef6fa_activity.pkl | Bin 0 -> 60 bytes ...181436251b3a9c107abf0ece15257_activity.pkl | Bin 0 -> 60 bytes ...3b7b0ae487bb0e72738d6c91f8a29_activity.pkl | Bin 0 -> 60 bytes ...d9ba2ce2b1ffbb6b682970e22f6ef_activity.pkl | Bin 0 -> 60 bytes ...011ad1b47daee5815417176eb08dd_activity.pkl | Bin 0 -> 60 bytes ...203a7c5451c12795adaa0adfbeb85_activity.pkl | Bin 0 -> 60 bytes ...a85c15417a8568ef298099b312454_activity.pkl | Bin 0 -> 60 bytes ...ee35a55fc26ea973f9edb5dc775e2_activity.pkl | Bin 0 -> 60 bytes ...a175821617244c7bb79d46034d63a_activity.pkl | Bin 0 -> 60 bytes ...04a8ba702e4112857e2e736397c1d_activity.pkl | Bin 0 -> 60 bytes ...1454854a458521afa46d56168e467_activity.pkl | Bin 0 -> 60 bytes ...3b246adffbd18abcacd3663e22ad1_activity.pkl | Bin 0 -> 60 bytes ...26470c072fe3b8bf72da62db27203_activity.pkl | Bin 0 -> 60 bytes ...1ba46de6000582572e17cc29d35fd_activity.pkl | Bin 0 -> 60 bytes ...3b5144362d1d3cb1dca7cffdb087a_activity.pkl | Bin 0 -> 60 bytes ...8af22c785ac87121af0091569a77a_activity.pkl | Bin 0 -> 60 bytes ...477e65354d067b5202d1448ef7f79_activity.pkl | Bin 0 -> 60 bytes ...83366183672e085042ce66ade8620_activity.pkl | Bin 0 -> 60 bytes ...1c2449ec92d67ab843077bd29d174_activity.pkl | Bin 0 -> 60 bytes ...30bffdb147712d2345561a7265b3c_activity.pkl | Bin 0 -> 60 bytes ...e23b04718a4c01b4ec4717fe58b3f_activity.pkl | Bin 0 -> 60 bytes ...5189020e3ed5e975ee1fe6c32f768_activity.pkl | Bin 0 -> 60 bytes ...1e317299111cb9577ef4fc2e39896_activity.pkl | Bin 0 -> 60 bytes ...8b12288c09ababd8ce41cb38ab670_activity.pkl | Bin 0 -> 60 bytes ...1edf64743b5b88ead332511629abd_activity.pkl | Bin 0 -> 60 bytes ...f18f83186ba1eb6f5535c9ea5af67_activity.pkl | Bin 0 -> 60 bytes ...d50df1eee045f47bb6f268faf2b94_activity.pkl | Bin 0 -> 60 bytes ...b2248e126059b3fae5a21aa6e3fa5_activity.pkl | Bin 0 -> 60 bytes ...416690cdfe6c9eaf1b172b2c58716_activity.pkl | Bin 0 -> 60 bytes ...c39c1ea83a26ebe373429475c6470_activity.pkl | Bin 0 -> 60 bytes ...819ab66b2b58d241fda4a1fa4b09b_activity.pkl | Bin 0 -> 60 bytes ...dbd2558cc64d3404821918ab4be51_activity.pkl | Bin 0 -> 60 bytes ...437f3749fb2b6950d9faf8ade9570_activity.pkl | Bin 0 -> 60 bytes ...fb640105dbfcb9e1016b4094d5eba_activity.pkl | Bin 0 -> 60 bytes ...9189a862cef98a80fbd9850c5775d_activity.pkl | Bin 0 -> 60 bytes ...87c9808d2908604039aa5a703cce2_activity.pkl | Bin 0 -> 60 bytes ...3aaaf2ab7c18231155b17583e104a_activity.pkl | Bin 0 -> 60 bytes ...b94d6a5210f315eeec2e2a1c75ac4_activity.pkl | Bin 0 -> 60 bytes ...4f8e2def8bce0ea104039f68e15de_activity.pkl | Bin 0 -> 60 bytes ...046436ee0b294130812467d648ca1_activity.pkl | Bin 0 -> 60 bytes ...b808ab0d4f1710d829104358ce388_activity.pkl | Bin 0 -> 60 bytes ...e24c7b129627a8d174e6a2b906122_activity.pkl | Bin 0 -> 60 bytes ...52448b5fb89f64054daafe0ef0c64_activity.pkl | Bin 0 -> 60 bytes ...fce8921ae030ec249c1156d50f5b6_activity.pkl | Bin 0 -> 60 bytes ...8d95cf704a365e4032ecaaf958878_activity.pkl | Bin 0 -> 60 bytes ...d47a273a29ca92bd99175bbe2b74f_activity.pkl | Bin 0 -> 60 bytes ...36e1458dc5c55a9cd82640f44191b_activity.pkl | Bin 0 -> 60 bytes ...6269d6ff95b7bfe48913cb84b9474_activity.pkl | Bin 0 -> 60 bytes ...a1b67d4cb1a667fbea575ae3c6529_activity.pkl | Bin 0 -> 60 bytes ...ba5c4c528110d8a10d78e135ee87c_activity.pkl | Bin 0 -> 60 bytes ...0db2ba81e03e243344451b47334cb_activity.pkl | Bin 0 -> 60 bytes ...51059ea4b334134ff328783bfe60e_activity.pkl | Bin 0 -> 60 bytes ...b39b3c63a777dce0ba3e071e3f555_activity.pkl | Bin 0 -> 60 bytes ...afeb09909f4fb9dbc5b3041e42c95_activity.pkl | Bin 0 -> 60 bytes ...2ca8bb83207c008cff7daa0df4e92_activity.pkl | Bin 0 -> 60 bytes ...dcfd2331540e3af118f68f7cec2ef_activity.pkl | Bin 0 -> 60 bytes ...433248e0381d892be3f71818ac9cc_activity.pkl | Bin 0 -> 60 bytes ...369b660be0f19d5a793aa1f64a173_activity.pkl | Bin 0 -> 60 bytes ...d6efad954ed62903f552ead25bc34_activity.pkl | Bin 0 -> 60 bytes ...c016ef6cedfad404bb7a388251a6f_activity.pkl | Bin 0 -> 60 bytes ...d9195e1cbdb56eb1b5ab8eaf00a39_activity.pkl | Bin 0 -> 60 bytes ...d0e4cf5e56195b6cacc6845daceb4_activity.pkl | Bin 0 -> 60 bytes ...d89a22c1995430b311a982c6cd9a5_activity.pkl | Bin 0 -> 60 bytes ...134e3f7d6420c4e9490e7c58df322_activity.pkl | Bin 0 -> 60 bytes ...f7fadb5c29036b6476050a1d586be_activity.pkl | Bin 0 -> 60 bytes ...371631387f13e772b9cfa9dd38afb_activity.pkl | Bin 0 -> 60 bytes ...cee540b3f494be102946c4f1550b7_activity.pkl | Bin 0 -> 60 bytes ...862f995246429364c712238ae60ca_activity.pkl | Bin 0 -> 60 bytes ...a2b035f003fa83641526a12e538aa_activity.pkl | Bin 0 -> 60 bytes ...1a1f3ee34ff987fb02972d9e89936_activity.pkl | Bin 0 -> 60 bytes ...917e9a328cf7fc399a117bc69e619_activity.pkl | Bin 0 -> 60 bytes ...f56dcff3c0ec9fb5e2924b3e8af62_activity.pkl | Bin 0 -> 60 bytes ...14b6fca8a4cced959e1f9ecc8e539_activity.pkl | Bin 0 -> 60 bytes ...c665602e7fed4cd7fb2dd6eaa0309_activity.pkl | Bin 0 -> 60 bytes ...83a7ecaf315a381f8709d7ad242b8_activity.pkl | Bin 0 -> 60 bytes ...0ed965908485ae2708cbcb6673b2d_activity.pkl | Bin 0 -> 60 bytes ...87d0dc6346c6cbd9972d536458be9_activity.pkl | Bin 0 -> 60 bytes ...fd8b318751498e15d8dd8e496a2bf_activity.pkl | Bin 0 -> 60 bytes ...fe15a8002a436b6f7ecb7c1a64ad7_activity.pkl | Bin 0 -> 60 bytes ...5de8f16aba9c8cd8ade835d758a8f_activity.pkl | Bin 0 -> 60 bytes ...901107be53db41660fc752d7143ac_activity.pkl | Bin 0 -> 60 bytes ...f2eeb890e92d6f2b05ac23066ea32_activity.pkl | Bin 0 -> 60 bytes ...1733f2f6b9ccb2c82b46299ae93d0_activity.pkl | Bin 0 -> 60 bytes ...1accb1ccee93344ec39d87bac0033_activity.pkl | Bin 0 -> 60 bytes ...d202272e0baad93123d9fde23d94b_activity.pkl | Bin 0 -> 60 bytes ...fa7a775e212384f19c6505ab6ab42_activity.pkl | Bin 0 -> 60 bytes ...2746fed6b3bc11d795e34fd556a3c_activity.pkl | Bin 0 -> 60 bytes ...c12325203249880d145950f91618a_activity.pkl | Bin 0 -> 60 bytes ...313e537ff8709eb2c46e0b1f17034_activity.pkl | Bin 0 -> 60 bytes ...3ce1c6d78417a9292beff1d6f5a4e_activity.pkl | Bin 0 -> 60 bytes ...32043f0c54968ea104d79e2c69c28_activity.pkl | Bin 0 -> 60 bytes ...39296dd7b16635a742e32a69abcf9_activity.pkl | Bin 0 -> 60 bytes ...548695b21009cc2b09f1ef6955954_activity.pkl | Bin 0 -> 60 bytes ...34784436cdf855d9967a049c42f14_activity.pkl | Bin 0 -> 60 bytes ...bc2ee2717856409572568799707e5_activity.pkl | Bin 0 -> 60 bytes ...9859f6b3946560eefc5a27190cd41_activity.pkl | Bin 0 -> 60 bytes ...c3ea5939996c1b802e259bd587709_activity.pkl | Bin 0 -> 60 bytes ...6feb23f2cb543b5b804083285e6d0_activity.pkl | Bin 0 -> 60 bytes ...8e9524a3dd19f5af948eec7e26ebc_activity.pkl | Bin 0 -> 60 bytes ...2c8a9dec2330ada237e0cfdfd7ba7_activity.pkl | Bin 0 -> 60 bytes ...eb792e1b02860e8cf45ac444baa09_activity.pkl | Bin 0 -> 60 bytes ...53654355931b4ecc32b18ebef25b6_activity.pkl | Bin 0 -> 60 bytes ...fca370a26d6575f2f6dbf649c58f5_activity.pkl | Bin 0 -> 60 bytes ...8dfa67eac2e75e5814da0aebe886b_activity.pkl | Bin 0 -> 60 bytes ...5be3dd12d99cb4b31ce0f71e41cf3_activity.pkl | Bin 0 -> 60 bytes ...f9651a10fe1634835c1592361abb7_activity.pkl | Bin 0 -> 60 bytes ...20f69e95b7a14396ab9a14c67dc4f_activity.pkl | Bin 0 -> 60 bytes ...20f292591e09a48ee00cdfbdc07c3_activity.pkl | Bin 0 -> 60 bytes ...9dbc92accc1d981615ba413d9e2bc_activity.pkl | Bin 0 -> 60 bytes ...f414a27129c4768bc53a12b81ca8d_activity.pkl | Bin 0 -> 60 bytes ...ec157c4a09d142149d180691c851a_activity.pkl | Bin 0 -> 60 bytes ...dd42544a2d4d6b0646d33ca0847ca_activity.pkl | Bin 0 -> 60 bytes ...e3c777b5f874574c791f23840a2c6_activity.pkl | Bin 0 -> 60 bytes ...8f155273ae192d86151db1cd16b55_activity.pkl | Bin 0 -> 60 bytes ...77367fbc33bed29e59ccbf4a48e58_activity.pkl | Bin 0 -> 60 bytes ...f6012528a16db1c88c8c50ddb894f_activity.pkl | Bin 0 -> 60 bytes ...a041ab5e11db0693f17ddf27f4786_activity.pkl | Bin 0 -> 60 bytes ...f1cc4e1b475d6cf4172151579d799_activity.pkl | Bin 0 -> 60 bytes ...56987595b468798b192bb482dab62_activity.pkl | Bin 0 -> 60 bytes ...930182cc66cd940c74fd0e6b9cb0c_activity.pkl | Bin 0 -> 60 bytes ...b4e8823e2fd385831f6f50fb25e91_activity.pkl | Bin 0 -> 60 bytes ...a22eb0d13ccf6bd7b9ce2eb2b7a05_activity.pkl | Bin 0 -> 60 bytes ...7b8d3746878d7dcf69f3ee2e4aaa3_activity.pkl | Bin 0 -> 60 bytes ...52c16a9e411ea456ee8c5baa34192_activity.pkl | Bin 0 -> 60 bytes ...49515aebfc0c10b9228a391d1986c_activity.pkl | Bin 0 -> 60 bytes ...f09bbe678cb77c4635dc1c3e0348f_activity.pkl | Bin 0 -> 60 bytes ...e3a1e0a8f68af5c5a22cc15a244fa_activity.pkl | Bin 0 -> 60 bytes ...1d109253f8dde15670366609e1109_activity.pkl | Bin 0 -> 60 bytes ...5171a2291df6c84fbc312135c1522_activity.pkl | Bin 0 -> 60 bytes ...5f59265e1d654d9446c827fbca1ef_activity.pkl | Bin 0 -> 60 bytes ...2fb59101e371eae7d829bb181504c_activity.pkl | Bin 0 -> 60 bytes ...313f5cff5092333cd0de698bea192_activity.pkl | Bin 0 -> 60 bytes ...86ec7776fa362e1548d9898ee9a4d_activity.pkl | Bin 0 -> 60 bytes ...b053cc46e4441119a76c52d4858a0_activity.pkl | Bin 0 -> 60 bytes ...913a0b39aaa980c6af83e117152dd_activity.pkl | Bin 0 -> 60 bytes ...5eb8920ac6c57f730c43645f7fc7d_activity.pkl | Bin 0 -> 60 bytes ...3be529c68bf2107f2e3bc701c75f2_activity.pkl | Bin 0 -> 60 bytes ...8f2138a9496025dae68efaba3a102_activity.pkl | Bin 0 -> 60 bytes ...7ba53eb9653828384d2ec3a52d4b3_activity.pkl | Bin 0 -> 60 bytes ...991ea297adcbda96d1d7c7acabff0_activity.pkl | Bin 0 -> 60 bytes ...7c03afba4e8a7e14879bed6f15d1c_activity.pkl | Bin 0 -> 60 bytes ...7f462298551b94052e829a9cb44c8_activity.pkl | Bin 0 -> 60 bytes ...4eef77e2da1778c904ff2281bfdb6_activity.pkl | Bin 0 -> 60 bytes ...d36b82de0857f21d997141daabdc7_activity.pkl | Bin 0 -> 60 bytes ...404ca3a7af763b070d1e394cc7496_activity.pkl | Bin 0 -> 60 bytes ...200aada16dacf19fb5c6dcc8db9bf_activity.pkl | Bin 0 -> 60 bytes ...d493c56288cce55aaaee8b71710e8_activity.pkl | Bin 0 -> 60 bytes ...747c143cdaeff1623b010f41900e8_activity.pkl | Bin 0 -> 60 bytes ...b02c23828e3e2313e0005440f89f9_activity.pkl | Bin 0 -> 60 bytes ...84e3ca220edeaf34829a315363460_activity.pkl | Bin 0 -> 60 bytes ...e5a8f68076e30a7d11cf948d059ea_activity.pkl | Bin 0 -> 60 bytes ...9b2fa53b6c4c0b94185344afccdc5_activity.pkl | Bin 0 -> 60 bytes ...f4289344c540387dbdc4c48da7435_activity.pkl | Bin 0 -> 60 bytes ...fbb21f90c6d80924351ef176f03a2_activity.pkl | Bin 0 -> 60 bytes ...3c513a3a5b832c7a4e5bb309ade64_activity.pkl | Bin 0 -> 60 bytes ...eb8c1037ca7f01e8c63441a02392c_activity.pkl | Bin 0 -> 60 bytes ...c09fca91ccda4cd792f41f635f8f6_activity.pkl | Bin 0 -> 60 bytes ...021d4a8f5b92a6ca5e5b1765192fc_activity.pkl | Bin 0 -> 60 bytes ...21178177299e3c01160ceebc4fcec_activity.pkl | Bin 0 -> 60 bytes ...109ca96e6f10edff213317cdf1ad5_activity.pkl | Bin 0 -> 60 bytes ...cc3a0a18b8dbaef686493c53d29f9_activity.pkl | Bin 0 -> 60 bytes ...15e109f56971aaa3c01db568d5d52_activity.pkl | Bin 0 -> 60 bytes ...fa68215217dd0f3a48c39f09f8b2f_activity.pkl | Bin 0 -> 60 bytes ...e0f402217a82c98f9ce9037a4b606_activity.pkl | Bin 0 -> 60 bytes ...045613e7cad9c9d8315ef015a9e9c_activity.pkl | Bin 0 -> 60 bytes ...ff7a280ca43e86b08186e8f2f6542_activity.pkl | Bin 0 -> 60 bytes ...ccdf60bf0d278f2091e9e264ceb44_activity.pkl | Bin 0 -> 60 bytes ...2d0e70be965e6f7ca73b38ee5a3f9_activity.pkl | Bin 0 -> 60 bytes ...e256a7b73af804b9efdf1ecab189f_activity.pkl | Bin 0 -> 60 bytes ...221c9b123deddda631488d03cc138_activity.pkl | Bin 0 -> 60 bytes ...56ecc4b35aad65681e9868bef780e_activity.pkl | Bin 0 -> 60 bytes ...61c0361c1323cf7de35fa41795b00_activity.pkl | Bin 0 -> 60 bytes ...f71a70157dbf5c63b35141e56a553_activity.pkl | Bin 0 -> 60 bytes ...161d89dca41a3cb5c4d5bce11dc56_activity.pkl | Bin 0 -> 60 bytes ...286da228cccef2b6af59f6391f764_activity.pkl | Bin 0 -> 60 bytes ...a1c400a0688aa75a1bb330131b512_activity.pkl | Bin 0 -> 60 bytes ...4fd4c580a03ec056585f1bf16a131_activity.pkl | Bin 0 -> 60 bytes ...111aa2c9e5a7f587ff555c4b949ee_activity.pkl | Bin 0 -> 60 bytes ...96f8b49619962b2493e85abf42f45_activity.pkl | Bin 0 -> 60 bytes ...dd331c095533e229af2ac6c12a029_activity.pkl | Bin 0 -> 60 bytes ...cb28792c866a8ec8e5b4f4c5aec39_activity.pkl | Bin 0 -> 60 bytes ...0d941eac9c8aeb36a7e581bc05d42_activity.pkl | Bin 0 -> 60 bytes ...c6730921dbdf5f0c2a5f786f0d84b_activity.pkl | Bin 0 -> 60 bytes ...e959453bd82f3b95971fa16b8ff6e_activity.pkl | Bin 0 -> 60 bytes ...2b2ad9ea8e1461fc5fc15f7d33ead_activity.pkl | Bin 0 -> 60 bytes ...6787eaa1aa7cdf84655e3dbb12985_activity.pkl | Bin 0 -> 60 bytes ...aa75243272d67dbb44871e1b971d0_activity.pkl | Bin 0 -> 60 bytes ...e2d56c8c937f5ce83325da663c606_activity.pkl | Bin 0 -> 60 bytes ...7ee0de8e1d858e57cfed59b1229de_activity.pkl | Bin 0 -> 60 bytes ...bd3a3eec9cc2f4ac666630a51ffa9_activity.pkl | Bin 0 -> 60 bytes ...9ba1f173998f6bb26e866ac16da3d_activity.pkl | Bin 0 -> 60 bytes ...8ad58bbb84a603e3f010efc728c33_activity.pkl | Bin 0 -> 60 bytes ...712ea4b268091daeb1e1af668b282_activity.pkl | Bin 0 -> 60 bytes ...389c892b9c00075b09809795fb4e8_activity.pkl | Bin 0 -> 60 bytes ...17fddbd9d0c2e4c5ac4007a9411b7_activity.pkl | Bin 0 -> 60 bytes ...06f985d002d4180a28c054ad27bae_activity.pkl | Bin 0 -> 60 bytes ...99aea3e2064be491583259c9de326_activity.pkl | Bin 0 -> 60 bytes ...352503514a40e173525a7a2173f08_activity.pkl | Bin 0 -> 60 bytes ...8909e685d772208858d503741698c_activity.pkl | Bin 0 -> 60 bytes ...1e0bb5fc01b308512bf120c152a8b_activity.pkl | Bin 0 -> 60 bytes ...68cc06796576c5d146d693b6ecc69_activity.pkl | Bin 0 -> 60 bytes ...c7c1e9761d310f177990891c86b51_activity.pkl | Bin 0 -> 60 bytes ...29521793f42061d7456ea4b114be0_activity.pkl | Bin 0 -> 60 bytes ...8522cac5080ede43a231253faa662_activity.pkl | Bin 0 -> 60 bytes ...96c1eabf460773aca98394a6b17ad_activity.pkl | Bin 0 -> 60 bytes ...5e2cb8c9c4a595385e83889681056_activity.pkl | Bin 0 -> 60 bytes ...b2196a80addcad2e8dcb6c77f358f_activity.pkl | Bin 0 -> 60 bytes ...e2af2b10367f5056f28a6a69a03df_activity.pkl | Bin 0 -> 60 bytes ...06efe8399d1eadad28d94edded0b4_activity.pkl | Bin 0 -> 60 bytes ...f91a7d12b72bf64627ab7274e9b0d_activity.pkl | Bin 0 -> 60 bytes ...3c4ca8f1fa43dd0c718b3b40ebd14_activity.pkl | Bin 0 -> 60 bytes ...8c20e79b06bf22056fff77285ce11_activity.pkl | Bin 0 -> 60 bytes ...5233a97258e6b61801a68177b9cdb_activity.pkl | Bin 0 -> 60 bytes ...7e55607f8539daa5379e53dff38bd_activity.pkl | Bin 0 -> 60 bytes ...ef3b8a199ef1fba569d9be2a937be_activity.pkl | Bin 0 -> 60 bytes ...30ee60badcb33406e1bfeb9d69535_activity.pkl | Bin 0 -> 60 bytes ...13a0a9140de17ba959c3a8f986665_activity.pkl | Bin 0 -> 60 bytes ...1c589157020a0f23fe9ed13b34fae_activity.pkl | Bin 0 -> 60 bytes ...876cb8b0b111f86f0ea5797b1fd49_activity.pkl | Bin 0 -> 60 bytes ...2838714ccf2398167d0aae48bbaa2_activity.pkl | Bin 0 -> 60 bytes ...2ccbad2d8b717a6b81afc8368ebce_activity.pkl | Bin 0 -> 60 bytes ...2b6162f93a535951fd02e5c954953_activity.pkl | Bin 0 -> 60 bytes ...3d191dba44f465afd81b57e6b878a_activity.pkl | Bin 0 -> 60 bytes ...85fb7b240d46dd636222afa864bb4_activity.pkl | Bin 0 -> 60 bytes ...56bdc38beba16fc96ae87b2566fc2_activity.pkl | Bin 0 -> 60 bytes ...e67444609889e0f895865c24ed9cf_activity.pkl | Bin 0 -> 60 bytes ...7f0390e257cf565aceee0a94724bb_activity.pkl | Bin 0 -> 60 bytes ...f272e6e9002f8f7aa8d7c11413bae_activity.pkl | Bin 0 -> 60 bytes ...10ff7ddfabe047d528e6926df9edf_activity.pkl | Bin 0 -> 60 bytes ...347c18c64ffc97714eb01ef3820ad_activity.pkl | Bin 0 -> 60 bytes ...c444e6dfdaaef3fbcba0a89c1df10_activity.pkl | Bin 0 -> 60 bytes ...12033cd91309f70d3547445104d7c_activity.pkl | Bin 0 -> 60 bytes ...45adecba8619b45c23f97749a769b_activity.pkl | Bin 0 -> 60 bytes ...972bf20f3edec82412f999356e4d1_activity.pkl | Bin 0 -> 60 bytes ...ff739ca6804d2369e0f460ca72937_activity.pkl | Bin 0 -> 60 bytes ...83e7fb4f293b3738dea514544a34e_activity.pkl | Bin 0 -> 60 bytes ...5e700722a513cc6d464a523a2a922_activity.pkl | Bin 0 -> 60 bytes ...0a8280dd8b261bd1fe59207521eb5_activity.pkl | Bin 0 -> 60 bytes ...4b1dfd1ccfb494fbb570f521c43bb_activity.pkl | Bin 0 -> 60 bytes ...0793ef84690d5170ea3b5792dbd2f_activity.pkl | Bin 0 -> 60 bytes ...4b42e35a1ae998ad2eaa876ef8152_activity.pkl | Bin 0 -> 60 bytes ...1b7075c5e11e6781b6ba3804819bc_activity.pkl | Bin 0 -> 60 bytes ...20551df9e9a887ee3ac4ee62b8fc3_activity.pkl | Bin 0 -> 60 bytes ...c91bef590a0842bb25a8babb00fe1_activity.pkl | Bin 0 -> 60 bytes ...a1bfb8c2c64b6f9529eea4e7ff7aa_activity.pkl | Bin 0 -> 60 bytes ...4e48945a5902a92de00184acdb0b7_activity.pkl | Bin 0 -> 60 bytes ...2043ecaead90d780a58e91da12fff_activity.pkl | Bin 0 -> 60 bytes ...b7069e40ce713ae8dda4953ab228b_activity.pkl | Bin 0 -> 60 bytes ...66a3cedcb14d0bfc8c316f89889f8_activity.pkl | Bin 0 -> 60 bytes ...cfc8574d5283003d9001e85011a80_activity.pkl | Bin 0 -> 60 bytes ...0ee5a38e018f2706d7cd2929fc6f1_activity.pkl | Bin 0 -> 60 bytes ...4be2131eceb352b69980b7ee8a300_activity.pkl | Bin 0 -> 60 bytes ...036fe88a3bf6d3cfec0e824a44cad_activity.pkl | Bin 0 -> 60 bytes ...88dc7ca88ef3075514644a1a7556d_activity.pkl | Bin 0 -> 60 bytes ...2fa548746370b8309159f0f8fde36_activity.pkl | Bin 0 -> 60 bytes ...1305e61c99731c0ab3fee16ce2625_activity.pkl | Bin 0 -> 60 bytes ...6ea5f097c2cc78a4a3ef8ec024c20_activity.pkl | Bin 0 -> 60 bytes ...f18e40d8f5687fd78a9265f728980_activity.pkl | Bin 0 -> 60 bytes ...4f2def1736dcedc702930219be269_activity.pkl | Bin 0 -> 60 bytes ...7cde1e3bbc2e60f59a84de45266f5_activity.pkl | Bin 0 -> 60 bytes ...995a182b6cb2a4d98521295c44bcd_activity.pkl | Bin 0 -> 60 bytes ...5688cc3fc4c1573bd1721fdb7d80b_activity.pkl | Bin 0 -> 60 bytes ...80fac7fc759f813e7eddd40147d80_activity.pkl | Bin 0 -> 60 bytes ...1afec819e61dd59170b9d4fd352ef_activity.pkl | Bin 0 -> 60 bytes ...ee8c2a008bce5f24972ad0c52f2b9_activity.pkl | Bin 0 -> 60 bytes ...4e4b9a5c55c9fd2fddfa671d161df_activity.pkl | Bin 0 -> 60 bytes ...acbbc259cd6bbf5c7d5212e1ca2b4_activity.pkl | Bin 0 -> 60 bytes ...6d0877c4da9d964342e140c2ac5d4_activity.pkl | Bin 0 -> 60 bytes ...9439361c2fd708a46a21127fefd07_activity.pkl | Bin 0 -> 60 bytes ...0692d51a0868bef6f29d7ac757446_activity.pkl | Bin 0 -> 60 bytes ...e9a1baf41d7a7e036f7fda2a64420_activity.pkl | Bin 0 -> 60 bytes ...97b8157bad18ab110d77fcfcda529_activity.pkl | Bin 0 -> 60 bytes ...20bc0e5e9e067c61277f646a73dbe_activity.pkl | Bin 0 -> 60 bytes ...ac0260895615bd3bfcca375f5f7a2_activity.pkl | Bin 0 -> 60 bytes ...6222f6568b775598acbd75422ac78_activity.pkl | Bin 0 -> 60 bytes ...8b2412adc33390ff1606518590c06_activity.pkl | Bin 0 -> 60 bytes ...7d19e8f0db79d2c44d6cb76312ffd_activity.pkl | Bin 0 -> 60 bytes ...04667548824b504b50459335a6475_activity.pkl | Bin 0 -> 60 bytes ...80bee8828d984591025de69caf4fd_activity.pkl | Bin 0 -> 60 bytes ...9fc3e6ec17bd3bd39d6296677f735_activity.pkl | Bin 0 -> 60 bytes ...36cbe350e5c10866a176fc0a8e135_activity.pkl | Bin 0 -> 60 bytes ...a255dd3ddbcf0c18d0c458076b1ea_activity.pkl | Bin 0 -> 60 bytes ...8d7c111ef566bfa4573efa3f85a9c_activity.pkl | Bin 0 -> 60 bytes ...0275a4bb1221543c865e8eb48843f_activity.pkl | Bin 0 -> 60 bytes ...dd19c4a9b8a3e07f5d3c41fc0e3a1_activity.pkl | Bin 0 -> 60 bytes ...328c1d337f911a28469d53e98061a_activity.pkl | Bin 0 -> 60 bytes ...07391e506f0ef6e2ac6a112f6041f_activity.pkl | Bin 0 -> 60 bytes backend/logs/admin/admin.log | 18 + backend/logs/app/app.log | 1375 +++++++++++++++++ backend/logs/auth/auth.log | 2 + backend/logs/calendar/calendar.log | 5 + backend/logs/core_system/core_system.log | 32 + .../logs/data_management/data_management.log | 36 + .../energy_monitoring/energy_monitoring.log | 43 + backend/logs/guest/guest.log | 1 + .../hardware_integration.log | 193 +++ .../job_queue_system/job_queue_system.log | 70 + backend/logs/jobs/jobs.log | 4 + backend/logs/models/models.log | 2 + .../monitoring_analytics.log | 36 + backend/logs/permissions/permissions.log | 18 + backend/logs/scheduler/scheduler.log | 54 + .../logs/security_suite/security_suite.log | 54 + backend/logs/startup/startup.log | 158 ++ .../logs/tapo_controller/tapo_controller.log | 79 + .../utilities_collection.log | 40 + backend/logs/windows_fixes/windows_fixes.log | 32 + backend/static/css/tailwind.min.css | 2 +- backend/static/js/admin-guest-requests.js | 18 +- backend/templates/admin.html | 8 + backend/templates/imprint.html | 667 +++++--- .../hardware_integration.cpython-311.pyc | Bin 74862 -> 75379 bytes .../hardware_integration.cpython-313.pyc | Bin 65787 -> 65892 bytes backend/utils/hardware_integration.py | 199 ++- 394 files changed, 3013 insertions(+), 284 deletions(-) create mode 100644 backend/instance/sessions/00987e999ab984605f9f7a3d3d3fd00e_activity.pkl create mode 100644 backend/instance/sessions/00bd50c89a0a2b44bb8898cc35cf043c_activity.pkl create mode 100644 backend/instance/sessions/02ab7e158bdb33fbb329905e484a4802_activity.pkl create mode 100644 backend/instance/sessions/034e51f4a9ae120e593201b9de8f4c1f_activity.pkl create mode 100644 backend/instance/sessions/04d90d18e4e5f452c621a54faf33f13d_activity.pkl create mode 100644 backend/instance/sessions/06290b7c82051a4cc1f18b43c8c79f0d_activity.pkl create mode 100644 backend/instance/sessions/07a10cff14a74e1476a31da9e102ae28_activity.pkl create mode 100644 backend/instance/sessions/0b0f240887bc5624bc944b94a5c9be24_activity.pkl create mode 100644 backend/instance/sessions/0bbf0d8f4e3bc710f636fc4f8ba0fc23_activity.pkl create mode 100644 backend/instance/sessions/0bcb40c0a5a0307861320b23ef4ed628_activity.pkl create mode 100644 backend/instance/sessions/0d663a0ebbf27bf71f380e2ae06ba1d3_activity.pkl create mode 100644 backend/instance/sessions/0e8ba3aa2d5d02de49d5643dabfa2053_activity.pkl create mode 100644 backend/instance/sessions/0eb645d260d9fe1eaecc7c044d85d100_activity.pkl create mode 100644 backend/instance/sessions/0ed7ace6c70003435832522041eb9406_activity.pkl create mode 100644 backend/instance/sessions/0fe9e62892e83427302573db47275603_activity.pkl create mode 100644 backend/instance/sessions/10152859f9852fa601902d399ed2896a_activity.pkl create mode 100644 backend/instance/sessions/111ea4d8c39081961df89bda9f48834a_activity.pkl create mode 100644 backend/instance/sessions/11910fde56a49c01f973287fe9e587ee_activity.pkl create mode 100644 backend/instance/sessions/11ac90551c45c146da3551ec5856d0f7_activity.pkl create mode 100644 backend/instance/sessions/1277f7e5f509ae568d97d823f21f0e41_activity.pkl create mode 100644 backend/instance/sessions/133142042ebfc5f2780a6cbd23f337a4_activity.pkl create mode 100644 backend/instance/sessions/137b20328b9b6f84cbc1e4f82569eec8_activity.pkl create mode 100644 backend/instance/sessions/1461a49cfce945c6fb4223e62a0170dc_activity.pkl create mode 100644 backend/instance/sessions/149206037a992875afad29110930319a_activity.pkl create mode 100644 backend/instance/sessions/14a578a9693910c59e6f17660997d539_activity.pkl create mode 100644 backend/instance/sessions/15abea580ec97d3f2afcba24b547af9c_activity.pkl create mode 100644 backend/instance/sessions/174b73e1d8ce8e88a8233313cc030ca4_activity.pkl create mode 100644 backend/instance/sessions/17b5c5d45217c0dc2490720982f9cd0f_activity.pkl create mode 100644 backend/instance/sessions/184527fabe96fb0c8968db37fc1d255f_activity.pkl create mode 100644 backend/instance/sessions/18a019f1dacbd49a58a8d0daac106f8c_activity.pkl create mode 100644 backend/instance/sessions/18ee5ae611a0afa4def633513ccb7955_activity.pkl create mode 100644 backend/instance/sessions/19294f5dfccbf0e83d45d01fff36154b_activity.pkl create mode 100644 backend/instance/sessions/19929888680e80eac5ff5644a365f382_activity.pkl create mode 100644 backend/instance/sessions/19fab42339ccdbb4a02e8f61c69daed4_activity.pkl create mode 100644 backend/instance/sessions/1c20769810da34a6d3d241bff3f9c4b4_activity.pkl create mode 100644 backend/instance/sessions/1ddf8fe73357da1144bade7859da5886_activity.pkl create mode 100644 backend/instance/sessions/1f3ba05d3de8cb30bfb71b7a6f979efe_activity.pkl create mode 100644 backend/instance/sessions/1f60f9908d09312112502fdb955e658a_activity.pkl create mode 100644 backend/instance/sessions/1f6955f5ba4affc72c2dda17eb4768c1_activity.pkl create mode 100644 backend/instance/sessions/206e6c1225a7da7730457fb396d4a108_activity.pkl create mode 100644 backend/instance/sessions/20fa8a64b912f67cead5e00834fb472a_activity.pkl create mode 100644 backend/instance/sessions/226714f296bf1f13514c292da61fdf38_activity.pkl create mode 100644 backend/instance/sessions/23358eb8d747fc584efd99972c6e1677_activity.pkl create mode 100644 backend/instance/sessions/236ecda7682659f66a339298d4872598_activity.pkl create mode 100644 backend/instance/sessions/23bc22b2f2e0ab746c098fcf9a3343a9_activity.pkl create mode 100644 backend/instance/sessions/24c4984e4dd92991d139a4aa6f67a2e6_activity.pkl create mode 100644 backend/instance/sessions/24dad00e9c4884cf186b3e63d58e33f7_activity.pkl create mode 100644 backend/instance/sessions/25bcd6f6860f54d77c6e159ade341aa9_activity.pkl create mode 100644 backend/instance/sessions/25e16370cfd1a2a07a4daeabfdfed3c1_activity.pkl create mode 100644 backend/instance/sessions/280317d8196aa953aada93bbcafbd41f_activity.pkl create mode 100644 backend/instance/sessions/2861d3d978dc1b24c9953fac53d54ac2_activity.pkl create mode 100644 backend/instance/sessions/29453bf436fcd85eaed7743cb5768519_activity.pkl create mode 100644 backend/instance/sessions/2aaddc7cf30ef821e06b9c86862825a1_activity.pkl create mode 100644 backend/instance/sessions/2b52f6e595ccbab7fbc7c64c3d895a84_activity.pkl create mode 100644 backend/instance/sessions/2c956a16d10cf3ad529a8d461cc88497_activity.pkl create mode 100644 backend/instance/sessions/2d35eda441718745e98b290b801f5867_activity.pkl create mode 100644 backend/instance/sessions/2df9f4256d64b0da1930796f7315b804_activity.pkl create mode 100644 backend/instance/sessions/2feb002aa74d780c326bfde9db5b8866_activity.pkl create mode 100644 backend/instance/sessions/301a14a083d2310a7cfbaef5c9468345_activity.pkl create mode 100644 backend/instance/sessions/30474f4cede4bbee355ed93c1ce3b209_activity.pkl create mode 100644 backend/instance/sessions/304b0b807622dbe412009cfb3e7392e1_activity.pkl create mode 100644 backend/instance/sessions/31304d250b104c6469e9247ce41e38a2_activity.pkl create mode 100644 backend/instance/sessions/315d0aab67e3220447b4b511aed01084_activity.pkl create mode 100644 backend/instance/sessions/33edf31649098802ae24ce3b0546e342_activity.pkl create mode 100644 backend/instance/sessions/345a915ab02760fc5196cd400d9ccfe7_activity.pkl create mode 100644 backend/instance/sessions/34ecdfd093cf4f29d06f704fb5aabc29_activity.pkl create mode 100644 backend/instance/sessions/3539f29244511b4326c07daeeed9501b_activity.pkl create mode 100644 backend/instance/sessions/356305db97cbc3aebc3e2a48f9d0c318_activity.pkl create mode 100644 backend/instance/sessions/3569be4a53914be30a65847e006919a1_activity.pkl create mode 100644 backend/instance/sessions/3603dd74709f22cb3e7ef93bc8b7be40_activity.pkl create mode 100644 backend/instance/sessions/36732222fb11045fed8290a1f580b361_activity.pkl create mode 100644 backend/instance/sessions/377338291b841daa04bdb279d4b47bd7_activity.pkl create mode 100644 backend/instance/sessions/37969bc81ca03dd2394d0cb4719af424_activity.pkl create mode 100644 backend/instance/sessions/38abd724a4c1d0c4ae30d0ca538e4421_activity.pkl create mode 100644 backend/instance/sessions/38d23992fff10b79baaa050567412f0b_activity.pkl create mode 100644 backend/instance/sessions/390094b504a8d39c91fd4e2cdbf554af_activity.pkl create mode 100644 backend/instance/sessions/393acf4b208450ad13aba31a4767f101_activity.pkl create mode 100644 backend/instance/sessions/3ad2932213d4bef359703b4e683ef6fa_activity.pkl create mode 100644 backend/instance/sessions/3ca181436251b3a9c107abf0ece15257_activity.pkl create mode 100644 backend/instance/sessions/3d03b7b0ae487bb0e72738d6c91f8a29_activity.pkl create mode 100644 backend/instance/sessions/3d0d9ba2ce2b1ffbb6b682970e22f6ef_activity.pkl create mode 100644 backend/instance/sessions/3d1011ad1b47daee5815417176eb08dd_activity.pkl create mode 100644 backend/instance/sessions/3d1203a7c5451c12795adaa0adfbeb85_activity.pkl create mode 100644 backend/instance/sessions/3dfa85c15417a8568ef298099b312454_activity.pkl create mode 100644 backend/instance/sessions/3e6ee35a55fc26ea973f9edb5dc775e2_activity.pkl create mode 100644 backend/instance/sessions/3eaa175821617244c7bb79d46034d63a_activity.pkl create mode 100644 backend/instance/sessions/3f204a8ba702e4112857e2e736397c1d_activity.pkl create mode 100644 backend/instance/sessions/3f21454854a458521afa46d56168e467_activity.pkl create mode 100644 backend/instance/sessions/3f53b246adffbd18abcacd3663e22ad1_activity.pkl create mode 100644 backend/instance/sessions/3ff26470c072fe3b8bf72da62db27203_activity.pkl create mode 100644 backend/instance/sessions/4031ba46de6000582572e17cc29d35fd_activity.pkl create mode 100644 backend/instance/sessions/40d3b5144362d1d3cb1dca7cffdb087a_activity.pkl create mode 100644 backend/instance/sessions/4158af22c785ac87121af0091569a77a_activity.pkl create mode 100644 backend/instance/sessions/41f477e65354d067b5202d1448ef7f79_activity.pkl create mode 100644 backend/instance/sessions/42083366183672e085042ce66ade8620_activity.pkl create mode 100644 backend/instance/sessions/4391c2449ec92d67ab843077bd29d174_activity.pkl create mode 100644 backend/instance/sessions/45030bffdb147712d2345561a7265b3c_activity.pkl create mode 100644 backend/instance/sessions/45ce23b04718a4c01b4ec4717fe58b3f_activity.pkl create mode 100644 backend/instance/sessions/47f5189020e3ed5e975ee1fe6c32f768_activity.pkl create mode 100644 backend/instance/sessions/4921e317299111cb9577ef4fc2e39896_activity.pkl create mode 100644 backend/instance/sessions/4958b12288c09ababd8ce41cb38ab670_activity.pkl create mode 100644 backend/instance/sessions/49c1edf64743b5b88ead332511629abd_activity.pkl create mode 100644 backend/instance/sessions/4a1f18f83186ba1eb6f5535c9ea5af67_activity.pkl create mode 100644 backend/instance/sessions/4a2d50df1eee045f47bb6f268faf2b94_activity.pkl create mode 100644 backend/instance/sessions/4abb2248e126059b3fae5a21aa6e3fa5_activity.pkl create mode 100644 backend/instance/sessions/4ba416690cdfe6c9eaf1b172b2c58716_activity.pkl create mode 100644 backend/instance/sessions/4c3c39c1ea83a26ebe373429475c6470_activity.pkl create mode 100644 backend/instance/sessions/4c6819ab66b2b58d241fda4a1fa4b09b_activity.pkl create mode 100644 backend/instance/sessions/4c7dbd2558cc64d3404821918ab4be51_activity.pkl create mode 100644 backend/instance/sessions/4cd437f3749fb2b6950d9faf8ade9570_activity.pkl create mode 100644 backend/instance/sessions/4e0fb640105dbfcb9e1016b4094d5eba_activity.pkl create mode 100644 backend/instance/sessions/4e69189a862cef98a80fbd9850c5775d_activity.pkl create mode 100644 backend/instance/sessions/4eb87c9808d2908604039aa5a703cce2_activity.pkl create mode 100644 backend/instance/sessions/4f03aaaf2ab7c18231155b17583e104a_activity.pkl create mode 100644 backend/instance/sessions/4f1b94d6a5210f315eeec2e2a1c75ac4_activity.pkl create mode 100644 backend/instance/sessions/4ff4f8e2def8bce0ea104039f68e15de_activity.pkl create mode 100644 backend/instance/sessions/502046436ee0b294130812467d648ca1_activity.pkl create mode 100644 backend/instance/sessions/503b808ab0d4f1710d829104358ce388_activity.pkl create mode 100644 backend/instance/sessions/503e24c7b129627a8d174e6a2b906122_activity.pkl create mode 100644 backend/instance/sessions/51252448b5fb89f64054daafe0ef0c64_activity.pkl create mode 100644 backend/instance/sessions/521fce8921ae030ec249c1156d50f5b6_activity.pkl create mode 100644 backend/instance/sessions/5348d95cf704a365e4032ecaaf958878_activity.pkl create mode 100644 backend/instance/sessions/53fd47a273a29ca92bd99175bbe2b74f_activity.pkl create mode 100644 backend/instance/sessions/54436e1458dc5c55a9cd82640f44191b_activity.pkl create mode 100644 backend/instance/sessions/55e6269d6ff95b7bfe48913cb84b9474_activity.pkl create mode 100644 backend/instance/sessions/578a1b67d4cb1a667fbea575ae3c6529_activity.pkl create mode 100644 backend/instance/sessions/578ba5c4c528110d8a10d78e135ee87c_activity.pkl create mode 100644 backend/instance/sessions/5920db2ba81e03e243344451b47334cb_activity.pkl create mode 100644 backend/instance/sessions/5b851059ea4b334134ff328783bfe60e_activity.pkl create mode 100644 backend/instance/sessions/5cdb39b3c63a777dce0ba3e071e3f555_activity.pkl create mode 100644 backend/instance/sessions/5ddafeb09909f4fb9dbc5b3041e42c95_activity.pkl create mode 100644 backend/instance/sessions/5e62ca8bb83207c008cff7daa0df4e92_activity.pkl create mode 100644 backend/instance/sessions/5f4dcfd2331540e3af118f68f7cec2ef_activity.pkl create mode 100644 backend/instance/sessions/5ff433248e0381d892be3f71818ac9cc_activity.pkl create mode 100644 backend/instance/sessions/603369b660be0f19d5a793aa1f64a173_activity.pkl create mode 100644 backend/instance/sessions/611d6efad954ed62903f552ead25bc34_activity.pkl create mode 100644 backend/instance/sessions/62fc016ef6cedfad404bb7a388251a6f_activity.pkl create mode 100644 backend/instance/sessions/63dd9195e1cbdb56eb1b5ab8eaf00a39_activity.pkl create mode 100644 backend/instance/sessions/63fd0e4cf5e56195b6cacc6845daceb4_activity.pkl create mode 100644 backend/instance/sessions/65ed89a22c1995430b311a982c6cd9a5_activity.pkl create mode 100644 backend/instance/sessions/660134e3f7d6420c4e9490e7c58df322_activity.pkl create mode 100644 backend/instance/sessions/664f7fadb5c29036b6476050a1d586be_activity.pkl create mode 100644 backend/instance/sessions/671371631387f13e772b9cfa9dd38afb_activity.pkl create mode 100644 backend/instance/sessions/676cee540b3f494be102946c4f1550b7_activity.pkl create mode 100644 backend/instance/sessions/67b862f995246429364c712238ae60ca_activity.pkl create mode 100644 backend/instance/sessions/683a2b035f003fa83641526a12e538aa_activity.pkl create mode 100644 backend/instance/sessions/68b1a1f3ee34ff987fb02972d9e89936_activity.pkl create mode 100644 backend/instance/sessions/68c917e9a328cf7fc399a117bc69e619_activity.pkl create mode 100644 backend/instance/sessions/69ff56dcff3c0ec9fb5e2924b3e8af62_activity.pkl create mode 100644 backend/instance/sessions/6a314b6fca8a4cced959e1f9ecc8e539_activity.pkl create mode 100644 backend/instance/sessions/6b4c665602e7fed4cd7fb2dd6eaa0309_activity.pkl create mode 100644 backend/instance/sessions/6d083a7ecaf315a381f8709d7ad242b8_activity.pkl create mode 100644 backend/instance/sessions/6d20ed965908485ae2708cbcb6673b2d_activity.pkl create mode 100644 backend/instance/sessions/6de87d0dc6346c6cbd9972d536458be9_activity.pkl create mode 100644 backend/instance/sessions/6e7fd8b318751498e15d8dd8e496a2bf_activity.pkl create mode 100644 backend/instance/sessions/6f9fe15a8002a436b6f7ecb7c1a64ad7_activity.pkl create mode 100644 backend/instance/sessions/6fe5de8f16aba9c8cd8ade835d758a8f_activity.pkl create mode 100644 backend/instance/sessions/703901107be53db41660fc752d7143ac_activity.pkl create mode 100644 backend/instance/sessions/70df2eeb890e92d6f2b05ac23066ea32_activity.pkl create mode 100644 backend/instance/sessions/70e1733f2f6b9ccb2c82b46299ae93d0_activity.pkl create mode 100644 backend/instance/sessions/7121accb1ccee93344ec39d87bac0033_activity.pkl create mode 100644 backend/instance/sessions/716d202272e0baad93123d9fde23d94b_activity.pkl create mode 100644 backend/instance/sessions/716fa7a775e212384f19c6505ab6ab42_activity.pkl create mode 100644 backend/instance/sessions/71f2746fed6b3bc11d795e34fd556a3c_activity.pkl create mode 100644 backend/instance/sessions/721c12325203249880d145950f91618a_activity.pkl create mode 100644 backend/instance/sessions/72d313e537ff8709eb2c46e0b1f17034_activity.pkl create mode 100644 backend/instance/sessions/7363ce1c6d78417a9292beff1d6f5a4e_activity.pkl create mode 100644 backend/instance/sessions/74132043f0c54968ea104d79e2c69c28_activity.pkl create mode 100644 backend/instance/sessions/74439296dd7b16635a742e32a69abcf9_activity.pkl create mode 100644 backend/instance/sessions/74c548695b21009cc2b09f1ef6955954_activity.pkl create mode 100644 backend/instance/sessions/74f34784436cdf855d9967a049c42f14_activity.pkl create mode 100644 backend/instance/sessions/750bc2ee2717856409572568799707e5_activity.pkl create mode 100644 backend/instance/sessions/7579859f6b3946560eefc5a27190cd41_activity.pkl create mode 100644 backend/instance/sessions/75bc3ea5939996c1b802e259bd587709_activity.pkl create mode 100644 backend/instance/sessions/7716feb23f2cb543b5b804083285e6d0_activity.pkl create mode 100644 backend/instance/sessions/77b8e9524a3dd19f5af948eec7e26ebc_activity.pkl create mode 100644 backend/instance/sessions/7962c8a9dec2330ada237e0cfdfd7ba7_activity.pkl create mode 100644 backend/instance/sessions/79eeb792e1b02860e8cf45ac444baa09_activity.pkl create mode 100644 backend/instance/sessions/7ca53654355931b4ecc32b18ebef25b6_activity.pkl create mode 100644 backend/instance/sessions/7d6fca370a26d6575f2f6dbf649c58f5_activity.pkl create mode 100644 backend/instance/sessions/7e48dfa67eac2e75e5814da0aebe886b_activity.pkl create mode 100644 backend/instance/sessions/7e85be3dd12d99cb4b31ce0f71e41cf3_activity.pkl create mode 100644 backend/instance/sessions/7f6f9651a10fe1634835c1592361abb7_activity.pkl create mode 100644 backend/instance/sessions/80020f69e95b7a14396ab9a14c67dc4f_activity.pkl create mode 100644 backend/instance/sessions/80320f292591e09a48ee00cdfbdc07c3_activity.pkl create mode 100644 backend/instance/sessions/8069dbc92accc1d981615ba413d9e2bc_activity.pkl create mode 100644 backend/instance/sessions/806f414a27129c4768bc53a12b81ca8d_activity.pkl create mode 100644 backend/instance/sessions/80bec157c4a09d142149d180691c851a_activity.pkl create mode 100644 backend/instance/sessions/80ddd42544a2d4d6b0646d33ca0847ca_activity.pkl create mode 100644 backend/instance/sessions/80de3c777b5f874574c791f23840a2c6_activity.pkl create mode 100644 backend/instance/sessions/8218f155273ae192d86151db1cd16b55_activity.pkl create mode 100644 backend/instance/sessions/82377367fbc33bed29e59ccbf4a48e58_activity.pkl create mode 100644 backend/instance/sessions/828f6012528a16db1c88c8c50ddb894f_activity.pkl create mode 100644 backend/instance/sessions/82ca041ab5e11db0693f17ddf27f4786_activity.pkl create mode 100644 backend/instance/sessions/848f1cc4e1b475d6cf4172151579d799_activity.pkl create mode 100644 backend/instance/sessions/84a56987595b468798b192bb482dab62_activity.pkl create mode 100644 backend/instance/sessions/858930182cc66cd940c74fd0e6b9cb0c_activity.pkl create mode 100644 backend/instance/sessions/860b4e8823e2fd385831f6f50fb25e91_activity.pkl create mode 100644 backend/instance/sessions/862a22eb0d13ccf6bd7b9ce2eb2b7a05_activity.pkl create mode 100644 backend/instance/sessions/8637b8d3746878d7dcf69f3ee2e4aaa3_activity.pkl create mode 100644 backend/instance/sessions/88552c16a9e411ea456ee8c5baa34192_activity.pkl create mode 100644 backend/instance/sessions/8a849515aebfc0c10b9228a391d1986c_activity.pkl create mode 100644 backend/instance/sessions/8aaf09bbe678cb77c4635dc1c3e0348f_activity.pkl create mode 100644 backend/instance/sessions/8c1e3a1e0a8f68af5c5a22cc15a244fa_activity.pkl create mode 100644 backend/instance/sessions/8cb1d109253f8dde15670366609e1109_activity.pkl create mode 100644 backend/instance/sessions/8d45171a2291df6c84fbc312135c1522_activity.pkl create mode 100644 backend/instance/sessions/8e55f59265e1d654d9446c827fbca1ef_activity.pkl create mode 100644 backend/instance/sessions/8e62fb59101e371eae7d829bb181504c_activity.pkl create mode 100644 backend/instance/sessions/8e8313f5cff5092333cd0de698bea192_activity.pkl create mode 100644 backend/instance/sessions/8ed86ec7776fa362e1548d9898ee9a4d_activity.pkl create mode 100644 backend/instance/sessions/8eeb053cc46e4441119a76c52d4858a0_activity.pkl create mode 100644 backend/instance/sessions/8f1913a0b39aaa980c6af83e117152dd_activity.pkl create mode 100644 backend/instance/sessions/8f25eb8920ac6c57f730c43645f7fc7d_activity.pkl create mode 100644 backend/instance/sessions/8fd3be529c68bf2107f2e3bc701c75f2_activity.pkl create mode 100644 backend/instance/sessions/90a8f2138a9496025dae68efaba3a102_activity.pkl create mode 100644 backend/instance/sessions/90b7ba53eb9653828384d2ec3a52d4b3_activity.pkl create mode 100644 backend/instance/sessions/910991ea297adcbda96d1d7c7acabff0_activity.pkl create mode 100644 backend/instance/sessions/91a7c03afba4e8a7e14879bed6f15d1c_activity.pkl create mode 100644 backend/instance/sessions/9237f462298551b94052e829a9cb44c8_activity.pkl create mode 100644 backend/instance/sessions/9314eef77e2da1778c904ff2281bfdb6_activity.pkl create mode 100644 backend/instance/sessions/933d36b82de0857f21d997141daabdc7_activity.pkl create mode 100644 backend/instance/sessions/95b404ca3a7af763b070d1e394cc7496_activity.pkl create mode 100644 backend/instance/sessions/96b200aada16dacf19fb5c6dcc8db9bf_activity.pkl create mode 100644 backend/instance/sessions/972d493c56288cce55aaaee8b71710e8_activity.pkl create mode 100644 backend/instance/sessions/97e747c143cdaeff1623b010f41900e8_activity.pkl create mode 100644 backend/instance/sessions/980b02c23828e3e2313e0005440f89f9_activity.pkl create mode 100644 backend/instance/sessions/98b84e3ca220edeaf34829a315363460_activity.pkl create mode 100644 backend/instance/sessions/990e5a8f68076e30a7d11cf948d059ea_activity.pkl create mode 100644 backend/instance/sessions/9ad9b2fa53b6c4c0b94185344afccdc5_activity.pkl create mode 100644 backend/instance/sessions/9b0f4289344c540387dbdc4c48da7435_activity.pkl create mode 100644 backend/instance/sessions/9b0fbb21f90c6d80924351ef176f03a2_activity.pkl create mode 100644 backend/instance/sessions/9b63c513a3a5b832c7a4e5bb309ade64_activity.pkl create mode 100644 backend/instance/sessions/9d0eb8c1037ca7f01e8c63441a02392c_activity.pkl create mode 100644 backend/instance/sessions/9ecc09fca91ccda4cd792f41f635f8f6_activity.pkl create mode 100644 backend/instance/sessions/9f7021d4a8f5b92a6ca5e5b1765192fc_activity.pkl create mode 100644 backend/instance/sessions/9ff21178177299e3c01160ceebc4fcec_activity.pkl create mode 100644 backend/instance/sessions/a02109ca96e6f10edff213317cdf1ad5_activity.pkl create mode 100644 backend/instance/sessions/a0acc3a0a18b8dbaef686493c53d29f9_activity.pkl create mode 100644 backend/instance/sessions/a2115e109f56971aaa3c01db568d5d52_activity.pkl create mode 100644 backend/instance/sessions/a24fa68215217dd0f3a48c39f09f8b2f_activity.pkl create mode 100644 backend/instance/sessions/a2de0f402217a82c98f9ce9037a4b606_activity.pkl create mode 100644 backend/instance/sessions/a36045613e7cad9c9d8315ef015a9e9c_activity.pkl create mode 100644 backend/instance/sessions/a45ff7a280ca43e86b08186e8f2f6542_activity.pkl create mode 100644 backend/instance/sessions/a5dccdf60bf0d278f2091e9e264ceb44_activity.pkl create mode 100644 backend/instance/sessions/a892d0e70be965e6f7ca73b38ee5a3f9_activity.pkl create mode 100644 backend/instance/sessions/a8be256a7b73af804b9efdf1ecab189f_activity.pkl create mode 100644 backend/instance/sessions/a95221c9b123deddda631488d03cc138_activity.pkl create mode 100644 backend/instance/sessions/aa056ecc4b35aad65681e9868bef780e_activity.pkl create mode 100644 backend/instance/sessions/ab461c0361c1323cf7de35fa41795b00_activity.pkl create mode 100644 backend/instance/sessions/abff71a70157dbf5c63b35141e56a553_activity.pkl create mode 100644 backend/instance/sessions/acc161d89dca41a3cb5c4d5bce11dc56_activity.pkl create mode 100644 backend/instance/sessions/ae4286da228cccef2b6af59f6391f764_activity.pkl create mode 100644 backend/instance/sessions/afda1c400a0688aa75a1bb330131b512_activity.pkl create mode 100644 backend/instance/sessions/b014fd4c580a03ec056585f1bf16a131_activity.pkl create mode 100644 backend/instance/sessions/b0c111aa2c9e5a7f587ff555c4b949ee_activity.pkl create mode 100644 backend/instance/sessions/b0d96f8b49619962b2493e85abf42f45_activity.pkl create mode 100644 backend/instance/sessions/b28dd331c095533e229af2ac6c12a029_activity.pkl create mode 100644 backend/instance/sessions/b2ecb28792c866a8ec8e5b4f4c5aec39_activity.pkl create mode 100644 backend/instance/sessions/b2f0d941eac9c8aeb36a7e581bc05d42_activity.pkl create mode 100644 backend/instance/sessions/b38c6730921dbdf5f0c2a5f786f0d84b_activity.pkl create mode 100644 backend/instance/sessions/b47e959453bd82f3b95971fa16b8ff6e_activity.pkl create mode 100644 backend/instance/sessions/b512b2ad9ea8e1461fc5fc15f7d33ead_activity.pkl create mode 100644 backend/instance/sessions/b526787eaa1aa7cdf84655e3dbb12985_activity.pkl create mode 100644 backend/instance/sessions/b56aa75243272d67dbb44871e1b971d0_activity.pkl create mode 100644 backend/instance/sessions/b72e2d56c8c937f5ce83325da663c606_activity.pkl create mode 100644 backend/instance/sessions/b8c7ee0de8e1d858e57cfed59b1229de_activity.pkl create mode 100644 backend/instance/sessions/ba0bd3a3eec9cc2f4ac666630a51ffa9_activity.pkl create mode 100644 backend/instance/sessions/bab9ba1f173998f6bb26e866ac16da3d_activity.pkl create mode 100644 backend/instance/sessions/bae8ad58bbb84a603e3f010efc728c33_activity.pkl create mode 100644 backend/instance/sessions/bb0712ea4b268091daeb1e1af668b282_activity.pkl create mode 100644 backend/instance/sessions/bb2389c892b9c00075b09809795fb4e8_activity.pkl create mode 100644 backend/instance/sessions/bb817fddbd9d0c2e4c5ac4007a9411b7_activity.pkl create mode 100644 backend/instance/sessions/bc506f985d002d4180a28c054ad27bae_activity.pkl create mode 100644 backend/instance/sessions/bf499aea3e2064be491583259c9de326_activity.pkl create mode 100644 backend/instance/sessions/bf6352503514a40e173525a7a2173f08_activity.pkl create mode 100644 backend/instance/sessions/c158909e685d772208858d503741698c_activity.pkl create mode 100644 backend/instance/sessions/c1d1e0bb5fc01b308512bf120c152a8b_activity.pkl create mode 100644 backend/instance/sessions/c2468cc06796576c5d146d693b6ecc69_activity.pkl create mode 100644 backend/instance/sessions/c38c7c1e9761d310f177990891c86b51_activity.pkl create mode 100644 backend/instance/sessions/c4829521793f42061d7456ea4b114be0_activity.pkl create mode 100644 backend/instance/sessions/c4a8522cac5080ede43a231253faa662_activity.pkl create mode 100644 backend/instance/sessions/c6096c1eabf460773aca98394a6b17ad_activity.pkl create mode 100644 backend/instance/sessions/c6e5e2cb8c9c4a595385e83889681056_activity.pkl create mode 100644 backend/instance/sessions/c76b2196a80addcad2e8dcb6c77f358f_activity.pkl create mode 100644 backend/instance/sessions/c7ee2af2b10367f5056f28a6a69a03df_activity.pkl create mode 100644 backend/instance/sessions/c8106efe8399d1eadad28d94edded0b4_activity.pkl create mode 100644 backend/instance/sessions/c93f91a7d12b72bf64627ab7274e9b0d_activity.pkl create mode 100644 backend/instance/sessions/ccc3c4ca8f1fa43dd0c718b3b40ebd14_activity.pkl create mode 100644 backend/instance/sessions/cdf8c20e79b06bf22056fff77285ce11_activity.pkl create mode 100644 backend/instance/sessions/ceb5233a97258e6b61801a68177b9cdb_activity.pkl create mode 100644 backend/instance/sessions/ced7e55607f8539daa5379e53dff38bd_activity.pkl create mode 100644 backend/instance/sessions/ceeef3b8a199ef1fba569d9be2a937be_activity.pkl create mode 100644 backend/instance/sessions/cf130ee60badcb33406e1bfeb9d69535_activity.pkl create mode 100644 backend/instance/sessions/cf413a0a9140de17ba959c3a8f986665_activity.pkl create mode 100644 backend/instance/sessions/cf51c589157020a0f23fe9ed13b34fae_activity.pkl create mode 100644 backend/instance/sessions/cfc876cb8b0b111f86f0ea5797b1fd49_activity.pkl create mode 100644 backend/instance/sessions/d092838714ccf2398167d0aae48bbaa2_activity.pkl create mode 100644 backend/instance/sessions/d122ccbad2d8b717a6b81afc8368ebce_activity.pkl create mode 100644 backend/instance/sessions/d222b6162f93a535951fd02e5c954953_activity.pkl create mode 100644 backend/instance/sessions/d233d191dba44f465afd81b57e6b878a_activity.pkl create mode 100644 backend/instance/sessions/d2385fb7b240d46dd636222afa864bb4_activity.pkl create mode 100644 backend/instance/sessions/d4a56bdc38beba16fc96ae87b2566fc2_activity.pkl create mode 100644 backend/instance/sessions/d53e67444609889e0f895865c24ed9cf_activity.pkl create mode 100644 backend/instance/sessions/d577f0390e257cf565aceee0a94724bb_activity.pkl create mode 100644 backend/instance/sessions/d57f272e6e9002f8f7aa8d7c11413bae_activity.pkl create mode 100644 backend/instance/sessions/d5c10ff7ddfabe047d528e6926df9edf_activity.pkl create mode 100644 backend/instance/sessions/d68347c18c64ffc97714eb01ef3820ad_activity.pkl create mode 100644 backend/instance/sessions/d8ac444e6dfdaaef3fbcba0a89c1df10_activity.pkl create mode 100644 backend/instance/sessions/d9912033cd91309f70d3547445104d7c_activity.pkl create mode 100644 backend/instance/sessions/db345adecba8619b45c23f97749a769b_activity.pkl create mode 100644 backend/instance/sessions/db6972bf20f3edec82412f999356e4d1_activity.pkl create mode 100644 backend/instance/sessions/dbeff739ca6804d2369e0f460ca72937_activity.pkl create mode 100644 backend/instance/sessions/dc983e7fb4f293b3738dea514544a34e_activity.pkl create mode 100644 backend/instance/sessions/dd25e700722a513cc6d464a523a2a922_activity.pkl create mode 100644 backend/instance/sessions/dd90a8280dd8b261bd1fe59207521eb5_activity.pkl create mode 100644 backend/instance/sessions/dde4b1dfd1ccfb494fbb570f521c43bb_activity.pkl create mode 100644 backend/instance/sessions/de70793ef84690d5170ea3b5792dbd2f_activity.pkl create mode 100644 backend/instance/sessions/dee4b42e35a1ae998ad2eaa876ef8152_activity.pkl create mode 100644 backend/instance/sessions/e071b7075c5e11e6781b6ba3804819bc_activity.pkl create mode 100644 backend/instance/sessions/e0d20551df9e9a887ee3ac4ee62b8fc3_activity.pkl create mode 100644 backend/instance/sessions/e0fc91bef590a0842bb25a8babb00fe1_activity.pkl create mode 100644 backend/instance/sessions/e22a1bfb8c2c64b6f9529eea4e7ff7aa_activity.pkl create mode 100644 backend/instance/sessions/e364e48945a5902a92de00184acdb0b7_activity.pkl create mode 100644 backend/instance/sessions/e452043ecaead90d780a58e91da12fff_activity.pkl create mode 100644 backend/instance/sessions/e54b7069e40ce713ae8dda4953ab228b_activity.pkl create mode 100644 backend/instance/sessions/e5f66a3cedcb14d0bfc8c316f89889f8_activity.pkl create mode 100644 backend/instance/sessions/e5fcfc8574d5283003d9001e85011a80_activity.pkl create mode 100644 backend/instance/sessions/e7f0ee5a38e018f2706d7cd2929fc6f1_activity.pkl create mode 100644 backend/instance/sessions/e814be2131eceb352b69980b7ee8a300_activity.pkl create mode 100644 backend/instance/sessions/ea0036fe88a3bf6d3cfec0e824a44cad_activity.pkl create mode 100644 backend/instance/sessions/ecc88dc7ca88ef3075514644a1a7556d_activity.pkl create mode 100644 backend/instance/sessions/ed52fa548746370b8309159f0f8fde36_activity.pkl create mode 100644 backend/instance/sessions/ed61305e61c99731c0ab3fee16ce2625_activity.pkl create mode 100644 backend/instance/sessions/ed86ea5f097c2cc78a4a3ef8ec024c20_activity.pkl create mode 100644 backend/instance/sessions/ee4f18e40d8f5687fd78a9265f728980_activity.pkl create mode 100644 backend/instance/sessions/f074f2def1736dcedc702930219be269_activity.pkl create mode 100644 backend/instance/sessions/f0b7cde1e3bbc2e60f59a84de45266f5_activity.pkl create mode 100644 backend/instance/sessions/f15995a182b6cb2a4d98521295c44bcd_activity.pkl create mode 100644 backend/instance/sessions/f175688cc3fc4c1573bd1721fdb7d80b_activity.pkl create mode 100644 backend/instance/sessions/f1f80fac7fc759f813e7eddd40147d80_activity.pkl create mode 100644 backend/instance/sessions/f281afec819e61dd59170b9d4fd352ef_activity.pkl create mode 100644 backend/instance/sessions/f36ee8c2a008bce5f24972ad0c52f2b9_activity.pkl create mode 100644 backend/instance/sessions/f3d4e4b9a5c55c9fd2fddfa671d161df_activity.pkl create mode 100644 backend/instance/sessions/f3eacbbc259cd6bbf5c7d5212e1ca2b4_activity.pkl create mode 100644 backend/instance/sessions/f496d0877c4da9d964342e140c2ac5d4_activity.pkl create mode 100644 backend/instance/sessions/f5e9439361c2fd708a46a21127fefd07_activity.pkl create mode 100644 backend/instance/sessions/f680692d51a0868bef6f29d7ac757446_activity.pkl create mode 100644 backend/instance/sessions/f68e9a1baf41d7a7e036f7fda2a64420_activity.pkl create mode 100644 backend/instance/sessions/f6997b8157bad18ab110d77fcfcda529_activity.pkl create mode 100644 backend/instance/sessions/f6c20bc0e5e9e067c61277f646a73dbe_activity.pkl create mode 100644 backend/instance/sessions/f71ac0260895615bd3bfcca375f5f7a2_activity.pkl create mode 100644 backend/instance/sessions/f7a6222f6568b775598acbd75422ac78_activity.pkl create mode 100644 backend/instance/sessions/f8f8b2412adc33390ff1606518590c06_activity.pkl create mode 100644 backend/instance/sessions/f907d19e8f0db79d2c44d6cb76312ffd_activity.pkl create mode 100644 backend/instance/sessions/f9404667548824b504b50459335a6475_activity.pkl create mode 100644 backend/instance/sessions/f9580bee8828d984591025de69caf4fd_activity.pkl create mode 100644 backend/instance/sessions/f969fc3e6ec17bd3bd39d6296677f735_activity.pkl create mode 100644 backend/instance/sessions/f9836cbe350e5c10866a176fc0a8e135_activity.pkl create mode 100644 backend/instance/sessions/f9ca255dd3ddbcf0c18d0c458076b1ea_activity.pkl create mode 100644 backend/instance/sessions/fb18d7c111ef566bfa4573efa3f85a9c_activity.pkl create mode 100644 backend/instance/sessions/fb80275a4bb1221543c865e8eb48843f_activity.pkl create mode 100644 backend/instance/sessions/fc3dd19c4a9b8a3e07f5d3c41fc0e3a1_activity.pkl create mode 100644 backend/instance/sessions/fd7328c1d337f911a28469d53e98061a_activity.pkl create mode 100644 backend/instance/sessions/fe507391e506f0ef6e2ac6a112f6041f_activity.pkl diff --git a/backend/blueprints/__pycache__/admin_unified.cpython-313.pyc b/backend/blueprints/__pycache__/admin_unified.cpython-313.pyc index 3f4f7b920745548663d4a67d946ced9330af3bce..ec8b90c2d67eb0ad452b767f5d91fd8b4e39641a 100644 GIT binary patch delta 14299 zcmbt)34GMmwf~&o%={*^WFz}N*+@dj0wD=YSOOtH0s%5)fdFBWOcqEc;m!<71Vh_r zMbRq!s#jXy6Kr3_iUmz;Y^@cMS9qnLIx%R%h+FIO(D!V3RB@}mbM9m&qfX!F{XhRv zPVVx(=bn4+a?U;X_u;+zkKFpO>!G0r75?t{v!(mY(!*i#lE!p6H-AW~)iSLGEb3ah zMrLx2j_J%Q%xh{xYV=Gm(%M=>jgc8^Ow3dh%0g?xSXfOs3$KY_5jBx4vStRGA#ieS zR82ICu8CnWBCo5Bt%+lCA{|m2Uz5NRY7$vuO%hA0NoL7Z9&XXsrqraeQ~@&79)2x- zM@=rv6ugJ?C2WD36^MK|<|9PDaO*6pF9jN;O2vvq zKHQ%#wnQeX*qp5e^)}`B(@{zv7?S2#q7qf5-Uj}^ti*@mpC^M}+B!!$4KdnzzS1M7 z^vPT2SmJ`TEcIb>;w=f5#3IR(v;f;%l7nE&d{||@M3STi!Ib+kU%VkYH3tFB_k*4j zj52~?7WgpPnU;him=Y^12y&qhsT8S6teHVDi+q^u9G`k|khwvS6+Wc$kl;2e2xhSl z6Ph2uZMKrCi32fJ*#!aRg+Vwh^>N54`kLB{gJ73!E%Yvc>{y&2pC;x6L00;aa|3i% z5(K$C06EXkvor{DMF6tQk1P*@tnwr0Tc(im2y(3-SslQ0RS@Jl zKXP>da!n9qogY~f(0gqV z@K5tXL*b?2C(G12m^u8^;@4$ZFnnLt&n2)9FI#nw8oGwvH7J1tH#f}(C9N(_IdD?1{PVgx*&<~<2N2JT4#N!Pp_U$g z>>e;iLW9(xZqPJnEt*2DUDuMV?D#wdw8~^-ti~djsFml}$3*EYAq~0)*`i;daYz;e z{l_P}AqNb~Uu`kET9wKk(vr;o)CtLw#i%^j8K<0CZ{i<*2!k~Q_W6FOCk)oH3u$P0JnV#`XqlfCfME?dD154PEu zqo=*wY3_XCx6EAG(br=ysIoe`+xo4ngY8;|Xpg3+qu1uqw7DF6*-9*MrThaPUAA6p zht0mw?9wB`?CXZr5tooDbvyFZY#kP`wM3prQs>G?s$5HoP4qPhkPNw{PF1J+s#zYE z42D}t+`$; z8mc6z*jlBaK4qp)>el`}Hnyk7b`v{`l?Twfbo>m-0o7zku6CZXyS`B=m{qDAN=Ydn zkH{E}$T(JgqS~EVG8QrKx>`yLdoL{N4%?xwNv$e0dD5VY&lr!(8I8+1X&Q?w9gkZw z8n@*BVu%@vM_}X~?T2gxj6t9|eI*8s%mrDCbhv%3Mx$lVA)Dd84W}XEJZbv^5wRpjQSU|CmoWc}VQc+|TJ6i2oE+ZN zd{PS&!?3*=4yVJTy@~ZWZ7lA{nQan) z(t0K~>N0lhF}7LTcew^y?bbdUn^X>-nF)o;sWb8Lg>vDH$M7x*N95@6$>(z;<4Nlt z+1cOK)oT;`l|4;}uay6MX#reUW{wS**cmFJg~0X=|72_y;Mo6k=}B-Z-+8%E{)Eau zRetqy4t%D(_VPy1D@Cu&%>NvV^P<>qs5Y5MJP|q~n3Kj8NvVg4ysjL0WnJWVX>9u5 z{;pOVWBrVMp}hV|g?t1{b2Y=}@un~+P;P$50S_qu`A!?$udILfA>hhi-#rBPDYv}W zB)?6peyB{m_lfZ+@&6H##mcMyQ36Yp@T-Y4-XXwJEX@mHKcve0ltowH3iT=(>+%v= zHGjTbiW*u^wWMpdibx4H+(4;DBp#h(cP}cwguRdD9=YAc94Kx*)qg-GA)Pj7dw0Lx z#^zGPMj}l_J|jXWF566CHKiUT0+gkrGEYz4rm8&A{R7UPzMes=v!~zQ%4`l-uhYRk zB=953<@XDupMX+WpR8nkFhlz|wmvev=mULhMHn$UO=K|*>eLwzhFNC}cUkKEVa;X-4oV&znGD;7SgV`SIaIH6`yO2|1uSucpo zF;EskI%6As$iY;8tOla_ju@B?H~8H#P*O%5JX+Vl04{W40R((V^%I z$NX^&%!v`b3sf_8v4O}0uZV>O+PAR9`H{g`SY&{4{*)QEW?d#G0TN<%lgH%P>u}oo zT5+p6T3H@1ONT62##_>1c_}$3g9fMVW@phrueHa{Jj8+4QFWf=k$dduHaI;do894J zwpOd7y{CuG;V-3w)qB!rO`WuSSq7w}31MF&4&NB27~wm7Uj}3?7mNRO0?|M{Aze1- z9&4}57O-8Wmqsn&glfc^68d?Y|2YF@;*j;3kThSY{~dx|N8*wDUCsfQlYK-bZxZ={ zinYBxcALXHgKtpj+k9&#lxn}g^!1VZGvRrImOYR1aBCqn;l%yA5au_1Nk|K+{3}Wc z$yMm~F(4ulQ4`S+k%{O;8MP1_-GEt7Sif_il{Q|hSH*FBbrIaIjl{b8kxNCeM%I0W zE$Wz-XO-cqxz0D1!D86M??iSiEmg6wIGi?xDC=dxyij1jUfV z;KUecIdF)DEPkXGGGoK3t1vvpZFqk7;a=*ocd=4_u@=g-OR(;P5qT|u1i5_uTu9ej z2L>3ruI<2g4?uJXlU1ti`t1h(*3Gb#&)AJ)-yZ=+g5su6HNgEFAeR5>4G7WL z)h&7j3gVQr)+qkrM_}Mj-+*MfL1ob_0L3~xTDdpDpuAXMDC>wHoqdbqpDBcKB{MC;jN^Vg51Qpk{&9V>uEpbf&;{JoanoE04-o8{SOK5|(*Wk;w zBr5%XNH$?nxUY!6UjeycSTe&`G7a*pNr2)JL~BC)nzMUjd}&c@#@bk4i6zVuQXAK& z7k}gX3>K-rgg=oWMOEq>4D%#Qc%o`&NQ*Cwt+GV;W+2KR)Ap6vb6J`Fwq{ zl&r~6HRzPXzl>4BPU@wW`N{_!$;za|AeBlA*bP(*~I!kJ4 zQl9TjS3JdrA+04jVAfM;h2hOPWa{QD{s!EfQwIwwH>@dGY3~?t*>^e3gRVaFDx2Nb z-PhA)vzu*r?lbc$tHWuvcQR|2&3kMML-`vNj(zKl9HOJR601Io4`^ma7u<}Oa$Aqn zVP@B{dN8BX-ev2uwP9z>T*X}NyYR1FT-v*Aoh~w+jE*aY|5W6*_OQSmwJrm_7{qs}%GDS* zfI2eM=zaFI+dOhdPZx@pr}0RI#cTk3MBmlc&TM#jkR48j2ap)LoMQ?w*b*R^|q|gsvpu>B1I;g_WhPE^De@Kf4K4(-t$$_wAB7ZTBTBbN7}8FIg_#~tMK5uOD6M`ywX!? zkET(2=9RoTr;>l3{8*|tmpkuN_@m*J&c2dce9H85(_>*GH<7>Kk}3B}PSGR#9^Utp zTd6GTx~vLKdexLL5tqPkI(*a1sq4?#E>xcD9!p(67PtQ3>WTakYLlJ+$hH*^Z#zAI zWa$%2&yuV{2P?r^7CFPYljj!K+JN}EVp zGLf7`fwI*6@zmncR1BJ7V&Q1&!tvCq(bTH3)aq-Yy5z9yDqVE=4fGSI17cgf0WpcD zd^#dlb!N+%weAh|mn@A#?xyB3%Vu}|7I#w1rI4+-Fdopk)7QA;YR1BAFIe2+8(t3C z@cE>cSbXMa$L04=l?k;)s^?QG<=RyB*-SlV&KBfj`h|E(zmQRB!pyls%AA{Dos5}_ z(UiHEYN(y9yO^t{^lU+k;tgxd)E5`bT{}np$9%x_ALnS14(13S47k!~`dwI&TMaFbI3|h#o7C#HRN&(hTJ5S0|@yQ5?QL7u&%I*^} zJS7q$m4ioPv?_~?-e0jJnh*Q{j7v3NbE*Ov>H-*s2nSAY!T-MI18SyxK!e{04CG*J z(D;486qE_w$ZxT*m>M*_=+C|nGs7?y>KhS;)Zcs&gaf0&@(4eI0z~2$fJj7y-&JeQ z>h=3*0T|-$_ta1+$396`X8v=!K2&%XVJ)%zT8WfwK$j-GK?+lq$b5Gl#ONX{k?6r_ z_~BU)6C+t>6rywE?cX;V?`wdbpSca;NYO_L*3m8H%9+D4{5NLF$Zx3w zS0_QrXsP>$V4VT*OsVI4*f8=b+gOb)ix3 zV(4w4hce_829lwn>O~7F+!U{a6L9~l#KvqH*@>z3Y3pD$nDyFTliAva&jl!hbD??K z`hLs!`cZk>Y2!QOwF|=VlC*=_fu__yv~SqaDYKjPf5CcfZt^#5E~_Q^^(u7T{;}P) z(769sL+demH>|A#V`TvutJ8bU7j`$8krW|6oD|+y1p4@C+bCwtZx;FSB8VM|_xAB^ zH;XmlAl8$yqZkaCx*YBLpr$SL(?vWrXSlf!LKZb4gZhkZ!-G-%TyICzGRy9HB%*J z{V&#|&E4*Bw>jOZu1lsp(>5f~fMm_X_ZG4kGFps+0E1B>9#ACG+qAt{erDmB*%#U_ zZQSH;XdK(v*BkWQLBhsxiSEr~i!~v!+q-a-XjA-kCfxHd|yEn~iPd;f?Sk`4WM%`Kd-I z!Vt|HjnEV!{LgHUJm7FSdwQ9TS2w{DO$Rnrwrww1+hoQ)J zjO?*i>TCyfW}xse219J^dsrKvY=UGB`F{AK5zRk(0Ag~&*)9Ux2rM|e9CV%ProtW~ zJBf7g9nCNx--PKqbtA7d!+&eNF-!{f1%@X1Yun+?tZeK;+>ZjntY42`vM~NuEBp=v zI>&av@3gle<5x%8tsv{GW>SYci0^hJk4he0hpp3!k#i<$Xv2Fn10*EH$vq)B=vI*> zONv%tekd!foC!j)t#F<_{S-WJP$+zT^TPIo~Ef8Fi)I54&`N)oDp7%#7uC z?}rTSFOm0&kzeiyvmS2eFMl5jVISAr4v%Cdl8VKNO$zqNq=%jke8>?oxEzw{DgNT^ za4THlbq8UgZytVd5a#G;-D1QJbsxuHI|vIBNvn7Z+Jh_J;Z>}*y}uV9adLR^9Z;)v zBfl3%4%`8cg|0e9yh#Cd_#Q6i8Xz!a9 z|M&q|2IqPCQ7A5a1$lTvh;{4SdEIQBvO1A1?_ifHr|-oGNNab$i!l$s?u;-k<2AB_w=3Y&2G z5yP*D+~6<%9I}RPr`Z#ah4jAU(TE)~eIpi=OYd&pN43u=<+H!ucQ=f6bc+MgPF%$a zCuZmS#F(BUJ&_po9q4s+;b~`W@3x}L<cX){FPxSkEMMiB0C~9O@qfZ zcA01X5@s8Z5*s49hLJ75g!jO>k0g19il60cpMp8YA5ogf5(7W@6r3~vnhJhH z#@tY~xQ$AvP%H)d&I5&|C4&+dorR*ptCW5hiHn^0Dtx=Mw^{AG%=lRce*4nZW@YT} z1W6-dviV(Sp$b>t=vl~&`GCq(shl>fm#dlUUw~`IkE!YtBA;^YIeZ@Zf-gJ=<_HG? z|3>9BLoPEP{Sq?y-RIzaSUPg^zv24K_X>xyh^_dwy(t!J9(5=zLkd~PB6f_h$wa=s zcE9$@fwf}QekQ(enI#V45^Cdp3>7>{EOBaT+WPx@nRmf*`+0oj5GzphEd0qY__6bl zX+BJ&xk1eg#K1^odim+q{4eLhBG19%9fpyL3veuA%S>#tiRDnkJR}}t-`;`NsV@jv zJ{8XkI%P!-?Vg+xx3@akHQMov| zR${7pFkM+znlwXvsNi7J_9B@yXbpIFr(hPFeon5TEQ&w%o+e(A)>7FzB6UQB{x(ud zyghHCR0EMFA}UfzBj4zOM0pDpT;{ty5CfC^b`PW#TB#`LyE0aIbXL|bzN)YjY#VT0 zA7t>4J@|yN0Qnk>BjK;YEe3dpA9@G&`wVW_yO1V}xsKx{@1jZ`<<0NHTzM%rsWFb+ z`z|ck!<&5UuTY}<6*9)z;GvW7f^iYa`W6kgg1%M0kxqb~U7$d|X zb~9BUAaoeN_;*+W|Hchp;%n1ED*qmz{Uv@ecPHQUCDi1tCB~-->a8TiIx4FpvW6<| zq_Xw={FnIc!JsEoOo6j2eH@-LY_PB8<8>sx?b$j77iTLiE7QOBJiwP;%qaCYPp zNIx^l;;W?-{6LtrDD*nE!Sn3^iLj4f2$Pl=R}rrbL~iiNa489${eo~QZ>8{PM3`C# zCwv=H?It`9e?#r30iv#%SP)}R2%e+NNw0}}`H#b;1;%OQ>->#ysZ+iM`3z=qYnT+x zTO*|WTw(91GxU1s;~Mf?MBo34NHiU;zCJ74i+kb82&p9GHZ07W`l=&7=2H@eP9g8x zu2=CqF;bd6Bor*>NyLWlz;^5q5g{=OJT(zwlEpBOQ<<1RvfFv#>|rYKs*t8yOo>>E zLb6bYtG(Uka7^7=#Jq^}PH0G`DPqn1Vx&|ncVc%-Oe4uNq|YKcNa>rZh1zjCrnM|4 z`v$hE6Bfqjy^*!?+9R?|=)H*}Uw|)D7v!q3cA5Y)5s})?2Q#Ir*<$oGT>Ln~;lQU7 zCOo3QQHvjwDnz!Mn(gB6XG*i7hsR|}1$d)aiGPe@H|?bAd-(n=X|?dR17uONT0Wj7 z-4a2Q;uS;)XXb6$QoBqy7xq_vF2&aHvu!D?GM%O4SqbZpiy{q?su+@t$zJA3AYn>~;)l;%7?UMREt+_pB7hx8z7B z*}K7bZ;q4-P5e-flrzKY0$E+o?kN|jnV-wS9pyp+&W~i}N^xOukXMvR8DQtFWm0Cu zHd4-Y65wefU-2VlQWmV@BW2P{GO@#Ddr!HP9V#?Llbe^}9d0~)%01;$`9k`9M~Lq+ zG}5OfE5!$9Hxc8TiA-z7PFeitTe!S-zLc?4sDxCSXYwvsvHXNSrkRMQVsVOPxtBNz z@$Tj)=S!9HEm*KMbmaPc=^1r;mq*vy+R@+M+Uh;8-zEu#ZSq<(iT|NON|DrRezihs z!pl(QV(AoA^J|Nx#Y1OFzL$u+OymlYt3>`zL`|%WL?Ve~5~0ui*bz!SPDI#=wkGeHE^za3+Oo z$jBFDw*}S0zOd$(qz)cCr~p$||KN)I;bSNEmrY z9EC)8(n|M+#tS#QF$vA0WjSmFf78t{siA^N7TBih!k!D=qDhlzk_YRjn>1q+Dwy1Y bO(Mr3b`)ao-9HA|0xHA2k*}(xe)azV^(_9O delta 8996 zcmZ`;3w)Euk@u{vPnLuqU~G)BjWISLKV=*+PXm7Nkih}V;6MyUmStODTVf^gyasw9 zX-jwnKIrxeZ9>`$lqOBDx}HdrCZS0Q4VPZh07*WGiAnS7B|PdT7eZ({voey}>iqk8 zJUjcJ+1c6M+1byZy=J)jupxOcDajazKlcsTx^ETkPtIh`ru~zO^Wz(IRvp(_6|UsP z*}#_2ptmOSM9J$K3|1rGza^(ZHkF1E)-;}G9mz+^w!R_Vn!z(9pV%W@`~I%8P3?=EvEFwHDiwY{}E( zd5LVNU^`W|OIyvy3ye+X%&5qG*;E$R+P*G&$0 zsZWA&jK!9o6*nbhEc};OhC!x`DE;fGe^%?QI(cRcwv zDF$d}7*uGE#L89_13D`VRWD0>B{4v=!=Qm$%vQP9~jpz|Zp>L}=(7|;b_sM=tpJu){2Xki#sI4{axO$_Lw2(&P2 znQCJ|tr2Kll-2qe(1r+feiU>;4CvwrbYYYOi(){Rgtuy;HEQcO#DF$NtS*kSx+Dhl z?g+Fo%GbMNK$k|KOQWnVive90fi^`!Z84xt5omLi1IuGTZ4u~-D61_opv@8JJyFn= zF`&!C(5h8Y(0gM*SJ+xH-?!LSBfZDA2ILJ8G}F)Q64f@!=%6F3QUK7*^JX2ULqq#(0aZ z_kbx%y)R1L9YejniuZN-~dws?~Zz22d==QIeiN34Wty*De$vEb5T+f zydG$;iq}J7ptHJPfoXyI`V$P+2CgsI7Z06*9SwefE$Zisa|4;n;}aAu!PU{@4CJl+ zIi$WwSNlsu787|@eRoy4?)S)U4~)F`s!sPhvZn%i`x81i7x>Rk3n*`)WB>wx>M|SP zVqoNkOlG=Bs#NOm%W9RkLV1taD{7y2O@>CS?7xhhmf&#r_3`)AE8g|S_o<7BKG5Pj znyR~rtSxYRXRZMT)$F}Z?5jA{v)85j8s)zV^zR+1)89h2(QHt6@5xfr4*n)-5ZmSq zo``?=XX>)4ndT$|p_(?+CQXjcE9j>WwU-Tqt3GIIG7XAXsHwTtqDgunp zj(2_m9<{Q+O!*7RKU2HF!Z>)+MJxbIlBAsy^uG`)9253W@u{{ZEh;_!1X`rb(WAF7iE zb0&OFcmt8;B#bBS2$9IT8hDYqelSb<6N!JUJ~UX$9tCw^RknIzaD?szsyPCm4jM8r zEg;}YBGZY;xiG$#_-Z0gA<fi znqa)xYlKuN6OR~SAn6>A?uy$pG0vR8Ex|n|*b4BJNKArFb0Q%c8#6?az|_%L^+fI_ zl1`*aJeLHS_sHqXz)Yrjwh)nVjD&=?G+#(CBxkGH3VxTBEw-Pu3g-p318n%icr55+`$Ds)=IC zmr10!nFIAODCXosl52rx7Pd?;$RYtjS^I2sqQ@xloZV$CRjh2(^^R zIdL@?rtA7q<9or9u`tsJ=R~&|S_>|aktn~g*{luoZt?n@y={2dyluQtd}M|Km?e^m zpk_)1BDNZR&dt7ZPmkTz$KNCiwAJRDnWnh*vlkyVv1z@lvs~2<(ew zZY>x}%;eVhiR6U6979|a5jh8q4FALI<;1UuvSKKxkq6`=foT3(Vwcmm(ca^C^2m{j zY@G#!lM$19PKIqj94v+j7>Q?!VaznS7FP&%9f_v6{XUQ1$Nx-{cZhsMVqK4`&*=>< z=OvO3h~yHOqPvOwOTmRDaLQ=Z61j7O--(%8Bv(NTE^22LOsly?a2rkUE8?X4w~6~J zk*|rwF(g1Fo=Ae^NJC}>y?D0@MnanStO~xROTo_Z!Ea83MM~%j|y)l5E4Z{xDgRCsjr!GHvOLT&4%4R}>z(h%#Cx(v7U{ZMEP?{sN!GwIrY0hgYl@Q*2*{H|ng)c}e&2z>aQ)MWd3)P_oa} z>ulrBUOZB+zAj$L)a{2xiv!J&t(%2_XM=%e02b`-1rI3IDEUwc_V+=N0!Cr*!`z9_ zlLHEN@OeZiL1Ct@C7z^OLML}R`8?tA!}pcf2s}=tZiI4NoVgpJB~_lzLQU~_{XSO@ zw~AvMp*mp^s;a47r86~y!{cvrxcz;;kkRmXnjX`X15Z7#qrvKFFeBYA7#gQzBVQnv zZGvpLt)_T0MaxMTIWdJVC8U**(yZTW?{e}bBy1#dH<3l+)F$vKt;i25!K%&hXI&_{ zg%T=lh@o6seILAAFpdO>{kyCi0TE{uHQV7iTwB-y&*|17xGwn84p0nGAkKaVMi&*( zxU> z<#xHkGI@2ABb2JNL@JXyTn-=KNU}|$Yd6#=JCWb34?eXUI`m2}b!-r$55gqK5H$y( zT=_MsZncQN=0K*{cMxWe+eR2Um#k3M{-?QodJq<2LaI6hFDMTq`ieey`w-kr7(tP9 z(LMST;0MUe8j*MyR+yr0MBzFN--H9=e-Fc|sG-vS;eycOd+nPsY@J77yxI(f2I5g;fiKeCn z2adx}lNKB#vo!ZcbA0HS?33E|j$T)v_s)4F8LuPaN2pneAbF4soD^^T7u4o7AaB-j z4*|Q$Ou{;MyO+zedtOuqVITVr6W8n6NJYNW21S1mR;0?UCGS!>iyBdP5^V6I_})pd zls$tswM4ShHu7uVM|=T*px2ovkE(=bbU71c1ue0&;8p+by$8D=H_Hw^$~ zE}YC?5O%V&D}>*UR$ueI{ec`Xk0{+Hr zP1xw>d0P|mn(bYo^u(NfTvl-wQS}B?WzZ49XUEXRLzBlnbYARy14>Nykr^WU4Z&yL zfDgg6nLK%v#E*$5&qIZ2JMl!08N|ou;ibGElHd^{M~VE1$d8G9N#qt2uU>#c(++A7 z`GrB;z5st=H<%cF6HihcF3$6YV9{GJ!%*@Hp*G-Go{wxwdU9fdno%gld`_|`ebn?y@pY3Y5bAE*&2{;UHwoeD34maE6D=GQgkGL(1 zLq3s{bo<~zK0v(ORdSCe(>O9!=7a$!_%DqlezGMS|e&9l?h z;|zT+5g*-zv1O|X5%c+o9h%$Nc}3}Hj=q%#7!qM zLp+nmMnk1IpU3Xi%|%ghaLPFL_%KBy<9ozFDVv#e4SCFKJ4m!yn9Er8#1hh;LWFWe zqx^=3kY5obl1YqWZy7V!%gQApwGoJ-+l;wUYD56CZ#LQ8fhhc#=d*Jky&wGIt1>p- z6hUfYZaM3OP2yNNtAkqcNjb|*c?_-MUE%NTweu~Qa?>oVGVxzgXvPmYqS3-K(?6rp zDer_{X`%RvZ5CFtU4~IEhkVpLNU{1h5$P2=H56{SmNL>uNha5cN)vO+(Dyx(?x7Wx zftTA(dY0t%I~-20cj(zMgXSqSoQ#6E zNF?Qwh8BRXlsn}Z@u3Tdt|BbQWU`lFnWU)p;tOeT9TCaZiiC}eX9sVx-^wX6gh#pYU83cnVQ;~$eeG$6l;s4uu{h_;IJCp8W=&ao6fu`f4hc%;REyhKrmHnIsJ4q|6jJ{?Jm% ziZO?pONnF>X(AFjb;3TMO~|2j*HZ9(=fj2R>vKAME_YvOk30w>H;;`H&&+4Tl+ZB} zug+(=`1R9RqQy1m5A9v}Ow4RyRWs;|oScAWTtOd* zLZ1g)$?$3-k+|5XiNAL?u6Uw_UnlYwk@tz*BtriH;d-)?M1=meAV1sleZ-w0B6B}|^W*e&il/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 200bda0b3e9a5409bf1e77291ffcd734dad798a4..c0f8e2c1f19ea3710dece98445f5893789450daf 100644 GIT binary patch delta 2831 zcmY*bZEO_B8NS&&+voH7*2Z>mNs0||Q;gs|GrK!8dqN35etuE_D33WDpMtu5~uyqq!KMSs8Om^iBNywrVvP?R;p5g8i@pvbSo$$Mkx;?x4r?Z`h$7c4=?0W=v4bAT^%(Z0h_gDst zG~>R&jAH6-$80Iq zjs?iIH3()7&)Lxc8SX1v<8VTtniU{l^o^#9eH_Ped11W&nbIrjdxD+c8`~SVl5LUH zx@6l*eO+@h`okkuq3P@rqAO?4HlQS-8Hc2OCWuc87k>L-@Pej^?-F0EtULR!`ul6_ zi@;)Jv;9B&3;T|J+rDYvu>Wpt0^D^v-`%>)_i>`9^rQ z=40?|$&Idjbfu#;Zq;TZspZ-%?1R-t^9QWLufAICFW%>?;KeB%xBZJ=bx6||4zQNw3hvvEm`sR8MPj*jC^!5(+uz{(CeRFtZr119L z_1jcUID_yA6QNd=w!-TWap8E6bqzesot5RUhHgafjl3bNuA@!OmFFtARlHcy7|Tb$ zjE-8LSdXFiP$u#Q9B(?7vvQ-d_a@p}LvY6BX(k+>N%R_Ols~7FM z=RZf^L5C!{gtnxhzh1{Z2RrikYv|EfE|q&)e)1{Wng}uM6z=>POZ+L?j=m@NzF(@y zJi#4#=VQHWM1J{MX&J*zF8>uZ$(F0=VKgkCyH(nz2Ud7twNbu*9{H-_ko^2=8A>RY z123Y+LhI#wbla!o(zQ}smkF0jw2T_gyrl~~DYxA&!?ECQfXn_5p!q@h$J?kqq``58 z5b~9m(4J^*?g{yg4^ewaALWe7O}_^E@N-DF{(a9)^oRJ4S}@Lr$lZuNk-C+7y!Kk{ z&g5IkEj6#!)FpmW{h#W|_>K61s@1CQ%JXaGLeE6*f>ak{Ih2nD+o&Oa#)a`@7zldu zGW5Fs0URQKARmZg65`_z%A=TKVfbIRDlpbqm&w)laug~kNug@L~qH+?^FMOaig zj5r0f+EDbx$-oyO&IO~s!b`qb2z*gvcI9!w&n%6}q$QLHd=sV$R56P@qFg z4|424vw<(d&W_^|QCPZSPJ6=49L-S0G4?(A#09iRIeErVtRd`)aN?!|hLyMmBDjFw zZ7T9RW%yO0Y*|x`5_{ zTFugoFi+ln1vLdELv>sJW4c&f;l!gl{S?jjSn>7x2%|G)Eqcrmnop<}D4z~@P0TmA6a_MKN13kDlcjl@UNjTd{xjux+on-Mw@iQJy3*mX- zQMgh1tbC39-AUB0(nVuHAy?^wk*$iqo(Q7M>+bCos%BPko-mGwC=_XdvCB$oRtIY8 zdVq2$$K=2ZkXCTl03o8N>9cVal2DoGkPH=#o2h{6z$o|1rUDqR3iVV$3^)_M6DY3q zwBq}9d64wk>Y#il{H&~1w9@1ftXFJ$K9}Sr6HL&cB9PP^Kz#s{qk_u_I;IlC(G(@B_0ssYq+q;jc{Y!S9CSd%g~T=(%40@>FOeg~G%Er4avVEB!w{aUE6Do)b^mUG|e+Z5=l-J>w(I>c4CLkDVBm4Bm)cDg+Q HP1*kg_?k5b delta 377 zcmZoTz|ru4eS#DllO+QKgZxAVJ0>Q}jR}wCOml)gg8WJfi%a}0s(f7oiUUj&bEEVu z!kiN;s!B>T3p0!Z-Hl6?)WX!nWOAN=3zCo#P-s&C zO8^@qpAZ9|&}Kme4nF4QY{tpzYZ^9BU6(H?!NGqO7(5K}{J;6X@qgrh!~dNBA^&au ztJ`G~7k0V#HtMyAHN={p`U MYHcrg&NzVs00QM~`Tzg` diff --git a/backend/instance/sessions/00987e999ab984605f9f7a3d3d3fd00e_activity.pkl b/backend/instance/sessions/00987e999ab984605f9f7a3d3d3fd00e_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..95f5996622f8e17f652c80bc0fd29e885afd0171 GIT binary patch literal 60 zcmZo*nQF)Y0ku6sWB LSsGbRDb@o3@+=TJ literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/00bd50c89a0a2b44bb8898cc35cf043c_activity.pkl b/backend/instance/sessions/00bd50c89a0a2b44bb8898cc35cf043c_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..3e3557ce69f7b3232f30b8e39a930e5477270991 GIT binary patch literal 60 zcmZo*nQF)Y0kuqP Jq4|_zJpl3u5Hls*B L8WlqlD L8d#W2Db@o3@umC&ODb@o3@#YXO literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/0d663a0ebbf27bf71f380e2ae06ba1d3_activity.pkl b/backend/instance/sessions/0d663a0ebbf27bf71f380e2ae06ba1d3_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..252d407f84bf582b0dc80aef7fbda607696cef78 GIT binary patch literal 60 zcmZo*nQF)Y0ku6u%a L8d;c3Db@o3^1u*B literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/0e8ba3aa2d5d02de49d5643dabfa2053_activity.pkl b/backend/instance/sessions/0e8ba3aa2d5d02de49d5643dabfa2053_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..0ec2b923276d0572a174a0f714f41acb525ba300 GIT binary patch literal 60 zcmZo*nQF)Y0kuC#MDb@o3@>38w literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/0eb645d260d9fe1eaecc7c044d85d100_activity.pkl b/backend/instance/sessions/0eb645d260d9fe1eaecc7c044d85d100_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..f2793a1708d1d2c7c60cd0b733441fd1802f169c GIT binary patch literal 60 zcmZo*nQF)Y0kuKPkZ L8W>qjDb@o3@xc%; literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/111ea4d8c39081961df89bda9f48834a_activity.pkl b/backend/instance/sessions/111ea4d8c39081961df89bda9f48834a_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..67eff21f234749c575c6e7a98ba18d6efbe57a3e GIT binary patch literal 60 zcmZo*nQF)Y0ku LnwnTnDb@o3@(vI> literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/11ac90551c45c146da3551ec5856d0f7_activity.pkl b/backend/instance/sessions/11ac90551c45c146da3551ec5856d0f7_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..350869a7b1d5d0c87a473965374a231749abdca7 GIT binary patch literal 60 zcmZo*nQF)Y0kuiKT^+ JiTRXbJpl3?5IX<> literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/137b20328b9b6f84cbc1e4f82569eec8_activity.pkl b/backend/instance/sessions/137b20328b9b6f84cbc1e4f82569eec8_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..cdca3d24a2d50c4c2c24ae6de9448377f3367b2a GIT binary patch literal 60 zcmZo*nQF)Y0kuKR&E L8k<;5Db@o3^1Tp9 literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/14a578a9693910c59e6f17660997d539_activity.pkl b/backend/instance/sessions/14a578a9693910c59e6f17660997d539_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..bf62fa8d2aea79aa7fd3768667cf7a8856b81da9 GIT binary patch literal 60 zcmZo*nQF)Y0kuKT}s L8CjT5Db@o3@z)SE literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/17b5c5d45217c0dc2490720982f9cd0f_activity.pkl b/backend/instance/sessions/17b5c5d45217c0dc2490720982f9cd0f_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..0bba602c8b944c6892568241db92f44fb70cb018 GIT binary patch literal 60 zcmZo*nQF)Y0kuY1CF LSsI&6Db@o3@`n&a literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/184527fabe96fb0c8968db37fc1d255f_activity.pkl b/backend/instance/sessions/184527fabe96fb0c8968db37fc1d255f_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..4a9fd5204a3249ab4fa591168e7a29f3a8cc5c76 GIT binary patch literal 60 zcmZo*nQF)Y0kulqmu L8Je3-Db@o3@$L{Z literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/18ee5ae611a0afa4def633513ccb7955_activity.pkl b/backend/instance/sessions/18ee5ae611a0afa4def633513ccb7955_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..629adf45c65e96e1f040a5a12759b3328720a2c3 GIT binary patch literal 60 zcmZo*nQF)Y0kuj41qq!1KPar L7#NsLDb@o3@x>4* literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/19929888680e80eac5ff5644a365f382_activity.pkl b/backend/instance/sessions/19929888680e80eac5ff5644a365f382_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..244d76daf49c79627cc074aa387c5d1fd4ee0dfa GIT binary patch literal 60 zcmZo*nQF)Y0ku6sgw LS{j>ADb@o3@~sd? literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/1ddf8fe73357da1144bade7859da5886_activity.pkl b/backend/instance/sessions/1ddf8fe73357da1144bade7859da5886_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..b873f9ae6500366dfea44a92938f1ea4a68cc7c9 GIT binary patch literal 60 zcmZo*nQF)Y0kuX};@ L8(0`jDb@o3@>LK! literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/1f3ba05d3de8cb30bfb71b7a6f979efe_activity.pkl b/backend/instance/sessions/1f3ba05d3de8cb30bfb71b7a6f979efe_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..21f5bd289cf27443fefbc74d8e26d05eeba34211 GIT binary patch literal 60 zcmZo*nQF)Y0kuL*QDb@o3@$(Qd literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/1f60f9908d09312112502fdb955e658a_activity.pkl b/backend/instance/sessions/1f60f9908d09312112502fdb955e658a_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..2b0cbe3a91d0424565fced5736dd47170e1ed498 GIT binary patch literal 60 zcmZo*nQF)Y0ku6sau L8Y1Ax LTNs*8Db@o3@^%nH literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/226714f296bf1f13514c292da61fdf38_activity.pkl b/backend/instance/sessions/226714f296bf1f13514c292da61fdf38_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..117016e1bf0d4bdb192713249dd8b542fa0349db GIT binary patch literal 60 zcmZo*nQF)Y0kulvDx L7@Js3Db@o3@+c5G literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/23358eb8d747fc584efd99972c6e1677_activity.pkl b/backend/instance/sessions/23358eb8d747fc584efd99972c6e1677_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..398cb27f1abcf05b0bcc183394b35c7cdf0b0bce GIT binary patch literal 60 zcmZo*nQF)Y0kuRA|? L8JHPQDb@o3@y8G^ literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/236ecda7682659f66a339298d4872598_activity.pkl b/backend/instance/sessions/236ecda7682659f66a339298d4872598_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..11074a93fc2b21454d8ce2f2cc9422253c925eab GIT binary patch literal 60 zcmZo*nQF)Y0ku6sW= Lni(2QDb@o3@+1&6 literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/25bcd6f6860f54d77c6e159ade341aa9_activity.pkl b/backend/instance/sessions/25bcd6f6860f54d77c6e159ade341aa9_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..f22f4b2348711d27fdd6311a8e995d3bcbac7d18 GIT binary patch literal 60 zcmZo*nQF)Y0kuV literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/280317d8196aa953aada93bbcafbd41f_activity.pkl b/backend/instance/sessions/280317d8196aa953aada93bbcafbd41f_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..5a86baef597a7f0e76002cf2cdeff1b3cd02371c GIT binary patch literal 60 zcmZo*nQF)Y0kuzSJy Lm>8Q)Db@o3@#7FP literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/29453bf436fcd85eaed7743cb5768519_activity.pkl b/backend/instance/sessions/29453bf436fcd85eaed7743cb5768519_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..bc8219e426b6649bb37756b73e034fa0260d46c9 GIT binary patch literal 60 zcmZo*nQF)Y0kuiK&6P JiRqMLJpl3A5HbJ& literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/2aaddc7cf30ef821e06b9c86862825a1_activity.pkl b/backend/instance/sessions/2aaddc7cf30ef821e06b9c86862825a1_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..91f06a727838d54de8bde7186526e6d94a232bac GIT binary patch literal 60 zcmZo*nQF)Y0kuDmDb@o3@$?Wk literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/2b52f6e595ccbab7fbc7c64c3d895a84_activity.pkl b/backend/instance/sessions/2b52f6e595ccbab7fbc7c64c3d895a84_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..1b192079b6e3bb64776379a17bfaefcc31c12425 GIT binary patch literal 60 zcmZo*nQF)Y0kuj41rCJ;3M literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/315d0aab67e3220447b4b511aed01084_activity.pkl b/backend/instance/sessions/315d0aab67e3220447b4b511aed01084_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..19054c9164f97f213820de9077ad95b89bc95afc GIT binary patch literal 60 zcmZo*nQF)Y0kuY1Ax LSQwd1Db@o3@>&o* literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/33edf31649098802ae24ce3b0546e342_activity.pkl b/backend/instance/sessions/33edf31649098802ae24ce3b0546e342_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..0426ec662d0c7c7579558d1bff4c43edde5d4a5a GIT binary patch literal 60 zcmZo*nQF)Y0ku6sar LnVXqUDb@o3@$L{e literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/345a915ab02760fc5196cd400d9ccfe7_activity.pkl b/backend/instance/sessions/345a915ab02760fc5196cd400d9ccfe7_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..63d491418effad6198e71d3c1b6bbc8baf192e2b GIT binary patch literal 60 zcmZo*nQF)Y0kuzP{^ Lo0*tSDb@o3@;MMa literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/34ecdfd093cf4f29d06f704fb5aabc29_activity.pkl b/backend/instance/sessions/34ecdfd093cf4f29d06f704fb5aabc29_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..dd4636d3dc5093387756ef38a149c7a10abe2d89 GIT binary patch literal 60 zcmZo*nQF)Y0kuKR*_ LnHXA3Db@o3@?{V{ literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/3603dd74709f22cb3e7ef93bc8b7be40_activity.pkl b/backend/instance/sessions/3603dd74709f22cb3e7ef93bc8b7be40_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..e200009547f84ebb1526b979da612f7756bf2e55 GIT binary patch literal 60 zcmZo*nQF)Y0kuKPhY LS{Ry7Db@o3@{kZh literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/36732222fb11045fed8290a1f580b361_activity.pkl b/backend/instance/sessions/36732222fb11045fed8290a1f580b361_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..25fca0adcdaa901609fdee6a4b3adcad46918c8e GIT binary patch literal 60 zcmZo*nQF)Y0kuQZ*Db@o3@+%NG literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/38abd724a4c1d0c4ae30d0ca538e4421_activity.pkl b/backend/instance/sessions/38abd724a4c1d0c4ae30d0ca538e4421_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..4cb9617f7bddeab30c4d464ee0edbffa7ee45f57 GIT binary patch literal 60 zcmZo*nQF)Y0kuU{RDb@o3@(mC& literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/390094b504a8d39c91fd4e2cdbf554af_activity.pkl b/backend/instance/sessions/390094b504a8d39c91fd4e2cdbf554af_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..68ff4b43702925b0413e83267db3279da374b913 GIT binary patch literal 60 zcmZo*nQF)Y0ku L8W|Z*Db@o3@wX5v literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/393acf4b208450ad13aba31a4767f101_activity.pkl b/backend/instance/sessions/393acf4b208450ad13aba31a4767f101_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..4d82ea071d9e19e38a4e5b50900e2f8ea1b95cd3 GIT binary patch literal 60 zcmZo*nQF)Y0kuKPlG L8W|f*Db@o3@+=TC literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/3ca181436251b3a9c107abf0ece15257_activity.pkl b/backend/instance/sessions/3ca181436251b3a9c107abf0ece15257_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..b174eeaff6fbf64deb81d48ab39159154af12226 GIT binary patch literal 60 zcmZo*nQF)Y0kuKU1u LS(q72Db@o3@@)`3 literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/3d0d9ba2ce2b1ffbb6b682970e22f6ef_activity.pkl b/backend/instance/sessions/3d0d9ba2ce2b1ffbb6b682970e22f6ef_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..624cea305973c0463b4b5515cf03994dbf00f123 GIT binary patch literal 60 zcmZo*nQF)Y0kulv7s LnVOnRDb@o3@zfA8 literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/3d1011ad1b47daee5815417176eb08dd_activity.pkl b/backend/instance/sessions/3d1011ad1b47daee5815417176eb08dd_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..53f470eade45c1167c0df1035de146ebe727dbe5 GIT binary patch literal 60 zcmZo*nQF)Y0ku6scE L8=DzTDb@o3@){5{ literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/3d1203a7c5451c12795adaa0adfbeb85_activity.pkl b/backend/instance/sessions/3d1203a7c5451c12795adaa0adfbeb85_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..3555bcc3a3aa5c731b9e35f565ee50d07d702090 GIT binary patch literal 60 zcmZo*nQF)Y0kulqmu Lnwy$TDb@o3@%a!l literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/3dfa85c15417a8568ef298099b312454_activity.pkl b/backend/instance/sessions/3dfa85c15417a8568ef298099b312454_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..b9a7e40bea26d88d23239bb4cf60586161359197 GIT binary patch literal 60 zcmZo*nQF)Y0kuRA{X LSelqmDb@o3@=p*x literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/3e6ee35a55fc26ea973f9edb5dc775e2_activity.pkl b/backend/instance/sessions/3e6ee35a55fc26ea973f9edb5dc775e2_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..42c96820a4fcdce569e1b88dd87052b57e71560a GIT binary patch literal 60 zcmZo*nQF)Y0kulvAw LnHU&NDb@o3@)-~` literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/3eaa175821617244c7bb79d46034d63a_activity.pkl b/backend/instance/sessions/3eaa175821617244c7bb79d46034d63a_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..a55c9851a12ae2aa154671db34f29f644b6fd4c4 GIT binary patch literal 60 zcmZo*nQF)Y0ku6sau LnwT3;Db@o3@!}9O literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/3f204a8ba702e4112857e2e736397c1d_activity.pkl b/backend/instance/sessions/3f204a8ba702e4112857e2e736397c1d_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..10cb159ed9abc44d1a15d315cbb587e429545288 GIT binary patch literal 60 zcmZo*nQF)Y0ku literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/3f53b246adffbd18abcacd3663e22ad1_activity.pkl b/backend/instance/sessions/3f53b246adffbd18abcacd3663e22ad1_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..5183b0d198d3fd2dbc24d54814226497e1ee109e GIT binary patch literal 60 zcmZo*nQF)Y0kuRB3D Lm>8N)Db@o3@^uhD literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/40d3b5144362d1d3cb1dca7cffdb087a_activity.pkl b/backend/instance/sessions/40d3b5144362d1d3cb1dca7cffdb087a_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..c7ac90a289dd7364f789e34beecd2c6c56593f68 GIT binary patch literal 60 zcmZo*nQF)Y0kuRFl? L85tT)Db@o3@w*T! literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/4158af22c785ac87121af0091569a77a_activity.pkl b/backend/instance/sessions/4158af22c785ac87121af0091569a77a_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..0e0bde797300ac7903f7111cefbc4a14a59b0eea GIT binary patch literal 60 zcmZo*nQF)Y0kuiKU5= Jq3M)jJpl3P5HbJ& literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/4391c2449ec92d67ab843077bd29d174_activity.pkl b/backend/instance/sessions/4391c2449ec92d67ab843077bd29d174_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..1f73e03b3d981e90d37cdfecf86c5abd993c9fa8 GIT binary patch literal 60 zcmZo*nQF)Y0ku6x3E L8C#f7Db@o3^1%>E literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/45ce23b04718a4c01b4ec4717fe58b3f_activity.pkl b/backend/instance/sessions/45ce23b04718a4c01b4ec4717fe58b3f_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..c7172fe2bda3386ed46ace8dd1fb845ca797bf66 GIT binary patch literal 60 zcmZo*nQF)Y0kuRA{X L8yFi*Db@o3@wX5u literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/47f5189020e3ed5e975ee1fe6c32f768_activity.pkl b/backend/instance/sessions/47f5189020e3ed5e975ee1fe6c32f768_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..8c72cb8778493874ba82ec9c8e26566ded0aa1ac GIT binary patch literal 60 zcmZo*nQF)Y0kuRA{X L8ygx!+PJpl3v5H|n- literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/49c1edf64743b5b88ead332511629abd_activity.pkl b/backend/instance/sessions/49c1edf64743b5b88ead332511629abd_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..14490d41206c85f3bf1572e16fefe8e9916cb3d2 GIT binary patch literal 60 zcmZo*nQF)Y0kuJQDb@o3@&*t! literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/4a1f18f83186ba1eb6f5535c9ea5af67_activity.pkl b/backend/instance/sessions/4a1f18f83186ba1eb6f5535c9ea5af67_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..9face3c3b811cf152e9a3c9e420ae6930dcf0ae1 GIT binary patch literal 60 zcmZo*nQF)Y0ku L8XH+oDb@o3@=Fjr literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/4abb2248e126059b3fae5a21aa6e3fa5_activity.pkl b/backend/instance/sessions/4abb2248e126059b3fae5a21aa6e3fa5_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..eab54f7f0819beccf3c6f05316da769d97d37c4e GIT binary patch literal 60 zcmZo*nQF)Y0kuRB2X L8W@^RDb@o3@stoJ literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/4ba416690cdfe6c9eaf1b172b2c58716_activity.pkl b/backend/instance/sessions/4ba416690cdfe6c9eaf1b172b2c58716_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..12f3b63890f0734f1093fa517827451b55ee3478 GIT binary patch literal 60 zcmZo*nQF)Y0kulqoE Lnpv1kDb@o3@?;P` literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/4c3c39c1ea83a26ebe373429475c6470_activity.pkl b/backend/instance/sessions/4c3c39c1ea83a26ebe373429475c6470_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..c9ce1b9c87321f395ade5ea40ee34ca796aed621 GIT binary patch literal 60 zcmZo*nQF)Y0kuRA|C Lm>5`2Db@o3@#hdV literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/4c7dbd2558cc64d3404821918ab4be51_activity.pkl b/backend/instance/sessions/4c7dbd2558cc64d3404821918ab4be51_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..d978b14f266e43c3cc50b9a57b3a4e9ab295bf7f GIT binary patch literal 60 zcmZo*nQF)Y0ku L8k(3)Db@o3@xKr+ literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/4cd437f3749fb2b6950d9faf8ade9570_activity.pkl b/backend/instance/sessions/4cd437f3749fb2b6950d9faf8ade9570_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..38a84505303753cfb2af4546877aef68bcbdcc53 GIT binary patch literal 60 zcmZo*nQF)Y0kuY1CE L85^5VDb@o3@(B<) literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/4e0fb640105dbfcb9e1016b4094d5eba_activity.pkl b/backend/instance/sessions/4e0fb640105dbfcb9e1016b4094d5eba_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..6ff9c0be601a046d0a91f8a41142f6c96265015a GIT binary patch literal 60 zcmZo*nQF)Y0kuKU1t L85)^RDb@o3@=Fjn literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/4e69189a862cef98a80fbd9850c5775d_activity.pkl b/backend/instance/sessions/4e69189a862cef98a80fbd9850c5775d_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..87a582e41479837298b9ea527af3498da2e5d693 GIT binary patch literal 60 zcmZo*nQF)Y0ku6sgw Lnp;>*Db@o3^1cvC literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/4eb87c9808d2908604039aa5a703cce2_activity.pkl b/backend/instance/sessions/4eb87c9808d2908604039aa5a703cce2_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..300b493fe16c95469e89fca9fd33c9e2424bd26f GIT binary patch literal 60 zcmZo*nQF)Y0kuKR#@ L8<|^7Db@o3^1%>E literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/4f1b94d6a5210f315eeec2e2a1c75ac4_activity.pkl b/backend/instance/sessions/4f1b94d6a5210f315eeec2e2a1c75ac4_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..32697e90ba51687b5edbce38a619fb605ef823d1 GIT binary patch literal 60 zcmZo*nQF)Y0kuKU0D LT9}$lDb@o3@_`UP literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/4ff4f8e2def8bce0ea104039f68e15de_activity.pkl b/backend/instance/sessions/4ff4f8e2def8bce0ea104039f68e15de_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..bd508c4555c94bdca4af791ab9e9b2f92b78c1b3 GIT binary patch literal 60 zcmZo*nQF)Y0kulqrG Lnps**Db@o3@_-OT literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/503e24c7b129627a8d174e6a2b906122_activity.pkl b/backend/instance/sessions/503e24c7b129627a8d174e6a2b906122_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..66c39753275aa03ac733ee9db8cf2017dcb8e0d0 GIT binary patch literal 60 zcmZo*nQF)Y0kuRFhW Lo0^(TDb@o3@&gb! literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/51252448b5fb89f64054daafe0ef0c64_activity.pkl b/backend/instance/sessions/51252448b5fb89f64054daafe0ef0c64_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..3823ac8c1b9a3b05c39b7b20d6d8a059c274abbf GIT binary patch literal 60 zcmZo*nQF)Y0kusc6^ LSQ?s4Db@o3@$?Wi literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/5348d95cf704a365e4032ecaaf958878_activity.pkl b/backend/instance/sessions/5348d95cf704a365e4032ecaaf958878_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..166f8d3e84151a7542cb6454e927c87bec9526ae GIT binary patch literal 60 zcmZo*nQF)Y0kuKR%Z L85tT(Db@o3@>dWw literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/53fd47a273a29ca92bd99175bbe2b74f_activity.pkl b/backend/instance/sessions/53fd47a273a29ca92bd99175bbe2b74f_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..5095db2eb9086820ea46a056fb37ab9c90a5c339 GIT binary patch literal 60 zcmZo*nQF)Y0kuKPjw LnwpwVDb@o3@wyN% literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/54436e1458dc5c55a9cd82640f44191b_activity.pkl b/backend/instance/sessions/54436e1458dc5c55a9cd82640f44191b_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..83fb68457cce7bbc0e36eaa335da838e745dfc30 GIT binary patch literal 60 zcmZo*nQF)Y0kuzNx_ L8W@^PDb@o3@%#`o literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/5920db2ba81e03e243344451b47334cb_activity.pkl b/backend/instance/sessions/5920db2ba81e03e243344451b47334cb_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..77af3c804c3a0b1bc3104c8b27e5c1948bf68194 GIT binary patch literal 60 zcmZo*nQF)Y0ku5Jdn0 literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/62fc016ef6cedfad404bb7a388251a6f_activity.pkl b/backend/instance/sessions/62fc016ef6cedfad404bb7a388251a6f_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..5b0dce839ccf81a35e7782a86a1429034defcfad GIT binary patch literal 60 zcmZo*nQF)Y0kuLK# literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/63dd9195e1cbdb56eb1b5ab8eaf00a39_activity.pkl b/backend/instance/sessions/63dd9195e1cbdb56eb1b5ab8eaf00a39_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..f245721c5d4fb47e5b6bc0b7a3e5eacd6c4729d9 GIT binary patch literal 60 zcmZo*nQF)Y0ku6uxW L8JSv4Db@o3@(&O? literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/65ed89a22c1995430b311a982c6cd9a5_activity.pkl b/backend/instance/sessions/65ed89a22c1995430b311a982c6cd9a5_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..32d0794a7bf1d556b8e09ca0f46eb831057344c9 GIT binary patch literal 60 zcmZo*nQF)Y0kuKPcA L8XB5TDb@o3@ox|# literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/67b862f995246429364c712238ae60ca_activity.pkl b/backend/instance/sessions/67b862f995246429364c712238ae60ca_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..93c4591650f866053a7c0c8eddc8580f0e6fb034 GIT binary patch literal 60 zcmZo*nQF)Y0kuiKT_P Jk?E9TJpl435Ig_? literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/68c917e9a328cf7fc399a117bc69e619_activity.pkl b/backend/instance/sessions/68c917e9a328cf7fc399a117bc69e619_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..6ffbc588f6061fae20395fee3fc60baa16be90a7 GIT binary patch literal 60 zcmZo*nQF)Y0kuiKT_5 Jh4GYPJpl4b5JCU| literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/69ff56dcff3c0ec9fb5e2924b3e8af62_activity.pkl b/backend/instance/sessions/69ff56dcff3c0ec9fb5e2924b3e8af62_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..e8485654ef0b6e1134ed591f6a0e286c6efb51e6 GIT binary patch literal 60 zcmZo*nQF)Y0kulvAt Ln^+o7Db@o3@-YxP literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/6d083a7ecaf315a381f8709d7ad242b8_activity.pkl b/backend/instance/sessions/6d083a7ecaf315a381f8709d7ad242b8_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..6407811bf5af1da9a7a8137868e3856f0a34a0f5 GIT binary patch literal 60 zcmZo*nQF)Y0kuKR#> LnwuL>Db@o3^0g2~ literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/6de87d0dc6346c6cbd9972d536458be9_activity.pkl b/backend/instance/sessions/6de87d0dc6346c6cbd9972d536458be9_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..72fe351a3b29ade53f786570af28da92753d8171 GIT binary patch literal 60 zcmZo*nQF)Y0kuRFnb LSQ=YQDb@o3@+}ZQ literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/6fe5de8f16aba9c8cd8ade835d758a8f_activity.pkl b/backend/instance/sessions/6fe5de8f16aba9c8cd8ade835d758a8f_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..6c97ea4599c1cc8c1c56e9042b8ed6890ccd37c9 GIT binary patch literal 60 zcmZo*nQF)Y0kusgbdf JiP@B5Jpl2>5HA1# literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/70e1733f2f6b9ccb2c82b46299ae93d0_activity.pkl b/backend/instance/sessions/70e1733f2f6b9ccb2c82b46299ae93d0_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..3e445f937ea96467955ca1e24bc2e49599a61f69 GIT binary patch literal 60 zcmZo*nQF)Y0kuj41q-w-JP literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/716d202272e0baad93123d9fde23d94b_activity.pkl b/backend/instance/sessions/716d202272e0baad93123d9fde23d94b_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..bcadc8a2c687a0c37a230db92523e8323ba0ef3c GIT binary patch literal 60 zcmZo*nQF)Y0ku6w|D L7@3+)Db@o3@!=3N literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/716fa7a775e212384f19c6505ab6ab42_activity.pkl b/backend/instance/sessions/716fa7a775e212384f19c6505ab6ab42_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..a4a8fe627dcb2429472d5d57ed2ef33f7808fc0b GIT binary patch literal 60 zcmZo*nQF)Y0ku6sgw L8JSy7Db@o3@}>|* literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/7363ce1c6d78417a9292beff1d6f5a4e_activity.pkl b/backend/instance/sessions/7363ce1c6d78417a9292beff1d6f5a4e_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..5a553368040b3d81d2d354505cfcce0daa808154 GIT binary patch literal 60 zcmZo*nQF)Y0kuXG6Db@o3@*EI0 literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/74132043f0c54968ea104d79e2c69c28_activity.pkl b/backend/instance/sessions/74132043f0c54968ea104d79e2c69c28_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..d151408eb35cd355cd7894cbd94288400d71833c GIT binary patch literal 60 zcmZo*nQF)Y0kuY1CG Lni^S5Db@o3@)Zy| literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/74439296dd7b16635a742e32a69abcf9_activity.pkl b/backend/instance/sessions/74439296dd7b16635a742e32a69abcf9_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..0af8dc56185b9a8cca7cb3120dbcd72631184471 GIT binary patch literal 60 zcmZo*nQF)Y0kuKU1u LnwuL;Db@o3@{tfg literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/74c548695b21009cc2b09f1ef6955954_activity.pkl b/backend/instance/sessions/74c548695b21009cc2b09f1ef6955954_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..5808dbc156d8a5c8b38b88954f0cd1c8e6327535 GIT binary patch literal 60 zcmZo*nQF)Y0kulqpu LnHw2RDb@o3@-7fG literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/74f34784436cdf855d9967a049c42f14_activity.pkl b/backend/instance/sessions/74f34784436cdf855d9967a049c42f14_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..fd93b66f7935964618257a1f1768ff7dbdb83514 GIT binary patch literal 60 zcmZo*nQF)Y0ku6uv= L8k!hQDb@o3@yQS^ literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/750bc2ee2717856409572568799707e5_activity.pkl b/backend/instance/sessions/750bc2ee2717856409572568799707e5_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..d598e7ec6dac8b0b1ee61b1bf56ecfac9f250696 GIT binary patch literal 60 zcmZo*nQF)Y0kuRA|@ L8JQYRDb@o3@zxM9 literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/7579859f6b3946560eefc5a27190cd41_activity.pkl b/backend/instance/sessions/7579859f6b3946560eefc5a27190cd41_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..515827f8e7aea2ab57c8e480b1a9eb47f7fc6676 GIT binary patch literal 60 zcmZo*nQF)Y0ku6sdt LT9}$mDb@o3@<|Xq literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/77b8e9524a3dd19f5af948eec7e26ebc_activity.pkl b/backend/instance/sessions/77b8e9524a3dd19f5af948eec7e26ebc_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..f4eb3dc5158aa5699e172ef92e493e8a946d9fa2 GIT binary patch literal 60 zcmZo*nQF)Y0kuiKV%r JxzUtjJpl3w5H|n- literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/79eeb792e1b02860e8cf45ac444baa09_activity.pkl b/backend/instance/sessions/79eeb792e1b02860e8cf45ac444baa09_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..261c6d678a8ef1470a4153336d38dd205876e7c8 GIT binary patch literal 60 zcmZo*nQF)Y0ku0P+D4H2?qr literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/7d6fca370a26d6575f2f6dbf649c58f5_activity.pkl b/backend/instance/sessions/7d6fca370a26d6575f2f6dbf649c58f5_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..6a9cf0169034d80eecc86391a79b3f1ba2f7d190 GIT binary patch literal 60 zcmZo*nQF)Y0kulqrE L8<-hPDb@o3@-q-L literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/7e48dfa67eac2e75e5814da0aebe886b_activity.pkl b/backend/instance/sessions/7e48dfa67eac2e75e5814da0aebe886b_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..718a12332e56f51e9f2c024dd84d402b56b31703 GIT binary patch literal 60 zcmZo*nQF)Y0kuKPlD L8Jbv3Db@o3@vIOn literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/80020f69e95b7a14396ab9a14c67dc4f_activity.pkl b/backend/instance/sessions/80020f69e95b7a14396ab9a14c67dc4f_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..b3472cfeb64f6f157d6e3a9214cac4b4178c774c GIT binary patch literal 60 zcmZo*nQF)Y0ku@ Jx#5&zJpl3@5IO(= literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/80320f292591e09a48ee00cdfbdc07c3_activity.pkl b/backend/instance/sessions/80320f292591e09a48ee00cdfbdc07c3_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..32e8097e491f805a2c40903c65078bf73473765d GIT binary patch literal 60 zcmZo*nQF)Y0kuzSJx Ln3)<)Db@o3@&ynz literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/8069dbc92accc1d981615ba413d9e2bc_activity.pkl b/backend/instance/sessions/8069dbc92accc1d981615ba413d9e2bc_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..9d5eabafb467cd2c024e3f18e756cefb97f63b21 GIT binary patch literal 60 zcmZo*nQF)Y0ku6scE LnVXqRDb@o3@-q-Q literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/806f414a27129c4768bc53a12b81ca8d_activity.pkl b/backend/instance/sessions/806f414a27129c4768bc53a12b81ca8d_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..fab02ad2bf0c5f561ce8c352dfeab976522d3acb GIT binary patch literal 60 zcmZo*nQF)Y0kuiDb@o3@<|Xl literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/80ddd42544a2d4d6b0646d33ca0847ca_activity.pkl b/backend/instance/sessions/80ddd42544a2d4d6b0646d33ca0847ca_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..af1ebdd9b389910ce11f9d02893aa038c6dee41d GIT binary patch literal 60 zcmZo*nQF)Y0ku literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/80de3c777b5f874574c791f23840a2c6_activity.pkl b/backend/instance/sessions/80de3c777b5f874574c791f23840a2c6_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..8c1b14f0460f6b9d624724fe878d22aa3b461c9b GIT binary patch literal 60 zcmZo*nQF)Y0ku8Q(Db@o3@(U0# literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/8218f155273ae192d86151db1cd16b55_activity.pkl b/backend/instance/sessions/8218f155273ae192d86151db1cd16b55_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..4604cc9a58341e24d65b712ac736616acbf059bb GIT binary patch literal 60 zcmZo*nQF)Y0ku% JiNTa&Jpl3e5HkP( literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/82377367fbc33bed29e59ccbf4a48e58_activity.pkl b/backend/instance/sessions/82377367fbc33bed29e59ccbf4a48e58_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..f00fe19caa4d52e1c578037f52ebb02c34085a75 GIT binary patch literal 60 zcmZo*nQF)Y0ku6sgw LSQ?p4Db@o3@|_Sv literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/828f6012528a16db1c88c8c50ddb894f_activity.pkl b/backend/instance/sessions/828f6012528a16db1c88c8c50ddb894f_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..fc0c48f63884ce0dc84f44885c2f76310a86e2ce GIT binary patch literal 60 zcmZo*nQF)Y0kuls*@ LT38rQDb@o3@&ph$ literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/82ca041ab5e11db0693f17ddf27f4786_activity.pkl b/backend/instance/sessions/82ca041ab5e11db0693f17ddf27f4786_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..9c1cfefcafc8111baf31b1cfcec470f5d21f14a7 GIT binary patch literal 60 zcmZo*nQF)Y0ku5HJ7$ literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/84a56987595b468798b192bb482dab62_activity.pkl b/backend/instance/sessions/84a56987595b468798b192bb482dab62_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..83f094a23187401403f2f183870cfc552c72f5ee GIT binary patch literal 60 zcmZo*nQF)Y0kuzNsv Ln3xz%Db@o3@w*T$ literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/858930182cc66cd940c74fd0e6b9cb0c_activity.pkl b/backend/instance/sessions/858930182cc66cd940c74fd0e6b9cb0c_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..be2b01eb9fa6b9b3709ec6d7d899819d9524717d GIT binary patch literal 60 zcmZo*nQF)Y0ku6sgw LSy&oQDb@o3^0W{} literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/860b4e8823e2fd385831f6f50fb25e91_activity.pkl b/backend/instance/sessions/860b4e8823e2fd385831f6f50fb25e91_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..7d51a75028b146021bf0e9ccbf41c4be1a8473ad GIT binary patch literal 60 zcmZo*nQF)Y0kuKU1t L8d{o7Db@o3@@o)3 literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/862a22eb0d13ccf6bd7b9ce2eb2b7a05_activity.pkl b/backend/instance/sessions/862a22eb0d13ccf6bd7b9ce2eb2b7a05_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..e0a1330af8019eab8db9f13562b536c84567e883 GIT binary patch literal 60 zcmZo*nQF)Y0kuzNyw Lo0}R;Db@o3@*EI2 literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/88552c16a9e411ea456ee8c5baa34192_activity.pkl b/backend/instance/sessions/88552c16a9e411ea456ee8c5baa34192_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..12780556c0279a130664b3c9c395288ca3843db9 GIT binary patch literal 60 zcmZo*nQF)Y0ku>u+ literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/8a849515aebfc0c10b9228a391d1986c_activity.pkl b/backend/instance/sessions/8a849515aebfc0c10b9228a391d1986c_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..445af485834469dadbcf8438956da24390330b66 GIT binary patch literal 60 zcmZo*nQF)Y0kuY1Aw K07a)1>j41q$Pg_6 literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/8aaf09bbe678cb77c4635dc1c3e0348f_activity.pkl b/backend/instance/sessions/8aaf09bbe678cb77c4635dc1c3e0348f_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..9ee6159f45ec1fb7b2a8cb790fc844ece9ffa7f4 GIT binary patch literal 60 zcmZo*nQF)Y0kuKR&E L7?>DNDb@o3@`w;U literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/8cb1d109253f8dde15670366609e1109_activity.pkl b/backend/instance/sessions/8cb1d109253f8dde15670366609e1109_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..cfb589be7f5bd14c19accfe3aa982aed3321486e GIT binary patch literal 60 zcmZo*nQF)Y0kusj0Dv JvEh_rJpl315H0`! literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/8d45171a2291df6c84fbc312135c1522_activity.pkl b/backend/instance/sessions/8d45171a2291df6c84fbc312135c1522_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..20cb78a50e2116f8d44a70a19fcc79207b67ebb5 GIT binary patch literal 60 zcmZo*nQF)Y0kuY1Ax L8XB8SDb@o3@#YXQ literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/8e55f59265e1d654d9446c827fbca1ef_activity.pkl b/backend/instance/sessions/8e55f59265e1d654d9446c827fbca1ef_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..e9b0f567e1f1a4ef484909583f9016a801a93860 GIT binary patch literal 60 zcmZo*nQF)Y0kuRA{W L8JHVRDb@o3@vsmp literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/8e8313f5cff5092333cd0de698bea192_activity.pkl b/backend/instance/sessions/8e8313f5cff5092333cd0de698bea192_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..8e9100c80c413c3c7bc2a2060ed4083416e67004 GIT binary patch literal 60 zcmZo*nQF)Y0kuRFhW Lnwc9;Db@o3@%a!o literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/8eeb053cc46e4441119a76c52d4858a0_activity.pkl b/backend/instance/sessions/8eeb053cc46e4441119a76c52d4858a0_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..3219637c3affde42bce7a16e2b67ad445448eb53 GIT binary patch literal 60 zcmZo*nQF)Y0kuKR!W L85o;SDb@o3@ls*> K0EMR%>j41rI}kJg literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/8fd3be529c68bf2107f2e3bc701c75f2_activity.pkl b/backend/instance/sessions/8fd3be529c68bf2107f2e3bc701c75f2_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..87d2a7c84a9d692eb92bb9df5ccc02ff464bcbc6 GIT binary patch literal 60 zcmZo*nQF)Y0kuKR&E Lni?8SDb@o3@}dwy literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/90a8f2138a9496025dae68efaba3a102_activity.pkl b/backend/instance/sessions/90a8f2138a9496025dae68efaba3a102_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..5600c6555a26dac227599cad1d7c89802d0f9a73 GIT binary patch literal 60 zcmZo*nQF)Y0kuX};@ L85)~RDb@o3@=Fjp literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/90b7ba53eb9653828384d2ec3a52d4b3_activity.pkl b/backend/instance/sessions/90b7ba53eb9653828384d2ec3a52d4b3_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..355a03d3a9856f769e78a5c4048a0f065122cb00 GIT binary patch literal 60 zcmZo*nQF)Y0kulqmu L8XB8UDb@o3@y`$} literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/9314eef77e2da1778c904ff2281bfdb6_activity.pkl b/backend/instance/sessions/9314eef77e2da1778c904ff2281bfdb6_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..1d93369e23db8aa9afac5f0806154eac0b9c3a9a GIT binary patch literal 60 zcmZo*nQF)Y0kuKU1u Lo0%I-Db@o3@|h4p literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/933d36b82de0857f21d997141daabdc7_activity.pkl b/backend/instance/sessions/933d36b82de0857f21d997141daabdc7_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..b0e393406af598f7105e26137e62e1441f0fc62a GIT binary patch literal 60 zcmZo*nQF)Y0kusga?v Jp~aM9Jpl2y5G?=z literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/96b200aada16dacf19fb5c6dcc8db9bf_activity.pkl b/backend/instance/sessions/96b200aada16dacf19fb5c6dcc8db9bf_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..c271a095ab9d44913ee3ade3e6c55e0ab46a89f5 GIT binary patch literal 60 zcmZo*nQF)Y0kuKT|> L8Wsgo> Lm{=H2Db@o3@!1eD literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/990e5a8f68076e30a7d11cf948d059ea_activity.pkl b/backend/instance/sessions/990e5a8f68076e30a7d11cf948d059ea_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..dd61dc052495b4ee31a67c85067b25b8d55091b7 GIT binary patch literal 60 zcmZo*nQF)Y0kulqlB LnHgD5Db@o3@v#su literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/9b0f4289344c540387dbdc4c48da7435_activity.pkl b/backend/instance/sessions/9b0f4289344c540387dbdc4c48da7435_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..b342747f73d825658ed39502f1304d377404159a GIT binary patch literal 60 zcmZo*nQF)Y0ku$mDb@o3@$L{d literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/9ecc09fca91ccda4cd792f41f635f8f6_activity.pkl b/backend/instance/sessions/9ecc09fca91ccda4cd792f41f635f8f6_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..d3173011e3f1c8e36aaa3a8d2d9eeda42aba7de6 GIT binary patch literal 60 zcmZo*nQF)Y0kuW L7#JB(Db@o3@v{&t literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/9f7021d4a8f5b92a6ca5e5b1765192fc_activity.pkl b/backend/instance/sessions/9f7021d4a8f5b92a6ca5e5b1765192fc_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..377d45177db8b02c4ad6edf4e3ca2b5bf06d55db GIT binary patch literal 60 zcmZo*nQF)Y0kuzNx_ Ln3)?*Db@o3@-GlP literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/9ff21178177299e3c01160ceebc4fcec_activity.pkl b/backend/instance/sessions/9ff21178177299e3c01160ceebc4fcec_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..b8ce3aca3cf243fd6c959f40a1c85f0c50239ceb GIT binary patch literal 60 zcmZo*nQF)Y0kusiB3j Jfx(nwJpl2$5Gnuw literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/a2115e109f56971aaa3c01db568d5d52_activity.pkl b/backend/instance/sessions/a2115e109f56971aaa3c01db568d5d52_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..5bc6d1cbf2be965efc293693f53ef3fa2c3b1d26 GIT binary patch literal 60 zcmZo*nQF)Y0ku6w`r Ln3|bRDb@o3@z4-4 literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/a36045613e7cad9c9d8315ef015a9e9c_activity.pkl b/backend/instance/sessions/a36045613e7cad9c9d8315ef015a9e9c_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..44ea1e2eac8dfa619cac0e666ce64ffc5b685e66 GIT binary patch literal 60 zcmZo*nQF)Y0kuY1Aw L7@3(&Db@o3@#GLP literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/a45ff7a280ca43e86b08186e8f2f6542_activity.pkl b/backend/instance/sessions/a45ff7a280ca43e86b08186e8f2f6542_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..70b947d20817c86e5e35ae6b97641915f2a154e8 GIT binary patch literal 60 zcmZo*nQF)Y0kuKT}s L8k(C=Db@o3@x>4^ literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/a892d0e70be965e6f7ca73b38ee5a3f9_activity.pkl b/backend/instance/sessions/a892d0e70be965e6f7ca73b38ee5a3f9_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..5e36bce107a8fd9631f440547d680782ac4c2911 GIT binary patch literal 60 zcmZo*nQF)Y0kuMPDb@o3@$e8e literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/a8be256a7b73af804b9efdf1ecab189f_activity.pkl b/backend/instance/sessions/a8be256a7b73af804b9efdf1ecab189f_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..01c33cb04e91b4b4c033397e37aa6bf27596cb7b GIT binary patch literal 60 zcmZo*nQF)Y0kuRB3D L7?@d3Db@o3@`eyZ literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/a95221c9b123deddda631488d03cc138_activity.pkl b/backend/instance/sessions/a95221c9b123deddda631488d03cc138_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..3803ef0912d717fcb5c00208a02816d0259b60fe GIT binary patch literal 60 zcmZo*nQF)Y0kuX{px Lm>C&NDb@o3@;VSV literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/aa056ecc4b35aad65681e9868bef780e_activity.pkl b/backend/instance/sessions/aa056ecc4b35aad65681e9868bef780e_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..f7e7040fed2b15fc9dcd232e347857964ae0a4db GIT binary patch literal 60 zcmZo*nQF)Y0ku6sdv LSeO`2Db@o3@-YxM literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/ab461c0361c1323cf7de35fa41795b00_activity.pkl b/backend/instance/sessions/ab461c0361c1323cf7de35fa41795b00_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..f1d61f4bb1fa17ba67843cad0b05c1248c1296cd GIT binary patch literal 60 zcmZo*nQF)Y0kuzNx_ L7+Y9ODb@o3@;VSe literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/acc161d89dca41a3cb5c4d5bce11dc56_activity.pkl b/backend/instance/sessions/acc161d89dca41a3cb5c4d5bce11dc56_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..539f2c74b855db85e825778006a48a746f0abf9e GIT binary patch literal 60 zcmZo*nQF)Y0kuiG`)H JvC))bJpl3u5HKT|B L85)~TDb@o3@stoK literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/b0c111aa2c9e5a7f587ff555c4b949ee_activity.pkl b/backend/instance/sessions/b0c111aa2c9e5a7f587ff555c4b949ee_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..48d58406d96807d4e42c37116ae032c1ca3018c1 GIT binary patch literal 60 zcmZo*nQF)Y0kuRFl? Ln3!2kDb@o3@$L{e literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/b0d96f8b49619962b2493e85abf42f45_activity.pkl b/backend/instance/sessions/b0d96f8b49619962b2493e85abf42f45_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..052121d03e91c51de3a54055a0d2a845b349e205 GIT binary patch literal 60 zcmZo*nQF)Y0kuU^PDb@o3@v#sq literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/b28dd331c095533e229af2ac6c12a029_activity.pkl b/backend/instance/sessions/b28dd331c095533e229af2ac6c12a029_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..6789bcefdb68020d4475b3c134927ef4da8aef06 GIT binary patch literal 60 zcmZo*nQF)Y0ku literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/b47e959453bd82f3b95971fa16b8ff6e_activity.pkl b/backend/instance/sessions/b47e959453bd82f3b95971fa16b8ff6e_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..95f8a2ac59dda0a18cb077ef1300cc2464fd4fc5 GIT binary patch literal 60 zcmZo*nQF)Y0kuY1CG L8k(9;Db@o3@!$|M literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/b512b2ad9ea8e1461fc5fc15f7d33ead_activity.pkl b/backend/instance/sessions/b512b2ad9ea8e1461fc5fc15f7d33ead_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..4fb5b7a72a9f68b61d0587b2fcb416ab5fa2597a GIT binary patch literal 60 zcmZo*nQF)Y0kuzNrD LTbP+mDb@o3@){63 literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/b56aa75243272d67dbb44871e1b971d0_activity.pkl b/backend/instance/sessions/b56aa75243272d67dbb44871e1b971d0_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..cde0749ee6a659a9c955a6c61fef9a6761e07016 GIT binary patch literal 60 zcmZo*nQF)Y0kusgZ%D Jh2@lDJpl3h5IO(= literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/b72e2d56c8c937f5ce83325da663c606_activity.pkl b/backend/instance/sessions/b72e2d56c8c937f5ce83325da663c606_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..4e107667da285a4fd255c8570919aa54b17848e5 GIT binary patch literal 60 zcmZo*nQF)Y0kuRA|C LnwgtSDb@o3@(B<+ literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/b8c7ee0de8e1d858e57cfed59b1229de_activity.pkl b/backend/instance/sessions/b8c7ee0de8e1d858e57cfed59b1229de_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..46f1a519d2e45241a92ee5e06c9b1bbd1a25a57a GIT binary patch literal 60 zcmZo*nQF)Y0kuzNx_ L7+9K2Db@o3@*NO5 literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/ba0bd3a3eec9cc2f4ac666630a51ffa9_activity.pkl b/backend/instance/sessions/ba0bd3a3eec9cc2f4ac666630a51ffa9_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..99134c03d0c6e6d6ab97a3c8a15340ed320621cf GIT binary patch literal 60 zcmZo*nQF)Y0kuX}&> LnVOnUDb@o3@){63 literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/bb2389c892b9c00075b09809795fb4e8_activity.pkl b/backend/instance/sessions/bb2389c892b9c00075b09809795fb4e8_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..82ab267253ffd2bdbfb7ab7233c99942fa0487d2 GIT binary patch literal 60 zcmZo*nQF)Y0kusgqX LnVTCU? literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/bb817fddbd9d0c2e4c5ac4007a9411b7_activity.pkl b/backend/instance/sessions/bb817fddbd9d0c2e4c5ac4007a9411b7_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..b69c2d4138d15b89c422fc94c5d576035583c233 GIT binary patch literal 60 zcmZo*nQF)Y0kuY1CG L8X8$lDb@o3@%<1s literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/bf499aea3e2064be491583259c9de326_activity.pkl b/backend/instance/sessions/bf499aea3e2064be491583259c9de326_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..a46d693605204bedeaf19ba76cd8558ba1a22712 GIT binary patch literal 60 zcmZo*nQF)Y0kuRA|@ LS(=$oDb@o3@*NO9 literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/c158909e685d772208858d503741698c_activity.pkl b/backend/instance/sessions/c158909e685d772208858d503741698c_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..3d928330868a9ae4c0981797a262071c03c6408c GIT binary patch literal 60 zcmZo*nQF)Y0kuRFhW LnVDKnDb@o3@)i(1 literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/c1d1e0bb5fc01b308512bf120c152a8b_activity.pkl b/backend/instance/sessions/c1d1e0bb5fc01b308512bf120c152a8b_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..abe3d84a62959b8f744bcf33682fe41efb5e8484 GIT binary patch literal 60 zcmZo*nQF)Y0kuRA{W LnHX43Db@o3@x>4@ literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/c38c7c1e9761d310f177990891c86b51_activity.pkl b/backend/instance/sessions/c38c7c1e9761d310f177990891c86b51_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..59ff6ada344ec24c7c39b3df3ed88f1ca1874969 GIT binary patch literal 60 zcmZo*nQF)Y0kuLKz literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/c4a8522cac5080ede43a231253faa662_activity.pkl b/backend/instance/sessions/c4a8522cac5080ede43a231253faa662_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..74e758fac755b4fec2837f3187d520401819ac0f GIT binary patch literal 60 zcmZo*nQF)Y0kulv6B L8yH$nDb@o3@skiK literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/c6e5e2cb8c9c4a595385e83889681056_activity.pkl b/backend/instance/sessions/c6e5e2cb8c9c4a595385e83889681056_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..ce3c4acf9ad6ef36d01713e57835e6d5114c520e GIT binary patch literal 60 zcmZo*nQF)Y0kuKU0C L7@J#6Db@o3@=_2y literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/c8106efe8399d1eadad28d94edded0b4_activity.pkl b/backend/instance/sessions/c8106efe8399d1eadad28d94edded0b4_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..4ff7c9950bb0e96301fbab044473a62db90557ec GIT binary patch literal 60 zcmZo*nQF)Y0ku3#QDb@o3@&*tu literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/c93f91a7d12b72bf64627ab7274e9b0d_activity.pkl b/backend/instance/sessions/c93f91a7d12b72bf64627ab7274e9b0d_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..32ef799da9bdbf19b580cbf7cde9669c448d2439 GIT binary patch literal 60 zcmZo*nQF)Y0kujA~g KP0gkh>j41r01!0* literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/ccc3c4ca8f1fa43dd0c718b3b40ebd14_activity.pkl b/backend/instance/sessions/ccc3c4ca8f1fa43dd0c718b3b40ebd14_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..0c92b3745ba7f86f9d289e029b8a078cdfb5fc86 GIT binary patch literal 60 zcmZo*nQF)Y0kuj41qvJfc% literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/cdf8c20e79b06bf22056fff77285ce11_activity.pkl b/backend/instance/sessions/cdf8c20e79b06bf22056fff77285ce11_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..43f3f60d0f6a885c1cf7728377ab7011fb8d4f05 GIT binary patch literal 60 zcmZo*nQF)Y0kul literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/ceb5233a97258e6b61801a68177b9cdb_activity.pkl b/backend/instance/sessions/ceb5233a97258e6b61801a68177b9cdb_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..6da4aa255b78e4d913c0b9014c434aca8a8f8342 GIT binary patch literal 60 zcmZo*nQF)Y0kulvC` L8dw-kDb@o3@^=tE literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/cf413a0a9140de17ba959c3a8f986665_activity.pkl b/backend/instance/sessions/cf413a0a9140de17ba959c3a8f986665_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..47806c7f5cff5f5832a57f81cc5c93d4bc978c38 GIT binary patch literal 60 zcmZo*nQF)Y0ku* JxzUtjJpl3v5H|n- literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/cf51c589157020a0f23fe9ed13b34fae_activity.pkl b/backend/instance/sessions/cf51c589157020a0f23fe9ed13b34fae_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..52cc7169bab44ffdf3db07f11841dd5118dfd4d7 GIT binary patch literal 60 zcmZo*nQF)Y0kulqpw L7#mwoDb@o3@-YxM literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/d092838714ccf2398167d0aae48bbaa2_activity.pkl b/backend/instance/sessions/d092838714ccf2398167d0aae48bbaa2_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..2a42458c96a52da269f526c4855bc1dd58fd724a GIT binary patch literal 60 zcmZo*nQF)Y0kuKR#@ L7#JB%Db@o3@ literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/d577f0390e257cf565aceee0a94724bb_activity.pkl b/backend/instance/sessions/d577f0390e257cf565aceee0a94724bb_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..4aad78756701bcfa7c64ab1ed6262d1745a7cc86 GIT binary patch literal 60 zcmZo*nQF)Y0kuKPas L8<-kRDb@o3@#7FJ literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/d5c10ff7ddfabe047d528e6926df9edf_activity.pkl b/backend/instance/sessions/d5c10ff7ddfabe047d528e6926df9edf_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..55c86d1ba1e2ff196e97d68ae4a905cc3307bfb5 GIT binary patch literal 60 zcmZo*nQF)Y0kulqqZ Lni!i;Db@o3@@5b| literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/d8ac444e6dfdaaef3fbcba0a89c1df10_activity.pkl b/backend/instance/sessions/d8ac444e6dfdaaef3fbcba0a89c1df10_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..5732856cec2f75939aa1ca10ef7114ab7f23dec8 GIT binary patch literal 60 zcmZo*nQF)Y0ku6sW= L8XKBSDb@o3@*)s5 literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/db345adecba8619b45c23f97749a769b_activity.pkl b/backend/instance/sessions/db345adecba8619b45c23f97749a769b_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..6619424ca025e0ea1dd09c488b713e6065fad0e6 GIT binary patch literal 60 zcmZo*nQF)Y0kuKR&E LSeTklDb@o3^34!R literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/db6972bf20f3edec82412f999356e4d1_activity.pkl b/backend/instance/sessions/db6972bf20f3edec82412f999356e4d1_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..f76d8cda267db0c88812073a1c7c147b0eed7404 GIT binary patch literal 60 zcmZo*nQF)Y0kusgqX Ln3)(&Db@o3@$nEe literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/dbeff739ca6804d2369e0f460ca72937_activity.pkl b/backend/instance/sessions/dbeff739ca6804d2369e0f460ca72937_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..4e81d6ff0eba52e90b64174f5cdb9ad3a833f1e7 GIT binary patch literal 60 zcmZo*nQF)Y0ku~!* literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/dd90a8280dd8b261bd1fe59207521eb5_activity.pkl b/backend/instance/sessions/dd90a8280dd8b261bd1fe59207521eb5_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..60643eec48cf669cf565e76149301b09c7ae8932 GIT binary patch literal 60 zcmZo*nQF)Y0kusgo> Ln;IEUDb@o3@!k+I literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/e0fc91bef590a0842bb25a8babb00fe1_activity.pkl b/backend/instance/sessions/e0fc91bef590a0842bb25a8babb00fe1_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..a6e75c7270804310e88f38028e332fb0111544d6 GIT binary patch literal 60 zcmZo*nQF)Y0ku3&ODb@o3@y!q{ literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/e5f66a3cedcb14d0bfc8c316f89889f8_activity.pkl b/backend/instance/sessions/e5f66a3cedcb14d0bfc8c316f89889f8_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..2ac906a929f61df87b354ae5d2d74db0d57f550e GIT binary patch literal 60 zcmZo*nQF)Y0ku6sdv L7#kW*Db@o3@(2(x literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/e814be2131eceb352b69980b7ee8a300_activity.pkl b/backend/instance/sessions/e814be2131eceb352b69980b7ee8a300_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..c0d2374edaeaf3ddfe9e0622355658c14eb0cb45 GIT binary patch literal 60 zcmZo*nQF)Y0kuRFf= LnH!i+Db@o3@=Xvs literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/ea0036fe88a3bf6d3cfec0e824a44cad_activity.pkl b/backend/instance/sessions/ea0036fe88a3bf6d3cfec0e824a44cad_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..f1ff1f7dff9dc994f2940464eab0c5ee462d0455 GIT binary patch literal 60 zcmZo*nQF)Y0kulv6B LnORs&Db@o3@!b$L literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/ee4f18e40d8f5687fd78a9265f728980_activity.pkl b/backend/instance/sessions/ee4f18e40d8f5687fd78a9265f728980_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..5a2cd3a2b364910624f8da0cf06fffe7774ba48f GIT binary patch literal 60 zcmZo*nQF)Y0ku6w`s L7#f&NDb@o3@=g#n literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/f074f2def1736dcedc702930219be269_activity.pkl b/backend/instance/sessions/f074f2def1736dcedc702930219be269_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..defdfcea5993ed4e4c9a2f5de1ce748b0b832773 GIT binary patch literal 60 zcmZo*nQF)Y0kuRA|= Lm{=N4Db@o3@z4-4 literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/f175688cc3fc4c1573bd1721fdb7d80b_activity.pkl b/backend/instance/sessions/f175688cc3fc4c1573bd1721fdb7d80b_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..458912f258ee9375fd6647689a749dc0798c183c GIT binary patch literal 60 zcmZo*nQF)Y0ku6sau LT9}$nDb@o3@%Ruo literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/f1f80fac7fc759f813e7eddd40147d80_activity.pkl b/backend/instance/sessions/f1f80fac7fc759f813e7eddd40147d80_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..8b1634fc55aceb23fe5c919132a73f42893a947b GIT binary patch literal 60 zcmZo*nQF)Y0ku{ literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/f281afec819e61dd59170b9d4fd352ef_activity.pkl b/backend/instance/sessions/f281afec819e61dd59170b9d4fd352ef_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..55bf9b7822237a8d14e67d7ee9e068dfee73ec99 GIT binary patch literal 60 zcmZo*nQF)Y0kulqmu L8XH?oDb@o3@#hdR literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/f36ee8c2a008bce5f24972ad0c52f2b9_activity.pkl b/backend/instance/sessions/f36ee8c2a008bce5f24972ad0c52f2b9_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..f8ee8069f9f109df9e693c742dd5ee633e2f1cca GIT binary patch literal 60 zcmZo*nQF)Y0kuHT(Db@o3@z@YB literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/f3d4e4b9a5c55c9fd2fddfa671d161df_activity.pkl b/backend/instance/sessions/f3d4e4b9a5c55c9fd2fddfa671d161df_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..493ac60c6776a5bf887882e7813ac651798669b4 GIT binary patch literal 60 zcmZo*nQF)Y0kuKU1t L8W@^PDb@o3@-+}N literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/f5e9439361c2fd708a46a21127fefd07_activity.pkl b/backend/instance/sessions/f5e9439361c2fd708a46a21127fefd07_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..55776149126f059ea7e3f6fc4ed82f7139c4f607 GIT binary patch literal 60 zcmZo*nQF)Y0kuf JsqvIzJpl485Iq0@ literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/f8f8b2412adc33390ff1606518590c06_activity.pkl b/backend/instance/sessions/f8f8b2412adc33390ff1606518590c06_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..6eaad1f2037455347091216c0dbd296520716a46 GIT binary patch literal 60 zcmZo*nQF)Y0ku9Db@o3@*WU9 literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/f907d19e8f0db79d2c44d6cb76312ffd_activity.pkl b/backend/instance/sessions/f907d19e8f0db79d2c44d6cb76312ffd_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..d074879e8824e7d056a2e9464ab8d86e3f8ca211 GIT binary patch literal 60 zcmZo*nQF)Y0ku literal 0 HcmV?d00001 diff --git a/backend/instance/sessions/f9836cbe350e5c10866a176fc0a8e135_activity.pkl b/backend/instance/sessions/f9836cbe350e5c10866a176fc0a8e135_activity.pkl new file mode 100644 index 0000000000000000000000000000000000000000..90a6c631b64b191faca4701d7a5b4620bf8e7f54 GIT binary patch literal 60 zcmZo*nQF)Y0ku 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 8845ae2f395f659c7568d22b07463fa660d9303c..2b66d80d3b62f92b0f88bbf3b43f09904cb95ca9 100644 GIT binary patch delta 12018 zcmaia3wTr4k?=iwT9z$Kwj@6!+p^`CZ2ZD6Fs9h}1*EY}AOuK27M8GOY}vh%dBsLF zNt?838pCd_4f#vD?YIBTxt3&8 zvU@F$=Dg<4IcH|h%p84oQS$k(B&wGZ6XQ8}tRJuH>-_QusxxIK4h1fL%MT3_0 z#e}oV)|WVPC+5){rH=k5(HLC?X3mk4$MIRvC|_S<7p*UZ|6=G=ik(Ob{fuOLwJ(zO zWg@Pfv+Ew??D``jjyn$j!n3}dwWLBz+8r$wc9E?T{^#4%9p#%v_Ke3Q>#G2-0Nen0 zwcY5bv1dAJp{{nb%$@~xbt2ADbp%KskGz1(Sib-&tLIj(Ul^Uq+4)H_!bOXp&QFSi z>4;WwmK@*TMemB`77~(lRaW}W$^KhJ(tPI>zZdDuK%UP-kdL4MK_PuJ;mNOPS(o?( zS?BwGVgr%Q!@i|7FR6&|^xmYukR`NH-A_-d*U?AHYsVjoCwjV0W2A|ieEOVbkd9~y zXlZf+y@J2Ye_bJp`e^DNg1Y-l{z|^VkWut)0FIJ zeOA&pJke$6xQS%8k2|!*q>%2?XVSN|wRB8x5cTV*R#(V~bmxFS7lYaKcO#0SR z4ZT*HPAiIpnhf8nqQ4Wel6Dmr$ydSnHolE|i;c=w!1?6}R?s8G4c-n!?*q_bNxE}C z9>TWR;;qKw8Uzm@Sc_mif(H@A)`BgALRbd22{96b*s}+L13@pB3Xm<80?MYy11mOG zQXsnyb?%?gV-BVaelq+1g(yihnh3+w=pRHX z0ZpZ!&M(vDMwsEaJZ=x+lgCsZq<$~mUNw*8Q){)bdrws-((6@epeWYr3{k(9>Z+HM z5-2R9&F6LWwQ9wz&Tm(y@2!br6&XHrjad{|46ivx_;T7&cSYF*1%4@lW?HnMQN0XN zw&`t%wb1Pg@<}^AxS*AE(2p0a)7^vBTM=wSupPk;df&oEStp`hbpOIm5T;KTn!T(m zN)*2nK!-)t#=8Nr%+}_OP!UQPcDj14HoKj7xZQ$y#023kvJ^_}b$D7FTb(_Q<*v;` zAu$vM(W*sqT5HeHz<|Ts&ihF*{axoZP_nnWYEn@^L-D)=kE)&_yF)nn8mMw*A=yByRyNN% zx5|;;0R-Pe;G}z2)(Pj9-&*zvW>+771ZN7ipw z&xd+}Z?^uZ#v$>5!^M{&rf|4M1|7W3niWuhaHl;v^-!hv`c$?9ezzb9&9Rdrb;`+L0xx;l@PN_GlX2^-()r^1PhtHrJ6N z`e*1eyg9j+^oZ;d{G01z5^fbYDsBN&z9D-|qTog){iu}e;rETw%8yg$&#nU;nPAT= z(z&$8KzBz8^hltZ-YTh#Vd0OnjP|%ui8V1Y%##_xIIbVgp?tjrn$`6A-cpSM$3&Vz z%j4<4_tqsUXV=p5wfYQuqVS?fSKNT_y$|}IOFR2A;Wz~6J4H2n7!XVH6w<(-Gw5r5 zy2`tZU&q-cW3pYcJ>+}o0=A88}aofnKh~D(%paNHyzMaiC$$m=<PNA5FT)Ez2g^gU(WCt`kK}}AW%Sp_eSU+vZziKF%GL*d99xzk~4b@i-i>3^V ze%XGeDJprvf zsI~jG_Gv?ISP7&V{TR5(<#-eGZsAK~m0>k!DhhLYP3=ttd)mVyovs!r99R$^_wnve%g z)qYd;Cpfff%2egA-g>(3OapugpMYsw(6r6ZKA#v1uNupzjOG4{{?mnL=E0Zn2^hBo zja&T2Ez{Ktqio&2{fPl)?G@>2VcllHwKVh9G|N<)#b4a#?|LBE^$;S(egCJs$8UE8 zx;F>AHw!g^G-oi)=}&V`SJdp61JenCv{L`94-{|16P5yP{Ep`|hO6qFDRoXjZ4Ro< zeziH=OmbGvUV7M%f8LHeb_a_{?=IC}v=J`TL_Zt;g%=&UgR12!?vbFYrtXe7E0Pni2w46QU6lfXCi^vQi~ zbew+}Z1mZ`G8;|6euOiqZEFSAjQ>?lRO6p$z-s)=txbZ^BJz0B!8mlE)s9bUh?@Sx z-3%^GlV>4|i_!Qz?@{InFNYDMvVL`B;HZ2w4$64C<3nFPm`ZQttLP@JV6}832H>W0 zB$Mdq%JNi=tUpQy%x9vflwKLhK+mZds6?A)zrn7uC(U{T$A%c_YX^06UQ{VeQLORk zz(gA9^>?+j^UwP63JFQeb2Wh-FA`Wp2ytTdn8FjC1w`&TwD01S8HT`;`bM|CN17+0 zw?z_?xkomk$;yHv{~m&0u?GI9h<^Ye6zACP=o#_ADT}_e8+}rfY4>i3)V{mpNc~AD z-oW|s7*Jbe;QaGW7q|gdW+yT13n^j__M_O7x#L%8|IXrhXuR75UtP}s1{+zR_*=wc zeVK{9LeK8p=}qO?%ihHfI8FW{f=dXH{gBk@b`5#>%UDs3fO#uuhj~m{g~WqS7mtD_ zxL5BZhEwLzSKxmQAf#}*hakQfw0Z7~@RfWTu0cpCL;_a3v&X{+aNrdE@Zs!YTrWPx zJ2UhD4s~vPVRzKDH^SOwk2ZR@pjn@Q7vH|Un+vPB)buBmVM&$3G26h$B^G|Afxo6T z?CY4YPic!0>%6M9Old7g^8(uPptk&`RBTKJ3u{dNtBgz0?=}A*e_wuB&S}!YwxpTR zlxYf?_0OBq=K1p<3TQV3wHy4}4bz5#um;{6=H`H#SiCj2E}Q^F!ioQTzdMFu(a6lw zoT2QEUue0+G@3BhD#=akBfiyR>xlP@G)`l@sy0ojP5zwC@26aRFtB`GaQQkY2%mtu zH>mFQt9!$(1c!yW7`(~wTeE6rxBfHE_=*jO4w@*%+qb`1M&MYZE#8gZy|As{RxNMf z_AON`trMTiOaS~`34?W#rHka}7KyRuYXtEnP3cgWOe$F^|-e;M=t49wH<#w!-jPxsFv> z+<{;x0I-KU+#bhZ2LvU|5JkD?@4-I*^I!$0Ex|Ml4g;N`5x&O}l8?B-6gurY^V%FV zd2g=Q5-%7q4U%K)9Wy*)Oquwxf$f2?F;I-`!Ca0)vMt+ee6O1sppXKxp;p*qeut1% z`{!MG2q^8OZ|*gDZ=l_I9FAVFI$FJA#cXqvjQ->`qh&hVGHu8~m|ybJ`WM&xE0zZG zn}hky(*^Th>VL7{U)d5UXbl#$P8)L%t$1$5#13%Xg2u`_i@8NF6~9<~)EdZL9L!zJ zh6URXI%$e(+2aj(G)hQGLvs|0B#}JqX?V8D;ihr zRqfvqP+Nj(i(hS-R%hJlC*{K|!dwL0MC?|y7;cH7cfpwQM~23T#IW066ruiKqMZ+7 zj`jv0;5-KC zJ-Gjo2P9tzTEl``(BXX(q?&4;`FgHmCZ3ubM?#b(g{V|C47nTn^fQJMxm^k&Bo~WJ z0mp-nJ)YDE2H|7^hLhS?6h|QJI1c~9GbS4q({Ik#(>+h85HU6V5!2La+WEsoYEtS8 z<42|7-Y8jGDdBnP5fGx|Gd>*05iY_cz4DI|xrAw~iN5{A%<*R=a3j!}EEjq5S#k*+ zBbsfNDo|sSKw~Aoh2u{VNS9pLZ!S0wtU%QCK78?LIfRovZeXa#=5Y?Wgwy^}n)GZg zq}JyHe3jn+>;`X}CFQQp!Fxa=B;D-f-JY4m3({oN=OI>#AgYD@-?7NFkhu=PJ@?#dMj8#)9Os=0Z}+{_O8iJep0%9~^Q=jfoxZ`BU0_f5Fxh^#Jg*+8$i(oWZ>XTLao{LG3obcH6WeJFI~>hq(y2iP)`Z zG1d^)L&WFLZt<72oQ?+opFIhmWaUq%=cB6UY9yzxdjCSVgon?m+uJ%V5930#tE( zn(A5##OLHnz|U!yN}({Bj)lnrNlUSOvRI6GDM7r9;Z^aiHR8#|rLEu%R7hKE=r<0e z$`-((7)e&`PVr41_y!?vT6^#@+IKKP4Z55RFJuqkDfIe51O1D~3|Eqn;?-d)n3@h1 zP}iZPxECP0klR)1bWgR3{`inyd=_q<)DwEzeJF{3bf}D^vW#%yMD7e`oiNT|KZs)Q zM6oZTSm6u5CROzRz0gW(Xv2$xfWQ1A;$enw{1?Oz|BDj>Exh_QAFhYI+{VM1H2tDJ zB@fa}(IXrTNxopif;0r_2$TpC5F{c{Ay6aGAV{W*U(S|cJjDNrZhCnUTss|n*+m*@;_)i-25mZi zpO>+5H!4YYkisG^g%DWfhLZYhyd9hchZVd8xKb5@qW>|F;;-ZQ%LpQ-(aZ6_$MW38 zWeXwP&sJ8kjo@C73#Po1TW*Z)Mz%{}V?0|7!|W{H{AwFXo+vzAexmy1;O`xB{blZKnrH05^Y ziq2P&)f(=6br#?kk`cd+!Wk{jPuB)u|kewSJ5&yqro-zJ&IV|K1OAei_h+XAh^=UQNoLO3I!PO|%4(EWsp; zKhDCRgl3DlqhmFK4vPf9YKsUk!hau|NZT>eVKMMF+Vy6kcOkxsZJ=b+(9i(S-aLSn z?2338G4wH5q9G(u6I92D;a!{lpH!-VH(^9k*Vp3_w) z`c7u~=Pd~qHikK9xDzzek~3>7+eoQ2JGZoc+J`nK)5&L?GW?htq;G2b+yO zaM5?Bb_w~Gdxu<3NYa#9;ZD-&v087@TW>!JDem3p(#T@pv*&^`@+Ea$DsPFYFEe3i zAca)RELW?~=C)$yTX40mzYMwb030L2vBoF za@P=}0>6ytz{)Ra_vI$<5=0|5g$pGL8F06wX9#}T!8c+nn{)$^xT`;R2^*MY`roI* zS0X)}fMC12hz-yxET<#L0uYjo41;ZO+>z}OOc3({(OOv&1jV}t2!@nBaAWM4iMNCV z5K{XH!3Xr4@1^Jb7E!hy%+@48Q7|zA1a1Ardo4uz(_fXz3y~xbo*)EzAt_r9;Y>k4 zI3x$7=CW_v!F%Za9~3Wr6zO7v&}9i?8*sb_u};J`B4Dp(VLlTvE7mQ?F5UF)57NEs zu#D4!gc-!U?pgP#Z1I`p6)sg{*)Fi3z|P1Zq!D(o@Hm$2W44v?7MpV%kdMrn32Z0@ zF7}yYOxFd=$y(ocg4vSVW@H70A|&k@aM*ah1uNPSKz@3*Fsy)LME>b-rfbPwpYGpQ z5E+_5zTf8vJugYX*{&95I!RT(eMY!uPQI%kG4T=OJ1|5L1cDhZX0D=q2@J6Vi5*ta z1!4v-5)lYYARQ(T9{?6ocxLAYQgu168ncXxvicdD|=^13`I6INUXYh zL&``i9^p*z6)-3w1b9Zh@gFNl;HQ6DB2WJkS~}Q)zWSI%a98jW9#W}m|I&~b+y7XS z#nj>Mix!iO z=%S4uN+h-9*;5}T60eL5jIYs>_2j|v*R`Z2k6qy6!iAD&LVP#;JYh5ZLZQ!L7sTa> z@pK*8?`1vNnzD6%0>)T0f^;x;o`(&Z3N;mfwsZ#S+_Qvjyi-pa$ogh1JXcn6V`zrN8TAz^;nO|z#b7g?c)bC z$<}%7g?OBR`xEUj=SK7K$zD z57|2qFuvJL+3vD!XPj!0oDRX<4f|VM!=Q%!2<&V8%Rm7>ocqA37fj?MqE`?rnU>7+ z&;5))kxOd45@-u^F*vQu*xfOmsM*~n07=SKiD61&@EbP-BpZX0jsD0dtiVy2s!=JF zqA(W$yXE1GdsL)2%-tQ{Wc9a%);Qs7qj9{^O!TL^%tS@h=4LJTj@Hy%Cw`}v0Q~=P CZyZ%eZ{92)K}RqSTDI&5zIJbDW~g&vjT%hIgeyLw?Vv^TTePUr)D2nGFimU=A7EwIA_{^5yw3Z zf5Nq-n6>DjMSodKiBse#g}*YV!BxCUE1c=BN~hU11?r}(k~uS= zu1dtYY~}lb_tWEV;Fe5<%8JYCro~3Hy)s2cxLEOUWePo%A`{uHLACe|aquJAKSV?y z{4nuTQCc?em5%Li7>AR}Cf1#x>X*;ZI+L^c`w7So25Lefv&Dc_K0x=h_A z>Qc~G)DC)QY99S(St>o3qN8h4&D1z4pZ+ejoATeJ(Ovnew0@F`ZmG~w$E4-7qV3W; zxyD4Ys7X7QdNtRPRJICdHQ6MW{;09AmZh|#FOA-%olI$wco+^ASDmf89j2y3Opt8Zt9@T6a!D+USAwXJ#7sN*vP^genAK zh)C4|L?wQAk1HzW9iC1XUxqcZ`5Wg~l$Y~5D9~NzbTXA5G~ZyFhL6-B)FMn^L(Lg3 z*>tQ-r*~#pWL_YBL-b(AiR1@14^<9rIBW>(Ya{yF;Fip@VqMZ4h3J$**uE{<{N|=}^7rzXF3A`LAn}}!cUyZC$E3H<3I(6h0leg%-xxa^HYRP+B z)RjO}%QEPyn~by}Uqd(N=ZX4dw6Q!_LO8z>CcljSwxEz+Gf78N3a-UQ%()dy}0YoF6tE<}uru1vZl-8A$9;q-(#?)2-!Jl0o;DpQAIBI{H9`mCj8|qo*nyOxLxvzETOs zrK2kbD>@i>|KDBdzq_>J~DWMyeO5wPAH1!a9WY2pecqO@pi* z$$4~p%{dxbTWbn1MPw$2YQ@_TRv>E$@9O259okZUS=Uf2qsdGP-sR|6?O56E8dpGQ zQ951g+#N2v+q25c`?0Ug=Xdz~d`vT=3YT(&pLYn&tLcY_41zbwpcQomvQz@<>7vW) zzPMaH7tYuyF157PbEoT-^UUHm70vQ_dhr>(6bc;@c+L2QTF=xoN`I_>U(_W>H$kK{ zwXvP1G)jqrE%SU|3SH4yOmlwJC8jXbSA+LhTZw9#N}pP+m3ew|IKPShr7;7vc3V@1 zQq(VT%4Ps}(6((&COWri3dsm=YuZopwn44nzdT6Y2@p-5>vi^ZyV||}R&Srj$yd>9 zn>S?M0Zp59>tMp%9%rAY)9T_^dAmD#m%C#%zm0y{+{1hb%>TdjRitXCb1m{Y-i|4&O+YX{hzP^qQ@EP_F&_{n%zr>zAxK%^6qAoRcEY*u8_Eg&0S(216u|M^s z>gbWqyi~=+THvBYE=JhxC)T4??|2*RJ(n6+XJBZibtX;h01qZZ5VrS%i9Rz$TjjjM z^NTrW%7AQ(Y!}&K6sYxNJmT&b4W%)+(~zG^aH8_He$nB6{u`bDUjysD~ z(09Tndb@iLM2%$JOjd5rm@BDXUt@i;)MZ$XCWa-(98cYRdV?EsbRSncXq<8odW+C^m@-ku(}pML?L zc@g3F0JgEv<|Uft$x$*3MPJ0fO6PejN)~Nepu8!M4t3|r%ONK8y(OYgc(NtMi4H>T z&t%h{cQON-^ifWnWI3l!Kda6eR_BCr?P2wbhWQfH6o zGj}DA$~bfGD5p!RynwJvJ}OE}t%Rlr0;8NdZQ4k7{*xv9N=D2%d*+Q4ls>*`RLbR) zU*N<)aF&qI$P{Nd9<06*iQ7oSr?(NsWGT&RlTTTs&+p4wWoDJo~w8;U@gT z=4BD{vXFV%NXfL_v-h;0n^O1OjAv&)H*@#wh`BsuE!-mPB;#G$`pX-KO0RG??HgrY|ogqW#NcmJI7mD@$_viK2QBIUv z8HaOP%UNySur@E0?>ssCt!v>1zjv3}Ln|ENWh*1gRthy?tt+B+g|x1b;)-3fLF8-0 zT3cws4~pNzl{6{^{y@N#B0E zK;d|;VzyFxLNa5vO!@{VgPJ#FQmA=D*@T5tlN4=g@hNjrn^JsQDFwO%wxigk1d8qV zchH-8n`A%)o@nc>I{McKTj}TgW^huweqc@tGD@&RVfzO=6p@8==MTAJiC<3@{)%K{ zj3ehy=LYYS5*4{&dXr?(Z{BQIB`-mvyDaXnB7ElyS#nmp^Zu z;5>&ium9JO4~JtQMW@%ZdudVAiNEl!20K__(RluqVp1ov1(m#xpB zcU9@c8owYBIHKUu^>30{M`0*73B-DRE786)pva#_c#}2o&muhx5KVAxaCP+gVOyF8 zMIXj)R_oTSkf4M&?yn6(@rx7yel37a2JtTM_Q1YrXTAorooHe_?qt4)Wkm1LXEzlU zqw{MOLRdL}4%x8$=tHF9eOapc4wY}-6fp4YWhbx$PC5Su!bt=aKPq+mJYGM43M=B< zJNiTBxp)P368E@0JSw6Pl)Qx$j+=Q!{%!1%==OObAntMaFL8-5Pd25n!7GI@+3s|A z`1ue%9j1nUOA$^QA0Gg7j8Ulb;R{!cM{3pv%#r&WOkL<5YrrDD|9&esn#}2q+m)k| zsfjN1lS^t8oYst9GKYCdbcms>o5JeF5%uDbdhwOKB>KwpDm{H^phav=G6f}D7L&lJ zQI~2OO@s0%Hx3t&x)>|Q8!n^JLtLp>GXb}8R%ISmnZv5gh$=Ir$~>nUs|jVSJihQ` zdbnj#q-9aakg*af;1^bPL{uFi_WS;Pih=$musqNU6LUvXQ5y$-rcnpCWAe#YPZb}V z(r9W;mYhf;P&kpSxH?aM!q6nX+A2SpE`_R-Rw-1S%o8JRQ^9j5r%JA_k)Ny)BRzv4 zeO03f3a2?m+f4CkMNwOg_;igF=+<}=68vgwkGvSuzNliIx7+XNblH2>bwZir8g@3Y zTrjHW=;L{p$8Ya(@ayUA+y5ZLbdTQAS23R2N?Yz__CDY&+dT|9n>=1k0+s9}ruaVf-5U#K!=IWcWiB z`*t;b?cS{5pYNSd5)LNphpMNQw0_qzQNNUKdq_unzeqJI7INSoVlIp0z?~Hi$o-S( zw#F=RV!!;sETT_W49K_0ozU0GsCay2QwHnqyM{PmX8$E$z7Fd)AZ!ExV_^mz6Pf?d z&qNdP*bA(yrK9{#+~kx%E+OibI3X!` zgnLvpAoWYf8E_m+6^K*jlsM)6Ts+GF8kLq^gAE#zD>|4!8wWM?!slu9=?iL1Rm8Ns zO^1iLL^ar;C0SXC{ZiOv73>^9`KWY1EXvcd7=t|k0wth8pyk=rvO9x*<<`Z{3=7~q zphB627*9z%XS2`Fkw?k==OFv{BEyD*l2E{o`zFZw|D#+O${Pm`($asC1Q^_xZ=NWMsQ3vTb`#UADI$3AZWHOFVQ$bu_4~J z7M-<}4O`0oTOPJlM=aH6E%n2e`g3ai11Uqb!|IX?Vv!Y;4&bw7&0Vfvb?)edpgSpJ zG=Wn?2rEu9v#l#@Se+Hh<_~NFz~B58k@>DMI-3s%)V_$?7gGDKw56r*^0UA{l->|3 zXgJ&k0Ke_mo;PKUq-CMa8L~%=r6cedY?A~!0%*{a0d*l z)<#roL#nmx$xHUZ5siLV75&Tgne?qkXVzjebW4-Ic`EmMdXoWe$EGS;ri+i&m$X!h zk5@{8z9dFQ$IR@lDcJMaK|(fA)6i|StxsWwBv%fN>;lu#OrW*&#i4XEp0{df-rgK) z-7AGJ5O_|C2WWHlCTsRX)G2pPh@OWG(4IyEdv(&|{jwortoO@%ONr1%_GOPzHT%qC z)S4LeXpA}&qsVXHfiDxG-?otHRQGrf(6>E~^l3&{KY{d?C)~u$-u?F{YDq1v-k(7- zS$WO=Nu+-4Tv$t=*`H50pGu=&?oX3$g0wq}NeCH1(Dr0EvDA)F0o%m3z~OSdf*Z<4 zhT;l8vMZ%O9`G^7rr`FcULeKaLC;oOvJm<)oBSDSqS78X)9Mz^Yh+$ew;Q(e&uGun z)<#PL&a@PH6} zV;2R+S^C=KOEp(a!)g_=;wtU@S6bc!1?#Sv@clpBoV_cR0w z?-`{xWCnlu{SK0U6vVX=c5L&Mc*0q5H`M!Z(jhj4?BVI>tKbXU$Is`GU{LbHPNGSN zCO!`)dqSuEFIJNG>H9B2C;ImnP09B#-mOoOc3V2Xg66$c5U9q-*bGZndcEB|W3vV; z*+&R3Qi%wV{J=*CmhbGq@@51n!v7$km*dep@#hh?AS^|A9w7&nARnO+;Tfz8B4}BF zt49)HA^iEK20wb~O_E-1z~X}`qZ|}32R~^b^vuf!Lj#e*Y0|%7GyUo1 zn<|<~xzsqy0UTb)Zm-Q^x6r~H+5K`@MQ?j$r;JIb4;o*6fDj`+^jed0HVSz)f-m^f zYX^uDq7&{58CJYU554|DEquxsj`ZPlk7dhH=3uR`2Tt=Q{d^%ip6m6vA*C+0!-o~O z-){eo9y@wBEYbX91~Mb)J{FOY@94}o%bMdx#e4`lC?PSP5S^@c`0RMrCqyUjKo>|? zAm{eGoOZ}xkJ4w~oLe~|)0XgaQO&!GDS@hv|a1jaeTe$>xK_NGd3f=U;dS zW4rt9W|9yLy2`SteAz+gb>$;Rw(-54-J4GicTXB2G2*^hz#8r?+#A=;8BSRM|-_6(xddlj~^7i zrcJt{CNcf_Cq9f(wV)BqS1}J2lS>eYsRIk0V-v)D+$AZY8~HGW7zPURPKUMEYlq{U zZuZ^iN(mvI^l2%1EZF!dO(3)ByI(HVpkZxNHo0JHa#`EFE3N$1bk_d`0&gR8Jg16^ zp;kDj!YPj?fQs;bv`l6eOg^T#Y=CTbI&mhMRmy-Zbd9DsI{bZLd052s`0|_={rC8> zJR4CnzCW7O3-;jYNW>uj=K- z@1UujZL`-uCE>Be_o0|!T6l3rZd?J_cFsJ;$JmEW!vgHsOt)Vw$U;E{+l?*E_?j?w z>uBg=nSsp$lju^lr24U~!dY3d4*^D)-d5i)~ZcO+Lt&P$aW@L3!vA0E^ukZK`%V~??cqOANzXt({c%|yj+ zkNxt9jZF(%DmD*s;jdsg<9Y?Jt$}}yKxyJ$v>%I~q8MmHSJWb`-#jQuB;{nyk*SH~ z3+aNmwX(@#J|w;jY{ssX{EkgqTsz{^=1n2f$ettnQ%FEY)(qzB$P#kn;5Hp;&Sf8{ zP+_B!#*$+ne1csCUtw3n7cVxCcMg7`BfA5vC!15I-*>_@wp2ksm^gRhU~fgh{U|Dj zo!8;_^ZXhdBHIGlI^T>%Hm_`& z#Q^cn3rAKMNS8=&gU2w4L!L#*VlqPU;3pZr*PAe-sw_UCx#5`3PSR-kV7vf@M6eiSZc!($FIWQ-TziNoGRH z5H7+z@DycdLe*e>?cgE{*;&lqgF6X?K0-avmwbL@+YG|bgK8@&07Jgc*>+!auXj zA{+GN65ZfKxgqlI0P}^3eDXz8gYc_Tey5 yDH`R*VXJ)9v>=%jjdEAU3#|U)#MUlzKz^h#k7N^d#;j!SXtH@$iTG$S0sMc=10v@D diff --git a/backend/utils/__pycache__/hardware_integration.cpython-313.pyc b/backend/utils/__pycache__/hardware_integration.cpython-313.pyc index 3f2b84cdd6a6b60eb78c273e7c6fc15b527a555c..ee8edb9edcfcb859f4feb97624aea84cdb916e64 100644 GIT binary patch delta 11274 zcmaia3wTr4k?=iwT9O~KE!naq+49@++t`?gZH%$8c?1U#4i6iIu!RxWGF-_JNWkP- z@;4#Cq#K~g29op#zGlCWDox1Oba{tYL*$rXM@zcRHfciB-E|fkwuL4;bFO6>e!Bk! z&z&>pHD}JuoH=uK`!U5Ak1Jwt#KdR?e4Jl6);#!^-LWS2k8kB^St4`9&&{7>7Yl5H zLnRirXD(a{EG`jVmg)LS1&3h)6H81&rr3;NwXq3d8nZ!?EPZ)!wNNWh7gnM8xRio`>rsnI=|amVf2Yojbyx1G zOC9Z3=#Ytd_*a1Qw2?eg5+ieCzc<7E>=}V~Was2+I}0i1mzM_~RmID7Cgk$^LkPCa zf;Z&pfp;~p%8c1q7IO&X638Qv58mh>|DBrHm?zm%fSC7H#niL}T4VFsGT0XTJ$oCr z#;uD8@W*3>^hxiz{lVt!~f(rJ;FJx9& z5T7?nF|c$fPh0>`CoF=Brw#BQ2_}{a>O?!IJK-SGUQeuKdGKjsz0MwxafAjqE zvN9+$o7p6I!2D3^WNKYQpq9Y65#W8ZTQ!A<7Ra-tt3*V7et5ugK)rX>;aP*p69cy_ z!!m2xtSZ_0DqTx~@&aq9Yspc5sIJ%J>vE2=r6BO9^v75+=a5(uodh_qF2w9IkqabTA}TM@weTx+?ViLHn?iL(&)k!t2rMPAj6geqoNr9i+y(}tzv=$~6E`*P}68VN4Dx859HwP}qC!xie zRbEZ2W?>3{GhZLv`PtObsHwD57!%MhJlfG3Jm(Zv3-xDO4;pqbmsTBBQI zq`ooMu(RQmjE#oqy9nryV#a)7xD&iqVzHt{Ne^nmA5jxx+wRALtaL8RftJ$xgotIv zj?S=WrxD&Mox}>^KS~SX=9`I7RHosrZLq&M3A(8i*jV-viz>vajxezd=1urW*MJ4F zk-$vItC+5zLnv1j(kQVBHdW-X+3<43Og0~WU$N9UkI0V@c$C0a0^49g<#g2oLKnh| zl@Brpd{vp%&zq8Ziv0*$?6M~DVMOfXoy1Bcgre7byj@OLXQ$})`6Q)^sLy>gFcj0} z_BXmWdOF;*y{mgeax6*;If;fdI6Hc~yWRaAerG3dK9ny`TY74bZRr&lbf1eLE9!pyH!+y~v zak36x+HaB^SsKi&%2OE_Dt!%zRe`Y52g)WrCo9RF6D3@X($1@qUrcDQ&6_0uaFP-W z9SR&V{E!iGt$zW&nexY!m@xe=ucT~MLi~f0H`;L8$c-SY+6pVH?O?oQKtoW=T2+wo znGv=Y=^(i&HmX&TEo2C7Cb(8@Wo8(-ngse94PvP^^}K9^mlo;*kJe`WckTU)A)cT1H1;Xh9?M$`&bY*?iOqu+wOo;`tEMTbbRk1R7vbmmZhYy-t(GV@O zK0}-N>#T{%q;Dau==S%C-j3c*w{$*EgQnSe%n9Dv4dc$dGFr;31ojYE2bX3~l2qj} zh?-+#ZwBmhv|1wxQk+46ocVPOoCI+b%vw}h_#B~pdAktXqNBsWw!XZ)%$6Twc9B%G zNtDby@am!}W~QN9jtEC&Az4Y8NZlg`-;LI0TuJpqTPrJ&F7eGJPF5L`ce}k}DPbD7 zx39-7y8LeOF=_||o`63+WOMUvSxIFQgA@kHeSJM4)kar$pWA1T;ky-5OWWh)HWgwX z9s-1Pez(u>9NoFGRq@Cm6xF%P=@!La5v8b6qYx59y8;=ivjQ-H`~X&x2M6W5jp zQ=A#{(HTs6*dIeYg;!OtYG(6Z5=L?Oa9xh|jc~}`mN`0+fX7x5%1PBGz}}~=asv)` z!I`Dw{aaZ!_72=~>Y1_y&z%jRbDdI<*1}V*^R42$h>6DtyoX>+^@#8*s9RObT(EUj zI{P)eylS$FYy5urmsNF9rcrH#%#MPzmDoI_UfR24Gh zH63a?t^EZW7rPdpekDHRz_MX;&XBoqz+Cu7^PstM$Xq>Ou71Dyc*}b&=Q{^#77m&n zL*~T;=EZ~NrMsg3keq(akUnI{8!+Sr^E<8>I)}}fw{${6=0JSL4ZUE?-_<-KGa9Rq z{7T&`b;G#@hk6e74BPS!#T|?rE}Zb@)FV?z`jtXn<%l59OWWH#q7^3A9B4lDz`+Lw zEaiVl&%I_V9I}-S*vgJp9#bEWelPmyw&2Va!E)yn+sfhcsRz`r$6lLM_wJ*=cr>u> zfcmPf@(b!vF<`4W+Iei!@tXH)j+F#w^#v<8UbSud!jd;+DIKts9?d(Jcf9DmqGM^n zW>0yrZ0!}xy5Y(xd-=qJmhx|NkoS=ZLcDoMpE01%xT4Rx)xdCFH=CGXwZU%pti|bq zCFh19Gge(QWeu6^115X0=)vIp#Y6Mk2j;h*-xgf%yt1+**y$czxjN|V3Kp!nV)6`^ zP28(K6n!vy$W$CO72h6F;sAfWH3f(MBtGNz&G`(nR!{El$1U5ZovjpJtIwEKDL#q9_P}vv&z-y>@~BB)aP^5 zSaH5ciInr@a>6UMvt{b@)704Vf>JxXT7DreV|JDNLX})OyBbccPG&E`@M^1y+)k?u zK5sWb-IrQ;_{pho^r9M;bag9jg3zXi1^;CwCuAol#Q%+VLTSRiG~OehEr#i9QjN*D zRQ|N3jA2ITT~iGkJ~YUMg%)&Bg)EIi+dUow%K)P%2QnMX+CEg^_0O~_7iMD%Bb-=c zfE}LHD7xg*L-FKsj}9_-n&C@Nu1sQ69^Yn!m?B}UNQYQsLT?S9<- zbe)|ogtP04Vu^_{-&6#DTgPXVC$^ObO1o#Vsh4rY>vU@qHzBaAFzysRUOcj#+)YrF z7t%yxyB*Y$-(^DZR!>0@xvVBBOjL`1ph_MWennWME%z`XPd?EPu3Gu)Ka~?$KwsDe0{6PPo)ugh=7g&4-SS2qu5XU6hTPi z@%3Vy+vD={Sg2Bp$jIB-bDa&UZakmQO79v!|skgKOUsNg(HX`-1O5oXc3~t|NKVvWoOj$D2^Yie_f>WnoJ@iXQ1xy@;c50Z1S@Ih@9Hae%)HYcgi z#dAD`I-E<>&Jon-@@GWPu2x^DR3qs^wGv4e1v%mu<=Qz3>WeXQ?0hjLfxnE}xjOm9 z^o+SG`6ZPS@eT#txsVzd6y2&Kx|M~r8+*I`t}eH;XJZ$Z1!4O0)A>~`r0wVvMYq@Q z>~V=(p>y;5s)w;!+!n~)lFnvw1(fbMc$=E(b&Fk_TYWgtxZrvvwSNjhIKrkGq*#;3 z=g+|ZdBkSoI>V#tQKb>5P_rlD)Fb)q=Yek?`C4Y<_HqEpcU@)TkwD6JLl3o2rZ8DR z*KcK7hsL3u5`&2qC7gKD0C%2>fd{vztB{QU;FD{4R?V2z$6{~(U__FM5s6yzTNqKj zwJ9-0<5kzIyRa9%SF^EXV02()yN*fs)qAeC{Q9~Lhvauyw8qVtSLtcNpp_f{*gC{{ z)aHNhtfAx=T42w59H+NW>~M$FeLi$Qp3W`VO>S8EcxJy{D>)4kg(Ufieaq>F{4Z3& zW0|oX3-89=9EDWtHo3$uAGh<6rn|SxiJLEOmQpYO@BXa7fzfY0Ve7w6mQC}ZWgC(- zbH+^in#DexZXY&h5X>n&wCv!rVA+hpoQC1tqC;yBt__wq4(84rwq(9CXWyIyn=ul& z3(w3yRB*81uyZi8_U_)PwpR-F6&zSRm|A=-EqB^0-TS+L>K!&`4O?vAnq#dAyEG#< z3?^QT-5tAk^A){)Sf3gREOO9xhvGBPd~e^(7xXFc*%SG#B%8;z4JpF2Gb$RQyyC3#U_W3EbGWhZ=< zki0tw@ z^#wEhSM+_u$>v-7>T#wujZDk@(q8it#cEnOX1YA1}@T;9hWe8(P z6+HGlrN5%!+ntkO)y_nye%{L8>z+^M@1KmmkB`2ukG>Oky~Zlw-Cf0OB7C{ag?RIB z!uxg;KE!e5p2hHQM-8xkPYq0XD-n+GiPK<6rbDC03;0`a@x)u;yFE#aO@^2k%y8xx z2B>+#!fG*{YlF=%SmE$5qT_qfJY(C&#Imq~!ghIiTP-GaZE*dCURE1e`jgjKkrJiX zgy}LK4|1c4K}ty3gUO|CDRH9e^>%yk6u$xaFWOX6t`=HeOq*fCmSR0lBE^u&gk=!z zS;8_2yFu720$EhdCXhoQmp~rW?lYC85t>fGhMsd)f7lM$=wSK)Dvzu?^5vdA6IENewueB6)d(abg_%Oh(-ET7eh#CvH#E{O- zBP}Ni%q4yRJ^M>oBs+}Btl#Z7!bkgaRW-OM-`j!P`%{_mK;EI!gQZ6+->rSC_C)r% z;*-UL=J|n=mv$-o7fcq;B-ZE8uaKRsmSN#+Z3^NaBoY3BsWBM~7c1%&__|chUmwbA zv2a@EK(wj z9G8LGgLaln_bmJ{MOm05@^PtHicfsBInpKK*;gysg}}*ISFl7262-|Vk8#x#UY~$I z!2P;yb~RSmRU*$omQqW8IFu8H$FTIZ$}VqdSwx`4u0XKJE<=oo0j#&PrX#GyZWTM= z^6QiPr&1TbcZyZLz1Y5_C8VU4FmlS=EPmO{Y`Jd(rx&7}-Q!2|R>WN)x_UJ(a*0< zEhP5n*u~`CWa10U0^S0t1qm~hJYTv-&+GMi@Df?##IGD4ztedWX1uW}h2{;#W1Q>s z;ny7u6`URT^~5dK1wMY`dlgf{K%lfSVx!y@kvEg>)CXu59xOzyarvB-;gdp*5Y4RZ z!0Wo--RZvwe{!yUcePM^4lYPlG=3mE5lh`T`o{8rDs&;NfZVk3=53y>U?oAo1FN#zs* zX$V59zV+lprBI(Zm(u5N5JsCJohe1xQs8pri^ zuG%bahG*X|=-)vjQ-#!|o-ooKaWi3^g!u{ZxgRDPSH(V}&86Z-#J1=ieLZ+#-CW${ zUV|UprrKKUYSBw=PGB3%q2P7QH|~zgw~6G{G8z_!#*!ZBVv$E_IDUPLB!Ia4EwPDzo~Tx=AH5=qG{2Kqy=AwQy=_9`V^LM->8}EmY${{laRE9`!7Eg$Jmni;i|%q zt1+2y9SVob5);&sD+^Z z;7-um$>aXWYFs!%I8V<&v!XvF$0A<=X3>0IAziqZ&T6jb_x|=^ z>%bf~5I8?jtV*HSqlIV279CMYkq8hspF!+!O?G6Pd5plF#&zU?=itP()UX}A!+9CR zr)0ik@(+ui5BCDRGhAxoi{%{Mqi=s3p2~#4TC6WO!JOB%puJwhvbjQ|}wAvGSa z6q<-U6q-hh;e4$m%te69GNM}F5bXqk@oMxq4M_W(9*SO#pKaIhxCeg(aTaO5@d~x@ zyXowm0DO0nJ-`LU5836^oePR9GT*OuqB#gGMPO%(#5#IoJV%pHr;2(4GYB-mf&Z?P zVmyAz@_21IHRSBO2;)K9Bh~sfaw{yEhc1P2oH9 z4J^HFW7V+bcFWwc5yB^Vj}&rAvmc`_5su7MB=9W?L421u<&`x=uZ6@rTZ{N47A#{l zB#{xn>k}+h@(}qi@cx~2WaHYMt(K``1C90&)g2Z{}QYV#YjK(E1?(Oy^^VY5%sJjj4S0zYNvKOUESRn9h->GCHM|CdyfETnJ>*n zwS1E~lLjgp3EVA*P*hD%JpU=mH1Q&ifd2*G&%pS@(`pTKvd>1eM`0wm3Tu?V2@#A>h_l5nE35Y5>O-#Da->3bI`K< zs$#{6hT8nq*M!r&qiU21zm96u3nx{vjcLNk+VsXE;fyS*F-CqSni14THJasTQW?Rt Vs7AZ|Og|miTw`^xr6dZuklm8jWTPv~ z^)%#D`U^OlZY2?B8o4yircdN-hEfTB$8ka~qs0L&eu9=~lWfk1zXF@FCAUOkOGxB; zq(ULI@}QN-T17Tf%PgC@r5LEiC30I5qn5N3rg5brYfdO_DPk>^I8_;w=|YT-&diUL zTeyklcSIG}B}wI4bPCQX<2VavQwXssT*FnmK@u;E1MC`Lrlhw!x%qqw*Gb05#*L4~ z)!Hd=PKYff;_Ma@&XJRU}TYzsUW`G&-h4!DqkUYsd1PfpasWHo&*>J@n|4$Y&RHQA(}9@E?*uhFB?n^dttW>1rz{-Ih=qqHmOueC|k zJu`uxkI~cJ^JMgw+8DYzCYf&7tE9`Klc_YOiN?n2=)aFCCCw7*d^?HW*{h&OV^-3W z%Dc#Nnj5PjskA)yY5MvC9laf!Kr(2Q&dO*j={}u?WZ_oOXLKdRO5fMjkeM`9uOqp1 z^KT4vsXh+BQ`(HSbUU#to2_)G-cQL{9gQ|5kauap@>IIi(8@kF(DR14=sXVg(q?q4 zYt;4p@{+&@hIT1gMwcW$S7{WAVX;C90z7s>+!e&;0|-fd-F>c*OmMopTtXpIaC96kGMPvjU2a;PI2%7HM^J%a3LE;W$t9nIL=(+6r^r2kdbiQ#<`b&JI}YwR zG3%^xIDTH>bMvSqseB2MTp_B4QrQ)CZB;{|?5)@uExg_?lr@wFK2CXvZ*p7h*j$4E4?$;H1T6?AH>nkx)<|)G*cnao>Bo^B2s$}fsjv}Iwug~` zS;7x&<;AQ_`AwjCm(x$P)~gPeA1ps2oL)PuE2FmTu>wQw9PZ*A<-$UKP*Rhza3+6g zrVJYGa`+_tr~$!^zpYmU1nUn;q&D0`V_NhijeeKYL^o*5=(QX@eR5_TGrYHF)`GE_ zr0z(2B#ntR(1p1fB#HLqzC}0g)zh1~D!Mu^n*KgdPanu@V>b0)d68g`daBA-v-iyL z_je>xVvk}>Hszaj=r-5`C;JJUtfo1M9?RbW=69#SLdyzLRo3tbyN1rxr_hHAN>pG? z;sZ42ALD3lo{Dbk(MM)8J+L<8*Xhhe?NVC~D1f>-D^OW@jYQ9LQ!2V zU!7}9ce`teyVDcmp($!y8S>OSR<(P2dtL25M+Y0^=!Q`O(_dz?tuRV(B51?$Qo+?P zFgvzJf4_>(rzcAFtHu=-zEVx){Q&ZjdwovdfR|}-Na@<<6P)7AOq-)&NLZQ2-vV<= zNi?D?OCAGJ$6HNH%K}psJMd}QW0L%$r8@4aPT8Q~uO`)68YKMN5*akwrNA=$ps_H` zeuh3X_YRD0y4fM(R!5I^m#x04+DO8rf+yJL$><6B{tkWz5@1_XDzr^6)%%lY)f#aUzn z)hwx<68j2J!jlM|K+r=sEtxIGzTNcn5)1i7;K~xE(ol_^H3-n-e+(HDCv2e~*$N7A z*Tp672W-2_=j``b`iqJRE!iPr6;RO^2@|ejKu@n_#s$`|G7(cXbType&PYO%{6Ycw zOh!R!uP52`_x7D7vw$uxfNejTc!=+HxrKbhB3L z8A2-pj4dJFJJ1)BZ*lexxV+XVc61?ycvfB(Q$nPh&*k+w#*dMmATE!k3ZaOO zHit_PJOXT2%$j1hT_FSQUt^$-HJRkIz}_`xUZaHZ%)q_`vpYm%ycQa~KV9mU*d_Gj zZ`aYL<}&cxRqIn}^uI*W&Hu>^O-C{~JFnvwe*%^xP3G)UNa|Y8nq)ucI6DU+UoT~( zhaeBT{8n6~bgslLTf5ROrH#)U>H3yDUIuvZU-UT;;pN4A*v2rwwM%<7AQO9dm)mmEnPNT*qeF`R-hnPh zcfa7pmZZBQBy~GMryrr(c5^<{;)#?oByach^>zD%*I}%15y5K!!kN+_y}vzO#Viv2 zjc}RnYfllaIfeeRJx5-MYcSE9?Mc$yNGGAKPnv1rxdi`*I@1lU>AE(3NShwaaExeM zN41I9wU!~RWkj1c8lQYXb6d`tGY%-mB!-w-Ksf9_>>o|bJe7AcZ`7QAe8tffqgnZ< zwx8TSCgaiz$2dMc@rYtf$ra5xp*W>JsU9-seP~L%Va~d4&K)x6p7x!sKez1pWoIjc zHTMVodCeo{meIVjBlS-;+$b(TSMjTgK;@D8cg=;j@QZ>WbHUk+vs=$S`22%s-NCxe z!9w9(v-g%U{kn1Hka6beuCra|dY|t-yCGQX3g&i>7`sLbOOLRLhmCok%>dEIW^qyR z*VRcw>ZB2M%BVW-y4pOXHjk*2Z<$F7wYnBBP34TKw>e47tQ-22>-rf(`WeCO`!3gC zTXtpH<;vi?=8+ahu+=%-(iUuP4`z0Z=v||^MF;ASFFU&Iy51VpTfZHX!Pnn@o=7jd z=J?y-2#(gwTO#3J*UJzlF3{BHNd~he&=|}~2mDeL;+LX}0Dpt4nF)|%kyMFxm?8qenp~OGKasSPF+&WUn!OW-cDee@PlP9^En4(9DS-2Qc(0Z zLsU;&KB%LHE-x6_jT@rJ5hJ-u0@io)hNWEE93SQa#l|>OFhbc>lW$H4k7+hdVDWVJ z#&Q~aO(y{lb@DL-eQKkTSXe=Ld83}B)0-P-kQuaQZz4_VjwG2BoEI+xzk^P!u{)8^ zhPo_IpGXhnDrwnSGyP?EW~@zu|Ap@dm`f1_R?^|_R1#0W=uV48llDq1@aL9wa$x-V zbbXJBrtR0sZECx$DHH2YKB~Exp6N-SGBMVwU-l%DVj8na_dllZ+GHh-^odQm>W06B zYk%PUn@x8>aZRj^J{Sw|qfT|+K{OgFJ)(E2jLXq8G4`jc6PM`no zf>k9(OqH0oIy$=BeZueY!yEWvgln6teZU7{@g_E7ItL&DaXEY*N59bRh6o*!izH!k z#ptHIC`vdhf;Y=@LxwIFUF?}_>_L~c6Toh6OvA+|>{E?NOCw$AyOvwORC0PV^IYhv zf~jjqwCkpOuC$;w?Up*8>ifs4zcO&K^<=D$Fi$XU{WsL$6%Y@m)D7A$n}!$KgLSKe ztDV85wh?tZxG=3L7?JqRUsn)Xv-wAg-^DEY_VcBLzPEX<-v@#}yui3LntMH|65vIX zY)K`5(K4@IFCR?Q0X~>tlUbi2eM2vW#v8_YFz8Ki29^Aq3CbnqiZ|02sF#!}t`sPM zbfruNq$}k-;+4v!YQ@zE1$=NdT6v$0znYMGAIJZOlL0=S$kV#3hQOfUlILQP6;f{T z^!l7#E=S*%E@*RH_5NyBd4-hi1A^dk`y72v;X!JD;1&5+=oWSc;M(_R$?XEJk*k({o(x`~eN@$c9Yv#*U99 zsZ7z219@6Cf{6*L!R@aJ^*?M3e7DO?By&|Xb$6Wvs*dLyFlkW6bt%Ef(Gu7L1x6Yc z7Qt~403M?eTo(nJIY)ZGHM$x4d-;-H_RTcPVw~9EI0hhb$(^W{@iC`B1t4cJ{ z3897m{hLrE-avtg^z~E!o=krOFkxmKgIxC@m^3yXE7=gznANgqKXD%6y=GowLWGcf z(^jX@BxDUISobZx zWt=f;nlT!mgfKPhRN~3RU~c7bYSn03_NkncIl;W@;k24jWAbt3QRRub5KpJ!$r;Cc zj`o~R8BU%%{p&dM;hraYPQ(w#S#Kn!B_Gc{miuJ>XYuL;&AugLW-!714L@o)GIvBh z1A;NVIh;gg4`<9Vf`of&m9fIbv9^T2SRw;l*bklUxOw464G6YxzeIOE zoIo$Weo*3^P4j-(AhGk|6m(9P)GnD%Ajq(%18Nt@hGkf{7DL=<##)9wcA(jbO>UDy zuFOH+jq&N>K?D7_&$8vVh`Et&Ij#Ov9G$y6itzM=lBpzJzgI=KT+*8&?J|g#N>&c5 zie-~}I4Oy|OA6|nMz8HP(X|eJWcVH~3#;8o4O7-=n`Tvl8{~rAjyY&F z8PV%U^m^KzzHX0Oj0BI+*Y>56_vjx1zCdL^TJLXIWYym@a)?2rvs>``#%n@k%GfjY z%f%)p?2{TQNFfyvHIxOH>G^0_Lz!@RI;fPDTuAHM*6sD-P0hILXW=fSa=W%pP`<}m zT%ZX*F80^Lte~iIGa?hhdO9ZOEIHRx3Wib&UQi6D%(L{&*8iXU@28sy>}~cInxQU{>|MWw#PjM-8cHCdRbUg#6KX(`dY9G&${f z-_gGD*NvnZ$6JoIJh|aBozkS)ci)&Xtmx$<>MWLZj%T0{l)`am&P(Q(H0Rqd=Ug@i z?Vey#|A;}od1{6_s*C^nR}Y#x)hQ#Bcuo*_f8m zNA@SN_qqM??EQ!Fx9Wh{E**b64*ZOiQvQiNGMg4X;RKvA`~t(%4k2uVo%2@;bL`zvDg2vV?VL6C|d z4M92r1A;gN@d%6v5)qgXm}%0H6!{9|@C99Pq?{zsT}RxchW_V~V)80YJ=)}Fa@>nc z!d3sAOz`xn0`j%T;G?n3V*_03_}wx#?J|#V4G#76I&>5 z#2W0#z$qtP(^{mhL+}s+7EtdXb{@fN2v|zOJe32RtpGxDXMev7?h2Ws!yG$&cUwQ1 z!74GaMaR|d6?0hi_?<1%y&)-HYl%tEcgRxZV!4u|!|8Jhm*|Vf@)Ma;!yTBC&msz! zeRqyk%d5bgye|dno=hYO$IFkEpV)fJf71Vw^tGs$qt5%@+<9T=u*n|qK6OCqZ{oQ@ zT}^RgrQ{8{1R8HdBp{y3@btQPXk4wVk;3b@a`t*lGanjns}{_H(ZNb(6DJ#r$X{75 z8!D3lWvE;Rly^8D@OOBnt%83iswTrWn;$MB&={UA12`F61A9(dNhVe}R>E#3&hS%i zIx!>hqH7SBHuQf=$ZrGkpKTyI6A*O{aBZC2of zq^vSIi0$17&@Bnzq`-<0C=h&#;0FlSBe;N|2*eXGatm_-gbWS`Q;2p4z4~-i@;MxW zD-f^YyoaBlSFcBPkmN#83@)T(eO!XmessCCsH8e_SOOGRamOMmkbb1|lVI}4s??DGt7f|y0TpbRlPk4(y z^1||2D}X#+=t_k)WP>3|=s6Q~1;JeB`zjeiA0aV}PfM)^EGXRpKS zYWKK1yh0=Pvehy3MkBkYn_6x;7`N-LI#~1} zxX0q{n_9Gt7GM}swL|sq8qdflJd5yW9DEZ%NHd-hG1Y<}fArYH3Su+cB<4XduLaYZ zc))!)U#ue$fq#BcBG1B!1W4zh7z@eRCW*lU)5VYiRMy?m_JFXBUV9~H0V^A@LmX0# zmA zScu*Mey9_Re$hKJF(%hHy-J~Pyjnq;1N^Ud^JO-i2o)hDYwvYA1z{Bu)*x7oU{V3@ zhh|v0>B|?&$RRp*;g}pJ7d8bByxuKU<5E_M%Xo{*-aI7!{u6u8+?Z*M8mB--7j=Mn z8RlCi#1iFUL4*aEiPbaj6wZf5A&?JK0e0|_KBuMMjRETvULNvU_0o~^(ke3{H7AEi6te)Umg%=dY_LaH85n-{NiFqAS?MXx(m zPtOl6B_jdVJ9+X19_DFacSEbrNX5)yKTdsvt{kn%m^@P!!ZDf%A0c2%>%@U;>GPvm zsjWzyzS-e@X6z2oZ$=A@Y-LQMyOgW?y?KNW?0D}ZskslBTKTDxAZxt50uSW>zpZUd zCZ_95*_cdB93~@OvCTJW0Q(8xns4TmXW6d+doZ}5jTD6^ZQ93{p#~N zIqErRLd_ROIa7+qsN;(xenw?G$9D5E7-WqRRe(+VG%o2l0wZ*V6c8evKA#}4^n}GK zCYS@6w<2JhIjLKpAPs%1m{*VM(Jo|&2b~d8cf#+G8^Zx(5NO^h8U;=G@$vkZ2KwBW zndIfbyI)=)%h;B&h`A2=uq|UM%}#DD(pDg_1F(`+LOH%6*+MBQuwy=gN(5E(KfbOK z6R>J*vt){8U2Gk#_zBCXwqoxN1n3h4=4BqkCd*EaBK8ylwpGlG*v>tRv;_#x;b*fE zn}Zljdk}oYbAglJY$9sb$H 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()