@import url('https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,500;0,600;1,400&family=Inter:wght@300;400;500&family=JetBrains+Mono:wght@300&display=swap'); :root { --bg-color: #f8f6f3; --text-color: #1c1917; --accent-color: #44403c; --muted-color: #a8a29e; } * { margin: 0; padding: 0; box-sizing: border-box; } body { background-color: var(--bg-color); color: var(--text-color); font-family: 'Inter', sans-serif; overflow-x: hidden; -webkit-font-smoothing: antialiased; } /* Optional: Grain Texture Overlay for that premium tactile feel */ body::after { content: ""; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-image: url("https://grainy-gradients.vercel.app/noise.svg"); opacity: 0.04; pointer-events: none; z-index: 999; } /* Header */ .prototype-header { position: fixed; top: 0; width: 100%; padding: 3rem 4rem; /* More air */ display: flex; justify-content: space-between; align-items: center; z-index: 100; font-family: 'JetBrains Mono', monospace; font-size: 0.65rem; text-transform: uppercase; letter-spacing: 0.3em; } .logo { font-weight: 500; border-bottom: 1px solid var(--text-color); padding-bottom: 0.5rem; } /* Scroll Container */ .scroll-container { position: relative; width: 100%; } /* Sections */ section { position: relative; height: 120vh; /* More scroll space */ width: 100%; display: flex; justify-content: center; align-items: center; padding: 0 4rem; z-index: 10; } /* Intro */ .intro-content { text-align: center; max-width: 900px; } .intro-content .label { display: block; font-family: 'JetBrains Mono', monospace; font-size: 0.7rem; text-transform: uppercase; letter-spacing: 0.6em; color: var(--muted-color); margin-bottom: 3rem; } .intro-content h1 { font-family: 'Playfair Display', serif; font-size: 6rem; font-weight: 400; margin-bottom: 3rem; line-height: 1.05; letter-spacing: -0.02em; } .intro-content p { font-size: 1.1rem; color: var(--accent-color); line-height: 1.8; max-width: 500px; margin: 0 auto 4rem; font-weight: 300; } .scroll-indicator { display: flex; justify-content: center; } /* Sticky Product Stage */ .product-stage { position: fixed; top: 0; left: 0; width: 100%; height: 100vh; display: flex; justify-content: center; align-items: center; z-index: 1; pointer-events: none; perspective: 1500px; } .cup-wrapper { width: 600px; height: 600px; position: relative; display: flex; justify-content: center; align-items: center; } #cup-canvas { width: 100%; height: 100%; object-fit: contain; filter: drop-shadow(0 40px 80px rgba(0, 0, 0, 0.08)); will-change: transform; } .buffer-info { position: absolute; bottom: -40px; left: 50%; transform: translateX(-50%); font-family: 'JetBrains Mono', monospace; font-size: 0.6rem; color: var(--muted-color); text-transform: uppercase; letter-spacing: 0.2em; display: flex; align-items: center; gap: 10px; transition: opacity 0.5s ease; } .loader-dots::after { content: " ."; animation: dots 1.5s steps(5, end) infinite; } @keyframes dots { 20% { content: " ."; } 40% { content: " .."; } 60% { content: " ..."; } 80% { content: " ...."; } } .cup-video { display: none; } .stage-overlay { position: absolute; inset: 0; background: radial-gradient(circle at center, transparent 30%, var(--bg-color) 70%); opacity: 0.4; } /* Content Sections */ .content-section { position: relative; height: 150vh; /* Slow down the scroll feel */ display: flex; align-items: center; padding: 0 12%; z-index: 10; } .content-section:nth-child(odd) { justify-content: flex-end; } .content-section:nth-child(even) { justify-content: flex-start; } .text-block { max-width: 450px; opacity: 1; /* Handled by GSAP now */ } .step-num { display: block; font-family: 'JetBrains Mono', monospace; font-size: 0.8rem; color: var(--muted-color); margin-bottom: 2rem; position: relative; } .step-num::after { content: ""; position: absolute; left: 40px; top: 50%; width: 60px; height: 1px; background: var(--muted-color); opacity: 0.3; } .text-block h2 { font-family: 'Playfair Display', serif; font-size: 4.5rem; font-weight: 400; margin-bottom: 2.5rem; line-height: 1.1; } .text-block p { font-size: 1.05rem; line-height: 2; color: var(--accent-color); font-weight: 300; max-width: 320px; } /* Outro */ .outro-content { text-align: center; } .outro-content h2 { font-family: 'Playfair Display', serif; font-size: 4rem; font-weight: 400; margin-bottom: 1rem; } .btn-minimal { margin-top: 3rem; padding: 1rem 3rem; border: 1px solid var(--text-color); background: transparent; font-family: 'JetBrains Mono', monospace; font-size: 0.7rem; text-transform: uppercase; letter-spacing: 0.2em; cursor: pointer; transition: all 0.4s ease; } .btn-minimal:hover { background: var(--text-color); color: white; } /* Animations */ .animate-bounce { animation: bounce 2s infinite; } @keyframes bounce { 0%, 20%, 50%, 80%, 100% { transform: translateY(0); } 40% { transform: translateY(-10px); } 60% { transform: translateY(-5px); } } /* Mobile Responsive */ @media (max-width: 768px) { .intro-content h1 { font-size: 3rem; } .cup-wrapper { width: 400px; height: 400px; } .text-block h2 { font-size: 2.5rem; } .prototype-header { padding: 1.5rem; } }