Files
student-web-if-development-kit/groups/ACAAB/style.css
T
2026-06-04 20:24:16 +07:00

351 lines
9.2 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* =====================================================
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;
}
}