* { margin: 0; padding: 0; box-sizing: border-box; } /* Latar belakang dan font */ body { font-family: "Inter", sans-serif; color: #3b221e; line-height: 1.6; overflow-x: hidden; background: linear-gradient(135deg, #ffffff 0%, #fef8f7 100%); background-image: linear-gradient( rgba(221, 36, 15, 0.137) 1px, transparent 1px ), linear-gradient(90deg, rgba(211, 54, 36, 0.185) 1px, transparent 1px); background-size: 50px 50px; position: relative; } body::before { content: ""; position: fixed; inset: -10vh -10vw auto -10vw; height: 60vh; z-index: -2; pointer-events: none; filter: blur(22px); animation: glow 16s ease-in-out infinite alternate; } @keyframes glow { from { transform: translateY(0); } to { transform: translateY(-2vh) scale(1.03); } } /* Kontainer partikel */ .particles-container { position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: -1; } /* Shape bola abstrak */ .shape { position: absolute; pointer-events: none; z-index: -1; border-radius: 50%; width: var(--size, 100px); height: var(--size, 100px); background: var(--color, rgba(100, 180, 255, 0.15)); filter: blur(var(--blur, 20px)); top: var(--top, auto); left: var(--left, auto); right: var(--right, auto); bottom: var(--bottom, auto); opacity: 0.7; will-change: transform; } /* Section relative */ .hero, .features, .database-section, .screenshots-section, #download, #about { position: relative; } /* Penempatan shape per section */ .hero .shape { top: 20%; right: 10%; width: 200px; height: 200px; background: #ff9a9e; } .features .shape { top: 30%; right: 5%; width: 200px; height: 200px; background: #feca57; } .database-section .shape { top: 48%; left: 8%; width: 200px; height: 200px; background: #48dbfb; } #about::before { content: ""; position: absolute; top: -40%; left: -40%; width: 150%; height: 150%; background: radial-gradient( circle, rgba(231, 76, 60, 0.15) 0%, transparent 70% ); z-index: -1; pointer-events: none; opacity: 0.4; filter: blur(40px); } /* Header dan navigasi */ header { position: fixed; top: 0; left: 0; width: 100%; background: rgba(255, 255, 255, 0.08); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); border-bottom: 1px solid rgba(255, 255, 255, 0.15); box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1); padding: 1rem 5%; z-index: 1000; transition: all 0.3s ease; } .nav-container { max-width: 1200px; margin: 0 auto; display: flex; justify-content: space-between; align-items: center; height: 40px; } .logo { display: flex; align-items: center; gap: 12px; text-decoration: none; } .logo img { height: 50px; transition: transform 0.3s ease; } .logo:hover img { transform: scale(1.05); } .logo-text { font-family: "Montserrat", sans-serif; font-size: 1.8rem; font-weight: 700; color: #e74c3c; letter-spacing: -0.5px; } .nav-menu { display: flex; list-style: none; gap: 2.5rem; } .nav-link { text-decoration: none; color: #1e293b; font-weight: 500; font-size: 1rem; position: relative; transition: color 0.3s ease; } .nav-link::after { content: ""; position: absolute; bottom: -6px; left: 0; width: 0; height: 2px; background-color: #e74c3c; transition: width 0.3s ease; } .nav-link:hover { color: #e74c3c; } .nav-link:hover::after { width: 100%; } .menu-toggle { display: none; flex-direction: column; cursor: pointer; } .menu-toggle span { width: 28px; height: 3px; background-color: #1e293b; margin: 4px 0; border-radius: 2px; transition: 0.3s; } /* Hero section */ .hero { padding: 140px 5% 100px; display: flex; align-items: center; justify-content: space-between; max-width: 1400px; margin: 0 auto; gap: 4rem; position: relative; } .hero-content { flex: 1; max-width: 600px; } .hero-content h1 { font-family: "Montserrat", sans-serif; font-size: 3.5rem; font-weight: 700; color: #1e293b; margin-bottom: 1.2rem; } .hero-content p { font-size: 1.2rem; color: #475569; margin-bottom: 2rem; } .cta-buttons { display: flex; gap: 1rem; } .cta-button { padding: 14px 32px; font-size: 1rem; font-weight: 600; border: none; border-radius: 8px; cursor: pointer; transition: all 0.3s ease; } .cta-button.primary { background-color: #e74c3c; color: white; } .cta-button.secondary { background-color: white; color: #e74c3c; border: 2px solid #e74c3c; } .cta-button:hover { transform: translateY(-2px); box-shadow: 0 6px 15px rgba(231, 76, 60, 0.2); } .hero-image { flex: 1.3; display: flex; justify-content: center; perspective: 1200px; } .hero-image img { max-width: 100%; height: auto; transition: transform 0.6s cubic-bezier(0.4, 0, 0.2, 1); transform-style: preserve-3d; } .hero-image img:hover { transform: scale(1.06) rotateY(4deg) translateY(-6px); } /* Section title */ .section-title { text-align: center; font-family: "Montserrat", sans-serif; font-size: 2.2rem; font-weight: 600; color: #1e293b; margin: 4rem 0 2rem; } /* Features grid */ .features-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 2rem; max-width: 1200px; margin: 0 auto; padding: 0 20px 4rem; } .feature-card { background: white; border-radius: 12px; padding: 1.8rem; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05); text-align: center; transition: transform 0.3s ease, box-shadow 0.3s ease; border: 1px solid #e2e8f0; } .feature-card:hover { transform: translateY(-6px); box-shadow: 0 10px 25px rgba(0, 0, 0, 0.08); } .feature-icon { width: 64px; height: 64px; margin: 0 auto 1rem; display: flex; align-items: center; justify-content: center; } .feature-icon img { max-width: 100%; max-height: 100%; object-fit: contain; } .feature-card h3 { font-size: 1.3rem; color: #1e293b; margin-bottom: 0.8rem; } .feature-card p { font-size: 0.95rem; color: #64748b; line-height: 1.6; } /* Database section */ .database-section { padding: 2rem 0 4rem; } .database-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 2rem; max-width: 1200px; margin: 0 auto; padding: 0 20px; } .db-card { background: white; border-radius: 12px; padding: 1.5rem; text-align: center; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05); border: 1px solid #e2e8f0; transition: transform 0.3s ease; } .db-card:hover { transform: translateY(-4px); } .db-icon { height: 60px; display: flex; align-items: center; justify-content: center; margin-bottom: 0.8rem; } .db-icon img { max-height: 100%; max-width: 100%; object-fit: contain; } .db-card h4 { font-size: 1.1rem; color: #1e293b; } /* Screenshots section */ .screenshots-section { padding: 3rem 0; } .screenshots-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 2.5rem; max-width: 1200px; margin: 0 auto; padding: 0 20px; } .screenshot-card { text-align: center; background: white; border-radius: 12px; overflow: hidden; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05); padding: 1.5rem; } .screenshot-card img { width: 100%; height: 180px; object-fit: cover; border-radius: 8px; margin-bottom: 1rem; cursor: pointer; } .screenshot-card h3 { font-size: 1.3rem; color: #1e293b; margin-bottom: 0.8rem; font-weight: 600; } .screenshot-card p { font-size: 0.95rem; color: #64748b; line-height: 1.6; } /* Lightbox */ .lightbox { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.8); display: flex; justify-content: center; align-items: center; visibility: hidden; opacity: 0; transition: opacity 0.3s ease; z-index: 999; } .lightbox.active { visibility: visible; opacity: 1; } .lightbox img { max-width: 90%; max-height: 90%; border-radius: 10px; } /* Download section */ #download { padding: 4rem 0; text-align: center; } #download h2 { font-family: "Montserrat", sans-serif; font-size: 2.2rem; font-weight: 600; color: #1e293b; margin-bottom: 3rem; } .platforms { display: flex; justify-content: center; gap: 2rem; margin-top: 2rem; flex-wrap: wrap; } .platform { display: flex; flex-direction: column; align-items: center; gap: 1.5rem; padding: 2rem; border-radius: 12px; background: white; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05); border: 1px solid #e2e8f0; transition: transform 0.3s ease; max-width: 220px; } .platform:hover { transform: translateY(-6px); box-shadow: 0 10px 25px rgba(0, 0, 0, 0.08); } .platform img { width: 48px; height: 48px; } .platform h3 { font-size: 1.3rem; color: #1e293b; margin: 0; } .platform a { text-decoration: none; } .platform-button { padding: 12px 24px; font-size: 1rem; font-weight: 600; border: none; border-radius: 8px; cursor: pointer; transition: all 0.3s ease; width: 100%; } .platform-button.primary { background-color: #e74c3c; color: white; } .platform-button.secondary { background-color: white; color: #e74c3c; border: 2px solid #e74c3c; } .platform-button:hover { transform: translateY(-2px); box-shadow: 0 6px 15px rgba(231, 76, 60, 0.2); } /* About section */ .about-tabular { background: rgba(30, 41, 59, 0.9); backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px); border: 1px solid rgba(255, 255, 255, 0.12); padding: 60px 40px; max-width: 1500px; margin: 80px auto; box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3); display: flex; align-items: center; justify-content: center; gap: 2rem; flex-wrap: wrap; text-align: left; color: white; } .about-tabular .logo { width: 100px; height: 100px; flex-shrink: 0; display: flex; justify-content: center; align-items: center; border-radius: 50%; margin: 0; } .about-tabular .logo img { max-width: 80%; max-height: 80%; object-fit: contain; height: 80px; } .about-tabular .content { display: flex; flex-direction: column; gap: 0.4rem; max-width: 600px; } .about-tabular h2 { font-family: "Montserrat", sans-serif; font-size: 1.8rem; font-weight: 600; margin: 0; color: white; } .about-tabular p { font-size: 1rem; margin: 0; color: #e2e8f0; } .about-tabular .version-info { font-size: 0.95rem; color: #cbd5e1; } .about-tabular .github-link { display: inline-block; font-size: 0.95rem; text-decoration: none; color: #e74c3c; transition: color 0.3s ease; margin-top: 0.2rem; } .about-tabular .github-link:hover { color: #ff7f70; text-decoration: underline; } .about-tabular .credit { font-size: 0.85rem; color: #94a3b8; margin: 0; } .about-tabular .copyright { font-size: 0.85rem; color: #718096; margin: 0; white-space: nowrap; } /* Responsive */ @media (max-width: 992px) { .hero { flex-direction: column; text-align: center; gap: 3rem; } .hero-image { flex: 1; } .about-tabular { padding: 40px 30px; max-width: 700px; } } @media (max-width: 768px) { .nav-menu { display: none; flex-direction: column; background: rgba(255, 255, 255, 0.98); position: absolute; top: 100%; left: 0; right: 0; padding: 1rem 0; box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1); border: 1px solid #e2e8f0; border-radius: 8px; margin: 0 1rem; } .nav-menu.active { display: flex; } .menu-toggle { display: flex; } .hero-content h1 { font-size: 2.8rem; } .section-title { font-size: 2rem; } /* Burger animation */ .menu-toggle.open span:nth-child(1) { transform: rotate(45deg) translate(5px, 6px); } .menu-toggle.open span:nth-child(2) { opacity: 0; } .menu-toggle.open span:nth-child(3) { transform: rotate(-45deg) translate(5px, -6px); } }