/* ===================================================== 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); } /* --- Sembunyikan scrollbar carousel tapi tetap scrollable --- */ .acaab-hide-scrollbar { -ms-overflow-style: none; scrollbar-width: none; } .acaab-hide-scrollbar::-webkit-scrollbar { display: none; } /* --- 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; } } /* --- Snap scroll carousel --- */ .acaab-carousel-track { scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch; } /* --- 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; } /* --- 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; } /* --- 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; } } /* --- 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; } /* --- 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) { .acaab-fade-in, .acaab-skeleton, .acaab-card-img, .acaab-ach-card, .acaab-proj-card-wrap { animation: none !important; transition: none !important; } } /* ===================================================== RESPONSIVE FIXES — Mobile & Desktop ===================================================== */ /* ── Achievement Grid ── */ #acaab-ach-grid { display: grid !important; grid-template-columns: 1fr !important; gap: 1rem !important; } @media (min-width: 480px) { #acaab-ach-grid { grid-template-columns: repeat(2, 1fr) !important; } } @media (min-width: 900px) { #acaab-ach-grid { grid-template-columns: repeat(3, 1fr) !important; gap: 1.5rem !important; } } /* ── Project carousel card: ukuran responsif ── */ @media (max-width: 479px) { .acaab-proj-card { width: 85vw !important; } } @media (min-width: 480px) and (max-width: 767px) { .acaab-proj-card { width: 72vw !important; } } @media (min-width: 768px) and (max-width: 1023px) { .acaab-proj-card { width: 42vw !important; } } @media (min-width: 1024px) { .acaab-proj-card { width: 28vw !important; max-width: 340px; } } /* ── Hero: sembunyikan gambar di mobile kecil ── */ @media (max-width: 639px) { #acaab-hero-img-wrap { display: none !important; } } @media (min-width: 640px) and (max-width: 1023px) { #acaab-hero-img-wrap img { max-width: 220px !important; } #acaab-hero-img-wrap { display: flex !important; } .lg-hero-grid { grid-template-columns: 1fr 1fr !important; } } /* ── Stats: angka lebih kecil di mobile kecil ── */ @media (max-width: 479px) { #stat-total-ach, #stat-intl, #stat-national, #stat-regional, #stat-total-proj { font-size: 1.65rem !important; } } /* ── Modal: bottom-sheet di mobile ── */ @media (max-width: 639px) { .acaab-modal-backdrop { padding: 0 !important; align-items: flex-end !important; } .acaab-modal-backdrop > div { max-width: 100% !important; width: 100% !important; max-height: 88vh !important; border-radius: 1rem 1rem 0 0 !important; } } /* ── Project section header: buttons di mobile ── */ @media (max-width: 479px) { #acaab-proj-prev, #acaab-proj-next { width: 2rem !important; height: 2rem !important; } } /* ── Filter dropdowns: stack secara vertikal di HP kecil ── */ @media (max-width: 399px) { #acaab-ach-filters > div:last-child, #acaab-proj-filters > div:last-child { flex-direction: column; } #acaab-ach-filters select, #acaab-proj-filters select { min-width: 0 !important; width: 100% !important; } } /* ── Pagination buttons: lebih kecil di mobile ── */ @media (max-width: 479px) { #acaab-ach-more, #acaab-ach-less, #acaab-proj-more { width: 100% !important; box-sizing: border-box !important; } } /* ── Hero padding responsif ── */ @media (max-width: 639px) { #acaab-hero { padding-top: 2rem !important; } #acaab-hero > div > div { padding-bottom: 1.5rem !important; } } /* ── Modal Achievement: lebih kecil di desktop sesuai mockup ── */ @media (min-width: 640px) { .acaab-modal-achievement { max-width: 440px !important; } } /* Tetap centered card di mobile (bukan bottom sheet) untuk prestasi */ @media (max-width: 639px) { .acaab-modal-backdrop:has(.acaab-modal-achievement) { padding: 1rem !important; align-items: center !important; } .acaab-modal-achievement { max-width: 92% !important; max-height: 90vh !important; border-radius: 0.75rem !important; } }