@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&display=swap'); @tailwind base; @tailwind components; @tailwind utilities; /* ─── Tokens ───────────────────────────────────────────────────────────────── */ :root { --bg: #ffffff; --surface: #fafafa; --border: #e5e7eb; --border2: #f0f0f0; --text: #0f172a; --muted: #64748b; --accent: #f97316; --accent2: #fbbf24; --radius: 16px; } * { box-sizing: border-box; margin: 0; padding: 0; } html, body { min-height: 100vh; background: var(--bg); color: var(--text); font-family: 'Inter', system-ui, sans-serif; scroll-behavior: smooth; overflow-x: hidden; -webkit-font-smoothing: antialiased; } /* ─── Scrollbar ─────────────────────────────────────────────────────────────── */ ::-webkit-scrollbar { width: 5px; } ::-webkit-scrollbar-track { background: #f1f5f9; } ::-webkit-scrollbar-thumb { background: #cbd5e1; border-radius: 3px; } ::-webkit-scrollbar-thumb:hover { background: #94a3b8; } /* ─── Subtle dot grid background ───────────────────────────────────────────── */ .page-bg { position: fixed; inset: 0; z-index: 0; pointer-events: none; background-image: radial-gradient(circle, rgba(0,0,0,0.06) 1px, transparent 1px); background-size: 24px 24px; } /* ─── ─── Scroll Animations ─────────────────────────────────────────────────── */ .scroll-hidden { opacity: 0; transform: translateY(28px); transition: opacity 0.65s cubic-bezier(0.4, 0, 0.2, 1), transform 0.65s cubic-bezier(0.4, 0, 0.2, 1); } .scroll-hidden.delay-1 { transition-delay: 0.1s; } .scroll-hidden.delay-2 { transition-delay: 0.2s; } .scroll-hidden.delay-3 { transition-delay: 0.3s; } .scroll-hidden.delay-4 { transition-delay: 0.4s; } .scroll-visible { opacity: 1 !important; transform: translateY(0) !important; } /* Fade in from left */ .scroll-left { opacity: 0; transform: translateX(-24px); transition: opacity 0.6s ease, transform 0.6s ease; } .scroll-left.scroll-visible { opacity: 1; transform: translateX(0); } /* Fade in from right */ .scroll-right { opacity: 0; transform: translateX(24px); transition: opacity 0.6s ease, transform 0.6s ease; } .scroll-right.scroll-visible { opacity: 1; transform: translateX(0); } /* Scale in */ .scroll-scale { opacity: 0; transform: scale(0.93); transition: opacity 0.55s ease, transform 0.55s cubic-bezier(0.34, 1.2, 0.64, 1); } .scroll-scale.scroll-visible { opacity: 1; transform: scale(1); } /* ─── Navbar ────────────────────────────────────────────────────────────────── */ .navbar { background: rgba(255, 255, 255, 0.88); backdrop-filter: blur(16px) saturate(150%); -webkit-backdrop-filter: blur(16px) saturate(150%); border-bottom: 1px solid var(--border2); } /* ─── Cards ─────────────────────────────────────────────────────────────────── */ .card { background: #ffffff; border: 1px solid var(--border); border-radius: var(--radius); transition: box-shadow 0.25s, border-color 0.25s, transform 0.2s; } .card:hover { box-shadow: 0 12px 40px rgba(0,0,0,0.09); border-color: #d1d5db; transform: translateY(-2px); } /* ─── Moving Border Card ────────────────────────────────────────────────────── */ .moving-border-card { position: relative; background: #ffffff; border-radius: var(--radius); } .moving-border-card::before { content: ''; position: absolute; inset: -1px; border-radius: calc(var(--radius) + 1px); background: conic-gradient( from var(--angle, 0deg), transparent 75%, #f97316 80%, #fbbf24 85%, #fb923c 90%, transparent 95% ); animation: border-spin 4s linear infinite; z-index: -1; } .moving-border-card::after { content: ''; position: absolute; inset: 0; border-radius: var(--radius); background: #ffffff; z-index: -1; } @property --angle { syntax: ''; initial-value: 0deg; inherits: false; } @keyframes border-spin { to { --angle: 360deg; } } /* ─── Drop Zone ─────────────────────────────────────────────────────────────── */ .drop-zone { border: 2px dashed #e5e7eb; border-radius: 12px; background: #fafafa; cursor: pointer; transition: all 0.25s ease; } .drop-zone:hover, .drop-zone.drag-over { border-color: #f97316; background: #fff8f2; box-shadow: 0 0 0 4px rgba(249,115,22,0.07); } /* ─── Black CTA Button ──────────────────────────────────────────────────────── */ .btn-primary { position: relative; overflow: hidden; background: #0f172a; border: 0; border-radius: 12px; color: #ffffff; font-weight: 600; cursor: pointer; transition: transform 0.2s, box-shadow 0.2s, background 0.2s; letter-spacing: -0.01em; } .btn-primary::after { content: ''; position: absolute; top: -50%; left: -80%; width: 60%; height: 200%; background: linear-gradient(105deg, transparent 40%, rgba(255,255,255,0.15) 50%, transparent 60%); transform: skewX(-20deg); animation: shimmer-light 3s ease-in-out infinite; } @keyframes shimmer-light { 0% { left: -80%; } 100% { left: 140%; } } .btn-primary:hover { background: #1e293b; transform: translateY(-1px); box-shadow: 0 8px 30px rgba(15,23,42,0.25); } .btn-primary:active { transform: translateY(0); } .btn-primary:disabled { background: #cbd5e1; color: #94a3b8; cursor: not-allowed; transform: none; box-shadow: none; } .btn-primary:disabled::after { display: none; } /* ─── Outlined Button ───────────────────────────────────────────────────────── */ .btn-outline { background: transparent; border: 1.5px solid var(--border); border-radius: 12px; color: var(--muted); font-weight: 500; cursor: pointer; transition: all 0.2s; } .btn-outline:hover { border-color: #94a3b8; color: var(--text); background: #f8fafc; } /* ─── Progress Bar ──────────────────────────────────────────────────────────── */ .progress-track { background: #f1f5f9; border-radius: 999px; overflow: hidden; } .progress-fill { height: 100%; border-radius: 999px; background: linear-gradient(90deg, #f97316, #fbbf24, #fb923c); background-size: 200% 100%; animation: gradient-scroll 2s linear infinite; transition: width 0.6s cubic-bezier(0.4, 0, 0.2, 1); position: relative; } .progress-fill::after { content: ''; position: absolute; inset: 0; background: linear-gradient(90deg, transparent, rgba(255,255,255,0.5), transparent); animation: pill-shimmer 1.5s linear infinite; } @keyframes gradient-scroll { 0% { background-position: 0% 50%; } 100% { background-position: 200% 50%; } } @keyframes pill-shimmer { 0% { transform: translateX(-100%); } 100% { transform: translateX(400%); } } /* ─── Class Pill ─────────────────────────────────────────────────────────────── */ .class-pill { display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px; border-radius: 999px; font-size: 12px; font-weight: 500; background: #f8fafc; border: 1px solid #e5e7eb; color: #475569; transition: all 0.2s; animation: pop-in 0.3s cubic-bezier(0.34, 1.56, 0.64, 1); } .class-pill:hover { background: #fff8f2; border-color: #fdba74; color: #c2410c; transform: scale(1.05); } @keyframes pop-in { 0% { opacity: 0; transform: scale(0.7); } 100% { opacity: 1; transform: scale(1); } } /* ─── Stat Card ─────────────────────────────────────────────────────────────── */ .stat-card { background: #ffffff; border: 1px solid #f0f0f0; border-radius: 14px; padding: 20px; transition: all 0.25s; position: relative; overflow: hidden; cursor: default; } .stat-card:hover { border-color: #fdba74; box-shadow: 0 8px 30px rgba(249,115,22,0.08); transform: translateY(-3px); } .stat-card::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 2px; background: linear-gradient(90deg, #f97316, #fbbf24); transform: scaleX(0); transform-origin: left; transition: transform 0.3s ease; } .stat-card:hover::before { transform: scaleX(1); } /* ─── Gradient Heading Text ─────────────────────────────────────────────────── */ .text-gradient { background: linear-gradient(135deg, #f97316 0%, #f59e0b 50%, #fb923c 100%); background-clip: text; -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-size: 200% 200%; animation: gradient-shift 4s ease infinite; } @keyframes gradient-shift { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } } /* ─── Word animation ────────────────────────────────────────────────────────── */ .word-animate { display: inline-block; opacity: 0; transform: translateY(20px); animation: word-in 0.5s cubic-bezier(0.4, 0, 0.2, 1) forwards; } @keyframes word-in { to { opacity: 1; transform: translateY(0); } } /* ─── Badge ─────────────────────────────────────────────────────────────────── */ .badge { display: inline-flex; align-items: center; gap: 6px; padding: 5px 14px; border-radius: 999px; border: 1px solid #fed7aa; background: #fff7ed; font-size: 12px; font-weight: 500; color: #c2410c; } /* ─── Divider ───────────────────────────────────────────────────────────────── */ .divider { height: 1px; background: linear-gradient(90deg, transparent, #e5e7eb 20%, #e5e7eb 80%, transparent); } /* ─── Step Indicator ────────────────────────────────────────────────────────── */ .step-dot { width: 28px; height: 28px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 11px; font-weight: 700; transition: all 0.4s; flex-shrink: 0; } .step-dot.done { background: #dcfce7; color: #15803d; border: 2px solid #86efac; } .step-dot.active { background: #0f172a; color: white; border: 2px solid #0f172a; box-shadow: 0 0 0 3px rgba(15,23,42,0.12); } .step-dot.pending { background: #f8fafc; color: #94a3b8; border: 2px solid #e5e7eb; } /* ─── Bounce Dots ───────────────────────────────────────────────────────────── */ .bounce-dot { display: inline-block; width: 7px; height: 7px; border-radius: 50%; animation: bounce-dot 1.2s ease-in-out infinite; } .bounce-dot:nth-child(1) { animation-delay: 0s; } .bounce-dot:nth-child(2) { animation-delay: 0.2s; } .bounce-dot:nth-child(3) { animation-delay: 0.4s; } @keyframes bounce-dot { 0%, 80%, 100% { transform: scale(0.7); opacity: 0.4; } 40% { transform: scale(1.2); opacity: 1; } } /* ─── Range Input ───────────────────────────────────────────────────────────── */ input[type="range"] { -webkit-appearance: none; appearance: none; background: #e5e7eb; border-radius: 999px; cursor: pointer; } input[type="range"]::-webkit-slider-thumb { -webkit-appearance: none; width: 14px; height: 14px; border-radius: 50%; background: #0f172a; cursor: pointer; } /* ─── Video UI ──────────────────────────────────────────────────────────────── */ .video-wrapper { background: #000; border-radius: 12px; overflow: hidden; } .video-wrapper video { width: 100%; display: block; object-fit: contain; } /* ─── Section spacing ───────────────────────────────────────────────────────── */ .section { padding: 80px 0; }