/* ========================= BASE (Mobile First) ========================= */ /* Global box-sizing and basic reset */ *, *::before, *::after { box-sizing: border-box; } .container { width: 100%; max-width: 100%; padding: 0 1rem; margin-inline: auto; } .hero { padding: 2.5rem 0 1.8rem; } .hero-inner { display: grid; grid-template-columns: 1fr; gap: 1.6rem; } .hero-flex { grid-template-columns: 1fr; text-align: center; } .hero-visual { order: -1; } .hero-actions { justify-content: center; } .hero-meta { grid-template-columns: 1fr; } .hero-chips { justify-content: center; } .hero-text h1 { font-size: clamp(1.7rem, 5vw, 2.4rem); } .hero-text p { font-size: clamp(0.95rem, 2.5vw, 1.05rem); } .hero-cta { display: flex; flex-direction: column; gap: 0.8rem; } .btn, .btn-outline { display: inline-flex; align-items: center; justify-content: center; width: 100%; gap: 0.5rem; padding: 0.6rem 1rem; text-align: center; cursor: pointer; } .items-grid { display: grid; grid-template-columns: 1fr; gap: 1rem; align-items: start; grid-auto-rows: auto; } .admin-layout, .user-layout { display: grid; grid-template-columns: 1fr; } .admin-sidebar, .user-sidebar { display: none; } .admin-main, .user-main { padding: 1.5rem 1rem; } .footer-inner { display: grid; grid-template-columns: 1fr; gap: 1.5rem; } .category-tabs { overflow-x: auto; -webkit-overflow-scrolling: touch; padding-bottom: 0.35rem; } .category-tab { white-space: nowrap; } .navbar-menu { overflow-x: auto; justify-content: flex-start; gap: 1.2rem; } .navbar-menu a { white-space: nowrap; } /* ========================= Max 900px (Mobile/Tablet) ========================= */ @media (max-width: 900px) { .container { padding-left: 0.6rem; padding-right: 0; } .landing-catalog .catalog-track-wrapper { overflow-x: auto; overflow-y: hidden; } .landing-catalog .catalog-track { flex-wrap: nowrap; gap: 0.75rem; padding: 0 0.6rem 0.6rem 0; scroll-snap-type: x mandatory; transform: none !important; } .landing-catalog .catalog-card { flex: 0 0 60%; max-width: 60%; scroll-snap-align: start; } .catalog-page .catalog-track { flex-wrap: wrap; transform: none !important; } .catalog-page .catalog-card { flex: 1 1 100%; max-width: 100%; flex-direction: row; align-items: stretch; } .catalog-page .catalog-image { width: 38%; min-height: 140px; } .catalog-page .catalog-body { width: 62%; } } /* ========================= Max 640px (Small phones) ========================= */ @media (max-width: 640px) { html, body { overflow-x: hidden; } .hero { padding: 2.2rem 0 1.5rem; } .container { padding-left: 0; padding-right: 0; max-width: 100%; } .section .container { padding-left: 0.8rem; padding-right: 0.8rem; } .landing-catalog .catalog-card { flex-basis: 70%; max-width: 70%; } main, .hero-top, .section { padding-left: 0; padding-right: 0; } .hero-copy h1 { font-size: clamp(1.8rem, 7vw, 2.1rem); } .hero-subtitle { margin-bottom: 1rem; } .hero-visual img { max-width: 320px; } .hero-bubble { width: 280px; height: 280px; } .hero-actions { flex-direction: row; justify-content: center; gap: 0.5rem; } .hero-actions .btn, .hero-actions .btn-outline { width: auto; min-width: 120px; padding: 0.45rem 0.8rem; font-size: 0.85rem; } .hero-meta { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.5rem; } .meta-card { padding: 0.55rem 0.7rem; border-radius: 12px; } .meta-card strong { font-size: 1rem; } .meta-card span { font-size: 0.85rem; } .meta-card.muted { grid-column: 1 / -1; justify-content: center; } .hero-chips { justify-content: center; gap: 0.35rem; } .chip { padding: 0.25rem 0.6rem; font-size: 0.8rem; } .about-grid { grid-template-columns: 1fr; gap: 1rem; } .about-actions { flex-direction: row; align-items: center; justify-content: center; gap: 0.4rem; } .about-actions .btn, .about-actions .btn-outline { width: auto; min-width: 0; padding: 0.35rem 0.7rem; font-size: 0.82rem; } .highlight-card { padding: 1rem; } .stats-row { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.45rem; } .stat { padding: 0.6rem 0.7rem; border-radius: 12px; } .stat strong { font-size: 0.95rem; } .stat span { font-size: 0.8rem; } .about-meta { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.5rem; } .meta-chip { padding: 0.35rem 0.6rem; font-size: 0.8rem; border-radius: 12px; background: #f4f7ff; } .meta-chip .dot { width: 8px; height: 8px; } .section-title { margin-top: 0; margin-bottom: 0.5rem; } .section-subtitle { margin-bottom: 0.9rem; } .category-tabs { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.35rem; margin-top: 0.6rem; } .category-tab { text-align: center; padding: 0.32rem 0.5rem; font-size: 0.8rem; border-radius: 9px; } .catalog-image { padding: 0.6rem; min-height: 0; aspect-ratio: 4 / 3; } .catalog-image img { width: 100%; height: 100%; max-height: none; object-fit: contain; } .category-tabs { gap: 0.5rem; } } /* ========================= ≥ 480px (Small phones) ========================= */ @media (min-width: 480px) { .items-grid { grid-template-columns: repeat(2, 1fr); } .hero-cta { flex-direction: row; flex-wrap: wrap; } .btn, .btn-outline { display: inline-flex; align-items: center; width: auto; min-width: 160px; } } /* ========================= ≥ 640px (Large phones) ========================= */ @media (min-width: 640px) { .navbar-menu { justify-content: center; overflow-x: visible; } .hero { padding: 3.2rem 0 2.4rem; } .carousel-frame { border-radius: 24px; } } /* ========================= ≥ 768px (Tablet) ========================= */ @media (min-width: 768px) { .hero-inner { grid-template-columns: 1.1fr 0.9fr; align-items: center; gap: 2.4rem; } .items-grid { grid-template-columns: repeat(3, 1fr); } .auth-page { display: grid; grid-template-columns: 1fr 1fr; } .auth-left { display: block; } .footer-inner { grid-template-columns: repeat(3, 1fr); } } /* ========================= ≥ 1024px (Laptop) ========================= */ @media (min-width: 1024px) { .container { max-width: 1100px; margin: auto; } .hero-flex { grid-template-columns: 1.05fr 0.95fr; text-align: left; } .hero-visual { order: 0; } .hero-actions { justify-content: flex-start; } .hero-meta { grid-template-columns: repeat(3, minmax(0, 1fr)); } .hero-chips { justify-content: flex-start; } .admin-layout, .user-layout { grid-template-columns: 240px 1fr; } .admin-sidebar, .user-sidebar { display: block; } .items-grid { grid-template-columns: repeat(4, 1fr); } } /* ========================= ≥ 1280px (Desktop besar) ========================= */ @media (min-width: 1280px) { .container { max-width: 1200px; } .hero-text h1 { font-size: 2.6rem; } .hero-text p { font-size: 1.1rem; } }