diff --git a/assets/global/localization.js b/assets/global/localization.js index ac4a682..2a82d90 100644 --- a/assets/global/localization.js +++ b/assets/global/localization.js @@ -504,6 +504,78 @@ const translations = { kontrib_guideline_3: "Sertakan fakta dan data yang akurat dan dapat diverifikasi.", kontrib_guideline_4: "Hindari plagiarisme. Karya harus orisinal.", kontrib_guideline_5: "Tim redaksi berhak menyunting konten untuk keperluan editorial.", + + grp_limaem_hero_badge: "KOMUNITAS & KEPEMIMPINAN", + grp_limaem_hero_title: "Kehidupan Mahasiswa & Himpunan (HMIF)", + grp_limaem_hero_desc: "Membangun ekosistem kolaboratif di mana teknologi bertemu dengan kreativitas, membentuk calon pemimpin industri masa depan.", + grp_limaem_hero_btn: "Lihat Struktur Kepengurusan", + + grp_limaem_about_title: "Ruang Tumbuh Bagi Mahasiswa Informatika", + grp_limaem_about_p1: "Himpunan Mahasiswa Informatika (HMIF) Universitas Tanjungpura bukan sekadar organisasi, melainkan rumah bagi para pemimpin teknologi. Kami percaya bahwa pendidikan formal adalah fondasi, namun komunitas adalah akselerator.", + grp_limaem_about_p2: "Melalui berbagai inisiatif, kami menjembatani kesenjangan antara kurikulum akademik dan kebutuhan industri, sambil tetap menjaga semangat kekeluargaan dan integritas ilmiah.", + grp_limaem_about_stat_students: "Mahasiswa Aktif", + grp_limaem_about_stat_partners: "MITRA", + grp_limaem_about_badge: "Inklusivitas & Kolaborasi", + + grp_limaem_partners_title: "Partner dan Kolaborator", + + grp_limaem_divisi_title: "Divisi Kepengurusan HMIF", + grp_limaem_divisi_desc: "Struktur organisasi yang dirancang untuk efisiensi dan pengembangan kapasitas anggota di berbagai bidang strategis.", + grp_limaem_divisi_b1_label: "Bidang 1", + grp_limaem_divisi_b1_title: "Pengembangan Sumber Daya Mahasiswa dan Kaderisasi", + grp_limaem_divisi_b1_desc: "Divisi ini menyelenggarakan kaderisasi terstruktur, mentoring berkala, dan pelatihan kepemimpinan serta soft-skill. Program kerja mencakup onboarding anggota baru, workshop kepemimpinan, proyek kolaboratif, dan kegiatan pengabdian yang melatih tanggung jawab sosial. Fokusnya adalah menyiapkan kader yang kompeten dan menjaga regenerasi organisasi.", + grp_limaem_divisi_b2_label: "Bidang 2", + grp_limaem_divisi_b2_title: "Media Komunikasi dan Konten Digital", + grp_limaem_divisi_b2_desc: "Divisi ini mengelola strategi komunikasi dan produksi konten HMIF, termasuk perencanaan editorial, manajemen media sosial, serta dokumentasi acara. Program kerjanya meliputi pembuatan materi promosi, publikasi kegiatan, dan penguatan identitas digital agar informasi organisasi tersampaikan konsisten dan menarik.", + grp_limaem_divisi_b3_label: "Bidang 3", + grp_limaem_divisi_b3_title: "Inovasi dan Kompetisi Teknologi", + grp_limaem_divisi_b3_desc: "Divisi ini memfasilitasi persiapan lomba dan pengembangan proyek teknis melalui coaching clinic, bootcamp berbasis proyek, serta study club untuk Competitive Programming, Software Development, dan Data/ML. Kegiatan termasuk seleksi internal, bimbingan kompetitif, dan inisiatif digitalisasi seperti pengembangan website dan dashboard untuk mendukung ekosistem inovasi HMIF.", + grp_limaem_divisi_b4_label: "Bidang 4", + grp_limaem_divisi_b4_title: "Pengembangan Organisasi", + grp_limaem_divisi_b4_desc: "Divisi ini memperkuat tata kelola dan kapabilitas internal melalui pelatihan pengurus, penyusunan SOP sederhana, dan evaluasi proses kerja. Program kerjanya mencakup pengembangan budaya organisasi, peningkatan efektivitas koordinasi, dan kegiatan peningkatan profesionalisme sehingga operasi HMIF menjadi lebih terstruktur dan efisien.", + grp_limaem_divisi_b5_label: "Bidang 5", + grp_limaem_divisi_b5_title: "Sosial Masyarakat", + grp_limaem_divisi_b5_desc: "Divisi ini merancang dan melaksanakan program pengabdian serta aksi sosial yang berdampak, termasuk pendampingan komunitas dan bantuan kemanusiaan. Kegiatan meliputi identifikasi kebutuhan lapangan, pelaksanaan terstruktur, dan evaluasi dampak untuk memastikan keberlanjutan dan manfaat nyata bagi masyarakat.", + grp_limaem_divisi_b6_label: "Bidang 6", + grp_limaem_divisi_b6_title: "Kewirausahaan dan Kemitraan", + grp_limaem_divisi_b6_desc: "Divisi ini mengembangkan unit usaha organisasi, merancang skema pendanaan kreatif, dan menjalin kemitraan strategis untuk mendukung keberlanjutan program HMIF. Unit kerjanya meliputi riset peluang usaha, penyusunan proposal kemitraan, dan pengelolaan sponsor untuk meningkatkan kemandirian finansial dan akses jaringan profesional.", + + grp_limaem_kegiatan_title: "Kegiatan Unggulan", + grp_limaem_kegiatan_subtitle: "Kegiatan tahunan yang menjadi ikon Informatika UNTAN.", + grp_limaem_kegiatan_c1_title: "Silaturahmi Keluarga Besar Informatika", + grp_limaem_kegiatan_c1_desc: "Kegiatan buka bersama seluruh keluarga Informatika Untan yang selalu diadakan setiap tahunnya.", + grp_limaem_kegiatan_c2_title: "GEMASTIK", + grp_limaem_kegiatan_c2_desc: "Ajang kompetisi IT bergengsi tingkat nasional tahunan dari kementerian. Wadah bagi mahasiswa Informatika UNTAN untuk unjuk gigi di bidang programming, cyber security, data mining, hingga UI/UX.", + grp_limaem_kegiatan_c3_title: "Perayaan 17 Agustus", + grp_limaem_kegiatan_c3_desc: "Momen perayaan Hari Kemerdekaan Indonesia yang diisi dengan berbagai perlombaan menarik. Ajang seru-seruan bersama untuk mempererat rasa nasionalisme dan kekeluargaan mahasiswa Informatika.", + grp_limaem_kegiatan_c4_title: "Bootcamp HMIF", + grp_limaem_kegiatan_c4_desc: "Program intensif pengembangan skill teknis mahasiswa Informatika bersama mentor profesional dari industri.", + grp_limaem_kegiatan_c5_title: "UPC", + grp_limaem_kegiatan_c5_desc: "Kompetisi Pemograman untuk mengasah skill coding mahasiswa Informatika.", + grp_limaem_kegiatan_c6_title: "Study Excursion", + grp_limaem_kegiatan_c6_desc: "Study Excursion menjadi pengalaman berharga bagi mahasiswa semester 5 untuk belajar di luar kampus, memperluas wawasan, mengenal suasana baru, serta menciptakan kenangan berkesan bersama selama perjalanan.", + grp_limaem_kegiatan_c7_title: "INFORMERS", + grp_limaem_kegiatan_c7_desc: "Perayaan ulang tahun Informatika UNTAN, momen kebersamaan dan kebanggaan seluruh keluarga besar Informatika.", + + grp_limaem_sc_title: "STUDY CLUB", + grp_limaem_sc_arise_title: "ARISE", + grp_limaem_sc_arise_desc: "Belajar logika dan algoritma bersama, di mana kalian bisa berkembang dan membuka peluang mengikuti kompetisi pemrograman di berbagai level.", + grp_limaem_sc_minerva_title: "MINERVA", + grp_limaem_sc_minerva_desc: "Gali potensi tersembunyi dari tumpukan data! Di sini kita akan bereksplorasi dengan algoritma Machine Learning, membedah teknik klasifikasi, hingga melatih model prediktif untuk menghasilkan insight yang bermakna.", + grp_limaem_sc_sd_title: "Software Development (Segera Hadir)", + grp_limaem_sc_sd_desc: "Wujudkan idemu jadi produk digital yang nyata! Kita akan ngoding bareng dari merancang frontend yang interaktif, membangun backend yang tangguh, serta mengintegrasikan berbagai API untuk menciptakan aplikasi web masa kini.", + + grp_limaem_galeri_title: "Galeri Keseruan", + + grp_limaem_cta_title: "Ada yang Ingin Ditanyakan Seputar HMIF?", + grp_limaem_cta_desc: "Bergabunglah dengan HMIF untuk memperluas jaringan, mengasah skill, dan menciptakan dampak nyata.", + grp_limaem_cta_btn: "Hubungi Kami", + grp_limaem_cta_info1_label: "Sekretariat", + grp_limaem_cta_info1_val: "Gedung Fakultas Teknik Lt. 2, Jl. Prof. Dr. H. Hadari Nawawi", + grp_limaem_cta_info2_label: "Jam Operasional", + grp_limaem_cta_info2_val: "Senin - Jumat, 08:00 - 17:00 WIB", + grp_limaem_cta_info3_label: "Media Sosial", + grp_limaem_cta_info3_val: "@hmif.untan, YouTube: HMIF UNTAN TV", ape_breadcrumb_profile: "Profil", ape_breadcrumb_scholarship: "Beasiswa", ape_hero_badge: "Program Beasiswa", @@ -1648,6 +1720,78 @@ const translations = { grp_m4n1fest_cta_box_title: "Ready to join?", grp_m4n1fest_cta_box_desc: "Scroll up and fill out the IKA registration form now. Free, fast, and instantly connect with hundreds of alumni!", grp_m4n1fest_cta_box_btn: "Register for IKA Now", + + grp_limaem_hero_badge: "COMMUNITY & LEADERSHIP", + grp_limaem_hero_title: "Student Life & Student Association (HMIF)", + grp_limaem_hero_desc: "Building a collaborative ecosystem where technology meets creativity, shaping the industry leaders of tomorrow.", + grp_limaem_hero_btn: "View Organizational Structure", + + grp_limaem_about_title: "A Space to Grow for Informatics Students", + grp_limaem_about_p1: "The Informatics Student Association (HMIF) of Tanjungpura University is more than just an organization — it is a home for technology leaders. We believe that formal education is the foundation, but community is the accelerator.", + grp_limaem_about_p2: "Through various initiatives, we bridge the gap between academic curriculum and industry needs, while maintaining the spirit of kinship and academic integrity.", + grp_limaem_about_stat_students: "Active Students", + grp_limaem_about_stat_partners: "PARTNERS", + grp_limaem_about_badge: "Inclusivity & Collaboration", + + grp_limaem_partners_title: "Partners and Collaborators", + + grp_limaem_divisi_title: "HMIF Organizational Divisions", + grp_limaem_divisi_desc: "An organizational structure designed for efficiency and capacity building across various strategic fields.", + grp_limaem_divisi_b1_label: "Division 1", + grp_limaem_divisi_b1_title: "Student Development and Cadre Regeneration", + grp_limaem_divisi_b1_desc: "This division organizes structured cadre programs, regular mentoring, and leadership and soft-skill training. Its activities include new member onboarding, leadership workshops, collaborative projects, and community service that fosters social responsibility. The focus is on preparing competent cadres and sustaining organizational regeneration.", + grp_limaem_divisi_b2_label: "Division 2", + grp_limaem_divisi_b2_title: "Communication Media and Digital Content", + grp_limaem_divisi_b2_desc: "This division manages HMIF's communication strategy and content production, including editorial planning, social media management, and event documentation. Its work programs include creating promotional materials, publishing activities, and strengthening digital identity to deliver consistent and engaging organizational information.", + grp_limaem_divisi_b3_label: "Division 3", + grp_limaem_divisi_b3_title: "Innovation and Technology Competition", + grp_limaem_divisi_b3_desc: "This division facilitates competition preparation and technical project development through coaching clinics, project-based bootcamps, and study clubs for Competitive Programming, Software Development, and Data/ML. Activities include internal selection, competitive coaching, and digitalization initiatives such as website and dashboard development to support HMIF's innovation ecosystem.", + grp_limaem_divisi_b4_label: "Division 4", + grp_limaem_divisi_b4_title: "Organizational Development", + grp_limaem_divisi_b4_desc: "This division strengthens internal governance and capabilities through board training, simple SOP drafting, and work process evaluation. Its programs include organizational culture development, improved coordination effectiveness, and professionalism initiatives, making HMIF operations more structured and efficient.", + grp_limaem_divisi_b5_label: "Division 5", + grp_limaem_divisi_b5_title: "Community Engagement", + grp_limaem_divisi_b5_desc: "This division designs and implements impactful community service programs and social actions, including community assistance and humanitarian aid. Activities cover field needs assessment, structured implementation, and impact evaluation to ensure sustainability and tangible benefits for the community.", + grp_limaem_divisi_b6_label: "Division 6", + grp_limaem_divisi_b6_title: "Entrepreneurship and Partnerships", + grp_limaem_divisi_b6_desc: "This division develops organizational business units, designs creative funding schemes, and establishes strategic partnerships to support the sustainability of HMIF programs. Its work units include business opportunity research, partnership proposal development, and sponsorship management to enhance financial independence and professional networking access.", + + grp_limaem_kegiatan_title: "Flagship Events", + grp_limaem_kegiatan_subtitle: "Annual events that have become icons of Informatics UNTAN.", + grp_limaem_kegiatan_c1_title: "Informatics Family Gathering", + grp_limaem_kegiatan_c1_desc: "An annual iftar gathering held with the entire Informatics UNTAN family, a tradition maintained every year.", + grp_limaem_kegiatan_c2_title: "GEMASTIK", + grp_limaem_kegiatan_c2_desc: "A prestigious national-level IT competition held annually by the Ministry. A platform for Informatics UNTAN students to showcase their skills in programming, cyber security, data mining, and UI/UX.", + grp_limaem_kegiatan_c3_title: "Independence Day Celebration", + grp_limaem_kegiatan_c3_desc: "A celebration of Indonesian Independence Day filled with exciting competitions. A fun event to strengthen nationalism and the sense of kinship among Informatics students.", + grp_limaem_kegiatan_c4_title: "HMIF Bootcamp", + grp_limaem_kegiatan_c4_desc: "An intensive technical skill development program for Informatics students, guided by professional mentors from the industry.", + grp_limaem_kegiatan_c5_title: "UPC", + grp_limaem_kegiatan_c5_desc: "A Programming Competition to sharpen the coding skills of Informatics students.", + grp_limaem_kegiatan_c6_title: "Study Excursion", + grp_limaem_kegiatan_c6_desc: "Study Excursion is a valuable experience for 5th semester students to study outside the campus, broaden their horizons, get to know new atmospheres, and create memorable memories together during the trip.", + grp_limaem_kegiatan_c7_title: "INFORMERS", + grp_limaem_kegiatan_c7_desc: "The anniversary celebration of Informatics UNTAN, a moment of togetherness and pride for the entire Informatics family.", + + grp_limaem_sc_title: "STUDY CLUBS", + grp_limaem_sc_arise_title: "ARISE", + grp_limaem_sc_arise_desc: "Learn logic and algorithms together, where you can grow and open opportunities to participate in programming competitions at various levels.", + grp_limaem_sc_minerva_title: "MINERVA", + grp_limaem_sc_minerva_desc: "Uncover hidden potential from mountains of data! Here we explore Machine Learning algorithms, dissect classification techniques, and train predictive models to generate meaningful insights.", + grp_limaem_sc_sd_title: "Software Development (Coming Soon)", + grp_limaem_sc_sd_desc: "Turn your ideas into real digital products! We will code together — from designing interactive frontends and building robust backends, to integrating various APIs to create modern web applications.", + + grp_limaem_galeri_title: "Fun Gallery", + + grp_limaem_cta_title: "Have Questions About HMIF?", + grp_limaem_cta_desc: "Join HMIF to expand your network, sharpen your skills, and create real impact.", + grp_limaem_cta_btn: "Contact Us", + grp_limaem_cta_info1_label: "Secretariat", + grp_limaem_cta_info1_val: "Engineering Faculty Building, 2nd Floor, Jl. Prof. Dr. H. Hadari Nawawi", + grp_limaem_cta_info2_label: "Office Hours", + grp_limaem_cta_info2_val: "Monday - Friday, 08:00 - 17:00 WIB", + grp_limaem_cta_info3_label: "Social Media", + grp_limaem_cta_info3_val: "@hmif.untan, YouTube: HMIF UNTAN TV", } }; diff --git a/groups/ACAAB/.gitignore b/groups/ACAAB/.gitignore new file mode 100644 index 0000000..c2658d7 --- /dev/null +++ b/groups/ACAAB/.gitignore @@ -0,0 +1 @@ +node_modules/ diff --git a/groups/ACAAB/hero.png b/groups/ACAAB/hero.png new file mode 100644 index 0000000..33f70e0 Binary files /dev/null and b/groups/ACAAB/hero.png differ diff --git a/groups/ACAAB/index.html b/groups/ACAAB/index.html index 1be3821..5f8bf2e 100644 --- a/groups/ACAAB/index.html +++ b/groups/ACAAB/index.html @@ -1,5 +1,6 @@ - + + @@ -7,9 +8,12 @@ - + - + @@ -1139,18 +1144,341 @@ -
+
- Tugas Halaman Statis + Tugas + Halaman Statis

Sorotan dan Prestasi Karya Mahasiswa

-

Kelompok 06 — ACAAB  ·  Informatika UNTAN 2026

+

Kelompok 06 — ACAAB  ·  Informatika UNTAN 2026 +

-

Tulis konten halaman kelompok di sini.

-

Subjudul

-

Gunakan paragraf, list, tabel, gambar, dan elemen konten lainnya.

+ + + + + +
+ +
+
+ +
+
+ +
+ MAHASISWA & PRESTASI +

Sorotan dan Prestasi Karya Mahasiswa

+

Temukan pencapaian luar biasa mahasiswa Informatika + UNTAN.

+
+ +
+
+
+
+ Mahasiswa Informatika UNTAN + +
+
+
+
+
+
+
+
+ + + +
+ + +
+
+ +
+ +
+
+ Total Prestasi +
+
+ +
+
+ 0
+
+ Prestasi
Mahasiswa
+
+ +
+
+ 0
+
Internasional
+
+ +
+
+ 0
+
Nasional
+
+ +
+
+ 0
+
Regional
+
+
+
+ + +
+
+ Total Portofolio +
+
+ +
+
+ 0
+
+ Proyek
Mahasiswa
+
+
+
+
+ +
+ +

+

+
+ + +
+
+

Prestasi Mahasiswa

+

Daftar pencapaian dan penghargaan yang diraih oleh mahasiswa Informatika UNTAN di berbagai kompetisi.

+
+ + +
+ +
+
+ + Filter Prestasi +
+ +
+ +
+ + +
+ +
+ + + +
+
+ + +

+ + +
+
+ + +
+ + +
+
+ + +
+
+ +
+
+

Top Projects Portofolio

+

Jelajahi inovasi digital dan aplikasi nyata yang dikembangkan oleh mahasiswa Informatika UNTAN.

+
+
+ + +
+
+
+ + Filter Portofolio +
+ +
+
+ + +
+
+ + +
+
+ + +

← Geser untuk melihat lebih banyak →

+ + + + + +
+ + +
+ + +
+ +
+
+
+ + +
+
+ +
+
+ +
+ HUBUNGI KAMI +

Ingin Tahu Lebih Lanjut?

+

Tertarik bergabung dengan Program Studi + Informatika UNTAN, mendaftarkan prestasi mahasiswa, atau menjalin kerja sama? + Hubungi kami sekarang.

+
+ + +
+
+
+
+ + +
+
@@ -1215,8 +1543,8 @@
- Footer Illustration + Footer Illustration
@@ -1312,27 +1640,30 @@ })(); - + - + + + - \ No newline at end of file + + diff --git a/groups/ACAAB/localization.js b/groups/ACAAB/localization.js new file mode 100644 index 0000000..3fcbae8 --- /dev/null +++ b/groups/ACAAB/localization.js @@ -0,0 +1,105 @@ +/** + * ACAAB localization extension. + * Keep group-specific translations outside assets/global/localization.js + * to avoid conflicts with the main project. + */ + +(function extendAcaabTranslations() { + if (typeof translations === 'undefined') return; + + const acaabTranslations = { + id: { + grp_acaab_hero_badge: "MAHASISWA & PRESTASI", + grp_acaab_hero_title: "Sorotan dan Prestasi Karya Mahasiswa", + grp_acaab_hero_desc: "Galeri pencapaian, penghargaan, dan portofolio inovasi teknologi yang dikembangkan oleh mahasiswa Program Studi Informatika Universitas Tanjungpura.", + grp_acaab_stats_heading: "Pencapaian dalam Angka", + grp_acaab_stats_total_ach: "Total Prestasi", + grp_acaab_stats_total_proj: "Total Karya", + grp_acaab_stats_intl: "Internasional", + grp_acaab_stats_national: "Nasional", + grp_acaab_stats_regional: "Regional", + grp_acaab_stats_data_note: "Data dikumpulkan per", + grp_acaab_ach_title: "Prestasi Mahasiswa", + grp_acaab_ach_desc: "Daftar pencapaian dan penghargaan yang diraih oleh mahasiswa Informatika UNTAN di berbagai kompetisi.", + grp_acaab_ach_search: "Cari prestasi...", + grp_acaab_ach_filter_level: "Semua Level", + grp_acaab_ach_filter_cat: "Semua Kategori", + grp_acaab_ach_filter_year: "Semua Tahun", + grp_acaab_ach_showing: "Menampilkan", + grp_acaab_ach_results: "prestasi", + grp_acaab_ach_load_more: "Tampilkan Lebih Banyak", + grp_acaab_ach_show_less: "Tampilkan Lebih Sedikit", + grp_acaab_ach_empty: "Tidak ada prestasi yang cocok dengan filter.", + grp_acaab_ach_loading: "Memuat data prestasi...", + grp_acaab_ach_error: "Gagal memuat data prestasi.", + grp_acaab_proj_title: "Top Projects & Portofolio", + grp_acaab_proj_desc: "Jelajahi inovasi digital dan aplikasi nyata yang dikembangkan oleh mahasiswa Informatika UNTAN.", + grp_acaab_proj_scroll_hint: "Geser untuk melihat lebih banyak", + grp_acaab_proj_search: "Cari karya...", + grp_acaab_proj_filter_cat: "Semua Kategori", + grp_acaab_proj_filter_year: "Semua Tahun", + grp_acaab_proj_load_more: "Tampilkan Lebih Banyak", + grp_acaab_proj_empty: "Tidak ada karya yang cocok dengan filter.", + grp_acaab_proj_loading: "Memuat data karya...", + grp_acaab_proj_error: "Gagal memuat data karya.", + grp_acaab_modal_team: "Tim / Peserta", + grp_acaab_modal_generation: "Angkatan", + grp_acaab_modal_members: "Anggota Tim", + grp_acaab_modal_visit: "Kunjungi Proyek", + grp_acaab_modal_read_more: "Selengkapnya", + grp_acaab_modal_no_link: "Link tidak tersedia", + grp_acaab_cta_badge: "HUBUNGI KAMI", + grp_acaab_cta_title: "Ingin Tahu Lebih Lanjut?", + grp_acaab_cta_desc: "Tertarik bergabung dengan Program Studi Informatika UNTAN, mendaftarkan prestasi mahasiswa, atau menjalin kerja sama? Hubungi kami sekarang.", + grp_acaab_cta_btn: "Chat via WhatsApp", + }, + en: { + grp_acaab_hero_badge: "STUDENTS & ACHIEVEMENTS", + grp_acaab_hero_title: "Student Spotlights & Achievements", + grp_acaab_hero_desc: "Gallery of accomplishments, awards, and technology innovation portfolios developed by Informatics students of Tanjungpura University.", + grp_acaab_stats_heading: "Achievements by the Numbers", + grp_acaab_stats_total_ach: "Total Achievements", + grp_acaab_stats_total_proj: "Total Projects", + grp_acaab_stats_intl: "International", + grp_acaab_stats_national: "National", + grp_acaab_stats_regional: "Regional", + grp_acaab_stats_data_note: "Data collected as of", + grp_acaab_ach_title: "Student Achievements", + grp_acaab_ach_desc: "List of awards and accomplishments by Informatics UNTAN students in various competitions.", + grp_acaab_ach_search: "Search achievements...", + grp_acaab_ach_filter_level: "All Levels", + grp_acaab_ach_filter_cat: "All Categories", + grp_acaab_ach_filter_year: "All Years", + grp_acaab_ach_showing: "Showing", + grp_acaab_ach_results: "achievements", + grp_acaab_ach_load_more: "Show More", + grp_acaab_ach_show_less: "Show Less", + grp_acaab_ach_empty: "No achievements match the current filter.", + grp_acaab_ach_loading: "Loading achievements...", + grp_acaab_ach_error: "Failed to load achievements.", + grp_acaab_proj_title: "Top Projects & Portfolios", + grp_acaab_proj_desc: "Explore digital innovations and real-world applications developed by Informatics UNTAN students.", + grp_acaab_proj_scroll_hint: "Scroll to see more", + grp_acaab_proj_search: "Search projects...", + grp_acaab_proj_filter_cat: "All Categories", + grp_acaab_proj_filter_year: "All Years", + grp_acaab_proj_load_more: "Show More", + grp_acaab_proj_empty: "No projects match the current filter.", + grp_acaab_proj_loading: "Loading projects...", + grp_acaab_proj_error: "Failed to load projects.", + grp_acaab_modal_team: "Team / Participant", + grp_acaab_modal_generation: "Batch Year", + grp_acaab_modal_members: "Team Members", + grp_acaab_modal_visit: "Visit Project", + grp_acaab_modal_read_more: "Read More", + grp_acaab_modal_no_link: "Link not available", + grp_acaab_cta_badge: "CONTACT US", + grp_acaab_cta_title: "Want to Know More?", + grp_acaab_cta_desc: "Interested in joining the Informatics Study Program at UNTAN, registering a student achievement, or establishing a partnership? Contact us now.", + grp_acaab_cta_btn: "Chat via WhatsApp", + }, + }; + + Object.assign(translations.id, acaabTranslations.id); + Object.assign(translations.en, acaabTranslations.en); +}()); diff --git a/groups/ACAAB/main.js b/groups/ACAAB/main.js new file mode 100644 index 0000000..b5d27f7 --- /dev/null +++ b/groups/ACAAB/main.js @@ -0,0 +1,837 @@ +/** + * main.js — ACAAB Prestasi & Karya Mahasiswa + * Vanilla JS: fetch data Directus CMS, render sections, handle interactions. + */ + +// ─── Constants ──────────────────────────────────────────────────────────────── + +const API_BASE = 'https://api.ifuntanhub.dev'; +const LANG_KEY = 'if_untan_lang'; + +const BIDANG_MAP = { + 1: 'Kecerdasan Buatan', 2: 'Cyber Security', 3: 'Data', + 4: 'Software Engineering', 5: 'Competitive Programming', 6: 'IoT', + 7: 'Smart City', 8: 'Web3', 9: 'Karya Tulis Ilmiah', 10: 'Robotik', +}; + +// ─── Utilities ──────────────────────────────────────────────────────────────── + +function escHtml(str) { + if (str === null || str === undefined) return ''; + return String(str) + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"') + .replace(/'/g, '''); +} + +function getLang() { + try { + return localStorage.getItem(LANG_KEY) || + (navigator.language && navigator.language.startsWith('en') ? 'en' : 'id'); + } catch (_) { return 'id'; } +} + +// Baca dari translations global yang didefinisikan localization.js +function t(key) { + try { + const lang = getLang(); + if (typeof translations !== 'undefined' && translations[lang] && translations[lang][key]) { + return translations[lang][key]; + } + } catch (_) {} + return key; +} + +// ─── Data Transformation ────────────────────────────────────────────────────── + +function extractRank(title) { + const m = (title || '').match(/(Juara\s+\d+|Juara\s+Harapan\s*\d*|Top\s+\d+|Finalis|Peringkat\s+\d+|Medali\s+\w+)/i); + return m ? m[0] : 'Pemenang'; +} + +function extractLevel(title, category) { + const text = ((title || '') + ' ' + (category || '')).toLowerCase(); + if (/internasional|international|global|world|asean|unesco/.test(text)) return 'Internasional'; + if (/regional|kalbar|kalimantan|provinsi|kota|kabupaten|lokal/.test(text)) return 'Regional'; + return 'Nasional'; +} + +function extractCompetition(title) { + return (title || '') + .replace(/^(Juara\s+\d+|Juara\s+Harapan\s*\d*|Top\s+\d+|Finalis|Peringkat\s+\d+|Medali\s+\w+)\s+(di\s+|pada\s+|dalam\s+)?/i, '') + .trim(); +} + +function getImageUrl(item, seed) { + if (item.galeri && Array.isArray(item.galeri) && item.galeri.length > 0) { + const first = item.galeri[0]; + const imgId = typeof first === 'string' ? first : (first.directus_files_id || first.id); + if (imgId) return `${API_BASE}/assets/${imgId}`; + } + if (item.foto) return `${API_BASE}/assets/${item.foto}`; + return `https://picsum.photos/seed/${seed}/800/600`; +} + +function transformAchievement(item) { + const id = String(item.id); + const title = item.nama_prestasi || 'Untitled Achievement'; + + let category = 'Umum'; + if (item.bidang_id) { + category = (typeof item.bidang_id === 'object' && item.bidang_id.nama_bidang) + ? item.bidang_id.nama_bidang + : (BIDANG_MAP[item.bidang_id] || 'Umum'); + } + + const rank = extractRank(title); + const level = extractLevel(title, category); + const competition = extractCompetition(title); + const year = parseInt(item.tahun) || new Date().getFullYear(); + const anggota = Array.isArray(item.anggota) ? item.anggota : []; + const team = item.nama_tim || (anggota.length > 0 ? anggota[0].nama : 'Mahasiswa'); + const avatar = (item.nama_tim || title || 'IF').substring(0, 2).toUpperCase(); + const description = item.deskripsi || + `${team} berhasil meraih prestasi luar biasa sebagai ${rank} dalam ajang ${competition} tahun ${year} pada bidang ${category.toLowerCase()}.`; + + return { + id, title, category, competition, rank, year, level, description, + team, + nim: item.nim || '', + generation: item.angkatan ? `Angkatan ${item.angkatan}` : 'Informatika', + image: getImageUrl(item, `prestasi-${id}`), + avatar, + members: anggota.map(m => ({ nama: m.nama || '', angkatan: m.angkatan ? parseInt(m.angkatan) : undefined })), + }; +} + +function transformProject(item) { + const id = String(item.id); + const title = item.nama_proyek || 'Untitled Project'; + const anggota = Array.isArray(item.anggota) ? item.anggota : []; + const studentName = item.nama_mahasiswa || (anggota.length > 0 ? anggota[0].nama : 'Mahasiswa'); + const year = parseInt(item.tahun) || new Date().getFullYear(); + const description = item.deskripsi || 'Tidak ada deskripsi.'; + + let categories = []; + if (item.bidang && Array.isArray(item.bidang)) { + categories = item.bidang.map(b => { + if (b.bidang_id && typeof b.bidang_id === 'object' && b.bidang_id.nama_bidang) return b.bidang_id.nama_bidang; + if (typeof b.bidang_id === 'number') return BIDANG_MAP[b.bidang_id] || 'Umum'; + return 'Umum'; + }).filter(Boolean); + } + if (categories.length === 0) categories = ['Umum']; + + let link = item.url || null; + if (link && !/^https?:\/\//i.test(link)) link = `https://${link}`; + + return { + id, title, studentName, year, description, categories, link, + nim: item.nim || '', + image: getImageUrl(item, `project-${id}`), + catatan: item.catatan || '', + members: anggota.map(m => ({ nama: m.nama || '', nim: m.nim || '' })), + }; +} + +// ─── API Fetch ──────────────────────────────────────────────────────────────── + +async function fetchAchievements() { + const res = await fetch(`${API_BASE}/items/prestasi?fields=*.*`); + if (!res.ok) throw new Error(`HTTP ${res.status}`); + const { data } = await res.json(); + return (data || []) + .filter(item => item.status === 'published') + .map(transformAchievement); +} + +async function fetchProjects() { + const res = await fetch(`${API_BASE}/items/portfolio?fields=*,bidang.bidang_id.nama_bidang,galeri.*`); + if (!res.ok) throw new Error(`HTTP ${res.status}`); + const { data } = await res.json(); + return (data || []) + .filter(item => item.status === 'published') + .map(transformProject); +} + +// ─── App State ──────────────────────────────────────────────────────────────── + +let achievements = []; +let projects = []; +let achVisible = 3; +let projVisible = 6; + +let achFilter = { search: '', level: '', cat: '', year: '' }; +let projFilter = { search: '', cat: '', year: '' }; + +// ─── Init ───────────────────────────────────────────────────────────────────── + +document.addEventListener('DOMContentLoaded', async () => { + initWaButton(); + + // Loading placeholders + showSkeleton('acaab-ach-grid', 3); + showSkeleton('acaab-proj-track', 4); + + const [achResult, projResult] = await Promise.allSettled([ + fetchAchievements(), + fetchProjects(), + ]); + + if (achResult.status === 'fulfilled') { + achievements = achResult.value.sort((a, b) => b.year - a.year); + } else { + console.error('[ACAAB] achievements error:', achResult.reason); + showError('acaab-ach-grid', t('grp_acaab_ach_error')); + } + + if (projResult.status === 'fulfilled') { + projects = projResult.value; + } else { + console.error('[ACAAB] projects error:', projResult.reason); + showError('acaab-proj-track', t('grp_acaab_proj_error')); + } + + initStats(); + initAchievements(); + initProjects(); + updateDataNote(); +}); + +// Re-render saat bahasa berubah dari kit navbar +document.addEventListener('languageChanged', () => { + updateStats(); + renderAchievements(); + buildAchFilterOptions(); + renderProjects(); + buildProjFilterOptions(); + updateWaButton(); + updateDataNote(); + updateSearchPlaceholders(); +}); + +// ─── Skeleton / Error ───────────────────────────────────────────────────────── + +function showSkeleton(containerId, count) { + const el = document.getElementById(containerId); + if (!el) return; + el.innerHTML = Array(count).fill(0).map(() => + `
` + ).join(''); +} + +function showError(containerId, msg) { + const el = document.getElementById(containerId); + if (el) el.innerHTML = `

${escHtml(msg)}

`; +} + +// ─── Stats ──────────────────────────────────────────────────────────────────── + +function initStats() { + updateStats(); + + const statsEl = document.getElementById('acaab-stats'); + if (!statsEl) return; + + const intl = achievements.filter(a => a.level === 'Internasional').length; + const national = achievements.filter(a => a.level === 'Nasional').length; + const regional = achievements.filter(a => a.level === 'Regional').length; + + const observer = new IntersectionObserver(entries => { + entries.forEach(entry => { + if (!entry.isIntersecting) return; + animateCount('stat-total-ach', achievements.length, 1600); + animateCount('stat-total-proj', projects.length, 1600); + animateCount('stat-intl', intl, 1200); + animateCount('stat-national', national, 1350); + animateCount('stat-regional', regional, 1500); + observer.disconnect(); + }); + }, { threshold: 0.4 }); + + observer.observe(statsEl); +} + +function updateStats() { + const set = (id, val) => { const el = document.getElementById(id); if (el) el.textContent = val; }; + set('stat-total-ach', achievements.length); + set('stat-total-proj', projects.length); + set('stat-intl', achievements.filter(a => a.level === 'Internasional').length); + set('stat-national', achievements.filter(a => a.level === 'Nasional').length); + set('stat-regional', achievements.filter(a => a.level === 'Regional').length); +} + +function animateCount(elId, target, duration) { + const el = document.getElementById(elId); + if (!el) return; + const start = performance.now(); + (function step(now) { + const p = Math.min((now - start) / duration, 1); + const eased = 1 - Math.pow(1 - p, 4); // easeOutQuart + el.textContent = Math.round(target * eased).toLocaleString(); + if (p < 1) requestAnimationFrame(step); + })(start); +} + +function updateDataNote() { + const el = document.getElementById('acaab-data-note'); + if (!el) return; + const lang = getLang(); + const locale = lang === 'en' ? 'en-US' : 'id-ID'; + const date = new Date().toLocaleDateString(locale, { day: 'numeric', month: 'long', year: 'numeric' }); + el.textContent = `${t('grp_acaab_stats_data_note')} ${date}`; +} + +// ─── Achievements ───────────────────────────────────────────────────────────── + +const ACH_INIT = 3; +const ACH_MORE = 3; + +const LEVEL_CLASS = { + Internasional: 'acaab-badge-intl', + Nasional: 'acaab-badge-nasional', + Regional: 'acaab-badge-regional', +}; + +function initAchievements() { + buildAchFilterOptions(); + renderAchievements(); + bindAchEvents(); +} + +function buildAchFilterOptions() { + const levelSel = document.getElementById('acaab-ach-level'); + const catSel = document.getElementById('acaab-ach-cat'); + const yearSel = document.getElementById('acaab-ach-year'); + if (!levelSel || !catSel || !yearSel) return; + + const levels = ['Internasional', 'Nasional', 'Regional']; + const cats = [...new Set(achievements.map(a => a.category))].sort(); + const years = [...new Set(achievements.map(a => String(a.year)))].filter(Boolean).sort((a, b) => b - a); + + levelSel.innerHTML = `` + + levels.map(l => ``).join(''); + catSel.innerHTML = `` + + cats.map(c => ``).join(''); + yearSel.innerHTML = `` + + years.map(y => ``).join(''); +} + +function filterAchievements() { + const q = achFilter.search.toLowerCase(); + return achievements.filter(a => { + const matchSearch = !q || [a.title, a.team, a.category, a.competition] + .some(s => (s || '').toLowerCase().includes(q)); + const matchLevel = !achFilter.level || a.level === achFilter.level; + const matchCat = !achFilter.cat || a.category === achFilter.cat; + const matchYear = !achFilter.year || String(a.year) === achFilter.year; + return matchSearch && matchLevel && matchCat && matchYear; + }); +} + +function renderAchievements() { + const grid = document.getElementById('acaab-ach-grid'); + const countEl = document.getElementById('acaab-ach-count'); + const moreBtn = document.getElementById('acaab-ach-more'); + const lessBtn = document.getElementById('acaab-ach-less'); + const resetBtn= document.getElementById('acaab-ach-reset'); + if (!grid) return; + + const filtered = filterAchievements(); + const visible = filtered.slice(0, achVisible); + const hasFilter = achFilter.search || achFilter.level || achFilter.cat || achFilter.year; + + if (countEl) countEl.textContent = + `${t('grp_acaab_ach_showing')} ${filtered.length} ${t('grp_acaab_ach_results')}`; + if (resetBtn) resetBtn.style.display = hasFilter ? 'flex' : 'none'; + + if (filtered.length === 0) { + grid.innerHTML = `

${escHtml(t('grp_acaab_ach_empty'))}

`; + if (moreBtn) moreBtn.style.display = 'none'; + if (lessBtn) lessBtn.style.display = 'none'; + return; + } + + grid.innerHTML = visible.map((a, i) => achCardHtml(a, i)).join(''); + + if (moreBtn) moreBtn.style.display = achVisible < filtered.length ? 'inline-block' : 'none'; + if (lessBtn) lessBtn.style.display = achVisible > ACH_INIT ? 'inline-block' : 'none'; + + grid.querySelectorAll('.acaab-ach-card').forEach(card => { + card.addEventListener('click', (e) => { + // Biarkan tombol yang merupakan link tetap berfungsi + if (e.target.closest('a')) return; + const ach = achievements.find(a => a.id === card.dataset.id); + if (ach) openAchModal(ach); + }); + }); +} + +function achCardHtml(a, idx) { + return ` +
+
+ +
+ ${escHtml(a.title)} + +
+ + ${escHtml(a.rank)} +
+
+ +
+ +
+ ${escHtml(a.category)} + + ${escHtml(String(a.year))} + +
+ +

${escHtml(a.title)}

+ +

${escHtml(a.description)}

+ +
+
+ +
+
${escHtml(a.avatar)}
+
+ ${escHtml(a.team)} + ${escHtml(a.generation)} +
+
+ + ${escHtml(a.level)} +
+ + +
+
+
`; +} + +function bindAchEvents() { + const search = document.getElementById('acaab-ach-search'); + const level = document.getElementById('acaab-ach-level'); + const cat = document.getElementById('acaab-ach-cat'); + const year = document.getElementById('acaab-ach-year'); + const reset = document.getElementById('acaab-ach-reset'); + const moreBtn = document.getElementById('acaab-ach-more'); + const lessBtn = document.getElementById('acaab-ach-less'); + + const onChange = () => { + achFilter.search = search ? search.value.trim() : ''; + achFilter.level = level ? level.value : ''; + achFilter.cat = cat ? cat.value : ''; + achFilter.year = year ? year.value : ''; + achVisible = ACH_INIT; + renderAchievements(); + }; + + if (search) search.addEventListener('input', onChange); + if (level) level.addEventListener('change', onChange); + if (cat) cat.addEventListener('change', onChange); + if (year) year.addEventListener('change', onChange); + + if (reset) reset.addEventListener('click', () => { + achFilter = { search: '', level: '', cat: '', year: '' }; + if (search) search.value = ''; + if (level) level.value = ''; + if (cat) cat.value = ''; + if (year) year.value = ''; + achVisible = ACH_INIT; + renderAchievements(); + }); + + if (moreBtn) moreBtn.addEventListener('click', () => { achVisible += ACH_MORE; renderAchievements(); }); + if (lessBtn) lessBtn.addEventListener('click', () => { + achVisible = ACH_INIT; + document.getElementById('acaab-ach-section')?.scrollIntoView({ behavior: 'smooth', block: 'start' }); + renderAchievements(); + }); +} + +// ─── Achievement Modal ──────────────────────────────────────────────────────── + +function infoRow(icon, label, value) { + if (!value) return ''; + return `
+ +
+

${escHtml(label)}

+

${escHtml(value)}

+
+
`; +} + +function memberItem(nama, sub) { + const initial = (nama || '?').charAt(0).toUpperCase(); + return `
  • + ${initial} +
    + ${escHtml(nama)} + ${sub ? `${escHtml(sub)}` : ''} +
    +
  • `; +} + +function openAchModal(a) { + const membersHtml = a.members && a.members.length > 0 ? ` +
    +

    Anggota Tim

    +
      + ${a.members.map(m => memberItem(m.nama, m.angkatan ? `Angkatan ${m.angkatan}` : '')).join('')} +
    +
    ` : ''; + + renderModal(` + +
    + ${escHtml(a.title)} +
    + + + +
    + + ${escHtml(a.rank)} + + + ${escHtml(a.level)} + +
    +
    + +
    + ${escHtml(a.category)} +

    ${escHtml(a.title)}

    + +
    + ${infoRow('users', t('grp_acaab_modal_team'), a.team)} + ${a.nim ? infoRow('id-card', 'NIM', a.nim) : ''} + ${infoRow('user-graduate', t('grp_acaab_modal_generation'), a.generation)} + ${infoRow('calendar-alt', 'Tahun', String(a.year))} + ${infoRow('award', 'Kompetisi', a.competition)} + ${infoRow('tag', 'Bidang', a.category)} +
    + ${membersHtml} + +
    +

    Deskripsi

    +

    ${escHtml(a.description)}

    +
    + + +
    + `, true); +} + +// ─── Projects ───────────────────────────────────────────────────────────────── + +const PROJ_INIT = 6; +const PROJ_MORE = 3; + +function initProjects() { + buildProjFilterOptions(); + renderProjects(); + bindProjEvents(); +} + +function buildProjFilterOptions() { + const catSel = document.getElementById('acaab-proj-cat'); + const yearSel = document.getElementById('acaab-proj-year'); + if (!catSel || !yearSel) return; + + const cats = [...new Set(projects.flatMap(p => p.categories))].sort(); + const years = [...new Set(projects.map(p => String(p.year)))].filter(Boolean).sort((a, b) => b - a); + + catSel.innerHTML = `` + + cats.map(c => ``).join(''); + yearSel.innerHTML = `` + + years.map(y => ``).join(''); +} + +function filterProjects() { + const q = projFilter.search.toLowerCase(); + const result = projects.filter(p => { + const matchSearch = !q || [p.title, p.studentName, p.description, ...p.categories] + .some(s => (s || '').toLowerCase().includes(q)); + const matchCat = !projFilter.cat || p.categories.includes(projFilter.cat); + const matchYear = !projFilter.year || String(p.year) === projFilter.year; + return matchSearch && matchCat && matchYear; + }); + + // Sort descending by year + result.sort((a, b) => (b.year || 0) - (a.year || 0)); + + return result; +} + +function renderProjects() { + const track = document.getElementById('acaab-proj-track'); + const moreBtn = document.getElementById('acaab-proj-more'); + const resetBtn = document.getElementById('acaab-proj-reset'); + if (!track) return; + + const filtered = filterProjects(); + const visible = filtered.slice(0, projVisible); + const hasFilter = projFilter.search || projFilter.cat || projFilter.year; + + if (resetBtn) resetBtn.style.display = hasFilter ? 'flex' : 'none'; + + if (filtered.length === 0) { + track.innerHTML = `

    ${escHtml(t('grp_acaab_proj_empty'))}

    `; + if (moreBtn) moreBtn.style.display = 'none'; + return; + } + + track.innerHTML = visible.map((p, i) => projCardHtml(p, i)).join(''); + if (moreBtn) moreBtn.style.display = projVisible < filtered.length ? 'inline-block' : 'none'; + + // Responsif: Sembunyikan scroll button & center jika cuma 1 data + const prevBtn = document.getElementById('acaab-proj-prev'); + const nextBtn = document.getElementById('acaab-proj-next'); + if (prevBtn) prevBtn.style.display = filtered.length <= 1 ? 'none' : 'flex'; + if (nextBtn) nextBtn.style.display = filtered.length <= 1 ? 'none' : 'flex'; + track.style.justifyContent = filtered.length === 1 ? 'center' : 'flex-start'; + + track.querySelectorAll('.acaab-proj-card-wrap').forEach(card => { + card.addEventListener('click', (e) => { + if (e.target.closest('a') && e.target.closest('a').href) return; + const proj = projects.find(p => p.id === card.dataset.id); + if (proj) openProjModal(proj); + }); + }); +} + +function projCardHtml(p, idx) { + const catBadges = p.categories.map(c => ` + + ${escHtml(c)} + `).join(''); + + return ` +
    +
    + +
    + ${escHtml(p.title)} + +
    +

    ${escHtml(p.title)}

    +
    ${catBadges}
    +
    +
    + +
    + +
    + ${p.studentName ? `${escHtml(p.studentName)}` : ''} + ${p.year ? `${escHtml(String(p.year))}` : ''} +
    + +

    ${escHtml(p.description)}

    + +
    + + ${p.link ? ` + + ${escHtml(t('grp_acaab_modal_visit'))} + ` : ''} +
    +
    +
    `; +} + +function bindProjEvents() { + const search = document.getElementById('acaab-proj-search'); + const cat = document.getElementById('acaab-proj-cat'); + const year = document.getElementById('acaab-proj-year'); + const reset = document.getElementById('acaab-proj-reset'); + const moreBtn = document.getElementById('acaab-proj-more'); + const prevBtn = document.getElementById('acaab-proj-prev'); + const nextBtn = document.getElementById('acaab-proj-next'); + + const onChange = () => { + projFilter.search = search ? search.value.trim() : ''; + projFilter.cat = cat ? cat.value : ''; + projFilter.year = year ? year.value : ''; + projVisible = PROJ_INIT; + renderProjects(); + }; + + if (search) search.addEventListener('input', onChange); + if (cat) cat.addEventListener('change', onChange); + if (year) year.addEventListener('change', onChange); + + if (reset) reset.addEventListener('click', () => { + projFilter = { search: '', cat: '', year: '' }; + if (search) search.value = ''; + if (cat) cat.value = ''; + if (year) year.value = ''; + projVisible = PROJ_INIT; + renderProjects(); + }); + + if (moreBtn) moreBtn.addEventListener('click', () => { projVisible += PROJ_MORE; renderProjects(); }); + + const track = document.getElementById('acaab-proj-track'); + if (prevBtn && track) prevBtn.addEventListener('click', () => { + const cardW = (track.firstElementChild ? track.firstElementChild.offsetWidth : 300) + 20; + track.scrollBy({ left: -cardW, behavior: 'smooth' }); + }); + if (nextBtn && track) nextBtn.addEventListener('click', () => { + const cardW = (track.firstElementChild ? track.firstElementChild.offsetWidth : 300) + 20; + track.scrollBy({ left: cardW, behavior: 'smooth' }); + }); +} + +// ─── Project Modal ──────────────────────────────────────────────────────────── + +function openProjModal(p) { + const membersHtml = p.members && p.members.length > 0 ? ` +
    +

    Anggota Tim

    +
      + ${p.members.map(m => memberItem(m.nama, m.nim || '')).join('')} +
    +
    ` : ''; + + const catBadgesImg = p.categories.map(c => ` + + ${escHtml(c)} + `).join(''); + + const linkSection = p.link + ? ` + ${escHtml(t('grp_acaab_modal_visit'))} + ` + : `
    + ${escHtml(t('grp_acaab_modal_no_link'))} +
    `; + + renderModal(` + +
    + ${escHtml(p.title)} +
    + + + +
    ${catBadgesImg}
    +
    + +
    +

    ${escHtml(p.title)}

    + +
    + ${p.studentName ? infoRow('users', t('grp_acaab_modal_team'), p.studentName) : ''} + ${p.nim ? infoRow('id-card', 'NIM', p.nim) : ''} + ${infoRow('calendar-alt', 'Tahun', String(p.year))} + ${infoRow('tag', 'Bidang', p.categories.join(', '))} +
    + ${membersHtml} + +
    +

    Deskripsi

    +

    ${escHtml(p.description)}

    + ${p.catatan ? ` +
    +

    Catatan Tambahan

    +

    ${escHtml(p.catatan)}

    +
    ` : ''} +
    + + ${linkSection} + +
    + `, true); +} + +// ─── Modal shared ───────────────────────────────────────────────────────────── + +function renderModal(innerHtml, hasCloseBtn = false) { + const container = document.getElementById('acaab-modal'); + if (!container) return; + + container.innerHTML = ` +
    +
    + ${innerHtml} +
    +
    `; + + document.body.classList.add('acaab-modal-open'); + + document.getElementById('acaab-modal-close')?.addEventListener('click', closeModal); + if (hasCloseBtn) { + document.getElementById('acaab-modal-close-btn')?.addEventListener('click', closeModal); + } + document.getElementById('acaab-modal-bd').addEventListener('click', e => { + if (e.target === e.currentTarget) closeModal(); + }); + document.addEventListener('keydown', onEsc); +} + +function closeModal() { + const c = document.getElementById('acaab-modal'); + if (c) c.innerHTML = ''; + document.body.classList.remove('acaab-modal-open'); + document.removeEventListener('keydown', onEsc); +} + +function onEsc(e) { if (e.key === 'Escape') closeModal(); } + +// ─── CTA / WhatsApp ─────────────────────────────────────────────────────────── + +const WA_NUMBER = '6285177655161'; + +function initWaButton() { updateWaButton(); } + +function updateWaButton() { + const btn = document.getElementById('acaab-cta-wa'); + if (!btn) return; + const msg = getLang() === 'en' + ? 'Hello! I would like to know more about Informatika UNTAN student achievements and projects.' + : 'Halo! Saya ingin mengetahui lebih lanjut tentang prestasi dan karya mahasiswa Informatika UNTAN.'; + btn.href = `https://wa.me/${WA_NUMBER}?text=${encodeURIComponent(msg)}`; +} + +// ─── Placeholder sync ───────────────────────────────────────────────────────── + +function updateSearchPlaceholders() { + const s1 = document.getElementById('acaab-ach-search'); + const s2 = document.getElementById('acaab-proj-search'); + if (s1) s1.placeholder = t('grp_acaab_ach_search'); + if (s2) s2.placeholder = t('grp_acaab_proj_search'); +} diff --git a/groups/ACAAB/style.css b/groups/ACAAB/style.css index 2bc5542..aa25e6a 100644 --- a/groups/ACAAB/style.css +++ b/groups/ACAAB/style.css @@ -1,48 +1,222 @@ -:root { - --brand-navy: #003150; - --brand-yellow: #feb401; - --text-main: #1e293b; - --text-soft: #64748b; - --bg-soft: #f8fafc; - --line: #e2e8f0; +/* ===================================================== + ACAAB – Prestasi & Karya Mahasiswa + Custom styles yang tidak dicakup output.css + ===================================================== */ + +/* Cegah horizontal scroll tanpa clip full-bleed */ +body { overflow-x: hidden; } + +/* --- Full-bleed: section keluar dari container prose --- */ +.acaab-full-bleed { + width: 100vw; + margin-left: calc(50% - 50vw); + margin-right: calc(50% - 50vw); } -* { box-sizing: border-box; } -html, body { margin: 0; padding: 0; } -body { font-family: "Roboto", Arial, sans-serif; color: var(--text-main); background: #fff; line-height: 1.6; } -.container { width: min(1100px, 92%); margin-inline: auto; } +/* --- Sembunyikan scrollbar carousel tapi tetap scrollable --- */ +.acaab-hide-scrollbar { + -ms-overflow-style: none; + scrollbar-width: none; +} +.acaab-hide-scrollbar::-webkit-scrollbar { + display: none; +} -.nav { background: var(--brand-navy); color: #fff; border-bottom: 4px solid var(--brand-yellow); padding: 14px 0; } -.brand { font-size: 1.1rem; font-weight: 700; letter-spacing: .02em; } +/* --- Card ukuran responsif di carousel --- */ +.acaab-proj-card { + width: 80vw; + flex-shrink: 0; + scroll-snap-align: start; +} +@media (min-width: 768px) { .acaab-proj-card { width: 44vw; } } +@media (min-width: 1024px) { .acaab-proj-card { width: 30vw; } } -.hero { position: relative; color: #fff; min-height: 220px; display: flex; align-items: flex-end; overflow: hidden; } -.hero-bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; filter: brightness(0.45); } -.hero-inner { position: relative; z-index: 1; padding: 36px 0; } -.badge { display: inline-block; background: var(--brand-yellow); color: #111827; font-size: .68rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; padding: .2rem .45rem; margin-bottom: 12px; } -.hero h1 { margin: 0; font-size: clamp(1.6rem, 3.2vw, 2.8rem); line-height: 1.2; } +/* --- Snap scroll carousel --- */ +.acaab-carousel-track { + scroll-snap-type: x mandatory; + -webkit-overflow-scrolling: touch; +} -.layout { display: grid; grid-template-columns: 1fr; gap: 2rem; padding: 2rem 0 4rem; } -@media (min-width: 1024px) { .layout { grid-template-columns: minmax(0, 3fr) minmax(260px, 1fr); } } +/* --- Animasi fade-in untuk cards --- */ +@keyframes acaab-fade-in { + from { opacity: 0; transform: translateY(14px); } + to { opacity: 1; transform: translateY(0); } +} +.acaab-fade-in { + animation: acaab-fade-in 0.35s ease both; +} -.meta { font-size: .78rem; text-transform: uppercase; color: #475569; display: flex; flex-wrap: wrap; gap: .75rem 1rem; margin-bottom: 1rem; } -.cover { background: var(--bg-soft); border: 1px solid var(--line); margin-bottom: 1.5rem; } -.cover img { width: 100%; height: auto; display: block; } +/* --- Badge level warna --- */ +.acaab-badge-intl { background-color: #ca8a04; color: #fff; } +.acaab-badge-nasional { background-color: #1d4ed8; color: #fff; } +.acaab-badge-regional { background-color: #64748b; color: #fff; } -.article-body > * + * { margin-top: 1.1em; } -.article-body h2 { font-size: 1.35rem; margin: 1.6em 0 .5em; } -.article-body h3 { font-size: 1.1rem; margin: 1.4em 0 .4em; } -.article-body p { margin: 0 0 1em; } -.article-body ul, .article-body ol { padding-left: 1.4rem; } -.article-body blockquote { border-left: 4px solid #005eb8; background: #eef6ff; padding: .8rem 1rem; color: #334155; } -.article-body a { color: #005eb8; } -.article-body img { max-width: 100%; border-radius: 8px; } -.article-body code { background: #f1f5f9; padding: .1em .35em; border-radius: 4px; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; } +/* --- Skeleton loading --- */ +.acaab-skeleton { + background: linear-gradient(90deg, #e2e8f0 25%, #f1f5f9 50%, #e2e8f0 75%); + background-size: 200% 100%; + animation: acaab-skeleton-pulse 1.5s infinite; + border-radius: 0.5rem; +} +@keyframes acaab-skeleton-pulse { + 0% { background-position: 200% 0; } + 100% { background-position: -200% 0; } +} -.note { border: 1px solid var(--line); background: var(--bg-soft); padding: 1rem; } -.note h3 { margin: 0 0 .5rem; font-size: .76rem; text-transform: uppercase; letter-spacing: .12em; color: #475569; } +/* --- Modal backdrop --- */ +.acaab-modal-backdrop { + position: fixed; + inset: 0; + background: rgba(0, 0, 0, 0.65); + backdrop-filter: blur(4px); + -webkit-backdrop-filter: blur(4px); + z-index: 200; + display: flex; + align-items: center; + justify-content: center; + padding: 1rem; +} -.footer { margin-top: 2rem; background: var(--brand-navy); color: #fff; border-top: 4px solid var(--brand-yellow); } -.footer-inner { display: flex; align-items: center; justify-content: center; gap: .75rem; padding: 1rem 0; } -.footer-logo { height: 28px; width: auto; } -.footer-ornament { width: 100%; display: block; opacity: .9; } +/* --- Scroll lock saat modal terbuka --- */ +body.acaab-modal-open { + overflow: hidden; +} + +/* --- Stats grid: divider vertikal di desktop --- */ +@media (min-width: 768px) { + .acaab-stats-grid { + grid-template-columns: 1fr 1px 1fr 1px 1fr; + } +} + +/* --- Line clamp (browser lama) --- */ +.acaab-line-clamp-2 { + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + overflow: hidden; +} +.acaab-line-clamp-3 { + display: -webkit-box; + -webkit-line-clamp: 3; + -webkit-box-orient: vertical; + overflow: hidden; +} + +/* --- Achievement card --- */ +.acaab-ach-card { + position: relative; + background: white; + border-radius: 0.5rem; + overflow: hidden; + box-shadow: 0 1px 3px rgba(0,0,0,0.1), 0 1px 2px rgba(0,0,0,0.06); + border: 1px solid #e2e8f0; + display: flex; + flex-direction: column; + height: 100%; + transition: transform 0.3s ease, box-shadow 0.3s ease; +} +.acaab-ach-card:hover { + transform: translateY(-4px); + box-shadow: 0 10px 25px rgba(0,0,0,0.12), 0 4px 10px rgba(0,0,0,0.08); +} +.acaab-ach-top-bar { + position: absolute; + top: 0; left: 0; right: 0; + height: 3px; + background: #003150; + z-index: 10; + transition: background 0.25s ease; +} +.acaab-ach-card:hover .acaab-ach-top-bar { background: #feb401; } +.acaab-ach-card:hover .acaab-card-title { color: #1e40af; } +.acaab-card-title { transition: color 0.2s ease; } +.acaab-ach-read-btn:hover { background: #003150 !important; color: white !important; } + +/* --- Project card wrapper --- */ +.acaab-proj-card-wrap { + position: relative; + background: white; + border-radius: 0.5rem; + overflow: hidden; + box-shadow: 0 1px 3px rgba(0,0,0,0.1), 0 1px 2px rgba(0,0,0,0.06); + border: 1px solid #e2e8f0; + display: flex; + flex-direction: column; + flex-shrink: 0; + transition: box-shadow 0.3s ease; +} +.acaab-proj-card-wrap:hover { box-shadow: 0 10px 25px rgba(0,0,0,0.12); } +.acaab-proj-left-bar { + position: absolute; + top: 0; left: 0; + width: 3px; height: 100%; + background: #feb401; + z-index: 10; + transform-origin: bottom; + transition: transform 0.3s ease; +} +.acaab-proj-card-wrap:hover .acaab-proj-left-bar { transform: scaleY(1.08); } +.acaab-proj-card-wrap:hover .acaab-card-img { transform: scale(1.05); } + +/* --- Card image zoom --- */ +.acaab-card-img { + transition: transform 0.5s ease; +} + +/* --- Stats grid dividers responsive --- */ +.acaab-stat-vdivider { display: none; } +@media (min-width: 768px) { + .acaab-stat-vdivider { display: flex; } + .acaab-stat-hdivider { display: none; } +} + +/* --- Filter focus --- */ +#acaab-ach-filters input:focus, +#acaab-ach-filters select:focus, +#acaab-proj-filters input:focus, +#acaab-proj-filters select:focus { + outline: 2px solid #003150; + outline-offset: 1px; + border-color: #003150; +} + +/* --- CTA inner layout: stacked mobile → row desktop --- */ +.acaab-cta-inner { + display: flex; + flex-direction: column; + align-items: center; + gap: 2rem; + text-align: center; +} +@media (min-width: 768px) { + .acaab-cta-inner { + flex-direction: row; + align-items: center; + justify-content: space-between; + text-align: left; + gap: 3rem; + } +} + +/* --- Reduced motion --- */ +@media (prefers-reduced-motion: reduce) { +} + +/* --- Modal Responsiveness Overrides --- */ +.acaab-modal-achievement { + max-width: 500px !important; +} + +.acaab-modal-project { + max-width: 700px !important; +} + +@media (max-width: 639px) { + .acaab-modal-achievement, .acaab-modal-project { + max-width: 100% !important; + margin: 0 !important; + border-radius: 1rem 1rem 0 0 !important; + } +} diff --git a/groups/LimaEm/assets/css/output.css b/groups/LimaEm/assets/css/output.css new file mode 100644 index 0000000..4e6c433 --- /dev/null +++ b/groups/LimaEm/assets/css/output.css @@ -0,0 +1,2 @@ +/*! tailwindcss v4.2.4 | MIT License | https://tailwindcss.com */ +@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-amber-300:oklch(87.9% .169 91.605);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-300:oklch(86.9% .022 252.894);--color-slate-600:oklch(44.6% .043 257.281);--color-slate-800:oklch(27.9% .041 260.031);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-900:oklch(21% .034 264.665);--color-white:#fff;--spacing:.25rem;--container-xl:36rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--container-7xl:80rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--text-5xl:3rem;--text-5xl--line-height:1;--text-6xl:3.75rem;--text-6xl--line-height:1;--text-7xl:4.5rem;--text-7xl--line-height:1;--font-weight-light:300;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--font-weight-extrabold:800;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-wider:.05em;--tracking-widest:.1em;--leading-tight:1.25;--leading-snug:1.375;--leading-relaxed:1.625;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--radius-2xl:1rem;--radius-3xl:1.5rem;--ease-out:cubic-bezier(0, 0, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--blur-md:12px;--blur-3xl:64px;--aspect-video:16 / 9;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-hmif-primary:#0b2f4c;--color-hmif-secondary:#f5c82f}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing) * 0)}.inset-x-0{inset-inline:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.-top-20{top:calc(var(--spacing) * -20)}.top-0{top:calc(var(--spacing) * 0)}.top-\[4\%\]{top:4%}.-right-4{right:calc(var(--spacing) * -4)}.-right-20{right:calc(var(--spacing) * -20)}.right-0{right:calc(var(--spacing) * 0)}.right-\[-4\%\]{right:-4%}.-bottom-24{bottom:calc(var(--spacing) * -24)}.bottom-\[-3\%\]{bottom:-3%}.bottom-\[-4\%\]{bottom:-4%}.-left-4{left:calc(var(--spacing) * -4)}.-left-16{left:calc(var(--spacing) * -16)}.left-0{left:calc(var(--spacing) * 0)}.left-\[0\%\]{left:0%}.left-\[8\%\]{left:8%}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.order-1{order:1}.order-2{order:2}.col-span-1{grid-column:span 1/span 1}.col-span-2{grid-column:span 2/span 2}.row-span-1{grid-row:span 1/span 1}.row-span-2{grid-row:span 2/span 2}.mx-auto{margin-inline:auto}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-7{margin-top:calc(var(--spacing) * 7)}.mt-8{margin-top:calc(var(--spacing) * 8)}.mt-10{margin-top:calc(var(--spacing) * 10)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-10{margin-bottom:calc(var(--spacing) * 10)}.mb-12{margin-bottom:calc(var(--spacing) * 12)}.mb-16{margin-bottom:calc(var(--spacing) * 16)}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-flex{display:inline-flex}.aspect-video{aspect-ratio:var(--aspect-video)}.h-1{height:calc(var(--spacing) * 1)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-4{height:calc(var(--spacing) * 4)}.h-4\.5{height:calc(var(--spacing) * 4.5)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-11{height:calc(var(--spacing) * 11)}.h-14{height:calc(var(--spacing) * 14)}.h-16{height:calc(var(--spacing) * 16)}.h-24{height:calc(var(--spacing) * 24)}.h-48{height:calc(var(--spacing) * 48)}.h-56{height:calc(var(--spacing) * 56)}.h-\[420px\]{height:420px}.h-auto{height:auto}.h-full{height:100%}.min-h-screen{min-height:100vh}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-4{width:calc(var(--spacing) * 4)}.w-4\.5{width:calc(var(--spacing) * 4.5)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-7{width:calc(var(--spacing) * 7)}.w-8{width:calc(var(--spacing) * 8)}.w-9{width:calc(var(--spacing) * 9)}.w-11{width:calc(var(--spacing) * 11)}.w-14{width:calc(var(--spacing) * 14)}.w-16{width:calc(var(--spacing) * 16)}.w-48{width:calc(var(--spacing) * 48)}.w-56{width:calc(var(--spacing) * 56)}.w-full{width:100%}.w-px{width:1px}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-7xl{max-width:var(--container-7xl)}.max-w-none{max-width:none}.max-w-xl{max-width:var(--container-xl)}.flex-shrink-0{flex-shrink:0}.grow{flex-grow:1}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.resize{resize:both}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing) * 1)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}.gap-8{gap:calc(var(--spacing) * 8)}.gap-10{gap:calc(var(--spacing) * 10)}.gap-12{gap:calc(var(--spacing) * 12)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-y-1{row-gap:calc(var(--spacing) * 1)}.overflow-hidden{overflow:hidden}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-\[24px\]{border-radius:24px}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-4{border-style:var(--tw-border-style);border-width:4px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-gray-100{border-color:var(--color-gray-100)}.border-gray-100\/50{border-color:#f3f4f680}@supports (color:color-mix(in lab, red, red)){.border-gray-100\/50{border-color:color-mix(in oklab, var(--color-gray-100) 50%, transparent)}}.border-gray-200{border-color:var(--color-gray-200)}.border-hmif-secondary{border-color:var(--color-hmif-secondary)}.border-white{border-color:var(--color-white)}.border-white\/10{border-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.border-white\/10{border-color:color-mix(in oklab, var(--color-white) 10%, transparent)}}.border-white\/20{border-color:#fff3}@supports (color:color-mix(in lab, red, red)){.border-white\/20{border-color:color-mix(in oklab, var(--color-white) 20%, transparent)}}.border-white\/25{border-color:#ffffff40}@supports (color:color-mix(in lab, red, red)){.border-white\/25{border-color:color-mix(in oklab, var(--color-white) 25%, transparent)}}.border-white\/30{border-color:#ffffff4d}@supports (color:color-mix(in lab, red, red)){.border-white\/30{border-color:color-mix(in oklab, var(--color-white) 30%, transparent)}}.bg-\[\#082A4B\]{background-color:#082a4b}.bg-\[\#EEF2FC\]{background-color:#eef2fc}.bg-\[\#EEF2FC\]\/70{background-color:oklab(96.101% -.000369817 -.0140598/.7)}.bg-gray-200{background-color:var(--color-gray-200)}.bg-hmif-primary{background-color:var(--color-hmif-primary)}.bg-hmif-secondary{background-color:var(--color-hmif-secondary)}.bg-hmif-secondary\/15{background-color:#f5c82f26}@supports (color:color-mix(in lab, red, red)){.bg-hmif-secondary\/15{background-color:color-mix(in oklab, var(--color-hmif-secondary) 15%, transparent)}}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.bg-white\/10{background-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.bg-white\/10{background-color:color-mix(in oklab, var(--color-white) 10%, transparent)}}.bg-white\/20{background-color:#fff3}@supports (color:color-mix(in lab, red, red)){.bg-white\/20{background-color:color-mix(in oklab, var(--color-white) 20%, transparent)}}.bg-white\/\[0\.01\]{background-color:#ffffff03}@supports (color:color-mix(in lab, red, red)){.bg-white\/\[0\.01\]{background-color:color-mix(in oklab, var(--color-white) 1%, transparent)}}.bg-gradient-to-b{--tw-gradient-position:to bottom in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-t{--tw-gradient-position:to top in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-hmif-primary{--tw-gradient-from:var(--color-hmif-primary);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-hmif-primary\/45{--tw-gradient-from:#0b2f4c73}@supports (color:color-mix(in lab, red, red)){.from-hmif-primary\/45{--tw-gradient-from:color-mix(in oklab, var(--color-hmif-primary) 45%, transparent)}}.from-hmif-primary\/45{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-white\/5{--tw-gradient-from:#ffffff0d}@supports (color:color-mix(in lab, red, red)){.from-white\/5{--tw-gradient-from:color-mix(in oklab, var(--color-white) 5%, transparent)}}.from-white\/5{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.via-hmif-primary\/80{--tw-gradient-via:#0b2f4ccc}@supports (color:color-mix(in lab, red, red)){.via-hmif-primary\/80{--tw-gradient-via:color-mix(in oklab, var(--color-hmif-primary) 80%, transparent)}}.via-hmif-primary\/80{--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.via-transparent{--tw-gradient-via:transparent;--tw-gradient-via-stops:var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}.to-transparent{--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.object-bottom{object-position:bottom}.p-2{padding:calc(var(--spacing) * 2)}.p-8{padding:calc(var(--spacing) * 8)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-5{padding-inline:calc(var(--spacing) * 5)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-10{padding-block:calc(var(--spacing) * 10)}.py-16{padding-block:calc(var(--spacing) * 16)}.py-20{padding-block:calc(var(--spacing) * 20)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pt-8{padding-top:calc(var(--spacing) * 8)}.pt-14{padding-top:calc(var(--spacing) * 14)}.pt-20{padding-top:calc(var(--spacing) * 20)}.pt-\[92px\]{padding-top:92px}.pb-16{padding-bottom:calc(var(--spacing) * 16)}.pl-3{padding-left:calc(var(--spacing) * 3)}.text-center{text-align:center}.text-left{text-align:left}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[8px\]{font-size:8px}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-extrabold{--tw-font-weight:var(--font-weight-extrabold);font-weight:var(--font-weight-extrabold)}.font-light{--tw-font-weight:var(--font-weight-light);font-weight:var(--font-weight-light)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-\[0\.2em\]{--tw-tracking:.2em;letter-spacing:.2em}.tracking-\[0\.22em\]{--tw-tracking:.22em;letter-spacing:.22em}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.text-\[\#b48608\]{color:#b48608}.text-gray-300{color:var(--color-gray-300)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-900{color:var(--color-gray-900)}.text-hmif-primary{color:var(--color-hmif-primary)}.text-hmif-secondary{color:var(--color-hmif-secondary)}.text-slate-200{color:var(--color-slate-200)}.text-slate-300{color:var(--color-slate-300)}.text-slate-600{color:var(--color-slate-600)}.text-slate-800{color:var(--color-slate-800)}.text-white{color:var(--color-white)}.text-white\/72{color:#ffffffb8}@supports (color:color-mix(in lab, red, red)){.text-white\/72{color:color-mix(in oklab, var(--color-white) 72%, transparent)}}.uppercase{text-transform:uppercase}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_10px_24px_rgba\(245\,200\,47\,0\.35\)\]{--tw-shadow:0 10px 24px var(--tw-shadow-color,#f5c82f59);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-\[0_24px_70px_rgba\(4\,17\,31\,0\.32\)\]{--tw-shadow:0 24px 70px var(--tw-shadow-color,#04111f52);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.blur-3xl{--tw-blur:blur(var(--blur-3xl));filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.grayscale{--tw-grayscale:grayscale(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-md{--tw-backdrop-blur:blur(var(--blur-md));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.duration-700{--tw-duration:.7s;transition-duration:.7s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}@media (hover:hover){.group-hover\:scale-105:is(:where(.group):hover *){--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x) var(--tw-scale-y)}.group-hover\:scale-\[1\.03\]:is(:where(.group):hover *){scale:1.03}.group-hover\:text-amber-300:is(:where(.group):hover *){color:var(--color-amber-300)}.group-hover\:text-hmif-primary:is(:where(.group):hover *){color:var(--color-hmif-primary)}.group-hover\:text-hmif-secondary:is(:where(.group):hover *){color:var(--color-hmif-secondary)}.group-hover\:opacity-45:is(:where(.group):hover *){opacity:.45}.hover\:-translate-y-0\.5:hover{--tw-translate-y:calc(var(--spacing) * -.5);translate:var(--tw-translate-x) var(--tw-translate-y)}.hover\:scale-110:hover{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x) var(--tw-scale-y)}.hover\:cursor-pointer:hover{cursor:pointer}.hover\:border-hmif-primary:hover{border-color:var(--color-hmif-primary)}.hover\:border-hmif-secondary:hover{border-color:var(--color-hmif-secondary)}.hover\:bg-hmif-secondary:hover{background-color:var(--color-hmif-secondary)}.hover\:bg-white\/10:hover{background-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/10:hover{background-color:color-mix(in oklab, var(--color-white) 10%, transparent)}}.hover\:bg-white\/15:hover{background-color:#ffffff26}@supports (color:color-mix(in lab, red, red)){.hover\:bg-white\/15:hover{background-color:color-mix(in oklab, var(--color-white) 15%, transparent)}}.hover\:text-hmif-primary:hover{color:var(--color-hmif-primary)}.hover\:text-hmif-secondary:hover{color:var(--color-hmif-secondary)}.hover\:shadow-lg:hover{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.hover\:grayscale-0:hover{--tw-grayscale:grayscale(0%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}}@media (min-width:40rem){.sm\:block{display:block}.sm\:h-16{height:calc(var(--spacing) * 16)}.sm\:flex-row{flex-direction:row}.sm\:gap-6{gap:calc(var(--spacing) * 6)}.sm\:border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.sm\:border-white\/30{border-color:#ffffff4d}@supports (color:color-mix(in lab, red, red)){.sm\:border-white\/30{border-color:color-mix(in oklab, var(--color-white) 30%, transparent)}}.sm\:px-8{padding-inline:calc(var(--spacing) * 8)}.sm\:py-12{padding-block:calc(var(--spacing) * 12)}.sm\:pt-0{padding-top:calc(var(--spacing) * 0)}.sm\:pl-5{padding-left:calc(var(--spacing) * 5)}.sm\:text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.sm\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.sm\:text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}}@media (min-width:48rem){.md\:mb-16{margin-bottom:calc(var(--spacing) * 16)}.md\:block{display:block}.md\:h-\[420px\]{height:420px}.md\:w-\[calc\(50\%_-_16px\)\]{width:calc(50% - 16px)}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-rows-2{grid-template-rows:repeat(2,minmax(0,1fr))}.md\:gap-6{gap:calc(var(--spacing) * 6)}.md\:border-x{border-inline-style:var(--tw-border-style);border-inline-width:1px}.md\:border-white\/10{border-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.md\:border-white\/10{border-color:color-mix(in oklab, var(--color-white) 10%, transparent)}}.md\:p-10{padding:calc(var(--spacing) * 10)}.md\:px-4{padding-inline:calc(var(--spacing) * 4)}.md\:text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.md\:text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.md\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.md\:text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}@media (min-width:64rem){.lg\:-right-12{right:calc(var(--spacing) * -12)}.lg\:-left-12{left:calc(var(--spacing) * -12)}.lg\:mt-0{margin-top:calc(var(--spacing) * 0)}.lg\:mt-12{margin-top:calc(var(--spacing) * 12)}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:h-11{height:calc(var(--spacing) * 11)}.lg\:h-16{height:calc(var(--spacing) * 16)}.lg\:h-20{height:calc(var(--spacing) * 20)}.lg\:h-\[500px\]{height:500px}.lg\:w-11{width:calc(var(--spacing) * 11)}.lg\:w-16{width:calc(var(--spacing) * 16)}.lg\:w-20{width:calc(var(--spacing) * 20)}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:gap-10{gap:calc(var(--spacing) * 10)}.lg\:gap-16{gap:calc(var(--spacing) * 16)}.lg\:rounded-3xl{border-radius:var(--radius-3xl)}.lg\:p-10{padding:calc(var(--spacing) * 10)}.lg\:px-6{padding-inline:calc(var(--spacing) * 6)}.lg\:px-12{padding-inline:calc(var(--spacing) * 12)}.lg\:px-16{padding-inline:calc(var(--spacing) * 16)}.lg\:py-4{padding-block:calc(var(--spacing) * 4)}.lg\:py-14{padding-block:calc(var(--spacing) * 14)}.lg\:py-20{padding-block:calc(var(--spacing) * 20)}.lg\:py-24{padding-block:calc(var(--spacing) * 24)}.lg\:pt-10{padding-top:calc(var(--spacing) * 10)}.lg\:pt-24{padding-top:calc(var(--spacing) * 24)}.lg\:pt-\[118px\]{padding-top:118px}.lg\:pr-6{padding-right:calc(var(--spacing) * 6)}.lg\:pl-4{padding-left:calc(var(--spacing) * 4)}.lg\:text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.lg\:text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.lg\:text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.lg\:text-6xl{font-size:var(--text-6xl);line-height:var(--tw-leading,var(--text-6xl--line-height))}.lg\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.lg\:text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.lg\:text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.lg\:text-\[11px\]{font-size:11px}.lg\:text-\[15px\]{font-size:15px}.lg\:text-\[17px\]{font-size:17px}.lg\:text-\[38px\]{font-size:38px}}@media (min-width:80rem){.xl\:px-24{padding-inline:calc(var(--spacing) * 24)}.xl\:text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.xl\:text-7xl{font-size:var(--text-7xl);line-height:var(--tw-leading,var(--text-7xl--line-height))}}@media (min-width:96rem){.\32 xl\:max-w-\[1440px\]{max-width:1440px}}}html{scroll-behavior:smooth}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0%}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0} \ No newline at end of file diff --git a/groups/LimaEm/assets/images/bg-kehidupan-mahasiswa.png b/groups/LimaEm/assets/images/bg-kehidupan-mahasiswa.png new file mode 100644 index 0000000..3788f6c Binary files /dev/null and b/groups/LimaEm/assets/images/bg-kehidupan-mahasiswa.png differ diff --git a/groups/LimaEm/assets/images/galeri-keseruan/Copy of DSC09492.jpg b/groups/LimaEm/assets/images/galeri-keseruan/Copy of DSC09492.jpg new file mode 100644 index 0000000..7d804ea Binary files /dev/null and b/groups/LimaEm/assets/images/galeri-keseruan/Copy of DSC09492.jpg differ diff --git a/groups/LimaEm/assets/images/galeri-keseruan/DSC00091.jpg b/groups/LimaEm/assets/images/galeri-keseruan/DSC00091.jpg new file mode 100644 index 0000000..51c9f98 Binary files /dev/null and b/groups/LimaEm/assets/images/galeri-keseruan/DSC00091.jpg differ diff --git a/groups/LimaEm/assets/images/galeri-keseruan/DSC00252.jpg b/groups/LimaEm/assets/images/galeri-keseruan/DSC00252.jpg new file mode 100644 index 0000000..50e773e Binary files /dev/null and b/groups/LimaEm/assets/images/galeri-keseruan/DSC00252.jpg differ diff --git a/groups/LimaEm/assets/images/galeri-keseruan/DSC00456.jpg b/groups/LimaEm/assets/images/galeri-keseruan/DSC00456.jpg new file mode 100644 index 0000000..68e41db Binary files /dev/null and b/groups/LimaEm/assets/images/galeri-keseruan/DSC00456.jpg differ diff --git a/groups/LimaEm/assets/images/galeri-keseruan/DSC00519.jpg b/groups/LimaEm/assets/images/galeri-keseruan/DSC00519.jpg new file mode 100644 index 0000000..815365e Binary files /dev/null and b/groups/LimaEm/assets/images/galeri-keseruan/DSC00519.jpg differ diff --git a/groups/LimaEm/assets/images/galeri-keseruan/DSC00636.jpg b/groups/LimaEm/assets/images/galeri-keseruan/DSC00636.jpg new file mode 100644 index 0000000..550e837 Binary files /dev/null and b/groups/LimaEm/assets/images/galeri-keseruan/DSC00636.jpg differ diff --git a/groups/LimaEm/assets/images/galeri-keseruan/DSC01002.jpg b/groups/LimaEm/assets/images/galeri-keseruan/DSC01002.jpg new file mode 100644 index 0000000..9c81393 Binary files /dev/null and b/groups/LimaEm/assets/images/galeri-keseruan/DSC01002.jpg differ diff --git a/groups/LimaEm/assets/images/galeri-keseruan/DSC03316.jpg b/groups/LimaEm/assets/images/galeri-keseruan/DSC03316.jpg new file mode 100644 index 0000000..fa0a8e6 Binary files /dev/null and b/groups/LimaEm/assets/images/galeri-keseruan/DSC03316.jpg differ diff --git a/groups/LimaEm/assets/images/galeri-keseruan/DSCF8922.jpg b/groups/LimaEm/assets/images/galeri-keseruan/DSCF8922.jpg new file mode 100644 index 0000000..ea580b7 Binary files /dev/null and b/groups/LimaEm/assets/images/galeri-keseruan/DSCF8922.jpg differ diff --git a/groups/LimaEm/assets/images/galeri-keseruan/IMG_0030.jpg b/groups/LimaEm/assets/images/galeri-keseruan/IMG_0030.jpg new file mode 100644 index 0000000..cafbd61 Binary files /dev/null and b/groups/LimaEm/assets/images/galeri-keseruan/IMG_0030.jpg differ diff --git a/groups/LimaEm/assets/images/galeri-keseruan/IMG_0204.jpg b/groups/LimaEm/assets/images/galeri-keseruan/IMG_0204.jpg new file mode 100644 index 0000000..79db209 Binary files /dev/null and b/groups/LimaEm/assets/images/galeri-keseruan/IMG_0204.jpg differ diff --git a/groups/LimaEm/assets/images/galeri-keseruan/IMG_5705.jpg b/groups/LimaEm/assets/images/galeri-keseruan/IMG_5705.jpg new file mode 100644 index 0000000..b6a043e Binary files /dev/null and b/groups/LimaEm/assets/images/galeri-keseruan/IMG_5705.jpg differ diff --git a/groups/LimaEm/assets/images/galeri-keseruan/skbi.jpg b/groups/LimaEm/assets/images/galeri-keseruan/skbi.jpg new file mode 100644 index 0000000..320c05d Binary files /dev/null and b/groups/LimaEm/assets/images/galeri-keseruan/skbi.jpg differ diff --git a/groups/LimaEm/assets/images/kegiatan-unggulan/17-agustus.jpeg b/groups/LimaEm/assets/images/kegiatan-unggulan/17-agustus.jpeg new file mode 100644 index 0000000..a31b545 Binary files /dev/null and b/groups/LimaEm/assets/images/kegiatan-unggulan/17-agustus.jpeg differ diff --git a/groups/LimaEm/assets/images/kegiatan-unggulan/SE.jpeg b/groups/LimaEm/assets/images/kegiatan-unggulan/SE.jpeg new file mode 100644 index 0000000..4d9c280 Binary files /dev/null and b/groups/LimaEm/assets/images/kegiatan-unggulan/SE.jpeg differ diff --git a/groups/LimaEm/assets/images/kegiatan-unggulan/SKBI.jpeg b/groups/LimaEm/assets/images/kegiatan-unggulan/SKBI.jpeg new file mode 100644 index 0000000..a1afca4 Binary files /dev/null and b/groups/LimaEm/assets/images/kegiatan-unggulan/SKBI.jpeg differ diff --git a/groups/LimaEm/assets/images/kegiatan-unggulan/bootcamp.jpeg b/groups/LimaEm/assets/images/kegiatan-unggulan/bootcamp.jpeg new file mode 100644 index 0000000..cd1b851 Binary files /dev/null and b/groups/LimaEm/assets/images/kegiatan-unggulan/bootcamp.jpeg differ diff --git a/groups/LimaEm/assets/images/kegiatan-unggulan/gemastik.jpg b/groups/LimaEm/assets/images/kegiatan-unggulan/gemastik.jpg new file mode 100644 index 0000000..80ade0b Binary files /dev/null and b/groups/LimaEm/assets/images/kegiatan-unggulan/gemastik.jpg differ diff --git a/groups/LimaEm/assets/images/kegiatan-unggulan/informers.jpg b/groups/LimaEm/assets/images/kegiatan-unggulan/informers.jpg new file mode 100644 index 0000000..6bd090b Binary files /dev/null and b/groups/LimaEm/assets/images/kegiatan-unggulan/informers.jpg differ diff --git a/groups/LimaEm/assets/images/kegiatan-unggulan/upc.jpg b/groups/LimaEm/assets/images/kegiatan-unggulan/upc.jpg new file mode 100644 index 0000000..c5770df Binary files /dev/null and b/groups/LimaEm/assets/images/kegiatan-unggulan/upc.jpg differ diff --git a/groups/LimaEm/assets/images/ruang-tumbuh/partner/ayanimegamall.jpeg b/groups/LimaEm/assets/images/ruang-tumbuh/partner/ayanimegamall.jpeg new file mode 100644 index 0000000..0ef30ff Binary files /dev/null and b/groups/LimaEm/assets/images/ruang-tumbuh/partner/ayanimegamall.jpeg differ diff --git a/groups/LimaEm/assets/images/ruang-tumbuh/partner/indofood.jpeg b/groups/LimaEm/assets/images/ruang-tumbuh/partner/indofood.jpeg new file mode 100644 index 0000000..f120dbf Binary files /dev/null and b/groups/LimaEm/assets/images/ruang-tumbuh/partner/indofood.jpeg differ diff --git a/groups/LimaEm/assets/images/ruang-tumbuh/partner/namaku.jpeg b/groups/LimaEm/assets/images/ruang-tumbuh/partner/namaku.jpeg new file mode 100644 index 0000000..1dfee43 Binary files /dev/null and b/groups/LimaEm/assets/images/ruang-tumbuh/partner/namaku.jpeg differ diff --git a/groups/LimaEm/assets/images/ruang-tumbuh/partner/playhera.jpeg b/groups/LimaEm/assets/images/ruang-tumbuh/partner/playhera.jpeg new file mode 100644 index 0000000..b8c443d Binary files /dev/null and b/groups/LimaEm/assets/images/ruang-tumbuh/partner/playhera.jpeg differ diff --git a/groups/LimaEm/assets/images/ruang-tumbuh/partner/pln.jpeg b/groups/LimaEm/assets/images/ruang-tumbuh/partner/pln.jpeg new file mode 100644 index 0000000..3370bbd Binary files /dev/null and b/groups/LimaEm/assets/images/ruang-tumbuh/partner/pln.jpeg differ diff --git a/groups/LimaEm/assets/images/ruang-tumbuh/partner/rtech.jpeg b/groups/LimaEm/assets/images/ruang-tumbuh/partner/rtech.jpeg new file mode 100644 index 0000000..7d14333 Binary files /dev/null and b/groups/LimaEm/assets/images/ruang-tumbuh/partner/rtech.jpeg differ diff --git a/groups/LimaEm/assets/images/ruang-tumbuh/partner/rumangsa.jpeg b/groups/LimaEm/assets/images/ruang-tumbuh/partner/rumangsa.jpeg new file mode 100644 index 0000000..9e528a5 Binary files /dev/null and b/groups/LimaEm/assets/images/ruang-tumbuh/partner/rumangsa.jpeg differ diff --git a/groups/LimaEm/assets/images/ruang-tumbuh/partner/sobatkonveksi.jpeg b/groups/LimaEm/assets/images/ruang-tumbuh/partner/sobatkonveksi.jpeg new file mode 100644 index 0000000..b044362 Binary files /dev/null and b/groups/LimaEm/assets/images/ruang-tumbuh/partner/sobatkonveksi.jpeg differ diff --git a/groups/LimaEm/assets/images/ruang-tumbuh/ruangtumbuh_foto.jpeg b/groups/LimaEm/assets/images/ruang-tumbuh/ruangtumbuh_foto.jpeg new file mode 100644 index 0000000..45ec33f Binary files /dev/null and b/groups/LimaEm/assets/images/ruang-tumbuh/ruangtumbuh_foto.jpeg differ diff --git a/groups/LimaEm/index.html b/groups/LimaEm/index.html index 31586eb..1334aac 100644 --- a/groups/LimaEm/index.html +++ b/groups/LimaEm/index.html @@ -1,15 +1,20 @@  + Group 07 – LIMA EM | Informatika UNTAN + + - + - + @@ -1139,20 +1145,1003 @@ -
    -
    -
    - Tugas Halaman Statis -

    Kehidupan Mahasiswa & Himpunan (HMIF)

    -

    Kelompok 07 — LIMA EM  ·  Informatika UNTAN 2026

    -
    -
    - -

    Tulis konten halaman kelompok di sini.

    -

    Subjudul

    -

    Gunakan paragraf, list, tabel, gambar, dan elemen konten lainnya.

    - -
    +
    + +
    + + +
    + + Foto Kegiatan Mahasiswa + +
    +
    + +
    + +
    + +
    + +
    + COMMUNITY & LEADERSHIP +
    + +

    + Kehidupan Mahasiswa & Himpunan (HMIF) +

    + +

    + Membangun ekosistem kolaboratif di mana teknologi bertemu dengan + kreativitas, membentuk calon pemimpin industri masa depan. +

    + + + +
    + + + +
    +
    +
    + + +
    +
    +
    + + +
    + + +

    + Ruang Tumbuh Bagi
    Mahasiswa Informatika +

    + + +
    +

    + Himpunan Mahasiswa Informatika (HMIF) Universitas Tanjungpura bukan sekadar + organisasi, melainkan rumah bagi para pemimpin teknologi. Kami percaya bahwa + pendidikan formal adalah fondasi, namun komunitas adalah akselerator. +

    +

    + Melalui berbagai inisiatif, kami menjembatani kesenjangan antara kurikulum + akademik dan kebutuhan industri, sambil tetap menjaga semangat kekeluargaan + dan integritas ilmiah. +

    +
    + + +
    +
    +

    + 518

    +

    + Mahasiswa Aktif +

    +
    +
    +

    + 8

    +

    + MITRA +

    +
    +
    +
    + + +
    + + +
    + + +
    + Ruang Tumbuh HMIF Universitas Tanjungpura + +
    +
    +
    + + +
    + +

    + Inklusivitas &
    Kolaborasi +

    +
    +
    + +
    +
    +
    + + +
    +
    +

    + Partner dan Kolaborator +

    + +
    + + + Namaku + + + + + Sobat Konveksi + + + +
    + Ayani Megamall +
    + + +
    + Indofood +
    + + +
    + Playhera +
    + + +
    + PLN +
    + + +
    + RTech +
    + + +
    + Rumangsa +
    +
    +
    +
    + + + +
    +
    + +
    +

    + Divisi Kepengurusan HMIF +

    +

    + Struktur organisasi yang dirancang untuk efisiensi dan pengembangan kapasitas anggota di + berbagai + bidang strategis. +

    +
    + + +
    + +
    + + Bidang 1 + +

    + Pengembangan Sumber Daya Mahasiswa dan Kaderisasi +

    +

    + Divisi ini menyelenggarakan kaderisasi terstruktur, mentoring berkala, dan pelatihan + kepemimpinan serta soft-skill. Program kerja mencakup onboarding anggota baru, + workshop kepemimpinan, proyek kolaboratif, dan kegiatan pengabdian yang melatih + tanggung jawab sosial. Fokusnya adalah menyiapkan kader yang kompeten dan + menjaga regenerasi organisasi. +

    +
    + + +
    + + Bidang 2 + +

    + Media Komunikasi dan Konten Digital +

    +

    + Divisi ini mengelola strategi komunikasi dan produksi konten HMIF, termasuk + perencanaan editorial, manajemen media sosial, serta dokumentasi acara. Program + kerjanya meliputi pembuatan materi promosi, publikasi kegiatan, dan penguatan + identitas digital agar informasi organisasi tersampaikan konsisten dan menarik. +

    +
    + + +
    + + Bidang 3 + +

    + Inovasi dan Kompetisi Teknologi +

    +

    + Divisi ini memfasilitasi persiapan lomba dan pengembangan proyek teknis melalui + coaching clinic, bootcamp berbasis proyek, serta study club untuk Competitive + Programming, Software Development, dan Data/ML. Kegiatan termasuk seleksi internal, + bimbingan kompetitif, dan inisiatif digitalisasi seperti pengembangan website + dan dashboard untuk mendukung ekosistem inovasi HMIF. +

    +
    + + +
    + + Bidang 4 + +

    + Pengembangan Organisasi +

    +

    + Divisi ini memperkuat tata kelola dan kapabilitas internal melalui pelatihan + pengurus, penyusunan SOP sederhana, dan evaluasi proses kerja. Program kerjanya + mencakup pengembangan budaya organisasi, peningkatan efektivitas koordinasi, dan + kegiatan peningkatan profesionalisme sehingga operasi HMIF menjadi lebih terstruktur + dan efisien. +

    +
    + + +
    + + Bidang 5 + +

    + Sosial Masyarakat +

    +

    + Divisi ini merancang dan melaksanakan program pengabdian serta aksi sosial yang + berdampak, termasuk pendampingan komunitas dan bantuan kemanusiaan. Kegiatan + meliputi identifikasi kebutuhan lapangan, pelaksanaan terstruktur, dan evaluasi + dampak untuk memastikan keberlanjutan dan manfaat nyata bagi masyarakat. +

    +
    + + +
    + + Bidang 6 + +

    + Kewirausahaan dan Kemitraan +

    +

    + Divisi ini mengembangkan unit usaha organisasi, merancang skema pendanaan kreatif, + dan menjalin kemitraan strategis untuk mendukung keberlanjutan program HMIF. Unit + kerjanya meliputi riset peluang usaha, penyusunan proposal kemitraan, dan + pengelolaan sponsor untuk meningkatkan kemandirian finansial dan akses jaringan + profesional. +

    +
    +
    +
    +
    + + +
    +
    + +
    +

    + Kegiatan Unggulan +

    +

    + Kegiatan tahunan yang menjadi ikon Informatika UNTAN. +

    +
    + + +
    + + + + +
    + +
    + + +
    +
    + Silaturahmi Keluarga Besar +
    +
    +
    + 27 + Feb +
    +
    +

    + Silaturahmi Keluarga Besar Informatika

    +

    Kegiatan buka + bersama + seluruh keluarga Informatika Untan yang selalu diadakan setiap tahunnya. +

    +
    +
    +
    + + +
    +
    + Bootcamp HMIF +
    +
    +
    + 1 + Jul +
    +
    +

    + GEMASTIK

    +

    Ajang + kompetisi IT bergengsi tingkat nasional tahunan dari kementerian. + Wadah bagi mahasiswa Informatika UNTAN untuk unjuk + gigi di bidang programming, cyber security, data + mining, hingga UI/UX. +

    +
    +
    +
    + + +
    +
    + Perayaan 17 Agustus +
    +
    +
    + 17 + Agu +
    +
    +

    + Perayaan 17 Agustus

    +

    Momen perayaan + Hari Kemerdekaan Indonesia yang diisi dengan berbagai perlombaan + menarik. + Ajang seru-seruan bersama untuk mempererat rasa nasionalisme dan + kekeluargaan mahasiswa Informatika.

    +
    +
    +
    + + +
    +
    + Bootcamp HMIF +
    +
    +
    + 28 + Agu +
    +
    +

    + Bootcamp HMIF

    +

    Program + intensif + pengembangan skill teknis mahasiswa Informatika bersama mentor + profesional dari + industri.

    +
    +
    +
    + + +
    +
    + UPC 2025 +
    +
    +
    + 20 + Okt +
    +
    +

    + UPC

    +

    Kompetisi + Pemograman untuk + mengasah skill coding mahasiswa Informatika.

    +
    +
    +
    + + +
    +
    + Study Excursion +
    +
    +
    + 20 + Okt +
    +
    +

    + Study Excursion

    +

    Study Excursion + menjadi pengalaman + berharga bagi mahasiswa semester 5 untuk belajar di luar kampus, + memperluas wawasan, + mengenal suasana baru, serta menciptakan kenangan berkesan bersama + selama perjalanan.

    +
    +
    +
    + + +
    +
    + Ultah Informatika +
    +
    +
    + 25 + Okt +
    +
    +

    + INFORMERS

    +

    Perayaan ulang + tahun + Informatika UNTAN, momen kebersamaan dan kebanggaan seluruh keluarga + besar + Informatika.

    +
    +
    +
    + +
    +
    + + + +
    + + +
    + + + + + + +
    +
    +
    + + +
    +
    + +
    +

    + STUDY CLUB +

    +
    +
    + + +
    + +
    +
    + + + + +
    +
    +

    + ARISE +

    +

    + Belajar logika dan algoritma bersama, di mana kalian bisa berkembang dan membuka + peluang + mengikuti kompetisi pemrograman di berbagai level. +

    +
    +
    + + +
    +
    + + + + +
    +
    +

    + MINERVA +

    +

    + Gali potensi tersembunyi dari tumpukan data! Di sini kita akan bereksplorasi dengan + algoritma Machine Learning, membedah teknik klasifikasi, hingga melatih + model + prediktif untuk menghasilkan insight yang bermakna. +

    +
    +
    + +
    +
    + + + + +
    +
    +

    + Software Development (Soon) +

    +

    + Wujudkan idemu jadi produk digital yang nyata! Kita akan ngoding bareng dari + merancang + frontend yang interaktif, membangun backend yang tangguh, serta + mengintegrasikan berbagai API untuk menciptakan aplikasi web masa kini. +

    +
    +
    +
    +
    +
    + + +
    +
    + + +
    +

    + Galeri Keseruan +

    +
    + + +
    + + + + + +
    + + +
    + + +
    +
    + + + UPC V + + + + + + + +
    +
    + + + + + + + +
    +
    + + + + +
    + + +
    + + + +
    + +
    +
    + + +
    +
    +
    + +
    +
    +
    +
    + +
    +
    +

    + Ada yang Ingin Ditanyakan Seputar HMIF? +

    + +

    + Bergabunglah dengan HMIF untuk memperluas jaringan, mengasah skill, dan + menciptakan dampak nyata. +

    + + +
    + +
    +
    +
    +

    + Sekretariat +

    +

    + Gedung Fakultas Teknik Lt. 2
    + Jl. Prof. Dr. H. Hadari Nawawi +

    +
    + +
    +

    + Jam Operasional +

    +

    + Senin - Jumat
    + 08:00 - 17:00 WIB +

    +
    + +
    +

    + Media Sosial +

    +

    + @hmif_ftuntan
    +

    +
    +
    +
    +
    +
    +
    +
    +
    @@ -1215,11 +2204,249 @@
    - Footer Illustration + Footer Illustration
    + + - + - + + \ No newline at end of file diff --git a/groups/LimaEm/style.css b/groups/LimaEm/style.css index 2bc5542..6a19969 100644 --- a/groups/LimaEm/style.css +++ b/groups/LimaEm/style.css @@ -1,4 +1,4 @@ -:root { +:root { --brand-navy: #003150; --brand-yellow: #feb401; --text-main: #1e293b; @@ -22,7 +22,27 @@ body { font-family: "Roboto", Arial, sans-serif; color: var(--text-main); backgr .hero h1 { margin: 0; font-size: clamp(1.6rem, 3.2vw, 2.8rem); line-height: 1.2; } .layout { display: grid; grid-template-columns: 1fr; gap: 2rem; padding: 2rem 0 4rem; } -@media (min-width: 1024px) { .layout { grid-template-columns: minmax(0, 3fr) minmax(260px, 1fr); } } +@media (min-width: 1024px) { + .layout { grid-template-columns: minmax(0, 3fr) minmax(260px, 1fr); } + /* Fix tinggi grid Galeri Keseruan (Desktop) */ + .galeri-grid { + height: 500px !important; + } +} + +/* ===== Custom Layout Fixes (Menggantikan arbitrary Tailwind) ===== */ +@media (min-width: 768px) { + + /* Fix ukuran 2 card per baris untuk Kegiatan Unggulan */ + .md-card-half { + width: calc(50% - 16px) !important; + } + + /* Fix tinggi grid Galeri Keseruan (Tablet) */ + .galeri-grid { + height: 420px !important; + } +} .meta { font-size: .78rem; text-transform: uppercase; color: #475569; display: flex; flex-wrap: wrap; gap: .75rem 1rem; margin-bottom: 1rem; } .cover { background: var(--bg-soft); border: 1px solid var(--line); margin-bottom: 1.5rem; } @@ -46,3 +66,29 @@ body { font-family: "Roboto", Arial, sans-serif; color: var(--text-main); backgr .footer-logo { height: 28px; width: auto; } .footer-ornament { width: 100%; display: block; opacity: .9; } +/* ===== Slider Dot Indicators ===== */ +.slider-dot, +.galeri-dot { + display: inline-block; + height: 10px; + width: 10px; + min-width: 10px; + border-radius: 9999px; + background-color: #d1d5db; /* gray-300 fallback */ + cursor: pointer; + border: none; + padding: 0; + transition: width 0.3s ease, background-color 0.3s ease; + flex-shrink: 0; +} + +.slider-dot.bg-hmif-primary, +.galeri-dot.bg-hmif-primary { + background-color: #0b2f4c; /* --color-hmif-primary dari output.css */ + width: 24px; +} + +/* Fix: title divisi berubah kuning saat hover */ +#divisi .group:hover h3 { + color: #f5c82f !important; +} diff --git a/groups/RODA/index.html b/groups/RODA/index.html index b36d513..dfcf655 100644 --- a/groups/RODA/index.html +++ b/groups/RODA/index.html @@ -4,7 +4,7 @@ - Sorotan dan Prestasi Karya Mahasiswa | Informatika UNTAN + Riset & Kelompok Bidang Keahlian | Informatika UNTAN