@import url('https://fonts.googleapis.com/css2?family=Sora:wght@300;400;500;600;700;800&family=JetBrains+Mono:wght@400;500;600&display=swap'); /* ── Variables ── */ :root { --bg-deep: #09081a; --bg-card: #0f0d2a; --bg-surface: #13102e; --purple: #6c5ce7; --purple-light: #8b7cf8; --purple-dim: rgba(108,92,231,0.18); --purple-glow: rgba(108,92,231,0.35); --teal: #00cec9; --teal-light: #55efc4; --teal-dim: rgba(0,206,201,0.15); --text-primary: #ffffff; --text-secondary:#a0a0c0; --text-muted: #5a5880; --border: rgba(255,255,255,0.07); --border-purple: rgba(108,92,231,0.3); --glass-bg: rgba(255,255,255,0.04); --glass-border: rgba(255,255,255,0.08); --blur: blur(20px); --shadow-purple: 0 0 40px rgba(108,92,231,0.25); --shadow-card: 0 8px 32px rgba(0,0,0,0.4); --font: 'Sora', sans-serif; --mono: 'JetBrains Mono', monospace; --r-sm: 10px; --r-md: 16px; --r-lg: 24px; --r-xl: 32px; --r-full: 9999px; } /* ── Reset ── */ *, *::before, *::after { margin:0; padding:0; box-sizing:border-box; } html { scroll-behavior:smooth; } body { font-family:var(--font); background:var(--bg-deep); color:var(--text-primary); line-height:1.6; min-height:100vh; overflow-x:hidden; } body::before { content:''; position:fixed; inset:0; pointer-events:none; z-index:0; background: radial-gradient(ellipse 80% 60% at 20% 10%, rgba(108,92,231,.12) 0%, transparent 60%), radial-gradient(ellipse 60% 40% at 80% 80%, rgba(0,206,201,.08) 0%, transparent 55%); } /* ── Layout ── */ .container { width:90%; max-width:1160px; margin:0 auto; padding:0 16px; position:relative; z-index:1; } section { position:relative; z-index:1; } /* ── Header ── */ .site-header { position:fixed; top:0; left:0; right:0; z-index:1000; transition:background .3s,box-shadow .3s; } .site-header.scrolled { background:rgba(9,8,26,.9); backdrop-filter:var(--blur); -webkit-backdrop-filter:var(--blur); box-shadow:0 1px 0 var(--border); } .nav { display:flex; align-items:center; justify-content:space-between; height:64px; } .nav-logo { display:flex; align-items:center; gap:10px; text-decoration:none; color:var(--text-primary); cursor:pointer; } .nav-logo-icon { width:36px; height:36px; background:var(--purple-dim); border:1px solid var(--border-purple); border-radius:var(--r-sm); display:flex; align-items:center; justify-content:center; } .nav-logo-text { font-size:1.1rem; font-weight:700; } .nav-logo-text span { color:var(--purple-light); } .nav-links { display:flex; align-items:center; gap:8px; list-style:none; } .nav-links a { color:var(--text-secondary); text-decoration:none; font-size:.875rem; font-weight:500; padding:6px 14px; border-radius:var(--r-full); transition:color .2s,background .2s; } .nav-links a:hover { color:var(--text-primary); background:var(--glass-bg); } .nav-cta { background:var(--purple) !important; color:#fff !important; border-radius:var(--r-full) !important; padding:7px 18px !important; font-weight:600 !important; transition:background .2s !important; } .nav-cta:hover { background:var(--purple-light) !important; } /* ── Hero ── */ .hero { padding:140px 0 80px; } .hero-grid { display:grid; grid-template-columns:1fr 1fr; gap:5rem; align-items:center; } .hero-badge { display:inline-flex; align-items:center; gap:6px; background:var(--purple-dim); border:1px solid var(--border-purple); border-radius:var(--r-full); padding:5px 14px; font-size:.75rem; font-weight:600; letter-spacing:.08em; text-transform:uppercase; color:var(--purple-light); margin-bottom:1.5rem; } .hero-badge .dot { width:6px; height:6px; background:var(--purple-light); border-radius:50%; animation:pulse-dot 2s ease-in-out infinite; } @keyframes pulse-dot { 0%,100%{opacity:1;transform:scale(1);}50%{opacity:.5;transform:scale(.7);} } .hero-title { font-size:clamp(2.2rem,5vw,3.5rem); font-weight:800; line-height:1.1; letter-spacing:-.03em; margin-bottom:1.25rem; } .hero-title .accent { background:linear-gradient(135deg,var(--purple-light),var(--teal)); -webkit-background-clip:text; -webkit-text-fill-color:transparent; background-clip:text; } .hero-desc { font-size:1.05rem; color:var(--text-secondary); line-height:1.7; margin-bottom:2.5rem; max-width:440px; } .hero-actions { display:flex; gap:12px; flex-wrap:wrap; } /* ── Buttons ── */ .btn { display:inline-flex; align-items:center; gap:8px; padding:12px 24px; border-radius:var(--r-md); font-family:var(--font); font-size:.9rem; font-weight:600; text-decoration:none; border:none; cursor:pointer; transition:all .25s; } .btn-primary { background:var(--purple); color:#fff; box-shadow:0 4px 20px var(--purple-glow); } .btn-primary:hover { background:var(--purple-light); transform:translateY(-2px); } .btn-ghost { background:var(--glass-bg); color:var(--text-primary); border:1px solid var(--glass-border); } .btn-ghost:hover { background:rgba(255,255,255,.08); border-color:var(--border-purple); transform:translateY(-2px); } .btn-sm { padding:8px 16px; font-size:.8rem; } .btn-lg { padding:15px 32px; font-size:1rem; } .btn-full { width:100%; justify-content:center; } .btn-icon { width:38px; height:38px; border-radius:var(--r-sm); padding:0; background:var(--glass-bg); border:1px solid var(--glass-border); color:var(--text-secondary); display:flex; align-items:center; justify-content:center; font-size:1rem; cursor:pointer; transition:all .2s; } .btn-icon:hover { background:var(--purple-dim); border-color:var(--border-purple); color:var(--purple-light); } /* ── Phone Mockup ── */ .phone-showcase { display:flex; justify-content:center; position:relative; } .phone-frame { width:260px; background:#0d0b24; border-radius:44px; border:1.5px solid rgba(108,92,231,.35); box-shadow:0 0 0 6px rgba(108,92,231,.08),0 30px 80px rgba(0,0,0,.6),0 0 60px rgba(108,92,231,.15); overflow:hidden; animation:float-phone 6s ease-in-out infinite; position:relative; z-index:2; } @keyframes float-phone { 0%,100%{transform:translateY(0) rotate(-1deg);}50%{transform:translateY(-16px) rotate(-1deg);} } .phone-notch { width:110px; height:30px; background:#000; border-radius:0 0 18px 18px; margin:0 auto; position:relative; z-index:10; } .phone-screen { padding:0 14px 24px; min-height:520px; display:flex; flex-direction:column; } .mock-onboarding { flex:1; display:flex; flex-direction:column; align-items:center; justify-content:space-between; padding:20px 0 10px; text-align:center; } .mock-skip { align-self:flex-start; font-size:.65rem; color:var(--text-muted); } .mock-icon-circle { width:100px; height:100px; background:radial-gradient(circle at 40% 40%,rgba(108,92,231,.3),rgba(108,92,231,.1)); border-radius:50%; display:flex; align-items:center; justify-content:center; border:1px solid rgba(108,92,231,.25); position:relative; } .mock-icon-circle::before { content:''; position:absolute; inset:-12px; border-radius:50%; background:rgba(108,92,231,.06); } .mock-badge { font-size:.55rem; letter-spacing:.1em; font-weight:700; color:var(--purple-light); text-transform:uppercase; } .mock-title { font-size:1.05rem; font-weight:800; line-height:1.2; } .mock-desc { font-size:.6rem; color:var(--text-secondary); line-height:1.5; } .mock-dots { display:flex; gap:5px; } .mock-dot { width:6px; height:6px; border-radius:3px; background:rgba(255,255,255,.2); } .mock-dot.active { width:18px; background:var(--purple); } .mock-btn { width:100%; background:var(--purple); color:#fff; border:none; border-radius:14px; padding:12px; font-size:.75rem; font-weight:600; display:flex; align-items:center; justify-content:center; gap:6px; } .phone-orbit { position:absolute; inset:-40px; z-index:1; pointer-events:none; } .orbit-card { position:absolute; background:var(--bg-card); border:1px solid var(--glass-border); border-radius:var(--r-md); padding:10px 14px; display:flex; align-items:center; gap:8px; font-size:.72rem; font-weight:500; color:var(--text-secondary); box-shadow:var(--shadow-card); white-space:nowrap; } .orbit-card .icon { width:28px; height:28px; border-radius:8px; display:flex; align-items:center; justify-content:center; font-size:14px; } .orbit-card.vision { top:30%; right:-20px; border-color:rgba(0,206,201,.25); animation:orbit-float 5s ease-in-out infinite; } .orbit-card.vision .icon { background:var(--teal-dim); } .orbit-card.ocr { bottom:25%; left:-30px; border-color:var(--border-purple); animation:orbit-float 7s ease-in-out infinite reverse; } .orbit-card.ocr .icon { background:var(--purple-dim); } @keyframes orbit-float { 0%,100%{transform:translateY(0);}50%{transform:translateY(-10px);} } /* ── Section labels ── */ .section-label { font-size:.72rem; font-weight:700; letter-spacing:.12em; text-transform:uppercase; color:var(--purple-light); margin-bottom:.75rem; display:flex; align-items:center; gap:8px; } .section-label::before { content:''; width:20px; height:2px; background:var(--purple-light); border-radius:1px; } .section-title { font-size:clamp(1.6rem,3.5vw,2.4rem); font-weight:800; line-height:1.15; letter-spacing:-.025em; margin-bottom:1rem; } .section-desc { color:var(--text-secondary); font-size:1rem; max-width:520px; line-height:1.7; } /* ── OCR Section ── */ .ocr-section { padding:80px 0; } .ocr-section-head { margin-bottom:48px; } /* ── Engine Tabs ── */ .engine-tabs { display:flex; gap:8px; flex-wrap:wrap; } .engine-tab { display:inline-flex; align-items:center; gap:8px; padding:10px 20px; border-radius:var(--r-full); border:1px solid var(--glass-border); background:var(--glass-bg); color:var(--text-secondary); font-size:.85rem; font-weight:500; cursor:pointer; font-family:var(--font); transition:all .2s; user-select:none; -webkit-user-select:none; /* IMPORTANT: no pointer-events:none — tabs must be clickable */ } .engine-tab:hover { border-color:rgba(255,255,255,.2); color:var(--text-primary); background:rgba(255,255,255,.06); } /* Active Tesseract tab = teal */ .engine-tab.active-teal { background:rgba(0,206,201,.18) !important; border-color:var(--teal) !important; color:var(--teal) !important; font-weight:700; box-shadow:0 0 16px rgba(0,206,201,.18); } /* Active OCR Cloud tab = purple */ .engine-tab.active-purple { background:rgba(108,92,231,.22) !important; border-color:var(--purple) !important; color:var(--purple-light) !important; font-weight:700; box-shadow:0 0 16px rgba(108,92,231,.2); } /* ── OCR Box ── */ .ocr-box { background:var(--bg-card); border:1px solid var(--glass-border); border-radius:var(--r-xl); overflow:hidden; box-shadow:var(--shadow-card); } .ocr-box-header { padding:20px 24px; border-bottom:1px solid var(--border); display:flex; align-items:center; justify-content:space-between; } .ocr-status { display:flex; align-items:center; gap:8px; font-size:.82rem; font-weight:500; color:var(--text-secondary); } .status-dot { width:8px; height:8px; border-radius:50%; background:var(--teal); box-shadow:0 0 8px var(--teal); animation:blink 2s ease-in-out infinite; } @keyframes blink { 0%,100%{opacity:1;}50%{opacity:.3;} } .ocr-engine-badge { font-size:.72rem; font-weight:600; padding:4px 10px; border-radius:var(--r-full); font-family:var(--mono); } .ocr-engine-badge.teal { background:var(--teal-dim); color:var(--teal); border:1px solid rgba(0,206,201,.3); } .ocr-engine-badge.purple { background:var(--purple-dim); color:var(--purple-light); border:1px solid var(--border-purple); } /* ── Upload Zone ── */ .upload-zone { margin:24px; border:1.5px dashed rgba(108,92,231,.35); border-radius:var(--r-lg); padding:60px 32px; text-align:center; cursor:pointer; transition:all .25s; position:relative; background:rgba(108,92,231,.03); } .upload-zone:hover, .upload-zone.drag-over { border-color:var(--purple); background:rgba(108,92,231,.07); } /* File input — visually hidden;