diff --git a/app/Http/Controllers/AdminController.php b/app/Http/Controllers/AdminController.php index 384ca2d..d8883a9 100644 --- a/app/Http/Controllers/AdminController.php +++ b/app/Http/Controllers/AdminController.php @@ -3,6 +3,10 @@ namespace App\Http\Controllers; use App\Models\PengajuanDpuDpa; +use App\Models\PengajuanRevisiPublikasi; +use App\Models\PengajuanSempro; +use App\Models\PengajuanSidangAkhir; +use App\Models\PengajuanWisuda; use Illuminate\Http\Request; @@ -11,7 +15,18 @@ class AdminController extends Controller public function index(){ $layanan_dpudpa = PengajuanDpuDpa::count(); - return view('admin.index',['title'=> 'Admin Dashboard', 'layanan_dpudpa'=>$layanan_dpudpa]); + $layanan_sempro = PengajuanSempro::count(); + $layanan_sidangakhir = PengajuanSidangAkhir::count(); + $layanan_revisipublikasi = PengajuanRevisiPublikasi::count(); + $layanan_wisuda = PengajuanWisuda::count(); + return view('admin.index',[ + 'title'=> 'Admin Dashboard', + 'layanan_dpudpa'=>$layanan_dpudpa, + 'layanan_sempro'=>$layanan_sempro, + 'layanan_sidangakhir'=>$layanan_sidangakhir, + 'layanan_revisipublikasi'=>$layanan_revisipublikasi, + 'layanan_wisuda'=>$layanan_wisuda, + ]); } diff --git a/app/Http/Controllers/LayananPengajuanDpuDpaController.php b/app/Http/Controllers/LayananPengajuanDpuDpaController.php index 626402e..f7029ed 100644 --- a/app/Http/Controllers/LayananPengajuanDpuDpaController.php +++ b/app/Http/Controllers/LayananPengajuanDpuDpaController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers; +use App\Jobs\kirimNotifikasiErrorJob; use App\Jobs\layananPengajuanDpuDpaJob; use App\Models\Bagian; @@ -11,12 +12,13 @@ use Barryvdh\DomPDF\Facade\Pdf; use Carbon\Carbon; - +use Exception; use Illuminate\Http\Request; use Illuminate\Support\Facades\Storage; use SimpleSoftwareIO\QrCode\Facades\QrCode; use Spatie\Permission\Models\Role; +use Ixudra\Curl\Facades\Curl; class LayananPengajuanDpuDpaController extends Controller { @@ -154,7 +156,9 @@ public function destroy(Request $request){ ->first(); $data_job = [ 'jenis' => 'penolakan', - 'nama' => $data->nama, + 'judul_seminar_proposal' => $data->judul_seminar_proposal, + 'nama_mahasiswa' => $data->nama, + 'nim_mahasiswa' => $data->nim, 'email' => $data->email, 'created_at' => $data->created_at, 'alasan' => $request->alasan, @@ -162,10 +166,10 @@ public function destroy(Request $request){ $path = $data->nim."/".$data->bukti_transkrip_nilai; //hapus file yang diupload mahasiswa if(Storage::disk('public')->exists($path)){ - Storage::disk('public')->delete($path); //hapus data pengajuan mahasiswa - return redirect()->route('layanan-dpudpa.index')->with('error','Gagal Hapus Data, File Mahasiswa Yang akan dihapus tidak ditemukan'); + Storage::disk('public')->delete($path); } + $dataDelete = PengajuanDpuDpa::findOrFail($id); //kirim notifikasi jika data berhasil dihapus @@ -302,6 +306,12 @@ public function submitettd($url, $caseid, Request $request){ //done public function cetak($caseid){ $get_data = PengajuanDpuDpa::where('caseid',$caseid)->first(); + + //jika data kosong maka render ini + if(is_null($get_data)){ + return redirect()->route('monitoring.caseid',['caseid'=>$caseid])->with('error','Data Dengan CASEID Tersebut Tidak ada'); + } + //jika kombi belum ttd, maka render ini if($get_data->ttd_kombi=='-'){ return redirect()->route('monitoring.caseid',['caseid'=>$caseid])->with('error','Data Belum Di TandaTangani Oleh Dosen Kombi, File Bisa didownload ketika Dosen Kombi sudah tanda tangan!'); } @@ -328,7 +338,7 @@ public function cetak($caseid){ $data = [ 'title' => 'Cetak Kesediaan', // 'date' => Carbon::now()->format('d-m-Y'), - 'date' => $data_dpu_dpa->created_at->format('d-m-Y'), + 'date' => $data_dpu_dpa->updated_at->format('d-m-Y'), 'nama_mahasiswa' => $data_dpu_dpa->nama, 'nim' => $data_dpu_dpa->nim, 'bagian' => $data_dpu_dpa->nama_bagian, @@ -344,7 +354,24 @@ public function cetak($caseid){ 'dosen_kombi_qrcode' => base64_encode(QrCode::size(100)->generate($data_kombi[0]->nama_gelar.'_TTD_'.$data_dpu_dpa->ttd_kombi)), ]; $pdf = Pdf::loadView('layanan-dpudpa.cetak', $data); - return $pdf->setPaper('a4', 'potrait')->stream($caseid.'-Kesediaan Menjadi Dosen Pembimbing Tugas Akhir'); + return $pdf->setPaper('a4', 'potrait')->download($caseid.'-Kesediaan Menjadi Dosen Pembimbing Tugas Akhir.pdf'); +} + +public function resend($caseid,Request $request){ + try{ + $data = PengajuanDpuDpa::where('caseid',$caseid)->first(); + $data_job = [ + 'id' => $data->id, + 'jenis' => $request->jenis, + ]; + dispatch(new layananPengajuanDpuDpaJob($data_job)); + }catch(Exception $e){ + $text['error'] = $e->getMessage(); + dispatch(new kirimNotifikasiErrorJob($text)); + + return redirect()->route('layanan-dpudpa.index')->with('error','Error : '.$text['error']); + } + return redirect()->route('layanan-dpudpa.index')->with('success','Berhasil Kirim Ulang Email Kepada '.$request->jenis.' Dengan CaseID : '.$caseid); } //cek apakah DPU dan DPU sudah Tanda tangan, jika sudah maka akan mengirim notifikasi ke Kombi diff --git a/app/Http/Controllers/LayananPengajuanWisudaController.php b/app/Http/Controllers/LayananPengajuanWisudaController.php new file mode 100644 index 0000000..2387e3f --- /dev/null +++ b/app/Http/Controllers/LayananPengajuanWisudaController.php @@ -0,0 +1,829 @@ +join('mahasiswas','mahasiswas_id','=','mahasiswas.id') + ->join('users as dosen_dpu','mahasiswas.dosen_dpu_id','=','dosen_dpu.id') + ->join('users as dosen_dpa','mahasiswas.dosen_dpa_id','=','dosen_dpa.id') + ->join('users as dosen_penguji1','mahasiswas.dosen_penguji1_id','=','dosen_penguji1.id') + ->join('users as dosen_penguji2','mahasiswas.dosen_penguji2_id','=','dosen_penguji2.id') + ->get(); + + return view('layanan-wisuda.index',['title' => 'Pengajuan Syarat Wisuda | Admin Dashboard','data' => $data]); +} + +public function tambah(){ + $dosen = User::role('Dosen')->get(); + $bagian = Bagian::select('id','nama_bagian')->get(); + //cek apakah ada data mahasiswa dari hasil cari + $nim = session('mahasiswas_id'); + if($nim!=null){ + $data_mahasiswa = Mahasiswa::find($nim); + return view('layanan-wisuda.tambah',['dosen'=>$dosen, 'bagian'=>$bagian,'data_mahasiswa'=>$data_mahasiswa]); + } + return view('layanan-wisuda.tambah',['dosen'=>$dosen, 'bagian'=>$bagian]); +} + +public function store(Request $request){ + //cek validasi file dan input + $request->validate([ + 'nim'=>'required|numeric', + 'nama'=>'required', + 'nomor_hp'=>'required|numeric', + 'email'=>'required|email', + 'judul_skripsi_id'=>'required', + 'bagian'=>'required|numeric', + 'dosen_dpu'=>'required|numeric', + 'dosen_dpa'=>'required|numeric', + 'dosen_penguji1'=>'required|numeric', + 'dosen_penguji2'=>'required|numeric', + 'bukti_skripsi' => 'required|mimes:pdf|max:4096', + 'bukti_kkn' => 'required|mimes:pdf|max:4096', + 'bukti_spp' => 'required|mimes:pdf|max:4096', + 'bukti_toefl' => 'mimes:pdf|max:4096', + ],[ + 'nim.required'=>'NIP Wajib Diisi', + 'nim.numeric'=>'NIM Wajib Berisi Angka saja', + 'nomor_hp.numeric'=>'Nomor HP Wajib Menggunakan Angka, Contoh 089xxxxx', + 'email.email'=>'Format email tidak sesuai, cek lagi email anda, Contoh mahasiswa@gmail.com/ mahasiswa@mail.unej.ac.id', + 'bagian.numeric'=>'Bagian tidak valid, cek kembali Bagian yang dipilih', + 'dosen_dpu.numeric'=>'Dosen Pembimbing tidak valid, cek kembali Dosen Pembimbing Utama yang dipilih', + 'dosen_dpa.numeric'=>'Dosen Pembimbing tidak valid, cek kembali Dosen Pembimbing Anggota yang dipilih', + 'dosen_penguji1.numeric'=>'Dosen Penguji tidak valid, cek kembali Dosen Penguji Utama yang dipilih', + 'dosen_penguji2.numeric'=>'Dosen Penguji tidak valid, cek kembali Dosen Penguji Anggota yang dipilih', + ]); + //olah file + $bukti_skripsi = $request->file('bukti_skripsi'); + $bukti_kkn = $request->file('bukti_kkn'); + $bukti_spp = $request->file('bukti_spp'); + $bukti_toefl = $request->file('bukti_toefl'); + + + //beri nama tiap file + $bukti_skripsi_name= 'LY_1'.str_replace(' ', '_',$bukti_skripsi->getClientOriginalName()); + $bukti_kkn_name = 'LY_2'.str_replace(' ', '_',$bukti_kkn->getClientOriginalName()); + $bukti_spp_name = 'LY_3'.str_replace(' ', '_',$bukti_spp->getClientOriginalName()); + + + + //Cek Apakah Data Mahasiswa Tersebut sudah ada, jika ada maka diminta untuk menggunakan fitur cari + $mahasiswa = Mahasiswa::where('nim',$request->nim)->first(); + if(!is_null($mahasiswa) && $request->status!="ada"){ + return redirect()->route('layanan-wisuda.tambah')->with('error','Data Anda Sudah Ada, Gunakan Fitur Cari Menggunakan NIM :'.$request->nim); + } + + //kalo menggunakan fitur cari, akan menggunakan fungsi ini + elseif(!is_null($mahasiswa) && $request->status=="ada"){ + $mahasiswas_id = $mahasiswa->id; + $data_wisuda['mahasiswas_id'] = $mahasiswas_id; + $data_wisuda['bukti_skripsi'] = $bukti_skripsi_name; + $data_wisuda['bukti_kkn'] = $bukti_kkn_name; + $data_wisuda['bukti_spp'] = $bukti_spp_name; + if($bukti_toefl==null){ + $data_wisuda['bukti_toefl'] = '-'; + //save to db + PengajuanWisuda::create($data_wisuda); + }else{ + $bukti_toefl_name = 'LY_4'.str_replace(' ', '_',$bukti_toefl->getClientOriginalName()); + $data_wisuda['bukti_toefl'] = $bukti_toefl_name; + //save to db + PengajuanWisuda::create($data_wisuda); + Storage::disk('public')->put($request->nim.'/'.$bukti_toefl_name, file_get_contents($bukti_toefl)); + } + //edit data judul skripsi mahasiswa + $mahasiswa->judul_skripsi_id = $request->judul_skripsi_id; + //save to db + $mahasiswa->save(); + + Storage::disk('public')->put($request->nim.'/'.$bukti_skripsi_name, file_get_contents($bukti_skripsi)); + Storage::disk('public')->put($request->nim.'/'.$bukti_kkn_name, file_get_contents($bukti_kkn)); + Storage::disk('public')->put($request->nim.'/'.$bukti_spp_name, file_get_contents($bukti_spp)); + return redirect()->route('layanan-wisuda.tambah')->with('success','Sukses Tambah Data, Silahkan Menunggu Email Konfirmasi setelah disetujui Oleh Operator'); + } + + //Jika data baru maka akan menggunakan fitur ini + $data_mhs['nim'] = $request->nim; + $data_mhs['nama'] = $request->nama; + $data_mhs['nomor_hp'] = $request->nomor_hp; + $data_mhs['email'] = $request->email; + $data_mhs['judul_seminar_proposal'] = '-'; + $data_mhs['bagian'] = $request->bagian; + $data_mhs['dosen_dpu_id'] = $request->dosen_dpu; + $data_mhs['dosen_dpa_id'] = $request->dosen_dpa; + //set default to 0 + $data_mhs['dosen_penguji1_id'] = $request->dosen_penguji1; + $data_mhs['dosen_penguji2_id'] = $request->dosen_penguji2; + $data_mhs['judul_skripsi_id'] = $request->judul_skripsi_id; + $data_mhs['judul_skripsi_en'] = '-'; + $data_mhs['judul_jurnal'] = '-'; + $data_mhs['judul_artikel'] = '-'; + + //save data mahasiswa dan pengajuan + if(Mahasiswa::create($data_mhs)){ + $mahasiswas_id = Mahasiswa::where('nim',$request->nim)->first(); + $data_wisuda['mahasiswas_id'] = $mahasiswas_id->id; + $data_wisuda['bukti_skripsi'] = $bukti_skripsi_name; + $data_wisuda['bukti_kkn'] = $bukti_kkn_name; + $data_wisuda['bukti_spp'] = $bukti_spp_name; + + if($bukti_toefl==null){ + $data_wisuda['bukti_toefl'] = '-'; + //save to db + PengajuanWisuda::create($data_wisuda); + } + else{ + $bukti_toefl_name = 'LY_4'.str_replace(' ', '_',$bukti_toefl->getClientOriginalName()); + $data_wisuda['bukti_toefl'] = $bukti_toefl_name; + //save to db + PengajuanWisuda::create($data_wisuda); + Storage::disk('public')->put($request->nim.'/'.$bukti_toefl_name, file_get_contents($bukti_toefl)); + } + + + Storage::disk('public')->put($request->nim.'/'.$bukti_skripsi_name, file_get_contents($bukti_skripsi)); + Storage::disk('public')->put($request->nim.'/'.$bukti_kkn_name, file_get_contents($bukti_kkn)); + Storage::disk('public')->put($request->nim.'/'.$bukti_spp_name, file_get_contents($bukti_spp)); + + return redirect()->route('layanan-wisuda.tambah')->with('success','Sukses Tambah Data, Silahkan Menunggu Email Konfirmasi setelah disetujui Oleh Operator'); + } + return redirect()->route('layanan-wisuda.tambah')->with('error','Gagal Tambah data, Cek kembali data yang anda masukkan'); +} + +public function cari(){ + return view('layanan-wisuda.cari',['title'=>'Cari Data Mahasiswa Untuk Keperluan Pengajuan Publikasi / Revisi']); +} + +public function search(Request $request){ + $data = Mahasiswa::where('nim',$request->nim)->first(); + if($data==null){ + return redirect()->route('layanan-wisuda.tambah')->with('error','NIM Tidak Ditemukan, Gunakan Fitur Tambah'); + } + return redirect()->route('layanan-wisuda.tambah')->with('mahasiswas_id',$data->id); +} + +public function terima(Request $request){ + $id = $request->id; + $countcaseid = PengajuanWisuda::where('ttd_operator','!=','-')->count(); + $caseid = "LY".date_format(date_create(),"ym").$countcaseid+1; + + $cekData = PengajuanWisuda::where('caseid',$caseid)->first(); + $data = PengajuanWisuda::where('id',$id)->first(); + //cek apakah ada caseid yang sama sebelum disave + if(!is_null($cekData)){ + $data->updated_at = Carbon::now(); + $data->save(); + return redirect()->route('layanan-wisuda.index')->with('error','Gagal simpan Data, Cek kembali Detail Data yang akan diterima'); + } + + $data->caseid = $caseid; + $data->ttd_operator = Carbon::now(); + + if($data->save()){ + $data_job = [ + [ + 'jenis' => 'mahasiswa', + 'id' => $id, + ], + [ + 'jenis' => 'dpu', + 'id' => $id, + ], + [ + 'jenis' => 'dpa', + 'id' => $id, + ], + [ + 'jenis' => 'penguji1', + 'id' => $id, + ], + [ + 'jenis' => 'penguji2', + 'id' => $id, + ], + [ + 'jenis' => 'kalab', + 'id' => $id, + ], + [ + 'jenis' => 'perpustakaan', + 'id' => $id, + ], + [ + 'jenis' => 'skpi', + 'id' => $id, + ], + ]; + foreach($data_job as $item){ + dispatch(new layananPengajuanWisudaJob($item)); + } + return redirect()->route('layanan-wisuda.index')->with('success','Data Berhasil Disimpan, Email Akan Dikirimkan ke Mahasiswa, DPU, Penguji Utama dan Penguji Anggota '); + } +} + +public function destroy(Request $request){ + $id = $request->id; + //cari data dan kirim notif sebelum dihapus + $data = PengajuanWisuda::where('pengajuan_wisudas.id',$id) + ->join('mahasiswas','mahasiswas_id','=','mahasiswas.id') + ->first(); + //data yang akan dikirim untuk dihapus + $data_job = [ + 'jenis' => 'penolakan', + 'caseid' => $data->caseid, + 'nama_mahasiswa' => $data->nama, + 'nim_mahasiswa' => $data->nim, + 'judul_skripsi_id' => $data->judul_skripsi_id, + 'email' => $data->email, + 'created_at' => $data->created_at, + 'alasan' => $request->alasan, + ]; + + //delete data mahasiswa + try { + $dataDelete = PengajuanWisuda::findOrFail($id); + $dataDelete->delete(); + + $path = [ + $data->nim."/".$data->bukti_skripsi, + $data->nim."/".$data->bukti_spp, + $data->nim."/".$data->buktix_kkn, + $data->nim."/".$data->bukti_toefl, + ]; + foreach ($path as $item){ + //hapus file yang diupload mahasiswa + if(Storage::disk('public')->exists($item)){ + //hapus data pengajuan mahasiswa + Storage::disk('public')->delete($item); + } + } + //kirim notif ke mahasiswa bahwa ditolak + dispatch(new layananPengajuanWisudaJob($data_job)); + + }catch(Exception $e){ + //kirim notif error jika terjadi error + $text['error'] = $e->getMessage(); + dispatch(new kirimNotifikasiErrorJob($text)); + + return redirect()->route('layanan-wisuda.index')->with('error','Error : '.$text['error']); + } + return redirect()->route('layanan-wisuda.index')->with('success','Permintaan Sudah Diproses, Email akan segera dikirim ke penerima'); +} + +public function ettd($url, $caseid){ + $role_untuk_ettd = ['dpu','dpa','penguji1','penguji2','skpi','kalab','ruangbaca','wakildekan1']; + $data = PengajuanWisuda::where('caseid','=',$caseid) + ->select('pengajuan_wisudas.id', + 'pengajuan_wisudas.caseid', + 'pengajuan_wisudas.bukti_skripsi', + 'mahasiswas.nama', + 'mahasiswas.nim', + 'mahasiswas.judul_skripsi_id', + 'dosen_dpu.nama_gelar as dosen_dpu_nama_gelar', + 'dosen_dpa.nama_gelar as dosen_dpa_nama_gelar', + 'dosen_penguji1.nama_gelar as dosen_penguji1_nama_gelar', + 'dosen_penguji2.nama_gelar as dosen_penguji2_nama_gelar', + ) + ->join('mahasiswas','pengajuan_wisudas.mahasiswas_id','=','mahasiswas.id') + ->join('users as dosen_dpu','mahasiswas.dosen_dpu_id','=','dosen_dpu.id') + ->join('users as dosen_dpa','mahasiswas.dosen_dpa_id','=','dosen_dpa.id') + ->join('users as dosen_penguji1','mahasiswas.dosen_penguji1_id','=','dosen_penguji1.id') + ->join('users as dosen_penguji2','mahasiswas.dosen_penguji2_id','=','dosen_penguji2.id') + ->first(); + if(in_array($url, $role_untuk_ettd) && !is_null($data)){ + //jika URL DPU maka render ini + if($url=='dpu'){ + $jenis = 'Dosen Pembimbing Utama'; + return view('layanan-wisuda.ettd',['title'=> 'INPUT E-Signature','jenis'=>$jenis,'data'=> $data]); + } + //jika URL DPA maka render ini + elseif($url=='dpa'){ + $jenis = 'Dosen Pembimbing Anggota'; + return view('layanan-wisuda.ettd',['title'=> 'INPUT E-Signature','jenis'=>$jenis,'data'=> $data]); + } + //jika URL Penguji1 maka render ini + elseif($url=='penguji1'){ + $jenis = 'Dosen Penguji Utama'; + return view('layanan-wisuda.ettd',['title'=> 'INPUT E-Signature','jenis'=>$jenis,'data'=> $data]); + } + //jika URL Penguji2 maka render ini + elseif($url=='penguji2'){ + $jenis = 'Dosen Penguji Anggota'; + return view('layanan-wisuda.ettd',['title'=> 'INPUT E-Signature','jenis'=>$jenis,'data'=> $data]); + } + //jika URL Kalab maka render ini + elseif($url=='kalab'){ + $jenis = 'Kepala Laboratorium'; + return view('layanan-wisuda.ettd',['title'=> 'INPUT E-Signature','jenis'=>$jenis,'data'=> $data]); + } + //jika URL skpi maka render ini + elseif($url=='skpi'){ + $jenis = 'Pj. SKPI'; + $nama_ettd = User::role('Pj. SKPI')->get(); + return view('layanan-wisuda.ettd',['title'=> 'INPUT E-Signature','jenis'=>$jenis,'data'=> $data,'nama_ettd'=>$nama_ettd]); + } + //jika URL ruangbaca maka render ini + elseif($url=='ruangbaca'){ + $jenis = 'Pj. perpustakaan'; + $nama_ettd = User::role('Pj. Perpustakaan')->first(); + return view('layanan-wisuda.ettd',['title'=> 'INPUT E-Signature','jenis'=>$jenis,'data'=> $data,'nama_ettd'=>$nama_ettd]); + } + //jika URL Kombi maka render ini + elseif($url=='wakildekan1'){ + $jenis = 'Wakil Dekan 1'; + $nama_ettd = User::role('Wakil Dekan 1')->first(); + return view('layanan-wisuda.ettd',['title'=> 'INPUT E-Signature','jenis'=>$jenis,'data'=> $data,'nama_ettd'=>$nama_ettd]); + } + } + //jika URL tidak diantara ketika itu maka render ini + return redirect()->route('laman-awal')->with(['error'=>'URL Tidak Ditemukan']); +} + +public function submitettd($url, $caseid, Request $request){ + $role_untuk_ettd = ['dpu','dpa','penguji1','penguji2','skpi','kalab','ruangbaca','wakildekan1']; + $data = PengajuanWisuda::where('caseid','=',$caseid)->first(); + if(in_array($url, $role_untuk_ettd) && !is_null($data)){ + //jika URL DPU maka render ini + if($url=='dpu'){ + //jika sudah pernah ETTD Akan Dikembalikan Ke laman TTD Dengan error + if($data->ttd_dpu!='-'){ + return redirect()->route('layanan-wisuda.ettd',['url'=>$url, 'caseid'=>$caseid])->with(['error'=>'CaseID Ini Sudah Pernah Anda Tandatangani Pada '.$data->ttd_dpu]); + } + //ambil data ETTD sesuai url + $ttd = Mahasiswa::where('nim',$request->nim)->join('users as dosen_dpu','mahasiswas.dosen_dpu_id','=','dosen_dpu.id')->first(); + //jika Belum Pernah maka TTD akan diproses + if($ttd->ettd==$request->ettd){ + $data->ttd_dpu = Carbon::now(); + $data->save(); + $this->cekettd($caseid); + return redirect()->route('monitoring.caseid',['caseid'=>$caseid])->with(['success'=>'Terimakasih Telah Melakukan Tanda Tangan Pada CaseID '.$caseid]); + } + //jika ETTD Tidak sesuai Akan Dikembalikan Ke laman TTD Dengan error + else{ + return redirect()->route('layanan-wisuda.ettd',['url'=>$url, 'caseid'=>$caseid])->with(['error'=>'E-TTD Tidak Sesuai, Cek Kembali ETTD Anda']); + } + } + if($url=='dpa'){ + //jika sudah pernah ETTD Akan Dikembalikan Ke laman TTD Dengan error + if($data->ttd_dpa!='-'){ + return redirect()->route('layanan-wisuda.ettd',['url'=>$url, 'caseid'=>$caseid])->with(['error'=>'CaseID Ini Sudah Pernah Anda Tandatangani Pada '.$data->ttd_dpa]); + } + //ambil data ETTD sesuai url + $ttd = Mahasiswa::where('nim',$request->nim)->join('users as dosen_dpa','mahasiswas.dosen_dpa_id','=','dosen_dpa.id')->first(); + //jika Belum Pernah maka TTD akan diproses + if($ttd->ettd==$request->ettd){ + $data->ttd_dpa = Carbon::now(); + $data->save(); + $this->cekettd($caseid); + return redirect()->route('monitoring.caseid',['caseid'=>$caseid])->with(['success'=>'Terimakasih Telah Melakukan Tanda Tangan Pada CaseID '.$caseid]); + } + //jika ETTD Tidak sesuai Akan Dikembalikan Ke laman TTD Dengan error + else{ + return redirect()->route('layanan-wisuda.ettd',['url'=>$url, 'caseid'=>$caseid])->with(['error'=>'E-TTD Tidak Sesuai, Cek Kembali ETTD Anda']); + } + } + if($url=='penguji1'){ + //jika sudah pernah ETTD Akan Dikembalikan Ke laman TTD Dengan error + if($data->ttd_penguji1!='-'){ + return redirect()->route('layanan-wisuda.ettd',['url'=>$url, 'caseid'=>$caseid])->with(['error'=>'CaseID Ini Sudah Pernah Anda Tandatangani Pada '.$data->ttd_penguji1]); + } + //ambil data ETTD sesuai url + $ttd = Mahasiswa::where('nim',$request->nim)->join('users as dosen_penguji1','mahasiswas.dosen_penguji1_id','=','dosen_penguji1.id')->first(); + //jika Belum Pernah maka TTD akan diproses + if($ttd->ettd==$request->ettd){ + $data->ttd_penguji1 = Carbon::now(); + $data->save(); + $this->cekettd($caseid); + return redirect()->route('monitoring.caseid',['caseid'=>$caseid])->with(['success'=>'Terimakasih Telah Melakukan Tanda Tangan Pada CaseID '.$caseid]); + } + //jika ETTD Tidak sesuai Akan Dikembalikan Ke laman TTD Dengan error + else{ + return redirect()->route('layanan-wisuda.ettd',['url'=>$url, 'caseid'=>$caseid])->with(['error'=>'E-TTD Tidak Sesuai, Cek Kembali ETTD Anda']); + } + } + if($url=='penguji2'){ + //jika sudah pernah ETTD Akan Dikembalikan Ke laman TTD Dengan error + if($data->ttd_penguji2!='-'){ + return redirect()->route('layanan-wisuda.ettd',['url'=>$url, 'caseid'=>$caseid])->with(['error'=>'CaseID Ini Sudah Pernah Anda Tandatangani Pada '.$data->ttd_penguji2]); + } + //ambil data ETTD sesuai url + $ttd = Mahasiswa::where('nim',$request->nim)->join('users as dosen_penguji2','mahasiswas.dosen_penguji2_id','=','dosen_penguji2.id')->first(); + //jika Belum Pernah maka TTD akan diproses + if($ttd->ettd==$request->ettd){ + $data->ttd_penguji2 = Carbon::now(); + $data->save(); + $this->cekettd($caseid); + return redirect()->route('monitoring.caseid',['caseid'=>$caseid])->with(['success'=>'Terimakasih Telah Melakukan Tanda Tangan Pada CaseID '.$caseid]); + } + //jika ETTD Tidak sesuai Akan Dikembalikan Ke laman TTD Dengan error + else{ + return redirect()->route('layanan-wisuda.ettd',['url'=>$url, 'caseid'=>$caseid])->with(['error'=>'E-TTD Tidak Sesuai, Cek Kembali ETTD Anda']); + } + } + if($url=='kalab'){ + if($request->user_ettd=='Kalab. Farmasi Klinik dan Komunitas'){ + //jika sudah pernah ETTD Akan Dikembalikan Ke laman TTD Dengan error + if($data->ttd_kalab_farmasi_klinik_dan_komunitas!='-'){ + return redirect()->route('layanan-wisuda.ettd',['url'=>$url, 'caseid'=>$caseid])->with(['error'=>'CaseID Ini Sudah Pernah Anda Tandatangani Pada '.$data->ttd_kalab_farmasi_klinik_dan_komunitas]); + } + //ambil data ETTD sesuai url + $ttd = User::role($request->user_ettd)->first(); + //jika Belum Pernah maka TTD akan diproses + if($ttd->ettd==$request->ettd){ + $data->ttd_kalab_farmasi_klinik_dan_komunitas = Carbon::now(); + $data->save(); + $this->cekettd($caseid); + return redirect()->route('monitoring.caseid',['caseid'=>$caseid])->with(['success'=>'Terimakasih Telah Melakukan Tanda Tangan Pada CaseID '.$caseid]); + } + //jika ETTD Tidak sesuai Akan Dikembalikan Ke laman TTD Dengan error + else{ + return redirect()->route('layanan-wisuda.ettd',['url'=>$url, 'caseid'=>$caseid])->with(['error'=>'E-TTD Tidak Sesuai, Cek Kembali ETTD Anda']); + } + } + elseif($request->user_ettd=='Kalab. Farmakologi dan Hewan Coba'){ + //jika sudah pernah ETTD Akan Dikembalikan Ke laman TTD Dengan error + if($data->ttd_kalab_farmakologi_dan_hewan_coba!='-'){ + return redirect()->route('layanan-wisuda.ettd',['url'=>$url, 'caseid'=>$caseid])->with(['error'=>'CaseID Ini Sudah Pernah Anda Tandatangani Pada '.$data->ttd_kalab_farmakologi_dan_hewan_coba]); + } + //ambil data ETTD sesuai url + $ttd = User::role($request->user_ettd)->first(); + //jika Belum Pernah maka TTD akan diproses + if($ttd->ettd==$request->ettd){ + $data->ttd_kalab_farmakologi_dan_hewan_coba = Carbon::now(); + $data->save(); + $this->cekettd($caseid); + return redirect()->route('monitoring.caseid',['caseid'=>$caseid])->with(['success'=>'Terimakasih Telah Melakukan Tanda Tangan Pada CaseID '.$caseid]); + } + //jika ETTD Tidak sesuai Akan Dikembalikan Ke laman TTD Dengan error + else{ + return redirect()->route('layanan-wisuda.ettd',['url'=>$url, 'caseid'=>$caseid])->with(['error'=>'E-TTD Tidak Sesuai, Cek Kembali ETTD Anda']); + } + } + elseif($request->user_ettd=='Kalab. Farmakognosi dan Fitokimia'){ + //jika sudah pernah ETTD Akan Dikembalikan Ke laman TTD Dengan error + if($data->ttd_kalab_farmakognosi_dan_fitokimia!='-'){ + return redirect()->route('layanan-wisuda.ettd',['url'=>$url, 'caseid'=>$caseid])->with(['error'=>'CaseID Ini Sudah Pernah Anda Tandatangani Pada '.$data->ttd_kalab_farmakognosi_dan_fitokimia]); + } + //ambil data ETTD sesuai url + $ttd = User::role($request->user_ettd)->first(); + //jika Belum Pernah maka TTD akan diproses + if($ttd->ettd==$request->ettd){ + $data->ttd_kalab_farmakognosi_dan_fitokimia = Carbon::now(); + $data->save(); + $this->cekettd($caseid); + return redirect()->route('monitoring.caseid',['caseid'=>$caseid])->with(['success'=>'Terimakasih Telah Melakukan Tanda Tangan Pada CaseID '.$caseid]); + } + //jika ETTD Tidak sesuai Akan Dikembalikan Ke laman TTD Dengan error + else{ + return redirect()->route('layanan-wisuda.ettd',['url'=>$url, 'caseid'=>$caseid])->with(['error'=>'E-TTD Tidak Sesuai, Cek Kembali ETTD Anda']); + } + } + elseif($request->user_ettd=='Kalab. Mikrobiologi dan Bioteknologi Farmasi'){ + //jika sudah pernah ETTD Akan Dikembalikan Ke laman TTD Dengan error + if($data->ttd_kalab_mikrobiologi_dan_bioteknologi_farmasi!='-'){ + return redirect()->route('layanan-wisuda.ettd',['url'=>$url, 'caseid'=>$caseid])->with(['error'=>'CaseID Ini Sudah Pernah Anda Tandatangani Pada '.$data->ttd_kalab_mikrobiologi_dan_bioteknologi_farmasi]); + } + //ambil data ETTD sesuai url + $ttd = User::role($request->user_ettd)->first(); + //jika Belum Pernah maka TTD akan diproses + if($ttd->ettd==$request->ettd){ + $data->ttd_kalab_mikrobiologi_dan_bioteknologi_farmasi = Carbon::now(); + $data->save(); + $this->cekettd($caseid); + return redirect()->route('monitoring.caseid',['caseid'=>$caseid])->with(['success'=>'Terimakasih Telah Melakukan Tanda Tangan Pada CaseID '.$caseid]); + } + //jika ETTD Tidak sesuai Akan Dikembalikan Ke laman TTD Dengan error + else{ + return redirect()->route('layanan-wisuda.ettd',['url'=>$url, 'caseid'=>$caseid])->with(['error'=>'E-TTD Tidak Sesuai, Cek Kembali ETTD Anda']); + } + } + elseif($request->user_ettd=='Kalab. Farmasetika'){ + //jika sudah pernah ETTD Akan Dikembalikan Ke laman TTD Dengan error + if($data->ttd_kalab_farmasetika!='-'){ + return redirect()->route('layanan-wisuda.ettd',['url'=>$url, 'caseid'=>$caseid])->with(['error'=>'CaseID Ini Sudah Pernah Anda Tandatangani Pada '.$data->ttd_kalab_farmasetika]); + } + //ambil data ETTD sesuai url + $ttd = User::role($request->user_ettd)->first(); + //jika Belum Pernah maka TTD akan diproses + if($ttd->ettd==$request->ettd){ + $data->ttd_kalab_farmasetika = Carbon::now(); + $data->save(); + $this->cekettd($caseid); + return redirect()->route('monitoring.caseid',['caseid'=>$caseid])->with(['success'=>'Terimakasih Telah Melakukan Tanda Tangan Pada CaseID '.$caseid]); + } + //jika ETTD Tidak sesuai Akan Dikembalikan Ke laman TTD Dengan error + else{ + return redirect()->route('layanan-wisuda.ettd',['url'=>$url, 'caseid'=>$caseid])->with(['error'=>'E-TTD Tidak Sesuai, Cek Kembali ETTD Anda']); + } + } + elseif($request->user_ettd=='Kalab. Teknologi Farmasi'){ + //jika sudah pernah ETTD Akan Dikembalikan Ke laman TTD Dengan error + if($data->ttd_kalab_teknologi_farmasi!='-'){ + return redirect()->route('layanan-wisuda.ettd',['url'=>$url, 'caseid'=>$caseid])->with(['error'=>'CaseID Ini Sudah Pernah Anda Tandatangani Pada '.$data->ttd_kalab_teknologi_farmasi]); + } + //ambil data ETTD sesuai url + $ttd = User::role($request->user_ettd)->first(); + //jika Belum Pernah maka TTD akan diproses + if($ttd->ettd==$request->ettd){ + $data->ttd_kalab_teknologi_farmasi = Carbon::now(); + $data->save(); + $this->cekettd($caseid); + return redirect()->route('monitoring.caseid',['caseid'=>$caseid])->with(['success'=>'Terimakasih Telah Melakukan Tanda Tangan Pada CaseID '.$caseid]); + } + //jika ETTD Tidak sesuai Akan Dikembalikan Ke laman TTD Dengan error + else{ + return redirect()->route('layanan-wisuda.ettd',['url'=>$url, 'caseid'=>$caseid])->with(['error'=>'E-TTD Tidak Sesuai, Cek Kembali ETTD Anda']); + } + } + elseif($request->user_ettd=='Kalab. Kimia Analisis'){ + //jika sudah pernah ETTD Akan Dikembalikan Ke laman TTD Dengan error + if($data->ttd_kalab_kimia_analisis!='-'){ + return redirect()->route('layanan-wisuda.ettd',['url'=>$url, 'caseid'=>$caseid])->with(['error'=>'CaseID Ini Sudah Pernah Anda Tandatangani Pada '.$data->ttd_kalab_kimia_analisis]); + } + //ambil data ETTD sesuai url + $ttd = User::role($request->user_ettd)->first(); + //jika Belum Pernah maka TTD akan diproses + if($ttd->ettd==$request->ettd){ + $data->ttd_kalab_kimia_analisis = Carbon::now(); + $data->save(); + $this->cekettd($caseid); + return redirect()->route('monitoring.caseid',['caseid'=>$caseid])->with(['success'=>'Terimakasih Telah Melakukan Tanda Tangan Pada CaseID '.$caseid]); + } + //jika ETTD Tidak sesuai Akan Dikembalikan Ke laman TTD Dengan error + else{ + return redirect()->route('layanan-wisuda.ettd',['url'=>$url, 'caseid'=>$caseid])->with(['error'=>'E-TTD Tidak Sesuai, Cek Kembali ETTD Anda']); + } + } + elseif($request->user_ettd=='Kalab. Kimia Medisinal'){ + //jika sudah pernah ETTD Akan Dikembalikan Ke laman TTD Dengan error + if($data->ttd_kalab_kimia_medisinal!='-'){ + return redirect()->route('layanan-wisuda.ettd',['url'=>$url, 'caseid'=>$caseid])->with(['error'=>'CaseID Ini Sudah Pernah Anda Tandatangani Pada '.$data->ttd_kalab_kimia_medisinal]); + } + //ambil data ETTD sesuai url + $ttd = User::role($request->user_ettd)->first(); + //jika Belum Pernah maka TTD akan diproses + if($ttd->ettd==$request->ettd){ + $data->ttd_kalab_kimia_medisinal = Carbon::now(); + $data->save(); + $this->cekettd($caseid); + return redirect()->route('monitoring.caseid',['caseid'=>$caseid])->with(['success'=>'Terimakasih Telah Melakukan Tanda Tangan Pada CaseID '.$caseid]); + } + //jika ETTD Tidak sesuai Akan Dikembalikan Ke laman TTD Dengan error + else{ + return redirect()->route('layanan-wisuda.ettd',['url'=>$url, 'caseid'=>$caseid])->with(['error'=>'E-TTD Tidak Sesuai, Cek Kembali ETTD Anda']); + } + } + } + if($url=='skpi'){ + //jika sudah pernah ETTD Akan Dikembalikan Ke laman TTD Dengan error + if($data->ttd_skpi!='-'){ + return redirect()->route('layanan-wisuda.ettd',['url'=>$url, 'caseid'=>$caseid])->with(['error'=>'CaseID Ini Sudah Pernah Anda Tandatangani Pada '.$data->ttd_skpi]); + } + //ambil data ETTD sesuai url + $ttd = User::where('id',$request->user_ettd)->role('Pj. SKPI')->first(); + //jika Belum Pernah maka TTD akan diproses + if($ttd->ettd==$request->ettd){ + $data->ttd_skpi = $ttd->nip.'_TTD_'.Carbon::now(); + $data->save(); + $this->cekettd($caseid); + return redirect()->route('monitoring.caseid',['caseid'=>$caseid])->with(['success'=>'Terimakasih Telah Melakukan Tanda Tangan Pada CaseID '.$caseid]); + } + //jika ETTD Tidak sesuai Akan Dikembalikan Ke laman TTD Dengan error + else{ + return redirect()->route('layanan-wisuda.ettd',['url'=>$url, 'caseid'=>$caseid])->with(['error'=>'E-TTD Tidak Sesuai, Cek Kembali ETTD Anda']); + } + } + if($url=='ruangbaca'){ + //jika sudah pernah ETTD Akan Dikembalikan Ke laman TTD Dengan error + if($data->ttd_ruang_baca!='-'){ + return redirect()->route('layanan-wisuda.ettd',['url'=>$url, 'caseid'=>$caseid])->with(['error'=>'CaseID Ini Sudah Pernah Anda Tandatangani Pada '.$data->ttd_ruang_baca]); + } + //ambil data ETTD sesuai url + $ttd = User::role('Pj. Perpustakaan')->first(); + //jika Belum Pernah maka TTD akan diproses + if($ttd->ettd==$request->ettd){ + $data->ttd_ruang_baca = Carbon::now(); + $data->save(); + $this->cekettd($caseid); + return redirect()->route('monitoring.caseid',['caseid'=>$caseid])->with(['success'=>'Terimakasih Telah Melakukan Tanda Tangan Pada CaseID '.$caseid]); + } + //jika ETTD Tidak sesuai Akan Dikembalikan Ke laman TTD Dengan error + else{ + return redirect()->route('layanan-wisuda.ettd',['url'=>$url, 'caseid'=>$caseid])->with(['error'=>'E-TTD Tidak Sesuai, Cek Kembali ETTD Anda']); + } + } + if($url=='wakildekan1'){ + //jika sudah pernah ETTD Akan Dikembalikan Ke laman TTD Dengan error + if($data->ttd_wakil_dekan_1!='-'){ + return redirect()->route('layanan-wisuda.ettd',['url'=>$url, 'caseid'=>$caseid])->with(['error'=>'CaseID Ini Sudah Pernah Anda Tandatangani Pada '.$data->ttd_wakil_dekan_1]); + } + //ambil data ETTD sesuai url + $ttd = User::role('Wakil Dekan 1')->first(); + //jika Belum Pernah maka TTD akan diproses + if($ttd->ettd==$request->ettd){ + $data->ttd_wakil_dekan_1 = Carbon::now(); + $data->save(); + $job = [ + 'jenis' => 'mahasiswa selesai', + 'id' => $data->id, + ]; + dispatch(new layananPengajuanWisudaJob($job)); + return redirect()->route('monitoring.caseid',['caseid'=>$caseid])->with(['success'=>'Terimakasih Telah Melakukan Tanda Tangan Pada CaseID '.$caseid]); + } + //jika ETTD Tidak sesuai Akan Dikembalikan Ke laman TTD Dengan error + else{ + return redirect()->route('layanan-wisuda.ettd',['url'=>$url, 'caseid'=>$caseid])->with(['error'=>'E-TTD Tidak Sesuai, Cek Kembali ETTD Anda']); + } + } + } +} + +public function resend(){ + $role_untuk_ettd = ['dpu','dpa','penguji1','penguji2','skpi','kalab','ruangbaca','wakildekan1']; + $data = PengajuanWisuda::where('caseid','!=','-')->get(); + return view('layanan-wisuda.resend',['title' => 'Pengajuan Syarat Wisuda | Admin Dashboard','data'=> $data,'role' => $role_untuk_ettd]); +} + +public function resendsubmit(Request $request){ + $data = [ + 'jenis' => $request->jenis, + 'id' => $request->caseid, + ]; + dispatch(new layananPengajuanWisudaJob($data)); + return redirect()->route('layanan-wisuda.resend')->with('success','Berhasil Kirim Ulang Email ke '.$request->jenis); +} + +public function cetak($caseid){ + $cek_status = PengajuanWisuda::where('caseid', $caseid)->select('ttd_wakil_dekan_1', 'created_at')->first(); + if($cek_status->ttd_wakil_dekan_1 >= $cek_status->created_at){ + $data = PengajuanWisuda::where('caseid',$caseid) + ->select( + 'pengajuan_wisudas.*', + 'mahasiswas.nim', + 'mahasiswas.nama', + 'mahasiswas.judul_skripsi_id', + 'dosen_dpu.nama_gelar as dosen_dpu_nama_gelar', + 'dosen_dpa.nama_gelar as dosen_dpa_nama_gelar', + 'dosen_penguji1.nama_gelar as dosen_penguji1_nama_gelar', + 'dosen_penguji2.nama_gelar as dosen_penguji2_nama_gelar', + 'dosen_dpu.nip as dosen_dpu_nip', + 'dosen_dpa.nip as dosen_dpa_nip', + 'dosen_penguji1.nip as dosen_penguji1_nip', + 'dosen_penguji2.nip as dosen_penguji2_nip', + ) + ->join('mahasiswas','mahasiswas_id','=','mahasiswas.id') + ->join('users as dosen_dpu','mahasiswas.dosen_dpu_id','=','dosen_dpu.id') + ->join('users as dosen_dpa','mahasiswas.dosen_dpa_id','=','dosen_dpa.id') + ->join('users as dosen_penguji1','mahasiswas.dosen_penguji1_id','=','dosen_penguji1.id') + ->join('users as dosen_penguji2','mahasiswas.dosen_penguji2_id','=','dosen_penguji2.id') + ->first(); + + $data_ruang_baca = User::role('Pj. Perpustakaan')->first(); + $data_kalab_farmasi_klinik_dan_komunikasi = User::role('Kalab. Farmasi Klinik dan Komunitas')->first(); + $data_kalab_farmakologi_dan_hewan_coba = User::role('Kalab. Farmakologi dan Hewan Coba')->first(); + $data_kalab_farmakognosi_dan_fitokimia = User::role('Kalab. Farmakognosi dan Fitokimia')->first(); + $data_kalab_mikrobiologi_dan_bioteknologi_farmasi = User::role('Kalab. Mikrobiologi dan Bioteknologi Farmasi')->first(); + $data_kalab_farmasetika = User::role('Kalab. Farmasetika')->first(); + $data_kalab_teknologi_farmasi = User::role('Kalab. Teknologi Farmasi')->first(); + $data_kalab_kimia_analisis = User::role('Kalab. Kimia Analisis')->first(); + $data_kalab_kimia_medisinal = User::role('Kalab. Kimia Medisinal')->first(); + + $user_skpi = explode('_',$data->ttd_skpi); + $data_skpi = User::where('nip',$user_skpi[0])->first(); + + $data_wakil_dekan_1 = User::role('Wakil Dekan 1')->first(); + + $data_pdf = [ + 'title' => $caseid, + 'nama_mahasiswa'=> $data->nama, + 'nim'=> $data->nim, + 'judul_skripsi'=> $data->judul_skripsi_id, + 'date' => $data->updated_at->format('d-m-Y'), + //ruang baca + 'ruang_baca_nama' => $data_ruang_baca->nama_gelar, + 'ruang_baca_nip' => $data_ruang_baca->nip, + 'ruang_baca_qrcode' => base64_encode(QrCode::size(100)->generate($data_ruang_baca->nama_gelar.'_TTD_'.$data->ttd_ruang_baca)), + //kalab fkk + 'kalab_farmasi_klinik_dan_komunikasi_nama' => $data_kalab_farmasi_klinik_dan_komunikasi->nama_gelar, + 'kalab_farmasi_klinik_dan_komunikasi_nip' => $data_kalab_farmasi_klinik_dan_komunikasi->nip, + 'kalab_farmasi_klinik_dan_komunikasi_qrcode' => base64_encode(QrCode::size(75)->generate($data_kalab_farmasi_klinik_dan_komunikasi->nama_gelar.'_TTD_'.$data->ttd_kalab_farmasi_klinik_dan_komunikasi)), + //kalab farmakologi + 'kalab_farmakologi_dan_hewan_coba_nama' => $data_kalab_farmakologi_dan_hewan_coba->nama_gelar, + 'kalab_farmakologi_dan_hewan_coba_nip' => $data_kalab_farmakologi_dan_hewan_coba->nip, + 'kalab_farmakologi_dan_hewan_coba_qrcode' => base64_encode(QrCode::size(75)->generate($data_kalab_farmakologi_dan_hewan_coba->nama_gelar.'_TTD_'.$data->ttd_kalab_farmakologi_dan_hewan_coba)), + //kalab farmakognosi + 'kalab_farmakognosi_dan_fitokimia_nama' => $data_kalab_farmakognosi_dan_fitokimia->nama_gelar, + 'kalab_farmakognosi_dan_fitokimia_nip' => $data_kalab_farmakognosi_dan_fitokimia->nip, + 'kalab_farmakognosi_dan_fitokimia_qrcode' => base64_encode(QrCode::size(75)->generate($data_kalab_farmakognosi_dan_fitokimia->nama_gelar.'_TTD_'.$data->ttd_kalab_farmakognosi_dan_fitokimia)), + //kalab Mikrobiologi dan Bioteknologi Farmasi + 'kalab_mikrobiologi_dan_bioteknologi_farmasi_nama' => $data_kalab_mikrobiologi_dan_bioteknologi_farmasi->nama_gelar, + 'kalab_mikrobiologi_dan_bioteknologi_farmasi_nip' => $data_kalab_mikrobiologi_dan_bioteknologi_farmasi->nip, + 'kalab_mikrobiologi_dan_bioteknologi_farmasi_qrcode' => base64_encode(QrCode::size(75)->generate($data_kalab_mikrobiologi_dan_bioteknologi_farmasi->nama_gelar.'_TTD_'.$data->ttd_kalab_mikrobiologi_dan_bioteknologi_farmasi)), + //kalab Farmasetika + 'kalab_farmasetika_nama' => $data_kalab_farmasetika->nama_gelar, + 'kalab_farmasetika_nip' => $data_kalab_farmasetika->nip, + 'kalab_farmasetika_qrcode' => base64_encode(QrCode::size(75)->generate($data_kalab_farmasetika->nama_gelar.'_TTD_'.$data->ttd_kalab_farmasetika)), + //kalab Teknologi Farmasi + 'kalab_teknologi_farmasi_nama' => $data_kalab_teknologi_farmasi->nama_gelar, + 'kalab_teknologi_farmasi_nip' => $data_kalab_teknologi_farmasi->nip, + 'kalab_teknologi_farmasi_qrcode' => base64_encode(QrCode::size(75)->generate($data_kalab_teknologi_farmasi->nama_gelar.'_TTD_'.$data->ttd_kalab_teknologi_farmasi)), + //kalab Kimia Analisis + 'kalab_kimia_analisis_nama' => $data_kalab_kimia_analisis->nama_gelar, + 'kalab_kimia_analisis_nip' => $data_kalab_kimia_analisis->nip, + 'kalab_kimia_analisis_qrcode' => base64_encode(QrCode::size(75)->generate($data_kalab_kimia_analisis->nama_gelar.'_TTD_'.$data->ttd_kalab_kimia_analisis)), + //kalab Kimia Medisinal + 'kalab_kimia_medisinal_nama' => $data_kalab_kimia_medisinal->nama_gelar, + 'kalab_kimia_medisinal_nip' => $data_kalab_kimia_medisinal->nip, + 'kalab_kimia_medisinal_qrcode' => base64_encode(QrCode::size(75)->generate($data_kalab_kimia_medisinal->nama_gelar.'_TTD_'.$data->ttd_kalab_kimia_medisinal)), + //kalab Kimia Medisinal + 'skpi_nama' => $data_skpi->nama_gelar, + 'skpi_nip' => $data_skpi->nip, + 'skpi_qrcode' => base64_encode(QrCode::size(75)->generate($data->ttd_kalab_kimia_medisinal)), + //Wakil Dekan 1 + 'wakil_dekan_1_nama' => $data_wakil_dekan_1->nama_gelar, + 'wakil_dekan_1_nip' => $data_wakil_dekan_1->nip, + 'wakil_dekan_1_qrcode' => base64_encode(QrCode::size(75)->generate($data_wakil_dekan_1->nama_gelar.'_TTD_'.$data->ttd_wakil_dekan_1)), + //dosen dpu + 'dosen_dpu_nama' => $data->dosen_dpu_nama_gelar, + 'dosen_dpu_nip' => $data->dosen_dpu_nip, + 'dosen_dpu_qrcode' => base64_encode(QrCode::size(75)->generate($data->dosen_dpu_nama_gelar.'_TTD_'.$data->ttd_wakil_dekan_1)), + //dosen dpa + 'dosen_dpa_nama' => $data->dosen_dpa_nama_gelar, + 'dosen_dpa_nip' => $data->dosen_dpa_nip, + 'dosen_dpa_qrcode' => base64_encode(QrCode::size(75)->generate($data->dosen_dpa_nama_gelar.'_TTD_'.$data->ttd_wakil_dekan_1)), + //dosen penguji1 + 'dosen_penguji1_nama' => $data->dosen_penguji1_nama_gelar, + 'dosen_penguji1_nip' => $data->dosen_penguji1_nip, + 'dosen_penguji1_qrcode' => base64_encode(QrCode::size(75)->generate($data->dosen_penguji1_nama_gelar.'_TTD_'.$data->ttd_wakil_dekan_1)), + //dosen penguji2 + 'dosen_penguji2_nama' => $data->dosen_penguji2_nama_gelar, + 'dosen_penguji2_nip' => $data->dosen_penguji2_nip, + 'dosen_penguji2_qrcode' => base64_encode(QrCode::size(75)->generate($data->dosen_penguji2_nama_gelar.'_TTD_'.$data->ttd_wakil_dekan_1)), + //operator + 'operator_qrcode' => base64_encode(QrCode::size(75)->generate($data_wakil_dekan_1->nama_gelar.'_TTD_'.$data->ttd_wakil_dekan_1)), + ]; + $pdf = Pdf::loadView('layanan-wisuda.cetak', $data_pdf); + return $pdf->setPaper('a4', 'potrait')->download($caseid.'-Persetujuan Yudisium.pdf'); + } + return 'Case ID Belum di Tanda Tangan oleh seluruh komponen'; +} + +public function cekettd($caseid){ + $status = PengajuanWisuda::where('caseid',$caseid) + ->first(); + if($status->ttd_dpu!='-' && + $status->ttd_dpa!='-' && + $status->ttd_penguji1!='-' && + $status->ttd_penguji2!='-' && + $status->ttd_kalab_farmasi_klinik_dan_komunitas!='-' && + $status->ttd_kalab_farmakologi_dan_hewan_coba!='-' && + $status->ttd_kalab_farmakognosi_dan_fitokimia!='-' && + $status->ttd_kalab_mikrobiologi_dan_bioteknologi_farmasi!='-' && + $status->ttd_kalab_farmasetika!='-' && + $status->ttd_kalab_teknologi_farmasi!='-' && + $status->ttd_kalab_kimia_analisis!='-' && + $status->ttd_kalab_kimia_medisinal!='-' && + $status->ttd_ruang_baca!='-' && + $status->ttd_skpi!='-' ){ + $data = [ + 'jenis' => 'wakildekan1', + 'id' => $status->id, + ]; + dispatch(new layananPengajuanWisudaJob($data)); + } + +} +} diff --git a/app/Http/Controllers/LayananRevisiPublikasiController.php b/app/Http/Controllers/LayananRevisiPublikasiController.php new file mode 100644 index 0000000..7d1b42e --- /dev/null +++ b/app/Http/Controllers/LayananRevisiPublikasiController.php @@ -0,0 +1,415 @@ +join('mahasiswas','mahasiswas_id','=','mahasiswas.id') + ->join('users as dosen_dpu','mahasiswas.dosen_dpu_id','=','dosen_dpu.id') + ->join('users as dosen_penguji1','mahasiswas.dosen_penguji1_id','=','dosen_penguji1.id') + ->join('users as dosen_penguji2','mahasiswas.dosen_penguji2_id','=','dosen_penguji2.id') + ->get(); + return view('layanan-revisipublikasi.index',['title' => 'Pengajuan Publikasi / Revisi | Admin Dashboard','data' => $data]); +} + +public function tambah(){ + //ambil data dosen, dan laboratorium + $dosen = User::role('Dosen')->get(); + $bagian = Bagian::select('id','nama_bagian')->get(); + //cek apakah ada data mahasiswa dari hasil cari + $nim = session('mahasiswas_id'); + if($nim!=null){ + $data_mahasiswa = Mahasiswa::find($nim); + return view('layanan-revisipublikasi.tambah',['dosen'=>$dosen, 'bagian'=>$bagian,'data_mahasiswa'=>$data_mahasiswa]); + } + return view('layanan-revisipublikasi.tambah',['dosen'=>$dosen, 'bagian'=>$bagian]); +} + +public function cari(){ + return view('layanan-revisipublikasi.cari',['title'=>'Cari Data Mahasiswa Untuk Keperluan Pengajuan Publikasi / Revisi']); +} + +public function search(Request $request){ + $data = Mahasiswa::where('nim',$request->nim)->first(); + if($data==null){ + return redirect()->route('layanan-revisipublikasi.tambah')->with('error','NIM Tidak Ditemukan, Gunakan Fitur Tambah'); + } + return redirect()->route('layanan-revisipublikasi.tambah')->with('mahasiswas_id',$data->id); +} + +public function store(Request $request){ + + $request->validate([ + 'nim'=>'required|numeric', + 'nama'=>'required', + 'nomor_hp'=>'required|numeric', + 'email'=>'required|email', + 'judul_skripsi_id'=>'required', + 'judul_jurnal'=>'required', + 'judul_artikel'=>'required', + 'bagian'=>'required|numeric', + 'dosen_dpu'=>'required|numeric', + 'dosen_dpa'=>'required|numeric', + 'dosen_penguji1'=>'required|numeric', + 'dosen_penguji2'=>'required|numeric', + ],[ + 'nim.required'=>'NIP Wajib Diisi', + 'nim.numeric'=>'NIM Wajib Berisi Angka saja', + 'nomor_hp.numeric'=>'Nomor HP Wajib Menggunakan Angka, Contoh 089xxxxx', + 'email.email'=>'Format email tidak sesuai, cek lagi email anda, Contoh mahasiswa@gmail.com/ mahasiswa@mail.unej.ac.id', + 'bagian.numeric'=>'Bagian tidak valid, cek kembali Bagian yang dipilih', + 'dosen_dpu.numeric'=>'Dosen Pembimbing tidak valid, cek kembali Dosen Pembimbing Utama yang dipilih', + 'dosen_dpa.numeric'=>'Dosen Pembimbing tidak valid, cek kembali Dosen Pembimbing Anggota yang dipilih', + 'dosen_penguji1.numeric'=>'Dosen Penguji tidak valid, cek kembali Dosen Penguji Utama yang dipilih', + 'dosen_penguji2.numeric'=>'Dosen Penguji tidak valid, cek kembali Dosen Penguji Anggota yang dipilih', + ]); + + //cek apakah data mahasiswa ada, jika ada maka dikembalikan dan dianjurkan menggunakan fitur cari + $mahasiswa = Mahasiswa::where('nim',$request->nim)->first(); + if(!is_null($mahasiswa) && $request->status!="ada"){ + return redirect()->route('layanan-revisipublikasi.tambah')->with('error','Data Anda Sudah Ada, Gunakan Fitur Cari Menggunakan NIM :'.$request->nim); + } + //kalo menggunakan fitur cari, akan menggunakan fungsi ini + elseif(!is_null($mahasiswa) && $request->status=="ada"){ + $mahasiswas_id = $mahasiswa->id; + $data_revisipublikasi['mahasiswas_id'] = $mahasiswas_id; + //save data pengajuan + PengajuanRevisiPublikasi::create($data_revisipublikasi); + //update data mahasiswa + $mahasiswa->dosen_penguji1_id = $request->dosen_penguji1; + $mahasiswa->dosen_penguji2_id = $request->dosen_penguji2; + $mahasiswa->judul_skripsi_id = $request->judul_skripsi_id; + $mahasiswa->judul_artikel = $request->judul_artikel; + $mahasiswa->judul_jurnal = $request->judul_jurnal; + $mahasiswa->save(); + + return redirect()->route('layanan-revisipublikasi.tambah')->with('success','Sukses Tambah Data, Silahkan Menunggu Email Konfirmasi setelah disetujui Oleh Operator'); + } + + //jika data belum ada, maka create data baru + $data_mhs['nim'] = $request->nim; + $data_mhs['nama'] = $request->nama; + $data_mhs['nomor_hp'] = $request->nomor_hp; + $data_mhs['email'] = $request->email; + $data_mhs['judul_seminar_proposal'] = '-'; + $data_mhs['bagian'] = $request->bagian; + $data_mhs['dosen_dpu_id'] = $request->dosen_dpu; + $data_mhs['dosen_dpa_id'] = $request->dosen_dpa; + $data_mhs['dosen_penguji1_id'] = $request->dosen_penguji1; + $data_mhs['dosen_penguji2_id'] = $request->dosen_penguji2; + //set default values to - + $data_mhs['judul_skripsi_id'] = $request->judul_skripsi_id; + $data_mhs['judul_skripsi_en'] = '-'; + $data_mhs['judul_jurnal'] = $request->judul_jurnal; + $data_mhs['judul_artikel'] = $request->judul_artikel; + + //save data mahasiswa dan pengajuan + if(Mahasiswa::create($data_mhs)){ + $mahasiswas_id = Mahasiswa::where('nim',$request->nim)->first(); + $data_revisipublikasi['mahasiswas_id'] = $mahasiswas_id->id; + //save data pengajuan + PengajuanRevisiPublikasi::create($data_revisipublikasi); + + return redirect()->route('layanan-revisipublikasi.tambah')->with('success','Sukses Tambah Data, Silahkan Menunggu Email Konfirmasi setelah disetujui Oleh Operator'); + } + return redirect()->route('layanan-revisipublikasi.tambah')->with('error','Gagal Tambah data, Cek kembali data yang anda masukkan'); +} + +public function terima(Request $request){ + $id = $request->id; + $countcaseid = PengajuanRevisiPublikasi::where('ttd_operator','!=','-')->count(); + $caseid = "LR".date_format(date_create(),"ym").$countcaseid+1; + + $cekData = PengajuanRevisiPublikasi::where('caseid',$caseid)->first(); + $data = PengajuanRevisiPublikasi::where('id',$id)->first(); + //cek apakah ada caseid yang sama sebelum disave + if(!is_null($cekData)){ + $data->updated_at = Carbon::now(); + $data->save(); + return redirect()->route('layanan-revisipublikasi.index')->with('error','Gagal simpan Data, Cek kembali Detail Data yang akan diterima'); + } + + $data->caseid = $caseid; + $data->ttd_operator = Carbon::now(); + if($data->save()){ + $data_job = [ + [ + 'jenis' => 'mahasiswa', + 'id' => $id, + ], + [ + 'jenis' => 'dpu', + 'id' => $id, + ], + [ + 'jenis' => 'penguji1', + 'id' => $id, + ], + [ + 'jenis' => 'penguji2', + 'id' => $id, + ], + ]; + foreach($data_job as $item){ + dispatch(new layananRevisiPublikasiJob($item)); + } + return redirect()->route('layanan-revisipublikasi.index')->with('success','Data Berhasil Disimpan, Email Akan Dikirimkan ke Mahasiswa, DPU, Penguji Utama dan Penguji Anggota '); + } +} + +public function destroy(Request $request){ + $id = $request->id; + //cari data dan kirim notif sebelum dihapus + $data = PengajuanRevisiPublikasi::where('pengajuan_revisi_publikasis.id',$id) + ->join('mahasiswas','mahasiswas_id','=','mahasiswas.id') + ->first(); + //data yang akan dikirim untuk dihapus + $data_job = [ + 'jenis' => 'penolakan', + 'caseid' => $data->caseid, + 'nama_mahasiswa' => $data->nama, + 'nim_mahasiswa' => $data->nim, + 'judul_skripsi_id' => $data->judul_skripsi_id, + 'judul_jurnal' => $data->judul_jurnal, + 'judul_artikel' => $data->judul_artikel, + 'email' => $data->email, + 'created_at' => $data->created_at, + 'alasan' => $request->alasan, + ]; + + //delete data mahasiswa + try { + $dataDelete = PengajuanRevisiPublikasi::findOrFail($id); + $dataDelete->delete(); + //kirim notif ke mahasiswa bahwa ditolak + dispatch(new layananRevisiPublikasiJob($data_job)); + + }catch(Exception $e){ + //kirim notif error jika terjadi error + $text['error'] = $e->getMessage(); + dispatch(new kirimNotifikasiErrorJob($text)); + + return redirect()->route('layanan-revisipublikasi.index')->with('error','Error : '.$text['error']); + } + return redirect()->route('layanan-revisipublikasi.index')->with('success','Permintaan Sudah Diproses, Email akan segera dikirim ke penerima'); +} + +public function resend($caseid, Request $request){ + try{ + $data = PengajuanRevisiPublikasi::where('caseid',$caseid)->first(); + $data_job = [ + 'id' => $data->id, + 'jenis' => $request->jenis, + ]; + dispatch(new layananRevisiPublikasiJob($data_job)); + }catch(Exception $e){ + $text['error'] = $e->getMessage(); + dispatch(new kirimNotifikasiErrorJob($text)); + + return redirect()->route('layanan-revisipublikasi.index')->with('error','Error : '.$text['error']); + } + return redirect()->route('layanan-revisipublikasi.index')->with('success','Berhasil Kirim Ulang Email Kepada '.$request->jenis.' Dengan CaseID : '.$caseid); + +} + +public function ettd($url, $caseid){ + $role_untuk_ettd = ['dpu', 'penguji1', 'penguji2']; + $data = PengajuanRevisiPublikasi::where('caseid','=',$caseid) + ->select('pengajuan_revisi_publikasis.id', + 'pengajuan_revisi_publikasis.caseid', + 'mahasiswas.nama', + 'mahasiswas.nim', + 'mahasiswas.judul_skripsi_id', + 'mahasiswas.judul_jurnal', + 'mahasiswas.judul_artikel', + 'dosen_dpu.nama_gelar as dosen_dpu_nama_gelar', + 'dosen_penguji1.nama_gelar as dosen_penguji1_nama_gelar', + 'dosen_penguji2.nama_gelar as dosen_penguji2_nama_gelar', + ) + ->join('mahasiswas','pengajuan_revisi_publikasis.mahasiswas_id','=','mahasiswas.id') + ->join('users as dosen_dpu','mahasiswas.dosen_dpu_id','=','dosen_dpu.id') + ->join('users as dosen_penguji1','mahasiswas.dosen_penguji1_id','=','dosen_penguji1.id') + ->join('users as dosen_penguji2','mahasiswas.dosen_penguji2_id','=','dosen_penguji2.id') + ->first(); + if(in_array($url, $role_untuk_ettd) && !is_null($data)){ + //jika URL DPU maka render ini + if($url=='dpu'){ + $jenis = 'Dosen Pembimbing Utama'; + return view('layanan-revisipublikasi.ettd',['title'=> 'INPUT E-Signature','jenis'=>$jenis,'data'=> $data]); + } + //jika URL Penguji Utama maka render ini + elseif($url=='penguji1'){ + $jenis = 'Dosen Penguji Utama'; + return view('layanan-revisipublikasi.ettd',['title'=> 'INPUT E-Signature','jenis'=>$jenis,'data'=> $data]); + } + //jika URL Penguji Anggota maka render ini + elseif($url=='penguji2'){ + $jenis = 'Dosen Penguji Anggota'; + return view('layanan-revisipublikasi.ettd',['title'=> 'INPUT E-Signature','jenis'=>$jenis,'data'=> $data]); + } + } + //jika URL tidak diantara ketika itu maka render ini + return redirect()->route('laman-awal')->with(['error'=>'Invalid CASEID, Atau CaseID Tidak Ditemukan']); +} + +public function submitettd($url, $caseid, Request $request){ + $role_untuk_ettd = ['dpu','penguji1', 'penguji2']; + $data = PengajuanRevisiPublikasi::where('caseid','=',$caseid)->first(); + if(in_array($url, $role_untuk_ettd) && !is_null($data)){ + //jika URL DPU maka render ini + if($url=='dpu'){ + //jika sudah pernah ETTD Akan Dikembalikan Ke laman TTD Dengan error + if($data->ttd_dpu!='-'){ + return redirect()->route('layanan-revisipublikasi.ettd',['url'=>$url, 'caseid'=>$caseid])->with(['error'=>'CaseID Ini Sudah Pernah Anda Tandatangani Pada '.$data->ttd_dpu]); + } + //ambil data ETTD sesuai url + $ttd = Mahasiswa::where('nim',$request->nim)->join('users as dosen_dpu','mahasiswas.dosen_dpu_id','=','dosen_dpu.id')->first(); + //jika Belum Pernah maka TTD akan diproses + if($ttd->ettd==$request->ettd){ + $data->ttd_dpu = Carbon::now(); + $data->save(); + $this->cek_ettd($caseid); + return redirect()->route('monitoring.caseid',['caseid'=>$caseid])->with(['success'=>'Terimakasih Telah Melakukan Tanda Tangan Pada CaseID '.$caseid]); + } + //jika ETTD Tidak sesuai Akan Dikembalikan Ke laman TTD Dengan error + else{ + return redirect()->route('layanan-revisipublikasi.ettd',['url'=>$url, 'caseid'=>$caseid])->with(['error'=>'E-TTD Tidak Sesuai, Cek Kembali ETTD Anda']); + } + } + //jika URL Penguji Utama maka render ini + elseif($url=='penguji1'){ + //jika sudah pernah ETTD Akan Dikembalikan Ke laman TTD Dengan error + if($data->ttd_penguji1!='-'){ + return redirect()->route('layanan-revisipublikasi.ettd',['url'=>$url, 'caseid'=>$caseid])->with(['error'=>'CaseID Ini Sudah Pernah Anda Tandatangani Pada '.$data->ttd_penguji1]); + } + //ambil data ETTD sesuai url + $ttd = Mahasiswa::where('nim',$request->nim)->join('users as dosen_penguji1','mahasiswas.dosen_penguji1_id','=','dosen_penguji1.id')->first(); + //jika Belum Pernah maka TTD akan diproses + if($ttd->ettd==$request->ettd){ + $data->ttd_penguji1 = Carbon::now(); + $data->save(); + $this->cek_ettd($caseid); + return redirect()->route('monitoring.caseid',['caseid'=>$caseid])->with(['success'=>'Terimakasih Telah Melakukan Tanda Tangan Pada CaseID '.$caseid]); + } + //jika ETTD Tidak sesuai Akan Dikembalikan Ke laman TTD Dengan error + else{ + return redirect()->route('layanan-revisipublikasi.ettd',['url'=>$url, 'caseid'=>$caseid])->with(['error'=>'E-TTD Tidak Sesuai, Cek Kembali ETTD Anda']); + } + } + //jika URL Penguji Anggota maka render ini + elseif($url=='penguji2'){ + //jika sudah pernah ETTD Akan Dikembalikan Ke laman TTD Dengan error + if($data->ttd_penguji2!='-'){ + return redirect()->route('layanan-revisipublikasi.ettd',['url'=>$url, 'caseid'=>$caseid])->with(['error'=>'CaseID Ini Sudah Pernah Anda Tandatangani Pada '.$data->ttd_penguji2]); + } + //ambil data ETTD sesuai url + $ttd = Mahasiswa::where('nim',$request->nim)->join('users as dosen_penguji2','mahasiswas.dosen_penguji2_id','=','dosen_penguji2.id')->first(); + //jika Belum Pernah maka TTD akan diproses + if($ttd->ettd==$request->ettd){ + $data->ttd_penguji2 = Carbon::now(); + $data->save(); + $this->cek_ettd($caseid); + return redirect()->route('monitoring.caseid',['caseid'=>$caseid])->with(['success'=>'Terimakasih Telah Melakukan Tanda Tangan Pada CaseID '.$caseid]); + } + //jika ETTD Tidak sesuai Akan Dikembalikan Ke laman TTD Dengan error + else{ + return redirect()->route('layanan-revisipublikasi.ettd',['url'=>$url, 'caseid'=>$caseid])->with(['error'=>'E-TTD Tidak Sesuai, Cek Kembali ETTD Anda']); + } + } + } +} + +public function cetak($caseid){ + $data = PengajuanRevisiPublikasi::where('caseid', $caseid) + ->select( + 'pengajuan_revisi_publikasis.*', + 'mahasiswas.nama', + 'bagians.nama_bagian', + 'mahasiswas.nim', + 'mahasiswas.judul_skripsi_id', + 'mahasiswas.judul_jurnal', + 'mahasiswas.judul_artikel', + 'dosen_dpu.nama_gelar as dosen_dpu_nama_gelar', + 'dosen_dpu.nip as dosen_dpu_nip', + 'dosen_penguji1.nama_gelar as dosen_penguji1_nama_gelar', + 'dosen_penguji1.nip as dosen_penguji1_nip', + 'dosen_penguji2.nama_gelar as dosen_penguji2_nama_gelar', + 'dosen_penguji2.nip as dosen_penguji2_nip', + ) + ->join('mahasiswas','pengajuan_revisi_publikasis.mahasiswas_id','=','mahasiswas.id') + ->join('bagians','mahasiswas.bagian','=','bagians.id') + ->join('users as dosen_dpu','mahasiswas.dosen_dpu_id','=','dosen_dpu.id') + ->join('users as dosen_penguji1','mahasiswas.dosen_penguji1_id','=','dosen_penguji1.id') + ->join('users as dosen_penguji2','mahasiswas.dosen_penguji2_id','=','dosen_penguji2.id') + ->first(); + if(is_null($data)){ + return redirect()->route('monitoring.caseid',['caseid'=>$caseid])->with('error','Data Dengan CASEID Tersebut Tidak ada'); + } + + //jika data tidak null, maka render ini + if($data->ttd_dpu=='-'){ + return redirect()->route('monitoring.caseid',['caseid'=>$caseid])->with('error','Data Belum Di TandaTangani Oleh DPU / Dosen Penguji Utama / Dosen Penguji Anggota, File Bisa didownload ketika sudah tanda tangan!'); + } + + $data = [ + 'title' => 'Cetak Kesediaan', + // 'date' => Carbon::now()->format('d-m-Y'), + 'date' => $data->updated_at->format('d-m-Y'), + 'nama_mahasiswa' => $data->nama, + 'nim' => $data->nim, + 'bagian' => $data->nama_bagian, + 'judul_skripsi_id' => $data->judul_skripsi_id, + 'judul_jurnal' => $data->judul_jurnal, + 'judul_artikel' => $data->judul_artikel, + 'dosen_dpu_nama_gelar' => $data->dosen_dpu_nama_gelar, + 'dosen_dpu_nip' => $data->dosen_dpu_nip, + 'dosen_dpu_qrcode' => base64_encode(QrCode::size(100)->generate($data->dosen_dpu_nama_gelar.'_TTD_'.$data->ttd_dpu)), + 'dosen_penguji2_nama_gelar' => $data->dosen_penguji2_nama_gelar, + 'dosen_penguji2_nip' => $data->dosen_penguji2_nip, + 'dosen_penguji2_qrcode' => base64_encode(QrCode::size(100)->generate($data->dosen_penguji2_nama_gelar.'_TTD_'.$data->ttd_penguji2)), + 'dosen_penguji1_nama_gelar' => $data->dosen_penguji1_nama_gelar, + 'dosen_penguji1_nip' => $data->dosen_penguji1_nip, + 'dosen_penguji1_qrcode' => base64_encode(QrCode::size(100)->generate($data->dosen_penguji1_nama_gelar.'_TTD_'.$data->ttd_penguji1)), + ]; + $pdf = Pdf::loadView('layanan-revisipublikasi.cetak', $data); + return $pdf->setPaper('a4', 'potrait')->download($caseid.'- Surat Pernyataan Publikasi.pdf'); +} + +private function cek_ettd($caseid){ + $data = PengajuanRevisiPublikasi::where('caseid',$caseid)->first(); + if($data->ttd_dpu!='-' && $data->ttd_penguji1!='-' && $data->ttd_penguji2!='-' ){ + $data_job =[ + 'jenis' => 'mahasiswa selesai', + 'id' => $data->id, + ]; + dispatch(new layananRevisiPublikasiJob($data_job)); + } +} + +} diff --git a/app/Http/Controllers/LayananSeminarProposal.php b/app/Http/Controllers/LayananSeminarProposal.php index 679ec74..0b23a93 100644 --- a/app/Http/Controllers/LayananSeminarProposal.php +++ b/app/Http/Controllers/LayananSeminarProposal.php @@ -26,11 +26,9 @@ public function index(){ 'mahasiswas.nim as nim', 'mahasiswas.nama as nama', 'dosen_dpu.nama_gelar as dpu_nama_gelar', - 'dosen_dpa.nama_gelar as dpa_nama_gelar' ) ->join('mahasiswas','mahasiswas_id','=','mahasiswas.id') ->join('users as dosen_dpu','mahasiswas.dosen_dpu_id','=','dosen_dpu.id') - ->join('users as dosen_dpa','mahasiswas.dosen_dpa_id','=','dosen_dpa.id') ->get(); return view('layanan-sempro.index',['title' => 'Pengajuan Seminar Proposal | Admin Dashboard','data' => $data]); } @@ -152,11 +150,6 @@ public function store(Request $request){ $data_mhs['judul_skripsi_en'] = '-'; $data_mhs['judul_jurnal'] = '-'; $data_mhs['judul_artikel'] = '-'; - - - - - //save data mahasiswa dan pengajuan if(Mahasiswa::create($data_mhs)){ @@ -180,7 +173,6 @@ public function store(Request $request){ return redirect()->route('layanan-sempro.tambah')->with('success','Sukses Tambah Data, Silahkan Menunggu Email Konfirmasi setelah disetujui Oleh Operator'); } return redirect()->route('layanan-sempro.tambah')->with('error','Gagal Tambah data, Cek kembali data yang anda masukkan'); - // $path = $request->nim.'/'.$file_transkrip_name; } //done @@ -193,7 +185,10 @@ public function destroy(Request $request){ //data yang akan dikirim untuk dihapus $data_job = [ 'jenis' => 'penolakan', - 'nama' => $data->nama, + 'caseid' => $data->caseid, + 'nama_mahasiswa' => $data->nama, + 'nim_mahasiswa' => $data->nim, + 'judul_seminar_proposal' => $data->judul_seminar_proposal, 'email' => $data->email, 'created_at' => $data->created_at, 'alasan' => $request->alasan, @@ -216,7 +211,8 @@ public function destroy(Request $request){ catch(Exception $e){ $text['error'] = $e->getMessage(); dispatch(new kirimNotifikasiErrorJob($text)); - exit; + + return redirect()->route('layanan-sempro.index')->with('error','Error : '.$text['error']); } } @@ -339,18 +335,18 @@ public function cetak($caseid){ ->join('bagians','mahasiswas.bagian','=','bagians.id') ->join('users as dosen_dpu','mahasiswas.dosen_dpu_id','=','dosen_dpu.id') ->first(); + if(is_null($data)){ + return redirect()->route('monitoring.caseid',['caseid'=>$caseid])->with('error','Data Dengan CASEID Tersebut Tidak ada'); + } //jika data tidak null, maka render ini if($data->ttd_dpu=='-'){ return redirect()->route('monitoring.caseid',['caseid'=>$caseid])->with('error','Data Belum Di TandaTangani Oleh Dosen Pembimbing Utama, File Bisa didownload ketika DPU sudah tanda tangan!'); } - if(is_null($data)){ - return redirect()->route('monitoring.caseid',['caseid'=>$caseid])->with('error','Data Dengan CASEID Tersebut Tidak ada'); - } $data = [ 'title' => 'Cetak Kesediaan', // 'date' => Carbon::now()->format('d-m-Y'), - 'date' => $data->created_at->format('d-m-Y'), + 'date' => $data->updated_at->format('d-m-Y'), 'nama_mahasiswa' => $data->nama, 'nim' => $data->nim, 'bagian' => $data->nama_bagian, @@ -361,9 +357,28 @@ public function cetak($caseid){ 'dosen_dpu_qrcode' => base64_encode(QrCode::size(100)->generate($data->dosen_dpu_nama_gelar.'_TTD_'.$data->ttd_dpu)), ]; $pdf = Pdf::loadView('layanan-sempro.cetak', $data); - return $pdf->setPaper('a4', 'potrait')->stream($caseid.'-Kesediaan Menjadi Dosen Pembimbing Tugas Akhir'); + return $pdf->setPaper('a4', 'potrait')->download($caseid.'-Kesediaan Menjadi Dosen Pembimbing Tugas Akhir.pdf'); //jika URL tidak diantara ketika itu maka render ini } + +public function resend($caseid, Request $request){ + try{ + $data = PengajuanSempro::where('caseid',$caseid)->first(); + $data_job = [ + 'id' => $data->id, + 'jenis' => $request->jenis, + ]; + dispatch(new layananSeminarProposalJob($data_job)); + }catch(Exception $e){ + $text['error'] = $e->getMessage(); + dispatch(new kirimNotifikasiErrorJob($text)); + + return redirect()->route('layanan-sempro.index')->with('error','Error : '.$text['error']); + } + return redirect()->route('layanan-sempro.index')->with('success','Berhasil Kirim Ulang Email Kepada '.$request->jenis.' Dengan CaseID : '.$caseid); + +} + } diff --git a/app/Http/Controllers/LayananSidangAkhirController.php b/app/Http/Controllers/LayananSidangAkhirController.php new file mode 100644 index 0000000..a7c0c31 --- /dev/null +++ b/app/Http/Controllers/LayananSidangAkhirController.php @@ -0,0 +1,382 @@ +join('mahasiswas','mahasiswas_id','=','mahasiswas.id') + ->join('users as dosen_dpu','mahasiswas.dosen_dpu_id','=','dosen_dpu.id') + ->get(); + return view('layanan-sidangakhir.index',['title' => 'Pengajuan Sidang Akhir | Admin Dashboard', 'data' => $data]); +} + +public function tambah(){ + $dosen = User::role('Dosen')->get(); + $bagian = Bagian::select('id','nama_bagian')->get(); + //cek apakah ada data mahasiswa dari hasil cari + $nim = session('mahasiswas_id'); + if($nim!=null){ + $data_mahasiswa = Mahasiswa::find($nim); + return view('layanan-sidangakhir.tambah',['dosen'=>$dosen, 'bagian'=>$bagian,'data_mahasiswa'=>$data_mahasiswa]); + } + return view('layanan-sidangakhir.tambah',['dosen'=>$dosen, 'bagian'=>$bagian]); +} + +public function cari(){ + return view('layanan-sidangakhir.cari',['title'=>'Cari Data Mahasiswa Untuk Keperluan Pengajuan Sidang Akhir']); +} + +public function search(Request $request){ + $data = Mahasiswa::where('nim',$request->nim)->first(); + if($data==null){ + return redirect()->route('layanan-sidangakhir.tambah')->with('error','NIM Tidak Ditemukan, Gunakan Fitur Tambah'); + } + return redirect()->route('layanan-sidangakhir.tambah')->with('mahasiswas_id',$data->id); +} + +public function destroy(Request $request){ + $id = $request->id; + //cari data dan kirim notif sebelum dihapus + $data = PengajuanSidangAkhir::where('pengajuan_sidang_akhirs.id',$id) + ->join('mahasiswas','mahasiswas_id','=','mahasiswas.id') + ->first(); + //data yang akan dikirim untuk dihapus + $data_job = [ + 'jenis' => 'penolakan', + 'caseid' => $data->caseid, + 'nama_mahasiswa' => $data->nama, + 'nim_mahasiswa' => $data->nim, + 'judul_skripsi_id' => $data->judul_skripsi_id, + 'judul_skripsi_en' => $data->judul_skripsi_en, + 'email' => $data->email, + 'created_at' => $data->created_at, + 'alasan' => $request->alasan, + ]; + //lokasi file + $path = [ + 'bukti_transkrip' => $data->nim."/".$data->bukti_transkrip, + 'bukti_turnitin' => $data->nim."/".$data->bukti_turnitin, + 'bukti_sister' => $data->nim."/".$data->bukti_sister, + 'bukti_lembar_monitoring' => $data->nim."/".$data->bukti_lembar_monitoring, + 'bukti_naskah_dosen_pembimbing' => $data->nim."/".$data->bukti_naskah_dosen_pembimbing, + 'bukti_naskah_dosen_penguji' => $data->nim."/".$data->bukti_naskah_dosen_penguji, + ]; + + //delete file + foreach($path as $item){ + try { + Storage::disk('public')->delete($item); + } + catch(Exception $e){ + $text['error'] = $e->getMessage(); + dispatch(new kirimNotifikasiErrorJob($text)); + + return redirect()->route('layanan-sidangakhir.index')->with('error','Error : '.$text['error']); + } + } + + //delete data mahasiswa + try { + $dataDelete = PengajuanSidangAkhir::findOrFail($id); + $dataDelete->delete(); + //kirim notif ke mahasiswa bahwa ditolak + dispatch(new layananSidangAkhirJob($data_job)); + + }catch(Exception $e){ + //kirim notif error jika terjadi error + $text['error'] = $e->getMessage(); + dispatch(new kirimNotifikasiErrorJob($text)); + + return redirect()->route('layanan-sidangakhir.index')->with('error','Error : '.$text['error']); + } + return redirect()->route('layanan-sidangakhir.index')->with('success','Permintaan Sudah Diproses, Email akan segera dikirim ke penerima'); +} + +public function store(Request $request){ + + $request->validate([ + 'nim'=>'required|numeric', + 'nama'=>'required', + 'nomor_hp'=>'required|numeric', + 'email'=>'required|email', + 'judul_skripsi_id'=>'required', + 'judul_skripsi_en'=>'required', + 'bagian'=>'required|numeric', + 'dosen_dpu'=>'required|numeric', + 'dosen_dpa'=>'required|numeric', + 'dosen_penguji1'=>'required|numeric', + 'dosen_penguji2'=>'required|numeric', + 'nilai_plagiasi'=>'required|numeric', + 'bukti_lembar_monitoring' => 'required|mimes:pdf|max:4096', + 'bukti_transkrip' => 'required|mimes:pdf|max:4096', + 'bukti_turnitin' => 'required|mimes:pdf|max:4096', + 'bukti_sister' => 'required|mimes:pdf|max:4096', + 'bukti_naskah_dosen_pembimbing' => 'required|mimes:pdf|max:4096', + 'bukti_naskah_dosen_penguji' => 'required|mimes:pdf|max:4096', + ],[ + 'nim.required'=>'NIP Wajib Diisi', + 'nim.numeric'=>'NIM Wajib Berisi Angka saja', + 'nomor_hp.numeric'=>'Nomor HP Wajib Menggunakan Angka, Contoh 089xxxxx', + 'email.email'=>'Format email tidak sesuai, cek lagi email anda, Contoh mahasiswa@gmail.com/ mahasiswa@mail.unej.ac.id', + 'bagian.numeric'=>'Bagian tidak valid, cek kembali Bagian yang dipilih', + 'dosen_dpu.numeric'=>'Dosen Pembimbing tidak valid, cek kembali Dosen Pembimbing Utama yang dipilih', + 'dosen_dpa.numeric'=>'Dosen Pembimbing tidak valid, cek kembali Dosen Pembimbing Anggota yang dipilih', + 'dosen_penguji1.numeric'=>'Dosen Penguji tidak valid, cek kembali Dosen Penguji Utama yang dipilih', + 'dosen_penguji2.numeric'=>'Dosen Penguji tidak valid, cek kembali Dosen Penguji Anggota yang dipilih', + 'nilai_plagiasi.numeric'=>'Masukkan Nilai Plagiasi Berupa Angka saja', + ]); + + //olah file + $bukti_transkrip = $request->file('bukti_transkrip'); + $bukti_turnitin = $request->file('bukti_turnitin'); + $bukti_sister = $request->file('bukti_sister'); + $bukti_lembar_monitoring = $request->file('bukti_lembar_monitoring'); + $bukti_naskah_dosen_pembimbing = $request->file('bukti_naskah_dosen_pembimbing'); + $bukti_naskah_dosen_penguji = $request->file('bukti_naskah_dosen_penguji'); + //beri nama tiap file + $bukti_transkrip_name= 'LA_1'.str_replace(' ', '_',$bukti_transkrip->getClientOriginalName()); + $bukti_turnitin_name = 'LA_2'.str_replace(' ', '_',$bukti_turnitin->getClientOriginalName()); + $bukti_sister_name = 'LA_3'.str_replace(' ', '_',$bukti_sister->getClientOriginalName()); + $bukti_lembar_monitoring_name = 'LA_4'.str_replace(' ', '_',$bukti_lembar_monitoring->getClientOriginalName()); + $bukti_naskah_dosen_pembimbing_name = 'LA_5'.str_replace(' ', '_',$bukti_naskah_dosen_pembimbing->getClientOriginalName()); + $bukti_naskah_dosen_penguji_name = 'LA_6'.str_replace(' ', '_',$bukti_naskah_dosen_penguji->getClientOriginalName()); + + //cek apakah data mahasiswa ada, jika ada maka dikembalikan dan dianjurkan menggunakan fitur cari + $mahasiswa = Mahasiswa::where('nim',$request->nim)->first(); + if(!is_null($mahasiswa) && $request->status!="ada"){ + return redirect()->route('layanan-sidangakhir.tambah')->with('error','Data Anda Sudah Ada, Gunakan Fitur Cari Menggunakan NIM :'.$request->nim); + } + //kalo menggunakan fitur cari, akan menggunakan fungsi ini + elseif(!is_null($mahasiswa) && $request->status=="ada"){ + $mahasiswas_id = $mahasiswa->id; + $data_sidangakhir['mahasiswas_id'] = $mahasiswas_id; + $data_sidangakhir['nilai_plagiasi'] = $request->nilai_plagiasi; + $data_sidangakhir['bukti_transkrip'] = $bukti_transkrip_name; + $data_sidangakhir['bukti_turnitin'] = $bukti_turnitin_name; + $data_sidangakhir['bukti_sister'] = $bukti_sister_name; + $data_sidangakhir['bukti_lembar_monitoring'] = $bukti_lembar_monitoring_name; + $data_sidangakhir['bukti_naskah_dosen_pembimbing'] = $bukti_naskah_dosen_pembimbing_name; + $data_sidangakhir['bukti_naskah_dosen_penguji'] = $bukti_naskah_dosen_penguji_name; + //save data pengajuan + PengajuanSidangAkhir::create($data_sidangakhir); + //update data mahasiswa + $mahasiswa->judul_skripsi_id = $request->judul_skripsi_id; + $mahasiswa->judul_skripsi_en = $request->judul_skripsi_en; + $mahasiswa->save(); + //save file + Storage::disk('public')->put($request->nim.'/'.$bukti_transkrip_name, file_get_contents($bukti_transkrip)); + Storage::disk('public')->put($request->nim.'/'.$bukti_turnitin_name, file_get_contents($bukti_turnitin)); + Storage::disk('public')->put($request->nim.'/'.$bukti_sister_name, file_get_contents($bukti_sister)); + Storage::disk('public')->put($request->nim.'/'.$bukti_lembar_monitoring_name, file_get_contents($bukti_lembar_monitoring)); + Storage::disk('public')->put($request->nim.'/'.$bukti_naskah_dosen_pembimbing_name, file_get_contents($bukti_naskah_dosen_pembimbing)); + Storage::disk('public')->put($request->nim.'/'.$bukti_naskah_dosen_penguji_name, file_get_contents($bukti_naskah_dosen_penguji)); + return redirect()->route('layanan-sidangakhir.tambah')->with('success','Sukses Tambah Data, Silahkan Menunggu Email Konfirmasi setelah disetujui Oleh Operator'); + } + + //jika data belum ada, maka create data baru + $data_mhs['nim'] = $request->nim; + $data_mhs['nama'] = $request->nama; + $data_mhs['nomor_hp'] = $request->nomor_hp; + $data_mhs['email'] = $request->email; + $data_mhs['judul_seminar_proposal'] = '-'; + $data_mhs['bagian'] = $request->bagian; + $data_mhs['dosen_dpu_id'] = $request->dosen_dpu; + $data_mhs['dosen_dpa_id'] = $request->dosen_dpa; + $data_mhs['dosen_penguji1_id'] = $request->dosen_penguji1; + $data_mhs['dosen_penguji2_id'] = $request->dosen_penguji2; + //set default values to - + $data_mhs['judul_skripsi_id'] = $request->judul_skripsi_id; + $data_mhs['judul_skripsi_en'] = $request->judul_skripsi_en; + $data_mhs['judul_jurnal'] = '-'; + $data_mhs['judul_artikel'] = '-'; + + //save data mahasiswa dan pengajuan + if(Mahasiswa::create($data_mhs)){ + $mahasiswas_id = Mahasiswa::where('nim',$request->nim)->first(); + $data_sidangakhir['mahasiswas_id'] = $mahasiswas_id->id; + $data_sidangakhir['nilai_plagiasi'] = $request->nilai_plagiasi; + $data_sidangakhir['bukti_transkrip'] = $bukti_transkrip_name; + $data_sidangakhir['bukti_turnitin'] = $bukti_turnitin_name; + $data_sidangakhir['bukti_sister'] = $bukti_sister_name; + $data_sidangakhir['bukti_lembar_monitoring'] = $bukti_lembar_monitoring_name; + $data_sidangakhir['bukti_naskah_dosen_pembimbing'] = $bukti_naskah_dosen_pembimbing_name; + $data_sidangakhir['bukti_naskah_dosen_penguji'] = $bukti_naskah_dosen_penguji_name; + PengajuanSidangAkhir::create($data_sidangakhir); + + Storage::disk('public')->put($request->nim.'/'.$bukti_transkrip_name, file_get_contents($bukti_transkrip)); + Storage::disk('public')->put($request->nim.'/'.$bukti_turnitin_name, file_get_contents($bukti_turnitin)); + Storage::disk('public')->put($request->nim.'/'.$bukti_sister_name, file_get_contents($bukti_sister)); + Storage::disk('public')->put($request->nim.'/'.$bukti_lembar_monitoring_name, file_get_contents($bukti_lembar_monitoring)); + Storage::disk('public')->put($request->nim.'/'.$bukti_naskah_dosen_pembimbing_name, file_get_contents($bukti_naskah_dosen_pembimbing)); + Storage::disk('public')->put($request->nim.'/'.$bukti_naskah_dosen_penguji_name, file_get_contents($bukti_naskah_dosen_penguji)); + return redirect()->route('layanan-sidangakhir.tambah')->with('success','Sukses Tambah Data, Silahkan Menunggu Email Konfirmasi setelah disetujui Oleh Operator'); + } + return redirect()->route('layanan-sidangakhir.tambah')->with('error','Gagal Tambah data, Cek kembali data yang anda masukkan'); +} + +public function terima(Request $request){ + $id = $request->id; + $countcaseid = PengajuanSidangAkhir::where('ttd_operator','!=','-')->count(); + $caseid = "LA".date_format(date_create(),"ym").$countcaseid+1; + + $cekData = PengajuanSidangAkhir::where('caseid',$caseid)->first(); + $data = PengajuanSidangAkhir::where('id',$id)->first(); + //cek apakah ada caseid yang sama sebelum disave + if(!is_null($cekData)){ + $data->updated_at = Carbon::now(); + $data->save(); + return redirect()->route('layanan-sidangakhir.index')->with('error','Gagal simpan Data, Cek kembali Detail Data yang akan diterima'); + } + + $data->caseid = $caseid; + $data->ttd_operator = Carbon::now(); + if($data->save()){ + $data_job = [ + [ + 'jenis' => 'mahasiswa', + 'id' => $id, + ], + [ + 'jenis' => 'dpu', + 'id' => $id, + ], + ]; + foreach($data_job as $item){ + dispatch(new layananSidangAkhirJob($item)); + } + return redirect()->route('layanan-sidangakhir.index')->with('success','Data Berhasil Disimpan, Email Akan Dikirimkan ke Mahasiswa, DPU dan DPA'); + } +} + +public function ettd($caseid){ + $data = PengajuanSidangAkhir::where('caseid', $caseid) + ->select( + 'pengajuan_sidang_akhirs.*', + 'mahasiswas.nama', + 'mahasiswas.nim', + 'mahasiswas.judul_skripsi_id', + 'mahasiswas.judul_skripsi_en', + 'dosen_dpu.nama_gelar as dosen_dpu_nama_gelar', + ) + ->join('mahasiswas','pengajuan_sidang_akhirs.mahasiswas_id','=','mahasiswas.id') + ->join('users as dosen_dpu','mahasiswas.dosen_dpu_id','=','dosen_dpu.id') + ->first(); + //jika data tidak null, maka render ini + if(!is_null($data)){ + $jenis = 'Dosen Pembimbing Utama'; + return view('layanan-sidangakhir.ettd',['title'=> 'INPUT E-Signature','jenis'=>$jenis,'data'=> $data]); + } + //jika URL tidak diantara ketika itu maka render ini + return redirect()->route('laman-awal')->with(['error'=>'Invalid CASEID, Atau CaseID Tidak Ditemukan']); +} + +public function submitettd($caseid, Request $request){ + $data = PengajuanSidangAkhir::where('caseid','=',$caseid)->first(); + //jika data ada, maka diproses + if(!is_null($data)){ + //cek ttd jika ttd sudah pernah diisi maka dikembalikan error + if($data->ttd_dpu!='-'){ + return redirect()->route('layanan-sidangakhir.ettd',['caseid'=>$caseid])->with(['error'=>'CaseID Ini Sudah Pernah Anda Tandatangani Pada '.$data->ttd_dpu]); + } + $ttd = Mahasiswa::where('nim',$request->nim)->join('users as dosen_dpu','mahasiswas.dosen_dpu_id','=','dosen_dpu.id')->first(); + //jika Belum Pernah maka TTD akan diproses + if($ttd->ettd==$request->ettd){ + $data->ttd_dpu = Carbon::now(); + $data->save(); + $data_job =[ + 'jenis' => 'mahasiswa selesai', + 'id' => $data->id, + ]; + dispatch(new layananSidangAkhirJob($data_job)); + return redirect()->route('monitoring.caseid',['caseid'=>$caseid])->with(['success'=>'Terimakasih Telah Melakukan Tanda Tangan Pada CaseID '.$caseid]); + } + //jika ETTD Tidak sesuai Akan Dikembalikan Ke laman TTD Dengan error + else{ + return redirect()->route('layanan-sidangakhir.ettd',['caseid'=>$caseid])->with(['error'=>'E-TTD Tidak Sesuai, Cek Kembali ETTD Anda']); + } + } +} + +public function cetak($caseid){ + $data = PengajuanSidangAkhir::where('caseid', $caseid) + ->select( + 'pengajuan_sidang_akhirs.*', + 'mahasiswas.nama', + 'bagians.nama_bagian', + 'mahasiswas.nim', + 'mahasiswas.judul_skripsi_id', + 'mahasiswas.judul_skripsi_en', + 'dosen_dpu.nama_gelar as dosen_dpu_nama_gelar', + 'dosen_dpu.nip as dosen_dpu_nip', + ) + ->join('mahasiswas','pengajuan_sidang_akhirs.mahasiswas_id','=','mahasiswas.id') + ->join('bagians','mahasiswas.bagian','=','bagians.id') + ->join('users as dosen_dpu','mahasiswas.dosen_dpu_id','=','dosen_dpu.id') + ->first(); + if(is_null($data)){ + return redirect()->route('monitoring.caseid',['caseid'=>$caseid])->with('error','Data Dengan CASEID Tersebut Tidak ada'); + } + + //jika data tidak null, maka render ini + if($data->ttd_dpu=='-'){ + return redirect()->route('monitoring.caseid',['caseid'=>$caseid])->with('error','Data Belum Di TandaTangani Oleh Dosen Pembimbing Utama, File Bisa didownload ketika DPU sudah tanda tangan!'); + } + + $data = [ + 'title' => 'Cetak Kesediaan', + // 'date' => Carbon::now()->format('d-m-Y'), + 'date' => $data->updated_at->format('d-m-Y'), + 'nama_mahasiswa' => $data->nama, + 'nim' => $data->nim, + 'bagian' => $data->nama_bagian, + 'judul_skripsi_id' => $data->judul_skripsi_id, + 'judul_skripsi_en' => $data->judul_skripsi_en, + 'nilai_plagiasi' => $data->nilai_plagiasi, + 'dosen_dpu_nama_gelar' => $data->dosen_dpu_nama_gelar, + 'dosen_dpu_nip' => $data->dosen_dpu_nip, + 'dosen_dpu_qrcode' => base64_encode(QrCode::size(100)->generate($data->dosen_dpu_nama_gelar.'_TTD_'.$data->ttd_dpu)), + ]; + $pdf = Pdf::loadView('layanan-sidangakhir.cetak', $data); + return $pdf->setPaper('a4', 'potrait')->download($caseid.'-Kesediaan Menjadi Dosen Pembimbing Tugas Akhir.pdf'); +} + +public function resend($caseid, Request $request){ + try{ + $data = PengajuanSidangAkhir::where('caseid',$caseid)->first(); + $data_job = [ + 'id' => $data->id, + 'jenis' => $request->jenis, + ]; + dispatch(new layananSidangAkhirJob($data_job)); + }catch(Exception $e){ + $text['error'] = $e->getMessage(); + dispatch(new kirimNotifikasiErrorJob($text)); + + return redirect()->route('layanan-sidangakhir.index')->with('error','Error : '.$text['error']); + } + return redirect()->route('layanan-sidangakhir.index')->with('success','Berhasil Kirim Ulang Email Kepada '.$request->jenis.' Dengan CaseID : '.$caseid); + +} +} diff --git a/app/Http/Controllers/MonitoringController.php b/app/Http/Controllers/MonitoringController.php index 7ae356e..e478801 100644 --- a/app/Http/Controllers/MonitoringController.php +++ b/app/Http/Controllers/MonitoringController.php @@ -3,7 +3,10 @@ namespace App\Http\Controllers; use App\Models\PengajuanDpuDpa; +use App\Models\PengajuanRevisiPublikasi; use App\Models\PengajuanSempro; +use App\Models\PengajuanSidangAkhir; +use App\Models\PengajuanWisuda; use Illuminate\Http\Request; class MonitoringController extends Controller @@ -55,6 +58,70 @@ public function caseid($caseid){ } return view('monitoring.sempro',['title' => 'Monitoring Pengajuan Seminar Proposal - '.$caseid,'data' => $data]); } + elseif($cek_caseid=="LA"){ + $data = PengajuanSidangAkhir::where('caseid',$caseid) + ->select( + 'pengajuan_sidang_akhirs.*', + 'mahasiswas.nim', + 'mahasiswas.nama', + 'mahasiswas.judul_skripsi_id', + 'mahasiswas.judul_skripsi_en', + 'dosen_dpu.nama_gelar as dosen_dpu_nama_gelar', + ) + ->join('mahasiswas','mahasiswas_id','=','mahasiswas.id') + ->join('users as dosen_dpu','mahasiswas.dosen_dpu_id','=','dosen_dpu.id') + ->first(); + if($data==null){ + return redirect()->route('monitoring.index')->with('error','CaseID Tidak Ditemukan'); + } + return view('monitoring.sidangakhir',['title' => 'Monitoring Pengajuan Sidang Akhir - '.$caseid,'data' => $data]); + } + elseif($cek_caseid=="LR"){ + $data = PengajuanRevisiPublikasi::where('caseid',$caseid) + ->select( + 'pengajuan_revisi_publikasis.*', + 'mahasiswas.nim', + 'mahasiswas.nama', + 'mahasiswas.judul_skripsi_id', + 'mahasiswas.judul_jurnal', + 'mahasiswas.judul_artikel', + 'dosen_dpu.nama_gelar as dosen_dpu_nama_gelar', + 'dosen_penguji1.nama_gelar as dosen_penguji1_nama_gelar', + 'dosen_penguji2.nama_gelar as dosen_penguji2_nama_gelar', + ) + ->join('mahasiswas','mahasiswas_id','=','mahasiswas.id') + ->join('users as dosen_dpu','mahasiswas.dosen_dpu_id','=','dosen_dpu.id') + ->join('users as dosen_penguji1','mahasiswas.dosen_penguji1_id','=','dosen_penguji1.id') + ->join('users as dosen_penguji2','mahasiswas.dosen_penguji2_id','=','dosen_penguji2.id') + ->first(); + if($data==null){ + return redirect()->route('monitoring.index')->with('error','CaseID Tidak Ditemukan'); + } + return view('monitoring.revisipublikasi',['title' => 'Monitoring Pengajuan Publikasi / Revisi - '.$caseid,'data' => $data]); + } + elseif($cek_caseid=="LY"){ + $data = PengajuanWisuda::where('caseid',$caseid) + ->select( + 'pengajuan_wisudas.*', + 'mahasiswas.nim', + 'mahasiswas.nama', + 'mahasiswas.judul_skripsi_id', + 'dosen_dpu.nama_gelar as dosen_dpu_nama_gelar', + 'dosen_dpa.nama_gelar as dosen_dpa_nama_gelar', + 'dosen_penguji1.nama_gelar as dosen_penguji1_nama_gelar', + 'dosen_penguji2.nama_gelar as dosen_penguji2_nama_gelar', + ) + ->join('mahasiswas','mahasiswas_id','=','mahasiswas.id') + ->join('users as dosen_dpu','mahasiswas.dosen_dpu_id','=','dosen_dpu.id') + ->join('users as dosen_dpa','mahasiswas.dosen_dpa_id','=','dosen_dpa.id') + ->join('users as dosen_penguji1','mahasiswas.dosen_penguji1_id','=','dosen_penguji1.id') + ->join('users as dosen_penguji2','mahasiswas.dosen_penguji2_id','=','dosen_penguji2.id') + ->first(); + if($data==null){ + return redirect()->route('monitoring.index')->with('error','CaseID Tidak Ditemukan'); + } + return view('monitoring.wisuda',['title' => 'Monitoring Pengajuan Wisuda - '.$caseid,'data' => $data]); + } else{ return redirect()->route('monitoring.index')->with('error','CaseID Tidak Valid'); } diff --git a/app/Jobs/layananPengajuanDpuDpaJob.php b/app/Jobs/layananPengajuanDpuDpaJob.php index 2cec5fd..9e5e4cd 100644 --- a/app/Jobs/layananPengajuanDpuDpaJob.php +++ b/app/Jobs/layananPengajuanDpuDpaJob.php @@ -2,17 +2,20 @@ namespace App\Jobs; +use App\Mail\pengajuanDpuDpaMail; use App\Models\PengajuanDpuDpa; +use App\Models\User; + +use Exception; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; - +use Illuminate\Support\Facades\Mail; use Ixudra\Curl\Facades\Curl; -use Spatie\Permission\Models\Role; class layananPengajuanDpuDpaJob implements ShouldQueue { @@ -30,61 +33,234 @@ public function __construct($data) public function handle(): void { if($this->data['jenis']==="penolakan"){ + //data email + $data = [ + 'caseid' => '-', + 'nama_mahasiswa' => $this->data['nama_mahasiswa'], + 'nim_mahasiswa' => $this->data['nim_mahasiswa'], + 'judul_seminar_proposal' => $this->data['judul_seminar_proposal'], + 'subject' => $this->data['caseid'].' - Penolakan Kesediaan Menjadi Dosen Pembimbing Utama / Anggota', + 'jenis' => $this->data['jenis'], + 'judul' => 'Kesediaan Menjadi Dosen Pembimbing Utama / Anggota', + 'alasan' => $this->data['alasan'], + ]; + + //send email + $konten = new pengajuanDpuDpaMail($data); + Mail::to($this->data['email']) + ->bcc('f@unej.ac.id') + ->send($konten); + + //telegram $text = "BETA\n". - "Penolakan Pengajuan Mahasiswa: ".$this->data['nama']."\n". + "Penolakan Pengajuan DPU/DPA Mahasiswa: ".$this->data['nama_mahasiswa']."\n". "Dengan Email : ".$this->data['email']."\n\n". "Alasan : ".$this->data['alasan']; + + //send telegram Curl::to('https://api.telegram.org/bot6161516511:AAGZhf_o31HupIogjUbEgvwjukes-3P3zPo/sendMessage') ->withData( array( 'chat_id' => '-1001903808078', 'text' => $text, 'parse_mode' => 'Markdown') ) ->get(); } elseif($this->data['jenis'] == 'dpu'){ - $data = PengajuanDpuDpa::where('pengajuan_dpu_dpas.id',$this->data['id'])->select('mahasiswas.nama','mahasiswas.nim','mahasiswas.judul_seminar_proposal','mahasiswas.dosen_dpu_id','users.nama_gelar','users.email')->join('mahasiswas','mahasiswas.id','=','mahasiswas_id')->join('users','users.id','=','dosen_dpu_id')->first(); + $data = PengajuanDpuDpa::where('pengajuan_dpu_dpas.id',$this->data['id']) + ->select( + 'pengajuan_dpu_dpas.caseid', + 'mahasiswas.nama as nama_mahasiswa', + 'mahasiswas.nim as nim_mahasiswa', + 'mahasiswas.judul_seminar_proposal', + 'mahasiswas.dosen_dpu_id', + 'users.nama_gelar', + 'users.email') + ->join('mahasiswas','mahasiswas.id','=','mahasiswas_id') + ->join('users','users.id','=','mahasiswas.dosen_dpu_id') + ->first(); + + //data email + $data_email = [ + 'caseid' => $data->caseid, + 'nama_mahasiswa' => $data->nama_mahasiswa, + 'nim_mahasiswa' => $data->nim_mahasiswa, + 'judul_seminar_proposal' => $data->judul_seminar_proposal, + 'subject' => $data->caseid.' - Kesediaan Menjadi Dosen Pembimbing Utama / Anggota', + 'nama_dosen' => $data->nama_gelar, + 'email' => $data->email, + 'jenis' => $this->data['jenis'], + 'url' => route('layanan-dpudpa.ettd',['url'=>$this->data['jenis'],'caseid'=>$data->caseid]), + ]; + + //send email + $konten = new pengajuanDpuDpaMail($data_email); + Mail::to($data_email['email']) + ->bcc('f@unej.ac.id') + ->send($konten); + + + //telegram $text = "BETA\n". - "Kirim Pengajuan A/N Mahasiswa: ".$data->nama."\n". + "Kirim Pengajuan CaseID :". $data->caseid ."\n\nA/N Mahasiswa: ".$data->nama_mahasiswa."\n". "Kepada DPU : ".$data->nama_gelar."\n\n". - "Alamat Email : ".$data->email; + "Alamat Email : ".str_replace('_','\_',$data->email); Curl::to('https://api.telegram.org/bot6161516511:AAGZhf_o31HupIogjUbEgvwjukes-3P3zPo/sendMessage') ->withData( array( 'chat_id' => '-1001903808078', 'text' => $text, 'parse_mode' => 'Markdown') ) ->get(); } elseif($this->data['jenis'] == 'dpa'){ - $data = PengajuanDpuDpa::where('pengajuan_dpu_dpas.id',$this->data['id'])->select('mahasiswas.nama','mahasiswas.nim','mahasiswas.judul_seminar_proposal','mahasiswas.dosen_dpa_id','users.nama_gelar','users.email')->join('mahasiswas','mahasiswas.id','=','mahasiswas_id')->join('users','users.id','=','dosen_dpa_id')->first(); + $data = PengajuanDpuDpa::where('pengajuan_dpu_dpas.id',$this->data['id']) + ->select( + 'pengajuan_dpu_dpas.caseid', + 'mahasiswas.nama as nama_mahasiswa', + 'mahasiswas.nim as nim_mahasiswa', + 'mahasiswas.judul_seminar_proposal', + 'mahasiswas.dosen_dpa_id', + 'users.nama_gelar', + 'users.email') + ->join('mahasiswas','mahasiswas.id','=','mahasiswas_id') + ->join('users','users.id','=','mahasiswas.dosen_dpu_id') + ->first(); + + //data email + $data_email = [ + 'caseid' => $data->caseid, + 'nama_mahasiswa' => $data->nama_mahasiswa, + 'nim_mahasiswa' => $data->nim_mahasiswa, + 'judul_seminar_proposal' => $data->judul_seminar_proposal, + 'subject' => $data->caseid.' - Kesediaan Menjadi Dosen Pembimbing Utama / Anggota', + 'nama_dosen' => $data->nama_gelar, + 'email' => $data->email, + 'jenis' => $this->data['jenis'], + 'url' => route('layanan-dpudpa.ettd',['url'=>$this->data['jenis'],'caseid'=>$data->caseid]), + ]; + + //send email + $konten = new pengajuanDpuDpaMail($data_email); + Mail::to($data_email['email']) + ->bcc('f@unej.ac.id') + ->send($konten); + + + //telegram $text = "BETA\n". - "Kirim Pengajuan A/N Mahasiswa: ".$data->nama."\n". + "Kirim Pengajuan CaseID :". $data->caseid ."\n\nA/N Mahasiswa: ".$data->nama_mahasiswa."\n". "Kepada DPA : ".$data->nama_gelar."\n\n". - "Alamat Email : ".$data->email; + "Alamat Email : ".str_replace('_','\_',$data->email); Curl::to('https://api.telegram.org/bot6161516511:AAGZhf_o31HupIogjUbEgvwjukes-3P3zPo/sendMessage') ->withData( array( 'chat_id' => '-1001903808078', 'text' => $text, 'parse_mode' => 'Markdown') ) ->get(); + + } elseif($this->data['jenis'] == 'kombi'){ - $kombiRole = Role::findByName('Ketua Kombi')->users; - $data = PengajuanDpuDpa::where('pengajuan_dpu_dpas.id',$this->data['id'])->select('mahasiswas.nama','mahasiswas.nim','mahasiswas.judul_seminar_proposal')->join('mahasiswas','mahasiswas.id','=','mahasiswas_id')->first(); + $dataKombi = User::role('Ketua Kombi')->first(); + $data = PengajuanDpuDpa::where('pengajuan_dpu_dpas.id',$this->data['id']) + ->select( + 'pengajuan_dpu_dpas.caseid', + 'mahasiswas.nama as nama_mahasiswa', + 'mahasiswas.nim as nim_mahasiswa', + 'mahasiswas.judul_seminar_proposal') + ->join('mahasiswas','mahasiswas.id','=','mahasiswas_id') + ->first(); + + //data email + $data_email = [ + 'caseid' => $data->caseid, + 'nama_mahasiswa' => $data->nama_mahasiswa, + 'nim_mahasiswa' => $data->nim_mahasiswa, + 'judul_seminar_proposal' => $data->judul_seminar_proposal, + 'subject' => $data->caseid.' - Kesediaan Menjadi Dosen Pembimbing Utama / Anggota', + 'nama_dosen' => $dataKombi->nama_gelar, + 'email' => $dataKombi->email, + 'jenis' => $this->data['jenis'], + 'url' => route('layanan-dpudpa.ettd',['url'=>$this->data['jenis'],'caseid'=>$data->caseid]), + ]; + + //send email + $konten = new pengajuanDpuDpaMail($data_email); + Mail::to($data_email['email']) + ->bcc('f@unej.ac.id') + ->send($konten); + + //telegram $text = "BETA\n". - "Kirim Pengajuan A/N Mahasiswa: ".$data->nama."\n". - "Kepada Komisi Bimbingan : ".$kombiRole[0]->nama_gelar."\n\n". - "Alamat Email : ".$kombiRole[0]->email; + "Kirim Pengajuan CaseID :". $data->caseid ."\n\nA/N Mahasiswa: ".$data->nama_mahasiswa."\n". + "Kepada Ketua Kombi : ".$dataKombi->nama_gelar."\n\n". + "Alamat Email : ".str_replace('_','\_',$dataKombi->email); Curl::to('https://api.telegram.org/bot6161516511:AAGZhf_o31HupIogjUbEgvwjukes-3P3zPo/sendMessage') ->withData( array( 'chat_id' => '-1001903808078', 'text' => $text, 'parse_mode' => 'Markdown') ) ->get(); } elseif($this->data['jenis'] == 'mahasiswa'){ - $data = PengajuanDpuDpa::where('pengajuan_dpu_dpas.id',$this->data['id'])->select('mahasiswas.nama','mahasiswas.nim','mahasiswas.judul_seminar_proposal','mahasiswas.email')->join('mahasiswas','mahasiswas.id','=','mahasiswas_id')->first(); + $data = PengajuanDpuDpa::where('pengajuan_dpu_dpas.id',$this->data['id']) + ->select( + 'pengajuan_dpu_dpas.caseid', + 'mahasiswas.nama as nama_mahasiswa', + 'mahasiswas.nim as nim_mahasiswa', + 'mahasiswas.judul_seminar_proposal', + 'mahasiswas.email') + ->join('mahasiswas','mahasiswas.id','=','mahasiswas_id') + ->first(); + + //data email + $data_email = [ + 'caseid' => $data->caseid, + 'nama_mahasiswa' => $data->nama_mahasiswa, + 'nim_mahasiswa' => $data->nim_mahasiswa, + 'judul_seminar_proposal' => $data->judul_seminar_proposal, + 'subject' => $data->caseid.' - Kesediaan Menjadi Dosen Pembimbing Utama / Anggota', + 'email' => $data->email, + 'jenis' => $this->data['jenis'], + 'url' => route('monitoring.caseid',['caseid'=>$data->caseid]), + ]; + + //send email + $konten = new pengajuanDpuDpaMail($data_email); + Mail::to($data_email['email']) + ->bcc('f@unej.ac.id') + ->send($konten); + + //telegram $text = "BETA\n". - "Kirim Pengajuan A/N Mahasiswa: ".$data->nama."\n". - "Kepada Mahasiswa : ".$data->nama."\n\n". - "Alamat Email : ".$data->email; + "Kirim Pengajuan CaseID :". $data->caseid ."\n\nA/N Mahasiswa: ".$data->nama_mahasiswa."\n". + "Kepada mahasiswa : ".$data->nama_gelar."\n\n". + "Alamat Email : ".str_replace('_','\_',$data->email); Curl::to('https://api.telegram.org/bot6161516511:AAGZhf_o31HupIogjUbEgvwjukes-3P3zPo/sendMessage') ->withData( array( 'chat_id' => '-1001903808078', 'text' => $text, 'parse_mode' => 'Markdown') ) ->get(); } elseif($this->data['jenis'] == 'mahasiswa selesai'){ - $data = PengajuanDpuDpa::where('pengajuan_dpu_dpas.id',$this->data['id'])->select('mahasiswas.nama','mahasiswas.nim','mahasiswas.judul_seminar_proposal','mahasiswas.email')->join('mahasiswas','mahasiswas.id','=','mahasiswas_id')->first(); + $data = PengajuanDpuDpa::where('pengajuan_dpu_dpas.id',$this->data['id']) + ->select( + 'pengajuan_dpu_dpas.caseid', + 'mahasiswas.nama as nama_mahasiswa', + 'mahasiswas.nim as nim_mahasiswa', + 'mahasiswas.judul_seminar_proposal', + 'mahasiswas.email') + ->join('mahasiswas','mahasiswas.id','=','mahasiswas_id') + ->first(); + + //data email + $data_email = [ + 'caseid' => $data->caseid, + 'nama_mahasiswa' => $data->nama_mahasiswa, + 'nim_mahasiswa' => $data->nim_mahasiswa, + 'judul_seminar_proposal' => $data->judul_seminar_proposal, + 'subject' => $data->caseid.' - Kesediaan Menjadi Dosen Pembimbing Utama / Anggota', + 'email' => $data->email, + 'jenis' => $this->data['jenis'], + 'url' => route('layanan-dpudpa.cetak',['caseid'=>$data->caseid]), + ]; + + //send email + $konten = new pengajuanDpuDpaMail($data_email); + Mail::to($data_email['email']) + ->bcc('f@unej.ac.id') + ->send($konten); + + //telegram $text = "BETA\n". - "Kirim Notifikasi Pengajuan Selesai A/N Mahasiswa: ".$data->nama."\n". - "Kepada Mahasiswa : ".$data->nama."\n\n". - "Alamat Email : ".$data->email; + "Pengajuan Selesai CaseID :". $data->caseid ."\n\nA/N Mahasiswa: ".$data->nama_mahasiswa."\n". + "Kepada mahasiswa : ".$data->nama_mahasiswa."\n\n". + "Alamat Email : ".str_replace('_','\_',$data->email); Curl::to('https://api.telegram.org/bot6161516511:AAGZhf_o31HupIogjUbEgvwjukes-3P3zPo/sendMessage') ->withData( array( 'chat_id' => '-1001903808078', 'text' => $text, 'parse_mode' => 'Markdown') ) ->get(); diff --git a/app/Jobs/layananPengajuanWisudaJob.php b/app/Jobs/layananPengajuanWisudaJob.php new file mode 100644 index 0000000..31abdf9 --- /dev/null +++ b/app/Jobs/layananPengajuanWisudaJob.php @@ -0,0 +1,480 @@ +data = $data; + } + + /** + * Execute the job. + */ + public function handle(): void + { + if($this->data['jenis']==="penolakan"){ + $data = [ + 'caseid' => $this->data['caseid'], + 'nama_mahasiswa' => $this->data['nama_mahasiswa'], + 'nim_mahasiswa' => $this->data['nim_mahasiswa'], + 'judul_skripsi_id' => $this->data['judul_skripsi_id'], + 'subject' => $this->data['caseid'].' - Penolakan Pengajuan Syarat Wisuda / Yudisium', + 'jenis' => $this->data['jenis'], + 'judul' => 'Penolakan Pengajuan Syarat Wisuda', + 'alasan' => $this->data['alasan'], + ]; + + //send email + $konten = new pengajuanWisudaMail($data); + Mail::to($this->data['email']) + ->bcc('f@unej.ac.id') + ->send($konten); + + //telegram + $text = "BETA\n". + "Penolakan Pengajuan Syarat Wisuda Mahasiswa: ".$this->data['nama_mahasiswa']."\n". + "Dengan Email : ".$this->data['email']."\n\n". + "Alasan : ".$this->data['alasan']; + + //send telegram + Curl::to('https://api.telegram.org/bot6161516511:AAGZhf_o31HupIogjUbEgvwjukes-3P3zPo/sendMessage') + ->withData( array( 'chat_id' => '-1001903808078', 'text' => $text, 'parse_mode' => 'Markdown') ) + ->get(); + + } + elseif($this->data['jenis']==='mahasiswa'){ + $data = PengajuanWisuda::where('pengajuan_wisudas.id',$this->data['id']) + ->select( + 'pengajuan_wisudas.caseid', + 'mahasiswas.nama as nama_mahasiswa', + 'mahasiswas.nim as nim_mahasiswa', + 'mahasiswas.judul_skripsi_id', + 'mahasiswas.email', + ) + ->join('mahasiswas','mahasiswas.id','=','mahasiswas_id') + ->first(); + + $data_email = [ + 'caseid' => $data->caseid, + 'nama_mahasiswa' => $data->nama_mahasiswa, + 'nim_mahasiswa' => $data->nim_mahasiswa, + 'judul_skripsi_id' => $data->judul_skripsi_id, + 'subject' => $data->caseid.' - Kesediaan Pengajuan Syarat Wisuda / Yudisium', + 'email' => $data->email, + 'jenis' => $this->data['jenis'], + 'url' => route('monitoring.caseid',['caseid'=>$data->caseid]), + ]; + + //send email + $konten = new pengajuanWisudaMail($data_email); + Mail::to($data_email['email']) + ->bcc('f@unej.ac.id') + ->send($konten); + + //telegram + $text = "BETA\n". + "Kirim Pengajuan CaseID :". $data->caseid ."\n\nA/N Mahasiswa: ".$data->nama_mahasiswa."\n". + "Kepada mahasiswa : ".$data->nama_mahasiswa."\n\n". + "Alamat Email : ".str_replace('_','\_',$data->email); + Curl::to('https://api.telegram.org/bot6161516511:AAGZhf_o31HupIogjUbEgvwjukes-3P3zPo/sendMessage') + ->withData( array( 'chat_id' => '-1001903808078', 'text' => $text, 'parse_mode' => 'Markdown') ) + ->get(); + } + elseif($this->data['jenis']==='mahasiswa selesai'){ + $data = PengajuanWisuda::where('pengajuan_wisudas.id',$this->data['id']) + ->select( + 'pengajuan_wisudas.caseid', + 'mahasiswas.nama as nama_mahasiswa', + 'mahasiswas.nim as nim_mahasiswa', + 'mahasiswas.judul_skripsi_id', + 'mahasiswas.email', + ) + ->join('mahasiswas','mahasiswas.id','=','mahasiswas_id') + ->first(); + + $data_email = [ + 'caseid' => $data->caseid, + 'nama_mahasiswa' => $data->nama_mahasiswa, + 'nim_mahasiswa' => $data->nim_mahasiswa, + 'judul_skripsi_id' => $data->judul_skripsi_id, + 'subject' => $data->caseid.' - Kesediaan Pengajuan Syarat Wisuda / Yudisium', + 'email' => $data->email, + 'jenis' => $this->data['jenis'], + 'url' => route('layanan-wisuda.caseid',['caseid'=>$data->caseid]), + ]; + + //send email + $konten = new pengajuanWisudaMail($data_email); + Mail::to($data_email['email']) + ->bcc('f@unej.ac.id') + ->send($konten); + + //telegram + $text = "BETA\n". + "Pengajuan Selesai CaseID :". $data->caseid ."\n\nA/N Mahasiswa: ".$data->nama_mahasiswa."\n". + "Kepada mahasiswa : ".$data->nama_mahasiswa."\n\n". + "Alamat Email : ".str_replace('_','\_',$data->email); + Curl::to('https://api.telegram.org/bot6161516511:AAGZhf_o31HupIogjUbEgvwjukes-3P3zPo/sendMessage') + ->withData( array( 'chat_id' => '-1001903808078', 'text' => $text, 'parse_mode' => 'Markdown') ) + ->get(); + } + elseif($this->data['jenis']==='dpu'){ + $data = PengajuanWisuda::where('pengajuan_wisudas.id',$this->data['id']) + ->select( + 'pengajuan_wisudas.caseid', + 'mahasiswas.nama as nama_mahasiswa', + 'mahasiswas.nim as nim_mahasiswa', + 'mahasiswas.judul_skripsi_id', + 'mahasiswas.dosen_dpu_id', + 'users.nama_gelar', + 'users.email') + ->join('mahasiswas','mahasiswas.id','=','mahasiswas_id') + ->join('users','users.id','=','dosen_dpu_id') + ->first(); + + //data email + $data_email = [ + 'caseid' => $data->caseid, + 'nama_mahasiswa' => $data->nama_mahasiswa, + 'nim_mahasiswa' => $data->nim_mahasiswa, + 'judul_skripsi_id' => $data->judul_skripsi_id, + 'subject' => $data->caseid.' - Pengajuan Untuk Syarat Wisuda / Yudisium', + 'nama_dosen' => $data->nama_gelar, + 'email' => $data->email, + 'jenis' => $this->data['jenis'], + 'url' => route('layanan-wisuda.ettd',['url'=>$this->data['jenis'], 'caseid'=>$data->caseid]), + ]; + + //send email + $konten = new pengajuanWisudaMail($data_email); + Mail::to($data_email['email']) + ->bcc('f@unej.ac.id') + ->send($konten); + + //telegram + $text = "BETA\n". + "Kirim Pengajuan CaseID :". $data->caseid ."\n\nA/N Mahasiswa: ".$data->nama_mahasiswa."\n". + "Kepada DPU : ".$data->nama_gelar."\n\n". + "Alamat Email : ".str_replace('_','\_',$data->email); + Curl::to('https://api.telegram.org/bot6161516511:AAGZhf_o31HupIogjUbEgvwjukes-3P3zPo/sendMessage') + ->withData( array( 'chat_id' => '-1001903808078', 'text' => $text, 'parse_mode' => 'Markdown') ) + ->get(); + } + elseif($this->data['jenis']==='dpa'){ + $data = PengajuanWisuda::where('pengajuan_wisudas.id',$this->data['id']) + ->select( + 'pengajuan_wisudas.caseid', + 'mahasiswas.nama as nama_mahasiswa', + 'mahasiswas.nim as nim_mahasiswa', + 'mahasiswas.judul_skripsi_id', + 'mahasiswas.dosen_dpa_id', + 'users.nama_gelar', + 'users.email') + ->join('mahasiswas','mahasiswas.id','=','mahasiswas_id') + ->join('users','users.id','=','dosen_dpa_id') + ->first(); + + //data email + $data_email = [ + 'caseid' => $data->caseid, + 'nama_mahasiswa' => $data->nama_mahasiswa, + 'nim_mahasiswa' => $data->nim_mahasiswa, + 'judul_skripsi_id' => $data->judul_skripsi_id, + 'subject' => $data->caseid.' - Pengajuan Untuk Syarat Wisuda / Yudisium', + 'nama_dosen' => $data->nama_gelar, + 'email' => $data->email, + 'jenis' => $this->data['jenis'], + 'url' => route('layanan-wisuda.ettd',['url'=>$this->data['jenis'], 'caseid'=>$data->caseid]), + ]; + + //send email + $konten = new pengajuanWisudaMail($data_email); + Mail::to($data_email['email']) + ->bcc('f@unej.ac.id') + ->send($konten); + + //telegram + $text = "BETA\n". + "Kirim Pengajuan CaseID :". $data->caseid ."\n\nA/N Mahasiswa: ".$data->nama_mahasiswa."\n". + "Kepada DPA : ".$data->nama_gelar."\n\n". + "Alamat Email : ".str_replace('_','\_',$data->email); + Curl::to('https://api.telegram.org/bot6161516511:AAGZhf_o31HupIogjUbEgvwjukes-3P3zPo/sendMessage') + ->withData( array( 'chat_id' => '-1001903808078', 'text' => $text, 'parse_mode' => 'Markdown') ) + ->get(); + } + elseif($this->data['jenis']==='penguji1'){ + $data = PengajuanWisuda::where('pengajuan_wisudas.id',$this->data['id']) + ->select( + 'pengajuan_wisudas.caseid', + 'mahasiswas.nama as nama_mahasiswa', + 'mahasiswas.nim as nim_mahasiswa', + 'mahasiswas.judul_skripsi_id', + 'mahasiswas.dosen_penguji1_id', + 'users.nama_gelar', + 'users.email') + ->join('mahasiswas','mahasiswas.id','=','mahasiswas_id') + ->join('users','users.id','=','dosen_penguji1_id') + ->first(); + //data email + $data_email = [ + 'caseid' => $data->caseid, + 'nama_mahasiswa' => $data->nama_mahasiswa, + 'nim_mahasiswa' => $data->nim_mahasiswa, + 'judul_skripsi_id' => $data->judul_skripsi_id, + 'subject' => $data->caseid.' - Pengajuan Untuk Syarat Wisuda / Yudisium', + 'nama_dosen' => $data->nama_gelar, + 'email' => $data->email, + 'jenis' => $this->data['jenis'], + 'url' => route('layanan-wisuda.ettd',['url'=>$this->data['jenis'], 'caseid'=>$data->caseid]), + ]; + + //send email + $konten = new pengajuanWisudaMail($data_email); + Mail::to($data_email['email']) + ->bcc('f@unej.ac.id') + ->send($konten); + + //telegram + $text = "BETA\n". + "Kirim Pengajuan CaseID :". $data->caseid ."\n\nA/N Mahasiswa: ".$data->nama_mahasiswa."\n". + "Kepada Penguji1 : ".$data->nama_gelar."\n\n". + "Alamat Email : ".str_replace('_','\_',$data->email); + Curl::to('https://api.telegram.org/bot6161516511:AAGZhf_o31HupIogjUbEgvwjukes-3P3zPo/sendMessage') + ->withData( array( 'chat_id' => '-1001903808078', 'text' => $text, 'parse_mode' => 'Markdown') ) + ->get(); + } + elseif($this->data['jenis']==='penguji2'){ + $data = PengajuanWisuda::where('pengajuan_wisudas.id',$this->data['id']) + ->select( + 'pengajuan_wisudas.caseid', + 'mahasiswas.nama as nama_mahasiswa', + 'mahasiswas.nim as nim_mahasiswa', + 'mahasiswas.judul_skripsi_id', + 'mahasiswas.dosen_penguji2_id', + 'users.nama_gelar', + 'users.email') + ->join('mahasiswas','mahasiswas.id','=','mahasiswas_id') + ->join('users','users.id','=','dosen_penguji2_id') + ->first(); + //data email + $data_email = [ + 'caseid' => $data->caseid, + 'nama_mahasiswa' => $data->nama_mahasiswa, + 'nim_mahasiswa' => $data->nim_mahasiswa, + 'judul_skripsi_id' => $data->judul_skripsi_id, + 'subject' => $data->caseid.' - Pengajuan Untuk Syarat Wisuda / Yudisium', + 'nama_dosen' => $data->nama_gelar, + 'email' => $data->email, + 'jenis' => $this->data['jenis'], + 'url' => route('layanan-wisuda.ettd',['url'=>$this->data['jenis'], 'caseid'=>$data->caseid]), + ]; + + //send email + $konten = new pengajuanWisudaMail($data_email); + Mail::to($data_email['email']) + ->bcc('f@unej.ac.id') + ->send($konten); + + //telegram + $text = "BETA\n". + "Kirim Pengajuan CaseID :". $data->caseid ."\n\nA/N Mahasiswa: ".$data->nama_mahasiswa."\n". + "Kepada Penguji2 : ".$data->nama_gelar."\n\n". + "Alamat Email : ".str_replace('_','\_',$data->email); + Curl::to('https://api.telegram.org/bot6161516511:AAGZhf_o31HupIogjUbEgvwjukes-3P3zPo/sendMessage') + ->withData( array( 'chat_id' => '-1001903808078', 'text' => $text, 'parse_mode' => 'Markdown') ) + ->get(); + } + elseif($this->data['jenis']==='kalab'){ + $user = User::whereHas('roles', function ($query) { + $query->where('name', 'like', '%Kalab%'); + }) + ->get(); + $data = PengajuanWisuda::where('pengajuan_wisudas.id',$this->data['id']) + ->select( + 'pengajuan_wisudas.caseid', + 'mahasiswas.nama as nama_mahasiswa', + 'mahasiswas.nim as nim_mahasiswa', + 'mahasiswas.judul_skripsi_id', + ) + ->join('mahasiswas','mahasiswas.id','=','mahasiswas_id') + ->first(); + foreach ($user as $item){ + //data email + $data_email = [ + 'caseid' => $data->caseid, + 'nama_mahasiswa' => $data->nama_mahasiswa, + 'nim_mahasiswa' => $data->nim_mahasiswa, + 'judul_skripsi_id' => $data->judul_skripsi_id, + 'subject' => $data->caseid.' - Pengajuan Untuk Syarat Wisuda / Yudisium', + 'nama_dosen' => $item->nama_gelar, + 'email' => $item->email, + 'jenis' => $this->data['jenis'], + 'url' => route('layanan-wisuda.ettd',['url'=>$this->data['jenis'], 'caseid'=>$data->caseid]), + ]; + + //send email + $konten = new pengajuanWisudaMail($data_email); + Mail::to($data_email['email']) + ->bcc('f@unej.ac.id') + ->send($konten); + + //telegram + $text = "BETA\n". + "Kirim Pengajuan CaseID :". $data->caseid ."\n\nA/N Mahasiswa: ".$data->nama_mahasiswa."\n". + "Kepada Kalab : ".$item->nama_gelar."\n\n". + "Alamat Email : ".str_replace('_','\_',$item->nama_gelar); + Curl::to('https://api.telegram.org/bot6161516511:AAGZhf_o31HupIogjUbEgvwjukes-3P3zPo/sendMessage') + ->withData( array( 'chat_id' => '-1001903808078', 'text' => $text, 'parse_mode' => 'Markdown') ) + ->get(); + } + } + elseif($this->data['jenis']==='skpi'){ + $user = User::whereHas('roles', function ($query) { + $query->where('name', 'like', '%skpi%'); + }) + ->get(); + $data = PengajuanWisuda::where('pengajuan_wisudas.id',$this->data['id']) + ->select( + 'pengajuan_wisudas.caseid', + 'mahasiswas.nama as nama_mahasiswa', + 'mahasiswas.nim as nim_mahasiswa', + 'mahasiswas.judul_skripsi_id', + ) + ->join('mahasiswas','mahasiswas.id','=','mahasiswas_id') + ->first(); + foreach ($user as $item){ + //data email + $data_email = [ + 'caseid' => $data->caseid, + 'nama_mahasiswa' => $data->nama_mahasiswa, + 'nim_mahasiswa' => $data->nim_mahasiswa, + 'judul_skripsi_id' => $data->judul_skripsi_id, + 'subject' => $data->caseid.' - Pengajuan Untuk Syarat Wisuda / Yudisium', + 'nama_dosen' => $item->nama_gelar, + 'email' => $item->email, + 'jenis' => $this->data['jenis'], + 'url' => route('layanan-wisuda.ettd',['url'=>$this->data['jenis'], 'caseid'=>$data->caseid]), + ]; + + //send email + $konten = new pengajuanWisudaMail($data_email); + Mail::to($data_email['email']) + ->bcc('f@unej.ac.id') + ->send($konten); + + //telegram + $text = "BETA\n". + "Kirim Pengajuan CaseID :". $data->caseid ."\n\nA/N Mahasiswa: ".$data->nama_mahasiswa."\n". + "Kepada Pj. SKPI : ".$item->nama_gelar."\n\n". + "Alamat Email : ".str_replace('_','\_',$item->nama_gelar); + Curl::to('https://api.telegram.org/bot6161516511:AAGZhf_o31HupIogjUbEgvwjukes-3P3zPo/sendMessage') + ->withData( array( 'chat_id' => '-1001903808078', 'text' => $text, 'parse_mode' => 'Markdown') ) + ->get(); + } + } + elseif($this->data['jenis']==='perpustakaan'){ + $user = User::whereHas('roles', function ($query) { + $query->where('name', 'like', '%perpustakaan%'); + }) + ->get(); + $data = PengajuanWisuda::where('pengajuan_wisudas.id',$this->data['id']) + ->select( + 'pengajuan_wisudas.caseid', + 'mahasiswas.nama as nama_mahasiswa', + 'mahasiswas.nim as nim_mahasiswa', + 'mahasiswas.judul_skripsi_id', + ) + ->join('mahasiswas','mahasiswas.id','=','mahasiswas_id') + ->first(); + foreach ($user as $item){ + //data email + $data_email = [ + 'caseid' => $data->caseid, + 'nama_mahasiswa' => $data->nama_mahasiswa, + 'nim_mahasiswa' => $data->nim_mahasiswa, + 'judul_skripsi_id' => $data->judul_skripsi_id, + 'subject' => $data->caseid.' - Pengajuan Untuk Syarat Wisuda / Yudisium', + 'nama_dosen' => $item->nama_gelar, + 'email' => $item->email, + 'jenis' => $this->data['jenis'], + 'url' => route('layanan-wisuda.ettd',['url'=>$this->data['jenis'], 'caseid'=>$data->caseid]), + ]; + + //send email + $konten = new pengajuanWisudaMail($data_email); + Mail::to($data_email['email']) + ->bcc('f@unej.ac.id') + ->send($konten); + + //telegram + $text = "BETA\n". + "Kirim Pengajuan CaseID :". $data->caseid ."\n\nA/N Mahasiswa: ".$data->nama_mahasiswa."\n". + "Kepada Pj. Perpustakaan /Ruang Baca : ".$item->nama_gelar."\n\n". + "Alamat Email : ".str_replace('_','\_',$item->nama_gelar); + Curl::to('https://api.telegram.org/bot6161516511:AAGZhf_o31HupIogjUbEgvwjukes-3P3zPo/sendMessage') + ->withData( array( 'chat_id' => '-1001903808078', 'text' => $text, 'parse_mode' => 'Markdown') ) + ->get(); + } + } + elseif($this->data['jenis']==='wakildekan1'){ + $user = User::whereHas('roles', function ($query) { + $query->where('name', 'like', '%Wakil Dekan 1%'); + }) + ->get(); + $data = PengajuanWisuda::where('pengajuan_wisudas.id',$this->data['id']) + ->select( + 'pengajuan_wisudas.caseid', + 'mahasiswas.nama as nama_mahasiswa', + 'mahasiswas.nim as nim_mahasiswa', + 'mahasiswas.judul_skripsi_id', + ) + ->join('mahasiswas','mahasiswas.id','=','mahasiswas_id') + ->first(); + foreach ($user as $item){ + //data email + $data_email = [ + 'caseid' => $data->caseid, + 'nama_mahasiswa' => $data->nama_mahasiswa, + 'nim_mahasiswa' => $data->nim_mahasiswa, + 'judul_skripsi_id' => $data->judul_skripsi_id, + 'subject' => $data->caseid.' - Pengajuan Untuk Syarat Wisuda / Yudisium', + 'nama_dosen' => $item->nama_gelar, + 'email' => $item->email, + 'jenis' => $this->data['jenis'], + 'url' => route('layanan-wisuda.ettd',['url'=>$this->data['jenis'], 'caseid'=>$data->caseid]), + ]; + + //send email + $konten = new pengajuanWisudaMail($data_email); + Mail::to($data_email['email']) + ->bcc('f@unej.ac.id') + ->send($konten); + + //telegram + $text = "BETA\n". + "Kirim Pengajuan CaseID :". $data->caseid ."\n\nA/N Mahasiswa: ".$data->nama_mahasiswa."\n". + "Kepada Wakil Dekan 1 : ".$item->nama_gelar."\n\n". + "Alamat Email : ".str_replace('_','\_',$item->nama_gelar); + Curl::to('https://api.telegram.org/bot6161516511:AAGZhf_o31HupIogjUbEgvwjukes-3P3zPo/sendMessage') + ->withData( array( 'chat_id' => '-1001903808078', 'text' => $text, 'parse_mode' => 'Markdown') ) + ->get(); + } + } + } +} diff --git a/app/Jobs/layananRevisiPublikasiJob.php b/app/Jobs/layananRevisiPublikasiJob.php new file mode 100644 index 0000000..7ce4294 --- /dev/null +++ b/app/Jobs/layananRevisiPublikasiJob.php @@ -0,0 +1,280 @@ +data = $data; + } + + /** + * Execute the job. + */ + public function handle(): void + { + if($this->data['jenis']==="penolakan"){ + $data = [ + 'caseid' => $this->data['caseid'], + 'nama_mahasiswa' => $this->data['nama_mahasiswa'], + 'nim_mahasiswa' => $this->data['nim_mahasiswa'], + 'judul_skripsi_id' => $this->data['judul_skripsi_id'], + 'judul_artikel' => $this->data['judul_artikel'], + 'judul_jurnal' => $this->data['judul_jurnal'], + 'subject' => $this->data['caseid'].' - Penolakan Pengajuan Untuk Revisi / Publikasi', + 'jenis' => $this->data['jenis'], + 'judul' => 'Pengajuan Untuk Revisi / Publikasi', + 'alasan' => $this->data['alasan'], + ]; + + //send email + $konten = new pengajuanRevisiPublikasiMail($data); + Mail::to($this->data['email']) + ->bcc('f@unej.ac.id') + ->send($konten); + + //telegram + $text = "BETA\n". + "Penolakan Pengajuan Untuk Revisi / Publikasi Mahasiswa: ".$this->data['nama_mahasiswa']."\n". + "Dengan Email : ".$this->data['email']."\n\n". + "Alasan : ".$this->data['alasan']; + + //send telegram + Curl::to('https://api.telegram.org/bot6161516511:AAGZhf_o31HupIogjUbEgvwjukes-3P3zPo/sendMessage') + ->withData( array( 'chat_id' => '-1001903808078', 'text' => $text, 'parse_mode' => 'Markdown') ) + ->get(); + + } + elseif($this->data['jenis'] == 'mahasiswa'){ + $data = PengajuanRevisiPublikasi::where('pengajuan_revisi_publikasis.id',$this->data['id']) + ->select( + 'pengajuan_revisi_publikasis.caseid', + 'mahasiswas.nama as nama_mahasiswa', + 'mahasiswas.nim as nim_mahasiswa', + 'mahasiswas.email', + 'mahasiswas.judul_skripsi_id', + 'mahasiswas.judul_jurnal', + 'mahasiswas.judul_artikel',) + ->join('mahasiswas','mahasiswas.id','=','mahasiswas_id') + ->first(); + $data_email = [ + 'caseid' => $data->caseid, + 'nama_mahasiswa' => $data->nama_mahasiswa, + 'nim_mahasiswa' => $data->nim_mahasiswa, + 'judul_skripsi_id' => $data->judul_skripsi_id, + 'judul_jurnal' => $data->judul_jurnal, + 'judul_artikel' => $data->judul_artikel, + 'subject' => $data->caseid.' - Kesediaan Pengajuan Untuk Revisi / Publikasi', + 'email' => $data->email, + 'jenis' => $this->data['jenis'], + 'url' => route('monitoring.caseid',['caseid'=>$data->caseid]), + ]; + + //send email + $konten = new pengajuanRevisiPublikasiMail($data_email); + Mail::to($data_email['email']) + ->bcc('f@unej.ac.id') + ->send($konten); + + //telegram + $text = "BETA\n". + "Kirim Pengajuan CaseID :". $data->caseid ."\n\nA/N Mahasiswa: ".$data->nama_mahasiswa."\n". + "Kepada mahasiswa : ".$data->nama_mahasiswa."\n\n". + "Alamat Email : ".str_replace('_','\_',$data->email); + Curl::to('https://api.telegram.org/bot6161516511:AAGZhf_o31HupIogjUbEgvwjukes-3P3zPo/sendMessage') + ->withData( array( 'chat_id' => '-1001903808078', 'text' => $text, 'parse_mode' => 'Markdown') ) + ->get(); + } + elseif($this->data['jenis'] == 'mahasiswa selesai'){ + $data = PengajuanRevisiPublikasi::where('pengajuan_revisi_publikasis.id',$this->data['id']) + ->select( + 'pengajuan_revisi_publikasis.caseid', + 'mahasiswas.nama as nama_mahasiswa', + 'mahasiswas.nim as nim_mahasiswa', + 'mahasiswas.email', + 'mahasiswas.judul_skripsi_id', + 'mahasiswas.judul_jurnal', + 'mahasiswas.judul_artikel') + ->join('mahasiswas','mahasiswas.id','=','mahasiswas_id') + ->first(); + + //data email + $data_email = [ + 'caseid' => $data->caseid, + 'nama_mahasiswa' => $data->nama_mahasiswa, + 'nim_mahasiswa' => $data->nim_mahasiswa, + 'judul_skripsi_id' => $data->judul_skripsi_id, + 'judul_jurnal' => $data->judul_jurnal, + 'judul_artikel' => $data->judul_artikel, + 'subject' => $data->caseid.' - Pengajuan Untuk Revisi / Publikasi', + 'email' => $data->email, + 'jenis' => $this->data['jenis'], + 'url' => route('layanan-revisipublikasi.cetak',['caseid'=>$data->caseid]), + ]; + + //send email + $konten = new pengajuanRevisiPublikasiMail($data_email); + Mail::to($data_email['email']) + ->bcc('f@unej.ac.id') + ->send($konten); + + //telegram + $text = "BETA\n". + "Pengajuan Selesai CaseID :". $data->caseid ."\n\nA/N Mahasiswa: ".$data->nama_mahasiswa."\n". + "Kepada mahasiswa : ".$data->nama_mahasiswa."\n\n". + "Alamat Email : ".str_replace('_','\_',$data->email); + Curl::to('https://api.telegram.org/bot6161516511:AAGZhf_o31HupIogjUbEgvwjukes-3P3zPo/sendMessage') + ->withData( array( 'chat_id' => '-1001903808078', 'text' => $text, 'parse_mode' => 'Markdown') ) + ->get(); + } + elseif($this->data['jenis'] == 'dpu'){ + $data = PengajuanRevisiPublikasi::where('pengajuan_revisi_publikasis.id',$this->data['id']) + ->select( + 'pengajuan_revisi_publikasis.caseid', + 'mahasiswas.nama as nama_mahasiswa', + 'mahasiswas.nim as nim_mahasiswa', + 'mahasiswas.judul_skripsi_id', + 'mahasiswas.judul_jurnal', + 'mahasiswas.judul_artikel', + 'mahasiswas.dosen_dpu_id', + 'users.nama_gelar', + 'users.email') + ->join('mahasiswas','mahasiswas.id','=','mahasiswas_id') + ->join('users','users.id','=','dosen_dpu_id') + ->first(); + //data email + $data_email = [ + 'caseid' => $data->caseid, + 'nama_mahasiswa' => $data->nama_mahasiswa, + 'nim_mahasiswa' => $data->nim_mahasiswa, + 'judul_skripsi_id' => $data->judul_skripsi_id, + 'judul_jurnal' => $data->judul_jurnal, + 'judul_artikel' => $data->judul_artikel, + 'subject' => $data->caseid.' - Pengajuan Untuk Revisi / Publikasi', + 'nama_dosen' => $data->nama_gelar, + 'email' => $data->email, + 'jenis' => $this->data['jenis'], + 'url' => route('layanan-revisipublikasi.ettd',['url'=>$this->data['jenis'], 'caseid'=>$data->caseid]), + ]; + + //send email + $konten = new pengajuanRevisiPublikasiMail($data_email); + Mail::to($data_email['email']) + ->bcc('f@unej.ac.id') + ->send($konten); + + //telegram + $text = "BETA\n". + "Kirim Pengajuan CaseID :". $data->caseid ."\n\nA/N Mahasiswa: ".$data->nama_mahasiswa."\n". + "Kepada DPU : ".$data->nama_gelar."\n\n". + "Alamat Email : ".str_replace('_','\_',$data->email); + Curl::to('https://api.telegram.org/bot6161516511:AAGZhf_o31HupIogjUbEgvwjukes-3P3zPo/sendMessage') + ->withData( array( 'chat_id' => '-1001903808078', 'text' => $text, 'parse_mode' => 'Markdown') ) + ->get(); + } + elseif($this->data['jenis'] == 'penguji1'){ + $data = PengajuanRevisiPublikasi::where('pengajuan_revisi_publikasis.id',$this->data['id']) + ->select( + 'pengajuan_revisi_publikasis.caseid', + 'mahasiswas.nama as nama_mahasiswa', + 'mahasiswas.nim as nim_mahasiswa', + 'mahasiswas.judul_skripsi_id', + 'mahasiswas.judul_jurnal', + 'mahasiswas.judul_artikel', + 'mahasiswas.dosen_penguji1_id', + 'users.nama_gelar', + 'users.email') + ->join('mahasiswas','mahasiswas.id','=','mahasiswas_id') + ->join('users','users.id','=','dosen_penguji1_id') + ->first(); + //data email + $data_email = [ + 'caseid' => $data->caseid, + 'nama_mahasiswa' => $data->nama_mahasiswa, + 'nim_mahasiswa' => $data->nim_mahasiswa, + 'judul_skripsi_id' => $data->judul_skripsi_id, + 'judul_jurnal' => $data->judul_jurnal, + 'judul_artikel' => $data->judul_artikel, + 'subject' => $data->caseid.' - Pengajuan Untuk Revisi / Publikasi', + 'nama_dosen' => $data->nama_gelar, + 'email' => $data->email, + 'jenis' => $this->data['jenis'], + 'url' => route('layanan-revisipublikasi.ettd',['url'=>$this->data['jenis'], 'caseid'=>$data->caseid]), + ]; + + //send email + $konten = new pengajuanRevisiPublikasiMail($data_email); + Mail::to($data_email['email']) + ->bcc('f@unej.ac.id') + ->send($konten); + + //telegram + $text = "BETA\n". + "Kirim Pengajuan CaseID :". $data->caseid ."\n\nA/N Mahasiswa: ".$data->nama_mahasiswa."\n". + "Kepada penguji1 : ".$data->nama_gelar."\n\n". + "Alamat Email : ".str_replace('_','\_',$data->email); + Curl::to('https://api.telegram.org/bot6161516511:AAGZhf_o31HupIogjUbEgvwjukes-3P3zPo/sendMessage') + ->withData( array( 'chat_id' => '-1001903808078', 'text' => $text, 'parse_mode' => 'Markdown') ) + ->get(); + } + elseif($this->data['jenis'] == 'penguji2'){ + $data = PengajuanRevisiPublikasi::where('pengajuan_revisi_publikasis.id',$this->data['id']) + ->select( + 'pengajuan_revisi_publikasis.caseid', + 'mahasiswas.nama as nama_mahasiswa', + 'mahasiswas.nim as nim_mahasiswa', + 'mahasiswas.judul_skripsi_id', + 'mahasiswas.judul_jurnal', + 'mahasiswas.judul_artikel', + 'mahasiswas.dosen_penguji2_id', + 'users.nama_gelar', + 'users.email') + ->join('mahasiswas','mahasiswas.id','=','mahasiswas_id') + ->join('users','users.id','=','dosen_penguji2_id') + ->first(); + //data email + $data_email = [ + 'caseid' => $data->caseid, + 'nama_mahasiswa' => $data->nama_mahasiswa, + 'nim_mahasiswa' => $data->nim_mahasiswa, + 'judul_skripsi_id' => $data->judul_skripsi_id, + 'judul_jurnal' => $data->judul_jurnal, + 'judul_artikel' => $data->judul_artikel, + 'subject' => $data->caseid.' - Pengajuan Untuk Revisi / Publikasi', + 'nama_dosen' => $data->nama_gelar, + 'email' => $data->email, + 'jenis' => $this->data['jenis'], + 'url' => route('layanan-revisipublikasi.ettd',['url'=>$this->data['jenis'], 'caseid'=>$data->caseid]), + ]; + + //send email + $konten = new pengajuanRevisiPublikasiMail($data_email); + Mail::to($data_email['email']) + ->bcc('f@unej.ac.id') + ->send($konten); + + //telegram + $text = "BETA\n". + "Kirim Pengajuan CaseID :". $data->caseid ."\n\nA/N Mahasiswa: ".$data->nama_mahasiswa."\n". + "Kepada penguji2 : ".$data->nama_gelar."\n\n". + "Alamat Email : ".str_replace('_','\_',$data->email); + Curl::to('https://api.telegram.org/bot6161516511:AAGZhf_o31HupIogjUbEgvwjukes-3P3zPo/sendMessage') + ->withData( array( 'chat_id' => '-1001903808078', 'text' => $text, 'parse_mode' => 'Markdown') ) + ->get(); + } + } +} diff --git a/app/Jobs/layananSeminarProposalJob.php b/app/Jobs/layananSeminarProposalJob.php index 9818999..6b115d9 100644 --- a/app/Jobs/layananSeminarProposalJob.php +++ b/app/Jobs/layananSeminarProposalJob.php @@ -2,14 +2,14 @@ namespace App\Jobs; +use App\Mail\pengajuanSemproMail; use App\Models\PengajuanSempro; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Foundation\Bus\Dispatchable; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Queue\SerializesModels; - - +use Illuminate\Support\Facades\Mail; use Ixudra\Curl\Facades\Curl; @@ -29,52 +29,31 @@ public function __construct($data) public function handle(): void { if($this->data['jenis']==="penolakan"){ + //data email + $data = [ + 'caseid' => $this->data['caseid'], + 'nama_mahasiswa' => $this->data['nama_mahasiswa'], + 'nim_mahasiswa' => $this->data['nim_mahasiswa'], + 'judul_seminar_proposal' => $this->data['judul_seminar_proposal'], + 'subject' => $this->data['caseid'].' - Penolakan Pengajuan Untuk Seminar Proposal', + 'jenis' => $this->data['jenis'], + 'judul' => 'Pengajuan Untuk Seminar Proposal', + 'alasan' => $this->data['alasan'], + ]; + + //send email + $konten = new pengajuanSemproMail($data); + Mail::to($this->data['email']) + ->bcc('f@unej.ac.id') + ->send($konten); + + //telegram $text = "BETA\n". - "Penolakan Pengajuan Seminar Proposal Mahasiswa: ".$this->data['nama']."\n". + "Penolakan Pengajuan Untuk Seminar Proposal Mahasiswa: ".$this->data['nama_mahasiswa']."\n". "Dengan Email : ".$this->data['email']."\n\n". "Alasan : ".$this->data['alasan']; - Curl::to('https://api.telegram.org/bot6161516511:AAGZhf_o31HupIogjUbEgvwjukes-3P3zPo/sendMessage') - ->withData( array( 'chat_id' => '-1001903808078', 'text' => $text, 'parse_mode' => 'Markdown') ) - ->get(); - } - elseif($this->data['jenis'] == 'dpu'){ - $data = PengajuanSempro::where('pengajuan_sempros.id',$this->data['id']) - ->select( - 'pengajuan_sempros.caseid', - 'pengajuan_sempros.nilai_plagiasi', - 'mahasiswas.nama', - 'mahasiswas.nim', - 'mahasiswas.email', - 'mahasiswas.judul_seminar_proposal', - 'mahasiswas.dosen_dpu_id',) - ->join('mahasiswas','mahasiswas.id','=','mahasiswas_id') - ->first(); - $text = "BETA - ".$data->caseid."\n". - "Kirim Pengajuan A/N Mahasiswa: ".$data->nama."\n". - "Kepada mahasiswa : ".$data->nama."\n\n". - "Alamat Email : ".$data->email; - Curl::to('https://api.telegram.org/bot6161516511:AAGZhf_o31HupIogjUbEgvwjukes-3P3zPo/sendMessage') - ->withData( array( 'chat_id' => '-1001903808078', 'text' => $text, 'parse_mode' => 'Markdown') ) - ->get(); - } - elseif($this->data['jenis'] == 'mahasiswa selesai'){ - $data = PengajuanSempro::where('pengajuan_sempros.id',$this->data['id']) - ->select( - 'pengajuan_sempros.caseid', - 'pengajuan_sempros.nilai_plagiasi', - 'mahasiswas.nama', - 'mahasiswas.nim', - 'mahasiswas.judul_seminar_proposal', - 'mahasiswas.dosen_dpu_id', - 'users.nama_gelar', - 'users.email') - ->join('mahasiswas','mahasiswas.id','=','mahasiswas_id') - ->join('users','users.id','=','dosen_dpu_id') - ->first(); - $text = "BETA - ".$data->caseid."\n". - "Pengajuan Selesai A/N Mahasiswa: ".$data->nama."\n". - "Kepada DPU : ".$data->nama_gelar."\n\n". - "Alamat Email : ".$data->email; + + //send telegram Curl::to('https://api.telegram.org/bot6161516511:AAGZhf_o31HupIogjUbEgvwjukes-3P3zPo/sendMessage') ->withData( array( 'chat_id' => '-1001903808078', 'text' => $text, 'parse_mode' => 'Markdown') ) ->get(); @@ -83,20 +62,117 @@ public function handle(): void $data = PengajuanSempro::where('pengajuan_sempros.id',$this->data['id']) ->select( 'pengajuan_sempros.caseid', - 'pengajuan_sempros.nilai_plagiasi', - 'mahasiswas.nama', - 'mahasiswas.nim', - 'mahasiswas.judul_seminar_proposal', - 'mahasiswas.dosen_dpu_id', - 'users.nama_gelar', - 'users.email') + 'mahasiswas.nama as nama_mahasiswa', + 'mahasiswas.nim as nim_mahasiswa', + 'mahasiswas.email', + 'mahasiswas.judul_seminar_proposal',) ->join('mahasiswas','mahasiswas.id','=','mahasiswas_id') - ->join('users','users.id','=','dosen_dpu_id') ->first(); - $text = "BETA - ".$data->caseid."\n". - "Kirim Pengajuan A/N Mahasiswa: ".$data->nama."\n". + //data email + $data_email = [ + 'caseid' => $data->caseid, + 'nama_mahasiswa' => $data->nama_mahasiswa, + 'nim_mahasiswa' => $data->nim_mahasiswa, + 'judul_seminar_proposal' => $data->judul_seminar_proposal, + 'subject' => $data->caseid.' - Pengajuan Untuk Seminar Proposal', + 'email' => $data->email, + 'jenis' => $this->data['jenis'], + 'url' => route('monitoring.caseid',['caseid'=>$data->caseid]), + ]; + + //send email + $konten = new pengajuanSemproMail($data_email); + Mail::to($data_email['email']) + ->bcc('f@unej.ac.id') + ->send($konten); + + //telegram + $text = "BETA\n". + "Kirim Pengajuan CaseID :". $data->caseid ."\n\nA/N Mahasiswa: ".$data->nama_mahasiswa."\n". + "Kepada mahasiswa : ".$data->nama_mahasiswa."\n\n". + "Alamat Email : ".str_replace('_','\_',$data->email); + Curl::to('https://api.telegram.org/bot6161516511:AAGZhf_o31HupIogjUbEgvwjukes-3P3zPo/sendMessage') + ->withData( array( 'chat_id' => '-1001903808078', 'text' => $text, 'parse_mode' => 'Markdown') ) + ->get(); + + } + elseif($this->data['jenis'] == 'mahasiswa selesai'){ + $data = PengajuanSempro::where('pengajuan_sempros.id',$this->data['id']) + ->select( + 'pengajuan_sempros.caseid', + 'mahasiswas.nama as nama_mahasiswa', + 'mahasiswas.nim as nim_mahasiswa', + 'mahasiswas.email', + 'mahasiswas.judul_seminar_proposal') + ->join('mahasiswas','mahasiswas.id','=','mahasiswas_id') + ->first(); + + //data email + $data_email = [ + 'caseid' => $data->caseid, + 'nama_mahasiswa' => $data->nama_mahasiswa, + 'nim_mahasiswa' => $data->nim_mahasiswa, + 'judul_seminar_proposal' => $data->judul_seminar_proposal, + 'subject' => $data->caseid.' - Pengajuan Untuk Seminar Proposal', + 'email' => $data->email, + 'jenis' => $this->data['jenis'], + 'url' => route('layanan-sempro.cetak',['caseid'=>$data->caseid]), + ]; + + //send email + $konten = new pengajuanSemproMail($data_email); + Mail::to($data_email['email']) + ->bcc('f@unej.ac.id') + ->send($konten); + + //telegram + $text = "BETA\n". + "Pengajuan Selesai CaseID :". $data->caseid ."\n\nA/N Mahasiswa: ".$data->nama_mahasiswa."\n". + "Kepada mahasiswa : ".$data->nama_mahasiswa."\n\n". + "Alamat Email : ".str_replace('_','\_',$data->email); + Curl::to('https://api.telegram.org/bot6161516511:AAGZhf_o31HupIogjUbEgvwjukes-3P3zPo/sendMessage') + ->withData( array( 'chat_id' => '-1001903808078', 'text' => $text, 'parse_mode' => 'Markdown') ) + ->get(); + } + elseif($this->data['jenis'] == 'dpu'){ + $data = PengajuanSempro::where('pengajuan_sempros.id',$this->data['id']) + ->select( + 'pengajuan_sempros.caseid', + 'mahasiswas.nama as nama_mahasiswa', + 'mahasiswas.nim as nim_mahasiswa', + 'mahasiswas.judul_seminar_proposal', + 'mahasiswas.dosen_dpu_id', + 'users.nama_gelar', + 'users.email') + ->join('mahasiswas','mahasiswas.id','=','mahasiswas_id') + ->join('users','users.id','=','mahasiswas.dosen_dpu_id') + ->first(); + + //data email + $data_email = [ + 'caseid' => $data->caseid, + 'nama_mahasiswa' => $data->nama_mahasiswa, + 'nim_mahasiswa' => $data->nim_mahasiswa, + 'judul_seminar_proposal' => $data->judul_seminar_proposal, + 'subject' => $data->caseid.' - Pengajuan Untuk Seminar Proposal', + 'nama_dosen' => $data->nama_gelar, + 'email' => $data->email, + 'jenis' => $this->data['jenis'], + 'url' => route('layanan-sempro.ettd',['caseid'=>$data->caseid]), + ]; + + //send email + $konten = new pengajuanSemproMail($data_email); + Mail::to($data_email['email']) + ->bcc('f@unej.ac.id') + ->send($konten); + + + //telegram + $text = "BETA\n". + "Kirim Pengajuan CaseID :". $data->caseid ."\n\nA/N Mahasiswa: ".$data->nama_mahasiswa."\n". "Kepada DPU : ".$data->nama_gelar."\n\n". - "Alamat Email : ".$data->email; + "Alamat Email : ".str_replace('_','\_',$data->email); Curl::to('https://api.telegram.org/bot6161516511:AAGZhf_o31HupIogjUbEgvwjukes-3P3zPo/sendMessage') ->withData( array( 'chat_id' => '-1001903808078', 'text' => $text, 'parse_mode' => 'Markdown') ) ->get(); diff --git a/app/Jobs/layananSidangAkhirJob.php b/app/Jobs/layananSidangAkhirJob.php new file mode 100644 index 0000000..022bdfe --- /dev/null +++ b/app/Jobs/layananSidangAkhirJob.php @@ -0,0 +1,186 @@ +data = $data; + } + + /** + * Execute the job. + */ + public function handle(): void + { + if($this->data['jenis']==="penolakan"){ + $data = [ + 'caseid' => $this->data['caseid'], + 'nama_mahasiswa' => $this->data['nama_mahasiswa'], + 'nim_mahasiswa' => $this->data['nim_mahasiswa'], + 'judul_skripsi_id' => $this->data['judul_skripsi_id'], + 'judul_skripsi_en' => $this->data['judul_skripsi_en'], + 'subject' => $this->data['caseid'].' - Penolakan Pengajuan Untuk Sidang Akhir', + 'jenis' => $this->data['jenis'], + 'judul' => 'Pengajuan Untuk Sidang Akhir', + 'alasan' => $this->data['alasan'], + ]; + + //send email + $konten = new pengajuanSidangAkhirMail($data); + Mail::to($this->data['email']) + ->bcc('f@unej.ac.id') + ->send($konten); + + //telegram + $text = "BETA\n". + "Penolakan Pengajuan Untuk Sidang Akhir Mahasiswa: ".$this->data['nama_mahasiswa']."\n". + "Dengan Email : ".$this->data['email']."\n\n". + "Alasan : ".$this->data['alasan']; + + //send telegram + Curl::to('https://api.telegram.org/bot6161516511:AAGZhf_o31HupIogjUbEgvwjukes-3P3zPo/sendMessage') + ->withData( array( 'chat_id' => '-1001903808078', 'text' => $text, 'parse_mode' => 'Markdown') ) + ->get(); + } + elseif($this->data['jenis'] == 'mahasiswa'){ + $data = PengajuanSidangAkhir::where('pengajuan_sidang_akhirs.id',$this->data['id']) + ->select( + 'pengajuan_sidang_akhirs.caseid', + 'mahasiswas.nama as nama_mahasiswa', + 'mahasiswas.nim as nim_mahasiswa', + 'mahasiswas.email', + 'mahasiswas.judul_skripsi_id', + 'mahasiswas.judul_skripsi_en',) + ->join('mahasiswas','mahasiswas.id','=','mahasiswas_id') + ->first(); + $data_email = [ + 'caseid' => $data->caseid, + 'nama_mahasiswa' => $data->nama_mahasiswa, + 'nim_mahasiswa' => $data->nim_mahasiswa, + 'judul_skripsi_id' => $data->judul_skripsi_id, + 'judul_skripsi_en' => $data->judul_skripsi_en, + 'subject' => $data->caseid.' - Kesediaan Pengajuan Untuk Sidang Akhir', + 'email' => $data->email, + 'jenis' => $this->data['jenis'], + 'url' => route('monitoring.caseid',['caseid'=>$data->caseid]), + ]; + + //send email + $konten = new pengajuanSidangAkhirMail($data_email); + Mail::to($data_email['email']) + ->bcc('f@unej.ac.id') + ->send($konten); + + //telegram + $text = "BETA\n". + "Kirim Pengajuan CaseID :". $data->caseid ."\n\nA/N Mahasiswa: ".$data->nama_mahasiswa."\n". + "Kepada mahasiswa : ".$data->nama_mahasiswa."\n\n". + "Alamat Email : ".str_replace('_','\_',$data->email); + Curl::to('https://api.telegram.org/bot6161516511:AAGZhf_o31HupIogjUbEgvwjukes-3P3zPo/sendMessage') + ->withData( array( 'chat_id' => '-1001903808078', 'text' => $text, 'parse_mode' => 'Markdown') ) + ->get(); + } + elseif($this->data['jenis'] == 'mahasiswa selesai'){ + $data = PengajuanSidangAkhir::where('pengajuan_sidang_akhirs.id',$this->data['id']) + ->select( + 'pengajuan_sidang_akhirs.caseid', + 'mahasiswas.nama as nama_mahasiswa', + 'mahasiswas.nim as nim_mahasiswa', + 'mahasiswas.email', + 'mahasiswas.judul_skripsi_id', + 'mahasiswas.judul_skripsi_en', + 'mahasiswas.dosen_dpu_id') + ->join('mahasiswas','mahasiswas.id','=','mahasiswas_id') + ->first(); + + //data email + $data_email = [ + 'caseid' => $data->caseid, + 'nama_mahasiswa' => $data->nama_mahasiswa, + 'nim_mahasiswa' => $data->nim_mahasiswa, + 'judul_skripsi_id' => $data->judul_skripsi_id, + 'judul_skripsi_en' => $data->judul_skripsi_en, + 'subject' => $data->caseid.' - Pengajuan Untuk Sidang Akhir', + 'email' => $data->email, + 'jenis' => $this->data['jenis'], + 'url' => route('layanan-sidangakhir.cetak',['caseid'=>$data->caseid]), + ]; + + //send email + $konten = new pengajuanSidangAkhirMail($data_email); + Mail::to($data_email['email']) + ->bcc('f@unej.ac.id') + ->send($konten); + + //telegram + $text = "BETA\n". + "Pengajuan Selesai CaseID :". $data->caseid ."\n\nA/N Mahasiswa: ".$data->nama_mahasiswa."\n". + "Kepada mahasiswa : ".$data->nama_mahasiswa."\n\n". + "Alamat Email : ".str_replace('_','\_',$data->email); + Curl::to('https://api.telegram.org/bot6161516511:AAGZhf_o31HupIogjUbEgvwjukes-3P3zPo/sendMessage') + ->withData( array( 'chat_id' => '-1001903808078', 'text' => $text, 'parse_mode' => 'Markdown') ) + ->get(); + } + elseif($this->data['jenis'] == 'dpu'){ + $data = PengajuanSidangAkhir::where('pengajuan_sidang_akhirs.id',$this->data['id']) + ->select( + 'pengajuan_sidang_akhirs.caseid', + 'pengajuan_sidang_akhirs.nilai_plagiasi', + 'mahasiswas.nama as nama_mahasiswa', + 'mahasiswas.nim as nim_mahasiswa', + 'mahasiswas.judul_skripsi_id', + 'mahasiswas.judul_skripsi_en', + 'mahasiswas.dosen_dpu_id', + 'users.nama_gelar', + 'users.email') + ->join('mahasiswas','mahasiswas.id','=','mahasiswas_id') + ->join('users','users.id','=','dosen_dpu_id') + ->first(); + //data email + $data_email = [ + 'caseid' => $data->caseid, + 'nama_mahasiswa' => $data->nama_mahasiswa, + 'nim_mahasiswa' => $data->nim_mahasiswa, + 'judul_skripsi_id' => $data->judul_skripsi_id, + 'judul_skripsi_en' => $data->judul_skripsi_en, + 'subject' => $data->caseid.' - Pengajuan Untuk Sidang Akhir', + 'nama_dosen' => $data->nama_gelar, + 'email' => $data->email, + 'jenis' => $this->data['jenis'], + 'url' => route('layanan-sidangakhir.ettd',['caseid'=>$data->caseid]), + ]; + + //send email + $konten = new pengajuanSidangAkhirMail($data_email); + Mail::to($data_email['email']) + ->bcc('f@unej.ac.id') + ->send($konten); + + + //telegram + $text = "BETA\n". + "Kirim Pengajuan CaseID :". $data->caseid ."\n\nA/N Mahasiswa: ".$data->nama_mahasiswa."\n". + "Kepada DPU : ".$data->nama_gelar."\n\n". + "Alamat Email : ".str_replace('_','\_',$data->email); + Curl::to('https://api.telegram.org/bot6161516511:AAGZhf_o31HupIogjUbEgvwjukes-3P3zPo/sendMessage') + ->withData( array( 'chat_id' => '-1001903808078', 'text' => $text, 'parse_mode' => 'Markdown') ) + ->get(); + } + } +} diff --git a/app/Mail/pengajuanDpuDpaMail.php b/app/Mail/pengajuanDpuDpaMail.php new file mode 100644 index 0000000..c642d26 --- /dev/null +++ b/app/Mail/pengajuanDpuDpaMail.php @@ -0,0 +1,54 @@ +mailData = $mailData; + } + + /** + * Get the message envelope. + */ + public function envelope(): Envelope + { + return new Envelope( + subject: $this->mailData['subject'], + ); + } + + /** + * Get the message content definition. + */ + public function content(): Content + { + return new Content( + view: 'mail.dpadpu', + ); + } + + /** + * Get the attachments for the message. + * + * @return array + */ + public function attachments(): array + { + return []; + } +} diff --git a/app/Mail/pengajuanRevisiPublikasiMail.php b/app/Mail/pengajuanRevisiPublikasiMail.php new file mode 100644 index 0000000..0bb8f0c --- /dev/null +++ b/app/Mail/pengajuanRevisiPublikasiMail.php @@ -0,0 +1,54 @@ +mailData = $mailData; + } + + /** + * Get the message envelope. + */ + public function envelope(): Envelope + { + return new Envelope( + subject: $this->mailData['subject'], + ); + } + + /** + * Get the message content definition. + */ + public function content(): Content + { + return new Content( + view: 'mail.revisipublikasi', + ); + } + + /** + * Get the attachments for the message. + * + * @return array + */ + public function attachments(): array + { + return []; + } +} diff --git a/app/Mail/pengajuanSemproMail.php b/app/Mail/pengajuanSemproMail.php new file mode 100644 index 0000000..cbd79a5 --- /dev/null +++ b/app/Mail/pengajuanSemproMail.php @@ -0,0 +1,54 @@ +mailData = $mailData; + } + + /** + * Get the message envelope. + */ + public function envelope(): Envelope + { + return new Envelope( + subject: $this->mailData['subject'], + ); + } + + /** + * Get the message content definition. + */ + public function content(): Content + { + return new Content( + view: 'mail.sempro', + ); + } + + /** + * Get the attachments for the message. + * + * @return array + */ + public function attachments(): array + { + return []; + } +} diff --git a/app/Mail/pengajuanSidangAkhirMail.php b/app/Mail/pengajuanSidangAkhirMail.php new file mode 100644 index 0000000..7367434 --- /dev/null +++ b/app/Mail/pengajuanSidangAkhirMail.php @@ -0,0 +1,54 @@ +mailData = $mailData; + } + + /** + * Get the message envelope. + */ + public function envelope(): Envelope + { + return new Envelope( + subject: $this->mailData['subject'], + ); + } + + /** + * Get the message content definition. + */ + public function content(): Content + { + return new Content( + view: 'mail.sidangakhir', + ); + } + + /** + * Get the attachments for the message. + * + * @return array + */ + public function attachments(): array + { + return []; + } +} diff --git a/app/Mail/pengajuanWisudaMail.php b/app/Mail/pengajuanWisudaMail.php new file mode 100644 index 0000000..33ffe04 --- /dev/null +++ b/app/Mail/pengajuanWisudaMail.php @@ -0,0 +1,54 @@ +mailData = $mailData; + } + + /** + * Get the message envelope. + */ + public function envelope(): Envelope + { + return new Envelope( + subject: $this->mailData['subject'], + ); + } + + /** + * Get the message content definition. + */ + public function content(): Content + { + return new Content( + view: 'mail.wisuda', + ); + } + + /** + * Get the attachments for the message. + * + * @return array + */ + public function attachments(): array + { + return []; + } +} diff --git a/app/Models/PengajuanRevisiPublikasi.php b/app/Models/PengajuanRevisiPublikasi.php new file mode 100644 index 0000000..ab17126 --- /dev/null +++ b/app/Models/PengajuanRevisiPublikasi.php @@ -0,0 +1,15 @@ +bigIncrements('id'); + $table->string('queue')->index(); + $table->longText('payload'); + $table->unsignedTinyInteger('attempts'); + $table->unsignedInteger('reserved_at')->nullable(); + $table->unsignedInteger('available_at'); + $table->unsignedInteger('created_at'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('jobs'); + } +}; diff --git a/database/migrations/2024_03_19_103810_create_pengajuan_sidang_akhirs_table.php b/database/migrations/2024_03_19_103810_create_pengajuan_sidang_akhirs_table.php new file mode 100644 index 0000000..8a7daf7 --- /dev/null +++ b/database/migrations/2024_03_19_103810_create_pengajuan_sidang_akhirs_table.php @@ -0,0 +1,38 @@ +id(); + $table->string('caseid')->default('-'); + $table->foreignId('mahasiswas_id')->constrained(); + $table->string('ttd_operator')->default('-'); + $table->string('ttd_dpu')->default('-'); + $table->integer('nilai_plagiasi'); + $table->string('bukti_lembar_monitoring'); + $table->string('bukti_transkrip'); + $table->string('bukti_turnitin'); + $table->string('bukti_sister'); + $table->string('bukti_naskah_dosen_pembimbing'); + $table->string('bukti_naskah_dosen_penguji'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('pengajuan_sidang_akhirs'); + } +}; diff --git a/database/migrations/2024_03_20_170852_create_pengajuan_revisi_publikasis_table.php b/database/migrations/2024_03_20_170852_create_pengajuan_revisi_publikasis_table.php new file mode 100644 index 0000000..0aebeca --- /dev/null +++ b/database/migrations/2024_03_20_170852_create_pengajuan_revisi_publikasis_table.php @@ -0,0 +1,33 @@ +id(); + $table->string('caseid')->default('-'); + $table->foreignId('mahasiswas_id')->constrained(); + $table->string('ttd_operator')->default('-'); + $table->string('ttd_dpu')->default('-'); + $table->string('ttd_penguji1')->default('-'); + $table->string('ttd_penguji2')->default('-'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('pengajuan_revisi_publikasis'); + } +}; diff --git a/database/migrations/2024_03_21_125303_create_pengajuan_wisudas_table.php b/database/migrations/2024_03_21_125303_create_pengajuan_wisudas_table.php new file mode 100644 index 0000000..185ee6f --- /dev/null +++ b/database/migrations/2024_03_21_125303_create_pengajuan_wisudas_table.php @@ -0,0 +1,49 @@ +id(); + $table->string('caseid')->default('-'); + $table->foreignId('mahasiswas_id')->constrained(); + $table->string('ttd_operator')->default('-'); + $table->string('ttd_dpu')->default('-'); + $table->string('ttd_dpa')->default('-'); + $table->string('ttd_penguji1')->default('-'); + $table->string('ttd_penguji2')->default('-'); + $table->string('ttd_kalab_farmasi_klinik_dan_komunitas')->default('-'); + $table->string('ttd_kalab_farmakologi_dan_hewan_coba')->default('-'); + $table->string('ttd_kalab_farmakognosi_dan_fitokimia')->default('-'); + $table->string('ttd_kalab_mikrobiologi_dan_bioteknologi_farmasi')->default('-'); + $table->string('ttd_kalab_farmasetika')->default('-'); + $table->string('ttd_kalab_teknologi_farmasi')->default('-'); + $table->string('ttd_kalab_kimia_analisis')->default('-'); + $table->string('ttd_kalab_kimia_medisinal')->default('-'); + $table->string('ttd_ruang_baca')->default('-'); + $table->string('ttd_skpi')->default('-'); + $table->string('ttd_wakil_dekan_1')->default('-'); + $table->string('bukti_spp')->default('-'); + $table->string('bukti_kkn')->default('-'); + $table->string('bukti_skripsi')->default('-'); + $table->string('bukti_toefl')->default('-'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('pengajuan_wisudas'); + } +}; diff --git a/public/dist/css/index.css b/public/dist/css/index.css new file mode 100644 index 0000000..2df4794 --- /dev/null +++ b/public/dist/css/index.css @@ -0,0 +1,11316 @@ +@charset "UTF-8"; +/*! +* Start Bootstrap - Agency v7.0.12 (https://startbootstrap.com/theme/agency) +* Copyright 2013-2023 Start Bootstrap +* Licensed under MIT (https://github.com/StartBootstrap/startbootstrap-agency/blob/master/LICENSE) +*/ +/*! + * Bootstrap v5.2.3 (https://getbootstrap.com/) + * Copyright 2011-2022 The Bootstrap Authors + * Copyright 2011-2022 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ +:root { + --bs-blue: #0d6efd; + --bs-indigo: #6610f2; + --bs-purple: #6f42c1; + --bs-pink: #d63384; + --bs-red: #dc3545; + --bs-orange: #fd7e14; + --bs-yellow: #ffc800; + --bs-green: #198754; + --bs-teal: #20c997; + --bs-cyan: #0dcaf0; + --bs-black: #000; + --bs-white: #fff; + --bs-gray: #6c757d; + --bs-gray-dark: #343a40; + --bs-gray-100: #f8f9fa; + --bs-gray-200: #e9ecef; + --bs-gray-300: #dee2e6; + --bs-gray-400: #ced4da; + --bs-gray-500: #adb5bd; + --bs-gray-600: #6c757d; + --bs-gray-700: #495057; + --bs-gray-800: #343a40; + --bs-gray-900: #212529; + --bs-primary: #ffc800; + --bs-secondary: #6c757d; + --bs-success: #198754; + --bs-info: #0dcaf0; + --bs-warning: #ffc800; + --bs-danger: #dc3545; + --bs-light: #f8f9fa; + --bs-dark: #212529; + --bs-primary-rgb: 255, 200, 0; + --bs-secondary-rgb: 108, 117, 125; + --bs-success-rgb: 25, 135, 84; + --bs-info-rgb: 13, 202, 240; + --bs-warning-rgb: 255, 200, 0; + --bs-danger-rgb: 220, 53, 69; + --bs-light-rgb: 248, 249, 250; + --bs-dark-rgb: 33, 37, 41; + --bs-white-rgb: 255, 255, 255; + --bs-black-rgb: 0, 0, 0; + --bs-body-color-rgb: 33, 37, 41; + --bs-body-bg-rgb: 255, 255, 255; + --bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; + --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0)); + --bs-body-font-family: Roboto Slab, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Helvetica Neue, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji; + --bs-body-font-size: 1rem; + --bs-body-font-weight: 400; + --bs-body-line-height: 1.5; + --bs-body-color: #212529; + --bs-body-bg: #fff; + --bs-border-width: 1px; + --bs-border-style: solid; + --bs-border-color: #dee2e6; + --bs-border-color-translucent: rgba(0, 0, 0, 0.175); + --bs-border-radius: 0.375rem; + --bs-border-radius-sm: 0.25rem; + --bs-border-radius-lg: 0.5rem; + --bs-border-radius-xl: 1rem; + --bs-border-radius-2xl: 2rem; + --bs-border-radius-pill: 50rem; + --bs-link-color: #ffc800; + --bs-link-hover-color: #cca000; + --bs-code-color: #d63384; + --bs-highlight-bg: #fff4cc; +} + +*, +*::before, +*::after { + box-sizing: border-box; +} + +@media (prefers-reduced-motion: no-preference) { + :root { + scroll-behavior: smooth; + } +} + +body { + margin: 0; + font-family: var(--bs-body-font-family); + font-size: var(--bs-body-font-size); + font-weight: var(--bs-body-font-weight); + line-height: var(--bs-body-line-height); + color: var(--bs-body-color); + text-align: var(--bs-body-text-align); + background-color: var(--bs-body-bg); + -webkit-text-size-adjust: 100%; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} + +hr { + margin: 1rem 0; + color: inherit; + border: 0; + border-top: 1px solid; + opacity: 0.25; +} + +h6, .h6, h5, .h5, h4, .h4, h3, .h3, h2, .h2, h1, .h1 { + margin-top: 0; + margin-bottom: 0.5rem; + font-family: "Montserrat", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + font-weight: 700; + line-height: 1.2; +} + +h1, .h1 { + font-size: calc(1.375rem + 1.5vw); +} +@media (min-width: 1200px) { + h1, .h1 { + font-size: 2.5rem; + } +} + +h2, .h2 { + font-size: calc(1.325rem + 0.9vw); +} +@media (min-width: 1200px) { + h2, .h2 { + font-size: 2rem; + } +} + +h3, .h3 { + font-size: calc(1.3rem + 0.6vw); +} +@media (min-width: 1200px) { + h3, .h3 { + font-size: 1.75rem; + } +} + +h4, .h4 { + font-size: calc(1.275rem + 0.3vw); +} +@media (min-width: 1200px) { + h4, .h4 { + font-size: 1.5rem; + } +} + +h5, .h5 { + font-size: 1.25rem; +} + +h6, .h6 { + font-size: 1rem; +} + +p { + margin-top: 0; + margin-bottom: 1rem; +} + +abbr[title] { + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; + cursor: help; + -webkit-text-decoration-skip-ink: none; + text-decoration-skip-ink: none; +} + +address { + margin-bottom: 1rem; + font-style: normal; + line-height: inherit; +} + +ol, +ul { + padding-left: 2rem; +} + +ol, +ul, +dl { + margin-top: 0; + margin-bottom: 1rem; +} + +ol ol, +ul ul, +ol ul, +ul ol { + margin-bottom: 0; +} + +dt { + font-weight: 700; +} + +dd { + margin-bottom: 0.5rem; + margin-left: 0; +} + +blockquote { + margin: 0 0 1rem; +} + +b, +strong { + font-weight: bolder; +} + +small, .small { + font-size: 0.875em; +} + +mark, .mark { + padding: 0.1875em; + background-color: var(--bs-highlight-bg); +} + +sub, +sup { + position: relative; + font-size: 0.75em; + line-height: 0; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +a { + color: var(--bs-link-color); + text-decoration: underline; +} +a:hover { + color: var(--bs-link-hover-color); +} + +a:not([href]):not([class]), a:not([href]):not([class]):hover { + color: inherit; + text-decoration: none; +} + +pre, +code, +kbd, +samp { + font-family: var(--bs-font-monospace); + font-size: 1em; +} + +pre { + display: block; + margin-top: 0; + margin-bottom: 1rem; + overflow: auto; + font-size: 0.875em; +} +pre code { + font-size: inherit; + color: inherit; + word-break: normal; +} + +code { + font-size: 0.875em; + color: var(--bs-code-color); + word-wrap: break-word; +} +a > code { + color: inherit; +} + +kbd { + padding: 0.1875rem 0.375rem; + font-size: 0.875em; + color: var(--bs-body-bg); + background-color: var(--bs-body-color); + border-radius: 0.25rem; +} +kbd kbd { + padding: 0; + font-size: 1em; +} + +figure { + margin: 0 0 1rem; +} + +img, +svg { + vertical-align: middle; +} + +table { + caption-side: bottom; + border-collapse: collapse; +} + +caption { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + color: #6c757d; + text-align: left; +} + +th { + text-align: inherit; + text-align: -webkit-match-parent; +} + +thead, +tbody, +tfoot, +tr, +td, +th { + border-color: inherit; + border-style: solid; + border-width: 0; +} + +label { + display: inline-block; +} + +button { + border-radius: 0; +} + +button:focus:not(:focus-visible) { + outline: 0; +} + +input, +button, +select, +optgroup, +textarea { + margin: 0; + font-family: inherit; + font-size: inherit; + line-height: inherit; +} + +button, +select { + text-transform: none; +} + +[role=button] { + cursor: pointer; +} + +select { + word-wrap: normal; +} +select:disabled { + opacity: 1; +} + +[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator { + display: none !important; +} + +button, +[type=button], +[type=reset], +[type=submit] { + -webkit-appearance: button; +} +button:not(:disabled), +[type=button]:not(:disabled), +[type=reset]:not(:disabled), +[type=submit]:not(:disabled) { + cursor: pointer; +} + +::-moz-focus-inner { + padding: 0; + border-style: none; +} + +textarea { + resize: vertical; +} + +fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0; +} + +legend { + float: left; + width: 100%; + padding: 0; + margin-bottom: 0.5rem; + font-size: calc(1.275rem + 0.3vw); + line-height: inherit; +} +@media (min-width: 1200px) { + legend { + font-size: 1.5rem; + } +} +legend + * { + clear: left; +} + +::-webkit-datetime-edit-fields-wrapper, +::-webkit-datetime-edit-text, +::-webkit-datetime-edit-minute, +::-webkit-datetime-edit-hour-field, +::-webkit-datetime-edit-day-field, +::-webkit-datetime-edit-month-field, +::-webkit-datetime-edit-year-field { + padding: 0; +} + +::-webkit-inner-spin-button { + height: auto; +} + +[type=search] { + outline-offset: -2px; + -webkit-appearance: textfield; +} + +/* rtl:raw: +[type="tel"], +[type="url"], +[type="email"], +[type="number"] { + direction: ltr; +} +*/ +::-webkit-search-decoration { + -webkit-appearance: none; +} + +::-webkit-color-swatch-wrapper { + padding: 0; +} + +::file-selector-button { + font: inherit; + -webkit-appearance: button; +} + +output { + display: inline-block; +} + +iframe { + border: 0; +} + +summary { + display: list-item; + cursor: pointer; +} + +progress { + vertical-align: baseline; +} + +[hidden] { + display: none !important; +} + +.lead { + font-size: 1.25rem; + font-weight: 300; +} + +.display-1 { + font-size: calc(1.625rem + 4.5vw); + font-weight: 300; + line-height: 1.2; +} +@media (min-width: 1200px) { + .display-1 { + font-size: 5rem; + } +} + +.display-2 { + font-size: calc(1.575rem + 3.9vw); + font-weight: 300; + line-height: 1.2; +} +@media (min-width: 1200px) { + .display-2 { + font-size: 4.5rem; + } +} + +.display-3 { + font-size: calc(1.525rem + 3.3vw); + font-weight: 300; + line-height: 1.2; +} +@media (min-width: 1200px) { + .display-3 { + font-size: 4rem; + } +} + +.display-4 { + font-size: calc(1.475rem + 2.7vw); + font-weight: 300; + line-height: 1.2; +} +@media (min-width: 1200px) { + .display-4 { + font-size: 3.5rem; + } +} + +.display-5 { + font-size: calc(1.425rem + 2.1vw); + font-weight: 300; + line-height: 1.2; +} +@media (min-width: 1200px) { + .display-5 { + font-size: 3rem; + } +} + +.display-6 { + font-size: calc(1.375rem + 1.5vw); + font-weight: 300; + line-height: 1.2; +} +@media (min-width: 1200px) { + .display-6 { + font-size: 2.5rem; + } +} + +.list-unstyled { + padding-left: 0; + list-style: none; +} + +.list-inline { + padding-left: 0; + list-style: none; +} + +.list-inline-item { + display: inline-block; +} +.list-inline-item:not(:last-child) { + margin-right: 0.5rem; +} + +.initialism { + font-size: 0.875em; + text-transform: uppercase; +} + +.blockquote { + margin-bottom: 1rem; + font-size: 1.25rem; +} +.blockquote > :last-child { + margin-bottom: 0; +} + +.blockquote-footer { + margin-top: -1rem; + margin-bottom: 1rem; + font-size: 0.875em; + color: #6c757d; +} +.blockquote-footer::before { + content: "— "; +} + +.img-fluid { + max-width: 100%; + height: auto; +} + +.img-thumbnail { + padding: 0.25rem; + background-color: #fff; + border: 1px solid var(--bs-border-color); + border-radius: 0.375rem; + max-width: 100%; + height: auto; +} + +.figure { + display: inline-block; +} + +.figure-img { + margin-bottom: 0.5rem; + line-height: 1; +} + +.figure-caption { + font-size: 0.875em; + color: #6c757d; +} + +.container, +.container-fluid, +.container-xxl, +.container-xl, +.container-lg, +.container-md, +.container-sm { + --bs-gutter-x: 1.5rem; + --bs-gutter-y: 0; + width: 100%; + padding-right: calc(var(--bs-gutter-x) * 0.5); + padding-left: calc(var(--bs-gutter-x) * 0.5); + margin-right: auto; + margin-left: auto; +} + +@media (min-width: 576px) { + .container-sm, .container { + max-width: 540px; + } +} +@media (min-width: 768px) { + .container-md, .container-sm, .container { + max-width: 720px; + } +} +@media (min-width: 992px) { + .container-lg, .container-md, .container-sm, .container { + max-width: 960px; + } +} +@media (min-width: 1200px) { + .container-xl, .container-lg, .container-md, .container-sm, .container { + max-width: 1140px; + } +} +@media (min-width: 1400px) { + .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container { + max-width: 1320px; + } +} +.row { + --bs-gutter-x: 1.5rem; + --bs-gutter-y: 0; + display: flex; + flex-wrap: wrap; + margin-top: calc(-1 * var(--bs-gutter-y)); + margin-right: calc(-0.5 * var(--bs-gutter-x)); + margin-left: calc(-0.5 * var(--bs-gutter-x)); +} +.row > * { + flex-shrink: 0; + width: 100%; + max-width: 100%; + padding-right: calc(var(--bs-gutter-x) * 0.5); + padding-left: calc(var(--bs-gutter-x) * 0.5); + margin-top: var(--bs-gutter-y); +} + +.col { + flex: 1 0 0%; +} + +.row-cols-auto > * { + flex: 0 0 auto; + width: auto; +} + +.row-cols-1 > * { + flex: 0 0 auto; + width: 100%; +} + +.row-cols-2 > * { + flex: 0 0 auto; + width: 50%; +} + +.row-cols-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; +} + +.row-cols-4 > * { + flex: 0 0 auto; + width: 25%; +} + +.row-cols-5 > * { + flex: 0 0 auto; + width: 20%; +} + +.row-cols-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; +} + +.col-auto { + flex: 0 0 auto; + width: auto; +} + +.col-1 { + flex: 0 0 auto; + width: 8.33333333%; +} + +.col-2 { + flex: 0 0 auto; + width: 16.66666667%; +} + +.col-3 { + flex: 0 0 auto; + width: 25%; +} + +.col-4 { + flex: 0 0 auto; + width: 33.33333333%; +} + +.col-5 { + flex: 0 0 auto; + width: 41.66666667%; +} + +.col-6 { + flex: 0 0 auto; + width: 50%; +} + +.col-7 { + flex: 0 0 auto; + width: 58.33333333%; +} + +.col-8 { + flex: 0 0 auto; + width: 66.66666667%; +} + +.col-9 { + flex: 0 0 auto; + width: 75%; +} + +.col-10 { + flex: 0 0 auto; + width: 83.33333333%; +} + +.col-11 { + flex: 0 0 auto; + width: 91.66666667%; +} + +.col-12 { + flex: 0 0 auto; + width: 100%; +} + +.offset-1 { + margin-left: 8.33333333%; +} + +.offset-2 { + margin-left: 16.66666667%; +} + +.offset-3 { + margin-left: 25%; +} + +.offset-4 { + margin-left: 33.33333333%; +} + +.offset-5 { + margin-left: 41.66666667%; +} + +.offset-6 { + margin-left: 50%; +} + +.offset-7 { + margin-left: 58.33333333%; +} + +.offset-8 { + margin-left: 66.66666667%; +} + +.offset-9 { + margin-left: 75%; +} + +.offset-10 { + margin-left: 83.33333333%; +} + +.offset-11 { + margin-left: 91.66666667%; +} + +.g-0, +.gx-0 { + --bs-gutter-x: 0; +} + +.g-0, +.gy-0 { + --bs-gutter-y: 0; +} + +.g-1, +.gx-1 { + --bs-gutter-x: 0.25rem; +} + +.g-1, +.gy-1 { + --bs-gutter-y: 0.25rem; +} + +.g-2, +.gx-2 { + --bs-gutter-x: 0.5rem; +} + +.g-2, +.gy-2 { + --bs-gutter-y: 0.5rem; +} + +.g-3, +.gx-3 { + --bs-gutter-x: 1rem; +} + +.g-3, +.gy-3 { + --bs-gutter-y: 1rem; +} + +.g-4, +.gx-4 { + --bs-gutter-x: 1.5rem; +} + +.g-4, +.gy-4 { + --bs-gutter-y: 1.5rem; +} + +.g-5, +.gx-5 { + --bs-gutter-x: 3rem; +} + +.g-5, +.gy-5 { + --bs-gutter-y: 3rem; +} + +@media (min-width: 576px) { + .col-sm { + flex: 1 0 0%; + } + .row-cols-sm-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-sm-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-sm-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-sm-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + .row-cols-sm-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-sm-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-sm-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + .col-sm-auto { + flex: 0 0 auto; + width: auto; + } + .col-sm-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-sm-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-sm-3 { + flex: 0 0 auto; + width: 25%; + } + .col-sm-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-sm-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-sm-6 { + flex: 0 0 auto; + width: 50%; + } + .col-sm-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-sm-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-sm-9 { + flex: 0 0 auto; + width: 75%; + } + .col-sm-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-sm-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-sm-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-sm-0 { + margin-left: 0; + } + .offset-sm-1 { + margin-left: 8.33333333%; + } + .offset-sm-2 { + margin-left: 16.66666667%; + } + .offset-sm-3 { + margin-left: 25%; + } + .offset-sm-4 { + margin-left: 33.33333333%; + } + .offset-sm-5 { + margin-left: 41.66666667%; + } + .offset-sm-6 { + margin-left: 50%; + } + .offset-sm-7 { + margin-left: 58.33333333%; + } + .offset-sm-8 { + margin-left: 66.66666667%; + } + .offset-sm-9 { + margin-left: 75%; + } + .offset-sm-10 { + margin-left: 83.33333333%; + } + .offset-sm-11 { + margin-left: 91.66666667%; + } + .g-sm-0, + .gx-sm-0 { + --bs-gutter-x: 0; + } + .g-sm-0, + .gy-sm-0 { + --bs-gutter-y: 0; + } + .g-sm-1, + .gx-sm-1 { + --bs-gutter-x: 0.25rem; + } + .g-sm-1, + .gy-sm-1 { + --bs-gutter-y: 0.25rem; + } + .g-sm-2, + .gx-sm-2 { + --bs-gutter-x: 0.5rem; + } + .g-sm-2, + .gy-sm-2 { + --bs-gutter-y: 0.5rem; + } + .g-sm-3, + .gx-sm-3 { + --bs-gutter-x: 1rem; + } + .g-sm-3, + .gy-sm-3 { + --bs-gutter-y: 1rem; + } + .g-sm-4, + .gx-sm-4 { + --bs-gutter-x: 1.5rem; + } + .g-sm-4, + .gy-sm-4 { + --bs-gutter-y: 1.5rem; + } + .g-sm-5, + .gx-sm-5 { + --bs-gutter-x: 3rem; + } + .g-sm-5, + .gy-sm-5 { + --bs-gutter-y: 3rem; + } +} +@media (min-width: 768px) { + .col-md { + flex: 1 0 0%; + } + .row-cols-md-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-md-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-md-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-md-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + .row-cols-md-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-md-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-md-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + .col-md-auto { + flex: 0 0 auto; + width: auto; + } + .col-md-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-md-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-md-3 { + flex: 0 0 auto; + width: 25%; + } + .col-md-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-md-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-md-6 { + flex: 0 0 auto; + width: 50%; + } + .col-md-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-md-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-md-9 { + flex: 0 0 auto; + width: 75%; + } + .col-md-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-md-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-md-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-md-0 { + margin-left: 0; + } + .offset-md-1 { + margin-left: 8.33333333%; + } + .offset-md-2 { + margin-left: 16.66666667%; + } + .offset-md-3 { + margin-left: 25%; + } + .offset-md-4 { + margin-left: 33.33333333%; + } + .offset-md-5 { + margin-left: 41.66666667%; + } + .offset-md-6 { + margin-left: 50%; + } + .offset-md-7 { + margin-left: 58.33333333%; + } + .offset-md-8 { + margin-left: 66.66666667%; + } + .offset-md-9 { + margin-left: 75%; + } + .offset-md-10 { + margin-left: 83.33333333%; + } + .offset-md-11 { + margin-left: 91.66666667%; + } + .g-md-0, + .gx-md-0 { + --bs-gutter-x: 0; + } + .g-md-0, + .gy-md-0 { + --bs-gutter-y: 0; + } + .g-md-1, + .gx-md-1 { + --bs-gutter-x: 0.25rem; + } + .g-md-1, + .gy-md-1 { + --bs-gutter-y: 0.25rem; + } + .g-md-2, + .gx-md-2 { + --bs-gutter-x: 0.5rem; + } + .g-md-2, + .gy-md-2 { + --bs-gutter-y: 0.5rem; + } + .g-md-3, + .gx-md-3 { + --bs-gutter-x: 1rem; + } + .g-md-3, + .gy-md-3 { + --bs-gutter-y: 1rem; + } + .g-md-4, + .gx-md-4 { + --bs-gutter-x: 1.5rem; + } + .g-md-4, + .gy-md-4 { + --bs-gutter-y: 1.5rem; + } + .g-md-5, + .gx-md-5 { + --bs-gutter-x: 3rem; + } + .g-md-5, + .gy-md-5 { + --bs-gutter-y: 3rem; + } +} +@media (min-width: 992px) { + .col-lg { + flex: 1 0 0%; + } + .row-cols-lg-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-lg-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-lg-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-lg-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + .row-cols-lg-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-lg-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-lg-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + .col-lg-auto { + flex: 0 0 auto; + width: auto; + } + .col-lg-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-lg-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-lg-3 { + flex: 0 0 auto; + width: 25%; + } + .col-lg-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-lg-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-lg-6 { + flex: 0 0 auto; + width: 50%; + } + .col-lg-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-lg-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-lg-9 { + flex: 0 0 auto; + width: 75%; + } + .col-lg-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-lg-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-lg-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-lg-0 { + margin-left: 0; + } + .offset-lg-1 { + margin-left: 8.33333333%; + } + .offset-lg-2 { + margin-left: 16.66666667%; + } + .offset-lg-3 { + margin-left: 25%; + } + .offset-lg-4 { + margin-left: 33.33333333%; + } + .offset-lg-5 { + margin-left: 41.66666667%; + } + .offset-lg-6 { + margin-left: 50%; + } + .offset-lg-7 { + margin-left: 58.33333333%; + } + .offset-lg-8 { + margin-left: 66.66666667%; + } + .offset-lg-9 { + margin-left: 75%; + } + .offset-lg-10 { + margin-left: 83.33333333%; + } + .offset-lg-11 { + margin-left: 91.66666667%; + } + .g-lg-0, + .gx-lg-0 { + --bs-gutter-x: 0; + } + .g-lg-0, + .gy-lg-0 { + --bs-gutter-y: 0; + } + .g-lg-1, + .gx-lg-1 { + --bs-gutter-x: 0.25rem; + } + .g-lg-1, + .gy-lg-1 { + --bs-gutter-y: 0.25rem; + } + .g-lg-2, + .gx-lg-2 { + --bs-gutter-x: 0.5rem; + } + .g-lg-2, + .gy-lg-2 { + --bs-gutter-y: 0.5rem; + } + .g-lg-3, + .gx-lg-3 { + --bs-gutter-x: 1rem; + } + .g-lg-3, + .gy-lg-3 { + --bs-gutter-y: 1rem; + } + .g-lg-4, + .gx-lg-4 { + --bs-gutter-x: 1.5rem; + } + .g-lg-4, + .gy-lg-4 { + --bs-gutter-y: 1.5rem; + } + .g-lg-5, + .gx-lg-5 { + --bs-gutter-x: 3rem; + } + .g-lg-5, + .gy-lg-5 { + --bs-gutter-y: 3rem; + } +} +@media (min-width: 1200px) { + .col-xl { + flex: 1 0 0%; + } + .row-cols-xl-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-xl-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-xl-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-xl-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + .row-cols-xl-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-xl-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-xl-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + .col-xl-auto { + flex: 0 0 auto; + width: auto; + } + .col-xl-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-xl-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-xl-3 { + flex: 0 0 auto; + width: 25%; + } + .col-xl-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-xl-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-xl-6 { + flex: 0 0 auto; + width: 50%; + } + .col-xl-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-xl-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-xl-9 { + flex: 0 0 auto; + width: 75%; + } + .col-xl-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-xl-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-xl-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-xl-0 { + margin-left: 0; + } + .offset-xl-1 { + margin-left: 8.33333333%; + } + .offset-xl-2 { + margin-left: 16.66666667%; + } + .offset-xl-3 { + margin-left: 25%; + } + .offset-xl-4 { + margin-left: 33.33333333%; + } + .offset-xl-5 { + margin-left: 41.66666667%; + } + .offset-xl-6 { + margin-left: 50%; + } + .offset-xl-7 { + margin-left: 58.33333333%; + } + .offset-xl-8 { + margin-left: 66.66666667%; + } + .offset-xl-9 { + margin-left: 75%; + } + .offset-xl-10 { + margin-left: 83.33333333%; + } + .offset-xl-11 { + margin-left: 91.66666667%; + } + .g-xl-0, + .gx-xl-0 { + --bs-gutter-x: 0; + } + .g-xl-0, + .gy-xl-0 { + --bs-gutter-y: 0; + } + .g-xl-1, + .gx-xl-1 { + --bs-gutter-x: 0.25rem; + } + .g-xl-1, + .gy-xl-1 { + --bs-gutter-y: 0.25rem; + } + .g-xl-2, + .gx-xl-2 { + --bs-gutter-x: 0.5rem; + } + .g-xl-2, + .gy-xl-2 { + --bs-gutter-y: 0.5rem; + } + .g-xl-3, + .gx-xl-3 { + --bs-gutter-x: 1rem; + } + .g-xl-3, + .gy-xl-3 { + --bs-gutter-y: 1rem; + } + .g-xl-4, + .gx-xl-4 { + --bs-gutter-x: 1.5rem; + } + .g-xl-4, + .gy-xl-4 { + --bs-gutter-y: 1.5rem; + } + .g-xl-5, + .gx-xl-5 { + --bs-gutter-x: 3rem; + } + .g-xl-5, + .gy-xl-5 { + --bs-gutter-y: 3rem; + } +} +@media (min-width: 1400px) { + .col-xxl { + flex: 1 0 0%; + } + .row-cols-xxl-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-xxl-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-xxl-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-xxl-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + .row-cols-xxl-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-xxl-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-xxl-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + .col-xxl-auto { + flex: 0 0 auto; + width: auto; + } + .col-xxl-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-xxl-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-xxl-3 { + flex: 0 0 auto; + width: 25%; + } + .col-xxl-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-xxl-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-xxl-6 { + flex: 0 0 auto; + width: 50%; + } + .col-xxl-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-xxl-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-xxl-9 { + flex: 0 0 auto; + width: 75%; + } + .col-xxl-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-xxl-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-xxl-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-xxl-0 { + margin-left: 0; + } + .offset-xxl-1 { + margin-left: 8.33333333%; + } + .offset-xxl-2 { + margin-left: 16.66666667%; + } + .offset-xxl-3 { + margin-left: 25%; + } + .offset-xxl-4 { + margin-left: 33.33333333%; + } + .offset-xxl-5 { + margin-left: 41.66666667%; + } + .offset-xxl-6 { + margin-left: 50%; + } + .offset-xxl-7 { + margin-left: 58.33333333%; + } + .offset-xxl-8 { + margin-left: 66.66666667%; + } + .offset-xxl-9 { + margin-left: 75%; + } + .offset-xxl-10 { + margin-left: 83.33333333%; + } + .offset-xxl-11 { + margin-left: 91.66666667%; + } + .g-xxl-0, + .gx-xxl-0 { + --bs-gutter-x: 0; + } + .g-xxl-0, + .gy-xxl-0 { + --bs-gutter-y: 0; + } + .g-xxl-1, + .gx-xxl-1 { + --bs-gutter-x: 0.25rem; + } + .g-xxl-1, + .gy-xxl-1 { + --bs-gutter-y: 0.25rem; + } + .g-xxl-2, + .gx-xxl-2 { + --bs-gutter-x: 0.5rem; + } + .g-xxl-2, + .gy-xxl-2 { + --bs-gutter-y: 0.5rem; + } + .g-xxl-3, + .gx-xxl-3 { + --bs-gutter-x: 1rem; + } + .g-xxl-3, + .gy-xxl-3 { + --bs-gutter-y: 1rem; + } + .g-xxl-4, + .gx-xxl-4 { + --bs-gutter-x: 1.5rem; + } + .g-xxl-4, + .gy-xxl-4 { + --bs-gutter-y: 1.5rem; + } + .g-xxl-5, + .gx-xxl-5 { + --bs-gutter-x: 3rem; + } + .g-xxl-5, + .gy-xxl-5 { + --bs-gutter-y: 3rem; + } +} +.table { + --bs-table-color: var(--bs-body-color); + --bs-table-bg: transparent; + --bs-table-border-color: var(--bs-border-color); + --bs-table-accent-bg: transparent; + --bs-table-striped-color: var(--bs-body-color); + --bs-table-striped-bg: rgba(0, 0, 0, 0.05); + --bs-table-active-color: var(--bs-body-color); + --bs-table-active-bg: rgba(0, 0, 0, 0.1); + --bs-table-hover-color: var(--bs-body-color); + --bs-table-hover-bg: rgba(0, 0, 0, 0.075); + width: 100%; + margin-bottom: 1rem; + color: var(--bs-table-color); + vertical-align: top; + border-color: var(--bs-table-border-color); +} +.table > :not(caption) > * > * { + padding: 0.5rem 0.5rem; + background-color: var(--bs-table-bg); + border-bottom-width: 1px; + box-shadow: inset 0 0 0 9999px var(--bs-table-accent-bg); +} +.table > tbody { + vertical-align: inherit; +} +.table > thead { + vertical-align: bottom; +} + +.table-group-divider { + border-top: 2px solid currentcolor; +} + +.caption-top { + caption-side: top; +} + +.table-sm > :not(caption) > * > * { + padding: 0.25rem 0.25rem; +} + +.table-bordered > :not(caption) > * { + border-width: 1px 0; +} +.table-bordered > :not(caption) > * > * { + border-width: 0 1px; +} + +.table-borderless > :not(caption) > * > * { + border-bottom-width: 0; +} +.table-borderless > :not(:first-child) { + border-top-width: 0; +} + +.table-striped > tbody > tr:nth-of-type(odd) > * { + --bs-table-accent-bg: var(--bs-table-striped-bg); + color: var(--bs-table-striped-color); +} + +.table-striped-columns > :not(caption) > tr > :nth-child(even) { + --bs-table-accent-bg: var(--bs-table-striped-bg); + color: var(--bs-table-striped-color); +} + +.table-active { + --bs-table-accent-bg: var(--bs-table-active-bg); + color: var(--bs-table-active-color); +} + +.table-hover > tbody > tr:hover > * { + --bs-table-accent-bg: var(--bs-table-hover-bg); + color: var(--bs-table-hover-color); +} + +.table-primary { + --bs-table-color: #000; + --bs-table-bg: #fff4cc; + --bs-table-border-color: #e6dcb8; + --bs-table-striped-bg: #f2e8c2; + --bs-table-striped-color: #000; + --bs-table-active-bg: #e6dcb8; + --bs-table-active-color: #000; + --bs-table-hover-bg: #ece2bd; + --bs-table-hover-color: #000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} + +.table-secondary { + --bs-table-color: #000; + --bs-table-bg: #e2e3e5; + --bs-table-border-color: #cbccce; + --bs-table-striped-bg: #d7d8da; + --bs-table-striped-color: #000; + --bs-table-active-bg: #cbccce; + --bs-table-active-color: #fff; + --bs-table-hover-bg: #d1d2d4; + --bs-table-hover-color: #fff; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} + +.table-success { + --bs-table-color: #000; + --bs-table-bg: #d1e7dd; + --bs-table-border-color: #bcd0c7; + --bs-table-striped-bg: #c7dbd2; + --bs-table-striped-color: #000; + --bs-table-active-bg: #bcd0c7; + --bs-table-active-color: #fff; + --bs-table-hover-bg: #c1d6cc; + --bs-table-hover-color: #fff; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} + +.table-info { + --bs-table-color: #000; + --bs-table-bg: #cff4fc; + --bs-table-border-color: #badce3; + --bs-table-striped-bg: #c5e8ef; + --bs-table-striped-color: #000; + --bs-table-active-bg: #badce3; + --bs-table-active-color: #000; + --bs-table-hover-bg: #bfe2e9; + --bs-table-hover-color: #000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} + +.table-warning { + --bs-table-color: #000; + --bs-table-bg: #fff4cc; + --bs-table-border-color: #e6dcb8; + --bs-table-striped-bg: #f2e8c2; + --bs-table-striped-color: #000; + --bs-table-active-bg: #e6dcb8; + --bs-table-active-color: #000; + --bs-table-hover-bg: #ece2bd; + --bs-table-hover-color: #000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} + +.table-danger { + --bs-table-color: #000; + --bs-table-bg: #f8d7da; + --bs-table-border-color: #dfc2c4; + --bs-table-striped-bg: #eccccf; + --bs-table-striped-color: #000; + --bs-table-active-bg: #dfc2c4; + --bs-table-active-color: #fff; + --bs-table-hover-bg: #e5c7ca; + --bs-table-hover-color: #fff; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} + +.table-light { + --bs-table-color: #000; + --bs-table-bg: #f8f9fa; + --bs-table-border-color: #dfe0e1; + --bs-table-striped-bg: #ecedee; + --bs-table-striped-color: #000; + --bs-table-active-bg: #dfe0e1; + --bs-table-active-color: #000; + --bs-table-hover-bg: #e5e6e7; + --bs-table-hover-color: #000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} + +.table-dark { + --bs-table-color: #fff; + --bs-table-bg: #212529; + --bs-table-border-color: #373b3e; + --bs-table-striped-bg: #2c3034; + --bs-table-striped-color: #fff; + --bs-table-active-bg: #373b3e; + --bs-table-active-color: #fff; + --bs-table-hover-bg: #323539; + --bs-table-hover-color: #fff; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} + +.table-responsive { + overflow-x: auto; + -webkit-overflow-scrolling: touch; +} + +@media (max-width: 575.98px) { + .table-responsive-sm { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +@media (max-width: 767.98px) { + .table-responsive-md { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +@media (max-width: 991.98px) { + .table-responsive-lg { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +@media (max-width: 1199.98px) { + .table-responsive-xl { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +@media (max-width: 1399.98px) { + .table-responsive-xxl { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +.form-label { + margin-bottom: 0.5rem; +} + +.col-form-label { + padding-top: calc(0.375rem + 1px); + padding-bottom: calc(0.375rem + 1px); + margin-bottom: 0; + font-size: inherit; + line-height: 1.5; +} + +.col-form-label-lg { + padding-top: calc(0.5rem + 1px); + padding-bottom: calc(0.5rem + 1px); + font-size: 1.25rem; +} + +.col-form-label-sm { + padding-top: calc(0.25rem + 1px); + padding-bottom: calc(0.25rem + 1px); + font-size: 0.875rem; +} + +.form-text { + margin-top: 0.25rem; + font-size: 0.875em; + color: #6c757d; +} + +.form-control { + display: block; + width: 100%; + padding: 0.375rem 0.75rem; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: #212529; + background-color: #fff; + background-clip: padding-box; + border: 1px solid #ced4da; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + border-radius: 0.375rem; + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-control { + transition: none; + } +} +.form-control[type=file] { + overflow: hidden; +} +.form-control[type=file]:not(:disabled):not([readonly]) { + cursor: pointer; +} +.form-control:focus { + color: #212529; + background-color: #fff; + border-color: #ffe480; + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(255, 200, 0, 0.25); +} +.form-control::-webkit-date-and-time-value { + height: 1.5em; +} +.form-control::-moz-placeholder { + color: #6c757d; + opacity: 1; +} +.form-control::placeholder { + color: #6c757d; + opacity: 1; +} +.form-control:disabled { + background-color: #e9ecef; + opacity: 1; +} +.form-control::file-selector-button { + padding: 0.375rem 0.75rem; + margin: -0.375rem -0.75rem; + -webkit-margin-end: 0.75rem; + margin-inline-end: 0.75rem; + color: #212529; + background-color: #e9ecef; + pointer-events: none; + border-color: inherit; + border-style: solid; + border-width: 0; + border-inline-end-width: 1px; + border-radius: 0; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-control::file-selector-button { + transition: none; + } +} +.form-control:hover:not(:disabled):not([readonly])::file-selector-button { + background-color: #dde0e3; +} + +.form-control-plaintext { + display: block; + width: 100%; + padding: 0.375rem 0; + margin-bottom: 0; + line-height: 1.5; + color: #212529; + background-color: transparent; + border: solid transparent; + border-width: 1px 0; +} +.form-control-plaintext:focus { + outline: 0; +} +.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg { + padding-right: 0; + padding-left: 0; +} + +.form-control-sm { + min-height: calc(1.5em + 0.5rem + 2px); + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + border-radius: 0.25rem; +} +.form-control-sm::file-selector-button { + padding: 0.25rem 0.5rem; + margin: -0.25rem -0.5rem; + -webkit-margin-end: 0.5rem; + margin-inline-end: 0.5rem; +} + +.form-control-lg { + min-height: calc(1.5em + 1rem + 2px); + padding: 0.5rem 1rem; + font-size: 1.25rem; + border-radius: 0.5rem; +} +.form-control-lg::file-selector-button { + padding: 0.5rem 1rem; + margin: -0.5rem -1rem; + -webkit-margin-end: 1rem; + margin-inline-end: 1rem; +} + +textarea.form-control { + min-height: calc(1.5em + 0.75rem + 2px); +} +textarea.form-control-sm { + min-height: calc(1.5em + 0.5rem + 2px); +} +textarea.form-control-lg { + min-height: calc(1.5em + 1rem + 2px); +} + +.form-control-color { + width: 3rem; + height: calc(1.5em + 0.75rem + 2px); + padding: 0.375rem; +} +.form-control-color:not(:disabled):not([readonly]) { + cursor: pointer; +} +.form-control-color::-moz-color-swatch { + border: 0 !important; + border-radius: 0.375rem; +} +.form-control-color::-webkit-color-swatch { + border-radius: 0.375rem; +} +.form-control-color.form-control-sm { + height: calc(1.5em + 0.5rem + 2px); +} +.form-control-color.form-control-lg { + height: calc(1.5em + 1rem + 2px); +} + +.form-select { + display: block; + width: 100%; + padding: 0.375rem 2.25rem 0.375rem 0.75rem; + -moz-padding-start: calc(0.75rem - 3px); + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: #212529; + background-color: #fff; + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: right 0.75rem center; + background-size: 16px 12px; + border: 1px solid #ced4da; + border-radius: 0.375rem; + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} +@media (prefers-reduced-motion: reduce) { + .form-select { + transition: none; + } +} +.form-select:focus { + border-color: #ffe480; + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(255, 200, 0, 0.25); +} +.form-select[multiple], .form-select[size]:not([size="1"]) { + padding-right: 0.75rem; + background-image: none; +} +.form-select:disabled { + background-color: #e9ecef; +} +.form-select:-moz-focusring { + color: transparent; + text-shadow: 0 0 0 #212529; +} + +.form-select-sm { + padding-top: 0.25rem; + padding-bottom: 0.25rem; + padding-left: 0.5rem; + font-size: 0.875rem; + border-radius: 0.25rem; +} + +.form-select-lg { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + padding-left: 1rem; + font-size: 1.25rem; + border-radius: 0.5rem; +} + +.form-check { + display: block; + min-height: 1.5rem; + padding-left: 1.5em; + margin-bottom: 0.125rem; +} +.form-check .form-check-input { + float: left; + margin-left: -1.5em; +} + +.form-check-reverse { + padding-right: 1.5em; + padding-left: 0; + text-align: right; +} +.form-check-reverse .form-check-input { + float: right; + margin-right: -1.5em; + margin-left: 0; +} + +.form-check-input { + width: 1em; + height: 1em; + margin-top: 0.25em; + vertical-align: top; + background-color: #fff; + background-repeat: no-repeat; + background-position: center; + background-size: contain; + border: 1px solid rgba(0, 0, 0, 0.25); + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + -webkit-print-color-adjust: exact; + print-color-adjust: exact; +} +.form-check-input[type=checkbox] { + border-radius: 0.25em; +} +.form-check-input[type=radio] { + border-radius: 50%; +} +.form-check-input:active { + filter: brightness(90%); +} +.form-check-input:focus { + border-color: #ffe480; + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(255, 200, 0, 0.25); +} +.form-check-input:checked { + background-color: #ffc800; + border-color: #ffc800; +} +.form-check-input:checked[type=checkbox] { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e"); +} +.form-check-input:checked[type=radio] { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e"); +} +.form-check-input[type=checkbox]:indeterminate { + background-color: #ffc800; + border-color: #ffc800; + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e"); +} +.form-check-input:disabled { + pointer-events: none; + filter: none; + opacity: 0.5; +} +.form-check-input[disabled] ~ .form-check-label, .form-check-input:disabled ~ .form-check-label { + cursor: default; + opacity: 0.5; +} + +.form-switch { + padding-left: 2.5em; +} +.form-switch .form-check-input { + width: 2em; + margin-left: -2.5em; + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e"); + background-position: left center; + border-radius: 2em; + transition: background-position 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-switch .form-check-input { + transition: none; + } +} +.form-switch .form-check-input:focus { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23ffe480'/%3e%3c/svg%3e"); +} +.form-switch .form-check-input:checked { + background-position: right center; + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e"); +} +.form-switch.form-check-reverse { + padding-right: 2.5em; + padding-left: 0; +} +.form-switch.form-check-reverse .form-check-input { + margin-right: -2.5em; + margin-left: 0; +} + +.form-check-inline { + display: inline-block; + margin-right: 1rem; +} + +.btn-check { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; +} +.btn-check[disabled] + .btn, .btn-check:disabled + .btn { + pointer-events: none; + filter: none; + opacity: 0.65; +} + +.form-range { + width: 100%; + height: 1.5rem; + padding: 0; + background-color: transparent; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} +.form-range:focus { + outline: 0; +} +.form-range:focus::-webkit-slider-thumb { + box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(255, 200, 0, 0.25); +} +.form-range:focus::-moz-range-thumb { + box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(255, 200, 0, 0.25); +} +.form-range::-moz-focus-outer { + border: 0; +} +.form-range::-webkit-slider-thumb { + width: 1rem; + height: 1rem; + margin-top: -0.25rem; + background-color: #ffc800; + border: 0; + border-radius: 1rem; + -webkit-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + -webkit-appearance: none; + appearance: none; +} +@media (prefers-reduced-motion: reduce) { + .form-range::-webkit-slider-thumb { + -webkit-transition: none; + transition: none; + } +} +.form-range::-webkit-slider-thumb:active { + background-color: #ffefb3; +} +.form-range::-webkit-slider-runnable-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: #dee2e6; + border-color: transparent; + border-radius: 1rem; +} +.form-range::-moz-range-thumb { + width: 1rem; + height: 1rem; + background-color: #ffc800; + border: 0; + border-radius: 1rem; + -moz-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + -moz-appearance: none; + appearance: none; +} +@media (prefers-reduced-motion: reduce) { + .form-range::-moz-range-thumb { + -moz-transition: none; + transition: none; + } +} +.form-range::-moz-range-thumb:active { + background-color: #ffefb3; +} +.form-range::-moz-range-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: #dee2e6; + border-color: transparent; + border-radius: 1rem; +} +.form-range:disabled { + pointer-events: none; +} +.form-range:disabled::-webkit-slider-thumb { + background-color: #adb5bd; +} +.form-range:disabled::-moz-range-thumb { + background-color: #adb5bd; +} + +.form-floating { + position: relative; +} +.form-floating > .form-control, +.form-floating > .form-control-plaintext, +.form-floating > .form-select { + height: calc(3.5rem + 2px); + line-height: 1.25; +} +.form-floating > label { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + padding: 1rem 0.75rem; + overflow: hidden; + text-align: start; + text-overflow: ellipsis; + white-space: nowrap; + pointer-events: none; + border: 1px solid transparent; + transform-origin: 0 0; + transition: opacity 0.1s ease-in-out, transform 0.1s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-floating > label { + transition: none; + } +} +.form-floating > .form-control, +.form-floating > .form-control-plaintext { + padding: 1rem 0.75rem; +} +.form-floating > .form-control::-moz-placeholder, .form-floating > .form-control-plaintext::-moz-placeholder { + color: transparent; +} +.form-floating > .form-control::placeholder, +.form-floating > .form-control-plaintext::placeholder { + color: transparent; +} +.form-floating > .form-control:not(:-moz-placeholder-shown), .form-floating > .form-control-plaintext:not(:-moz-placeholder-shown) { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} +.form-floating > .form-control:focus, .form-floating > .form-control:not(:placeholder-shown), +.form-floating > .form-control-plaintext:focus, +.form-floating > .form-control-plaintext:not(:placeholder-shown) { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} +.form-floating > .form-control:-webkit-autofill, +.form-floating > .form-control-plaintext:-webkit-autofill { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} +.form-floating > .form-select { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} +.form-floating > .form-control:not(:-moz-placeholder-shown) ~ label { + opacity: 0.65; + transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem); +} +.form-floating > .form-control:focus ~ label, +.form-floating > .form-control:not(:placeholder-shown) ~ label, +.form-floating > .form-control-plaintext ~ label, +.form-floating > .form-select ~ label { + opacity: 0.65; + transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem); +} +.form-floating > .form-control:-webkit-autofill ~ label { + opacity: 0.65; + transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem); +} +.form-floating > .form-control-plaintext ~ label { + border-width: 1px 0; +} + +.input-group { + position: relative; + display: flex; + flex-wrap: wrap; + align-items: stretch; + width: 100%; +} +.input-group > .form-control, +.input-group > .form-select, +.input-group > .form-floating { + position: relative; + flex: 1 1 auto; + width: 1%; + min-width: 0; +} +.input-group > .form-control:focus, +.input-group > .form-select:focus, +.input-group > .form-floating:focus-within { + z-index: 5; +} +.input-group .btn { + position: relative; + z-index: 2; +} +.input-group .btn:focus { + z-index: 5; +} + +.input-group-text { + display: flex; + align-items: center; + padding: 0.375rem 0.75rem; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: #212529; + text-align: center; + white-space: nowrap; + background-color: #e9ecef; + border: 1px solid #ced4da; + border-radius: 0.375rem; +} + +.input-group-lg > .form-control, +.input-group-lg > .form-select, +.input-group-lg > .input-group-text, +.input-group-lg > .btn { + padding: 0.5rem 1rem; + font-size: 1.25rem; + border-radius: 0.5rem; +} + +.input-group-sm > .form-control, +.input-group-sm > .form-select, +.input-group-sm > .input-group-text, +.input-group-sm > .btn { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + border-radius: 0.25rem; +} + +.input-group-lg > .form-select, +.input-group-sm > .form-select { + padding-right: 3rem; +} + +.input-group:not(.has-validation) > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating), +.input-group:not(.has-validation) > .dropdown-toggle:nth-last-child(n+3), +.input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-control, +.input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-select { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.input-group.has-validation > :nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating), +.input-group.has-validation > .dropdown-toggle:nth-last-child(n+4), +.input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-control, +.input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-select { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.input-group > :not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback) { + margin-left: -1px; + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.input-group > .form-floating:not(:first-child) > .form-control, +.input-group > .form-floating:not(:first-child) > .form-select { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.valid-feedback { + display: none; + width: 100%; + margin-top: 0.25rem; + font-size: 0.875em; + color: #198754; +} + +.valid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: 0.25rem 0.5rem; + margin-top: 0.1rem; + font-size: 0.875rem; + color: #fff; + background-color: rgba(25, 135, 84, 0.9); + border-radius: 0.375rem; +} + +.was-validated :valid ~ .valid-feedback, +.was-validated :valid ~ .valid-tooltip, +.is-valid ~ .valid-feedback, +.is-valid ~ .valid-tooltip { + display: block; +} + +.was-validated .form-control:valid, .form-control.is-valid { + border-color: #198754; + padding-right: calc(1.5em + 0.75rem); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: right calc(0.375em + 0.1875rem) center; + background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); +} +.was-validated .form-control:valid:focus, .form-control.is-valid:focus { + border-color: #198754; + box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25); +} + +.was-validated textarea.form-control:valid, textarea.form-control.is-valid { + padding-right: calc(1.5em + 0.75rem); + background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem); +} + +.was-validated .form-select:valid, .form-select.is-valid { + border-color: #198754; +} +.was-validated .form-select:valid:not([multiple]):not([size]), .was-validated .form-select:valid:not([multiple])[size="1"], .form-select.is-valid:not([multiple]):not([size]), .form-select.is-valid:not([multiple])[size="1"] { + padding-right: 4.125rem; + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"), url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"); + background-position: right 0.75rem center, center right 2.25rem; + background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); +} +.was-validated .form-select:valid:focus, .form-select.is-valid:focus { + border-color: #198754; + box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25); +} + +.was-validated .form-control-color:valid, .form-control-color.is-valid { + width: calc(3rem + calc(1.5em + 0.75rem)); +} + +.was-validated .form-check-input:valid, .form-check-input.is-valid { + border-color: #198754; +} +.was-validated .form-check-input:valid:checked, .form-check-input.is-valid:checked { + background-color: #198754; +} +.was-validated .form-check-input:valid:focus, .form-check-input.is-valid:focus { + box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25); +} +.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label { + color: #198754; +} + +.form-check-inline .form-check-input ~ .valid-feedback { + margin-left: 0.5em; +} + +.was-validated .input-group > .form-control:not(:focus):valid, .input-group > .form-control:not(:focus).is-valid, +.was-validated .input-group > .form-select:not(:focus):valid, +.input-group > .form-select:not(:focus).is-valid, +.was-validated .input-group > .form-floating:not(:focus-within):valid, +.input-group > .form-floating:not(:focus-within).is-valid { + z-index: 3; +} + +.invalid-feedback { + display: none; + width: 100%; + margin-top: 0.25rem; + font-size: 0.875em; + color: #dc3545; +} + +.invalid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: 0.25rem 0.5rem; + margin-top: 0.1rem; + font-size: 0.875rem; + color: #fff; + background-color: rgba(220, 53, 69, 0.9); + border-radius: 0.375rem; +} + +.was-validated :invalid ~ .invalid-feedback, +.was-validated :invalid ~ .invalid-tooltip, +.is-invalid ~ .invalid-feedback, +.is-invalid ~ .invalid-tooltip { + display: block; +} + +.was-validated .form-control:invalid, .form-control.is-invalid { + border-color: #dc3545; + padding-right: calc(1.5em + 0.75rem); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: right calc(0.375em + 0.1875rem) center; + background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); +} +.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus { + border-color: #dc3545; + box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25); +} + +.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid { + padding-right: calc(1.5em + 0.75rem); + background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem); +} + +.was-validated .form-select:invalid, .form-select.is-invalid { + border-color: #dc3545; +} +.was-validated .form-select:invalid:not([multiple]):not([size]), .was-validated .form-select:invalid:not([multiple])[size="1"], .form-select.is-invalid:not([multiple]):not([size]), .form-select.is-invalid:not([multiple])[size="1"] { + padding-right: 4.125rem; + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"), url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e"); + background-position: right 0.75rem center, center right 2.25rem; + background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); +} +.was-validated .form-select:invalid:focus, .form-select.is-invalid:focus { + border-color: #dc3545; + box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25); +} + +.was-validated .form-control-color:invalid, .form-control-color.is-invalid { + width: calc(3rem + calc(1.5em + 0.75rem)); +} + +.was-validated .form-check-input:invalid, .form-check-input.is-invalid { + border-color: #dc3545; +} +.was-validated .form-check-input:invalid:checked, .form-check-input.is-invalid:checked { + background-color: #dc3545; +} +.was-validated .form-check-input:invalid:focus, .form-check-input.is-invalid:focus { + box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25); +} +.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label { + color: #dc3545; +} + +.form-check-inline .form-check-input ~ .invalid-feedback { + margin-left: 0.5em; +} + +.was-validated .input-group > .form-control:not(:focus):invalid, .input-group > .form-control:not(:focus).is-invalid, +.was-validated .input-group > .form-select:not(:focus):invalid, +.input-group > .form-select:not(:focus).is-invalid, +.was-validated .input-group > .form-floating:not(:focus-within):invalid, +.input-group > .form-floating:not(:focus-within).is-invalid { + z-index: 4; +} + +.btn { + --bs-btn-padding-x: 0.75rem; + --bs-btn-padding-y: 0.375rem; + --bs-btn-font-family: ; + --bs-btn-font-size: 1rem; + --bs-btn-font-weight: 400; + --bs-btn-line-height: 1.5; + --bs-btn-color: #212529; + --bs-btn-bg: transparent; + --bs-btn-border-width: 1px; + --bs-btn-border-color: transparent; + --bs-btn-border-radius: 0.375rem; + --bs-btn-hover-border-color: transparent; + --bs-btn-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075); + --bs-btn-disabled-opacity: 0.65; + --bs-btn-focus-box-shadow: 0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5); + display: inline-block; + padding: var(--bs-btn-padding-y) var(--bs-btn-padding-x); + font-family: var(--bs-btn-font-family); + font-size: var(--bs-btn-font-size); + font-weight: var(--bs-btn-font-weight); + line-height: var(--bs-btn-line-height); + color: var(--bs-btn-color); + text-align: center; + text-decoration: none; + vertical-align: middle; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + border: var(--bs-btn-border-width) solid var(--bs-btn-border-color); + border-radius: var(--bs-btn-border-radius); + background-color: var(--bs-btn-bg); + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .btn { + transition: none; + } +} +.btn:hover { + color: var(--bs-btn-hover-color); + background-color: var(--bs-btn-hover-bg); + border-color: var(--bs-btn-hover-border-color); +} +.btn-check + .btn:hover { + color: var(--bs-btn-color); + background-color: var(--bs-btn-bg); + border-color: var(--bs-btn-border-color); +} +.btn:focus-visible { + color: var(--bs-btn-hover-color); + background-color: var(--bs-btn-hover-bg); + border-color: var(--bs-btn-hover-border-color); + outline: 0; + box-shadow: var(--bs-btn-focus-box-shadow); +} +.btn-check:focus-visible + .btn { + border-color: var(--bs-btn-hover-border-color); + outline: 0; + box-shadow: var(--bs-btn-focus-box-shadow); +} +.btn-check:checked + .btn, :not(.btn-check) + .btn:active, .btn:first-child:active, .btn.active, .btn.show { + color: var(--bs-btn-active-color); + background-color: var(--bs-btn-active-bg); + border-color: var(--bs-btn-active-border-color); +} +.btn-check:checked + .btn:focus-visible, :not(.btn-check) + .btn:active:focus-visible, .btn:first-child:active:focus-visible, .btn.active:focus-visible, .btn.show:focus-visible { + box-shadow: var(--bs-btn-focus-box-shadow); +} +.btn:disabled, .btn.disabled, fieldset:disabled .btn { + color: var(--bs-btn-disabled-color); + pointer-events: none; + background-color: var(--bs-btn-disabled-bg); + border-color: var(--bs-btn-disabled-border-color); + opacity: var(--bs-btn-disabled-opacity); +} + +.btn-primary { + --bs-btn-color: #fff; + --bs-btn-bg: #ffc800; + --bs-btn-border-color: #ffc800; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #d9aa00; + --bs-btn-hover-border-color: #cca000; + --bs-btn-focus-shadow-rgb: 255, 208, 38; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #cca000; + --bs-btn-active-border-color: #bf9600; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #ffc800; + --bs-btn-disabled-border-color: #ffc800; +} + +.btn-secondary { + --bs-btn-color: #fff; + --bs-btn-bg: #6c757d; + --bs-btn-border-color: #6c757d; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #5c636a; + --bs-btn-hover-border-color: #565e64; + --bs-btn-focus-shadow-rgb: 130, 138, 145; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #565e64; + --bs-btn-active-border-color: #51585e; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #6c757d; + --bs-btn-disabled-border-color: #6c757d; +} + +.btn-success { + --bs-btn-color: #fff; + --bs-btn-bg: #198754; + --bs-btn-border-color: #198754; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #157347; + --bs-btn-hover-border-color: #146c43; + --bs-btn-focus-shadow-rgb: 60, 153, 110; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #146c43; + --bs-btn-active-border-color: #13653f; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #198754; + --bs-btn-disabled-border-color: #198754; +} + +.btn-info { + --bs-btn-color: #fff; + --bs-btn-bg: #0dcaf0; + --bs-btn-border-color: #0dcaf0; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #0baccc; + --bs-btn-hover-border-color: #0aa2c0; + --bs-btn-focus-shadow-rgb: 49, 210, 242; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #0aa2c0; + --bs-btn-active-border-color: #0a98b4; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #0dcaf0; + --bs-btn-disabled-border-color: #0dcaf0; +} + +.btn-warning { + --bs-btn-color: #fff; + --bs-btn-bg: #ffc800; + --bs-btn-border-color: #ffc800; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #d9aa00; + --bs-btn-hover-border-color: #cca000; + --bs-btn-focus-shadow-rgb: 255, 208, 38; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #cca000; + --bs-btn-active-border-color: #bf9600; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #ffc800; + --bs-btn-disabled-border-color: #ffc800; +} + +.btn-danger { + --bs-btn-color: #fff; + --bs-btn-bg: #dc3545; + --bs-btn-border-color: #dc3545; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #bb2d3b; + --bs-btn-hover-border-color: #b02a37; + --bs-btn-focus-shadow-rgb: 225, 83, 97; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #b02a37; + --bs-btn-active-border-color: #a52834; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #dc3545; + --bs-btn-disabled-border-color: #dc3545; +} + +.btn-light { + --bs-btn-color: #000; + --bs-btn-bg: #f8f9fa; + --bs-btn-border-color: #f8f9fa; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #d3d4d5; + --bs-btn-hover-border-color: #c6c7c8; + --bs-btn-focus-shadow-rgb: 211, 212, 213; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #c6c7c8; + --bs-btn-active-border-color: #babbbc; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #000; + --bs-btn-disabled-bg: #f8f9fa; + --bs-btn-disabled-border-color: #f8f9fa; +} + +.btn-dark { + --bs-btn-color: #fff; + --bs-btn-bg: #212529; + --bs-btn-border-color: #212529; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #424649; + --bs-btn-hover-border-color: #373b3e; + --bs-btn-focus-shadow-rgb: 66, 70, 73; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #4d5154; + --bs-btn-active-border-color: #373b3e; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #212529; + --bs-btn-disabled-border-color: #212529; +} + +.btn-outline-primary { + --bs-btn-color: #ffc800; + --bs-btn-border-color: #ffc800; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #ffc800; + --bs-btn-hover-border-color: #ffc800; + --bs-btn-focus-shadow-rgb: 255, 200, 0; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #ffc800; + --bs-btn-active-border-color: #ffc800; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #ffc800; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #ffc800; + --bs-gradient: none; +} + +.btn-outline-secondary { + --bs-btn-color: #6c757d; + --bs-btn-border-color: #6c757d; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #6c757d; + --bs-btn-hover-border-color: #6c757d; + --bs-btn-focus-shadow-rgb: 108, 117, 125; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #6c757d; + --bs-btn-active-border-color: #6c757d; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #6c757d; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #6c757d; + --bs-gradient: none; +} + +.btn-outline-success { + --bs-btn-color: #198754; + --bs-btn-border-color: #198754; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #198754; + --bs-btn-hover-border-color: #198754; + --bs-btn-focus-shadow-rgb: 25, 135, 84; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #198754; + --bs-btn-active-border-color: #198754; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #198754; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #198754; + --bs-gradient: none; +} + +.btn-outline-info { + --bs-btn-color: #0dcaf0; + --bs-btn-border-color: #0dcaf0; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #0dcaf0; + --bs-btn-hover-border-color: #0dcaf0; + --bs-btn-focus-shadow-rgb: 13, 202, 240; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #0dcaf0; + --bs-btn-active-border-color: #0dcaf0; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #0dcaf0; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #0dcaf0; + --bs-gradient: none; +} + +.btn-outline-warning { + --bs-btn-color: #ffc800; + --bs-btn-border-color: #ffc800; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #ffc800; + --bs-btn-hover-border-color: #ffc800; + --bs-btn-focus-shadow-rgb: 255, 200, 0; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #ffc800; + --bs-btn-active-border-color: #ffc800; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #ffc800; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #ffc800; + --bs-gradient: none; +} + +.btn-outline-danger { + --bs-btn-color: #dc3545; + --bs-btn-border-color: #dc3545; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #dc3545; + --bs-btn-hover-border-color: #dc3545; + --bs-btn-focus-shadow-rgb: 220, 53, 69; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #dc3545; + --bs-btn-active-border-color: #dc3545; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #dc3545; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #dc3545; + --bs-gradient: none; +} + +.btn-outline-light { + --bs-btn-color: #f8f9fa; + --bs-btn-border-color: #f8f9fa; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #f8f9fa; + --bs-btn-hover-border-color: #f8f9fa; + --bs-btn-focus-shadow-rgb: 248, 249, 250; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #f8f9fa; + --bs-btn-active-border-color: #f8f9fa; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #f8f9fa; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #f8f9fa; + --bs-gradient: none; +} + +.btn-outline-dark { + --bs-btn-color: #212529; + --bs-btn-border-color: #212529; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #212529; + --bs-btn-hover-border-color: #212529; + --bs-btn-focus-shadow-rgb: 33, 37, 41; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #212529; + --bs-btn-active-border-color: #212529; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #212529; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #212529; + --bs-gradient: none; +} + +.btn-link { + --bs-btn-font-weight: 400; + --bs-btn-color: var(--bs-link-color); + --bs-btn-bg: transparent; + --bs-btn-border-color: transparent; + --bs-btn-hover-color: var(--bs-link-hover-color); + --bs-btn-hover-border-color: transparent; + --bs-btn-active-color: var(--bs-link-hover-color); + --bs-btn-active-border-color: transparent; + --bs-btn-disabled-color: #6c757d; + --bs-btn-disabled-border-color: transparent; + --bs-btn-box-shadow: none; + --bs-btn-focus-shadow-rgb: 255, 208, 38; + text-decoration: underline; +} +.btn-link:focus-visible { + color: var(--bs-btn-color); +} +.btn-link:hover { + color: var(--bs-btn-hover-color); +} + +.btn-lg, .btn-group-lg > .btn { + --bs-btn-padding-y: 0.5rem; + --bs-btn-padding-x: 1rem; + --bs-btn-font-size: 1.25rem; + --bs-btn-border-radius: 0.5rem; +} + +.btn-sm, .btn-group-sm > .btn { + --bs-btn-padding-y: 0.25rem; + --bs-btn-padding-x: 0.5rem; + --bs-btn-font-size: 0.875rem; + --bs-btn-border-radius: 0.25rem; +} + +.fade { + transition: opacity 0.15s linear; +} +@media (prefers-reduced-motion: reduce) { + .fade { + transition: none; + } +} +.fade:not(.show) { + opacity: 0; +} + +.collapse:not(.show) { + display: none; +} + +.collapsing { + height: 0; + overflow: hidden; + transition: height 0.35s ease; +} +@media (prefers-reduced-motion: reduce) { + .collapsing { + transition: none; + } +} +.collapsing.collapse-horizontal { + width: 0; + height: auto; + transition: width 0.35s ease; +} +@media (prefers-reduced-motion: reduce) { + .collapsing.collapse-horizontal { + transition: none; + } +} + +.dropup, +.dropend, +.dropdown, +.dropstart, +.dropup-center, +.dropdown-center { + position: relative; +} + +.dropdown-toggle { + white-space: nowrap; +} +.dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid; + border-right: 0.3em solid transparent; + border-bottom: 0; + border-left: 0.3em solid transparent; +} +.dropdown-toggle:empty::after { + margin-left: 0; +} + +.dropdown-menu { + --bs-dropdown-zindex: 1000; + --bs-dropdown-min-width: 10rem; + --bs-dropdown-padding-x: 0; + --bs-dropdown-padding-y: 0.5rem; + --bs-dropdown-spacer: 0.125rem; + --bs-dropdown-font-size: 1rem; + --bs-dropdown-color: #212529; + --bs-dropdown-bg: #fff; + --bs-dropdown-border-color: var(--bs-border-color-translucent); + --bs-dropdown-border-radius: 0.375rem; + --bs-dropdown-border-width: 1px; + --bs-dropdown-inner-border-radius: calc(0.375rem - 1px); + --bs-dropdown-divider-bg: var(--bs-border-color-translucent); + --bs-dropdown-divider-margin-y: 0.5rem; + --bs-dropdown-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15); + --bs-dropdown-link-color: #212529; + --bs-dropdown-link-hover-color: #1e2125; + --bs-dropdown-link-hover-bg: #e9ecef; + --bs-dropdown-link-active-color: #fff; + --bs-dropdown-link-active-bg: #ffc800; + --bs-dropdown-link-disabled-color: #adb5bd; + --bs-dropdown-item-padding-x: 1rem; + --bs-dropdown-item-padding-y: 0.25rem; + --bs-dropdown-header-color: #6c757d; + --bs-dropdown-header-padding-x: 1rem; + --bs-dropdown-header-padding-y: 0.5rem; + position: absolute; + z-index: var(--bs-dropdown-zindex); + display: none; + min-width: var(--bs-dropdown-min-width); + padding: var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x); + margin: 0; + font-size: var(--bs-dropdown-font-size); + color: var(--bs-dropdown-color); + text-align: left; + list-style: none; + background-color: var(--bs-dropdown-bg); + background-clip: padding-box; + border: var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color); + border-radius: var(--bs-dropdown-border-radius); +} +.dropdown-menu[data-bs-popper] { + top: 100%; + left: 0; + margin-top: var(--bs-dropdown-spacer); +} + +.dropdown-menu-start { + --bs-position: start; +} +.dropdown-menu-start[data-bs-popper] { + right: auto; + left: 0; +} + +.dropdown-menu-end { + --bs-position: end; +} +.dropdown-menu-end[data-bs-popper] { + right: 0; + left: auto; +} + +@media (min-width: 576px) { + .dropdown-menu-sm-start { + --bs-position: start; + } + .dropdown-menu-sm-start[data-bs-popper] { + right: auto; + left: 0; + } + .dropdown-menu-sm-end { + --bs-position: end; + } + .dropdown-menu-sm-end[data-bs-popper] { + right: 0; + left: auto; + } +} +@media (min-width: 768px) { + .dropdown-menu-md-start { + --bs-position: start; + } + .dropdown-menu-md-start[data-bs-popper] { + right: auto; + left: 0; + } + .dropdown-menu-md-end { + --bs-position: end; + } + .dropdown-menu-md-end[data-bs-popper] { + right: 0; + left: auto; + } +} +@media (min-width: 992px) { + .dropdown-menu-lg-start { + --bs-position: start; + } + .dropdown-menu-lg-start[data-bs-popper] { + right: auto; + left: 0; + } + .dropdown-menu-lg-end { + --bs-position: end; + } + .dropdown-menu-lg-end[data-bs-popper] { + right: 0; + left: auto; + } +} +@media (min-width: 1200px) { + .dropdown-menu-xl-start { + --bs-position: start; + } + .dropdown-menu-xl-start[data-bs-popper] { + right: auto; + left: 0; + } + .dropdown-menu-xl-end { + --bs-position: end; + } + .dropdown-menu-xl-end[data-bs-popper] { + right: 0; + left: auto; + } +} +@media (min-width: 1400px) { + .dropdown-menu-xxl-start { + --bs-position: start; + } + .dropdown-menu-xxl-start[data-bs-popper] { + right: auto; + left: 0; + } + .dropdown-menu-xxl-end { + --bs-position: end; + } + .dropdown-menu-xxl-end[data-bs-popper] { + right: 0; + left: auto; + } +} +.dropup .dropdown-menu[data-bs-popper] { + top: auto; + bottom: 100%; + margin-top: 0; + margin-bottom: var(--bs-dropdown-spacer); +} +.dropup .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0; + border-right: 0.3em solid transparent; + border-bottom: 0.3em solid; + border-left: 0.3em solid transparent; +} +.dropup .dropdown-toggle:empty::after { + margin-left: 0; +} + +.dropend .dropdown-menu[data-bs-popper] { + top: 0; + right: auto; + left: 100%; + margin-top: 0; + margin-left: var(--bs-dropdown-spacer); +} +.dropend .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid transparent; + border-right: 0; + border-bottom: 0.3em solid transparent; + border-left: 0.3em solid; +} +.dropend .dropdown-toggle:empty::after { + margin-left: 0; +} +.dropend .dropdown-toggle::after { + vertical-align: 0; +} + +.dropstart .dropdown-menu[data-bs-popper] { + top: 0; + right: 100%; + left: auto; + margin-top: 0; + margin-right: var(--bs-dropdown-spacer); +} +.dropstart .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; +} +.dropstart .dropdown-toggle::after { + display: none; +} +.dropstart .dropdown-toggle::before { + display: inline-block; + margin-right: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid transparent; + border-right: 0.3em solid; + border-bottom: 0.3em solid transparent; +} +.dropstart .dropdown-toggle:empty::after { + margin-left: 0; +} +.dropstart .dropdown-toggle::before { + vertical-align: 0; +} + +.dropdown-divider { + height: 0; + margin: var(--bs-dropdown-divider-margin-y) 0; + overflow: hidden; + border-top: 1px solid var(--bs-dropdown-divider-bg); + opacity: 1; +} + +.dropdown-item { + display: block; + width: 100%; + padding: var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x); + clear: both; + font-weight: 400; + color: var(--bs-dropdown-link-color); + text-align: inherit; + text-decoration: none; + white-space: nowrap; + background-color: transparent; + border: 0; +} +.dropdown-item:hover, .dropdown-item:focus { + color: var(--bs-dropdown-link-hover-color); + background-color: var(--bs-dropdown-link-hover-bg); +} +.dropdown-item.active, .dropdown-item:active { + color: var(--bs-dropdown-link-active-color); + text-decoration: none; + background-color: var(--bs-dropdown-link-active-bg); +} +.dropdown-item.disabled, .dropdown-item:disabled { + color: var(--bs-dropdown-link-disabled-color); + pointer-events: none; + background-color: transparent; +} + +.dropdown-menu.show { + display: block; +} + +.dropdown-header { + display: block; + padding: var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x); + margin-bottom: 0; + font-size: 0.875rem; + color: var(--bs-dropdown-header-color); + white-space: nowrap; +} + +.dropdown-item-text { + display: block; + padding: var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x); + color: var(--bs-dropdown-link-color); +} + +.dropdown-menu-dark { + --bs-dropdown-color: #dee2e6; + --bs-dropdown-bg: #343a40; + --bs-dropdown-border-color: var(--bs-border-color-translucent); + --bs-dropdown-box-shadow: ; + --bs-dropdown-link-color: #dee2e6; + --bs-dropdown-link-hover-color: #fff; + --bs-dropdown-divider-bg: var(--bs-border-color-translucent); + --bs-dropdown-link-hover-bg: rgba(255, 255, 255, 0.15); + --bs-dropdown-link-active-color: #fff; + --bs-dropdown-link-active-bg: #ffc800; + --bs-dropdown-link-disabled-color: #adb5bd; + --bs-dropdown-header-color: #adb5bd; +} + +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-flex; + vertical-align: middle; +} +.btn-group > .btn, +.btn-group-vertical > .btn { + position: relative; + flex: 1 1 auto; +} +.btn-group > .btn-check:checked + .btn, +.btn-group > .btn-check:focus + .btn, +.btn-group > .btn:hover, +.btn-group > .btn:focus, +.btn-group > .btn:active, +.btn-group > .btn.active, +.btn-group-vertical > .btn-check:checked + .btn, +.btn-group-vertical > .btn-check:focus + .btn, +.btn-group-vertical > .btn:hover, +.btn-group-vertical > .btn:focus, +.btn-group-vertical > .btn:active, +.btn-group-vertical > .btn.active { + z-index: 1; +} + +.btn-toolbar { + display: flex; + flex-wrap: wrap; + justify-content: flex-start; +} +.btn-toolbar .input-group { + width: auto; +} + +.btn-group { + border-radius: 0.375rem; +} +.btn-group > :not(.btn-check:first-child) + .btn, +.btn-group > .btn-group:not(:first-child) { + margin-left: -1px; +} +.btn-group > .btn:not(:last-child):not(.dropdown-toggle), +.btn-group > .btn.dropdown-toggle-split:first-child, +.btn-group > .btn-group:not(:last-child) > .btn { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.btn-group > .btn:nth-child(n+3), +.btn-group > :not(.btn-check) + .btn, +.btn-group > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.dropdown-toggle-split { + padding-right: 0.5625rem; + padding-left: 0.5625rem; +} +.dropdown-toggle-split::after, .dropup .dropdown-toggle-split::after, .dropend .dropdown-toggle-split::after { + margin-left: 0; +} +.dropstart .dropdown-toggle-split::before { + margin-right: 0; +} + +.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split { + padding-right: 0.375rem; + padding-left: 0.375rem; +} + +.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split { + padding-right: 0.75rem; + padding-left: 0.75rem; +} + +.btn-group-vertical { + flex-direction: column; + align-items: flex-start; + justify-content: center; +} +.btn-group-vertical > .btn, +.btn-group-vertical > .btn-group { + width: 100%; +} +.btn-group-vertical > .btn:not(:first-child), +.btn-group-vertical > .btn-group:not(:first-child) { + margin-top: -1px; +} +.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle), +.btn-group-vertical > .btn-group:not(:last-child) > .btn { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn ~ .btn, +.btn-group-vertical > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.nav { + --bs-nav-link-padding-x: 1rem; + --bs-nav-link-padding-y: 0.5rem; + --bs-nav-link-font-weight: ; + --bs-nav-link-color: var(--bs-link-color); + --bs-nav-link-hover-color: var(--bs-link-hover-color); + --bs-nav-link-disabled-color: #6c757d; + display: flex; + flex-wrap: wrap; + padding-left: 0; + margin-bottom: 0; + list-style: none; +} + +.nav-link { + display: block; + padding: var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x); + font-size: var(--bs-nav-link-font-size); + font-weight: var(--bs-nav-link-font-weight); + color: var(--bs-nav-link-color); + text-decoration: none; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .nav-link { + transition: none; + } +} +.nav-link:hover, .nav-link:focus { + color: var(--bs-nav-link-hover-color); +} +.nav-link.disabled { + color: var(--bs-nav-link-disabled-color); + pointer-events: none; + cursor: default; +} + +.nav-tabs { + --bs-nav-tabs-border-width: 1px; + --bs-nav-tabs-border-color: #dee2e6; + --bs-nav-tabs-border-radius: 0.375rem; + --bs-nav-tabs-link-hover-border-color: #e9ecef #e9ecef #dee2e6; + --bs-nav-tabs-link-active-color: #495057; + --bs-nav-tabs-link-active-bg: #fff; + --bs-nav-tabs-link-active-border-color: #dee2e6 #dee2e6 #fff; + border-bottom: var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color); +} +.nav-tabs .nav-link { + margin-bottom: calc(-1 * var(--bs-nav-tabs-border-width)); + background: none; + border: var(--bs-nav-tabs-border-width) solid transparent; + border-top-left-radius: var(--bs-nav-tabs-border-radius); + border-top-right-radius: var(--bs-nav-tabs-border-radius); +} +.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus { + isolation: isolate; + border-color: var(--bs-nav-tabs-link-hover-border-color); +} +.nav-tabs .nav-link.disabled, .nav-tabs .nav-link:disabled { + color: var(--bs-nav-link-disabled-color); + background-color: transparent; + border-color: transparent; +} +.nav-tabs .nav-link.active, +.nav-tabs .nav-item.show .nav-link { + color: var(--bs-nav-tabs-link-active-color); + background-color: var(--bs-nav-tabs-link-active-bg); + border-color: var(--bs-nav-tabs-link-active-border-color); +} +.nav-tabs .dropdown-menu { + margin-top: calc(-1 * var(--bs-nav-tabs-border-width)); + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.nav-pills { + --bs-nav-pills-border-radius: 0.375rem; + --bs-nav-pills-link-active-color: #fff; + --bs-nav-pills-link-active-bg: #ffc800; +} +.nav-pills .nav-link { + background: none; + border: 0; + border-radius: var(--bs-nav-pills-border-radius); +} +.nav-pills .nav-link:disabled { + color: var(--bs-nav-link-disabled-color); + background-color: transparent; + border-color: transparent; +} +.nav-pills .nav-link.active, +.nav-pills .show > .nav-link { + color: var(--bs-nav-pills-link-active-color); + background-color: var(--bs-nav-pills-link-active-bg); +} + +.nav-fill > .nav-link, +.nav-fill .nav-item { + flex: 1 1 auto; + text-align: center; +} + +.nav-justified > .nav-link, +.nav-justified .nav-item { + flex-basis: 0; + flex-grow: 1; + text-align: center; +} + +.nav-fill .nav-item .nav-link, +.nav-justified .nav-item .nav-link { + width: 100%; +} + +.tab-content > .tab-pane { + display: none; +} +.tab-content > .active { + display: block; +} + +.navbar { + --bs-navbar-padding-x: 0; + --bs-navbar-padding-y: 0.5rem; + --bs-navbar-color: rgba(0, 0, 0, 0.55); + --bs-navbar-hover-color: rgba(0, 0, 0, 0.7); + --bs-navbar-disabled-color: rgba(0, 0, 0, 0.3); + --bs-navbar-active-color: rgba(0, 0, 0, 0.9); + --bs-navbar-brand-padding-y: 0.3125rem; + --bs-navbar-brand-margin-end: 1rem; + --bs-navbar-brand-font-size: 1.25rem; + --bs-navbar-brand-color: rgba(0, 0, 0, 0.9); + --bs-navbar-brand-hover-color: rgba(0, 0, 0, 0.9); + --bs-navbar-nav-link-padding-x: 0.5rem; + --bs-navbar-toggler-padding-y: 0.25rem; + --bs-navbar-toggler-padding-x: 0.75rem; + --bs-navbar-toggler-font-size: 1.25rem; + --bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); + --bs-navbar-toggler-border-color: rgba(0, 0, 0, 0.1); + --bs-navbar-toggler-border-radius: 0.375rem; + --bs-navbar-toggler-focus-width: 0.25rem; + --bs-navbar-toggler-transition: box-shadow 0.15s ease-in-out; + position: relative; + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: space-between; + padding: var(--bs-navbar-padding-y) var(--bs-navbar-padding-x); +} +.navbar > .container, +.navbar > .container-fluid, +.navbar > .container-sm, +.navbar > .container-md, +.navbar > .container-lg, +.navbar > .container-xl, +.navbar > .container-xxl { + display: flex; + flex-wrap: inherit; + align-items: center; + justify-content: space-between; +} +.navbar-brand { + padding-top: var(--bs-navbar-brand-padding-y); + padding-bottom: var(--bs-navbar-brand-padding-y); + margin-right: var(--bs-navbar-brand-margin-end); + font-size: var(--bs-navbar-brand-font-size); + color: var(--bs-navbar-brand-color); + text-decoration: none; + white-space: nowrap; +} +.navbar-brand:hover, .navbar-brand:focus { + color: var(--bs-navbar-brand-hover-color); +} + +.navbar-nav { + --bs-nav-link-padding-x: 0; + --bs-nav-link-padding-y: 0.5rem; + --bs-nav-link-font-weight: ; + --bs-nav-link-color: var(--bs-navbar-color); + --bs-nav-link-hover-color: var(--bs-navbar-hover-color); + --bs-nav-link-disabled-color: var(--bs-navbar-disabled-color); + display: flex; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; + list-style: none; +} +.navbar-nav .show > .nav-link, +.navbar-nav .nav-link.active { + color: var(--bs-navbar-active-color); +} +.navbar-nav .dropdown-menu { + position: static; +} + +.navbar-text { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + color: var(--bs-navbar-color); +} +.navbar-text a, +.navbar-text a:hover, +.navbar-text a:focus { + color: var(--bs-navbar-active-color); +} + +.navbar-collapse { + flex-basis: 100%; + flex-grow: 1; + align-items: center; +} + +.navbar-toggler { + padding: var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x); + font-size: var(--bs-navbar-toggler-font-size); + line-height: 1; + color: var(--bs-navbar-color); + background-color: transparent; + border: var(--bs-border-width) solid var(--bs-navbar-toggler-border-color); + border-radius: var(--bs-navbar-toggler-border-radius); + transition: var(--bs-navbar-toggler-transition); +} +@media (prefers-reduced-motion: reduce) { + .navbar-toggler { + transition: none; + } +} +.navbar-toggler:hover { + text-decoration: none; +} +.navbar-toggler:focus { + text-decoration: none; + outline: 0; + box-shadow: 0 0 0 var(--bs-navbar-toggler-focus-width); +} + +.navbar-toggler-icon { + display: inline-block; + width: 1.5em; + height: 1.5em; + vertical-align: middle; + background-image: var(--bs-navbar-toggler-icon-bg); + background-repeat: no-repeat; + background-position: center; + background-size: 100%; +} + +.navbar-nav-scroll { + max-height: var(--bs-scroll-height, 75vh); + overflow-y: auto; +} + +@media (min-width: 576px) { + .navbar-expand-sm { + flex-wrap: nowrap; + justify-content: flex-start; + } + .navbar-expand-sm .navbar-nav { + flex-direction: row; + } + .navbar-expand-sm .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-sm .navbar-nav .nav-link { + padding-right: var(--bs-navbar-nav-link-padding-x); + padding-left: var(--bs-navbar-nav-link-padding-x); + } + .navbar-expand-sm .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-sm .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-sm .navbar-toggler { + display: none; + } + .navbar-expand-sm .offcanvas { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + transition: none; + } + .navbar-expand-sm .offcanvas .offcanvas-header { + display: none; + } + .navbar-expand-sm .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +@media (min-width: 768px) { + .navbar-expand-md { + flex-wrap: nowrap; + justify-content: flex-start; + } + .navbar-expand-md .navbar-nav { + flex-direction: row; + } + .navbar-expand-md .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-md .navbar-nav .nav-link { + padding-right: var(--bs-navbar-nav-link-padding-x); + padding-left: var(--bs-navbar-nav-link-padding-x); + } + .navbar-expand-md .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-md .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-md .navbar-toggler { + display: none; + } + .navbar-expand-md .offcanvas { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + transition: none; + } + .navbar-expand-md .offcanvas .offcanvas-header { + display: none; + } + .navbar-expand-md .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +@media (min-width: 992px) { + .navbar-expand-lg { + flex-wrap: nowrap; + justify-content: flex-start; + } + .navbar-expand-lg .navbar-nav { + flex-direction: row; + } + .navbar-expand-lg .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-lg .navbar-nav .nav-link { + padding-right: var(--bs-navbar-nav-link-padding-x); + padding-left: var(--bs-navbar-nav-link-padding-x); + } + .navbar-expand-lg .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-lg .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-lg .navbar-toggler { + display: none; + } + .navbar-expand-lg .offcanvas { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + transition: none; + } + .navbar-expand-lg .offcanvas .offcanvas-header { + display: none; + } + .navbar-expand-lg .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +@media (min-width: 1200px) { + .navbar-expand-xl { + flex-wrap: nowrap; + justify-content: flex-start; + } + .navbar-expand-xl .navbar-nav { + flex-direction: row; + } + .navbar-expand-xl .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-xl .navbar-nav .nav-link { + padding-right: var(--bs-navbar-nav-link-padding-x); + padding-left: var(--bs-navbar-nav-link-padding-x); + } + .navbar-expand-xl .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-xl .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-xl .navbar-toggler { + display: none; + } + .navbar-expand-xl .offcanvas { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + transition: none; + } + .navbar-expand-xl .offcanvas .offcanvas-header { + display: none; + } + .navbar-expand-xl .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +@media (min-width: 1400px) { + .navbar-expand-xxl { + flex-wrap: nowrap; + justify-content: flex-start; + } + .navbar-expand-xxl .navbar-nav { + flex-direction: row; + } + .navbar-expand-xxl .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-xxl .navbar-nav .nav-link { + padding-right: var(--bs-navbar-nav-link-padding-x); + padding-left: var(--bs-navbar-nav-link-padding-x); + } + .navbar-expand-xxl .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-xxl .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-xxl .navbar-toggler { + display: none; + } + .navbar-expand-xxl .offcanvas { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + transition: none; + } + .navbar-expand-xxl .offcanvas .offcanvas-header { + display: none; + } + .navbar-expand-xxl .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +.navbar-expand { + flex-wrap: nowrap; + justify-content: flex-start; +} +.navbar-expand .navbar-nav { + flex-direction: row; +} +.navbar-expand .navbar-nav .dropdown-menu { + position: absolute; +} +.navbar-expand .navbar-nav .nav-link { + padding-right: var(--bs-navbar-nav-link-padding-x); + padding-left: var(--bs-navbar-nav-link-padding-x); +} +.navbar-expand .navbar-nav-scroll { + overflow: visible; +} +.navbar-expand .navbar-collapse { + display: flex !important; + flex-basis: auto; +} +.navbar-expand .navbar-toggler { + display: none; +} +.navbar-expand .offcanvas { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + transition: none; +} +.navbar-expand .offcanvas .offcanvas-header { + display: none; +} +.navbar-expand .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; +} + +.navbar-dark { + --bs-navbar-color: rgba(255, 255, 255, 0.55); + --bs-navbar-hover-color: rgba(255, 255, 255, 0.75); + --bs-navbar-disabled-color: rgba(255, 255, 255, 0.25); + --bs-navbar-active-color: #fff; + --bs-navbar-brand-color: #fff; + --bs-navbar-brand-hover-color: #fff; + --bs-navbar-toggler-border-color: rgba(255, 255, 255, 0.1); + --bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); +} + +.card { + --bs-card-spacer-y: 1rem; + --bs-card-spacer-x: 1rem; + --bs-card-title-spacer-y: 0.5rem; + --bs-card-border-width: 1px; + --bs-card-border-color: var(--bs-border-color-translucent); + --bs-card-border-radius: 0.375rem; + --bs-card-box-shadow: ; + --bs-card-inner-border-radius: calc(0.375rem - 1px); + --bs-card-cap-padding-y: 0.5rem; + --bs-card-cap-padding-x: 1rem; + --bs-card-cap-bg: rgba(0, 0, 0, 0.03); + --bs-card-cap-color: ; + --bs-card-height: ; + --bs-card-color: ; + --bs-card-bg: #fff; + --bs-card-img-overlay-padding: 1rem; + --bs-card-group-margin: 0.75rem; + position: relative; + display: flex; + flex-direction: column; + min-width: 0; + height: var(--bs-card-height); + word-wrap: break-word; + background-color: var(--bs-card-bg); + background-clip: border-box; + border: var(--bs-card-border-width) solid var(--bs-card-border-color); + border-radius: var(--bs-card-border-radius); +} +.card > hr { + margin-right: 0; + margin-left: 0; +} +.card > .list-group { + border-top: inherit; + border-bottom: inherit; +} +.card > .list-group:first-child { + border-top-width: 0; + border-top-left-radius: var(--bs-card-inner-border-radius); + border-top-right-radius: var(--bs-card-inner-border-radius); +} +.card > .list-group:last-child { + border-bottom-width: 0; + border-bottom-right-radius: var(--bs-card-inner-border-radius); + border-bottom-left-radius: var(--bs-card-inner-border-radius); +} +.card > .card-header + .list-group, +.card > .list-group + .card-footer { + border-top: 0; +} + +.card-body { + flex: 1 1 auto; + padding: var(--bs-card-spacer-y) var(--bs-card-spacer-x); + color: var(--bs-card-color); +} + +.card-title { + margin-bottom: var(--bs-card-title-spacer-y); +} + +.card-subtitle { + margin-top: calc(-0.5 * var(--bs-card-title-spacer-y)); + margin-bottom: 0; +} + +.card-text:last-child { + margin-bottom: 0; +} + +.card-link + .card-link { + margin-left: var(--bs-card-spacer-x); +} + +.card-header { + padding: var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x); + margin-bottom: 0; + color: var(--bs-card-cap-color); + background-color: var(--bs-card-cap-bg); + border-bottom: var(--bs-card-border-width) solid var(--bs-card-border-color); +} +.card-header:first-child { + border-radius: var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0; +} + +.card-footer { + padding: var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x); + color: var(--bs-card-cap-color); + background-color: var(--bs-card-cap-bg); + border-top: var(--bs-card-border-width) solid var(--bs-card-border-color); +} +.card-footer:last-child { + border-radius: 0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius); +} + +.card-header-tabs { + margin-right: calc(-0.5 * var(--bs-card-cap-padding-x)); + margin-bottom: calc(-1 * var(--bs-card-cap-padding-y)); + margin-left: calc(-0.5 * var(--bs-card-cap-padding-x)); + border-bottom: 0; +} +.card-header-tabs .nav-link.active { + background-color: var(--bs-card-bg); + border-bottom-color: var(--bs-card-bg); +} + +.card-header-pills { + margin-right: calc(-0.5 * var(--bs-card-cap-padding-x)); + margin-left: calc(-0.5 * var(--bs-card-cap-padding-x)); +} + +.card-img-overlay { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + padding: var(--bs-card-img-overlay-padding); + border-radius: var(--bs-card-inner-border-radius); +} + +.card-img, +.card-img-top, +.card-img-bottom { + width: 100%; +} + +.card-img, +.card-img-top { + border-top-left-radius: var(--bs-card-inner-border-radius); + border-top-right-radius: var(--bs-card-inner-border-radius); +} + +.card-img, +.card-img-bottom { + border-bottom-right-radius: var(--bs-card-inner-border-radius); + border-bottom-left-radius: var(--bs-card-inner-border-radius); +} + +.card-group > .card { + margin-bottom: var(--bs-card-group-margin); +} +@media (min-width: 576px) { + .card-group { + display: flex; + flex-flow: row wrap; + } + .card-group > .card { + flex: 1 0 0%; + margin-bottom: 0; + } + .card-group > .card + .card { + margin-left: 0; + border-left: 0; + } + .card-group > .card:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + .card-group > .card:not(:last-child) .card-img-top, + .card-group > .card:not(:last-child) .card-header { + border-top-right-radius: 0; + } + .card-group > .card:not(:last-child) .card-img-bottom, + .card-group > .card:not(:last-child) .card-footer { + border-bottom-right-radius: 0; + } + .card-group > .card:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + .card-group > .card:not(:first-child) .card-img-top, + .card-group > .card:not(:first-child) .card-header { + border-top-left-radius: 0; + } + .card-group > .card:not(:first-child) .card-img-bottom, + .card-group > .card:not(:first-child) .card-footer { + border-bottom-left-radius: 0; + } +} + +.accordion { + --bs-accordion-color: #212529; + --bs-accordion-bg: #fff; + --bs-accordion-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border-radius 0.15s ease; + --bs-accordion-border-color: var(--bs-border-color); + --bs-accordion-border-width: 1px; + --bs-accordion-border-radius: 0.375rem; + --bs-accordion-inner-border-radius: calc(0.375rem - 1px); + --bs-accordion-btn-padding-x: 1.25rem; + --bs-accordion-btn-padding-y: 1rem; + --bs-accordion-btn-color: #212529; + --bs-accordion-btn-bg: var(--bs-accordion-bg); + --bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); + --bs-accordion-btn-icon-width: 1.25rem; + --bs-accordion-btn-icon-transform: rotate(-180deg); + --bs-accordion-btn-icon-transition: transform 0.2s ease-in-out; + --bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23e6b400'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); + --bs-accordion-btn-focus-border-color: #ffe480; + --bs-accordion-btn-focus-box-shadow: 0 0 0 0.25rem rgba(255, 200, 0, 0.25); + --bs-accordion-body-padding-x: 1.25rem; + --bs-accordion-body-padding-y: 1rem; + --bs-accordion-active-color: #e6b400; + --bs-accordion-active-bg: #fffae6; +} + +.accordion-button { + position: relative; + display: flex; + align-items: center; + width: 100%; + padding: var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x); + font-size: 1rem; + color: var(--bs-accordion-btn-color); + text-align: left; + background-color: var(--bs-accordion-btn-bg); + border: 0; + border-radius: 0; + overflow-anchor: none; + transition: var(--bs-accordion-transition); +} +@media (prefers-reduced-motion: reduce) { + .accordion-button { + transition: none; + } +} +.accordion-button:not(.collapsed) { + color: var(--bs-accordion-active-color); + background-color: var(--bs-accordion-active-bg); + box-shadow: inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color); +} +.accordion-button:not(.collapsed)::after { + background-image: var(--bs-accordion-btn-active-icon); + transform: var(--bs-accordion-btn-icon-transform); +} +.accordion-button::after { + flex-shrink: 0; + width: var(--bs-accordion-btn-icon-width); + height: var(--bs-accordion-btn-icon-width); + margin-left: auto; + content: ""; + background-image: var(--bs-accordion-btn-icon); + background-repeat: no-repeat; + background-size: var(--bs-accordion-btn-icon-width); + transition: var(--bs-accordion-btn-icon-transition); +} +@media (prefers-reduced-motion: reduce) { + .accordion-button::after { + transition: none; + } +} +.accordion-button:hover { + z-index: 2; +} +.accordion-button:focus { + z-index: 3; + border-color: var(--bs-accordion-btn-focus-border-color); + outline: 0; + box-shadow: var(--bs-accordion-btn-focus-box-shadow); +} + +.accordion-header { + margin-bottom: 0; +} + +.accordion-item { + color: var(--bs-accordion-color); + background-color: var(--bs-accordion-bg); + border: var(--bs-accordion-border-width) solid var(--bs-accordion-border-color); +} +.accordion-item:first-of-type { + border-top-left-radius: var(--bs-accordion-border-radius); + border-top-right-radius: var(--bs-accordion-border-radius); +} +.accordion-item:first-of-type .accordion-button { + border-top-left-radius: var(--bs-accordion-inner-border-radius); + border-top-right-radius: var(--bs-accordion-inner-border-radius); +} +.accordion-item:not(:first-of-type) { + border-top: 0; +} +.accordion-item:last-of-type { + border-bottom-right-radius: var(--bs-accordion-border-radius); + border-bottom-left-radius: var(--bs-accordion-border-radius); +} +.accordion-item:last-of-type .accordion-button.collapsed { + border-bottom-right-radius: var(--bs-accordion-inner-border-radius); + border-bottom-left-radius: var(--bs-accordion-inner-border-radius); +} +.accordion-item:last-of-type .accordion-collapse { + border-bottom-right-radius: var(--bs-accordion-border-radius); + border-bottom-left-radius: var(--bs-accordion-border-radius); +} + +.accordion-body { + padding: var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x); +} + +.accordion-flush .accordion-collapse { + border-width: 0; +} +.accordion-flush .accordion-item { + border-right: 0; + border-left: 0; + border-radius: 0; +} +.accordion-flush .accordion-item:first-child { + border-top: 0; +} +.accordion-flush .accordion-item:last-child { + border-bottom: 0; +} +.accordion-flush .accordion-item .accordion-button, .accordion-flush .accordion-item .accordion-button.collapsed { + border-radius: 0; +} + +.breadcrumb { + --bs-breadcrumb-padding-x: 0; + --bs-breadcrumb-padding-y: 0; + --bs-breadcrumb-margin-bottom: 1rem; + --bs-breadcrumb-bg: ; + --bs-breadcrumb-border-radius: ; + --bs-breadcrumb-divider-color: #6c757d; + --bs-breadcrumb-item-padding-x: 0.5rem; + --bs-breadcrumb-item-active-color: #6c757d; + display: flex; + flex-wrap: wrap; + padding: var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x); + margin-bottom: var(--bs-breadcrumb-margin-bottom); + font-size: var(--bs-breadcrumb-font-size); + list-style: none; + background-color: var(--bs-breadcrumb-bg); + border-radius: var(--bs-breadcrumb-border-radius); +} + +.breadcrumb-item + .breadcrumb-item { + padding-left: var(--bs-breadcrumb-item-padding-x); +} +.breadcrumb-item + .breadcrumb-item::before { + float: left; + padding-right: var(--bs-breadcrumb-item-padding-x); + color: var(--bs-breadcrumb-divider-color); + content: var(--bs-breadcrumb-divider, "/") /* rtl: var(--bs-breadcrumb-divider, "/") */; +} +.breadcrumb-item.active { + color: var(--bs-breadcrumb-item-active-color); +} + +.pagination { + --bs-pagination-padding-x: 0.75rem; + --bs-pagination-padding-y: 0.375rem; + --bs-pagination-font-size: 1rem; + --bs-pagination-color: var(--bs-link-color); + --bs-pagination-bg: #fff; + --bs-pagination-border-width: 1px; + --bs-pagination-border-color: #dee2e6; + --bs-pagination-border-radius: 0.375rem; + --bs-pagination-hover-color: var(--bs-link-hover-color); + --bs-pagination-hover-bg: #e9ecef; + --bs-pagination-hover-border-color: #dee2e6; + --bs-pagination-focus-color: var(--bs-link-hover-color); + --bs-pagination-focus-bg: #e9ecef; + --bs-pagination-focus-box-shadow: 0 0 0 0.25rem rgba(255, 200, 0, 0.25); + --bs-pagination-active-color: #fff; + --bs-pagination-active-bg: #ffc800; + --bs-pagination-active-border-color: #ffc800; + --bs-pagination-disabled-color: #6c757d; + --bs-pagination-disabled-bg: #fff; + --bs-pagination-disabled-border-color: #dee2e6; + display: flex; + padding-left: 0; + list-style: none; +} + +.page-link { + position: relative; + display: block; + padding: var(--bs-pagination-padding-y) var(--bs-pagination-padding-x); + font-size: var(--bs-pagination-font-size); + color: var(--bs-pagination-color); + text-decoration: none; + background-color: var(--bs-pagination-bg); + border: var(--bs-pagination-border-width) solid var(--bs-pagination-border-color); + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .page-link { + transition: none; + } +} +.page-link:hover { + z-index: 2; + color: var(--bs-pagination-hover-color); + background-color: var(--bs-pagination-hover-bg); + border-color: var(--bs-pagination-hover-border-color); +} +.page-link:focus { + z-index: 3; + color: var(--bs-pagination-focus-color); + background-color: var(--bs-pagination-focus-bg); + outline: 0; + box-shadow: var(--bs-pagination-focus-box-shadow); +} +.page-link.active, .active > .page-link { + z-index: 3; + color: var(--bs-pagination-active-color); + background-color: var(--bs-pagination-active-bg); + border-color: var(--bs-pagination-active-border-color); +} +.page-link.disabled, .disabled > .page-link { + color: var(--bs-pagination-disabled-color); + pointer-events: none; + background-color: var(--bs-pagination-disabled-bg); + border-color: var(--bs-pagination-disabled-border-color); +} + +.page-item:not(:first-child) .page-link { + margin-left: -1px; +} +.page-item:first-child .page-link { + border-top-left-radius: var(--bs-pagination-border-radius); + border-bottom-left-radius: var(--bs-pagination-border-radius); +} +.page-item:last-child .page-link { + border-top-right-radius: var(--bs-pagination-border-radius); + border-bottom-right-radius: var(--bs-pagination-border-radius); +} + +.pagination-lg { + --bs-pagination-padding-x: 1.5rem; + --bs-pagination-padding-y: 0.75rem; + --bs-pagination-font-size: 1.25rem; + --bs-pagination-border-radius: 0.5rem; +} + +.pagination-sm { + --bs-pagination-padding-x: 0.5rem; + --bs-pagination-padding-y: 0.25rem; + --bs-pagination-font-size: 0.875rem; + --bs-pagination-border-radius: 0.25rem; +} + +.badge { + --bs-badge-padding-x: 0.65em; + --bs-badge-padding-y: 0.35em; + --bs-badge-font-size: 0.75em; + --bs-badge-font-weight: 700; + --bs-badge-color: #fff; + --bs-badge-border-radius: 0.375rem; + display: inline-block; + padding: var(--bs-badge-padding-y) var(--bs-badge-padding-x); + font-size: var(--bs-badge-font-size); + font-weight: var(--bs-badge-font-weight); + line-height: 1; + color: var(--bs-badge-color); + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: var(--bs-badge-border-radius); +} +.badge:empty { + display: none; +} + +.btn .badge { + position: relative; + top: -1px; +} + +.alert { + --bs-alert-bg: transparent; + --bs-alert-padding-x: 1rem; + --bs-alert-padding-y: 1rem; + --bs-alert-margin-bottom: 1rem; + --bs-alert-color: inherit; + --bs-alert-border-color: transparent; + --bs-alert-border: 1px solid var(--bs-alert-border-color); + --bs-alert-border-radius: 0.375rem; + position: relative; + padding: var(--bs-alert-padding-y) var(--bs-alert-padding-x); + margin-bottom: var(--bs-alert-margin-bottom); + color: var(--bs-alert-color); + background-color: var(--bs-alert-bg); + border: var(--bs-alert-border); + border-radius: var(--bs-alert-border-radius); +} + +.alert-heading { + color: inherit; +} + +.alert-link { + font-weight: 700; +} + +.alert-dismissible { + padding-right: 3rem; +} +.alert-dismissible .btn-close { + position: absolute; + top: 0; + right: 0; + z-index: 2; + padding: 1.25rem 1rem; +} + +.alert-primary { + --bs-alert-color: #997800; + --bs-alert-bg: #fff4cc; + --bs-alert-border-color: #ffefb3; +} +.alert-primary .alert-link { + color: #7a6000; +} + +.alert-secondary { + --bs-alert-color: #41464b; + --bs-alert-bg: #e2e3e5; + --bs-alert-border-color: #d3d6d8; +} +.alert-secondary .alert-link { + color: #34383c; +} + +.alert-success { + --bs-alert-color: #0f5132; + --bs-alert-bg: #d1e7dd; + --bs-alert-border-color: #badbcc; +} +.alert-success .alert-link { + color: #0c4128; +} + +.alert-info { + --bs-alert-color: #087990; + --bs-alert-bg: #cff4fc; + --bs-alert-border-color: #b6effb; +} +.alert-info .alert-link { + color: #066173; +} + +.alert-warning { + --bs-alert-color: #997800; + --bs-alert-bg: #fff4cc; + --bs-alert-border-color: #ffefb3; +} +.alert-warning .alert-link { + color: #7a6000; +} + +.alert-danger { + --bs-alert-color: #842029; + --bs-alert-bg: #f8d7da; + --bs-alert-border-color: #f5c2c7; +} +.alert-danger .alert-link { + color: #6a1a21; +} + +.alert-light { + --bs-alert-color: #959596; + --bs-alert-bg: #fefefe; + --bs-alert-border-color: #fdfdfe; +} +.alert-light .alert-link { + color: #777778; +} + +.alert-dark { + --bs-alert-color: #141619; + --bs-alert-bg: #d3d3d4; + --bs-alert-border-color: #bcbebf; +} +.alert-dark .alert-link { + color: #101214; +} + +@keyframes progress-bar-stripes { + 0% { + background-position-x: 1rem; + } +} +.progress { + --bs-progress-height: 1rem; + --bs-progress-font-size: 0.75rem; + --bs-progress-bg: #e9ecef; + --bs-progress-border-radius: 0.375rem; + --bs-progress-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075); + --bs-progress-bar-color: #fff; + --bs-progress-bar-bg: #ffc800; + --bs-progress-bar-transition: width 0.6s ease; + display: flex; + height: var(--bs-progress-height); + overflow: hidden; + font-size: var(--bs-progress-font-size); + background-color: var(--bs-progress-bg); + border-radius: var(--bs-progress-border-radius); +} + +.progress-bar { + display: flex; + flex-direction: column; + justify-content: center; + overflow: hidden; + color: var(--bs-progress-bar-color); + text-align: center; + white-space: nowrap; + background-color: var(--bs-progress-bar-bg); + transition: var(--bs-progress-bar-transition); +} +@media (prefers-reduced-motion: reduce) { + .progress-bar { + transition: none; + } +} + +.progress-bar-striped { + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: var(--bs-progress-height) var(--bs-progress-height); +} + +.progress-bar-animated { + animation: 1s linear infinite progress-bar-stripes; +} +@media (prefers-reduced-motion: reduce) { + .progress-bar-animated { + animation: none; + } +} + +.list-group { + --bs-list-group-color: #212529; + --bs-list-group-bg: #fff; + --bs-list-group-border-color: rgba(0, 0, 0, 0.125); + --bs-list-group-border-width: 1px; + --bs-list-group-border-radius: 0.375rem; + --bs-list-group-item-padding-x: 1rem; + --bs-list-group-item-padding-y: 0.5rem; + --bs-list-group-action-color: #495057; + --bs-list-group-action-hover-color: #495057; + --bs-list-group-action-hover-bg: #f8f9fa; + --bs-list-group-action-active-color: #212529; + --bs-list-group-action-active-bg: #e9ecef; + --bs-list-group-disabled-color: #6c757d; + --bs-list-group-disabled-bg: #fff; + --bs-list-group-active-color: #fff; + --bs-list-group-active-bg: #ffc800; + --bs-list-group-active-border-color: #ffc800; + display: flex; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; + border-radius: var(--bs-list-group-border-radius); +} + +.list-group-numbered { + list-style-type: none; + counter-reset: section; +} +.list-group-numbered > .list-group-item::before { + content: counters(section, ".") ". "; + counter-increment: section; +} + +.list-group-item-action { + width: 100%; + color: var(--bs-list-group-action-color); + text-align: inherit; +} +.list-group-item-action:hover, .list-group-item-action:focus { + z-index: 1; + color: var(--bs-list-group-action-hover-color); + text-decoration: none; + background-color: var(--bs-list-group-action-hover-bg); +} +.list-group-item-action:active { + color: var(--bs-list-group-action-active-color); + background-color: var(--bs-list-group-action-active-bg); +} + +.list-group-item { + position: relative; + display: block; + padding: var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x); + color: var(--bs-list-group-color); + text-decoration: none; + background-color: var(--bs-list-group-bg); + border: var(--bs-list-group-border-width) solid var(--bs-list-group-border-color); +} +.list-group-item:first-child { + border-top-left-radius: inherit; + border-top-right-radius: inherit; +} +.list-group-item:last-child { + border-bottom-right-radius: inherit; + border-bottom-left-radius: inherit; +} +.list-group-item.disabled, .list-group-item:disabled { + color: var(--bs-list-group-disabled-color); + pointer-events: none; + background-color: var(--bs-list-group-disabled-bg); +} +.list-group-item.active { + z-index: 2; + color: var(--bs-list-group-active-color); + background-color: var(--bs-list-group-active-bg); + border-color: var(--bs-list-group-active-border-color); +} +.list-group-item + .list-group-item { + border-top-width: 0; +} +.list-group-item + .list-group-item.active { + margin-top: calc(-1 * var(--bs-list-group-border-width)); + border-top-width: var(--bs-list-group-border-width); +} + +.list-group-horizontal { + flex-direction: row; +} +.list-group-horizontal > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--bs-list-group-border-radius); + border-top-right-radius: 0; +} +.list-group-horizontal > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--bs-list-group-border-radius); + border-bottom-left-radius: 0; +} +.list-group-horizontal > .list-group-item.active { + margin-top: 0; +} +.list-group-horizontal > .list-group-item + .list-group-item { + border-top-width: var(--bs-list-group-border-width); + border-left-width: 0; +} +.list-group-horizontal > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--bs-list-group-border-width)); + border-left-width: var(--bs-list-group-border-width); +} + +@media (min-width: 576px) { + .list-group-horizontal-sm { + flex-direction: row; + } + .list-group-horizontal-sm > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--bs-list-group-border-radius); + border-top-right-radius: 0; + } + .list-group-horizontal-sm > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--bs-list-group-border-radius); + border-bottom-left-radius: 0; + } + .list-group-horizontal-sm > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-sm > .list-group-item + .list-group-item { + border-top-width: var(--bs-list-group-border-width); + border-left-width: 0; + } + .list-group-horizontal-sm > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--bs-list-group-border-width)); + border-left-width: var(--bs-list-group-border-width); + } +} +@media (min-width: 768px) { + .list-group-horizontal-md { + flex-direction: row; + } + .list-group-horizontal-md > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--bs-list-group-border-radius); + border-top-right-radius: 0; + } + .list-group-horizontal-md > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--bs-list-group-border-radius); + border-bottom-left-radius: 0; + } + .list-group-horizontal-md > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-md > .list-group-item + .list-group-item { + border-top-width: var(--bs-list-group-border-width); + border-left-width: 0; + } + .list-group-horizontal-md > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--bs-list-group-border-width)); + border-left-width: var(--bs-list-group-border-width); + } +} +@media (min-width: 992px) { + .list-group-horizontal-lg { + flex-direction: row; + } + .list-group-horizontal-lg > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--bs-list-group-border-radius); + border-top-right-radius: 0; + } + .list-group-horizontal-lg > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--bs-list-group-border-radius); + border-bottom-left-radius: 0; + } + .list-group-horizontal-lg > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-lg > .list-group-item + .list-group-item { + border-top-width: var(--bs-list-group-border-width); + border-left-width: 0; + } + .list-group-horizontal-lg > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--bs-list-group-border-width)); + border-left-width: var(--bs-list-group-border-width); + } +} +@media (min-width: 1200px) { + .list-group-horizontal-xl { + flex-direction: row; + } + .list-group-horizontal-xl > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--bs-list-group-border-radius); + border-top-right-radius: 0; + } + .list-group-horizontal-xl > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--bs-list-group-border-radius); + border-bottom-left-radius: 0; + } + .list-group-horizontal-xl > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-xl > .list-group-item + .list-group-item { + border-top-width: var(--bs-list-group-border-width); + border-left-width: 0; + } + .list-group-horizontal-xl > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--bs-list-group-border-width)); + border-left-width: var(--bs-list-group-border-width); + } +} +@media (min-width: 1400px) { + .list-group-horizontal-xxl { + flex-direction: row; + } + .list-group-horizontal-xxl > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--bs-list-group-border-radius); + border-top-right-radius: 0; + } + .list-group-horizontal-xxl > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--bs-list-group-border-radius); + border-bottom-left-radius: 0; + } + .list-group-horizontal-xxl > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-xxl > .list-group-item + .list-group-item { + border-top-width: var(--bs-list-group-border-width); + border-left-width: 0; + } + .list-group-horizontal-xxl > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--bs-list-group-border-width)); + border-left-width: var(--bs-list-group-border-width); + } +} +.list-group-flush { + border-radius: 0; +} +.list-group-flush > .list-group-item { + border-width: 0 0 var(--bs-list-group-border-width); +} +.list-group-flush > .list-group-item:last-child { + border-bottom-width: 0; +} + +.list-group-item-primary { + color: #997800; + background-color: #fff4cc; +} +.list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus { + color: #997800; + background-color: #e6dcb8; +} +.list-group-item-primary.list-group-item-action.active { + color: #fff; + background-color: #997800; + border-color: #997800; +} + +.list-group-item-secondary { + color: #41464b; + background-color: #e2e3e5; +} +.list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus { + color: #41464b; + background-color: #cbccce; +} +.list-group-item-secondary.list-group-item-action.active { + color: #fff; + background-color: #41464b; + border-color: #41464b; +} + +.list-group-item-success { + color: #0f5132; + background-color: #d1e7dd; +} +.list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus { + color: #0f5132; + background-color: #bcd0c7; +} +.list-group-item-success.list-group-item-action.active { + color: #fff; + background-color: #0f5132; + border-color: #0f5132; +} + +.list-group-item-info { + color: #087990; + background-color: #cff4fc; +} +.list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus { + color: #087990; + background-color: #badce3; +} +.list-group-item-info.list-group-item-action.active { + color: #fff; + background-color: #087990; + border-color: #087990; +} + +.list-group-item-warning { + color: #997800; + background-color: #fff4cc; +} +.list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus { + color: #997800; + background-color: #e6dcb8; +} +.list-group-item-warning.list-group-item-action.active { + color: #fff; + background-color: #997800; + border-color: #997800; +} + +.list-group-item-danger { + color: #842029; + background-color: #f8d7da; +} +.list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus { + color: #842029; + background-color: #dfc2c4; +} +.list-group-item-danger.list-group-item-action.active { + color: #fff; + background-color: #842029; + border-color: #842029; +} + +.list-group-item-light { + color: #959596; + background-color: #fefefe; +} +.list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus { + color: #959596; + background-color: #e5e5e5; +} +.list-group-item-light.list-group-item-action.active { + color: #fff; + background-color: #959596; + border-color: #959596; +} + +.list-group-item-dark { + color: #141619; + background-color: #d3d3d4; +} +.list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus { + color: #141619; + background-color: #bebebf; +} +.list-group-item-dark.list-group-item-action.active { + color: #fff; + background-color: #141619; + border-color: #141619; +} + +.btn-close { + box-sizing: content-box; + width: 1em; + height: 1em; + padding: 0.25em 0.25em; + color: #000; + background: transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat; + border: 0; + border-radius: 0.375rem; + opacity: 0.5; +} +.btn-close:hover { + color: #000; + text-decoration: none; + opacity: 0.75; +} +.btn-close:focus { + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(255, 200, 0, 0.25); + opacity: 1; +} +.btn-close:disabled, .btn-close.disabled { + pointer-events: none; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + opacity: 0.25; +} + +.btn-close-white { + filter: invert(1) grayscale(100%) brightness(200%); +} + +.toast { + --bs-toast-zindex: 1090; + --bs-toast-padding-x: 0.75rem; + --bs-toast-padding-y: 0.5rem; + --bs-toast-spacing: 1.5rem; + --bs-toast-max-width: 350px; + --bs-toast-font-size: 0.875rem; + --bs-toast-color: ; + --bs-toast-bg: rgba(255, 255, 255, 0.85); + --bs-toast-border-width: 1px; + --bs-toast-border-color: var(--bs-border-color-translucent); + --bs-toast-border-radius: 0.375rem; + --bs-toast-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15); + --bs-toast-header-color: #6c757d; + --bs-toast-header-bg: rgba(255, 255, 255, 0.85); + --bs-toast-header-border-color: rgba(0, 0, 0, 0.05); + width: var(--bs-toast-max-width); + max-width: 100%; + font-size: var(--bs-toast-font-size); + color: var(--bs-toast-color); + pointer-events: auto; + background-color: var(--bs-toast-bg); + background-clip: padding-box; + border: var(--bs-toast-border-width) solid var(--bs-toast-border-color); + box-shadow: var(--bs-toast-box-shadow); + border-radius: var(--bs-toast-border-radius); +} +.toast.showing { + opacity: 0; +} +.toast:not(.show) { + display: none; +} + +.toast-container { + --bs-toast-zindex: 1090; + position: absolute; + z-index: var(--bs-toast-zindex); + width: -moz-max-content; + width: max-content; + max-width: 100%; + pointer-events: none; +} +.toast-container > :not(:last-child) { + margin-bottom: var(--bs-toast-spacing); +} + +.toast-header { + display: flex; + align-items: center; + padding: var(--bs-toast-padding-y) var(--bs-toast-padding-x); + color: var(--bs-toast-header-color); + background-color: var(--bs-toast-header-bg); + background-clip: padding-box; + border-bottom: var(--bs-toast-border-width) solid var(--bs-toast-header-border-color); + border-top-left-radius: calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width)); + border-top-right-radius: calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width)); +} +.toast-header .btn-close { + margin-right: calc(-0.5 * var(--bs-toast-padding-x)); + margin-left: var(--bs-toast-padding-x); +} + +.toast-body { + padding: var(--bs-toast-padding-x); + word-wrap: break-word; +} + +.modal { + --bs-modal-zindex: 1055; + --bs-modal-width: 500px; + --bs-modal-padding: 1rem; + --bs-modal-margin: 0.5rem; + --bs-modal-color: ; + --bs-modal-bg: #fff; + --bs-modal-border-color: var(--bs-border-color-translucent); + --bs-modal-border-width: 1px; + --bs-modal-border-radius: 0.5rem; + --bs-modal-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075); + --bs-modal-inner-border-radius: calc(0.5rem - 1px); + --bs-modal-header-padding-x: 1rem; + --bs-modal-header-padding-y: 1rem; + --bs-modal-header-padding: 1rem 1rem; + --bs-modal-header-border-color: var(--bs-border-color); + --bs-modal-header-border-width: 1px; + --bs-modal-title-line-height: 1.5; + --bs-modal-footer-gap: 0.5rem; + --bs-modal-footer-bg: ; + --bs-modal-footer-border-color: var(--bs-border-color); + --bs-modal-footer-border-width: 1px; + position: fixed; + top: 0; + left: 0; + z-index: var(--bs-modal-zindex); + display: none; + width: 100%; + height: 100%; + overflow-x: hidden; + overflow-y: auto; + outline: 0; +} + +.modal-dialog { + position: relative; + width: auto; + margin: var(--bs-modal-margin); + pointer-events: none; +} +.modal.fade .modal-dialog { + transition: transform 0.3s ease-out; + transform: translate(0, -50px); +} +@media (prefers-reduced-motion: reduce) { + .modal.fade .modal-dialog { + transition: none; + } +} +.modal.show .modal-dialog { + transform: none; +} +.modal.modal-static .modal-dialog { + transform: scale(1.02); +} + +.modal-dialog-scrollable { + height: calc(100% - var(--bs-modal-margin) * 2); +} +.modal-dialog-scrollable .modal-content { + max-height: 100%; + overflow: hidden; +} +.modal-dialog-scrollable .modal-body { + overflow-y: auto; +} + +.modal-dialog-centered { + display: flex; + align-items: center; + min-height: calc(100% - var(--bs-modal-margin) * 2); +} + +.modal-content { + position: relative; + display: flex; + flex-direction: column; + width: 100%; + color: var(--bs-modal-color); + pointer-events: auto; + background-color: var(--bs-modal-bg); + background-clip: padding-box; + border: var(--bs-modal-border-width) solid var(--bs-modal-border-color); + border-radius: var(--bs-modal-border-radius); + outline: 0; +} + +.modal-backdrop { + --bs-backdrop-zindex: 1050; + --bs-backdrop-bg: #000; + --bs-backdrop-opacity: 0.5; + position: fixed; + top: 0; + left: 0; + z-index: var(--bs-backdrop-zindex); + width: 100vw; + height: 100vh; + background-color: var(--bs-backdrop-bg); +} +.modal-backdrop.fade { + opacity: 0; +} +.modal-backdrop.show { + opacity: var(--bs-backdrop-opacity); +} + +.modal-header { + display: flex; + flex-shrink: 0; + align-items: center; + justify-content: space-between; + padding: var(--bs-modal-header-padding); + border-bottom: var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color); + border-top-left-radius: var(--bs-modal-inner-border-radius); + border-top-right-radius: var(--bs-modal-inner-border-radius); +} +.modal-header .btn-close { + padding: calc(var(--bs-modal-header-padding-y) * 0.5) calc(var(--bs-modal-header-padding-x) * 0.5); + margin: calc(-0.5 * var(--bs-modal-header-padding-y)) calc(-0.5 * var(--bs-modal-header-padding-x)) calc(-0.5 * var(--bs-modal-header-padding-y)) auto; +} + +.modal-title { + margin-bottom: 0; + line-height: var(--bs-modal-title-line-height); +} + +.modal-body { + position: relative; + flex: 1 1 auto; + padding: var(--bs-modal-padding); +} + +.modal-footer { + display: flex; + flex-shrink: 0; + flex-wrap: wrap; + align-items: center; + justify-content: flex-end; + padding: calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap) * 0.5); + background-color: var(--bs-modal-footer-bg); + border-top: var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color); + border-bottom-right-radius: var(--bs-modal-inner-border-radius); + border-bottom-left-radius: var(--bs-modal-inner-border-radius); +} +.modal-footer > * { + margin: calc(var(--bs-modal-footer-gap) * 0.5); +} + +@media (min-width: 576px) { + .modal { + --bs-modal-margin: 1.75rem; + --bs-modal-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15); + } + .modal-dialog { + max-width: var(--bs-modal-width); + margin-right: auto; + margin-left: auto; + } + .modal-sm { + --bs-modal-width: 300px; + } +} +@media (min-width: 992px) { + .modal-lg, + .modal-xl { + --bs-modal-width: 800px; + } +} +@media (min-width: 1200px) { + .modal-xl { + --bs-modal-width: 1140px; + } +} +.modal-fullscreen { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; +} +.modal-fullscreen .modal-content { + height: 100%; + border: 0; + border-radius: 0; +} +.modal-fullscreen .modal-header, +.modal-fullscreen .modal-footer { + border-radius: 0; +} +.modal-fullscreen .modal-body { + overflow-y: auto; +} + +@media (max-width: 575.98px) { + .modal-fullscreen-sm-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-sm-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-sm-down .modal-header, + .modal-fullscreen-sm-down .modal-footer { + border-radius: 0; + } + .modal-fullscreen-sm-down .modal-body { + overflow-y: auto; + } +} +@media (max-width: 767.98px) { + .modal-fullscreen-md-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-md-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-md-down .modal-header, + .modal-fullscreen-md-down .modal-footer { + border-radius: 0; + } + .modal-fullscreen-md-down .modal-body { + overflow-y: auto; + } +} +@media (max-width: 991.98px) { + .modal-fullscreen-lg-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-lg-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-lg-down .modal-header, + .modal-fullscreen-lg-down .modal-footer { + border-radius: 0; + } + .modal-fullscreen-lg-down .modal-body { + overflow-y: auto; + } +} +@media (max-width: 1199.98px) { + .modal-fullscreen-xl-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-xl-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-xl-down .modal-header, + .modal-fullscreen-xl-down .modal-footer { + border-radius: 0; + } + .modal-fullscreen-xl-down .modal-body { + overflow-y: auto; + } +} +@media (max-width: 1399.98px) { + .modal-fullscreen-xxl-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-xxl-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-xxl-down .modal-header, + .modal-fullscreen-xxl-down .modal-footer { + border-radius: 0; + } + .modal-fullscreen-xxl-down .modal-body { + overflow-y: auto; + } +} +.tooltip { + --bs-tooltip-zindex: 1080; + --bs-tooltip-max-width: 200px; + --bs-tooltip-padding-x: 0.5rem; + --bs-tooltip-padding-y: 0.25rem; + --bs-tooltip-margin: ; + --bs-tooltip-font-size: 0.875rem; + --bs-tooltip-color: #fff; + --bs-tooltip-bg: #000; + --bs-tooltip-border-radius: 0.375rem; + --bs-tooltip-opacity: 0.9; + --bs-tooltip-arrow-width: 0.8rem; + --bs-tooltip-arrow-height: 0.4rem; + z-index: var(--bs-tooltip-zindex); + display: block; + padding: var(--bs-tooltip-arrow-height); + margin: var(--bs-tooltip-margin); + font-family: "Roboto Slab", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + white-space: normal; + word-spacing: normal; + line-break: auto; + font-size: var(--bs-tooltip-font-size); + word-wrap: break-word; + opacity: 0; +} +.tooltip.show { + opacity: var(--bs-tooltip-opacity); +} +.tooltip .tooltip-arrow { + display: block; + width: var(--bs-tooltip-arrow-width); + height: var(--bs-tooltip-arrow-height); +} +.tooltip .tooltip-arrow::before { + position: absolute; + content: ""; + border-color: transparent; + border-style: solid; +} + +.bs-tooltip-top .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow { + bottom: 0; +} +.bs-tooltip-top .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before { + top: -1px; + border-width: var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * 0.5) 0; + border-top-color: var(--bs-tooltip-bg); +} + +/* rtl:begin:ignore */ +.bs-tooltip-end .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow { + left: 0; + width: var(--bs-tooltip-arrow-height); + height: var(--bs-tooltip-arrow-width); +} +.bs-tooltip-end .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before { + right: -1px; + border-width: calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * 0.5) 0; + border-right-color: var(--bs-tooltip-bg); +} + +/* rtl:end:ignore */ +.bs-tooltip-bottom .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow { + top: 0; +} +.bs-tooltip-bottom .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before { + bottom: -1px; + border-width: 0 calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height); + border-bottom-color: var(--bs-tooltip-bg); +} + +/* rtl:begin:ignore */ +.bs-tooltip-start .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow { + right: 0; + width: var(--bs-tooltip-arrow-height); + height: var(--bs-tooltip-arrow-width); +} +.bs-tooltip-start .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before { + left: -1px; + border-width: calc(var(--bs-tooltip-arrow-width) * 0.5) 0 calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height); + border-left-color: var(--bs-tooltip-bg); +} + +/* rtl:end:ignore */ +.tooltip-inner { + max-width: var(--bs-tooltip-max-width); + padding: var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x); + color: var(--bs-tooltip-color); + text-align: center; + background-color: var(--bs-tooltip-bg); + border-radius: var(--bs-tooltip-border-radius); +} + +.popover { + --bs-popover-zindex: 1070; + --bs-popover-max-width: 276px; + --bs-popover-font-size: 0.875rem; + --bs-popover-bg: #fff; + --bs-popover-border-width: 1px; + --bs-popover-border-color: var(--bs-border-color-translucent); + --bs-popover-border-radius: 0.5rem; + --bs-popover-inner-border-radius: calc(0.5rem - 1px); + --bs-popover-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15); + --bs-popover-header-padding-x: 1rem; + --bs-popover-header-padding-y: 0.5rem; + --bs-popover-header-font-size: 1rem; + --bs-popover-header-color: ; + --bs-popover-header-bg: #f0f0f0; + --bs-popover-body-padding-x: 1rem; + --bs-popover-body-padding-y: 1rem; + --bs-popover-body-color: #212529; + --bs-popover-arrow-width: 1rem; + --bs-popover-arrow-height: 0.5rem; + --bs-popover-arrow-border: var(--bs-popover-border-color); + z-index: var(--bs-popover-zindex); + display: block; + max-width: var(--bs-popover-max-width); + font-family: "Roboto Slab", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + white-space: normal; + word-spacing: normal; + line-break: auto; + font-size: var(--bs-popover-font-size); + word-wrap: break-word; + background-color: var(--bs-popover-bg); + background-clip: padding-box; + border: var(--bs-popover-border-width) solid var(--bs-popover-border-color); + border-radius: var(--bs-popover-border-radius); +} +.popover .popover-arrow { + display: block; + width: var(--bs-popover-arrow-width); + height: var(--bs-popover-arrow-height); +} +.popover .popover-arrow::before, .popover .popover-arrow::after { + position: absolute; + display: block; + content: ""; + border-color: transparent; + border-style: solid; + border-width: 0; +} + +.bs-popover-top > .popover-arrow, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow { + bottom: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width)); +} +.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before, .bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after { + border-width: var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * 0.5) 0; +} +.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before { + bottom: 0; + border-top-color: var(--bs-popover-arrow-border); +} +.bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after { + bottom: var(--bs-popover-border-width); + border-top-color: var(--bs-popover-bg); +} + +/* rtl:begin:ignore */ +.bs-popover-end > .popover-arrow, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow { + left: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width)); + width: var(--bs-popover-arrow-height); + height: var(--bs-popover-arrow-width); +} +.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before, .bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after { + border-width: calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * 0.5) 0; +} +.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before { + left: 0; + border-right-color: var(--bs-popover-arrow-border); +} +.bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after { + left: var(--bs-popover-border-width); + border-right-color: var(--bs-popover-bg); +} + +/* rtl:end:ignore */ +.bs-popover-bottom > .popover-arrow, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow { + top: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width)); +} +.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before, .bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after { + border-width: 0 calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height); +} +.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before { + top: 0; + border-bottom-color: var(--bs-popover-arrow-border); +} +.bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after { + top: var(--bs-popover-border-width); + border-bottom-color: var(--bs-popover-bg); +} +.bs-popover-bottom .popover-header::before, .bs-popover-auto[data-popper-placement^=bottom] .popover-header::before { + position: absolute; + top: 0; + left: 50%; + display: block; + width: var(--bs-popover-arrow-width); + margin-left: calc(-0.5 * var(--bs-popover-arrow-width)); + content: ""; + border-bottom: var(--bs-popover-border-width) solid var(--bs-popover-header-bg); +} + +/* rtl:begin:ignore */ +.bs-popover-start > .popover-arrow, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow { + right: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width)); + width: var(--bs-popover-arrow-height); + height: var(--bs-popover-arrow-width); +} +.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before, .bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after { + border-width: calc(var(--bs-popover-arrow-width) * 0.5) 0 calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height); +} +.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before { + right: 0; + border-left-color: var(--bs-popover-arrow-border); +} +.bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after { + right: var(--bs-popover-border-width); + border-left-color: var(--bs-popover-bg); +} + +/* rtl:end:ignore */ +.popover-header { + padding: var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x); + margin-bottom: 0; + font-size: var(--bs-popover-header-font-size); + color: var(--bs-popover-header-color); + background-color: var(--bs-popover-header-bg); + border-bottom: var(--bs-popover-border-width) solid var(--bs-popover-border-color); + border-top-left-radius: var(--bs-popover-inner-border-radius); + border-top-right-radius: var(--bs-popover-inner-border-radius); +} +.popover-header:empty { + display: none; +} + +.popover-body { + padding: var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x); + color: var(--bs-popover-body-color); +} + +.carousel { + position: relative; +} + +.carousel.pointer-event { + touch-action: pan-y; +} + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} +.carousel-inner::after { + display: block; + clear: both; + content: ""; +} + +.carousel-item { + position: relative; + display: none; + float: left; + width: 100%; + margin-right: -100%; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + transition: transform 0.6s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .carousel-item { + transition: none; + } +} + +.carousel-item.active, +.carousel-item-next, +.carousel-item-prev { + display: block; +} + +.carousel-item-next:not(.carousel-item-start), +.active.carousel-item-end { + transform: translateX(100%); +} + +.carousel-item-prev:not(.carousel-item-end), +.active.carousel-item-start { + transform: translateX(-100%); +} + +.carousel-fade .carousel-item { + opacity: 0; + transition-property: opacity; + transform: none; +} +.carousel-fade .carousel-item.active, +.carousel-fade .carousel-item-next.carousel-item-start, +.carousel-fade .carousel-item-prev.carousel-item-end { + z-index: 1; + opacity: 1; +} +.carousel-fade .active.carousel-item-start, +.carousel-fade .active.carousel-item-end { + z-index: 0; + opacity: 0; + transition: opacity 0s 0.6s; +} +@media (prefers-reduced-motion: reduce) { + .carousel-fade .active.carousel-item-start, + .carousel-fade .active.carousel-item-end { + transition: none; + } +} + +.carousel-control-prev, +.carousel-control-next { + position: absolute; + top: 0; + bottom: 0; + z-index: 1; + display: flex; + align-items: center; + justify-content: center; + width: 15%; + padding: 0; + color: #fff; + text-align: center; + background: none; + border: 0; + opacity: 0.5; + transition: opacity 0.15s ease; +} +@media (prefers-reduced-motion: reduce) { + .carousel-control-prev, + .carousel-control-next { + transition: none; + } +} +.carousel-control-prev:hover, .carousel-control-prev:focus, +.carousel-control-next:hover, +.carousel-control-next:focus { + color: #fff; + text-decoration: none; + outline: 0; + opacity: 0.9; +} + +.carousel-control-prev { + left: 0; +} + +.carousel-control-next { + right: 0; +} + +.carousel-control-prev-icon, +.carousel-control-next-icon { + display: inline-block; + width: 2rem; + height: 2rem; + background-repeat: no-repeat; + background-position: 50%; + background-size: 100% 100%; +} + +/* rtl:options: { + "autoRename": true, + "stringMap":[ { + "name" : "prev-next", + "search" : "prev", + "replace" : "next" + } ] +} */ +.carousel-control-prev-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e"); +} + +.carousel-control-next-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); +} + +.carousel-indicators { + position: absolute; + right: 0; + bottom: 0; + left: 0; + z-index: 2; + display: flex; + justify-content: center; + padding: 0; + margin-right: 15%; + margin-bottom: 1rem; + margin-left: 15%; + list-style: none; +} +.carousel-indicators [data-bs-target] { + box-sizing: content-box; + flex: 0 1 auto; + width: 30px; + height: 3px; + padding: 0; + margin-right: 3px; + margin-left: 3px; + text-indent: -999px; + cursor: pointer; + background-color: #fff; + background-clip: padding-box; + border: 0; + border-top: 10px solid transparent; + border-bottom: 10px solid transparent; + opacity: 0.5; + transition: opacity 0.6s ease; +} +@media (prefers-reduced-motion: reduce) { + .carousel-indicators [data-bs-target] { + transition: none; + } +} +.carousel-indicators .active { + opacity: 1; +} + +.carousel-caption { + position: absolute; + right: 15%; + bottom: 1.25rem; + left: 15%; + padding-top: 1.25rem; + padding-bottom: 1.25rem; + color: #fff; + text-align: center; +} + +.carousel-dark .carousel-control-prev-icon, +.carousel-dark .carousel-control-next-icon { + filter: invert(1) grayscale(100); +} +.carousel-dark .carousel-indicators [data-bs-target] { + background-color: #000; +} +.carousel-dark .carousel-caption { + color: #000; +} + +.spinner-grow, +.spinner-border { + display: inline-block; + width: var(--bs-spinner-width); + height: var(--bs-spinner-height); + vertical-align: var(--bs-spinner-vertical-align); + border-radius: 50%; + animation: var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name); +} + +@keyframes spinner-border { + to { + transform: rotate(360deg) /* rtl:ignore */; + } +} +.spinner-border { + --bs-spinner-width: 2rem; + --bs-spinner-height: 2rem; + --bs-spinner-vertical-align: -0.125em; + --bs-spinner-border-width: 0.25em; + --bs-spinner-animation-speed: 0.75s; + --bs-spinner-animation-name: spinner-border; + border: var(--bs-spinner-border-width) solid currentcolor; + border-right-color: transparent; +} + +.spinner-border-sm { + --bs-spinner-width: 1rem; + --bs-spinner-height: 1rem; + --bs-spinner-border-width: 0.2em; +} + +@keyframes spinner-grow { + 0% { + transform: scale(0); + } + 50% { + opacity: 1; + transform: none; + } +} +.spinner-grow { + --bs-spinner-width: 2rem; + --bs-spinner-height: 2rem; + --bs-spinner-vertical-align: -0.125em; + --bs-spinner-animation-speed: 0.75s; + --bs-spinner-animation-name: spinner-grow; + background-color: currentcolor; + opacity: 0; +} + +.spinner-grow-sm { + --bs-spinner-width: 1rem; + --bs-spinner-height: 1rem; +} + +@media (prefers-reduced-motion: reduce) { + .spinner-border, + .spinner-grow { + --bs-spinner-animation-speed: 1.5s; + } +} +.offcanvas, .offcanvas-xxl, .offcanvas-xl, .offcanvas-lg, .offcanvas-md, .offcanvas-sm { + --bs-offcanvas-zindex: 1045; + --bs-offcanvas-width: 400px; + --bs-offcanvas-height: 30vh; + --bs-offcanvas-padding-x: 1rem; + --bs-offcanvas-padding-y: 1rem; + --bs-offcanvas-color: ; + --bs-offcanvas-bg: #fff; + --bs-offcanvas-border-width: 1px; + --bs-offcanvas-border-color: var(--bs-border-color-translucent); + --bs-offcanvas-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075); +} + +@media (max-width: 575.98px) { + .offcanvas-sm { + position: fixed; + bottom: 0; + z-index: var(--bs-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--bs-offcanvas-color); + visibility: hidden; + background-color: var(--bs-offcanvas-bg); + background-clip: padding-box; + outline: 0; + transition: transform 0.3s ease-in-out; + } +} +@media (max-width: 575.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-sm { + transition: none; + } +} +@media (max-width: 575.98px) { + .offcanvas-sm.offcanvas-start { + top: 0; + left: 0; + width: var(--bs-offcanvas-width); + border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(-100%); + } +} +@media (max-width: 575.98px) { + .offcanvas-sm.offcanvas-end { + top: 0; + right: 0; + width: var(--bs-offcanvas-width); + border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(100%); + } +} +@media (max-width: 575.98px) { + .offcanvas-sm.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(-100%); + } +} +@media (max-width: 575.98px) { + .offcanvas-sm.offcanvas-bottom { + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(100%); + } +} +@media (max-width: 575.98px) { + .offcanvas-sm.showing, .offcanvas-sm.show:not(.hiding) { + transform: none; + } +} +@media (max-width: 575.98px) { + .offcanvas-sm.showing, .offcanvas-sm.hiding, .offcanvas-sm.show { + visibility: visible; + } +} +@media (min-width: 576px) { + .offcanvas-sm { + --bs-offcanvas-height: auto; + --bs-offcanvas-border-width: 0; + background-color: transparent !important; + } + .offcanvas-sm .offcanvas-header { + display: none; + } + .offcanvas-sm .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} + +@media (max-width: 767.98px) { + .offcanvas-md { + position: fixed; + bottom: 0; + z-index: var(--bs-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--bs-offcanvas-color); + visibility: hidden; + background-color: var(--bs-offcanvas-bg); + background-clip: padding-box; + outline: 0; + transition: transform 0.3s ease-in-out; + } +} +@media (max-width: 767.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-md { + transition: none; + } +} +@media (max-width: 767.98px) { + .offcanvas-md.offcanvas-start { + top: 0; + left: 0; + width: var(--bs-offcanvas-width); + border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(-100%); + } +} +@media (max-width: 767.98px) { + .offcanvas-md.offcanvas-end { + top: 0; + right: 0; + width: var(--bs-offcanvas-width); + border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(100%); + } +} +@media (max-width: 767.98px) { + .offcanvas-md.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(-100%); + } +} +@media (max-width: 767.98px) { + .offcanvas-md.offcanvas-bottom { + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(100%); + } +} +@media (max-width: 767.98px) { + .offcanvas-md.showing, .offcanvas-md.show:not(.hiding) { + transform: none; + } +} +@media (max-width: 767.98px) { + .offcanvas-md.showing, .offcanvas-md.hiding, .offcanvas-md.show { + visibility: visible; + } +} +@media (min-width: 768px) { + .offcanvas-md { + --bs-offcanvas-height: auto; + --bs-offcanvas-border-width: 0; + background-color: transparent !important; + } + .offcanvas-md .offcanvas-header { + display: none; + } + .offcanvas-md .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} + +@media (max-width: 991.98px) { + .offcanvas-lg { + position: fixed; + bottom: 0; + z-index: var(--bs-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--bs-offcanvas-color); + visibility: hidden; + background-color: var(--bs-offcanvas-bg); + background-clip: padding-box; + outline: 0; + transition: transform 0.3s ease-in-out; + } +} +@media (max-width: 991.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-lg { + transition: none; + } +} +@media (max-width: 991.98px) { + .offcanvas-lg.offcanvas-start { + top: 0; + left: 0; + width: var(--bs-offcanvas-width); + border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(-100%); + } +} +@media (max-width: 991.98px) { + .offcanvas-lg.offcanvas-end { + top: 0; + right: 0; + width: var(--bs-offcanvas-width); + border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(100%); + } +} +@media (max-width: 991.98px) { + .offcanvas-lg.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(-100%); + } +} +@media (max-width: 991.98px) { + .offcanvas-lg.offcanvas-bottom { + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(100%); + } +} +@media (max-width: 991.98px) { + .offcanvas-lg.showing, .offcanvas-lg.show:not(.hiding) { + transform: none; + } +} +@media (max-width: 991.98px) { + .offcanvas-lg.showing, .offcanvas-lg.hiding, .offcanvas-lg.show { + visibility: visible; + } +} +@media (min-width: 992px) { + .offcanvas-lg { + --bs-offcanvas-height: auto; + --bs-offcanvas-border-width: 0; + background-color: transparent !important; + } + .offcanvas-lg .offcanvas-header { + display: none; + } + .offcanvas-lg .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} + +@media (max-width: 1199.98px) { + .offcanvas-xl { + position: fixed; + bottom: 0; + z-index: var(--bs-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--bs-offcanvas-color); + visibility: hidden; + background-color: var(--bs-offcanvas-bg); + background-clip: padding-box; + outline: 0; + transition: transform 0.3s ease-in-out; + } +} +@media (max-width: 1199.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-xl { + transition: none; + } +} +@media (max-width: 1199.98px) { + .offcanvas-xl.offcanvas-start { + top: 0; + left: 0; + width: var(--bs-offcanvas-width); + border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(-100%); + } +} +@media (max-width: 1199.98px) { + .offcanvas-xl.offcanvas-end { + top: 0; + right: 0; + width: var(--bs-offcanvas-width); + border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(100%); + } +} +@media (max-width: 1199.98px) { + .offcanvas-xl.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(-100%); + } +} +@media (max-width: 1199.98px) { + .offcanvas-xl.offcanvas-bottom { + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(100%); + } +} +@media (max-width: 1199.98px) { + .offcanvas-xl.showing, .offcanvas-xl.show:not(.hiding) { + transform: none; + } +} +@media (max-width: 1199.98px) { + .offcanvas-xl.showing, .offcanvas-xl.hiding, .offcanvas-xl.show { + visibility: visible; + } +} +@media (min-width: 1200px) { + .offcanvas-xl { + --bs-offcanvas-height: auto; + --bs-offcanvas-border-width: 0; + background-color: transparent !important; + } + .offcanvas-xl .offcanvas-header { + display: none; + } + .offcanvas-xl .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} + +@media (max-width: 1399.98px) { + .offcanvas-xxl { + position: fixed; + bottom: 0; + z-index: var(--bs-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--bs-offcanvas-color); + visibility: hidden; + background-color: var(--bs-offcanvas-bg); + background-clip: padding-box; + outline: 0; + transition: transform 0.3s ease-in-out; + } +} +@media (max-width: 1399.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-xxl { + transition: none; + } +} +@media (max-width: 1399.98px) { + .offcanvas-xxl.offcanvas-start { + top: 0; + left: 0; + width: var(--bs-offcanvas-width); + border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(-100%); + } +} +@media (max-width: 1399.98px) { + .offcanvas-xxl.offcanvas-end { + top: 0; + right: 0; + width: var(--bs-offcanvas-width); + border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(100%); + } +} +@media (max-width: 1399.98px) { + .offcanvas-xxl.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(-100%); + } +} +@media (max-width: 1399.98px) { + .offcanvas-xxl.offcanvas-bottom { + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(100%); + } +} +@media (max-width: 1399.98px) { + .offcanvas-xxl.showing, .offcanvas-xxl.show:not(.hiding) { + transform: none; + } +} +@media (max-width: 1399.98px) { + .offcanvas-xxl.showing, .offcanvas-xxl.hiding, .offcanvas-xxl.show { + visibility: visible; + } +} +@media (min-width: 1400px) { + .offcanvas-xxl { + --bs-offcanvas-height: auto; + --bs-offcanvas-border-width: 0; + background-color: transparent !important; + } + .offcanvas-xxl .offcanvas-header { + display: none; + } + .offcanvas-xxl .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} + +.offcanvas { + position: fixed; + bottom: 0; + z-index: var(--bs-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--bs-offcanvas-color); + visibility: hidden; + background-color: var(--bs-offcanvas-bg); + background-clip: padding-box; + outline: 0; + transition: transform 0.3s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .offcanvas { + transition: none; + } +} +.offcanvas.offcanvas-start { + top: 0; + left: 0; + width: var(--bs-offcanvas-width); + border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(-100%); +} +.offcanvas.offcanvas-end { + top: 0; + right: 0; + width: var(--bs-offcanvas-width); + border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(100%); +} +.offcanvas.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(-100%); +} +.offcanvas.offcanvas-bottom { + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(100%); +} +.offcanvas.showing, .offcanvas.show:not(.hiding) { + transform: none; +} +.offcanvas.showing, .offcanvas.hiding, .offcanvas.show { + visibility: visible; +} + +.offcanvas-backdrop { + position: fixed; + top: 0; + left: 0; + z-index: 1040; + width: 100vw; + height: 100vh; + background-color: #000; +} +.offcanvas-backdrop.fade { + opacity: 0; +} +.offcanvas-backdrop.show { + opacity: 0.5; +} + +.offcanvas-header { + display: flex; + align-items: center; + justify-content: space-between; + padding: var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x); +} +.offcanvas-header .btn-close { + padding: calc(var(--bs-offcanvas-padding-y) * 0.5) calc(var(--bs-offcanvas-padding-x) * 0.5); + margin-top: calc(-0.5 * var(--bs-offcanvas-padding-y)); + margin-right: calc(-0.5 * var(--bs-offcanvas-padding-x)); + margin-bottom: calc(-0.5 * var(--bs-offcanvas-padding-y)); +} + +.offcanvas-title { + margin-bottom: 0; + line-height: 1.5; +} + +.offcanvas-body { + flex-grow: 1; + padding: var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x); + overflow-y: auto; +} + +.placeholder { + display: inline-block; + min-height: 1em; + vertical-align: middle; + cursor: wait; + background-color: currentcolor; + opacity: 0.5; +} +.placeholder.btn::before { + display: inline-block; + content: ""; +} + +.placeholder-xs { + min-height: 0.6em; +} + +.placeholder-sm { + min-height: 0.8em; +} + +.placeholder-lg { + min-height: 1.2em; +} + +.placeholder-glow .placeholder { + animation: placeholder-glow 2s ease-in-out infinite; +} + +@keyframes placeholder-glow { + 50% { + opacity: 0.2; + } +} +.placeholder-wave { + -webkit-mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%); + mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%); + -webkit-mask-size: 200% 100%; + mask-size: 200% 100%; + animation: placeholder-wave 2s linear infinite; +} + +@keyframes placeholder-wave { + 100% { + -webkit-mask-position: -200% 0%; + mask-position: -200% 0%; + } +} +.clearfix::after { + display: block; + clear: both; + content: ""; +} + +.text-bg-primary { + color: #fff !important; + background-color: RGBA(255, 200, 0, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-secondary { + color: #fff !important; + background-color: RGBA(108, 117, 125, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-success { + color: #fff !important; + background-color: RGBA(25, 135, 84, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-info { + color: #fff !important; + background-color: RGBA(13, 202, 240, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-warning { + color: #fff !important; + background-color: RGBA(255, 200, 0, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-danger { + color: #fff !important; + background-color: RGBA(220, 53, 69, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-light { + color: #000 !important; + background-color: RGBA(248, 249, 250, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-dark { + color: #fff !important; + background-color: RGBA(33, 37, 41, var(--bs-bg-opacity, 1)) !important; +} + +.link-primary { + color: #ffc800 !important; +} +.link-primary:hover, .link-primary:focus { + color: #cca000 !important; +} + +.link-secondary { + color: #6c757d !important; +} +.link-secondary:hover, .link-secondary:focus { + color: #565e64 !important; +} + +.link-success { + color: #198754 !important; +} +.link-success:hover, .link-success:focus { + color: #146c43 !important; +} + +.link-info { + color: #0dcaf0 !important; +} +.link-info:hover, .link-info:focus { + color: #0aa2c0 !important; +} + +.link-warning { + color: #ffc800 !important; +} +.link-warning:hover, .link-warning:focus { + color: #cca000 !important; +} + +.link-danger { + color: #dc3545 !important; +} +.link-danger:hover, .link-danger:focus { + color: #b02a37 !important; +} + +.link-light { + color: #f8f9fa !important; +} +.link-light:hover, .link-light:focus { + color: #f9fafb !important; +} + +.link-dark { + color: #212529 !important; +} +.link-dark:hover, .link-dark:focus { + color: #1a1e21 !important; +} + +.ratio { + position: relative; + width: 100%; +} +.ratio::before { + display: block; + padding-top: var(--bs-aspect-ratio); + content: ""; +} +.ratio > * { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +.ratio-1x1 { + --bs-aspect-ratio: 100%; +} + +.ratio-4x3 { + --bs-aspect-ratio: 75%; +} + +.ratio-16x9 { + --bs-aspect-ratio: 56.25%; +} + +.ratio-21x9 { + --bs-aspect-ratio: 42.8571428571%; +} + +.fixed-top { + position: fixed; + top: 0; + right: 0; + left: 0; + z-index: 1030; +} + +.fixed-bottom { + position: fixed; + right: 0; + bottom: 0; + left: 0; + z-index: 1030; +} + +.sticky-top { + position: sticky; + top: 0; + z-index: 1020; +} + +.sticky-bottom { + position: sticky; + bottom: 0; + z-index: 1020; +} + +@media (min-width: 576px) { + .sticky-sm-top { + position: sticky; + top: 0; + z-index: 1020; + } + .sticky-sm-bottom { + position: sticky; + bottom: 0; + z-index: 1020; + } +} +@media (min-width: 768px) { + .sticky-md-top { + position: sticky; + top: 0; + z-index: 1020; + } + .sticky-md-bottom { + position: sticky; + bottom: 0; + z-index: 1020; + } +} +@media (min-width: 992px) { + .sticky-lg-top { + position: sticky; + top: 0; + z-index: 1020; + } + .sticky-lg-bottom { + position: sticky; + bottom: 0; + z-index: 1020; + } +} +@media (min-width: 1200px) { + .sticky-xl-top { + position: sticky; + top: 0; + z-index: 1020; + } + .sticky-xl-bottom { + position: sticky; + bottom: 0; + z-index: 1020; + } +} +@media (min-width: 1400px) { + .sticky-xxl-top { + position: sticky; + top: 0; + z-index: 1020; + } + .sticky-xxl-bottom { + position: sticky; + bottom: 0; + z-index: 1020; + } +} +.hstack { + display: flex; + flex-direction: row; + align-items: center; + align-self: stretch; +} + +.vstack { + display: flex; + flex: 1 1 auto; + flex-direction: column; + align-self: stretch; +} + +.visually-hidden, +.visually-hidden-focusable:not(:focus):not(:focus-within) { + position: absolute !important; + width: 1px !important; + height: 1px !important; + padding: 0 !important; + margin: -1px !important; + overflow: hidden !important; + clip: rect(0, 0, 0, 0) !important; + white-space: nowrap !important; + border: 0 !important; +} + +.stretched-link::after { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1; + content: ""; +} + +.text-truncate { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.vr { + display: inline-block; + align-self: stretch; + width: 1px; + min-height: 1em; + background-color: currentcolor; + opacity: 0.25; +} + +.align-baseline { + vertical-align: baseline !important; +} + +.align-top { + vertical-align: top !important; +} + +.align-middle { + vertical-align: middle !important; +} + +.align-bottom { + vertical-align: bottom !important; +} + +.align-text-bottom { + vertical-align: text-bottom !important; +} + +.align-text-top { + vertical-align: text-top !important; +} + +.float-start { + float: left !important; +} + +.float-end { + float: right !important; +} + +.float-none { + float: none !important; +} + +.opacity-0 { + opacity: 0 !important; +} + +.opacity-25 { + opacity: 0.25 !important; +} + +.opacity-50 { + opacity: 0.5 !important; +} + +.opacity-75 { + opacity: 0.75 !important; +} + +.opacity-100 { + opacity: 1 !important; +} + +.overflow-auto { + overflow: auto !important; +} + +.overflow-hidden { + overflow: hidden !important; +} + +.overflow-visible { + overflow: visible !important; +} + +.overflow-scroll { + overflow: scroll !important; +} + +.d-inline { + display: inline !important; +} + +.d-inline-block { + display: inline-block !important; +} + +.d-block { + display: block !important; +} + +.d-grid { + display: grid !important; +} + +.d-table { + display: table !important; +} + +.d-table-row { + display: table-row !important; +} + +.d-table-cell { + display: table-cell !important; +} + +.d-flex { + display: flex !important; +} + +.d-inline-flex { + display: inline-flex !important; +} + +.d-none { + display: none !important; +} + +.shadow { + box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important; +} + +.shadow-sm { + box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important; +} + +.shadow-lg { + box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important; +} + +.shadow-none { + box-shadow: none !important; +} + +.position-static { + position: static !important; +} + +.position-relative { + position: relative !important; +} + +.position-absolute { + position: absolute !important; +} + +.position-fixed { + position: fixed !important; +} + +.position-sticky { + position: sticky !important; +} + +.top-0 { + top: 0 !important; +} + +.top-50 { + top: 50% !important; +} + +.top-100 { + top: 100% !important; +} + +.bottom-0 { + bottom: 0 !important; +} + +.bottom-50 { + bottom: 50% !important; +} + +.bottom-100 { + bottom: 100% !important; +} + +.start-0 { + left: 0 !important; +} + +.start-50 { + left: 50% !important; +} + +.start-100 { + left: 100% !important; +} + +.end-0 { + right: 0 !important; +} + +.end-50 { + right: 50% !important; +} + +.end-100 { + right: 100% !important; +} + +.translate-middle { + transform: translate(-50%, -50%) !important; +} + +.translate-middle-x { + transform: translateX(-50%) !important; +} + +.translate-middle-y { + transform: translateY(-50%) !important; +} + +.border { + border: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important; +} + +.border-0 { + border: 0 !important; +} + +.border-top { + border-top: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important; +} + +.border-top-0 { + border-top: 0 !important; +} + +.border-end { + border-right: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important; +} + +.border-end-0 { + border-right: 0 !important; +} + +.border-bottom { + border-bottom: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important; +} + +.border-bottom-0 { + border-bottom: 0 !important; +} + +.border-start { + border-left: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important; +} + +.border-start-0 { + border-left: 0 !important; +} + +.border-primary { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-primary-rgb), var(--bs-border-opacity)) !important; +} + +.border-secondary { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-secondary-rgb), var(--bs-border-opacity)) !important; +} + +.border-success { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-success-rgb), var(--bs-border-opacity)) !important; +} + +.border-info { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-info-rgb), var(--bs-border-opacity)) !important; +} + +.border-warning { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-warning-rgb), var(--bs-border-opacity)) !important; +} + +.border-danger { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-danger-rgb), var(--bs-border-opacity)) !important; +} + +.border-light { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-light-rgb), var(--bs-border-opacity)) !important; +} + +.border-dark { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-dark-rgb), var(--bs-border-opacity)) !important; +} + +.border-white { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-white-rgb), var(--bs-border-opacity)) !important; +} + +.border-1 { + --bs-border-width: 1px; +} + +.border-2 { + --bs-border-width: 2px; +} + +.border-3 { + --bs-border-width: 3px; +} + +.border-4 { + --bs-border-width: 4px; +} + +.border-5 { + --bs-border-width: 5px; +} + +.border-opacity-10 { + --bs-border-opacity: 0.1; +} + +.border-opacity-25 { + --bs-border-opacity: 0.25; +} + +.border-opacity-50 { + --bs-border-opacity: 0.5; +} + +.border-opacity-75 { + --bs-border-opacity: 0.75; +} + +.border-opacity-100 { + --bs-border-opacity: 1; +} + +.w-25 { + width: 25% !important; +} + +.w-50 { + width: 50% !important; +} + +.w-75 { + width: 75% !important; +} + +.w-100 { + width: 100% !important; +} + +.w-auto { + width: auto !important; +} + +.mw-100 { + max-width: 100% !important; +} + +.vw-100 { + width: 100vw !important; +} + +.min-vw-100 { + min-width: 100vw !important; +} + +.h-25 { + height: 25% !important; +} + +.h-50 { + height: 50% !important; +} + +.h-75 { + height: 75% !important; +} + +.h-100 { + height: 100% !important; +} + +.h-auto { + height: auto !important; +} + +.mh-100 { + max-height: 100% !important; +} + +.vh-100 { + height: 100vh !important; +} + +.min-vh-100 { + min-height: 100vh !important; +} + +.flex-fill { + flex: 1 1 auto !important; +} + +.flex-row { + flex-direction: row !important; +} + +.flex-column { + flex-direction: column !important; +} + +.flex-row-reverse { + flex-direction: row-reverse !important; +} + +.flex-column-reverse { + flex-direction: column-reverse !important; +} + +.flex-grow-0 { + flex-grow: 0 !important; +} + +.flex-grow-1 { + flex-grow: 1 !important; +} + +.flex-shrink-0 { + flex-shrink: 0 !important; +} + +.flex-shrink-1 { + flex-shrink: 1 !important; +} + +.flex-wrap { + flex-wrap: wrap !important; +} + +.flex-nowrap { + flex-wrap: nowrap !important; +} + +.flex-wrap-reverse { + flex-wrap: wrap-reverse !important; +} + +.justify-content-start { + justify-content: flex-start !important; +} + +.justify-content-end { + justify-content: flex-end !important; +} + +.justify-content-center { + justify-content: center !important; +} + +.justify-content-between { + justify-content: space-between !important; +} + +.justify-content-around { + justify-content: space-around !important; +} + +.justify-content-evenly { + justify-content: space-evenly !important; +} + +.align-items-start { + align-items: flex-start !important; +} + +.align-items-end { + align-items: flex-end !important; +} + +.align-items-center { + align-items: center !important; +} + +.align-items-baseline { + align-items: baseline !important; +} + +.align-items-stretch { + align-items: stretch !important; +} + +.align-content-start { + align-content: flex-start !important; +} + +.align-content-end { + align-content: flex-end !important; +} + +.align-content-center { + align-content: center !important; +} + +.align-content-between { + align-content: space-between !important; +} + +.align-content-around { + align-content: space-around !important; +} + +.align-content-stretch { + align-content: stretch !important; +} + +.align-self-auto { + align-self: auto !important; +} + +.align-self-start { + align-self: flex-start !important; +} + +.align-self-end { + align-self: flex-end !important; +} + +.align-self-center { + align-self: center !important; +} + +.align-self-baseline { + align-self: baseline !important; +} + +.align-self-stretch { + align-self: stretch !important; +} + +.order-first { + order: -1 !important; +} + +.order-0 { + order: 0 !important; +} + +.order-1 { + order: 1 !important; +} + +.order-2 { + order: 2 !important; +} + +.order-3 { + order: 3 !important; +} + +.order-4 { + order: 4 !important; +} + +.order-5 { + order: 5 !important; +} + +.order-last { + order: 6 !important; +} + +.m-0 { + margin: 0 !important; +} + +.m-1 { + margin: 0.25rem !important; +} + +.m-2 { + margin: 0.5rem !important; +} + +.m-3 { + margin: 1rem !important; +} + +.m-4 { + margin: 1.5rem !important; +} + +.m-5 { + margin: 3rem !important; +} + +.m-auto { + margin: auto !important; +} + +.mx-0 { + margin-right: 0 !important; + margin-left: 0 !important; +} + +.mx-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; +} + +.mx-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; +} + +.mx-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; +} + +.mx-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; +} + +.mx-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; +} + +.mx-auto { + margin-right: auto !important; + margin-left: auto !important; +} + +.my-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; +} + +.my-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; +} + +.my-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; +} + +.my-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; +} + +.my-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; +} + +.my-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; +} + +.my-auto { + margin-top: auto !important; + margin-bottom: auto !important; +} + +.mt-0 { + margin-top: 0 !important; +} + +.mt-1 { + margin-top: 0.25rem !important; +} + +.mt-2 { + margin-top: 0.5rem !important; +} + +.mt-3 { + margin-top: 1rem !important; +} + +.mt-4 { + margin-top: 1.5rem !important; +} + +.mt-5 { + margin-top: 3rem !important; +} + +.mt-auto { + margin-top: auto !important; +} + +.me-0 { + margin-right: 0 !important; +} + +.me-1 { + margin-right: 0.25rem !important; +} + +.me-2 { + margin-right: 0.5rem !important; +} + +.me-3 { + margin-right: 1rem !important; +} + +.me-4 { + margin-right: 1.5rem !important; +} + +.me-5 { + margin-right: 3rem !important; +} + +.me-auto { + margin-right: auto !important; +} + +.mb-0 { + margin-bottom: 0 !important; +} + +.mb-1 { + margin-bottom: 0.25rem !important; +} + +.mb-2 { + margin-bottom: 0.5rem !important; +} + +.mb-3 { + margin-bottom: 1rem !important; +} + +.mb-4 { + margin-bottom: 1.5rem !important; +} + +.mb-5 { + margin-bottom: 3rem !important; +} + +.mb-auto { + margin-bottom: auto !important; +} + +.ms-0 { + margin-left: 0 !important; +} + +.ms-1 { + margin-left: 0.25rem !important; +} + +.ms-2 { + margin-left: 0.5rem !important; +} + +.ms-3 { + margin-left: 1rem !important; +} + +.ms-4 { + margin-left: 1.5rem !important; +} + +.ms-5 { + margin-left: 3rem !important; +} + +.ms-auto { + margin-left: auto !important; +} + +.p-0 { + padding: 0 !important; +} + +.p-1 { + padding: 0.25rem !important; +} + +.p-2 { + padding: 0.5rem !important; +} + +.p-3 { + padding: 1rem !important; +} + +.p-4 { + padding: 1.5rem !important; +} + +.p-5 { + padding: 3rem !important; +} + +.px-0 { + padding-right: 0 !important; + padding-left: 0 !important; +} + +.px-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; +} + +.px-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; +} + +.px-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; +} + +.px-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; +} + +.px-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; +} + +.py-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; +} + +.py-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; +} + +.py-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; +} + +.py-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; +} + +.py-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; +} + +.py-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; +} + +.pt-0 { + padding-top: 0 !important; +} + +.pt-1 { + padding-top: 0.25rem !important; +} + +.pt-2 { + padding-top: 0.5rem !important; +} + +.pt-3 { + padding-top: 1rem !important; +} + +.pt-4 { + padding-top: 1.5rem !important; +} + +.pt-5 { + padding-top: 3rem !important; +} + +.pe-0 { + padding-right: 0 !important; +} + +.pe-1 { + padding-right: 0.25rem !important; +} + +.pe-2 { + padding-right: 0.5rem !important; +} + +.pe-3 { + padding-right: 1rem !important; +} + +.pe-4 { + padding-right: 1.5rem !important; +} + +.pe-5 { + padding-right: 3rem !important; +} + +.pb-0 { + padding-bottom: 0 !important; +} + +.pb-1 { + padding-bottom: 0.25rem !important; +} + +.pb-2 { + padding-bottom: 0.5rem !important; +} + +.pb-3 { + padding-bottom: 1rem !important; +} + +.pb-4 { + padding-bottom: 1.5rem !important; +} + +.pb-5 { + padding-bottom: 3rem !important; +} + +.ps-0 { + padding-left: 0 !important; +} + +.ps-1 { + padding-left: 0.25rem !important; +} + +.ps-2 { + padding-left: 0.5rem !important; +} + +.ps-3 { + padding-left: 1rem !important; +} + +.ps-4 { + padding-left: 1.5rem !important; +} + +.ps-5 { + padding-left: 3rem !important; +} + +.gap-0 { + gap: 0 !important; +} + +.gap-1 { + gap: 0.25rem !important; +} + +.gap-2 { + gap: 0.5rem !important; +} + +.gap-3 { + gap: 1rem !important; +} + +.gap-4 { + gap: 1.5rem !important; +} + +.gap-5 { + gap: 3rem !important; +} + +.font-monospace { + font-family: var(--bs-font-monospace) !important; +} + +.fs-1 { + font-size: calc(1.375rem + 1.5vw) !important; +} + +.fs-2 { + font-size: calc(1.325rem + 0.9vw) !important; +} + +.fs-3 { + font-size: calc(1.3rem + 0.6vw) !important; +} + +.fs-4 { + font-size: calc(1.275rem + 0.3vw) !important; +} + +.fs-5 { + font-size: 1.25rem !important; +} + +.fs-6 { + font-size: 1rem !important; +} + +.fst-italic { + font-style: italic !important; +} + +.fst-normal { + font-style: normal !important; +} + +.fw-light { + font-weight: 300 !important; +} + +.fw-lighter { + font-weight: lighter !important; +} + +.fw-normal { + font-weight: 400 !important; +} + +.fw-bold { + font-weight: 700 !important; +} + +.fw-semibold { + font-weight: 600 !important; +} + +.fw-bolder { + font-weight: bolder !important; +} + +.lh-1 { + line-height: 1 !important; +} + +.lh-sm { + line-height: 1.25 !important; +} + +.lh-base { + line-height: 1.5 !important; +} + +.lh-lg { + line-height: 1.75 !important; +} + +.text-start { + text-align: left !important; +} + +.text-end { + text-align: right !important; +} + +.text-center { + text-align: center !important; +} + +.text-decoration-none { + text-decoration: none !important; +} + +.text-decoration-underline { + text-decoration: underline !important; +} + +.text-decoration-line-through { + text-decoration: line-through !important; +} + +.text-lowercase { + text-transform: lowercase !important; +} + +.text-uppercase { + text-transform: uppercase !important; +} + +.text-capitalize { + text-transform: capitalize !important; +} + +.text-wrap { + white-space: normal !important; +} + +.text-nowrap { + white-space: nowrap !important; +} + +/* rtl:begin:remove */ +.text-break { + word-wrap: break-word !important; + word-break: break-word !important; +} + +/* rtl:end:remove */ +.text-primary { + --bs-text-opacity: 1; + color: rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important; +} + +.text-secondary { + --bs-text-opacity: 1; + color: rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important; +} + +.text-success { + --bs-text-opacity: 1; + color: rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important; +} + +.text-info { + --bs-text-opacity: 1; + color: rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important; +} + +.text-warning { + --bs-text-opacity: 1; + color: rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important; +} + +.text-danger { + --bs-text-opacity: 1; + color: rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important; +} + +.text-light { + --bs-text-opacity: 1; + color: rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important; +} + +.text-dark { + --bs-text-opacity: 1; + color: rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important; +} + +.text-black { + --bs-text-opacity: 1; + color: rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important; +} + +.text-white { + --bs-text-opacity: 1; + color: rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important; +} + +.text-body { + --bs-text-opacity: 1; + color: rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important; +} + +.text-muted { + --bs-text-opacity: 1; + color: #6c757d !important; +} + +.text-black-50 { + --bs-text-opacity: 1; + color: rgba(0, 0, 0, 0.5) !important; +} + +.text-white-50 { + --bs-text-opacity: 1; + color: rgba(255, 255, 255, 0.5) !important; +} + +.text-reset { + --bs-text-opacity: 1; + color: inherit !important; +} + +.text-opacity-25 { + --bs-text-opacity: 0.25; +} + +.text-opacity-50 { + --bs-text-opacity: 0.5; +} + +.text-opacity-75 { + --bs-text-opacity: 0.75; +} + +.text-opacity-100 { + --bs-text-opacity: 1; +} + +.bg-primary { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-secondary { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-success { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-info { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-warning { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-danger { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-light { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-dark { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-black { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-white { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-body { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-transparent { + --bs-bg-opacity: 1; + background-color: transparent !important; +} + +.bg-opacity-10 { + --bs-bg-opacity: 0.1; +} + +.bg-opacity-25 { + --bs-bg-opacity: 0.25; +} + +.bg-opacity-50 { + --bs-bg-opacity: 0.5; +} + +.bg-opacity-75 { + --bs-bg-opacity: 0.75; +} + +.bg-opacity-100 { + --bs-bg-opacity: 1; +} + +.bg-gradient { + background-image: var(--bs-gradient) !important; +} + +.user-select-all { + -webkit-user-select: all !important; + -moz-user-select: all !important; + user-select: all !important; +} + +.user-select-auto { + -webkit-user-select: auto !important; + -moz-user-select: auto !important; + user-select: auto !important; +} + +.user-select-none { + -webkit-user-select: none !important; + -moz-user-select: none !important; + user-select: none !important; +} + +.pe-none { + pointer-events: none !important; +} + +.pe-auto { + pointer-events: auto !important; +} + +.rounded { + border-radius: var(--bs-border-radius) !important; +} + +.rounded-0 { + border-radius: 0 !important; +} + +.rounded-1 { + border-radius: var(--bs-border-radius-sm) !important; +} + +.rounded-2 { + border-radius: var(--bs-border-radius) !important; +} + +.rounded-3 { + border-radius: var(--bs-border-radius-lg) !important; +} + +.rounded-4 { + border-radius: var(--bs-border-radius-xl) !important; +} + +.rounded-5 { + border-radius: var(--bs-border-radius-2xl) !important; +} + +.rounded-circle { + border-radius: 50% !important; +} + +.rounded-pill { + border-radius: var(--bs-border-radius-pill) !important; +} + +.rounded-top { + border-top-left-radius: var(--bs-border-radius) !important; + border-top-right-radius: var(--bs-border-radius) !important; +} + +.rounded-end { + border-top-right-radius: var(--bs-border-radius) !important; + border-bottom-right-radius: var(--bs-border-radius) !important; +} + +.rounded-bottom { + border-bottom-right-radius: var(--bs-border-radius) !important; + border-bottom-left-radius: var(--bs-border-radius) !important; +} + +.rounded-start { + border-bottom-left-radius: var(--bs-border-radius) !important; + border-top-left-radius: var(--bs-border-radius) !important; +} + +.visible { + visibility: visible !important; +} + +.invisible { + visibility: hidden !important; +} + +@media (min-width: 576px) { + .float-sm-start { + float: left !important; + } + .float-sm-end { + float: right !important; + } + .float-sm-none { + float: none !important; + } + .d-sm-inline { + display: inline !important; + } + .d-sm-inline-block { + display: inline-block !important; + } + .d-sm-block { + display: block !important; + } + .d-sm-grid { + display: grid !important; + } + .d-sm-table { + display: table !important; + } + .d-sm-table-row { + display: table-row !important; + } + .d-sm-table-cell { + display: table-cell !important; + } + .d-sm-flex { + display: flex !important; + } + .d-sm-inline-flex { + display: inline-flex !important; + } + .d-sm-none { + display: none !important; + } + .flex-sm-fill { + flex: 1 1 auto !important; + } + .flex-sm-row { + flex-direction: row !important; + } + .flex-sm-column { + flex-direction: column !important; + } + .flex-sm-row-reverse { + flex-direction: row-reverse !important; + } + .flex-sm-column-reverse { + flex-direction: column-reverse !important; + } + .flex-sm-grow-0 { + flex-grow: 0 !important; + } + .flex-sm-grow-1 { + flex-grow: 1 !important; + } + .flex-sm-shrink-0 { + flex-shrink: 0 !important; + } + .flex-sm-shrink-1 { + flex-shrink: 1 !important; + } + .flex-sm-wrap { + flex-wrap: wrap !important; + } + .flex-sm-nowrap { + flex-wrap: nowrap !important; + } + .flex-sm-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-sm-start { + justify-content: flex-start !important; + } + .justify-content-sm-end { + justify-content: flex-end !important; + } + .justify-content-sm-center { + justify-content: center !important; + } + .justify-content-sm-between { + justify-content: space-between !important; + } + .justify-content-sm-around { + justify-content: space-around !important; + } + .justify-content-sm-evenly { + justify-content: space-evenly !important; + } + .align-items-sm-start { + align-items: flex-start !important; + } + .align-items-sm-end { + align-items: flex-end !important; + } + .align-items-sm-center { + align-items: center !important; + } + .align-items-sm-baseline { + align-items: baseline !important; + } + .align-items-sm-stretch { + align-items: stretch !important; + } + .align-content-sm-start { + align-content: flex-start !important; + } + .align-content-sm-end { + align-content: flex-end !important; + } + .align-content-sm-center { + align-content: center !important; + } + .align-content-sm-between { + align-content: space-between !important; + } + .align-content-sm-around { + align-content: space-around !important; + } + .align-content-sm-stretch { + align-content: stretch !important; + } + .align-self-sm-auto { + align-self: auto !important; + } + .align-self-sm-start { + align-self: flex-start !important; + } + .align-self-sm-end { + align-self: flex-end !important; + } + .align-self-sm-center { + align-self: center !important; + } + .align-self-sm-baseline { + align-self: baseline !important; + } + .align-self-sm-stretch { + align-self: stretch !important; + } + .order-sm-first { + order: -1 !important; + } + .order-sm-0 { + order: 0 !important; + } + .order-sm-1 { + order: 1 !important; + } + .order-sm-2 { + order: 2 !important; + } + .order-sm-3 { + order: 3 !important; + } + .order-sm-4 { + order: 4 !important; + } + .order-sm-5 { + order: 5 !important; + } + .order-sm-last { + order: 6 !important; + } + .m-sm-0 { + margin: 0 !important; + } + .m-sm-1 { + margin: 0.25rem !important; + } + .m-sm-2 { + margin: 0.5rem !important; + } + .m-sm-3 { + margin: 1rem !important; + } + .m-sm-4 { + margin: 1.5rem !important; + } + .m-sm-5 { + margin: 3rem !important; + } + .m-sm-auto { + margin: auto !important; + } + .mx-sm-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-sm-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-sm-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-sm-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-sm-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .mx-sm-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-sm-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-sm-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-sm-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-sm-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-sm-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-sm-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-sm-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-sm-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-sm-0 { + margin-top: 0 !important; + } + .mt-sm-1 { + margin-top: 0.25rem !important; + } + .mt-sm-2 { + margin-top: 0.5rem !important; + } + .mt-sm-3 { + margin-top: 1rem !important; + } + .mt-sm-4 { + margin-top: 1.5rem !important; + } + .mt-sm-5 { + margin-top: 3rem !important; + } + .mt-sm-auto { + margin-top: auto !important; + } + .me-sm-0 { + margin-right: 0 !important; + } + .me-sm-1 { + margin-right: 0.25rem !important; + } + .me-sm-2 { + margin-right: 0.5rem !important; + } + .me-sm-3 { + margin-right: 1rem !important; + } + .me-sm-4 { + margin-right: 1.5rem !important; + } + .me-sm-5 { + margin-right: 3rem !important; + } + .me-sm-auto { + margin-right: auto !important; + } + .mb-sm-0 { + margin-bottom: 0 !important; + } + .mb-sm-1 { + margin-bottom: 0.25rem !important; + } + .mb-sm-2 { + margin-bottom: 0.5rem !important; + } + .mb-sm-3 { + margin-bottom: 1rem !important; + } + .mb-sm-4 { + margin-bottom: 1.5rem !important; + } + .mb-sm-5 { + margin-bottom: 3rem !important; + } + .mb-sm-auto { + margin-bottom: auto !important; + } + .ms-sm-0 { + margin-left: 0 !important; + } + .ms-sm-1 { + margin-left: 0.25rem !important; + } + .ms-sm-2 { + margin-left: 0.5rem !important; + } + .ms-sm-3 { + margin-left: 1rem !important; + } + .ms-sm-4 { + margin-left: 1.5rem !important; + } + .ms-sm-5 { + margin-left: 3rem !important; + } + .ms-sm-auto { + margin-left: auto !important; + } + .p-sm-0 { + padding: 0 !important; + } + .p-sm-1 { + padding: 0.25rem !important; + } + .p-sm-2 { + padding: 0.5rem !important; + } + .p-sm-3 { + padding: 1rem !important; + } + .p-sm-4 { + padding: 1.5rem !important; + } + .p-sm-5 { + padding: 3rem !important; + } + .px-sm-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-sm-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-sm-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-sm-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-sm-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-sm-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .py-sm-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-sm-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-sm-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-sm-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-sm-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-sm-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .pt-sm-0 { + padding-top: 0 !important; + } + .pt-sm-1 { + padding-top: 0.25rem !important; + } + .pt-sm-2 { + padding-top: 0.5rem !important; + } + .pt-sm-3 { + padding-top: 1rem !important; + } + .pt-sm-4 { + padding-top: 1.5rem !important; + } + .pt-sm-5 { + padding-top: 3rem !important; + } + .pe-sm-0 { + padding-right: 0 !important; + } + .pe-sm-1 { + padding-right: 0.25rem !important; + } + .pe-sm-2 { + padding-right: 0.5rem !important; + } + .pe-sm-3 { + padding-right: 1rem !important; + } + .pe-sm-4 { + padding-right: 1.5rem !important; + } + .pe-sm-5 { + padding-right: 3rem !important; + } + .pb-sm-0 { + padding-bottom: 0 !important; + } + .pb-sm-1 { + padding-bottom: 0.25rem !important; + } + .pb-sm-2 { + padding-bottom: 0.5rem !important; + } + .pb-sm-3 { + padding-bottom: 1rem !important; + } + .pb-sm-4 { + padding-bottom: 1.5rem !important; + } + .pb-sm-5 { + padding-bottom: 3rem !important; + } + .ps-sm-0 { + padding-left: 0 !important; + } + .ps-sm-1 { + padding-left: 0.25rem !important; + } + .ps-sm-2 { + padding-left: 0.5rem !important; + } + .ps-sm-3 { + padding-left: 1rem !important; + } + .ps-sm-4 { + padding-left: 1.5rem !important; + } + .ps-sm-5 { + padding-left: 3rem !important; + } + .gap-sm-0 { + gap: 0 !important; + } + .gap-sm-1 { + gap: 0.25rem !important; + } + .gap-sm-2 { + gap: 0.5rem !important; + } + .gap-sm-3 { + gap: 1rem !important; + } + .gap-sm-4 { + gap: 1.5rem !important; + } + .gap-sm-5 { + gap: 3rem !important; + } + .text-sm-start { + text-align: left !important; + } + .text-sm-end { + text-align: right !important; + } + .text-sm-center { + text-align: center !important; + } +} +@media (min-width: 768px) { + .float-md-start { + float: left !important; + } + .float-md-end { + float: right !important; + } + .float-md-none { + float: none !important; + } + .d-md-inline { + display: inline !important; + } + .d-md-inline-block { + display: inline-block !important; + } + .d-md-block { + display: block !important; + } + .d-md-grid { + display: grid !important; + } + .d-md-table { + display: table !important; + } + .d-md-table-row { + display: table-row !important; + } + .d-md-table-cell { + display: table-cell !important; + } + .d-md-flex { + display: flex !important; + } + .d-md-inline-flex { + display: inline-flex !important; + } + .d-md-none { + display: none !important; + } + .flex-md-fill { + flex: 1 1 auto !important; + } + .flex-md-row { + flex-direction: row !important; + } + .flex-md-column { + flex-direction: column !important; + } + .flex-md-row-reverse { + flex-direction: row-reverse !important; + } + .flex-md-column-reverse { + flex-direction: column-reverse !important; + } + .flex-md-grow-0 { + flex-grow: 0 !important; + } + .flex-md-grow-1 { + flex-grow: 1 !important; + } + .flex-md-shrink-0 { + flex-shrink: 0 !important; + } + .flex-md-shrink-1 { + flex-shrink: 1 !important; + } + .flex-md-wrap { + flex-wrap: wrap !important; + } + .flex-md-nowrap { + flex-wrap: nowrap !important; + } + .flex-md-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-md-start { + justify-content: flex-start !important; + } + .justify-content-md-end { + justify-content: flex-end !important; + } + .justify-content-md-center { + justify-content: center !important; + } + .justify-content-md-between { + justify-content: space-between !important; + } + .justify-content-md-around { + justify-content: space-around !important; + } + .justify-content-md-evenly { + justify-content: space-evenly !important; + } + .align-items-md-start { + align-items: flex-start !important; + } + .align-items-md-end { + align-items: flex-end !important; + } + .align-items-md-center { + align-items: center !important; + } + .align-items-md-baseline { + align-items: baseline !important; + } + .align-items-md-stretch { + align-items: stretch !important; + } + .align-content-md-start { + align-content: flex-start !important; + } + .align-content-md-end { + align-content: flex-end !important; + } + .align-content-md-center { + align-content: center !important; + } + .align-content-md-between { + align-content: space-between !important; + } + .align-content-md-around { + align-content: space-around !important; + } + .align-content-md-stretch { + align-content: stretch !important; + } + .align-self-md-auto { + align-self: auto !important; + } + .align-self-md-start { + align-self: flex-start !important; + } + .align-self-md-end { + align-self: flex-end !important; + } + .align-self-md-center { + align-self: center !important; + } + .align-self-md-baseline { + align-self: baseline !important; + } + .align-self-md-stretch { + align-self: stretch !important; + } + .order-md-first { + order: -1 !important; + } + .order-md-0 { + order: 0 !important; + } + .order-md-1 { + order: 1 !important; + } + .order-md-2 { + order: 2 !important; + } + .order-md-3 { + order: 3 !important; + } + .order-md-4 { + order: 4 !important; + } + .order-md-5 { + order: 5 !important; + } + .order-md-last { + order: 6 !important; + } + .m-md-0 { + margin: 0 !important; + } + .m-md-1 { + margin: 0.25rem !important; + } + .m-md-2 { + margin: 0.5rem !important; + } + .m-md-3 { + margin: 1rem !important; + } + .m-md-4 { + margin: 1.5rem !important; + } + .m-md-5 { + margin: 3rem !important; + } + .m-md-auto { + margin: auto !important; + } + .mx-md-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-md-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-md-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-md-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-md-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .mx-md-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-md-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-md-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-md-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-md-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-md-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-md-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-md-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-md-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-md-0 { + margin-top: 0 !important; + } + .mt-md-1 { + margin-top: 0.25rem !important; + } + .mt-md-2 { + margin-top: 0.5rem !important; + } + .mt-md-3 { + margin-top: 1rem !important; + } + .mt-md-4 { + margin-top: 1.5rem !important; + } + .mt-md-5 { + margin-top: 3rem !important; + } + .mt-md-auto { + margin-top: auto !important; + } + .me-md-0 { + margin-right: 0 !important; + } + .me-md-1 { + margin-right: 0.25rem !important; + } + .me-md-2 { + margin-right: 0.5rem !important; + } + .me-md-3 { + margin-right: 1rem !important; + } + .me-md-4 { + margin-right: 1.5rem !important; + } + .me-md-5 { + margin-right: 3rem !important; + } + .me-md-auto { + margin-right: auto !important; + } + .mb-md-0 { + margin-bottom: 0 !important; + } + .mb-md-1 { + margin-bottom: 0.25rem !important; + } + .mb-md-2 { + margin-bottom: 0.5rem !important; + } + .mb-md-3 { + margin-bottom: 1rem !important; + } + .mb-md-4 { + margin-bottom: 1.5rem !important; + } + .mb-md-5 { + margin-bottom: 3rem !important; + } + .mb-md-auto { + margin-bottom: auto !important; + } + .ms-md-0 { + margin-left: 0 !important; + } + .ms-md-1 { + margin-left: 0.25rem !important; + } + .ms-md-2 { + margin-left: 0.5rem !important; + } + .ms-md-3 { + margin-left: 1rem !important; + } + .ms-md-4 { + margin-left: 1.5rem !important; + } + .ms-md-5 { + margin-left: 3rem !important; + } + .ms-md-auto { + margin-left: auto !important; + } + .p-md-0 { + padding: 0 !important; + } + .p-md-1 { + padding: 0.25rem !important; + } + .p-md-2 { + padding: 0.5rem !important; + } + .p-md-3 { + padding: 1rem !important; + } + .p-md-4 { + padding: 1.5rem !important; + } + .p-md-5 { + padding: 3rem !important; + } + .px-md-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-md-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-md-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-md-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-md-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-md-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .py-md-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-md-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-md-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-md-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-md-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-md-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .pt-md-0 { + padding-top: 0 !important; + } + .pt-md-1 { + padding-top: 0.25rem !important; + } + .pt-md-2 { + padding-top: 0.5rem !important; + } + .pt-md-3 { + padding-top: 1rem !important; + } + .pt-md-4 { + padding-top: 1.5rem !important; + } + .pt-md-5 { + padding-top: 3rem !important; + } + .pe-md-0 { + padding-right: 0 !important; + } + .pe-md-1 { + padding-right: 0.25rem !important; + } + .pe-md-2 { + padding-right: 0.5rem !important; + } + .pe-md-3 { + padding-right: 1rem !important; + } + .pe-md-4 { + padding-right: 1.5rem !important; + } + .pe-md-5 { + padding-right: 3rem !important; + } + .pb-md-0 { + padding-bottom: 0 !important; + } + .pb-md-1 { + padding-bottom: 0.25rem !important; + } + .pb-md-2 { + padding-bottom: 0.5rem !important; + } + .pb-md-3 { + padding-bottom: 1rem !important; + } + .pb-md-4 { + padding-bottom: 1.5rem !important; + } + .pb-md-5 { + padding-bottom: 3rem !important; + } + .ps-md-0 { + padding-left: 0 !important; + } + .ps-md-1 { + padding-left: 0.25rem !important; + } + .ps-md-2 { + padding-left: 0.5rem !important; + } + .ps-md-3 { + padding-left: 1rem !important; + } + .ps-md-4 { + padding-left: 1.5rem !important; + } + .ps-md-5 { + padding-left: 3rem !important; + } + .gap-md-0 { + gap: 0 !important; + } + .gap-md-1 { + gap: 0.25rem !important; + } + .gap-md-2 { + gap: 0.5rem !important; + } + .gap-md-3 { + gap: 1rem !important; + } + .gap-md-4 { + gap: 1.5rem !important; + } + .gap-md-5 { + gap: 3rem !important; + } + .text-md-start { + text-align: left !important; + } + .text-md-end { + text-align: right !important; + } + .text-md-center { + text-align: center !important; + } +} +@media (min-width: 992px) { + .float-lg-start { + float: left !important; + } + .float-lg-end { + float: right !important; + } + .float-lg-none { + float: none !important; + } + .d-lg-inline { + display: inline !important; + } + .d-lg-inline-block { + display: inline-block !important; + } + .d-lg-block { + display: block !important; + } + .d-lg-grid { + display: grid !important; + } + .d-lg-table { + display: table !important; + } + .d-lg-table-row { + display: table-row !important; + } + .d-lg-table-cell { + display: table-cell !important; + } + .d-lg-flex { + display: flex !important; + } + .d-lg-inline-flex { + display: inline-flex !important; + } + .d-lg-none { + display: none !important; + } + .flex-lg-fill { + flex: 1 1 auto !important; + } + .flex-lg-row { + flex-direction: row !important; + } + .flex-lg-column { + flex-direction: column !important; + } + .flex-lg-row-reverse { + flex-direction: row-reverse !important; + } + .flex-lg-column-reverse { + flex-direction: column-reverse !important; + } + .flex-lg-grow-0 { + flex-grow: 0 !important; + } + .flex-lg-grow-1 { + flex-grow: 1 !important; + } + .flex-lg-shrink-0 { + flex-shrink: 0 !important; + } + .flex-lg-shrink-1 { + flex-shrink: 1 !important; + } + .flex-lg-wrap { + flex-wrap: wrap !important; + } + .flex-lg-nowrap { + flex-wrap: nowrap !important; + } + .flex-lg-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-lg-start { + justify-content: flex-start !important; + } + .justify-content-lg-end { + justify-content: flex-end !important; + } + .justify-content-lg-center { + justify-content: center !important; + } + .justify-content-lg-between { + justify-content: space-between !important; + } + .justify-content-lg-around { + justify-content: space-around !important; + } + .justify-content-lg-evenly { + justify-content: space-evenly !important; + } + .align-items-lg-start { + align-items: flex-start !important; + } + .align-items-lg-end { + align-items: flex-end !important; + } + .align-items-lg-center { + align-items: center !important; + } + .align-items-lg-baseline { + align-items: baseline !important; + } + .align-items-lg-stretch { + align-items: stretch !important; + } + .align-content-lg-start { + align-content: flex-start !important; + } + .align-content-lg-end { + align-content: flex-end !important; + } + .align-content-lg-center { + align-content: center !important; + } + .align-content-lg-between { + align-content: space-between !important; + } + .align-content-lg-around { + align-content: space-around !important; + } + .align-content-lg-stretch { + align-content: stretch !important; + } + .align-self-lg-auto { + align-self: auto !important; + } + .align-self-lg-start { + align-self: flex-start !important; + } + .align-self-lg-end { + align-self: flex-end !important; + } + .align-self-lg-center { + align-self: center !important; + } + .align-self-lg-baseline { + align-self: baseline !important; + } + .align-self-lg-stretch { + align-self: stretch !important; + } + .order-lg-first { + order: -1 !important; + } + .order-lg-0 { + order: 0 !important; + } + .order-lg-1 { + order: 1 !important; + } + .order-lg-2 { + order: 2 !important; + } + .order-lg-3 { + order: 3 !important; + } + .order-lg-4 { + order: 4 !important; + } + .order-lg-5 { + order: 5 !important; + } + .order-lg-last { + order: 6 !important; + } + .m-lg-0 { + margin: 0 !important; + } + .m-lg-1 { + margin: 0.25rem !important; + } + .m-lg-2 { + margin: 0.5rem !important; + } + .m-lg-3 { + margin: 1rem !important; + } + .m-lg-4 { + margin: 1.5rem !important; + } + .m-lg-5 { + margin: 3rem !important; + } + .m-lg-auto { + margin: auto !important; + } + .mx-lg-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-lg-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-lg-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-lg-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-lg-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .mx-lg-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-lg-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-lg-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-lg-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-lg-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-lg-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-lg-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-lg-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-lg-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-lg-0 { + margin-top: 0 !important; + } + .mt-lg-1 { + margin-top: 0.25rem !important; + } + .mt-lg-2 { + margin-top: 0.5rem !important; + } + .mt-lg-3 { + margin-top: 1rem !important; + } + .mt-lg-4 { + margin-top: 1.5rem !important; + } + .mt-lg-5 { + margin-top: 3rem !important; + } + .mt-lg-auto { + margin-top: auto !important; + } + .me-lg-0 { + margin-right: 0 !important; + } + .me-lg-1 { + margin-right: 0.25rem !important; + } + .me-lg-2 { + margin-right: 0.5rem !important; + } + .me-lg-3 { + margin-right: 1rem !important; + } + .me-lg-4 { + margin-right: 1.5rem !important; + } + .me-lg-5 { + margin-right: 3rem !important; + } + .me-lg-auto { + margin-right: auto !important; + } + .mb-lg-0 { + margin-bottom: 0 !important; + } + .mb-lg-1 { + margin-bottom: 0.25rem !important; + } + .mb-lg-2 { + margin-bottom: 0.5rem !important; + } + .mb-lg-3 { + margin-bottom: 1rem !important; + } + .mb-lg-4 { + margin-bottom: 1.5rem !important; + } + .mb-lg-5 { + margin-bottom: 3rem !important; + } + .mb-lg-auto { + margin-bottom: auto !important; + } + .ms-lg-0 { + margin-left: 0 !important; + } + .ms-lg-1 { + margin-left: 0.25rem !important; + } + .ms-lg-2 { + margin-left: 0.5rem !important; + } + .ms-lg-3 { + margin-left: 1rem !important; + } + .ms-lg-4 { + margin-left: 1.5rem !important; + } + .ms-lg-5 { + margin-left: 3rem !important; + } + .ms-lg-auto { + margin-left: auto !important; + } + .p-lg-0 { + padding: 0 !important; + } + .p-lg-1 { + padding: 0.25rem !important; + } + .p-lg-2 { + padding: 0.5rem !important; + } + .p-lg-3 { + padding: 1rem !important; + } + .p-lg-4 { + padding: 1.5rem !important; + } + .p-lg-5 { + padding: 3rem !important; + } + .px-lg-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-lg-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-lg-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-lg-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-lg-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-lg-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .py-lg-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-lg-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-lg-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-lg-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-lg-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-lg-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .pt-lg-0 { + padding-top: 0 !important; + } + .pt-lg-1 { + padding-top: 0.25rem !important; + } + .pt-lg-2 { + padding-top: 0.5rem !important; + } + .pt-lg-3 { + padding-top: 1rem !important; + } + .pt-lg-4 { + padding-top: 1.5rem !important; + } + .pt-lg-5 { + padding-top: 3rem !important; + } + .pe-lg-0 { + padding-right: 0 !important; + } + .pe-lg-1 { + padding-right: 0.25rem !important; + } + .pe-lg-2 { + padding-right: 0.5rem !important; + } + .pe-lg-3 { + padding-right: 1rem !important; + } + .pe-lg-4 { + padding-right: 1.5rem !important; + } + .pe-lg-5 { + padding-right: 3rem !important; + } + .pb-lg-0 { + padding-bottom: 0 !important; + } + .pb-lg-1 { + padding-bottom: 0.25rem !important; + } + .pb-lg-2 { + padding-bottom: 0.5rem !important; + } + .pb-lg-3 { + padding-bottom: 1rem !important; + } + .pb-lg-4 { + padding-bottom: 1.5rem !important; + } + .pb-lg-5 { + padding-bottom: 3rem !important; + } + .ps-lg-0 { + padding-left: 0 !important; + } + .ps-lg-1 { + padding-left: 0.25rem !important; + } + .ps-lg-2 { + padding-left: 0.5rem !important; + } + .ps-lg-3 { + padding-left: 1rem !important; + } + .ps-lg-4 { + padding-left: 1.5rem !important; + } + .ps-lg-5 { + padding-left: 3rem !important; + } + .gap-lg-0 { + gap: 0 !important; + } + .gap-lg-1 { + gap: 0.25rem !important; + } + .gap-lg-2 { + gap: 0.5rem !important; + } + .gap-lg-3 { + gap: 1rem !important; + } + .gap-lg-4 { + gap: 1.5rem !important; + } + .gap-lg-5 { + gap: 3rem !important; + } + .text-lg-start { + text-align: left !important; + } + .text-lg-end { + text-align: right !important; + } + .text-lg-center { + text-align: center !important; + } +} +@media (min-width: 1200px) { + .float-xl-start { + float: left !important; + } + .float-xl-end { + float: right !important; + } + .float-xl-none { + float: none !important; + } + .d-xl-inline { + display: inline !important; + } + .d-xl-inline-block { + display: inline-block !important; + } + .d-xl-block { + display: block !important; + } + .d-xl-grid { + display: grid !important; + } + .d-xl-table { + display: table !important; + } + .d-xl-table-row { + display: table-row !important; + } + .d-xl-table-cell { + display: table-cell !important; + } + .d-xl-flex { + display: flex !important; + } + .d-xl-inline-flex { + display: inline-flex !important; + } + .d-xl-none { + display: none !important; + } + .flex-xl-fill { + flex: 1 1 auto !important; + } + .flex-xl-row { + flex-direction: row !important; + } + .flex-xl-column { + flex-direction: column !important; + } + .flex-xl-row-reverse { + flex-direction: row-reverse !important; + } + .flex-xl-column-reverse { + flex-direction: column-reverse !important; + } + .flex-xl-grow-0 { + flex-grow: 0 !important; + } + .flex-xl-grow-1 { + flex-grow: 1 !important; + } + .flex-xl-shrink-0 { + flex-shrink: 0 !important; + } + .flex-xl-shrink-1 { + flex-shrink: 1 !important; + } + .flex-xl-wrap { + flex-wrap: wrap !important; + } + .flex-xl-nowrap { + flex-wrap: nowrap !important; + } + .flex-xl-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-xl-start { + justify-content: flex-start !important; + } + .justify-content-xl-end { + justify-content: flex-end !important; + } + .justify-content-xl-center { + justify-content: center !important; + } + .justify-content-xl-between { + justify-content: space-between !important; + } + .justify-content-xl-around { + justify-content: space-around !important; + } + .justify-content-xl-evenly { + justify-content: space-evenly !important; + } + .align-items-xl-start { + align-items: flex-start !important; + } + .align-items-xl-end { + align-items: flex-end !important; + } + .align-items-xl-center { + align-items: center !important; + } + .align-items-xl-baseline { + align-items: baseline !important; + } + .align-items-xl-stretch { + align-items: stretch !important; + } + .align-content-xl-start { + align-content: flex-start !important; + } + .align-content-xl-end { + align-content: flex-end !important; + } + .align-content-xl-center { + align-content: center !important; + } + .align-content-xl-between { + align-content: space-between !important; + } + .align-content-xl-around { + align-content: space-around !important; + } + .align-content-xl-stretch { + align-content: stretch !important; + } + .align-self-xl-auto { + align-self: auto !important; + } + .align-self-xl-start { + align-self: flex-start !important; + } + .align-self-xl-end { + align-self: flex-end !important; + } + .align-self-xl-center { + align-self: center !important; + } + .align-self-xl-baseline { + align-self: baseline !important; + } + .align-self-xl-stretch { + align-self: stretch !important; + } + .order-xl-first { + order: -1 !important; + } + .order-xl-0 { + order: 0 !important; + } + .order-xl-1 { + order: 1 !important; + } + .order-xl-2 { + order: 2 !important; + } + .order-xl-3 { + order: 3 !important; + } + .order-xl-4 { + order: 4 !important; + } + .order-xl-5 { + order: 5 !important; + } + .order-xl-last { + order: 6 !important; + } + .m-xl-0 { + margin: 0 !important; + } + .m-xl-1 { + margin: 0.25rem !important; + } + .m-xl-2 { + margin: 0.5rem !important; + } + .m-xl-3 { + margin: 1rem !important; + } + .m-xl-4 { + margin: 1.5rem !important; + } + .m-xl-5 { + margin: 3rem !important; + } + .m-xl-auto { + margin: auto !important; + } + .mx-xl-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-xl-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-xl-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-xl-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-xl-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .mx-xl-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-xl-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-xl-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-xl-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-xl-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-xl-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-xl-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-xl-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-xl-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-xl-0 { + margin-top: 0 !important; + } + .mt-xl-1 { + margin-top: 0.25rem !important; + } + .mt-xl-2 { + margin-top: 0.5rem !important; + } + .mt-xl-3 { + margin-top: 1rem !important; + } + .mt-xl-4 { + margin-top: 1.5rem !important; + } + .mt-xl-5 { + margin-top: 3rem !important; + } + .mt-xl-auto { + margin-top: auto !important; + } + .me-xl-0 { + margin-right: 0 !important; + } + .me-xl-1 { + margin-right: 0.25rem !important; + } + .me-xl-2 { + margin-right: 0.5rem !important; + } + .me-xl-3 { + margin-right: 1rem !important; + } + .me-xl-4 { + margin-right: 1.5rem !important; + } + .me-xl-5 { + margin-right: 3rem !important; + } + .me-xl-auto { + margin-right: auto !important; + } + .mb-xl-0 { + margin-bottom: 0 !important; + } + .mb-xl-1 { + margin-bottom: 0.25rem !important; + } + .mb-xl-2 { + margin-bottom: 0.5rem !important; + } + .mb-xl-3 { + margin-bottom: 1rem !important; + } + .mb-xl-4 { + margin-bottom: 1.5rem !important; + } + .mb-xl-5 { + margin-bottom: 3rem !important; + } + .mb-xl-auto { + margin-bottom: auto !important; + } + .ms-xl-0 { + margin-left: 0 !important; + } + .ms-xl-1 { + margin-left: 0.25rem !important; + } + .ms-xl-2 { + margin-left: 0.5rem !important; + } + .ms-xl-3 { + margin-left: 1rem !important; + } + .ms-xl-4 { + margin-left: 1.5rem !important; + } + .ms-xl-5 { + margin-left: 3rem !important; + } + .ms-xl-auto { + margin-left: auto !important; + } + .p-xl-0 { + padding: 0 !important; + } + .p-xl-1 { + padding: 0.25rem !important; + } + .p-xl-2 { + padding: 0.5rem !important; + } + .p-xl-3 { + padding: 1rem !important; + } + .p-xl-4 { + padding: 1.5rem !important; + } + .p-xl-5 { + padding: 3rem !important; + } + .px-xl-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-xl-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-xl-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-xl-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-xl-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-xl-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .py-xl-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-xl-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-xl-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-xl-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-xl-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-xl-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .pt-xl-0 { + padding-top: 0 !important; + } + .pt-xl-1 { + padding-top: 0.25rem !important; + } + .pt-xl-2 { + padding-top: 0.5rem !important; + } + .pt-xl-3 { + padding-top: 1rem !important; + } + .pt-xl-4 { + padding-top: 1.5rem !important; + } + .pt-xl-5 { + padding-top: 3rem !important; + } + .pe-xl-0 { + padding-right: 0 !important; + } + .pe-xl-1 { + padding-right: 0.25rem !important; + } + .pe-xl-2 { + padding-right: 0.5rem !important; + } + .pe-xl-3 { + padding-right: 1rem !important; + } + .pe-xl-4 { + padding-right: 1.5rem !important; + } + .pe-xl-5 { + padding-right: 3rem !important; + } + .pb-xl-0 { + padding-bottom: 0 !important; + } + .pb-xl-1 { + padding-bottom: 0.25rem !important; + } + .pb-xl-2 { + padding-bottom: 0.5rem !important; + } + .pb-xl-3 { + padding-bottom: 1rem !important; + } + .pb-xl-4 { + padding-bottom: 1.5rem !important; + } + .pb-xl-5 { + padding-bottom: 3rem !important; + } + .ps-xl-0 { + padding-left: 0 !important; + } + .ps-xl-1 { + padding-left: 0.25rem !important; + } + .ps-xl-2 { + padding-left: 0.5rem !important; + } + .ps-xl-3 { + padding-left: 1rem !important; + } + .ps-xl-4 { + padding-left: 1.5rem !important; + } + .ps-xl-5 { + padding-left: 3rem !important; + } + .gap-xl-0 { + gap: 0 !important; + } + .gap-xl-1 { + gap: 0.25rem !important; + } + .gap-xl-2 { + gap: 0.5rem !important; + } + .gap-xl-3 { + gap: 1rem !important; + } + .gap-xl-4 { + gap: 1.5rem !important; + } + .gap-xl-5 { + gap: 3rem !important; + } + .text-xl-start { + text-align: left !important; + } + .text-xl-end { + text-align: right !important; + } + .text-xl-center { + text-align: center !important; + } +} +@media (min-width: 1400px) { + .float-xxl-start { + float: left !important; + } + .float-xxl-end { + float: right !important; + } + .float-xxl-none { + float: none !important; + } + .d-xxl-inline { + display: inline !important; + } + .d-xxl-inline-block { + display: inline-block !important; + } + .d-xxl-block { + display: block !important; + } + .d-xxl-grid { + display: grid !important; + } + .d-xxl-table { + display: table !important; + } + .d-xxl-table-row { + display: table-row !important; + } + .d-xxl-table-cell { + display: table-cell !important; + } + .d-xxl-flex { + display: flex !important; + } + .d-xxl-inline-flex { + display: inline-flex !important; + } + .d-xxl-none { + display: none !important; + } + .flex-xxl-fill { + flex: 1 1 auto !important; + } + .flex-xxl-row { + flex-direction: row !important; + } + .flex-xxl-column { + flex-direction: column !important; + } + .flex-xxl-row-reverse { + flex-direction: row-reverse !important; + } + .flex-xxl-column-reverse { + flex-direction: column-reverse !important; + } + .flex-xxl-grow-0 { + flex-grow: 0 !important; + } + .flex-xxl-grow-1 { + flex-grow: 1 !important; + } + .flex-xxl-shrink-0 { + flex-shrink: 0 !important; + } + .flex-xxl-shrink-1 { + flex-shrink: 1 !important; + } + .flex-xxl-wrap { + flex-wrap: wrap !important; + } + .flex-xxl-nowrap { + flex-wrap: nowrap !important; + } + .flex-xxl-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-xxl-start { + justify-content: flex-start !important; + } + .justify-content-xxl-end { + justify-content: flex-end !important; + } + .justify-content-xxl-center { + justify-content: center !important; + } + .justify-content-xxl-between { + justify-content: space-between !important; + } + .justify-content-xxl-around { + justify-content: space-around !important; + } + .justify-content-xxl-evenly { + justify-content: space-evenly !important; + } + .align-items-xxl-start { + align-items: flex-start !important; + } + .align-items-xxl-end { + align-items: flex-end !important; + } + .align-items-xxl-center { + align-items: center !important; + } + .align-items-xxl-baseline { + align-items: baseline !important; + } + .align-items-xxl-stretch { + align-items: stretch !important; + } + .align-content-xxl-start { + align-content: flex-start !important; + } + .align-content-xxl-end { + align-content: flex-end !important; + } + .align-content-xxl-center { + align-content: center !important; + } + .align-content-xxl-between { + align-content: space-between !important; + } + .align-content-xxl-around { + align-content: space-around !important; + } + .align-content-xxl-stretch { + align-content: stretch !important; + } + .align-self-xxl-auto { + align-self: auto !important; + } + .align-self-xxl-start { + align-self: flex-start !important; + } + .align-self-xxl-end { + align-self: flex-end !important; + } + .align-self-xxl-center { + align-self: center !important; + } + .align-self-xxl-baseline { + align-self: baseline !important; + } + .align-self-xxl-stretch { + align-self: stretch !important; + } + .order-xxl-first { + order: -1 !important; + } + .order-xxl-0 { + order: 0 !important; + } + .order-xxl-1 { + order: 1 !important; + } + .order-xxl-2 { + order: 2 !important; + } + .order-xxl-3 { + order: 3 !important; + } + .order-xxl-4 { + order: 4 !important; + } + .order-xxl-5 { + order: 5 !important; + } + .order-xxl-last { + order: 6 !important; + } + .m-xxl-0 { + margin: 0 !important; + } + .m-xxl-1 { + margin: 0.25rem !important; + } + .m-xxl-2 { + margin: 0.5rem !important; + } + .m-xxl-3 { + margin: 1rem !important; + } + .m-xxl-4 { + margin: 1.5rem !important; + } + .m-xxl-5 { + margin: 3rem !important; + } + .m-xxl-auto { + margin: auto !important; + } + .mx-xxl-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-xxl-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-xxl-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-xxl-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-xxl-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .mx-xxl-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-xxl-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-xxl-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-xxl-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-xxl-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-xxl-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-xxl-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-xxl-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-xxl-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-xxl-0 { + margin-top: 0 !important; + } + .mt-xxl-1 { + margin-top: 0.25rem !important; + } + .mt-xxl-2 { + margin-top: 0.5rem !important; + } + .mt-xxl-3 { + margin-top: 1rem !important; + } + .mt-xxl-4 { + margin-top: 1.5rem !important; + } + .mt-xxl-5 { + margin-top: 3rem !important; + } + .mt-xxl-auto { + margin-top: auto !important; + } + .me-xxl-0 { + margin-right: 0 !important; + } + .me-xxl-1 { + margin-right: 0.25rem !important; + } + .me-xxl-2 { + margin-right: 0.5rem !important; + } + .me-xxl-3 { + margin-right: 1rem !important; + } + .me-xxl-4 { + margin-right: 1.5rem !important; + } + .me-xxl-5 { + margin-right: 3rem !important; + } + .me-xxl-auto { + margin-right: auto !important; + } + .mb-xxl-0 { + margin-bottom: 0 !important; + } + .mb-xxl-1 { + margin-bottom: 0.25rem !important; + } + .mb-xxl-2 { + margin-bottom: 0.5rem !important; + } + .mb-xxl-3 { + margin-bottom: 1rem !important; + } + .mb-xxl-4 { + margin-bottom: 1.5rem !important; + } + .mb-xxl-5 { + margin-bottom: 3rem !important; + } + .mb-xxl-auto { + margin-bottom: auto !important; + } + .ms-xxl-0 { + margin-left: 0 !important; + } + .ms-xxl-1 { + margin-left: 0.25rem !important; + } + .ms-xxl-2 { + margin-left: 0.5rem !important; + } + .ms-xxl-3 { + margin-left: 1rem !important; + } + .ms-xxl-4 { + margin-left: 1.5rem !important; + } + .ms-xxl-5 { + margin-left: 3rem !important; + } + .ms-xxl-auto { + margin-left: auto !important; + } + .p-xxl-0 { + padding: 0 !important; + } + .p-xxl-1 { + padding: 0.25rem !important; + } + .p-xxl-2 { + padding: 0.5rem !important; + } + .p-xxl-3 { + padding: 1rem !important; + } + .p-xxl-4 { + padding: 1.5rem !important; + } + .p-xxl-5 { + padding: 3rem !important; + } + .px-xxl-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-xxl-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-xxl-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-xxl-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-xxl-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-xxl-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .py-xxl-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-xxl-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-xxl-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-xxl-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-xxl-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-xxl-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .pt-xxl-0 { + padding-top: 0 !important; + } + .pt-xxl-1 { + padding-top: 0.25rem !important; + } + .pt-xxl-2 { + padding-top: 0.5rem !important; + } + .pt-xxl-3 { + padding-top: 1rem !important; + } + .pt-xxl-4 { + padding-top: 1.5rem !important; + } + .pt-xxl-5 { + padding-top: 3rem !important; + } + .pe-xxl-0 { + padding-right: 0 !important; + } + .pe-xxl-1 { + padding-right: 0.25rem !important; + } + .pe-xxl-2 { + padding-right: 0.5rem !important; + } + .pe-xxl-3 { + padding-right: 1rem !important; + } + .pe-xxl-4 { + padding-right: 1.5rem !important; + } + .pe-xxl-5 { + padding-right: 3rem !important; + } + .pb-xxl-0 { + padding-bottom: 0 !important; + } + .pb-xxl-1 { + padding-bottom: 0.25rem !important; + } + .pb-xxl-2 { + padding-bottom: 0.5rem !important; + } + .pb-xxl-3 { + padding-bottom: 1rem !important; + } + .pb-xxl-4 { + padding-bottom: 1.5rem !important; + } + .pb-xxl-5 { + padding-bottom: 3rem !important; + } + .ps-xxl-0 { + padding-left: 0 !important; + } + .ps-xxl-1 { + padding-left: 0.25rem !important; + } + .ps-xxl-2 { + padding-left: 0.5rem !important; + } + .ps-xxl-3 { + padding-left: 1rem !important; + } + .ps-xxl-4 { + padding-left: 1.5rem !important; + } + .ps-xxl-5 { + padding-left: 3rem !important; + } + .gap-xxl-0 { + gap: 0 !important; + } + .gap-xxl-1 { + gap: 0.25rem !important; + } + .gap-xxl-2 { + gap: 0.5rem !important; + } + .gap-xxl-3 { + gap: 1rem !important; + } + .gap-xxl-4 { + gap: 1.5rem !important; + } + .gap-xxl-5 { + gap: 3rem !important; + } + .text-xxl-start { + text-align: left !important; + } + .text-xxl-end { + text-align: right !important; + } + .text-xxl-center { + text-align: center !important; + } +} +@media (min-width: 1200px) { + .fs-1 { + font-size: 2.5rem !important; + } + .fs-2 { + font-size: 2rem !important; + } + .fs-3 { + font-size: 1.75rem !important; + } + .fs-4 { + font-size: 1.5rem !important; + } +} +@media print { + .d-print-inline { + display: inline !important; + } + .d-print-inline-block { + display: inline-block !important; + } + .d-print-block { + display: block !important; + } + .d-print-grid { + display: grid !important; + } + .d-print-table { + display: table !important; + } + .d-print-table-row { + display: table-row !important; + } + .d-print-table-cell { + display: table-cell !important; + } + .d-print-flex { + display: flex !important; + } + .d-print-inline-flex { + display: inline-flex !important; + } + .d-print-none { + display: none !important; + } +} +html { + scroll-padding-top: 4.5rem; +} + +body { + position: relative; +} + +p { + line-height: 1.75; +} + +.page-section { + padding: 6rem 0; +} +.page-section h2.section-heading, .page-section .section-heading.h2 { + font-size: 2.5rem; + margin-top: 0; + margin-bottom: 1rem; +} +.page-section h3.section-subheading, .page-section .section-subheading.h3 { + font-size: 1rem; + font-weight: 400; + font-style: italic; + font-family: "Roboto Slab", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + margin-bottom: 4rem; +} + +@media (min-width: 768px) { + section { + padding: 9rem 0; + } +} +.btn-xl { + padding: 1.25rem 2.5rem; + font-family: "Montserrat", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + font-size: 1.125rem; + font-weight: 700; +} + +.btn-social { + height: 2.5rem; + width: 2.5rem; + display: inline-flex; + align-items: center; + justify-content: center; + padding: 0; + border-radius: 100%; +} + +#mainNav { + padding-top: 1rem; + padding-bottom: 1rem; + background-color: #212529; +} +#mainNav .navbar-toggler { + padding: 0.75rem; + font-size: 0.75rem; + font-family: "Montserrat", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + text-transform: uppercase; + font-weight: 700; +} +#mainNav .navbar-brand { + color: #ffc800; + font-family: "Montserrat", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + font-weight: 700; + letter-spacing: 0.0625em; + text-transform: uppercase; +} +#mainNav .navbar-brand img { + height: 1.5rem; +} +#mainNav .navbar-nav .nav-item .nav-link { + font-family: "Montserrat", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + font-size: 0.95rem; + color: #fff; + letter-spacing: 0.0625em; +} +#mainNav .navbar-nav .nav-item .nav-link.active, #mainNav .navbar-nav .nav-item .nav-link:hover { + color: #ffc800; +} + +@media (min-width: 992px) { + #mainNav { + padding-top: 1.5rem; + padding-bottom: 1.5rem; + border: none; + background-color: transparent; + transition: padding-top 0.3s ease-in-out, padding-bottom 0.3s ease-in-out; + } + #mainNav .navbar-brand { + font-size: 1.5em; + transition: font-size 0.3s ease-in-out; + } + #mainNav .navbar-brand img { + height: 2rem; + transition: height 0.3s ease-in-out; + } + #mainNav.navbar-shrink { + padding-top: 1rem; + padding-bottom: 1rem; + background-color: #212529; + } + #mainNav.navbar-shrink .navbar-brand { + font-size: 1.25em; + } + #mainNav.navbar-shrink .navbar-brand svg, + #mainNav.navbar-shrink .navbar-brand img { + height: 1.5rem; + } + #mainNav .navbar-nav .nav-item { + margin-right: 1rem; + } + #mainNav .navbar-nav .nav-item:last-child { + margin-right: 0; + } +} +header.masthead { + padding-top: 10.5rem; + padding-bottom: 6rem; + text-align: center; + color: #fff; + background-image: url("../img/homepage.jpg"); + background-repeat: no-repeat; + background-attachment: scroll; + background-position: center center; + background-size: cover; +} +header.masthead .masthead-subheading { + font-size: 1.5rem; + font-style: italic; + line-height: 1.5rem; + margin-bottom: 25px; + font-family: "Roboto Slab", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; +} +header.masthead .masthead-heading { + font-size: 3.25rem; + font-weight: 700; + line-height: 3.25rem; + margin-bottom: 2rem; + font-family: "Montserrat", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; +} + +@media (min-width: 768px) { + header.masthead { + padding-top: 17rem; + padding-bottom: 12.5rem; + } + header.masthead .masthead-subheading { + font-size: 2.25rem; + font-style: italic; + line-height: 2.25rem; + margin-bottom: 2rem; + } + header.masthead .masthead-heading { + font-size: 4.5rem; + font-weight: 700; + line-height: 4.5rem; + margin-bottom: 4rem; + } +} +#portfolio .portfolio-item { + max-width: 26rem; + margin-left: auto; + margin-right: auto; +} +#portfolio .portfolio-item .portfolio-link { + position: relative; + display: block; + margin: 0 auto; +} +#portfolio .portfolio-item .portfolio-link .portfolio-hover { + display: flex; + position: absolute; + width: 100%; + height: 100%; + background: rgba(255, 200, 0, 0.9); + align-items: center; + justify-content: center; + opacity: 0; + transition: opacity ease-in-out 0.25s; +} +#portfolio .portfolio-item .portfolio-link .portfolio-hover .portfolio-hover-content { + font-size: 1.25rem; + color: white; +} +#portfolio .portfolio-item .portfolio-link:hover .portfolio-hover { + opacity: 1; +} +#portfolio .portfolio-item .portfolio-caption { + padding: 1.5rem; + text-align: center; + background-color: #fff; +} +#portfolio .portfolio-item .portfolio-caption .portfolio-caption-heading { + font-size: 1.5rem; + font-family: "Montserrat", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + font-weight: 700; + margin-bottom: 0; +} +#portfolio .portfolio-item .portfolio-caption .portfolio-caption-subheading { + font-style: italic; + font-family: "Roboto Slab", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; +} + +.portfolio-modal .modal-dialog { + margin: 1rem; + max-width: 100vw; +} +.portfolio-modal .modal-content { + padding-top: 6rem; + padding-bottom: 6rem; + text-align: center; +} +.portfolio-modal .modal-content h2, .portfolio-modal .modal-content .h2 { + font-size: 3rem; + line-height: 3rem; +} +.portfolio-modal .modal-content p.item-intro { + font-style: italic; + margin-bottom: 2rem; + font-family: "Roboto Slab", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; +} +.portfolio-modal .modal-content p { + margin-bottom: 2rem; +} +.portfolio-modal .modal-content ul.list-inline { + margin-bottom: 2rem; +} +.portfolio-modal .modal-content img { + margin-bottom: 2rem; +} +.portfolio-modal .close-modal { + position: absolute; + top: 1.5rem; + right: 1.5rem; + width: 3rem; + height: 3rem; + cursor: pointer; + background-color: transparent; +} +.portfolio-modal .close-modal:hover { + opacity: 0.3; +} + +.timeline { + position: relative; + padding: 0; + list-style: none; +} +.timeline:before { + position: absolute; + top: 0; + bottom: 0; + left: 40px; + width: 2px; + margin-left: -1.5px; + content: ""; + background-color: #e9ecef; +} +.timeline > li { + position: relative; + min-height: 50px; + margin-bottom: 50px; +} +.timeline > li:after, .timeline > li:before { + display: table; + content: " "; +} +.timeline > li:after { + clear: both; +} +.timeline > li .timeline-panel { + position: relative; + float: right; + width: 100%; + padding: 0 20px 0 100px; + text-align: left; +} +.timeline > li .timeline-panel:before { + right: auto; + left: -15px; + border-right-width: 15px; + border-left-width: 0; +} +.timeline > li .timeline-panel:after { + right: auto; + left: -14px; + border-right-width: 14px; + border-left-width: 0; +} +.timeline > li .timeline-image { + position: absolute; + z-index: 100; + left: 0; + width: 80px; + height: 80px; + margin-left: 0; + text-align: center; + color: white; + border: 7px solid #e9ecef; + border-radius: 100%; + background-color: #ffc800; +} +.timeline > li .timeline-image h4, .timeline > li .timeline-image .h4 { + font-size: 10px; + line-height: 14px; + margin-top: 12px; +} +.timeline > li.timeline-inverted > .timeline-panel { + float: right; + padding: 0 20px 0 100px; + text-align: left; +} +.timeline > li.timeline-inverted > .timeline-panel:before { + right: auto; + left: -15px; + border-right-width: 15px; + border-left-width: 0; +} +.timeline > li.timeline-inverted > .timeline-panel:after { + right: auto; + left: -14px; + border-right-width: 14px; + border-left-width: 0; +} +.timeline > li:last-child { + margin-bottom: 0; +} +.timeline .timeline-heading h4, .timeline .timeline-heading .h4 { + margin-top: 0; + color: inherit; +} +.timeline .timeline-heading h4.subheading, .timeline .timeline-heading .subheading.h4 { + text-transform: none; +} +.timeline .timeline-body > ul, +.timeline .timeline-body > p { + margin-bottom: 0; +} + +@media (min-width: 768px) { + .timeline:before { + left: 50%; + } + .timeline > li { + min-height: 100px; + margin-bottom: 100px; + } + .timeline > li .timeline-panel { + float: left; + width: 41%; + padding: 0 20px 20px 30px; + text-align: right; + } + .timeline > li .timeline-image { + left: 50%; + width: 100px; + height: 100px; + margin-left: -50px; + } + .timeline > li .timeline-image h4, .timeline > li .timeline-image .h4 { + font-size: 13px; + line-height: 18px; + margin-top: 16px; + } + .timeline > li.timeline-inverted > .timeline-panel { + float: right; + padding: 0 30px 20px 20px; + text-align: left; + } +} +@media (min-width: 992px) { + .timeline > li { + min-height: 150px; + } + .timeline > li .timeline-panel { + padding: 0 20px 20px; + } + .timeline > li .timeline-image { + width: 150px; + height: 150px; + margin-left: -75px; + } + .timeline > li .timeline-image h4, .timeline > li .timeline-image .h4 { + font-size: 18px; + line-height: 26px; + margin-top: 30px; + } + .timeline > li.timeline-inverted > .timeline-panel { + padding: 0 20px 20px; + } +} +@media (min-width: 1200px) { + .timeline > li { + min-height: 170px; + } + .timeline > li .timeline-panel { + padding: 0 20px 20px 100px; + } + .timeline > li .timeline-image { + width: 170px; + height: 170px; + margin-left: -85px; + } + .timeline > li .timeline-image h4, .timeline > li .timeline-image .h4 { + margin-top: 40px; + } + .timeline > li.timeline-inverted > .timeline-panel { + padding: 0 100px 20px 20px; + } +} +.team-member { + margin-bottom: 3rem; + text-align: center; +} +.team-member img { + width: 14rem; + height: 14rem; + border: 0.5rem solid rgba(0, 0, 0, 0.1); +} +.team-member h4, .team-member .h4 { + margin-top: 1.5rem; + margin-bottom: 0; +} + +.img-brand { + height: 2.75rem; +} + +section#contact { + background-color: #212529; + background-image: url("../assets/img/map-image.png"); + background-repeat: no-repeat; + background-position: center; +} +section#contact .section-heading { + color: #fff; +} +section#contact form#contactForm .form-group { + margin-bottom: 1.5rem; +} +section#contact form#contactForm .form-group input, +section#contact form#contactForm .form-group textarea { + padding: 1.25rem; +} +section#contact form#contactForm .form-group input.form-control { + height: auto; +} +section#contact form#contactForm .form-group-textarea { + height: 100%; +} +section#contact form#contactForm .form-group-textarea textarea { + height: 100%; + min-height: 10rem; +} +section#contact form#contactForm p.help-block { + margin: 0; +} +section#contact form#contactForm .form-control:focus { + border-color: #ffc800; + box-shadow: none; +} +section#contact form#contactForm ::-webkit-input-placeholder { + font-family: "Montserrat", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + font-weight: 700; + color: #ced4da; +} +section#contact form#contactForm :-moz-placeholder { + font-family: "Montserrat", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + font-weight: 700; + color: #ced4da; +} +section#contact form#contactForm ::-moz-placeholder { + font-family: "Montserrat", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + font-weight: 700; + color: #ced4da; +} +section#contact form#contactForm :-ms-input-placeholder { + font-family: "Montserrat", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + font-weight: 700; + color: #ced4da; +} + +.footer { + text-align: center; + font-size: 0.9rem; + font-family: "Montserrat", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; +} \ No newline at end of file diff --git a/public/dist/img/homepage.jpg b/public/dist/img/homepage.jpg new file mode 100644 index 0000000..6d8de7a Binary files /dev/null and b/public/dist/img/homepage.jpg differ diff --git a/public/dist/img/pintu.webp b/public/dist/img/pintu.webp new file mode 100644 index 0000000..136acb8 Binary files /dev/null and b/public/dist/img/pintu.webp differ diff --git a/public/dist/js/index.js b/public/dist/js/index.js new file mode 100644 index 0000000..3bc5f36 --- /dev/null +++ b/public/dist/js/index.js @@ -0,0 +1,54 @@ +/*! +* Start Bootstrap - Agency v7.0.12 (https://startbootstrap.com/theme/agency) +* Copyright 2013-2023 Start Bootstrap +* Licensed under MIT (https://github.com/StartBootstrap/startbootstrap-agency/blob/master/LICENSE) +*/ +// +// Scripts +// + +window.addEventListener('DOMContentLoaded', event => { + + // Navbar shrink function + var navbarShrink = function () { + const navbarCollapsible = document.body.querySelector('#mainNav'); + if (!navbarCollapsible) { + return; + } + if (window.scrollY === 0) { + navbarCollapsible.classList.remove('navbar-shrink') + } else { + navbarCollapsible.classList.add('navbar-shrink') + } + + }; + + // Shrink the navbar + navbarShrink(); + + // Shrink the navbar when page is scrolled + document.addEventListener('scroll', navbarShrink); + + // Activate Bootstrap scrollspy on the main nav element + const mainNav = document.body.querySelector('#mainNav'); + if (mainNav) { + new bootstrap.ScrollSpy(document.body, { + target: '#mainNav', + rootMargin: '0px 0px -40%', + }); + }; + + // Collapse responsive navbar when toggler is visible + const navbarToggler = document.body.querySelector('.navbar-toggler'); + const responsiveNavItems = [].slice.call( + document.querySelectorAll('#navbarResponsive .nav-link') + ); + responsiveNavItems.map(function (responsiveNavItem) { + responsiveNavItem.addEventListener('click', () => { + if (window.getComputedStyle(navbarToggler).display !== 'none') { + navbarToggler.click(); + } + }); + }); + +}); diff --git a/resources/views/admin/index.blade.php b/resources/views/admin/index.blade.php index 469c916..36657a9 100644 --- a/resources/views/admin/index.blade.php +++ b/resources/views/admin/index.blade.php @@ -32,7 +32,9 @@
-
+ + +
@@ -46,6 +48,72 @@ More info
+ + +
+ +
+
+

{{ $layanan_sempro }}

+ +

Total Pengajuan Seminar Proposal

+
+
+ +
+ More info +
+
+ + + +
+ +
+
+

{{ $layanan_sidangakhir }}

+ +

Total Pengajuan Sidang Akhir

+
+
+ +
+ More info +
+
+ + +
+ +
+
+

{{ $layanan_revisipublikasi }}

+ +

Total Pengajuan Publikasi / Revisi

+
+
+ +
+ More info +
+
+ + +
+ +
+
+

{{ $layanan_wisuda }}

+ +

Total Pengajuan Syarat Wisuda

+
+
+ +
+ More info +
+
+
diff --git a/resources/views/errors/404.blade.php b/resources/views/errors/404.blade.php new file mode 100644 index 0000000..62e2fcd --- /dev/null +++ b/resources/views/errors/404.blade.php @@ -0,0 +1,24 @@ + + + + Under Maintenance + + + + + + +
+

Ups. Laman yang anda cari tidak ditemukan, silahkan Kembali ke Laman Utama dengan Klik Disini

+
+ + \ No newline at end of file diff --git a/resources/views/errors/503.blade.php b/resources/views/errors/503.blade.php new file mode 100644 index 0000000..cb3dbeb --- /dev/null +++ b/resources/views/errors/503.blade.php @@ -0,0 +1,54 @@ + + + + Under Maintenance + + + + + + +
+

Layanan Sedang Dalam Perbaikan

+
+

Kami sedang melakukan beberapa perbaikan pada layanan PINTU, untuk meningkatkan kinerja dan pengalaman pengguna. Jika Anda memiliki pertanyaan lebih lanjut, silakan hubungi Kami

+

— TIM IT FFUNEJ

+
+
+

+

+

+

+
+
+ + + \ No newline at end of file diff --git a/resources/views/index.blade.php b/resources/views/index.blade.php index a0e8512..b652bf7 100644 --- a/resources/views/index.blade.php +++ b/resources/views/index.blade.php @@ -1,4 +1,4 @@ -@if($errors->any()) +{{-- @if($errors->any())
    @foreach ($errors->all() as $error ) @@ -20,11 +20,370 @@
  • {{ session('error') }}
+@endif --}} +@if(session('error')) + @endif + + + + + + + + PINTU Fakultas Farmasi Universitas Jember + + + + + + + + + + + + + + +
+
+
Selamat Datang di
+
PINTU Farmasi!
+ Ketahui Lebih Lanjut Tentang Pintu +
+
+ + +
+
+
+

Tentang PINTU Farmasi

+

PINTU (Pusat Informasi dan Layanan Satu Pintu) FARMASI, merupakan layanan online untuk informasi dan layanan satu pintu Fakultas Farmasi. Pengguna dapat memanfaatkan PINTU FARMASI untuk layanan akademik dan kemahasiswaan, umum dan perlengkapan, keuangan dan kepegawaian. Prioritas layanan akan diselesaikan via online terlebih dahulu. Jika layanan online tidak dapat menyelesaikan, maka akan diteruskan melalui layanan offline.

+
+
+
-
-
-
-
- -

PROGRES

\ No newline at end of file + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/views/layanan-dpudpa/index.blade.php b/resources/views/layanan-dpudpa/index.blade.php index 79bdabe..c0ac9f3 100644 --- a/resources/views/layanan-dpudpa/index.blade.php +++ b/resources/views/layanan-dpudpa/index.blade.php @@ -99,30 +99,60 @@ + @if($datas->ttd_operator != '-') +
+
+ +
+ @csrf + + +
+
+
+ @csrf + + +
+
+
+ @endif + + + + + + + + + + + diff --git a/resources/views/layanan-sidangakhir/index.blade.php b/resources/views/layanan-sidangakhir/index.blade.php new file mode 100644 index 0000000..9ee0d02 --- /dev/null +++ b/resources/views/layanan-sidangakhir/index.blade.php @@ -0,0 +1,274 @@ + +@extends('layout.app') + +@push('css') + + + + +@endpush + +@section('content') + +@include('layout.navbars.sidebar') +
+ +
+
+
+
+

Pengajuan Sidang Akhir

+
+
+ +
+
+
+
+ +
+
+ +
+
+ +
Perhatian!
+ CaseID Akan muncul ketika pengajuan telah diterima untuk menghindari data duplikat untuk mahasiswa yang sama. +
+ @if ($errors->any()) +
+
    + @foreach ($errors->all() as $error ) +
  • {{ $error }}
  • + @endforeach +
+
+ @endif + @if(session('success')) +
+
    +
  • {{ session('success') }}
  • +
+
+ @endif + @if(session('error')) +
+
    +
  • {{ session('error') }}
  • +
+
+ @endif + + + + + + + + + + + + @foreach ($data as $datas) + + + + + + + + + + + + @endforeach + + + + + + + + + + +
CaseIDNIMNamaDPUAction
{{ $datas->caseid }}{{ $datas->nim }} {{ $datas->nama }} {{ $datas->dpu_nama_gelar }} + | + @if($datas->ttd_operator=="-") + | + + @endif +
CaseIDNIMDPUDPAAction
+
+ +
+ +
+ +
+@endsection + + +@push('js') + + + + + + + + + + + + + + + +@endpush + diff --git a/resources/views/layanan-sidangakhir/tambah.blade.php b/resources/views/layanan-sidangakhir/tambah.blade.php new file mode 100644 index 0000000..ff4628d --- /dev/null +++ b/resources/views/layanan-sidangakhir/tambah.blade.php @@ -0,0 +1,219 @@ + +@extends('layout.app_guest',['title' => 'Pengajuan Sidang Akhir']) +@section('content') + + +
+
+ +
+
+

Pengajuan Sidang Akhir

+
+ +
+ @if ($errors->any()) +
+
    + @foreach ($errors->all() as $error ) +
  • {{ $error }}
  • + @endforeach +
+
+ @endif + @if(session('success')) +
+
    +
  • {{ session('success') }}
  • +
+
+ @endif + @if(session('error')) +
+
    +
  • {{ session('error') }}
  • +
+
+ @endif +
+ +
Perhatian!
+ Pernah Menggunakan Layanan PINTU Untuk Pengajuan ? Coba Gunakan Fitur Cari. Klik Disini +
+
+ @csrf + @if(isset($data_mahasiswa)) + + +
+
+ + + + + + + + + + +
+ +
+ +
+
+
+ + +
+ +
+
+
+ + +
+ +
+ +
+ + @else + +
+
+ + + + + + + + + + +
+ +
+ +
+
+
+ + +
+ +
+
+
+ + +
+ +
+ +
+ + @endif + +
+
+
+ + +
+ +
+
+
+ + +
+ +
+ +
+ + +
+
+ + + + +
+
+
+
+ + + + + + + + + + + + + + +
+
+
+
+ +
+
+
+
+
+ +
+ +
+ + +@endsection diff --git a/resources/views/layanan-wisuda/cari.blade.php b/resources/views/layanan-wisuda/cari.blade.php new file mode 100644 index 0000000..93c62ab --- /dev/null +++ b/resources/views/layanan-wisuda/cari.blade.php @@ -0,0 +1,67 @@ + +@extends('layout.app_guest',['title' => 'Pengajuan Wisuda']) +@section('content') + + +
+
+ +
+
+

Pengajuan Wisuda

+
+ @if ($errors->any()) +
+
    + @foreach ($errors->all() as $error ) +
  • {{ $error }}
  • + @endforeach +
+
+ @endif + @if(session('success')) +
+
    +
  • {{ session('success') }}
  • +
+
+ @endif + @if(session('error')) +
+
    +
  • {{ session('error') }}
  • +
+
+ @endif +
+ @if(session('success')) +
+
    +
  • {{ session('success') }}
  • +
+
+ @endif + @if(session('error')) +
+
    +
  • {{ session('error') }}
  • +
+
+ @endif +
+ @csrf + + +
+ +
+
+
+
+ +
+ +
+ + +@endsection diff --git a/resources/views/layanan-wisuda/cetak.blade.php b/resources/views/layanan-wisuda/cetak.blade.php new file mode 100644 index 0000000..d62b6df --- /dev/null +++ b/resources/views/layanan-wisuda/cetak.blade.php @@ -0,0 +1,476 @@ + + + + {{ $title }} + + + + + + + + + +
LOGOUNEJ +

KEMENTRIAN PENDIDIKAN, KEBUDAYAAN,
+ RISET, DAN TEKNOLOGI

+

UNIVERSITAS JEMBER

+

FAKULTAS FARMASI

+

Jalan Kalimantan I Nomor 2 Kampus Tegal Boto Kotak Pos 159 Jember 68121
+ Telepon/Faximile (0331) 324736
+ Email: farmasi@unej.ac.id

+
+

FORM PENYERAHAN PERSYARATAN KELULUSAN RUANG BACA +
+ MAHASISWA FAKULTAS FARMASI UNIVERSITAS JEMBER +

+ + + + + + + + + + + +
Nama:{{ $nama_mahasiswa }}
NIM:{{ $nim }}
+

Telah Menyerahkan Persyaratan Kelulusan Sebagai Berikut :

+ + + + + + + +
1. Skripsi Soft Copy & Hard Copy *)
2. E-Book: Skripsi Soft Copy & Hard Copy *)
+

Adapun Judul Skripsi / E-Book Sebagai Berikut :

+

Skripsi :

+

{{ $judul_skripsi }}

+

E-Book :

+

{{ $judul_skripsi }}

+ + + + + + + + + + + + + + + + + + + + + +
Jember, {{ $date }}
Koordinator Ruang Baca,
+ + + +
{{ $ruang_baca_nama }}
NIP. {{ $ruang_baca_nip }} +
+ +

+

Keterangan Bebas Tanggungan Laboratorium +

+

Yang tersebut di bawah ini :

+ + + + + + + + + + + +
Nama:{{ $nama_mahasiswa }}
NIM:{{ $nim }}
+

Dinyatakan Sebagai Berikut:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NoKeterangan Bebas Tanggungan di Bagian/LaboratoriumDisetujui Oleh Kepala Bagian
1 + Farmasi Klinik dan Komunitas
+ Bebas Tanggungan: Ya
+ Keterangan : - +
+ Tanggal : {{ $date }}
+
+ {{ $kalab_farmasi_klinik_dan_komunikasi_nama }}
+ NIP. {{ $kalab_farmasi_klinik_dan_komunikasi_nip }}
+
2 + Farmakologi dan Hewan Coba
+ Bebas Tanggungan: Ya
+ Keterangan : - +
+ Tanggal : {{ $date }}
+
+ {{ $kalab_farmakologi_dan_hewan_coba_nama }}
+ NIP. {{ $kalab_farmakologi_dan_hewan_coba_nip }}
+
3 + Farmakognosi dan Fitokimia
+ Bebas Tanggungan: Ya
+ Keterangan : - +
+ Tanggal : {{ $date }}
+
+ {{ $kalab_farmakognosi_dan_fitokimia_nama }}
+ NIP. {{ $kalab_farmakognosi_dan_fitokimia_nip }}
+
4 + Mikrobiologi dan Bioteknologi Farmasi
+ Bebas Tanggungan: Ya
+ Keterangan : - +
+ Tanggal : {{ $date }}
+
+ {{ $kalab_mikrobiologi_dan_bioteknologi_farmasi_nama }}
+ NIP. {{ $kalab_mikrobiologi_dan_bioteknologi_farmasi_nip }}
+
5 + Farmasetika
+ Bebas Tanggungan: Ya
+ Keterangan : - +
+ Tanggal : {{ $date }}
+
+ {{ $kalab_farmasetika_nama }}
+ NIP. {{ $kalab_farmasetika_nip }}
+
6 + Teknologi Farmasi
+ Bebas Tanggungan: Ya
+ Keterangan : - +
+ Tanggal : {{ $date }}
+
+ {{ $kalab_teknologi_farmasi_nama }}
+ NIP. {{ $kalab_teknologi_farmasi_nip }}
+
7 + Kimia Analisis
+ Bebas Tanggungan: Ya
+ Keterangan : - +
+ Tanggal : {{ $date }}
+
+ {{ $kalab_kimia_analisis_nama }}
+ NIP. {{ $kalab_kimia_analisis_nip }}
+
8 + Kimia Medisinal
+ Bebas Tanggungan: Ya
+ Keterangan : - +
+ Tanggal : {{ $date }}
+
+ {{ $kalab_kimia_medisinal_nama }}
+ NIP. {{ $kalab_kimia_medisinal_nip }}
+
+

Demikian untuk menjadikan periksa dan dipergunakan sebagaimana mestinya

+

+

SURAT KETERANGAN BEBAS TANGGUNGAN

+ + + + + + + + + + + +
Nama:{{ $nama_mahasiswa }}
NIM:{{ $nim }}
+

Dengan ini menerangkan rincian tanggungan sebagai berikut:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NoUraianKeteranganTanda Tangan Penanggung Jawab
1Menyerahkan skripsi dan bukuTerpenuhi + Penguji Utama
+
+ {{ $dosen_penguji1_nama }}
+ NIP. {{ $dosen_penguji1_nip }}
+
+ Penguji Anggota
+
+ {{ $dosen_penguji2_nama }}
+ NIP. {{ $dosen_penguji2_nip }}
+
+ Dosen Pembimbing Utama
+
+ {{ $dosen_dpu_nama }}
+ NIP. {{ $dosen_dpu_nip }}
+
+ Dosen Pembimbing Anggota
+
+ {{ $dosen_dpa_nama }}
+ NIP. {{ $dosen_dpa_nip }}
+
2LaboratoriumBebas + Kalab. Farmasi Klinik dan Komunitas :
+
+ {{ $kalab_farmasi_klinik_dan_komunikasi_nama }}
+ NIP. {{ $kalab_farmasi_klinik_dan_komunikasi_nip }}
+
+ Kalab. Farmakologi dan Hewan Coba :
+
+ {{ $kalab_farmakologi_dan_hewan_coba_nama }}
+ NIP. {{ $kalab_farmakologi_dan_hewan_coba_nip }}
+
+ Kalab. Farmakognosi dan Fitokimia :
+
+ {{ $kalab_farmakognosi_dan_fitokimia_nama }}
+ NIP. {{ $kalab_farmakognosi_dan_fitokimia_nip }}
+
+ Kalab. Mikrobiologi dan Bioteknologi Farmasi :
+
+ {{ $kalab_mikrobiologi_dan_bioteknologi_farmasi_nama }}
+ NIP. {{ $kalab_mikrobiologi_dan_bioteknologi_farmasi_nip }}
+
+ Kalab. Farmasetika :
+
+ {{ $kalab_farmasetika_nama }}
+ NIP. {{ $kalab_farmasetika_nip }}
+
+ Kalab. Teknologi Farmasi :
+
+ {{ $kalab_teknologi_farmasi_nama }}
+ NIP. {{ $kalab_teknologi_farmasi_nip }}
+
+ Kalab. Kimia Analisis :
+
+ {{ $kalab_kimia_analisis_nama }}
+ NIP. {{ $kalab_kimia_analisis_nip }}
+
+ Kalab. Kimia Medisinal :
+
+ {{ $kalab_kimia_medisinal_nama }}
+ NIP. {{ $kalab_kimia_medisinal_nip }}
+
3Menyelesaikan SKPITerpenuhi +
+ {{ $skpi_nama }}
+ NIP. {{ $skpi_nip }}
+
4Ruang BacaBebas +
+ {{ $ruang_baca_nama }}
+ NIP. {{ $ruang_baca_nip }}
+
5SPPLunas +
+
6KemahasiswaanBebas +
+
7 + Menyerahkan daftar nilai sementara tanpa nilai DE & E. IPK 2,00, + PP90%Terpenuhi +
+
8Menyerahkan foto Copy Sertifikat KKNTerpenuhi +
+
9Menyerahkan foto Copy Sertifikat CBEPT Dengan Skor + 450Terpenuhi +
+
+

Demikian untuk menjadikan periksa dan dipergunakan sebagaimana mestinya

+ + + + + + + + + + + + + + + + + + + + +
Jember, {{ $date }}
Wakil Dekan I,
+ + + +
{{ $wakil_dekan_1_nama }}
NIP. {{ $wakil_dekan_1_nip }} +
+ + \ No newline at end of file diff --git a/resources/views/layanan-wisuda/ettd.blade.php b/resources/views/layanan-wisuda/ettd.blade.php new file mode 100644 index 0000000..6d4000c --- /dev/null +++ b/resources/views/layanan-wisuda/ettd.blade.php @@ -0,0 +1,149 @@ + + + + + + {{ $title }} {{$jenis}} + + + + + +
+
+
+
+

Pengajuan Layanan Wisuda

+

{{ $title }} {{$jenis}}

+
+
+
+ +
+
+
+
+

{{$data->caseid}}

+
{{$jenis}}
+
+ +
+ @if(session('success')) +
+
    +
  • {{ session('success') }}
  • +
+
+ @endif + @if(session('error')) +
+
    +
  • {{ session('error') }}
  • +
+
+ @endif +
+ @csrf + + + + + + + + + + @if(request('url')=="dpu" OR request('url')=="dpa" OR request('url')=="penguji1" OR request('url')=="penguji2") + + + + + @endif + + @if(request('url')=="skpi") + + + @elseif(request('url')=="kalab") + + + @endif + +
+ +
+
+
+ +
+
+
+
+ + +@include('layout.navbars.footer') + + + + + + + + + + + + diff --git a/resources/views/layanan-wisuda/index.blade.php b/resources/views/layanan-wisuda/index.blade.php new file mode 100644 index 0000000..2363604 --- /dev/null +++ b/resources/views/layanan-wisuda/index.blade.php @@ -0,0 +1,271 @@ + +@extends('layout.app') + +@push('css') + + + + +@endpush + +@section('content') + +@include('layout.navbars.sidebar') +
+ +
+
+
+
+

Pengajuan Syarat Wisuda

+
+
+ +
+
+
+
+ +
+
+ +
+
+ +
Perhatian!
+ CaseID Akan muncul ketika pengajuan telah diterima untuk menghindari data duplikat untuk mahasiswa yang sama. +
+ @if ($errors->any()) +
+
    + @foreach ($errors->all() as $error ) +
  • {{ $error }}
  • + @endforeach +
+
+ @endif + @if(session('success')) +
+
    +
  • {{ session('success') }}
  • +
+
+ @endif + @if(session('error')) +
+
    +
  • {{ session('error') }}
  • +
+
+ @endif + + + + + + + + + + + + + @foreach ($data as $datas) + + + + + + + + + + + + + @endforeach + + + + + + + + + + + +
CaseIDNIMNamaDPUDosen Penguji UtamaAction
{{ $datas->caseid }}{{ $datas->nim }} {{ $datas->nama }} {{ $datas->dpu_nama_gelar }}{{ $datas->penguji1_nama_gelar }} + | + @if($datas->ttd_operator=="-") + | + + @endif +
CaseIDNIMNamaDPUDosen Penguji UtamaAction
+
+ +
+ +
+ +
+@endsection + + +@push('js') + + + + + + + + + + + + + + + +@endpush + diff --git a/resources/views/layanan-wisuda/resend.blade.php b/resources/views/layanan-wisuda/resend.blade.php new file mode 100644 index 0000000..db2782d --- /dev/null +++ b/resources/views/layanan-wisuda/resend.blade.php @@ -0,0 +1,449 @@ + +@extends('layout.app') + +@push('css') + + + + +@endpush + +@section('content') + +@include('layout.navbars.sidebar') +
+ +
+
+
+
+

Kirim Ulang Email Pengajuan Syarat Wisuda

+
+
+ +
+
+
+
+ +
+
+ +
+ @if ($errors->any()) +
+
    + @foreach ($errors->all() as $error ) +
  • {{ $error }}
  • + @endforeach +
+
+ @endif + @if(session('success')) +
+
    +
  • {{ session('success') }}
  • +
+
+ @endif + @if(session('error')) +
+
    +
  • {{ session('error') }}
  • +
+
+ @endif + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
No.Jenis URLURLAksi
1Dosen Pembimbing Utama{{ route('layanan-wisuda.ettd',['url'=>'dpu','caseid'=>'LYXXXX']) }}
2Dosen Pembimbing Anggota{{ route('layanan-wisuda.ettd',['url'=>'dpa','caseid'=>'LYXXXX']) }}
3Dosen Penguji Utama{{ route('layanan-wisuda.ettd',['url'=>'penguji1','caseid'=>'LYXXXX']) }}
4Dosen Penguji Anggota{{ route('layanan-wisuda.ettd',['url'=>'penguji2','caseid'=>'LYXXXX']) }}
5Semua Kalab{{ route('layanan-wisuda.ettd',['url'=>'kalab','caseid'=>'LYXXXX']) }}
6Pj. SKPI{{ route('layanan-wisuda.ettd',['url'=>'skpi','caseid'=>'LYXXXX']) }}
7Pj. Ruang Baca{{ route('layanan-wisuda.ettd',['url'=>'ruangbaca','caseid'=>'LYXXXX']) }}
8Wakil Dekan 1{{ route('layanan-wisuda.ettd',['url'=>'wakildekan1','caseid'=>'LYXXXX']) }}
+ + + + + + + + + + + + + + + + +
+ +
+ +
+ +
+@endsection + + +@push('js') + + + + + + + + + + + + + + + +@endpush + diff --git a/resources/views/layanan-wisuda/tambah.blade.php b/resources/views/layanan-wisuda/tambah.blade.php new file mode 100644 index 0000000..a2cce48 --- /dev/null +++ b/resources/views/layanan-wisuda/tambah.blade.php @@ -0,0 +1,207 @@ + +@extends('layout.app_guest',['title' => 'Pengajuan Syarat Wisuda']) +@section('content') + + +
+
+ +
+
+

Pengajuan Syarat Wisuda

+
+ +
+ @if ($errors->any()) +
+
    + @foreach ($errors->all() as $error ) +
  • {{ $error }}
  • + @endforeach +
+
+ @endif + @if(session('success')) +
+
    +
  • {{ session('success') }}
  • +
+
+ @endif + @if(session('error')) +
+
    +
  • {{ session('error') }}
  • +
+
+ @endif +
+ +
Perhatian!
+ Pernah Menggunakan Layanan PINTU Untuk Pengajuan ? Coba Gunakan Fitur Cari. Klik Disini +
+
+ @csrf + @if(isset($data_mahasiswa)) + + +
+
+ + + + + + + + + + +
+ +
+ +
+
+
+ + +
+ +
+
+
+ + +
+ +
+ +
+ + @else + +
+
+ + + + + + + + + + +
+ +
+ +
+
+
+ + +
+ +
+
+
+ + +
+ +
+ +
+ + @endif + +
+
+
+ + +
+ +
+
+
+ + +
+ +
+ +
+ + +
+
+ + + + + + + + + + +
+
+
+
+ +
+
+
+
+
+ +
+ +
+ + +@endsection diff --git a/resources/views/layout/app_guest.blade.php b/resources/views/layout/app_guest.blade.php index 9322d4a..fd34aa0 100644 --- a/resources/views/layout/app_guest.blade.php +++ b/resources/views/layout/app_guest.blade.php @@ -30,7 +30,7 @@